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:
    - vsnprintf
    - va_end
    - snprintf
    - system
    - va_start
    - strchr
    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:
    - _exit
    - fork
    - fprintf
    - strerror
    - _
    - execl
    - psprintf
    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
    - get_progname
    - spawn_process
    - rmdir
    - get_restricted_token
    - mkdtemp
    - putenv
    - snprintf
    - pg_usleep
    - pg_logging_init
    - set_pglocale_pgservice
    - make_absolute_path
    - waitpid
    - mkdir
    - psql_command
    - psprintf
    - system
    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:
    - InitializeGUCOptions
    - MemoryContextSwitchTo
    - BaseInit
    - snprintf
    - InitPostgres
    - MemoryContextInit
    - sigprocmask
    - process_postgres_switches
    - BeginReportingGUCOptions
    - SelectConfigFiles
    - LocalProcessControlFile
    - CreateDataDirLockFile
    - strdup
    - checkDataDir
    - SetProcessingMode
    - dirname
    - ChangeToDataDir
    - chdir
    - system
    - InitProcess
    - GetCurrentTimestamp
    - get_progname
    - InitStandaloneProcess
    - InitializeMaxBackends
    - AllocSetContextCreate
    - initStringInfo
    - free
    - process_session_preload_libraries
    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_analyze_and_rewrite_fixedparams
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - lfirst_node
    - lnext
    - raw_parser
    - pg_plan_queries
    - AllocSetContextCreate
    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_analyze_and_rewrite_fixedparams
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - lfirst_node
    - lnext
    - pg_plan_queries
    - AllocSetContextCreate
    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
    - MemoryContextInit
    - InitializeGUCOptions
    - 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:
    - SetCurrentStatementStartTimestamp
    - MemoryContextSwitchTo
    - sigsetjmp
    - pq_comm_reset
    - MemoryContextReset
    - jit_reset_after_error
    - FlushErrorState
    - calloc
    - EmitErrorReport
    - exec_simple_query
    - set_stack_base
    - memcpy
    - disable_all_timeouts
    - free
    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
    - MemoryContextInit
    - strdup
    - PostgresSingleUserMain
    - sigsetjmp
    - free
    - 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:
    - siglongjmp
    - __real_exit
    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:
    - sigsetjmp
    - calloc
    - pq_endmsgread
    - PostgresSingleUserMain
    - memcpy
    - free
    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:
    - sigsetjmp
    - VALGRIND_DESTROY_MEMPOOL
    - MemoryContextReset
    - FlushErrorState
    - calloc
    - MemoryContextInit
    - pg_parse_json
    - set_stack_base
    - methods::delete_context
    - memcpy
    - free
    - 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: 101
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 101
    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:106,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:107,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:107,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:108,1
    - Dst: handle_args
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:110,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:114,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:118,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:119,1
    - Dst: pg_prng_seed
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:122,1
    - Dst: time
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:122,1
    - Dst: prepare_buf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:124,1
    - Dst: test_open
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:126,1
    - Dst: test_sync
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:129,1
    - Dst: test_sync
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:132,1
    - Dst: test_open_syncs
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:134,1
    - Dst: test_file_descriptor_sync
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:136,1
    - Dst: test_non_sync
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:138,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 143
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - handle_args
    - pg_prng_seed
    - test_open
    - test_open_syncs
    - pg_logging_init
    - set_pglocale_pgservice
    - time
    - test_sync
    - pqsignal
    - unlink
    - test_non_sync
    - prepare_buf
    - test_file_descriptor_sync
    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:161,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:161,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:163,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:163,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:164,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:166,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:166,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:168,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:169,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:173,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:179,1
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:184,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:189,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:190,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:191,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:196,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:202,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:203,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:209,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:211,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:212,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:215,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:215,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:220,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:220,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:222,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:222,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:224,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:224,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 42
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 226
    functionName: handle_args
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 1
    functionsReached:
    - printf
    - getopt_long
    - pg_strdup
    - puts
    - strtoul
    - pg_log_error_hint
    - exit
    - pg_fatal
    - _
    - strcmp
    - pg_log_error
    - ngettext
    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:235,1
    - Dst: TYPEALIGN
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:237,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 238
    functionName: prepare_buf
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 1
    functionsReached:
    - pg_prng_int32
    - TYPEALIGN
    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:248,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:249,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:251,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:253,1
    - Dst: fsync
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:256,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:257,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:259,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 260
    functionName: test_open
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 1
    functionsReached:
    - write
    - fsync
    - close
    - open
    - die
    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:271,1
    - Dst: fcntl
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:274,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:278,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - path
    - flags
    - mode
    argTypes:
    - char*
    - int
    - mode_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 285
    functionName: open_direct
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 0
    functionsReached:
    - fcntl
    - close
    - open
    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: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:298,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:298,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:299,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:299,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:304,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:305,1
    - Dst: open_direct
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:308,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:310,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:310,1
    - Dst: pg_pwrite
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:319,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:323,1
    - Dst: close
      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:329,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:329,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:335,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:336,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:338,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:339,1
    - Dst: pg_pwrite
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:344,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:348,1
    - Dst: fdatasync
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:349,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:352,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:357,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:358,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:360,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:361,1
    - Dst: pg_pwrite
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:366,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:370,1
    - Dst: fsync
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:371,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:372,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:375,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:380,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:381,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:384,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:385,1
    - Dst: pg_pwrite
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:390,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:394,1
    - Dst: pg_fsync_writethrough
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:395,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:396,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:399,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:401,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:401,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:407,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:408,1
    - Dst: open_direct
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:411,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:413,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:413,1
    - Dst: pg_pwrite
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:422,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:433,1
    - Dst: close
      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:439,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:439,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:444,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:444,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 82
    argCount: 1
    argNames:
    - writes_per_op
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 287
    functionDepth: 2
    functionLinenumber: 287
    functionLinenumberEnd: 447
    functionName: test_sync
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 1
    functionsReached:
    - printf
    - fsync
    - fflush
    - pg_fsync_writethrough
    - pg_pwrite
    - open_direct
    - close
    - open
    - die
    - _
    - fdatasync
    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:452,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:452,1
    - Dst: printf
      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: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
    - Dst: test_open_sync
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:458,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:458,1
    - Dst: test_open_sync
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:459,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:459,1
    - Dst: test_open_sync
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:460,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:460,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 449
    functionDepth: 1
    functionLinenumber: 449
    functionLinenumberEnd: 461
    functionName: test_open_syncs
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 1
    functionsReached:
    - printf
    - _
    - test_open_sync
    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:475,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:476,1
    - Dst: open_direct
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:479,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:480,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:480,1
    - Dst: pg_pwrite
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:487,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:492,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:495,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:498,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:498,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - msg
    - writes_size
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 466
    functionDepth: 2
    functionLinenumber: 466
    functionLinenumberEnd: 500
    functionName: test_open_sync
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 1
    functionsReached:
    - printf
    - fflush
    - pg_pwrite
    - open_direct
    - close
    - die
    - _
    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:514,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:514,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:515,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:515,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:522,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:523,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:528,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:529,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:530,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:531,1
    - Dst: fsync
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:532,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:533,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:534,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:540,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:541,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:542,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:550,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:551,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:556,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:557,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:558,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:559,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:560,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:562,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:563,1
    - Dst: fsync
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:564,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:565,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:566,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 502
    functionDepth: 1
    functionLinenumber: 502
    functionLinenumberEnd: 569
    functionName: test_file_descriptor_sync
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 1
    functionsReached:
    - write
    - printf
    - fsync
    - fflush
    - close
    - open
    - die
    - _
    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:580,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:580,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:581,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:582,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:584,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:585,1
    - Dst: pg_pwrite
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:589,1
    - Dst: die
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:590,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:593,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 571
    functionDepth: 1
    functionLinenumber: 571
    functionLinenumberEnd: 594
    functionName: test_non_sync
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 1
    functionsReached:
    - printf
    - fflush
    - pg_pwrite
    - close
    - open
    - die
    - _
    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:603,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:605,1
    - Dst: _exit
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:607,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 608
      start: 596
    functionDepth: 1
    functionLinenumber: 596
    functionLinenumberEnd: 608
    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:616,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 612
    functionDepth: 0
    functionLinenumber: 612
    functionLinenumberEnd: 621
    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:635,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:635,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: 636
      start: 627
    functionDepth: 0
    functionLinenumber: 627
    functionLinenumberEnd: 636
    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: 643
      start: 639
    functionDepth: 0
    functionLinenumber: 639
    functionLinenumberEnd: 643
    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:649,1
    - Dst: ExitThread
      Src: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c:651,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - param
    argTypes:
    - LPVOID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 645
    functionDepth: 0
    functionLinenumber: 645
    functionLinenumberEnd: 652
    functionName: process_alarm
    functionSourceFile: /src/postgres/src/bin/pg_test_fsync/pg_test_fsync.c
    functionUses: 0
    functionsReached:
    - ExitThread
    - Sleep
    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:
    - wcstombs
    - DllRegisterServer
    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
    - MessageBox
    - GetModuleFileName
    - RegCloseKey
    - strlen
    - RegSetValueEx
    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:
    - _snprintf
    - RegDeleteKey
    - MessageBox
    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
    - getenv
    - ParallelSlotSetHandler
    - pg_logging_increase_verbosity
    - ParallelSlotsWaitCompletion
    - PQresultStatus
    - append_relation_pattern
    - strtoul
    - pg_log_warning
    - PQfreemem
    - termPQExpBuffer
    - set_pglocale_pgservice
    - PQgetvalue
    - ParallelSlotsSetup
    - handle_help_version_opts
    - exit
    - disconnectDatabase
    - log_no_match
    - fprintf
    - pstrdup
    - progress_report
    - strlen
    - psprintf
    - prepare_heap_command
    - pfree
    - FREE_AND_SET_NULL
    - append_schema_pattern
    - pg_logging_init
    - setup_cancel_handler
    - get_user_name_or_exit
    - pg_log_error_detail
    - PQclear
    - pg_log_info
    - pg_get_encoding_from_locale
    - pg_log_error
    - strcmp
    - append_btree_pattern
    - PQescapeIdentifier
    - PQerrorMessage
    - append_database_pattern
    - PQntuples
    - run_command
    - initPQExpBuffer
    - pg_log_error_hint
    - option_parse_int
    - connectDatabase
    - PQdb
    - ParallelSlotsAdoptConn
    - pg_fatal
    - compile_database_list
    - pg_strcasecmp
    - prepare_btree_command
    - get_progname
    - getopt_long
    - connectMaintenanceDatabase
    - append_heap_pattern
    - pg_strdup
    - executeQuery
    - sscanf
    - compile_relation_list_one_db
    - PQsetErrorVerbosity
    - ParallelSlotsGetIdle
    - ParallelSlotsTerminate
    - executeCommand
    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:
    - printf
    - PQerrorMessage
    - PQdb
    - exit
    - PQsendQuery
    - pg_log_error_detail
    - pg_log_error
    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:
    - PQresultStatus
    - strcmp
    - PQresultErrorField
    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:
    - appendPQExpBufferChar
    - termPQExpBuffer
    - appendPQExpBufferStr
    - pstrdup
    - initPQExpBuffer
    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:
    - printf
    - indent_lines
    - PQntuples
    - PQerrorMessage
    - PQresultStatus
    - FREE_AND_SET_NULL
    - PQgetvalue
    - PQgetisnull
    - _
    - should_processing_continue
    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:
    - printf
    - indent_lines
    - PQntuples
    - pg_log_warning_detail
    - PQresultStatus
    - PQerrorMessage
    - FREE_AND_SET_NULL
    - pg_log_warning
    - fprintf
    - pg_log_warning_hint
    - _
    - should_processing_continue
    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:
    - snprintf
    - time
    - fputc
    - fprintf
    - isatty
    - _
    - fileno
    - strlen
    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
      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:
    - memset
    - pg_realloc
    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
    - pstrdup
    - extend_pattern_info_array
    - exit
    - patternToSQLRegex
    - pg_log_error
    - initPQExpBuffer
    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
    - pstrdup
    - extend_pattern_info_array
    - exit
    - patternToSQLRegex
    - pg_log_error
    - initPQExpBuffer
    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
    - pstrdup
    - extend_pattern_info_array
    - exit
    - patternToSQLRegex
    - pg_log_error
    - initPQExpBuffer
    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
    - appendStringLiteralConn
    - appendPQExpBufferStr
    - appendPQExpBuffer
    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
      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
      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:
    - PQresultStatus
    - termPQExpBuffer
    - pstrdup
    - PQgetvalue
    - disconnectDatabase
    - exit
    - log_no_match
    - pg_malloc0
    - appendPQExpBufferStr
    - pg_log_error_detail
    - pg_log_info
    - PQclear
    - strcmp
    - pg_log_error
    - simple_ptr_list_append
    - PQerrorMessage
    - PQntuples
    - atoi
    - pg_fatal
    - Assert
    - append_db_pattern_cte
    - executeQuery
    - PQgetisnull
    - initPQExpBuffer
    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
    - appendStringLiteralConn
    - appendPQExpBufferStr
    - appendPQExpBuffer
    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:
    - PQdb
    - appendPQExpBufferStr
    - appendStringLiteralConn
    - appendPQExpBuffer
    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
      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:
    - PQresultStatus
    - termPQExpBuffer
    - PQgetvalue
    - pstrdup
    - disconnectDatabase
    - exit
    - pg_malloc0
    - atooid
    - appendPQExpBufferStr
    - pg_log_error_detail
    - PQclear
    - pg_log_error
    - simple_ptr_list_append
    - PQerrorMessage
    - PQntuples
    - atoi
    - append_rel_pattern_filtered_cte
    - pg_fatal
    - OidIsValid
    - CppAsString2
    - append_rel_pattern_raw_cte
    - Assert
    - executeQuery
    - appendPQExpBuffer
    - PQgetisnull
    - initPQExpBuffer
    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:
    - XLogRecGetRmid
    - appendStringInfo
    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:
    - initialize_custom_rmgrs
    - Assert
    - RmgrIdIsValid
    - RmgrIdIsBuiltin
    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:
    - timestamptz_to_time_t
    - snprintf
    - strftime
    - localtime
    linkageType: ''
    returnType: char
    signature: 'char *

      timestamptz_to_str(TimestampTz t)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 94
    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:104,1
    - Dst: GetRmgrDesc
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 106
    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:115,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - directory
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 121
    functionName: verify_directory
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - opendir
    - closedir
    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:132,1
    - Dst: pg_mkdir_p
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:136,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:137,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:146,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:150,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 152
    functionName: create_fullpage_directory
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - pg_fatal
    - pg_check_dir
    - pg_mkdir_p
    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:166,1
    - Dst: pnstrdup
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:171,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:172,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:178,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - path
    - dir
    - fname
    argTypes:
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 180
    functionName: split_path
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - pnstrdup
    - pg_strdup
    - strrchr
    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:193,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:195,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:196,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:199,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - directory
    - fname
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 201
    functionName: open_file_in_directory
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - Assert
    - snprintf
    - open
    - pg_fatal
    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:217,1
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:224,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:228,1
    - Dst: IsXLogFileName
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:230,1
    - Dst: open_file_in_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:232,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:233,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:238,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:247,1
    - Dst: IsValidWalSegSize
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:254,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:256,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:256,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:260,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:261,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:265,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:268,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:270,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 2
    argNames:
    - directory
    - fname
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 209
    functionDepth: 2
    functionLinenumber: 209
    functionLinenumberEnd: 275
    functionName: search_directory
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - readdir
    - closedir
    - pg_strdup
    - close
    - pg_log_error
    - opendir
    - exit
    - open_file_in_directory
    - read
    - IsValidWalSegSize
    - pg_log_error_detail
    - pg_fatal
    - IsXLogFileName
    - ngettext
    linkageType: ''
    returnType: bool
    signature: bool search_directory(const char *directory, const char *fname)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - 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: snprintf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:302,1
    - Dst: search_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:303,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:304,1
    - Dst: search_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:311,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:312,1
    - Dst: search_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:314,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:315,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:317,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:321,1
    - Dst: search_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:322,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:323,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:329,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:331,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 2
    argNames:
    - directory
    - fname
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 291
    functionDepth: 3
    functionLinenumber: 291
    functionLinenumberEnd: 334
    functionName: identify_target_directory
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - getenv
    - pg_strdup
    - snprintf
    - pg_fatal
    - search_directory
    linkageType: ''
    returnType: char
    signature: 'char *

      identify_target_directory(char *directory, char *fname)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogFileName
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:345,1
    - Dst: open_file_in_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:355,1
    - Dst: pg_usleep
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:363,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:372,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - state
    - nextSegNo
    - tli_p
    argTypes:
    - XLogReaderState*
    - XLogSegNo
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 337
    functionDepth: 2
    functionLinenumber: 337
    functionLinenumberEnd: 373
    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:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 379
    functionDepth: 1
    functionLinenumber: 379
    functionLinenumberEnd: 385
    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: 6
    BranchProfiles: []
    Callsites:
    - Dst: WALRead
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:409,1
    - Dst: XLogFileName
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:415,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:421,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:425,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 5
    argNames:
    - state
    - targetPagePtr
    - reqLen
    - targetPtr
    - readBuff
    argTypes:
    - XLogReaderState*
    - XLogRecPtr
    - int
    - XLogRecPtr
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 431
    functionName: WALDumpReadPage
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - WALRead
    - pg_fatal
    - XLogFileName
    linkageType: ''
    returnType: int
    signature: "int WALDumpReadPage(XLogReaderState *state, XLogRecPtr targetPagePtr,
      int reqLen,\n\t\t\t\tXLogRecPtr targetPtr, char *readBuff)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecMaxBlockId
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:445,1
    - Dst: XLogRecGetBlockTagExtended
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:451,1
    - Dst: RelFileLocatorEquals
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:456,1
    - Dst: RelFileLocatorEquals
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:457,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 8
    argCount: 4
    argNames:
    - record
    - matchRlocator
    - matchBlock
    - matchFork
    argTypes:
    - XLogReaderState*
    - RelFileLocator
    - BlockNumber
    - ForkNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 437
    functionDepth: 1
    functionLinenumber: 437
    functionLinenumberEnd: 463
    functionName: XLogRecordMatchesRelationBlock
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - RelFileLocatorEquals
    - XLogRecMaxBlockId
    - XLogRecGetBlockTagExtended
    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:473,1
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:475,1
    - Dst: XLogRecHasBlockImage
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:478,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 468
    functionDepth: 1
    functionLinenumber: 468
    functionLinenumberEnd: 483
    functionName: XLogRecordHasFPW
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - XLogRecHasBlockRef
    - XLogRecMaxBlockId
    - XLogRecHasBlockImage
    linkageType: ''
    returnType: bool
    signature: bool XLogRecordHasFPW(XLogReaderState *record)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecMaxBlockId
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:494,1
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:505,1
    - Dst: XLogRecHasBlockImage
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:508,1
    - Dst: RestoreBlockImage
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:514,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:515,1
    - Dst: XLogRecGetBlockTagExtended
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:517,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:521,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:523,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:525,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:527,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:530,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:532,1
    - Dst: fwrite
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:534,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:535,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:537,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:538,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 22
    argCount: 2
    argNames:
    - record
    - savepath
    argTypes:
    - XLogReaderState*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 489
    functionDepth: 1
    functionLinenumber: 489
    functionLinenumberEnd: 540
    functionName: XLogRecordSaveFPWs
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - fclose
    - snprintf
    - RestoreBlockImage
    - fwrite
    - fopen
    - XLogRecHasBlockRef
    - pg_fatal
    - XLogRecMaxBlockId
    - sprintf
    - XLogRecGetBlockTagExtended
    - XLogRecHasBlockImage
    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:549,1
    - Dst: XLogRecGetRmid
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:549,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:552,1
    - Dst: XLogRecGetPrev
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:553,1
    - Dst: XLogRecGetLen
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:556,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:558,1
    - Dst: XLogRecGetTotalLen
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:560,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:561,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:562,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:563,1
    - Dst: RmgrDescData*::rm_identify
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:565,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:567,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:569,1
    - Dst: initStringInfo
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:571,1
    - Dst: RmgrDescData*::rm_desc
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:572,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:573,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:575,1
    - Dst: XLogRecGetBlockRefInfo
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:576,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:577,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:578,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - config
    - record
    argTypes:
    - XLogDumpConfig*
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 545
    functionDepth: 2
    functionLinenumber: 545
    functionLinenumberEnd: 579
    functionName: XLogDumpDisplayRecord
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - XLogRecGetRmid
    - printf
    - pfree
    - resetStringInfo
    - XLogRecGetTotalLen
    - RmgrDescData*::rm_identify
    - RmgrDescData*::rm_desc
    - XLogRecGetInfo
    - GetRmgrDesc
    - XLogRecGetXid
    - XLogRecGetBlockRefInfo
    - initStringInfo
    - XLogRecGetPrev
    - XLogRecGetLen
    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:612,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: 619
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 619
    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: XLogRecPtrIsInvalid
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:640,1
    - Dst: RmgrIdIsValid
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:650,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:659,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:660,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:660,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:667,1
    - Dst: RmgrIdIsValid
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:680,1
    - Dst: GetRmgrDesc
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:683,1
    - Dst: RmgrIdIsCustom
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:692,1
    - Dst: XLogDumpStatsRow
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:695,1
    - Dst: RmgrDescData*::rm_identify
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:715,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:717,1
    - Dst: XLogDumpStatsRow
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:719,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:719,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:726,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:744,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:750,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:751,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 48
    argCount: 2
    argNames:
    - config
    - stats
    argTypes:
    - XLogDumpConfig*
    - XLogStats*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 625
    functionDepth: 2
    functionLinenumber: 625
    functionLinenumberEnd: 753
    functionName: XLogDumpDisplayStats
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - printf
    - RmgrIdIsValid
    - RmgrDescData*::rm_identify
    - XLogDumpStatsRow
    - GetRmgrDesc
    - RmgrIdIsCustom
    - XLogRecPtrIsInvalid
    - psprintf
    linkageType: ''
    returnType: void
    signature: void XLogDumpDisplayStats(XLogDumpConfig *config, XLogStats *stats)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:758,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:758,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:760,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:760,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:761,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:761,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:762,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:762,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:763,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:763,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:764,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:764,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:765,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:765,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:766,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:766,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:767,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:767,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:769,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:769,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:770,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:770,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:773,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:773,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:774,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:774,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:776,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:776,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:777,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:777,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:778,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:778,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:780,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:780,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:781,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:781,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:782,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:782,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:783,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:783,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:785,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:785,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:786,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:786,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:787,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:787,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:788,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:788,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 755
    functionDepth: 0
    functionLinenumber: 755
    functionLinenumberEnd: 789
    functionName: usage
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - BBCount: 75
    BranchProfiles: []
    Callsites:
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:831,1
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:834,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:835,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:835,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:836,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:840,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:840,1
    - Dst: usage
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:842,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:843,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:845,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:845,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:847,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:848,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:852,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:853,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:854,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:884,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:888,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:897,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:898,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:900,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:907,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:909,1
    - Dst: forkname_to_number
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:919,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:922,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:928,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:930,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:935,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:944,1
    - Dst: print_rmgr_list
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:946,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:947,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:957,1
    - Dst: RmgrIdIsCustom
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:959,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:961,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:973,1
    - Dst: GetRmgrDesc
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:973,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:982,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:990,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:994,1
    - Dst: RelFileNumberIsValid
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:995,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:997,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:998,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1005,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1007,1
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1026,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1028,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1033,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1040,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1053,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1055,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1066,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1068,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1070,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1077,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1087,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1094,1
    - Dst: verify_directory
      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: create_fullpage_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1110,1
    - Dst: split_path
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1120,1
    - Dst: verify_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1126,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1127,1
    - Dst: identify_target_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1130,1
    - Dst: open_file_in_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1131,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1133,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1134,1
    - Dst: XLogFromFileName
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1137,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1139,1
    - Dst: XLogSegNoOffsetToRecPtr
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1140,1
    - Dst: XLByteInSeg
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1141,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1143,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1144,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1150,1
    - Dst: XLogSegNoOffsetToRecPtr
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1151,1
    - Dst: split_path
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1159,1
    - Dst: open_file_in_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1161,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1163,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1164,1
    - Dst: XLogFromFileName
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1167,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1170,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1173,1
    - Dst: XLogSegNoOffsetToRecPtr
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1174,1
    - Dst: XLByteInSeg
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1182,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1185,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1186,1
    - Dst: identify_target_directory
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1192,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1195,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1197,1
    - Dst: XLogReaderAllocate
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1205,1
    - Dst: XL_ROUTINE
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1206,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1211,1
    - Dst: XLogFindNextRecord
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1214,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1217,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1218,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1226,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1227,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1227,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1230,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1231,1
    - Dst: XLogReadRecord
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1246,1
    - Dst: pg_usleep
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1253,1
    - Dst: XLogRecordMatchesRelationBlock
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1269,1
    - Dst: XLogRecordHasFPW
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1279,1
    - Dst: XLogRecStoreStats
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1287,1
    - Dst: XLogDumpDisplayRecord
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1291,1
    - Dst: XLogRecordSaveFPWs
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1296,1
    - Dst: XLogDumpDisplayStats
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1306,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1309,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1312,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1313,1
    - Dst: XLogReaderFree
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1316,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_waldump/pg_waldump.c:1321,1
    CyclomaticComplexity: 128
    EdgeCount: 128
    ICount: 310
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1323
      start: 791
    functionDepth: 4
    functionLinenumber: 791
    functionLinenumberEnd: 1323
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_waldump/pg_waldump.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - XLogFromFileName
    - LSN_FORMAT_ARGS
    - XLogRecStoreStats
    - strtoul
    - pg_usleep
    - set_pglocale_pgservice
    - exit
    - open_file_in_directory
    - XLogSegNoOffsetToRecPtr
    - print_rmgr_list
    - XLogRecordSaveFPWs
    - puts
    - create_fullpage_directory
    - pg_logging_init
    - XLogFindNextRecord
    - XLogDumpDisplayRecord
    - XLogReaderFree
    - pg_log_error_detail
    - pg_log_info
    - XL_ROUTINE
    - BlockNumberIsValid
    - strcmp
    - pg_log_error
    - XLogSegmentOffset
    - XLogReadRecord
    - XLogReaderAllocate
    - identify_target_directory
    - close
    - XLogRecordMatchesRelationBlock
    - pg_log_error_hint
    - usage
    - verify_directory
    - OidIsValid
    - split_path
    - RmgrIdIsCustom
    - isspace
    - pg_fatal
    - XLogRecPtrIsInvalid
    - pg_strcasecmp
    - get_progname
    - getopt_long
    - XLByteInSeg
    - forkname_to_number
    - memset
    - pg_strdup
    - XLogDumpDisplayStats
    - sscanf
    - XLogRecordHasFPW
    - RelFileNumberIsValid
    - pqsignal
    - GetRmgrDesc
    - ngettext
    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:30,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:30,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:31,1
    - Dst: handle_args
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:33,1
    - Dst: test_timing
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:35,1
    - Dst: output
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 40
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - handle_args
    - set_pglocale_pgservice
    - test_timing
    - output
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:57,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:57,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:59,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:59,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:60,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:62,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:62,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:64,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:65,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:69,1
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:76,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:81,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:81,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:83,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:83,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:84,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:90,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:90,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:92,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:97,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:97,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:99,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:106,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:107,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:109,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:109,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:111,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:115,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:115,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 39
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 119
    functionName: handle_args
    functionSourceFile: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c
    functionUses: 2
    functionsReached:
    - printf
    - getopt_long
    - strtoul
    - puts
    - fprintf
    - exit
    - _
    - strcmp
    - ngettext
    linkageType: ''
    returnType: void
    signature: void handle_args(int argc, char *argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INT64CONST
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:133,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:135,1
    - Dst: INSTR_TIME_GET_MICROSEC
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:136,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:144,1
    - Dst: INSTR_TIME_GET_MICROSEC
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:145,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:151,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:151,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:152,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:152,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:153,1
    - Dst: INSTR_TIME_SUBTRACT
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:167,1
    - Dst: INSTR_TIME_GET_MICROSEC
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:168,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:171,1
    - Dst: INSTR_TIME_SUBTRACT
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:173,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:175,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:175,1
    - Dst: INSTR_TIME_GET_DOUBLE
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:176,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 1
    argNames:
    - duration
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 179
    functionName: test_timing
    functionSourceFile: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c
    functionUses: 1
    functionsReached:
    - printf
    - fprintf
    - exit
    - INSTR_TIME_GET_DOUBLE
    - _
    - INSTR_TIME_SUBTRACT
    - INSTR_TIME_SET_CURRENT
    - INT64CONST
    - INSTR_TIME_GET_MICROSEC
    linkageType: ''
    returnType: uint64
    signature: uint64 test_timing(unsigned int duration)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:186,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:187,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:188,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:189,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:190,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:191,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:197,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:197,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:198,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:199,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:200,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:201,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:204,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:205,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:206,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c:207,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - loop_count
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 208
    functionName: output
    functionSourceFile: /src/postgres/src/bin/pg_test_timing/pg_test_timing.c
    functionUses: 1
    functionsReached:
    - printf
    - Max
    - strlen
    - _
    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: 34
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:142,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:143,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:143,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:144,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:146,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:150,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:150,1
    - Dst: usage
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:152,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:153,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:155,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:155,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:157,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:158,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:177,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:178,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:179,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:180,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:181,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:183,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:192,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:194,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:195,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:200,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:203,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:203,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:205,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:205,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:208,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:224,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:225,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:229,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:230,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:237,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:238,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:239,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:241,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:242,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:247,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:249,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:250,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:255,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:263,1
    - Dst: find_other_exec
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:264,1
    - Dst: find_my_exec
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:271,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:272,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:275,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:278,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:285,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:290,1
    - Dst: parse_manifest_file
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:297,1
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:302,1
    - Dst: report_fatal_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:304,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:318,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:319,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:323,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:324,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:331,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:340,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:341,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:342,1
    - Dst: verify_plain_backup_directory
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:350,1
    - Dst: verify_tar_backup
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:353,1
    - Dst: report_extra_backup_files
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:360,1
    - Dst: verify_backup_checksums
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:369,1
    - Dst: parse_required_wal
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:376,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:383,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:383,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 123
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 386
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - report_fatal_error
    - set_pglocale_pgservice
    - pstrdup
    - exit
    - find_other_exec
    - canonicalize_path
    - psprintf
    - verify_tar_backup
    - pfree
    - puts
    - pg_logging_init
    - _
    - strcmp
    - pg_log_error
    - verify_backup_checksums
    - parse_required_wal
    - stat
    - pg_log_error_hint
    - pg_malloc
    - usage
    - pg_fatal
    - strlcpy
    - get_progname
    - getopt_long
    - find_my_exec
    - printf
    - report_extra_backup_files
    - memset
    - parse_manifest_file
    - opendir
    - simple_string_list_append
    - verify_plain_backup_directory
    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:407,1
    - Dst: report_fatal_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:408,1
    - Dst: fstat
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:411,1
    - Dst: report_fatal_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:412,1
    - Dst: Min
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:416,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:416,1
    - Dst: manifest_files_create
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:419,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:421,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:435,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:436,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:440,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:442,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:447,1
    - Dst: json_parse_manifest
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:450,1
    - Dst: json_parse_manifest_incremental_init
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:457,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:459,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:474,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:478,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:480,1
    - Dst: json_parse_manifest_incremental_chunk
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:486,1
    - Dst: json_parse_manifest_incremental_shutdown
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:491,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:493,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:497,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 48
    argCount: 1
    argNames:
    - manifest_path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 391
    functionDepth: 1
    functionLinenumber: 391
    functionLinenumberEnd: 500
    functionName: parse_manifest_file
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 1
    functionsReached:
    - json_parse_manifest_incremental_chunk
    - Min
    - json_parse_manifest_incremental_shutdown
    - report_fatal_error
    - json_parse_manifest
    - pfree
    - json_parse_manifest_incremental_init
    - close
    - open
    - fstat
    - manifest_files_create
    - pg_malloc
    - Max
    - read
    - pg_malloc0
    - pg_fatal
    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:513,1
    - Dst: pg_log_generic_v
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:514,1
    - Dst: gettext
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:514,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:515,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:517,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - context
    - fmt
    argTypes:
    - JsonManifestParseContext*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 508
    functionDepth: 1
    functionLinenumber: 508
    functionLinenumberEnd: 518
    functionName: report_manifest_error
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 0
    functionsReached:
    - gettext
    - va_end
    - exit
    - va_start
    - pg_log_generic_v
    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: 531
      start: 523
    functionDepth: 0
    functionLinenumber: 523
    functionLinenumberEnd: 531
    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: 544
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 544
    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:561,1
    - Dst: report_fatal_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:563,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: 573
      start: 549
    functionDepth: 1
    functionLinenumber: 549
    functionLinenumberEnd: 573
    functionName: verifybackup_per_file_cb
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 0
    functionsReached:
    - report_fatal_error
    - manifest_files_insert
    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
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:587,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: 600
      start: 578
    functionDepth: 0
    functionLinenumber: 578
    functionLinenumberEnd: 600
    functionName: verifybackup_per_wal_range_cb
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 0
    functionsReached:
    - palloc
    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:622,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:624,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:626,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:631,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:634,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:639,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:643,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:645,1
    - Dst: should_ignore_relpath
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:647,1
    - Dst: verify_plain_backup_file
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:648,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:650,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:651,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:654,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:656,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: 660
      start: 615
    functionDepth: 1
    functionLinenumber: 615
    functionLinenumberEnd: 660
    functionName: verify_plain_backup_directory
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 1
    functionsReached:
    - readdir
    - pfree
    - verify_plain_backup_file
    - report_backup_error
    - closedir
    - pstrdup
    - opendir
    - simple_string_list_append
    - should_ignore_relpath
    - strcmp
    - psprintf
    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:675,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:677,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:685,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:691,1
    - Dst: verify_plain_backup_directory
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:693,1
    - Dst: S_ISREG
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:698,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:700,1
    - Dst: manifest_files_lookup
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:707,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:710,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:722,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:734,1
    - Dst: verify_control_file
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:735,1
    - Dst: should_verify_checksum
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:739,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 3
    argNames:
    - context
    - relpath
    - fullpath
    argTypes:
    - verifier_context*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 668
    functionDepth: 2
    functionLinenumber: 668
    functionLinenumberEnd: 748
    functionName: verify_plain_backup_file
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 1
    functionsReached:
    - S_ISREG
    - manifest_files_lookup
    - stat
    - S_ISDIR
    - verify_control_file
    - simple_string_list_append
    - should_verify_checksum
    - verify_plain_backup_directory
    - strcmp
    - report_backup_error
    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:760,1
    - Dst: get_controlfile_by_exact_path
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:761,1
    - Dst: report_fatal_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:765,1
    - Dst: report_fatal_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:769,1
    - Dst: report_fatal_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:774,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:780,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - controlpath
    - manifest_system_identifier
    argTypes:
    - char*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 754
    functionDepth: 1
    functionLinenumber: 754
    functionLinenumberEnd: 781
    functionName: verify_control_file
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 1
    functionsReached:
    - pfree
    - pg_log_debug
    - report_fatal_error
    - get_controlfile_by_exact_path
    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:796,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:798,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:801,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:807,1
    - Dst: should_ignore_relpath
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:814,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:818,1
    - Dst: precheck_tar_backup_file
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:819,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:820,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:824,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:826,1
    - Dst: create_archive_verifier
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:843,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:849,1
    - Dst: verify_tar_file
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:853,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:856,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:857,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:858,1
    - Dst: astreamer_finalize
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:860,1
    - Dst: astreamer_free
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:861,1
    - Dst: simple_ptr_list_destroy
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:863,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:865,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 2
    argNames:
    - context
    - dir
    argTypes:
    - verifier_context*
    - DIR*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 789
    functionDepth: 1
    functionLinenumber: 789
    functionLinenumberEnd: 866
    functionName: verify_tar_backup
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 1
    functionsReached:
    - readdir
    - pfree
    - Assert
    - astreamer_free
    - report_backup_error
    - simple_ptr_list_destroy
    - closedir
    - precheck_tar_backup_file
    - verify_tar_file
    - astreamer_finalize
    - should_ignore_relpath
    - create_archive_verifier
    - strcmp
    - progress_report
    - psprintf
    linkageType: ''
    returnType: void
    signature: void verify_tar_backup(verifier_context *context, DIR *dir)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:891,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:894,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:896,1
    - Dst: S_ISREG
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:903,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:905,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:920,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:922,1
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:927,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:935,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:944,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:946,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:948,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:950,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:952,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:956,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:966,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:973,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:974,1
    - Dst: simple_ptr_list_append
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:978,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 42
    argCount: 4
    argNames:
    - context
    - relpath
    - fullpath
    - tarfiles
    argTypes:
    - verifier_context*
    - char*
    - char*
    - SimplePtrList*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 880
    functionDepth: 1
    functionLinenumber: 880
    functionLinenumberEnd: 983
    functionName: precheck_tar_backup_file
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 1
    functionsReached:
    - Assert
    - S_ISREG
    - simple_ptr_list_append
    - stat
    - strtoul
    - pstrdup
    - pg_malloc
    - strcmp
    - strncmp
    - report_backup_error
    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)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1000,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1003,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1005,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1010,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1013,1
    - Dst: astreamer_content
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1015,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1019,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1022,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1025,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1029,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1030,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: 1032
      start: 992
    functionDepth: 1
    functionLinenumber: 992
    functionLinenumberEnd: 1032
    functionName: verify_tar_file
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 1
    functionsReached:
    - close
    - open
    - pg_malloc
    - read
    - pg_log_debug
    - progress_report
    - astreamer_content
    - report_backup_error
    - pg_free
    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:1045,1
    - Dst: manifest_files_iterate
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1046,1
    - Dst: should_ignore_relpath
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1047,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1048,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - context
    argTypes:
    - verifier_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 1038
    functionDepth: 1
    functionLinenumber: 1038
    functionLinenumberEnd: 1051
    functionName: report_extra_backup_files
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 1
    functionsReached:
    - manifest_files_start_iterate
    - manifest_files_iterate
    - report_backup_error
    - should_ignore_relpath
    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:1066,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1068,1
    - Dst: manifest_files_start_iterate
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1070,1
    - Dst: manifest_files_iterate
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1071,1
    - Dst: should_verify_checksum
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1073,1
    - Dst: should_ignore_relpath
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1074,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1079,1
    - Dst: verify_file_checksum
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1083,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1086,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1090,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1092,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - context
    argTypes:
    - verifier_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1093
      start: 1058
    functionDepth: 1
    functionLinenumber: 1058
    functionLinenumberEnd: 1093
    functionName: verify_backup_checksums
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 1
    functionsReached:
    - pfree
    - manifest_files_iterate
    - verify_file_checksum
    - pg_malloc
    - should_verify_checksum
    - should_ignore_relpath
    - manifest_files_start_iterate
    - progress_report
    - psprintf
    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:1111,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1113,1
    - Dst: pg_checksum_init
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1119,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1121,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1123,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1128,1
    - Dst: pg_checksum_update
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1131,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1133,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1135,1
    - Dst: progress_report
      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:1144,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1148,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1150,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1168,1
    - Dst: pg_checksum_final
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1175,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1178,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1186,1
    - Dst: memcmp
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1189,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1190,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: 1193
      start: 1098
    functionDepth: 1
    functionLinenumber: 1098
    functionLinenumberEnd: 1193
    functionName: verify_file_checksum
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 1
    functionsReached:
    - pg_checksum_update
    - memcmp
    - close
    - open
    - read
    - pg_checksum_init
    - pg_checksum_final
    - progress_report
    - report_backup_error
    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:1210,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1212,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1213,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1214,1
    - Dst: system
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1215,1
    - Dst: report_backup_error
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1216,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - context
    - pg_waldump_path
    - wal_directory
    argTypes:
    - verifier_context*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1222
      start: 1199
    functionDepth: 1
    functionLinenumber: 1199
    functionLinenumberEnd: 1222
    functionName: parse_required_wal
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 1
    functionsReached:
    - LSN_FORMAT_ARGS
    - fflush
    - psprintf
    - report_backup_error
    - system
    linkageType: ''
    returnType: void
    signature: "void parse_required_wal(verifier_context *context, char *pg_waldump_path,\n\t\t\t\t
      \  char *wal_directory)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1235,1
    - Dst: pg_log_generic_v
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1236,1
    - Dst: gettext
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1236,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1237,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1241,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - context
    - pg_restrict
    argTypes:
    - verifier_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1242
      start: 1230
    functionDepth: 1
    functionLinenumber: 1230
    functionLinenumberEnd: 1242
    functionName: report_backup_error
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 8
    functionsReached:
    - gettext
    - va_end
    - exit
    - va_start
    - pg_log_generic_v
    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:1252,1
    - Dst: pg_log_generic_v
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1253,1
    - Dst: gettext
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1253,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1254,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - pg_restrict
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1257
      start: 1247
    functionDepth: 1
    functionLinenumber: 1247
    functionLinenumberEnd: 1257
    functionName: report_fatal_error
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 4
    functionsReached:
    - gettext
    - va_end
    - exit
    - va_start
    - pg_log_generic_v
    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: 1284
      start: 1266
    functionDepth: 0
    functionLinenumber: 1266
    functionLinenumberEnd: 1284
    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:1297,1
    - Dst: astreamer_verify_content_new
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1300,1
    - Dst: astreamer_tar_parser_new
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1304,1
    - Dst: astreamer_gzip_decompressor_new
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1308,1
    - Dst: astreamer_lz4_decompressor_new
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1310,1
    - Dst: astreamer_zstd_decompressor_new
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1312,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: 1315
      start: 1290
    functionDepth: 1
    functionLinenumber: 1290
    functionLinenumberEnd: 1315
    functionName: create_archive_verifier
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 1
    functionsReached:
    - astreamer_verify_content_new
    - Assert
    - astreamer_tar_parser_new
    - astreamer_gzip_decompressor_new
    - astreamer_zstd_decompressor_new
    - astreamer_lz4_decompressor_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:1338,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1345,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1347,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1350,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1351,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1352,1
    - Dst: fputc
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1359,1
    - Dst: isatty
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1359,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1359,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - finished
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1360
      start: 1326
    functionDepth: 0
    functionLinenumber: 1326
    functionLinenumberEnd: 1360
    functionName: progress_report
    functionSourceFile: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c
    functionUses: 5
    functionsReached:
    - snprintf
    - time
    - fputc
    - fprintf
    - isatty
    - _
    - fileno
    - strlen
    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:1368,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1368,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1369,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1369,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1370,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1370,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1371,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1371,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1372,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1372,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1373,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1373,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1374,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1374,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1375,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1375,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1376,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1376,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1377,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1377,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1378,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1378,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1379,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1379,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1380,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1380,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1381,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1381,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1382,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1382,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1383,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_verifybackup/pg_verifybackup.c:1383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1384
      start: 1365
    functionDepth: 0
    functionLinenumber: 1365
    functionLinenumberEnd: 1384
    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
      Src: /src/postgres/src/bin/pg_verifybackup/astreamer_verify.c:72,1
    - Dst: pg_malloc
      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:
    - pg_malloc
    - palloc0
    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:
    - Assert
    - member_verify_header
    - member_copy_control_data
    - member_compute_checksum
    - member_verify_control_data
    - member_reset_info
    - pg_fatal
    - member_verify_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: 11
    EdgeCount: 11
    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:
    - manifest_files_lookup
    - snprintf
    - should_verify_checksum
    - OidIsValid
    - pg_checksum_init
    - should_ignore_relpath
    - strcmp
    - canonicalize_path
    - report_backup_error
    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
    - pg_checksum_update
    - report_backup_error
    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:
    - memcmp
    - pg_checksum_final
    - Assert
    - report_backup_error
    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:
    - memcpy
    - Assert
    - Min
    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:
    - COMP_CRC32C
    - Assert
    - report_fatal_error
    - FIN_CRC32C
    - INIT_CRC32C
    - EQ_CRC32C
    - strcmp
    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
    - pg_TZDIR
    - open
    - strlcpy
    - strlen
    linkageType: ''
    returnType: int
    signature: int pg_open_tzfile(const char *name, char *canonname)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/findtimezone.c:95,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/findtimezone.c:101,1
    - Dst: tzparse
      Src: /src/postgres/src/bin/initdb/findtimezone.c:103,1
    - Dst: tzload
      Src: /src/postgres/src/bin/initdb/findtimezone.c:109,1
    - Dst: tzparse
      Src: /src/postgres/src/bin/initdb/findtimezone.c:111,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/initdb/findtimezone.c:117,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 120
    functionName: pg_load_tz
    functionSourceFile: /src/postgres/src/bin/initdb/findtimezone.c
    functionUses: 0
    functionsReached:
    - tzparse
    - tzload
    - strcmp
    - strlen
    - strcpy
    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: 184
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 184
    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:194,1
    - Dst: mktime
      Src: /src/postgres/src/bin/initdb/findtimezone.c:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - year
    - month
    - day
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 201
    functionName: build_time_t
    functionSourceFile: /src/postgres/src/bin/initdb/findtimezone.c
    functionUses: 0
    functionsReached:
    - memset
    - mktime
    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: 220
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 220
    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:244,1
    - Dst: pg_tz_acceptable
      Src: /src/postgres/src/bin/initdb/findtimezone.c:249,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:252,1
    - Dst: pg_localtime
      Src: /src/postgres/src/bin/initdb/findtimezone.c:261,1
    - Dst: localtime
      Src: /src/postgres/src/bin/initdb/findtimezone.c:264,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:268,1
    - Dst: compare_tm
      Src: /src/postgres/src/bin/initdb/findtimezone.c:276,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:279,1
    - Dst: memset
      Src: /src/postgres/src/bin/initdb/findtimezone.c:295,1
    - Dst: strftime
      Src: /src/postgres/src/bin/initdb/findtimezone.c:296,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/findtimezone.c:297,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:300,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:310,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 2
    argNames:
    - tzname
    - tt
    argTypes:
    - char*
    - struct tztry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 233
    functionDepth: 2
    functionLinenumber: 233
    functionLinenumberEnd: 314
    functionName: score_timezone
    functionSourceFile: /src/postgres/src/bin/initdb/findtimezone.c
    functionUses: 0
    functionsReached:
    - strcmp
    - compare_tm
    - memset
    - fprintf
    - pg_localtime
    - pg_tz_acceptable
    - localtime
    - strftime
    - pg_load_tz
    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:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tzname
    - tt
    argTypes:
    - char*
    - struct tztry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 319
    functionDepth: 3
    functionLinenumber: 319
    functionLinenumberEnd: 323
    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:347,1
    - Dst: time
      Src: /src/postgres/src/bin/initdb/findtimezone.c:368,1
    - Dst: localtime
      Src: /src/postgres/src/bin/initdb/findtimezone.c:369,1
    - Dst: build_time_t
      Src: /src/postgres/src/bin/initdb/findtimezone.c:374,1
    - Dst: build_time_t
      Src: /src/postgres/src/bin/initdb/findtimezone.c:387,1
    - Dst: check_system_link_file
      Src: /src/postgres/src/bin/initdb/findtimezone.c:406,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/initdb/findtimezone.c:410,1
    - Dst: pg_TZDIR
      Src: /src/postgres/src/bin/initdb/findtimezone.c:410,1
    - Dst: scan_available_timezones
      Src: /src/postgres/src/bin/initdb/findtimezone.c:413,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/findtimezone.c:413,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/findtimezone.c:419,1
    - Dst: memset
      Src: /src/postgres/src/bin/initdb/findtimezone.c:432,1
    - Dst: memset
      Src: /src/postgres/src/bin/initdb/findtimezone.c:433,1
    - Dst: time
      Src: /src/postgres/src/bin/initdb/findtimezone.c:436,1
    - Dst: localtime
      Src: /src/postgres/src/bin/initdb/findtimezone.c:451,1
    - Dst: memset
      Src: /src/postgres/src/bin/initdb/findtimezone.c:459,1
    - Dst: strftime
      Src: /src/postgres/src/bin/initdb/findtimezone.c:460,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/initdb/findtimezone.c:461,1
    - Dst: get_timezone_offset
      Src: /src/postgres/src/bin/initdb/findtimezone.c:462,1
    - Dst: memset
      Src: /src/postgres/src/bin/initdb/findtimezone.c:467,1
    - Dst: strftime
      Src: /src/postgres/src/bin/initdb/findtimezone.c:468,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/initdb/findtimezone.c:469,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:480,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:488,1
    - Dst: score_timezone
      Src: /src/postgres/src/bin/initdb/findtimezone.c:490,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/initdb/findtimezone.c:495,1
    - Dst: score_timezone
      Src: /src/postgres/src/bin/initdb/findtimezone.c:496,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:500,1
    - Dst: score_timezone
      Src: /src/postgres/src/bin/initdb/findtimezone.c:502,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:511,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:515,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 72
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 330
    functionDepth: 3
    functionLinenumber: 330
    functionLinenumberEnd: 519
    functionName: identify_system_timezone
    functionSourceFile: /src/postgres/src/bin/initdb/findtimezone.c
    functionUses: 0
    functionsReached:
    - check_system_link_file
    - strcmp
    - scan_available_timezones
    - tzset
    - build_time_t
    - get_timezone_offset
    - memset
    - pg_TZDIR
    - score_timezone
    - snprintf
    - time
    - fprintf
    - strlcpy
    - localtime
    - strftime
    - strlen
    - strcpy
    linkageType: ''
    returnType: char
    signature: 'char *

      identify_system_timezone(void)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: readlink
      Src: /src/postgres/src/bin/initdb/findtimezone.c:556,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:562,1
    - Dst: strchr
      Src: /src/postgres/src/bin/initdb/findtimezone.c:577,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/findtimezone.c:592,1
    - Dst: perfect_timezone_match
      Src: /src/postgres/src/bin/initdb/findtimezone.c:593,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/initdb/findtimezone.c:596,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 3
    argNames:
    - linkname
    - tt
    - bestzonename
    argTypes:
    - char*
    - struct tztry*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 543
    functionDepth: 4
    functionLinenumber: 543
    functionLinenumberEnd: 607
    functionName: check_system_link_file
    functionSourceFile: /src/postgres/src/bin/initdb/findtimezone.c
    functionUses: 1
    functionsReached:
    - perfect_timezone_match
    - fprintf
    - readlink
    - strcpy
    - strlen
    - strchr
    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:621,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/findtimezone.c:623,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/findtimezone.c:630,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/findtimezone.c:631,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - zonename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 614
    functionDepth: 0
    functionLinenumber: 614
    functionLinenumberEnd: 635
    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:660,1
    - Dst: pgfnames
      Src: /src/postgres/src/bin/initdb/findtimezone.c:664,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:677,1
    - Dst: stat
      Src: /src/postgres/src/bin/initdb/findtimezone.c:680,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:683,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/bin/initdb/findtimezone.c:690,1
    - Dst: scan_available_timezones
      Src: /src/postgres/src/bin/initdb/findtimezone.c:693,1
    - Dst: score_timezone
      Src: /src/postgres/src/bin/initdb/findtimezone.c:699,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/initdb/findtimezone.c:704,1
    - Dst: zone_name_pref
      Src: /src/postgres/src/bin/initdb/findtimezone.c:709,1
    - Dst: zone_name_pref
      Src: /src/postgres/src/bin/initdb/findtimezone.c:710,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/findtimezone.c:714,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/findtimezone.c:714,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/findtimezone.c:715,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/findtimezone.c:715,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/findtimezone.c:716,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/initdb/findtimezone.c:717,1
    - Dst: pgfnames_cleanup
      Src: /src/postgres/src/bin/initdb/findtimezone.c:725,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: 726
      start: 656
    functionDepth: 3
    functionLinenumber: 656
    functionLinenumberEnd: 726
    functionName: scan_available_timezones
    functionSourceFile: /src/postgres/src/bin/initdb/findtimezone.c
    functionUses: 2
    functionsReached:
    - strcmp
    - pgfnames
    - scan_available_timezones
    - stat
    - snprintf
    - pgfnames_cleanup
    - S_ISDIR
    - zone_name_pref
    - fprintf
    - strlcpy
    - score_timezone
    - strlen
    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:1570,1
    - Dst: localtime
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1571,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1578,1
    - Dst: memset
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1583,1
    - Dst: strftime
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1584,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1588,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1589,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1592,1
    - Dst: memset
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1604,1
    - Dst: RegOpenKeyEx
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1605,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1612,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1613,1
    - Dst: memset
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1627,1
    - Dst: RegEnumKeyEx
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1629,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1641,1
    - Dst: RegOpenKeyEx
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1647,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1650,1
    - Dst: memset
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1656,1
    - Dst: RegQueryValueEx
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1658,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1661,1
    - Dst: RegCloseKey
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1664,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1667,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1670,1
    - Dst: RegCloseKey
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1671,1
    - Dst: memset
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1674,1
    - Dst: RegQueryValueEx
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1676,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1679,1
    - Dst: RegCloseKey
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1682,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1685,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1688,1
    - Dst: RegCloseKey
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1689,1
    - Dst: RegCloseKey
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1693,1
    - Dst: RegCloseKey
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1696,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1703,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1704,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1707,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1716,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 68
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1720
      start: 1564
    functionDepth: 0
    functionLinenumber: 1564
    functionLinenumberEnd: 1720
    functionName: identify_system_timezone
    functionSourceFile: /src/postgres/src/bin/initdb/findtimezone.c
    functionUses: 0
    functionsReached:
    - strcmp
    - RegOpenKeyEx
    - memset
    - time
    - GetLastError
    - fprintf
    - RegEnumKeyEx
    - RegCloseKey
    - RegQueryValueEx
    - localtime
    - strftime
    - strcpy
    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:1735,1
    - Dst: pg_tz_acceptable
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1739,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - tzname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1743
      start: 1727
    functionDepth: 2
    functionLinenumber: 1727
    functionLinenumberEnd: 1743
    functionName: validate_zone
    functionSourceFile: /src/postgres/src/bin/initdb/findtimezone.c
    functionUses: 0
    functionsReached:
    - pg_tz_acceptable
    - pg_load_tz
    linkageType: ''
    returnType: bool
    signature: bool validate_zone(const char *tzname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1763,1
    - Dst: getenv
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1767,1
    - Dst: validate_zone
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1768,1
    - Dst: identify_system_timezone
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1772,1
    - Dst: validate_zone
      Src: /src/postgres/src/bin/initdb/findtimezone.c:1773,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - share_path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1777
      start: 1756
    functionDepth: 4
    functionLinenumber: 1756
    functionLinenumberEnd: 1777
    functionName: select_default_timezone
    functionSourceFile: /src/postgres/src/bin/initdb/findtimezone.c
    functionUses: 0
    functionsReached:
    - getenv
    - snprintf
    - identify_system_timezone
    - validate_zone
    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: 339
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 339
    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: 345
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 345
    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:370,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:372,1
    - Dst: wcsdup
      Src: /src/postgres/src/bin/initdb/initdb.c:373,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:375,1
    - Dst: setlocale
      Src: /src/postgres/src/bin/initdb/initdb.c:377,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:379,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:380,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - category
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 364
    functionDepth: 1
    functionLinenumber: 364
    functionLinenumberEnd: 383
    functionName: save_global_locale
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - wcsdup
    - setlocale
    - pg_strdup
    - pg_fatal
    - _wsetlocale
    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:392,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:393,1
    - Dst: setlocale
      Src: /src/postgres/src/bin/initdb/initdb.c:395,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:396,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:398,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - category
    - save
    argTypes:
    - int
    - save_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 399
    functionName: restore_global_locale
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - free
    - pg_fatal
    - _wsetlocale
    - setlocale
    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:408,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:411,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - src
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 405
    functionDepth: 1
    functionLinenumber: 405
    functionLinenumberEnd: 413
    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:425,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/initdb/initdb.c:429,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/initdb.c:429,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:437,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - src
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 421
    functionDepth: 1
    functionLinenumber: 421
    functionLinenumberEnd: 439
    functionName: escape_quotes_bki
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - pg_malloc
    - escape_quotes
    - free
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      escape_quotes_bki(const char *src)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/initdb/initdb.c:447,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:450,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - listhead
    - str
    argTypes:
    - _stringlist**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 444
    functionDepth: 1
    functionLinenumber: 444
    functionLinenumberEnd: 460
    functionName: add_stringlist_item
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - pg_malloc
    - pg_strdup
    linkageType: ''
    returnType: void
    signature: void add_stringlist_item(_stringlist **listhead, const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/initdb.c:479,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/initdb.c:480,1
    - Dst: strstr
      Src: /src/postgres/src/bin/initdb/initdb.c:490,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/initdb/initdb.c:495,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/initdb.c:495,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/initdb/initdb.c:499,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/initdb/initdb.c:501,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/initdb/initdb.c:503,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:505,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 472
    functionDepth: 1
    functionLinenumber: 472
    functionLinenumberEnd: 510
    functionName: replace_token
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - strstr
    - pg_malloc
    - free
    - memcpy
    - strlen
    - 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:531,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:532,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/initdb/initdb.c:537,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:538,1
    - Dst: guc_value_requires_quotes
      Src: /src/postgres/src/bin/initdb/initdb.c:539,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:540,1
    - Dst: escape_quotes
      Src: /src/postgres/src/bin/initdb/initdb.c:540,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/initdb/initdb.c:542,1
    - Dst: isspace
      Src: /src/postgres/src/bin/initdb/initdb.c:556,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/initdb/initdb.c:558,1
    - Dst: isspace
      Src: /src/postgres/src/bin/initdb/initdb.c:562,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/initdb/initdb.c:568,1
    - Dst: strrchr
      Src: /src/postgres/src/bin/initdb/initdb.c:571,1
    - Dst: Max
      Src: /src/postgres/src/bin/initdb/initdb.c:592,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/initdb/initdb.c:599,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/initdb/initdb.c:604,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/initdb/initdb.c:609,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/initdb/initdb.c:613,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:615,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/initdb/initdb.c:627,1
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/initdb/initdb.c:628,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:633,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 53
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 527
    functionDepth: 1
    functionLinenumber: 527
    functionLinenumberEnd: 636
    functionName: replace_guc_value
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - escape_quotes
    - strrchr
    - createPQExpBuffer
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - Max
    - pg_strncasecmp
    - free
    - guc_value_requires_quotes
    - memcpy
    - pg_realloc_array
    - strlen
    - isspace
    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:652,1
    - Dst: strspn
      Src: /src/postgres/src/bin/initdb/initdb.c:654,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/initdb.c:654,1
    - Dst: strchr
      Src: /src/postgres/src/bin/initdb/initdb.c:658,1
    - Dst: strspn
      Src: /src/postgres/src/bin/initdb/initdb.c:661,1
    - Dst: strspn
      Src: /src/postgres/src/bin/initdb/initdb.c:663,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/initdb.c:663,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - guc_value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 643
    functionDepth: 0
    functionLinenumber: 643
    functionLinenumberEnd: 668
    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:684,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:685,1
    - Dst: initStringInfo
      Src: /src/postgres/src/bin/initdb/initdb.c:687,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/initdb/initdb.c:690,1
    - Dst: pg_get_line_buf
      Src: /src/postgres/src/bin/initdb/initdb.c:693,1
    - Dst: pg_realloc
      Src: /src/postgres/src/bin/initdb/initdb.c:699,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:702,1
    - Dst: pfree
      Src: /src/postgres/src/bin/initdb/initdb.c:706,1
    - Dst: fclose
      Src: /src/postgres/src/bin/initdb/initdb.c:708,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 675
    functionDepth: 1
    functionLinenumber: 675
    functionLinenumberEnd: 711
    functionName: readfile
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - pfree
    - fclose
    - pg_strdup
    - pg_malloc
    - fopen
    - pg_get_line_buf
    - pg_fatal
    - pg_realloc
    - initStringInfo
    linkageType: ''
    returnType: char
    signature: 'char **

      readfile(const char *path)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/postgres/src/bin/initdb/initdb.c:728,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:729,1
    - Dst: fputs
      Src: /src/postgres/src/bin/initdb/initdb.c:732,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:733,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:734,1
    - Dst: fclose
      Src: /src/postgres/src/bin/initdb/initdb.c:736,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:737,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:738,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - path
    - lines
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 722
    functionDepth: 1
    functionLinenumber: 722
    functionLinenumberEnd: 739
    functionName: writefile
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - fputs
    - fclose
    - fopen
    - 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:749,1
    - Dst: popen
      Src: /src/postgres/src/bin/initdb/initdb.c:751,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:753,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - command
    - mode
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 744
    functionDepth: 1
    functionLinenumber: 744
    functionLinenumberEnd: 755
    functionName: popen_check
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - popen
    - fflush
    - pg_log_error
    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:771,1
    - Dst: rmtree
      Src: /src/postgres/src/bin/initdb/initdb.c:772,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:773,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/initdb/initdb.c:777,1
    - Dst: rmtree
      Src: /src/postgres/src/bin/initdb/initdb.c:779,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:780,1
    - 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:792,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:793,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/initdb/initdb.c:800,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/initdb/initdb.c:804,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 761
    functionDepth: 1
    functionLinenumber: 761
    functionLinenumberEnd: 807
    functionName: cleanup_directories_atexit
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - pg_log_error
    - rmtree
    - pg_log_info
    linkageType: ''
    returnType: void
    signature: void cleanup_directories_atexit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: geteuid
      Src: /src/postgres/src/bin/initdb/initdb.c:820,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:822,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:823,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:824,1
    - Dst: get_user_name_or_exit
      Src: /src/postgres/src/bin/initdb/initdb.c:828,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:830,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 814
    functionDepth: 1
    functionLinenumber: 814
    functionLinenumberEnd: 831
    functionName: get_id
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - pg_strdup
    - pg_log_error_hint
    - exit
    - get_user_name_or_exit
    - pg_log_error
    - geteuid
    linkageType: ''
    returnType: char
    signature: 'char *

      get_id(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:838,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:839,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - enc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 833
    functionDepth: 1
    functionLinenumber: 833
    functionLinenumberEnd: 840
    functionName: encodingid_to_string
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - sprintf
    - pg_strdup
    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:852,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:855,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - encoding_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 845
    functionDepth: 1
    functionLinenumber: 845
    functionLinenumberEnd: 857
    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:956,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:959,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/initdb/initdb.c:968,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:970,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:975,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 1
    argNames:
    - lc_type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 937
    functionDepth: 1
    functionLinenumber: 937
    functionLinenumberEnd: 977
    functionName: find_matching_ts_config
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - pg_strdup
    - pg_strcasecmp
    - free
    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:986,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dest
    - filename
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 983
    functionDepth: 1
    functionLinenumber: 983
    functionLinenumberEnd: 987
    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:997,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:1001,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:1002,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:1006,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:1007,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:1009,1
    - Dst: S_ISREG
      Src: /src/postgres/src/bin/initdb/initdb.c:1011,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:1013,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:1014,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:1015,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1017
      start: 992
    functionDepth: 1
    functionLinenumber: 992
    functionLinenumberEnd: 1017
    functionName: check_input
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - S_ISREG
    - stat
    - pg_log_error_hint
    - exit
    - pg_log_error
    linkageType: ''
    returnType: void
    signature: void check_input(char *path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1030,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1032,1
    - Dst: fopen
      Src: /src/postgres/src/bin/initdb/initdb.c:1034,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:1035,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1036,1
    - Dst: fclose
      Src: /src/postgres/src/bin/initdb/initdb.c:1037,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:1038,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:1039,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - extrapath
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1040
      start: 1023
    functionDepth: 1
    functionLinenumber: 1023
    functionLinenumberEnd: 1040
    functionName: write_version_file
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - fclose
    - fprintf
    - fopen
    - pg_fatal
    - free
    - psprintf
    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:1052,1
    - Dst: fopen
      Src: /src/postgres/src/bin/initdb/initdb.c:1053,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:1055,1
    - Dst: fclose
      Src: /src/postgres/src/bin/initdb/initdb.c:1056,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:1057,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:1058,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1046
    functionDepth: 1
    functionLinenumber: 1046
    functionLinenumberEnd: 1059
    functionName: set_null_conf
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - fclose
    - fopen
    - psprintf
    - pg_fatal
    - free
    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:1083,1
    - Dst: getpid
      Src: /src/postgres/src/bin/initdb/initdb.c:1083,1
    - Dst: time
      Src: /src/postgres/src/bin/initdb/initdb.c:1083,1
    - Dst: pg_prng_uint32
      Src: /src/postgres/src/bin/initdb/initdb.c:1091,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1092,1
    - Dst: shm_open
      Src: /src/postgres/src/bin/initdb/initdb.c:1093,1
    - Dst: close
      Src: /src/postgres/src/bin/initdb/initdb.c:1095,1
    - Dst: shm_unlink
      Src: /src/postgres/src/bin/initdb/initdb.c:1096,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1110
      start: 1075
    functionDepth: 1
    functionLinenumber: 1075
    functionLinenumberEnd: 1110
    functionName: choose_dsm_implementation
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - pg_prng_seed
    - snprintf
    - close
    - time
    - getpid
    - shm_unlink
    - pg_prng_uint32
    - shm_open
    linkageType: ''
    returnType: char
    signature: 'char *

      choose_dsm_implementation(void)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:1157,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:1157,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:1158,1
    - Dst: choose_dsm_implementation
      Src: /src/postgres/src/bin/initdb/initdb.c:1159,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:1160,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:1167,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:1167,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:1168,1
    - Dst: AV_SLOTS_FOR_CONNS
      Src: /src/postgres/src/bin/initdb/initdb.c:1173,1
    - Dst: MIN_BUFS_FOR_CONNS
      Src: /src/postgres/src/bin/initdb/initdb.c:1174,1
    - Dst: test_specific_config_settings
      Src: /src/postgres/src/bin/initdb/initdb.c:1176,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:1186,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:1188,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:1188,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:1189,1
    - Dst: test_specific_config_settings
      Src: /src/postgres/src/bin/initdb/initdb.c:1201,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:1207,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:1209,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:1211,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:1211,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:1212,1
    - Dst: select_default_timezone
      Src: /src/postgres/src/bin/initdb/initdb.c:1213,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:1214,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1215
      start: 1117
    functionDepth: 5
    functionLinenumber: 1117
    functionLinenumberEnd: 1215
    functionName: test_config_settings
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - printf
    - test_specific_config_settings
    - AV_SLOTS_FOR_CONNS
    - fflush
    - select_default_timezone
    - MIN_BUFS_FOR_CONNS
    - _
    - choose_dsm_implementation
    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: 1125
      start: 1124
    functionDepth: 0
    functionLinenumber: 1124
    functionLinenumberEnd: 1125
    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: 1136
      start: 1135
    functionDepth: 0
    functionLinenumber: 1135
    functionLinenumberEnd: 1136
    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:1228,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:1231,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:1246,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/initdb/initdb.c:1247,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:1250,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:1254,1
    - Dst: system
      Src: /src/postgres/src/bin/initdb/initdb.c:1255,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:1257,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: 1260
      start: 1220
    functionDepth: 1
    functionLinenumber: 1220
    functionLinenumberEnd: 1260
    functionName: test_specific_config_settings
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 1
    functionsReached:
    - fflush
    - termPQExpBuffer
    - appendPQExpBuffer
    - printfPQExpBuffer
    - appendShellString
    - initPQExpBuffer
    - system
    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:1269,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1272,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1274,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - segment_count
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1277
      start: 1265
    functionDepth: 1
    functionLinenumber: 1265
    functionLinenumberEnd: 1277
    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: 14
    BranchProfiles: []
    Callsites:
    - Dst: fputs
      Src: /src/postgres/src/bin/initdb/initdb.c:1291,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:1291,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:1292,1
    - Dst: readfile
      Src: /src/postgres/src/bin/initdb/initdb.c:1296,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1298,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1299,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1302,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1303,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1307,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1310,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1312,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1315,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1318,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1321,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1324,1
    - Dst: locale_date_order
      Src: /src/postgres/src/bin/initdb/initdb.c:1327,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/initdb/initdb.c:1330,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/initdb/initdb.c:1333,1
    - Dst: strcpy
      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: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1343,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1345,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1350,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1352,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1356,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1360,1
    - Dst: pretty_wal_size
      Src: /src/postgres/src/bin/initdb/initdb.c:1361,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1363,1
    - Dst: pretty_wal_size
      Src: /src/postgres/src/bin/initdb/initdb.c:1364,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1370,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1373,1
    - Dst: snprintf
      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: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1384,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1386,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1391,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1393,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1398,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:1406,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:1407,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:1408,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:1409,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1411,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1423,1
    - Dst: replace_guc_value
      Src: /src/postgres/src/bin/initdb/initdb.c:1434,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1439,1
    - Dst: writefile
      Src: /src/postgres/src/bin/initdb/initdb.c:1441,1
    - Dst: chmod
      Src: /src/postgres/src/bin/initdb/initdb.c:1442,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:1443,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/initdb/initdb.c:1448,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:1449,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:1450,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1453,1
    - Dst: writefile
      Src: /src/postgres/src/bin/initdb/initdb.c:1455,1
    - Dst: chmod
      Src: /src/postgres/src/bin/initdb/initdb.c:1456,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:1457,1
    - Dst: readfile
      Src: /src/postgres/src/bin/initdb/initdb.c:1462,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1464,1
    - Dst: WSAStartup
      Src: /src/postgres/src/bin/initdb/initdb.c:1483,1
    - Dst: MAKEWORD
      Src: /src/postgres/src/bin/initdb/initdb.c:1483,1
    - Dst: getaddrinfo
      Src: /src/postgres/src/bin/initdb/initdb.c:1497,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1499,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1502,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1509,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1512,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1516,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:1518,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:1518,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1520,1
    - Dst: writefile
      Src: /src/postgres/src/bin/initdb/initdb.c:1522,1
    - Dst: chmod
      Src: /src/postgres/src/bin/initdb/initdb.c:1523,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:1524,1
    - Dst: readfile
      Src: /src/postgres/src/bin/initdb/initdb.c:1529,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1531,1
    - Dst: writefile
      Src: /src/postgres/src/bin/initdb/initdb.c:1533,1
    - Dst: chmod
      Src: /src/postgres/src/bin/initdb/initdb.c:1534,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:1535,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/initdb/initdb.c:1537,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 97
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1538
      start: 1282
    functionDepth: 2
    functionLinenumber: 1282
    functionLinenumberEnd: 1538
    functionName: setup_config
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - writefile
    - snprintf
    - replace_token
    - chmod
    - sprintf
    - replace_guc_value
    - pretty_wal_size
    - MAKEWORD
    - _
    - check_ok
    - strcmp
    - readfile
    - strcpy
    - fflush
    - getaddrinfo
    - fputs
    - pg_malloc_array
    - locale_date_order
    - pg_fatal
    - pg_strdup
    - WSAStartup
    linkageType: ''
    returnType: void
    signature: void setup_config(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:1554,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:1554,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:1555,1
    - Dst: readfile
      Src: /src/postgres/src/bin/initdb/initdb.c:1557,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1561,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:1564,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:1566,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:1568,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:1569,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1574,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1575,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1577,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1578,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1580,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1583,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1586,1
    - Dst: escape_quotes_bki
      Src: /src/postgres/src/bin/initdb/initdb.c:1587,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1589,1
    - Dst: encodingid_to_string
      Src: /src/postgres/src/bin/initdb/initdb.c:1590,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1592,1
    - Dst: escape_quotes_bki
      Src: /src/postgres/src/bin/initdb/initdb.c:1593,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1595,1
    - Dst: escape_quotes_bki
      Src: /src/postgres/src/bin/initdb/initdb.c:1596,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1598,1
    - Dst: escape_quotes_bki
      Src: /src/postgres/src/bin/initdb/initdb.c:1599,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1601,1
    - Dst: escape_quotes_bki
      Src: /src/postgres/src/bin/initdb/initdb.c:1602,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1604,1
    - Dst: replace_token
      Src: /src/postgres/src/bin/initdb/initdb.c:1605,1
    - Dst: unsetenv
      Src: /src/postgres/src/bin/initdb/initdb.c:1608,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:1610,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:1612,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:1613,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/initdb/initdb.c:1615,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/initdb/initdb.c:1617,1
    - Dst: PG_CMD_OPEN
      Src: /src/postgres/src/bin/initdb/initdb.c:1620,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1624,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:1625,1
    - Dst: PG_CMD_CLOSE
      Src: /src/postgres/src/bin/initdb/initdb.c:1628,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:1630,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:1631,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/initdb/initdb.c:1633,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1634
      start: 1544
    functionDepth: 2
    functionLinenumber: 1544
    functionLinenumberEnd: 1634
    functionName: bootstrap_template1
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - snprintf
    - termPQExpBuffer
    - exit
    - replace_token
    - escape_quotes_bki
    - PG_CMD_PUTS
    - sprintf
    - encodingid_to_string
    - PG_CMD_OPEN
    - appendPQExpBufferStr
    - _
    - free
    - check_ok
    - strcmp
    - pg_log_error
    - readfile
    - fflush
    - pg_log_error_hint
    - PG_CMD_CLOSE
    - printf
    - printfPQExpBuffer
    - appendPQExpBuffer
    - unsetenv
    - initPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void bootstrap_template1(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1646,1
    - Dst: PG_CMD_PRINTF
      Src: /src/postgres/src/bin/initdb/initdb.c:1649,1
    - Dst: escape_quotes
      Src: /src/postgres/src/bin/initdb/initdb.c:1650,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - cmdfd
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1651
      start: 1639
    functionDepth: 1
    functionLinenumber: 1639
    functionLinenumberEnd: 1651
    functionName: setup_auth
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - PG_CMD_PUTS
    - PG_CMD_PRINTF
    - escape_quotes
    linkageType: ''
    returnType: void
    signature: void setup_auth(FILE *cmdfd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:1668,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:1669,1
    - Dst: simple_prompt
      Src: /src/postgres/src/bin/initdb/initdb.c:1670,1
    - Dst: simple_prompt
      Src: /src/postgres/src/bin/initdb/initdb.c:1671,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:1672,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1674,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:1674,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:1675,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:1677,1
    - Dst: fopen
      Src: /src/postgres/src/bin/initdb/initdb.c:1689,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:1692,1
    - Dst: pg_get_line
      Src: /src/postgres/src/bin/initdb/initdb.c:1694,1
    - Dst: ferror
      Src: /src/postgres/src/bin/initdb/initdb.c:1697,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:1698,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:1701,1
    - Dst: fclose
      Src: /src/postgres/src/bin/initdb/initdb.c:1704,1
    - Dst: pg_strip_crlf
      Src: /src/postgres/src/bin/initdb/initdb.c:1706,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1710
      start: 1656
    functionDepth: 1
    functionLinenumber: 1656
    functionLinenumberEnd: 1710
    functionName: get_su_pwd
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - printf
    - fflush
    - fclose
    - simple_prompt
    - ferror
    - pg_get_line
    - fprintf
    - exit
    - fopen
    - pg_fatal
    - _
    - pg_strip_crlf
    - strcmp
    - free
    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:1722,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmdfd
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1723
      start: 1715
    functionDepth: 1
    functionLinenumber: 1715
    functionLinenumberEnd: 1723
    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:1733,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1737,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:1738,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1741,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:1743,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - cmdfd
    - filename
    argTypes:
    - FILE*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1744
      start: 1728
    functionDepth: 1
    functionLinenumber: 1728
    functionLinenumberEnd: 1744
    functionName: setup_run_file
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - free
    - PG_CMD_PUTS
    - readfile
    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:1753,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmdfd
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1765
      start: 1749
    functionDepth: 1
    functionLinenumber: 1749
    functionLinenumberEnd: 1765
    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:1778,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1781,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cmdfd
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1782
      start: 1770
    functionDepth: 1
    functionLinenumber: 1770
    functionLinenumberEnd: 1782
    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:1806,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/initdb/initdb.c:1814,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/initdb/initdb.c:1815,1
    - Dst: escape_quotes
      Src: /src/postgres/src/bin/initdb/initdb.c:1817,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1818,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1819,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1820,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/initdb/initdb.c:1833,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/initdb/initdb.c:1834,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1835,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/initdb/initdb.c:1849,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/initdb/initdb.c:1850,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1851,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1863,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1875,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1887,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1900,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1912,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:1925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - cmdfd
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1938
      start: 1803
    functionDepth: 1
    functionLinenumber: 1803
    functionLinenumberEnd: 1938
    functionName: setup_privileges
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - PG_CMD_PUTS
    - PG_CMD_PRINTF
    - CppAsString2
    - escape_quotes
    linkageType: ''
    returnType: void
    signature: void setup_privileges(FILE *cmdfd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:1952,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/initdb.c:1955,1
    - Dst: strtol
      Src: /src/postgres/src/bin/initdb/initdb.c:1959,1
    - Dst: strtol
      Src: /src/postgres/src/bin/initdb/initdb.c:1961,1
    - Dst: strtol
      Src: /src/postgres/src/bin/initdb/initdb.c:1963,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:1964,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1966
      start: 1944
    functionDepth: 1
    functionLinenumber: 1944
    functionLinenumberEnd: 1966
    functionName: set_info_version
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - pg_strdup
    - strtol
    - snprintf
    - strlen
    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:1974,1
    - Dst: PG_CMD_PRINTF
      Src: /src/postgres/src/bin/initdb/initdb.c:1976,1
    - Dst: PG_CMD_PRINTF
      Src: /src/postgres/src/bin/initdb/initdb.c:1981,1
    - Dst: escape_quotes
      Src: /src/postgres/src/bin/initdb/initdb.c:1985,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - cmdfd
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1986
      start: 1971
    functionDepth: 2
    functionLinenumber: 1971
    functionLinenumberEnd: 1986
    functionName: setup_schema
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - PG_CMD_PRINTF
    - escape_quotes
    - setup_run_file
    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:1994,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmdfd
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1995
      start: 1991
    functionDepth: 1
    functionLinenumber: 1991
    functionLinenumberEnd: 1995
    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:2004,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmdfd
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2005
      start: 2000
    functionDepth: 1
    functionLinenumber: 2000
    functionLinenumberEnd: 2005
    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:2030,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:2039,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:2044,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:2050,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:2051,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:2053,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:2058,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - cmdfd
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2059
      start: 2010
    functionDepth: 1
    functionLinenumber: 2010
    functionLinenumberEnd: 2059
    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:2071,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/initdb/initdb.c:2071,1
    - Dst: PG_CMD_PUTS
      Src: /src/postgres/src/bin/initdb/initdb.c:2073,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cmdfd
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2074
      start: 2064
    functionDepth: 1
    functionLinenumber: 2064
    functionLinenumberEnd: 2074
    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:2101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2103
      start: 2097
    functionDepth: 0
    functionLinenumber: 2097
    functionLinenumberEnd: 2103
    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:2113,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2113,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:2114,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:2115,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2119,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2119,1
    - Dst: strerror
      Src: /src/postgres/src/bin/initdb/initdb.c:2120,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:2121,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:2122,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2127,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2127,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:2128,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2130
      start: 2108
    functionDepth: 0
    functionLinenumber: 2108
    functionLinenumberEnd: 2130
    functionName: check_ok
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 2
    functionsReached:
    - printf
    - fflush
    - strerror
    - exit
    - _
    linkageType: ''
    returnType: void
    signature: void check_ok(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strftime
      Src: /src/postgres/src/bin/initdb/initdb.c:2136,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: 2137
      start: 2133
    functionDepth: 0
    functionLinenumber: 2133
    functionLinenumberEnd: 2137
    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:2156,1
    - Dst: setlocale
      Src: /src/postgres/src/bin/initdb/initdb.c:2158,1
    - Dst: memset
      Src: /src/postgres/src/bin/initdb/initdb.c:2160,1
    - Dst: my_strftime
      Src: /src/postgres/src/bin/initdb/initdb.c:2165,1
    - Dst: restore_global_locale
      Src: /src/postgres/src/bin/initdb/initdb.c:2167,1
    - Dst: strstr
      Src: /src/postgres/src/bin/initdb/initdb.c:2172,1
    - Dst: strstr
      Src: /src/postgres/src/bin/initdb/initdb.c:2173,1
    - Dst: strstr
      Src: /src/postgres/src/bin/initdb/initdb.c:2174,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - locale
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2187
      start: 2142
    functionDepth: 2
    functionLinenumber: 2142
    functionLinenumberEnd: 2187
    functionName: locale_date_order
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 1
    functionsReached:
    - setlocale
    - memset
    - strstr
    - my_strftime
    - save_global_locale
    - 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:2208,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2209,1
    - Dst: save_global_locale
      Src: /src/postgres/src/bin/initdb/initdb.c:2214,1
    - Dst: setlocale
      Src: /src/postgres/src/bin/initdb/initdb.c:2221,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:2225,1
    - Dst: restore_global_locale
      Src: /src/postgres/src/bin/initdb/initdb.c:2228,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:2235,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:2236,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:2237,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2249,1
    - Dst: pg_is_ascii
      Src: /src/postgres/src/bin/initdb/initdb.c:2254,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2255,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 3
    argNames:
    - category
    - locale
    - canonname
    argTypes:
    - int
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2257
      start: 2201
    functionDepth: 2
    functionLinenumber: 2201
    functionLinenumberEnd: 2257
    functionName: check_locale_name
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - setlocale
    - pg_is_ascii
    - pg_strdup
    - pg_log_error_hint
    - save_global_locale
    - restore_global_locale
    - exit
    - pg_fatal
    - pg_log_error
    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:2269,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:2280,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/initdb/initdb.c:2281,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/initdb/initdb.c:2284,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/initdb/initdb.c:2285,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:2286,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - locale
    - user_enc
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2292
      start: 2264
    functionDepth: 1
    functionLinenumber: 2264
    functionLinenumberEnd: 2292
    functionName: check_locale_encoding
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - pg_encoding_to_char
    - pg_log_error_hint
    - pg_log_error_detail
    - pg_get_encoding_from_locale
    - pg_log_error
    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:2302,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:2304,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/initdb/initdb.c:2305,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/initdb/initdb.c:2306,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:2307,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - user_enc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2313
      start: 2299
    functionDepth: 1
    functionLinenumber: 2299
    functionLinenumberEnd: 2313
    functionName: check_icu_locale_encoding
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - pg_encoding_to_char
    - is_encoding_supported_by_icu
    - pg_log_error_hint
    - pg_log_error_detail
    - pg_log_error
    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:2334,1
    - Dst: uloc_toLanguageTag
      Src: /src/postgres/src/bin/initdb/initdb.c:2338,1
    - Dst: pg_realloc
      Src: /src/postgres/src/bin/initdb/initdb.c:2345,1
    - Dst: U_FAILURE
      Src: /src/postgres/src/bin/initdb/initdb.c:2352,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/initdb/initdb.c:2354,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2356,1
    - Dst: u_errorName
      Src: /src/postgres/src/bin/initdb/initdb.c:2357,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2362,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - loc_str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2365
      start: 2319
    functionDepth: 1
    functionLinenumber: 2319
    functionLinenumberEnd: 2365
    functionName: icu_language_tag
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - uloc_toLanguageTag
    - u_errorName
    - pg_malloc
    - pg_fatal
    - pg_realloc
    - U_FAILURE
    - pg_free
    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:2382,1
    - Dst: U_FAILURE
      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: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2391,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2392,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2392,1
    - Dst: uloc_countAvailable
      Src: /src/postgres/src/bin/initdb/initdb.c:2396,1
    - Dst: uloc_getAvailable
      Src: /src/postgres/src/bin/initdb/initdb.c:2398,1
    - Dst: uloc_getLanguage
      Src: /src/postgres/src/bin/initdb/initdb.c:2402,1
    - Dst: U_FAILURE
      Src: /src/postgres/src/bin/initdb/initdb.c:2403,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2406,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2411,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2414,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 1
    argNames:
    - loc_str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2416
      start: 2372
    functionDepth: 0
    functionLinenumber: 2372
    functionLinenumberEnd: 2416
    functionName: icu_validate_locale
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - uloc_getAvailable
    - u_errorName
    - uloc_getLanguage
    - pg_fatal
    - strcmp
    - U_FAILURE
    - uloc_countAvailable
    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:2452,1
    - Dst: check_locale_name
      Src: /src/postgres/src/bin/initdb/initdb.c:2454,1
    - Dst: check_locale_name
      Src: /src/postgres/src/bin/initdb/initdb.c:2456,1
    - Dst: check_locale_name
      Src: /src/postgres/src/bin/initdb/initdb.c:2458,1
    - Dst: check_locale_name
      Src: /src/postgres/src/bin/initdb/initdb.c:2460,1
    - Dst: check_locale_name
      Src: /src/postgres/src/bin/initdb/initdb.c:2463,1
    - Dst: check_locale_name
      Src: /src/postgres/src/bin/initdb/initdb.c:2467,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2472,1
    - Dst: collprovider_name
      Src: /src/postgres/src/bin/initdb/initdb.c:2473,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2477,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2479,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2480,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2482,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2485,1
    - Dst: icu_language_tag
      Src: /src/postgres/src/bin/initdb/initdb.c:2495,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2496,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2496,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/initdb/initdb.c:2498,1
    - Dst: icu_validate_locale
      Src: /src/postgres/src/bin/initdb/initdb.c:2501,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2508,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 51
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2511
      start: 2423
    functionDepth: 3
    functionLinenumber: 2423
    functionLinenumberEnd: 2511
    functionName: setlocales
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - collprovider_name
    - printf
    - icu_language_tag
    - pg_fatal
    - _
    - strcmp
    - check_locale_name
    - icu_validate_locale
    - pg_free
    linkageType: ''
    returnType: void
    signature: void setlocales(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2519,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2519,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2520,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2520,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2521,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2521,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2522,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2522,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2523,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2523,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2524,1
    - Dst: _
      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: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2526,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2526,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2527,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2527,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2528,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2528,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2529,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2529,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2530,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2530,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2531,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2531,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2532,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2532,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2533,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2533,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2537,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2537,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2538,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2538,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2540,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2540,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2542,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2542,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2543,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2543,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2544,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2544,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2546,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2546,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2547,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2547,1
    - 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:2563,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2563,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2564,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2564,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2565,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2565,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:2568,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2568,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 44
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2569
      start: 2516
    functionDepth: 0
    functionLinenumber: 2516
    functionLinenumberEnd: 2569
    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: 2579
      start: 2571
    functionDepth: 0
    functionLinenumber: 2571
    functionLinenumberEnd: 2579
    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:2588,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2592,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - authmethod
    - valid_methods
    - conntype
    argTypes:
    - char*
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2594
      start: 2581
    functionDepth: 0
    functionLinenumber: 2581
    functionLinenumberEnd: 2594
    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:2599,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2600,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2601,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2602,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2603,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2604,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2606,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 3
    argCount: 2
    argNames:
    - authmethodlocal
    - authmethodhost
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2607
      start: 2596
    functionDepth: 0
    functionLinenumber: 2596
    functionLinenumberEnd: 2607
    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:2617,1
    - Dst: strlen
      Src: /src/postgres/src/bin/initdb/initdb.c:2618,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:2621,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:2625,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:2626,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:2629,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:2633,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/initdb/initdb.c:2634,1
    - Dst: setenv
      Src: /src/postgres/src/bin/initdb/initdb.c:2642,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2643,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2644
      start: 2610
    functionDepth: 1
    functionLinenumber: 2610
    functionLinenumberEnd: 2644
    functionName: setup_pgdata
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - getenv
    - pg_strdup
    - setenv
    - pg_log_error_hint
    - exit
    - pg_fatal
    - pg_log_error
    - canonicalize_path
    - strlen
    linkageType: ''
    returnType: void
    signature: void setup_pgdata(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: find_other_exec
      Src: /src/postgres/src/bin/initdb/initdb.c:2652,1
    - Dst: find_my_exec
      Src: /src/postgres/src/bin/initdb/initdb.c:2657,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/initdb/initdb.c:2658,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2661,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2664,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/initdb/initdb.c:2669,1
    - Dst: last_dir_separator
      Src: /src/postgres/src/bin/initdb/initdb.c:2670,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/initdb/initdb.c:2671,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/initdb/initdb.c:2675,1
    - Dst: get_share_path
      Src: /src/postgres/src/bin/initdb/initdb.c:2676,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/bin/initdb/initdb.c:2678,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2679,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/initdb/initdb.c:2681,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - argv0
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2682
      start: 2647
    functionDepth: 1
    functionLinenumber: 2647
    functionLinenumberEnd: 2682
    functionName: setup_bin_paths
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - find_my_exec
    - is_absolute_path
    - last_dir_separator
    - pg_malloc
    - strlcpy
    - pg_fatal
    - find_other_exec
    - get_share_path
    - canonicalize_path
    - 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:2687,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2690,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2691,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2692,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2693,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2694,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2695,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2696,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2696,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2699,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2699,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2700,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2700,1
    - Dst: collprovider_name
      Src: /src/postgres/src/bin/initdb/initdb.c:2700,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2702,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2702,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2703,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2703,1
    - Dst: pg_get_encoding_from_locale
      Src: /src/postgres/src/bin/initdb/initdb.c:2721,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:2733,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:2735,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:2736,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:2737,1
    - Dst: pg_valid_server_encoding_id
      Src: /src/postgres/src/bin/initdb/initdb.c:2739,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2748,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2748,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/initdb/initdb.c:2750,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/initdb/initdb.c:2751,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:2753,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/initdb/initdb.c:2754,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/initdb/initdb.c:2755,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/initdb/initdb.c:2756,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:2757,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:2759,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2765,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2765,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/initdb/initdb.c:2766,1
    - Dst: get_encoding_id
      Src: /src/postgres/src/bin/initdb/initdb.c:2770,1
    - Dst: check_locale_encoding
      Src: /src/postgres/src/bin/initdb/initdb.c:2772,1
    - Dst: check_locale_encoding
      Src: /src/postgres/src/bin/initdb/initdb.c:2773,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:2774,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2778,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2779,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2781,1
    - Dst: check_icu_locale_encoding
      Src: /src/postgres/src/bin/initdb/initdb.c:2786,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:2787,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2788
      start: 2684
    functionDepth: 4
    functionLinenumber: 2684
    functionLinenumberEnd: 2788
    functionName: setup_locale_encoding
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - printf
    - setlocales
    - collprovider_name
    - pg_valid_server_encoding_id
    - pg_encoding_to_char
    - pg_get_encoding_from_locale
    - pg_log_error_hint
    - get_encoding_id
    - check_icu_locale_encoding
    - exit
    - pg_fatal
    - _
    - pg_log_error_detail
    - strcmp
    - pg_log_error
    - check_locale_encoding
    linkageType: ''
    returnType: void
    signature: void setup_locale_encoding(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: set_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2794,1
    - Dst: set_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2795,1
    - Dst: set_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2796,1
    - Dst: set_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2797,1
    - Dst: set_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2798,1
    - Dst: set_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2799,1
    - Dst: set_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2800,1
    - Dst: set_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2801,1
    - Dst: set_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2802,1
    - Dst: set_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2803,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:2807,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:2819,1
    - Dst: check_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2822,1
    - Dst: check_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2823,1
    - Dst: check_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2824,1
    - Dst: check_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2825,1
    - Dst: check_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2826,1
    - Dst: check_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2827,1
    - Dst: check_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2828,1
    - Dst: check_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2829,1
    - Dst: check_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2830,1
    - Dst: check_input
      Src: /src/postgres/src/bin/initdb/initdb.c:2831,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2832
      start: 2791
    functionDepth: 2
    functionLinenumber: 2791
    functionLinenumberEnd: 2832
    functionName: setup_data_file_paths
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - set_input
    - check_input
    - exit
    - 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:2840,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/initdb/initdb.c:2843,1
    - Dst: find_matching_ts_config
      Src: /src/postgres/src/bin/initdb/initdb.c:2850,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/initdb/initdb.c:2854,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:2857,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/initdb/initdb.c:2859,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2864,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2864,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2866
      start: 2835
    functionDepth: 2
    functionLinenumber: 2835
    functionLinenumberEnd: 2866
    functionName: setup_text_search
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - printf
    - find_matching_ts_config
    - pg_log_warning
    - _
    - pg_log_info
    - strcmp
    linkageType: ''
    returnType: void
    signature: void setup_text_search(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pqsignal
      Src: /src/postgres/src/bin/initdb/initdb.c:2872,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/initdb/initdb.c:2873,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/initdb/initdb.c:2877,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/initdb/initdb.c:2878,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/initdb/initdb.c:2881,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/initdb/initdb.c:2884,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2886
      start: 2869
    functionDepth: 0
    functionLinenumber: 2869
    functionLinenumberEnd: 2886
    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:2894,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2898,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2898,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:2900,1
    - Dst: pg_mkdir_p
      Src: /src/postgres/src/bin/initdb/initdb.c:2902,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2903,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/initdb/initdb.c:2905,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2912,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2912,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:2914,1
    - Dst: chmod
      Src: /src/postgres/src/bin/initdb/initdb.c:2916,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2917,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/initdb/initdb.c:2920,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:2929,1
    - Dst: warn_on_mount_point
      Src: /src/postgres/src/bin/initdb/initdb.c:2931,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:2933,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:2937,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2941,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2943
      start: 2889
    functionDepth: 1
    functionLinenumber: 2889
    functionLinenumberEnd: 2943
    functionName: create_data_directory
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - printf
    - fflush
    - pg_mkdir_p
    - pg_check_dir
    - pg_log_error_hint
    - exit
    - pg_fatal
    - _
    - warn_on_mount_point
    - chmod
    - check_ok
    - pg_log_error
    linkageType: ''
    returnType: void
    signature: void create_data_directory(void)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:2953,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/initdb/initdb.c:2960,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/bin/initdb/initdb.c:2961,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2962,1
    - Dst: pg_check_dir
      Src: /src/postgres/src/bin/initdb/initdb.c:2965,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2969,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2969,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:2971,1
    - Dst: pg_mkdir_p
      Src: /src/postgres/src/bin/initdb/initdb.c:2973,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2974,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/initdb/initdb.c:2977,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:2984,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:2984,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:2986,1
    - Dst: chmod
      Src: /src/postgres/src/bin/initdb/initdb.c:2988,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:2989,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/initdb/initdb.c:2992,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:3001,1
    - Dst: warn_on_mount_point
      Src: /src/postgres/src/bin/initdb/initdb.c:3003,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:3005,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:3007,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:3011,1
    - Dst: symlink
      Src: /src/postgres/src/bin/initdb/initdb.c:3014,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:3015,1
    - Dst: mkdir
      Src: /src/postgres/src/bin/initdb/initdb.c:3021,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:3022,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:3026,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3027
      start: 2947
    functionDepth: 1
    functionLinenumber: 2947
    functionLinenumberEnd: 3027
    functionName: create_xlog_or_symlink
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - printf
    - fflush
    - pg_mkdir_p
    - is_absolute_path
    - pg_check_dir
    - pg_log_error_hint
    - exit
    - pg_fatal
    - _
    - warn_on_mount_point
    - chmod
    - check_ok
    - symlink
    - pg_log_error
    - canonicalize_path
    - free
    - psprintf
    - mkdir
    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:3034,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/initdb/initdb.c:3036,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:3038,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - error
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3040
      start: 3030
    functionDepth: 1
    functionLinenumber: 3030
    functionLinenumberEnd: 3040
    functionName: warn_on_mount_point
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 2
    functionsReached:
    - pg_log_error_hint
    - pg_log_error_detail
    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:3050,1
    - Dst: umask
      Src: /src/postgres/src/bin/initdb/initdb.c:3058,1
    - Dst: create_data_directory
      Src: /src/postgres/src/bin/initdb/initdb.c:3060,1
    - Dst: create_xlog_or_symlink
      Src: /src/postgres/src/bin/initdb/initdb.c:3062,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:3065,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:3065,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:3066,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/initdb/initdb.c:3068,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:3072,1
    - Dst: mkdir
      Src: /src/postgres/src/bin/initdb/initdb.c:3078,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:3079,1
    - Dst: free
      Src: /src/postgres/src/bin/initdb/initdb.c:3081,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/initdb/initdb.c:3084,1
    - Dst: write_version_file
      Src: /src/postgres/src/bin/initdb/initdb.c:3087,1
    - Dst: set_null_conf
      Src: /src/postgres/src/bin/initdb/initdb.c:3090,1
    - Dst: test_config_settings
      Src: /src/postgres/src/bin/initdb/initdb.c:3091,1
    - Dst: setup_config
      Src: /src/postgres/src/bin/initdb/initdb.c:3094,1
    - Dst: bootstrap_template1
      Src: /src/postgres/src/bin/initdb/initdb.c:3097,1
    - Dst: write_version_file
      Src: /src/postgres/src/bin/initdb/initdb.c:3102,1
    - Dst: fputs
      Src: /src/postgres/src/bin/initdb/initdb.c:3108,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:3108,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:3109,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:3111,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:3112,1
    - Dst: PG_CMD_OPEN
      Src: /src/postgres/src/bin/initdb/initdb.c:3115,1
    - Dst: setup_auth
      Src: /src/postgres/src/bin/initdb/initdb.c:3117,1
    - Dst: setup_run_file
      Src: /src/postgres/src/bin/initdb/initdb.c:3119,1
    - Dst: setup_run_file
      Src: /src/postgres/src/bin/initdb/initdb.c:3121,1
    - Dst: setup_depend
      Src: /src/postgres/src/bin/initdb/initdb.c:3123,1
    - Dst: setup_run_file
      Src: /src/postgres/src/bin/initdb/initdb.c:3130,1
    - Dst: setup_description
      Src: /src/postgres/src/bin/initdb/initdb.c:3132,1
    - Dst: setup_collation
      Src: /src/postgres/src/bin/initdb/initdb.c:3134,1
    - Dst: setup_run_file
      Src: /src/postgres/src/bin/initdb/initdb.c:3136,1
    - Dst: setup_privileges
      Src: /src/postgres/src/bin/initdb/initdb.c:3138,1
    - Dst: setup_schema
      Src: /src/postgres/src/bin/initdb/initdb.c:3140,1
    - Dst: load_plpgsql
      Src: /src/postgres/src/bin/initdb/initdb.c:3142,1
    - Dst: vacuum_db
      Src: /src/postgres/src/bin/initdb/initdb.c:3144,1
    - Dst: make_template0
      Src: /src/postgres/src/bin/initdb/initdb.c:3146,1
    - Dst: make_postgres
      Src: /src/postgres/src/bin/initdb/initdb.c:3148,1
    - Dst: PG_CMD_CLOSE
      Src: /src/postgres/src/bin/initdb/initdb.c:3150,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:3151,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/initdb/initdb.c:3153,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3154
      start: 3043
    functionDepth: 6
    functionLinenumber: 3043
    functionLinenumberEnd: 3154
    functionName: initialize_data_directory
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - lengthof
    - write_version_file
    - vacuum_db
    - termPQExpBuffer
    - create_data_directory
    - setup_depend
    - psprintf
    - setup_auth
    - setup_run_file
    - make_template0
    - setup_schema
    - load_plpgsql
    - _
    - check_ok
    - setup_config
    - make_postgres
    - setup_signals
    - fflush
    - fputs
    - set_null_conf
    - initPQExpBuffer
    - test_config_settings
    - pg_fatal
    - setup_description
    - PG_CMD_CLOSE
    - bootstrap_template1
    - printf
    - umask
    - setup_collation
    - create_xlog_or_symlink
    - printfPQExpBuffer
    - PG_CMD_OPEN
    - mkdir
    - setup_privileges
    - free
    linkageType: ''
    returnType: void
    signature: void initialize_data_directory(void)
  - BBCount: 66
    BranchProfiles: []
    Callsites:
    - Dst: setvbuf
      Src: /src/postgres/src/bin/initdb/initdb.c:3220,1
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/initdb/initdb.c:3222,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/initdb/initdb.c:3223,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/initdb/initdb.c:3224,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/initdb/initdb.c:3224,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:3228,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:3228,1
    - Dst: usage
      Src: /src/postgres/src/bin/initdb/initdb.c:3230,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:3231,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:3233,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:3233,1
    - Dst: puts
      Src: /src/postgres/src/bin/initdb/initdb.c:3235,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:3236,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/initdb/initdb.c:3242,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3248,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:3255,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:3257,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3261,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3264,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3268,1
    - Dst: strchr
      Src: /src/postgres/src/bin/initdb/initdb.c:3269,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:3273,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:3274,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:3276,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/bin/initdb/initdb.c:3279,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/bin/initdb/initdb.c:3280,1
    - Dst: pfree
      Src: /src/postgres/src/bin/initdb/initdb.c:3281,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3285,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3288,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3294,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:3298,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:3298,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:3302,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:3302,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3314,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3317,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3320,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3323,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3326,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3329,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3332,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3335,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3341,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3347,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3350,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/initdb/initdb.c:3353,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:3354,1
    - Dst: SetDataDirectoryCreatePerm
      Src: /src/postgres/src/bin/initdb/initdb.c:3360,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/initdb/initdb.c:3363,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:3368,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:3370,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/initdb/initdb.c:3372,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:3375,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:3382,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3386,1
    - Dst: parse_sync_method
      Src: /src/postgres/src/bin/initdb/initdb.c:3389,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:3390,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:3400,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:3401,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/initdb/initdb.c:3412,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/initdb/initdb.c:3418,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:3420,1
    - Dst: exit
      Src: /src/postgres/src/bin/initdb/initdb.c:3421,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:3425,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:3429,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:3433,1
    - Dst: atexit
      Src: /src/postgres/src/bin/initdb/initdb.c:3436,1
    - Dst: setup_pgdata
      Src: /src/postgres/src/bin/initdb/initdb.c:3441,1
    - Dst: pg_check_dir
      Src: /src/postgres/src/bin/initdb/initdb.c:3444,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:3445,1
    - Dst: fputs
      Src: /src/postgres/src/bin/initdb/initdb.c:3447,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:3447,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:3448,1
    - Dst: sync_pgdata
      Src: /src/postgres/src/bin/initdb/initdb.c:3449,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/initdb/initdb.c:3450,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:3455,1
    - Dst: check_authmethod_unspecified
      Src: /src/postgres/src/bin/initdb/initdb.c:3457,1
    - Dst: check_authmethod_unspecified
      Src: /src/postgres/src/bin/initdb/initdb.c:3458,1
    - Dst: check_authmethod_valid
      Src: /src/postgres/src/bin/initdb/initdb.c:3460,1
    - Dst: check_authmethod_valid
      Src: /src/postgres/src/bin/initdb/initdb.c:3461,1
    - Dst: check_need_password
      Src: /src/postgres/src/bin/initdb/initdb.c:3463,1
    - Dst: IsValidWalSegSize
      Src: /src/postgres/src/bin/initdb/initdb.c:3465,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:3466,1
    - Dst: get_restricted_token
      Src: /src/postgres/src/bin/initdb/initdb.c:3468,1
    - Dst: setup_pgdata
      Src: /src/postgres/src/bin/initdb/initdb.c:3470,1
    - Dst: setup_bin_paths
      Src: /src/postgres/src/bin/initdb/initdb.c:3472,1
    - Dst: get_id
      Src: /src/postgres/src/bin/initdb/initdb.c:3474,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/initdb/initdb.c:3478,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/initdb/initdb.c:3479,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:3481,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:3481,1
    - Dst: set_info_version
      Src: /src/postgres/src/bin/initdb/initdb.c:3486,1
    - Dst: setup_data_file_paths
      Src: /src/postgres/src/bin/initdb/initdb.c:3488,1
    - Dst: setup_locale_encoding
      Src: /src/postgres/src/bin/initdb/initdb.c:3490,1
    - Dst: setup_text_search
      Src: /src/postgres/src/bin/initdb/initdb.c:3492,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:3494,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:3497,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:3497,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:3499,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:3499,1
    - Dst: get_su_pwd
      Src: /src/postgres/src/bin/initdb/initdb.c:3502,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:3504,1
    - Dst: initialize_data_directory
      Src: /src/postgres/src/bin/initdb/initdb.c:3506,1
    - Dst: fputs
      Src: /src/postgres/src/bin/initdb/initdb.c:3510,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:3510,1
    - Dst: fflush
      Src: /src/postgres/src/bin/initdb/initdb.c:3511,1
    - Dst: sync_pgdata
      Src: /src/postgres/src/bin/initdb/initdb.c:3512,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/initdb/initdb.c:3513,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:3516,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:3516,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:3520,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/initdb/initdb.c:3521,1
    - Dst: pg_log_warning_hint
      Src: /src/postgres/src/bin/initdb/initdb.c:3522,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:3531,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/initdb/initdb.c:3534,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/initdb/initdb.c:3535,1
    - Dst: get_parent_directory
      Src: /src/postgres/src/bin/initdb/initdb.c:3536,1
    - Dst: join_path_components
      Src: /src/postgres/src/bin/initdb/initdb.c:3538,1
    - Dst: make_native_path
      Src: /src/postgres/src/bin/initdb/initdb.c:3541,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/initdb/initdb.c:3544,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/initdb/initdb.c:3547,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/initdb/initdb.c:3548,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:3552,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:3552,1
    - Dst: printf
      Src: /src/postgres/src/bin/initdb/initdb.c:3554,1
    - Dst: _
      Src: /src/postgres/src/bin/initdb/initdb.c:3554,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/initdb/initdb.c:3558,1
    CyclomaticComplexity: 74
    EdgeCount: 74
    ICount: 242
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3564
      start: 3157
    functionDepth: 7
    functionLinenumber: 3157
    functionLinenumberEnd: 3564
    functionName: main
    functionSourceFile: /src/postgres/src/bin/initdb/initdb.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - pg_log_warning
    - check_need_password
    - set_pglocale_pgservice
    - get_su_pwd
    - exit
    - IsValidWalSegSize
    - setup_pgdata
    - canonicalize_path
    - psprintf
    - add_stringlist_item
    - pfree
    - set_info_version
    - setup_locale_encoding
    - make_native_path
    - setvbuf
    - setup_bin_paths
    - createPQExpBuffer
    - get_parent_directory
    - puts
    - pg_check_dir
    - pg_logging_init
    - appendPQExpBufferStr
    - pg_log_warning_hint
    - setup_data_file_paths
    - appendShellString
    - _
    - parse_sync_method
    - check_ok
    - strcmp
    - pg_log_error
    - fflush
    - get_restricted_token
    - fputs
    - atexit
    - initialize_data_directory
    - pg_log_error_hint
    - option_parse_int
    - SetDataDirectoryCreatePerm
    - join_path_components
    - usage
    - check_authmethod_valid
    - pg_fatal
    - strlcpy
    - destroyPQExpBuffer
    - sync_pgdata
    - strncmp
    - get_progname
    - getopt_long
    - printf
    - setup_text_search
    - pg_strdup
    - appendPQExpBuffer
    - get_id
    - check_authmethod_unspecified
    - strchr
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:166,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:167,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:168,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:168,1
    - Dst: handle_help_version_opts
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:169,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:171,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:177,1
    - Dst: pg_logging_increase_verbosity
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:184,1
    - Dst: add_tablespace_mapping
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:199,1
    - Dst: pg_checksum_parse_type
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:202,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:204,1
    - Dst: parse_sync_method
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:211,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:212,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:225,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:226,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:232,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:233,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:234,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:238,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:251,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:253,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:256,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:264,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:266,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:269,1
    - Dst: read_pg_version_file
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:274,1
    - Dst: check_control_files
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:278,1
    - Dst: check_backup_label_files
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:281,1
    - Dst: load_backup_manifests
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:291,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:304,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:306,1
    - Dst: check_input_dir_permissions
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:315,1
    - Dst: scan_for_existing_tablespaces
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:316,1
    - Dst: atexit
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:329,1
    - Dst: create_output_directory
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:330,1
    - Dst: create_output_directory
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:333,1
    - Dst: create_manifest_writer
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:338,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:345,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:352,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:355,1
    - Dst: write_backup_label
      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:362,1
    - Dst: process_directory_recursively
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:363,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:370,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:381,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:385,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:389,1
    - Dst: symlink
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:391,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:392,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:399,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:402,1
    - Dst: pg_mkdir_p
      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: process_directory_recursively
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:410,1
    - Dst: finalize_manifest
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:417,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:424,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:427,1
    - Dst: sync_pgdata
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:428,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:434,1
    - Dst: reset_directory_cleanup_list
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:438,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:439,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 144
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 440
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - check_backup_label_files
    - pg_logging_increase_verbosity
    - finalize_manifest
    - process_directory_recursively
    - snprintf
    - pg_log_warning
    - set_pglocale_pgservice
    - read_pg_version_file
    - handle_help_version_opts
    - exit
    - create_manifest_writer
    - add_tablespace_mapping
    - psprintf
    - check_control_files
    - reset_directory_cleanup_list
    - pg_logging_init
    - write_backup_label
    - symlink
    - parse_sync_method
    - pg_log_error
    - create_output_directory
    - atexit
    - pg_log_error_hint
    - pg_fatal
    - load_backup_manifests
    - pg_log_debug
    - sync_pgdata
    - scan_for_existing_tablespaces
    - get_progname
    - getopt_long
    - pg_mkdir_p
    - memset
    - pg_checksum_parse_type
    - check_input_dir_permissions
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:448,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:464,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:471,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:479,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:489,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:490,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:493,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:494,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:498,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:499,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 24
    argCount: 2
    argNames:
    - opt
    - arg
    argTypes:
    - cb_options*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 445
    functionDepth: 1
    functionLinenumber: 445
    functionLinenumberEnd: 504
    functionName: add_tablespace_mapping
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c
    functionUses: 1
    functionsReached:
    - canonicalize_path
    - pg_fatal
    - pg_malloc0
    - is_absolute_path
    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:513,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:530,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:531,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:532,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:533,1
    - Dst: slurp_file
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:544,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:547,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:548,1
    - Dst: parse_backup_label
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:551,1
    - Dst: pg_fatal
      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:566,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:569,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:572,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:574,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:575,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:584,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:586,1
    - Dst: destroyStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:591,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 27
    argCount: 2
    argNames:
    - n_backups
    - backup_dirs
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 510
    functionDepth: 1
    functionLinenumber: 510
    functionLinenumberEnd: 598
    functionName: check_backup_label_files
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c
    functionUses: 1
    functionsReached:
    - LSN_FORMAT_ARGS
    - resetStringInfo
    - destroyStringInfo
    - makeStringInfo
    - snprintf
    - open
    - close
    - slurp_file
    - pg_fatal
    - parse_backup_label
    - 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:618,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:619,1
    - Dst: get_controlfile_by_exact_path
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:620,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:624,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:628,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:635,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:650,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:651,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:658,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:666,1
    - Dst: pg_log_warning_hint
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:667,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - n_backups
    - backup_dirs
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 603
    functionDepth: 1
    functionLinenumber: 603
    functionLinenumberEnd: 671
    functionName: check_control_files
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c
    functionUses: 1
    functionsReached:
    - pfree
    - get_controlfile_by_exact_path
    - pg_log_warning
    - pg_log_warning_hint
    - pg_fatal
    - pg_log_debug
    - psprintf
    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:684,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:685,1
    - Dst: SetDataDirectoryCreatePerm
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:687,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - dir
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 679
    functionDepth: 1
    functionLinenumber: 679
    functionLinenumberEnd: 688
    functionName: check_input_dir_permissions
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c
    functionUses: 1
    functionsReached:
    - stat
    - SetDataDirectoryCreatePerm
    - 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:702,1
    - Dst: rmtree
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:703,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:704,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:708,1
    - Dst: rmtree
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:710,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:711,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:715,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 717
      start: 693
    functionDepth: 1
    functionLinenumber: 693
    functionLinenumberEnd: 717
    functionName: cleanup_directories_atexit
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c
    functionUses: 0
    functionsReached:
    - pfree
    - pg_log_error
    - rmtree
    - pg_log_info
    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:729,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:734,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:737,1
    - Dst: pg_mkdir_p
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:738,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:739,1
    - Dst: remember_to_cleanup_directory
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:740,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:744,1
    - Dst: remember_to_cleanup_directory
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:745,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:751,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:754,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - dirname
    - opt
    argTypes:
    - char*
    - cb_options*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 726
    functionDepth: 1
    functionLinenumber: 726
    functionLinenumberEnd: 756
    functionName: create_output_directory
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c
    functionUses: 1
    functionsReached:
    - pg_mkdir_p
    - pg_check_dir
    - pg_fatal
    - 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:768,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:768,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:769,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:769,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:770,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:770,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:771,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:771,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:772,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:772,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:773,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:773,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:774,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:774,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:775,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:775,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:776,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:776,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:777,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:777,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:779,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:779,1
    - 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: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: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:790,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:790,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 765
    functionDepth: 0
    functionLinenumber: 765
    functionLinenumberEnd: 791
    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:805,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - s
    - result
    argTypes:
    - char*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 798
    functionDepth: 0
    functionLinenumber: 798
    functionLinenumberEnd: 811
    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:876,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:880,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:881,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:882,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:883,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:884,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:885,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:905,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:906,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:907,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:908,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:914,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:916,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:918,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:919,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:922,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:932,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:935,1
    - Dst: mkdir
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:936,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:937,1
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:942,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:943,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:944,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:956,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:957,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:961,1
    - Dst: get_dirent_type
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:964,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:966,1
    - Dst: parse_oid
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:976,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:987,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:989,1
    - Dst: process_directory_recursively
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:993,1
    - Dst: pg_log_warning
      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:1007,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1016,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1017,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1025,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1029,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1034,1
    - Dst: reconstruct_from_incremental_file
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1038,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1055,1
    - Dst: manifest_files_lookup
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1071,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1081,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1083,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1085,1
    - Dst: pg_checksum_init
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1100,1
    - Dst: pg_checksum_init
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1102,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1105,1
    - Dst: copy_file
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1106,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1116,1
    - Dst: pg_checksum_final
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1117,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1140,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1141,1
    - Dst: add_file_to_manifest
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1144,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1152,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1155,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: 1156
      start: 832
    functionDepth: 1
    functionLinenumber: 832
    functionLinenumberEnd: 1156
    functionName: process_directory_recursively
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c
    functionUses: 2
    functionsReached:
    - manifest_files_lookup
    - snprintf
    - process_directory_recursively
    - pg_log_warning
    - exit
    - pg_checksum_init
    - psprintf
    - pfree
    - strcmp
    - parse_oid
    - stat
    - reconstruct_from_incremental_file
    - pg_malloc
    - strlcpy
    - OidIsValid
    - pg_fatal
    - pg_checksum_final
    - pg_log_debug
    - strncmp
    - readdir
    - closedir
    - copy_file
    - add_file_to_manifest
    - get_dirent_type
    - opendir
    - mkdir
    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: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1173,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1176,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1177,1
    - Dst: initStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1180,1
    - Dst: slurp_file
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1181,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1184,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1185,1
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1189,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1199,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1200,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1204,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1207,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - directory
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1209
      start: 1163
    functionDepth: 1
    functionLinenumber: 1163
    functionLinenumberEnd: 1209
    functionName: read_pg_version_file
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c
    functionUses: 1
    functionsReached:
    - pfree
    - strtoul
    - snprintf
    - open
    - close
    - slurp_file
    - pg_fatal
    - initStringInfo
    - pg_log_debug
    linkageType: ''
    returnType: int
    signature: int read_pg_version_file(char *directory)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - target_path
    - rmtopdir
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1223
      start: 1214
    functionDepth: 1
    functionLinenumber: 1214
    functionLinenumberEnd: 1223
    functionName: remember_to_cleanup_directory
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c
    functionUses: 1
    functionsReached:
    - pg_malloc
    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:1243,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1245
      start: 1235
    functionDepth: 0
    functionLinenumber: 1235
    functionLinenumberEnd: 1245
    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:1262,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1263,1
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1265,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1266,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1268,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1279,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1279,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1283,1
    - Dst: parse_oid
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1286,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1288,1
    - Dst: get_dirent_type
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1294,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1296,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1299,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1305,1
    - Dst: readlink
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1317,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1319,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1322,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1324,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1325,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1328,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1336,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1338,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1339,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1347,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1356,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1357,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1364,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1365,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1373,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1374,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 56
    argCount: 2
    argNames:
    - pathname
    - opt
    argTypes:
    - char*
    - cb_options*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1377
      start: 1254
    functionDepth: 1
    functionLinenumber: 1254
    functionLinenumberEnd: 1377
    functionName: scan_for_existing_tablespaces
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c
    functionUses: 1
    functionsReached:
    - readdir
    - strcmp
    - parse_oid
    - is_absolute_path
    - closedir
    - snprintf
    - get_dirent_type
    - opendir
    - exit
    - readlink
    - pg_fatal
    - pg_malloc0
    - strlcpy
    - pg_log_debug
    - canonicalize_path
    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:1392,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1393,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1395,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1398,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1401,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1410,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c:1412,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - fd
    - filename
    - buf
    - maxlen
    argTypes:
    - int
    - char*
    - StringInfo
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1419
      start: 1385
    functionDepth: 1
    functionLinenumber: 1385
    functionLinenumberEnd: 1419
    functionName: slurp_file
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/pg_combinebackup.c
    functionUses: 2
    functionsReached:
    - pg_fatal
    - enlargeStringInfo
    - read
    - fstat
    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:
    - close
    - open
    - pg_checksum_type_name
    - pg_fatal
    - 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_checksum_update
    - close
    - open
    - pg_malloc
    - read
    - pg_fatal
    - pg_free
    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:
    - write
    - pg_checksum_update
    - close
    - open
    - pg_malloc
    - read
    - pg_fatal
    - pg_free
    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:
    - copyfile
    - ioctl
    - checksum_file
    - close
    - open
    - strerror
    - pg_fatal
    - unlink
    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
    - close
    - open
    - copy_file_range
    - pg_fatal
    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
    - GetLastError
    - _dosmaperr
    - CopyFile
    - pg_fatal
    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:
    - link
    - checksum_file
    - pg_fatal
    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
      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:
    - pg_malloc
    - load_backup_manifest
    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
      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: pfree
      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_chunk
    - Min
    - json_parse_manifest_incremental_shutdown
    - pfree
    - json_parse_manifest
    - json_parse_manifest_incremental_init
    - pg_log_warning
    - snprintf
    - fstat
    - open
    - manifest_files_create
    - pg_malloc
    - close
    - Max
    - pg_fatal
    - pg_malloc0
    - read
    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:
    - gettext
    - va_end
    - exit
    - va_start
    - pg_log_generic_v
    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:
    - pg_fatal
    - manifest_files_insert
    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
      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
    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
      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:
    - appendStringInfo
    - snprintf
    - pg_malloc
    - pg_checksum_init
    - initStringInfo
    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:
    - enlargeStringInfo
    - escape_json
    - appendStringInfo
    - appendStringInfoChar
    - flush_manifest
    - appendStringInfoString
    - gmtime
    - pg_checksum_type_name
    - pg_encoding_verifymbstr
    - hex_encode
    - strftime
    - strlen
    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:
    - LSN_FORMAT_ARGS
    - enlargeStringInfo
    - Assert
    - flush_manifest
    - appendStringInfo
    - appendStringInfoString
    - close
    - pg_fatal
    - pg_checksum_final
    - hex_encode
    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:
    - appendStringInfoCharMacro
    - appendStringInfoString
    - appendStringInfo
    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_checksum_update
    - resetStringInfo
    - open
    - pg_fatal
    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
      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
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:138,1
    - Dst: pg_malloc0
      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: pfree
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:374,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:375,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:376,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 91
    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: 377
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 377
    functionName: reconstruct_from_incremental_file
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/reconstruct.c
    functionUses: 1
    functionsReached:
    - make_rfile
    - manifest_files_lookup
    - snprintf
    - pg_log_warning
    - fstat
    - debug_reconstruction
    - pg_malloc0
    - pg_checksum_init
    - psprintf
    - strlen
    - pfree
    - find_reconstructed_block_length
    - memcpy
    - pg_free
    - make_incremental_rfile
    - write_reconstructed_file
    - close
    - pg_malloc
    - pg_fatal
    - pg_checksum_final
    - Assert
    - copy_file
    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:401,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:404,1
    - Dst: fstat
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:420,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:421,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:423,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 3
    argNames:
    - n_source
    - sources
    - dry_run
    argTypes:
    - int
    - rfile**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 382
    functionDepth: 1
    functionLinenumber: 382
    functionLinenumberEnd: 429
    functionName: debug_reconstruction
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/reconstruct.c
    functionUses: 1
    functionsReached:
    - pg_fatal
    - pg_log_debug
    - fstat
    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: 448
      start: 437
    functionDepth: 0
    functionLinenumber: 437
    functionLinenumberEnd: 448
    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:460,1
    - Dst: read_bytes
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:463,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:465,1
    - Dst: read_bytes
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:469,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:471,1
    - Dst: read_bytes
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:475,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:478,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:485,1
    - Dst: read_bytes
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:486,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - filename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 454
    functionDepth: 1
    functionLinenumber: 454
    functionLinenumberEnd: 504
    functionName: make_incremental_rfile
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/reconstruct.c
    functionUses: 1
    functionsReached:
    - make_rfile
    - pg_fatal
    - read_bytes
    - pg_malloc0
    linkageType: ''
    returnType: rfile
    signature: 'rfile *

      make_incremental_rfile(char *filename)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:514,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:515,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:516,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:520,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:523,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - filename
    - missing_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 509
    functionDepth: 1
    functionLinenumber: 509
    functionLinenumberEnd: 527
    functionName: make_rfile
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/reconstruct.c
    functionUses: 2
    functionsReached:
    - open
    - pstrdup
    - pg_fatal
    - pg_malloc0
    - pg_free
    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:535,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:540,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:542,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - rf
    - buffer
    - length
    argTypes:
    - rfile*
    - void*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 532
    functionDepth: 1
    functionLinenumber: 532
    functionLinenumberEnd: 545
    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: 19
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:574,1
    - Dst: pg_checksum_type_name
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:576,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:578,1
    - Dst: pg_checksum_type_name
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:580,1
    - Dst: initStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:583,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:600,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:608,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:612,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:624,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:625,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:630,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:635,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:638,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:652,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:667,1
    - Dst: write_block
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:670,1
    - Dst: read_block
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:683,1
    - Dst: write_block
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:684,1
    - Dst: copy_file_range
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:701,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:704,1
    - Dst: read_block
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:718,1
    - Dst: pg_checksum_update
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:720,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:721,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:724,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:733,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:735,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:739,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:740,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 68
    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: 741
      start: 550
    functionDepth: 1
    functionLinenumber: 550
    functionLinenumberEnd: 741
    functionName: write_reconstructed_file
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/reconstruct.c
    functionUses: 1
    functionsReached:
    - pfree
    - pg_checksum_update
    - resetStringInfo
    - read_block
    - appendStringInfo
    - memset
    - close
    - open
    - pg_checksum_type_name
    - Max
    - copy_file_range
    - pg_fatal
    - initStringInfo
    - pg_log_debug
    - write_block
    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:756,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:759,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:761,1
    - Dst: pg_checksum_update
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:766,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:767,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: 769
      start: 750
    functionDepth: 1
    functionLinenumber: 750
    functionLinenumberEnd: 769
    functionName: write_block
    functionSourceFile: /src/postgres/src/bin/pg_combinebackup/reconstruct.c
    functionUses: 1
    functionsReached:
    - write
    - pg_checksum_update
    - 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:780,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:784,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_combinebackup/reconstruct.c:786,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - s
    - 'off'
    - buffer
    argTypes:
    - rfile*
    - off_t
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 774
    functionDepth: 1
    functionLinenumber: 774
    functionLinenumberEnd: 789
    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
    - get_eol_offset
    - pg_fatal
    - 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:
    - write
    - pg_checksum_update
    - get_eol_offset
    - stat
    - snprintf
    - open
    - close
    - add_file_to_manifest
    - pg_fatal
    - pg_checksum_init
    - pg_checksum_final
    - line_starts_with
    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:84,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:86,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:94,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:95,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: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:100,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:105,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:107,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:112,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:115,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:118,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:123,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:127,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:129,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:130,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:134,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:137,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:139,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 3
    argNames:
    - pattern
    - verbose
    - showSystem
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 141
    functionName: describeAggregates
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - appendPQExpBuffer
    - printfPQExpBuffer
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - gettext_noop
    - initPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool describeAggregates(const char *pattern, bool verbose, bool showSystem)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:159,1
    - Dst: formatPGVersionNumber
      Src: /src/postgres/src/bin/psql/describe.c:160,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:165,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:167,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:173,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:174,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:175,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:176,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:180,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:183,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:184,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:187,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:190,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:195,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:199,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:201,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:202,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:206,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:209,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:211,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:213,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 215
    functionName: describeAccessMethods
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - lengthof
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - printfPQExpBuffer
    - appendPQExpBuffer
    - formatPGVersionNumber
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - pg_log_error
    - gettext_noop
    - initPQExpBuffer
    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:228,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:230,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:234,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:235,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:236,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:240,1
    - Dst: printACLColumn
      Src: /src/postgres/src/bin/psql/describe.c:241,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:242,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:246,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:247,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:248,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:251,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:254,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:259,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:263,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:265,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:266,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:270,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:273,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:275,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 277
    functionName: describeTablespaces
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - printfPQExpBuffer
    - appendPQExpBuffer
    - gettext_noop
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - printACLColumn
    - initPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool describeTablespaces(const char *pattern, bool verbose)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:300,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:301,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:302,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:303,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:304,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/describe.c:314,1
    - Dst: strspn
      Src: /src/postgres/src/bin/psql/describe.c:314,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:316,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:324,1
    - Dst: formatPGVersionNumber
      Src: /src/postgres/src/bin/psql/describe.c:326,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:338,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:340,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:343,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:344,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:347,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:356,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:357,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:359,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:360,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:361,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:362,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:363,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:365,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:374,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:375,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:377,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:378,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:379,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:380,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:381,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:385,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:394,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:395,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:396,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:397,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:399,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: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:412,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:416,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:417,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:418,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:419,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:420,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:421,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:422,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:423,1
    - Dst: printACLColumn
      Src: /src/postgres/src/bin/psql/describe.c:424,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:425,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:427,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:428,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:430,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:431,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:433,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:436,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:442,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:449,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:462,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:465,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:469,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:470,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:472,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:477,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: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:484,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:489,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:492,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:495,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:500,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:503,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:507,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:508,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:510,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: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:524,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:526,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:532,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:533,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:540,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:548,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:550,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:551,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:553,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:555,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:558,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:566,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/describe.c:578,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/describe.c:579,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/describe.c:580,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/describe.c:582,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:584,1
    - Dst: map_typename_pattern
      Src: /src/postgres/src/bin/psql/describe.c:585,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:594,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:599,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:602,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:604,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:605,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:609,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:614,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:619,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:622,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:624,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:628,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 145
    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: 630
      start: 294
    functionDepth: 1
    functionLinenumber: 294
    functionLinenumberEnd: 630
    functionName: describeFunctions
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - strspn
    - lengthof
    - snprintf
    - termPQExpBuffer
    - formatPGVersionNumber
    - strlen
    - appendPQExpBufferStr
    - map_typename_pattern
    - _
    - printQuery
    - PQclear
    - strcmp
    - pg_log_error
    - gettext_noop
    - PSQLexec
    - printACLColumn
    - CppAsString2
    - printfPQExpBuffer
    - appendPQExpBuffer
    - validateSQLNamePattern
    - initPQExpBuffer
    - strchr
    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:645,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:647,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:650,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:651,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:654,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:672,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:673,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:674,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:675,1
    - Dst: printACLColumn
      Src: /src/postgres/src/bin/psql/describe.c:676,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:677,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:680,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:682,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:684,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:691,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:692,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:692,1
    - Dst: strstr
      Src: /src/postgres/src/bin/psql/describe.c:699,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:700,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:703,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:707,1
    - Dst: map_typename_pattern
      Src: /src/postgres/src/bin/psql/describe.c:707,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:714,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:718,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:720,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:721,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:725,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:728,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:730,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 3
    argNames:
    - pattern
    - verbose
    - showSystem
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 638
    functionDepth: 1
    functionLinenumber: 638
    functionLinenumberEnd: 732
    functionName: describeTypes
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - strstr
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - appendPQExpBuffer
    - printfPQExpBuffer
    - map_typename_pattern
    - gettext_noop
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - CppAsString2
    - printACLColumn
    - initPQExpBuffer
    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:782,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - pattern
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 743
    functionDepth: 1
    functionLinenumber: 743
    functionLinenumberEnd: 786
    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:803,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:821,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:827,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:828,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:829,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:830,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:831,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:834,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:837,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:838,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:839,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:840,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:842,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:847,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:852,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:860,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:866,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:870,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:873,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:881,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:885,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/describe.c:897,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/describe.c:898,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/describe.c:899,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/describe.c:901,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:903,1
    - Dst: map_typename_pattern
      Src: /src/postgres/src/bin/psql/describe.c:904,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:913,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:917,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:919,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:920,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:924,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:927,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:929,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:931,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:935,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 51
    argCount: 5
    argNames:
    - oper_pattern
    - arg_patterns
    - num_arg_patterns
    - verbose
    - showSystem
    argTypes:
    - char*
    - char**
    - int
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 937
      start: 793
    functionDepth: 2
    functionLinenumber: 793
    functionLinenumberEnd: 937
    functionName: describeOperators
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - lengthof
    - snprintf
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - appendPQExpBuffer
    - printfPQExpBuffer
    - map_typename_pattern
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - strcmp
    - gettext_noop
    - initPQExpBuffer
    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:952,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:954,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:959,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:960,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:961,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:963,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:969,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:971,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:973,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:974,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:977,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:978,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:980,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:982,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:984,1
    - Dst: gettext_noop
      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:990,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:992,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:994,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:996,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:998,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:999,1
    - Dst: printACLColumn
      Src: /src/postgres/src/bin/psql/describe.c:1000,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1002,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1009,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1010,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1011,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1012,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1015,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:1020,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1024,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1029,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:1030,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1031,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1035,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:1038,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:1040,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 945
    functionDepth: 1
    functionLinenumber: 945
    functionLinenumberEnd: 1042
    functionName: listAllDbs
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - printACLColumn
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - appendPQExpBuffer
    - printfPQExpBuffer
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - gettext_noop
    - initPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool listAllDbs(const char *pattern, bool verbose)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1057,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1062,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1074,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1075,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1076,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1077,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1078,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1079,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1080,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1081,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1082,1
    - Dst: printACLColumn
      Src: /src/postgres/src/bin/psql/describe.c:1084,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1091,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1097,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1100,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1128,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1131,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1162,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1164,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:1168,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:1169,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:1170,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:1171,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:1172,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1175,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:1178,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1184,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:1186,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1190,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1190,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:1194,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:1196,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1198,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:1199,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1203,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 2
    argNames:
    - pattern
    - showSystem
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1205
      start: 1049
    functionDepth: 1
    functionLinenumber: 1049
    functionLinenumberEnd: 1205
    functionName: permissionsList
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - lengthof
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - appendPQExpBuffer
    - printfPQExpBuffer
    - gettext_noop
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - CppAsString2
    - printACLColumn
    - initPQExpBuffer
    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:1221,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1223,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1230,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1231,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1233,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1235,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1237,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1239,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1241,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1243,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1244,1
    - Dst: printACLColumn
      Src: /src/postgres/src/bin/psql/describe.c:1246,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1248,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:1251,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1259,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:1261,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1265,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1265,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:1269,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:1271,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1273,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:1274,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1278,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 1
    argNames:
    - pattern
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1280
      start: 1213
    functionDepth: 1
    functionLinenumber: 1213
    functionLinenumberEnd: 1280
    functionName: listDefaultACLs
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - lengthof
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - printfPQExpBuffer
    - gettext_noop
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - printACLColumn
    - initPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool listDefaultACLs(const char *pattern)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1302,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1304,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1307,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1308,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1309,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1310,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1313,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1323,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1326,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:1329,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1336,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1347,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1350,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:1353,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1360,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1371,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1374,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:1377,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1384,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1395,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1398,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:1401,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1408,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1418,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1421,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:1424,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1431,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1440,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1443,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:1446,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1452,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1456,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:1458,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1459,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1463,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:1466,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:1468,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:1470,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1474,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 56
    argCount: 2
    argNames:
    - pattern
    - showSystem
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1476
      start: 1294
    functionDepth: 1
    functionLinenumber: 1294
    functionLinenumberEnd: 1476
    functionName: objectDescription
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - lengthof
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - appendPQExpBuffer
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - gettext_noop
    - initPQExpBuffer
    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:1494,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1496,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1504,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:1507,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1512,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1516,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:1518,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1519,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:1523,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:1528,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:1531,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:1533,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:1537,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1543,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1544,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1545,1
    - Dst: describeOneTableDetails
      Src: /src/postgres/src/bin/psql/describe.c:1547,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:1549,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:1554,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:1559,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 3
    argNames:
    - pattern
    - verbose
    - showSystem
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1561
      start: 1487
    functionDepth: 1
    functionLinenumber: 1487
    functionLinenumberEnd: 1561
    functionName: describeTableDetails
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQntuples
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - printfPQExpBuffer
    - PQgetvalue
    - describeOneTableDetails
    - validateSQLNamePattern
    - PQclear
    - pg_log_error
    - initPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool describeTableDetails(const char *pattern, bool verbose, bool showSystem)
  - BBCount: 231
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1627,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1628,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1629,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1634,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1652,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1669,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1686,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1703,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:1719,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:1724,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:1727,1
    - Dst: atoi
      Src: /src/postgres/src/bin/psql/describe.c:1731,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1731,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1732,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:1733,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1733,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:1734,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1734,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:1735,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1735,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:1736,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1736,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:1737,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1737,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:1738,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1738,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:1739,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1739,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/describe.c:1740,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1740,1
    - Dst: atooid
      Src: /src/postgres/src/bin/psql/describe.c:1741,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1741,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:1742,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1742,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/describe.c:1743,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1743,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1744,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1746,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:1748,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/describe.c:1749,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1749,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:1752,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1766,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1774,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1775,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1776,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1777,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1778,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1779,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1780,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1781,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1782,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1783,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1790,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1798,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1799,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1800,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1801,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1802,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1803,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1804,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1805,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1806,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1807,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/psql/describe.c:1807,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1809,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/psql/describe.c:1809,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:1812,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1817,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:1833,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:1842,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1844,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/describe.c:1847,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1847,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1848,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/describe.c:1851,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1851,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:1852,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:1856,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1859,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1859,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1862,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:1862,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:1870,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/describe.c:1872,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1896,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1898,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1904,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1911,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1915,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1917,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1920,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1922,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1930,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1932,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:1933,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1936,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1942,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1949,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1959,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1971,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1986,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1991,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:1992,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:1993,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:1995,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:1998,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2005,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2005,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2008,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2008,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2012,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2012,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2016,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2016,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2021,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2021,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2024,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2024,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2029,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2029,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2032,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2032,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2036,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2036,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2040,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2040,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2044,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2044,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2049,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2049,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2052,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2052,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2057,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:2065,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:2070,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:2073,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:2075,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:2077,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:2079,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:2081,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:2083,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:2085,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/describe.c:2087,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:2087,1
    - Dst: printTableInit
      Src: /src/postgres/src/bin/psql/describe.c:2089,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/describe.c:2093,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:2099,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2099,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:2102,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2102,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:2112,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2112,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:2114,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2115,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2115,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2118,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2119,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/describe.c:2127,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2128,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/describe.c:2133,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2134,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2138,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:2140,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:2145,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2145,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:2147,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2147,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:2151,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2151,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2156,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:2159,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2170,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:2173,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:2182,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2182,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:2187,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2187,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2198,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2202,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2208,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2210,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:2215,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:2219,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2221,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: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2225,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2225,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2227,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2228,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:2234,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2235,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2238,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2238,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2240,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2240,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2242,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:2245,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2253,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:2256,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:2260,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2262,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2264,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2264,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2265,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:2267,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2275,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:2281,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:2285,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2287,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2288,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2290,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2290,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2292,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:2294,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2303,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:2311,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:2312,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:2319,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:2320,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2324,1
    - Dst: appendPQExpBufferStr
      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:2331,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2333,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:2340,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:2343,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:2345,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2350,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2351,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2352,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: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2362,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2363,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2363,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2364,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: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2368,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2368,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2369,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2369,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2372,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2373,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2376,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2376,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/describe.c:2379,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2380,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2380,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2382,1
    - Dst: appendPQExpBufferStr
      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: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2397,1
    - Dst: add_tablespace_footer
      Src: /src/postgres/src/bin/psql/describe.c:2403,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:2407,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2424,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2431,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2433,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2434,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2436,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2438,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2439,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:2443,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:2444,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:2448,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:2452,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2456,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2456,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2460,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2461,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2467,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2467,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: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2470,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2471,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2479,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2479,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2480,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2481,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2481,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2483,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2483,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2484,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2486,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2490,1
    - Dst: strstr
      Src: /src/postgres/src/bin/psql/describe.c:2491,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2494,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2497,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2497,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2498,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2500,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2500,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2501,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2505,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2505,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2506,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2508,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2508,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2509,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2511,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2511,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2512,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2514,1
    - Dst: add_tablespace_footer
      Src: /src/postgres/src/bin/psql/describe.c:2517,1
    - Dst: atooid
      Src: /src/postgres/src/bin/psql/describe.c:2518,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2518,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:2522,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2528,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:2536,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:2540,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2544,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2544,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2548,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2549,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2550,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2552,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:2555,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2566,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2579,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2588,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2589,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:2592,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:2596,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/psql/describe.c:2600,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/psql/describe.c:2601,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/psql/describe.c:2602,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/psql/describe.c:2603,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2605,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2605,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2613,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2613,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2614,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2615,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2616,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2617,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: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2623,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:2626,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2631,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2643,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:2652,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:2656,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/psql/describe.c:2660,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/psql/describe.c:2661,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/psql/describe.c:2662,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2664,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2664,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2667,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2668,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2669,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2670,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2672,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:2675,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2680,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2682,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2685,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2687,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:2701,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:2705,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2713,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2713,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2716,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2716,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2719,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2719,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2722,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2722,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2725,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2725,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2730,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2731,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2733,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2734,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:2736,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2737,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2738,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:2740,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2742,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2743,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:2746,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2747,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2748,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:2750,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2751,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2752,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2754,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:2756,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2762,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:2777,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:2781,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2785,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2785,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2796,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2796,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2797,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2797,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2798,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2798,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2800,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2803,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2804,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2805,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2820,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2825,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2831,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2837,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/psql/describe.c:2840,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2843,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2844,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2845,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:2848,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2849,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2849,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2850,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2851,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2853,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:2856,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2860,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2874,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2876,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2877,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:2882,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:2886,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2890,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2890,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2896,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2899,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2900,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2901,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2904,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2904,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:2906,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2910,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2910,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2912,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2916,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2916,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2918,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2921,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2922,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2923,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:2926,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2926,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2927,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2928,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:2930,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:2933,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2939,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:2945,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:2949,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2968,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2972,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2976,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:2980,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2992,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2992,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2995,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2995,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:2998,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:2998,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3001,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3001,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3004,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3009,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3011,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3012,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3016,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3024,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3056,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:3073,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:3077,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3080,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3080,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3085,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3086,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:3089,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3090,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3091,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:3094,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3095,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3096,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3098,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3100,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3108,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:3120,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:3124,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3127,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3127,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3132,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3133,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3134,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3136,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3137,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3138,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3139,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3141,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3142,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3145,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3147,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3157,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:3160,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:3164,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/describe.c:3165,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3165,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3167,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3175,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3175,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3176,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3181,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:3186,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:3190,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3192,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3192,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:3193,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3198,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3201,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3202,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3205,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3218,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3238,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3248,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3250,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3263,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3268,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3269,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:3271,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:3275,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3301,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3302,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3338,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3338,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3341,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3341,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3344,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3344,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3347,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3347,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3350,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3350,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3353,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3358,1
    - Dst: strstr
      Src: /src/postgres/src/bin/psql/describe.c:3359,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3363,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:3366,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3367,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3368,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3370,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3374,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3401,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:3411,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:3414,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3416,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3421,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3421,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3422,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3423,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3426,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3429,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3429,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3430,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3432,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3436,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:3445,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3450,1
    - Dst: pg_wcswidth
      Src: /src/postgres/src/bin/psql/describe.c:3451,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/describe.c:3451,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:3453,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3458,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3459,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3461,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3462,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/psql/describe.c:3464,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3466,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3469,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3474,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3484,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3494,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:3502,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:3505,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3515,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3515,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3516,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3524,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3524,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3526,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3526,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3527,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3533,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3533,1
    - Dst: pg_wcswidth
      Src: /src/postgres/src/bin/psql/describe.c:3534,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/describe.c:3534,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3538,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3541,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3542,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3544,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3545,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:3546,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3547,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3547,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3550,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3552,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:3553,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3553,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3554,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/psql/describe.c:3556,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3558,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3561,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3566,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3566,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3567,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:3579,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:3581,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3584,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3586,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3592,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3597,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3597,1
    - Dst: add_tablespace_footer
      Src: /src/postgres/src/bin/psql/describe.c:3600,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3606,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3606,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3607,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3615,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3617,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3618,1
    - Dst: printTable
      Src: /src/postgres/src/bin/psql/describe.c:3621,1
    - Dst: printTableCleanup
      Src: /src/postgres/src/bin/psql/describe.c:3629,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3630,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3631,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3632,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/describe.c:3634,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3636,1
    CyclomaticComplexity: 361
    EdgeCount: 361
    ICount: 891
    argCount: 4
    argNames:
    - schemaname
    - relationname
    - oid
    - verbose
    argTypes:
    - char*
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3639
      start: 1570
    functionDepth: 1
    functionLinenumber: 1570
    functionLinenumberEnd: 3639
    functionName: describeOneTableDetails
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 1
    functionsReached:
    - appendPQExpBufferChar
    - printTableAddCell
    - lengthof
    - printTableAddHeader
    - strstr
    - termPQExpBuffer
    - PQgetvalue
    - resetPQExpBuffer
    - psprintf
    - strlen
    - atooid
    - appendPQExpBufferStr
    - _
    - PQclear
    - printQuery
    - free
    - strcmp
    - pg_log_error
    - gettext_noop
    - printTableInit
    - PQntuples
    - atoi
    - PSQLexec
    - printTable
    - PQfnumber
    - fmtId
    - add_tablespace_footer
    - CppAsString2
    - Assert
    - pg_wcswidth
    - pg_strdup
    - printfPQExpBuffer
    - appendPQExpBuffer
    - printTableCleanup
    - PQgetisnull
    - printTableAddFooter
    - initPQExpBuffer
    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:3667,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3668,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:3671,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3674,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:3678,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3683,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3683,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3684,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:3685,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3690,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3695,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3695,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3696,1
    - Dst: printTableSetFooter
      Src: /src/postgres/src/bin/psql/describe.c:3697,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3700,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3701,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 4
    argNames:
    - cont
    - relkind
    - tablespace
    - newline
    argTypes:
    - printTableContent*
    - char
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3704
      start: 3646
    functionDepth: 1
    functionLinenumber: 3646
    functionLinenumberEnd: 3704
    functionName: add_tablespace_footer
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - printTableSetFooter
    - termPQExpBuffer
    - PSQLexec
    - PQgetvalue
    - printfPQExpBuffer
    - appendPQExpBuffer
    - _
    - printTableAddFooter
    - PQclear
    - initPQExpBuffer
    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: 21
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3727,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3729,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3736,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3739,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3743,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3746,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3749,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:3751,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3755,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3759,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:3761,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:3765,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/psql/describe.c:3766,1
    - Dst: printTableInit
      Src: /src/postgres/src/bin/psql/describe.c:3768,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3768,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/describe.c:3770,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:3770,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/describe.c:3771,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:3771,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/describe.c:3774,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:3774,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:3778,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3778,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3780,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:3781,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3781,1
    - Dst: add_role_attribute
      Src: /src/postgres/src/bin/psql/describe.c:3782,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3782,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:3784,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3784,1
    - Dst: add_role_attribute
      Src: /src/postgres/src/bin/psql/describe.c:3785,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3785,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:3787,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3787,1
    - Dst: add_role_attribute
      Src: /src/postgres/src/bin/psql/describe.c:3788,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3788,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:3790,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3790,1
    - Dst: add_role_attribute
      Src: /src/postgres/src/bin/psql/describe.c:3791,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3791,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:3793,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3793,1
    - Dst: add_role_attribute
      Src: /src/postgres/src/bin/psql/describe.c:3794,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3794,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:3796,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3796,1
    - Dst: add_role_attribute
      Src: /src/postgres/src/bin/psql/describe.c:3797,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3797,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:3800,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3800,1
    - Dst: add_role_attribute
      Src: /src/postgres/src/bin/psql/describe.c:3801,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3801,1
    - Dst: atoi
      Src: /src/postgres/src/bin/psql/describe.c:3803,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3803,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/psql/describe.c:3807,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3810,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3810,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3812,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/psql/describe.c:3812,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:3818,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3818,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/psql/describe.c:3821,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3822,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3822,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3823,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3823,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/describe.c:3826,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:3828,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:3831,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:3831,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3833,1
    - Dst: printTable
      Src: /src/postgres/src/bin/psql/describe.c:3835,1
    - Dst: printTableCleanup
      Src: /src/postgres/src/bin/psql/describe.c:3836,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/describe.c:3839,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/describe.c:3840,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3842,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 75
    argCount: 3
    argNames:
    - pattern
    - verbose
    - showSystem
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3844
      start: 3711
    functionDepth: 1
    functionLinenumber: 3711
    functionLinenumberEnd: 3844
    functionName: describeRoles
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - printTableAddCell
    - printTableAddHeader
    - termPQExpBuffer
    - PQgetvalue
    - resetPQExpBuffer
    - pg_malloc0
    - appendPQExpBufferStr
    - _
    - free
    - PQclear
    - strcmp
    - gettext_noop
    - printTableInit
    - PQntuples
    - atoi
    - add_role_attribute
    - PSQLexec
    - printTable
    - pg_strdup
    - printfPQExpBuffer
    - appendPQExpBuffer
    - printTableCleanup
    - validateSQLNamePattern
    - ngettext
    - initPQExpBuffer
    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:3850,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3852,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - buf
    - str
    argTypes:
    - PQExpBuffer
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3853
      start: 3846
    functionDepth: 1
    functionLinenumber: 3846
    functionLinenumberEnd: 3853
    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:3866,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3868,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:3873,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:3874,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:3875,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:3876,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:3879,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3883,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:3885,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3886,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:3896,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:3899,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:3902,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:3905,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3909,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:3912,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3915,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3919,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 2
    argNames:
    - pattern
    - pattern2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3921
      start: 3858
    functionDepth: 1
    functionLinenumber: 3858
    functionLinenumberEnd: 3921
    functionName: listDbRoleSettings
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQntuples
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - printfPQExpBuffer
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - pg_log_error
    - gettext_noop
    - initPQExpBuffer
    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:3934,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3935,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:3938,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:3939,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3942,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3947,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3952,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:3955,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:3956,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3958,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3965,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:3967,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3971,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:3975,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:3977,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:3978,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:3982,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:3985,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:3987,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - pattern
    - showSystem
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3989
      start: 3927
    functionDepth: 1
    functionLinenumber: 3927
    functionLinenumberEnd: 3989
    functionName: describeRoleGrants
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - appendPQExpBuffer
    - printfPQExpBuffer
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - gettext_noop
    - initPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool describeRoleGrants(const char *pattern, bool showSystem)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:4009,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:4010,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:4011,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:4012,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:4013,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:4014,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4030,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4032,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4047,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4048,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4049,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4050,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4051,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4052,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4053,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4054,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4055,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4056,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4057,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4058,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4059,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4064,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4066,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4075,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4081,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4082,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4083,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4084,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4098,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4100,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4102,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4105,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4106,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4109,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4115,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4119,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4123,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4126,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4126,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4127,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4130,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4130,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4133,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4133,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4135,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4135,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4137,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4137,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4138,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4140,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4140,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4142,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4144,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4144,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4146,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4147,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4150,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:4154,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4159,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4163,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:4165,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4166,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:4175,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4180,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4183,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4186,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4189,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4192,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4195,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4198,1
    - Dst: pg_log_error_internal
      Src: /src/postgres/src/bin/psql/describe.c:4201,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4207,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4209,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4211,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4213,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4215,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4217,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4219,1
    - Dst: pg_log_error_internal
      Src: /src/postgres/src/bin/psql/describe.c:4221,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4227,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4228,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4229,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4230,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4231,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4232,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4233,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:4237,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:4239,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:4242,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 97
    argCount: 4
    argNames:
    - tabtypes
    - pattern
    - verbose
    - showSystem
    argTypes:
    - char*
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4244
      start: 4006
    functionDepth: 1
    functionLinenumber: 4006
    functionLinenumberEnd: 4244
    functionName: listTables
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - lengthof
    - PQntuples
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - appendPQExpBuffer
    - printfPQExpBuffer
    - pg_log_error
    - validateSQLNamePattern
    - _
    - pg_log_error_internal
    - printQuery
    - PQclear
    - CppAsString2
    - gettext_noop
    - initPQExpBuffer
    - strchr
    linkageType: ''
    returnType: bool
    signature: bool listTables(const char *tabtypes, const char *pattern, bool verbose,
      bool showSystem)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:4264,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:4265,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/describe.c:4266,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4282,1
    - Dst: formatPGVersionNumber
      Src: /src/postgres/src/bin/psql/describe.c:4283,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4293,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4295,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4299,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4303,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4305,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4309,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4310,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4311,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4315,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4320,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4321,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4322,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4328,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4330,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4333,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4335,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4343,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4344,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4348,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4350,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4351,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4353,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4357,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4359,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4361,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4363,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4366,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4371,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4376,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4381,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4386,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4405,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4416,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4418,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4418,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4420,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4420,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4421,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4422,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4424,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4428,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:4432,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4437,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4441,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:4445,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4446,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4450,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4451,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:4456,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:4458,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4460,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:4462,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 75
    argCount: 3
    argNames:
    - reltypes
    - pattern
    - verbose
    argTypes:
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4464
      start: 4261
    functionDepth: 1
    functionLinenumber: 4261
    functionLinenumberEnd: 4464
    functionName: listPartitionedTables
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - lengthof
    - termPQExpBuffer
    - appendPQExpBufferStr
    - CppAsString2
    - printfPQExpBuffer
    - appendPQExpBuffer
    - PSQLexec
    - formatPGVersionNumber
    - _
    - validateSQLNamePattern
    - printQuery
    - PQclear
    - pg_log_error
    - gettext_noop
    - initPQExpBuffer
    - strchr
    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:4478,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4480,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4484,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4485,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4486,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4490,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4495,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4496,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4497,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4498,1
    - Dst: printACLColumn
      Src: /src/postgres/src/bin/psql/describe.c:4499,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4502,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4508,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:4512,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4516,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4522,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4525,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:4527,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4528,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4532,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:4535,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:4537,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - pattern
    - verbose
    - showSystem
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4539
      start: 4471
    functionDepth: 1
    functionLinenumber: 4471
    functionLinenumberEnd: 4539
    functionName: listLanguages
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - appendPQExpBuffer
    - printfPQExpBuffer
    - gettext_noop
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - printACLColumn
    - initPQExpBuffer
    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:4554,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4556,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4567,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4568,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4569,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4570,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4571,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4572,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4573,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4577,1
    - Dst: printACLColumn
      Src: /src/postgres/src/bin/psql/describe.c:4578,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4579,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4581,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4584,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4589,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4594,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4597,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:4600,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4605,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4609,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:4611,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4612,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4616,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:4619,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:4621,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 3
    argNames:
    - pattern
    - verbose
    - showSystem
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4623
      start: 4547
    functionDepth: 1
    functionLinenumber: 4547
    functionLinenumberEnd: 4623
    functionName: listDomains
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - printfPQExpBuffer
    - appendPQExpBuffer
    - gettext_noop
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - printACLColumn
    - initPQExpBuffer
    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:4639,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4641,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4648,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4649,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4650,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4651,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4652,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4652,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4653,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4656,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4658,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4660,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4666,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4672,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4675,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:4678,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4683,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4687,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:4689,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4690,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4694,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:4697,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:4699,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:4701,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 3
    argNames:
    - pattern
    - verbose
    - showSystem
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4703
      start: 4630
    functionDepth: 1
    functionLinenumber: 4630
    functionLinenumberEnd: 4703
    functionName: listConversions
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - lengthof
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - appendPQExpBuffer
    - printfPQExpBuffer
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - gettext_noop
    - initPQExpBuffer
    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:4718,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4719,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4722,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4723,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4727,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4729,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4730,1
    - Dst: printACLColumn
      Src: /src/postgres/src/bin/psql/describe.c:4732,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4734,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4735,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4738,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4741,1
    - Dst: processSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:4746,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4751,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4754,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:4756,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4757,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4762,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4764,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:4767,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:4769,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 3
    argNames:
    - pattern
    - verbose
    - showSystem
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4771
      start: 4710
    functionDepth: 1
    functionLinenumber: 4710
    functionLinenumberEnd: 4771
    functionName: describeConfigurationParameters
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - processSQLNamePattern
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - appendPQExpBuffer
    - printfPQExpBuffer
    - gettext_noop
    - _
    - printQuery
    - PQclear
    - printACLColumn
    - initPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: "bool describeConfigurationParameters(const char *pattern, bool verbose,\n\t\t\t\t\t\t\t\tbool
      showSystem)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4791,1
    - Dst: formatPGVersionNumber
      Src: /src/postgres/src/bin/psql/describe.c:4792,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4797,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4799,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4810,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4811,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4812,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4813,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4814,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4815,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4816,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4817,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4818,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4819,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4821,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4823,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4824,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:4827,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4831,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4835,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:4837,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4838,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4842,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:4845,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:4847,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:4849,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4851
      start: 4778
    functionDepth: 1
    functionLinenumber: 4778
    functionLinenumberEnd: 4851
    functionName: listEventTriggers
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - lengthof
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - printfPQExpBuffer
    - appendPQExpBuffer
    - formatPGVersionNumber
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - pg_log_error
    - gettext_noop
    - initPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool listEventTriggers(const char *pattern, bool verbose)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:4869,1
    - Dst: formatPGVersionNumber
      Src: /src/postgres/src/bin/psql/describe.c:4870,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4875,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4876,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: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4884,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4888,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4890,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4899,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4901,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4902,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4906,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4907,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4914,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/psql/describe.c:4915,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4917,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4920,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:4923,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4929,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:4933,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:4935,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4936,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:4940,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:4943,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:4945,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 1
    argNames:
    - pattern
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4947
      start: 4858
    functionDepth: 1
    functionLinenumber: 4858
    functionLinenumberEnd: 4947
    functionName: listExtendedStats
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - termPQExpBuffer
    - CppAsString2
    - appendPQExpBufferStr
    - printfPQExpBuffer
    - appendPQExpBuffer
    - PSQLexec
    - formatPGVersionNumber
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - pg_log_error
    - gettext_noop
    - initPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool listExtendedStats(const char *pattern)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4962,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4964,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4967,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4968,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4975,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4982,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4984,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4990,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4992,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4993,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:4994,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:4997,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5002,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5003,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5004,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5005,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5011,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5024,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5029,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:5035,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5042,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:5044,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5051,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5053,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5054,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5058,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:5061,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:5063,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5065,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5069,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5071
      start: 4954
    functionDepth: 1
    functionLinenumber: 4954
    functionLinenumberEnd: 5071
    functionName: listCasts
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - lengthof
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - appendPQExpBuffer
    - printfPQExpBuffer
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - gettext_noop
    - initPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool listCasts(const char *pattern, bool verbose)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5086,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5088,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5092,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5093,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5096,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5103,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5105,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5107,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5109,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5112,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5113,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5116,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5118,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5120,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5122,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5124,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5126,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5129,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5131,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5133,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5135,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5138,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5140,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5140,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5141,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5143,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5145,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5146,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5149,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5151,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5153,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5158,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5167,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:5169,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5174,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5178,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5180,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5181,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5185,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:5188,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:5190,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5192,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 3
    argNames:
    - pattern
    - verbose
    - showSystem
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5194
      start: 5078
    functionDepth: 1
    functionLinenumber: 5078
    functionLinenumberEnd: 5194
    functionName: listCollations
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - lengthof
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - appendPQExpBuffer
    - printfPQExpBuffer
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - gettext_noop
    - initPQExpBuffer
    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:5210,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5211,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5214,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5215,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5219,1
    - Dst: printACLColumn
      Src: /src/postgres/src/bin/psql/describe.c:5220,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5221,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5223,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5226,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5230,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:5233,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5240,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5242,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5246,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5254,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5262,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:5266,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/describe.c:5275,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/describe.c:5276,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5276,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5281,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:5282,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/describe.c:5284,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5291,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:5294,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5296,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5297,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/describe.c:5305,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/describe.c:5307,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5313,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 53
    argCount: 3
    argNames:
    - pattern
    - verbose
    - showSystem
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5315
      start: 5201
    functionDepth: 1
    functionLinenumber: 5201
    functionLinenumberEnd: 5315
    functionName: listSchemas
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQntuples
    - pg_strdup
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - printfPQExpBuffer
    - appendPQExpBuffer
    - pg_malloc
    - PQgetvalue
    - gettext_noop
    - validateSQLNamePattern
    - _
    - PQclear
    - printQuery
    - printACLColumn
    - initPQExpBuffer
    - pg_free
    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:5330,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5332,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5334,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5341,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5342,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5343,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:5346,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5351,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5355,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5357,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5358,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5362,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:5365,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5367,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5369
      start: 5322
    functionDepth: 1
    functionLinenumber: 5322
    functionLinenumberEnd: 5369
    functionName: listTSParsers
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - printfPQExpBuffer
    - listTSParsersVerbose
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - gettext_noop
    - initPQExpBuffer
    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:5381,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5383,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:5391,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5396,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5400,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5402,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5403,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:5407,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:5412,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:5415,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5417,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:5421,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:5427,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:5428,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:5429,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:5430,1
    - Dst: describeOneTSParser
      Src: /src/postgres/src/bin/psql/describe.c:5432,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5434,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5440,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5445,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 1
    argNames:
    - pattern
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5447
      start: 5374
    functionDepth: 1
    functionLinenumber: 5374
    functionLinenumberEnd: 5447
    functionName: listTSParsersVerbose
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - describeOneTSParser
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - printfPQExpBuffer
    - PQgetvalue
    - validateSQLNamePattern
    - PQclear
    - PQgetisnull
    - pg_log_error
    - initPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool listTSParsersVerbose(const char *pattern)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5458,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5460,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5490,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5491,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5492,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5493,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5495,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5497,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5499,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5501,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5504,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5505,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5509,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5511,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5511,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5514,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5514,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:5520,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:5522,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5524,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5526,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5528,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5533,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5534,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5537,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5538,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5541,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5546,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5546,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5549,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5549,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:5557,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5559,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5560,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 40
    argCount: 3
    argNames:
    - oid
    - nspname
    - prsname
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5562
      start: 5449
    functionDepth: 1
    functionLinenumber: 5449
    functionLinenumberEnd: 5562
    functionName: describeOneTSParser
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 1
    functionsReached:
    - lengthof
    - termPQExpBuffer
    - PSQLexec
    - printfPQExpBuffer
    - _
    - printQuery
    - PQclear
    - gettext_noop
    - initPQExpBuffer
    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:5576,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5578,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5582,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5583,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5587,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5593,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5594,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5597,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5599,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5601,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:5604,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5609,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5613,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5615,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5616,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5620,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:5623,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5625,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5627
      start: 5569
    functionDepth: 1
    functionLinenumber: 5569
    functionLinenumberEnd: 5627
    functionName: listTSDictionaries
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - appendPQExpBuffer
    - printfPQExpBuffer
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - gettext_noop
    - initPQExpBuffer
    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:5641,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5644,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5651,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5652,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5653,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5654,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5655,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5657,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5662,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5663,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5664,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5666,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:5669,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5674,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5678,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5680,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5681,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5685,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:5688,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5690,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5692
      start: 5634
    functionDepth: 1
    functionLinenumber: 5634
    functionLinenumberEnd: 5692
    functionName: listTSTemplates
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - printfPQExpBuffer
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - gettext_noop
    - initPQExpBuffer
    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:5707,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5709,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5711,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5718,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: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:5723,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5728,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5732,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5734,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5735,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5739,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:5742,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5744,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5746
      start: 5699
    functionDepth: 1
    functionLinenumber: 5699
    functionLinenumberEnd: 5746
    functionName: listTSConfigs
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - printfPQExpBuffer
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - gettext_noop
    - initPQExpBuffer
    - listTSConfigsVerbose
    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:5755,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5757,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:5769,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5774,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5778,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5780,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5781,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:5785,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:5790,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:5793,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5795,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:5799,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:5807,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:5808,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:5809,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:5810,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:5811,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:5812,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:5813,1
    - Dst: describeOneTSConfig
      Src: /src/postgres/src/bin/psql/describe.c:5815,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5817,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5823,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5828,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 1
    argNames:
    - pattern
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5830
      start: 5748
    functionDepth: 1
    functionLinenumber: 5748
    functionLinenumberEnd: 5830
    functionName: listTSConfigsVerbose
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 1
    functionsReached:
    - describeOneTSConfig
    - PQntuples
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - printfPQExpBuffer
    - PQgetvalue
    - validateSQLNamePattern
    - PQclear
    - PQgetisnull
    - pg_log_error
    - initPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool listTSConfigsVerbose(const char *pattern)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5841,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5843,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5859,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5860,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5863,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5864,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5868,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5871,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5871,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5874,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5874,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5878,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5878,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5881,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5881,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:5889,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5891,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5893,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 5
    argNames:
    - oid
    - nspname
    - cfgname
    - pnspname
    - prsname
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5895
      start: 5832
    functionDepth: 1
    functionLinenumber: 5832
    functionLinenumberEnd: 5895
    functionName: describeOneTSConfig
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 1
    functionsReached:
    - termPQExpBuffer
    - PSQLexec
    - printfPQExpBuffer
    - appendPQExpBuffer
    - _
    - printQuery
    - PQclear
    - gettext_noop
    - initPQExpBuffer
    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:5910,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5911,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5916,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5917,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5918,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5919,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5923,1
    - Dst: printACLColumn
      Src: /src/postgres/src/bin/psql/describe.c:5924,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5925,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5933,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5934,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5937,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5940,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:5945,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5949,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5953,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:5955,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5956,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:5960,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:5963,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:5965,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5967
      start: 5903
    functionDepth: 1
    functionLinenumber: 5903
    functionLinenumberEnd: 5967
    functionName: listForeignDataWrappers
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - printfPQExpBuffer
    - appendPQExpBuffer
    - gettext_noop
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - printACLColumn
    - initPQExpBuffer
    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:5981,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5982,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5986,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5987,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:5988,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:5992,1
    - Dst: printACLColumn
      Src: /src/postgres/src/bin/psql/describe.c:5993,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:5994,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6005,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: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6008,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6011,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6016,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:6021,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6025,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6029,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:6031,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6032,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6036,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:6039,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6041,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6043
      start: 5974
    functionDepth: 1
    functionLinenumber: 5974
    functionLinenumberEnd: 6043
    functionName: listForeignServers
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - printfPQExpBuffer
    - appendPQExpBuffer
    - gettext_noop
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - printACLColumn
    - initPQExpBuffer
    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:6057,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6058,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: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6065,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6072,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6074,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:6076,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6080,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6084,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:6086,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6087,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6091,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:6094,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6096,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6098
      start: 6050
    functionDepth: 1
    functionLinenumber: 6050
    functionLinenumberEnd: 6098
    functionName: listUserMappings
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - appendPQExpBuffer
    - printfPQExpBuffer
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - gettext_noop
    - initPQExpBuffer
    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:6112,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6113,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6117,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6118,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6119,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6122,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6130,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6131,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6133,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6142,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:6147,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6152,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6156,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:6158,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6159,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6163,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:6166,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6168,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6170
      start: 6105
    functionDepth: 1
    functionLinenumber: 6105
    functionLinenumberEnd: 6170
    functionName: listForeignTables
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - appendPQExpBuffer
    - printfPQExpBuffer
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - gettext_noop
    - initPQExpBuffer
    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:6184,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6185,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6194,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6195,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: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:6200,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6206,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6210,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:6212,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6213,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6217,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:6220,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6222,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - pattern
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6224
      start: 6177
    functionDepth: 1
    functionLinenumber: 6177
    functionLinenumberEnd: 6224
    functionName: listExtensions
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - printfPQExpBuffer
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - gettext_noop
    - initPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool listExtensions(const char *pattern)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6238,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6239,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:6243,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6249,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6253,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:6255,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6256,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:6260,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:6265,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:6268,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6270,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:6274,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6279,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6280,1
    - Dst: listOneExtensionContents
      Src: /src/postgres/src/bin/psql/describe.c:6282,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6284,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6289,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6294,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 1
    argNames:
    - pattern
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6296
      start: 6231
    functionDepth: 1
    functionLinenumber: 6231
    functionLinenumberEnd: 6296
    functionName: listExtensionContents
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - listOneExtensionContents
    - PQntuples
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - printfPQExpBuffer
    - PQgetvalue
    - validateSQLNamePattern
    - PQclear
    - pg_log_error
    - initPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool listExtensionContents(const char *pattern)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6306,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6307,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6312,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:6315,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6316,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6320,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: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:6325,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6327,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6328,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - extname
    - oid
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6330
      start: 6298
    functionDepth: 1
    functionLinenumber: 6298
    functionLinenumberEnd: 6330
    functionName: listOneExtensionContents
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 1
    functionsReached:
    - termPQExpBuffer
    - PSQLexec
    - printfPQExpBuffer
    - _
    - printQuery
    - PQclear
    - gettext_noop
    - initPQExpBuffer
    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:6353,1
    - Dst: processSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:6354,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:6362,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/psql/describe.c:6369,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:6371,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:6374,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/psql/describe.c:6374,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:6376,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6381,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6385,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: 6387
      start: 6342
    functionDepth: 1
    functionLinenumber: 6342
    functionLinenumberEnd: 6387
    functionName: validateSQLNamePattern
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 36
    functionsReached:
    - processSQLNamePattern
    - termPQExpBuffer
    - PQdb
    - strcmp
    - pg_log_error
    - initPQExpBuffer
    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: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:6407,1
    - Dst: formatPGVersionNumber
      Src: /src/postgres/src/bin/psql/describe.c:6408,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6413,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6415,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6422,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6423,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6424,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6425,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6426,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6427,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6429,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6431,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6433,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6440,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6442,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6444,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6446,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:6449,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6454,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6458,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:6460,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6461,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6465,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:6468,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:6470,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6472,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 1
    argNames:
    - pattern
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6475
      start: 6395
    functionDepth: 2
    functionLinenumber: 6395
    functionLinenumberEnd: 6475
    functionName: listPublications
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - lengthof
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - printfPQExpBuffer
    - appendPQExpBuffer
    - formatPGVersionNumber
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - pg_log_error
    - gettext_noop
    - initPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool listPublications(const char *pattern)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:6488,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:6492,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:6495,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6500,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6500,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6503,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6503,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6504,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:6506,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6507,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6507,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/describe.c:6509,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6510,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6510,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/bin/psql/describe.c:6513,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6516,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: 6518
      start: 6480
    functionDepth: 1
    functionLinenumber: 6480
    functionLinenumberEnd: 6518
    functionName: addFooterToPublicationDesc
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - PQntuples
    - PSQLexec
    - PQgetvalue
    - printfPQExpBuffer
    - appendPQExpBuffer
    - PQgetisnull
    - printTableAddFooter
    - PQclear
    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: 24
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:6543,1
    - Dst: formatPGVersionNumber
      Src: /src/postgres/src/bin/psql/describe.c:6544,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6553,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6555,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6560,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6563,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6567,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6574,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6576,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6580,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6583,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6586,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:6589,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6594,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6598,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:6600,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6603,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:6607,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:6612,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:6615,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6618,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6619,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/describe.c:6623,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6628,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6629,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/describe.c:6630,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6630,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6640,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6641,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6641,1
    - Dst: printTableInit
      Src: /src/postgres/src/bin/psql/describe.c:6642,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/describe.c:6644,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6644,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/describe.c:6645,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6645,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/describe.c:6646,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6646,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/describe.c:6647,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6647,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/describe.c:6648,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6648,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/describe.c:6650,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6650,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/describe.c:6652,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6652,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/describe.c:6654,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6654,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:6656,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6656,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:6657,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6657,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:6658,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6658,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:6659,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6659,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:6660,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6660,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:6662,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6662,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:6664,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6664,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/describe.c:6666,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/describe.c:6666,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6671,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6675,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6677,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6688,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6690,1
    - Dst: addFooterToPublicationDesc
      Src: /src/postgres/src/bin/psql/describe.c:6698,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6698,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6704,1
    - Dst: addFooterToPublicationDesc
      Src: /src/postgres/src/bin/psql/describe.c:6710,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6710,1
    - Dst: printTable
      Src: /src/postgres/src/bin/psql/describe.c:6716,1
    - Dst: printTableCleanup
      Src: /src/postgres/src/bin/psql/describe.c:6717,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6719,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6722,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6723,1
    - Dst: printTableCleanup
      Src: /src/postgres/src/bin/psql/describe.c:6728,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6729,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6730,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6731,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 104
    argCount: 1
    argNames:
    - pattern
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6733
      start: 6526
    functionDepth: 2
    functionLinenumber: 6526
    functionLinenumberEnd: 6733
    functionName: describePublications
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - printTableAddCell
    - printTableAddHeader
    - termPQExpBuffer
    - PQgetvalue
    - formatPGVersionNumber
    - addFooterToPublicationDesc
    - appendPQExpBufferStr
    - _
    - PQclear
    - strcmp
    - pg_log_error
    - gettext_noop
    - printTableInit
    - PQntuples
    - PSQLexec
    - printTable
    - printfPQExpBuffer
    - appendPQExpBuffer
    - printTableCleanup
    - validateSQLNamePattern
    - initPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool describePublications(const char *pattern)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/describe.c:6755,1
    - Dst: formatPGVersionNumber
      Src: /src/postgres/src/bin/psql/describe.c:6756,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6761,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6763,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6768,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6769,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6770,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6771,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6778,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6780,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6783,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6789,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6791,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6793,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6798,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6801,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6802,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6805,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6809,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6810,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6811,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6814,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6816,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6818,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6821,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6822,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6826,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6828,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6832,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:6838,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6843,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6847,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:6849,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6850,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6854,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:6857,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:6859,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6861,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 2
    argNames:
    - pattern
    - verbose
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6863
      start: 6741
    functionDepth: 2
    functionLinenumber: 6741
    functionLinenumberEnd: 6863
    functionName: describeSubscriptions
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - lengthof
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - printfPQExpBuffer
    - appendPQExpBuffer
    - formatPGVersionNumber
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - pg_log_error
    - gettext_noop
    - initPQExpBuffer
    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: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
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - colname
    argTypes:
    - PQExpBuffer
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6885
      start: 6875
    functionDepth: 1
    functionLinenumber: 6875
    functionLinenumberEnd: 6885
    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:6903,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6905,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6923,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: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6927,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6928,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6929,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6931,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6938,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:6939,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6940,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6947,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:6952,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:6959,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:6967,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:6968,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6969,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:6973,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:6976,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:6978,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:6980,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:6984,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 3
    argNames:
    - access_method_pattern
    - type_pattern
    - verbose
    argTypes:
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6986
      start: 6893
    functionDepth: 2
    functionLinenumber: 6893
    functionLinenumberEnd: 6986
    functionName: listOperatorClasses
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - lengthof
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - appendPQExpBuffer
    - printfPQExpBuffer
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - gettext_noop
    - initPQExpBuffer
    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:7004,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7006,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7018,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7019,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7020,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7022,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7024,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:7025,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:7031,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7037,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:7046,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:7052,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:7055,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:7056,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7057,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:7061,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:7064,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:7066,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:7068,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7072,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 3
    argNames:
    - access_method_pattern
    - type_pattern
    - verbose
    argTypes:
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7074
      start: 6994
    functionDepth: 2
    functionLinenumber: 6994
    functionLinenumberEnd: 7074
    functionName: listOperatorFamilies
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - lengthof
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - appendPQExpBuffer
    - printfPQExpBuffer
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - gettext_noop
    - initPQExpBuffer
    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:7094,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7096,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7110,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7111,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7112,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7113,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7114,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7115,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7116,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7119,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7125,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7126,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7127,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7128,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:7129,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:7135,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:7142,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:7151,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:7157,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:7163,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7164,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:7168,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:7171,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:7173,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:7175,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7179,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 3
    argNames:
    - access_method_pattern
    - family_pattern
    - verbose
    argTypes:
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7181
      start: 7083
    functionDepth: 2
    functionLinenumber: 7083
    functionLinenumberEnd: 7181
    functionName: listOpFamilyOperators
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - lengthof
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - appendPQExpBuffer
    - printfPQExpBuffer
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - gettext_noop
    - initPQExpBuffer
    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:7200,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7202,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7213,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7214,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7215,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7216,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7217,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7220,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7222,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7224,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7226,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:7228,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:7237,1
    - Dst: validateSQLNamePattern
      Src: /src/postgres/src/bin/psql/describe.c:7245,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:7251,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:7255,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7256,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:7260,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/describe.c:7263,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:7265,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:7267,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7271,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 3
    argNames:
    - access_method_pattern
    - family_pattern
    - verbose
    argTypes:
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7273
      start: 7190
    functionDepth: 2
    functionLinenumber: 7190
    functionLinenumberEnd: 7273
    functionName: listOpFamilyFunctions
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - lengthof
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - appendPQExpBuffer
    - printfPQExpBuffer
    - validateSQLNamePattern
    - _
    - printQuery
    - PQclear
    - gettext_noop
    - initPQExpBuffer
    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:7286,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7288,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7291,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7292,1
    - Dst: printACLColumn
      Src: /src/postgres/src/bin/psql/describe.c:7296,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/describe.c:7297,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7300,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/describe.c:7304,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/describe.c:7306,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/describe.c:7307,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/describe.c:7311,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/describe.c:7314,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/describe.c:7316,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - verbose
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7318
      start: 7279
    functionDepth: 2
    functionLinenumber: 7279
    functionLinenumberEnd: 7318
    functionName: listLargeObjects
    functionSourceFile: /src/postgres/src/bin/psql/describe.c
    functionUses: 0
    functionsReached:
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PSQLexec
    - printfPQExpBuffer
    - appendPQExpBuffer
    - gettext_noop
    - _
    - printQuery
    - PQclear
    - printACLColumn
    - initPQExpBuffer
    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: 258
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 258
    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: 266
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 266
    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: 272
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 272
    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: 275
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 275
    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: 283
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 283
    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: 289
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 289
    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: 292
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 292
    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: 300
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 300
    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: 306
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 306
    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: 309
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 309
    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: 317
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 317
    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: 323
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 323
    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: 331
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 331
    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: 334
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 334
    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: 342
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 342
    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: 348
      start: 343
    functionDepth: 0
    functionLinenumber: 343
    functionLinenumberEnd: 348
    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: 359
      start: 353
    functionDepth: 0
    functionLinenumber: 353
    functionLinenumberEnd: 359
    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: 366
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 366
    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: 368
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 368
    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: 369
      start: 368
    functionDepth: 0
    functionLinenumber: 368
    functionLinenumberEnd: 369
    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: 375
      start: 370
    functionDepth: 0
    functionLinenumber: 370
    functionLinenumberEnd: 375
    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: 381
      start: 376
    functionDepth: 0
    functionLinenumber: 376
    functionLinenumberEnd: 381
    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: 384
      start: 382
    functionDepth: 0
    functionLinenumber: 382
    functionLinenumberEnd: 384
    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: 393
      start: 385
    functionDepth: 0
    functionLinenumber: 385
    functionLinenumberEnd: 393
    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: 399
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 399
    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: 418
      start: 406
    functionDepth: 0
    functionLinenumber: 406
    functionLinenumberEnd: 418
    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: 436
      start: 423
    functionDepth: 0
    functionLinenumber: 423
    functionLinenumberEnd: 436
    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: 445
      start: 437
    functionDepth: 0
    functionLinenumber: 437
    functionLinenumberEnd: 445
    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: 3
    argNames:
    - (
    - pattern
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1353
      start: 1352
    functionDepth: 0
    functionLinenumber: 1352
    functionLinenumberEnd: 1353
    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: 1368
      start: 1365
    functionDepth: 0
    functionLinenumber: 1365
    functionLinenumberEnd: 1368
    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:1516,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1531
      start: 1486
    functionDepth: 1
    functionLinenumber: 1486
    functionLinenumberEnd: 1531
    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:1564,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1567,1
    - Dst: cimatch
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1589,1
    - Dst: cimatch
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1590,1
    - Dst: cimatch
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1597,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 25
    argCount: 3
    argNames:
    - pattern
    - word
    - case_sensitive
    argTypes:
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1608
      start: 1548
    functionDepth: 1
    functionLinenumber: 1548
    functionLinenumberEnd: 1608
    functionName: word_matches
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 1
    functionsReached:
    - cimatch
    - strlen
    - word_matches
    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: 1557
      start: 1555
    functionDepth: 0
    functionLinenumber: 1555
    functionLinenumberEnd: 1557
    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:1629,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: 1635
      start: 1617
    functionDepth: 2
    functionLinenumber: 1617
    functionLinenumberEnd: 1635
    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:1648,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1648,1
    - Dst: va_start
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1653,1
    - Dst: va_arg
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1655,1
    - Dst: va_end
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1656,1
    - Dst: TailMatchesArray
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1658,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: 1661
      start: 1640
    functionDepth: 3
    functionLinenumber: 1640
    functionLinenumberEnd: 1661
    functionName: TailMatchesImpl
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - Assert
    - lengthof
    - va_end
    - va_arg
    - TailMatchesArray
    - va_start
    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:1679,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: 1685
      start: 1667
    functionDepth: 2
    functionLinenumber: 1667
    functionLinenumberEnd: 1685
    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:1698,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1698,1
    - Dst: va_start
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1703,1
    - Dst: va_arg
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1705,1
    - Dst: va_end
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1706,1
    - Dst: HeadMatchesArray
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1708,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: 1711
      start: 1690
    functionDepth: 3
    functionLinenumber: 1690
    functionLinenumberEnd: 1711
    functionName: HeadMatchesImpl
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - Assert
    - lengthof
    - va_end
    - va_arg
    - HeadMatchesArray
    - va_start
    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:1750,1
    - Dst: HeadMatchesArray
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1758,1
    - Dst: TailMatchesArray
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1764,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: 1772
      start: 1720
    functionDepth: 3
    functionLinenumber: 1720
    functionLinenumberEnd: 1772
    functionName: MatchesArray
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 3
    functionsReached:
    - HeadMatchesArray
    - TailMatchesArray
    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:1785,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1785,1
    - Dst: va_start
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1791,1
    - Dst: va_arg
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1793,1
    - Dst: va_end
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1794,1
    - Dst: MatchesArray
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1796,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: 1799
      start: 1777
    functionDepth: 4
    functionLinenumber: 1777
    functionLinenumberEnd: 1799
    functionName: MatchesImpl
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - Assert
    - lengthof
    - va_end
    - va_arg
    - MatchesArray
    - va_start
    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:1807,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - s
    - c
    argTypes:
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1810
      start: 1804
    functionDepth: 0
    functionLinenumber: 1804
    functionLinenumberEnd: 1810
    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:1922,1
    - Dst: get_previous_words
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1944,1
    - Dst: COMPLETE_WITH_LIST_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1950,1
    - Dst: complete_from_variables
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1956,1
    - Dst: complete_from_variables
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1958,1
    - Dst: complete_from_variables
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1960,1
    - Dst: complete_from_variables
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1962,1
    - Dst: COMPLETE_WITH_LIST
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1967,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1985,1
    - Dst: MatchesArray
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1993,1
    - Dst: MatchesArray
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:1999,1
    - Dst: HeadMatchesArray
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2005,1
    - Dst: HeadMatchesArray
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2011,1
    - Dst: TailMatchesArray
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2017,1
    - Dst: TailMatchesArray
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2023,1
    - Dst: match_previous_words
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2031,1
    - Dst: match_previous_words
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2043,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2060,1
    - Dst: COMPLETE_WITH_QUERY_LIST
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2063,1
    - Dst: COMPLETE_WITH_VERSIONED_QUERY_LIST
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2066,1
    - Dst: COMPLETE_WITH_VERSIONED_SCHEMA_QUERY_LIST
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2069,1
    - Dst: COMPLETE_WITH_CONST
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2083,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2092,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2093,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2094,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2095,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2097,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 79
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2102
      start: 1820
    functionDepth: 4
    functionLinenumber: 1820
    functionLinenumberEnd: 2102
    functionName: psql_completion
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - get_previous_words
    - lengthof
    - pnstrdup
    - COMPLETE_WITH_QUERY_LIST
    - COMPLETE_WITH_LIST_CS
    - COMPLETE_WITH_VERSIONED_QUERY_LIST
    - COMPLETE_WITH_VERSIONED_SCHEMA_QUERY_LIST
    - COMPLETE_WITH_CONST
    - HeadMatchesArray
    - MatchesArray
    - match_previous_words
    - TailMatchesArray
    - COMPLETE_WITH_LIST
    - pg_strcasecmp
    - complete_from_variables
    - free
    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: 1856
      start: 1853
    functionDepth: 0
    functionLinenumber: 1853
    functionLinenumberEnd: 1856
    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: 1861
      start: 1858
    functionDepth: 0
    functionLinenumber: 1858
    functionLinenumberEnd: 1861
    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: 1866
      start: 1863
    functionDepth: 0
    functionLinenumber: 1863
    functionLinenumberEnd: 1866
    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: 1871
      start: 1868
    functionDepth: 0
    functionLinenumber: 1868
    functionLinenumberEnd: 1871
    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: 1876
      start: 1873
    functionDepth: 0
    functionLinenumber: 1873
    functionLinenumberEnd: 1876
    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: 1881
      start: 1878
    functionDepth: 0
    functionLinenumber: 1878
    functionLinenumberEnd: 1881
    functionName: HeadMatchesCS
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HeadMatchesCS(...)
  - BBCount: 816
    BranchProfiles: []
    Callsites:
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2161,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2164,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2165,1
    - Dst: rl_completion_matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2169,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2172,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2173,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2178,1
    - Dst: rl_completion_matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2179,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2184,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2185,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2189,1
    - Dst: rl_completion_matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2190,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2192,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2193,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2195,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2196,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2198,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2199,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2201,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2202,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2204,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2206,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2207,1
    - Dst: COMPLETE_WITH_FUNCTION_ARG
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2209,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2212,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2214,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2215,1
    - Dst: COMPLETE_WITH_FUNCTION_ARG
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2217,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2220,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2222,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2223,1
    - Dst: COMPLETE_WITH_FUNCTION_ARG
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2225,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2228,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2230,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2231,1
    - Dst: COMPLETE_WITH_FUNCTION_ARG
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2233,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2236,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2237,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2239,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2240,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2241,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2243,1
    - Dst: COMPLETE_WITH_QUERY_VERBATIM_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2244,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2247,1
    - Dst: COMPLETE_WITH_QUERY_VERBATIM_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2248,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2252,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2253,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2255,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2256,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2257,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2258,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2259,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2260,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2261,1
    - Dst: Matches
      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: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2272,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2273,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2274,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2275,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2276,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2277,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2278,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
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2284,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2285,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2286,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2290,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2291,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2293,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2294,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2298,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2299,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2301,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2302,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2304,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2305,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2307,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2308,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2312,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2313,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2315,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:2322,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2324,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: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:2333,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2334,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2337,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2338,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2341,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2342,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2347,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2349,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2350,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2354,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2355,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2358,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2359,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2362,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2363,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2366,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2367,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2370,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2371,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2374,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2375,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2383,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2384,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2387,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2388,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2391,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2392,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2395,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2396,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2399,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2401,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2402,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2406,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2407,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2410,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2411,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2413,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2414,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2417,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2418,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2423,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2424,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2427,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2428,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2431,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2432,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2433,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2434,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2436,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2437,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2439,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2441,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_VERBATIM
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2442,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2445,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2446,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2448,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2449,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2451,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2456,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2457,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2459,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2460,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2462,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2463,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2469,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2470,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2476,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2477,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2478,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2479,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2482,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2483,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2486,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2487,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2490,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2491,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2495,1
    - Dst: TailMatches
      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:2505,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2506,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2509,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2511,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:2525,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2526,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2528,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:2532,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2534,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:2538,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2541,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2543,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2545,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2547,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2548,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2551,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2552,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2554,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2555,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2557,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2558,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2560,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2562,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2563,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2566,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2567,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2569,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2570,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2573,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2574,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2576,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2577,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2581,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2582,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:2585,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2587,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2588,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2590,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2591,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2593,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2594,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2596,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2597,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2598,1
    - Dst: COMPLETE_WITH_QUERY_VERBATIM_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2599,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2601,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2602,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2604,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_ATTR_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2608,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2609,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2610,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2612,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2613,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2614,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2616,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2616,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2617,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2619,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2619,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:2625,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2626,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2628,1
    - Dst: COMPLETE_WITH_LIST
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2629,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2630,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2631,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:2634,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2635,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2638,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2639,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2643,1
    - Dst: COMPLETE_WITH_ATTR_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2644,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2645,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2646,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2648,1
    - Dst: MatchAnyExcept
      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: MatchAnyExcept
      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: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2654,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2655,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2657,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2658,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2661,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2662,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2664,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2665,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2667,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2669,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2670,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2673,1
    - Dst: COMPLETE_WITH
      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_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2677,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2680,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2681,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2683,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2684,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2687,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2688,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2691,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2693,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2694,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2698,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2699,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2702,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2703,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: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:2712,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2714,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2715,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2719,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2720,1
    - Dst: Matches
      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:2734,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2737,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2741,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2742,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2742,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2743,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2745,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2746,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2748,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2749,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2750,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2751,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2752,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2754,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2756,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2757,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2760,1
    - Dst: set_completion_reference
      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:2766,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2769,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2770,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2773,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2776,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      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: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2781,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2783,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2784,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2785,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2787,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2788,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2790,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2792,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2793,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2795,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2797,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2798,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2800,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2802,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2803,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2806,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2807,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2809,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2810,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2812,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2813,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:2817,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2819,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2820,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2822,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2824,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2825,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2829,1
    - Dst: COMPLETE_WITH_ATTR_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2830,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2833,1
    - Dst: COMPLETE_WITH_ATTR_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2834,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2835,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2836,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2839,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2839,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2840,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2843,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2843,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2844,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2847,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2848,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2850,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2851,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2853,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2855,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2856,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2859,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2861,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2862,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2865,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2866,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2867,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2869,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2870,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2871,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2873,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2874,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2875,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2877,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2878,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2879,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:2883,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2884,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2885,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2890,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2891,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2892,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2894,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2895,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2896,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2898,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2899,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2900,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2902,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2903,1
    - Dst: COMPLETE_WITH
      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: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2907,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2908,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2910,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2911,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2912,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2914,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2915,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2916,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2918,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2919,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2924,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2925,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2926,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2927,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2928,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2929,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2931,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2932,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2935,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2936,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2943,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2944,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2951,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2952,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2954,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2955,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2957,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2958,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2960,1
    - Dst: COMPLETE_WITH_LIST
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2961,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2962,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2964,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2965,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:2969,1
    - Dst: COMPLETE_WITH
      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:2978,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2979,1
    - Dst: TailMatches
      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: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2983,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2984,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2990,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2992,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      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: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2996,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:2999,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3000,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3003,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3004,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3006,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3007,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3009,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3010,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3014,1
    - Dst: COMPLETE_WITH
      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: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3017,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3018,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3019,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3020,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3021,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3026,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3027,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3031,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3032,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3034,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3035,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3037,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3038,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3040,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3041,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3047,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3048,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3050,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3051,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3053,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3054,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3056,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3057,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3059,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3060,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3062,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3063,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3065,1
    - Dst: COMPLETE_WITH_ENUM_VALUE
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3066,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:3071,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3072,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3076,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3077,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3079,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3080,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3082,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3083,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3089,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      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_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3093,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3095,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3096,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3103,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3103,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3104,1
    - Dst: TailMatches
      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:3108,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3110,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3111,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3112,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3115,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3116,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3118,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3119,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3121,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3122,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:3127,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3128,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3129,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3130,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3132,1
    - Dst: COMPLETE_WITH_VERSIONED_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3133,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3134,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3135,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3137,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3138,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3141,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      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: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3145,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3146,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3148,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3148,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3149,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3151,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3152,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3154,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3155,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3157,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3158,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3160,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3161,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3168,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3168,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3169,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3173,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3174,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3175,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3176,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3187,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3188,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3189,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3190,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3191,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3192,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3193,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3195,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3196,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3199,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3200,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3201,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3202,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3203,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3204,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3205,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3206,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3207,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3208,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3209,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3210,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3211,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3212,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3213,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3215,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      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_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3219,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3220,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3221,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3222,1
    - Dst: set_completion_reference
      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:3227,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3228,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3229,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3230,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3231,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3232,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3233,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3234,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3235,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3236,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3237,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3238,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3239,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3240,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3241,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3243,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3244,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3246,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3247,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3248,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3250,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3251,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3253,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3253,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3254,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3254,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3255,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3255,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3256,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3256,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3257,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3265,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3266,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3268,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3269,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3271,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3272,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3274,1
    - Dst: rl_completion_matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3278,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3280,1
    - Dst: rl_completion_matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3284,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3288,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3289,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3292,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3293,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3296,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3297,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3303,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3304,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3307,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3308,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3311,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3312,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3315,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3316,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3320,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3321,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3323,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3324,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3326,1
    - Dst: COMPLETE_WITH
      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
      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_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3333,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3334,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3336,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3337,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3339,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3340,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3341,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3342,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3346,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3347,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3353,1
    - Dst: COMPLETE_WITH_QUERY
      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: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3356,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3359,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3360,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3361,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3362,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3363,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3364,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:3371,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3372,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3374,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3375,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3377,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3379,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3380,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3384,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3385,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3388,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3389,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3392,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3393,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3397,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3398,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3404,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3405,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3412,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3413,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3414,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3420,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3421,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3424,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3425,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3426,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3432,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3433,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3434,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3435,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3436,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3437,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3439,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3440,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3442,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3443,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3444,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3445,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3446,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3447,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3448,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3449,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3452,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3453,1
    - Dst: Matches
      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: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3460,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3461,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3463,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3464,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3466,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3467,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3473,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3474,1
    - Dst: Matches
      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: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3479,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3480,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3482,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3483,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3485,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3486,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3488,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3489,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3492,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3493,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3499,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3500,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3506,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3507,1
    - Dst: Matches
      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: 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_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3528,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3535,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3536,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3540,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3541,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3542,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3543,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3544,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3545,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3546,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3547,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:3550,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3550,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3551,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3553,1
    - Dst: COMPLETE_WITH_SCHEMA_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:3560,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3561,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3562,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3563,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3564,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3565,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3570,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3571,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3574,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3574,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3575,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3577,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3578,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3582,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3583,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3584,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3586,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3587,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3588,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3594,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3595,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3596,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3598,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3599,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3601,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3602,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3605,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3606,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3608,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3609,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3610,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3612,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3613,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3614,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3615,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3616,1
    - Dst: TailMatches
      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: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3621,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3623,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3624,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3625,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3626,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3627,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3628,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:3635,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3636,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:3639,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3640,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3641,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3642,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3646,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3647,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3649,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3650,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3652,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3653,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3655,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3656,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3658,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3659,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3661,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3662,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3663,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3665,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3666,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3667,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3669,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3670,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3671,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3672,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3673,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3675,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3676,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3677,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3678,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3679,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3680,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3683,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3684,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3685,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3687,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3688,1
    - Dst: COMPLETE_WITH_LIST
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3689,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3691,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3692,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3695,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3696,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3698,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3699,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3702,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3703,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3704,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3705,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3708,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:3711,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3712,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3713,1
    - Dst: Matches
      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: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3718,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3720,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3721,1
    - Dst: Matches
      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: Matches
      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: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3729,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3734,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3735,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: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3749,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3750,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3751,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3757,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3758,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3759,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3761,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3762,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3763,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3769,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3770,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3771,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3772,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3773,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3780,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3781,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3782,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3788,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3789,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3790,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3791,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3793,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3797,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3800,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3803,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3805,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3807,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3809,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3813,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3815,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3817,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3819,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3821,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3822,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3824,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3826,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3827,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3829,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3831,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3833,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3837,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:3841,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3843,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3845,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3847,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3851,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3853,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3855,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3857,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3859,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3861,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3863,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3865,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3867,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3869,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3873,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3875,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3877,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3879,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3881,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3882,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3884,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3886,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3887,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3889,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3891,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3893,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3897,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: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3903,1
    - Dst: COMPLETE_WITH
      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:3909,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3916,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:3922,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3924,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3926,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3928,1
    - Dst: COMPLETE_WITH_VERSIONED_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3930,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3933,1
    - Dst: TailMatches
      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:3944,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3946,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3955,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3956,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3959,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3960,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3961,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3962,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3963,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3965,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3966,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3967,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3967,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3968,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3970,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3971,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3972,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3974,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3975,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3981,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3981,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3982,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3983,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3983,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3984,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3986,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3988,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3989,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3992,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3992,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3993,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3994,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3994,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:3995,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4000,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4001,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4002,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4004,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4005,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4006,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4008,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4009,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4010,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4011,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4012,1
    - Dst: COMPLETE_WITH_LIST
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4013,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4014,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4015,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4016,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4017,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4018,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4019,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4021,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4022,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4023,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4025,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4026,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4027,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4030,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4031,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4033,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4034,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4040,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4041,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4043,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4044,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4050,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4051,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4052,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4055,1
    - Dst: COMPLETE_WITH
      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: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4059,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4061,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4062,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4070,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4073,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4075,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4077,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4080,1
    - Dst: COMPLETE_WITH
      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_VERSIONED_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4085,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4088,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4089,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4098,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4099,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4109,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4110,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4111,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4112,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4113,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: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4117,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4123,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:4126,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4127,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4129,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4130,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4134,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4135,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4137,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4138,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4140,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4141,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4145,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4146,1
    - Dst: Matches
      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:4154,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4157,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4158,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4159,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4160,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4161,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4162,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4163,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4164,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4165,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4168,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4169,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4170,1
    - Dst: COMPLETE_WITH_FUNCTION_ARG
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4171,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4172,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4173,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: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4176,1
    - Dst: ends_with
      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: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4180,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4181,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4183,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4184,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: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4187,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4188,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4191,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4192,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4193,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4194,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4195,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4196,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4199,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4200,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4201,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4202,1
    - Dst: Matches
      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: Matches
      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: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4211,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4212,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4213,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4215,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4216,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4218,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4219,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4222,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4223,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4224,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4225,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4228,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4229,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4230,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4231,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4234,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4235,1
    - Dst: Matches
      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: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4240,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4242,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4243,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:4249,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4250,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4251,1
    - Dst: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4253,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4254,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4256,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4257,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4260,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4261,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4262,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4263,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4264,1
    - Dst: COMPLETE_WITH
      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: set_completion_reference
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4268,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4269,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4271,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4272,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4275,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4276,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4282,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4283,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4285,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4286,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4293,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4293,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4294,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4297,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4298,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4299,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4300,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4301,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4302,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4304,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4305,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4307,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4308,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4309,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4310,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4319,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4320,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4337,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4338,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4348,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4349,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4350,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4351,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4355,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4356,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4360,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4361,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4362,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4364,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4365,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4368,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4369,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4370,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4373,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4374,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4381,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4382,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4388,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4390,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4391,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4392,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4395,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4396,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4401,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4402,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4404,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4405,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4411,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4412,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4413,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4414,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4417,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4418,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4419,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4421,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4422,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4423,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4424,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4425,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4426,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4427,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4429,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4430,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4431,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4432,1
    - Dst: COMPLETE_WITH_QUERY_VERBATIM
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4433,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4435,1
    - Dst: TailMatches
      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: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4439,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4440,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4441,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4442,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4443,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4449,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4450,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4452,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4453,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4454,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4455,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4457,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4467,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4468,1
    - Dst: HeadMatches
      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: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4477,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4499,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4500,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4501,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4506,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4507,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4508,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4516,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4517,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4519,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4520,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4521,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4522,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4523,1
    - Dst: COMPLETE_WITH_VERSIONED_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4524,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4525,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4526,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4527,1
    - Dst: COMPLETE_WITH_VERSIONED_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4528,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4529,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4530,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4531,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4532,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4533,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4534,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4535,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4536,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4537,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4538,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4539,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4540,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4541,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4542,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4544,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4551,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4552,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4553,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4559,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4560,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4565,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4566,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4570,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4571,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4572,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4573,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4574,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4575,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4578,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4579,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4582,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4583,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4585,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4586,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4587,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4588,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4591,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4592,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4594,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4595,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4597,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4601,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4602,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4604,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4605,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4607,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4611,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4612,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4614,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4615,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4617,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4621,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4622,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4625,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4626,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4627,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4628,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4629,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4630,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4631,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4632,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4633,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4634,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4635,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4636,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4637,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4638,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4639,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4643,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4644,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:4649,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4650,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4652,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4653,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4659,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4660,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4666,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4667,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4668,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:4675,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4676,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4679,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4679,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4680,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4684,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4685,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4687,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4688,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4690,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4690,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4691,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4695,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4695,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4696,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4696,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4697,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4698,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4699,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4702,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4703,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4713,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4714,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4717,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4718,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4722,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4723,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4726,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4727,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4728,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4729,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4732,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4733,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4734,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4735,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4735,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4736,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4742,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4743,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4744,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4745,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4751,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4752,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4753,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4754,1
    - Dst: TailMatches
      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: TailMatches
      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: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4758,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4759,1
    - Dst: MatchAnyExcept
      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: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4760,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4761,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4764,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4765,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4766,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4767,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4768,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4769,1
    - Dst: TailMatches
      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: TailMatches
      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: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4779,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4779,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4780,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4780,1
    - Dst: MatchAnyExcept
      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: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4781,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4781,1
    - Dst: COMPLETE_WITH
      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: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4784,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4785,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4786,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4787,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4788,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4789,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4795,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4796,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4797,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4800,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4801,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4804,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4805,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4811,1
    - Dst: TailMatches
      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: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4818,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4819,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4820,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4823,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4824,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4827,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4828,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4831,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4832,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4836,1
    - Dst: COMPLETE_WITH
      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: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4839,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4842,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4843,1
    - Dst: Matches
      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:4852,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4853,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4854,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4855,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4856,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4857,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4858,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4859,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4860,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4863,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4864,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4865,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4866,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4867,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4868,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4870,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4871,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4872,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4873,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4874,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4875,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4876,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4877,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4878,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4879,1
    - Dst: Matches
      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: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4882,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4883,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4886,1
    - Dst: Matches
      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: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4889,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4890,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4891,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4893,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4894,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4895,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4897,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4898,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4899,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4901,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4902,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4903,1
    - Dst: Matches
      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_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4907,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4908,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4909,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4910,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4911,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4912,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4913,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4914,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4915,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4916,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4917,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4918,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4925,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4925,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4926,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4927,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4928,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4932,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4933,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4934,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4935,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4936,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4937,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4938,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4939,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4940,1
    - Dst: Matches
      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:4953,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4954,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4955,1
    - Dst: COMPLETE_WITH_QUERY_VERBATIM_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4956,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4963,1
    - Dst: COMPLETE_WITH_QUERY_VERBATIM_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4964,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4967,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4968,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4970,1
    - Dst: COMPLETE_WITH
      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: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4973,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4974,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4975,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4976,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4977,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4978,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4979,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4980,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4981,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4982,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4983,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4984,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4985,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4986,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:4989,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4990,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:4993,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4994,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4995,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4996,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4997,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4998,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:4999,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5000,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5002,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5003,1
    - Dst: Matches
      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: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5009,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5010,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5012,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5013,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5015,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5016,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5019,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5020,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5022,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5023,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5029,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5029,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5030,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5036,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5037,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5040,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5041,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5045,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5048,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5053,1
    - Dst: COMPLETE_WITH_TIMEZONE_NAME
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5054,1
    - Dst: get_guctype
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5058,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5067,1
    - Dst: set_completion_reference_verbatim
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5069,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5070,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5073,1
    - Dst: COMPLETE_WITH
      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:5077,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5079,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5085,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5086,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5089,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5090,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5093,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5094,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5095,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5096,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5099,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5100,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5102,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5103,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5105,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5106,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5107,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5108,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5109,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5110,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5111,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5112,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5115,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5116,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5120,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5121,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5123,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5124,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5126,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5127,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5129,1
    - Dst: MatchAnyExcept
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5129,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5130,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5133,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5134,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5135,1
    - Dst: COMPLETE_WITH_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5136,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5141,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5142,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5143,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5144,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5145,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5146,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5152,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5153,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5160,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5161,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5166,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5167,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5171,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5172,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5175,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5176,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5178,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5179,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5186,1
    - Dst: ends_with
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5186,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5187,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5192,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5193,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5194,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5195,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5197,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5199,1
    - Dst: HeadMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5200,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5201,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5209,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5210,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5214,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5215,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5219,1
    - Dst: Matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5219,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5220,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5223,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY_PLUS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5224,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5225,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5225,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5226,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5227,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5228,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5228,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5229,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5230,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5231,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5231,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5232,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5233,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5234,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5235,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5236,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5237,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5238,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5239,1
    - Dst: COMPLETE_WITH_ATTR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5240,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: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5245,1
    - Dst: COMPLETE_WITH_TIMEZONE_NAME
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5246,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5250,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5251,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5252,1
    - Dst: recognized_connection_string
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5254,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5255,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5257,1
    - Dst: recognized_connection_string
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5259,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5260,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5262,1
    - Dst: COMPLETE_WITH_VERSIONED_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5263,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5264,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5265,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5266,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5267,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5268,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5269,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5270,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5271,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5272,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5273,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5274,1
    - Dst: COMPLETE_WITH_QUERY_VERBATIM
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5275,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5276,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5277,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5278,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5279,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5280,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5281,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5282,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5283,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5284,1
    - Dst: COMPLETE_WITH_VERSIONED_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5285,1
    - Dst: HeadMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5286,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5287,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5289,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5290,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5291,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5292,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5293,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5294,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5296,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5297,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5299,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5300,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5301,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5302,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5303,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5304,1
    - Dst: HeadMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5306,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5307,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5308,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5308,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5309,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5310,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5311,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5312,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5313,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5314,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5315,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5316,1
    - Dst: COMPLETE_WITH_VERSIONED_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5317,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5318,1
    - Dst: COMPLETE_WITH_VERSIONED_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5319,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5320,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5321,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5322,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5323,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5324,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5325,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5326,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5327,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5328,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5329,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5330,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5331,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5332,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5333,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5334,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5335,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5336,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5337,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5338,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5339,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5340,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5341,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5344,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5345,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5347,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5348,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5349,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5350,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5352,1
    - Dst: COMPLETE_WITH_QUERY_VERBATIM
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5353,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5354,1
    - Dst: COMPLETE_WITH_LIST
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5355,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5356,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5358,1
    - Dst: rl_completion_matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5359,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5360,1
    - Dst: rl_completion_matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5361,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5368,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5370,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5371,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5372,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5373,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5374,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5375,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5376,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5377,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5378,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5379,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5380,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5381,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5382,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5383,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5384,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5385,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5387,1
    - Dst: TailMatches
      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: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5391,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5392,1
    - Dst: TailMatches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5393,1
    - Dst: COMPLETE_WITH
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5394,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5396,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5396,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5397,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5398,1
    - Dst: COMPLETE_WITH_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5399,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5400,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5401,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5411,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5413,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5414,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5417,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5418,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5419,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5420,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5421,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5422,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5423,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5426,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5428,1
    - Dst: complete_from_variables
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5429,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5430,1
    - Dst: complete_from_variables
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5431,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5432,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5434,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5436,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5437,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5438,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5440,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5441,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5442,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5443,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5444,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5445,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5447,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5448,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5449,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5450,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5451,1
    - Dst: COMPLETE_WITH_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5452,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5454,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5455,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5456,1
    - Dst: COMPLETE_WITH_SCHEMA_QUERY
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5457,1
    - Dst: TailMatchesCS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5458,1
    - Dst: rl_completion_matches
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5464,1
    CyclomaticComplexity: 1038
    EdgeCount: 1038
    ICount: 1737
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5471
      start: 2142
    functionDepth: 1
    functionLinenumber: 2142
    functionLinenumberEnd: 5471
    functionName: match_previous_words
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 1
    functionsReached:
    - COMPLETE_WITH_QUERY_PLUS
    - complete_from_variables
    - recognized_connection_string
    - rl_completion_matches
    - COMPLETE_WITH_LIST
    - COMPLETE_WITH_SCHEMA_QUERY_PLUS
    - Matches
    - get_guctype
    - MatchAnyExcept
    - COMPLETE_WITH_ATTR_PLUS
    - COMPLETE_WITH
    - COMPLETE_WITH_SCHEMA_QUERY_VERBATIM
    - HeadMatches
    - strcmp
    - COMPLETE_WITH_QUERY
    - ends_with
    - COMPLETE_WITH_ATTR
    - COMPLETE_WITH_QUERY_VERBATIM
    - set_completion_reference
    - COMPLETE_WITH_CS
    - COMPLETE_WITH_ENUM_VALUE
    - set_completion_reference_verbatim
    - TailMatches
    - TailMatchesCS
    - HeadMatchesCS
    - COMPLETE_WITH_VERSIONED_SCHEMA_QUERY
    - COMPLETE_WITH_TIMEZONE_NAME
    - COMPLETE_WITH_FUNCTION_ARG
    - COMPLETE_WITH_SCHEMA_QUERY
    - COMPLETE_WITH_VERSIONED_QUERY
    - COMPLETE_WITH_QUERY_VERBATIM_PLUS
    - free
    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:5503,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5509,1
    - Dst: pg_strdup_keyword_case
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5511,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - text
    - state
    - excluded
    argTypes:
    - char*
    - int
    - bits32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5515
      start: 5492
    functionDepth: 1
    functionLinenumber: 5492
    functionLinenumberEnd: 5515
    functionName: create_or_drop_command_generator
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - pg_strdup_keyword_case
    - strlen
    - pg_strncasecmp
    linkageType: ''
    returnType: char
    signature: 'char *

      create_or_drop_command_generator(const char *text, int state, bits32 excluded)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_or_drop_command_generator
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - text
    - state
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5525
      start: 5521
    functionDepth: 2
    functionLinenumber: 5521
    functionLinenumberEnd: 5525
    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:5533,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - text
    - state
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5534
      start: 5530
    functionDepth: 2
    functionLinenumber: 5530
    functionLinenumberEnd: 5534
    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:5542,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - text
    - state
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5543
      start: 5539
    functionDepth: 2
    functionLinenumber: 5539
    functionLinenumberEnd: 5543
    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:5554,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - text
    - state
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5556
      start: 5550
    functionDepth: 1
    functionLinenumber: 5550
    functionLinenumberEnd: 5556
    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:5570,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - text
    - state
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5572
      start: 5558
    functionDepth: 1
    functionLinenumber: 5558
    functionLinenumberEnd: 5572
    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:5578,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - text
    - state
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5580
      start: 5574
    functionDepth: 1
    functionLinenumber: 5574
    functionLinenumberEnd: 5580
    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:5594,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - text
    - state
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5596
      start: 5582
    functionDepth: 1
    functionLinenumber: 5582
    functionLinenumberEnd: 5596
    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:5675,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5681,1
    - Dst: parse_identifier
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5686,1
    - Dst: make_like_pattern
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5698,1
    - Dst: escape_string
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5701,1
    - Dst: escape_string
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5706,1
    - Dst: escape_string
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5711,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5715,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5719,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5729,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5731,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5732,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5737,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5739,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5741,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5743,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5747,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5751,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5752,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5755,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5760,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5772,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5774,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5776,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5787,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5797,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5798,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5812,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5814,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5815,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5820,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5822,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5825,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5827,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5830,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5834,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5835,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5838,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5843,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5851,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5853,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5859,1
    - Dst: exec_query
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5863,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5866,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5867,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5868,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5869,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5870,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5871,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5872,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5876,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5880,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5885,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5886,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5887,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5888,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5889,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5896,1
    - Dst: identifier_needs_quotes
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5908,1
    - Dst: identifier_needs_quotes
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5910,1
    - Dst: requote_identifier
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5920,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5928,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5940,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5940,1
    - Dst: pg_strdup_keyword_case
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5943,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5958,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5958,1
    - Dst: pg_strdup_keyword_case
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5961,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:5976,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: 5979
      start: 5640
    functionDepth: 1
    functionLinenumber: 5640
    functionLinenumberEnd: 5979
    functionName: _complete_from_query
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 4
    functionsReached:
    - escape_string
    - PQresultStatus
    - termPQExpBuffer
    - PQgetvalue
    - identifier_needs_quotes
    - pg_strdup_keyword_case
    - pg_strncasecmp
    - strlen
    - exec_query
    - PQnfields
    - appendPQExpBufferStr
    - requote_identifier
    - PQclear
    - strcmp
    - PQntuples
    - initPQExpBuffer
    - strncmp
    - Assert
    - parse_identifier
    - make_like_pattern
    - pg_strdup
    - appendPQExpBuffer
    - PQgetisnull
    - free
    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:5993,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - word
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5996
      start: 5987
    functionDepth: 1
    functionLinenumber: 5987
    functionLinenumberEnd: 5996
    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:6006,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - word
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6007
      start: 6002
    functionDepth: 1
    functionLinenumber: 6002
    functionLinenumberEnd: 6007
    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:6025,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6031,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6039,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6042,1
    - Dst: pg_strncasecmp
      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:6049,1
    - Dst: pg_strdup_keyword_case
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6056,1
    - Dst: complete_from_list
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6069,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - text
    - state
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6074
      start: 6015
    functionDepth: 1
    functionLinenumber: 6015
    functionLinenumberEnd: 6074
    functionName: complete_from_list
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 1
    functionsReached:
    - Assert
    - pg_strdup
    - complete_from_list
    - pg_strdup_keyword_case
    - pg_strncasecmp
    - strncmp
    - strlen
    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:6098,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6102,1
    - Dst: pg_strdup_keyword_case
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6109,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - text
    - state
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6113
      start: 6095
    functionDepth: 1
    functionLinenumber: 6095
    functionLinenumberEnd: 6113
    functionName: complete_from_const
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - pg_strdup_keyword_case
    - Assert
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      complete_from_const(const char *text, int state)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_realloc
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6128,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6132,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: 6133
      start: 6120
    functionDepth: 1
    functionLinenumber: 6120
    functionLinenumberEnd: 6133
    functionName: append_variable_names
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - psprintf
    - pg_realloc
    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
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6154,1
    - Dst: append_variable_names
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6160,1
    - Dst: COMPLETE_WITH_LIST_CS
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6165,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6168,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6169,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6172
      start: 6143
    functionDepth: 2
    functionLinenumber: 6143
    functionLinenumberEnd: 6172
    functionName: complete_from_variables
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 2
    functionsReached:
    - pg_malloc
    - COMPLETE_WITH_LIST_CS
    - free
    - append_variable_names
    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: 8
    BranchProfiles: []
    Callsites:
    - Dst: rl_filename_completion_function
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6216,1
    - Dst: strtokx
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6233,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6238,1
    - Dst: rl_filename_completion_function
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6243,1
    - Dst: stat
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6247,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6248,1
    - Dst: quote_if_needed
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6251,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6256,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6267,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6269,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 2
    argNames:
    - text
    - state
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6278
      start: 6188
    functionDepth: 1
    functionLinenumber: 6188
    functionLinenumberEnd: 6278
    functionName: complete_from_files
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - Assert
    - quote_if_needed
    - stat
    - S_ISDIR
    - rl_filename_completion_function
    - free
    - strlen
    - strtokx
    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:6295,1
    - Dst: islower
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6299,1
    - Dst: isalpha
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6300,1
    - Dst: pg_tolower
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6303,1
    - Dst: pg_toupper
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6308,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 10
    argCount: 2
    argNames:
    - s
    - ref
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6312
      start: 6288
    functionDepth: 1
    functionLinenumber: 6288
    functionLinenumberEnd: 6312
    functionName: pg_strdup_keyword_case
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 4
    functionsReached:
    - pg_toupper
    - isalpha
    - pg_strdup
    - pg_tolower
    - islower
    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:6326,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6328,1
    - Dst: PQescapeStringConn
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - text
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6332
      start: 6320
    functionDepth: 1
    functionLinenumber: 6320
    functionLinenumberEnd: 6332
    functionName: escape_string
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 1
    functionsReached:
    - pg_malloc
    - PQescapeStringConn
    - 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:6347,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6347,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6354,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6360,1
    - Dst: escape_string
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6371,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6372,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - word
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6374
      start: 6343
    functionDepth: 1
    functionLinenumber: 6343
    functionLinenumberEnd: 6374
    functionName: make_like_pattern
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 1
    functionsReached:
    - escape_string
    - pg_malloc
    - free
    - IS_HIGHBIT_SET
    - strlen
    - PQmblenBounded
    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:6394,1
    - Dst: pg_encoding_max_length
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6395,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6403,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6430,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6432,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6437,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6445,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6464,1
    - Dst: isupper
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6464,1
    - Dst: tolower
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6465,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: 6474
      start: 6389
    functionDepth: 1
    functionLinenumber: 6389
    functionLinenumberEnd: 6474
    functionName: parse_identifier
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 2
    functionsReached:
    - tolower
    - pg_encoding_max_length
    - isupper
    - PQmblenBounded
    - pg_malloc
    - IS_HIGHBIT_SET
    - strlen
    - free
    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:6502,1
    - Dst: identifier_needs_quotes
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6504,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6517,1
    - Dst: identifier_needs_quotes
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6519,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6530,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: 6561
      start: 6488
    functionDepth: 1
    functionLinenumber: 6488
    functionLinenumberEnd: 6561
    functionName: requote_identifier
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 1
    functionsReached:
    - identifier_needs_quotes
    - strlen
    - pg_malloc
    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:6578,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6578,1
    - Dst: ScanKeywordLookup
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6590,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 1
    argNames:
    - ident
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6596
      start: 6570
    functionDepth: 1
    functionLinenumber: 6570
    functionLinenumberEnd: 6596
    functionName: identifier_needs_quotes
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 2
    functionsReached:
    - strspn
    - ScanKeywordLookup
    - strlen
    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:6608,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6611,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6613,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6621,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6622,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6624,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - query
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6629
      start: 6603
    functionDepth: 1
    functionLinenumber: 6603
    functionLinenumberEnd: 6629
    functionName: exec_query
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 1
    functionsReached:
    - PQerrorMessage
    - PQexec
    - PQresultStatus
    - PQstatus
    - PQclear
    - pg_log_error
    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:6660,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6661,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6663,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6679,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6680,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6689,1
    - Dst: isspace
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6710,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6740,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6748,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6758,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 54
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6762
      start: 6643
    functionDepth: 1
    functionLinenumber: 6643
    functionLinenumberEnd: 6762
    functionName: get_previous_words
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 1
    functionsReached:
    - pg_malloc
    - isspace
    - memcpy
    - free
    - strchr
    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:6778,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6780,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6781,1
    - Dst: exec_query
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6786,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6787,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6788,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6790,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6790,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6791,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6791,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6793,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - varname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6796
      start: 6770
    functionDepth: 2
    functionLinenumber: 6770
    functionLinenumberEnd: 6796
    functionName: get_guctype
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 1
    functionsReached:
    - exec_query
    - escape_string
    - PQntuples
    - PQresultStatus
    - pg_strdup
    - termPQExpBuffer
    - PQgetvalue
    - appendPQExpBuffer
    - free
    - PQclear
    - initPQExpBuffer
    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:6813,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6818,1
    - Dst: stat
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6833,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6834,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6836,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6838,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 12
    argCount: 3
    argNames:
    - fname
    - match_type
    - quote_pointer
    argTypes:
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6860
      start: 6806
    functionDepth: 1
    functionLinenumber: 6806
    functionLinenumberEnd: 6860
    functionName: quote_file_name
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - Assert
    - quote_if_needed
    - stat
    - pg_strdup
    - S_ISDIR
    - strlen
    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:6879,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6879,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6882,1
    - Dst: strtokx
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6883,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6885,1
    - Dst: strtokx
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6888,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6894,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/tab-complete.in.c:6899,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - fname
    - quote_char
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6900
      start: 6867
    functionDepth: 1
    functionLinenumber: 6867
    functionLinenumberEnd: 6900
    functionName: dequote_file_name
    functionSourceFile: /src/postgres/src/bin/psql/tab-complete.in.c
    functionUses: 0
    functionsReached:
    - Assert
    - pg_strdup
    - pg_malloc
    - strlen
    - strtokx
    - free
    - strcpy
    linkageType: ''
    returnType: char
    signature: 'char *

      dequote_file_name(char *fname, int quote_char)'
  - BBCount: 83
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/prompt.c:101,1
    - Dst: memset
      Src: /src/postgres/src/bin/psql/prompt.c:104,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:112,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/psql/prompt.c:112,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/prompt.c:119,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/psql/prompt.c:119,1
    - Dst: PQuser
      Src: /src/postgres/src/bin/psql/prompt.c:119,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/prompt.c:120,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/prompt.c:120,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/psql/prompt.c:120,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:121,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:123,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/psql/prompt.c:123,1
    - Dst: memset
      Src: /src/postgres/src/bin/psql/prompt.c:130,1
    - Dst: Min
      Src: /src/postgres/src/bin/psql/prompt.c:131,1
    - Dst: PQhost
      Src: /src/postgres/src/bin/psql/prompt.c:139,1
    - Dst: is_unixsock_path
      Src: /src/postgres/src/bin/psql/prompt.c:142,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:144,1
    - Dst: strcspn
      Src: /src/postgres/src/bin/psql/prompt.c:146,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/prompt.c:152,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:154,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/prompt.c:156,1
    - Dst: PQport
      Src: /src/postgres/src/bin/psql/prompt.c:162,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:163,1
    - Dst: PQport
      Src: /src/postgres/src/bin/psql/prompt.c:163,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:168,1
    - Dst: session_username
      Src: /src/postgres/src/bin/psql/prompt.c:168,1
    - Dst: PQservice
      Src: /src/postgres/src/bin/psql/prompt.c:172,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:173,1
    - Dst: PQservice
      Src: /src/postgres/src/bin/psql/prompt.c:173,1
    - Dst: PQbackendPID
      Src: /src/postgres/src/bin/psql/prompt.c:179,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/prompt.c:182,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/prompt.c:188,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:191,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:193,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:195,1
    - Dst: strtol
      Src: /src/postgres/src/bin/psql/prompt.c:207,1
    - Dst: unconstify
      Src: /src/postgres/src/bin/psql/prompt.c:207,1
    - Dst: conditional_active
      Src: /src/postgres/src/bin/psql/prompt.c:214,1
    - Dst: PQtransactionStatus
      Src: /src/postgres/src/bin/psql/prompt.c:251,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/prompt.c:270,1
    - Dst: is_superuser
      Src: /src/postgres/src/bin/psql/prompt.c:278,1
    - Dst: strcspn
      Src: /src/postgres/src/bin/psql/prompt.c:287,1
    - Dst: pnstrdup
      Src: /src/postgres/src/bin/psql/prompt.c:288,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/prompt.c:291,1
    - Dst: popen
      Src: /src/postgres/src/bin/psql/prompt.c:292,1
    - Dst: fgets
      Src: /src/postgres/src/bin/psql/prompt.c:295,1
    - Dst: pclose
      Src: /src/postgres/src/bin/psql/prompt.c:297,1
    - Dst: pg_strip_crlf
      Src: /src/postgres/src/bin/psql/prompt.c:301,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/prompt.c:303,1
    - Dst: strcspn
      Src: /src/postgres/src/bin/psql/prompt.c:311,1
    - Dst: pnstrdup
      Src: /src/postgres/src/bin/psql/prompt.c:312,1
    - Dst: GetVariable
      Src: /src/postgres/src/bin/psql/prompt.c:315,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/prompt.c:317,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/prompt.c:318,1
    - Dst: strlcat
      Src: /src/postgres/src/bin/psql/prompt.c:354,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/prompt.c:361,1
    - Dst: PQmblen
      Src: /src/postgres/src/bin/psql/prompt.c:384,1
    - Dst: PQdsplen
      Src: /src/postgres/src/bin/psql/prompt.c:390,1
    CyclomaticComplexity: 86
    EdgeCount: 86
    ICount: 219
    argCount: 2
    argNames:
    - status
    - cstack
    argTypes:
    - promptStatus_t
    - ConditionalStack
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 404
    functionName: get_prompt
    functionSourceFile: /src/postgres/src/bin/psql/prompt.c
    functionUses: 0
    functionsReached:
    - getenv
    - PQhost
    - PQpipelineStatus
    - PQbackendPID
    - snprintf
    - strtol
    - PQport
    - unconstify
    - PQmblen
    - strlen
    - Min
    - strcspn
    - is_unixsock_path
    - PQuser
    - strcmp
    - GetVariable
    - fflush
    - pclose
    - pnstrdup
    - PQdb
    - popen
    - conditional_active
    - strlcpy
    - PQservice
    - PQdsplen
    - fgets
    - memset
    - session_username
    - is_superuser
    - strlcat
    - pg_strip_crlf
    - PQtransactionStatus
    - free
    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:
    - PageOutput
    - ClosePager
    - fputs
    - termPQExpBuffer
    - HELP0
    - HELPN
    - initPQExpBuffer
    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:177,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:179,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:181,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:182,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:183,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:184,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:185,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:190,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:194,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:196,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:197,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:199,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:202,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: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:212,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: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:219,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: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:243,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: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:261,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: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:278,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:282,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: HELPN
      Src: /src/postgres/src/bin/psql/help.c:286,1
    - Dst: 'ON'
      Src: /src/postgres/src/bin/psql/help.c:287,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:288,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: 156
    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:
    - PageOutput
    - ClosePager
    - 'ON'
    - fputs
    - termPQExpBuffer
    - PQdb
    - HELPN
    - HELP0
    - _
    - initPQExpBuffer
    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: HELP0
      Src: /src/postgres/src/bin/psql/help.c:479,1
    - Dst: HELPN
      Src: /src/postgres/src/bin/psql/help.c:481,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: HELP0
      Src: /src/postgres/src/bin/psql/help.c:488,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:490,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:492,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:494,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:496,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:498,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:500,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:502,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:513,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:517,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:518,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:521,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:523,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:526,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:532,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:534,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:536,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:538,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:540,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:542,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:544,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:546,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:548,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:551,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:554,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:556,1
    - Dst: HELP0
      Src: /src/postgres/src/bin/psql/help.c:558,1
    - Dst: PageOutput
      Src: /src/postgres/src/bin/psql/help.c:570,1
    - Dst: fputs
      Src: /src/postgres/src/bin/psql/help.c:572,1
    - Dst: ClosePager
      Src: /src/postgres/src/bin/psql/help.c:574,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/help.c:576,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 93
    argCount: 1
    argNames:
    - pager
    argTypes:
    - unsigned short int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 369
    functionDepth: 1
    functionLinenumber: 369
    functionLinenumberEnd: 577
    functionName: helpVariables
    functionSourceFile: /src/postgres/src/bin/psql/help.c
    functionUses: 0
    functionsReached:
    - PageOutput
    - ClosePager
    - fputs
    - termPQExpBuffer
    - HELP0
    - HELPN
    - initPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void helpVariables(unsigned short int pager)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/help.c:590,1
    - Dst: ioctl
      Src: /src/postgres/src/bin/psql/help.c:604,1
    - Dst: fileno
      Src: /src/postgres/src/bin/psql/help.c:604,1
    - Dst: Max
      Src: /src/postgres/src/bin/psql/help.c:613,1
    - Dst: PageOutput
      Src: /src/postgres/src/bin/psql/help.c:616,1
    - Dst: fputs
      Src: /src/postgres/src/bin/psql/help.c:618,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/help.c:618,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/help.c:622,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/help.c:624,1
    - Dst: VALUE_OR_NULL
      Src: /src/postgres/src/bin/psql/help.c:626,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/help.c:628,1
    - Dst: VALUE_OR_NULL
      Src: /src/postgres/src/bin/psql/help.c:629,1
    - Dst: fputc
      Src: /src/postgres/src/bin/psql/help.c:630,1
    - Dst: ClosePager
      Src: /src/postgres/src/bin/psql/help.c:633,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/help.c:650,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/help.c:681,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/help.c:682,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/help.c:688,1
    - Dst: PageOutput
      Src: /src/postgres/src/bin/psql/help.c:697,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/help.c:701,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/help.c:702,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/help.c:707,1
    - Dst: syntaxfunc
      Src: /src/postgres/src/bin/psql/help.c:708,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/help.c:709,1
    - Dst: strstr
      Src: /src/postgres/src/bin/psql/help.c:710,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/help.c:713,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/help.c:713,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/help.c:718,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/help.c:721,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/help.c:722,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/help.c:725,1
    - Dst: PageOutput
      Src: /src/postgres/src/bin/psql/help.c:735,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/help.c:736,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/help.c:736,1
    - Dst: ClosePager
      Src: /src/postgres/src/bin/psql/help.c:741,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 69
    argCount: 2
    argNames:
    - topic
    - pager
    argTypes:
    - char*
    - unsigned short int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 585
    functionDepth: 1
    functionLinenumber: 585
    functionLinenumberEnd: 743
    functionName: helpSQL
    functionSourceFile: /src/postgres/src/bin/psql/help.c
    functionUses: 0
    functionsReached:
    - strstr
    - termPQExpBuffer
    - fprintf
    - pg_strncasecmp
    - psprintf
    - strlen
    - ioctl
    - PageOutput
    - ClosePager
    - fputc
    - VALUE_OR_NULL
    - Max
    - fileno
    - _
    - free
    - strcmp
    - fputs
    - pg_strcasecmp
    - syntaxfunc
    - 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: 589
      start: 588
    functionDepth: 0
    functionLinenumber: 588
    functionLinenumberEnd: 589
    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:750,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 747
    functionDepth: 0
    functionLinenumber: 747
    functionLinenumberEnd: 768
    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:
    - popen
    - fopen
    - fflush
    - pg_log_error
    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:
    - fclose
    - pclose
    - SetShellResultVariables
    - restore_sigpipe_trap
    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:
    - pclose
    - fclose
    - restore_sigpipe_trap
    - openQueryOutputFile
    - set_sigpipe_trap_state
    - SetShellResultVariables
    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:
    - appendShellStringNoError
    - PQescapeIdentifier
    - PQerrorMessage
    - strlen
    - PQfreemem
    - pg_strdup
    - initPQExpBuffer
    - PQescapeLiteral
    - conditional_active
    - free
    - pg_log_info
    - pg_log_error
    - GetVariable
    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:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 335
    functionDepth: 1
    functionLinenumber: 335
    functionLinenumberEnd: 339
    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:358,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/common.c:363,1
    - Dst: exit
      Src: /src/postgres/src/bin/psql/common.c:364,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/common.c:367,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:367,1
    - Dst: PQreset
      Src: /src/postgres/src/bin/psql/common.c:368,1
    - Dst: pipelineReset
      Src: /src/postgres/src/bin/psql/common.c:369,1
    - Dst: ConnectionUp
      Src: /src/postgres/src/bin/psql/common.c:370,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/common.c:373,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:373,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/psql/common.c:382,1
    - Dst: ResetCancelConn
      Src: /src/postgres/src/bin/psql/common.c:385,1
    - Dst: UnsyncVariables
      Src: /src/postgres/src/bin/psql/common.c:386,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/common.c:390,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:390,1
    - Dst: SyncVariables
      Src: /src/postgres/src/bin/psql/common.c:396,1
    - Dst: connection_warnings
      Src: /src/postgres/src/bin/psql/common.c:397,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 353
    functionDepth: 2
    functionLinenumber: 353
    functionLinenumberEnd: 402
    functionName: CheckConnection
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - UnsyncVariables
    - SyncVariables
    - PQfinish
    - PQreset
    - ResetCancelConn
    - fprintf
    - pipelineReset
    - exit
    - _
    - ConnectionUp
    - connection_warnings
    - pg_log_error
    linkageType: ''
    returnType: bool
    signature: bool CheckConnection(void)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:423,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/common.c:445,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:446,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/common.c:452,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/common.c:454,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/common.c:455,1
    - Dst: CheckConnection
      Src: /src/postgres/src/bin/psql/common.c:457,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 2
    argNames:
    - result
    - show_error
    argTypes:
    - PGresult*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 415
    functionDepth: 3
    functionLinenumber: 415
    functionLinenumberEnd: 461
    functionName: AcceptResult
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - PQerrorMessage
    - PQresultStatus
    - pg_log_info
    - pg_log_error
    - CheckConnection
    - strlen
    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:480,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:482,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:483,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:484,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/bin/psql/common.c:488,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/bin/psql/common.c:489,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:491,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:499,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:500,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
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - result
    - success
    argTypes:
    - PGresult*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 475
    functionDepth: 1
    functionLinenumber: 475
    functionLinenumberEnd: 504
    functionName: SetResultVariables
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - SetVariable
    - PQcmdTuples
    - 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:520,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/common.c:522,1
    - Dst: wait_result_to_exit_code
      Src: /src/postgres/src/bin/psql/common.c:522,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:523,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - wait_result
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 515
    functionDepth: 1
    functionLinenumber: 515
    functionLinenumberEnd: 524
    functionName: SetShellResultVariables
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 2
    functionsReached:
    - wait_result_to_exit_code
    - SetVariable
    - snprintf
    linkageType: ''
    returnType: void
    signature: void SetShellResultVariables(int wait_result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/common.c:538,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:539,1
    - 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
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 533
    functionDepth: 1
    functionLinenumber: 533
    functionLinenumberEnd: 544
    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:562,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/common.c:566,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/common.c:571,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - result
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 557
    functionDepth: 1
    functionLinenumber: 557
    functionLinenumberEnd: 575
    functionName: ClearOrSaveResult
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - PQresultStatus
    - PQclear
    linkageType: ''
    returnType: void
    signature: void ClearOrSaveResult(PGresult *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/psql/common.c:586,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:587,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 581
    functionDepth: 2
    functionLinenumber: 581
    functionLinenumberEnd: 588
    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:606,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:606,1
    - Dst: floor
      Src: /src/postgres/src/bin/psql/common.c:617,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/common.c:621,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:621,1
    - Dst: floor
      Src: /src/postgres/src/bin/psql/common.c:626,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/common.c:630,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:630,1
    - Dst: floor
      Src: /src/postgres/src/bin/psql/common.c:635,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/common.c:637,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:637,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - elapsed_msec
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 639
    functionName: PrintTiming
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - printf
    - floor
    - _
    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:661,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/common.c:667,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:667,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/common.c:670,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/common.c:673,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:674,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/common.c:677,1
    - Dst: SetCancelConn
      Src: /src/postgres/src/bin/psql/common.c:684,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/psql/common.c:686,1
    - Dst: ResetCancelConn
      Src: /src/postgres/src/bin/psql/common.c:688,1
    - Dst: AcceptResult
      Src: /src/postgres/src/bin/psql/common.c:690,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:692,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - query
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 654
    functionDepth: 4
    functionLinenumber: 654
    functionLinenumberEnd: 697
    functionName: PSQLexec
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 51
    functionsReached:
    - printf
    - fflush
    - PQexec
    - SetCancelConn
    - ResetCancelConn
    - fprintf
    - AcceptResult
    - _
    - pg_log_error
    - ClearOrSaveResult
    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:718,1
    - Dst: SetCancelConn
      Src: /src/postgres/src/bin/psql/common.c:722,1
    - Dst: ExecQueryAndProcessResults
      Src: /src/postgres/src/bin/psql/common.c:724,1
    - Dst: ResetCancelConn
      Src: /src/postgres/src/bin/psql/common.c:726,1
    - Dst: PrintTiming
      Src: /src/postgres/src/bin/psql/common.c:730,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: 733
      start: 709
    functionDepth: 1
    functionLinenumber: 709
    functionLinenumberEnd: 733
    functionName: PSQLexecWatch
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - ResetCancelConn
    - SetCancelConn
    - ExecQueryAndProcessResults
    - PrintTiming
    - pg_log_error
    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:744,1
    - Dst: PQnotifies
      Src: /src/postgres/src/bin/psql/common.c:745,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/common.c:749,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:749,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/common.c:752,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:752,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/common.c:754,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/psql/common.c:755,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/bin/psql/common.c:756,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 739
    functionDepth: 1
    functionLinenumber: 739
    functionLinenumberEnd: 758
    functionName: PrintNotifications
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - fflush
    - PQnotifies
    - PQfreemem
    - fprintf
    - PQconsumeInput
    - _
    linkageType: ''
    returnType: void
    signature: void PrintNotifications(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/common.c:779,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/common.c:780,1
    - Dst: ferror
      Src: /src/postgres/src/bin/psql/common.c:781,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/common.c:783,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - result
    - opt
    - printQueryFout
    argTypes:
    - PGresult*
    - printQueryOpt*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 772
    functionDepth: 1
    functionLinenumber: 772
    functionLinenumberEnd: 788
    functionName: PrintQueryTuples
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - ferror
    - fflush
    - pg_log_error
    - 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:801,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/common.c:803,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/common.c:806,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/common.c:808,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/psql/common.c:815,1
    - Dst: PQfname
      Src: /src/postgres/src/bin/psql/common.c:817,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/common.c:822,1
    - Dst: VariableHasHook
      Src: /src/postgres/src/bin/psql/common.c:824,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/psql/common.c:826,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/common.c:831,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/common.c:832,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:839,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/common.c:841,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/common.c:846,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 1
    argNames:
    - result
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 796
    functionDepth: 1
    functionLinenumber: 796
    functionLinenumberEnd: 851
    functionName: StoreQueryTuple
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - PQntuples
    - PQnfields
    - SetVariable
    - pg_log_warning
    - PQgetvalue
    - PQgetisnull
    - PQfname
    - free
    - pg_log_error
    - VariableHasHook
    - psprintf
    linkageType: ''
    returnType: bool
    signature: bool StoreQueryTuple(const PGresult *result)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/common.c:864,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/psql/common.c:865,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/common.c:878,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/common.c:880,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/common.c:892,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/common.c:893,1
    - Dst: SendQuery
      Src: /src/postgres/src/bin/psql/common.c:896,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 1
    argNames:
    - result
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 860
    functionDepth: 1
    functionLinenumber: 860
    functionLinenumberEnd: 918
    functionName: ExecQueryTuples
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - fflush
    - PQntuples
    - SendQuery
    - PQnfields
    - puts
    - PQgetvalue
    - PQgetisnull
    linkageType: ''
    returnType: bool
    signature: bool ExecQueryTuples(const PGresult *result)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:941,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/common.c:943,1
    - Dst: SetCancelConn
      Src: /src/postgres/src/bin/psql/common.c:946,1
    - Dst: handleCopyOut
      Src: /src/postgres/src/bin/psql/common.c:950,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/common.c:962,1
    - Dst: handleCopyIn
      Src: /src/postgres/src/bin/psql/common.c:971,1
    - Dst: PQbinaryTuples
      Src: /src/postgres/src/bin/psql/common.c:973,1
    - Dst: ResetCancelConn
      Src: /src/postgres/src/bin/psql/common.c:976,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/common.c:982,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - resultp
    - copystream
    argTypes:
    - PGresult**
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 936
    functionDepth: 1
    functionLinenumber: 936
    functionLinenumberEnd: 986
    functionName: HandleCopyResult
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - Assert
    - PQresultStatus
    - PQbinaryTuples
    - SetCancelConn
    - ResetCancelConn
    - handleCopyIn
    - PQclear
    - handleCopyOut
    linkageType: ''
    returnType: bool
    signature: bool HandleCopyResult(PGresult **resultp, FILE *copystream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PQcmdStatus
      Src: /src/postgres/src/bin/psql/common.c:995,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:999,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/common.c:1001,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/common.c:1002,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: fputs
      Src: /src/postgres/src/bin/psql/common.c:1012,1
    - Dst: html_escaped_print
      Src: /src/postgres/src/bin/psql/common.c:1013,1
    - Dst: fputs
      Src: /src/postgres/src/bin/psql/common.c:1014,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/common.c:1017,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/common.c:1018,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/common.c:1022,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/common.c:1024,1
    - Dst: PQoidValue
      Src: /src/postgres/src/bin/psql/common.c:1024,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:1025,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - result
    - printQueryFout
    argTypes:
    - PGresult*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 991
    functionDepth: 1
    functionLinenumber: 991
    functionLinenumberEnd: 1026
    functionName: PrintQueryStatus
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - fflush
    - fputs
    - PQresultStatus
    - SetVariable
    - snprintf
    - PQoidValue
    - html_escaped_print
    - PQcmdStatus
    - fprintf
    - strncmp
    linkageType: ''
    returnType: void
    signature: void PrintQueryStatus(PGresult *result, FILE *printQueryFout)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:1048,1
    - Dst: StoreQueryTuple
      Src: /src/postgres/src/bin/psql/common.c:1053,1
    - Dst: ExecQueryTuples
      Src: /src/postgres/src/bin/psql/common.c:1055,1
    - Dst: PrintResultInCrosstab
      Src: /src/postgres/src/bin/psql/common.c:1057,1
    - Dst: PrintQueryTuples
      Src: /src/postgres/src/bin/psql/common.c:1059,1
    - Dst: PrintQueryStatus
      Src: /src/postgres/src/bin/psql/common.c:1068,1
    - Dst: PrintQueryStatus
      Src: /src/postgres/src/bin/psql/common.c:1074,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/common.c:1097,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:1098,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: 1103
      start: 1038
    functionDepth: 2
    functionLinenumber: 1038
    functionLinenumberEnd: 1103
    functionName: PrintQueryResult
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - StoreQueryTuple
    - PQresultStatus
    - PrintQueryStatus
    - PrintResultInCrosstab
    - PrintQueryTuples
    - ExecQueryTuples
    - pg_log_error
    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:1130,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/common.c:1138,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/common.c:1139,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:1139,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/common.c:1143,1
    - Dst: fgets
      Src: /src/postgres/src/bin/psql/common.c:1144,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/common.c:1152,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/common.c:1153,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/common.c:1158,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:1159,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/common.c:1162,1
    - Dst: SetCancelConn
      Src: /src/postgres/src/bin/psql/common.c:1165,1
    - Dst: PQtransactionStatus
      Src: /src/postgres/src/bin/psql/common.c:1167,1
    - Dst: command_no_begin
      Src: /src/postgres/src/bin/psql/common.c:1171,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/psql/common.c:1175,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:1176,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/common.c:1178,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/common.c:1178,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:1179,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:1182,1
    - Dst: PQtransactionStatus
      Src: /src/postgres/src/bin/psql/common.c:1183,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/psql/common.c:1193,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:1194,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/common.c:1196,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/common.c:1196,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:1197,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:1200,1
    - Dst: DescribeQuery
      Src: /src/postgres/src/bin/psql/common.c:1207,1
    - Dst: ExecQueryAndProcessResults
      Src: /src/postgres/src/bin/psql/common.c:1212,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/common.c:1216,1
    - Dst: PQtransactionStatus
      Src: /src/postgres/src/bin/psql/common.c:1223,1
    - Dst: ConnectionUp
      Src: /src/postgres/src/bin/psql/common.c:1251,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/common.c:1252,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/psql/common.c:1261,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:1262,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/common.c:1264,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/common.c:1264,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:1265,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/common.c:1270,1
    - Dst: PrintTiming
      Src: /src/postgres/src/bin/psql/common.c:1276,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/psql/common.c:1280,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/psql/common.c:1281,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/psql/common.c:1284,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:1286,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/psql/common.c:1287,1
    - Dst: PrintNotifications
      Src: /src/postgres/src/bin/psql/common.c:1290,1
    - Dst: ResetCancelConn
      Src: /src/postgres/src/bin/psql/common.c:1297,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/common.c:1302,1
    - Dst: restorePsetInfo
      Src: /src/postgres/src/bin/psql/common.c:1309,1
    - Dst: clean_extended_state
      Src: /src/postgres/src/bin/psql/common.c:1314,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/common.c:1319,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/common.c:1331,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/common.c:1333,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 121
    argCount: 1
    argNames:
    - query
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1338
      start: 1117
    functionDepth: 2
    functionLinenumber: 1117
    functionLinenumberEnd: 1338
    functionName: SendQuery
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 1
    functionsReached:
    - lengthof
    - PQresultStatus
    - ExecQueryAndProcessResults
    - fprintf
    - ConnectionUp
    - DescribeQuery
    - PQclientEncoding
    - PrintNotifications
    - pg_encoding_to_char
    - puts
    - ResetCancelConn
    - _
    - pg_log_info
    - PQclear
    - command_no_begin
    - pg_log_error
    - pg_free
    - fflush
    - PQexec
    - PQerrorMessage
    - SetVariable
    - SetCancelConn
    - fgets
    - ClearOrSaveResult
    - printf
    - PrintTiming
    - PQtransactionStatus
    - clean_extended_state
    - free
    - restorePsetInfo
    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:1361,1
    - Dst: INSTR_TIME_SET_ZERO
      Src: /src/postgres/src/bin/psql/common.c:1363,1
    - Dst: PQprepare
      Src: /src/postgres/src/bin/psql/common.c:1373,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:1374,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/common.c:1376,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/common.c:1376,1
    - Dst: SetResultVariables
      Src: /src/postgres/src/bin/psql/common.c:1377,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:1378,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/common.c:1381,1
    - Dst: PQdescribePrepared
      Src: /src/postgres/src/bin/psql/common.c:1383,1
    - Dst: AcceptResult
      Src: /src/postgres/src/bin/psql/common.c:1384,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:1385,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/psql/common.c:1388,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/common.c:1393,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/common.c:1395,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/common.c:1398,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/psql/common.c:1399,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/psql/common.c:1401,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/psql/common.c:1407,1
    - Dst: PQfname
      Src: /src/postgres/src/bin/psql/common.c:1409,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/bin/psql/common.c:1410,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/common.c:1410,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/common.c:1414,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/common.c:1414,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/common.c:1415,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/common.c:1416,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/common.c:1420,1
    - Dst: PQftype
      Src: /src/postgres/src/bin/psql/common.c:1422,1
    - Dst: PQfmod
      Src: /src/postgres/src/bin/psql/common.c:1423,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/psql/common.c:1425,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/common.c:1428,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/common.c:1429,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/psql/common.c:1431,1
    - Dst: AcceptResult
      Src: /src/postgres/src/bin/psql/common.c:1432,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/bin/psql/common.c:1436,1
    - Dst: INSTR_TIME_SUBTRACT
      Src: /src/postgres/src/bin/psql/common.c:1437,1
    - Dst: INSTR_TIME_GET_MILLISEC
      Src: /src/postgres/src/bin/psql/common.c:1438,1
    - Dst: PrintQueryResult
      Src: /src/postgres/src/bin/psql/common.c:1442,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/common.c:1444,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/common.c:1447,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/common.c:1448,1
    - Dst: SetResultVariables
      Src: /src/postgres/src/bin/psql/common.c:1451,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:1452,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 51
    argCount: 2
    argNames:
    - query
    - elapsed_msec
    argTypes:
    - char*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1455
      start: 1349
    functionDepth: 4
    functionLinenumber: 1349
    functionLinenumberEnd: 1455
    functionName: DescribeQuery
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 1
    functionsReached:
    - appendPQExpBufferChar
    - PQresultStatus
    - PQfreemem
    - termPQExpBuffer
    - fprintf
    - PrintQueryResult
    - INSTR_TIME_SET_ZERO
    - INSTR_TIME_SUBTRACT
    - PQftype
    - strlen
    - PQdescribePrepared
    - PQnfields
    - SetResultVariables
    - PQfmod
    - appendPQExpBufferStr
    - AcceptResult
    - _
    - pg_log_info
    - PQclear
    - INSTR_TIME_SET_CURRENT
    - gettext_noop
    - PQerrorMessage
    - PQexec
    - PQescapeLiteral
    - PQfname
    - INSTR_TIME_GET_MILLISEC
    - ClearOrSaveResult
    - PQprepare
    - printfPQExpBuffer
    - appendPQExpBuffer
    - initPQExpBuffer
    linkageType: ''
    returnType: bool
    signature: bool DescribeQuery(const char *query, double *elapsed_msec)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/psql/common.c:1470,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:1471,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/psql/common.c:1494,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/common.c:1495,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/common.c:1501,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/common.c:1502,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/common.c:1527,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/common.c:1528,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1530
      start: 1465
    functionDepth: 1
    functionLinenumber: 1465
    functionLinenumberEnd: 1530
    functionName: discardAbortedPipelineResults
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - PQresultStatus
    - PQgetResult
    - Assert
    - PQclear
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      discardAbortedPipelineResults(void)'
  - BBCount: 70
    BranchProfiles: []
    Callsites:
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/bin/psql/common.c:1572,1
    - Dst: INSTR_TIME_SET_ZERO
      Src: /src/postgres/src/bin/psql/common.c:1574,1
    - Dst: PQsendClosePrepared
      Src: /src/postgres/src/bin/psql/common.c:1579,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:1580,1
    - Dst: PQsendPrepare
      Src: /src/postgres/src/bin/psql/common.c:1584,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:1585,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/common.c:1589,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/bin/psql/common.c:1590,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:1594,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/common.c:1598,1
    - Dst: PQsendQueryPrepared
      Src: /src/postgres/src/bin/psql/common.c:1599,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:1603,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/bin/psql/common.c:1607,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/bin/psql/common.c:1610,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:1611,1
    - Dst: PQsendPipelineSync
      Src: /src/postgres/src/bin/psql/common.c:1632,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:1633,1
    - Dst: PQflush
      Src: /src/postgres/src/bin/psql/common.c:1646,1
    - Dst: PQsendFlushRequest
      Src: /src/postgres/src/bin/psql/common.c:1649,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:1650,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/common.c:1670,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:1688,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/bin/psql/common.c:1690,1
    - Dst: PQsendQuery
      Src: /src/postgres/src/bin/psql/common.c:1696,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/common.c:1702,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/common.c:1704,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/common.c:1705,1
    - Dst: CheckConnection
      Src: /src/postgres/src/bin/psql/common.c:1707,1
    - Dst: SetPipelineVariables
      Src: /src/postgres/src/bin/psql/common.c:1709,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:1715,1
    - Dst: SetPipelineVariables
      Src: /src/postgres/src/bin/psql/common.c:1722,1
    - Dst: PQsetChunkedRowsMode
      Src: /src/postgres/src/bin/psql/common.c:1747,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/psql/common.c:1748,1
    - Dst: ClearOrSaveAllResults
      Src: /src/postgres/src/bin/psql/common.c:1758,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/psql/common.c:1763,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/common.c:1764,1
    - Dst: AcceptResult
      Src: /src/postgres/src/bin/psql/common.c:1776,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/psql/common.c:1782,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/common.c:1784,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/common.c:1785,1
    - Dst: CheckConnection
      Src: /src/postgres/src/bin/psql/common.c:1787,1
    - Dst: SetResultVariables
      Src: /src/postgres/src/bin/psql/common.c:1789,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:1792,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:1793,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/common.c:1797,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:1815,1
    - Dst: discardAbortedPipelineResults
      Src: /src/postgres/src/bin/psql/common.c:1828,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/psql/common.c:1831,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/bin/psql/common.c:1838,1
    - Dst: INSTR_TIME_SUBTRACT
      Src: /src/postgres/src/bin/psql/common.c:1839,1
    - Dst: INSTR_TIME_GET_MILLISEC
      Src: /src/postgres/src/bin/psql/common.c:1840,1
    - Dst: PQcmdStatus
      Src: /src/postgres/src/bin/psql/common.c:1853,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/common.c:1855,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/common.c:1856,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/common.c:1857,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/common.c:1858,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:1861,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/common.c:1864,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:1870,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/common.c:1893,1
    - Dst: exit
      Src: /src/postgres/src/bin/psql/common.c:1894,1
    - Dst: SetupGOutput
      Src: /src/postgres/src/bin/psql/common.c:1918,1
    - Dst: HandleCopyResult
      Src: /src/postgres/src/bin/psql/common.c:1934,1
    - Dst: SetupGOutput
      Src: /src/postgres/src/bin/psql/common.c:1952,1
    - Dst: PageOutput
      Src: /src/postgres/src/bin/psql/common.c:1959,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/common.c:1976,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/common.c:1977,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/common.c:1984,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/common.c:1985,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:1987,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/psql/common.c:1990,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:1991,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:1994,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/common.c:1998,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/common.c:1998,1
    - Dst: printQuery
      Src: /src/postgres/src/bin/psql/common.c:2004,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/common.c:2005,1
    - Dst: ClosePager
      Src: /src/postgres/src/bin/psql/common.c:2009,1
    - Dst: PrintQueryStatus
      Src: /src/postgres/src/bin/psql/common.c:2015,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:2021,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:2022,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/common.c:2023,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/common.c:2024,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:2029,1
    - Dst: ClosePager
      Src: /src/postgres/src/bin/psql/common.c:2036,1
    - Dst: AcceptResult
      Src: /src/postgres/src/bin/psql/common.c:2038,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/common.c:2045,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/bin/psql/common.c:2065,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:2067,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:2083,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/psql/common.c:2084,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/psql/common.c:2094,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/common.c:2095,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/psql/common.c:2100,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/bin/psql/common.c:2119,1
    - Dst: INSTR_TIME_SUBTRACT
      Src: /src/postgres/src/bin/psql/common.c:2120,1
    - Dst: INSTR_TIME_GET_MILLISEC
      Src: /src/postgres/src/bin/psql/common.c:2121,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/common.c:2140,1
    - Dst: SetupGOutput
      Src: /src/postgres/src/bin/psql/common.c:2141,1
    - Dst: PrintQueryResult
      Src: /src/postgres/src/bin/psql/common.c:2145,1
    - Dst: SetResultVariables
      Src: /src/postgres/src/bin/psql/common.c:2151,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:2153,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/common.c:2156,1
    - Dst: ClearOrSaveResult
      Src: /src/postgres/src/bin/psql/common.c:2165,1
    - Dst: ClearOrSaveAllResults
      Src: /src/postgres/src/bin/psql/common.c:2166,1
    - Dst: CloseGOutput
      Src: /src/postgres/src/bin/psql/common.c:2172,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/common.c:2177,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/common.c:2179,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/common.c:2181,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/common.c:2183,1
    - Dst: SetPipelineVariables
      Src: /src/postgres/src/bin/psql/common.c:2184,1
    - Dst: CheckConnection
      Src: /src/postgres/src/bin/psql/common.c:2187,1
    CyclomaticComplexity: 113
    EdgeCount: 113
    ICount: 257
    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: 2194
      start: 1555
    functionDepth: 4
    functionLinenumber: 1555
    functionLinenumberEnd: 2194
    functionName: ExecQueryAndProcessResults
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 2
    functionsReached:
    - PQsendPipelineSync
    - SetupGOutput
    - ClearOrSaveAllResults
    - PQpipelineStatus
    - PQresultStatus
    - PrintQueryStatus
    - pg_log_warning
    - snprintf
    - PrintQueryResult
    - PQgetResult
    - discardAbortedPipelineResults
    - exit
    - INSTR_TIME_SET_ZERO
    - INSTR_TIME_SUBTRACT
    - strlen
    - PQsendFlushRequest
    - PageOutput
    - PQpipelineSync
    - ClosePager
    - PQenterPipelineMode
    - SetResultVariables
    - PQsendQueryPrepared
    - AcceptResult
    - PQsendQuery
    - pg_log_info
    - printQuery
    - INSTR_TIME_SET_CURRENT
    - strcmp
    - CloseGOutput
    - fflush
    - PQsendClosePrepared
    - PQerrorMessage
    - PQntuples
    - SetVariable
    - PQresultErrorMessage
    - INSTR_TIME_GET_MILLISEC
    - HandleCopyResult
    - SetPipelineVariables
    - CheckConnection
    - ClearOrSaveResult
    - PQexitPipelineMode
    - Assert
    - PQsendQueryParams
    - PQsetChunkedRowsMode
    - PQcmdStatus
    - PQsendPrepare
    - PQflush
    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:2207,1
    - Dst: isspace
      Src: /src/postgres/src/bin/psql/common.c:2217,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/common.c:2244,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 27
    argCount: 1
    argNames:
    - query
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2254
      start: 2200
    functionDepth: 1
    functionLinenumber: 2200
    functionLinenumberEnd: 2254
    functionName: skip_white_space
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - isspace
    - PQmblenBounded
    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:2272,1
    - Dst: isalpha
      Src: /src/postgres/src/bin/psql/common.c:2278,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/common.c:2279,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2289,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2291,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2293,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2295,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2297,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2299,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2301,1
    - Dst: skip_white_space
      Src: /src/postgres/src/bin/psql/common.c:2306,1
    - Dst: isalpha
      Src: /src/postgres/src/bin/psql/common.c:2309,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/common.c:2310,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2312,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2322,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2324,1
    - Dst: skip_white_space
      Src: /src/postgres/src/bin/psql/common.c:2329,1
    - Dst: isalpha
      Src: /src/postgres/src/bin/psql/common.c:2331,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2336,1
    - Dst: skip_white_space
      Src: /src/postgres/src/bin/psql/common.c:2340,1
    - Dst: isalpha
      Src: /src/postgres/src/bin/psql/common.c:2343,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/common.c:2344,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2346,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2348,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2352,1
    - Dst: skip_white_space
      Src: /src/postgres/src/bin/psql/common.c:2356,1
    - Dst: isalpha
      Src: /src/postgres/src/bin/psql/common.c:2359,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/common.c:2360,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2363,1
    - Dst: skip_white_space
      Src: /src/postgres/src/bin/psql/common.c:2367,1
    - Dst: isalpha
      Src: /src/postgres/src/bin/psql/common.c:2370,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/common.c:2371,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2373,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2380,1
    - Dst: skip_white_space
      Src: /src/postgres/src/bin/psql/common.c:2384,1
    - Dst: isalpha
      Src: /src/postgres/src/bin/psql/common.c:2387,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/common.c:2388,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2391,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2402,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2403,1
    - Dst: skip_white_space
      Src: /src/postgres/src/bin/psql/common.c:2407,1
    - Dst: isalpha
      Src: /src/postgres/src/bin/psql/common.c:2410,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/common.c:2411,1
    - Dst: pg_strncasecmp
      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:2417,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2419,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2420,1
    - Dst: skip_white_space
      Src: /src/postgres/src/bin/psql/common.c:2423,1
    - Dst: isalpha
      Src: /src/postgres/src/bin/psql/common.c:2425,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/common.c:2426,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2432,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2437,1
    - Dst: skip_white_space
      Src: /src/postgres/src/bin/psql/common.c:2441,1
    - Dst: isalpha
      Src: /src/postgres/src/bin/psql/common.c:2444,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/common.c:2445,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2447,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2457,1
    - Dst: skip_white_space
      Src: /src/postgres/src/bin/psql/common.c:2461,1
    - Dst: isalpha
      Src: /src/postgres/src/bin/psql/common.c:2464,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/bin/psql/common.c:2465,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/common.c:2467,1
    CyclomaticComplexity: 70
    EdgeCount: 70
    ICount: 118
    argCount: 1
    argNames:
    - query
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2473
      start: 2264
    functionDepth: 2
    functionLinenumber: 2264
    functionLinenumberEnd: 2473
    functionName: command_no_begin
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 1
    functionsReached:
    - isalpha
    - skip_white_space
    - PQmblenBounded
    - 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:2487,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/common.c:2489,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2493
      start: 2479
    functionDepth: 1
    functionLinenumber: 2479
    functionLinenumberEnd: 2493
    functionName: is_superuser
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 1
    functionsReached:
    - strcmp
    - PQparameterStatus
    linkageType: ''
    returnType: bool
    signature: bool is_superuser(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/psql/common.c:2507,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/common.c:2509,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2513
      start: 2499
    functionDepth: 1
    functionLinenumber: 2499
    functionLinenumberEnd: 2513
    functionName: standard_strings
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - strcmp
    - PQparameterStatus
    linkageType: ''
    returnType: bool
    signature: bool standard_strings(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/psql/common.c:2527,1
    - Dst: PQuser
      Src: /src/postgres/src/bin/psql/common.c:2531,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2532
      start: 2519
    functionDepth: 1
    functionLinenumber: 2519
    functionLinenumberEnd: 2532
    functionName: session_username
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 1
    functionsReached:
    - PQuser
    - PQparameterStatus
    linkageType: ''
    returnType: char
    signature: 'char *

      session_username(void)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: get_home_path
      Src: /src/postgres/src/bin/psql/common.c:2573,1
    - Dst: getpwnam
      Src: /src/postgres/src/bin/psql/common.c:2574,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/common.c:2575,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/common.c:2578,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/common.c:2582,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/common.c:2583,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 1
    argNames:
    - filename
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2588
      start: 2540
    functionDepth: 1
    functionLinenumber: 2540
    functionLinenumberEnd: 2588
    functionName: expand_tilde
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 0
    functionsReached:
    - get_home_path
    - psprintf
    - strlcpy
    - free
    - getpwnam
    - strlen
    linkageType: ''
    returnType: void
    signature: void expand_tilde(char **filename)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/common.c:2605,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/common.c:2609,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - connstr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2614
      start: 2598
    functionDepth: 0
    functionLinenumber: 2598
    functionLinenumberEnd: 2614
    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:2632,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/common.c:2635,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/common.c:2640,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/common.c:2641,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/common.c:2642,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2657
      start: 2624
    functionDepth: 1
    functionLinenumber: 2624
    functionLinenumberEnd: 2657
    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:2671,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/common.c:2671,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - connstr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2672
      start: 2668
    functionDepth: 0
    functionLinenumber: 2668
    functionLinenumberEnd: 2672
    functionName: recognized_connection_string
    functionSourceFile: /src/postgres/src/bin/psql/common.c
    functionUses: 1
    functionsReached:
    - uri_prefix_length
    - strchr
    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:119,1
    - Dst: avlInit
      Src: /src/postgres/src/bin/psql/crosstabview.c:120,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/crosstabview.c:122,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/crosstabview.c:124,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/psql/crosstabview.c:128,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/crosstabview.c:130,1
    - Dst: indexOfColumn
      Src: /src/postgres/src/bin/psql/crosstabview.c:139,1
    - Dst: indexOfColumn
      Src: /src/postgres/src/bin/psql/crosstabview.c:149,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/crosstabview.c:157,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/psql/crosstabview.c:171,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/crosstabview.c:173,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/psql/crosstabview.c:178,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/crosstabview.c:186,1
    - Dst: indexOfColumn
      Src: /src/postgres/src/bin/psql/crosstabview.c:190,1
    - Dst: indexOfColumn
      Src: /src/postgres/src/bin/psql/crosstabview.c:200,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/crosstabview.c:211,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/crosstabview.c:217,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/crosstabview.c:218,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/crosstabview.c:222,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/crosstabview.c:223,1
    - Dst: avlMergeValue
      Src: /src/postgres/src/bin/psql/crosstabview.c:225,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/crosstabview.c:229,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/crosstabview.c:235,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/crosstabview.c:236,1
    - Dst: avlMergeValue
      Src: /src/postgres/src/bin/psql/crosstabview.c:238,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/crosstabview.c:249,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/crosstabview.c:252,1
    - Dst: avlCollectFields
      Src: /src/postgres/src/bin/psql/crosstabview.c:254,1
    - Dst: avlCollectFields
      Src: /src/postgres/src/bin/psql/crosstabview.c:255,1
    - Dst: rankSort
      Src: /src/postgres/src/bin/psql/crosstabview.c:262,1
    - Dst: printCrosstab
      Src: /src/postgres/src/bin/psql/crosstabview.c:267,1
    - Dst: avlFree
      Src: /src/postgres/src/bin/psql/crosstabview.c:273,1
    - Dst: avlFree
      Src: /src/postgres/src/bin/psql/crosstabview.c:274,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/crosstabview.c:275,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/crosstabview.c:276,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 89
    argCount: 1
    argNames:
    - res
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 279
    functionName: PrintResultInCrosstab
    functionSourceFile: /src/postgres/src/bin/psql/crosstabview.c
    functionUses: 1
    functionsReached:
    - rankSort
    - Assert
    - indexOfColumn
    - PQntuples
    - PQresultStatus
    - PQnfields
    - PQgetvalue
    - pg_malloc
    - avlFree
    - avlInit
    - avlCollectFields
    - PQgetisnull
    - avlMergeValue
    - printCrosstab
    - pg_log_error
    - pg_free
    linkageType: ''
    returnType: bool
    signature: bool PrintResultInCrosstab(const PGresult *res)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: printTableInit
      Src: /src/postgres/src/bin/psql/crosstabview.c:299,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/crosstabview.c:304,1
    - Dst: PQfname
      Src: /src/postgres/src/bin/psql/crosstabview.c:305,1
    - Dst: column_type_alignment
      Src: /src/postgres/src/bin/psql/crosstabview.c:307,1
    - Dst: PQftype
      Src: /src/postgres/src/bin/psql/crosstabview.c:307,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/crosstabview.c:315,1
    - Dst: column_type_alignment
      Src: /src/postgres/src/bin/psql/crosstabview.c:322,1
    - Dst: PQftype
      Src: /src/postgres/src/bin/psql/crosstabview.c:322,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/crosstabview.c:332,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/crosstabview.c:334,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:398,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/psql/crosstabview.c:406,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/crosstabview.c:407,1
    - Dst: printTable
      Src: /src/postgres/src/bin/psql/crosstabview.c:422,1
    - Dst: printTableCleanup
      Src: /src/postgres/src/bin/psql/crosstabview.c:426,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 49
    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: 429
      start: 285
    functionDepth: 1
    functionLinenumber: 285
    functionLinenumberEnd: 429
    functionName: printCrosstab
    functionSourceFile: /src/postgres/src/bin/psql/crosstabview.c
    functionUses: 1
    functionsReached:
    - Assert
    - printTableInit
    - printTableAddHeader
    - PQntuples
    - PQgetvalue
    - printTable
    - pg_malloc
    - printTableCleanup
    - bsearch
    - PQgetisnull
    - PQfname
    - column_type_alignment
    - pg_log_error
    - PQftype
    - pg_free
    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: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/psql/crosstabview.c:440,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - tree
    argTypes:
    - avl_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 437
    functionDepth: 1
    functionLinenumber: 437
    functionLinenumberEnd: 444
    functionName: avlInit
    functionSourceFile: /src/postgres/src/bin/psql/crosstabview.c
    functionUses: 1
    functionsReached:
    - pg_malloc0
    linkageType: ''
    returnType: void
    signature: void avlInit(avl_tree *tree)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: avlFree
      Src: /src/postgres/src/bin/psql/crosstabview.c:452,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/crosstabview.c:453,1
    - Dst: avlFree
      Src: /src/postgres/src/bin/psql/crosstabview.c:457,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/crosstabview.c:458,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/crosstabview.c:464,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/crosstabview.c:466,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - tree
    - node
    argTypes:
    - avl_tree*
    - avl_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 447
    functionDepth: 1
    functionLinenumber: 447
    functionLinenumberEnd: 468
    functionName: avlFree
    functionSourceFile: /src/postgres/src/bin/psql/crosstabview.c
    functionUses: 2
    functionsReached:
    - avlFree
    - pg_free
    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: 477
      start: 471
    functionDepth: 0
    functionLinenumber: 471
    functionLinenumberEnd: 477
    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:488,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - current
    - dir
    argTypes:
    - avl_node**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 480
    functionDepth: 1
    functionLinenumber: 480
    functionLinenumberEnd: 492
    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: 498
      start: 494
    functionDepth: 0
    functionLinenumber: 494
    functionLinenumberEnd: 498
    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:509,1
    - Dst: avlBalance
      Src: /src/postgres/src/bin/psql/crosstabview.c:515,1
    - Dst: avlRotate
      Src: /src/postgres/src/bin/psql/crosstabview.c:516,1
    - Dst: avlRotate
      Src: /src/postgres/src/bin/psql/crosstabview.c:517,1
    - Dst: avlUpdateHeight
      Src: /src/postgres/src/bin/psql/crosstabview.c:520,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - tree
    - node
    argTypes:
    - avl_tree*
    - avl_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 505
    functionDepth: 2
    functionLinenumber: 505
    functionLinenumberEnd: 521
    functionName: avlAdjustBalance
    functionSourceFile: /src/postgres/src/bin/psql/crosstabview.c
    functionUses: 0
    functionsReached:
    - avlRotate
    - avlUpdateHeight
    - avlBalance
    linkageType: ''
    returnType: void
    signature: void avlAdjustBalance(avl_tree *tree, avl_node **node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/crosstabview.c:536,1
    - Dst: pivotFieldCompare
      Src: /src/postgres/src/bin/psql/crosstabview.c:546,1
    - Dst: avlInsertNode
      Src: /src/postgres/src/bin/psql/crosstabview.c:550,1
    - Dst: avlAdjustBalance
      Src: /src/postgres/src/bin/psql/crosstabview.c:553,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: 556
      start: 528
    functionDepth: 3
    functionLinenumber: 528
    functionLinenumberEnd: 556
    functionName: avlInsertNode
    functionSourceFile: /src/postgres/src/bin/psql/crosstabview.c
    functionUses: 1
    functionsReached:
    - pg_malloc
    - avlInsertNode
    - avlAdjustBalance
    - pivotFieldCompare
    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:567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - tree
    - name
    - sort_value
    argTypes:
    - avl_tree*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 559
    functionDepth: 4
    functionLinenumber: 559
    functionLinenumberEnd: 568
    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:582,1
    - Dst: avlCollectFields
      Src: /src/postgres/src/bin/psql/crosstabview.c:584,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: 585
      start: 576
    functionDepth: 1
    functionLinenumber: 576
    functionLinenumberEnd: 585
    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
      Src: /src/postgres/src/bin/psql/crosstabview.c:594,1
    - Dst: strspn
      Src: /src/postgres/src/bin/psql/crosstabview.c:602,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/crosstabview.c:602,1
    - Dst: strspn
      Src: /src/postgres/src/bin/psql/crosstabview.c:603,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/crosstabview.c:603,1
    - Dst: atoi
      Src: /src/postgres/src/bin/psql/crosstabview.c:605,1
    - Dst: qsort
      Src: /src/postgres/src/bin/psql/crosstabview.c:616,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/crosstabview.c:623,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - num_columns
    - piv_columns
    argTypes:
    - int
    - pivot_field*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 587
    functionDepth: 1
    functionLinenumber: 587
    functionLinenumberEnd: 624
    functionName: rankSort
    functionSourceFile: /src/postgres/src/bin/psql/crosstabview.c
    functionUses: 1
    functionsReached:
    - strspn
    - qsort
    - atoi
    - pg_malloc
    - strlen
    - 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:640,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/crosstabview.c:640,1
    - Dst: atoi
      Src: /src/postgres/src/bin/psql/crosstabview.c:643,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/psql/crosstabview.c:644,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/crosstabview.c:646,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/psql/crosstabview.c:647,1
    - Dst: dequote_downcase_identifier
      Src: /src/postgres/src/bin/psql/crosstabview.c:660,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/psql/crosstabview.c:664,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/crosstabview.c:666,1
    - Dst: PQfname
      Src: /src/postgres/src/bin/psql/crosstabview.c:666,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/crosstabview.c:671,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/crosstabview.c:679,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 2
    argNames:
    - arg
    - res
    argTypes:
    - char*
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 635
    functionDepth: 1
    functionLinenumber: 635
    functionLinenumberEnd: 685
    functionName: indexOfColumn
    functionSourceFile: /src/postgres/src/bin/psql/crosstabview.c
    functionUses: 1
    functionsReached:
    - strspn
    - atoi
    - PQnfields
    - dequote_downcase_identifier
    - PQfname
    - strcmp
    - pg_log_error
    - strlen
    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:707,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 694
    functionDepth: 0
    functionLinenumber: 694
    functionLinenumberEnd: 708
    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:713,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 710
    functionDepth: 1
    functionLinenumber: 710
    functionLinenumberEnd: 714
    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:
    - fflush
    - fputs
    - rl_reset_screen_size
    - readline
    - 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
    - appendPQExpBufferStr
    - strlen
    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: 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:
    - pg_strdup
    - add_history
    - resetPQExpBuffer
    - strcmp
    - strlen
    - free
    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:
    - createPQExpBuffer
    - pg_strdup
    - ferror
    - pg_log_error
    - appendPQExpBufferStr
    - resetPQExpBuffer
    - PQExpBufferBroken
    - fgets
    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:
    - getenv
    - get_home_path
    - initialize_readline
    - rl_initialize
    - using_history
    - decode_history
    - read_history
    - pg_strdup
    - atexit
    - psprintf
    - expand_tilde
    - strlen
    - rl_variable_bind
    - GetVariable
    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:
    - Min
    - encode_history
    - history_truncate_file
    - append_history
    - close
    - open
    - stifle_history
    - write_history
    - Max
    - strcmp
    - pg_log_error
    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:
    - PageOutput
    - ClosePager
    - fclose
    - fprintf
    - fopen
    - BEGIN_ITERATE_HISTORY
    - END_ITERATE_HISTORY
    - pg_log_error
    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:
    - free
    - psprintf
    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
      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:
    - free_copy_options
    - strlen
    - pg_strdup
    - strip_quotes
    - pg_malloc0
    - expand_tilde
    - pg_strcasecmp
    - pg_log_error
    - standard_strings
    - xstrcat
    - strtokx
    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:
    - free_copy_options
    - SendQuery
    - termPQExpBuffer
    - fstat
    - S_ISDIR
    - appendPQExpBufferStr
    - fopen
    - fileno
    - free
    - parse_slash_copy
    - disable_sigpipe_trap
    - pg_log_error
    - SetShellResultVariables
    - restore_sigpipe_trap
    - fflush
    - pclose
    - fclose
    - canonicalize_path_enc
    - popen
    - wait_result_to_str
    - printfPQExpBuffer
    - initPQExpBuffer
    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:
    - fflush
    - PQerrorMessage
    - PQresultStatus
    - PQfreemem
    - fwrite
    - PQgetResult
    - pg_log_info
    - PQgetCopyData
    - pg_log_error
    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:
    - PQresultStatus
    - fread
    - PQgetResult
    - sigsetjmp
    - strlen
    - PQputCopyEnd
    - puts
    - memcmp
    - _
    - fileno
    - PQclear
    - pg_log_info
    - clearerr
    - fflush
    - PQerrorMessage
    - fputs
    - ferror
    - isatty
    - fgets
    - get_prompt
    - PQprotocolVersion
    - PQputCopyData
    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_end
    - vfprintf
    - va_start
    - 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:
    - PQtransactionStatus
    - pg_log_error
    - PSQLexec
    - 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:
    - start_lo_xact
    - PQerrorMessage
    - lo_export
    - finish_lo_xact
    - atooid
    - fail_lo_xact
    - SetCancelConn
    - ResetCancelConn
    - pg_log_info
    - print_lo_result
    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: 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: 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:
    - start_lo_xact
    - PQerrorMessage
    - pg_malloc_extended
    - sprintf
    - finish_lo_xact
    - print_lo_result
    - fail_lo_xact
    - SetVariable
    - SetCancelConn
    - ResetCancelConn
    - PSQLexec
    - PQescapeStringConn
    - free
    - pg_log_info
    - PQclear
    - lo_import
    - strlen
    - strcpy
    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:
    - start_lo_xact
    - PQerrorMessage
    - finish_lo_xact
    - atooid
    - fail_lo_xact
    - SetCancelConn
    - ResetCancelConn
    - pg_log_info
    - print_lo_result
    - lo_unlink
    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: 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: 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: 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: 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: 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: 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:
    - appendPQExpBufferChar
    - psql_scan_set_passthrough
    - SendQuery
    - gets_interactive
    - pg_append_history
    - conditional_stack_create
    - resetPQExpBuffer
    - conditional_stack_pop
    - pg_strncasecmp
    - gets_fromFile
    - putc
    - sigsetjmp
    - strlen
    - pg_send_history
    - createPQExpBuffer
    - puts
    - memmove
    - psql_scan_create
    - _
    - PQExpBufferBroken
    - psql_scan_finish
    - pg_log_error
    - conditional_stack_empty
    - fflush
    - fputs
    - ferror
    - psql_scan_setup
    - psql_scan
    - conditional_active
    - pg_fatal
    - isspace
    - strncmp
    - standard_strings
    - printf
    - Assert
    - get_prompt
    - psql_scan_reset
    - pg_strdup
    - psql_scan_in_quote
    - HandleSlashCmds
    - free
    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
      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
    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_strcasecmp
    - pg_log_error
    - 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:
    - strtol
    - pg_log_error
    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:241,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/variables.c:247,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 30
    argCount: 5
    argNames:
    - value
    - name
    - result
    - min
    - max
    argTypes:
    - char*
    - char*
    - double*
    - double
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 250
    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:266,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 1
    argNames:
    - space
    argTypes:
    - VariableSpace
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 270
    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:289,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/variables.c:294,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/variables.c:302,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/variables.c:315,1
    - Dst: struct _variable*::substitute_hook
      Src: /src/postgres/src/bin/psql/variables.c:319,1
    - Dst: struct _variable*::assign_hook
      Src: /src/postgres/src/bin/psql/variables.c:322,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/variables.c:328,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/variables.c:340,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/variables.c:341,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/variables.c:345,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/variables.c:356,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/variables.c:357,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/variables.c:358,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 41
    argCount: 3
    argNames:
    - space
    - name
    - value
    argTypes:
    - VariableSpace
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 365
    functionName: SetVariable
    functionSourceFile: /src/postgres/src/bin/psql/variables.c
    functionUses: 8
    functionsReached:
    - valid_variable_name
    - struct _variable*::substitute_hook
    - pg_strdup
    - pg_malloc
    - strcmp
    - pg_log_error
    - struct _variable*::assign_hook
    - free
    - pg_free
    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:394,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/variables.c:401,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/variables.c:419,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/variables.c:420,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 4
    argNames:
    - space
    - name
    - shook
    - ahook
    argTypes:
    - VariableSpace
    - char*
    - VariableSubstituteHook
    - VariableAssignHook
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 383
    functionDepth: 1
    functionLinenumber: 383
    functionLinenumberEnd: 430
    functionName: SetVariableHooks
    functionSourceFile: /src/postgres/src/bin/psql/variables.c
    functionUses: 0
    functionsReached:
    - valid_variable_name
    - strcmp
    - pg_strdup
    - pg_malloc
    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:441,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/variables.c:442,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/variables.c:446,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - space
    - name
    argTypes:
    - VariableSpace
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 436
    functionDepth: 1
    functionLinenumber: 436
    functionLinenumberEnd: 456
    functionName: VariableHasHook
    functionSourceFile: /src/postgres/src/bin/psql/variables.c
    functionUses: 1
    functionsReached:
    - strcmp
    - Assert
    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:464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - space
    - name
    argTypes:
    - VariableSpace
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 461
    functionDepth: 2
    functionLinenumber: 461
    functionLinenumberEnd: 465
    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:476,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - space
    - name
    argTypes:
    - VariableSpace
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 473
    functionDepth: 2
    functionLinenumber: 473
    functionLinenumberEnd: 477
    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:488,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - name
    - value
    - suggestions
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 491
    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: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:234,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:235,1
    - Dst: psql_scan_slash_command
      Src: /src/postgres/src/bin/psql/command.c:238,1
    - Dst: exec_command
      Src: /src/postgres/src/bin/psql/command.c:241,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:245,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/psql/command.c:247,1
    - Dst: conditional_active
      Src: /src/postgres/src/bin/psql/command.c:258,1
    - Dst: conditional_stack_push
      Src: /src/postgres/src/bin/psql/command.c:260,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:261,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/psql/command.c:265,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:266,1
    - Dst: conditional_stack_pop
      Src: /src/postgres/src/bin/psql/command.c:268,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:273,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:275,1
    - Dst: psql_scan_slash_command_end
      Src: /src/postgres/src/bin/psql/command.c:279,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:281,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/command.c:284,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 4
    argNames:
    - scan_state
    - cstack
    - query_buf
    - previous_buf
    argTypes:
    - PsqlScanState
    - ConditionalStack
    - PQExpBuffer
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 287
    functionName: HandleSlashCmds
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - Assert
    - exec_command
    - fflush
    - psql_scan_slash_option
    - pg_log_warning
    - psql_scan_slash_command_end
    - pg_log_error_hint
    - conditional_active
    - conditional_stack_push
    - conditional_stack_pop
    - pg_log_error
    - free
    - psql_scan_slash_command
    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: 66
    BranchProfiles: []
    Callsites:
    - Dst: conditional_active
      Src: /src/postgres/src/bin/psql/command.c:305,1
    - Dst: is_branching_command
      Src: /src/postgres/src/bin/psql/command.c:315,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/psql/command.c:317,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:321,1
    - Dst: exec_command_a
      Src: /src/postgres/src/bin/psql/command.c:322,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:323,1
    - Dst: exec_command_bind
      Src: /src/postgres/src/bin/psql/command.c:324,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:325,1
    - Dst: exec_command_bind_named
      Src: /src/postgres/src/bin/psql/command.c:326,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:327,1
    - Dst: exec_command_C
      Src: /src/postgres/src/bin/psql/command.c:328,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:329,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:329,1
    - Dst: exec_command_connect
      Src: /src/postgres/src/bin/psql/command.c:330,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:331,1
    - Dst: exec_command_cd
      Src: /src/postgres/src/bin/psql/command.c:332,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:333,1
    - Dst: exec_command_close_prepared
      Src: /src/postgres/src/bin/psql/command.c:334,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:335,1
    - Dst: exec_command_conninfo
      Src: /src/postgres/src/bin/psql/command.c:336,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/command.c:337,1
    - Dst: exec_command_copy
      Src: /src/postgres/src/bin/psql/command.c:338,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:339,1
    - Dst: exec_command_copyright
      Src: /src/postgres/src/bin/psql/command.c:340,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:341,1
    - Dst: exec_command_crosstabview
      Src: /src/postgres/src/bin/psql/command.c:342,1
    - Dst: exec_command_d
      Src: /src/postgres/src/bin/psql/command.c:344,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:345,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:345,1
    - Dst: exec_command_edit
      Src: /src/postgres/src/bin/psql/command.c:346,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:348,1
    - Dst: exec_command_ef_ev
      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_ef_ev
      Src: /src/postgres/src/bin/psql/command.c:351,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:352,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:352,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:353,1
    - Dst: exec_command_echo
      Src: /src/postgres/src/bin/psql/command.c:354,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:355,1
    - Dst: exec_command_elif
      Src: /src/postgres/src/bin/psql/command.c:356,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:357,1
    - Dst: exec_command_else
      Src: /src/postgres/src/bin/psql/command.c:358,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:359,1
    - Dst: exec_command_endif
      Src: /src/postgres/src/bin/psql/command.c:360,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:361,1
    - Dst: exec_command_endpipeline
      Src: /src/postgres/src/bin/psql/command.c:362,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:363,1
    - Dst: exec_command_encoding
      Src: /src/postgres/src/bin/psql/command.c:364,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:365,1
    - Dst: exec_command_errverbose
      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_f
      Src: /src/postgres/src/bin/psql/command.c:368,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:369,1
    - Dst: exec_command_flush
      Src: /src/postgres/src/bin/psql/command.c:370,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:371,1
    - Dst: exec_command_flushrequest
      Src: /src/postgres/src/bin/psql/command.c:372,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:373,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:373,1
    - Dst: exec_command_g
      Src: /src/postgres/src/bin/psql/command.c:374,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:375,1
    - Dst: exec_command_gdesc
      Src: /src/postgres/src/bin/psql/command.c:376,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:377,1
    - Dst: exec_command_getenv
      Src: /src/postgres/src/bin/psql/command.c:378,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:379,1
    - Dst: exec_command_getresults
      Src: /src/postgres/src/bin/psql/command.c:380,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:381,1
    - Dst: exec_command_gexec
      Src: /src/postgres/src/bin/psql/command.c:382,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:383,1
    - Dst: exec_command_gset
      Src: /src/postgres/src/bin/psql/command.c:384,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:385,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:385,1
    - Dst: exec_command_help
      Src: /src/postgres/src/bin/psql/command.c:386,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:387,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:387,1
    - Dst: exec_command_html
      Src: /src/postgres/src/bin/psql/command.c:388,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:389,1
    - Dst: strcmp
      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_include
      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_if
      Src: /src/postgres/src/bin/psql/command.c:393,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:394,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:394,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:395,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:395,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:396,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:396,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:397,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:397,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:398,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:398,1
    - Dst: exec_command_list
      Src: /src/postgres/src/bin/psql/command.c:399,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:400,1
    - Dst: exec_command_lo
      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_out
      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_print
      Src: /src/postgres/src/bin/psql/command.c:405,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:407,1
    - Dst: exec_command_parse
      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_password
      Src: /src/postgres/src/bin/psql/command.c:410,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:411,1
    - Dst: exec_command_prompt
      Src: /src/postgres/src/bin/psql/command.c:412,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:413,1
    - Dst: exec_command_pset
      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_quit
      Src: /src/postgres/src/bin/psql/command.c:416,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:417,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:417,1
    - Dst: exec_command_reset
      Src: /src/postgres/src/bin/psql/command.c:418,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:419,1
    - Dst: exec_command_s
      Src: /src/postgres/src/bin/psql/command.c:420,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:421,1
    - Dst: exec_command_sendpipeline
      Src: /src/postgres/src/bin/psql/command.c:422,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:423,1
    - Dst: exec_command_set
      Src: /src/postgres/src/bin/psql/command.c:424,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:425,1
    - Dst: exec_command_setenv
      Src: /src/postgres/src/bin/psql/command.c:426,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:427,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:427,1
    - Dst: exec_command_sf_sv
      Src: /src/postgres/src/bin/psql/command.c:428,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:429,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:429,1
    - Dst: exec_command_sf_sv
      Src: /src/postgres/src/bin/psql/command.c:430,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:431,1
    - Dst: exec_command_startpipeline
      Src: /src/postgres/src/bin/psql/command.c:432,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:433,1
    - Dst: exec_command_syncpipeline
      Src: /src/postgres/src/bin/psql/command.c:434,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:435,1
    - Dst: exec_command_t
      Src: /src/postgres/src/bin/psql/command.c:436,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:437,1
    - Dst: exec_command_T
      Src: /src/postgres/src/bin/psql/command.c:438,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:439,1
    - Dst: exec_command_timing
      Src: /src/postgres/src/bin/psql/command.c:440,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:441,1
    - Dst: exec_command_unset
      Src: /src/postgres/src/bin/psql/command.c:442,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:443,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:443,1
    - Dst: exec_command_write
      Src: /src/postgres/src/bin/psql/command.c:444,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:446,1
    - Dst: exec_command_watch
      Src: /src/postgres/src/bin/psql/command.c:447,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:449,1
    - Dst: exec_command_x
      Src: /src/postgres/src/bin/psql/command.c:450,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:451,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:452,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:452,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:453,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:453,1
    - Dst: exec_command_z
      Src: /src/postgres/src/bin/psql/command.c:454,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:455,1
    - Dst: exec_command_shell_escape
      Src: /src/postgres/src/bin/psql/command.c:456,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:457,1
    - Dst: exec_command_slash_command_help
      Src: /src/postgres/src/bin/psql/command.c:458,1
    - Dst: copy_previous_query
      Src: /src/postgres/src/bin/psql/command.c:468,1
    CyclomaticComplexity: 97
    EdgeCount: 97
    ICount: 134
    argCount: 5
    argNames:
    - cmd
    - scan_state
    - cstack
    - query_buf
    - previous_buf
    argTypes:
    - char*
    - PsqlScanState
    - ConditionalStack
    - PQExpBuffer
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 471
    functionName: exec_command
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - exec_command_sendpipeline
    - exec_command_getresults
    - exec_command_sf_sv
    - exec_command_errverbose
    - exec_command_crosstabview
    - pg_log_warning
    - exec_command_help
    - exec_command_startpipeline
    - exec_command_timing
    - exec_command_reset
    - exec_command_syncpipeline
    - exec_command_ef_ev
    - exec_command_cd
    - exec_command_C
    - exec_command_x
    - exec_command_copyright
    - exec_command_conninfo
    - exec_command_elif
    - is_branching_command
    - exec_command_html
    - exec_command_include
    - exec_command_edit
    - exec_command_if
    - exec_command_endpipeline
    - exec_command_d
    - exec_command_g
    - exec_command_password
    - exec_command_prompt
    - exec_command_t
    - exec_command_shell_escape
    - exec_command_gdesc
    - exec_command_z
    - strcmp
    - exec_command_s
    - exec_command_close_prepared
    - exec_command_write
    - exec_command_lo
    - exec_command_parse
    - exec_command_a
    - exec_command_copy
    - exec_command_encoding
    - exec_command_setenv
    - exec_command_f
    - copy_previous_query
    - conditional_active
    - exec_command_set
    - exec_command_gexec
    - pg_strcasecmp
    - exec_command_echo
    - exec_command_getenv
    - exec_command_gset
    - strncmp
    - exec_command_flushrequest
    - exec_command_out
    - exec_command_list
    - exec_command_unset
    - exec_command_watch
    - exec_command_slash_command_help
    - exec_command_pset
    - exec_command_endif
    - exec_command_T
    - exec_command_bind
    - exec_command_flush
    - exec_command_quit
    - exec_command_connect
    - exec_command_print
    - exec_command_bind_named
    - exec_command_else
    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:487,1
    - Dst: do_pset
      Src: /src/postgres/src/bin/psql/command.c:489,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 479
    functionDepth: 1
    functionLinenumber: 479
    functionLinenumberEnd: 493
    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:509,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:511,1
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/psql/command.c:517,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:526,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 498
    functionDepth: 2
    functionLinenumber: 498
    functionLinenumberEnd: 529
    functionName: exec_command_bind
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - psql_scan_slash_option
    - clean_extended_state
    - ignore_slash_options
    - pg_realloc_array
    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:546,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:549,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:552,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:561,1
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/psql/command.c:567,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:575,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 534
    functionDepth: 2
    functionLinenumber: 534
    functionLinenumberEnd: 578
    functionName: exec_command_bind_named
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ignore_slash_options
    - psql_scan_slash_option
    - clean_extended_state
    - 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:590,1
    - Dst: do_pset
      Src: /src/postgres/src/bin/psql/command.c:593,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:594,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:597,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 583
    functionDepth: 1
    functionLinenumber: 583
    functionLinenumberEnd: 600
    functionName: exec_command_C
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - psql_scan_slash_option
    - ignore_slash_options
    - free
    - do_pset
    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:630,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:631,1
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/command.c:635,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:641,1
    - Dst: read_connect_arg
      Src: /src/postgres/src/bin/psql/command.c:642,1
    - Dst: read_connect_arg
      Src: /src/postgres/src/bin/psql/command.c:648,1
    - Dst: read_connect_arg
      Src: /src/postgres/src/bin/psql/command.c:649,1
    - Dst: read_connect_arg
      Src: /src/postgres/src/bin/psql/command.c:650,1
    - Dst: do_connect
      Src: /src/postgres/src/bin/psql/command.c:652,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:654,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:655,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:656,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:658,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:661,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 616
    functionDepth: 2
    functionLinenumber: 616
    functionLinenumberEnd: 664
    functionName: exec_command_connect
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - read_connect_arg
    - do_connect
    - ignore_slash_options
    - strncmp
    - ParseVariableBool
    - free
    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:676,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/command.c:686,1
    - Dst: geteuid
      Src: /src/postgres/src/bin/psql/command.c:689,1
    - Dst: getpwuid
      Src: /src/postgres/src/bin/psql/command.c:693,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:698,1
    - Dst: strerror
      Src: /src/postgres/src/bin/psql/command.c:700,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:700,1
    - Dst: chdir
      Src: /src/postgres/src/bin/psql/command.c:715,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:717,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:722,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:725,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 669
    functionDepth: 1
    functionLinenumber: 669
    functionLinenumberEnd: 728
    functionName: exec_command_cd
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - getenv
    - ignore_slash_options
    - getpwuid
    - chdir
    - psql_scan_slash_option
    - strerror
    - _
    - free
    - pg_log_error
    - geteuid
    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:740,1
    - Dst: clean_extended_state
      Src: /src/postgres/src/bin/psql/command.c:743,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:747,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:758,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 733
    functionDepth: 2
    functionLinenumber: 733
    functionLinenumberEnd: 761
    functionName: exec_command_close_prepared
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - psql_scan_slash_option
    - clean_extended_state
    - pg_log_error
    - ignore_slash_options
    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:787,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:790,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:790,1
    - Dst: PQhost
      Src: /src/postgres/src/bin/psql/command.c:795,1
    - Dst: PQhostaddr
      Src: /src/postgres/src/bin/psql/command.c:796,1
    - Dst: PQfullProtocolVersion
      Src: /src/postgres/src/bin/psql/command.c:797,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/command.c:798,1
    - Dst: PQsslInUse
      Src: /src/postgres/src/bin/psql/command.c:800,1
    - Dst: PQconnectionUsedPassword
      Src: /src/postgres/src/bin/psql/command.c:801,1
    - Dst: PQconnectionUsedGSSAPI
      Src: /src/postgres/src/bin/psql/command.c:802,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/command.c:803,1
    - Dst: PQbackendPID
      Src: /src/postgres/src/bin/psql/command.c:803,1
    - Dst: is_unixsock_path
      Src: /src/postgres/src/bin/psql/command.c:806,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:807,1
    - Dst: printTableInit
      Src: /src/postgres/src/bin/psql/command.c:818,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:818,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/command.c:819,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:819,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/bin/psql/command.c:820,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:820,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:823,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:823,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:824,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:827,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:827,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:828,1
    - Dst: PQuser
      Src: /src/postgres/src/bin/psql/command.c:828,1
    - Dst: is_unixsock_path
      Src: /src/postgres/src/bin/psql/command.c:831,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:836,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:836,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:837,1
    - Dst: printTableAddCell
      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:842,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:847,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:847,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:848,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:851,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:851,1
    - Dst: printTableAddCell
      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: PQport
      Src: /src/postgres/src/bin/psql/command.c:858,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:861,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:861,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:862,1
    - Dst: PQoptions
      Src: /src/postgres/src/bin/psql/command.c:862,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:865,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:865,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:866,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:869,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:869,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:870,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:870,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:870,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:873,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:873,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:874,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:874,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:874,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:877,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:877,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:878,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:881,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:881,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: _
      Src: /src/postgres/src/bin/psql/command.c:882,1
    - Dst: PQsslAttribute
      Src: /src/postgres/src/bin/psql/command.c:894,1
    - Dst: PQsslAttribute
      Src: /src/postgres/src/bin/psql/command.c:895,1
    - Dst: PQsslAttribute
      Src: /src/postgres/src/bin/psql/command.c:896,1
    - Dst: PQsslAttribute
      Src: /src/postgres/src/bin/psql/command.c:897,1
    - Dst: PQsslAttribute
      Src: /src/postgres/src/bin/psql/command.c:898,1
    - Dst: PQsslAttribute
      Src: /src/postgres/src/bin/psql/command.c:899,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:901,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:901,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:904,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:904,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:905,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:905,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:907,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:907,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:908,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:908,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:910,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:910,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:911,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:911,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:913,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:913,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:914,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:914,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:915,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:915,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:917,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:917,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:918,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:918,1
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/psql/command.c:921,1
    - Dst: printTableAddCell
      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: PQparameterStatus
      Src: /src/postgres/src/bin/psql/command.c:925,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:926,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/bin/psql/command.c:927,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:927,1
    - Dst: printTable
      Src: /src/postgres/src/bin/psql/command.c:929,1
    - Dst: printTableCleanup
      Src: /src/postgres/src/bin/psql/command.c:930,1
    - Dst: pfree
      Src: /src/postgres/src/bin/psql/command.c:932,1
    - Dst: pfree
      Src: /src/postgres/src/bin/psql/command.c:933,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 91
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 766
    functionDepth: 1
    functionLinenumber: 766
    functionLinenumberEnd: 936
    functionName: exec_command_conninfo
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - PQhost
    - printTableAddCell
    - printTableAddHeader
    - PQbackendPID
    - PQoptions
    - PQport
    - psprintf
    - PQconnectionUsedGSSAPI
    - pfree
    - PQsslInUse
    - is_unixsock_path
    - _
    - PQuser
    - strcmp
    - printTableInit
    - PQhostaddr
    - PQfullProtocolVersion
    - printTable
    - PQdb
    - printf
    - PQsslAttribute
    - 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:948,1
    - Dst: do_copy
      Src: /src/postgres/src/bin/psql/command.c:951,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:952,1
    - Dst: ignore_slash_whole_line
      Src: /src/postgres/src/bin/psql/command.c:955,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 941
    functionDepth: 4
    functionLinenumber: 941
    functionLinenumberEnd: 958
    functionName: exec_command_copy
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - psql_scan_slash_option
    - free
    - ignore_slash_whole_line
    - do_copy
    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:967,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 963
    functionDepth: 1
    functionLinenumber: 963
    functionLinenumberEnd: 970
    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:984,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:985,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:991,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 994
      start: 975
    functionDepth: 1
    functionLinenumber: 975
    functionLinenumberEnd: 994
    functionName: exec_command_crosstabview
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - psql_scan_slash_option
    - ignore_slash_options
    - lengthof
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_crosstabview(PsqlScanState scan_state,
      bool active_branch)
  - BBCount: 88
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:1013,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:1016,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:1017,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:1026,1
    - Dst: describeTableDetails
      Src: /src/postgres/src/bin/psql/command.c:1035,1
    - Dst: listTables
      Src: /src/postgres/src/bin/psql/command.c:1038,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:1045,1
    - Dst: describeAccessMethods
      Src: /src/postgres/src/bin/psql/command.c:1052,1
    - Dst: listOperatorClasses
      Src: /src/postgres/src/bin/psql/command.c:1055,1
    - Dst: listOperatorFamilies
      Src: /src/postgres/src/bin/psql/command.c:1058,1
    - Dst: listOpFamilyOperators
      Src: /src/postgres/src/bin/psql/command.c:1061,1
    - Dst: listOpFamilyFunctions
      Src: /src/postgres/src/bin/psql/command.c:1064,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1071,1
    - Dst: describeAggregates
      Src: /src/postgres/src/bin/psql/command.c:1075,1
    - Dst: describeTablespaces
      Src: /src/postgres/src/bin/psql/command.c:1078,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:1081,1
    - Dst: describeConfigurationParameters
      Src: /src/postgres/src/bin/psql/command.c:1082,1
    - Dst: listConversions
      Src: /src/postgres/src/bin/psql/command.c:1086,1
    - Dst: listCasts
      Src: /src/postgres/src/bin/psql/command.c:1091,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:1094,1
    - Dst: listDefaultACLs
      Src: /src/postgres/src/bin/psql/command.c:1095,1
    - Dst: objectDescription
      Src: /src/postgres/src/bin/psql/command.c:1097,1
    - Dst: listDomains
      Src: /src/postgres/src/bin/psql/command.c:1100,1
    - Dst: exec_command_dfo
      Src: /src/postgres/src/bin/psql/command.c:1114,1
    - Dst: describeRoles
      Src: /src/postgres/src/bin/psql/command.c:1124,1
    - Dst: listLargeObjects
      Src: /src/postgres/src/bin/psql/command.c:1127,1
    - Dst: listLanguages
      Src: /src/postgres/src/bin/psql/command.c:1130,1
    - Dst: listSchemas
      Src: /src/postgres/src/bin/psql/command.c:1133,1
    - Dst: exec_command_dfo
      Src: /src/postgres/src/bin/psql/command.c:1136,1
    - Dst: listCollations
      Src: /src/postgres/src/bin/psql/command.c:1140,1
    - Dst: permissionsList
      Src: /src/postgres/src/bin/psql/command.c:1143,1
    - Dst: listPartitionedTables
      Src: /src/postgres/src/bin/psql/command.c:1155,1
    - Dst: describeTypes
      Src: /src/postgres/src/bin/psql/command.c:1164,1
    - Dst: listTables
      Src: /src/postgres/src/bin/psql/command.c:1172,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:1180,1
    - Dst: listDbRoleSettings
      Src: /src/postgres/src/bin/psql/command.c:1182,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1184,1
    - Dst: describeRoleGrants
      Src: /src/postgres/src/bin/psql/command.c:1187,1
    - Dst: describePublications
      Src: /src/postgres/src/bin/psql/command.c:1196,1
    - Dst: listPublications
      Src: /src/postgres/src/bin/psql/command.c:1198,1
    - Dst: describeSubscriptions
      Src: /src/postgres/src/bin/psql/command.c:1201,1
    - Dst: describeRoles
      Src: /src/postgres/src/bin/psql/command.c:1208,1
    - Dst: listTSConfigs
      Src: /src/postgres/src/bin/psql/command.c:1216,1
    - Dst: listTSParsers
      Src: /src/postgres/src/bin/psql/command.c:1219,1
    - Dst: listTSDictionaries
      Src: /src/postgres/src/bin/psql/command.c:1222,1
    - Dst: listTSTemplates
      Src: /src/postgres/src/bin/psql/command.c:1225,1
    - Dst: listForeignServers
      Src: /src/postgres/src/bin/psql/command.c:1236,1
    - Dst: listUserMappings
      Src: /src/postgres/src/bin/psql/command.c:1239,1
    - Dst: listForeignDataWrappers
      Src: /src/postgres/src/bin/psql/command.c:1242,1
    - Dst: listForeignTables
      Src: /src/postgres/src/bin/psql/command.c:1245,1
    - Dst: listExtensionContents
      Src: /src/postgres/src/bin/psql/command.c:1254,1
    - Dst: listExtensions
      Src: /src/postgres/src/bin/psql/command.c:1256,1
    - Dst: listExtendedStats
      Src: /src/postgres/src/bin/psql/command.c:1259,1
    - Dst: listEventTriggers
      Src: /src/postgres/src/bin/psql/command.c:1262,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1271,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:1274,1
    CyclomaticComplexity: 73
    EdgeCount: 73
    ICount: 221
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1280
      start: 999
    functionDepth: 3
    functionLinenumber: 999
    functionLinenumberEnd: 1280
    functionName: exec_command_d
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - describeTypes
    - listTSTemplates
    - listSchemas
    - listCasts
    - listExtensionContents
    - listConversions
    - describeAggregates
    - describeSubscriptions
    - listPublications
    - listTSDictionaries
    - describeTablespaces
    - describeAccessMethods
    - listExtendedStats
    - listDefaultACLs
    - describePublications
    - listLargeObjects
    - listExtensions
    - listOperatorFamilies
    - describeConfigurationParameters
    - exec_command_dfo
    - listForeignServers
    - listTables
    - listOperatorClasses
    - ignore_slash_options
    - describeRoleGrants
    - listOpFamilyFunctions
    - listCollations
    - objectDescription
    - listUserMappings
    - listLanguages
    - listOpFamilyOperators
    - strncmp
    - listForeignDataWrappers
    - listTSParsers
    - listForeignTables
    - psql_scan_slash_option
    - listDomains
    - listDbRoleSettings
    - listEventTriggers
    - listPartitionedTables
    - permissionsList
    - describeRoles
    - listTSConfigs
    - describeTableDetails
    - free
    - strchr
    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:1297,1
    - Dst: describeFunctions
      Src: /src/postgres/src/bin/psql/command.c:1307,1
    - Dst: describeOperators
      Src: /src/postgres/src/bin/psql/command.c:1311,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1316,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: 1319
      start: 1283
    functionDepth: 3
    functionLinenumber: 1283
    functionLinenumberEnd: 1319
    functionName: exec_command_dfo
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - psql_scan_slash_option
    - free
    - describeOperators
    - describeFunctions
    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:1335,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:1344,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:1349,1
    - Dst: strspn
      Src: /src/postgres/src/bin/psql/command.c:1355,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:1355,1
    - Dst: atoi
      Src: /src/postgres/src/bin/psql/command.c:1365,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:1368,1
    - Dst: expand_tilde
      Src: /src/postgres/src/bin/psql/command.c:1376,1
    - Dst: canonicalize_path_enc
      Src: /src/postgres/src/bin/psql/command.c:1379,1
    - Dst: copy_previous_query
      Src: /src/postgres/src/bin/psql/command.c:1390,1
    - Dst: do_edit
      Src: /src/postgres/src/bin/psql/command.c:1394,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:1405,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1407,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1408,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:1412,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: 1415
      start: 1325
    functionDepth: 2
    functionLinenumber: 1325
    functionLinenumberEnd: 1415
    functionName: exec_command_edit
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - strspn
    - ignore_slash_options
    - atoi
    - psql_scan_slash_option
    - copy_previous_query
    - canonicalize_path_enc
    - resetPQExpBuffer
    - free
    - expand_tilde
    - do_edit
    - pg_log_error
    - strlen
    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:1429,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:1436,1
    - Dst: strip_lineno_from_objdesc
      Src: /src/postgres/src/bin/psql/command.c:1444,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:1453,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:1455,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:1463,1
    - Dst: lookup_object_oid
      Src: /src/postgres/src/bin/psql/command.c:1468,1
    - Dst: get_create_object_cmd
      Src: /src/postgres/src/bin/psql/command.c:1473,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:1493,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:1494,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:1495,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:1499,1
    - Dst: do_edit
      Src: /src/postgres/src/bin/psql/command.c:1511,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/command.c:1514,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:1514,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:1524,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1526,1
    - Dst: ignore_slash_whole_line
      Src: /src/postgres/src/bin/psql/command.c:1529,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: 1532
      start: 1421
    functionDepth: 1
    functionLinenumber: 1421
    functionLinenumberEnd: 1532
    functionName: exec_command_ef_ev
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ignore_slash_whole_line
    - psql_scan_slash_option
    - strip_lineno_from_objdesc
    - puts
    - appendPQExpBufferStr
    - resetPQExpBuffer
    - _
    - lookup_object_oid
    - do_edit
    - get_create_object_cmd
    - pg_log_error
    - strncmp
    - free
    - strchr
    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:1548,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:1550,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:1555,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:1558,1
    - Dst: fputc
      Src: /src/postgres/src/bin/psql/command.c:1565,1
    - Dst: fputs
      Src: /src/postgres/src/bin/psql/command.c:1566,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1568,1
    - Dst: fputs
      Src: /src/postgres/src/bin/psql/command.c:1571,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:1574,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1577
      start: 1537
    functionDepth: 1
    functionLinenumber: 1537
    functionLinenumberEnd: 1577
    functionName: exec_command_echo
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ignore_slash_options
    - fputs
    - psql_scan_slash_option
    - fputc
    - strcmp
    - free
    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:1587,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/command.c:1593,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/psql/command.c:1593,1
    - Dst: PQsetClientEncoding
      Src: /src/postgres/src/bin/psql/command.c:1598,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:1599,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/psql/command.c:1603,1
    - Dst: setFmtEncoding
      Src: /src/postgres/src/bin/psql/command.c:1605,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:1606,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/psql/command.c:1607,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1609,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:1613,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1616
      start: 1582
    functionDepth: 2
    functionLinenumber: 1582
    functionLinenumberEnd: 1616
    functionName: exec_command_encoding
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ignore_slash_options
    - PQclientEncoding
    - pg_encoding_to_char
    - psql_scan_slash_option
    - PQsetClientEncoding
    - SetVariable
    - puts
    - setFmtEncoding
    - pg_log_error
    - free
    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:1630,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:1635,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/psql/command.c:1636,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/command.c:1639,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:1639,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/command.c:1642,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:1642,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1646
      start: 1621
    functionDepth: 1
    functionLinenumber: 1621
    functionLinenumberEnd: 1646
    functionName: exec_command_errverbose
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - PQfreemem
    - puts
    - _
    - PQresultVerboseErrorMessage
    - 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:1658,1
    - Dst: do_pset
      Src: /src/postgres/src/bin/psql/command.c:1661,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1662,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:1665,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1668
      start: 1651
    functionDepth: 1
    functionLinenumber: 1651
    functionLinenumberEnd: 1668
    functionName: exec_command_f
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - psql_scan_slash_option
    - ignore_slash_options
    - free
    - do_pset
    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:1684,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1687
      start: 1673
    functionDepth: 1
    functionLinenumber: 1673
    functionLinenumberEnd: 1687
    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:1703,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1706
      start: 1692
    functionDepth: 1
    functionLinenumber: 1692
    functionLinenumberEnd: 1706
    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:1727,1
    - Dst: process_command_g_options
      Src: /src/postgres/src/bin/psql/command.c:1733,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1735,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:1737,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/command.c:1743,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:1745,1
    - Dst: clean_extended_state
      Src: /src/postgres/src/bin/psql/command.c:1746,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1747,1
    - Dst: expand_tilde
      Src: /src/postgres/src/bin/psql/command.c:1755,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:1756,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:1758,1
    - Dst: savePsetInfo
      Src: /src/postgres/src/bin/psql/command.c:1762,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1768,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1771
      start: 1717
    functionDepth: 2
    functionLinenumber: 1717
    functionLinenumberEnd: 1771
    functionName: exec_command_g
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - strcmp
    - PQpipelineStatus
    - psql_scan_slash_option
    - pg_strdup
    - savePsetInfo
    - expand_tilde
    - clean_extended_state
    - pg_log_error
    - free
    - process_command_g_options
    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:1795,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:1801,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:1809,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:1820,1
    - Dst: savePsetInfo
      Src: /src/postgres/src/bin/psql/command.c:1828,1
    - Dst: do_pset
      Src: /src/postgres/src/bin/psql/command.c:1829,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1837,1
    - Dst: restorePsetInfo
      Src: /src/postgres/src/bin/psql/command.c:1843,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: 1848
      start: 1778
    functionDepth: 1
    functionLinenumber: 1778
    functionLinenumberEnd: 1848
    functionName: process_command_g_options
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - do_pset
    - psql_scan_slash_option
    - savePsetInfo
    - free
    - restorePsetInfo
    - pg_log_error
    - strlen
    - strchr
    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: 1865
      start: 1853
    functionDepth: 0
    functionLinenumber: 1853
    functionLinenumberEnd: 1865
    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:1878,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:1880,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:1885,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/command.c:1890,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:1892,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1895,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:1896,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:1899,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1902
      start: 1870
    functionDepth: 2
    functionLinenumber: 1870
    functionLinenumberEnd: 1902
    functionName: exec_command_getenv
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - getenv
    - ignore_slash_options
    - psql_scan_slash_option
    - SetVariable
    - pg_log_error
    - free
    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:1919,1
    - Dst: atoi
      Src: /src/postgres/src/bin/psql/command.c:1924,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:1927,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:1934,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1937
      start: 1907
    functionDepth: 1
    functionLinenumber: 1907
    functionLinenumberEnd: 1937
    functionName: exec_command_getresults
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - psql_scan_slash_option
    - pg_log_error
    - 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:1950,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:1952,1
    - Dst: clean_extended_state
      Src: /src/postgres/src/bin/psql/command.c:1953,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1961
      start: 1943
    functionDepth: 2
    functionLinenumber: 1943
    functionLinenumberEnd: 1961
    functionName: exec_command_gexec
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - clean_extended_state
    - pg_log_error
    - PQpipelineStatus
    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:1973,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/psql/command.c:1976,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:1978,1
    - Dst: clean_extended_state
      Src: /src/postgres/src/bin/psql/command.c:1979,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:1988,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:1994,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1997
      start: 1966
    functionDepth: 2
    functionLinenumber: 1966
    functionLinenumberEnd: 1997
    functionName: exec_command_gset
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ignore_slash_options
    - PQpipelineStatus
    - psql_scan_slash_option
    - pg_strdup
    - clean_extended_state
    - pg_log_error
    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:2007,1
    - Dst: helpSQL
      Src: /src/postgres/src/bin/psql/command.c:2010,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2011,1
    - Dst: ignore_slash_whole_line
      Src: /src/postgres/src/bin/psql/command.c:2014,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2017
      start: 2002
    functionDepth: 2
    functionLinenumber: 2002
    functionLinenumberEnd: 2017
    functionName: exec_command_help
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - psql_scan_slash_option
    - ignore_slash_whole_line
    - helpSQL
    - free
    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:2030,1
    - Dst: do_pset
      Src: /src/postgres/src/bin/psql/command.c:2032,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2036
      start: 2022
    functionDepth: 1
    functionLinenumber: 2022
    functionLinenumberEnd: 2036
    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:2048,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2053,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:2060,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:2061,1
    - Dst: expand_tilde
      Src: /src/postgres/src/bin/psql/command.c:2062,1
    - Dst: process_file
      Src: /src/postgres/src/bin/psql/command.c:2063,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2064,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:2068,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2071
      start: 2041
    functionDepth: 2
    functionLinenumber: 2041
    functionLinenumberEnd: 2071
    functionName: exec_command_include
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ignore_slash_options
    - psql_scan_slash_option
    - process_file
    - expand_tilde
    - strcmp
    - pg_log_error
    - free
    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:2086,1
    - Dst: conditional_stack_push
      Src: /src/postgres/src/bin/psql/command.c:2094,1
    - Dst: save_query_text_state
      Src: /src/postgres/src/bin/psql/command.c:2097,1
    - Dst: is_true_boolean_expression
      Src: /src/postgres/src/bin/psql/command.c:2102,1
    - Dst: conditional_stack_poke
      Src: /src/postgres/src/bin/psql/command.c:2103,1
    - Dst: conditional_stack_push
      Src: /src/postgres/src/bin/psql/command.c:2112,1
    - Dst: save_query_text_state
      Src: /src/postgres/src/bin/psql/command.c:2115,1
    - Dst: ignore_boolean_expression
      Src: /src/postgres/src/bin/psql/command.c:2117,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - scan_state
    - cstack
    - query_buf
    argTypes:
    - PsqlScanState
    - ConditionalStack
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2121
      start: 2082
    functionDepth: 1
    functionLinenumber: 2082
    functionLinenumberEnd: 2121
    functionName: exec_command_if
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - save_query_text_state
    - conditional_stack_poke
    - ignore_boolean_expression
    - is_true_boolean_expression
    - conditional_active
    - conditional_stack_push
    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:2134,1
    - Dst: save_query_text_state
      Src: /src/postgres/src/bin/psql/command.c:2143,1
    - Dst: conditional_stack_poke
      Src: /src/postgres/src/bin/psql/command.c:2150,1
    - Dst: ignore_boolean_expression
      Src: /src/postgres/src/bin/psql/command.c:2151,1
    - Dst: discard_query_text
      Src: /src/postgres/src/bin/psql/command.c:2158,1
    - Dst: conditional_stack_poke
      Src: /src/postgres/src/bin/psql/command.c:2165,1
    - Dst: is_true_boolean_expression
      Src: /src/postgres/src/bin/psql/command.c:2166,1
    - Dst: conditional_stack_poke
      Src: /src/postgres/src/bin/psql/command.c:2167,1
    - Dst: discard_query_text
      Src: /src/postgres/src/bin/psql/command.c:2174,1
    - Dst: ignore_boolean_expression
      Src: /src/postgres/src/bin/psql/command.c:2180,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2184,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2189,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 3
    argNames:
    - scan_state
    - cstack
    - query_buf
    argTypes:
    - PsqlScanState
    - ConditionalStack
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2195
      start: 2128
    functionDepth: 1
    functionLinenumber: 2128
    functionLinenumberEnd: 2195
    functionName: exec_command_elif
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - save_query_text_state
    - conditional_stack_peek
    - conditional_stack_poke
    - ignore_boolean_expression
    - is_true_boolean_expression
    - discard_query_text
    - pg_log_error
    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:2210,1
    - Dst: save_query_text_state
      Src: /src/postgres/src/bin/psql/command.c:2219,1
    - Dst: conditional_stack_poke
      Src: /src/postgres/src/bin/psql/command.c:2222,1
    - Dst: discard_query_text
      Src: /src/postgres/src/bin/psql/command.c:2229,1
    - Dst: conditional_stack_poke
      Src: /src/postgres/src/bin/psql/command.c:2235,1
    - Dst: discard_query_text
      Src: /src/postgres/src/bin/psql/command.c:2242,1
    - Dst: conditional_stack_poke
      Src: /src/postgres/src/bin/psql/command.c:2249,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2253,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2258,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - scan_state
    - cstack
    - query_buf
    argTypes:
    - PsqlScanState
    - ConditionalStack
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2264
      start: 2204
    functionDepth: 1
    functionLinenumber: 2204
    functionLinenumberEnd: 2264
    functionName: exec_command_else
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - save_query_text_state
    - conditional_stack_peek
    - conditional_stack_poke
    - 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:2275,1
    - Dst: conditional_stack_pop
      Src: /src/postgres/src/bin/psql/command.c:2280,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:2281,1
    - Dst: discard_query_text
      Src: /src/postgres/src/bin/psql/command.c:2290,1
    - Dst: conditional_stack_pop
      Src: /src/postgres/src/bin/psql/command.c:2293,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:2294,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2298,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - scan_state
    - cstack
    - query_buf
    argTypes:
    - PsqlScanState
    - ConditionalStack
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2304
      start: 2269
    functionDepth: 1
    functionLinenumber: 2269
    functionLinenumberEnd: 2304
    functionName: exec_command_endif
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - Assert
    - conditional_stack_peek
    - discard_query_text
    - conditional_stack_pop
    - 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:2320,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:2323,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:2327,1
    - Dst: listAllDbs
      Src: /src/postgres/src/bin/psql/command.c:2330,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2335,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:2338,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2341
      start: 2309
    functionDepth: 2
    functionLinenumber: 2309
    functionLinenumberEnd: 2341
    functionName: exec_command_list
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ignore_slash_options
    - psql_scan_slash_option
    - listAllDbs
    - free
    - strchr
    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:2357,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2359,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:2362,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2366,1
    - Dst: expand_tilde
      Src: /src/postgres/src/bin/psql/command.c:2371,1
    - Dst: do_lo_export
      Src: /src/postgres/src/bin/psql/command.c:2372,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:2376,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2380,1
    - Dst: expand_tilde
      Src: /src/postgres/src/bin/psql/command.c:2385,1
    - Dst: do_lo_import
      Src: /src/postgres/src/bin/psql/command.c:2386,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:2390,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:2395,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:2399,1
    - Dst: listLargeObjects
      Src: /src/postgres/src/bin/psql/command.c:2402,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:2408,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2412,1
    - Dst: do_lo_unlink
      Src: /src/postgres/src/bin/psql/command.c:2416,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2422,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2423,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:2426,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 45
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2432
      start: 2346
    functionDepth: 7
    functionLinenumber: 2346
    functionLinenumberEnd: 2432
    functionName: exec_command_lo
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - do_lo_import
    - ignore_slash_options
    - listLargeObjects
    - psql_scan_slash_option
    - do_lo_export
    - do_lo_unlink
    - expand_tilde
    - strcmp
    - pg_log_error
    - strncmp
    - free
    - strchr
    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:2444,1
    - Dst: expand_tilde
      Src: /src/postgres/src/bin/psql/command.c:2447,1
    - Dst: setQFout
      Src: /src/postgres/src/bin/psql/command.c:2448,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2449,1
    - Dst: ignore_slash_filepipe
      Src: /src/postgres/src/bin/psql/command.c:2452,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2455
      start: 2437
    functionDepth: 3
    functionLinenumber: 2437
    functionLinenumberEnd: 2455
    functionName: exec_command_out
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - setQFout
    - psql_scan_slash_option
    - expand_tilde
    - ignore_slash_filepipe
    - free
    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:2472,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/command.c:2474,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/command.c:2476,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:2476,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/command.c:2477,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: 2481
      start: 2460
    functionDepth: 0
    functionLinenumber: 2460
    functionLinenumberEnd: 2481
    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:2494,1
    - Dst: clean_extended_state
      Src: /src/postgres/src/bin/psql/command.c:2497,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2501,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:2512,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2515
      start: 2486
    functionDepth: 2
    functionLinenumber: 2486
    functionLinenumberEnd: 2515
    functionName: exec_command_parse
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - psql_scan_slash_option
    - clean_extended_state
    - pg_log_error
    - ignore_slash_options
    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:2527,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/command.c:2539,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:2543,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/command.c:2543,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/command.c:2544,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:2552,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:2553,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:2553,1
    - Dst: simple_prompt_extended
      Src: /src/postgres/src/bin/psql/command.c:2555,1
    - Dst: simple_prompt_extended
      Src: /src/postgres/src/bin/psql/command.c:2557,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:2564,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2566,1
    - Dst: PQchangePassword
      Src: /src/postgres/src/bin/psql/command.c:2571,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/command.c:2573,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/command.c:2575,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/command.c:2575,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/command.c:2579,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2582,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2583,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2584,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:2585,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:2588,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2591
      start: 2520
    functionDepth: 5
    functionLinenumber: 2520
    functionLinenumberEnd: 2591
    functionName: exec_command_password
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ignore_slash_options
    - PQerrorMessage
    - PQchangePassword
    - psql_scan_slash_option
    - PQresultStatus
    - pg_strdup
    - termPQExpBuffer
    - PSQLexec
    - PQgetvalue
    - printfPQExpBuffer
    - simple_prompt_extended
    - pg_log_info
    - _
    - PQclear
    - free
    - strcmp
    - pg_log_error
    - initPQExpBuffer
    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:2609,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2610,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2614,1
    - Dst: simple_prompt_extended
      Src: /src/postgres/src/bin/psql/command.c:2637,1
    - Dst: fputs
      Src: /src/postgres/src/bin/psql/command.c:2643,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/command.c:2644,1
    - Dst: gets_fromFile
      Src: /src/postgres/src/bin/psql/command.c:2646,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2649,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:2656,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2659,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2660,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2661,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:2665,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2668
      start: 2596
    functionDepth: 2
    functionLinenumber: 2596
    functionLinenumberEnd: 2668
    functionName: exec_command_prompt
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ignore_slash_options
    - fflush
    - fputs
    - psql_scan_slash_option
    - SetVariable
    - simple_prompt_extended
    - gets_fromFile
    - pg_log_error
    - free
    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:2680,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2682,1
    - Dst: pset_value_string
      Src: /src/postgres/src/bin/psql/command.c:2705,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:2707,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2708,1
    - Dst: do_pset
      Src: /src/postgres/src/bin/psql/command.c:2714,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2716,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2717,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:2720,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2723
      start: 2673
    functionDepth: 1
    functionLinenumber: 2673
    functionLinenumberEnd: 2723
    functionName: exec_command_pset
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - do_pset
    - printf
    - ignore_slash_options
    - psql_scan_slash_option
    - pset_value_string
    - free
    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: 2737
      start: 2728
    functionDepth: 0
    functionLinenumber: 2728
    functionLinenumberEnd: 2737
    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:2748,1
    - Dst: psql_scan_reset
      Src: /src/postgres/src/bin/psql/command.c:2749,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/command.c:2751,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:2751,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: 2755
      start: 2742
    functionDepth: 1
    functionLinenumber: 2742
    functionLinenumberEnd: 2755
    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: 4
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2767,1
    - Dst: expand_tilde
      Src: /src/postgres/src/bin/psql/command.c:2770,1
    - Dst: printHistory
      Src: /src/postgres/src/bin/psql/command.c:2771,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:2773,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:2773,1
    - Dst: putchar
      Src: /src/postgres/src/bin/psql/command.c:2775,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2776,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:2779,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2782
      start: 2760
    functionDepth: 2
    functionLinenumber: 2760
    functionLinenumberEnd: 2782
    functionName: exec_command_s
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ignore_slash_options
    - printf
    - psql_scan_slash_option
    - putchar
    - expand_tilde
    - _
    - printHistory
    - free
    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:2794,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2803,1
    - Dst: clean_extended_state
      Src: /src/postgres/src/bin/psql/command.c:2804,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2810,1
    - Dst: clean_extended_state
      Src: /src/postgres/src/bin/psql/command.c:2811,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:2816,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2819
      start: 2787
    functionDepth: 2
    functionLinenumber: 2787
    functionLinenumberEnd: 2819
    functionName: exec_command_sendpipeline
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ignore_slash_options
    - clean_extended_state
    - pg_log_error
    - PQpipelineStatus
    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:2831,1
    - Dst: PrintVariables
      Src: /src/postgres/src/bin/psql/command.c:2837,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2848,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:2850,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2851,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2853,1
    - Dst: pg_realloc
      Src: /src/postgres/src/bin/psql/command.c:2856,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:2856,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:2856,1
    - Dst: strcat
      Src: /src/postgres/src/bin/psql/command.c:2857,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2858,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:2861,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2864,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2866,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:2869,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2872
      start: 2824
    functionDepth: 2
    functionLinenumber: 2824
    functionLinenumberEnd: 2872
    functionName: exec_command_set
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ignore_slash_options
    - strcat
    - psql_scan_slash_option
    - pg_strdup
    - SetVariable
    - pg_realloc
    - PrintVariables
    - strlen
    - free
    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:2885,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2887,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2892,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:2895,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2897,1
    - Dst: unsetenv
      Src: /src/postgres/src/bin/psql/command.c:2904,1
    - Dst: setenv
      Src: /src/postgres/src/bin/psql/command.c:2910,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2913,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2914,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:2917,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2920
      start: 2877
    functionDepth: 1
    functionLinenumber: 2877
    functionLinenumberEnd: 2920
    functionName: exec_command_setenv
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ignore_slash_options
    - psql_scan_slash_option
    - setenv
    - unsetenv
    - pg_log_error
    - free
    - strchr
    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:2933,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:2939,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:2940,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2945,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:2947,1
    - Dst: lookup_object_oid
      Src: /src/postgres/src/bin/psql/command.c:2950,1
    - Dst: get_create_object_cmd
      Src: /src/postgres/src/bin/psql/command.c:2955,1
    - Dst: count_lines_in_buf
      Src: /src/postgres/src/bin/psql/command.c:2969,1
    - Dst: PageOutput
      Src: /src/postgres/src/bin/psql/command.c:2971,1
    - Dst: print_with_linenumbers
      Src: /src/postgres/src/bin/psql/command.c:2984,1
    - Dst: fputs
      Src: /src/postgres/src/bin/psql/command.c:2989,1
    - Dst: ClosePager
      Src: /src/postgres/src/bin/psql/command.c:2993,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:2996,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:2997,1
    - Dst: ignore_slash_whole_line
      Src: /src/postgres/src/bin/psql/command.c:3000,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: 3003
      start: 2925
    functionDepth: 1
    functionLinenumber: 2925
    functionLinenumberEnd: 3003
    functionName: exec_command_sf_sv
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ignore_slash_whole_line
    - PageOutput
    - print_with_linenumbers
    - ClosePager
    - fputs
    - destroyPQExpBuffer
    - psql_scan_slash_option
    - createPQExpBuffer
    - count_lines_in_buf
    - lookup_object_oid
    - get_create_object_cmd
    - pg_log_error
    - free
    - strchr
    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:3019,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3022
      start: 3008
    functionDepth: 1
    functionLinenumber: 3008
    functionLinenumberEnd: 3022
    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:3038,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3041
      start: 3027
    functionDepth: 1
    functionLinenumber: 3027
    functionLinenumberEnd: 3041
    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:3057,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3060
      start: 3046
    functionDepth: 1
    functionLinenumber: 3046
    functionLinenumberEnd: 3060
    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:3072,1
    - Dst: do_pset
      Src: /src/postgres/src/bin/psql/command.c:3075,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3076,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:3079,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3082
      start: 3065
    functionDepth: 1
    functionLinenumber: 3065
    functionLinenumberEnd: 3082
    functionName: exec_command_t
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - psql_scan_slash_option
    - ignore_slash_options
    - free
    - do_pset
    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:3094,1
    - Dst: do_pset
      Src: /src/postgres/src/bin/psql/command.c:3097,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3098,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:3101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3104
      start: 3087
    functionDepth: 1
    functionLinenumber: 3087
    functionLinenumberEnd: 3104
    functionName: exec_command_T
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - psql_scan_slash_option
    - ignore_slash_options
    - free
    - do_pset
    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:3116,1
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/command.c:3120,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/command.c:3126,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:3126,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/command.c:3128,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:3128,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3130,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:3133,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3136
      start: 3109
    functionDepth: 2
    functionLinenumber: 3109
    functionLinenumberEnd: 3136
    functionName: exec_command_timing
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ignore_slash_options
    - psql_scan_slash_option
    - puts
    - _
    - ParseVariableBool
    - free
    linkageType: ''
    returnType: backslashResult
    signature: backslashResult exec_command_timing(PsqlScanState scan_state, bool
      active_branch)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:3149,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3154,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:3157,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3160,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:3163,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3166
      start: 3141
    functionDepth: 2
    functionLinenumber: 3141
    functionLinenumberEnd: 3166
    functionName: exec_command_unset
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ignore_slash_options
    - psql_scan_slash_option
    - SetVariable
    - pg_log_error
    - free
    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:3180,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3187,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3194,1
    - Dst: expand_tilde
      Src: /src/postgres/src/bin/psql/command.c:3199,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/command.c:3203,1
    - Dst: disable_sigpipe_trap
      Src: /src/postgres/src/bin/psql/command.c:3204,1
    - Dst: popen
      Src: /src/postgres/src/bin/psql/command.c:3205,1
    - Dst: canonicalize_path_enc
      Src: /src/postgres/src/bin/psql/command.c:3209,1
    - Dst: fopen
      Src: /src/postgres/src/bin/psql/command.c:3210,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3214,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/command.c:3231,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/command.c:3233,1
    - Dst: pclose
      Src: /src/postgres/src/bin/psql/command.c:3237,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3241,1
    - Dst: wait_result_to_str
      Src: /src/postgres/src/bin/psql/command.c:3241,1
    - Dst: SetShellResultVariables
      Src: /src/postgres/src/bin/psql/command.c:3244,1
    - Dst: fclose
      Src: /src/postgres/src/bin/psql/command.c:3248,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3252,1
    - Dst: restore_sigpipe_trap
      Src: /src/postgres/src/bin/psql/command.c:3259,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3261,1
    - Dst: ignore_slash_filepipe
      Src: /src/postgres/src/bin/psql/command.c:3264,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: 3267
      start: 3171
    functionDepth: 2
    functionLinenumber: 3171
    functionLinenumberEnd: 3267
    functionName: exec_command_write
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - fflush
    - pclose
    - wait_result_to_str
    - fclose
    - psql_scan_slash_option
    - restore_sigpipe_trap
    - canonicalize_path_enc
    - popen
    - fprintf
    - fopen
    - free
    - expand_tilde
    - disable_sigpipe_trap
    - pg_log_error
    - ignore_slash_filepipe
    - SetShellResultVariables
    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:3288,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3290,1
    - Dst: clean_extended_state
      Src: /src/postgres/src/bin/psql/command.c:3291,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:3304,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:3312,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:3317,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:3317,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:3318,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:3318,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3322,1
    - Dst: strtod
      Src: /src/postgres/src/bin/psql/command.c:3329,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3332,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:3337,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:3337,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:3338,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:3338,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3342,1
    - Dst: strtoint
      Src: /src/postgres/src/bin/psql/command.c:3349,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3352,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:3357,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:3357,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:3358,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:3358,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3362,1
    - Dst: strtoint
      Src: /src/postgres/src/bin/psql/command.c:3369,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3372,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3379,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3388,1
    - Dst: strtod
      Src: /src/postgres/src/bin/psql/command.c:3395,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3398,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3404,1
    - Dst: copy_previous_query
      Src: /src/postgres/src/bin/psql/command.c:3411,1
    - Dst: do_watch
      Src: /src/postgres/src/bin/psql/command.c:3413,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:3417,1
    - Dst: psql_scan_reset
      Src: /src/postgres/src/bin/psql/command.c:3418,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:3421,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: 3424
      start: 3273
    functionDepth: 2
    functionLinenumber: 3273
    functionLinenumberEnd: 3424
    functionName: exec_command_watch
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ignore_slash_options
    - psql_scan_reset
    - PQpipelineStatus
    - psql_scan_slash_option
    - copy_previous_query
    - do_watch
    - resetPQExpBuffer
    - strtod
    - strtoint
    - free
    - clean_extended_state
    - pg_log_error
    - strncmp
    - strlen
    - strchr
    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:3436,1
    - Dst: do_pset
      Src: /src/postgres/src/bin/psql/command.c:3439,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3440,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:3443,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3446
      start: 3429
    functionDepth: 1
    functionLinenumber: 3429
    functionLinenumberEnd: 3446
    functionName: exec_command_x
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - psql_scan_slash_option
    - ignore_slash_options
    - free
    - do_pset
    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:3462,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:3465,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:3469,1
    - Dst: permissionsList
      Src: /src/postgres/src/bin/psql/command.c:3472,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3477,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:3480,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - scan_state
    - active_branch
    - cmd
    argTypes:
    - PsqlScanState
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3483
      start: 3451
    functionDepth: 2
    functionLinenumber: 3451
    functionLinenumberEnd: 3483
    functionName: exec_command_z
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ignore_slash_options
    - psql_scan_slash_option
    - permissionsList
    - free
    - strchr
    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:3495,1
    - Dst: do_shell
      Src: /src/postgres/src/bin/psql/command.c:3498,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3499,1
    - Dst: ignore_slash_whole_line
      Src: /src/postgres/src/bin/psql/command.c:3502,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3505
      start: 3488
    functionDepth: 1
    functionLinenumber: 3488
    functionLinenumberEnd: 3505
    functionName: exec_command_shell_escape
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - psql_scan_slash_option
    - do_shell
    - ignore_slash_whole_line
    - free
    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:3515,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:3518,1
    - Dst: slashUsage
      Src: /src/postgres/src/bin/psql/command.c:3519,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:3520,1
    - Dst: usage
      Src: /src/postgres/src/bin/psql/command.c:3521,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:3522,1
    - Dst: helpVariables
      Src: /src/postgres/src/bin/psql/command.c:3523,1
    - Dst: slashUsage
      Src: /src/postgres/src/bin/psql/command.c:3525,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3527,1
    - Dst: ignore_slash_options
      Src: /src/postgres/src/bin/psql/command.c:3530,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - scan_state
    - active_branch
    argTypes:
    - PsqlScanState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3533
      start: 3510
    functionDepth: 2
    functionLinenumber: 3510
    functionLinenumberEnd: 3533
    functionName: exec_command_slash_command_help
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - ignore_slash_options
    - psql_scan_slash_option
    - helpVariables
    - slashUsage
    - usage
    - strcmp
    - free
    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:3556,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:3564,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3566,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - scan_state
    argTypes:
    - PsqlScanState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3571
      start: 3541
    functionDepth: 1
    functionLinenumber: 3541
    functionLinenumberEnd: 3571
    functionName: read_connect_arg
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - psql_scan_slash_option
    - strcmp
    - free
    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:3584,1
    - Dst: psql_scan_slash_option
      Src: /src/postgres/src/bin/psql/command.c:3589,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/psql/command.c:3594,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:3595,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3597,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - scan_state
    argTypes:
    - PsqlScanState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3601
      start: 3581
    functionDepth: 1
    functionLinenumber: 3581
    functionLinenumberEnd: 3601
    functionName: gather_boolean_expression
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - psql_scan_slash_option
    - createPQExpBuffer
    - appendPQExpBufferStr
    - free
    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:3614,1
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/command.c:3616,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:3618,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - scan_state
    - name
    argTypes:
    - PsqlScanState
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3620
      start: 3611
    functionDepth: 2
    functionLinenumber: 3611
    functionLinenumberEnd: 3620
    functionName: is_true_boolean_expression
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 2
    functionsReached:
    - destroyPQExpBuffer
    - gather_boolean_expression
    - ParseVariableBool
    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:3631,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:3633,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - scan_state
    argTypes:
    - PsqlScanState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3634
      start: 3628
    functionDepth: 2
    functionLinenumber: 3628
    functionLinenumberEnd: 3634
    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:3649,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3651,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - scan_state
    argTypes:
    - PsqlScanState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3652
      start: 3644
    functionDepth: 1
    functionLinenumber: 3644
    functionLinenumberEnd: 3652
    functionName: ignore_slash_options
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 39
    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:3664,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3667,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - scan_state
    argTypes:
    - PsqlScanState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3668
      start: 3661
    functionDepth: 1
    functionLinenumber: 3661
    functionLinenumberEnd: 3668
    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:3684,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3687,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - scan_state
    argTypes:
    - PsqlScanState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3688
      start: 3681
    functionDepth: 1
    functionLinenumber: 3681
    functionLinenumberEnd: 3688
    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:3696,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:3697,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:3698,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:3699,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3700
      start: 3693
    functionDepth: 0
    functionLinenumber: 3693
    functionLinenumberEnd: 3700
    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:3714,1
    - Dst: conditional_stack_set_paren_depth
      Src: /src/postgres/src/bin/psql/command.c:3715,1
    - Dst: psql_scan_get_paren_depth
      Src: /src/postgres/src/bin/psql/command.c:3716,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - scan_state
    - cstack
    - query_buf
    argTypes:
    - PsqlScanState
    - ConditionalStack
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3717
      start: 3709
    functionDepth: 1
    functionLinenumber: 3709
    functionLinenumberEnd: 3717
    functionName: save_query_text_state
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 3
    functionsReached:
    - psql_scan_get_paren_depth
    - conditional_stack_set_query_len
    - conditional_stack_set_paren_depth
    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:3735,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:3737,1
    - Dst: psql_scan_set_paren_depth
      Src: /src/postgres/src/bin/psql/command.c:3741,1
    - Dst: conditional_stack_get_paren_depth
      Src: /src/postgres/src/bin/psql/command.c:3742,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - scan_state
    - cstack
    - query_buf
    argTypes:
    - PsqlScanState
    - ConditionalStack
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3743
      start: 3729
    functionDepth: 1
    functionLinenumber: 3729
    functionLinenumberEnd: 3743
    functionName: discard_query_text
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 3
    functionsReached:
    - conditional_stack_get_query_len
    - psql_scan_set_paren_depth
    - Assert
    - conditional_stack_get_paren_depth
    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:3760,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - query_buf
    - previous_buf
    argTypes:
    - PQExpBuffer
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3764
      start: 3755
    functionDepth: 1
    functionLinenumber: 3755
    functionLinenumberEnd: 3764
    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:3785,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/command.c:3790,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:3790,1
    - Dst: simple_prompt_extended
      Src: /src/postgres/src/bin/psql/command.c:3791,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:3792,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - username
    - canceled
    argTypes:
    - char*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3799
      start: 3773
    functionDepth: 1
    functionLinenumber: 3773
    functionLinenumberEnd: 3799
    functionName: prompt_for_password
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 0
    functionsReached:
    - free
    - _
    - 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:3807,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - old_val
    - new_val
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3811
      start: 3801
    functionDepth: 0
    functionLinenumber: 3801
    functionLinenumberEnd: 3811
    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:3841,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3846,1
    - Dst: PQconninfo
      Src: /src/postgres/src/bin/psql/command.c:3875,1
    - Dst: PQconninfo
      Src: /src/postgres/src/bin/psql/command.c:3877,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3881,1
    - Dst: PQconndefaults
      Src: /src/postgres/src/bin/psql/command.c:3886,1
    - Dst: PQconninfoParse
      Src: /src/postgres/src/bin/psql/command.c:3896,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:3907,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:3907,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:3929,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:3931,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:3932,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:3933,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:3934,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:3938,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:3961,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/bin/psql/command.c:3966,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3984,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/psql/command.c:3985,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:3988,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4011,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4013,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4016,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4018,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4023,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4025,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4037,1
    - Dst: prompt_for_password
      Src: /src/postgres/src/bin/psql/command.c:4062,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/command.c:4072,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/command.c:4080,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/command.c:4081,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4098,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4100,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4102,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4104,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4109,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4113,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4115,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4118,1
    - Dst: PQconnectStartParams
      Src: /src/postgres/src/bin/psql/command.c:4129,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/command.c:4131,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/command.c:4132,1
    - Dst: wait_until_connected
      Src: /src/postgres/src/bin/psql/command.c:4134,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/psql/command.c:4135,1
    - Dst: PQconnectionNeedsPassword
      Src: /src/postgres/src/bin/psql/command.c:4142,1
    - Dst: prompt_for_password
      Src: /src/postgres/src/bin/psql/command.c:4150,1
    - Dst: PQuser
      Src: /src/postgres/src/bin/psql/command.c:4150,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/psql/command.c:4151,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4162,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/command.c:4168,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/bin/psql/command.c:4169,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/command.c:4182,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/command.c:4182,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/psql/command.c:4183,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/psql/command.c:4188,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4194,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/command.c:4194,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/psql/command.c:4195,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/psql/command.c:4209,1
    - Dst: ResetCancelConn
      Src: /src/postgres/src/bin/psql/command.c:4211,1
    - Dst: UnsyncVariables
      Src: /src/postgres/src/bin/psql/command.c:4212,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/psql/command.c:4218,1
    - Dst: PQsetNoticeProcessor
      Src: /src/postgres/src/bin/psql/command.c:4231,1
    - Dst: SyncVariables
      Src: /src/postgres/src/bin/psql/command.c:4233,1
    - Dst: connection_warnings
      Src: /src/postgres/src/bin/psql/command.c:4234,1
    - Dst: param_is_newly_set
      Src: /src/postgres/src/bin/psql/command.c:4240,1
    - Dst: PQhost
      Src: /src/postgres/src/bin/psql/command.c:4240,1
    - Dst: PQhost
      Src: /src/postgres/src/bin/psql/command.c:4240,1
    - Dst: param_is_newly_set
      Src: /src/postgres/src/bin/psql/command.c:4241,1
    - Dst: PQport
      Src: /src/postgres/src/bin/psql/command.c:4241,1
    - Dst: PQport
      Src: /src/postgres/src/bin/psql/command.c:4241,1
    - Dst: PQhost
      Src: /src/postgres/src/bin/psql/command.c:4243,1
    - Dst: PQhostaddr
      Src: /src/postgres/src/bin/psql/command.c:4244,1
    - Dst: is_unixsock_path
      Src: /src/postgres/src/bin/psql/command.c:4246,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:4250,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4250,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/psql/command.c:4251,1
    - Dst: PQuser
      Src: /src/postgres/src/bin/psql/command.c:4251,1
    - Dst: PQport
      Src: /src/postgres/src/bin/psql/command.c:4251,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:4253,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4253,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/psql/command.c:4254,1
    - Dst: PQuser
      Src: /src/postgres/src/bin/psql/command.c:4254,1
    - Dst: PQport
      Src: /src/postgres/src/bin/psql/command.c:4254,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4258,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:4259,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4259,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/psql/command.c:4260,1
    - Dst: PQuser
      Src: /src/postgres/src/bin/psql/command.c:4260,1
    - Dst: PQport
      Src: /src/postgres/src/bin/psql/command.c:4260,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:4262,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4262,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/psql/command.c:4263,1
    - Dst: PQuser
      Src: /src/postgres/src/bin/psql/command.c:4263,1
    - Dst: PQport
      Src: /src/postgres/src/bin/psql/command.c:4263,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:4267,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4267,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/psql/command.c:4268,1
    - Dst: PQuser
      Src: /src/postgres/src/bin/psql/command.c:4268,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/psql/command.c:4273,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/psql/command.c:4276,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: 4281
      start: 3824
    functionDepth: 2
    functionLinenumber: 3824
    functionLinenumberEnd: 4281
    functionName: do_connect
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - getenv
    - PQhost
    - PQfreemem
    - recognized_connection_string
    - PQport
    - PQsetNoticeProcessor
    - PQconninfo
    - ResetCancelConn
    - is_unixsock_path
    - PQstatus
    - PQuser
    - pg_log_info
    - _
    - strcmp
    - pg_log_error
    - connection_warnings
    - pg_free
    - PQconninfoFree
    - param_is_newly_set
    - SyncVariables
    - PQerrorMessage
    - PQconninfoParse
    - PQhostaddr
    - PQfinish
    - wait_until_connected
    - pg_malloc
    - PQdb
    - PQconnectionNeedsPassword
    - UnsyncVariables
    - printf
    - Assert
    - PQconndefaults
    - PQconnectStartParams
    - prompt_for_password
    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:4310,1
    - Dst: PQgetCurrentTimeUSec
      Src: /src/postgres/src/bin/psql/command.c:4328,1
    - Dst: PQsocketPoll
      Src: /src/postgres/src/bin/psql/command.c:4329,1
    - Dst: PQconnectPoll
      Src: /src/postgres/src/bin/psql/command.c:4333,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/bin/psql/command.c:4345,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4348
      start: 4288
    functionDepth: 1
    functionLinenumber: 4288
    functionLinenumberEnd: 4348
    functionName: wait_until_connected
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - PQgetCurrentTimeUSec
    - pg_unreachable
    - PQsocket
    - PQconnectPoll
    - 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:4364,1
    - Dst: formatPGVersionNumber
      Src: /src/postgres/src/bin/psql/command.c:4368,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:4373,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4373,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:4378,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:4386,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4386,1
    - Dst: formatPGVersionNumber
      Src: /src/postgres/src/bin/psql/command.c:4389,1
    - Dst: formatPGVersionNumber
      Src: /src/postgres/src/bin/psql/command.c:4391,1
    - Dst: checkWin32Codepage
      Src: /src/postgres/src/bin/psql/command.c:4396,1
    - Dst: printSSLInfo
      Src: /src/postgres/src/bin/psql/command.c:4398,1
    - Dst: printGSSInfo
      Src: /src/postgres/src/bin/psql/command.c:4399,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 1
    argNames:
    - in_startup
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4401
      start: 4350
    functionDepth: 1
    functionLinenumber: 4350
    functionLinenumberEnd: 4401
    functionName: connection_warnings
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 2
    functionsReached:
    - printGSSInfo
    - printf
    - checkWin32Codepage
    - formatPGVersionNumber
    - _
    - PQparameterStatus
    - printSSLInfo
    linkageType: ''
    returnType: void
    signature: void connection_warnings(bool in_startup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQsslInUse
      Src: /src/postgres/src/bin/psql/command.c:4417,1
    - Dst: PQsslAttribute
      Src: /src/postgres/src/bin/psql/command.c:4420,1
    - Dst: PQsslAttribute
      Src: /src/postgres/src/bin/psql/command.c:4421,1
    - Dst: PQsslAttribute
      Src: /src/postgres/src/bin/psql/command.c:4422,1
    - Dst: PQsslAttribute
      Src: /src/postgres/src/bin/psql/command.c:4423,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:4425,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4425,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4426,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4427,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4428,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4428,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4428,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4429,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4430
      start: 4409
    functionDepth: 1
    functionLinenumber: 4409
    functionLinenumberEnd: 4430
    functionName: printSSLInfo
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - PQsslAttribute
    - printf
    - PQsslInUse
    - _
    - strcmp
    linkageType: ''
    returnType: void
    signature: void printSSLInfo(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQgssEncInUse
      Src: /src/postgres/src/bin/psql/command.c:4440,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:4443,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4443,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4444
      start: 4437
    functionDepth: 0
    functionLinenumber: 4437
    functionLinenumberEnd: 4444
    functionName: printGSSInfo
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - printf
    - _
    - PQgssEncInUse
    linkageType: ''
    returnType: void
    signature: void printGSSInfo(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetACP
      Src: /src/postgres/src/bin/psql/command.c:4459,1
    - Dst: GetConsoleCP
      Src: /src/postgres/src/bin/psql/command.c:4460,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:4463,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:4463,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4468
      start: 4453
    functionDepth: 0
    functionLinenumber: 4453
    functionLinenumberEnd: 4468
    functionName: checkWin32Codepage
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - GetConsoleCP
    - printf
    - GetACP
    - _
    linkageType: ''
    returnType: void
    signature: void checkWin32Codepage(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/psql/command.c:4485,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/psql/command.c:4487,1
    - Dst: setFmtEncoding
      Src: /src/postgres/src/bin/psql/command.c:4489,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4491,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/psql/command.c:4491,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4492,1
    - Dst: PQservice
      Src: /src/postgres/src/bin/psql/command.c:4492,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4493,1
    - Dst: PQuser
      Src: /src/postgres/src/bin/psql/command.c:4493,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4494,1
    - Dst: PQhost
      Src: /src/postgres/src/bin/psql/command.c:4494,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4495,1
    - Dst: PQport
      Src: /src/postgres/src/bin/psql/command.c:4495,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4496,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/psql/command.c:4496,1
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/psql/command.c:4500,1
    - Dst: formatPGVersionNumber
      Src: /src/postgres/src/bin/psql/command.c:4504,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4507,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/command.c:4509,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4510,1
    - Dst: PQsetErrorVerbosity
      Src: /src/postgres/src/bin/psql/command.c:4513,1
    - Dst: PQsetErrorContextVisibility
      Src: /src/postgres/src/bin/psql/command.c:4514,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4515
      start: 4478
    functionDepth: 2
    functionLinenumber: 4478
    functionLinenumberEnd: 4515
    functionName: SyncVariables
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 2
    functionsReached:
    - PQclientEncoding
    - PQsetErrorContextVisibility
    - PQhost
    - PQserverVersion
    - pg_encoding_to_char
    - SetVariable
    - snprintf
    - PQdb
    - setFmtEncoding
    - PQport
    - formatPGVersionNumber
    - PQsetErrorVerbosity
    - PQservice
    - PQuser
    - PQparameterStatus
    linkageType: ''
    returnType: void
    signature: void SyncVariables(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4525,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4526,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4527,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4528,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4529,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4530,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4531,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/command.c:4532,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4533
      start: 4522
    functionDepth: 2
    functionLinenumber: 4522
    functionLinenumberEnd: 4533
    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:4551,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/command.c:4554,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/command.c:4556,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/command.c:4558,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/command.c:4565,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4572,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/command.c:4586,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/command.c:4589,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/command.c:4593,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/command.c:4596,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/command.c:4599,1
    - Dst: system
      Src: /src/postgres/src/bin/psql/command.c:4600,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4602,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4604,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:4605,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 2
    argNames:
    - fname
    - lineno
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4608
      start: 4543
    functionDepth: 1
    functionLinenumber: 4543
    functionLinenumberEnd: 4608
    functionName: editFile
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 0
    functionsReached:
    - getenv
    - Assert
    - fflush
    - free
    - pg_log_error
    - psprintf
    - 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:4643,1
    - Dst: GetTempPath
      Src: /src/postgres/src/bin/psql/command.c:4651,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4654,1
    - Dst: strerror
      Src: /src/postgres/src/bin/psql/command.c:4655,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/command.c:4666,1
    - Dst: getpid
      Src: /src/postgres/src/bin/psql/command.c:4667,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/command.c:4669,1
    - Dst: getpid
      Src: /src/postgres/src/bin/psql/command.c:4670,1
    - Dst: open
      Src: /src/postgres/src/bin/psql/command.c:4675,1
    - Dst: fdopen
      Src: /src/postgres/src/bin/psql/command.c:4677,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4681,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/psql/command.c:4691,1
    - Dst: fwrite
      Src: /src/postgres/src/bin/psql/command.c:4695,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4697,1
    - Dst: fclose
      Src: /src/postgres/src/bin/psql/command.c:4699,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4700,1
    - Dst: remove
      Src: /src/postgres/src/bin/psql/command.c:4702,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4703,1
    - Dst: fclose
      Src: /src/postgres/src/bin/psql/command.c:4707,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4709,1
    - Dst: remove
      Src: /src/postgres/src/bin/psql/command.c:4710,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4711,1
    - Dst: time
      Src: /src/postgres/src/bin/psql/command.c:4729,1
    - Dst: utime
      Src: /src/postgres/src/bin/psql/command.c:4730,1
    - Dst: stat
      Src: /src/postgres/src/bin/psql/command.c:4735,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4737,1
    - Dst: editFile
      Src: /src/postgres/src/bin/psql/command.c:4743,1
    - Dst: stat
      Src: /src/postgres/src/bin/psql/command.c:4745,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4747,1
    - Dst: fopen
      Src: /src/postgres/src/bin/psql/command.c:4756,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4759,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:4767,1
    - Dst: fgets
      Src: /src/postgres/src/bin/psql/command.c:4768,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:4769,1
    - Dst: ferror
      Src: /src/postgres/src/bin/psql/command.c:4771,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4773,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:4775,1
    - Dst: fclose
      Src: /src/postgres/src/bin/psql/command.c:4782,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:4792,1
    - Dst: remove
      Src: /src/postgres/src/bin/psql/command.c:4798,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4800,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: 4806
      start: 4625
    functionDepth: 2
    functionLinenumber: 4625
    functionLinenumberEnd: 4806
    functionName: do_edit
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 2
    functionsReached:
    - getenv
    - appendPQExpBufferChar
    - GetTempPath
    - snprintf
    - time
    - resetPQExpBuffer
    - utime
    - appendPQExpBufferStr
    - fopen
    - pg_log_error
    - remove
    - fclose
    - stat
    - ferror
    - fwrite
    - getpid
    - editFile
    - fgets
    - fdopen
    - open
    - strerror
    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:4833,1
    - Dst: canonicalize_path_enc
      Src: /src/postgres/src/bin/psql/command.c:4835,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/bin/psql/command.c:4844,1
    - Dst: has_drive_prefix
      Src: /src/postgres/src/bin/psql/command.c:4844,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/psql/command.c:4846,1
    - Dst: get_parent_directory
      Src: /src/postgres/src/bin/psql/command.c:4847,1
    - Dst: join_path_components
      Src: /src/postgres/src/bin/psql/command.c:4848,1
    - Dst: canonicalize_path_enc
      Src: /src/postgres/src/bin/psql/command.c:4849,1
    - Dst: fopen
      Src: /src/postgres/src/bin/psql/command.c:4854,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:4858,1
    - Dst: pg_logging_config
      Src: /src/postgres/src/bin/psql/command.c:4871,1
    - Dst: MainLoop
      Src: /src/postgres/src/bin/psql/command.c:4873,1
    - Dst: fclose
      Src: /src/postgres/src/bin/psql/command.c:4876,1
    - Dst: pg_logging_config
      Src: /src/postgres/src/bin/psql/command.c:4880,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 2
    argNames:
    - filename
    - use_relative_path
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4883
      start: 4820
    functionDepth: 4
    functionLinenumber: 4820
    functionLinenumberEnd: 4883
    functionName: process_file
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - is_absolute_path
    - has_drive_prefix
    - get_parent_directory
    - fclose
    - pg_logging_config
    - canonicalize_path_enc
    - join_path_components
    - fopen
    - MainLoop
    - strlcpy
    - strcmp
    - pg_log_error
    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: 4924
      start: 4887
    functionDepth: 0
    functionLinenumber: 4887
    functionLinenumberEnd: 4924
    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:4934,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/command.c:4936,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - value
    - vallen
    - linestyle
    argTypes:
    - char*
    - size_t
    - unicode_linestyle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4941
      start: 4930
    functionDepth: 1
    functionLinenumber: 4930
    functionLinenumberEnd: 4941
    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: 4956
      start: 4943
    functionDepth: 0
    functionLinenumber: 4943
    functionLinenumberEnd: 4956
    functionName: _unicode_linestyle2string
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      _unicode_linestyle2string(int linestyle)'
  - BBCount: 66
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:4978,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:4981,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:4984,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/psql/command.c:5009,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/command.c:5011,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5017,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/command.c:5026,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5037,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5044,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/command.c:5048,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/command.c:5050,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/psql/command.c:5052,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5056,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5062,1
    - Dst: set_unicode_line_style
      Src: /src/postgres/src/bin/psql/command.c:5066,1
    - Dst: refresh_utf8format
      Src: /src/postgres/src/bin/psql/command.c:5068,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5071,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5077,1
    - Dst: set_unicode_line_style
      Src: /src/postgres/src/bin/psql/command.c:5081,1
    - Dst: refresh_utf8format
      Src: /src/postgres/src/bin/psql/command.c:5083,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5086,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5092,1
    - Dst: set_unicode_line_style
      Src: /src/postgres/src/bin/psql/command.c:5096,1
    - Dst: refresh_utf8format
      Src: /src/postgres/src/bin/psql/command.c:5098,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5101,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5107,1
    - Dst: atoi
      Src: /src/postgres/src/bin/psql/command.c:5110,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5114,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5115,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5116,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/command.c:5118,1
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/command.c:5124,1
    - Dst: PsqlVarEnumError
      Src: /src/postgres/src/bin/psql/command.c:5128,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5137,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/command.c:5141,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/command.c:5143,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/command.c:5145,1
    - Dst: atoi
      Src: /src/postgres/src/bin/psql/command.c:5149,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5153,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5163,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:5168,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5170,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:5183,1
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/command.c:5186,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5192,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5196,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:5197,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5202,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5206,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:5207,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5212,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5214,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5220,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5224,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:5225,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5230,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5232,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5238,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5238,1
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/command.c:5241,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5247,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5247,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5249,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:5253,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5257,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5257,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5259,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:5263,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5267,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/command.c:5269,1
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/command.c:5275,1
    - Dst: PsqlVarEnumError
      Src: /src/postgres/src/bin/psql/command.c:5277,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5289,1
    - Dst: ParseVariableNum
      Src: /src/postgres/src/bin/psql/command.c:5292,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5297,1
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/command.c:5300,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5306,1
    - Dst: atoi
      Src: /src/postgres/src/bin/psql/command.c:5309,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5313,1
    - Dst: printPsetInfo
      Src: /src/postgres/src/bin/psql/command.c:5318,1
    CyclomaticComplexity: 76
    EdgeCount: 76
    ICount: 197
    argCount: 4
    argNames:
    - param
    - value
    - popt
    - quiet
    argTypes:
    - char*
    - char*
    - printQueryOpt*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5321
      start: 4973
    functionDepth: 2
    functionLinenumber: 4973
    functionLinenumberEnd: 5321
    functionName: do_pset
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 9
    functionsReached:
    - refresh_utf8format
    - Assert
    - lengthof
    - atoi
    - ParseVariableNum
    - pg_strdup
    - PsqlVarEnumError
    - printPsetInfo
    - set_unicode_line_style
    - pg_strncasecmp
    - free
    - pg_strcasecmp
    - strcmp
    - pg_log_error
    - ParseVariableBool
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool do_pset(const char *param, const char *value, printQueryOpt *popt,
      bool quiet)
  - BBCount: 40
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:5329,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5332,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5333,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5333,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5336,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5339,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5339,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5341,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5341,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5345,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5345,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5345,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5348,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5348,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5350,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5350,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5352,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5352,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5356,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5359,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5359,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5361,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5361,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5363,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5363,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5365,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5365,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5369,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5371,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5371,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5376,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5379,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5379,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5381,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5381,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5385,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5387,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5387,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5391,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5394,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5394,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5396,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5396,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5400,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5402,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5402,1
    - Dst: _align2string
      Src: /src/postgres/src/bin/psql/command.c:5402,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5406,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5408,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5408,1
    - Dst: get_line_style
      Src: /src/postgres/src/bin/psql/command.c:5409,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5413,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5415,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5415,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5420,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5423,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5423,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5425,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5425,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5429,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5432,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5432,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5434,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5434,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5436,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5436,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5440,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5442,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/psql/command.c:5442,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5449,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5452,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5452,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5453,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5454,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5454,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5456,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5456,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5460,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5462,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5462,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5466,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5466,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5469,1
    - Dst: _
      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: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5476,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5476,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5479,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5479,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5481,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5481,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5485,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5485,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5488,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5488,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5490,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5490,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5494,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5496,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5496,1
    - Dst: _unicode_linestyle2string
      Src: /src/postgres/src/bin/psql/command.c:5497,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: _unicode_linestyle2string
      Src: /src/postgres/src/bin/psql/command.c:5503,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5506,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/command.c:5508,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5508,1
    - Dst: _unicode_linestyle2string
      Src: /src/postgres/src/bin/psql/command.c:5509,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5514,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 104
    argCount: 2
    argNames:
    - param
    - popt
    argTypes:
    - char*
    - printQueryOpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5519
      start: 5326
    functionDepth: 1
    functionLinenumber: 5326
    functionLinenumberEnd: 5519
    functionName: printPsetInfo
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - printf
    - Assert
    - _align2string
    - get_line_style
    - _unicode_linestyle2string
    - _
    - strcmp
    - pg_log_error
    - ngettext
    linkageType: ''
    returnType: bool
    signature: bool printPsetInfo(const char *param, printQueryOpt *popt)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/command.c:5531,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/psql/command.c:5534,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:5538,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:5540,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:5542,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:5544,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/command.c:5546,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:5552,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:5553,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - popt
    argTypes:
    - printQueryOpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5556
      start: 5526
    functionDepth: 1
    functionLinenumber: 5526
    functionLinenumberEnd: 5556
    functionName: savePsetInfo
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 2
    functionsReached:
    - pg_malloc
    - memcpy
    - pg_strdup
    - Assert
    linkageType: ''
    returnType: printQueryOpt
    signature: 'printQueryOpt *

      savePsetInfo(const printQueryOpt *popt)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5568,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5569,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5570,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5571,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5572,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:5578,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:5579,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/psql/command.c:5582,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5585,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - popt
    - save
    argTypes:
    - printQueryOpt*
    - printQueryOpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5586
      start: 5562
    functionDepth: 1
    functionLinenumber: 5562
    functionLinenumberEnd: 5586
    functionName: restorePsetInfo
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 2
    functionsReached:
    - memcpy
    - Assert
    - free
    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: 5592
      start: 5588
    functionDepth: 0
    functionLinenumber: 5588
    functionLinenumberEnd: 5592
    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:5598,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:5598,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5623
      start: 5595
    functionDepth: 1
    functionLinenumber: 5595
    functionLinenumberEnd: 5623
    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: 26
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/command.c:5636,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5638,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/command.c:5639,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5640,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/command.c:5641,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5642,1
    - Dst: pset_quoted_string
      Src: /src/postgres/src/bin/psql/command.c:5643,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5644,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5645,1
    - Dst: pset_bool_string
      Src: /src/postgres/src/bin/psql/command.c:5647,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5648,1
    - Dst: pset_quoted_string
      Src: /src/postgres/src/bin/psql/command.c:5649,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5652,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5653,1
    - Dst: pset_bool_string
      Src: /src/postgres/src/bin/psql/command.c:5653,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5654,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5655,1
    - Dst: pset_bool_string
      Src: /src/postgres/src/bin/psql/command.c:5655,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5656,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5657,1
    - Dst: _align2string
      Src: /src/postgres/src/bin/psql/command.c:5657,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5658,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5659,1
    - Dst: get_line_style
      Src: /src/postgres/src/bin/psql/command.c:5659,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5660,1
    - Dst: pset_quoted_string
      Src: /src/postgres/src/bin/psql/command.c:5661,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5664,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5665,1
    - Dst: pset_bool_string
      Src: /src/postgres/src/bin/psql/command.c:5665,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5666,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/command.c:5667,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5668,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/command.c:5669,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5670,1
    - Dst: pset_quoted_string
      Src: /src/postgres/src/bin/psql/command.c:5671,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5674,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5675,1
    - Dst: pset_bool_string
      Src: /src/postgres/src/bin/psql/command.c:5675,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5676,1
    - Dst: pset_quoted_string
      Src: /src/postgres/src/bin/psql/command.c:5677,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5677,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5678,1
    - Dst: pset_quoted_string
      Src: /src/postgres/src/bin/psql/command.c:5679,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5679,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5680,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5681,1
    - Dst: pset_bool_string
      Src: /src/postgres/src/bin/psql/command.c:5681,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5682,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5683,1
    - Dst: _unicode_linestyle2string
      Src: /src/postgres/src/bin/psql/command.c:5683,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5684,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5685,1
    - Dst: _unicode_linestyle2string
      Src: /src/postgres/src/bin/psql/command.c:5685,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5686,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5687,1
    - Dst: _unicode_linestyle2string
      Src: /src/postgres/src/bin/psql/command.c:5687,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/command.c:5688,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5691,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5693,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5695,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/command.c:5701,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5703,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/command.c:5707,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 56
    argCount: 2
    argNames:
    - param
    - popt
    argTypes:
    - char*
    - printQueryOpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5708
      start: 5633
    functionDepth: 2
    functionLinenumber: 5633
    functionLinenumberEnd: 5708
    functionName: pset_value_string
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - Assert
    - _align2string
    - snprintf
    - pstrdup
    - pset_bool_string
    - get_line_style
    - _unicode_linestyle2string
    - pset_quoted_string
    - strcmp
    - psprintf
    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:5727,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/command.c:5733,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/command.c:5736,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/command.c:5743,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/command.c:5745,1
    - Dst: system
      Src: /src/postgres/src/bin/psql/command.c:5747,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/command.c:5748,1
    - Dst: system
      Src: /src/postgres/src/bin/psql/command.c:5751,1
    - Dst: SetShellResultVariables
      Src: /src/postgres/src/bin/psql/command.c:5753,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5757,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - command
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5761
      start: 5722
    functionDepth: 2
    functionLinenumber: 5722
    functionLinenumberEnd: 5761
    functionName: do_shell
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - getenv
    - fflush
    - psprintf
    - SetShellResultVariables
    - pg_log_error
    - free
    - 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:5795,1
    - Dst: sigemptyset
      Src: /src/postgres/src/bin/psql/command.c:5800,1
    - Dst: sigaddset
      Src: /src/postgres/src/bin/psql/command.c:5801,1
    - Dst: sigaddset
      Src: /src/postgres/src/bin/psql/command.c:5802,1
    - Dst: sigaddset
      Src: /src/postgres/src/bin/psql/command.c:5803,1
    - Dst: sigemptyset
      Src: /src/postgres/src/bin/psql/command.c:5805,1
    - Dst: sigaddset
      Src: /src/postgres/src/bin/psql/command.c:5806,1
    - Dst: sigaddset
      Src: /src/postgres/src/bin/psql/command.c:5807,1
    - Dst: sigemptyset
      Src: /src/postgres/src/bin/psql/command.c:5809,1
    - Dst: sigaddset
      Src: /src/postgres/src/bin/psql/command.c:5810,1
    - Dst: sigprocmask
      Src: /src/postgres/src/bin/psql/command.c:5816,1
    - Dst: setitimer
      Src: /src/postgres/src/bin/psql/command.c:5825,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5827,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/command.c:5841,1
    - Dst: strspn
      Src: /src/postgres/src/bin/psql/command.c:5843,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:5843,1
    - Dst: isatty
      Src: /src/postgres/src/bin/psql/command.c:5847,1
    - Dst: fileno
      Src: /src/postgres/src/bin/psql/command.c:5847,1
    - Dst: isatty
      Src: /src/postgres/src/bin/psql/command.c:5847,1
    - Dst: fileno
      Src: /src/postgres/src/bin/psql/command.c:5847,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/command.c:5849,1
    - Dst: disable_sigpipe_trap
      Src: /src/postgres/src/bin/psql/command.c:5850,1
    - Dst: popen
      Src: /src/postgres/src/bin/psql/command.c:5851,1
    - Dst: restore_sigpipe_trap
      Src: /src/postgres/src/bin/psql/command.c:5855,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:5878,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/psql/command.c:5879,1
    - Dst: time
      Src: /src/postgres/src/bin/psql/command.c:5892,1
    - Dst: strftime
      Src: /src/postgres/src/bin/psql/command.c:5893,1
    - Dst: localtime
      Src: /src/postgres/src/bin/psql/command.c:5893,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/command.c:5896,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5896,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/command.c:5899,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:5899,1
    - Dst: PSQLexecWatch
      Src: /src/postgres/src/bin/psql/command.c:5904,1
    - Dst: ferror
      Src: /src/postgres/src/bin/psql/command.c:5918,1
    - Dst: Min
      Src: /src/postgres/src/bin/psql/command.c:5934,1
    - Dst: pg_usleep
      Src: /src/postgres/src/bin/psql/command.c:5936,1
    - Dst: sigprocmask
      Src: /src/postgres/src/bin/psql/command.c:5946,1
    - Dst: sigwait
      Src: /src/postgres/src/bin/psql/command.c:5955,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:5963,1
    - Dst: sigprocmask
      Src: /src/postgres/src/bin/psql/command.c:5976,1
    - Dst: pclose
      Src: /src/postgres/src/bin/psql/command.c:5982,1
    - Dst: restore_sigpipe_trap
      Src: /src/postgres/src/bin/psql/command.c:5983,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/command.c:5994,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/command.c:5995,1
    - Dst: memset
      Src: /src/postgres/src/bin/psql/command.c:6000,1
    - Dst: setitimer
      Src: /src/postgres/src/bin/psql/command.c:6001,1
    - Dst: sigprocmask
      Src: /src/postgres/src/bin/psql/command.c:6003,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/command.c:6006,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: 6008
      start: 5773
    functionDepth: 2
    functionLinenumber: 5773
    functionLinenumberEnd: 6008
    functionName: do_watch
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - getenv
    - strspn
    - snprintf
    - pg_usleep
    - time
    - fprintf
    - setitimer
    - sigprocmask
    - strlen
    - Min
    - PSQLexecWatch
    - fileno
    - _
    - disable_sigpipe_trap
    - pg_log_error
    - restore_sigpipe_trap
    - pg_free
    - sigemptyset
    - fflush
    - pclose
    - ferror
    - isatty
    - popen
    - pg_malloc
    - sigaddset
    - localtime
    - strftime
    - sigwait
    - memset
    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:6019,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:6019,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/command.c:6022,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/command.c:6025,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/command.c:6026,1
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/command.c:6029,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - query
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6036
      start: 6014
    functionDepth: 0
    functionLinenumber: 6014
    functionLinenumberEnd: 6036
    functionName: echo_hidden_command
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 0
    functionsReached:
    - printf
    - fflush
    - _
    - fprintf
    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:6051,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:6063,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/psql/command.c:6064,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6065,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:6066,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:6076,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/psql/command.c:6077,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:6078,1
    - Dst: echo_hidden_command
      Src: /src/postgres/src/bin/psql/command.c:6082,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6084,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/psql/command.c:6087,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/command.c:6088,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/command.c:6088,1
    - Dst: atooid
      Src: /src/postgres/src/bin/psql/command.c:6089,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/command.c:6089,1
    - Dst: minimal_error_message
      Src: /src/postgres/src/bin/psql/command.c:6092,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/command.c:6096,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6097,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - obj_type
    - desc
    - obj_oid
    argTypes:
    - EditableObjectType
    - char*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6100
      start: 6046
    functionDepth: 1
    functionLinenumber: 6046
    functionLinenumberEnd: 6100
    functionName: lookup_object_oid
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 2
    functionsReached:
    - echo_hidden_command
    - PQexec
    - PQntuples
    - PQresultStatus
    - createPQExpBuffer
    - atooid
    - appendStringLiteralConn
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - PQgetvalue
    - PQclear
    - minimal_error_message
    - destroyPQExpBuffer
    - strchr
    linkageType: ''
    returnType: bool
    signature: "bool lookup_object_oid(EditableObjectType obj_type, const char *desc,\n\t\t\t\t
      \ Oid *obj_oid)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6111,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6117,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6138,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6151,1
    - Dst: echo_hidden_command
      Src: /src/postgres/src/bin/psql/command.c:6164,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6166,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/psql/command.c:6169,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/psql/command.c:6170,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/psql/command.c:6170,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6172,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:6176,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/command.c:6176,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/command.c:6181,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/command.c:6182,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/command.c:6183,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/command.c:6184,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/command.c:6185,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/psql/command.c:6186,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:6198,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:6202,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:6205,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6210,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/psql/command.c:6210,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:6211,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/psql/command.c:6211,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/command.c:6214,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:6216,1
    - Dst: appendReloptionsArray
      Src: /src/postgres/src/bin/psql/command.c:6217,1
    - Dst: standard_strings
      Src: /src/postgres/src/bin/psql/command.c:6219,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:6221,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/psql/command.c:6224,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6228,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6236,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/psql/command.c:6243,1
    - Dst: minimal_error_message
      Src: /src/postgres/src/bin/psql/command.c:6247,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/command.c:6251,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6252,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 64
    argCount: 3
    argNames:
    - obj_type
    - oid
    - buf
    argTypes:
    - EditableObjectType
    - Oid
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6255
      start: 6106
    functionDepth: 2
    functionLinenumber: 6106
    functionLinenumberEnd: 6255
    functionName: get_create_object_cmd
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 2
    functionsReached:
    - appendPQExpBufferChar
    - appendReloptionsArray
    - echo_hidden_command
    - PQresultStatus
    - PQgetvalue
    - resetPQExpBuffer
    - strlen
    - createPQExpBuffer
    - appendPQExpBufferStr
    - PQclear
    - minimal_error_message
    - pg_log_error
    - PQexec
    - PQntuples
    - fmtId
    - destroyPQExpBuffer
    - standard_strings
    - printfPQExpBuffer
    - appendPQExpBuffer
    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:6275,1
    - Dst: isascii
      Src: /src/postgres/src/bin/psql/command.c:6288,1
    - Dst: isspace
      Src: /src/postgres/src/bin/psql/command.c:6288,1
    - Dst: isascii
      Src: /src/postgres/src/bin/psql/command.c:6292,1
    - Dst: isdigit
      Src: /src/postgres/src/bin/psql/command.c:6292,1
    - Dst: isascii
      Src: /src/postgres/src/bin/psql/command.c:6296,1
    - Dst: isdigit
      Src: /src/postgres/src/bin/psql/command.c:6296,1
    - Dst: isascii
      Src: /src/postgres/src/bin/psql/command.c:6301,1
    - Dst: isspace
      Src: /src/postgres/src/bin/psql/command.c:6302,1
    - Dst: atoi
      Src: /src/postgres/src/bin/psql/command.c:6307,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:6310,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 20
    argCount: 1
    argNames:
    - obj
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6318
      start: 6266
    functionDepth: 1
    functionLinenumber: 6266
    functionLinenumberEnd: 6318
    functionName: strip_lineno_from_objdesc
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 1
    functionsReached:
    - isascii
    - atoi
    - isdigit
    - isspace
    - pg_log_error
    - strlen
    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:6334,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - buf
    argTypes:
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6341
      start: 6324
    functionDepth: 0
    functionLinenumber: 6324
    functionLinenumberEnd: 6341
    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:6365,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:6366,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/psql/command.c:6367,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/command.c:6375,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/command.c:6381,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/psql/command.c:6383,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 16
    argCount: 3
    argNames:
    - output
    - lines
    - is_func
    argTypes:
    - FILE*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6390
      start: 6354
    functionDepth: 0
    functionLinenumber: 6354
    functionLinenumberEnd: 6390
    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:6402,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/bin/psql/command.c:6404,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6406,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6408,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/bin/psql/command.c:6409,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:6411,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/psql/command.c:6413,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/psql/command.c:6414,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/command.c:6416,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/psql/command.c:6418,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - res
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6419
      start: 6396
    functionDepth: 1
    functionLinenumber: 6396
    functionLinenumberEnd: 6419
    functionName: minimal_error_message
    functionSourceFile: /src/postgres/src/bin/psql/command.c
    functionUses: 2
    functionsReached:
    - appendPQExpBufferChar
    - destroyPQExpBuffer
    - createPQExpBuffer
    - appendPQExpBufferStr
    - PQresultErrorField
    - printfPQExpBuffer
    - pg_log_error
    linkageType: ''
    returnType: void
    signature: void minimal_error_message(PGresult *res)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fflush
      Src: /src/postgres/src/bin/psql/startup.c:95,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 96
    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: 111
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 111
    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: 117
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 117
    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:133,1
    - Dst: pg_logging_set_pre_callback
      Src: /src/postgres/src/bin/psql/startup.c:134,1
    - Dst: pg_logging_set_locus_callback
      Src: /src/postgres/src/bin/psql/startup.c:135,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/psql/startup.c:136,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/psql/startup.c:136,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/startup.c:140,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/startup.c:140,1
    - Dst: usage
      Src: /src/postgres/src/bin/psql/startup.c:142,1
    - Dst: exit
      Src: /src/postgres/src/bin/psql/startup.c:143,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/startup.c:145,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/startup.c:145,1
    - Dst: showVersion
      Src: /src/postgres/src/bin/psql/startup.c:147,1
    - Dst: exit
      Src: /src/postgres/src/bin/psql/startup.c:148,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/psql/startup.c:152,1
    - Dst: setDecimalLocale
      Src: /src/postgres/src/bin/psql/startup.c:156,1
    - Dst: PQenv2encoding
      Src: /src/postgres/src/bin/psql/startup.c:157,1
    - Dst: refresh_utf8format
      Src: /src/postgres/src/bin/psql/startup.c:181,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/startup.c:184,1
    - Dst: atoi
      Src: /src/postgres/src/bin/psql/startup.c:184,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/startup.c:184,1
    - Dst: isatty
      Src: /src/postgres/src/bin/psql/startup.c:186,1
    - Dst: fileno
      Src: /src/postgres/src/bin/psql/startup.c:186,1
    - Dst: isatty
      Src: /src/postgres/src/bin/psql/startup.c:186,1
    - Dst: fileno
      Src: /src/postgres/src/bin/psql/startup.c:186,1
    - Dst: EstablishVariableSpace
      Src: /src/postgres/src/bin/psql/startup.c:190,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/startup.c:193,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: CppAsString2
      Src: /src/postgres/src/bin/psql/startup.c:195,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/startup.c:198,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/startup.c:199,1
    - Dst: SetVariableBool
      Src: /src/postgres/src/bin/psql/startup.c:202,1
    - Dst: SetVariable
      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: SetVariableBool
      Src: /src/postgres/src/bin/psql/startup.c:206,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/startup.c:209,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: parse_psql_options
      Src: /src/postgres/src/bin/psql/startup.c:213,1
    - Dst: simple_action_list_append
      Src: /src/postgres/src/bin/psql/startup.c:221,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/psql/startup.c:225,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:230,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:236,1
    - Dst: simple_prompt
      Src: /src/postgres/src/bin/psql/startup.c:248,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/psql/startup.c:255,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/psql/startup.c:256,1
    - Dst: getenv
      Src: /src/postgres/src/bin/psql/startup.c:272,1
    - Dst: PQconnectdbParams
      Src: /src/postgres/src/bin/psql/startup.c:277,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/startup.c:278,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/startup.c:279,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/psql/startup.c:281,1
    - Dst: PQconnectionNeedsPassword
      Src: /src/postgres/src/bin/psql/startup.c:282,1
    - Dst: PQuser
      Src: /src/postgres/src/bin/psql/startup.c:291,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/startup.c:295,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/startup.c:295,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:298,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/startup.c:298,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/psql/startup.c:299,1
    - Dst: simple_prompt
      Src: /src/postgres/src/bin/psql/startup.c:301,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/startup.c:302,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/psql/startup.c:307,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/psql/startup.c:309,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/psql/startup.c:309,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/psql/startup.c:310,1
    - Dst: exit
      Src: /src/postgres/src/bin/psql/startup.c:311,1
    - Dst: psql_setup_cancel_handler
      Src: /src/postgres/src/bin/psql/startup.c:314,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/psql/startup.c:324,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/psql/startup.c:325,1
    - Dst: PQsetNoticeProcessor
      Src: /src/postgres/src/bin/psql/startup.c:328,1
    - Dst: SyncVariables
      Src: /src/postgres/src/bin/psql/startup.c:330,1
    - Dst: process_psqlrc
      Src: /src/postgres/src/bin/psql/startup.c:337,1
    - Dst: listAllDbs
      Src: /src/postgres/src/bin/psql/startup.c:339,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/psql/startup.c:340,1
    - Dst: exit
      Src: /src/postgres/src/bin/psql/startup.c:341,1
    - Dst: fopen
      Src: /src/postgres/src/bin/psql/startup.c:346,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/psql/startup.c:348,1
    - Dst: process_psqlrc
      Src: /src/postgres/src/bin/psql/startup.c:353,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/startup.c:368,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/startup.c:377,1
    - Dst: pg_logging_config
      Src: /src/postgres/src/bin/psql/startup.c:384,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/startup.c:387,1
    - Dst: SendQuery
      Src: /src/postgres/src/bin/psql/startup.c:389,1
    - Dst: pg_logging_config
      Src: /src/postgres/src/bin/psql/startup.c:397,1
    - Dst: puts
      Src: /src/postgres/src/bin/psql/startup.c:400,1
    - Dst: psql_scan_create
      Src: /src/postgres/src/bin/psql/startup.c:402,1
    - Dst: psql_scan_setup
      Src: /src/postgres/src/bin/psql/startup.c:403,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/startup.c:404,1
    - Dst: standard_strings
      Src: /src/postgres/src/bin/psql/startup.c:405,1
    - Dst: conditional_stack_create
      Src: /src/postgres/src/bin/psql/startup.c:406,1
    - Dst: psql_scan_set_passthrough
      Src: /src/postgres/src/bin/psql/startup.c:407,1
    - Dst: HandleSlashCmds
      Src: /src/postgres/src/bin/psql/startup.c:409,1
    - Dst: psql_scan_destroy
      Src: /src/postgres/src/bin/psql/startup.c:415,1
    - Dst: conditional_stack_destroy
      Src: /src/postgres/src/bin/psql/startup.c:416,1
    - Dst: process_file
      Src: /src/postgres/src/bin/psql/startup.c:420,1
    - Dst: Assert
      Src: /src/postgres/src/bin/psql/startup.c:425,1
    - Dst: PSQLexec
      Src: /src/postgres/src/bin/psql/startup.c:439,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/psql/startup.c:450,1
    - Dst: pg_logging_config
      Src: /src/postgres/src/bin/psql/startup.c:462,1
    - Dst: connection_warnings
      Src: /src/postgres/src/bin/psql/startup.c:463,1
    - Dst: printf
      Src: /src/postgres/src/bin/psql/startup.c:465,1
    - Dst: _
      Src: /src/postgres/src/bin/psql/startup.c:465,1
    - Dst: initializeInput
      Src: /src/postgres/src/bin/psql/startup.c:466,1
    - Dst: MainLoop
      Src: /src/postgres/src/bin/psql/startup.c:467,1
    - Dst: fclose
      Src: /src/postgres/src/bin/psql/startup.c:472,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/psql/startup.c:474,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/psql/startup.c:476,1
    - Dst: setQFout
      Src: /src/postgres/src/bin/psql/startup.c:477,1
    CyclomaticComplexity: 54
    EdgeCount: 54
    ICount: 196
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 125
    functionDepth: 5
    functionLinenumber: 125
    functionLinenumberEnd: 480
    functionName: main
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - getenv
    - psql_scan_set_passthrough
    - SendQuery
    - set_pglocale_pgservice
    - parse_psql_options
    - pg_logging_set_pre_callback
    - exit
    - conditional_stack_create
    - process_file
    - MainLoop
    - initializeInput
    - PQsetNoticeProcessor
    - psql_scan_destroy
    - psprintf
    - process_psqlrc
    - strlen
    - SetVariableBool
    - conditional_stack_destroy
    - showVersion
    - simple_action_list_append
    - puts
    - pg_logging_init
    - fopen
    - pg_logging_set_locus_callback
    - psql_scan_create
    - fileno
    - PQstatus
    - PQuser
    - _
    - strcmp
    - pg_log_error
    - listAllDbs
    - PQclear
    - connection_warnings
    - PQenv2encoding
    - PQconnectdbParams
    - SyncVariables
    - PQerrorMessage
    - atoi
    - pg_malloc_array
    - simple_prompt
    - PQfinish
    - SetVariable
    - fclose
    - PSQLexec
    - psql_scan_setup
    - isatty
    - setDecimalLocale
    - usage
    - pg_fatal
    - PQconnectionNeedsPassword
    - CppAsString2
    - standard_strings
    - setQFout
    - get_progname
    - refresh_utf8format
    - Assert
    - printf
    - pg_strdup
    - psql_setup_cancel_handler
    - pg_logging_config
    - EstablishVariableSpace
    - pqsignal
    - HandleSlashCmds
    - free
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 52
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/bin/psql/startup.c:534,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/psql/startup.c:536,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/startup.c:542,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/startup.c:548,1
    - Dst: simple_action_list_append
      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: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:561,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/startup.c:564,1
    - Dst: SetVariableBool
      Src: /src/postgres/src/bin/psql/startup.c:567,1
    - Dst: simple_action_list_append
      Src: /src/postgres/src/bin/psql/startup.c:570,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:575,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:588,1
    - Dst: setQFout
      Src: /src/postgres/src/bin/psql/startup.c:594,1
    - Dst: exit
      Src: /src/postgres/src/bin/psql/startup.c:595,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:598,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:606,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/startup.c:607,1
    - Dst: do_pset
      Src: /src/postgres/src/bin/psql/startup.c:609,1
    - Dst: do_pset
      Src: /src/postgres/src/bin/psql/startup.c:613,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/psql/startup.c:617,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/startup.c:619,1
    - Dst: SetVariableBool
      Src: /src/postgres/src/bin/psql/startup.c:623,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:626,1
    - Dst: SetVariableBool
      Src: /src/postgres/src/bin/psql/startup.c:630,1
    - Dst: SetVariableBool
      Src: /src/postgres/src/bin/psql/startup.c:633,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:639,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:642,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:649,1
    - Dst: strchr
      Src: /src/postgres/src/bin/psql/startup.c:650,1
    - Dst: DeleteVariable
      Src: /src/postgres/src/bin/psql/startup.c:653,1
    - Dst: exit
      Src: /src/postgres/src/bin/psql/startup.c:654,1
    - Dst: SetVariable
      Src: /src/postgres/src/bin/psql/startup.c:659,1
    - Dst: exit
      Src: /src/postgres/src/bin/psql/startup.c:660,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/startup.c:663,1
    - Dst: showVersion
      Src: /src/postgres/src/bin/psql/startup.c:667,1
    - Dst: exit
      Src: /src/postgres/src/bin/psql/startup.c:668,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/startup.c:692,1
    - Dst: usage
      Src: /src/postgres/src/bin/psql/startup.c:695,1
    - Dst: exit
      Src: /src/postgres/src/bin/psql/startup.c:696,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/startup.c:706,1
    - Dst: usage
      Src: /src/postgres/src/bin/psql/startup.c:707,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/startup.c:708,1
    - Dst: slashUsage
      Src: /src/postgres/src/bin/psql/startup.c:709,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/psql/startup.c:710,1
    - Dst: helpVariables
      Src: /src/postgres/src/bin/psql/startup.c:711,1
    - Dst: exit
      Src: /src/postgres/src/bin/psql/startup.c:715,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/psql/startup.c:724,1
    - Dst: exit
      Src: /src/postgres/src/bin/psql/startup.c:726,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/psql/startup.c:740,1
    CyclomaticComplexity: 58
    EdgeCount: 58
    ICount: 169
    argCount: 3
    argNames:
    - argc
    - argv
    - options
    argTypes:
    - int
    - char*[]
    - struct adhoc_opts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 487
    functionDepth: 3
    functionLinenumber: 487
    functionLinenumberEnd: 745
    functionName: parse_psql_options
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 1
    functionsReached:
    - pg_log_warning
    - helpVariables
    - exit
    - SetVariableBool
    - showVersion
    - simple_action_list_append
    - DeleteVariable
    - strcmp
    - do_pset
    - SetVariable
    - pg_log_error_hint
    - usage
    - pg_fatal
    - setQFout
    - getopt_long
    - memset
    - pg_strdup
    - slashUsage
    - free
    - strchr
    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:758,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:763,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - list
    - action
    - val
    argTypes:
    - SimpleActionList*
    - enum _actions
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 752
    functionDepth: 1
    functionLinenumber: 752
    functionLinenumberEnd: 772
    functionName: simple_action_list_append
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 2
    functionsReached:
    - pg_strdup
    - pg_malloc_object
    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:785,1
    - Dst: find_my_exec
      Src: /src/postgres/src/bin/psql/startup.c:787,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/psql/startup.c:788,1
    - Dst: get_etc_path
      Src: /src/postgres/src/bin/psql/startup.c:790,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/startup.c:792,1
    - Dst: process_psqlrc_file
      Src: /src/postgres/src/bin/psql/startup.c:793,1
    - Dst: strlen
      Src: /src/postgres/src/bin/psql/startup.c:795,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/psql/startup.c:798,1
    - Dst: expand_tilde
      Src: /src/postgres/src/bin/psql/startup.c:800,1
    - Dst: process_psqlrc_file
      Src: /src/postgres/src/bin/psql/startup.c:801,1
    - Dst: get_home_path
      Src: /src/postgres/src/bin/psql/startup.c:803,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/psql/startup.c:805,1
    - Dst: process_psqlrc_file
      Src: /src/postgres/src/bin/psql/startup.c:806,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - argv0
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 808
      start: 778
    functionDepth: 2
    functionLinenumber: 778
    functionLinenumberEnd: 808
    functionName: process_psqlrc
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 1
    functionsReached:
    - getenv
    - find_my_exec
    - get_home_path
    - process_psqlrc_file
    - get_etc_path
    - snprintf
    - pstrdup
    - pg_fatal
    - expand_tilde
    - strlen
    linkageType: ''
    returnType: void
    signature: void process_psqlrc(char *argv0)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/startup.c:822,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/psql/startup.c:823,1
    - Dst: access
      Src: /src/postgres/src/bin/psql/startup.c:826,1
    - Dst: process_file
      Src: /src/postgres/src/bin/psql/startup.c:827,1
    - Dst: access
      Src: /src/postgres/src/bin/psql/startup.c:828,1
    - Dst: process_file
      Src: /src/postgres/src/bin/psql/startup.c:829,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: free
      Src: /src/postgres/src/bin/psql/startup.c:833,1
    - Dst: free
      Src: /src/postgres/src/bin/psql/startup.c:834,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - filename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 835
      start: 812
    functionDepth: 1
    functionLinenumber: 812
    functionLinenumberEnd: 835
    functionName: process_psqlrc_file
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 1
    functionsReached:
    - free
    - process_file
    - access
    - psprintf
    linkageType: ''
    returnType: void
    signature: void process_psqlrc_file(char *filename)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: puts
      Src: /src/postgres/src/bin/psql/startup.c:846,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 843
    functionDepth: 0
    functionLinenumber: 843
    functionLinenumberEnd: 847
    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:868,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/psql/startup.c:873,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:874,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 862
    functionDepth: 1
    functionLinenumber: 862
    functionLinenumberEnd: 877
    functionName: bool_substitute_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - pg_strdup
    - pg_free
    linkageType: ''
    returnType: char
    signature: 'char *

      bool_substitute_hook(char *newval)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/startup.c:882,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 879
    functionDepth: 2
    functionLinenumber: 879
    functionLinenumberEnd: 883
    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:888,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 889
      start: 885
    functionDepth: 2
    functionLinenumber: 885
    functionLinenumberEnd: 889
    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:894,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 891
    functionDepth: 2
    functionLinenumber: 891
    functionLinenumberEnd: 895
    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:900,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 897
    functionDepth: 2
    functionLinenumber: 897
    functionLinenumberEnd: 901
    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:906,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 903
    functionDepth: 2
    functionLinenumber: 903
    functionLinenumberEnd: 907
    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:913,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 909
    functionDepth: 1
    functionLinenumber: 909
    functionLinenumberEnd: 915
    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:920,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 917
    functionDepth: 2
    functionLinenumber: 917
    functionLinenumberEnd: 921
    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: 931
      start: 923
    functionDepth: 0
    functionLinenumber: 923
    functionLinenumberEnd: 931
    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:937,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 933
    functionDepth: 1
    functionLinenumber: 933
    functionLinenumberEnd: 939
    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:944,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 941
    functionDepth: 2
    functionLinenumber: 941
    functionLinenumberEnd: 945
    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:951,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 947
    functionDepth: 1
    functionLinenumber: 947
    functionLinenumberEnd: 953
    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:958,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 960
      start: 955
    functionDepth: 2
    functionLinenumber: 955
    functionLinenumberEnd: 960
    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:977,1
    - Dst: ParseVariableNum
      Src: /src/postgres/src/bin/psql/startup.c:978,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/psql/startup.c:979,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 962
    functionDepth: 2
    functionLinenumber: 962
    functionLinenumberEnd: 981
    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:986,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 983
    functionDepth: 2
    functionLinenumber: 983
    functionLinenumberEnd: 987
    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:993,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 989
    functionDepth: 1
    functionLinenumber: 989
    functionLinenumberEnd: 995
    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:1000,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1001,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1003,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1005,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1007,1
    - Dst: PsqlVarEnumError
      Src: /src/postgres/src/bin/psql/startup.c:1011,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 997
    functionDepth: 2
    functionLinenumber: 997
    functionLinenumberEnd: 1015
    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:1020,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1021,1
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/startup.c:1027,1
    - Dst: PsqlVarEnumError
      Src: /src/postgres/src/bin/psql/startup.c:1031,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1036
      start: 1017
    functionDepth: 2
    functionLinenumber: 1017
    functionLinenumberEnd: 1036
    functionName: echo_hidden_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - Assert
    - pg_strcasecmp
    - ParseVariableBool
    - PsqlVarEnumError
    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:1041,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1042,1
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/startup.c:1048,1
    - Dst: PsqlVarEnumError
      Src: /src/postgres/src/bin/psql/startup.c:1052,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1038
    functionDepth: 2
    functionLinenumber: 1038
    functionLinenumberEnd: 1057
    functionName: on_error_rollback_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - Assert
    - pg_strcasecmp
    - ParseVariableBool
    - PsqlVarEnumError
    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:1063,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1065
      start: 1059
    functionDepth: 1
    functionLinenumber: 1059
    functionLinenumberEnd: 1065
    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:1070,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1071,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1073,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1075,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1077,1
    - Dst: PsqlVarEnumError
      Src: /src/postgres/src/bin/psql/startup.c:1081,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1086
      start: 1067
    functionDepth: 2
    functionLinenumber: 1067
    functionLinenumberEnd: 1086
    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:1092,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1094
      start: 1088
    functionDepth: 1
    functionLinenumber: 1088
    functionLinenumberEnd: 1094
    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:1099,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1100,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1102,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1104,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1106,1
    - Dst: PsqlVarEnumError
      Src: /src/postgres/src/bin/psql/startup.c:1110,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1115
      start: 1096
    functionDepth: 2
    functionLinenumber: 1096
    functionLinenumberEnd: 1115
    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: 1122
      start: 1117
    functionDepth: 0
    functionLinenumber: 1117
    functionLinenumberEnd: 1122
    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: 1129
      start: 1124
    functionDepth: 0
    functionLinenumber: 1124
    functionLinenumberEnd: 1129
    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: 1136
      start: 1131
    functionDepth: 0
    functionLinenumber: 1131
    functionLinenumberEnd: 1136
    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:1142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1144
      start: 1138
    functionDepth: 1
    functionLinenumber: 1138
    functionLinenumberEnd: 1144
    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:1149,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1150,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1152,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1154,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1156,1
    - Dst: PsqlVarEnumError
      Src: /src/postgres/src/bin/psql/startup.c:1160,1
    - Dst: PQsetErrorVerbosity
      Src: /src/postgres/src/bin/psql/startup.c:1165,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1167
      start: 1146
    functionDepth: 2
    functionLinenumber: 1146
    functionLinenumberEnd: 1167
    functionName: verbosity_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - Assert
    - pg_strcasecmp
    - PQsetErrorVerbosity
    - PsqlVarEnumError
    linkageType: ''
    returnType: bool
    signature: bool verbosity_hook(const char *newval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ParseVariableBool
      Src: /src/postgres/src/bin/psql/startup.c:1172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1173
      start: 1169
    functionDepth: 2
    functionLinenumber: 1169
    functionLinenumberEnd: 1173
    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:1179,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1181
      start: 1175
    functionDepth: 1
    functionLinenumber: 1175
    functionLinenumberEnd: 1181
    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:1186,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1187,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1189,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/psql/startup.c:1191,1
    - Dst: PsqlVarEnumError
      Src: /src/postgres/src/bin/psql/startup.c:1195,1
    - Dst: PQsetErrorContextVisibility
      Src: /src/postgres/src/bin/psql/startup.c:1200,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1202
      start: 1183
    functionDepth: 2
    functionLinenumber: 1183
    functionLinenumberEnd: 1202
    functionName: show_context_hook
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 0
    functionsReached:
    - PQsetErrorContextVisibility
    - Assert
    - 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:1207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1209
      start: 1204
    functionDepth: 2
    functionLinenumber: 1204
    functionLinenumberEnd: 1209
    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:1214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newval
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1215
      start: 1211
    functionDepth: 2
    functionLinenumber: 1211
    functionLinenumberEnd: 1215
    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:1220,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1222,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1225,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1228,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1231,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1234,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1237,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1240,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1243,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1246,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1249,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1252,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1255,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1258,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1261,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1264,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1267,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1270,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1273,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1276,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1279,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1282,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1285,1
    - Dst: SetVariableHooks
      Src: /src/postgres/src/bin/psql/startup.c:1288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1291
      start: 1217
    functionDepth: 2
    functionLinenumber: 1217
    functionLinenumberEnd: 1291
    functionName: EstablishVariableSpace
    functionSourceFile: /src/postgres/src/bin/psql/startup.c
    functionUses: 1
    functionsReached:
    - SetVariableHooks
    - CreateVariableSpace
    linkageType: ''
    returnType: void
    signature: void EstablishVariableSpace(void)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: 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: 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:
    - strspn
    - strchr
    - PQmblenBounded
    - memmove
    - pg_malloc
    - strip_quotes
    - strcspn
    - free
    - strlen
    - 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: 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:
    - Assert
    - pg_malloc
    - free
    - strlen
    - PQmblenBounded
    - strchr
    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:
    - stat
    - exit
    - pg_log_error
    - 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:
    - strcmp
    - strlen
    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:
    - readdir
    - printf
    - IsBackupHistoryFileName
    - closedir
    - snprintf
    - TrimExtension
    - opendir
    - strlcpy
    - pg_fatal
    - IsPartialXLogFileName
    - pg_log_debug
    - unlink
    - strcmp
    - IsXLogFileName
    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:
    - IsBackupHistoryFileName
    - XLogFileNameById
    - sscanf
    - pg_log_error
    - pg_log_error_hint
    - TrimExtension
    - exit
    - IsPartialXLogFileName
    - IsXLogFileName
    - strcpy
    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: 12
    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: Initialize
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:381,1
    - Dst: SetWALFileNameForCleanup
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:386,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:388,1
    - Dst: CleanupPriorWALFiles
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:394,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c:396,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 59
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 286
    functionDepth: 2
    functionLinenumber: 286
    functionLinenumberEnd: 397
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_archivecleanup/pg_archivecleanup.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - getopt_long
    - pg_logging_increase_verbosity
    - pg_strdup
    - puts
    - pg_logging_init
    - set_pglocale_pgservice
    - pg_log_error_hint
    - SetWALFileNameForCleanup
    - CleanupPriorWALFiles
    - exit
    - usage
    - pg_log_debug
    - strcmp
    - pg_log_error
    - Initialize
    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
    - PQresultStatus
    - set_pglocale_pgservice
    - handle_help_version_opts
    - exit
    - PQclientEncoding
    - pg_logging_init
    - fmtIdEnc
    - _
    - PQclear
    - yesno_prompt
    - pg_log_error
    - PQexec
    - PQerrorMessage
    - simple_prompt
    - PQfinish
    - pg_log_error_hint
    - get_progname
    - getopt_long
    - printf
    - connectMaintenanceDatabase
    - pg_strdup
    - appendPQExpBuffer
    - initPQExpBuffer
    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
    - getenv
    - appendPQExpBufferChar
    - PQresultStatus
    - PQfreemem
    - set_pglocale_pgservice
    - fprintf
    - handle_help_version_opts
    - exit
    - PQclientEncoding
    - pg_logging_init
    - appendPQExpBufferStr
    - get_user_name_or_exit
    - _
    - PQclear
    - strcmp
    - pg_log_error
    - yesno_prompt
    - PQerrorMessage
    - PQexec
    - simple_prompt
    - PQfinish
    - initPQExpBuffer
    - pg_log_error_hint
    - option_parse_int
    - setFmtEncoding
    - PQencryptPasswordConn
    - pg_fatal
    - fmtId
    - get_progname
    - getopt_long
    - printf
    - connectMaintenanceDatabase
    - pg_strdup
    - appendStringLiteralConn
    - printfPQExpBuffer
    - appendPQExpBuffer
    - simple_string_list_append
    - free
    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:
    - pnstrdup
    - PQmblenBounded
    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:
    - PQclientEncoding
    - PQntuples
    - PQfinish
    - splitTableColumnsSpec
    - appendStringLiteralConn
    - appendPQExpBufferStr
    - executeQuery
    - PQgetvalue
    - termPQExpBuffer
    - exit
    - executeCommand
    - PQclear
    - fmtQualifiedIdEnc
    - pg_log_error
    - ngettext
    - initPQExpBuffer
    - pg_free
    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:
    - printf
    - simple_prompt
    - snprintf
    - _
    - strcmp
    - free
    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
    - getopt_long
    - getenv
    - reindex_one_database
    - pg_strdup
    - pg_logging_init
    - set_pglocale_pgservice
    - pg_log_error_hint
    - option_parse_int
    - handle_help_version_opts
    - simple_string_list_append
    - exit
    - setup_cancel_handler
    - pg_fatal
    - reindex_all_databases
    - get_user_name_or_exit
    - pg_log_error
    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
      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: 116
    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:
    - ParallelSlotsWaitCompletion
    - appendPQExpBufferChar
    - ParallelSlotSetHandler
    - run_reindex_command
    - termPQExpBuffer
    - gen_reindex_command
    - ParallelSlotsSetup
    - exit
    - pg_malloc0
    - Min
    - pfree
    - simple_string_list_destroy
    - pg_free
    - PQserverVersion
    - PQfinish
    - get_parallel_tables_list
    - connectDatabase
    - PQdb
    - ParallelSlotsAdoptConn
    - pg_fatal
    - Assert
    - simple_oid_list_destroy
    - simple_string_list_append
    - get_parallel_tabidx_list
    - ParallelSlotsGetIdle
    - ParallelSlotsTerminate
    - initPQExpBuffer
    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:
    - PQclientEncoding
    - Assert
    - appendPQExpBufferChar
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - fmtIdEnc
    - appendQualifiedRelation
    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:
    - printf
    - PQerrorMessage
    - PQdb
    - PQsendQuery
    - pg_log_error
    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
      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:
    - appendPQExpBufferChar
    - Assert
    - PQclientEncoding
    - PQntuples
    - termPQExpBuffer
    - appendPQExpBufferStr
    - appendStringLiteralConn
    - executeQuery
    - PQgetvalue
    - simple_string_list_append
    - pg_malloc0
    - PQclear
    - fmtQualifiedIdEnc
    - CppAsString2
    - initPQExpBuffer
    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
      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:
    - PQclientEncoding
    - Assert
    - simple_string_list_destroy
    - PQntuples
    - simple_oid_list_append
    - atooid
    - termPQExpBuffer
    - appendPQExpBufferStr
    - executeQuery
    - PQgetvalue
    - simple_string_list_append
    - pg_malloc0
    - PQclear
    - appendQualifiedRelation
    - fmtQualifiedIdEnc
    - initPQExpBuffer
    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:
    - printf
    - fflush
    - reindex_one_database
    - PQntuples
    - connectMaintenanceDatabase
    - PQfinish
    - executeQuery
    - PQgetvalue
    - _
    - PQclear
    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
    - getopt_long
    - cluster_all_databases
    - getenv
    - cluster_one_database
    - pg_strdup
    - pg_logging_init
    - set_pglocale_pgservice
    - pg_log_error_hint
    - handle_help_version_opts
    - simple_string_list_append
    - exit
    - setup_cancel_handler
    - pg_fatal
    - get_user_name_or_exit
    - pg_log_error
    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:
    - appendPQExpBufferChar
    - PQerrorMessage
    - PQfinish
    - termPQExpBuffer
    - appendPQExpBufferStr
    - connectDatabase
    - PQdb
    - exit
    - executeMaintenanceCommand
    - appendQualifiedRelation
    - pg_log_error
    - initPQExpBuffer
    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:
    - printf
    - fflush
    - cluster_one_database
    - PQntuples
    - connectMaintenanceDatabase
    - PQfinish
    - executeQuery
    - PQgetvalue
    - _
    - PQclear
    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: 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
    - get_progname
    - getopt_long
    - printf
    - PQconninfoParse
    - pg_strdup
    - pg_logging_init
    - set_pglocale_pgservice
    - pg_log_error_hint
    - PQconndefaults
    - handle_help_version_opts
    - exit
    - _
    - PQpingParams
    - strcmp
    - pg_log_error
    - strncmp
    - strchr
    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
    - getenv
    - set_pglocale_pgservice
    - handle_help_version_opts
    - exit
    - PQclientEncoding
    - pg_logging_init
    - appendPQExpBufferStr
    - get_user_name_or_exit
    - strcmp
    - pg_log_error
    - pg_log_error_hint
    - setFmtEncoding
    - pg_fatal
    - fmtId
    - get_progname
    - getopt_long
    - connectMaintenanceDatabase
    - pg_strdup
    - appendStringLiteralConn
    - appendPQExpBuffer
    - pg_char_to_encoding
    - initPQExpBuffer
    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
    - PQresultStatus
    - set_pglocale_pgservice
    - handle_help_version_opts
    - exit
    - PQclientEncoding
    - pg_logging_init
    - fmtIdEnc
    - _
    - PQclear
    - strcmp
    - yesno_prompt
    - pg_log_error
    - PQexec
    - PQerrorMessage
    - PQfinish
    - pg_log_error_hint
    - get_progname
    - getopt_long
    - printf
    - connectMaintenanceDatabase
    - pg_strdup
    - appendPQExpBuffer
    - initPQExpBuffer
    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: 61
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:161,1
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:170,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:171,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:172,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:172,1
    - Dst: handle_help_version_opts
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:174,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:176,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:185,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:197,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:200,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:202,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:206,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:210,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:213,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:216,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:218,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:225,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:229,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:247,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:259,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:261,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:264,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:266,1
    - Dst: escape_quotes
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:284,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:291,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:292,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:309,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:311,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:312,1
    - Dst: check_objfilter
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:319,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:324,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:327,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:330,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:333,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:336,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:342,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:345,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:354,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:357,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:363,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:371,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:379,1
    - Dst: setup_cancel_handler
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:389,1
    - Dst: vacuum_all_databases
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:399,1
    - Dst: getenv
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:409,1
    - Dst: getenv
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:410,1
    - Dst: getenv
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:411,1
    - Dst: getenv
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:412,1
    - Dst: get_user_name_or_exit
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:414,1
    - Dst: vacuum_one_database
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:426,1
    - Dst: vacuum_one_database
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:435,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:442,1
    CyclomaticComplexity: 68
    EdgeCount: 68
    ICount: 194
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 443
    functionName: main
    functionSourceFile: /src/postgres/src/bin/scripts/vacuumdb.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - getenv
    - vacuum_all_databases
    - set_pglocale_pgservice
    - handle_help_version_opts
    - exit
    - pg_logging_init
    - setup_cancel_handler
    - get_user_name_or_exit
    - pg_log_error
    - escape_quotes
    - pg_log_error_hint
    - option_parse_int
    - pg_fatal
    - get_progname
    - getopt_long
    - memset
    - pg_strdup
    - simple_string_list_append
    - vacuum_one_database
    - check_objfilter
    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:453,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:457,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:461,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:465,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 448
    functionDepth: 0
    functionLinenumber: 448
    functionLinenumberEnd: 466
    functionName: check_objfilter
    functionSourceFile: /src/postgres/src/bin/scripts/vacuumdb.c
    functionUses: 1
    functionsReached:
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void check_objfilter(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: escape_single_quotes_ascii
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:475,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:478,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - src
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 472
    functionDepth: 1
    functionLinenumber: 472
    functionLinenumberEnd: 480
    functionName: escape_quotes
    functionSourceFile: /src/postgres/src/bin/scripts/vacuumdb.c
    functionUses: 6
    functionsReached:
    - escape_single_quotes_ascii
    - pg_fatal
    linkageType: ''
    returnType: char
    signature: 'char *

      escape_quotes(const char *src)'
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:545,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:546,1
    - Dst: gettext_noop
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:547,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:550,1
    - Dst: connectDatabase
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:553,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:555,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:557,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:558,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:562,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:564,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:565,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:569,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:571,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:572,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:576,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:578,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:579,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:583,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:585,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:586,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:590,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:592,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:593,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:597,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:599,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:600,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:604,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:606,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:607,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:611,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:613,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:614,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:618,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:620,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:621,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:625,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:627,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:628,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:632,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:634,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:635,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:640,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:645,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:645,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:646,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:646,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:648,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:648,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:649,1
    - Dst: fflush
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:650,1
    - Dst: retrieve_objects
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:662,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:676,1
    - Dst: executeCommand
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:699,1
    - Dst: ParallelSlotsSetup
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:707,1
    - Dst: ParallelSlotsAdoptConn
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:708,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:710,1
    - Dst: ParallelSlotsGetIdle
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:724,1
    - Dst: prepare_vacuum_command
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:731,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:731,1
    - Dst: ParallelSlotSetHandler
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:738,1
    - Dst: run_vacuum_command
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:739,1
    - Dst: ParallelSlotsWaitCompletion
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:745,1
    - Dst: ParallelSlotsGetIdle
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:755,1
    - Dst: ParallelSlotSetHandler
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:763,1
    - Dst: run_vacuum_command
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:764,1
    - Dst: ParallelSlotsWaitCompletion
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:766,1
    - Dst: ParallelSlotsTerminate
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:771,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:772,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:774,1
    - Dst: exit
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:777,1
    CyclomaticComplexity: 49
    EdgeCount: 49
    ICount: 123
    argCount: 9
    argNames:
    - cparams
    - vacopts
    - stage
    - objects
    - found_objs
    - concurrentCons
    - progname
    - echo
    - quiet
    argTypes:
    - ConnParams*
    - vacuumingOptions*
    - int
    - SimpleStringList*
    - SimpleStringList**
    - int
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 522
    functionDepth: 1
    functionLinenumber: 522
    functionLinenumberEnd: 778
    functionName: vacuum_one_database
    functionSourceFile: /src/postgres/src/bin/scripts/vacuumdb.c
    functionUses: 1
    functionsReached:
    - ParallelSlotsWaitCompletion
    - ParallelSlotSetHandler
    - termPQExpBuffer
    - ParallelSlotsSetup
    - exit
    - prepare_vacuum_command
    - _
    - gettext_noop
    - pg_free
    - fflush
    - PQserverVersion
    - PQfinish
    - connectDatabase
    - PQdb
    - ParallelSlotsAdoptConn
    - pg_fatal
    - run_vacuum_command
    - printf
    - Assert
    - retrieve_objects
    - ParallelSlotsGetIdle
    - executeCommand
    - ParallelSlotsTerminate
    - initPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void 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,
      bool echo, bool quiet)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:800,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:803,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:811,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:817,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:821,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:822,1
    - Dst: splitTableColumnsSpec
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:833,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:833,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:836,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:837,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:841,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:843,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:845,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:847,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:852,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:854,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:857,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:859,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:865,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:875,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:880,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:882,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:888,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:890,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:899,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:902,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:914,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:916,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:917,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:929,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:940,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:951,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:954,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:966,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:975,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:991,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1007,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1019,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1026,1
    - Dst: executeCommand
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1027,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1028,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1029,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1030,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1030,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1036,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1037,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1039,1
    - Dst: fmtQualifiedIdEnc
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1040,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1040,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1041,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1042,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1044,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1045,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1045,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1047,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1048,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1050,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1051,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 75
    argCount: 4
    argNames:
    - conn
    - vacopts
    - objects
    - echo
    argTypes:
    - PGconn*
    - vacuumingOptions*
    - SimpleStringList*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 792
    functionDepth: 2
    functionLinenumber: 792
    functionLinenumberEnd: 1054
    functionName: retrieve_objects
    functionSourceFile: /src/postgres/src/bin/scripts/vacuumdb.c
    functionUses: 1
    functionsReached:
    - splitTableColumnsSpec
    - termPQExpBuffer
    - PQgetvalue
    - resetPQExpBuffer
    - PQclientEncoding
    - appendPQExpBufferStr
    - PQclear
    - pg_free
    - PQntuples
    - initPQExpBuffer
    - fmtQualifiedIdEnc
    - CppAsString2
    - appendStringLiteralConn
    - palloc0
    - appendPQExpBuffer
    - executeQuery
    - simple_string_list_append
    - PQgetisnull
    - executeCommand
    linkageType: ''
    returnType: SimpleStringList
    signature: "SimpleStringList *\nretrieve_objects(PGconn *conn, vacuumingOptions
      *vacopts,\n\t\t\t\t SimpleStringList *objects, bool echo)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: connectMaintenanceDatabase
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1076,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1077,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1080,1
    - Dst: palloc0
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1087,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1087,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1099,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1101,1
    - Dst: vacuum_one_database
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1103,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1114,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1116,1
    - Dst: vacuum_one_database
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1118,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1126,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 8
    argNames:
    - cparams
    - vacopts
    - analyze_in_stages
    - objects
    - concurrentCons
    - progname
    - echo
    - quiet
    argTypes:
    - ConnParams*
    - vacuumingOptions*
    - bool
    - SimpleStringList*
    - int
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1063
    functionDepth: 2
    functionLinenumber: 1063
    functionLinenumberEnd: 1127
    functionName: vacuum_all_databases
    functionSourceFile: /src/postgres/src/bin/scripts/vacuumdb.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - connectMaintenanceDatabase
    - PQfinish
    - executeQuery
    - palloc0
    - PQgetvalue
    - vacuum_one_database
    - PQclear
    linkageType: ''
    returnType: void
    signature: "void vacuum_all_databases(ConnParams *cparams,\n\t\t\t\t\t vacuumingOptions
      *vacopts,\n\t\t\t\t\t bool analyze_in_stages,\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, bool echo, bool quiet)"
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1144,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1148,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1156,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1157,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1162,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1167,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1168,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1173,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1178,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1183,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1191,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1192,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1198,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1199,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1200,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1206,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1207,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1208,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1214,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1215,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1221,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1222,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1228,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1229,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1235,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1236,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1242,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1243,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1248,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1253,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1258,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1263,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1269,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1270,1
    - Dst: Assert
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1276,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1277,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1282,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1287,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1289,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1291,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1293,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1297,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 110
    argCount: 4
    argNames:
    - sql
    - serverVersion
    - vacopts
    - table
    argTypes:
    - PQExpBuffer
    - int
    - vacuumingOptions*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1298
      start: 1136
    functionDepth: 1
    functionLinenumber: 1136
    functionLinenumberEnd: 1298
    functionName: prepare_vacuum_command
    functionSourceFile: /src/postgres/src/bin/scripts/vacuumdb.c
    functionUses: 1
    functionsReached:
    - appendPQExpBufferChar
    - Assert
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - resetPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void prepare_vacuum_command(PQExpBuffer sql, int serverVersion,\n\t\t\t\t\t
      \  vacuumingOptions *vacopts, const char *table)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1313,1
    - Dst: PQsendQuery
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1315,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1320,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1321,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1321,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1323,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1324,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1324,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - conn
    - sql
    - echo
    - table
    argTypes:
    - PGconn*
    - char*
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1326
      start: 1306
    functionDepth: 1
    functionLinenumber: 1306
    functionLinenumberEnd: 1326
    functionName: run_vacuum_command
    functionSourceFile: /src/postgres/src/bin/scripts/vacuumdb.c
    functionUses: 1
    functionsReached:
    - printf
    - PQerrorMessage
    - PQdb
    - PQsendQuery
    - pg_log_error
    linkageType: ''
    returnType: void
    signature: "void run_vacuum_command(PGconn *conn, const char *sql, bool echo,\n\t\t\t\t
      \  const char *table)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1331,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1331,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1332,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1332,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1333,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1333,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1334,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1334,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1335,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1335,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1336,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1336,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1337,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1337,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1338,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1338,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1339,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1339,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1340,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1340,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1341,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1341,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1342,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1342,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1343,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1343,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1344,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1344,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1345,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1345,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1346,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1346,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1347,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1347,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1348,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1348,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1349,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1349,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1350,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1350,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1351,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1351,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1352,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1352,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1353,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1353,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1354,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1354,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1355,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1355,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1356,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1356,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1357,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1357,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1358,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1358,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1359,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1359,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1360,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1360,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1361,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1361,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1363,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1363,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1364,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1364,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1365,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1365,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1366,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1366,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1367,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1367,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1368,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1368,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1369,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1369,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1370,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1370,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1371,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1371,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1372,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1372,1
    - Dst: printf
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1373,1
    - Dst: _
      Src: /src/postgres/src/bin/scripts/vacuumdb.c:1373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 43
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1374
      start: 1328
    functionDepth: 0
    functionLinenumber: 1328
    functionLinenumberEnd: 1374
    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:43,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:44,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:51,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_upgrade/file.c:54,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:56,1
    - Dst: ioctl
      Src: /src/postgres/src/bin/pg_upgrade/file.c:59,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_upgrade/file.c:63,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:65,1
    - Dst: strerror
      Src: /src/postgres/src/bin/pg_upgrade/file.c:66,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/file.c:69,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/file.c:70,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 4
    argNames:
    - src
    - dst
    - schemaName
    - relName
    argTypes:
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 72
    functionName: cloneFile
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/file.c
    functionUses: 0
    functionsReached:
    - copyfile
    - ioctl
    - close
    - open
    - strerror
    - pg_fatal
    - unlink
    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:90,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:91,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_upgrade/file.c:94,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:96,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_upgrade/file.c:102,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_upgrade/file.c:107,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:110,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_upgrade/file.c:117,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:122,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/file.c:127,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/file.c:128,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/file.c:129,1
    - Dst: CopyFile
      Src: /src/postgres/src/bin/pg_upgrade/file.c:133,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/bin/pg_upgrade/file.c:135,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_upgrade/file.c:135,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:136,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 4
    argNames:
    - src
    - dst
    - schemaName
    - relName
    argTypes:
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 141
    functionName: copyFile
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/file.c
    functionUses: 0
    functionsReached:
    - write
    - close
    - open
    - GetLastError
    - pg_malloc
    - CopyFile
    - _dosmaperr
    - read
    - pg_fatal
    - pg_free
    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:159,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:160,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_upgrade/file.c:163,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:165,1
    - Dst: copy_file_range
      Src: /src/postgres/src/bin/pg_upgrade/file.c:170,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:172,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/file.c:177,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/file.c:178,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - src
    - dst
    - schemaName
    - relName
    argTypes:
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 180
    functionName: copyFileByRange
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/file.c
    functionUses: 0
    functionsReached:
    - copy_file_range
    - close
    - open
    - 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:193,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:194,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 4
    argNames:
    - src
    - dst
    - schemaName
    - relName
    argTypes:
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 196
    functionName: linkFile
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/file.c
    functionUses: 0
    functionsReached:
    - link
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: "void linkFile(const char *src, const char *dst,\n\t\t const char *schemaName,
      const char *relName)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/postgres/src/bin/pg_upgrade/file.c:232,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:233,1
    - Dst: fstat
      Src: /src/postgres/src/bin/pg_upgrade/file.c:236,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:237,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_upgrade/file.c:240,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:242,1
    - Dst: read
      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: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:269,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_upgrade/file.c:277,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_upgrade/file.c:296,1
    - Dst: pg_checksum_page
      Src: /src/postgres/src/bin/pg_upgrade/file.c:336,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_upgrade/file.c:339,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:344,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/file.c:355,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/file.c:356,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 53
    argCount: 4
    argNames:
    - fromfile
    - tofile
    - schemaName
    - relName
    argTypes:
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 357
    functionName: rewriteVisibilityMap
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/file.c
    functionUses: 0
    functionsReached:
    - write
    - close
    - open
    - fstat
    - read
    - pg_fatal
    - pg_checksum_page
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void rewriteVisibilityMap(const char *fromfile, const char *tofile,\n\t\t\t\t\t
      const char *schemaName, const char *relName)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/file.c:365,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/file.c:366,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_upgrade/file.c:367,1
    - Dst: copyfile
      Src: /src/postgres/src/bin/pg_upgrade/file.c:370,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:371,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_upgrade/file.c:377,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:378,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_upgrade/file.c:381,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:383,1
    - Dst: ioctl
      Src: /src/postgres/src/bin/pg_upgrade/file.c:386,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:387,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/file.c:389,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/file.c:390,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:393,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_upgrade/file.c:396,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 359
    functionDepth: 1
    functionLinenumber: 359
    functionLinenumberEnd: 397
    functionName: check_file_clone
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/file.c
    functionUses: 0
    functionsReached:
    - copyfile
    - ioctl
    - snprintf
    - open
    - close
    - pg_fatal
    - unlink
    linkageType: ''
    returnType: void
    signature: void check_file_clone(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/file.c:405,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/file.c:406,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_upgrade/file.c:407,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_upgrade/file.c:414,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:415,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_upgrade/file.c:418,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:420,1
    - Dst: copy_file_range
      Src: /src/postgres/src/bin/pg_upgrade/file.c:423,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:424,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/file.c:426,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/file.c:427,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:430,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_upgrade/file.c:433,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 399
    functionDepth: 1
    functionLinenumber: 399
    functionLinenumberEnd: 434
    functionName: check_copy_file_range
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/file.c
    functionUses: 0
    functionsReached:
    - snprintf
    - open
    - close
    - copy_file_range
    - pg_fatal
    - unlink
    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:442,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/file.c:443,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_upgrade/file.c:444,1
    - Dst: link
      Src: /src/postgres/src/bin/pg_upgrade/file.c:446,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:449,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:452,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/file.c:455,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_upgrade/file.c:458,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - transfer_mode
    argTypes:
    - transferMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 436
    functionDepth: 0
    functionLinenumber: 436
    functionLinenumberEnd: 459
    functionName: check_hard_link
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/file.c
    functionUses: 0
    functionsReached:
    - unlink
    - link
    - snprintf
    - pg_fatal
    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:75,1
    - Dst: vsnprintf
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:76,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:77,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:81,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:87,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:93,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:101,1
    - Dst: reap_child
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:107,1
    - Dst: reap_child
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:112,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:118,1
    - Dst: fork
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:121,1
    - Dst: _exit
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:124,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:124,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:127,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:133,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:134,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:135,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:136,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:137,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:138,1
    - Dst: _beginthreadex
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:140,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:143,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: 148
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 148
    functionName: parallel_exec_prog
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/parallel.c
    functionUses: 0
    functionsReached:
    - _exit
    - vsnprintf
    - reap_child
    - fflush
    - va_end
    - pg_strdup
    - fork
    - pg_malloc
    - exec_prog
    - _beginthreadex
    - pg_fatal
    - pg_malloc0
    - va_start
    - pg_free
    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:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - args
    argTypes:
    - exec_thread_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 161
    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:184,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:190,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:196,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:204,1
    - Dst: reap_child
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:210,1
    - Dst: reap_child
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:215,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:221,1
    - Dst: fork
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:224,1
    - Dst: transfer_all_new_dbs
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:227,1
    - Dst: _exit
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:231,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:235,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:243,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:244,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:245,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:246,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:247,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:248,1
    - Dst: _beginthreadex
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:250,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:253,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 5
    argNames:
    - old_db_arr
    - new_db_arr
    - old_pgdata
    - new_pgdata
    - old_tablespace
    argTypes:
    - DbInfoArr*
    - DbInfoArr*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 258
    functionName: parallel_transfer_all_new_dbs
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/parallel.c
    functionUses: 0
    functionsReached:
    - _exit
    - reap_child
    - fflush
    - pg_strdup
    - transfer_all_new_dbs
    - fork
    - pg_malloc
    - _beginthreadex
    - pg_fatal
    - pg_malloc0
    - pg_free
    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)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: transfer_all_new_dbs
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - args
    argTypes:
    - transfer_thread_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 270
    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:292,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:294,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:298,1
    - Dst: WaitForMultipleObjects
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:301,1
    - Dst: GetExitCodeThread
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:311,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:313,1
    - Dst: CloseHandle
      Src: /src/postgres/src/bin/pg_upgrade/parallel.c:316,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 1
    argNames:
    - wait_for_child
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 277
    functionDepth: 1
    functionLinenumber: 277
    functionLinenumberEnd: 341
    functionName: reap_child
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/parallel.c
    functionUses: 2
    functionsReached:
    - WaitForMultipleObjects
    - pg_fatal
    - CloseHandle
    - waitpid
    - GetExitCodeThread
    linkageType: ''
    returnType: bool
    signature: bool reap_child(bool wait_for_child)
  - BBCount: 2
    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: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:28,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 30
    functionName: init_tablespaces
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/tablespace.c
    functionUses: 0
    functionsReached:
    - get_tablespace_paths
    - strcmp
    - set_tablespace_directory_suffix
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void init_tablespaces(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:42,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:48,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:54,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:56,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:58,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:62,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:68,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:68,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:79,1
    - Dst: report_status
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:82,1
    - Dst: report_status
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:86,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:90,1
    - Dst: report_status
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:91,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:96,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:98,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 99
    functionName: get_tablespace_paths
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/tablespace.c
    functionUses: 1
    functionsReached:
    - connectToServer
    - report_status
    - PQntuples
    - stat
    - PQfinish
    - pg_strdup
    - snprintf
    - S_ISDIR
    - PQgetvalue
    - pg_malloc
    - PQfnumber
    - PQclear
    - executeQueryOrDie
    linkageType: ''
    returnType: void
    signature: void get_tablespace_paths(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_upgrade/tablespace.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 111
    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
      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:
    - createPQExpBuffer
    - upgrade_task_add_step
    - pg_malloc0
    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:
    - destroyPQExpBuffer
    - pg_free
    linkageType: ''
    returnType: void
    signature: void upgrade_task_free(UpgradeTask *task)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_realloc
      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:
    - appendPQExpBuffer
    - pg_realloc
    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: 3
    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: PQconnectStart
      Src: /src/postgres/src/bin/pg_upgrade/task.c:192,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/task.c:195,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/task.c:197,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - cluster
    - slot
    argTypes:
    - ClusterInfo*
    - UpgradeTaskSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 198
    functionName: start_conn
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/task.c
    functionUses: 0
    functionsReached:
    - appendConnStrVal
    - PQconnectStart
    - appendPQExpBufferStr
    - termPQExpBuffer
    - appendPQExpBuffer
    - pg_fatal
    - initPQExpBuffer
    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:211,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/pg_upgrade/task.c:213,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_upgrade/task.c:214,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_upgrade/task.c:215,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/task.c:216,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_upgrade/task.c:216,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/task.c:227,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 3
    argNames:
    - cluster
    - slot
    - task
    argTypes:
    - ClusterInfo*
    - UpgradeTaskSlot*
    - UpgradeTask*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 228
    functionName: process_query_result
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/task.c
    functionUses: 0
    functionsReached:
    - PQerrorMessage
    - PQresultStatus
    - PQgetResult
    - pg_fatal
    - PQstatus
    - PQclear
    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:258,1
    - Dst: PQconnectPoll
      Src: /src/postgres/src/bin/pg_upgrade/task.c:265,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/task.c:267,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_upgrade/task.c:267,1
    - Dst: PQsendQuery
      Src: /src/postgres/src/bin/pg_upgrade/task.c:281,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/task.c:282,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_upgrade/task.c:282,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/bin/pg_upgrade/task.c:292,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/task.c:293,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_upgrade/task.c:293,1
    - Dst: PQisBusy
      Src: /src/postgres/src/bin/pg_upgrade/task.c:302,1
    - Dst: process_query_result
      Src: /src/postgres/src/bin/pg_upgrade/task.c:305,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/task.c:316,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_upgrade/task.c:317,1
    - Dst: process_slot
      Src: /src/postgres/src/bin/pg_upgrade/task.c:320,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 3
    argNames:
    - cluster
    - slot
    - task
    argTypes:
    - ClusterInfo*
    - UpgradeTaskSlot*
    - UpgradeTask*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 233
    functionDepth: 2
    functionLinenumber: 233
    functionLinenumberEnd: 324
    functionName: process_slot
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/task.c
    functionUses: 1
    functionsReached:
    - PQerrorMessage
    - memset
    - PQfinish
    - process_query_result
    - PQconsumeInput
    - process_slot
    - pg_fatal
    - PQconnectPoll
    - PQsendQuery
    - PQisBusy
    - start_conn
    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:345,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/bin/pg_upgrade/task.c:351,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 3
    argNames:
    - maxFd
    - input
    - output
    argTypes:
    - int
    - fd_set*
    - fd_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 329
    functionDepth: 1
    functionLinenumber: 329
    functionLinenumberEnd: 356
    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:369,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/bin/pg_upgrade/task.c:370,1
    - Dst: PQsocket
      Src: /src/postgres/src/bin/pg_upgrade/task.c:393,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/task.c:395,1
    - Dst: FD_SET
      Src: /src/postgres/src/bin/pg_upgrade/task.c:396,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_upgrade/task.c:397,1
    - Dst: select_loop
      Src: /src/postgres/src/bin/pg_upgrade/task.c:403,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/task.c:404,1
    - Dst: FD_ISSET
      Src: /src/postgres/src/bin/pg_upgrade/task.c:410,1
    - Dst: FD_ISSET
      Src: /src/postgres/src/bin/pg_upgrade/task.c:411,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - slots
    - numslots
    argTypes:
    - UpgradeTaskSlot*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 362
    functionDepth: 1
    functionLinenumber: 362
    functionLinenumberEnd: 412
    functionName: wait_on_slots
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/task.c
    functionUses: 0
    functionsReached:
    - select_loop
    - FD_ISSET
    - PQsocket
    - Max
    - pg_fatal
    - FD_SET
    - 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:421,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_upgrade/task.c:422,1
    - Dst: process_slot
      Src: /src/postgres/src/bin/pg_upgrade/task.c:436,1
    - Dst: wait_on_slots
      Src: /src/postgres/src/bin/pg_upgrade/task.c:438,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/task.c:441,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - task
    - cluster
    argTypes:
    - UpgradeTask*
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 418
    functionDepth: 3
    functionLinenumber: 418
    functionLinenumberEnd: 442
    functionName: upgrade_task_run
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/task.c
    functionUses: 0
    functionsReached:
    - Max
    - process_slot
    - pg_malloc0
    - wait_on_slots
    - pg_free
    linkageType: ''
    returnType: void
    signature: void upgrade_task_run(const UpgradeTask *task, const ClusterInfo *cluster)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:42,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:43,1
    - Dst: popen
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:45,1
    - Dst: fgets
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:46,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:47,1
    - Dst: pclose
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:49,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:51,1
    - Dst: wait_result_to_str
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:52,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:54,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:55,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 67
    functionName: get_bin_version
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/exec.c
    functionUses: 0
    functionsReached:
    - fflush
    - pclose
    - wait_result_to_str
    - snprintf
    - sscanf
    - popen
    - pg_fatal
    - fgets
    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:102,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:105,1
    - Dst: va_start
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:108,1
    - Dst: vsnprintf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:109,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:110,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:112,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:113,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:116,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:118,1
    - Dst: GetCurrentThreadId
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:131,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:133,1
    - Dst: system
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:134,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:138,1
    - Dst: pg_usleep
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:153,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:154,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:160,1
    - Dst: GetCurrentThreadId
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:164,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:165,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:167,1
    - Dst: GetCurrentThreadId
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:170,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:171,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:178,1
    - Dst: GetCurrentThreadId
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:182,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:185,1
    - Dst: system
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:186,1
    - Dst: report_status
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:192,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:193,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:195,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:197,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:202,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:217,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:218,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:219,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:220,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: 224
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 224
    functionName: exec_prog
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/exec.c
    functionUses: 2
    functionsReached:
    - vsnprintf
    - pg_log
    - fflush
    - report_status
    - GetCurrentThreadId
    - fclose
    - va_end
    - snprintf
    - pg_usleep
    - fprintf
    - fopen
    - pg_fatal
    - va_start
    - system
    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:238,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:240,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:244,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:249,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - datadir
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 251
    functionName: pid_lock_file_exists
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/exec.c
    functionUses: 0
    functionsReached:
    - snprintf
    - open
    - pg_fatal
    - close
    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:266,1
    - Dst: win32_check_directory_write_permissions
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:268,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:270,1
    - Dst: check_bin_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:272,1
    - Dst: check_data_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:273,1
    - Dst: check_bin_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:274,1
    - Dst: check_data_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:275,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 276
    functionName: verify_directories
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/exec.c
    functionUses: 0
    functionsReached:
    - check_bin_dir
    - access
    - 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:296,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:298,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:300,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 301
    functionName: win32_check_directory_write_permissions
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/exec.c
    functionUses: 1
    functionsReached:
    - unlink
    - close
    - open
    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:317,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:322,1
    - Dst: report_status
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:323,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:325,1
    - Dst: report_status
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:326,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - pg_data
    - subdir
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 311
    functionDepth: 1
    functionLinenumber: 311
    functionLinenumberEnd: 328
    functionName: check_single_dir
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/exec.c
    functionUses: 0
    functionsReached:
    - stat
    - snprintf
    - report_status
    - S_ISDIR
    linkageType: ''
    returnType: void
    signature: void check_single_dir(const char *pg_data, const char *subdir)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_major_server_version
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:346,1
    - Dst: check_single_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:348,1
    - Dst: check_single_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:349,1
    - Dst: check_single_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:350,1
    - Dst: check_single_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:351,1
    - Dst: check_single_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:352,1
    - Dst: check_single_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:353,1
    - Dst: check_single_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:354,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:357,1
    - Dst: check_single_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:358,1
    - Dst: check_single_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:360,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:363,1
    - Dst: check_single_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:364,1
    - Dst: check_single_dir
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:366,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 340
    functionDepth: 2
    functionLinenumber: 340
    functionLinenumberEnd: 367
    functionName: check_data_dir
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/exec.c
    functionUses: 1
    functionsReached:
    - check_single_dir
    - get_major_server_version
    - GET_MAJOR_VERSION
    linkageType: ''
    returnType: void
    signature: void check_data_dir(ClusterInfo *cluster)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:388,1
    - Dst: report_status
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:389,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:391,1
    - Dst: report_status
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:392,1
    - Dst: check_exec
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:395,1
    - Dst: check_exec
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:396,1
    - Dst: check_exec
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:397,1
    - Dst: get_bin_version
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:404,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:407,1
    - Dst: check_exec
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:408,1
    - Dst: check_exec
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:410,1
    - Dst: check_exec
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:419,1
    - Dst: check_exec
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:420,1
    - Dst: check_exec
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:421,1
    - Dst: check_exec
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:422,1
    - Dst: check_exec
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:423,1
    - Dst: check_exec
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:424,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - cluster
    - check_versions
    argTypes:
    - ClusterInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 382
    functionDepth: 2
    functionLinenumber: 382
    functionLinenumberEnd: 426
    functionName: check_bin_dir
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/exec.c
    functionUses: 1
    functionsReached:
    - report_status
    - get_bin_version
    - stat
    - GET_MAJOR_VERSION
    - S_ISDIR
    - check_exec
    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:436,1
    - Dst: validate_exec
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:438,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:439,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:441,1
    - Dst: pipe_read_line
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:443,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:444,1
    - Dst: pg_strip_crlf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:449,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:451,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:453,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:454,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/exec.c:458,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - dir
    - program
    - check_version
    argTypes:
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 428
    functionDepth: 1
    functionLinenumber: 428
    functionLinenumberEnd: 459
    functionName: check_exec
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/exec.c
    functionUses: 1
    functionsReached:
    - validate_exec
    - snprintf
    - pg_fatal
    - pg_strip_crlf
    - strcmp
    - pipe_read_line
    - pg_free
    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:
    - strcmp
    - pg_cmp_size
    - pg_cmp_s32
    - strlen
    linkageType: ''
    returnType: int
    signature: int library_name_compare(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertVariableIsOfType
      Src: /src/postgres/src/bin/pg_upgrade/function.c:64,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/function.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - dbinfo
    - res
    - arg
    argTypes:
    - DbInfo*
    - PGresult*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 68
    functionName: process_loadable_libraries
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/function.c
    functionUses: 0
    functionsReached:
    - AssertVariableIsOfType
    - PQntuples
    linkageType: ''
    returnType: void
    signature: void process_loadable_libraries(DbInfo *dbinfo, PGresult *res, void
      *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: upgrade_task_create
      Src: /src/postgres/src/bin/pg_upgrade/function.c:84,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_upgrade/function.c:88,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_upgrade/function.c:91,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/function.c:99,1
    - Dst: upgrade_task_run
      Src: /src/postgres/src/bin/pg_upgrade/function.c:102,1
    - Dst: upgrade_task_free
      Src: /src/postgres/src/bin/pg_upgrade/function.c:103,1
    - Dst: count_old_cluster_logical_slots
      Src: /src/postgres/src/bin/pg_upgrade/function.c:109,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_upgrade/function.c:110,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/function.c:120,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/function.c:123,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/function.c:125,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/function.c:130,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/function.c:143,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/function.c:150,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/function.c:151,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 78
    functionDepth: 4
    functionLinenumber: 78
    functionLinenumberEnd: 154
    functionName: get_loadable_libraries
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/function.c
    functionUses: 0
    functionsReached:
    - upgrade_task_add_step
    - PQntuples
    - pg_strdup
    - PQgetvalue
    - upgrade_task_free
    - pg_malloc
    - upgrade_task_create
    - PQclear
    - upgrade_task_run
    - count_old_cluster_logical_slots
    - psprintf
    - pg_free
    linkageType: ''
    returnType: void
    signature: void get_loadable_libraries(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/function.c:167,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/function.c:173,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/function.c:175,1
    - Dst: qsort
      Src: /src/postgres/src/bin/pg_upgrade/function.c:184,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/function.c:190,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/function.c:195,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/pg_upgrade/function.c:197,1
    - Dst: PQescapeStringConn
      Src: /src/postgres/src/bin/pg_upgrade/function.c:198,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/function.c:198,1
    - Dst: strcat
      Src: /src/postgres/src/bin/pg_upgrade/function.c:199,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_upgrade/function.c:201,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_upgrade/function.c:203,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/function.c:207,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/function.c:208,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/function.c:209,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/function.c:209,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_upgrade/function.c:211,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/function.c:216,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/function.c:220,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/function.c:220,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/function.c:224,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/function.c:228,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/function.c:229,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/function.c:230,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/function.c:237,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 238
    functionName: check_loadable_libraries
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/function.c
    functionUses: 0
    functionsReached:
    - PQresultStatus
    - snprintf
    - fprintf
    - PQescapeStringConn
    - strlen
    - _
    - PQclear
    - check_ok
    - strcmp
    - strcpy
    - connectToServer
    - qsort
    - strcat
    - PQexec
    - PQerrorMessage
    - fclose
    - pg_log
    - PQfinish
    - prep_status
    - pg_fatal
    - fopen_priv
    linkageType: ''
    returnType: void
    signature: void check_loadable_libraries(void)
  - 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_end
    - va_start
    - 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:
    - printf
    - pg_log
    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:
    - pg_log
    - Assert
    - rmtree
    - fclose
    - pg_check_dir
    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_end
    - vsnprintf
    - pg_log
    - va_start
    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_end
    - vsnprintf
    - pg_log
    - va_start
    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:
    - vsnprintf
    - Assert
    - fflush
    - printf
    - fprintf
    - exit
    - _
    - strlen
    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: 6
    functionsReached:
    - va_end
    - va_start
    - 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: 106
    functionsReached:
    - printf
    - pg_log_v
    - va_end
    - exit
    - _
    - va_start
    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:
    - pg_fatal
    - pg_strdup
    - get_user_name
    - geteuid
    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
      Src: /src/postgres/src/bin/pg_upgrade/info.c:56,1
    - Dst: report_unmatched_relation
      Src: /src/postgres/src/bin/pg_upgrade/info.c:80,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/info.c:93,1
    - Dst: report_unmatched_relation
      Src: /src/postgres/src/bin/pg_upgrade/info.c:95,1
    - Dst: report_unmatched_relation
      Src: /src/postgres/src/bin/pg_upgrade/info.c:106,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/info.c:114,1
    - Dst: report_unmatched_relation
      Src: /src/postgres/src/bin/pg_upgrade/info.c:116,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/info.c:128,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/info.c:129,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/info.c:131,1
    - Dst: create_rel_filename_map
      Src: /src/postgres/src/bin/pg_upgrade/info.c:143,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/info.c:151,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: 156
      start: 44
    functionDepth: 3
    functionLinenumber: 44
    functionLinenumberEnd: 156
    functionName: gen_db_file_maps
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 0
    functionsReached:
    - pg_log
    - create_rel_filename_map
    - pg_malloc
    - pg_fatal
    - strcmp
    - 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:171,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:188,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: 206
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 206
    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:220,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/info.c:230,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:230,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:231,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/info.c:232,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/info.c:240,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:240,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:241,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/info.c:242,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/info.c:252,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:252,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:253,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/info.c:254,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/info.c:260,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:260,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:261,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/info.c:262,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/info.c:266,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/info.c:269,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 3
    argNames:
    - rel
    - db
    - is_new_db
    argTypes:
    - RelInfo*
    - DbInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 213
    functionDepth: 3
    functionLinenumber: 213
    functionLinenumberEnd: 271
    functionName: report_unmatched_relation
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 1
    functionsReached:
    - pg_log
    - snprintf
    - _
    - strlen
    linkageType: ''
    returnType: void
    signature: void report_unmatched_relation(const RelInfo *rel, const DbInfo *db,
      bool is_new_db)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: upgrade_task_create
      Src: /src/postgres/src/bin/pg_upgrade/info.c:282,1
    - Dst: free_db_and_rel_infos
      Src: /src/postgres/src/bin/pg_upgrade/info.c:287,1
    - Dst: get_template0_info
      Src: /src/postgres/src/bin/pg_upgrade/info.c:289,1
    - Dst: get_db_infos
      Src: /src/postgres/src/bin/pg_upgrade/info.c:290,1
    - Dst: get_rel_infos_query
      Src: /src/postgres/src/bin/pg_upgrade/info.c:292,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/info.c:293,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/info.c:308,1
    - Dst: get_old_cluster_logical_slot_infos_query
      Src: /src/postgres/src/bin/pg_upgrade/info.c:310,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/info.c:311,1
    - Dst: upgrade_task_run
      Src: /src/postgres/src/bin/pg_upgrade/info.c:317,1
    - Dst: upgrade_task_free
      Src: /src/postgres/src/bin/pg_upgrade/info.c:318,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/info.c:320,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/info.c:322,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/info.c:325,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/info.c:327,1
    - Dst: print_db_infos
      Src: /src/postgres/src/bin/pg_upgrade/info.c:330,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 279
    functionDepth: 4
    functionLinenumber: 279
    functionLinenumberEnd: 331
    functionName: get_db_rel_and_slot_infos
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 0
    functionsReached:
    - pg_log
    - upgrade_task_add_step
    - upgrade_task_run
    - GET_MAJOR_VERSION
    - free_db_and_rel_infos
    - upgrade_task_free
    - upgrade_task_create
    - get_old_cluster_logical_slot_infos_query
    - get_rel_infos_query
    - get_template0_info
    - get_db_infos
    - print_db_infos
    - pg_free
    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:341,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/info.c:350,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/info.c:351,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/info.c:356,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/info.c:357,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/info.c:363,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/info.c:370,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/info.c:371,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_upgrade/info.c:373,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:375,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:376,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:377,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:378,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:379,1
    - Dst: atoi
      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: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:382,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/info.c:383,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:383,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/info.c:384,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:384,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_upgrade/info.c:385,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/info.c:388,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:388,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/info.c:392,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/info.c:393,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 394
    functionName: get_template0_info
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 1
    functionsReached:
    - connectToServer
    - PQntuples
    - atoi
    - PQfinish
    - GET_MAJOR_VERSION
    - pg_strdup
    - PQgetvalue
    - pg_malloc
    - PQfnumber
    - pg_fatal
    - PQgetisnull
    - PQclear
    - executeQueryOrDie
    linkageType: ''
    returnType: void
    signature: void get_template0_info(ClusterInfo *cluster)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/info.c:406,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/info.c:416,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/info.c:418,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/info.c:419,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:419,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:419,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/info.c:421,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/info.c:422,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:422,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:422,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/info.c:425,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:425,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:425,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/info.c:427,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:427,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/info.c:427,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/info.c:435,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:437,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:438,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:439,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/info.c:441,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_upgrade/info.c:442,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_upgrade/info.c:446,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:446,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/info.c:447,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:447,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/info.c:448,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:449,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/info.c:451,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/info.c:453,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 403
    functionDepth: 1
    functionLinenumber: 403
    functionLinenumberEnd: 457
    functionName: get_db_infos
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 1
    functionsReached:
    - connectToServer
    - PQntuples
    - atooid
    - PQfinish
    - GET_MAJOR_VERSION
    - snprintf
    - pg_strdup
    - PQgetvalue
    - PQfnumber
    - pg_malloc0
    - PQclear
    - executeQueryOrDie
    - strlen
    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:475,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/info.c:487,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_upgrade/info.c:493,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_upgrade/info.c:503,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/info.c:511,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/info.c:524,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/info.c:538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 470
    functionDepth: 1
    functionLinenumber: 470
    functionLinenumberEnd: 556
    functionName: get_rel_infos_query
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 1
    functionsReached:
    - CppAsString2
    - appendPQExpBufferStr
    - initPQExpBuffer
    - appendPQExpBuffer
    linkageType: ''
    returnType: char
    signature: 'char *

      get_rel_infos_query(void)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/info.c:566,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_upgrade/info.c:567,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:568,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:569,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:570,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:571,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:572,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:573,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:574,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:575,1
    - Dst: AssertVariableIsOfType
      Src: /src/postgres/src/bin/pg_upgrade/info.c:583,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_upgrade/info.c:589,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:589,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_upgrade/info.c:590,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:590,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_upgrade/info.c:591,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:591,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:593,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/info.c:602,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/info.c:606,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:610,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/info.c:611,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_upgrade/info.c:613,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:613,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_upgrade/info.c:617,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:617,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:623,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/info.c:626,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/info.c:630,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 3
    argNames:
    - dbinfo
    - res
    - arg
    argTypes:
    - DbInfo*
    - PGresult*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 563
    functionDepth: 1
    functionLinenumber: 563
    functionLinenumberEnd: 641
    functionName: process_rel_infos
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 0
    functionsReached:
    - PQntuples
    - AssertVariableIsOfType
    - atooid
    - pg_strdup
    - PQgetvalue
    - pg_malloc
    - PQfnumber
    - strcmp
    linkageType: ''
    returnType: void
    signature: void process_rel_infos(DbInfo *dbinfo, PGresult *res, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_upgrade/info.c:671,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 651
    functionDepth: 1
    functionLinenumber: 651
    functionLinenumberEnd: 681
    functionName: get_old_cluster_logical_slot_infos_query
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 1
    functionsReached:
    - psprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      get_old_cluster_logical_slot_infos_query(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/info.c:693,1
    - Dst: AssertVariableIsOfType
      Src: /src/postgres/src/bin/pg_upgrade/info.c:695,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_upgrade/info.c:707,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:709,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:710,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:711,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:712,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:713,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/info.c:714,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/info.c:720,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:720,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/info.c:721,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:721,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/info.c:722,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:722,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/info.c:723,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:723,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/info.c:724,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:724,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/info.c:725,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:725,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 3
    argNames:
    - dbinfo
    - res
    - arg
    argTypes:
    - DbInfo*
    - PGresult*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 731
      start: 689
    functionDepth: 1
    functionLinenumber: 689
    functionLinenumberEnd: 731
    functionName: process_old_cluster_logical_slot_infos
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 0
    functionsReached:
    - PQntuples
    - AssertVariableIsOfType
    - pg_strdup
    - PQgetvalue
    - pg_malloc
    - PQfnumber
    - strcmp
    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: 752
      start: 743
    functionDepth: 0
    functionLinenumber: 743
    functionLinenumberEnd: 752
    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: 1
    BranchProfiles: []
    Callsites:
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/info.c:765,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/info.c:766,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_upgrade/info.c:768,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/info.c:768,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/info.c:770,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/info.c:771,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 759
    functionDepth: 1
    functionLinenumber: 759
    functionLinenumberEnd: 772
    functionName: get_subscription_count
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 0
    functionsReached:
    - connectToServer
    - atoi
    - PQfinish
    - PQgetvalue
    - PQclear
    - executeQueryOrDie
    linkageType: ''
    returnType: void
    signature: void get_subscription_count(ClusterInfo *cluster)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free_rel_infos
      Src: /src/postgres/src/bin/pg_upgrade/info.c:781,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/info.c:782,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/info.c:784,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - db_arr
    argTypes:
    - DbInfoArr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 774
    functionDepth: 1
    functionLinenumber: 774
    functionLinenumberEnd: 787
    functionName: free_db_and_rel_infos
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 1
    functionsReached:
    - free_rel_infos
    - pg_free
    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:798,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/info.c:799,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/info.c:801,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/info.c:803,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - rel_arr
    argTypes:
    - RelInfoArr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 790
    functionDepth: 1
    functionLinenumber: 790
    functionLinenumberEnd: 805
    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:817,1
    - Dst: print_rel_infos
      Src: /src/postgres/src/bin/pg_upgrade/info.c:818,1
    - Dst: print_slot_infos
      Src: /src/postgres/src/bin/pg_upgrade/info.c:819,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - db_arr
    argTypes:
    - DbInfoArr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 808
    functionDepth: 3
    functionLinenumber: 808
    functionLinenumberEnd: 821
    functionName: print_db_infos
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/info.c
    functionUses: 1
    functionsReached:
    - pg_log
    - print_slot_infos
    - print_rel_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:830,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - rel_arr
    argTypes:
    - RelInfoArr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 835
      start: 824
    functionDepth: 3
    functionLinenumber: 824
    functionLinenumberEnd: 835
    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:844,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/info.c:850,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - slot_arr
    argTypes:
    - LogicalSlotInfoArr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 837
    functionDepth: 3
    functionLinenumber: 837
    functionLinenumberEnd: 855
    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:
    - printf
    - pg_log
    - PQerrorMessage
    - PQfinish
    - get_db_conn
    - executeQueryOrDie
    - exit
    - PQstatus
    - _
    - PQclear
    linkageType: ''
    returnType: PGconn
    signature: 'PGconn *

      connectToServer(ClusterInfo *cluster, const char *db_name)'
  - BBCount: 2
    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: PQconnectdb
      Src: /src/postgres/src/bin/pg_upgrade/server.c:75,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/server.c:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - cluster
    - db_name
    argTypes:
    - ClusterInfo*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 78
    functionName: get_db_conn
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/server.c
    functionUses: 1
    functionsReached:
    - appendConnStrVal
    - termPQExpBuffer
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - PQconnectdb
    - initPQExpBuffer
    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:97,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/server.c:99,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/server.c:103,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_upgrade/server.c:104,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_upgrade/server.c:105,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/server.c:107,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_upgrade/server.c:108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 111
    functionName: cluster_conn_opts
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/server.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - createPQExpBuffer
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - resetPQExpBuffer
    - appendShellString
    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:129,1
    - Dst: vsnprintf
      Src: /src/postgres/src/bin/pg_upgrade/server.c:130,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_upgrade/server.c:131,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/server.c:133,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_upgrade/server.c:134,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_upgrade/server.c:135,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/server.c:139,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_upgrade/server.c:140,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/server.c:141,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/server.c:142,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_upgrade/server.c:143,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/server.c:143,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_upgrade/server.c:144,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - conn
    - fmt
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 121
    functionDepth: 3
    functionLinenumber: 121
    functionLinenumberEnd: 148
    functionName: executeQueryOrDie
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/server.c
    functionUses: 5
    functionsReached:
    - vsnprintf
    - pg_log
    - printf
    - PQexec
    - PQerrorMessage
    - PQresultStatus
    - va_end
    - PQfinish
    - exit
    - _
    - PQclear
    - va_start
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      executeQueryOrDie(PGconn *conn, const char *fmt,...)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/server.c:166,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_upgrade/server.c:168,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/server.c:169,1
    - Dst: fscanf
      Src: /src/postgres/src/bin/pg_upgrade/server.c:171,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_upgrade/server.c:172,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/server.c:173,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/server.c:175,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 187
    functionName: get_major_server_version
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/server.c
    functionUses: 1
    functionsReached:
    - fclose
    - snprintf
    - sscanf
    - fopen
    - fscanf
    - pg_fatal
    linkageType: ''
    returnType: uint32
    signature: uint32 get_major_server_version(ClusterInfo *cluster)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stop_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/server.c:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 194
    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: 13
    BranchProfiles: []
    Callsites:
    - Dst: atexit
      Src: /src/postgres/src/bin/pg_upgrade/server.c:210,1
    - Dst: strcat
      Src: /src/postgres/src/bin/pg_upgrade/server.c:218,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/server.c:223,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/server.c:223,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/server.c:224,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/server.c:226,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/server.c:231,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/server.c:242,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/server.c:252,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/server.c:253,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/server.c:259,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/server.c:260,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/server.c:266,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/server.c:274,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/server.c:280,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/server.c:282,1
    - Dst: get_db_conn
      Src: /src/postgres/src/bin/pg_upgrade/server.c:314,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/pg_upgrade/server.c:315,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/server.c:317,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_upgrade/server.c:317,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/server.c:319,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/server.c:321,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/server.c:325,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/server.c:329,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/server.c:339,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/server.c:341,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 38
    argCount: 2
    argNames:
    - cluster
    - report_and_exit_on_error
    argTypes:
    - ClusterInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 197
    functionDepth: 3
    functionLinenumber: 197
    functionLinenumberEnd: 345
    functionName: start_postmaster
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/server.c
    functionUses: 0
    functionsReached:
    - strcat
    - pg_log
    - PQerrorMessage
    - PQfinish
    - GET_MAJOR_VERSION
    - snprintf
    - atexit
    - initPQExpBuffer
    - appendPQExpBufferStr
    - termPQExpBuffer
    - get_db_conn
    - exec_prog
    - pg_fatal
    - PQstatus
    - strcmp
    - strlen
    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:360,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - in_atexit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 348
    functionDepth: 2
    functionLinenumber: 348
    functionLinenumberEnd: 367
    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:383,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/server.c:386,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/server.c:390,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/server.c:391,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/server.c:393,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/server.c:395,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/server.c:397,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/server.c:397,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/server.c:398,1
    - Dst: is_unixsock_path
      Src: /src/postgres/src/bin/pg_upgrade/server.c:398,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/server.c:399,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/bin/pg_upgrade/server.c:405,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 406
    functionName: check_pghost_envvar
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/server.c
    functionUses: 0
    functionsReached:
    - getenv
    - PQconninfoFree
    - PQconndefaults
    - is_unixsock_path
    - pg_fatal
    - strcmp
    - strlen
    linkageType: ''
    returnType: void
    signature: void check_pghost_envvar(void)
  - BBCount: 1
    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: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:30,1
    - Dst: prep_status_progress
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:32,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:43,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:44,1
    - Dst: appendConnStrVal
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:45,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:46,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:47,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:48,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:50,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:51,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:52,1
    - Dst: parallel_exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:54,1
    - Dst: cluster_conn_opts
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:57,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:65,1
    - Dst: reap_child
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:69,1
    - Dst: end_progress_output
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:72,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/dump.c:73,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 15
    functionDepth: 3
    functionLinenumber: 15
    functionLinenumberEnd: 74
    functionName: generate_old_dump
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/dump.c
    functionUses: 0
    functionsReached:
    - appendConnStrVal
    - pg_log
    - reap_child
    - initPQExpBuffer
    - snprintf
    - prep_status
    - appendPQExpBufferStr
    - termPQExpBuffer
    - parallel_exec_prog
    - exec_prog
    - appendShellString
    - end_progress_output
    - check_ok
    - cluster_conn_opts
    - prep_status_progress
    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_init
    - sync_queue_sync_all
    - strncpy
    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:155,1
    - Dst: end_progress_output
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:159,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:160,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: 161
      start: 107
    functionDepth: 2
    functionLinenumber: 107
    functionLinenumberEnd: 161
    functionName: transfer_all_new_tablespaces
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/relfilenumber.c
    functionUses: 0
    functionsReached:
    - reap_child
    - end_progress_output
    - parallel_transfer_all_new_dbs
    - check_ok
    - prep_status_progress
    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:195,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:200,1
    - Dst: gen_db_file_maps
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:203,1
    - Dst: transfer_single_new_db
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:207,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:210,1
    - Dst: sync_queue_sync_all
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:217,1
    - Dst: sync_queue_destroy
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:218,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 5
    argNames:
    - old_db_arr
    - new_db_arr
    - old_pgdata
    - new_pgdata
    - old_tablespace
    argTypes:
    - DbInfoArr*
    - DbInfoArr*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 170
    functionDepth: 4
    functionLinenumber: 170
    functionLinenumberEnd: 219
    functionName: transfer_all_new_dbs
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/relfilenumber.c
    functionUses: 3
    functionsReached:
    - sync_queue_destroy
    - transfer_single_new_db
    - gen_db_file_maps
    - sync_queue_sync_all
    - pg_fatal
    - strcmp
    - 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, char *old_tablespace)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:249,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:270,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: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:279,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:280,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:281,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:284,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:287,1
    - Dst: pg_mkdir_p
      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: pg_mkdir_p
      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
    - Dst: rename
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:300,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:301,1
    - Dst: rename
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:304,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:305,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 5
    argNames:
    - old_tablespace
    - db_oid
    - old_catalog_dir
    - new_db_dir
    - moved_db_dir
    argTypes:
    - char*
    - Oid
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 308
    functionName: prepare_for_swap
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/relfilenumber.c
    functionUses: 0
    functionsReached:
    - pg_mkdir_p
    - rename
    - stat
    - snprintf
    - pg_fatal
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool prepare_for_swap(const char *old_tablespace, Oid db_oid,\n\t\t\t\t
      char *old_catalog_dir, char *new_db_dir, char *moved_db_dir)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_cmp_u32
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 315
    functionDepth: 1
    functionLinenumber: 315
    functionLinenumberEnd: 322
    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:341,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 1
    argNames:
    - filename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 346
    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:373,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:375,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:376,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:378,1
    - Dst: get_dirent_type
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:379,1
    - Dst: parse_relfilenumber
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:382,1
    - Dst: RelFileNumberIsValid
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:383,1
    - Dst: bsearch
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:387,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:391,1
    - Dst: rename
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:392,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:393,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:396,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:397,1
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:400,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:402,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:403,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:405,1
    - Dst: get_dirent_type
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:406,1
    - Dst: parse_relfilenumber
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:409,1
    - Dst: RelFileNumberIsValid
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:410,1
    - Dst: bsearch
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:414,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:418,1
    - Dst: rename
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:419,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:420,1
    - Dst: sync_queue_push
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:431,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:434,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:435,1
    - Dst: fsync_fname
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:438,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:439,1
    - Dst: fsync_parent_path
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:440,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:441,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: 442
      start: 362
    functionDepth: 2
    functionLinenumber: 362
    functionLinenumberEnd: 442
    functionName: swap_catalog_files
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/relfilenumber.c
    functionUses: 0
    functionsReached:
    - readdir
    - rename
    - closedir
    - snprintf
    - parse_relfilenumber
    - fsync_parent_path
    - get_dirent_type
    - RelFileNumberIsValid
    - opendir
    - bsearch
    - pg_fatal
    - sync_queue_push
    - fsync_fname
    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:464,1
    - Dst: prepare_for_swap
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:473,1
    - Dst: swap_catalog_files
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:475,1
    - Dst: prepare_for_swap
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:480,1
    - Dst: swap_catalog_files
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:482,1
    - Dst: prepare_for_swap
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:487,1
    - Dst: swap_catalog_files
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:489,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - maps
    - size
    - old_tablespace
    argTypes:
    - FileNameMap*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 452
    functionDepth: 3
    functionLinenumber: 452
    functionLinenumberEnd: 493
    functionName: do_swap
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/relfilenumber.c
    functionUses: 0
    functionsReached:
    - qsort
    - prepare_for_swap
    - swap_catalog_files
    linkageType: ''
    returnType: void
    signature: void do_swap(FileNameMap *maps, int size, char *old_tablespace)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:521,1
    - Dst: do_swap
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:523,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:530,1
    - Dst: transfer_relfile
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:533,1
    - Dst: transfer_relfile
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:538,1
    - Dst: transfer_relfile
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:539,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 3
    argNames:
    - maps
    - size
    - old_tablespace
    argTypes:
    - FileNameMap*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 500
    functionDepth: 4
    functionLinenumber: 500
    functionLinenumberEnd: 542
    functionName: transfer_single_new_db
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/relfilenumber.c
    functionUses: 1
    functionsReached:
    - strcmp
    - Assert
    - transfer_relfile
    - do_swap
    linkageType: ''
    returnType: void
    signature: void transfer_single_new_db(FileNameMap *maps, int size, char *old_tablespace)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:571,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:573,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:580,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:592,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:598,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:607,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:610,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:612,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:615,1
    - Dst: rewriteVisibilityMap
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:617,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:623,1
    - Dst: cloneFile
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:625,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:628,1
    - Dst: copyFile
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:630,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:633,1
    - Dst: copyFileByRange
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:635,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:638,1
    - Dst: linkFile
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:640,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/relfilenumber.c:644,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 44
    argCount: 3
    argNames:
    - map
    - type_suffix
    - vm_must_add_frozenbit
    argTypes:
    - FileNameMap*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 552
    functionDepth: 3
    functionLinenumber: 552
    functionLinenumberEnd: 648
    functionName: transfer_relfile
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/relfilenumber.c
    functionUses: 1
    functionsReached:
    - linkFile
    - pg_log
    - copyFileByRange
    - copyFile
    - stat
    - rewriteVisibilityMap
    - cloneFile
    - snprintf
    - pg_fatal
    - unlink
    - strcmp
    linkageType: ''
    returnType: void
    signature: void transfer_relfile(FileNameMap *map, const char *type_suffix, bool
      vm_must_add_frozenbit)
  - 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:
    - getenv
    - fprintf
    - exit
    - canonicalize_path
    - psprintf
    - pfree
    - path_is_prefix_of_path
    - puts
    - _
    - parse_sync_method
    - fileno
    - check_required_directory
    - strcmp
    - getcwd
    - pg_free
    - pg_log
    - atoi
    - setenv
    - isatty
    - usage
    - pg_fatal
    - strlcpy
    - pg_strcasecmp
    - get_progname
    - get_user_info
    - getopt_long
    - pg_strdup
    - free
    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:
    - getenv
    - pg_strdup
    - pg_fatal
    - getcwd
    - canonicalize_path
    - strlen
    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:
    - fflush
    - pclose
    - wait_result_to_str
    - fclose
    - pg_strdup
    - snprintf
    - prep_status
    - popen
    - fopen
    - pg_fatal
    - pg_strip_crlf
    - check_ok
    - fgets
    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:
    - pg_log
    - fclose
    - pg_strdup
    - snprintf
    - sscanf
    - Max
    - fopen
    - pg_fatal
    - pg_strip_crlf
    - fgets
    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: 431
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 431
    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:337,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_upgrade/check.c:373,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_upgrade/check.c:374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - checknum
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 332
    functionDepth: 1
    functionLinenumber: 332
    functionLinenumberEnd: 382
    functionName: data_type_check_query
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - CppAsString2
    - psprintf
    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:393,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:395,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:396,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:397,1
    - Dst: AssertVariableIsOfType
      Src: /src/postgres/src/bin/pg_upgrade/check.c:400,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:405,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:414,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:422,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/check.c:422,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:423,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/check.c:424,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_upgrade/check.c:425,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:430,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:431,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:433,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:436,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:437,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:438,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:439,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:441,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - dbinfo
    - res
    - arg
    argTypes:
    - DbInfo*
    - PGresult*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 389
    functionDepth: 3
    functionLinenumber: 389
    functionLinenumberEnd: 442
    functionName: process_data_type_check
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - pg_log
    - PQntuples
    - fclose
    - AssertVariableIsOfType
    - createPQExpBuffer
    - snprintf
    - PQgetvalue
    - appendPQExpBuffer
    - fprintf
    - PQfnumber
    - pg_fatal
    - _
    - fopen_priv
    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:469,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:473,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_upgrade/check.c:483,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_upgrade/check.c:484,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_upgrade/check.c:492,1
    - Dst: DataTypesUsageChecks*::version_hook
      Src: /src/postgres/src/bin/pg_upgrade/check.c:498,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:503,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_upgrade/check.c:507,1
    - Dst: data_type_check_query
      Src: /src/postgres/src/bin/pg_upgrade/check.c:509,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/check.c:514,1
    - Dst: upgrade_task_run
      Src: /src/postgres/src/bin/pg_upgrade/check.c:522,1
    - Dst: upgrade_task_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:523,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:527,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:528,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:534,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:536,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:537,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:539,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 463
    functionDepth: 4
    functionLinenumber: 463
    functionLinenumberEnd: 540
    functionName: check_for_data_types_usage
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - Assert
    - data_type_check_query
    - upgrade_task_add_step
    - GET_MAJOR_VERSION
    - prep_status
    - upgrade_task_free
    - DataTypesUsageChecks*::version_hook
    - upgrade_task_create
    - pg_fatal
    - pg_malloc0
    - check_ok
    - upgrade_task_run
    - destroyPQExpBuffer
    - pg_free
    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:557,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 549
    functionDepth: 1
    functionLinenumber: 549
    functionLinenumberEnd: 568
    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:575,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:581,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 570
    functionDepth: 3
    functionLinenumber: 570
    functionLinenumberEnd: 585
    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:594,1
    - Dst: check_for_connection_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:600,1
    - Dst: get_db_rel_and_slot_infos
      Src: /src/postgres/src/bin/pg_upgrade/check.c:606,1
    - Dst: init_tablespaces
      Src: /src/postgres/src/bin/pg_upgrade/check.c:608,1
    - Dst: get_loadable_libraries
      Src: /src/postgres/src/bin/pg_upgrade/check.c:610,1
    - Dst: check_is_install_user
      Src: /src/postgres/src/bin/pg_upgrade/check.c:616,1
    - Dst: check_for_prepared_transactions
      Src: /src/postgres/src/bin/pg_upgrade/check.c:617,1
    - Dst: check_for_isn_and_int8_passing_mismatch
      Src: /src/postgres/src/bin/pg_upgrade/check.c:618,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:620,1
    - Dst: check_old_cluster_for_valid_slots
      Src: /src/postgres/src/bin/pg_upgrade/check.c:626,1
    - Dst: get_subscription_count
      Src: /src/postgres/src/bin/pg_upgrade/check.c:633,1
    - Dst: check_old_cluster_subscription_state
      Src: /src/postgres/src/bin/pg_upgrade/check.c:634,1
    - Dst: check_for_data_types_usage
      Src: /src/postgres/src/bin/pg_upgrade/check.c:637,1
    - Dst: check_for_unicode_update
      Src: /src/postgres/src/bin/pg_upgrade/check.c:643,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:651,1
    - Dst: check_for_user_defined_encoding_conversions
      Src: /src/postgres/src/bin/pg_upgrade/check.c:652,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:658,1
    - Dst: check_for_user_defined_postfix_ops
      Src: /src/postgres/src/bin/pg_upgrade/check.c:659,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:665,1
    - Dst: check_for_incompatible_polymorphics
      Src: /src/postgres/src/bin/pg_upgrade/check.c:666,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:672,1
    - Dst: check_for_tables_with_oids
      Src: /src/postgres/src/bin/pg_upgrade/check.c:673,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:679,1
    - Dst: old_9_6_invalidate_hash_indexes
      Src: /src/postgres/src/bin/pg_upgrade/check.c:682,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:686,1
    - Dst: check_for_pg_role_prefix
      Src: /src/postgres/src/bin/pg_upgrade/check.c:687,1
    - Dst: generate_old_dump
      Src: /src/postgres/src/bin/pg_upgrade/check.c:694,1
    - Dst: stop_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/check.c:697,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 588
    functionDepth: 5
    functionLinenumber: 588
    functionLinenumberEnd: 698
    functionName: check_and_dump_old_cluster
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - check_old_cluster_for_valid_slots
    - GET_MAJOR_VERSION
    - check_for_connection_status
    - check_for_user_defined_encoding_conversions
    - check_for_isn_and_int8_passing_mismatch
    - check_is_install_user
    - check_for_data_types_usage
    - old_9_6_invalidate_hash_indexes
    - get_loadable_libraries
    - check_for_unicode_update
    - get_subscription_count
    - stop_postmaster
    - check_for_incompatible_polymorphics
    - check_old_cluster_subscription_state
    - check_for_tables_with_oids
    - check_for_user_defined_postfix_ops
    - get_db_rel_and_slot_infos
    - generate_old_dump
    - check_for_pg_role_prefix
    - check_for_prepared_transactions
    - start_postmaster
    - init_tablespaces
    linkageType: ''
    returnType: void
    signature: void check_and_dump_old_cluster(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: get_db_rel_and_slot_infos
      Src: /src/postgres/src/bin/pg_upgrade/check.c:704,1
    - Dst: check_new_cluster_is_empty
      Src: /src/postgres/src/bin/pg_upgrade/check.c:706,1
    - Dst: check_loadable_libraries
      Src: /src/postgres/src/bin/pg_upgrade/check.c:708,1
    - Dst: check_file_clone
      Src: /src/postgres/src/bin/pg_upgrade/check.c:713,1
    - Dst: check_copy_file_range
      Src: /src/postgres/src/bin/pg_upgrade/check.c:718,1
    - Dst: check_hard_link
      Src: /src/postgres/src/bin/pg_upgrade/check.c:721,1
    - Dst: check_hard_link
      Src: /src/postgres/src/bin/pg_upgrade/check.c:734,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:745,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:746,1
    - Dst: check_is_install_user
      Src: /src/postgres/src/bin/pg_upgrade/check.c:752,1
    - Dst: check_for_prepared_transactions
      Src: /src/postgres/src/bin/pg_upgrade/check.c:754,1
    - Dst: check_for_new_tablespace_dir
      Src: /src/postgres/src/bin/pg_upgrade/check.c:756,1
    - Dst: check_new_cluster_logical_replication_slots
      Src: /src/postgres/src/bin/pg_upgrade/check.c:758,1
    - Dst: check_new_cluster_subscription_configuration
      Src: /src/postgres/src/bin/pg_upgrade/check.c:760,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 701
    functionDepth: 5
    functionLinenumber: 701
    functionLinenumberEnd: 761
    functionName: check_new_cluster
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - check_new_cluster_subscription_configuration
    - check_new_cluster_logical_replication_slots
    - GET_MAJOR_VERSION
    - check_file_clone
    - check_new_cluster_is_empty
    - check_for_prepared_transactions
    - check_copy_file_range
    - pg_fatal
    - check_loadable_libraries
    - get_db_rel_and_slot_infos
    - check_for_new_tablespace_dir
    - check_is_install_user
    - check_hard_link
    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:769,1
    - Dst: stop_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/check.c:771,1
    - Dst: cleanup_output_dirs
      Src: /src/postgres/src/bin/pg_upgrade/check.c:773,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_upgrade/check.c:774,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:777,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 764
    functionDepth: 3
    functionLinenumber: 764
    functionLinenumberEnd: 780
    functionName: report_clusters_compatible
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - pg_log
    - cleanup_output_dirs
    - stop_postmaster
    - exit
    linkageType: ''
    returnType: void
    signature: void report_clusters_compatible(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: start_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/check.c:792,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:795,1
    - Dst: old_9_6_invalidate_hash_indexes
      Src: /src/postgres/src/bin/pg_upgrade/check.c:796,1
    - Dst: report_extension_updates
      Src: /src/postgres/src/bin/pg_upgrade/check.c:798,1
    - Dst: stop_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/check.c:800,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 783
    functionDepth: 1
    functionLinenumber: 783
    functionLinenumberEnd: 801
    functionName: issue_warnings_and_set_wal_level
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - stop_postmaster
    - GET_MAJOR_VERSION
    - report_extension_updates
    - start_postmaster
    - old_9_6_invalidate_hash_indexes
    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:809,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/check.c:812,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_upgrade/check.c:813,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_upgrade/check.c:814,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:817,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:826,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:831,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:837,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - deletion_script_file_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 804
    functionDepth: 3
    functionLinenumber: 804
    functionLinenumberEnd: 838
    functionName: output_completion_banner
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - pg_log
    - termPQExpBuffer
    - appendPQExpBufferStr
    - appendShellString
    - initPQExpBuffer
    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:844,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_upgrade/check.c:847,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_upgrade/check.c:848,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:855,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:856,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:860,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:860,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:861,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:870,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:873,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:874,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:875,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:876,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:877,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:878,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:887,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:889,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:892,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 841
    functionDepth: 2
    functionLinenumber: 841
    functionLinenumberEnd: 893
    functionName: check_cluster_versions
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - Assert
    - GET_MAJOR_VERSION
    - prep_status
    - pg_fatal
    - check_ok
    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:900,1
    - Dst: get_control_data
      Src: /src/postgres/src/bin/pg_upgrade/check.c:901,1
    - Dst: check_control_data
      Src: /src/postgres/src/bin/pg_upgrade/check.c:902,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:905,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 896
    functionDepth: 1
    functionLinenumber: 896
    functionLinenumberEnd: 907
    functionName: check_cluster_compatibility
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - get_control_data
    - pg_fatal
    - check_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:924,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:925,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 910
    functionDepth: 0
    functionLinenumber: 910
    functionLinenumberEnd: 931
    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:948,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:954,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_upgrade/check.c:958,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:959,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:963,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 942
    functionDepth: 2
    functionLinenumber: 942
    functionLinenumberEnd: 964
    functionName: check_for_new_tablespace_dir
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - stat
    - snprintf
    - prep_status
    - pg_fatal
    - check_ok
    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:980,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_upgrade/check.c:983,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_upgrade/check.c:984,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_upgrade/check.c:986,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_upgrade/check.c:987,1
    - Dst: path_is_prefix_of_path
      Src: /src/postgres/src/bin/pg_upgrade/check.c:990,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:992,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_upgrade/check.c:996,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:997,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1011,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1012,1
    - Dst: path_is_prefix_of_path
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1013,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1016,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1020,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1021,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1027,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1029,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1030,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1035,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1039,1
    - Dst: fix_path_separator
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1040,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1043,1
    - Dst: fix_path_separator
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1044,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1046,1
    - Dst: fix_path_separator
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1047,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1049,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1051,1
    - Dst: chmod
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1054,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1055,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1059,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 1
    argNames:
    - deletion_script_file_name
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 971
    functionDepth: 3
    functionLinenumber: 971
    functionLinenumberEnd: 1060
    functionName: create_script_for_old_cluster_deletion
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - pfree
    - pg_log
    - check_ok
    - fclose
    - path_is_prefix_of_path
    - pg_strdup
    - prep_status
    - fprintf
    - strlcpy
    - pg_fatal
    - chmod
    - fopen_priv
    - unlink
    - fix_path_separator
    - canonicalize_path
    - psprintf
    - pg_free
    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:1073,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1075,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1078,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1089,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1090,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1090,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1091,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1094,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1096,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1101,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1102,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1109,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1109,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1110,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1112,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1114,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1116,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1117
      start: 1069
    functionDepth: 4
    functionLinenumber: 1069
    functionLinenumberEnd: 1117
    functionName: check_is_install_user
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 2
    functionsReached:
    - connectToServer
    - check_ok
    - PQntuples
    - atooid
    - PQfinish
    - prep_status
    - PQgetvalue
    - pg_fatal
    - PQclear
    - executeQueryOrDie
    - strcmp
    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:1140,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1142,1
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1146,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1149,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1153,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1154,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1155,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1157,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1160,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1161,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1162,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1164,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1167,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1168,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1178,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1178,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1180,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1181,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1183,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1188,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1190,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1194,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1195,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1196,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1205,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1206
      start: 1127
    functionDepth: 4
    functionLinenumber: 1127
    functionLinenumberEnd: 1206
    functionName: check_for_connection_status
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - connectToServer
    - pg_log
    - check_ok
    - PQntuples
    - fclose
    - PQfinish
    - snprintf
    - prep_status
    - PQgetvalue
    - fprintf
    - PQfnumber
    - pg_fatal
    - PQclear
    - fopen_priv
    - executeQueryOrDie
    - strcmp
    linkageType: ''
    returnType: void
    signature: void check_for_connection_status(ClusterInfo *cluster)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1219,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1221,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1223,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1227,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1230,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1232,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1235,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1237,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1239,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1240
      start: 1215
    functionDepth: 4
    functionLinenumber: 1215
    functionLinenumberEnd: 1240
    functionName: check_for_prepared_transactions
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 2
    functionsReached:
    - connectToServer
    - check_ok
    - PQntuples
    - PQfinish
    - prep_status
    - pg_fatal
    - PQclear
    - 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:1251,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1252,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1253,1
    - Dst: AssertVariableIsOfType
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1256,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1263,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1264,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1266,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1269,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1270,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1271,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - dbinfo
    - res
    - arg
    argTypes:
    - DbInfo*
    - PGresult*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1272
      start: 1248
    functionDepth: 1
    functionLinenumber: 1248
    functionLinenumberEnd: 1272
    functionName: process_isn_and_int8_passing_mismatch
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - PQntuples
    - AssertVariableIsOfType
    - PQgetvalue
    - fprintf
    - PQfnumber
    - pg_fatal
    - fopen_priv
    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:1292,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1298,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1303,1
    - Dst: upgrade_task_create
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1307,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1308,1
    - Dst: upgrade_task_run
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1310,1
    - Dst: upgrade_task_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1311,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1315,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1316,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1317,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1326,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1327
      start: 1281
    functionDepth: 4
    functionLinenumber: 1281
    functionLinenumberEnd: 1327
    functionName: check_for_isn_and_int8_passing_mismatch
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - pg_log
    - upgrade_task_add_step
    - fclose
    - snprintf
    - prep_status
    - upgrade_task_free
    - upgrade_task_create
    - pg_fatal
    - check_ok
    - upgrade_task_run
    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:1338,1
    - Dst: PQfnumber
      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: AssertVariableIsOfType
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1345,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1352,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1353,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1355,1
    - Dst: fprintf
      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
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1362,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1363,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - dbinfo
    - res
    - arg
    argTypes:
    - DbInfo*
    - PGresult*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1364
      start: 1334
    functionDepth: 1
    functionLinenumber: 1334
    functionLinenumberEnd: 1364
    functionName: process_user_defined_postfix_ops
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - PQntuples
    - AssertVariableIsOfType
    - PQgetvalue
    - fprintf
    - PQfnumber
    - pg_fatal
    - fopen_priv
    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:1373,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1397,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1400,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1404,1
    - Dst: upgrade_task_run
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1406,1
    - Dst: upgrade_task_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1407,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1411,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1412,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1413,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1420,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1421
      start: 1369
    functionDepth: 4
    functionLinenumber: 1369
    functionLinenumberEnd: 1421
    functionName: check_for_user_defined_postfix_ops
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - pg_log
    - upgrade_task_add_step
    - fclose
    - snprintf
    - prep_status
    - upgrade_task_free
    - upgrade_task_create
    - pg_fatal
    - check_ok
    - upgrade_task_run
    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:1432,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1433,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1434,1
    - Dst: AssertVariableIsOfType
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1436,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1443,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1444,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1446,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1449,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1450,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1451,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - dbinfo
    - res
    - arg
    argTypes:
    - DbInfo*
    - PGresult*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1452
      start: 1428
    functionDepth: 1
    functionLinenumber: 1428
    functionLinenumberEnd: 1452
    functionName: process_incompat_polymorphics
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - PQntuples
    - AssertVariableIsOfType
    - PQgetvalue
    - fprintf
    - PQfnumber
    - pg_fatal
    - fopen_priv
    linkageType: ''
    returnType: void
    signature: void process_incompat_polymorphics(DbInfo *dbinfo, PGresult *res, void
      *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: upgrade_task_create
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1464,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1468,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1471,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1476,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1478,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1483,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1484,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1488,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1489,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1503,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1532,1
    - Dst: upgrade_task_run
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1534,1
    - Dst: upgrade_task_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1535,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1539,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1540,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1541,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1550,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1552,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1553,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1554
      start: 1460
    functionDepth: 4
    functionLinenumber: 1460
    functionLinenumberEnd: 1554
    functionName: check_for_incompatible_polymorphics
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - pg_log
    - upgrade_task_add_step
    - fclose
    - GET_MAJOR_VERSION
    - snprintf
    - prep_status
    - appendPQExpBufferStr
    - termPQExpBuffer
    - upgrade_task_free
    - upgrade_task_create
    - psprintf
    - pg_fatal
    - check_ok
    - upgrade_task_run
    - initPQExpBuffer
    - pg_free
    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:1565,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1566,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1567,1
    - Dst: AssertVariableIsOfType
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1569,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1575,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1576,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1578,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1581,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1582,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1583,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - dbinfo
    - res
    - arg
    argTypes:
    - DbInfo*
    - PGresult*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1584
      start: 1561
    functionDepth: 1
    functionLinenumber: 1561
    functionLinenumberEnd: 1584
    functionName: process_with_oids_check
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - PQntuples
    - AssertVariableIsOfType
    - PQgetvalue
    - fprintf
    - PQfnumber
    - pg_fatal
    - fopen_priv
    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:1593,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1601,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1604,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1608,1
    - Dst: upgrade_task_run
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1610,1
    - Dst: upgrade_task_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1611,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1615,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1616,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1617,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1624,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1625
      start: 1589
    functionDepth: 4
    functionLinenumber: 1589
    functionLinenumberEnd: 1625
    functionName: check_for_tables_with_oids
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - pg_log
    - upgrade_task_add_step
    - fclose
    - snprintf
    - prep_status
    - upgrade_task_free
    - upgrade_task_create
    - pg_fatal
    - check_ok
    - upgrade_task_run
    linkageType: ''
    returnType: void
    signature: void check_for_tables_with_oids(ClusterInfo *cluster)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1637,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1644,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1646,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1650,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1655,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1656,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1657,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1660,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1661,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1662,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1663,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1664,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1667,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1669,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1673,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1674,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1675,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1682,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1683
      start: 1633
    functionDepth: 4
    functionLinenumber: 1633
    functionLinenumberEnd: 1683
    functionName: check_for_pg_role_prefix
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - connectToServer
    - pg_log
    - check_ok
    - PQntuples
    - fclose
    - PQfinish
    - snprintf
    - prep_status
    - PQgetvalue
    - fprintf
    - PQfnumber
    - pg_fatal
    - PQclear
    - fopen_priv
    - executeQueryOrDie
    linkageType: ''
    returnType: void
    signature: void check_for_pg_role_prefix(ClusterInfo *cluster)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1695,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1696,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1697,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1698,1
    - Dst: AssertVariableIsOfType
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1700,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1707,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1708,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1710,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1713,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1714,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1715,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1716,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - dbinfo
    - res
    - arg
    argTypes:
    - DbInfo*
    - PGresult*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1717
      start: 1691
    functionDepth: 1
    functionLinenumber: 1691
    functionLinenumberEnd: 1717
    functionName: process_user_defined_encoding_conversions
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - PQntuples
    - AssertVariableIsOfType
    - PQgetvalue
    - fprintf
    - PQfnumber
    - pg_fatal
    - fopen_priv
    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:1726,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1729,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1732,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1748,1
    - Dst: upgrade_task_run
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1751,1
    - Dst: upgrade_task_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1752,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1756,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1757,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1758,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1766,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1767
      start: 1722
    functionDepth: 4
    functionLinenumber: 1722
    functionLinenumberEnd: 1767
    functionName: check_for_user_defined_encoding_conversions
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - pg_log
    - upgrade_task_add_step
    - fclose
    - snprintf
    - prep_status
    - upgrade_task_free
    - upgrade_task_create
    - pg_fatal
    - check_ok
    - upgrade_task_run
    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:1778,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1779,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1780,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1781,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1787,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1788,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1790,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1793,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1794,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1795,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1796,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - dbinfo
    - res
    - arg
    argTypes:
    - DbInfo*
    - PGresult*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1797
      start: 1774
    functionDepth: 1
    functionLinenumber: 1774
    functionLinenumberEnd: 1797
    functionName: process_unicode_update
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - PQntuples
    - PQgetvalue
    - fprintf
    - PQfnumber
    - pg_fatal
    - fopen_priv
    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:1806,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1811,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1812,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1813,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1815,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1816,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1819
      start: 1803
    functionDepth: 4
    functionLinenumber: 1803
    functionLinenumberEnd: 1819
    functionName: unicode_version_changed
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - connectToServer
    - PQfinish
    - PQgetvalue
    - PQclear
    - executeQueryOrDie
    - strcmp
    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:1840,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1843,1
    - Dst: unicode_version_changed
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1845,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1847,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1852,1
    - Dst: upgrade_task_create
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1927,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1928,1
    - Dst: upgrade_task_run
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1931,1
    - Dst: upgrade_task_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1932,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1936,1
    - Dst: report_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1937,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1938,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1943,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1944
      start: 1828
    functionDepth: 5
    functionLinenumber: 1828
    functionLinenumberEnd: 1944
    functionName: check_for_unicode_update
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - pg_log
    - upgrade_task_add_step
    - report_status
    - fclose
    - GET_MAJOR_VERSION
    - snprintf
    - prep_status
    - unicode_version_changed
    - upgrade_task_free
    - upgrade_task_create
    - check_ok
    - upgrade_task_run
    linkageType: ''
    returnType: void
    signature: void check_for_unicode_update(ClusterInfo *cluster)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1963,1
    - Dst: count_old_cluster_logical_slots
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1966,1
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1972,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1974,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1976,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1981,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1982,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1984,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1984,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1987,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1990,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1992,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1996,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1997,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:1999,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2001,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2002,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2005,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2005,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2008,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2012,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2013,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2015,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2016
      start: 1952
    functionDepth: 4
    functionLinenumber: 1952
    functionLinenumberEnd: 2016
    functionName: check_new_cluster_logical_replication_slots
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - connectToServer
    - check_ok
    - PQntuples
    - atoi
    - PQfinish
    - GET_MAJOR_VERSION
    - prep_status
    - PQgetvalue
    - pg_fatal
    - PQclear
    - executeQueryOrDie
    - strcmp
    - count_old_cluster_logical_slots
    linkageType: ''
    returnType: void
    signature: void check_new_cluster_logical_replication_slots(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2033,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2040,1
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2042,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2044,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2047,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2048,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2050,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2050,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2052,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2056,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2057,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2059,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2060
      start: 2025
    functionDepth: 4
    functionLinenumber: 2025
    functionLinenumberEnd: 2060
    functionName: check_new_cluster_subscription_configuration
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - connectToServer
    - check_ok
    - PQntuples
    - atoi
    - PQfinish
    - GET_MAJOR_VERSION
    - prep_status
    - PQgetvalue
    - pg_fatal
    - PQclear
    - executeQueryOrDie
    linkageType: ''
    returnType: void
    signature: void check_new_cluster_subscription_configuration(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2074,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2076,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2092,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2093,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2095,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2111,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2112,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2114,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2123,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2125,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2126,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2133,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2134
      start: 2068
    functionDepth: 3
    functionLinenumber: 2068
    functionLinenumberEnd: 2134
    functionName: check_old_cluster_for_valid_slots
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - pg_log
    - check_ok
    - fclose
    - snprintf
    - prep_status
    - fprintf
    - pg_fatal
    - 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:2145,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2146,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2147,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2148,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2149,1
    - Dst: AssertVariableIsOfType
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2151,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2157,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2158,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2161,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2162,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2164,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2165,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2166,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - dbinfo
    - res
    - arg
    argTypes:
    - DbInfo*
    - PGresult*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2167
      start: 2141
    functionDepth: 1
    functionLinenumber: 2141
    functionLinenumberEnd: 2167
    functionName: process_old_sub_state_check
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 0
    functionsReached:
    - PQntuples
    - AssertVariableIsOfType
    - PQgetvalue
    - fprintf
    - PQfnumber
    - pg_fatal
    - fopen_priv
    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:2179,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2186,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2189,1
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2197,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2198,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2206,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2210,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2211,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2212,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2213,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2214,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2216,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2217,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2258,1
    - Dst: upgrade_task_run
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2261,1
    - Dst: upgrade_task_free
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2262,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2266,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2267,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2268,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/check.c:2274,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2275
      start: 2176
    functionDepth: 4
    functionLinenumber: 2176
    functionLinenumberEnd: 2275
    functionName: check_old_cluster_subscription_state
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/check.c
    functionUses: 1
    functionsReached:
    - connectToServer
    - upgrade_task_add_step
    - pg_log
    - check_ok
    - PQntuples
    - fclose
    - PQfinish
    - snprintf
    - prep_status
    - PQgetvalue
    - fprintf
    - upgrade_task_free
    - upgrade_task_create
    - pg_fatal
    - PQclear
    - fopen_priv
    - executeQueryOrDie
    - upgrade_task_run
    linkageType: ''
    returnType: void
    signature: void check_old_cluster_subscription_state(void)
  - BBCount: 115
    BranchProfiles: []
    Callsites:
    - 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: getenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:100,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:101,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:101,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:102,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:103,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:103,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:104,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:105,1
    - Dst: getenv
      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: unsetenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:108,1
    - Dst: unsetenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:109,1
    - Dst: unsetenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:110,1
    - Dst: unsetenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:111,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:116,1
    - Dst: unsetenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:118,1
    - Dst: unsetenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:119,1
    - Dst: setenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:120,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:128,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:130,1
    - Dst: popen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:132,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:133,1
    - Dst: fgets
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:136,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:138,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:140,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:142,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:143,1
    - Dst: pg_strip_crlf
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:156,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:159,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:162,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:164,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:166,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:169,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:171,1
    - Dst: pclose
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:177,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:179,1
    - Dst: wait_result_to_str
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:180,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:185,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:187,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:192,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:196,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:200,1
    - Dst: popen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:202,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:203,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:206,1
    - Dst: fgets
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:213,1
    - Dst: pg_strip_crlf
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:216,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:217,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:219,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:221,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:223,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:224,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:227,1
    - Dst: strstr
      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:239,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:241,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:243,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:244,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:247,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:250,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:252,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:254,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:255,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:258,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:261,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:263,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:265,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:266,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:269,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:272,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:274,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:276,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:277,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:280,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:288,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:289,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:290,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:291,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:295,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:296,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:299,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:302,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:304,1
    - Dst: strlen
      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: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:310,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:313,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:315,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:317,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:318,1
    - Dst: str2uint
      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:360,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: strpbrk
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:363,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:364,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:365,1
    - Dst: strspn
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:368,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:369,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:371,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:374,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:376,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:378,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:379,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:383,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:386,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:388,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:390,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:391,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:394,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:397,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:399,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:401,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:402,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:405,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:408,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:410,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:412,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:413,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:416,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:419,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:421,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:423,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:424,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:427,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:430,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:432,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:434,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:435,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:438,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:441,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:443,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:445,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:446,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:449,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:452,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:454,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:456,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:457,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:460,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:463,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:465,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:467,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:468,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:471,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:474,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:476,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:478,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:479,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:482,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:485,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:487,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:489,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:490,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:493,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:496,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:498,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:500,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:501,1
    - Dst: str2uint
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:504,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:507,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:509,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:511,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:512,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:516,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:520,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:520,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:521,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:523,1
    - Dst: pclose
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:528,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:530,1
    - Dst: wait_result_to_str
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:531,1
    - Dst: setenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:538,1
    - Dst: setenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:540,1
    - Dst: setenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:542,1
    - Dst: setenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:544,1
    - Dst: setenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:546,1
    - Dst: setenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:548,1
    - Dst: unsetenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:550,1
    - Dst: setenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:552,1
    - Dst: setenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:554,1
    - Dst: setenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:556,1
    - Dst: unsetenv
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:558,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:560,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:561,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:562,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:563,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:564,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:565,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:566,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:567,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:568,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:576,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:580,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:593,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:617,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:620,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:624,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:627,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:630,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:634,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:637,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:640,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:643,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:646,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:649,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:652,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:655,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:658,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:661,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:664,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:667,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:670,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:674,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:677,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:681,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:685,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:687,1
    CyclomaticComplexity: 177
    EdgeCount: 177
    ICount: 384
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 37
    functionDepth: 3
    functionLinenumber: 37
    functionLinenumberEnd: 689
    functionName: get_control_data
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/controldata.c
    functionUses: 1
    functionsReached:
    - getenv
    - str2uint
    - strspn
    - strstr
    - GET_MAJOR_VERSION
    - snprintf
    - strlen
    - strcmp
    - pg_free
    - pg_log
    - fflush
    - pclose
    - setenv
    - popen
    - pg_fatal
    - strlcpy
    - isspace
    - fgets
    - strpbrk
    - wait_result_to_str
    - Assert
    - pg_strdup
    - unsetenv
    - pg_strip_crlf
    - strchr
    linkageType: ''
    returnType: void
    signature: void get_control_data(ClusterInfo *cluster)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:702,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:706,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:709,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:712,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:715,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:718,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:721,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:724,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:729,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:732,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:745,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:748,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:750,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 27
    argCount: 2
    argNames:
    - oldctrl
    - newctrl
    argTypes:
    - ControlData*
    - ControlData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 697
    functionDepth: 0
    functionLinenumber: 697
    functionLinenumberEnd: 751
    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:762,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:764,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:765,1
    - Dst: pg_mv_file
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:766,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:767,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:769,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:773,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:780,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/controldata.c:784,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - transfer_mode
    argTypes:
    - transferMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 754
    functionDepth: 3
    functionLinenumber: 754
    functionLinenumberEnd: 785
    functionName: disable_old_cluster
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/controldata.c
    functionUses: 0
    functionsReached:
    - pg_log
    - pg_mv_file
    - snprintf
    - prep_status
    - pg_fatal
    - check_ok
    linkageType: ''
    returnType: void
    signature: void disable_old_cluster(transferMode transfer_mode)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:96,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:97,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:97,1
    - Dst: umask
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:100,1
    - Dst: parseCommandLine
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:102,1
    - Dst: get_restricted_token
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:104,1
    - Dst: adjust_data_dir
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:106,1
    - Dst: adjust_data_dir
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:107,1
    - Dst: GetDataDirectoryCreatePerm
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:113,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:114,1
    - Dst: umask
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:117,1
    - Dst: make_outputdirs
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:123,1
    - Dst: setup
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:125,1
    - Dst: output_check_banner
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:127,1
    - Dst: check_cluster_versions
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:129,1
    - Dst: get_sock_dir
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:131,1
    - Dst: get_sock_dir
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:132,1
    - Dst: check_cluster_compatibility
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:134,1
    - Dst: check_and_dump_old_cluster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:136,1
    - Dst: start_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:140,1
    - Dst: check_new_cluster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:142,1
    - Dst: report_clusters_compatible
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:143,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:145,1
    - Dst: set_locale_and_encoding
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:150,1
    - Dst: prepare_new_cluster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:152,1
    - Dst: stop_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:154,1
    - Dst: copy_xact_xlog_xid
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:160,1
    - Dst: set_new_cluster_char_signedness
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:161,1
    - Dst: start_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:166,1
    - Dst: prepare_new_globals
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:168,1
    - Dst: create_new_objects
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:170,1
    - Dst: stop_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:172,1
    - Dst: disable_old_cluster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:183,1
    - Dst: transfer_all_new_tablespaces
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:185,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:194,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:195,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:199,1
    - Dst: count_old_cluster_logical_slots
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:209,1
    - Dst: start_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:211,1
    - Dst: create_logical_replication_slots
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:212,1
    - Dst: stop_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:213,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:218,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:219,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:226,1
    - Dst: create_script_for_old_cluster_deletion
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:229,1
    - Dst: issue_warnings_and_set_wal_level
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:231,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:233,1
    - Dst: output_completion_banner
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:238,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:240,1
    - Dst: cleanup_output_dirs
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:242,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 55
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 87
    functionDepth: 6
    functionLinenumber: 87
    functionLinenumberEnd: 245
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - create_new_objects
    - get_sock_dir
    - output_check_banner
    - set_pglocale_pgservice
    - adjust_data_dir
    - check_new_cluster
    - copy_xact_xlog_xid
    - check_cluster_compatibility
    - set_locale_and_encoding
    - check_cluster_versions
    - issue_warnings_and_set_wal_level
    - pg_logging_init
    - exec_prog
    - output_completion_banner
    - check_and_dump_old_cluster
    - cleanup_output_dirs
    - check_ok
    - pg_free
    - setup
    - pg_log
    - prepare_new_globals
    - get_restricted_token
    - stop_postmaster
    - prepare_new_cluster
    - disable_old_cluster
    - create_logical_replication_slots
    - prep_status
    - parseCommandLine
    - make_outputdirs
    - pg_fatal
    - report_clusters_compatible
    - set_new_cluster_char_signedness
    - GetDataDirectoryCreatePerm
    - umask
    - transfer_all_new_tablespaces
    - start_postmaster
    - create_script_for_old_cluster_deletion
    - count_old_cluster_logical_slots
    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:257,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:264,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:265,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:267,1
    - Dst: gettimeofday
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:270,1
    - Dst: strftime
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:272,1
    - Dst: localtime
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:272,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:274,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:274,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:274,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:276,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:277,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:280,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:283,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:284,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:287,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:290,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:291,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:294,1
    - Dst: mkdir
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:300,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:301,1
    - Dst: mkdir
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:302,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:303,1
    - Dst: mkdir
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:304,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:305,1
    - Dst: mkdir
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:306,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:307,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:309,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:312,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:314,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:315,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:320,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:323,1
    - Dst: fopen_priv
      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: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:327,1
    - Dst: ctime
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:331,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:332,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 43
    argCount: 1
    argNames:
    - pgdata
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 252
    functionDepth: 1
    functionLinenumber: 252
    functionLinenumberEnd: 334
    functionName: make_outputdirs
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c
    functionUses: 1
    functionsReached:
    - fclose
    - snprintf
    - time
    - fprintf
    - pg_fatal
    - pg_malloc0
    - gettimeofday
    - fopen_priv
    - localtime
    - mkdir
    - strftime
    - strlen
    - ctime
    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:344,1
    - Dst: find_my_exec
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:355,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:356,1
    - Dst: last_dir_separator
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:358,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:359,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:360,1
    - Dst: verify_directories
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:363,1
    - Dst: pid_lock_file_exists
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:366,1
    - Dst: start_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:377,1
    - Dst: stop_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:378,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:382,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:392,1
    - Dst: stop_postmaster
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:393,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:395,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - argv0
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 337
    functionDepth: 2
    functionLinenumber: 337
    functionLinenumberEnd: 398
    functionName: setup
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c
    functionUses: 3
    functionsReached:
    - find_my_exec
    - stop_postmaster
    - last_dir_separator
    - check_pghost_envvar
    - pg_strdup
    - start_postmaster
    - pg_fatal
    - verify_directories
    - pid_lock_file_exists
    - canonicalize_path
    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:421,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:423,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:429,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 404
    functionDepth: 2
    functionLinenumber: 404
    functionLinenumberEnd: 431
    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:449,1
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:452,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:454,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:456,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:457,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:459,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:462,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:464,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:469,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:470,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:470,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:483,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:484,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:484,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:498,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:498,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:508,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:509,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:511,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:513,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:515,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 440
    functionDepth: 4
    functionLinenumber: 440
    functionLinenumberEnd: 516
    functionName: set_locale_and_encoding
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c
    functionUses: 1
    functionsReached:
    - connectToServer
    - check_ok
    - PQfreemem
    - GET_MAJOR_VERSION
    - PQfinish
    - PQescapeLiteral
    - prep_status
    - PQclear
    - executeQueryOrDie
    - strlen
    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:527,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:528,1
    - Dst: cluster_conn_opts
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:530,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:532,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:540,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:541,1
    - Dst: cluster_conn_opts
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:543,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:545,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 519
    functionDepth: 2
    functionLinenumber: 519
    functionLinenumberEnd: 546
    functionName: prepare_new_cluster
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c
    functionUses: 1
    functionsReached:
    - exec_prog
    - check_ok
    - prep_status
    - cluster_conn_opts
    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:555,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:560,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:562,1
    - Dst: cluster_conn_opts
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:564,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 549
    functionDepth: 2
    functionLinenumber: 549
    functionLinenumberEnd: 568
    functionName: prepare_new_globals
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c
    functionUses: 1
    functionsReached:
    - prep_status
    - set_frozenxids
    - exec_prog
    - check_ok
    - cluster_conn_opts
    linkageType: ''
    returnType: void
    signature: void prepare_new_globals(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: prep_status_progress
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:577,1
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:586,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:587,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:587,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:588,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:603,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:606,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:607,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:608,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:617,1
    - Dst: cluster_conn_opts
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:625,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:643,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:646,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:647,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:648,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:655,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:670,1
    - Dst: parallel_exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:673,1
    - Dst: cluster_conn_opts
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:679,1
    - Dst: reap_child
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:687,1
    - Dst: end_progress_output
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:690,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:691,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:697,1
    - Dst: set_frozenxids
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:698,1
    - Dst: get_db_rel_and_slot_infos
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:701,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 571
    functionDepth: 5
    functionLinenumber: 571
    functionLinenumberEnd: 702
    functionName: create_new_objects
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c
    functionUses: 1
    functionsReached:
    - reap_child
    - connectToServer
    - pg_log
    - check_ok
    - PQfinish
    - GET_MAJOR_VERSION
    - snprintf
    - parallel_exec_prog
    - set_frozenxids
    - exec_prog
    - Max
    - end_progress_output
    - PQclear
    - get_db_rel_and_slot_infos
    - executeQueryOrDie
    - strcmp
    - cluster_conn_opts
    - prep_status_progress
    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:712,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:714,1
    - Dst: rmtree
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:715,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:716,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:718,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - subdir
    - rmtopdir
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 707
    functionDepth: 2
    functionLinenumber: 707
    functionLinenumberEnd: 719
    functionName: remove_new_subdir
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c
    functionUses: 0
    functionsReached:
    - rmtree
    - snprintf
    - prep_status
    - pg_fatal
    - check_ok
    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:730,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:732,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:733,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:735,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:737,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:746,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - old_subdir
    - new_subdir
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 724
    functionDepth: 3
    functionLinenumber: 724
    functionLinenumberEnd: 747
    functionName: copy_subdir_files
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c
    functionUses: 0
    functionsReached:
    - snprintf
    - prep_status
    - exec_prog
    - remove_new_subdir
    - check_ok
    linkageType: ''
    returnType: void
    signature: void copy_subdir_files(const char *old_subdir, const char *new_subdir)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: copy_subdir_files
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:756,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:756,1
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:758,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:761,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:762,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:766,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:769,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:770,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:774,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:779,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:785,1
    - Dst: copy_subdir_files
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:796,1
    - Dst: copy_subdir_files
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:797,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:799,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:805,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:812,1
    - Dst: remove_new_subdir
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:821,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:823,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:833,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:839,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:843,1
    - Dst: exec_prog
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:844,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:849,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 850
      start: 749
    functionDepth: 4
    functionLinenumber: 749
    functionLinenumberEnd: 850
    functionName: copy_xact_xlog_xid
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c
    functionUses: 1
    functionsReached:
    - GET_MAJOR_VERSION
    - prep_status
    - copy_subdir_files
    - exec_prog
    - remove_new_subdir
    - check_ok
    linkageType: ''
    returnType: void
    signature: void copy_xact_xlog_xid(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:886,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:888,1
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:890,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:894,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:894,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:900,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:900,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:906,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:910,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:911,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:913,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:916,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:917,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:926,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:927,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:927,1
    - Dst: quote_identifier
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:929,1
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:931,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:935,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:935,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:941,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:942,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: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:955,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:958,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:959,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:959,1
    - Dst: quote_identifier
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:961,1
    - Dst: PQclear
      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: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:968,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 1
    argNames:
    - minmxid_only
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 874
    functionDepth: 4
    functionLinenumber: 874
    functionLinenumberEnd: 969
    functionName: set_frozenxids
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c
    functionUses: 2
    functionsReached:
    - connectToServer
    - check_ok
    - PQntuples
    - PQfinish
    - quote_identifier
    - prep_status
    - PQgetvalue
    - PQfnumber
    - PQclear
    - executeQueryOrDie
    - strcmp
    - CppAsString2
    linkageType: ''
    returnType: void
    signature: void set_frozenxids(bool minmxid_only)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prep_status_progress
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:979,1
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:992,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:993,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:995,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1002,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1005,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1006,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1007,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1009,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1013,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1013,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1015,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1018,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1020,1
    - Dst: end_progress_output
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1023,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c:1024,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1027
      start: 976
    functionDepth: 4
    functionLinenumber: 976
    functionLinenumberEnd: 1027
    functionName: create_logical_replication_slots
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/pg_upgrade.c
    functionUses: 1
    functionsReached:
    - connectToServer
    - pg_log
    - check_ok
    - createPQExpBuffer
    - PQfinish
    - appendPQExpBufferStr
    - appendStringLiteralConn
    - appendPQExpBuffer
    - resetPQExpBuffer
    - end_progress_output
    - PQclear
    - executeQueryOrDie
    - destroyPQExpBuffer
    - prep_status_progress
    linkageType: ''
    returnType: void
    signature: void create_logical_replication_slots(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GET_MAJOR_VERSION
      Src: /src/postgres/src/bin/pg_upgrade/version.c:24,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 29
    functionName: jsonb_9_4_check_applicable
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/version.c
    functionUses: 0
    functionsReached:
    - GET_MAJOR_VERSION
    linkageType: ''
    returnType: bool
    signature: bool jsonb_9_4_check_applicable(ClusterInfo *cluster)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/version.c:44,1
    - Dst: connectToServer
      Src: /src/postgres/src/bin/pg_upgrade/version.c:55,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/version.c:58,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/version.c:70,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/version.c:71,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/version.c:72,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/version.c:78,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/version.c:79,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/version.c:84,1
    - Dst: appendPsqlMetaConnect
      Src: /src/postgres/src/bin/pg_upgrade/version.c:85,1
    - Dst: fputs
      Src: /src/postgres/src/bin/pg_upgrade/version.c:86,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/version.c:87,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/version.c:90,1
    - Dst: quote_identifier
      Src: /src/postgres/src/bin/pg_upgrade/version.c:91,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/version.c:91,1
    - Dst: quote_identifier
      Src: /src/postgres/src/bin/pg_upgrade/version.c:92,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/version.c:92,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/version.c:96,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_upgrade/version.c:101,1
    - Dst: executeQueryOrDie
      Src: /src/postgres/src/bin/pg_upgrade/version.c:101,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_upgrade/version.c:113,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/version.c:117,1
    - Dst: report_status
      Src: /src/postgres/src/bin/pg_upgrade/version.c:121,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/version.c:123,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/version.c:129,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/version.c:139,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 2
    argNames:
    - cluster
    - check_mode
    argTypes:
    - ClusterInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 36
    functionDepth: 4
    functionLinenumber: 36
    functionLinenumberEnd: 140
    functionName: old_9_6_invalidate_hash_indexes
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/version.c
    functionUses: 2
    functionsReached:
    - termPQExpBuffer
    - PQgetvalue
    - fprintf
    - executeQueryOrDie
    - report_status
    - PQclear
    - check_ok
    - connectToServer
    - pg_log
    - PQntuples
    - fputs
    - fclose
    - PQfinish
    - prep_status
    - PQfnumber
    - pg_fatal
    - fopen_priv
    - quote_identifier
    - initPQExpBuffer
    - appendPsqlMetaConnect
    linkageType: ''
    returnType: void
    signature: void old_9_6_invalidate_hash_indexes(ClusterInfo *cluster, bool check_mode)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_upgrade/version.c:150,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_upgrade/version.c:151,1
    - Dst: AssertVariableIsOfType
      Src: /src/postgres/src/bin/pg_upgrade/version.c:155,1
    - Dst: fopen_priv
      Src: /src/postgres/src/bin/pg_upgrade/version.c:161,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_upgrade/version.c:162,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/version.c:164,1
    - Dst: appendPsqlMetaConnect
      Src: /src/postgres/src/bin/pg_upgrade/version.c:165,1
    - Dst: fputs
      Src: /src/postgres/src/bin/pg_upgrade/version.c:166,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_upgrade/version.c:167,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_upgrade/version.c:170,1
    - Dst: quote_identifier
      Src: /src/postgres/src/bin/pg_upgrade/version.c:171,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_upgrade/version.c:171,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - dbinfo
    - res
    - arg
    argTypes:
    - DbInfo*
    - PGresult*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 172
    functionName: process_extension_updates
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/version.c
    functionUses: 0
    functionsReached:
    - PQntuples
    - fputs
    - AssertVariableIsOfType
    - quote_identifier
    - termPQExpBuffer
    - PQgetvalue
    - fprintf
    - PQfnumber
    - pg_fatal
    - fopen_priv
    - initPQExpBuffer
    - appendPsqlMetaConnect
    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:182,1
    - Dst: prep_status
      Src: /src/postgres/src/bin/pg_upgrade/version.c:187,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/pg_upgrade/version.c:190,1
    - Dst: upgrade_task_add_step
      Src: /src/postgres/src/bin/pg_upgrade/version.c:192,1
    - Dst: upgrade_task_run
      Src: /src/postgres/src/bin/pg_upgrade/version.c:195,1
    - Dst: upgrade_task_free
      Src: /src/postgres/src/bin/pg_upgrade/version.c:196,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_upgrade/version.c:200,1
    - Dst: report_status
      Src: /src/postgres/src/bin/pg_upgrade/version.c:201,1
    - Dst: pg_log
      Src: /src/postgres/src/bin/pg_upgrade/version.c:202,1
    - Dst: check_ok
      Src: /src/postgres/src/bin/pg_upgrade/version.c:211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - ClusterInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 178
    functionDepth: 4
    functionLinenumber: 178
    functionLinenumberEnd: 212
    functionName: report_extension_updates
    functionSourceFile: /src/postgres/src/bin/pg_upgrade/version.c
    functionUses: 1
    functionsReached:
    - pg_log
    - upgrade_task_add_step
    - report_status
    - fclose
    - prep_status
    - upgrade_task_free
    - upgrade_task_create
    - check_ok
    - upgrade_task_run
    - 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
      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
      Src: /src/postgres/src/bin/pg_rewind/timeline.c:118,1
    - Dst: pg_malloc
      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:
    - pg_realloc
    - sscanf
    - pg_malloc
    - exit
    - pg_log_error_detail
    - isspace
    - pg_log_error
    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: 43
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:157,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:158,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:158,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:159,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:164,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:164,1
    - Dst: usage
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:166,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:167,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:169,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:169,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:171,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:172,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:176,1
    - Dst: pg_logging_increase_verbosity
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:202,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:206,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:210,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:214,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:222,1
    - Dst: parse_sync_method
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:226,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:227,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:232,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:233,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:239,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:240,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:241,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:246,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:247,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:248,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:253,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:254,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:255,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:260,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:261,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:262,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:267,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:269,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:270,1
    - Dst: geteuid
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:280,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:282,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:283,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:285,1
    - Dst: get_restricted_token
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:289,1
    - Dst: GetDataDirectoryCreatePerm
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:292,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:293,1
    - Dst: umask
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:296,1
    - Dst: getRestoreCommand
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:298,1
    - Dst: atexit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:300,1
    - Dst: PQconnectdb
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:308,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:310,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:311,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:311,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:314,1
    - Dst: init_libpq_source
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:316,1
    - Dst: init_local_source
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:319,1
    - Dst: slurpFile
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:331,1
    - Dst: digestControlFile
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:332,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:333,1
    - Dst: ensureCleanShutdown
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:339,1
    - Dst: slurpFile
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:341,1
    - Dst: digestControlFile
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:342,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:343,1
    - Dst: fetch_file
      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: sanityChecks
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:350,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:360,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:364,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:375,1
    - Dst: getTimelineHistory
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:389,1
    - Dst: getTimelineHistory
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:390,1
    - Dst: findCommonAncestorTimeline
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:392,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:396,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:397,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:404,1
    - Dst: readOneRecord
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:417,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:443,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:451,1
    - Dst: WriteRecoveryConfig
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:453,1
    - Dst: GenerateRecoveryConfig
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:454,1
    - Dst: GetDbnameFromConnectionOptions
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:455,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:456,1
    - Dst: keepwal_init
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:460,1
    - Dst: findLastCheckpoint
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:462,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:464,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:465,1
    - Dst: filehash_init
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:468,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:474,1
    - Dst: traverse_files
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:475,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:478,1
    - Dst: traverse_datadir
      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:487,1
    - Dst: extractPageMap
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:488,1
    - Dst: decide_file_actions
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:495,1
    - Dst: calculate_totals
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:497,1
    - Dst: print_filemap
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:501,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:508,1
    - Dst: perform_rewind
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:523,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:526,1
    - Dst: sync_target_dir
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:527,1
    - Dst: WriteRecoveryConfig
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:531,1
    - Dst: GenerateRecoveryConfig
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:532,1
    - Dst: GetDbnameFromConnectionOptions
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:533,1
    - Dst: destroy
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:536,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:539,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:543,1
    CyclomaticComplexity: 52
    EdgeCount: 52
    ICount: 184
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 546
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_rewind/pg_rewind.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - LSN_FORMAT_ARGS
    - traverse_files
    - pg_logging_increase_verbosity
    - extractPageMap
    - WriteRecoveryConfig
    - set_pglocale_pgservice
    - exit
    - calculate_totals
    - init_local_source
    - geteuid
    - pfree
    - GenerateRecoveryConfig
    - sync_target_dir
    - sanityChecks
    - digestControlFile
    - slurpFile
    - puts
    - pg_logging_init
    - Max
    - PQconnectdb
    - parse_sync_method
    - PQstatus
    - pg_log_info
    - strcmp
    - pg_log_error
    - fetch_file
    - GetDbnameFromConnectionOptions
    - pg_free
    - perform_rewind
    - get_restricted_token
    - PQerrorMessage
    - PQfinish
    - atexit
    - pg_log_error_hint
    - findCommonAncestorTimeline
    - usage
    - print_filemap
    - pg_fatal
    - readOneRecord
    - GetDataDirectoryCreatePerm
    - getRestoreCommand
    - get_progname
    - getopt_long
    - umask
    - Assert
    - decide_file_actions
    - destroy
    - findLastCheckpoint
    - pg_strdup
    - init_libpq_source
    - filehash_init
    - keepwal_init
    - ensureCleanShutdown
    - getTimelineHistory
    - traverse_datadir
    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:585,1
    - Dst: datapagemap_next
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:586,1
    - Dst: rewind_source*::queue_fetch_range
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:589,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:591,1
    - Dst: rewind_source*::queue_fetch_file
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:601,1
    - Dst: truncate_target_file
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:605,1
    - Dst: rewind_source*::queue_fetch_range
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:609,1
    - Dst: remove_target
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:615,1
    - Dst: create_target
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:619,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:623,1
    - Dst: rewind_source*::finish_fetch
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:629,1
    - Dst: close_target_file
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:631,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:633,1
    - Dst: rewind_source*::fetch_file
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:639,1
    - Dst: digestControlFile
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:640,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:641,1
    - Dst: memcmp
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:652,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:655,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:659,1
    - Dst: createBackupLabel
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:680,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:709,1
    - Dst: rewind_source*::get_current_wal_insert_lsn
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:711,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:712,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:726,1
    - Dst: update_controlfile
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:731,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: 732
      start: 554
    functionDepth: 1
    functionLinenumber: 554
    functionLinenumberEnd: 732
    functionName: perform_rewind
    functionSourceFile: /src/postgres/src/bin/pg_rewind/pg_rewind.c
    functionUses: 1
    functionsReached:
    - truncate_target_file
    - datapagemap_iterate
    - progress_report
    - digestControlFile
    - rewind_source*::queue_fetch_range
    - memcmp
    - Max
    - pg_log_info
    - memcpy
    - createBackupLabel
    - pg_free
    - rewind_source*::queue_fetch_file
    - update_controlfile
    - pg_fatal
    - rewind_source*::fetch_file
    - datapagemap_next
    - rewind_source*::finish_fetch
    - create_target
    - remove_target
    - rewind_source*::get_current_wal_insert_lsn
    - close_target_file
    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:741,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:749,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:759,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:780,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 734
    functionDepth: 0
    functionLinenumber: 734
    functionLinenumberEnd: 781
    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:804,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:822,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:824,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:827,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:827,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:828,1
    - Dst: fputc
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:835,1
    - Dst: isatty
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:835,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:835,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - finished
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 792
    functionDepth: 0
    functionLinenumber: 792
    functionLinenumberEnd: 836
    functionName: progress_report
    functionSourceFile: /src/postgres/src/bin/pg_rewind/pg_rewind.c
    functionUses: 6
    functionsReached:
    - snprintf
    - time
    - fputc
    - fprintf
    - isatty
    - _
    - fileno
    - strlen
    linkageType: ''
    returnType: void
    signature: void progress_report(bool finished)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:846,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:848,1
    - Dst: Min
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:851,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - XLogRecPtr
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 852
      start: 843
    functionDepth: 1
    functionLinenumber: 843
    functionLinenumberEnd: 852
    functionName: MinXLogRecPtr
    functionSourceFile: /src/postgres/src/bin/pg_rewind/pg_rewind.c
    functionUses: 0
    functionsReached:
    - Min
    - XLogRecPtrIsInvalid
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr MinXLogRecPtr(XLogRecPtr a, XLogRecPtr b)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:868,1
    - Dst: TLHistoryFilePath
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:878,1
    - Dst: fetch_file
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:882,1
    - Dst: slurpFile
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:884,1
    - Dst: rewind_parseTimeLineHistory
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:886,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:887,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:896,1
    - Dst: pg_log_debug
      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:905,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:906,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:907,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - tli
    - is_source
    - nentries
    argTypes:
    - TimeLineID
    - bool
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 857
    functionDepth: 2
    functionLinenumber: 857
    functionLinenumberEnd: 912
    functionName: getTimelineHistory
    functionSourceFile: /src/postgres/src/bin/pg_rewind/pg_rewind.c
    functionUses: 1
    functionsReached:
    - LSN_FORMAT_ARGS
    - slurpFile
    - pg_malloc
    - TLHistoryFilePath
    - fetch_file
    - pg_log_debug
    - rewind_parseTimeLineHistory
    - pg_free
    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:936,1
    - Dst: MinXLogRecPtr
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:947,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:953,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: 955
      start: 920
    functionDepth: 2
    functionLinenumber: 920
    functionLinenumberEnd: 955
    functionName: findCommonAncestorTimeline
    functionSourceFile: /src/postgres/src/bin/pg_rewind/pg_rewind.c
    functionUses: 1
    functionsReached:
    - Min
    - MinXLogRecPtr
    - 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:973,1
    - Dst: XLogFileName
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:974,1
    - Dst: time
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:979,1
    - Dst: localtime
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:980,1
    - Dst: strftime
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:981,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:983,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:990,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:991,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:994,1
    - Dst: open_target_file
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:997,1
    - Dst: write_target_range
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:998,1
    - Dst: close_target_file
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:999,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - startpoint
    - starttli
    - checkpointloc
    argTypes:
    - XLogRecPtr
    - TimeLineID
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 962
    functionDepth: 1
    functionLinenumber: 962
    functionLinenumberEnd: 1000
    functionName: createBackupLabel
    functionSourceFile: /src/postgres/src/bin/pg_rewind/pg_rewind.c
    functionUses: 1
    functionsReached:
    - LSN_FORMAT_ARGS
    - XLByteToSeg
    - snprintf
    - time
    - XLogFileName
    - pg_fatal
    - open_target_file
    - write_target_range
    - localtime
    - strftime
    - close_target_file
    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:1011,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1012,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1013,1
    - Dst: EQ_CRC32C
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1016,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1017,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ControlFile
    argTypes:
    - ControlFileData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 1005
    functionDepth: 1
    functionLinenumber: 1005
    functionLinenumberEnd: 1018
    functionName: checkControlFile
    functionSourceFile: /src/postgres/src/bin/pg_rewind/pg_rewind.c
    functionUses: 0
    functionsReached:
    - COMP_CRC32C
    - FIN_CRC32C
    - INIT_CRC32C
    - EQ_CRC32C
    - pg_fatal
    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:1029,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1032,1
    - Dst: IsValidWalSegSize
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1037,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1039,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1039,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1043,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1044,1
    - Dst: checkControlFile
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1048,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - ControlFile
    - content
    - size
    argTypes:
    - ControlFileData*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1024
    functionDepth: 1
    functionLinenumber: 1024
    functionLinenumberEnd: 1049
    functionName: digestControlFile
    functionSourceFile: /src/postgres/src/bin/pg_rewind/pg_rewind.c
    functionUses: 2
    functionsReached:
    - checkControlFile
    - exit
    - pg_fatal
    - IsValidWalSegSize
    - pg_log_error_detail
    - memcpy
    - pg_log_error
    - ngettext
    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:1068,1
    - Dst: find_my_exec
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1076,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1077,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1080,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1083,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1091,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1094,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1097,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1098,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1103,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1104,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1108,1
    - Dst: pipe_read_line
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1110,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1112,1
    - Dst: pg_strip_crlf
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1114,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1116,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1117,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1119,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1122,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 1
    argNames:
    - argv0
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1123
      start: 1057
    functionDepth: 1
    functionLinenumber: 1057
    functionLinenumberEnd: 1123
    functionName: getRestoreCommand
    functionSourceFile: /src/postgres/src/bin/pg_rewind/pg_rewind.c
    functionUses: 1
    functionsReached:
    - find_my_exec
    - pg_strip_crlf
    - createPQExpBuffer
    - appendPQExpBufferStr
    - strlcpy
    - pg_fatal
    - appendShellString
    - find_other_exec
    - pg_log_debug
    - strcmp
    - destroyPQExpBuffer
    - pipe_read_line
    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:1138,1
    - Dst: find_my_exec
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1144,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1145,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1148,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1151,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1155,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1170,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1173,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1176,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1177,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1182,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1183,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: fflush
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1190,1
    - Dst: system
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1191,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1193,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1194,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1195,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_rewind/pg_rewind.c:1198,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 1
    argNames:
    - argv0
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1199
      start: 1130
    functionDepth: 1
    functionLinenumber: 1130
    functionLinenumberEnd: 1199
    functionName: ensureCleanShutdown
    functionSourceFile: /src/postgres/src/bin/pg_rewind/pg_rewind.c
    functionUses: 1
    functionsReached:
    - pg_log_error_detail
    - find_my_exec
    - fflush
    - destroyPQExpBuffer
    - createPQExpBuffer
    - appendPQExpBufferStr
    - exit
    - strlcpy
    - pg_fatal
    - pg_log_info
    - find_other_exec
    - appendShellString
    - pg_log_error
    - system
    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:1205,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1206
      start: 1201
    functionDepth: 1
    functionLinenumber: 1201
    functionLinenumberEnd: 1206
    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
      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
    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:
    - snprintf
    - open
    - close
    - read
    - pg_fatal
    - open_target_file
    - write_target_range
    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:
    - lseek
    - snprintf
    - open
    - close
    - pg_fatal
    - read
    - open_target_file
    - write_target_range
    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:
    - LSN_FORMAT_ARGS
    - XLogReadRecord
    - XLogReaderAllocate
    - XLogBeginRead
    - close
    - XLogReaderFree
    - pg_fatal
    - extractPageInfo
    - XL_ROUTINE
    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:
    - LSN_FORMAT_ARGS
    - XLogReadRecord
    - XLogReaderAllocate
    - XLogBeginRead
    - close
    - XLogReaderFree
    - pg_fatal
    - XL_ROUTINE
    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:
    - XLogSegmentOffset
    - LSN_FORMAT_ARGS
    - XLogReadRecord
    - XLogReaderAllocate
    - XLogRecGetRmid
    - memcpy
    - XLogBeginRead
    - snprintf
    - close
    - XLogFileName
    - XLogRecGetInfo
    - XLogRecGetData
    - XLogReaderFree
    - pg_fatal
    - XL_ROUTINE
    - keepwal_add_entry
    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:
    - XLogSegmentOffset
    - XLByteToSeg
    - XLByteInSeg
    - Assert
    - lseek
    - close
    - snprintf
    - open
    - XLogFileName
    - XLogSegNoOffsetToRecPtr
    - read
    - RestoreArchivedFile
    - pg_log_debug
    - pg_log_error
    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:
    - LSN_FORMAT_ARGS
    - XLogRecGetRmid
    - RmgrName
    - XLogRecGetInfo
    - pg_fatal
    - XLogRecMaxBlockId
    - process_target_wal_block_change
    - XLogRecGetBlockTagExtended
    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_malloc
      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_malloc
    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:
    - datapagemap_next
    - pg_log_debug
    - datapagemap_iterate
    - pg_free
    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: isRelDataFile
      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:
    - filehash_insert
    - pg_strdup
    - isRelDataFile
    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
    - pg_strdup
    - keepwal_insert
    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: isRelDataFile
      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
    - isRelDataFile
    - pg_strdup
    - pg_fatal
    - strcmp
    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:
    - strcmp
    - insert_filehash_entry
    - pg_fatal
    - pg_strdup
    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:
    - pfree
    - Assert
    - datasegpath
    - datapagemap_add
    - pg_fatal
    - lookup_filehash_entry
    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
    - last_dir_separator
    - snprintf
    - pg_log_debug
    - strncmp
    - strlen
    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:
    - datapagemap_next
    - datapagemap_iterate
    - pg_free
    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:552,1
    - Dst: action_to_str
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:553,1
    - Dst: datapagemap_print
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:556,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:559,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - filemap
    argTypes:
    - filemap_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 540
    functionDepth: 3
    functionLinenumber: 540
    functionLinenumberEnd: 560
    functionName: print_filemap
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 1
    functionsReached:
    - datapagemap_print
    - pg_log_debug
    - fflush
    - action_to_str
    linkageType: ''
    returnType: void
    signature: void print_filemap(filemap_t *filemap)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:603,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:612,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:621,1
    - Dst: datasegpath
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:637,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:639,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:642,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 570
    functionDepth: 1
    functionLinenumber: 570
    functionLinenumberEnd: 646
    functionName: isRelDataFile
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 2
    functionsReached:
    - strcmp
    - pfree
    - datasegpath
    - sscanf
    linkageType: ''
    returnType: bool
    signature: bool isRelDataFile(const char *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: relpathperm
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:659,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:662,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:666,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rlocator
    - forknum
    - segno
    argTypes:
    - RelFileLocator
    - ForkNumber
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 653
    functionDepth: 1
    functionLinenumber: 653
    functionLinenumberEnd: 667
    functionName: datasegpath
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 2
    functionsReached:
    - relpathperm
    - psprintf
    - 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:691,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:693,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 679
    functionDepth: 0
    functionLinenumber: 679
    functionLinenumberEnd: 694
    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: 22
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:708,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:712,1
    - Dst: check_file_excluded
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:718,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:744,1
    - Dst: keepwal_entry_exists
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:754,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:756,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:767,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:774,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:779,1
    - Dst: pg_str_endswith
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:786,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:846,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:851,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 60
    argCount: 1
    argNames:
    - entry
    argTypes:
    - file_entry_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 852
      start: 699
    functionDepth: 2
    functionLinenumber: 699
    functionLinenumberEnd: 852
    functionName: decide_file_action
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 0
    functionsReached:
    - strcmp
    - Assert
    - strstr
    - pg_str_endswith
    - pg_fatal
    - pg_log_debug
    - check_file_excluded
    - keepwal_entry_exists
    linkageType: ''
    returnType: file_action_t
    signature: file_action_t decide_file_action(file_entry_t *entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: filehash_start_iterate
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:868,1
    - Dst: filehash_iterate
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:869,1
    - Dst: decide_file_action
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:871,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:878,1
    - Dst: filehash_start_iterate
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:881,1
    - Dst: filehash_iterate
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:883,1
    - Dst: qsort
      Src: /src/postgres/src/bin/pg_rewind/filemap.c:888,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 892
      start: 860
    functionDepth: 3
    functionLinenumber: 860
    functionLinenumberEnd: 892
    functionName: decide_file_actions
    functionSourceFile: /src/postgres/src/bin/pg_rewind/filemap.c
    functionUses: 1
    functionsReached:
    - qsort
    - pg_malloc
    - filehash_start_iterate
    - filehash_iterate
    - decide_file_action
    linkageType: ''
    returnType: filemap_t
    signature: 'filemap_t *

      decide_file_actions(void)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:55,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:55,1
    - Dst: close_target_file
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:58,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:60,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:65,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:67,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 2
    argNames:
    - path
    - trunc
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 69
    functionName: open_target_file
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 3
    functionsReached:
    - snprintf
    - open
    - pg_fatal
    - strcmp
    - strlen
    - close_target_file
    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:80,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:81,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 85
    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:95,1
    - Dst: lseek
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:100,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:101,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:111,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:117,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - buf
    - begin
    - size
    argTypes:
    - char*
    - off_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 126
    functionName: write_target_range
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 3
    functionsReached:
    - lseek
    - write
    - progress_report
    - 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:132,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:133,1
    - Dst: remove_target_dir
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:138,1
    - Dst: remove_target_file
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:142,1
    - Dst: remove_target_symlink
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:146,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:150,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - entry
    argTypes:
    - file_entry_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 153
    functionName: remove_target
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 1
    functionsReached:
    - Assert
    - remove_target_symlink
    - pg_fatal
    - remove_target_file
    - remove_target_dir
    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:158,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:159,1
    - Dst: create_target_dir
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:164,1
    - Dst: create_target_symlink
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:168,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:173,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:177,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - entry
    argTypes:
    - file_entry_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 180
    functionName: create_target
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 1
    functionsReached:
    - create_target_symlink
    - Assert
    - create_target_dir
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void create_target(file_entry_t *entry)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:194,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:195,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:200,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - path
    - missing_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 203
    functionName: remove_target_file
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 1
    functionsReached:
    - unlink
    - snprintf
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void remove_target_file(const char *path, bool missing_ok)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:214,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:216,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:218,1
    - Dst: ftruncate
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:221,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:222,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:225,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - path
    - newsize
    argTypes:
    - char*
    - off_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 226
    functionName: truncate_target_file
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 1
    functionsReached:
    - ftruncate
    - snprintf
    - open
    - close
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void truncate_target_file(const char *path, off_t newsize)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:236,1
    - Dst: mkdir
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:237,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:238,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 240
    functionName: create_target_dir
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 1
    functionsReached:
    - snprintf
    - pg_fatal
    - mkdir
    linkageType: ''
    returnType: void
    signature: void create_target_dir(const char *path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:250,1
    - Dst: rmdir
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:251,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:252,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 254
    functionName: remove_target_dir
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 1
    functionsReached:
    - rmdir
    - snprintf
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void remove_target_dir(const char *path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:264,1
    - Dst: symlink
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:265,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:266,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - path
    - link
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 268
    functionName: create_target_symlink
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 1
    functionsReached:
    - pg_fatal
    - snprintf
    - symlink
    linkageType: ''
    returnType: void
    signature: void create_target_symlink(const char *path, const char *link)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:278,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:279,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:280,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 282
    functionName: remove_target_symlink
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 1
    functionsReached:
    - unlink
    - snprintf
    - 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:299,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 300
    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:323,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:325,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:326,1
    - Dst: fstat
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:329,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:330,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:335,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:337,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:341,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:344,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:347,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - datadir
    - path
    - filesize
    argTypes:
    - char*
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 355
    functionName: slurpFile
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 3
    functionsReached:
    - snprintf
    - open
    - fstat
    - close
    - pg_malloc
    - pg_fatal
    - read
    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:364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - datadir
    - callback
    argTypes:
    - char*
    - process_file_callback_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 361
    functionDepth: 1
    functionLinenumber: 361
    functionLinenumberEnd: 365
    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:382,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:384,1
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:386,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:388,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:391,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:397,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:398,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:401,1
    - Dst: lstat
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:403,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:417,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:422,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:424,1
    - Dst: S_ISREG
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:426,1
    - Dst: callback
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:427,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:428,1
    - Dst: callback
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:430,1
    - Dst: recurse_dir
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:432,1
    - Dst: S_ISLNK
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:434,1
    - Dst: readlink
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:439,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:441,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:444,1
    - Dst: callback
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:448,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:455,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:456,1
    - Dst: recurse_dir
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:457,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:462,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:465,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_rewind/file_ops.c:466,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: 468
      start: 373
    functionDepth: 1
    functionLinenumber: 373
    functionLinenumberEnd: 468
    functionName: recurse_dir
    functionSourceFile: /src/postgres/src/bin/pg_rewind/file_ops.c
    functionUses: 2
    functionsReached:
    - readdir
    - lstat
    - S_ISREG
    - S_ISLNK
    - closedir
    - snprintf
    - S_ISDIR
    - opendir
    - readlink
    - pg_fatal
    - callback
    - strcmp
    - recurse_dir
    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
      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:
    - initStringInfo
    - init_libpq_conn
    - pg_malloc0
    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:
    - PQprepare
    - PQexec
    - PQresultStatus
    - PQresultErrorMessage
    - run_simple_query
    - pg_fatal
    - PQclear
    - strcmp
    - run_simple_command
    - 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:
    - PQexec
    - PQntuples
    - PQresultStatus
    - PQnfields
    - pg_strdup
    - PQresultErrorMessage
    - PQgetvalue
    - pg_fatal
    - PQgetisnull
    - PQclear
    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:
    - PQexec
    - PQresultStatus
    - PQresultErrorMessage
    - pg_fatal
    - PQclear
    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:
    - pg_fatal
    - run_simple_query
    - sscanf
    - pg_free
    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:
    - PQexec
    - PQntuples
    - is_absolute_path
    - PQresultStatus
    - PQnfields
    - PQresultErrorMessage
    - PQgetvalue
    - pg_fatal
    - PQgetisnull
    - callback
    - PQclear
    - strcmp
    - atoll
    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:
    - Max
    - libpq_queue_fetch_range
    - 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:
    - PQresultStatus
    - PQgetvalue
    - PQgetResult
    - PQfformat
    - PQftype
    - PQnfields
    - PQsendQueryPrepared
    - PQclear
    - memcpy
    - strcmp
    - PQgetlength
    - pg_free
    - resetStringInfo
    - PQerrorMessage
    - PQntuples
    - PQsetSingleRowMode
    - PQresultErrorMessage
    - pg_malloc
    - pg_fatal
    - open_target_file
    - appendArrayEscapedString
    - write_target_range
    - pg_log_debug
    - appendStringInfo
    - appendStringInfoChar
    - PQgetisnull
    - remove_target_file
    - pg_ntoh64
    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:
    - PQntuples
    - PQresultStatus
    - PQresultErrorMessage
    - PQexecParams
    - PQgetvalue
    - pg_malloc
    - pg_fatal
    - PQgetisnull
    - PQclear
    - memcpy
    - pg_log_debug
    - PQgetlength
    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: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - getopt_long
    - DestroyBlockRefTableReader
    - memset
    - close
    - open
    - pg_logging_init
    - set_pglocale_pgservice
    - pg_log_error_hint
    - handle_help_version_opts
    - exit
    - pg_fatal
    - dump_one_relation
    - pg_log_error
    - BlockRefTableReaderNextRelation
    - CreateBlockRefTableReader
    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:
    - printf
    - qsort
    - repalloc_array
    - BlockRefTableReaderGetBlocks
    - palloc_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_end
    - exit
    - va_start
    - 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: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - get_progname
    - printf
    - find_my_exec
    - show_item
    - advice
    - set_pglocale_pgservice
    - fprintf
    - exit
    - get_configdata
    - help
    - _
    - strcmp
    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:69,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:69,1
    - 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:86,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:86,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
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 88
    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:128,1
    - Dst: time
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:130,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:144,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:144,1
    - Dst: fputc
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:153,1
    - Dst: isatty
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:153,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:153,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - finished
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 154
    functionName: progress_report
    functionSourceFile: /src/postgres/src/bin/pg_checksums/pg_checksums.c
    functionUses: 7
    functionsReached:
    - Assert
    - fputc
    - time
    - fprintf
    - isatty
    - _
    - fileno
    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:163,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:167,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - fn
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 172
    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:184,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:188,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:191,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:198,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:205,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:208,1
    - Dst: PageIsNew
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:222,1
    - Dst: pg_checksum_page
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:225,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:231,1
    - Dst: lseek
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:253,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:254,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:257,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:261,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:264,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:270,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:276,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:278,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:288,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 55
    argCount: 2
    argNames:
    - fn
    - segmentno
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 289
    functionName: scan_file
    functionSourceFile: /src/postgres/src/bin/pg_checksums/pg_checksums.c
    functionUses: 0
    functionsReached:
    - write
    - progress_report
    - Assert
    - lseek
    - close
    - open
    - read
    - pg_fatal
    - pg_log_info
    - pg_checksum_page
    - pg_log_error
    - PageIsNew
    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:306,1
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:307,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:309,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:310,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:315,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:316,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:320,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:322,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:326,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:328,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:332,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:335,1
    - Dst: lstat
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:336,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:337,1
    - Dst: S_ISREG
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:338,1
    - Dst: skipfile
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:345,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:354,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:355,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:359,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:361,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:365,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:369,1
    - Dst: scan_file
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:380,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:382,1
    - Dst: S_ISLNK
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:382,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:390,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:390,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:402,1
    - Dst: lstat
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:405,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:406,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:413,1
    - Dst: scan_directory
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:417,1
    - Dst: scan_directory
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:423,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:427,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 51
    argCount: 3
    argNames:
    - basedir
    - subdir
    - sizeonly
    argTypes:
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 298
    functionDepth: 2
    functionLinenumber: 298
    functionLinenumberEnd: 429
    functionName: scan_directory
    functionSourceFile: /src/postgres/src/bin/pg_checksums/pg_checksums.c
    functionUses: 1
    functionsReached:
    - readdir
    - skipfile
    - lstat
    - S_ISREG
    - atoi
    - S_ISLNK
    - scan_directory
    - closedir
    - snprintf
    - S_ISDIR
    - scan_file
    - opendir
    - pg_fatal
    - strlcpy
    - strcmp
    - strncmp
    - strlen
    - strchr
    linkageType: ''
    returnType: int64
    signature: int64 scan_directory(const char *basedir, const char *subdir, bool
      sizeonly)
  - BBCount: 38
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:452,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:453,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:453,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:454,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:458,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:458,1
    - Dst: usage
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:460,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:461,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:463,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:463,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:465,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:466,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:470,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:487,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:490,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:491,1
    - Dst: parse_sync_method
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:503,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:504,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:508,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:509,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:518,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:523,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:524,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:525,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:532,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:534,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:535,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:541,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:542,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:543,1
    - Dst: get_controlfile
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:547,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:549,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:552,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:556,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:557,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:559,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:569,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:573,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:577,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:581,1
    - Dst: scan_directory
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:593,1
    - Dst: scan_directory
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:594,1
    - Dst: scan_directory
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:595,1
    - Dst: scan_directory
      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:599,1
    - Dst: scan_directory
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:600,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:603,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:605,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:605,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:606,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:606,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:607,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:607,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:610,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:610,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:611,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:611,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:614,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:618,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:618,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:619,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:619,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:635,1
    - Dst: sync_pgdata
      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:639,1
    - Dst: update_controlfile
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:640,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:643,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:643,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:645,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:645,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:647,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_checksums/pg_checksums.c:647,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 129
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 431
    functionDepth: 3
    functionLinenumber: 431
    functionLinenumberEnd: 651
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_checksums/pg_checksums.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - getenv
    - scan_directory
    - set_pglocale_pgservice
    - pstrdup
    - exit
    - get_controlfile
    - progress_report
    - puts
    - pg_logging_init
    - _
    - pg_log_error_detail
    - parse_sync_method
    - pg_log_info
    - strcmp
    - pg_log_error
    - pg_log_error_hint
    - option_parse_int
    - update_controlfile
    - usage
    - pg_fatal
    - sync_pgdata
    - get_progname
    - getopt_long
    - printf
    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: 15
    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:173,1
    - Dst: IsValidWalSegSize
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:180,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:182,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:182,1
    - Dst: pg_log_warning_detail
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:186,1
    - Dst: pg_log_warning_detail
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:187,1
    - Dst: localtime
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:200,1
    - Dst: strftime
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:203,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:205,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:205,1
    - Dst: localtime
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:208,1
    - Dst: strftime
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:211,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:213,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:213,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:227,1
    - Dst: XLogFileName
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:228,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:232,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:232,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:235,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:238,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:238,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:240,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:240,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:242,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:242,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:244,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:244,1
    - Dst: dbState
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:245,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:246,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:246,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:248,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:248,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:249,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:250,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:250,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:251,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:252,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:252,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:254,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:254,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:256,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:256,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:258,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:258,1
    - Dst: _
      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:260,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:260,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:261,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:262,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: 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: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:269,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:269,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:271,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:271,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:273,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:273,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:275,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:275,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:277,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:277,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:279,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:279,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:281,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:281,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:283,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:283,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:285,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:285,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:286,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:287,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:287,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:288,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:289,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:289,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:291,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:291,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:292,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:293,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:293,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:294,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:295,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:295,1
    - Dst: _
      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: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:297,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:297,1
    - Dst: wal_level_str
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:298,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:299,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:299,1
    - Dst: _
      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: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:301,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:301,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:303,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:303,1
    - Dst: printf
      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:307,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:307,1
    - Dst: printf
      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:311,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:311,1
    - Dst: _
      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:313,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:313,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: 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:324,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:324,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:326,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:326,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:328,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:328,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:330,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:330,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: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:334,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: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:336,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:336,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: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:340,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_controldata/pg_controldata.c:340,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
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 119
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 344
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_controldata/pg_controldata.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - getenv
    - LSN_FORMAT_ARGS
    - EpochFromFullTransactionId
    - XidFromFullTransactionId
    - pg_log_warning
    - snprintf
    - set_pglocale_pgservice
    - exit
    - IsValidWalSegSize
    - dbState
    - get_controlfile
    - XLByteToSeg
    - pg_log_warning_detail
    - puts
    - pg_logging_init
    - _
    - strcmp
    - pg_log_error
    - strcpy
    - pg_log_error_hint
    - XLogFileName
    - usage
    - localtime
    - wal_level_str
    - strftime
    - get_progname
    - getopt_long
    - printf
    - ngettext
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 69
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:124,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:125,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:125,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:126,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:130,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:130,1
    - Dst: usage
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:132,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:133,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:135,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:135,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:137,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:138,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:143,1
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:161,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:166,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:167,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:168,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:171,1
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:176,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:179,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:180,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:181,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:183,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:184,1
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:189,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: TransactionIdIsNormal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:196,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:197,1
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:202,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:205,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:206,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:207,1
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:209,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:212,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:213,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:214,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:219,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:223,1
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:228,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:231,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:232,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:233,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:236,1
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:241,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:244,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:245,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:246,1
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:249,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:252,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:253,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:254,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:257,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:264,1
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:269,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:272,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:273,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:274,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:277,1
    - Dst: strspn
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:281,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:283,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:284,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:285,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:292,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:299,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:300,1
    - Dst: IsValidWalSegSize
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:302,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:303,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:311,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:313,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:317,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:318,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:319,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:326,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:327,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:337,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:339,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:340,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:345,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:346,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:347,1
    - Dst: geteuid
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:357,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:359,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:360,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:362,1
    - Dst: get_restricted_token
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:366,1
    - Dst: GetDataDirectoryCreatePerm
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:369,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:370,1
    - Dst: umask
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:373,1
    - Dst: chdir
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:375,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:376,1
    - Dst: CheckDataVersion
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:380,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:386,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:389,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:394,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:395,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:396,1
    - Dst: read_controlfile
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:402,1
    - Dst: GuessControlValues
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:403,1
    - Dst: XLogFromFileName
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:414,1
    - Dst: FindEndOfXLOG
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:419,1
    - Dst: PrintControlValues
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:426,1
    - Dst: FullTransactionIdFromEpochAndXid
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:434,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:435,1
    - Dst: FullTransactionIdFromEpochAndXid
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:445,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:445,1
    - Dst: PrintNewControlValues
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:486,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:487,1
    - Dst: PrintNewControlValues
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:496,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:497,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:498,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:499,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:507,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:508,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:509,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:510,1
    - Dst: RewriteControlFile
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:516,1
    - Dst: KillExistingXLOG
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:517,1
    - Dst: KillExistingArchiveStatus
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:518,1
    - Dst: KillExistingWALSummaries
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:519,1
    - Dst: WriteEmptyXLOG
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:520,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:522,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:522,1
    CyclomaticComplexity: 96
    EdgeCount: 96
    ICount: 249
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 524
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - strspn
    - XLogFromFileName
    - EpochFromFullTransactionId
    - XidFromFullTransactionId
    - strtoul
    - RewriteControlFile
    - KillExistingWALSummaries
    - set_pglocale_pgservice
    - exit
    - IsValidWalSegSize
    - geteuid
    - PrintNewControlValues
    - WriteEmptyXLOG
    - puts
    - pg_logging_init
    - _
    - pg_log_error_detail
    - FindEndOfXLOG
    - strcmp
    - pg_log_error
    - CheckDataVersion
    - chdir
    - PrintControlValues
    - get_restricted_token
    - FullTransactionIdFromEpochAndXid
    - pg_log_error_hint
    - option_parse_int
    - TransactionIdIsNormal
    - usage
    - pg_fatal
    - pg_strcasecmp
    - GetDataDirectoryCreatePerm
    - GuessControlValues
    - get_progname
    - getopt_long
    - umask
    - read_controlfile
    - printf
    - pg_strdup
    - open
    - KillExistingXLOG
    - KillExistingArchiveStatus
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:546,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:547,1
    - Dst: fgets
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:551,1
    - Dst: ferror
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:553,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:554,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:556,1
    - Dst: pg_strip_crlf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:560,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:562,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:564,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:565,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:567,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:570,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 539
    functionDepth: 1
    functionLinenumber: 539
    functionLinenumberEnd: 571
    functionName: CheckDataVersion
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 1
    functionsReached:
    - fclose
    - ferror
    - pg_log_error
    - fopen
    - exit
    - pg_fatal
    - pg_log_error_detail
    - pg_strip_crlf
    - strcmp
    - fgets
    linkageType: ''
    returnType: void
    signature: void CheckDataVersion(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:588,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:595,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:598,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:602,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:606,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:608,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:610,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:611,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:617,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:618,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:621,1
    - Dst: EQ_CRC32C
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:623,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:626,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:630,1
    - Dst: IsValidWalSegSize
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:633,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:635,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:635,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:646,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 580
    functionDepth: 1
    functionLinenumber: 580
    functionLinenumberEnd: 648
    functionName: read_controlfile
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 1
    functionsReached:
    - COMP_CRC32C
    - FIN_CRC32C
    - close
    - open
    - INIT_CRC32C
    - pg_log_warning
    - pg_log_error_hint
    - pg_malloc
    - exit
    - EQ_CRC32C
    - read
    - pg_fatal
    - IsValidWalSegSize
    - memcpy
    - pg_log_error
    - ngettext
    linkageType: ''
    returnType: bool
    signature: bool read_controlfile(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:664,1
    - Dst: gettimeofday
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:673,1
    - Dst: getpid
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:676,1
    - Dst: FullTransactionIdFromEpochAndXid
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:685,1
    - Dst: time
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:693,1
    - Dst: time
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:697,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 654
    functionDepth: 1
    functionLinenumber: 654
    functionLinenumberEnd: 728
    functionName: GuessControlValues
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 1
    functionsReached:
    - FullTransactionIdFromEpochAndXid
    - memset
    - time
    - getpid
    - gettimeofday
    linkageType: ''
    returnType: void
    signature: void GuessControlValues(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:741,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:741,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:743,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:743,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:745,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:745,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:747,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:747,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:749,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:749,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:751,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:751,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:753,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:753,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:754,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:754,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:755,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:755,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:756,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:757,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:758,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:758,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:760,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:760,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:762,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:762,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:764,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:764,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:766,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:766,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:768,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:768,1
    - Dst: printf
      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:772,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:772,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:781,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:781,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:783,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:783,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:785,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:785,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:787,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:787,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:789,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:789,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:791,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:791,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:793,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:793,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:795,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:795,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:798,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:798,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:800,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:800,1
    - Dst: _
      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:802,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:802,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:804,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:804,1
    - Dst: _
      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
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 33
    argCount: 1
    argNames:
    - guessed
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 737
    functionDepth: 1
    functionLinenumber: 737
    functionLinenumberEnd: 806
    functionName: PrintControlValues
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 1
    functionsReached:
    - EpochFromFullTransactionId
    - printf
    - XidFromFullTransactionId
    - _
    linkageType: ''
    returnType: void
    signature: void PrintControlValues(bool guessed)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - 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: XLogFileName
      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: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:826,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:826,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:828,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:828,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:830,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:830,1
    - 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: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:842,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:842,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: XidFromFullTransactionId
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:849,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:850,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:850,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:852,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:852,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:858,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:858,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:859,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:864,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:864,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:869,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:869,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:875,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:875,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 812
    functionDepth: 1
    functionLinenumber: 812
    functionLinenumberEnd: 878
    functionName: PrintNewControlValues
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 1
    functionsReached:
    - EpochFromFullTransactionId
    - printf
    - XidFromFullTransactionId
    - XLogFileName
    - _
    linkageType: ''
    returnType: void
    signature: void PrintNewControlValues(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogSegNoOffsetToRecPtr
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:891,1
    - Dst: time
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:893,1
    - Dst: update_controlfile
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:918,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 884
    functionDepth: 1
    functionLinenumber: 884
    functionLinenumberEnd: 919
    functionName: RewriteControlFile
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 1
    functionsReached:
    - update_controlfile
    - XLogSegNoOffsetToRecPtr
    - time
    linkageType: ''
    returnType: void
    signature: void RewriteControlFile(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XLByteToSeg
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:942,1
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:950,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:952,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:954,1
    - Dst: IsXLogFileName
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:956,1
    - Dst: IsPartialXLogFileName
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:957,1
    - Dst: XLogFromFileName
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:963,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:978,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:980,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:981,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 990
      start: 930
    functionDepth: 1
    functionLinenumber: 930
    functionLinenumberEnd: 990
    functionName: FindEndOfXLOG
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 1
    functionsReached:
    - readdir
    - XLogFromFileName
    - XLByteToSeg
    - closedir
    - opendir
    - pg_fatal
    - IsPartialXLogFileName
    - IsXLogFileName
    linkageType: ''
    returnType: void
    signature: void FindEndOfXLOG(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1003,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1005,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1007,1
    - Dst: IsXLogFileName
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1009,1
    - Dst: IsPartialXLogFileName
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1010,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1012,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1013,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1014,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1019,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1021,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1022,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 996
    functionDepth: 1
    functionLinenumber: 996
    functionLinenumberEnd: 1023
    functionName: KillExistingXLOG
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 1
    functionsReached:
    - readdir
    - closedir
    - snprintf
    - opendir
    - pg_fatal
    - IsPartialXLogFileName
    - unlink
    - IsXLogFileName
    linkageType: ''
    returnType: void
    signature: void KillExistingXLOG(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1038,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1040,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1042,1
    - Dst: strspn
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1044,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1045,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1046,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1047,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1048,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1050,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1051,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1052,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1057,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1059,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1060,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 1029
    functionDepth: 1
    functionLinenumber: 1029
    functionLinenumberEnd: 1061
    functionName: KillExistingArchiveStatus
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 1
    functionsReached:
    - readdir
    - strspn
    - closedir
    - snprintf
    - opendir
    - pg_fatal
    - unlink
    - strcmp
    linkageType: ''
    returnType: void
    signature: void KillExistingArchiveStatus(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1076,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1078,1
    - Dst: readdir
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1080,1
    - Dst: strspn
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1082,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1083,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1085,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1086,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1087,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1092,1
    - Dst: closedir
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1094,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1095,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 1066
    functionDepth: 1
    functionLinenumber: 1066
    functionLinenumberEnd: 1096
    functionName: KillExistingWALSummaries
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 1
    functionsReached:
    - readdir
    - strspn
    - closedir
    - snprintf
    - opendir
    - pg_fatal
    - unlink
    - strcmp
    linkageType: ''
    returnType: void
    signature: void KillExistingWALSummaries(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1115,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1140,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1143,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1144,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1145,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1146,1
    - Dst: XLogFilePath
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1150,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1153,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1155,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1158,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1161,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1166,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1170,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1174,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1178,1
    - Dst: fsync
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1182,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1183,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1185,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1186
      start: 1102
    functionDepth: 1
    functionLinenumber: 1102
    functionLinenumberEnd: 1186
    functionName: WriteEmptyXLOG
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 1
    functionsReached:
    - COMP_CRC32C
    - XLogFilePath
    - write
    - fsync
    - memset
    - FIN_CRC32C
    - INIT_CRC32C
    - open
    - close
    - pg_fatal
    - memcpy
    - unlink
    linkageType: ''
    returnType: void
    signature: void WriteEmptyXLOG(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1192,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1192,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1193,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1193,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1194,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1194,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1196,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1196,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1197,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1197,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1198,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1198,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1200,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1200,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1201,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1201,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1202,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1202,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1204,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1204,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1205,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1205,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1208,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1208,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1209,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1209,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1210,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1210,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1211,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1211,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1212,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1212,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1213,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1213,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1214,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1214,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1215,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1215,1
    - 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: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:1219,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c:1219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1189
    functionDepth: 0
    functionLinenumber: 1189
    functionLinenumberEnd: 1220
    functionName: usage
    functionSourceFile: /src/postgres/src/bin/pg_resetwal/pg_resetwal.c
    functionUses: 13
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - 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
      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:
    - snprintf
    - pg_malloc0
    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
      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
    - snprintf
    - dir_get_file_name
    - gzsetparams
    - pg_malloc0
    - LZ4F_isError
    - LZ4F_compressBound
    - LZ4F_freeCompressionContext
    - lseek
    - gzdopen
    - LZ4F_compressBegin
    - fsync_fname
    - pg_free
    - write
    - gzclose
    - clear_error
    - LZ4F_createCompressionContext
    - close
    - LZ4F_compressEnd
    - memset
    - pg_strdup
    - open
    - fsync_parent_path
    - pg_pwrite_zeros
    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:
    - write
    - Assert
    - LZ4F_getErrorName
    - LZ4F_compressUpdate
    - gzwrite
    - clear_error
    - LZ4F_isError
    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:
    - write
    - Assert
    - LZ4F_getErrorName
    - gzclose
    - rename
    - LZ4F_compressEnd
    - LZ4F_freeCompressionContext
    - clear_error
    - close
    - dir_get_file_name
    - snprintf
    - pg_log_error
    - fsync_parent_path
    - LZ4F_isError
    - durable_rename
    - fsync_fname
    - unlink
    - pg_free
    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:
    - write
    - fsync
    - Assert
    - LZ4F_getErrorName
    - LZ4F_flush
    - clear_error
    - LZ4F_isError
    - gzflush
    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:
    - clear_error
    - snprintf
    - open
    - close
    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:
    - clear_error
    - fsync_fname
    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
      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:
    - clear_error
    - pg_strdup
    - pg_malloc0
    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:
    - write
    - deflate
    - deflateReset
    - _
    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:
    - clear_error
    - Assert
    - write
    - tar_write_compressed_data
    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:
    - memset
    - Min
    - tar_write
    linkageType: ''
    returnType: bool
    signature: bool tar_write_padding_data(TarMethodFile *f, size_t bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0
      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:
    - snprintf
    - pg_malloc0
    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
      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
      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:
    - tar_write_compressed_data
    - write
    - Assert
    - tarCreateHeader
    - clear_error
    - lseek
    - open
    - time
    - pg_malloc
    - deflateInit2
    - _
    - pg_malloc0
    - deflateParams
    - tar_get_file_name
    - pg_free
    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:
    - clear_error
    - fsync
    - Assert
    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_compressed_data
    - tarChecksum
    - Assert
    - write
    - ftruncate
    - tar_write
    - clear_error
    - lseek
    - tarPaddingBytesRequired
    - strlcpy
    - _
    - print_tar_number
    - tar_write_padding_data
    - deflateParams
    - pg_free
    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:
    - tar_write_compressed_data
    - write
    - Assert
    - deflateEnd
    - clear_error
    - tar_close
    - deflate
    - _
    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
      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:
    - clear_error
    - pg_malloc
    - pg_malloc0
    - sprintf
    - strlen
    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:83,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:83,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:85,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:85,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:94,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:94,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:98,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:98,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:104,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:104,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:107,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:107,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
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 122
    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:147,1
    - Dst: LSN_FORMAT_ARGS
      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: fe_sendint64
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:154,1
    - Dst: fe_sendint64
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:156,1
    - Dst: fe_sendint64
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:158,1
    - Dst: fe_sendint64
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:160,1
    - Dst: PQputCopyData
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:169,1
    - Dst: PQflush
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:169,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:171,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:172,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 4
    argNames:
    - conn
    - now
    - force
    - replyRequested
    argTypes:
    - PGconn*
    - TimestampTz
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 177
    functionName: sendFeedback
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - PQerrorMessage
    - pg_log_error
    - pg_log_info
    - fe_sendint64
    - PQputCopyData
    - PQflush
    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:183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 184
    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:205,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:206,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - now
    argTypes:
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 209
    functionName: OutputFsync
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c
    functionUses: 0
    functionsReached:
    - fsync
    - pg_fatal
    linkageType: ''
    returnType: bool
    signature: bool OutputFsync(TimestampTz now)
  - BBCount: 56
    BranchProfiles: []
    Callsites:
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:232,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:241,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:242,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:246,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:247,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:248,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:252,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:258,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:261,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:265,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:269,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:271,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:272,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:274,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:275,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:276,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:279,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:280,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:283,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:297,1
    - Dst: feGetCurrentTimestamp
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:304,1
    - Dst: feTimestampDifferenceExceeds
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:307,1
    - Dst: OutputFsync
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:310,1
    - Dst: feTimestampDifferenceExceeds
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:315,1
    - Dst: sendFeedback
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:319,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:326,1
    - Dst: feGetCurrentTimestamp
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:328,1
    - Dst: OutputFsync
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:329,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:331,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:341,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:342,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:344,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:348,1
    - Dst: fstat
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:352,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:354,1
    - Dst: S_ISREG
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:358,1
    - Dst: isatty
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:358,1
    - Dst: PQgetCopyData
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:361,1
    - Dst: PQsocket
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:375,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:377,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:377,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:381,1
    - Dst: FD_SET
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:382,1
    - Dst: PQsocket
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:382,1
    - Dst: feTimestampDifference
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:406,1
    - Dst: select
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:418,1
    - Dst: PQsocket
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:418,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:430,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:435,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:437,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:438,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:451,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:452,1
    - Dst: fe_recvint64
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:470,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:471,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:479,1
    - Dst: flushAndSendFeedback
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:498,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:514,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:530,1
    - Dst: fe_recvint64
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:535,1
    - Dst: flushAndSendFeedback
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:543,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:550,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:562,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:568,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:578,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:580,1
    - Dst: flushAndSendFeedback
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:588,1
    - Dst: prepareToTerminate
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:598,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:600,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:601,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:603,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:619,1
    - Dst: PQgetCopyData
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:622,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:627,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:628,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:634,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:636,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:638,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:639,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:640,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:643,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:645,1
    - Dst: feGetCurrentTimestamp
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:647,1
    - Dst: OutputFsync
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:650,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:652,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:653,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:659,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:662,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:663,1
    CyclomaticComplexity: 102
    EdgeCount: 102
    ICount: 247
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 214
    functionDepth: 2
    functionLinenumber: 214
    functionLinenumberEnd: 665
    functionName: StreamLogicalLog
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - appendPQExpBufferChar
    - PQresultStatus
    - PQfreemem
    - fstat
    - flushAndSendFeedback
    - PQgetResult
    - resetPQExpBuffer
    - OutputFsync
    - PQgetCopyData
    - feTimestampDifferenceExceeds
    - createPQExpBuffer
    - appendPQExpBufferStr
    - feTimestampDifference
    - Max
    - fileno
    - pg_log_info
    - PQclear
    - FD_ZERO
    - strcmp
    - pg_log_error
    - write
    - PQexec
    - PQerrorMessage
    - PQfinish
    - PQresultErrorMessage
    - close
    - isatty
    - select
    - destroyPQExpBuffer
    - feGetCurrentTimestamp
    - S_ISREG
    - GetConnection
    - open
    - PQsocket
    - appendPQExpBuffer
    - PQconsumeInput
    - FD_SET
    - prepareToTerminate
    - sendFeedback
    - fe_recvint64
    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: 681
      start: 676
    functionDepth: 0
    functionLinenumber: 676
    functionLinenumberEnd: 681
    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: 690
      start: 686
    functionDepth: 0
    functionLinenumber: 686
    functionLinenumberEnd: 690
    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: 55
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:735,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:736,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:737,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:737,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:741,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:741,1
    - Dst: usage
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:743,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:744,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:746,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:747,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:749,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:750,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:754,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:761,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:764,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:767,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:784,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:787,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:790,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:793,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:803,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:804,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:808,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:809,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:814,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:815,1
    - Dst: pg_realloc
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:825,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:833,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:836,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:839,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:843,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:861,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:862,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:871,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:873,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:874,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:882,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:883,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:884,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:889,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:890,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:891,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:896,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:897,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:898,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:903,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:904,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:905,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:910,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:911,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:912,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:917,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:918,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:919,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:924,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:925,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:926,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:933,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:934,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:935,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:940,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:941,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:942,1
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:950,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:953,1
    - Dst: atexit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:954,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:961,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:962,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:963,1
    - Dst: RunIdentifySystem
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:973,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:974,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:977,1
    - Dst: umask
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:987,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:993,1
    - Dst: DropReplicationSlot
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:995,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:996,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1003,1
    - Dst: CreateReplicationSlot
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1005,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1008,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1013,1
    - Dst: StreamLogicalLog
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1018,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1025,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1028,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1032,1
    - Dst: pg_usleep
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1034,1
    CyclomaticComplexity: 68
    EdgeCount: 68
    ICount: 193
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1037
      start: 694
    functionDepth: 3
    functionLinenumber: 694
    functionLinenumberEnd: 1037
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - pg_usleep
    - set_pglocale_pgservice
    - exit
    - RunIdentifySystem
    - puts
    - pg_logging_init
    - pg_log_info
    - strcmp
    - pg_log_error
    - atexit
    - pg_log_error_hint
    - option_parse_int
    - usage
    - pg_fatal
    - DropReplicationSlot
    - StreamLogicalLog
    - get_progname
    - getopt_long
    - umask
    - GetConnection
    - pg_strdup
    - sscanf
    - pqsignal
    - pg_realloc
    - CreateReplicationSlot
    - strchr
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: OutputFsync
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1050,1
    - Dst: feGetCurrentTimestamp
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1052,1
    - Dst: sendFeedback
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1053,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - conn
    - now
    argTypes:
    - PGconn*
    - TimestampTz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1046
    functionDepth: 2
    functionLinenumber: 1046
    functionLinenumberEnd: 1057
    functionName: flushAndSendFeedback
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c
    functionUses: 1
    functionsReached:
    - OutputFsync
    - sendFeedback
    - feGetCurrentTimestamp
    linkageType: ''
    returnType: bool
    signature: bool flushAndSendFeedback(PGconn *conn, TimestampTz *now)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PQputCopyEnd
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1067,1
    - Dst: PQflush
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1068,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1075,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1078,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1079,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1082,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1082,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1083,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1084,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1084,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c:1087,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 4
    argNames:
    - conn
    - endpos
    - reason
    - lsn
    argTypes:
    - PGconn*
    - XLogRecPtr
    - StreamStopReason
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1091
      start: 1063
    functionDepth: 1
    functionLinenumber: 1063
    functionLinenumberEnd: 1091
    functionName: prepareToTerminate
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_recvlogical.c
    functionUses: 1
    functionsReached:
    - LSN_FORMAT_ARGS
    - Assert
    - PQputCopyEnd
    - pg_log_info
    - XLogRecPtrIsInvalid
    - PQflush
    linkageType: ''
    returnType: void
    signature: "void prepareToTerminate(PGconn *conn, XLogRecPtr endpos, StreamStopReason
      reason,\n\t\t\t\t   XLogRecPtr lsn)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:189,1
    - Dst: pg_log_warning_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:190,1
    - Dst: connect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:202,1
    - Dst: drop_publication
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:206,1
    - Dst: drop_replication_slot
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:209,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:210,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:221,1
    - Dst: pg_log_warning_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:224,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:228,1
    - Dst: pg_log_warning_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:231,1
    - Dst: stop_standby_server
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:238,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 239
    functionName: cleanup_objects_atexit
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - drop_publication
    - connect_database
    - stop_standby_server
    - pg_log_warning
    - pg_log_warning_hint
    - drop_replication_slot
    - disconnect_database
    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:244,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:244,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:246,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:246,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:247,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:247,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:248,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:248,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:249,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:249,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:251,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:251,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:252,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:252,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:253,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:253,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:254,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:254,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:255,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:255,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:256,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:256,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:257,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:257,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:258,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:258,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:259,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:259,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:260,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:260,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:261,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:261,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:263,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:263,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:265,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:265,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:266,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:266,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:267,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:267,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:268,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:268,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:269,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:269,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:270,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:270,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:271,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 272
    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:282,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:283,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:284,1
    - Dst: appendConnStrVal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:285,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - buf
    - keyword
    - val
    argTypes:
    - PQExpBuffer
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 278
    functionDepth: 1
    functionLinenumber: 278
    functionLinenumberEnd: 286
    functionName: appendConnStrItem
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - appendPQExpBufferStr
    - appendConnStrVal
    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:309,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:312,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:313,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:317,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:322,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:325,1
    - Dst: appendConnStrItem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:328,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:332,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:334,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:335,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - conninfo
    - dbname
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 300
    functionDepth: 2
    functionLinenumber: 300
    functionLinenumberEnd: 338
    functionName: get_base_conninfo
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - PQconninfoFree
    - PQconninfoParse
    - destroyPQExpBuffer
    - appendConnStrItem
    - PQfreemem
    - createPQExpBuffer
    - pg_strdup
    - strcmp
    - pg_log_error
    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:347,1
    - Dst: appendConnStrItem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:350,1
    - Dst: appendConnStrItem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:352,1
    - Dst: appendConnStrItem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:355,1
    - Dst: appendConnStrItem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:356,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:358,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:360,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - opt
    argTypes:
    - struct CreateSubscriberOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 344
    functionDepth: 2
    functionLinenumber: 344
    functionLinenumberEnd: 363
    functionName: get_sub_conninfo
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - appendConnStrItem
    - createPQExpBuffer
    - pg_strdup
    - destroyPQExpBuffer
    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:377,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:378,1
    - Dst: find_other_exec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:379,1
    - Dst: find_my_exec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:385,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:386,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:389,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:392,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:396,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - argv0
    - progname
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 399
    functionName: get_exec_path
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - find_my_exec
    - pg_malloc
    - strlcpy
    - pg_fatal
    - find_other_exec
    - pg_log_debug
    - psprintf
    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:412,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:415,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:418,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:420,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:423,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:424,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:426,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - datadir
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 406
    functionDepth: 1
    functionLinenumber: 406
    functionLinenumberEnd: 429
    functionName: check_data_directory
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - stat
    - snprintf
    - pg_fatal
    - pg_log_info
    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:441,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:444,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:446,1
    - Dst: appendConnStrItem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:447,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:449,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:450,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - conninfo
    - dbname
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 438
    functionDepth: 2
    functionLinenumber: 438
    functionLinenumberEnd: 453
    functionName: concat_conninfo_dbname
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - Assert
    - appendConnStrItem
    - createPQExpBuffer
    - pg_strdup
    - appendPQExpBufferStr
    - destroyPQExpBuffer
    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:473,1
    - Dst: concat_conninfo_dbname
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:487,1
    - Dst: concat_conninfo_dbname
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:501,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:509,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:513,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: 529
      start: 462
    functionDepth: 3
    functionLinenumber: 462
    functionLinenumberEnd: 529
    functionName: store_pub_sub_info
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - concat_conninfo_dbname
    - pg_log_debug
    - pg_malloc_array
    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:541,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:542,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:544,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:545,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:546,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:549,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:554,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:555,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:557,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:558,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:559,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:560,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:563,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:566,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - conninfo
    - exit_on_error
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 535
    functionDepth: 1
    functionLinenumber: 535
    functionLinenumberEnd: 569
    functionName: connect_database
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 1
    functionsReached:
    - PQerrorMessage
    - PQexec
    - PQresultStatus
    - PQfinish
    - PQresultErrorMessage
    - exit
    - PQstatus
    - PQconnectdb
    - PQclear
    - pg_log_error
    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:578,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:580,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:583,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - conn
    - exit_on_error
    argTypes:
    - PGconn*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 575
    functionDepth: 1
    functionLinenumber: 575
    functionLinenumberEnd: 584
    functionName: disconnect_database
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 1
    functionsReached:
    - PQfinish
    - Assert
    - exit
    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:597,1
    - Dst: connect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:599,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:601,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:602,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:604,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:605,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:606,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:608,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:610,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:611,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:612,1
    - Dst: strtou64
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:615,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:615,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:617,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:619,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:620,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - conninfo
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 590
    functionDepth: 2
    functionLinenumber: 590
    functionLinenumberEnd: 623
    functionName: get_primary_sysid
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - strtou64
    - connect_database
    - PQexec
    - PQntuples
    - PQresultStatus
    - PQresultErrorMessage
    - PQgetvalue
    - pg_log_info
    - PQclear
    - pg_log_error
    - 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:637,1
    - Dst: get_controlfile
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:639,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:641,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:645,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:647,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - datadir
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 630
    functionDepth: 1
    functionLinenumber: 630
    functionLinenumberEnd: 650
    functionName: get_standby_sysid
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - get_controlfile
    - pg_fatal
    - pg_free
    - pg_log_info
    linkageType: ''
    returnType: uint64
    signature: uint64 get_standby_sysid(const char *datadir)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:666,1
    - Dst: get_controlfile
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:668,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:670,1
    - Dst: gettimeofday
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:677,1
    - Dst: getpid
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:680,1
    - Dst: update_controlfile
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:683,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:685,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:688,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:690,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:693,1
    - Dst: system
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:697,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:700,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:702,1
    - Dst: wait_result_to_str
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:702,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:705,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - opt
    argTypes:
    - struct CreateSubscriberOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 657
    functionDepth: 1
    functionLinenumber: 657
    functionLinenumberEnd: 706
    functionName: modify_subscriber_sysid
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - wait_result_to_str
    - update_controlfile
    - getpid
    - pg_fatal
    - gettimeofday
    - pg_log_info
    - get_controlfile
    - pg_log_debug
    - pg_free
    - psprintf
    - system
    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:721,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:724,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:726,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:727,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:728,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:731,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:733,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:734,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:735,1
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:739,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:739,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:741,1
    - Dst: pg_prng_uint32
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:744,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:751,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 713
    functionDepth: 2
    functionLinenumber: 713
    functionLinenumberEnd: 754
    functionName: generate_object_name
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - PQexec
    - PQntuples
    - PQresultStatus
    - strtoul
    - PQresultErrorMessage
    - PQgetvalue
    - psprintf
    - PQclear
    - pg_log_error
    - disconnect_database
    - pg_prng_uint32
    linkageType: ''
    returnType: char
    signature: 'char *

      generate_object_name(PGconn *conn)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pg_prng_seed
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:767,1
    - Dst: getpid
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:767,1
    - Dst: time
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:767,1
    - Dst: connect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:774,1
    - Dst: generate_object_name
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:784,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:786,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:788,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:790,1
    - Dst: create_publication
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:798,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:802,1
    - Dst: create_logical_replication_slot
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:803,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:805,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:808,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:822,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:823,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:825,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:826,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:827,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:829,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:832,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 30
    argCount: 1
    argNames:
    - dbinfo
    argTypes:
    - struct LogicalRepInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 762
    functionDepth: 3
    functionLinenumber: 762
    functionLinenumberEnd: 836
    functionName: setup_publisher
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - pg_prng_seed
    - connect_database
    - PQexec
    - create_publication
    - PQresultStatus
    - pg_strdup
    - PQresultErrorMessage
    - generate_object_name
    - time
    - exit
    - getpid
    - pg_log_info
    - PQclear
    - pg_log_error
    - create_logical_replication_slot
    - disconnect_database
    - pg_free
    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:847,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:849,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:851,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:852,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:853,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:857,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:857,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:859,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 841
    functionDepth: 2
    functionLinenumber: 841
    functionLinenumberEnd: 862
    functionName: server_is_in_recovery
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - PQexec
    - PQresultStatus
    - PQresultErrorMessage
    - PQgetvalue
    - PQclear
    - strcmp
    - pg_log_error
    - disconnect_database
    linkageType: ''
    returnType: bool
    signature: bool server_is_in_recovery(PGconn *conn)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:884,1
    - Dst: connect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:886,1
    - Dst: server_is_in_recovery
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:892,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:894,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:895,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:909,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:918,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:920,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:921,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:922,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:925,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:925,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:926,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:926,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:927,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:927,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:928,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:928,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:929,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:929,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:930,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:930,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:931,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:931,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:933,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:935,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:936,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:937,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:938,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:939,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:940,1
    - Dst: pg_log_debug
      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
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:947,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:949,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:955,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:957,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:964,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:966,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:973,1
    - Dst: pg_log_warning_detail
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:974,1
    - Dst: pg_log_warning_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:976,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:984,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:986,1
    - Dst: pg_log_warning_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:987,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:991,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:994,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 54
    argCount: 1
    argNames:
    - dbinfo
    argTypes:
    - struct LogicalRepInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 869
    functionDepth: 3
    functionLinenumber: 869
    functionLinenumberEnd: 995
    functionName: check_publisher
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - PQresultStatus
    - pg_log_warning
    - PQgetvalue
    - exit
    - pg_log_warning_detail
    - pg_log_warning_hint
    - pg_log_info
    - PQclear
    - strcmp
    - pg_log_error
    - pg_free
    - PQexec
    - atoi
    - PQresultErrorMessage
    - pg_log_error_hint
    - pg_log_debug
    - server_is_in_recovery
    - connect_database
    - pg_strdup
    - disconnect_database
    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:1019,1
    - Dst: connect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1021,1
    - Dst: server_is_in_recovery
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1024,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1026,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1027,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1040,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1048,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1050,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1051,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1052,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1055,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1055,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1056,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1056,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1057,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1057,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1058,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1058,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1059,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1059,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1061,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1063,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1064,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1066,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1068,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1070,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1074,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1076,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1083,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1085,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1092,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1094,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1100,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 41
    argCount: 1
    argNames:
    - dbinfo
    argTypes:
    - struct LogicalRepInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1101
      start: 1008
    functionDepth: 3
    functionLinenumber: 1008
    functionLinenumberEnd: 1101
    functionName: check_subscriber
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - connect_database
    - PQexec
    - atoi
    - PQresultStatus
    - pg_strdup
    - PQresultErrorMessage
    - PQgetvalue
    - pg_log_error_hint
    - exit
    - pg_log_debug
    - pg_log_info
    - PQclear
    - strcmp
    - pg_log_error
    - server_is_in_recovery
    - disconnect_database
    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:1112,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1115,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1121,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1123,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1125,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1127,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1132,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1134,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1136,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1137,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1138,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1141,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1144,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - conn
    - subname
    - dbname
    argTypes:
    - PGconn*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1145
      start: 1109
    functionDepth: 2
    functionLinenumber: 1109
    functionLinenumberEnd: 1145
    functionName: drop_existing_subscriptions
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - Assert
    - PQexec
    - destroyPQExpBuffer
    - PQresultStatus
    - createPQExpBuffer
    - PQresultErrorMessage
    - appendPQExpBuffer
    - pg_log_info
    - PQclear
    - pg_log_error
    - disconnect_database
    linkageType: ''
    returnType: void
    signature: void drop_existing_subscriptions(PGconn *conn, const char *subname,
      const char *dbname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1154,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1158,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1160,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1160,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1162,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1167,1
    - Dst: PQresultStatus
      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: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1172,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1173,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1176,1
    - Dst: drop_existing_subscriptions
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1177,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1177,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1180,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1181,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1182,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - conn
    - dbinfo
    argTypes:
    - PGconn*
    - struct LogicalRepInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1183
      start: 1150
    functionDepth: 3
    functionLinenumber: 1150
    functionLinenumberEnd: 1183
    functionName: check_and_drop_existing_subscriptions
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - Assert
    - PQexec
    - PQntuples
    - destroyPQExpBuffer
    - PQresultStatus
    - createPQExpBuffer
    - PQfreemem
    - PQresultErrorMessage
    - PQescapeLiteral
    - PQgetvalue
    - appendPQExpBuffer
    - drop_existing_subscriptions
    - PQclear
    - pg_log_error
    - disconnect_database
    - strlen
    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:1198,1
    - Dst: check_and_drop_existing_subscriptions
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1206,1
    - Dst: check_and_drop_publications
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1209,1
    - Dst: create_subscription
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1211,1
    - Dst: set_replication_progress
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1214,1
    - Dst: enable_subscription
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1217,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - dbinfo
    - consistent_lsn
    argTypes:
    - struct LogicalRepInfo*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1221
      start: 1190
    functionDepth: 4
    functionLinenumber: 1190
    functionLinenumberEnd: 1221
    functionName: setup_subscriber
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - check_and_drop_publications
    - set_replication_progress
    - connect_database
    - enable_subscription
    - check_and_drop_existing_subscriptions
    - create_subscription
    - disconnect_database
    linkageType: ''
    returnType: void
    signature: void setup_subscriber(struct LogicalRepInfo *dbinfo, const char *consistent_lsn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: connect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1237,1
    - Dst: GenerateRecoveryConfig
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1249,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1250,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1251,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1253,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1255,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1257,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1258,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1259,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1263,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1264,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1266,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1270,1
    - Dst: WriteRecoveryConfig
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1272,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1274,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1276,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 3
    argNames:
    - dbinfo
    - datadir
    - lsn
    argTypes:
    - struct LogicalRepInfo*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1277
      start: 1226
    functionDepth: 2
    functionLinenumber: 1226
    functionLinenumberEnd: 1277
    functionName: setup_recovery
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - connect_database
    - GenerateRecoveryConfig
    - WriteRecoveryConfig
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - pg_log_debug
    - disconnect_database
    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:1295,1
    - Dst: drop_replication_slot
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1298,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1299,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1303,1
    - Dst: pg_log_warning_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1305,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - dbinfo
    - slotname
    argTypes:
    - struct LogicalRepInfo*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1307
      start: 1286
    functionDepth: 2
    functionLinenumber: 1286
    functionLinenumberEnd: 1307
    functionName: drop_primary_replication_slot
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - connect_database
    - pg_log_warning
    - pg_log_warning_hint
    - drop_replication_slot
    - 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:1322,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1326,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1329,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1332,1
    - Dst: drop_replication_slot
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1333,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1333,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1337,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1338,1
    - Dst: pg_log_warning_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1339,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1342,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1343,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1347,1
    - Dst: pg_log_warning_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1348,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - dbinfo
    argTypes:
    - struct LogicalRepInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1350
      start: 1316
    functionDepth: 2
    functionLinenumber: 1316
    functionLinenumberEnd: 1350
    functionName: drop_failover_replication_slots
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - connect_database
    - PQexec
    - PQntuples
    - PQresultStatus
    - pg_log_warning
    - PQresultErrorMessage
    - PQgetvalue
    - pg_log_warning_hint
    - drop_replication_slot
    - PQclear
    - disconnect_database
    linkageType: ''
    returnType: void
    signature: void drop_failover_replication_slots(struct LogicalRepInfo *dbinfo)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1361,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1367,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1369,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1372,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1372,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1374,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1379,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1381,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1385,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1386,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1388,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1390,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1391,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1392,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1396,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1396,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1397,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1403,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 2
    argNames:
    - conn
    - dbinfo
    argTypes:
    - PGconn*
    - struct LogicalRepInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1406
      start: 1358
    functionDepth: 1
    functionLinenumber: 1358
    functionLinenumberEnd: 1406
    functionName: create_logical_replication_slot
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 1
    functionsReached:
    - Assert
    - PQexec
    - destroyPQExpBuffer
    - PQresultStatus
    - createPQExpBuffer
    - PQfreemem
    - PQresultErrorMessage
    - PQescapeLiteral
    - pg_strdup
    - PQgetvalue
    - appendPQExpBuffer
    - pg_log_info
    - PQclear
    - pg_log_debug
    - pg_log_error
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      create_logical_replication_slot(PGconn *conn, struct LogicalRepInfo *dbinfo)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1412,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1416,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1418,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1421,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1421,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1423,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1425,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1427,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1431,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1432,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1434,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1435,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1439,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1442,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - conn
    - dbinfo
    - slot_name
    argTypes:
    - PGconn*
    - struct LogicalRepInfo*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1443
      start: 1408
    functionDepth: 1
    functionLinenumber: 1408
    functionLinenumberEnd: 1443
    functionName: drop_replication_slot
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 3
    functionsReached:
    - Assert
    - PQexec
    - destroyPQExpBuffer
    - PQresultStatus
    - createPQExpBuffer
    - PQfreemem
    - PQresultErrorMessage
    - PQescapeLiteral
    - appendPQExpBuffer
    - pg_log_info
    - PQclear
    - pg_log_debug
    - pg_log_error
    - strlen
    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:1453,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1455,1
    - Dst: WEXITSTATUS
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1455,1
    - Dst: WIFSIGNALED
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1457,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1460,1
    - Dst: WTERMSIG
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1461,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1462,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1464,1
    - Dst: WTERMSIG
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1465,1
    - Dst: pg_strsignal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1465,1
    - Dst: WTERMSIG
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1465,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1470,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1473,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1474,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - pg_ctl_cmd
    - rc
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1476
      start: 1448
    functionDepth: 1
    functionLinenumber: 1448
    functionLinenumberEnd: 1476
    functionName: pg_ctl_status
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - WIFEXITED
    - pg_strsignal
    - WEXITSTATUS
    - WTERMSIG
    - exit
    - pg_log_error_detail
    - pg_log_error
    - WIFSIGNALED
    linkageType: ''
    returnType: void
    signature: void pg_ctl_status(const char *pg_ctl_cmd, int rc)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1482,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1485,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1486,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1487,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1490,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1494,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1503,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1505,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1507,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1511,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1516,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1518,1
    - Dst: system
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1519,1
    - Dst: pg_ctl_status
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1520,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1522,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1523,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - opt
    - restricted_access
    - restrict_logical_worker
    argTypes:
    - struct CreateSubscriberOptions*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1524
      start: 1478
    functionDepth: 2
    functionLinenumber: 1478
    functionLinenumberEnd: 1524
    functionName: start_standby_server
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - createPQExpBuffer
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - appendShellString
    - pg_log_info
    - pg_log_debug
    - destroyPQExpBuffer
    - pg_ctl_status
    - system
    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:1532,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1534,1
    - Dst: system
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1535,1
    - Dst: pg_ctl_status
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1536,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - datadir
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1539
      start: 1526
    functionDepth: 2
    functionLinenumber: 1526
    functionLinenumberEnd: 1539
    functionName: stop_standby_server
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 1
    functionsReached:
    - psprintf
    - pg_log_info
    - pg_log_debug
    - pg_ctl_status
    - system
    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:1557,1
    - Dst: connect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1559,1
    - Dst: server_is_in_recovery
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1563,1
    - Dst: stop_standby_server
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1579,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1580,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1581,1
    - Dst: pg_usleep
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1585,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1590,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1593,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1595,1
    - Dst: pg_log_info_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1596,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - conninfo
    - opt
    argTypes:
    - char*
    - struct CreateSubscriberOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1597
      start: 1550
    functionDepth: 3
    functionLinenumber: 1550
    functionLinenumberEnd: 1597
    functionName: wait_for_end_recovery
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - pg_log_info_hint
    - connect_database
    - stop_standby_server
    - pg_usleep
    - pg_fatal
    - pg_log_info
    - pg_log_error
    - server_is_in_recovery
    - disconnect_database
    linkageType: ''
    returnType: void
    signature: void wait_for_end_recovery(const char *conninfo, const struct CreateSubscriberOptions
      *opt)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1605,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1610,1
    - Dst: PQescapeIdentifier
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1612,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1612,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1613,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1613,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1616,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1620,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1621,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1623,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1624,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1625,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1628,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1637,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1638,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1639,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1642,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1643,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1645,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1648,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1651,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1655,1
    - Dst: PQresultStatus
      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: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1659,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1660,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1662,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1668,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1669,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1670,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 2
    argNames:
    - conn
    - dbinfo
    argTypes:
    - PGconn*
    - struct LogicalRepInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1671
      start: 1602
    functionDepth: 2
    functionLinenumber: 1602
    functionLinenumberEnd: 1671
    functionName: create_publication
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 1
    functionsReached:
    - PQresultStatus
    - PQfreemem
    - resetPQExpBuffer
    - strlen
    - createPQExpBuffer
    - pg_log_info
    - PQclear
    - pg_log_error
    - PQescapeIdentifier
    - PQexec
    - PQntuples
    - PQresultErrorMessage
    - PQescapeLiteral
    - pg_log_error_hint
    - pg_log_debug
    - destroyPQExpBuffer
    - Assert
    - appendPQExpBuffer
    - disconnect_database
    linkageType: ''
    returnType: void
    signature: void create_publication(PGconn *conn, struct LogicalRepInfo *dbinfo)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1680,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1684,1
    - Dst: PQescapeIdentifier
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1686,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1686,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1688,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1691,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1693,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1695,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1699,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1700,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1702,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1703,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1714,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1717,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 4
    argNames:
    - conn
    - pubname
    - dbname
    - made_publication
    argTypes:
    - PGconn*
    - char*
    - char*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1718
      start: 1676
    functionDepth: 1
    functionLinenumber: 1676
    functionLinenumberEnd: 1718
    functionName: drop_publication
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 1
    functionsReached:
    - Assert
    - PQescapeIdentifier
    - PQexec
    - destroyPQExpBuffer
    - PQresultStatus
    - createPQExpBuffer
    - PQfreemem
    - PQresultErrorMessage
    - appendPQExpBuffer
    - pg_log_info
    - PQclear
    - pg_log_debug
    - pg_log_error
    - strlen
    linkageType: ''
    returnType: void
    signature: "void drop_publication(PGconn *conn, const char *pubname, const char
      *dbname,\n\t\t\t\t bool *made_publication)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1735,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1739,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1743,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1744,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1746,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1747,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1748,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1749,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1753,1
    - Dst: drop_publication
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1754,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1754,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1757,1
    - Dst: drop_publication
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1765,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - conn
    - dbinfo
    argTypes:
    - PGconn*
    - struct LogicalRepInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1767
      start: 1729
    functionDepth: 2
    functionLinenumber: 1729
    functionLinenumberEnd: 1767
    functionName: check_and_drop_publications
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 1
    functionsReached:
    - drop_publication
    - Assert
    - PQexec
    - PQntuples
    - PQresultStatus
    - PQresultErrorMessage
    - PQgetvalue
    - pg_log_info
    - PQclear
    - pg_log_error
    - disconnect_database
    linkageType: ''
    returnType: void
    signature: void check_and_drop_publications(PGconn *conn, struct LogicalRepInfo
      *dbinfo)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1783,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1790,1
    - Dst: PQescapeIdentifier
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1792,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1792,1
    - Dst: PQescapeIdentifier
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1793,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1793,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1794,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1794,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1795,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1795,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1797,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1800,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1807,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1808,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1809,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1810,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1812,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1816,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1817,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1819,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1820,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1821,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1823,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1826,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 2
    argNames:
    - conn
    - dbinfo
    argTypes:
    - PGconn*
    - struct LogicalRepInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1827
      start: 1780
    functionDepth: 2
    functionLinenumber: 1780
    functionLinenumberEnd: 1827
    functionName: create_subscription
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 1
    functionsReached:
    - Assert
    - PQescapeIdentifier
    - PQexec
    - destroyPQExpBuffer
    - PQresultStatus
    - createPQExpBuffer
    - PQfreemem
    - PQresultErrorMessage
    - PQescapeLiteral
    - appendPQExpBuffer
    - pg_log_info
    - PQclear
    - pg_log_debug
    - pg_log_error
    - disconnect_database
    - strlen
    linkageType: ''
    returnType: void
    signature: void create_subscription(PGconn *conn, const struct LogicalRepInfo
      *dbinfo)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1842,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1850,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1852,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1852,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1853,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1853,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1855,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1861,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1862,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1864,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1865,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1866,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1869,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1871,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1872,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1873,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1879,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1879,1
    - Dst: strtoul
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1883,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1883,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1884,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1887,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1893,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1895,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1898,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1899,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1903,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1907,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1908,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1910,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1911,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1912,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1914,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1917,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1918,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1919,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1920,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1921,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 40
    argCount: 3
    argNames:
    - conn
    - dbinfo
    - lsn
    argTypes:
    - PGconn*
    - struct LogicalRepInfo*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1922
      start: 1839
    functionDepth: 2
    functionLinenumber: 1839
    functionLinenumberEnd: 1922
    functionName: set_replication_progress
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 1
    functionsReached:
    - LSN_FORMAT_ARGS
    - PQresultStatus
    - PQfreemem
    - strtoul
    - PQgetvalue
    - resetPQExpBuffer
    - psprintf
    - strlen
    - createPQExpBuffer
    - pg_log_info
    - PQclear
    - pg_log_error
    - pg_free
    - PQexec
    - PQntuples
    - PQresultErrorMessage
    - PQescapeLiteral
    - pg_log_debug
    - destroyPQExpBuffer
    - Assert
    - appendPQExpBuffer
    - disconnect_database
    linkageType: ''
    returnType: void
    signature: void set_replication_progress(PGconn *conn, const struct LogicalRepInfo
      *dbinfo, const char *lsn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1933,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1937,1
    - Dst: PQescapeIdentifier
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1939,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1939,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1941,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1944,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1946,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1950,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1951,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1953,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1954,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1955,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1958,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1961,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1962,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - conn
    - dbinfo
    argTypes:
    - PGconn*
    - struct LogicalRepInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1963
      start: 1930
    functionDepth: 2
    functionLinenumber: 1930
    functionLinenumberEnd: 1963
    functionName: enable_subscription
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 1
    functionsReached:
    - Assert
    - PQescapeIdentifier
    - PQexec
    - destroyPQExpBuffer
    - PQresultStatus
    - createPQExpBuffer
    - PQfreemem
    - PQresultErrorMessage
    - appendPQExpBuffer
    - pg_log_info
    - PQclear
    - pg_log_debug
    - pg_log_error
    - disconnect_database
    - strlen
    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:1979,1
    - Dst: concat_conninfo_dbname
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1985,1
    - Dst: connect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1986,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1987,1
    - Dst: concat_conninfo_dbname
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1990,1
    - Dst: connect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1991,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1992,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1996,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1997,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1999,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:1999,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2000,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2001,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2004,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2006,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2008,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2014,1
    - Dst: disconnect_database
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2015,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 2
    argNames:
    - opt
    - dbnamespecified
    argTypes:
    - struct CreateSubscriberOptions*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2016
      start: 1970
    functionDepth: 3
    functionLinenumber: 1970
    functionLinenumberEnd: 2016
    functionName: get_publisher_databases
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - connect_database
    - PQexec
    - PQntuples
    - concat_conninfo_dbname
    - PQresultStatus
    - PQresultErrorMessage
    - PQgetvalue
    - simple_string_list_append
    - PQclear
    - pg_log_error
    - disconnect_database
    - pg_free
    linkageType: ''
    returnType: void
    signature: "void get_publisher_databases(struct CreateSubscriberOptions *opt,\n\t\t\t\t\t\tbool
      dbnamespecified)"
  - BBCount: 48
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2061,1
    - Dst: pg_logging_set_level
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2062,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2063,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2064,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2064,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2068,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2068,1
    - Dst: usage
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2070,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2071,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2073,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2074,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2076,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2077,1
    - Dst: geteuid
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2101,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2103,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2104,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2106,1
    - Dst: get_restricted_token
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2110,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2112,1
    - Dst: simple_string_list_member
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2121,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2123,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2127,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2130,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2131,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2137,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2140,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2143,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2144,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2147,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2153,1
    - Dst: pg_logging_increase_verbosity
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2156,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2159,1
    - Dst: simple_string_list_member
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2162,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2164,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2168,1
    - Dst: simple_string_list_member
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2171,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2173,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2177,1
    - Dst: simple_string_list_member
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2180,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2182,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2186,1
    - Dst: simple_string_list_member
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2189,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2190,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2192,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2196,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2197,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2217,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2218,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2219,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2226,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2228,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2229,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2235,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2236,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2237,1
    - Dst: getcwd
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2245,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2246,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2247,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2248,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2263,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2264,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2265,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2267,1
    - Dst: get_base_conninfo
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2268,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2271,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2273,1
    - Dst: get_sub_conninfo
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2274,1
    - Dst: get_publisher_databases
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2285,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2290,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2298,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2301,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2306,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2307,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2309,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2316,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2317,1
    - Dst: exit
      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:2323,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2324,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2326,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2330,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2331,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2333,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2339,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2343,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2344,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2345,1
    - Dst: get_exec_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2350,1
    - Dst: get_exec_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2351,1
    - Dst: check_data_directory
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2354,1
    - Dst: store_pub_sub_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2363,1
    - Dst: atexit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2366,1
    - Dst: get_primary_sysid
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2372,1
    - Dst: get_standby_sysid
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2373,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2375,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2378,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2386,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2388,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2389,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2390,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2398,1
    - Dst: start_standby_server
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2399,1
    - Dst: check_subscriber
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2402,1
    - Dst: check_publisher
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2405,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2414,1
    - Dst: stop_standby_server
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2415,1
    - Dst: setup_publisher
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2418,1
    - Dst: setup_recovery
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2421,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2428,1
    - Dst: start_standby_server
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2429,1
    - Dst: wait_for_end_recovery
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2432,1
    - Dst: setup_subscriber
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2440,1
    - Dst: drop_primary_replication_slot
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2443,1
    - Dst: drop_failover_replication_slots
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2446,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2449,1
    - Dst: stop_standby_server
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2450,1
    - Dst: modify_subscriber_sysid
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2453,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c:2457,1
    CyclomaticComplexity: 54
    EdgeCount: 54
    ICount: 222
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2460
      start: 2018
    functionDepth: 5
    functionLinenumber: 2018
    functionLinenumberEnd: 2460
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_createsubscriber.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - pg_logging_increase_verbosity
    - stop_standby_server
    - get_primary_sysid
    - snprintf
    - set_pglocale_pgservice
    - setup_subscriber
    - drop_failover_replication_slots
    - pg_logging_set_level
    - exit
    - modify_subscriber_sysid
    - check_publisher
    - canonicalize_path
    - start_standby_server
    - geteuid
    - setup_recovery
    - drop_primary_replication_slot
    - puts
    - pg_logging_init
    - get_sub_conninfo
    - getcwd
    - pg_log_info
    - pg_log_error_detail
    - strcmp
    - pg_log_error
    - check_data_directory
    - wait_for_end_recovery
    - get_restricted_token
    - atoi
    - simple_string_list_member
    - stat
    - atexit
    - check_subscriber
    - pg_log_error_hint
    - usage
    - pg_fatal
    - pg_strcasecmp
    - get_progname
    - getopt_long
    - get_exec_path
    - pg_strdup
    - store_pub_sub_info
    - setup_publisher
    - simple_string_list_append
    - get_publisher_databases
    - get_base_conninfo
    - get_standby_sysid
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - 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
    - strcmp
    - strlen
    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: XLogRecPtrIsInvalid
      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:
    - LSN_FORMAT_ARGS
    - XLogRecPtrIsInvalid
    - pg_log_info
    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:
    - opendir
    - Assert
    - 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:
    - closedir
    - Assert
    - 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:
    - XLogFromFileName
    - LZ4F_getErrorName
    - snprintf
    - pg_log_warning
    - exit
    - XLogSegNoOffsetToRecPtr
    - pg_malloc0
    - LZ4F_isError
    - lseek
    - read
    - LZ4F_freeDecompressionContext
    - pg_log_error
    - is_xlogfilename
    - pg_free
    - stat
    - close
    - pg_fatal
    - LZ4F_decompress
    - readdir
    - memset
    - open
    - close_destination_dir
    - get_destination_dir
    - LZ4F_createDecompressionContext
    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: 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: Assert
      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:
    - XLogSegmentOffset
    - LSN_FORMAT_ARGS
    - Assert
    - GetSlotInformation
    - CreateWalDirectoryMethod
    - FindStreamingStart
    - PQserverVersion
    - GetConnection
    - PQfinish
    - ReceiveXlogStream
    - exit
    - RunIdentifySystem
    - pg_log_info
    - StreamCtl::walmethod::ops::free
    - StreamCtl::walmethod::ops::finish
    - CheckServerVersionForStreaming
    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: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - pg_usleep
    - set_pglocale_pgservice
    - exit
    - RunIdentifySystem
    - parse_compress_options
    - StreamLog
    - puts
    - pg_logging_init
    - pg_log_info
    - strcmp
    - pg_log_error
    - RetrieveWalSegSize
    - atexit
    - pg_log_error_hint
    - option_parse_int
    - usage
    - pg_fatal
    - DropReplicationSlot
    - validate_compress_specification
    - get_progname
    - getopt_long
    - umask
    - GetConnection
    - pg_strdup
    - sscanf
    - parse_compress_specification
    - close_destination_dir
    - parse_compress_algorithm
    - get_destination_dir
    - pqsignal
    - CreateReplicationSlot
    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:58,1
    - Dst: StreamCtl*::walmethod::ops::open_for_write
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:61,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:65,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:66,1
    - Dst: StreamCtl*::walmethod::ops::close
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:70,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:72,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:73,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - stream
    - fname
    argTypes:
    - StreamCtl*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 78
    functionName: mark_file_as_archived
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 0
    functionsReached:
    - StreamCtl*::walmethod::ops::open_for_write
    - GetLastWalMethodError
    - snprintf
    - StreamCtl*::walmethod::ops::close
    - pg_log_error
    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:97,1
    - Dst: XLogFileName
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:98,1
    - Dst: StreamCtl*::walmethod::ops::get_file_name
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:101,1
    - Dst: StreamCtl*::walmethod::ops::existsfile
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:116,1
    - Dst: StreamCtl*::walmethod::ops::get_file_size
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:118,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:121,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:122,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:123,1
    - Dst: StreamCtl*::walmethod::ops::open_for_write
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:129,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:132,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:133,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:134,1
    - Dst: StreamCtl*::walmethod::ops::sync
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:139,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:141,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:142,1
    - Dst: StreamCtl*::walmethod::ops::close
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:143,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:144,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:148,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:156,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:156,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:160,1
    - Dst: StreamCtl*::walmethod::ops::open_for_write
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:168,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:174,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:175,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:176,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:180,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 44
    argCount: 2
    argNames:
    - stream
    - startpoint
    argTypes:
    - StreamCtl*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 183
    functionName: open_walfile
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 0
    functionsReached:
    - XLByteToSeg
    - StreamCtl*::walmethod::ops::existsfile
    - StreamCtl*::walmethod::ops::open_for_write
    - GetLastWalMethodError
    - StreamCtl*::walmethod::ops::close
    - pg_log_error
    - XLogFileName
    - exit
    - StreamCtl*::walmethod::ops::get_file_size
    - StreamCtl*::walmethod::ops::sync
    - StreamCtl*::walmethod::ops::get_file_name
    - ngettext
    - pg_free
    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:201,1
    - Dst: StreamCtl*::walmethod::ops::get_file_name
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:205,1
    - Dst: StreamCtl*::walmethod::ops::close
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:212,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:215,1
    - Dst: StreamCtl*::walmethod::ops::close
      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:220,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:226,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:227,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:229,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:233,1
    - Dst: mark_file_as_archived
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:244,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 2
    argNames:
    - stream
    - pos
    argTypes:
    - StreamCtl*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 190
    functionDepth: 2
    functionLinenumber: 190
    functionLinenumberEnd: 250
    functionName: close_walfile
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 0
    functionsReached:
    - mark_file_as_archived
    - StreamCtl*::walmethod::ops::close
    - GetLastWalMethodError
    - strlcpy
    - pg_log_info
    - pg_log_error
    - StreamCtl*::walmethod::ops::get_file_name
    - pg_free
    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:268,1
    - Dst: StreamCtl*::walmethod::ops::existsfile
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - stream
    argTypes:
    - StreamCtl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 271
    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:276,1
    - Dst: TLHistoryFileName
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:284,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:285,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:287,1
    - Dst: StreamCtl*::walmethod::ops::open_for_write
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:292,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:296,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:297,1
    - Dst: StreamCtl*::walmethod::ops::write
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:301,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:303,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:304,1
    - Dst: StreamCtl*::walmethod::ops::close
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:309,1
    - Dst: StreamCtl*::walmethod::ops::close
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:314,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:316,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:317,1
    - Dst: mark_file_as_archived
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:325,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - stream
    - filename
    - content
    argTypes:
    - StreamCtl*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 273
    functionDepth: 2
    functionLinenumber: 273
    functionLinenumberEnd: 330
    functionName: writeTimeLineHistoryFile
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 0
    functionsReached:
    - StreamCtl*::walmethod::ops::write
    - StreamCtl*::walmethod::ops::open_for_write
    - GetLastWalMethodError
    - StreamCtl*::walmethod::ops::close
    - mark_file_as_archived
    - TLHistoryFileName
    - strcmp
    - pg_log_error
    - strlen
    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:343,1
    - Dst: fe_sendint64
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:346,1
    - Dst: fe_sendint64
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:348,1
    - Dst: fe_sendint64
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:350,1
    - Dst: fe_sendint64
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:352,1
    - Dst: PQputCopyData
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:357,1
    - Dst: PQflush
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:357,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:359,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:360,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 4
    argNames:
    - conn
    - blockpos
    - now
    - replyRequested
    argTypes:
    - PGconn*
    - XLogRecPtr
    - TimestampTz
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 335
    functionDepth: 1
    functionLinenumber: 335
    functionLinenumberEnd: 365
    functionName: sendFeedback
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 2
    functionsReached:
    - PQerrorMessage
    - PQputCopyData
    - fe_sendint64
    - pg_log_error
    - PQflush
    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:388,1
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:391,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:393,1
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:400,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:402,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 373
    functionDepth: 1
    functionLinenumber: 373
    functionLinenumberEnd: 408
    functionName: CheckServerVersionForStreaming
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 1
    functionsReached:
    - pg_log_error
    - PQserverVersion
    - PQparameterStatus
    linkageType: ''
    returnType: bool
    signature: bool CheckServerVersionForStreaming(PGconn *conn)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: CheckServerVersionForStreaming
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:463,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:480,1
    - Dst: RunIdentifySystem
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:499,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:501,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:505,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:507,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:508,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:511,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:515,1
    - Dst: existsTimeLineHistoryFile
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:535,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:537,1
    - Dst: PQexec
      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: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:574,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:576,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:578,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:579,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:581,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:582,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:583,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:586,1
    - Dst: HandleCopyStream
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:589,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:603,1
    - Dst: ReadEndOfStreamingResult
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:617,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:618,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:625,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:631,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:632,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:633,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:638,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:639,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:641,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:642,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:643,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:646,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:654,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:657,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:659,1
    - Dst: StreamCtl*::stream_stop
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:667,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:671,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:678,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:679,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:680,1
    - Dst: StreamCtl*::walmethod::ops::close
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:686,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:687,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:688,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 107
    argCount: 2
    argNames:
    - conn
    - stream
    argTypes:
    - PGconn*
    - StreamCtl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 451
    functionDepth: 2
    functionLinenumber: 451
    functionLinenumberEnd: 691
    functionName: ReceiveXlogStream
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 1
    functionsReached:
    - LSN_FORMAT_ARGS
    - writeTimeLineHistoryFile
    - PQresultStatus
    - snprintf
    - pg_log_warning
    - StreamCtl*::walmethod::ops::close
    - PQgetvalue
    - RunIdentifySystem
    - PQgetResult
    - sprintf
    - ReadEndOfStreamingResult
    - PQnfields
    - PQclear
    - strcmp
    - pg_log_error
    - CheckServerVersionForStreaming
    - pg_free
    - XLogSegmentOffset
    - PQexec
    - PQntuples
    - PQresultErrorMessage
    - GetLastWalMethodError
    - StreamCtl*::stream_stop
    - HandleCopyStream
    - existsTimeLineHistoryFile
    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:715,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:715,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:717,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:718,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:718,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:722,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:722,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:723,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:723,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:726,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:727,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - res
    - startpos
    - timeline
    argTypes:
    - PGresult*
    - XLogRecPtr*
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 697
    functionDepth: 1
    functionLinenumber: 697
    functionLinenumberEnd: 733
    functionName: ReadEndOfStreamingResult
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 1
    functionsReached:
    - atoi
    - PQntuples
    - PQnfields
    - sscanf
    - PQgetvalue
    - pg_log_error
    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:762,1
    - Dst: feGetCurrentTimestamp
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:765,1
    - Dst: StreamCtl*::walmethod::ops::sync
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:773,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:774,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:775,1
    - Dst: sendFeedback
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:782,1
    - Dst: feTimestampDifferenceExceeds
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:791,1
    - Dst: sendFeedback
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:795,1
    - Dst: CalculateCopyStreamSleeptime
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:803,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:807,1
    - Dst: CopyStreamReceive
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:810,1
    - Dst: HandleEndOfCopyStream
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:817,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:821,1
    - Dst: ProcessKeepaliveMsg
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:828,1
    - Dst: ProcessXLogDataMsg
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:834,1
    - Dst: CheckCopyStreamStop
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:841,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:846,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:852,1
    - Dst: CopyStreamReceive
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:859,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:864,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 63
    argCount: 3
    argNames:
    - conn
    - stream
    - stoppos
    argTypes:
    - PGconn*
    - StreamCtl*
    - XLogRecPtr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 743
    functionDepth: 1
    functionLinenumber: 743
    functionLinenumberEnd: 866
    functionName: HandleCopyStream
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 1
    functionsReached:
    - feTimestampDifferenceExceeds
    - feGetCurrentTimestamp
    - CheckCopyStreamStop
    - PQfreemem
    - GetLastWalMethodError
    - CopyStreamReceive
    - HandleEndOfCopyStream
    - ProcessXLogDataMsg
    - StreamCtl*::walmethod::ops::sync
    - pg_fatal
    - sendFeedback
    - pg_log_error
    - ProcessKeepaliveMsg
    - CalculateCopyStreamSleeptime
    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:886,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:889,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:889,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:893,1
    - Dst: FD_SET
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:894,1
    - Dst: FD_SET
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:898,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:899,1
    - Dst: select
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:911,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:917,1
    - Dst: FD_ISSET
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:920,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 3
    argNames:
    - conn
    - timeout_ms
    - stop_socket
    argTypes:
    - PGconn*
    - long
    - pgsocket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 876
    functionDepth: 1
    functionLinenumber: 876
    functionLinenumberEnd: 924
    functionName: CopyStreamPoll
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 0
    functionsReached:
    - PQerrorMessage
    - FD_ISSET
    - PQsocket
    - Max
    - select
    - FD_SET
    - FD_ZERO
    - pg_log_error
    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:946,1
    - Dst: PQgetCopyData
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:949,1
    - Dst: CopyStreamPoll
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:959,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:964,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:966,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:967,1
    - Dst: PQgetCopyData
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:972,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:980,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:980,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: 987
      start: 938
    functionDepth: 2
    functionLinenumber: 938
    functionLinenumberEnd: 987
    functionName: CopyStreamReceive
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 1
    functionsReached:
    - Assert
    - PQerrorMessage
    - PQconsumeInput
    - PQgetCopyData
    - pg_log_error
    - CopyStreamPoll
    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:1010,1
    - Dst: StreamCtl*::walmethod::ops::sync
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1028,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1029,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1030,1
    - Dst: feGetCurrentTimestamp
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1034,1
    - Dst: sendFeedback
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1035,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: 1041
      start: 992
    functionDepth: 1
    functionLinenumber: 992
    functionLinenumberEnd: 1041
    functionName: ProcessKeepaliveMsg
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 1
    functionsReached:
    - feGetCurrentTimestamp
    - GetLastWalMethodError
    - StreamCtl*::walmethod::ops::sync
    - pg_fatal
    - sendFeedback
    - 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:1073,1
    - Dst: fe_recvint64
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1076,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1079,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1090,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1100,1
    - Dst: open_walfile
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1124,1
    - Dst: StreamCtl*::walmethod::ops::write
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1131,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1135,1
    - Dst: GetLastWalMethodError
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1137,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1148,1
    - Dst: close_walfile
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1150,1
    - Dst: StreamCtl*::stream_stop
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1156,1
    - Dst: PQputCopyEnd
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1158,1
    - Dst: PQflush
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1158,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1160,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1161,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: 1172
      start: 1046
    functionDepth: 3
    functionLinenumber: 1046
    functionLinenumberEnd: 1172
    functionName: ProcessXLogDataMsg
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 1
    functionsReached:
    - XLogSegmentOffset
    - StreamCtl*::walmethod::ops::write
    - PQerrorMessage
    - PQputCopyEnd
    - GetLastWalMethodError
    - close_walfile
    - StreamCtl*::stream_stop
    - fe_recvint64
    - pg_log_error
    - open_walfile
    - PQflush
    linkageType: ''
    returnType: bool
    signature: "bool ProcessXLogDataMsg(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:1181,1
    - Dst: close_walfile
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1190,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1193,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1196,1
    - Dst: PQputCopyEnd
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1198,1
    - Dst: PQflush
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1198,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1200,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1201,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1202,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1205,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: 1211
      start: 1177
    functionDepth: 3
    functionLinenumber: 1177
    functionLinenumberEnd: 1211
    functionName: HandleEndOfCopyStream
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 1
    functionsReached:
    - PQerrorMessage
    - PQresultStatus
    - PQputCopyEnd
    - PQgetResult
    - close_walfile
    - PQclear
    - pg_log_error
    - PQflush
    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:1219,1
    - Dst: close_walfile
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1221,1
    - Dst: PQputCopyEnd
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1226,1
    - Dst: PQflush
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1226,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1228,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/receivelog.c:1229,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - conn
    - stream
    - blockpos
    argTypes:
    - PGconn*
    - StreamCtl*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1236
      start: 1216
    functionDepth: 3
    functionLinenumber: 1216
    functionLinenumberEnd: 1236
    functionName: CheckCopyStreamStop
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/receivelog.c
    functionUses: 1
    functionsReached:
    - PQerrorMessage
    - PQputCopyEnd
    - close_walfile
    - StreamCtl*::stream_stop
    - pg_log_error
    - PQflush
    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:1257,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: 1274
      start: 1241
    functionDepth: 1
    functionLinenumber: 1241
    functionLinenumberEnd: 1274
    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:245,1
    - Dst: rmtree
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:246,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:247,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:251,1
    - Dst: rmtree
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:252,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:253,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:258,1
    - Dst: rmtree
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:259,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:260,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:264,1
    - Dst: rmtree
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:265,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:266,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:272,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:275,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:279,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 280
    functionName: cleanup_directories_atexit
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - pg_log_error
    - rmtree
    - pg_log_info
    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:286,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 287
    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: 300
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 300
    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:311,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 312
    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
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:322,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:331,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:338,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:347,1
    - Dst: is_nonwindows_absolute_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:364,1
    - Dst: is_windows_absolute_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:365,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:366,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:369,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:370,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:378,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:379,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 26
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 319
    functionDepth: 1
    functionLinenumber: 319
    functionLinenumberEnd: 386
    functionName: tablespace_list_append
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - is_absolute_path
    - is_nonwindows_absolute_path
    - is_windows_absolute_path
    - pg_fatal
    - pg_malloc0
    - canonicalize_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:392,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:392,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:394,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:394,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:401,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:401,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:403,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:403,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:405,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:405,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:407,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:407,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:409,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:409,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:412,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:412,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:415,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:415,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:419,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:419,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:429,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:429,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:431,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:431,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:436,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:436,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:438,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:438,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:445,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:445,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
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 389
    functionDepth: 0
    functionLinenumber: 389
    functionLinenumberEnd: 450
    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:476,1
    - Dst: FD_SET
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:477,1
    - Dst: select
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:479,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:486,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:488,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:490,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:491,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - segendpos
    - timeline
    - segment_finished
    argTypes:
    - XLogRecPtr
    - uint32
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 461
    functionDepth: 1
    functionLinenumber: 461
    functionLinenumberEnd: 531
    functionName: reached_end_position
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - FD_ZERO
    - sscanf
    - select
    - pg_fatal
    - read
    - FD_SET
    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:568,1
    - Dst: CreateWalTarMethod
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:572,1
    - Dst: ReceiveXlogStream
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:577,1
    - Dst: StreamCtl::walmethod::ops::finish
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:594,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:596,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:603,1
    - Dst: StreamCtl::walmethod::ops::free
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:605,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 1
    argNames:
    - param
    argTypes:
    - logstreamer_param*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 608
      start: 544
    functionDepth: 3
    functionLinenumber: 544
    functionLinenumberEnd: 608
    functionName: LogStreamerMain
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - CreateWalDirectoryMethod
    - PQfinish
    - CreateWalTarMethod
    - pg_log_error
    - ReceiveXlogStream
    - StreamCtl::walmethod::ops::free
    - StreamCtl::walmethod::ops::finish
    linkageType: ''
    returnType: int
    signature: int LogStreamerMain(logstreamer_param *param)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:625,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:632,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:633,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:637,1
    - Dst: pipe
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:641,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:642,1
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:646,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:649,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:652,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:654,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:658,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:665,1
    - Dst: PQbackendPID
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:666,1
    - Dst: CreateReplicationSlot
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:669,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:672,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:677,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:680,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:693,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:695,1
    - Dst: pg_mkdir_p
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:698,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:699,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:704,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:708,1
    - Dst: pg_mkdir_p
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:711,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:713,1
    - Dst: fork
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:722,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:726,1
    - Dst: LogStreamerMain
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:726,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:729,1
    - Dst: atexit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:734,1
    - Dst: _beginthreadex
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:736,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:738,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: 740
      start: 615
    functionDepth: 4
    functionLinenumber: 615
    functionLinenumberEnd: 740
    functionName: StartLogStreamer
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - XLogSegmentOffset
    - PQserverVersion
    - pg_mkdir_p
    - GetConnection
    - PQbackendPID
    - snprintf
    - fork
    - sscanf
    - atexit
    - _beginthreadex
    - exit
    - pipe
    - pg_fatal
    - pg_malloc0
    - pg_log_info
    - CreateReplicationSlot
    - psprintf
    - LogStreamerMain
    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:750,1
    - Dst: pg_mkdir_p
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:757,1
    - Dst: pg_fatal
      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:777,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:783,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - dirname
    - created
    - found
    argTypes:
    - char*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 747
    functionDepth: 1
    functionLinenumber: 747
    functionLinenumberEnd: 785
    functionName: verify_dir_is_empty_or_create
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - pg_fatal
    - pg_check_dir
    - pg_mkdir_p
    linkageType: ''
    returnType: void
    signature: void verify_dir_is_empty_or_create(char *dirname, bool *created, bool
      *found)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:798,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:800,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - filename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 792
    functionDepth: 1
    functionLinenumber: 792
    functionLinenumberEnd: 804
    functionName: progress_update_filename
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - pg_strdup
    - free
    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:827,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:845,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:847,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:858,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:859,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:862,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:868,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:870,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:871,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:874,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:882,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:886,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:887,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:890,1
    - Dst: fputc
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:898,1
    - Dst: isatty
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:898,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:898,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 3
    argNames:
    - tablespacenum
    - force
    - finished
    argTypes:
    - int
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 816
    functionDepth: 1
    functionLinenumber: 816
    functionLinenumberEnd: 899
    functionName: progress_report
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 9
    functionsReached:
    - snprintf
    - time
    - fputc
    - fprintf
    - isatty
    - fileno
    - ngettext
    - strlen
    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:909,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:911,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:913,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:920,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:927,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:946,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:950,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:954,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:961,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 31
    argCount: 1
    argNames:
    - src
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 901
    functionDepth: 0
    functionLinenumber: 901
    functionLinenumberEnd: 964
    functionName: parse_max_rate
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - isspace
    - pg_fatal
    - strtod
    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:993,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:998,1
    - Dst: parse_compress_options
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1007,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - option
    - algorithm
    - detail
    - locationres
    argTypes:
    - char*
    - char**
    - char**
    - CompressionLocation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1008
      start: 986
    functionDepth: 1
    functionLinenumber: 986
    functionLinenumberEnd: 1008
    functionName: backup_parse_compress_options
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - parse_compress_options
    - strncmp
    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:1021,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1022,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1023,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1024,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1025,1
    - Dst: PQgetCopyData
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1033,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1040,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1041,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1044,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1048,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - conn
    - callback
    - callback_data
    argTypes:
    - PGconn*
    - WriteDataCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1050
      start: 1014
    functionDepth: 1
    functionLinenumber: 1014
    functionLinenumberEnd: 1050
    functionName: ReceiveCopyData
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - PQerrorMessage
    - PQresultStatus
    - PQfreemem
    - PQgetResult
    - pg_fatal
    - PQclear
    - PQgetCopyData
    linkageType: ''
    returnType: void
    signature: "void ReceiveCopyData(PGconn *conn, WriteDataCallback callback,\n\t\t\t\tvoid
      *callback_data)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1077,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1084,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1088,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1092,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1096,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1100,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1115,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1116,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1118,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1132,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1133,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1135,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1137,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1139,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1140,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1160,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1161,1
    - Dst: get_tablespace_mapping
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1163,1
    - Dst: astreamer_extractor_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1164,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1179,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1181,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1186,1
    - Dst: astreamer_plain_writer_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_gzip_writer_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1197,1
    - Dst: strlcat
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1202,1
    - Dst: astreamer_plain_writer_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1203,1
    - Dst: astreamer_lz4_compressor_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1205,1
    - Dst: strlcat
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1209,1
    - Dst: astreamer_plain_writer_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1210,1
    - Dst: astreamer_zstd_compressor_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1212,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1216,1
    - Dst: astreamer_tar_archiver_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1226,1
    - Dst: progress_update_filename
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1227,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1244,1
    - Dst: astreamer_recovery_injector_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1245,1
    - Dst: astreamer_tar_parser_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1257,1
    - Dst: astreamer_tar_terminator_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1259,1
    - Dst: astreamer_gzip_decompressor_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1268,1
    - Dst: astreamer_lz4_decompressor_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1270,1
    - Dst: astreamer_zstd_decompressor_new
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1272,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 81
    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: 1278
      start: 1061
    functionDepth: 2
    functionLinenumber: 1061
    functionLinenumberEnd: 1278
    functionName: CreateBackupStreamer
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - astreamer_recovery_injector_new
    - astreamer_gzip_decompressor_new
    - snprintf
    - progress_update_filename
    - exit
    - astreamer_tar_archiver_new
    - psprintf
    - strlen
    - astreamer_zstd_compressor_new
    - astreamer_lz4_compressor_new
    - pg_log_error_detail
    - astreamer_extractor_new
    - strcmp
    - pg_log_error
    - is_absolute_path
    - pg_log_error_hint
    - astreamer_plain_writer_new
    - astreamer_zstd_decompressor_new
    - astreamer_lz4_decompressor_new
    - Assert
    - astreamer_tar_parser_new
    - get_tablespace_mapping
    - strlcat
    - astreamer_tar_terminator_new
    - astreamer_gzip_writer_new
    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:1290,1
    - Dst: ReceiveCopyData
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1295,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1300,1
    - Dst: astreamer_inject_file
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1311,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1315,1
    - Dst: astreamer_finalize
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1322,1
    - Dst: astreamer_free
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1323,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - conn
    - compress
    argTypes:
    - PGconn*
    - pg_compress_specification*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1326
      start: 1284
    functionDepth: 2
    functionLinenumber: 1284
    functionLinenumberEnd: 1326
    functionName: ReceiveArchiveStream
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - ReceiveCopyData
    - astreamer_free
    - fclose
    - memset
    - astreamer_inject_file
    - astreamer_finalize
    - 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:1339,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1353,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1358,1
    - Dst: GetCopyDataString
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1361,1
    - Dst: GetCopyDataString
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1362,1
    - Dst: GetCopyDataEnd
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1363,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1371,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1372,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1373,1
    - Dst: astreamer_finalize
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1387,1
    - Dst: astreamer_free
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1388,1
    - Dst: CreateBackupStreamer
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1404,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1419,1
    - Dst: fwrite
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1425,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1434,1
    - Dst: astreamer_content
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1441,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1445,1
    - Dst: GetCopyDataUInt64
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1457,1
    - Dst: GetCopyDataEnd
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1458,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1464,1
    - Dst: GetCopyDataEnd
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1474,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1489,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1492,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1496,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1498,1
    - Dst: ReportCopyDataParseError
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1506,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 64
    argCount: 3
    argNames:
    - r
    - copybuf
    - callback_data
    argTypes:
    - size_t
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1509
      start: 1332
    functionDepth: 3
    functionLinenumber: 1332
    functionLinenumberEnd: 1509
    functionName: ReceiveArchiveStreamChunk
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - astreamer_free
    - GetCopyDataUInt64
    - GetCopyDataByte
    - createPQExpBuffer
    - CreateBackupStreamer
    - snprintf
    - fwrite
    - GetCopyDataEnd
    - appendPQExpBuffer
    - GetCopyDataString
    - fopen
    - astreamer_finalize
    - pg_fatal
    - ReportCopyDataParseError
    - progress_report
    - astreamer_content
    - strchr
    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:1520,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - r
    - copybuf
    - cursor
    argTypes:
    - size_t
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1523
      start: 1516
    functionDepth: 1
    functionLinenumber: 1516
    functionLinenumberEnd: 1523
    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:1539,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - r
    - copybuf
    - cursor
    argTypes:
    - size_t
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1547
      start: 1530
    functionDepth: 1
    functionLinenumber: 1530
    functionLinenumberEnd: 1547
    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:1560,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1561,1
    - Dst: pg_ntoh64
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1563,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - r
    - copybuf
    - cursor
    argTypes:
    - size_t
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1564
      start: 1554
    functionDepth: 1
    functionLinenumber: 1554
    functionLinenumberEnd: 1564
    functionName: GetCopyDataUInt64
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 1
    functionsReached:
    - memcpy
    - ReportCopyDataParseError
    - pg_ntoh64
    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:1573,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - r
    - copybuf
    - cursor
    argTypes:
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1574
      start: 1569
    functionDepth: 1
    functionLinenumber: 1569
    functionLinenumberEnd: 1574
    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:1588,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1590,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - r
    - copybuf
    argTypes:
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1592
      start: 1584
    functionDepth: 0
    functionLinenumber: 1584
    functionLinenumberEnd: 1592
    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:1609,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1611,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1613,1
    - Dst: CreateBackupStreamer
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1614,1
    - Dst: ReceiveCopyData
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1620,1
    - Dst: progress_update_filename
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1621,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1634,1
    - Dst: ReceiveBackupManifestInMemory
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1635,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1636,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1637,1
    - Dst: astreamer_inject_file
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1640,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1644,1
    - Dst: astreamer_finalize
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1648,1
    - Dst: astreamer_free
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1649,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1651,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: 1657
      start: 1599
    functionDepth: 3
    functionLinenumber: 1599
    functionLinenumberEnd: 1657
    functionName: ReceiveTarFile
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - ReceiveCopyData
    - astreamer_free
    - ReceiveBackupManifestInMemory
    - PQserverVersion
    - PQExpBufferDataBroken
    - memset
    - CreateBackupStreamer
    - astreamer_inject_file
    - termPQExpBuffer
    - progress_update_filename
    - astreamer_finalize
    - pg_fatal
    - progress_report
    - initPQExpBuffer
    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:1667,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1670,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - r
    - copybuf
    - callback_data
    argTypes:
    - size_t
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1671
      start: 1662
    functionDepth: 1
    functionLinenumber: 1662
    functionLinenumberEnd: 1671
    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:1685,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1686,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1689,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - dir
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1693
      start: 1678
    functionDepth: 1
    functionLinenumber: 1678
    functionLinenumberEnd: 1693
    functionName: get_tablespace_mapping
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 1
    functionsReached:
    - strcmp
    - canonicalize_path
    - strlcpy
    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:1703,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1705,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1707,1
    - Dst: ReceiveCopyData
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1709,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1711,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1712
      start: 1698
    functionDepth: 2
    functionLinenumber: 1698
    functionLinenumberEnd: 1712
    functionName: ReceiveBackupManifest
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - ReceiveCopyData
    - fclose
    - snprintf
    - fopen
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void ReceiveBackupManifest(PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fwrite
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1723,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1728,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - r
    - copybuf
    - callback_data
    argTypes:
    - size_t
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1730
      start: 1717
    functionDepth: 0
    functionLinenumber: 1717
    functionLinenumberEnd: 1730
    functionName: ReceiveBackupManifestChunk
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - pg_fatal
    - fwrite
    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:1738,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - buf
    argTypes:
    - PGconn*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1739
      start: 1735
    functionDepth: 2
    functionLinenumber: 1735
    functionLinenumberEnd: 1739
    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:1750,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - r
    - copybuf
    - callback_data
    argTypes:
    - size_t
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1751
      start: 1744
    functionDepth: 1
    functionLinenumber: 1744
    functionLinenumberEnd: 1751
    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:1775,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1776,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1784,1
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1788,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1790,1
    - Dst: CheckServerVersionForStreaming
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1800,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1806,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1807,1
    - Dst: GenerateRecoveryConfig
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1820,1
    - Dst: GetDbnameFromConnectionOptions
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1822,1
    - Dst: RunIdentifySystem
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1827,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1828,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1842,1
    - Dst: open
      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: PQsendQuery
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1850,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1851,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1852,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1853,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1854,1
    - Dst: PQresultStatus
      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:1857,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1858,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1860,1
    - Dst: PQresStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1861,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1861,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1865,1
    - Dst: PQputCopyData
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1867,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1868,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1869,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1874,1
    - Dst: PQputCopyEnd
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1877,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1878,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1879,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1882,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1883,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1884,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1885,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1886,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1887,1
    - Dst: PQresStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1888,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1888,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1891,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1893,1
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1896,1
    - Dst: AppendStringCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1902,1
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1904,1
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1906,1
    - Dst: AppendStringCommandOption
      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:1918,1
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1920,1
    - Dst: AppendIntegerCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1923,1
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1926,1
    - Dst: AppendIntegerCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1930,1
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1933,1
    - Dst: AppendStringCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1939,1
    - Dst: AppendStringCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1942,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1951,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1954,1
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1956,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1958,1
    - Dst: AppendStringCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1960,1
    - Dst: pnstrdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1967,1
    - Dst: AppendStringCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1968,1
    - Dst: AppendStringCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1970,1
    - Dst: AppendStringCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1975,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1981,1
    - Dst: AppendStringCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1982,1
    - Dst: AppendStringCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1985,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1991,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1995,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1995,1
    - Dst: isatty
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1996,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1996,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1997,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:1999,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2003,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2005,1
    - Dst: PQsendQuery
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2008,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2009,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2010,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2015,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2016,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2017,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2018,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2019,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2020,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2021,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2021,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2023,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2023,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2026,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2033,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2034,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2034,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2037,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2040,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2046,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2047,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2048,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2049,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2050,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2051,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2057,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2058,1
    - Dst: atoll
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2060,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2060,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2072,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2074,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2076,1
    - Dst: unconstify
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2077,1
    - Dst: get_tablespace_mapping
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2077,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2081,1
    - Dst: verify_dir_is_empty_or_create
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2084,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2092,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2093,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2094,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2095,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2107,1
    - Dst: StartLogStreamer
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2120,1
    - Dst: ReceiveArchiveStream
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2128,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2133,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2146,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2148,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2153,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2154,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2155,1
    - Dst: ReceiveTarFile
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2158,1
    - Dst: ReceiveBackupManifest
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2174,1
    - Dst: progress_update_filename
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2179,1
    - Dst: progress_report
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2180,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2180,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2183,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2188,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2189,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2190,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2191,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2192,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2193,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2194,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2194,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2196,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2197,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2199,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2200,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2202,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2205,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2207,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2212,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2213,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2215,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2236,1
    - Dst: write
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2239,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2239,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2239,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2240,1
    - Dst: waitpid
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2243,1
    - Dst: pg_fatal
      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:2247,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2249,1
    - Dst: wait_result_to_str
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2249,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2258,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2259,1
    - Dst: InterlockedIncrement
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2262,1
    - Dst: WaitForSingleObjectEx
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2265,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2268,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2268,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2269,1
    - Dst: GetExitCodeThread
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2271,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2273,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2273,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2274,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2277,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2284,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2289,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2290,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2306,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2309,1
    - Dst: sync_dir_recurse
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2310,1
    - Dst: sync_pgdata
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2314,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2331,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2333,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2334,1
    - Dst: durable_rename
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2339,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2340,1
    - Dst: rename
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2344,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2345,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2351,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: 2352
      start: 1753
    functionDepth: 5
    functionLinenumber: 1753
    functionLinenumberEnd: 2352
    functionName: BaseBackup
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - rename
    - PQresultStatus
    - snprintf
    - AppendPlainCommandOption
    - fprintf
    - PQgetvalue
    - progress_update_filename
    - exit
    - RunIdentifySystem
    - PQgetResult
    - unconstify
    - InterlockedIncrement
    - _dosmaperr
    - progress_report
    - atoll
    - durable_rename
    - psprintf
    - strlen
    - GenerateRecoveryConfig
    - ReceiveTarFile
    - PQnfields
    - PQputCopyEnd
    - WaitForSingleObjectEx
    - read
    - PQsendQuery
    - pg_log_info
    - _
    - fileno
    - PQclear
    - verify_dir_is_empty_or_create
    - GetDbnameFromConnectionOptions
    - CheckServerVersionForStreaming
    - strcmp
    - ReceiveBackupManifest
    - pg_log_error
    - write
    - waitpid
    - sync_dir_recurse
    - PQserverVersion
    - PQerrorMessage
    - pnstrdup
    - PQntuples
    - atoi
    - is_absolute_path
    - PQfinish
    - PQresStatus
    - pg_log_error_hint
    - AppendStringCommandOption
    - isatty
    - PQresultErrorField
    - ReceiveArchiveStream
    - pg_fatal
    - strlcpy
    - destroyPQExpBuffer
    - sync_pgdata
    - Assert
    - StartLogStreamer
    - wait_result_to_str
    - get_tablespace_mapping
    - GetExitCodeThread
    - open
    - sscanf
    - GetLastError
    - PQgetisnull
    - PQparameterStatus
    - AppendIntegerCommandOption
    - PQputCopyData
    - initPQExpBuffer
    - strchr
    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:2405,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2406,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2407,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2407,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2411,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2411,1
    - Dst: usage
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2413,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2414,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2416,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2417,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2419,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2420,1
    - Dst: atexit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2424,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2426,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2432,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2434,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2437,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2444,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2447,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2450,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2450,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2452,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2452,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2455,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2459,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2462,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2465,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2474,1
    - Dst: parse_max_rate
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2480,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2486,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2489,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2498,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2502,1
    - Dst: tablespace_list_append
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2505,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2508,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2520,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2521,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2525,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2526,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2530,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2531,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2536,1
    - Dst: backup_parse_compress_options
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2545,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2549,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2567,1
    - Dst: parse_sync_method
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2570,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2571,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2575,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2576,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2585,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2587,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2588,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2596,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2598,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2608,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2609,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2610,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2620,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2621,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2622,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2626,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2627,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2628,1
    - Dst: parse_compress_algorithm
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2655,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2656,1
    - Dst: parse_compress_specification
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2659,1
    - Dst: validate_compress_specification
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2660,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2662,1
    - Dst: Assert
      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:2678,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2679,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2680,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2689,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2690,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2691,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: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2703,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2705,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2706,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2707,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2712,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2713,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2714,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2724,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2725,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2726,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2735,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2737,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2738,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2743,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:2757,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2758,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2759,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2763,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2764,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2765,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2769,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2770,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2772,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2773,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2774,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2783,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2785,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2786,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2794,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2796,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2797,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2802,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2804,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2805,1
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2809,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2813,1
    - Dst: atexit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2815,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2827,1
    - Dst: umask
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2838,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2841,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2849,1
    - Dst: verify_dir_is_empty_or_create
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2850,1
    - Dst: RetrieveWalSegSize
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2853,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2854,1
    - Dst: verify_dir_is_empty_or_create
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2861,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2867,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2868,1
    - Dst: symlink
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2871,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2872,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2873,1
    - Dst: BaseBackup
      Src: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c:2876,1
    CyclomaticComplexity: 104
    EdgeCount: 104
    ICount: 288
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2881
      start: 2355
    functionDepth: 6
    functionLinenumber: 2355
    functionLinenumberEnd: 2881
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/pg_basebackup.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - parse_max_rate
    - set_pglocale_pgservice
    - exit
    - canonicalize_path
    - psprintf
    - puts
    - pg_logging_init
    - symlink
    - parse_sync_method
    - verify_dir_is_empty_or_create
    - tablespace_list_append
    - strcmp
    - pg_log_error
    - pg_free
    - PQserverVersion
    - backup_parse_compress_options
    - is_absolute_path
    - RetrieveWalSegSize
    - atexit
    - pg_log_error_hint
    - option_parse_int
    - usage
    - pg_fatal
    - pg_strcasecmp
    - validate_compress_specification
    - get_progname
    - getopt_long
    - Assert
    - umask
    - BaseBackup
    - GetConnection
    - pg_strdup
    - parse_compress_specification
    - parse_compress_algorithm
    - pqsignal
    - free
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      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
    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:
    - Assert
    - astreamer_inject_file
    - pg_fatal
    - memcpy
    - strcmp
    - astreamer_content
    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:243,1
    - Dst: astreamer_content
      Src: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c:245,1
    - Dst: astreamer_content
      Src: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 4
    argNames:
    - streamer
    - pathname
    - data
    - len
    argTypes:
    - astreamer*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 249
    functionName: astreamer_inject_file
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/astreamer_inject.c
    functionUses: 3
    functionsReached:
    - astreamer_content
    - strlcpy
    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
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:97,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:98,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:120,1
    - Dst: pg_malloc0
      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: free
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:206,1
    - Dst: 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: free
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:213,1
    - Dst: 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:
    - PQresultStatus
    - exit
    - pg_malloc0
    - RetrieveDataDirCreatePerm
    - PQstatus
    - PQclear
    - strcmp
    - pg_log_error
    - PQconninfoFree
    - PQconnectdbParams
    - PQerrorMessage
    - PQconninfoParse
    - PQserverVersion
    - simple_prompt
    - PQfinish
    - PQexec
    - pg_fatal
    - PQconnectionNeedsPassword
    - Assert
    - PQparameterStatus
    - free
    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:
    - pg_log_error_detail
    - Assert
    - PQexec
    - PQserverVersion
    - PQerrorMessage
    - PQresultStatus
    - PQntuples
    - PQnfields
    - sscanf
    - PQgetvalue
    - IsValidWalSegSize
    - PQclear
    - strcmp
    - pg_log_error
    - ngettext
    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:
    - Assert
    - PQexec
    - PQserverVersion
    - PQerrorMessage
    - PQresultStatus
    - PQntuples
    - PQnfields
    - sscanf
    - PQgetvalue
    - SetDataDirectoryCreatePerm
    - PQclear
    - pg_log_error
    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:
    - Assert
    - PQexec
    - PQerrorMessage
    - PQntuples
    - PQresultStatus
    - PQnfields
    - pg_strdup
    - atoi
    - PQserverVersion
    - sscanf
    - PQgetvalue
    - PQgetisnull
    - PQclear
    - pg_log_error
    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: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:504,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:505,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:506,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:508,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:510,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:511,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:512,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:517,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:517,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:519,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:520,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:520,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:521,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:529,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:531,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:532,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:540,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:540,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:542,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:543,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:544,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:549,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:554,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:554,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:556,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:557,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:558,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:565,1
    - Dst: atoll
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:566,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:566,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:568,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 4
    argNames:
    - conn
    - slot_name
    - restart_lsn
    - restart_tli
    argTypes:
    - PGconn*
    - char*
    - XLogRecPtr*
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 489
    functionDepth: 1
    functionLinenumber: 489
    functionLinenumberEnd: 577
    functionName: GetSlotInformation
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/streamutil.c
    functionUses: 1
    functionsReached:
    - PQexec
    - PQerrorMessage
    - PQntuples
    - PQresultStatus
    - createPQExpBuffer
    - PQnfields
    - pg_log_error
    - PQgetvalue
    - appendPQExpBuffer
    - sscanf
    - PQgetisnull
    - PQclear
    - strcmp
    - destroyPQExpBuffer
    - atoll
    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:590,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:592,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:594,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:596,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: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:601,1
    - Dst: appendPQExpBufferStr
      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: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:607,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:611,1
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:615,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:620,1
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:621,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:624,1
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:625,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:628,1
    - Dst: AppendStringCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:632,1
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:635,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:648,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:652,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:653,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:655,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:659,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:661,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:662,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:667,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:668,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:670,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:671,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:676,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:676,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:678,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:680,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:680,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:682,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:683,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
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 57
    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: 690
      start: 583
    functionDepth: 1
    functionLinenumber: 583
    functionLinenumberEnd: 690
    functionName: CreateReplicationSlot
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/streamutil.c
    functionUses: 3
    functionsReached:
    - appendPQExpBufferChar
    - Assert
    - PQserverVersion
    - PQexec
    - PQerrorMessage
    - PQresultStatus
    - createPQExpBuffer
    - PQntuples
    - PQnfields
    - appendPQExpBufferStr
    - AppendPlainCommandOption
    - appendPQExpBuffer
    - AppendStringCommandOption
    - PQresultErrorField
    - pg_log_error
    - PQclear
    - strcmp
    - destroyPQExpBuffer
    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:702,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:704,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:707,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:709,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:710,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:712,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:713,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:715,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:716,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:720,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:720,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:722,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:724,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:724,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:726,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:727,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
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - conn
    - slot_name
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 696
    functionDepth: 1
    functionLinenumber: 696
    functionLinenumberEnd: 734
    functionName: DropReplicationSlot
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/streamutil.c
    functionUses: 2
    functionsReached:
    - Assert
    - PQexec
    - PQerrorMessage
    - destroyPQExpBuffer
    - PQresultStatus
    - createPQExpBuffer
    - PQntuples
    - PQnfields
    - appendPQExpBuffer
    - PQclear
    - pg_log_error
    linkageType: ''
    returnType: bool
    signature: bool DropReplicationSlot(PGconn *conn, const char *slot_name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:752,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:754,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:757,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: 758
      start: 745
    functionDepth: 1
    functionLinenumber: 745
    functionLinenumberEnd: 758
    functionName: AppendPlainCommandOption
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/streamutil.c
    functionUses: 2
    functionsReached:
    - appendPQExpBufferChar
    - appendPQExpBufferStr
    - appendPQExpBuffer
    linkageType: ''
    returnType: void
    signature: "void AppendPlainCommandOption(PQExpBuffer buf, bool use_new_option_syntax,\n\t\t\t\t\t\t
      char *option_name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:770,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:774,1
    - Dst: palloc
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:775,1
    - Dst: PQescapeStringConn
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:777,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:778,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:779,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - buf
    - use_new_option_syntax
    - option_name
    - option_value
    argTypes:
    - PQExpBuffer
    - bool
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 766
    functionDepth: 2
    functionLinenumber: 766
    functionLinenumberEnd: 781
    functionName: AppendStringCommandOption
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/streamutil.c
    functionUses: 2
    functionsReached:
    - pfree
    - AppendPlainCommandOption
    - appendPQExpBuffer
    - PQescapeStringConn
    - palloc
    - strlen
    linkageType: ''
    returnType: void
    signature: "void AppendStringCommandOption(PQExpBuffer buf, bool use_new_option_syntax,\n\t\t\t\t\t\t
      \ char *option_name, char *option_value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AppendPlainCommandOption
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:793,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:795,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: 796
      start: 789
    functionDepth: 2
    functionLinenumber: 789
    functionLinenumberEnd: 796
    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
      \  char *option_name, int32 option_value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:808,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 802
    functionDepth: 1
    functionLinenumber: 802
    functionLinenumberEnd: 815
    functionName: feGetCurrentTimestamp
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/streamutil.c
    functionUses: 4
    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: 837
      start: 821
    functionDepth: 0
    functionLinenumber: 821
    functionLinenumberEnd: 837
    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:850,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - start_time
    - stop_time
    - msec
    argTypes:
    - TimestampTz
    - TimestampTz
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 843
    functionDepth: 1
    functionLinenumber: 843
    functionLinenumberEnd: 851
    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:859,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:861,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - i
    - buf
    argTypes:
    - int64
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 856
    functionDepth: 1
    functionLinenumber: 856
    functionLinenumberEnd: 862
    functionName: fe_sendint64
    functionSourceFile: /src/postgres/src/bin/pg_basebackup/streamutil.c
    functionUses: 2
    functionsReached:
    - memcpy
    - pg_hton64
    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:872,1
    - Dst: pg_ntoh64
      Src: /src/postgres/src/bin/pg_basebackup/streamutil.c:874,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - buf
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 875
      start: 867
    functionDepth: 1
    functionLinenumber: 867
    functionLinenumberEnd: 875
    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:176,1
    - Dst: ReportEvent
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:185,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - level
    - line
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 194
    functionName: write_eventlog
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - ReportEvent
    - RegisterEventSource
    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:206,1
    - Dst: vfprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:209,1
    - Dst: pgwin32_is_service
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:216,1
    - Dst: vsnprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:220,1
    - Dst: write_eventlog
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:222,1
    - Dst: vfprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:226,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:228,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 229
    functionName: write_stderr
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - vsnprintf
    - write_eventlog
    - va_end
    - vfprintf
    - va_start
    - pgwin32_is_service
    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:240,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:241,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - msg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 243
    functionName: print_msg
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - fflush
    - fputs
    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:252,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:255,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:255,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:258,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:258,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:266,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:269,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:271,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:271,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:273,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:276,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:284,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:284,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:286,1
    - Dst: fscanf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:289,1
    - Dst: ftell
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:292,1
    - Dst: feof
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:292,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:293,1
    - Dst: _
      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:296,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:296,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:298,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:300,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 1
    argNames:
    - is_status_request
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 302
    functionName: get_pgpid
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - ftell
    - feof
    - fclose
    - stat
    - exit
    - fopen
    - write_stderr
    - 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:336,1
    - Dst: fstat
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:339,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:341,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:347,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:348,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:352,1
    - Dst: read
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:354,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:355,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:359,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:376,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:387,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:389,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:400,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 403
    functionName: readfile
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 3
    functionsReached:
    - close
    - open
    - fstat
    - pg_malloc
    - read
    - memcpy
    - free
    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:419,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:421,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - optlines
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 409
    functionDepth: 1
    functionLinenumber: 409
    functionLinenumberEnd: 422
    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:448,1
    - Dst: pg_disable_aslr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:451,1
    - Dst: fork
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:454,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:458,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:458,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:460,1
    - Dst: setsid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:476,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:478,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:478,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:480,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:490,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:494,1
    - Dst: execl
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:497,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:500,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:500,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:502,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:517,1
    - Dst: open
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:537,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:548,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:548,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:550,1
    - Dst: close
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:554,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:556,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:560,1
    - Dst: CreateRestrictedProcess
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:563,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:565,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:565,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:566,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:567,1
    - Dst: CloseHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:571,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 439
    functionDepth: 1
    functionLinenumber: 439
    functionLinenumberEnd: 574
    functionName: start_postmaster
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 4
    functionsReached:
    - getenv
    - fflush
    - setsid
    - fork
    - open
    - close
    - GetLastError
    - exit
    - write_stderr
    - _
    - pg_disable_aslr
    - CloseHandle
    - execl
    - CreateRestrictedProcess
    - psprintf
    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:606,1
    - Dst: atol
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:620,1
    - Dst: atoll
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:621,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:637,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:638,1
    - Dst: free_readfile
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:641,1
    - Dst: free_readfile
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:652,1
    - Dst: waitpid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:666,1
    - Dst: WaitForSingleObject
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:668,1
    - Dst: get_control_dbstate
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:673,1
    - Dst: SetServiceStatus
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:695,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:699,1
    - Dst: pg_usleep
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:702,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 2
    argNames:
    - pm_pid
    - do_checkpoint
    argTypes:
    - pid_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 592
    functionDepth: 2
    functionLinenumber: 592
    functionLinenumberEnd: 707
    functionName: wait_for_postmaster_start
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - SetServiceStatus
    - WaitForSingleObject
    - get_control_dbstate
    - print_msg
    - free_readfile
    - pg_usleep
    - waitpid
    - strcmp
    - atoll
    - readfile
    - atol
    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:725,1
    - Dst: kill
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:728,1
    - Dst: get_pgpid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:734,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:740,1
    - Dst: pg_usleep
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:741,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 716
    functionDepth: 2
    functionLinenumber: 716
    functionLinenumberEnd: 744
    functionName: wait_for_postmaster_stop
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - print_msg
    - kill
    - pg_usleep
    - get_pgpid
    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:763,1
    - Dst: kill
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:765,1
    - Dst: get_control_dbstate
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:768,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:773,1
    - Dst: pg_usleep
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:774,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 753
    functionDepth: 2
    functionLinenumber: 753
    functionLinenumberEnd: 777
    functionName: wait_for_postmaster_promote
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - print_msg
    - kill
    - pg_usleep
    - get_pgpid
    - get_control_dbstate
    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:786,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:789,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:789,1
    - Dst: setrlimit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:796,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 781
    functionDepth: 0
    functionLinenumber: 781
    functionLinenumberEnd: 798
    functionName: unlimit_core_size
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - setrlimit
    - write_stderr
    - _
    - getrlimit
    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:812,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:815,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:815,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:816,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:820,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:820,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:822,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:835,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:838,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:841,1
    - Dst: free_readfile
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:845,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 801
    functionDepth: 2
    functionLinenumber: 801
    functionLinenumberEnd: 848
    functionName: read_post_opts
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - strstr
    - pg_strdup
    - free_readfile
    - exit
    - write_stderr
    - _
    - readfile
    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:861,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:862,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:862,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:870,1
    - Dst: raise
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:871,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 856
    functionDepth: 1
    functionLinenumber: 856
    functionLinenumberEnd: 872
    functionName: trap_sigint_during_startup
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - kill
    - pqsignal
    - raise
    - write_stderr
    - _
    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:880,1
    - Dst: find_other_exec
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:882,1
    - Dst: find_my_exec
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:886,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:887,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:890,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:890,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:893,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:893,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:895,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - argv0
    - target
    - versionstr
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 874
    functionDepth: 1
    functionLinenumber: 874
    functionLinenumberEnd: 899
    functionName: find_other_exec_or_die
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - find_my_exec
    - pg_malloc
    - exit
    - write_stderr
    - strlcpy
    - _
    - 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:907,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:916,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:919,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:922,1
    - Dst: system
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:923,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:925,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:925,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:926,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 901
    functionDepth: 2
    functionLinenumber: 901
    functionLinenumberEnd: 928
    functionName: do_init
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - fflush
    - find_other_exec_or_die
    - exit
    - write_stderr
    - _
    - psprintf
    - 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:938,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:940,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:940,1
    - Dst: read_post_opts
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:945,1
    - Dst: find_other_exec_or_die
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:952,1
    - Dst: unlimit_core_size
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:956,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:968,1
    - Dst: getppid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:968,1
    - Dst: setenv
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:969,1
    - Dst: start_postmaster
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:973,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:986,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:988,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:988,1
    - Dst: wait_for_postmaster_start
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:990,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:993,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:993,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:997,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:997,1
    - Dst: write_stderr
      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: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1000,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1003,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1003,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:1007,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1007,1
    - Dst: write_stderr
      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: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1011,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1016,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1016,1
    - Dst: CloseHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1020,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 930
    functionDepth: 3
    functionLinenumber: 930
    functionLinenumberEnd: 1023
    functionName: do_start
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - print_msg
    - snprintf
    - unlimit_core_size
    - find_other_exec_or_die
    - setenv
    - get_pgpid
    - wait_for_postmaster_start
    - start_postmaster
    - pqsignal
    - exit
    - write_stderr
    - _
    - read_post_opts
    - CloseHandle
    - getppid
    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:1031,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1035,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1035,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: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1037,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1042,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1042,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1045,1
    - Dst: kill
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1048,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1050,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1050,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1051,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1056,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1056,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1061,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1061,1
    - Dst: wait_for_postmaster_stop
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1063,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1065,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1065,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1067,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1067,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1069,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1069,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1071,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1073,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1073,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1075,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1075,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1077
      start: 1026
    functionDepth: 3
    functionLinenumber: 1026
    functionLinenumberEnd: 1077
    functionName: do_stop
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - print_msg
    - kill
    - get_pgpid
    - exit
    - write_stderr
    - _
    - wait_for_postmaster_stop
    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:1089,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1093,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1093,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1095,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1095,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: do_start
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1097,1
    - Dst: postmaster_is_alive
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1103,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1105,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1105,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1108,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1108,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1109,1
    - Dst: postmaster_is_alive
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1113,1
    - Dst: kill
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1115,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1117,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1117,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1118,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1121,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1121,1
    - Dst: wait_for_postmaster_stop
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1124,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1126,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1126,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1128,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1128,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1130,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1130,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1132,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1135,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1135,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: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1140,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1140,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1142,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1142,1
    - Dst: do_start
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1145,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1146
      start: 1084
    functionDepth: 4
    functionLinenumber: 1084
    functionLinenumberEnd: 1146
    functionName: do_restart
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - print_msg
    - kill
    - do_start
    - get_pgpid
    - exit
    - write_stderr
    - _
    - wait_for_postmaster_stop
    - postmaster_is_alive
    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:1153,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1156,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1156,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: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1158,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1163,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1163,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1166,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1166,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1167,1
    - Dst: kill
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1170,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1172,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1172,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1174,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1177,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1177,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1178
      start: 1148
    functionDepth: 2
    functionLinenumber: 1148
    functionLinenumberEnd: 1178
    functionName: do_reload
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - print_msg
    - kill
    - get_pgpid
    - exit
    - write_stderr
    - _
    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:1191,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1195,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1195,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: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1197,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1202,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1202,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1205,1
    - Dst: get_control_dbstate
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1208,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1210,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1210,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1213,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1216,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1218,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1220,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1220,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1222,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1224,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1226,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1226,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1228,1
    - Dst: kill
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1232,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1234,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1234,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1236,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1237,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1237,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1239,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1244,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1244,1
    - Dst: wait_for_postmaster_promote
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1245,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1247,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1247,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:1252,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1252,1
    - Dst: write_stderr
      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: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1255,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1259,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1259,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1260
      start: 1185
    functionDepth: 3
    functionLinenumber: 1185
    functionLinenumberEnd: 1260
    functionName: do_promote
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - fclose
    - print_msg
    - snprintf
    - kill
    - get_pgpid
    - exit
    - fopen
    - write_stderr
    - wait_for_postmaster_promote
    - _
    - unlink
    - get_control_dbstate
    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:1272,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1276,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1276,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: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1278,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1283,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1283,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1286,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1289,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1291,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1293,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1293,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1295,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1297,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1299,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1299,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1301,1
    - Dst: kill
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1305,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1307,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1307,1
    - Dst: unlink
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1309,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1310,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1310,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1312,1
    - Dst: print_msg
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1315,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1315,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1316
      start: 1266
    functionDepth: 2
    functionLinenumber: 1266
    functionLinenumberEnd: 1316
    functionName: do_logrotate
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - fclose
    - print_msg
    - snprintf
    - kill
    - get_pgpid
    - exit
    - fopen
    - write_stderr
    - _
    - unlink
    linkageType: ''
    returnType: void
    signature: void do_logrotate(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getpid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1336,1
    - Dst: getppid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1339,1
    - Dst: kill
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1342,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - pid
    argTypes:
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1345
      start: 1323
    functionDepth: 1
    functionLinenumber: 1323
    functionLinenumberEnd: 1345
    functionName: postmaster_is_alive
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 1
    functionsReached:
    - getppid
    - getpid
    - 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:1352,1
    - Dst: postmaster_is_alive
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1360,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1362,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1362,1
    - Dst: postmaster_is_alive
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1370,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1376,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1376,1
    - Dst: readfile
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1379,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1383,1
    - Dst: free_readfile
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1386,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1392,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1392,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1399,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1400
      start: 1347
    functionDepth: 2
    functionLinenumber: 1347
    functionLinenumberEnd: 1400
    functionName: do_status
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - printf
    - puts
    - free_readfile
    - get_pgpid
    - exit
    - postmaster_is_alive
    - _
    - readfile
    linkageType: ''
    returnType: void
    signature: void do_status(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: kill
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1407,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1409,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1409,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1411,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - pid
    argTypes:
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1413
      start: 1404
    functionDepth: 1
    functionLinenumber: 1404
    functionLinenumberEnd: 1413
    functionName: do_kill
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - exit
    - kill
    - _
    - write_stderr
    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:1420,1
    - Dst: CloseServiceHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1424,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - hSCM
    argTypes:
    - SC_HANDLE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1426
      start: 1417
    functionDepth: 0
    functionLinenumber: 1417
    functionLinenumberEnd: 1426
    functionName: pgwin32_IsInstalled
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - OpenService
    - CloseServiceHandle
    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:1431,1
    - Dst: find_my_exec
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1437,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1440,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1440,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1441,1
    - Dst: find_other_exec
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1446,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1450,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1450,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1451,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1456,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1457,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1457,1
    - Dst: snprintf
      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: strlen
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1458,1
    - Dst: make_native_path
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1462,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1465,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1470,1
    - Dst: make_absolute_path
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1478,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1481,1
    - Dst: make_native_path
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1483,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1484,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1485,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1489,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1492,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1496,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1499,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1504,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1506,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 42
    argCount: 1
    argNames:
    - registration
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1510
      start: 1428
    functionDepth: 1
    functionLinenumber: 1428
    functionLinenumberEnd: 1510
    functionName: pgwin32_CommandLine
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - make_native_path
    - find_my_exec
    - createPQExpBuffer
    - snprintf
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - make_absolute_path
    - exit
    - write_stderr
    - _
    - free
    - find_other_exec
    - pg_strcasecmp
    - strlen
    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:1516,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1520,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1520,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1521,1
    - Dst: pgwin32_IsInstalled
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1523,1
    - Dst: CloseServiceHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1525,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1526,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1526,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1527,1
    - Dst: CreateService
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1530,1
    - Dst: pgwin32_CommandLine
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1533,1
    - Dst: CloseServiceHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1536,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1537,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1537,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1539,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1540,1
    - Dst: CloseServiceHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1542,1
    - Dst: CloseServiceHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1543,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1544
      start: 1512
    functionDepth: 2
    functionLinenumber: 1512
    functionLinenumberEnd: 1544
    functionName: pgwin32_doRegister
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - CloseServiceHandle
    - CreateService
    - GetLastError
    - pgwin32_IsInstalled
    - exit
    - write_stderr
    - OpenSCManager
    - _
    - pgwin32_CommandLine
    linkageType: ''
    returnType: void
    signature: void pgwin32_doRegister(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: OpenSCManager
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1550,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1554,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1554,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1555,1
    - Dst: pgwin32_IsInstalled
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1557,1
    - Dst: CloseServiceHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1559,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1560,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1560,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1561,1
    - Dst: OpenService
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1564,1
    - Dst: CloseServiceHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1566,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1567,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1567,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1569,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1570,1
    - Dst: DeleteService
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1572,1
    - Dst: CloseServiceHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1574,1
    - Dst: CloseServiceHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1575,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1576,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1576,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1578,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1579,1
    - Dst: CloseServiceHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1581,1
    - Dst: CloseServiceHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1582,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1583
      start: 1546
    functionDepth: 1
    functionLinenumber: 1546
    functionLinenumberEnd: 1583
    functionName: pgwin32_doUnregister
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - CloseServiceHandle
    - DeleteService
    - OpenService
    - GetLastError
    - pgwin32_IsInstalled
    - exit
    - write_stderr
    - OpenSCManager
    - _
    linkageType: ''
    returnType: void
    signature: void pgwin32_doUnregister(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SetServiceStatus
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1589,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - currentState
    argTypes:
    - DWORD
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1590
      start: 1585
    functionDepth: 0
    functionLinenumber: 1585
    functionLinenumberEnd: 1590
    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:1606,1
    - Dst: SetEvent
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1607,1
    - Dst: kill
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1613,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - request
    argTypes:
    - DWORD
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1622
      start: 1592
    functionDepth: 1
    functionLinenumber: 1592
    functionLinenumberEnd: 1622
    functionName: pgwin32_ServiceHandler
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - kill
    - SetEvent
    - pgwin32_SetServiceStatus
    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:1639,1
    - Dst: read_post_opts
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1641,1
    - Dst: RegisterServiceCtrlHandler
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1644,1
    - Dst: CreateEvent
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1647,1
    - Dst: pgwin32_SetServiceStatus
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1651,1
    - Dst: CreateRestrictedProcess
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1652,1
    - Dst: pgwin32_CommandLine
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1652,1
    - Dst: pgwin32_SetServiceStatus
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1654,1
    - Dst: CloseHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1659,1
    - Dst: write_eventlog
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1663,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1663,1
    - Dst: wait_for_postmaster_start
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1664,1
    - Dst: write_eventlog
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1666,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1666,1
    - Dst: pgwin32_SetServiceStatus
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1667,1
    - Dst: write_eventlog
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1670,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1670,1
    - Dst: pgwin32_SetServiceStatus
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1673,1
    - Dst: WaitForMultipleObjects
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1676,1
    - Dst: pgwin32_SetServiceStatus
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1678,1
    - Dst: kill
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1689,1
    - Dst: WaitForSingleObject
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1695,1
    - Dst: SetServiceStatus
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1698,1
    - Dst: CloseHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1711,1
    - Dst: CloseHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1712,1
    - Dst: pgwin32_SetServiceStatus
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1714,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 51
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - DWORD
    - LPTSTR*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1715
      start: 1624
    functionDepth: 3
    functionLinenumber: 1624
    functionLinenumberEnd: 1715
    functionName: pgwin32_ServiceMain
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - write_eventlog
    - WaitForSingleObject
    - SetServiceStatus
    - memset
    - CreateEvent
    - wait_for_postmaster_start
    - kill
    - pgwin32_SetServiceStatus
    - RegisterServiceCtrlHandler
    - WaitForMultipleObjects
    - _
    - read_post_opts
    - CloseHandle
    - pgwin32_CommandLine
    - CreateRestrictedProcess
    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:1723,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1725,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1725,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1727,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1728,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1730
      start: 1717
    functionDepth: 0
    functionLinenumber: 1717
    functionLinenumberEnd: 1730
    functionName: pgwin32_doRunAsService
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 0
    functionsReached:
    - StartServiceCtrlDispatcher
    - GetLastError
    - exit
    - write_stderr
    - _
    linkageType: ''
    returnType: void
    signature: void pgwin32_doRunAsService(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetStdHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1747,1
    - Dst: GetStdHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1750,1
    - Dst: GetStdHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1753,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - si
    argTypes:
    - STARTUPINFO*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1756
      start: 1743
    functionDepth: 0
    functionLinenumber: 1743
    functionLinenumberEnd: 1756
    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:1780,1
    - Dst: InheritStdHandles
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1789,1
    - Dst: OpenProcessToken
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1792,1
    - Dst: GetCurrentProcess
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1792,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1798,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1798,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1799,1
    - Dst: ZeroMemory
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1804,1
    - Dst: AllocateAndInitializeSid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1805,1
    - Dst: AllocateAndInitializeSid
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1808,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1812,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1812,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1813,1
    - Dst: GetPrivilegesToDelete
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1818,1
    - Dst: CreateRestrictedToken
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1823,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1831,1
    - Dst: FreeSid
      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: CloseHandle
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1834,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1838,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1838,1
    - Dst: GetLastError
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1839,1
    - Dst: AddUserToTokenDacl
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1843,1
    - Dst: CreateProcessAsUser
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1844,1
    - Dst: IsProcessInJob
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1846,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/pg_ctl/pg_ctl.c:1858,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: 1767
    functionDepth: 1
    functionLinenumber: 1767
    functionLinenumberEnd: 1900
    functionName: CreateRestrictedProcess
    functionSourceFile: /src/postgres/src/bin/pg_ctl/pg_ctl.c
    functionUses: 2
    functionsReached:
    - CreateJobObject
    - ZeroMemory
    - CloseHandle
    - sprintf
    - AddUserToTokenDacl
    - AllocateAndInitializeSid
    - CreateProcessAsUser
    - _
    - GetCurrentProcess
    - GetPrivilegesToDelete
    - AssignProcessToJobObject
    - write_stderr
    - OpenProcessToken
    - CreateRestrictedToken
    - IsProcessInJob
    - SetInformationJobObject
    - GetLastError
    - FreeSid
    - ResumeThread
    - InheritStdHandles
    - free
    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:
    - pg_malloc_extended
    - LookupPrivilegeValue
    - memcmp
    - GetLastError
    - write_stderr
    - GetTokenInformation
    - _
    - free
    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
    - exit
    - write_stderr
    - _
    - strcmp
    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
    - exit
    - write_stderr
    - _
    - strcmp
    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
    - exit
    - write_stderr
    - _
    - strcmp
    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: 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: 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:
    - fflush
    - pclose
    - fclose
    - pg_strdup
    - snprintf
    - find_other_exec_or_die
    - popen
    - fopen
    - exit
    - write_stderr
    - _
    - free
    - pg_strip_crlf
    - fgets
    - canonicalize_path
    - psprintf
    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
    - exit
    - write_stderr
    - _
    - get_controlfile
    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: 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: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - getenv
    - time
    - set_pglocale_pgservice
    - exit
    - canonicalize_path
    - set_starttype
    - geteuid
    - psprintf
    - atol
    - set_sig
    - puts
    - set_mode
    - pg_logging_init
    - do_advice
    - _
    - strcmp
    - do_help
    - atoi
    - setenv
    - write_stderr
    - get_progname
    - umask
    - getopt_long
    - pg_strdup
    - free
    - strchr
    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:862,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:863,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:865,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:865,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pgbench/pgbench.c:866,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:867,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:869,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:870,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pgbench/pgbench.c:870,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:872,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - con
    - table
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 875
      start: 852
    functionDepth: 1
    functionLinenumber: 852
    functionLinenumberEnd: 875
    functionName: get_table_relkind
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - Assert
    - PQerrorMessage
    - PQresultStatus
    - PQexecParams
    - PQgetvalue
    - exit
    - pg_log_error_detail
    - PQclear
    - pg_log_error
    - strlen
    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:882,1
    - Dst: INSTR_TIME_GET_MICROSEC
      Src: /src/postgres/src/bin/pgbench/pgbench.c:884,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 877
    functionDepth: 1
    functionLinenumber: 877
    functionLinenumberEnd: 885
    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:891,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - now
    argTypes:
    - pg_time_usec_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 892
      start: 887
    functionDepth: 2
    functionLinenumber: 887
    functionLinenumberEnd: 892
    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: 895
      start: 894
    functionDepth: 0
    functionLinenumber: 894
    functionLinenumberEnd: 895
    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:899,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 974
      start: 896
    functionDepth: 0
    functionLinenumber: 896
    functionLinenumberEnd: 974
    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:983,1
    - Dst: isdigit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:991,1
    - Dst: isdigit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:995,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 10
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 977
    functionDepth: 0
    functionLinenumber: 977
    functionLinenumberEnd: 1000
    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: 10
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1030,1
    - Dst: unlikely
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1043,1
    - Dst: isdigit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1043,1
    - Dst: isdigit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1047,1
    - Dst: unlikely
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1051,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1051,1
    - Dst: unlikely
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1052,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1052,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1057,1
    - Dst: unlikely
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1060,1
    - Dst: unlikely
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1065,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1075,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1080,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 40
    argCount: 3
    argNames:
    - str
    - errorOK
    - result
    argTypes:
    - char*
    - bool
    - int64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1082
      start: 1014
    functionDepth: 1
    functionLinenumber: 1014
    functionLinenumberEnd: 1082
    functionName: strtoint64
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - isdigit
    - pg_sub_s64_overflow
    - unlikely
    - pg_mul_s64_overflow
    - isspace
    - 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:1091,1
    - Dst: unlikely
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1093,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1096,1
    - Dst: unlikely
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1100,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1103,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - str
    - errorOK
    - dv
    argTypes:
    - char*
    - bool
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1085
    functionDepth: 1
    functionLinenumber: 1085
    functionLinenumberEnd: 1107
    functionName: strtodouble
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - unlikely
    - pg_log_error
    - 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:1117,1
    - Dst: pg_prng_uint64
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - pg_prng_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1118
      start: 1114
    functionDepth: 1
    functionLinenumber: 1114
    functionLinenumberEnd: 1118
    functionName: initRandomState
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_prng_seed
    - pg_prng_uint64
    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:1131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - min
    - max
    argTypes:
    - pg_prng_state*
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1132
      start: 1128
    functionDepth: 1
    functionLinenumber: 1128
    functionLinenumberEnd: 1132
    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:1148,1
    - Dst: exp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1149,1
    - Dst: pg_prng_double
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1151,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1156,1
    - Dst: log
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1157,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: 1160
      start: 1139
    functionDepth: 1
    functionLinenumber: 1139
    functionLinenumberEnd: 1160
    functionName: getExponentialRand
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - log
    - Assert
    - pg_prng_double
    - exp
    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:1171,1
    - Dst: pg_prng_double_normal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1187,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: 1196
      start: 1163
    functionDepth: 1
    functionLinenumber: 1163
    functionLinenumberEnd: 1196
    functionName: getGaussianRand
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_prng_double_normal
    - Assert
    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:1215,1
    - Dst: log
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - center
    argTypes:
    - pg_prng_state*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1218
      start: 1205
    functionDepth: 1
    functionLinenumber: 1205
    functionLinenumberEnd: 1218
    functionName: getPoissonRand
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - log
    - pg_prng_double
    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:1230,1
    - Dst: pg_prng_double
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1243,1
    - Dst: pg_prng_double
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1244,1
    - Dst: floor
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1246,1
    - Dst: pow
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1246,1
    - Dst: pow
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1248,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - state
    - n
    - s
    argTypes:
    - pg_prng_state*
    - int64
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1254
      start: 1227
    functionDepth: 1
    functionLinenumber: 1227
    functionLinenumberEnd: 1254
    functionName: computeIterativeZipfian
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pow
    - pg_prng_double
    - floor
    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:1263,1
    - Dst: computeIterativeZipfian
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1265,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: 1266
      start: 1257
    functionDepth: 2
    functionLinenumber: 1257
    functionLinenumberEnd: 1266
    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: 1288
      start: 1271
    functionDepth: 0
    functionLinenumber: 1271
    functionLinenumberEnd: 1288
    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: 1314
      start: 1296
    functionDepth: 0
    functionLinenumber: 1296
    functionLinenumberEnd: 1314
    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:1344,1
    - Dst: pg_leftmost_one_pos64
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1351,1
    - Dst: pg_prng_uint64
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1390,1
    - Dst: pg_prng_uint64
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1391,1
    - Dst: pg_prng_uint64
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1399,1
    - Dst: pg_prng_uint64
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1400,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1410,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 3
    argNames:
    - val
    - isize
    - seed
    argTypes:
    - int64
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1415
      start: 1329
    functionDepth: 1
    functionLinenumber: 1329
    functionLinenumberEnd: 1415
    functionName: permute
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_prng_uint64_range
    - pg_prng_seed
    - pg_leftmost_one_pos64
    - pg_prng_uint64
    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:1423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ss
    argTypes:
    - SimpleStats*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1424
      start: 1420
    functionDepth: 0
    functionLinenumber: 1420
    functionLinenumberEnd: 1424
    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: 1439
      start: 1429
    functionDepth: 0
    functionLinenumber: 1429
    functionLinenumberEnd: 1439
    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: 1454
      start: 1444
    functionDepth: 0
    functionLinenumber: 1444
    functionLinenumberEnd: 1454
    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:1470,1
    - Dst: initSimpleStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1471,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - sd
    - start
    argTypes:
    - StatsData*
    - pg_time_usec_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1472
      start: 1460
    functionDepth: 1
    functionLinenumber: 1460
    functionLinenumberEnd: 1472
    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: 8
    BranchProfiles: []
    Callsites:
    - Dst: addToSimpleStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1505,1
    - Dst: addToSimpleStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1509,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1521,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 6
    argNames:
    - stats
    - skipped
    - lat
    - lag
    - estatus
    - tries
    argTypes:
    - StatsData*
    - bool
    - double
    - double
    - EStatus
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1523
      start: 1477
    functionDepth: 1
    functionLinenumber: 1477
    functionLinenumberEnd: 1523
    functionName: accumStats
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_fatal
    - addToSimpleStats
    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:1531,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1532,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1534,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1534,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1535,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1536,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1538,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - con
    - sql
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1539
      start: 1526
    functionDepth: 1
    functionLinenumber: 1526
    functionLinenumberEnd: 1539
    functionName: executeStatement
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - PQexec
    - PQerrorMessage
    - PQresultStatus
    - exit
    - pg_log_error_detail
    - PQclear
    - pg_log_error
    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:1547,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1548,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1550,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1550,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1551,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1553,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - con
    - sql
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1554
      start: 1542
    functionDepth: 1
    functionLinenumber: 1542
    functionLinenumberEnd: 1554
    functionName: tryExecuteStatement
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - PQexec
    - PQerrorMessage
    - PQresultStatus
    - pg_log_error_detail
    - PQclear
    - pg_log_error
    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:1592,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1596,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1600,1
    - Dst: PQconnectionNeedsPassword
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1601,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1604,1
    - Dst: simple_prompt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1605,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1611,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1613,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1613,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1614,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1619
      start: 1557
    functionDepth: 1
    functionLinenumber: 1557
    functionLinenumberEnd: 1619
    functionName: doConnect
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - PQconnectdbParams
    - PQerrorMessage
    - simple_prompt
    - PQfinish
    - PQstatus
    - PQconnectionNeedsPassword
    - pg_log_error
    linkageType: ''
    returnType: PGconn
    signature: 'PGconn *

      doConnect(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1625,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - v1
    - v2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1627
      start: 1622
    functionDepth: 0
    functionLinenumber: 1622
    functionLinenumberEnd: 1627
    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:1642,1
    - Dst: bsearch
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1649,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - variables
    - name
    argTypes:
    - Variables*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1654
      start: 1630
    functionDepth: 1
    functionLinenumber: 1630
    functionLinenumberEnd: 1654
    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:1663,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1671,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1673,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1675,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1678,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1681,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1684,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1685,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - variables
    - name
    argTypes:
    - Variables*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1687
      start: 1657
    functionDepth: 2
    functionLinenumber: 1657
    functionLinenumberEnd: 1687
    functionName: getVariable
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - Assert
    - snprintf
    - lookupVariable
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      getVariable(Variables *variables, char *name)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1698,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1704,1
    - Dst: setNullValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1706,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1713,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1714,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1715,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1717,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1719,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1720,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1721,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1722,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1724,1
    - Dst: is_an_int
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1726,1
    - Dst: strtoint64
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1731,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1734,1
    - Dst: strtodouble
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1740,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1742,1
    - Dst: setDoubleValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1746,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 27
    argCount: 1
    argNames:
    - var
    argTypes:
    - Variable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1749
      start: 1690
    functionDepth: 2
    functionLinenumber: 1690
    functionLinenumberEnd: 1749
    functionName: makeVariableValue
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - strtodouble
    - is_an_int
    - pg_log_error
    - setBoolValue
    - strtoint64
    - pg_strncasecmp
    - setIntValue
    - setNullValue
    - pg_strcasecmp
    - setDoubleValue
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool makeVariableValue(Variable *var)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1774,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1775,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1784,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1785,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1793
      start: 1764
    functionDepth: 1
    functionLinenumber: 1764
    functionLinenumberEnd: 1793
    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
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1809,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - variables
    - needed
    argTypes:
    - Variables*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1811
      start: 1799
    functionDepth: 1
    functionLinenumber: 1799
    functionLinenumberEnd: 1811
    functionName: enlargeVariables
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_realloc
    linkageType: ''
    returnType: void
    signature: void enlargeVariables(Variables *variables, int needed)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lookupVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1823,1
    - Dst: valid_variable_name
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1830,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1832,1
    - Dst: enlargeVariables
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1837,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1841,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - variables
    - context
    - name
    argTypes:
    - Variables*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1851
      start: 1818
    functionDepth: 2
    functionLinenumber: 1818
    functionLinenumberEnd: 1851
    functionName: lookupCreateVariable
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - valid_variable_name
    - lookupVariable
    - pg_strdup
    - enlargeVariables
    - pg_log_error
    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:1862,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1867,1
    - Dst: free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1869,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - variables
    - context
    - name
    - value
    argTypes:
    - Variables*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1874
      start: 1855
    functionDepth: 3
    functionLinenumber: 1855
    functionLinenumberEnd: 1874
    functionName: putVariable
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_strdup
    - free
    - lookupCreateVariable
    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:1884,1
    - Dst: free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1888,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - variables
    - context
    - name
    - value
    argTypes:
    - Variables*
    - char*
    - char*
    - PgBenchValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1893
      start: 1878
    functionDepth: 3
    functionLinenumber: 1878
    functionLinenumberEnd: 1893
    functionName: putVariableValue
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - free
    - lookupCreateVariable
    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:1903,1
    - Dst: putVariableValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1904,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - variables
    - context
    - name
    - value
    argTypes:
    - Variables*
    - char*
    - char*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1905
      start: 1897
    functionDepth: 4
    functionLinenumber: 1897
    functionLinenumberEnd: 1905
    functionName: putVariableInt
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - putVariableValue
    - setIntValue
    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:1922,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1923,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1929,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1930,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1934,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1935,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - sql
    - eaten
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1940
      start: 1915
    functionDepth: 1
    functionLinenumber: 1915
    functionLinenumberEnd: 1940
    functionName: parseVariable
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_malloc
    - memcpy
    - IS_HIGHBIT_SET
    - 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:1945,1
    - Dst: pg_realloc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1951,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1951,1
    - Dst: memmove
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1956,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1956,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1957,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - sql
    - param
    - len
    - value
    argTypes:
    - char**
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1960
      start: 1942
    functionDepth: 1
    functionLinenumber: 1942
    functionLinenumberEnd: 1960
    functionName: replaceVariable
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - memcpy
    - memmove
    - strlen
    - pg_realloc
    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:1970,1
    - Dst: parseVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1974,1
    - Dst: getVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1984,1
    - Dst: free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1985,1
    - Dst: replaceVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:1992,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - variables
    - sql
    argTypes:
    - Variables*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1996
      start: 1962
    functionDepth: 3
    functionLinenumber: 1962
    functionLinenumberEnd: 1996
    functionName: assignVariables
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - replaceVariable
    - parseVariable
    - getVariable
    - free
    - strchr
    linkageType: ''
    returnType: char
    signature: 'char *

      assignVariables(Variables *variables, char *sql)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2005,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - variables
    - command
    - params
    argTypes:
    - Variables*
    - Command*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2006
      start: 1998
    functionDepth: 3
    functionLinenumber: 1998
    functionLinenumberEnd: 2006
    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:2024,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - pval
    argTypes:
    - PgBenchValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2027
      start: 2008
    functionDepth: 1
    functionLinenumber: 2008
    functionLinenumberEnd: 2027
    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:2040,1
    - Dst: valueTypeName
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2040,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - pval
    - bval
    argTypes:
    - PgBenchValue*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2044
      start: 2030
    functionDepth: 2
    functionLinenumber: 2030
    functionLinenumberEnd: 2044
    functionName: coerceToBool
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - valueTypeName
    - pg_log_error
    linkageType: ''
    returnType: bool
    signature: bool coerceToBool(PgBenchValue *pval, bool *bval)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2065,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - pval
    argTypes:
    - PgBenchValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2068
      start: 2050
    functionDepth: 1
    functionLinenumber: 2050
    functionLinenumberEnd: 2068
    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:2081,1
    - Dst: isnan
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2083,1
    - Dst: FLOAT8_FITS_IN_INT64
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2083,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2085,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2093,1
    - Dst: valueTypeName
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2093,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - pval
    - ival
    argTypes:
    - PgBenchValue*
    - int64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2096
      start: 2071
    functionDepth: 2
    functionLinenumber: 2071
    functionLinenumberEnd: 2096
    functionName: coerceToInt
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - isnan
    - rint
    - valueTypeName
    - pg_log_error
    - FLOAT8_FITS_IN_INT64
    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:2114,1
    - Dst: valueTypeName
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - pval
    - dval
    argTypes:
    - PgBenchValue*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2117
      start: 2099
    functionDepth: 2
    functionLinenumber: 2099
    functionLinenumberEnd: 2117
    functionName: coerceToDouble
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - valueTypeName
    - pg_log_error
    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: 2125
      start: 2120
    functionDepth: 0
    functionLinenumber: 2120
    functionLinenumberEnd: 2125
    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: 2133
      start: 2128
    functionDepth: 0
    functionLinenumber: 2128
    functionLinenumberEnd: 2133
    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: 2141
      start: 2136
    functionDepth: 0
    functionLinenumber: 2136
    functionLinenumberEnd: 2141
    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: 2149
      start: 2144
    functionDepth: 0
    functionLinenumber: 2144
    functionLinenumberEnd: 2149
    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: 2155
      start: 2151
    functionDepth: 0
    functionLinenumber: 2151
    functionLinenumberEnd: 2155
    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:2167,1
    - Dst: isLazyFunc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2167,1
    - Dst: evaluateExpr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2170,1
    - Dst: setNullValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2181,1
    - Dst: coerceToBool
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2185,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2190,1
    - Dst: evaluateExpr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2194,1
    - Dst: setNullValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2199,1
    - Dst: coerceToBool
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2202,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2206,1
    - Dst: setNullValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2216,1
    - Dst: coerceToBool
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2220,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2225,1
    - Dst: evaluateExpr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2229,1
    - Dst: setNullValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2234,1
    - Dst: coerceToBool
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2237,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2241,1
    - Dst: valueTruth
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2247,1
    - Dst: evaluateExpr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2248,1
    - Dst: evaluateExpr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2255,1
    - Dst: evalLazyFunc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2258,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2262,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 63
    argCount: 4
    argNames:
    - st
    - func
    - args
    - retval
    argTypes:
    - CState*
    - PgBenchFunction
    - PgBenchExprLink*
    - PgBenchValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2266
      start: 2158
    functionDepth: 3
    functionLinenumber: 2158
    functionLinenumberEnd: 2266
    functionName: evalLazyFunc
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 1
    functionsReached:
    - Assert
    - evalLazyFunc
    - setBoolValue
    - valueTruth
    - isLazyFunc
    - setNullValue
    - evaluateExpr
    - coerceToBool
    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:2288,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2295,1
    - Dst: setNullValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2302,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2323,1
    - Dst: coerceToDouble
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2332,1
    - Dst: coerceToDouble
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2333,1
    - Dst: setDoubleValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2339,1
    - Dst: setDoubleValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2343,1
    - Dst: setDoubleValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2347,1
    - Dst: setDoubleValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2351,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2355,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2359,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2363,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2367,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2372,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2381,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2382,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2388,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2390,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2393,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2397,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2399,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2402,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2406,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2408,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2411,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2415,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2419,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2423,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2427,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2434,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2445,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2449,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2452,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: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2465,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2469,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2483,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2483,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2487,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2489,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2491,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2493,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2495,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2497,1
    - Dst: coerceToBool
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2507,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2510,1
    - Dst: setDoubleValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2516,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2524,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2530,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2536,1
    - Dst: setDoubleValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2537,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2547,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2549,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2553,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2555,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2557,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2559,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2561,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2576,1
    - Dst: coerceToDouble
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2578,1
    - Dst: sqrt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2582,1
    - Dst: log
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2584,1
    - Dst: exp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2586,1
    - Dst: setDoubleValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2589,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2598,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2600,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2603,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2614,1
    - Dst: coerceToDouble
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2630,1
    - Dst: coerceToDouble
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2636,1
    - Dst: Min
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2639,1
    - Dst: Max
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2641,1
    - Dst: setDoubleValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2643,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2649,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2655,1
    - Dst: Min
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2658,1
    - Dst: Max
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2660,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2662,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2677,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2679,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2680,1
    - Dst: unlikely
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2684,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2686,1
    - Dst: unlikely
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2689,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2689,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2690,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2693,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2699,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2700,1
    - Dst: getrand
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2700,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2706,1
    - Dst: coerceToDouble
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2708,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2715,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2720,1
    - Dst: getGaussianRand
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2721,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2728,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2733,1
    - Dst: getZipfianRand
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2734,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2740,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2745,1
    - Dst: getExponentialRand
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2746,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2761,1
    - Dst: coerceToDouble
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2763,1
    - Dst: coerceToDouble
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2764,1
    - Dst: setDoubleValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2767,1
    - Dst: pow
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2767,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2774,1
    - Dst: setBoolValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2780,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2793,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2795,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2796,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2800,1
    - Dst: getHashMurmur2
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2800,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2802,1
    - Dst: getHashFnv1a
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2802,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2805,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2816,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2818,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2819,1
    - Dst: coerceToInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2820,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2825,1
    - Dst: setIntValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2829,1
    - Dst: permute
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2829,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2835,1
    CyclomaticComplexity: 79
    EdgeCount: 79
    ICount: 317
    argCount: 4
    argNames:
    - st
    - func
    - args
    - retval
    argTypes:
    - CState*
    - PgBenchFunction
    - PgBenchExprLink*
    - PgBenchValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2839
      start: 2275
    functionDepth: 3
    functionLinenumber: 2275
    functionLinenumberEnd: 2839
    functionName: evalStandardFunc
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - getGaussianRand
    - getExponentialRand
    - fprintf
    - pg_add_s64_overflow
    - pg_mul_s64_overflow
    - exp
    - pg_sub_s64_overflow
    - pow
    - Min
    - log
    - Max
    - setIntValue
    - permute
    - evaluateExpr
    - pg_log_error
    - coerceToInt
    - setNullValue
    - setDoubleValue
    - coerceToBool
    - Assert
    - sqrt
    - getZipfianRand
    - coerceToDouble
    - setBoolValue
    - unlikely
    - getHashMurmur2
    - getrand
    - getHashFnv1a
    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:2846,1
    - Dst: evalLazyFunc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2847,1
    - Dst: evalStandardFunc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2849,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - st
    - func
    - args
    - retval
    argTypes:
    - CState*
    - PgBenchFunction
    - PgBenchExprLink*
    - PgBenchValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2850
      start: 2842
    functionDepth: 4
    functionLinenumber: 2842
    functionLinenumberEnd: 2850
    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:2873,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2875,1
    - Dst: makeVariableValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2879,1
    - Dst: evalFunc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2887,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2894,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 3
    argNames:
    - st
    - expr
    - retval
    argTypes:
    - CState*
    - PgBenchExpr*
    - PgBenchValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2896
      start: 2858
    functionDepth: 5
    functionLinenumber: 2858
    functionLinenumberEnd: 2896
    functionName: evaluateExpr
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 2
    functionsReached:
    - lookupVariable
    - evalFunc
    - pg_fatal
    - makeVariableValue
    - 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:2908,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2910,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2912,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2914,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2916,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2918,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2920,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2922,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2924,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2926,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2928,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2930,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2932,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 31
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2937
      start: 2901
    functionDepth: 1
    functionLinenumber: 2901
    functionLinenumberEnd: 2937
    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:2975,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2977,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2981,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2984,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2990,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pgbench/pgbench.c:2996,1
    - Dst: system
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3001,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3004,1
    - Dst: popen
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3011,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3013,1
    - Dst: fgets
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3016,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3019,1
    - Dst: pclose
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3020,1
    - Dst: pclose
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3023,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3025,1
    - Dst: strtol
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3030,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3031,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3035,1
    - Dst: putVariableInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3038,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3041,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 57
    argCount: 4
    argNames:
    - variables
    - variable
    - argv
    - argc
    argTypes:
    - Variables*
    - char*
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3044
      start: 2943
    functionDepth: 5
    functionLinenumber: 2943
    functionLinenumberEnd: 3044
    functionName: runShellCommand
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - fflush
    - pclose
    - putVariableInt
    - popen
    - getVariable
    - strtol
    - fgets
    - isspace
    - memcpy
    - pg_log_debug
    - pg_log_error
    - strlen
    - system
    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:3052,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - st
    - cmd
    - message
    argTypes:
    - CState*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3054
      start: 3049
    functionDepth: 1
    functionLinenumber: 3049
    functionLinenumberEnd: 3054
    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:3062,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3063,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - st
    - message
    argTypes:
    - CState*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3065
      start: 3059
    functionDepth: 1
    functionLinenumber: 3059
    functionLinenumberEnd: 3065
    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:3077,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - thread
    argTypes:
    - TState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3084
      start: 3068
    functionDepth: 2
    functionLinenumber: 3068
    functionLinenumberEnd: 3084
    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:3093,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3095,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3103,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - st
    argTypes:
    - CState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3105
      start: 3090
    functionDepth: 1
    functionLinenumber: 3090
    functionLinenumberEnd: 3105
    functionName: allocCStatePrepared
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_malloc
    - Assert
    - pg_malloc0
    linkageType: ''
    returnType: void
    signature: void allocCStatePrepared(CState *st)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: allocCStatePrepared
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3120,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3126,1
    - Dst: PQprepare
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3127,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3129,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3130,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3130,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3131,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - st
    - command_num
    argTypes:
    - CState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3134
      start: 3110
    functionDepth: 2
    functionLinenumber: 3110
    functionLinenumberEnd: 3134
    functionName: prepareCommand
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - PQprepare
    - allocCStatePrepared
    - PQerrorMessage
    - PQresultStatus
    - PQclear
    - pg_log_debug
    - pg_log_error
    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:3149,1
    - Dst: allocCStatePrepared
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3153,1
    - Dst: prepareCommand
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3169,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 1
    argNames:
    - st
    argTypes:
    - CState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3173
      start: 3143
    functionDepth: 3
    functionLinenumber: 3143
    functionLinenumberEnd: 3173
    functionName: prepareCommandsInPipeline
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - Assert
    - allocCStatePrepared
    - prepareCommand
    linkageType: ''
    returnType: void
    signature: void prepareCommandsInPipeline(CState *st)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3185,1
    - Dst: assignVariables
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3186,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3188,1
    - Dst: PQsendQuery
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3189,1
    - Dst: free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3190,1
    - Dst: getQueryParams
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3197,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3199,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3200,1
    - Dst: prepareCommand
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3207,1
    - Dst: getQueryParams
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3208,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3210,1
    - Dst: PQsendQueryPrepared
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3211,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3219,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 2
    argNames:
    - st
    - command
    argTypes:
    - CState*
    - Command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3224
      start: 3176
    functionDepth: 4
    functionLinenumber: 3176
    functionLinenumberEnd: 3224
    functionName: sendCommand
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - getQueryParams
    - PQsendQueryParams
    - pg_strdup
    - assignVariables
    - prepareCommand
    - PQsendQueryPrepared
    - PQsendQuery
    - pg_log_debug
    - free
    linkageType: ''
    returnType: bool
    signature: bool sendCommand(CState *st, Command *command)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3234,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3236,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - sqlState
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3241
      start: 3229
    functionDepth: 0
    functionLinenumber: 3229
    functionLinenumberEnd: 3241
    functionName: getSQLErrorStatus
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: EStatus
    signature: EStatus getSQLErrorStatus(const char *sqlState)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - estatus
    argTypes:
    - EStatus
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3251
      start: 3246
    functionDepth: 0
    functionLinenumber: 3246
    functionLinenumberEnd: 3251
    functionName: canRetryError
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool canRetryError(EStatus estatus)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3273,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3277,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3284,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3287,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3293,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3303,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3308,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3309,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3320,1
    - Dst: PQfname
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3322,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3326,1
    - Dst: putVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3329,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3330,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3333,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3340,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3347,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3350,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3351,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3352,1
    - Dst: getSQLErrorStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3357,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3357,1
    - Dst: canRetryError
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3359,1
    - Dst: commandError
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3362,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3362,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3369,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3371,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3375,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3382,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3389,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3390,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3393,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3394,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 79
    argCount: 3
    argNames:
    - st
    - meta
    - varprefix
    argTypes:
    - CState*
    - MetaCommand
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3398
      start: 3262
    functionDepth: 4
    functionLinenumber: 3262
    functionLinenumberEnd: 3398
    functionName: readCommandResponse
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - commandError
    - PQresultStatus
    - getSQLErrorStatus
    - PQgetvalue
    - putVariable
    - PQgetResult
    - psprintf
    - PQnfields
    - canRetryError
    - PQclear
    - pg_log_error
    - pg_free
    - PQerrorMessage
    - PQntuples
    - PQresultErrorField
    - PQfname
    - pg_log_debug
    - PQexitPipelineMode
    - Assert
    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:3412,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3414,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3418,1
    - Dst: isdigit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3421,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3423,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3429,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3433,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3435,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 4
    argNames:
    - variables
    - argc
    - argv
    - usecs
    argTypes:
    - Variables*
    - int
    - char**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3443
      start: 3404
    functionDepth: 3
    functionLinenumber: 3404
    functionLinenumberEnd: 3443
    functionName: evaluateSleep
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - atoi
    - isdigit
    - pg_log_error
    - getVariable
    - pg_strcasecmp
    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:3452,1
    - Dst: canRetryError
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3455,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3462,1
    - Dst: pg_time_now_lazy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3477,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 2
    argNames:
    - st
    - now
    argTypes:
    - CState*
    - pg_time_usec_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3490
      start: 3449
    functionDepth: 3
    functionLinenumber: 3449
    functionLinenumberEnd: 3490
    functionName: doRetry
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - canRetryError
    - Assert
    - pg_time_now_lazy
    linkageType: ''
    returnType: bool
    signature: bool doRetry(CState *st, pg_time_usec_t *now)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PQpipelineSync
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3499,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3501,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3509,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3511,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3513,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3514,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3515,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3518,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3522,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3524,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - st
    argTypes:
    - CState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3529
      start: 3495
    functionDepth: 1
    functionLinenumber: 3495
    functionLinenumberEnd: 3529
    functionName: discardUntilSync
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - Assert
    - PQpipelineSync
    - PQresultStatus
    - PQgetResult
    - PQclear
    - pg_log_error
    - PQexitPipelineMode
    linkageType: ''
    returnType: int
    signature: int discardUntilSync(CState *st)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PQtransactionStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3540,1
    - Dst: PQstatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3550,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3560,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3565,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - con
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3567
      start: 3535
    functionDepth: 1
    functionLinenumber: 3535
    functionLinenumberEnd: 3567
    functionName: getTransactionStatus
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - PQtransactionStatus
    - Assert
    - pg_log_error
    - PQstatus
    linkageType: ''
    returnType: TStatus
    signature: TStatus getTransactionStatus(PGconn *con)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3578,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3580,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3582,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3583,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3586,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3590,1
    - Dst: pg_time_now_lazy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3598,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3599,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3602,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3604,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - st
    - now
    - is_retry
    argTypes:
    - CState*
    - pg_time_usec_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3605
      start: 3572
    functionDepth: 3
    functionLinenumber: 3572
    functionLinenumberEnd: 3605
    functionName: printVerboseErrorMessages
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - createPQExpBuffer
    - pg_time_now_lazy
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - printfPQExpBuffer
    - resetPQExpBuffer
    - pg_log_info
    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:3641,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3642,1
    - Dst: conditional_stack_empty
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3642,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3648,1
    - Dst: pg_time_now_lazy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3661,1
    - Dst: doConnect
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3668,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3674,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3680,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3685,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3725,1
    - Dst: getPoissonRand
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3728,1
    - Dst: pg_time_now_lazy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3739,1
    - Dst: processXactStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3743,1
    - Dst: pg_time_now_lazy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3780,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3801,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3805,1
    - Dst: pg_time_now_lazy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3816,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3824,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3828,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3834,1
    - Dst: sendCommand
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3840,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3842,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3848,1
    - Dst: executeMetaCommand
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3862,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3872,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3882,1
    - Dst: conditional_active
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3882,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3889,1
    - Dst: conditional_stack_peek
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3901,1
    - Dst: conditional_stack_push
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3907,1
    - Dst: conditional_stack_poke
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3919,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3926,1
    - Dst: conditional_stack_empty
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3926,1
    - Dst: conditional_stack_pop
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3927,1
    - Dst: conditional_active
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3928,1
    - Dst: conditional_stack_push
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3938,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3942,1
    - Dst: conditional_stack_empty
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3942,1
    - Dst: conditional_stack_pop
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3943,1
    - Dst: conditional_active
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3944,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3960,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3979,1
    - Dst: PQisBusy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3987,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3987,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3990,1
    - Dst: PQisBusy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3994,1
    - Dst: readCommandResponse
      Src: /src/postgres/src/bin/pgbench/pgbench.c:3998,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4007,1
    - Dst: canRetryError
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4010,1
    - Dst: pg_time_now_lazy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4023,1
    - Dst: pg_time_now_lazy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4042,1
    - Dst: addToSimpleStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4046,1
    - Dst: PG_TIME_GET_DOUBLE
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4047,1
    - Dst: conditional_active
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4052,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4063,1
    - Dst: conditional_stack_reset
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4066,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4069,1
    - Dst: discardUntilSync
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4071,1
    - Dst: getTransactionStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4082,1
    - Dst: PQsendQuery
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4086,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4088,1
    - Dst: doRetry
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4102,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4107,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4109,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4122,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4123,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4125,1
    - Dst: PQisBusy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4130,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4136,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4137,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4141,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4143,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4144,1
    - Dst: doRetry
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4151,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4154,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4155,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4156,1
    - Dst: printVerboseErrorMessages
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4174,1
    - Dst: printVerboseErrorMessages
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4205,1
    - Dst: processXactStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4219,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4225,1
    - Dst: conditional_stack_empty
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4225,1
    - Dst: getTransactionStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4231,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4234,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4242,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4244,1
    - Dst: pg_time_now_lazy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4253,1
    - Dst: finishCon
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4254,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4255,1
    - Dst: finishCon
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4295,1
    CyclomaticComplexity: 97
    EdgeCount: 97
    ICount: 285
    argCount: 3
    argNames:
    - thread
    - st
    - agg
    argTypes:
    - TState*
    - CState*
    - StatsData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4299
      start: 3610
    functionDepth: 5
    functionLinenumber: 3610
    functionLinenumberEnd: 4299
    functionName: advanceConnectionState
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - conditional_stack_peek
    - PQpipelineStatus
    - PQresultStatus
    - finishCon
    - pg_time_now
    - PQgetResult
    - getTransactionStatus
    - conditional_stack_pop
    - conditional_stack_reset
    - sendCommand
    - PQisBusy
    - PG_TIME_GET_DOUBLE
    - addToSimpleStats
    - conditional_stack_poke
    - canRetryError
    - printVerboseErrorMessages
    - processXactStats
    - PQsendQuery
    - PQclear
    - pg_log_error
    - conditional_stack_empty
    - discardUntilSync
    - pg_free
    - doRetry
    - chooseScript
    - readCommandResponse
    - PQerrorMessage
    - pg_time_now_lazy
    - getPoissonRand
    - executeMetaCommand
    - conditional_active
    - pg_log_debug
    - Assert
    - doConnect
    - PQconsumeInput
    - conditional_stack_push
    - commandFailed
    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:4315,1
    - Dst: unlikely
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4320,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4324,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4326,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4328,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4330,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4332,1
    - Dst: evaluateSleep
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4345,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4347,1
    - Dst: pg_time_now_lazy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4351,1
    - Dst: evaluateExpr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4360,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4362,1
    - Dst: putVariableValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4366,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4368,1
    - Dst: evaluateExpr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4379,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4381,1
    - Dst: valueTruth
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4385,1
    - Dst: conditional_stack_push
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4386,1
    - Dst: conditional_stack_peek
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4395,1
    - Dst: conditional_stack_poke
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4398,1
    - Dst: evaluateExpr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4402,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4404,1
    - Dst: valueTruth
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4408,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4409,1
    - Dst: conditional_stack_peek
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4409,1
    - Dst: conditional_stack_poke
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4410,1
    - Dst: conditional_stack_peek
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4414,1
    - Dst: conditional_stack_poke
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4417,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4426,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4431,1
    - Dst: conditional_stack_empty
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4431,1
    - Dst: conditional_stack_pop
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4432,1
    - Dst: runShellCommand
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4436,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4438,1
    - Dst: runShellCommand
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4444,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4446,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4458,1
    - Dst: prepareCommandsInPipeline
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4470,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4472,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4474,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4477,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4479,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4485,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4487,1
    - Dst: PQsendPipelineSync
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4490,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4492,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4499,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4501,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4504,1
    - Dst: commandFailed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4506,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 123
    argCount: 2
    argNames:
    - st
    - now
    argTypes:
    - CState*
    - pg_time_usec_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4522
      start: 4308
    functionDepth: 6
    functionLinenumber: 4308
    functionLinenumberEnd: 4522
    functionName: executeMetaCommand
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 1
    functionsReached:
    - PQsendPipelineSync
    - evaluateSleep
    - conditional_stack_peek
    - PQpipelineStatus
    - termPQExpBuffer
    - conditional_stack_pop
    - PQpipelineSync
    - PQenterPipelineMode
    - conditional_stack_poke
    - prepareCommandsInPipeline
    - evaluateExpr
    - conditional_stack_empty
    - pg_time_now_lazy
    - valueTruth
    - pg_log_debug
    - runShellCommand
    - Assert
    - appendPQExpBuffer
    - printfPQExpBuffer
    - unlikely
    - conditional_stack_push
    - commandFailed
    - putVariableValue
    - initPQExpBuffer
    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: 4532
      start: 4527
    functionDepth: 0
    functionLinenumber: 4527
    functionLinenumberEnd: 4532
    functionName: getFailures
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int64
    signature: int64 getFailures(const StatsData *stats)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4553,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - skipped
    - estatus
    argTypes:
    - bool
    - EStatus
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4558
      start: 4538
    functionDepth: 0
    functionLinenumber: 4538
    functionLinenumberEnd: 4558
    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:4574,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4576,1
    - Dst: pg_prng_double
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4583,1
    - Dst: INT64CONST
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4597,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4610,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4625,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4633,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4640,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4647,1
    - Dst: fputc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4651,1
    - Dst: initStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4654,1
    - Dst: accumStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4658,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4664,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4669,1
    - Dst: getResultString
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4671,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4675,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4677,1
    - Dst: fputc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4678,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 41
    argCount: 6
    argNames:
    - thread
    - st
    - agg
    - skipped
    - latency
    - lag
    argTypes:
    - TState*
    - CState*
    - StatsData*
    - bool
    - double
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4680
      start: 4569
    functionDepth: 2
    functionLinenumber: 4569
    functionLinenumberEnd: 4680
    functionName: doLog
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - accumStats
    - Assert
    - initStats
    - getResultString
    - fputc
    - fprintf
    - pg_time_now
    - pg_prng_double
    - INT64CONST
    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:4700,1
    - Dst: accumStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4708,1
    - Dst: doLog
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4718,1
    - Dst: accumStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4722,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: 4724
      start: 4689
    functionDepth: 3
    functionLinenumber: 4689
    functionLinenumberEnd: 4724
    functionName: processXactStats
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 1
    functionsReached:
    - accumStats
    - pg_time_now_lazy
    - doLog
    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:4734,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - state
    - length
    argTypes:
    - CState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4735
      start: 4728
    functionDepth: 1
    functionLinenumber: 4728
    functionLinenumberEnd: 4735
    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:4743,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4749,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - con
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4754
      start: 4740
    functionDepth: 2
    functionLinenumber: 4740
    functionLinenumberEnd: 4754
    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:4768,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4770,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4772,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4780,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4793,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4795,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4797,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4800,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4802,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4804,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4807,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4814,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4820,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4822,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4825,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - con
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4826
      start: 4762
    functionDepth: 2
    functionLinenumber: 4762
    functionLinenumberEnd: 4826
    functionName: createPartitions
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - Assert
    - termPQExpBuffer
    - appendPQExpBufferStr
    - printfPQExpBuffer
    - fprintf
    - appendPQExpBuffer
    - executeStatement
    - initPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void createPartitions(PGconn *con)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4881,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4883,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4885,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4890,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4896,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4897,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4902,1
    - Dst: PQescapeIdentifier
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4909,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4909,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4910,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4911,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4914,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4917,1
    - Dst: createPartitions
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4920,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - con
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4921
      start: 4831
    functionDepth: 3
    functionLinenumber: 4831
    functionLinenumberEnd: 4921
    functionName: initCreateTables
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - lengthof
    - PQescapeIdentifier
    - PQfreemem
    - termPQExpBuffer
    - printfPQExpBuffer
    - fprintf
    - appendPQExpBuffer
    - executeStatement
    - strcmp
    - strlen
    - createPartitions
    - initPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void initCreateTables(PGconn *con)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4929,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - con
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4934
      start: 4926
    functionDepth: 2
    functionLinenumber: 4926
    functionLinenumberEnd: 4934
    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:4940,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sql
    - curr
    argTypes:
    - PQExpBufferData*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4943
      start: 4936
    functionDepth: 1
    functionLinenumber: 4936
    functionLinenumberEnd: 4943
    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:4949,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sql
    - curr
    argTypes:
    - PQExpBufferData*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4952
      start: 4945
    functionDepth: 1
    functionLinenumber: 4945
    functionLinenumberEnd: 4952
    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:4958,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sql
    - curr
    argTypes:
    - PQExpBufferData*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4961
      start: 4954
    functionDepth: 1
    functionLinenumber: 4954
    functionLinenumberEnd: 4961
    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:4982,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4982,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4984,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4987,1
    - Dst: get_table_relkind
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4988,1
    - Dst: pg_snprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4992,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4994,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4996,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pgbench/pgbench.c:4998,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5000,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5001,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5001,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5002,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5004,1
    - Dst: init_row
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5010,1
    - Dst: PQputline
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5011,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5012,1
    - Dst: PG_TIME_GET_DOUBLE
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5023,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5023,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5026,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5037,1
    - Dst: fputc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5038,1
    - Dst: PG_TIME_GET_DOUBLE
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5044,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5044,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5050,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5061,1
    - Dst: fputc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5062,1
    - Dst: ceil
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5066,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5072,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: PQendcopy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5076,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5077,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5079,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: 5080
      start: 4963
    functionDepth: 2
    functionLinenumber: 4963
    functionLinenumberEnd: 5080
    functionName: initPopulateTable
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_snprintf
    - PQresultStatus
    - termPQExpBuffer
    - fprintf
    - pg_time_now
    - PQputline
    - PQendcopy
    - PG_TIME_GET_DOUBLE
    - get_table_relkind
    - fputc
    - fileno
    - PQclear
    - PQserverVersion
    - PQexec
    - PQerrorMessage
    - ceil
    - isatty
    - pg_fatal
    - init_row
    - initPQExpBuffer
    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:5091,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5097,1
    - Dst: initTruncateTables
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5100,1
    - Dst: initPopulateTable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5106,1
    - Dst: initPopulateTable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5107,1
    - Dst: initPopulateTable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5108,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - con
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5111
      start: 5088
    functionDepth: 3
    functionLinenumber: 5088
    functionLinenumberEnd: 5111
    functionName: initGenerateDataClientSide
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - initPopulateTable
    - initTruncateTables
    - executeStatement
    - fprintf
    linkageType: ''
    returnType: void
    signature: void initGenerateDataClientSide(PGconn *con)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5125,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5131,1
    - Dst: initTruncateTables
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5134,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5136,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5138,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5142,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5144,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5148,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5150,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5155,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5157,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - con
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5160
      start: 5120
    functionDepth: 3
    functionLinenumber: 5120
    functionLinenumberEnd: 5160
    functionName: initGenerateDataServerSide
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - initTruncateTables
    - termPQExpBuffer
    - printfPQExpBuffer
    - fprintf
    - executeStatement
    - initPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void initGenerateDataServerSide(PGconn *con)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5168,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5169,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5170,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5171,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - con
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5173
      start: 5165
    functionDepth: 2
    functionLinenumber: 5165
    functionLinenumberEnd: 5173
    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:5189,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5190,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5192,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5194,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5195,1
    - Dst: PQescapeIdentifier
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5201,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5202,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5203,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5204,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5207,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5210,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - con
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5211
      start: 5178
    functionDepth: 2
    functionLinenumber: 5178
    functionLinenumberEnd: 5211
    functionName: initCreatePKeys
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - lengthof
    - PQescapeIdentifier
    - PQfreemem
    - termPQExpBuffer
    - appendPQExpBufferStr
    - fprintf
    - appendPQExpBuffer
    - resetPQExpBuffer
    - executeStatement
    - strlen
    - initPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void initCreatePKeys(PGconn *con)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5228,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5229,1
    - Dst: executeStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5231,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - con
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5233
      start: 5216
    functionDepth: 2
    functionLinenumber: 5216
    functionLinenumberEnd: 5233
    functionName: initCreateFKeys
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - lengthof
    - executeStatement
    - fprintf
    linkageType: ''
    returnType: void
    signature: void initCreateFKeys(PGconn *con)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5246,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5250,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5252,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5253,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5254,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - initialize_steps
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5257
      start: 5242
    functionDepth: 1
    functionLinenumber: 5242
    functionLinenumberEnd: 5257
    functionName: checkInitSteps
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - exit
    - pg_fatal
    - pg_log_error_detail
    - pg_log_error
    - strchr
    linkageType: ''
    returnType: void
    signature: void checkInitSteps(const char *initialize_steps)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5271,1
    - Dst: doConnect
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5273,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5274,1
    - Dst: setup_cancel_handler
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5276,1
    - Dst: SetCancelConn
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5277,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5282,1
    - Dst: initDropTables
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5288,1
    - Dst: initCreateTables
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5292,1
    - Dst: initGenerateDataClientSide
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5296,1
    - Dst: initGenerateDataServerSide
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5300,1
    - Dst: initVacuum
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5304,1
    - Dst: initCreatePKeys
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5308,1
    - Dst: initCreateFKeys
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5312,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5317,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5318,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5319,1
    - Dst: PG_TIME_GET_DOUBLE
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5324,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5324,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5327,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5331,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5337,1
    - Dst: ResetCancelConn
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5338,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5339,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5340,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 55
    argCount: 1
    argNames:
    - initialize_steps
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5341
      start: 5262
    functionDepth: 4
    functionLinenumber: 5262
    functionLinenumberEnd: 5341
    functionName: runInitSteps
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - initGenerateDataClientSide
    - initGenerateDataServerSide
    - termPQExpBuffer
    - fprintf
    - pg_time_now
    - exit
    - PG_TIME_GET_DOUBLE
    - ResetCancelConn
    - initVacuum
    - initDropTables
    - appendPQExpBufferStr
    - setup_cancel_handler
    - pg_log_error
    - PQfinish
    - SetCancelConn
    - pg_fatal
    - initCreateFKeys
    - doConnect
    - appendPQExpBuffer
    - initCreatePKeys
    - initCreateTables
    - initPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void runInitSteps(const char *initialize_steps)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PQexec
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5356,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5357,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5359,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5361,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5361,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5363,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5364,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5365,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5367,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5369,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5369,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5371,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5372,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5373,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5377,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5395,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5407,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5413,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5419,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5420,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5420,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5421,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5426,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5430,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5433,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5435,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5437,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5442,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5446,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5446,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5449,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 2
    argNames:
    - con
    - scale_given
    argTypes:
    - PGconn*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5450
      start: 5347
    functionDepth: 1
    functionLinenumber: 5347
    functionLinenumberEnd: 5450
    functionName: GetTableInfo
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - Assert
    - PQerrorMessage
    - PQexec
    - atoi
    - PQresultStatus
    - PQntuples
    - pg_log_warning
    - PQresultErrorField
    - pg_log_error_hint
    - PQdb
    - PQgetvalue
    - exit
    - pg_fatal
    - PQgetisnull
    - PQclear
    - strcmp
    - pg_log_error
    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:5464,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5465,1
    - Dst: parseVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5471,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5487,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5489,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5493,1
    - Dst: replaceVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5494,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5500,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - Command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5503
      start: 5456
    functionDepth: 2
    functionLinenumber: 5456
    functionLinenumberEnd: 5503
    functionName: parseQuery
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - Assert
    - pg_strdup
    - strchr
    - replaceVariable
    - parseVariable
    - sprintf
    - pg_log_error
    - pg_free
    linkageType: ''
    returnType: bool
    signature: bool parseQuery(Command *cmd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5524,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5526,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5528,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5530,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5532,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5534,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5536,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5540,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5542,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5545,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: 5546
      start: 5517
    functionDepth: 1
    functionLinenumber: 5517
    functionLinenumberEnd: 5546
    functionName: syntax_error
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - termPQExpBuffer
    - appendPQExpBuffer
    - printfPQExpBuffer
    - fprintf
    - exit
    - pg_log_error
    - initPQExpBuffer
    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:5561,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5563,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5565,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - sql_command
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5579
      start: 5553
    functionDepth: 0
    functionLinenumber: 5553
    functionLinenumberEnd: 5579
    functionName: skip_sql_comments
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - isspace
    - strncmp
    - 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:5592,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5598,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5599,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5600,1
    - Dst: memset
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5607,1
    - Dst: initSimpleStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5610,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 2
    argNames:
    - buf
    - source
    argTypes:
    - PQExpBuffer
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5614
      start: 5588
    functionDepth: 1
    functionLinenumber: 5588
    functionLinenumberEnd: 5614
    functionName: create_sql_command
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - memset
    - appendPQExpBufferStr
    - initSimpleStats
    - pg_malloc
    - skip_sql_comments
    - initPQExpBuffer
    linkageType: ''
    returnType: Command
    signature: 'Command *

      create_sql_command(PQExpBuffer buf, const char *source)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5620,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5621,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5623,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5624,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5630,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - command
    argTypes:
    - Command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5631
      start: 5617
    functionDepth: 1
    functionLinenumber: 5617
    functionLinenumberEnd: 5631
    functionName: free_command
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - termPQExpBuffer
    - pg_free
    linkageType: ''
    returnType: void
    signature: void free_command(Command *command)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5643,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5646,1
    - Dst: strcspn
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5647,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5648,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5658,1
    - Dst: parseQuery
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5661,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5662,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5665,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - my_command
    argTypes:
    - Command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5667
      start: 5637
    functionDepth: 3
    functionLinenumber: 5637
    functionLinenumberEnd: 5667
    functionName: postprocess_sql_command
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - Assert
    - pg_strdup
    - parseQuery
    - strcspn
    - exit
    - strlcpy
    - psprintf
    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:5684,1
    - Dst: expr_lex_one_word
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5687,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5689,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5694,1
    - Dst: initSimpleStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5697,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5702,1
    - Dst: getMetaCommand
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5706,1
    - Dst: expr_lex_one_word
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5717,1
    - Dst: syntax_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5718,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5722,1
    - Dst: expr_scanner_init
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5727,1
    - Dst: expr_yyparse
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5730,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5733,1
    - Dst: expr_scanner_get_substring
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5738,1
    - Dst: expr_scanner_finish
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5742,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5744,1
    - Dst: expr_lex_one_word
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5750,1
    - Dst: syntax_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5757,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5761,1
    - Dst: expr_scanner_get_substring
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5767,1
    - Dst: syntax_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5774,1
    - Dst: syntax_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5778,1
    - Dst: isdigit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5798,1
    - Dst: isdigit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5802,1
    - Dst: syntax_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5819,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5828,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5829,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5830,1
    - Dst: syntax_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5831,1
    - Dst: syntax_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5839,1
    - Dst: syntax_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5845,1
    - Dst: syntax_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5854,1
    - Dst: syntax_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5860,1
    - Dst: syntax_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5866,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5870,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: 5873
      start: 5674
    functionDepth: 2
    functionLinenumber: 5674
    functionLinenumberEnd: 5873
    functionName: process_backslash_command
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - expr_scanner_init
    - expr_scanner_finish
    - pg_strdup
    - isdigit
    - termPQExpBuffer
    - getMetaCommand
    - initSimpleStats
    - exit
    - expr_yyparse
    - pg_malloc0
    - expr_scanner_get_substring
    - syntax_error
    - expr_lex_one_word
    - pg_strcasecmp
    - initPQExpBuffer
    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:5878,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - desc
    - cmdn
    - msg
    argTypes:
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5880
      start: 5875
    functionDepth: 0
    functionLinenumber: 5875
    functionLinenumberEnd: 5880
    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:5889,1
    - Dst: conditional_stack_push
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5901,1
    - Dst: conditional_stack_empty
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5904,1
    - Dst: ConditionError
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5905,1
    - Dst: conditional_stack_peek
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5906,1
    - Dst: ConditionError
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5907,1
    - Dst: conditional_stack_empty
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5910,1
    - Dst: ConditionError
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5911,1
    - Dst: conditional_stack_peek
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5912,1
    - Dst: ConditionError
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5913,1
    - Dst: conditional_stack_poke
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5914,1
    - Dst: conditional_stack_pop
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5917,1
    - Dst: ConditionError
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5918,1
    - Dst: conditional_stack_empty
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5926,1
    - Dst: ConditionError
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5927,1
    - Dst: conditional_stack_destroy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5928,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 32
    argCount: 1
    argNames:
    - ps
    argTypes:
    - ParsedScript*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5929
      start: 5885
    functionDepth: 1
    functionLinenumber: 5885
    functionLinenumberEnd: 5929
    functionName: CheckConditional
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - conditional_stack_peek
    - conditional_stack_destroy
    - conditional_stack_poke
    - conditional_stack_create
    - ConditionError
    - conditional_stack_push
    - conditional_stack_pop
    - conditional_stack_empty
    linkageType: ''
    returnType: void
    signature: void CheckConditional(const ParsedScript *ps)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5950,1
    - Dst: initStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5951,1
    - Dst: psql_scan_create
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5954,1
    - Dst: psql_scan_setup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5965,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5965,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5967,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5977,1
    - Dst: psql_scan
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5979,1
    - Dst: create_sql_command
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5982,1
    - Dst: psql_scan_get_location
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5995,1
    - Dst: process_backslash_command
      Src: /src/postgres/src/bin/pgbench/pgbench.c:5998,1
    - Dst: syntax_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6012,1
    - Dst: syntax_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6020,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6026,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6028,1
    - Dst: free_command
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6034,1
    - Dst: pg_realloc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6053,1
    - Dst: addScript
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6063,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6065,1
    - Dst: psql_scan_finish
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6066,1
    - Dst: psql_scan_destroy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6067,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 49
    argCount: 3
    argNames:
    - script
    - desc
    - weight
    argTypes:
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6068
      start: 5935
    functionDepth: 3
    functionLinenumber: 5935
    functionLinenumberEnd: 6068
    functionName: ParseScript
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - free_command
    - psql_scan_get_location
    - termPQExpBuffer
    - process_backslash_command
    - resetPQExpBuffer
    - syntax_error
    - strlen
    - initStats
    - psql_scan_destroy
    - psql_scan_create
    - psql_scan_finish
    - psql_scan_setup
    - pg_malloc
    - psql_scan
    - addScript
    - pg_strdup
    - pg_realloc
    - create_sql_command
    - initPQExpBuffer
    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:6083,1
    - Dst: fread
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6089,1
    - Dst: pg_realloc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6096,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - fd
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6102
      start: 6076
    functionDepth: 1
    functionLinenumber: 6076
    functionLinenumberEnd: 6102
    functionName: read_file_contents
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_malloc
    - fread
    - pg_realloc
    linkageType: ''
    returnType: char
    signature: 'char *

      read_file_contents(FILE *fd)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6116,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6118,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6119,1
    - Dst: read_file_contents
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6121,1
    - Dst: ferror
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6123,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6124,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6127,1
    - Dst: ParseScript
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6129,1
    - Dst: free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6131,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - filename
    - weight
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6132
      start: 6109
    functionDepth: 4
    functionLinenumber: 6109
    functionLinenumberEnd: 6132
    functionName: process_file
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 3
    functionsReached:
    - read_file_contents
    - fclose
    - ferror
    - fopen
    - pg_fatal
    - strcmp
    - ParseScript
    - free
    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:6138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bi
    - weight
    argTypes:
    - BuiltinScript*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6139
      start: 6135
    functionDepth: 4
    functionLinenumber: 6135
    functionLinenumberEnd: 6139
    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:6147,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6148,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6149,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6150,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6151
      start: 6142
    functionDepth: 1
    functionLinenumber: 6142
    functionLinenumberEnd: 6151
    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:6159,1
    - Dst: lengthof
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6162,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6164,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6177,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6179,1
    - Dst: listAvailableScripts
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6181,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6182,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6183
      start: 6154
    functionDepth: 2
    functionLinenumber: 6154
    functionLinenumberEnd: 6183
    functionName: findBuiltin
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - lengthof
    - exit
    - listAvailableScripts
    - pg_log_error
    - strncmp
    - strlen
    linkageType: ''
    returnType: BuiltinScript
    signature: 'BuiltinScript *

      findBuiltin(const char *name)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6196,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6203,1
    - Dst: strncpy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6204,1
    - Dst: strtol
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6209,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6211,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6213,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6219,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - option
    - script
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6224
      start: 6190
    functionDepth: 1
    functionLinenumber: 6190
    functionLinenumberEnd: 6224
    functionName: parseScriptWeight
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - strrchr
    - pg_strdup
    - strncpy
    - pg_malloc
    - strtol
    - pg_fatal
    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:6231,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6234,1
    - Dst: CheckConditional
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6236,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - script
    argTypes:
    - ParsedScript*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6240
      start: 6227
    functionDepth: 2
    functionLinenumber: 6227
    functionLinenumberEnd: 6240
    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:6276,1
    - Dst: mergeSimpleStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6279,1
    - Dst: mergeSimpleStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6280,1
    - Dst: sqrt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6298,1
    - Dst: getFailures
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6305,1
    - Dst: getFailures
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6305,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6310,1
    - Dst: PG_TIME_GET_DOUBLE
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6311,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6316,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6319,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6325,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6327,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6333,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6336,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 41
    argCount: 5
    argNames:
    - threads
    - test_start
    - now
    - last
    - last_report
    argTypes:
    - TState*
    - int64
    - pg_time_usec_t
    - StatsData*
    - int64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6340
      start: 6248
    functionDepth: 2
    functionLinenumber: 6248
    functionLinenumberEnd: 6340
    functionName: printProgressReport
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - mergeSimpleStats
    - sqrt
    - initStats
    - snprintf
    - fprintf
    - getFailures
    - PG_TIME_GET_DOUBLE
    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:6348,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6350,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6351,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - prefix
    - ss
    argTypes:
    - char*
    - SimpleStats*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6353
      start: 6342
    functionDepth: 0
    functionLinenumber: 6342
    functionLinenumberEnd: 6353
    functionName: printSimpleStats
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - printf
    - sqrt
    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:6359,1
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6368,1
    - Dst: formatPGVersionNumber
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6372,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6377,1
    - Dst: _
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6377,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6382,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6383,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - con
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6384
      start: 6356
    functionDepth: 1
    functionLinenumber: 6356
    functionLinenumberEnd: 6384
    functionName: printVersion
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - printf
    - fflush
    - PQserverVersion
    - formatPGVersionNumber
    - _
    - PQparameterStatus
    linkageType: ''
    returnType: void
    signature: void printVersion(PGconn *con)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: getFailures
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6395,1
    - Dst: PG_TIME_GET_DOUBLE
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6397,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6401,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6403,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6406,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6408,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6409,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6410,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6413,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6417,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6418,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6423,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6424,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6435,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6440,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6443,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6451,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6453,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6457,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6461,1
    - Dst: printSimpleStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6466,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6470,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6483,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6498,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6499,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6503,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6504,1
    - Dst: getFailures
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6517,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6521,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6532,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6535,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6541,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6545,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6557,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6560,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6565,1
    - Dst: printSimpleStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6570,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6581,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6594,1
    - Dst: printf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6600,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 76
    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: 6610
      start: 6387
    functionDepth: 1
    functionLinenumber: 6387
    functionLinenumberEnd: 6610
    functionName: printResults
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - printSimpleStats
    - printf
    - getFailures
    - 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:6621,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6624,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6626,1
    - Dst: pg_strong_random
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6629,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6631,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6639,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6641,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6642,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6648,1
    - Dst: pg_prng_seed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6653,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - seed
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6656
      start: 6616
    functionDepth: 2
    functionLinenumber: 6616
    functionLinenumberEnd: 6656
    functionName: set_random_seed
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - pg_prng_seed
    - sscanf
    - pg_log_info
    - pg_time_now
    - pg_log_error_detail
    - strcmp
    - pg_log_error
    - pg_strong_random
    linkageType: ''
    returnType: bool
    signature: bool set_random_seed(const char *seed)
  - BBCount: 129
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6753,1
    - Dst: INT64CONST
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6754,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6754,1
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6756,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6757,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6761,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6761,1
    - Dst: usage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6763,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6764,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6766,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6766,1
    - Dst: puts
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6768,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6769,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6773,1
    - Dst: set_random_seed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6776,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6776,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6777,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6779,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6786,1
    - Dst: listAvailableScripts
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6788,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6789,1
    - Dst: parseScriptWeight
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6791,1
    - Dst: process_builtin
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6792,1
    - Dst: findBuiltin
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6792,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6798,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6801,1
    - Dst: getrlimit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6804,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6805,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6809,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6811,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6812,1
    - Dst: setrlimit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6818,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6820,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6822,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6823,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6833,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6841,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6842,1
    - Dst: putVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6845,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6846,1
    - Dst: parseScriptWeight
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6850,1
    - Dst: process_file
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6851,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6856,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6858,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6861,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6867,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6868,1
    - Dst: checkInitSteps
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6869,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: atof
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6886,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6889,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6897,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6900,1
    - Dst: process_builtin
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6906,1
    - Dst: findBuiltin
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6906,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6911,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6915,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6917,1
    - Dst: atof
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6930,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6935,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6942,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6944,1
    - Dst: process_builtin
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6947,1
    - Dst: findBuiltin
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6947,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6953,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6955,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6959,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6961,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6964,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6976,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6980,1
    - Dst: atof
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6984,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6986,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6990,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:6992,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7000,1
    - Dst: set_random_seed
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7008,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7009,1
    - Dst: findBuiltin
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7013,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7015,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7016,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7021,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7023,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7027,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7029,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7032,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7041,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7044,1
    - Dst: pg_logging_increase_verbosity
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7059,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7063,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7064,1
    - Dst: process_builtin
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7071,1
    - Dst: findBuiltin
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7071,1
    - Dst: postprocess_sql_command
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7083,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7090,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7117,1
    - Dst: getenv
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7119,1
    - Dst: get_user_name_or_exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7122,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7128,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7130,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7131,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7137,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7140,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7147,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7154,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7161,1
    - Dst: pg_realloc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7164,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7165,1
    - Dst: strcat
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7166,1
    - Dst: runInitSteps
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7170,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7171,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7176,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7180,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7188,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7192,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7195,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7198,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7201,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7204,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7207,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7212,1
    - Dst: getpid
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7219,1
    - Dst: pg_realloc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7223,1
    - Dst: memset
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7224,1
    - Dst: putVariableValue
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7238,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7240,1
    - Dst: putVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7244,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7246,1
    - Dst: conditional_stack_create
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7255,1
    - Dst: initRandomState
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7256,1
    - Dst: doConnect
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7260,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7262,1
    - Dst: printVersion
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7265,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7267,1
    - Dst: PQhost
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7268,1
    - Dst: PQport
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7268,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7270,1
    - Dst: GetTableInfo
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7273,1
    - Dst: lookupVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7279,1
    - Dst: putVariableInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7283,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7284,1
    - Dst: lookupVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7292,1
    - Dst: putVariableInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7295,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7296,1
    - Dst: lookupVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7300,1
    - Dst: pg_prng_uint64
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7302,1
    - Dst: putVariableInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7305,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7307,1
    - Dst: lookupVariable
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7311,1
    - Dst: putVariableInt
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7314,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7316,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7321,1
    - Dst: tryExecuteStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7322,1
    - Dst: tryExecuteStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7323,1
    - Dst: tryExecuteStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7324,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7325,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7329,1
    - Dst: tryExecuteStatement
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7330,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7331,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7334,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7337,1
    - Dst: initRandomState
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7348,1
    - Dst: initRandomState
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7349,1
    - Dst: initRandomState
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7350,1
    - Dst: initStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7353,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7359,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7362,1
    - Dst: setalarm
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7366,1
    - Dst: THREAD_BARRIER_INIT
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7368,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7370,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7377,1
    - Dst: THREAD_CREATE
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7378,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7381,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7385,1
    - Dst: threadRun
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7390,1
    - Dst: initStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7393,1
    - Dst: THREAD_JOIN
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7401,1
    - Dst: mergeSimpleStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7408,1
    - Dst: mergeSimpleStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7409,1
    - Dst: disconnect_all
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7429,1
    - Dst: printResults
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7438,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7438,1
    - Dst: THREAD_BARRIER_DESTROY
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7441,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7444,1
    CyclomaticComplexity: 168
    EdgeCount: 168
    ICount: 457
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7447
      start: 6658
    functionDepth: 5
    functionLinenumber: 6658
    functionLinenumberEnd: 7447
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - getenv
    - pg_prng_uint64
    - atof
    - pg_logging_increase_verbosity
    - PQhost
    - THREAD_CREATE
    - THREAD_BARRIER_DESTROY
    - setalarm
    - setrlimit
    - putVariable
    - fprintf
    - pg_time_now
    - exit
    - process_file
    - conditional_stack_create
    - PQport
    - pg_malloc0
    - strlen
    - mergeSimpleStats
    - initStats
    - puts
    - pg_logging_init
    - get_user_name_or_exit
    - initRandomState
    - checkInitSteps
    - strcmp
    - pg_log_error
    - putVariableValue
    - printVersion
    - THREAD_BARRIER_INIT
    - pg_free
    - strcat
    - disconnect_all
    - atoi
    - putVariableInt
    - PQfinish
    - strchr
    - threadRun
    - set_random_seed
    - option_parse_int
    - pg_log_error_hint
    - PQdb
    - usage
    - getpid
    - pg_fatal
    - gettimeofday
    - pg_malloc
    - THREAD_JOIN
    - pg_log_debug
    - pg_strcasecmp
    - GetTableInfo
    - get_progname
    - getopt_long
    - Assert
    - lookupVariable
    - printResults
    - memset
    - findBuiltin
    - pg_strdup
    - postprocess_sql_command
    - tryExecuteStatement
    - runInitSteps
    - parseScriptWeight
    - doConnect
    - process_builtin
    - listAvailableScripts
    - pg_realloc
    - INT64CONST
    - getrlimit
    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:7457,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7471,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7473,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7475,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7478,1
    - Dst: THREAD_BARRIER_WAIT
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7486,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7488,1
    - Dst: doConnect
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7500,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7503,1
    - Dst: THREAD_BARRIER_WAIT
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7510,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7512,1
    - Dst: initStats
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7523,1
    - Dst: clear_socket_set
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7537,1
    - Dst: pg_time_now_lazy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7550,1
    - Dst: PQsocket
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7565,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7569,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7569,1
    - Dst: add_socket_to_set
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7573,1
    - Dst: pg_time_now_lazy
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7590,1
    - Dst: wait_on_socket_set
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7610,1
    - Dst: pg_usleep
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7614,1
    - Dst: wait_on_socket_set
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7619,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7630,1
    - Dst: clear_socket_set
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7639,1
    - Dst: PQsocket
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7652,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7656,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7656,1
    - Dst: socket_has_input
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7660,1
    - Dst: advanceConnectionState
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7670,1
    - Dst: pg_time_now
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7691,1
    - Dst: printProgressReport
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7701,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7726,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7728,1
    - Dst: disconnect_all
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7733,1
    - Dst: doLog
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7740,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7742,1
    - Dst: free_socket_set
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7745,1
    CyclomaticComplexity: 55
    EdgeCount: 55
    ICount: 132
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7747
      start: 7449
    functionDepth: 6
    functionLinenumber: 7449
    functionLinenumberEnd: 7747
    functionName: THREAD_FUNC_CC::threadRun
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 0
    functionsReached:
    - clear_socket_set
    - wait_on_socket_set
    - snprintf
    - pg_usleep
    - pg_time_now
    - exit
    - doLog
    - initStats
    - printProgressReport
    - THREAD_BARRIER_WAIT
    - fopen
    - advanceConnectionState
    - alloc_socket_set
    - pg_log_error
    - PQerrorMessage
    - disconnect_all
    - fclose
    - pg_time_now_lazy
    - free_socket_set
    - pg_fatal
    - socket_has_input
    - PQsocket
    - doConnect
    - add_socket_to_set
    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:7754,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - st
    argTypes:
    - CState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7757
      start: 7749
    functionDepth: 1
    functionLinenumber: 7749
    functionLinenumberEnd: 7757
    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: 7769
      start: 7765
    functionDepth: 0
    functionLinenumber: 7765
    functionLinenumberEnd: 7769
    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:7774,1
    - Dst: alarm
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7775,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - seconds
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7776
      start: 7771
    functionDepth: 0
    functionLinenumber: 7771
    functionLinenumberEnd: 7776
    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: 7784
      start: 7780
    functionDepth: 0
    functionLinenumber: 7780
    functionLinenumberEnd: 7784
    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:7793,1
    - Dst: CreateTimerQueueTimer
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7795,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7798,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - seconds
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7799
      start: 7786
    functionDepth: 0
    functionLinenumber: 7786
    functionLinenumberEnd: 7799
    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:7846,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - count
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7851
      start: 7841
    functionDepth: 1
    functionLinenumber: 7841
    functionLinenumberEnd: 7851
    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:7856,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sa
    argTypes:
    - socket_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7857
      start: 7853
    functionDepth: 1
    functionLinenumber: 7853
    functionLinenumberEnd: 7857
    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: 7863
      start: 7859
    functionDepth: 0
    functionLinenumber: 7859
    functionLinenumberEnd: 7863
    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:7868,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - sa
    - fd
    - idx
    argTypes:
    - socket_set*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7873
      start: 7865
    functionDepth: 1
    functionLinenumber: 7865
    functionLinenumberEnd: 7873
    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:7884,1
    - Dst: ppoll
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7888,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - sa
    - usecs
    argTypes:
    - socket_set*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7890
      start: 7875
    functionDepth: 0
    functionLinenumber: 7875
    functionLinenumberEnd: 7890
    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:7906,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - sa
    - fd
    - idx
    argTypes:
    - socket_set*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7908
      start: 7892
    functionDepth: 1
    functionLinenumber: 7892
    functionLinenumberEnd: 7908
    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
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7917,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - count
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7918
      start: 7914
    functionDepth: 1
    functionLinenumber: 7914
    functionLinenumberEnd: 7918
    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:7923,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sa
    argTypes:
    - socket_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7924
      start: 7920
    functionDepth: 1
    functionLinenumber: 7920
    functionLinenumberEnd: 7924
    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:7929,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - sa
    argTypes:
    - socket_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7931
      start: 7926
    functionDepth: 0
    functionLinenumber: 7926
    functionLinenumberEnd: 7931
    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:7940,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7942,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7947,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7949,1
    - Dst: exit
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7950,1
    - Dst: FD_SET
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7953,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - sa
    - fd
    - idx
    argTypes:
    - socket_set*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7956
      start: 7933
    functionDepth: 1
    functionLinenumber: 7933
    functionLinenumberEnd: 7956
    functionName: add_socket_to_set
    functionSourceFile: /src/postgres/src/bin/pgbench/pgbench.c
    functionUses: 1
    functionsReached:
    - exit
    - pg_log_error
    - FD_SET
    - 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:7967,1
    - Dst: select
      Src: /src/postgres/src/bin/pgbench/pgbench.c:7971,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - sa
    - usecs
    argTypes:
    - socket_set*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7973
      start: 7958
    functionDepth: 1
    functionLinenumber: 7958
    functionLinenumberEnd: 7973
    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:7978,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - sa
    - fd
    - idx
    argTypes:
    - socket_set*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7979
      start: 7975
    functionDepth: 0
    functionLinenumber: 7975
    functionLinenumberEnd: 7979
    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:
    - MAKEWORD
    - GetCurrentThreadId
    - pg_fatal
    - WSAStartup
    - TlsAlloc
    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:
    - createPQExpBuffer
    - TlsSetValue
    - resetPQExpBuffer
    - TlsGetValue
    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: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - AHX
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 344
    functionName: replace_on_exit_close_archive
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void replace_on_exit_close_archive(Archive *AHX)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: GetMyPSlot
      Src: /src/postgres/src/bin/pg_dump/parallel.c:358,1
    - Dst: ShutdownWorkersHard
      Src: /src/postgres/src/bin/pg_dump/parallel.c:366,1
    - Dst: DisconnectDatabase
      Src: /src/postgres/src/bin/pg_dump/parallel.c:369,1
    - Dst: DisconnectDatabase
      Src: /src/postgres/src/bin/pg_dump/parallel.c:382,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:385,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:386,1
    - Dst: DisconnectDatabase
      Src: /src/postgres/src/bin/pg_dump/parallel.c:394,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 396
    functionName: archive_close_connection
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - DisconnectDatabase
    - closesocket
    - GetMyPSlot
    - ShutdownWorkersHard
    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:418,1
    - Dst: kill
      Src: /src/postgres/src/bin/pg_dump/parallel.c:430,1
    - Dst: EnterCriticalSection
      Src: /src/postgres/src/bin/pg_dump/parallel.c:438,1
    - Dst: PQcancel
      Src: /src/postgres/src/bin/pg_dump/parallel.c:445,1
    - Dst: LeaveCriticalSection
      Src: /src/postgres/src/bin/pg_dump/parallel.c:447,1
    - Dst: WaitForTerminatingWorkers
      Src: /src/postgres/src/bin/pg_dump/parallel.c:451,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - ParallelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 406
    functionDepth: 1
    functionLinenumber: 406
    functionLinenumberEnd: 452
    functionName: ShutdownWorkersHard
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 1
    functionsReached:
    - EnterCriticalSection
    - PQcancel
    - kill
    - LeaveCriticalSection
    - closesocket
    - WaitForTerminatingWorkers
    linkageType: ''
    returnType: void
    signature: void ShutdownWorkersHard(ParallelState *pstate)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: HasEveryWorkerTerminated
      Src: /src/postgres/src/bin/pg_dump/parallel.c:460,1
    - Dst: wait
      Src: /src/postgres/src/bin/pg_dump/parallel.c:468,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/parallel.c:482,1
    - Dst: WORKER_IS_RUNNING
      Src: /src/postgres/src/bin/pg_dump/parallel.c:489,1
    - Dst: WaitForMultipleObjects
      Src: /src/postgres/src/bin/pg_dump/parallel.c:495,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:496,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/parallel.c:498,1
    - Dst: CloseHandle
      Src: /src/postgres/src/bin/pg_dump/parallel.c:507,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:515,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - ParallelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 519
    functionName: WaitForTerminatingWorkers
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 1
    functionsReached:
    - Assert
    - HasEveryWorkerTerminated
    - wait
    - WaitForMultipleObjects
    - pg_malloc
    - WORKER_IS_RUNNING
    - CloseHandle
    - free
    linkageType: ''
    returnType: void
    signature: void WaitForTerminatingWorkers(ParallelState *pstate)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:567,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:568,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:569,1
    - Dst: kill
      Src: /src/postgres/src/bin/pg_dump/parallel.c:584,1
    - Dst: PQcancel
      Src: /src/postgres/src/bin/pg_dump/parallel.c:593,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_dump/parallel.c:603,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_dump/parallel.c:604,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_dump/parallel.c:606,1
    - Dst: _exit
      Src: /src/postgres/src/bin/pg_dump/parallel.c:613,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 556
    functionDepth: 1
    functionLinenumber: 556
    functionLinenumberEnd: 614
    functionName: sigTermHandler
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - _exit
    - PQcancel
    - kill
    - pqsignal
    - write_stderr
    linkageType: ''
    returnType: void
    signature: void sigTermHandler(SIGNAL_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:630,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:631,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:632,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 619
    functionDepth: 0
    functionLinenumber: 619
    functionLinenumberEnd: 634
    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: 7
    BranchProfiles: []
    Callsites:
    - Dst: EnterCriticalSection
      Src: /src/postgres/src/bin/pg_dump/parallel.c:655,1
    - Dst: TerminateThread
      Src: /src/postgres/src/bin/pg_dump/parallel.c:681,1
    - Dst: PQcancel
      Src: /src/postgres/src/bin/pg_dump/parallel.c:684,1
    - Dst: PQcancel
      Src: /src/postgres/src/bin/pg_dump/parallel.c:693,1
    - Dst: LeaveCriticalSection
      Src: /src/postgres/src/bin/pg_dump/parallel.c:696,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_dump/parallel.c:706,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_dump/parallel.c:707,1
    - Dst: write_stderr
      Src: /src/postgres/src/bin/pg_dump/parallel.c:709,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 1
    argNames:
    - dwCtrlType
    argTypes:
    - DWORD
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 645
    functionDepth: 1
    functionLinenumber: 645
    functionLinenumberEnd: 714
    functionName: consoleHandler
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - EnterCriticalSection
    - PQcancel
    - LeaveCriticalSection
    - write_stderr
    - TerminateThread
    linkageType: ''
    returnType: BOOL
    signature: BOOL consoleHandler(DWORD dwCtrlType)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: InitializeCriticalSection
      Src: /src/postgres/src/bin/pg_dump/parallel.c:726,1
    - Dst: SetConsoleCtrlHandler
      Src: /src/postgres/src/bin/pg_dump/parallel.c:728,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 719
    functionDepth: 0
    functionLinenumber: 719
    functionLinenumberEnd: 730
    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:752,1
    - Dst: EnterCriticalSection
      Src: /src/postgres/src/bin/pg_dump/parallel.c:760,1
    - Dst: PQfreeCancel
      Src: /src/postgres/src/bin/pg_dump/parallel.c:769,1
    - Dst: PQgetCancel
      Src: /src/postgres/src/bin/pg_dump/parallel.c:773,1
    - Dst: GetCurrentThreadId
      Src: /src/postgres/src/bin/pg_dump/parallel.c:785,1
    - Dst: LeaveCriticalSection
      Src: /src/postgres/src/bin/pg_dump/parallel.c:790,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - AH
    - conn
    argTypes:
    - ArchiveHandle*
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 741
    functionDepth: 1
    functionLinenumber: 741
    functionLinenumberEnd: 792
    functionName: set_archive_cancel_info
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - EnterCriticalSection
    - GetCurrentThreadId
    - LeaveCriticalSection
    - PQgetCancel
    - set_cancel_handler
    - PQfreeCancel
    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:804,1
    - Dst: LeaveCriticalSection
      Src: /src/postgres/src/bin/pg_dump/parallel.c:810,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - ParallelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 800
    functionDepth: 0
    functionLinenumber: 800
    functionLinenumberEnd: 812
    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:824,1
    - Dst: LeaveCriticalSection
      Src: /src/postgres/src/bin/pg_dump/parallel.c:830,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - slot
    - AH
    argTypes:
    - ParallelSlot*
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 832
      start: 820
    functionDepth: 0
    functionLinenumber: 820
    functionLinenumberEnd: 832
    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:858,1
    - Dst: set_cancel_slot_archive
      Src: /src/postgres/src/bin/pg_dump/parallel.c:861,1
    - Dst: WaitForCommands
      Src: /src/postgres/src/bin/pg_dump/parallel.c:871,1
    - Dst: set_cancel_slot_archive
      Src: /src/postgres/src/bin/pg_dump/parallel.c:876,1
    - Dst: DisconnectDatabase
      Src: /src/postgres/src/bin/pg_dump/parallel.c:877,1
    - Dst: DeCloneArchive
      Src: /src/postgres/src/bin/pg_dump/parallel.c:878,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - AH
    - slot
    argTypes:
    - ArchiveHandle*
    - ParallelSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 879
      start: 840
    functionDepth: 1
    functionLinenumber: 840
    functionLinenumberEnd: 879
    functionName: RunWorker
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - DeCloneArchive
    - DisconnectDatabase
    - WaitForCommands
    - set_cancel_slot_archive
    - CloneArchive
    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:892,1
    - Dst: RunWorker
      Src: /src/postgres/src/bin/pg_dump/parallel.c:895,1
    - Dst: _endthreadex
      Src: /src/postgres/src/bin/pg_dump/parallel.c:898,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - wi
    argTypes:
    - WorkerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 885
    functionDepth: 2
    functionLinenumber: 885
    functionLinenumberEnd: 900
    functionName: init_spawned_worker_win32
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - RunWorker
    - free
    - _endthreadex
    linkageType: ''
    returnType: unsigned
    signature: unsigned init_spawned_worker_win32(WorkerInfo *wi)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:914,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/parallel.c:916,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_dump/parallel.c:927,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_dump/parallel.c:929,1
    - Dst: set_archive_cancel_info
      Src: /src/postgres/src/bin/pg_dump/parallel.c:951,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_dump/parallel.c:954,1
    - Dst: pgpipe
      Src: /src/postgres/src/bin/pg_dump/parallel.c:970,1
    - Dst: pgpipe
      Src: /src/postgres/src/bin/pg_dump/parallel.c:970,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:971,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/parallel.c:982,1
    - Dst: _beginthreadex
      Src: /src/postgres/src/bin/pg_dump/parallel.c:987,1
    - Dst: fork
      Src: /src/postgres/src/bin/pg_dump/parallel.c:992,1
    - Dst: getpid
      Src: /src/postgres/src/bin/pg_dump/parallel.c:999,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1005,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1007,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1015,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1016,1
    - Dst: RunWorker
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1020,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1023,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1028,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1036,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1038,1
    - Dst: pqsignal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1048,1
    - Dst: set_archive_cancel_info
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1054,1
    - Dst: set_cancel_pstate
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1062,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 52
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1065
      start: 908
    functionDepth: 2
    functionLinenumber: 908
    functionLinenumberEnd: 1065
    functionName: ParallelBackupStart
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - Assert
    - fflush
    - pgpipe
    - set_cancel_pstate
    - fork
    - pg_malloc
    - _beginthreadex
    - exit
    - getpid
    - pqsignal
    - pg_fatal
    - pg_malloc0
    - RunWorker
    - closesocket
    - set_archive_cancel_info
    linkageType: ''
    returnType: ParallelState
    signature: 'ParallelState *

      ParallelBackupStart(ArchiveHandle *AH)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1080,1
    - Dst: IsEveryWorkerIdle
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1080,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1085,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1086,1
    - Dst: WaitForTerminatingWorkers
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1090,1
    - Dst: set_cancel_pstate
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1097,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1100,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1101,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1102,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - AH
    - pstate
    argTypes:
    - ArchiveHandle*
    - ParallelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 1070
    functionDepth: 2
    functionLinenumber: 1070
    functionLinenumberEnd: 1103
    functionName: ParallelBackupEnd
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - Assert
    - IsEveryWorkerIdle
    - set_cancel_pstate
    - closesocket
    - free
    - WaitForTerminatingWorkers
    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:1124,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1126,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1128,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: 1129
      start: 1119
    functionDepth: 1
    functionLinenumber: 1119
    functionLinenumberEnd: 1129
    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:1141,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1144,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1145,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1145,1
    - Dst: getTocEntryByDumpId
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1146,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1147,1
    - Dst: messageStartsWith
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1149,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1152,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1153,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1153,1
    - Dst: getTocEntryByDumpId
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1154,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1155,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1158,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: 1160
      start: 1134
    functionDepth: 1
    functionLinenumber: 1134
    functionLinenumberEnd: 1160
    functionName: parseWorkerCommand
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - Assert
    - messageStartsWith
    - sscanf
    - pg_fatal
    - getTocEntryByDumpId
    - 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:1171,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: 1175
      start: 1167
    functionDepth: 0
    functionLinenumber: 1167
    functionLinenumberEnd: 1175
    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:1191,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1193,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1195,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1196,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1196,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - AH
    - te
    - msg
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1205
      start: 1182
    functionDepth: 1
    functionLinenumber: 1182
    functionLinenumberEnd: 1205
    functionName: parseWorkerResponse
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - Assert
    - messageStartsWith
    - sscanf
    - pg_fatal
    - 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:1228,1
    - Dst: WaitForWorkers
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1229,1
    - Dst: buildWorkerCommand
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1232,1
    - Dst: sendMessageToWorker
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1234,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: 1241
      start: 1216
    functionDepth: 2
    functionLinenumber: 1216
    functionLinenumberEnd: 1241
    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: 1258
      start: 1247
    functionDepth: 0
    functionLinenumber: 1247
    functionLinenumberEnd: 1258
    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:1270,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - ParallelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1274
      start: 1263
    functionDepth: 1
    functionLinenumber: 1263
    functionLinenumberEnd: 1274
    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: 1290
      start: 1279
    functionDepth: 0
    functionLinenumber: 1279
    functionLinenumberEnd: 1290
    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:1320,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1323,1
    - Dst: fmtQualifiedId
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1325,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1327,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1330,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1332,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1333,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1338,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1339,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1312
    functionDepth: 1
    functionLinenumber: 1312
    functionLinenumberEnd: 1340
    functionName: lockTableForWorker
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - fmtQualifiedId
    - PQexec
    - PQresultStatus
    - createPQExpBuffer
    - appendPQExpBuffer
    - pg_fatal
    - PQclear
    - strcmp
    - destroyPQExpBuffer
    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:1358,1
    - Dst: parseWorkerCommand
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1365,1
    - Dst: lockTableForWorker
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1370,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1381,1
    - Dst: buildWorkerResponse
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1384,1
    - Dst: sendMessageToLeader
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1386,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1389,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - AH
    - pipefd
    argTypes:
    - ArchiveHandle*
    - int[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1391
      start: 1347
    functionDepth: 2
    functionLinenumber: 1347
    functionLinenumberEnd: 1391
    functionName: WaitForCommands
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 1
    functionsReached:
    - Assert
    - getMessageFromLeader
    - lockTableForWorker
    - sendMessageToLeader
    - parseWorkerCommand
    - buildWorkerResponse
    - free
    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:1416,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1422,1
    - Dst: messageStartsWith
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1427,1
    - Dst: parseWorkerResponse
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1433,1
    - Dst: ParallelSlot*::callback
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1434,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1439,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1443,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - AH
    - pstate
    - do_wait
    argTypes:
    - ArchiveHandle*
    - ParallelState*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1446
      start: 1409
    functionDepth: 2
    functionLinenumber: 1409
    functionLinenumberEnd: 1446
    functionName: ListenToWorkers
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 0
    functionsReached:
    - getMessageFromWorker
    - messageStartsWith
    - parseWorkerResponse
    - pg_fatal
    - ParallelSlot*::callback
    - free
    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:1475,1
    - Dst: IsEveryWorkerIdle
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1475,1
    - Dst: ListenToWorkers
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1486,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1503,1
    - Dst: GetIdleWorker
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1506,1
    - Dst: IsEveryWorkerIdle
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1510,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 3
    argNames:
    - AH
    - pstate
    - mode
    argTypes:
    - ArchiveHandle*
    - ParallelState*
    - WFW_WaitOption
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1518
      start: 1462
    functionDepth: 3
    functionLinenumber: 1462
    functionLinenumberEnd: 1518
    functionName: WaitForWorkers
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 1
    functionsReached:
    - Assert
    - GetIdleWorker
    - IsEveryWorkerIdle
    - ListenToWorkers
    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:1530,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pipefd
    argTypes:
    - int[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1531
      start: 1527
    functionDepth: 1
    functionLinenumber: 1527
    functionLinenumberEnd: 1531
    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:1541,1
    - Dst: pipewrite
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1543,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1544,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - pipefd
    - str
    argTypes:
    - int[]
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1545
      start: 1538
    functionDepth: 1
    functionLinenumber: 1538
    functionLinenumberEnd: 1545
    functionName: sendMessageToLeader
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 1
    functionsReached:
    - pipewrite
    - pg_fatal
    - strlen
    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:1560,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1566,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 11
    argCount: 2
    argNames:
    - maxFd
    - workerset
    argTypes:
    - int
    - fd_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1573
      start: 1551
    functionDepth: 1
    functionLinenumber: 1551
    functionLinenumberEnd: 1573
    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:1599,1
    - Dst: WORKER_IS_RUNNING
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1602,1
    - Dst: FD_SET
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1604,1
    - Dst: select_loop
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1611,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1612,1
    - Dst: select
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1616,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1621,1
    - Dst: WORKER_IS_RUNNING
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1627,1
    - Dst: FD_ISSET
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1629,1
    - Dst: readMessageFromPipe
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1642,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1646,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 29
    argCount: 3
    argNames:
    - pstate
    - do_wait
    - worker
    argTypes:
    - ParallelState*
    - bool
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1648
      start: 1590
    functionDepth: 1
    functionLinenumber: 1590
    functionLinenumberEnd: 1648
    functionName: getMessageFromWorker
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 1
    functionsReached:
    - select_loop
    - Assert
    - FD_ISSET
    - readMessageFromPipe
    - WORKER_IS_RUNNING
    - select
    - pg_fatal
    - FD_SET
    - 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:1658,1
    - Dst: pipewrite
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1660,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1662,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - pstate
    - worker
    - str
    argTypes:
    - ParallelState*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1664
      start: 1655
    functionDepth: 1
    functionLinenumber: 1655
    functionLinenumberEnd: 1664
    functionName: sendMessageToWorker
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 1
    functionsReached:
    - pipewrite
    - pg_fatal
    - strlen
    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:1691,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1695,1
    - Dst: piperead
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1696,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1700,1
    - Dst: pg_realloc
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1709,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1714,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1716
      start: 1673
    functionDepth: 1
    functionLinenumber: 1673
    functionLinenumberEnd: 1716
    functionName: readMessageFromPipe
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 2
    functionsReached:
    - Assert
    - pg_malloc
    - pg_realloc
    - piperead
    - pg_free
    linkageType: ''
    returnType: char
    signature: 'char *

      readMessageFromPipe(int fd)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1744,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1746,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1747,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1751,1
    - Dst: pg_hton16
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1753,1
    - Dst: pg_hton32
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1754,1
    - Dst: bind
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1755,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1757,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1758,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1759,1
    - Dst: listen
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1762,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1764,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1765,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1766,1
    - Dst: getsockname
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1769,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1771,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1772,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1773,1
    - Dst: socket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1780,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1782,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1783,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1784,1
    - Dst: connect
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1789,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1791,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1792,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1793,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1795,1
    - Dst: accept
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1798,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1800,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1801,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1802,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1804,1
    - Dst: closesocket
      Src: /src/postgres/src/bin/pg_dump/parallel.c:1809,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 48
    argCount: 1
    argNames:
    - handles
    argTypes:
    - int[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1811
      start: 1730
    functionDepth: 1
    functionLinenumber: 1730
    functionLinenumberEnd: 1811
    functionName: pgpipe
    functionSourceFile: /src/postgres/src/bin/pg_dump/parallel.c
    functionUses: 1
    functionsReached:
    - bind
    - connect
    - accept
    - listen
    - memset
    - WSAGetLastError
    - pg_hton16
    - socket
    - pg_hton32
    - pg_log_error
    - closesocket
    - getsockname
    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:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cs
    - compression_spec
    argTypes:
    - CompressorState*
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 26
    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:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - CFH
    - compression_spec
    argTypes:
    - CompressFileHandle*
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 32
    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:64,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:65,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:66,1
    - Dst: ZSTD_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:67,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: 68
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 68
    functionName: _Zstd_CCtx_setParam_or_die
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - pg_fatal
    - ZSTD_isError
    - ZSTD_getErrorName
    - ZSTD_CCtx_setParameter
    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:76,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:78,1
    - Dst: _Zstd_CCtx_setParam_or_die
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:80,1
    - Dst: _Zstd_CCtx_setParam_or_die
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:84,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - compress
    argTypes:
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 89
    functionName: _ZstdCStreamParams
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - pg_fatal
    - _Zstd_CCtx_setParam_or_die
    - ZSTD_createCStream
    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:117,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 3
    argNames:
    - AH
    - cs
    - flush
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 122
    functionName: _ZstdWriteCommon
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - ZSTD_getErrorName
    - CompressorState*::writeF
    - ZSTD_isError
    - pg_fatal
    - ZSTD_compressStream2
    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:131,1
    - Dst: ZSTD_freeDStream
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:132,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:137,1
    - Dst: _ZstdWriteCommon
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:138,1
    - Dst: ZSTD_freeCStream
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:139,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:143,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:144,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - AH
    - cs
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 146
    functionName: EndCompressorZstd
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - ZSTD_freeDStream
    - _ZstdWriteCommon
    - Assert
    - ZSTD_freeCStream
    - pg_free
    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:158,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: 159
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 159
    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:167,1
    - Dst: CompressorState*::readF
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:179,1
    - Dst: unconstify
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:179,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:182,1
    - Dst: ZSTD_decompressStream
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:194,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:195,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:196,1
    - Dst: ZSTD_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:196,1
    - Dst: ahwrite
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:202,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - AH
    - cs
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 208
    functionName: ReadDataFromArchiveZstd
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - Assert
    - ZSTD_getErrorName
    - ZSTD_DStreamInSize
    - ZSTD_isError
    - ZSTD_decompressStream
    - CompressorState*::readF
    - unconstify
    - ahwrite
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void ReadDataFromArchiveZstd(ArchiveHandle *AH, CompressorState *cs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:223,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:227,1
    - Dst: ZSTD_createDStream
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:231,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:233,1
    - Dst: ZSTD_DStreamInSize
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:235,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:236,1
    - Dst: ZSTD_DStreamOutSize
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:244,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:245,1
    - Dst: _ZstdCStreamParams
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:249,1
    - Dst: ZSTD_CStreamOutSize
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:251,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:252,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - cs
    - compression_spec
    argTypes:
    - CompressorState*
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 211
    functionDepth: 2
    functionLinenumber: 211
    functionLinenumberEnd: 255
    functionName: InitCompressorZstd
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - Assert
    - ZSTD_DStreamOutSize
    - ZSTD_DStreamInSize
    - ZSTD_CStreamOutSize
    - pg_malloc
    - _ZstdCStreamParams
    - pg_fatal
    - pg_malloc0
    - ZSTD_createDStream
    linkageType: ''
    returnType: void
    signature: "void InitCompressorZstd(CompressorState *cs,\n\t\t\t\t   const pg_compress_specification
      compression_spec)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ZSTD_DStreamInSize
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:267,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:277,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:278,1
    - Dst: fread
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:294,1
    - Dst: unconstify
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:294,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:297,1
    - Dst: ZSTD_decompressStream
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:307,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:309,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:310,1
    - Dst: ZSTD_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:310,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 33
    argCount: 4
    argNames:
    - ptr
    - size
    - rdsize
    - CFH
    argTypes:
    - void*
    - size_t
    - size_t*
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 327
    functionName: Zstd_read
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - Assert
    - ZSTD_getErrorName
    - ZSTD_DStreamInSize
    - ZSTD_isError
    - fread
    - ZSTD_decompressStream
    - unconstify
    - pg_fatal
    linkageType: ''
    returnType: bool
    signature: bool Zstd_read(void *ptr, size_t size, size_t *rdsize, CompressFileHandle
      *CFH)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ZSTD_compressStream2
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:346,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:347,1
    - Dst: ZSTD_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:349,1
    - Dst: fwrite
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:353,1
    - Dst: strerror
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:356,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - ptr
    - size
    - CFH
    argTypes:
    - void*
    - size_t
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 362
    functionName: Zstd_write
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - ZSTD_getErrorName
    - ZSTD_isError
    - fwrite
    - strerror
    - ZSTD_compressStream2
    linkageType: ''
    returnType: bool
    signature: bool Zstd_write(const void *ptr, size_t size, CompressFileHandle *CFH)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CompressFileHandle*::read_func
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:370,1
    - Dst: feof
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:372,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:373,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:375,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 378
    functionName: Zstd_getc
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - pg_fatal
    - CompressFileHandle*::read_func
    - feof
    linkageType: ''
    returnType: int
    signature: int Zstd_getc(CompressFileHandle *CFH)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:385,1
    - Dst: CompressFileHandle*::read_func
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:395,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 3
    argNames:
    - buf
    - len
    - CFH
    argTypes:
    - char*
    - int
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 380
    functionDepth: 1
    functionLinenumber: 380
    functionLinenumberEnd: 407
    functionName: Zstd_gets
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - Assert
    - CompressFileHandle*::read_func
    linkageType: ''
    returnType: char
    signature: 'char *

      Zstd_gets(char *buf, int len, CompressFileHandle *CFH)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ZSTD_compressStream2
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:425,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:426,1
    - Dst: ZSTD_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:428,1
    - Dst: fwrite
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:432,1
    - Dst: strerror
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:435,1
    - Dst: ZSTD_freeCStream
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:443,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:444,1
    - Dst: ZSTD_freeDStream
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:449,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:453,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:456,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 409
    functionDepth: 1
    functionLinenumber: 409
    functionLinenumberEnd: 458
    functionName: Zstd_close
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - ZSTD_freeDStream
    - ZSTD_getErrorName
    - fclose
    - ZSTD_freeCStream
    - ZSTD_isError
    - fwrite
    - strerror
    - ZSTD_compressStream2
    - pg_free
    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:465,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 460
    functionDepth: 0
    functionLinenumber: 460
    functionLinenumberEnd: 466
    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: 7
    BranchProfiles: []
    Callsites:
    - Dst: fdopen
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:476,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:478,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:483,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:489,1
    - Dst: ZSTD_DStreamInSize
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:489,1
    - Dst: ZSTD_createDStream
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:490,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:492,1
    - Dst: ZSTD_CStreamOutSize
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:496,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:497,1
    - Dst: _ZstdCStreamParams
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:498,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:500,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:503,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 4
    argNames:
    - path
    - fd
    - mode
    - CFH
    argTypes:
    - char*
    - int
    - char*
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 468
    functionDepth: 2
    functionLinenumber: 468
    functionLinenumberEnd: 506
    functionName: Zstd_open
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - ZSTD_DStreamInSize
    - ZSTD_CStreamOutSize
    - _ZstdCStreamParams
    - fopen
    - pg_fatal
    - pg_malloc0
    - ZSTD_createDStream
    - fdopen
    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:513,1
    - Dst: CompressFileHandle*::open_func
      Src: /src/postgres/src/bin/pg_dump/compress_zstd.c:514,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - path
    - mode
    - CFH
    argTypes:
    - char*
    - char*
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 508
    functionDepth: 0
    functionLinenumber: 508
    functionLinenumberEnd: 515
    functionName: Zstd_open_write
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_zstd.c
    functionUses: 0
    functionsReached:
    - sprintf
    - CompressFileHandle*::open_func
    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: 523
      start: 517
    functionDepth: 0
    functionLinenumber: 517
    functionLinenumberEnd: 523
    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: 542
      start: 525
    functionDepth: 0
    functionLinenumber: 525
    functionLinenumberEnd: 542
    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
      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:
    - _getFilePos
    - ReadHead
    - fopen
    - pg_fatal
    - pg_malloc0
    - ReadToc
    - strcmp
    - checkSeek
    linkageType: ''
    returnType: void
    signature: void InitArchiveFmt_Custom(ArchiveHandle *AH)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0
      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
    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
      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:
    - ReadOffset
    - pg_malloc0
    - 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
    - WriteInt
    - _WriteByte
    - _getFilePos
    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:
    - WriteInt
    - EndCompressor
    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:
    - WriteInt
    - _WriteByte
    - _getFilePos
    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:
    - WriteInt
    - EndCompressor
    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:
    - _readBlockHeader
    - fseeko
    - _skipData
    - pg_log_warning
    - _skipLOs
    - _getFilePos
    - _PrintData
    - pg_fatal
    - getTocEntryByDumpId
    - _LoadLOs
    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:
    - EndCompressor
    - CompressorState*::readData
    - 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:
    - EndRestoreLOs
    - ReadInt
    - _PrintData
    - EndRestoreLO
    - StartRestoreLO
    - StartRestoreLOs
    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:634,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:635,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:641,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:642,1
    - Dst: fread
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:645,1
    - Dst: feof
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:647,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:648,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:650,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:654,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:657,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 621
    functionDepth: 1
    functionLinenumber: 621
    functionLinenumberEnd: 658
    functionName: _skipData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 2
    functionsReached:
    - fseeko
    - feof
    - fread
    - ReadInt
    - pg_malloc
    - pg_fatal
    - free
    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:670,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - AH
    - i
    argTypes:
    - ArchiveHandle*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 667
    functionDepth: 0
    functionLinenumber: 667
    functionLinenumberEnd: 674
    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:689,1
    - Dst: READ_ERROR_EXIT
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:691,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 693
      start: 684
    functionDepth: 1
    functionLinenumber: 684
    functionLinenumberEnd: 693
    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:705,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - AH
    - buf
    - len
    argTypes:
    - ArchiveHandle*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 702
    functionDepth: 0
    functionLinenumber: 702
    functionLinenumberEnd: 707
    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:719,1
    - Dst: READ_ERROR_EXIT
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:720,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - AH
    - buf
    - len
    argTypes:
    - ArchiveHandle*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 716
    functionDepth: 1
    functionLinenumber: 716
    functionLinenumberEnd: 721
    functionName: _ReadBuf
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - READ_ERROR_EXIT
    - fread
    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:746,1
    - Dst: ftello
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:748,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:750,1
    - Dst: WriteToc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:751,1
    - Dst: WriteDataChunks
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:752,1
    - Dst: fseeko
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:763,1
    - Dst: WriteToc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:764,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:767,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:768,1
    - Dst: fsync_fname
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:772,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 16
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 738
    functionDepth: 1
    functionLinenumber: 738
    functionLinenumberEnd: 775
    functionName: _CloseArchive
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - ftello
    - fseeko
    - fclose
    - WriteToc
    - pg_fatal
    - WriteHead
    - fsync_fname
    - WriteDataChunks
    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:791,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:797,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:798,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:800,1
    - Dst: ftello
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:802,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:804,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:807,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:808,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:811,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:813,1
    - Dst: fseeko
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:815,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:816,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 817
      start: 784
    functionDepth: 1
    functionLinenumber: 784
    functionLinenumberEnd: 817
    functionName: _ReopenArchive
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - ftello
    - fseeko
    - fclose
    - fopen
    - pg_fatal
    - strcmp
    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:870,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:871,1
    - Dst: ftello
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:872,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 829
    functionDepth: 1
    functionLinenumber: 829
    functionLinenumberEnd: 876
    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
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:889,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:890,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:895,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 881
    functionDepth: 1
    functionLinenumber: 881
    functionLinenumberEnd: 903
    functionName: _Clone
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - pg_malloc
    - 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:910,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 905
    functionDepth: 1
    functionLinenumber: 905
    functionLinenumberEnd: 911
    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:920,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 917
    functionDepth: 1
    functionLinenumber: 917
    functionLinenumberEnd: 921
    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:941,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:946,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - AH
    - ctx
    argTypes:
    - ArchiveHandle*
    - lclContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 936
    functionDepth: 1
    functionLinenumber: 936
    functionLinenumberEnd: 949
    functionName: _getFilePos
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 4
    functionsReached:
    - ftello
    - pg_fatal
    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:972,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:981,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - AH
    - type
    - id
    argTypes:
    - ArchiveHandle*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 956
    functionDepth: 1
    functionLinenumber: 956
    functionLinenumberEnd: 982
    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:994,1
    - Dst: _WriteBuf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:995,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - AH
    - buf
    - len
    argTypes:
    - ArchiveHandle*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 988
    functionDepth: 1
    functionLinenumber: 988
    functionLinenumberEnd: 997
    functionName: _CustomWriteFunc
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - WriteInt
    - _WriteBuf
    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:1009,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:1016,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:1017,1
    - Dst: _ReadBuf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_custom.c:1022,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - AH
    - buf
    - buflen
    argTypes:
    - ArchiveHandle*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1025
      start: 1003
    functionDepth: 1
    functionLinenumber: 1003
    functionLinenumberEnd: 1025
    functionName: _CustomReadFunc
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_custom.c
    functionUses: 0
    functionsReached:
    - pg_malloc
    - _ReadBuf
    - 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: 82
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:182,1
    - Dst: pg_logging_set_level
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:183,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:184,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:184,1
    - Dst: init_parallel_dump_utils
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:186,1
    - Dst: NewRestoreOptions
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:188,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:190,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:194,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:194,1
    - Dst: usage
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:196,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:197,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:199,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:199,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:201,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:202,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:206,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:221,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:227,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:230,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:231,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:238,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:239,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:242,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:245,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:253,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:257,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:261,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:269,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:270,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:278,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:283,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:288,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:294,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:295,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:300,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:304,1
    - Dst: pg_logging_increase_verbosity
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:309,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:337,1
    - Dst: set_dump_section
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:341,1
    - Dst: read_restore_filters
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:345,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:349,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:352,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:356,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:361,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:362,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:375,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:377,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:378,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:383,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:387,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:388,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:389,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:397,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:398,1
    - Dst: exit_nicely
      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:406,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:408,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:410,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:414,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:418,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:422,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:424,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:426,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:429,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:432,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:439,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:443,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:472,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:478,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:479,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:481,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:482,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:484,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:485,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:487,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:488,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:491,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:495,1
    - Dst: file_exists_in_directory
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:505,1
    - Dst: file_exists_in_directory
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:506,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:516,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:518,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:526,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:527,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:528,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:529,1
    - Dst: ConnectDatabase
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:538,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:544,1
    - Dst: process_global_sql_commands
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:554,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:558,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:560,1
    - Dst: restore_all_databases
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:565,1
    - Dst: simple_string_list_destroy
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:570,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:575,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:578,1
    - Dst: restore_one_database
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:580,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:586,1
    CyclomaticComplexity: 123
    EdgeCount: 123
    ICount: 260
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 591
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_restore.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - NewRestoreOptions
    - pg_logging_increase_verbosity
    - restore_all_databases
    - pg_log_warning
    - set_pglocale_pgservice
    - restore_one_database
    - pg_logging_set_level
    - exit
    - file_exists_in_directory
    - strlen
    - read_restore_filters
    - simple_string_list_destroy
    - puts
    - pg_logging_init
    - process_global_sql_commands
    - pg_log_info
    - strcmp
    - pg_log_error
    - PQfinish
    - ConnectDatabase
    - pg_log_error_hint
    - option_parse_int
    - usage
    - pg_fatal
    - pg_strcasecmp
    - get_progname
    - getopt_long
    - init_parallel_dump_utils
    - pg_strdup
    - simple_string_list_append
    - exit_nicely
    - set_dump_section
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: OpenArchive
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:607,1
    - Dst: SetArchiveOptions
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:609,1
    - Dst: on_exit_close_archive
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:620,1
    - Dst: replace_on_exit_close_archive
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:622,1
    - Dst: SortTocFromFile
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:633,1
    - Dst: PrintTOCSummary
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:638,1
    - Dst: ProcessArchiveRestoreOptions
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:641,1
    - Dst: RestoreArchive
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:642,1
    - Dst: CloseArchive
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:648,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 5
    argNames:
    - inputFileSpec
    - opts
    - numWorkers
    - append_data
    - num
    argTypes:
    - char*
    - RestoreOptions*
    - int
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 600
    functionDepth: 2
    functionLinenumber: 600
    functionLinenumberEnd: 651
    functionName: restore_one_database
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_restore.c
    functionUses: 1
    functionsReached:
    - RestoreArchive
    - CloseArchive
    - ProcessArchiveRestoreOptions
    - OpenArchive
    - SetArchiveOptions
    - PrintTOCSummary
    - SortTocFromFile
    - replace_on_exit_close_archive
    - on_exit_close_archive
    linkageType: ''
    returnType: int
    signature: "int restore_one_database(const char *inputFileSpec, RestoreOptions
      *opts,\n\t\t\t\t\t int numWorkers, bool append_data, int num)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:656,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:656,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:657,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:657,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:658,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:658,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:660,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:660,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:661,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:661,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:662,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:662,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:663,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:663,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:664,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:664,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:665,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:665,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:666,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:666,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:667,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:667,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:669,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:669,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:670,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:670,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:671,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:671,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:672,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:672,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:673,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:673,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:674,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:674,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:675,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:675,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:676,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:676,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:677,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:677,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:679,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:679,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:680,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:680,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:681,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:681,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:682,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:682,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:683,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:683,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:684,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:684,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:685,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:685,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:686,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:686,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:687,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:687,1
    - Dst: printf
      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: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:689,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:689,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:690,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:690,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:691,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:691,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:692,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:692,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:694,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:694,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:695,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:695,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:696,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:696,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:697,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:697,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:699,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:699,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:700,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:700,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:701,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:701,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:702,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:702,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:703,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:703,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:704,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:704,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:705,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:705,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:706,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:706,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:707,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:707,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:708,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:708,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:709,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:709,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:711,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:711,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:712,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:712,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:715,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:715,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:716,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:716,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:717,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:717,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:719,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:719,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:720,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:720,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:721,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:721,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:722,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:722,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:723,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:723,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:724,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:724,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:725,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:725,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:727,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:727,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:730,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:730,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:731,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:731,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:732,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:732,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 66
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 653
    functionDepth: 0
    functionLinenumber: 653
    functionLinenumberEnd: 733
    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:750,1
    - Dst: filter_read_item
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:752,1
    - Dst: pg_log_filter_error
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:766,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:766,1
    - Dst: filter_object_type_name
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:768,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:769,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:774,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:779,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:782,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:787,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:792,1
    - Dst: pg_log_filter_error
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:812,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:812,1
    - Dst: filter_object_type_name
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:814,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:815,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:818,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:824,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:825,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:829,1
    - Dst: filter_free
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:832,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 68
    argCount: 2
    argNames:
    - filename
    - opts
    argTypes:
    - char*
    - RestoreOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 742
    functionDepth: 1
    functionLinenumber: 742
    functionLinenumberEnd: 833
    functionName: read_restore_filters
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_restore.c
    functionUses: 1
    functionsReached:
    - filter_read_item
    - Assert
    - pg_log_filter_error
    - simple_string_list_append
    - filter_init
    - _
    - filter_object_type_name
    - filter_free
    - exit_nicely
    - free
    linkageType: ''
    returnType: void
    signature: void read_restore_filters(const char *filename, RestoreOptions *opts)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:846,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:847,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:849,1
    - Dst: S_ISREG
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:849,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - dir
    - filename
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 850
      start: 840
    functionDepth: 1
    functionLinenumber: 840
    functionLinenumberEnd: 850
    functionName: file_exists_in_directory
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_restore.c
    functionUses: 1
    functionsReached:
    - stat
    - snprintf
    - pg_fatal
    - S_ISREG
    linkageType: ''
    returnType: bool
    signature: bool file_exists_in_directory(const char *dir, const char *filename)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:869,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:871,1
    - Dst: fgetc
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:876,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:880,1
    - Dst: fgetc
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:881,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:884,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:892,1
    - Dst: fgetc
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:895,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:897,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:901,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:902,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:910,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:915,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:918,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 35
    argCount: 2
    argNames:
    - inBuf
    - pfile
    argTypes:
    - StringInfo
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 861
    functionDepth: 1
    functionLinenumber: 861
    functionLinenumberEnd: 926
    functionName: read_one_statement
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_restore.c
    functionUses: 0
    functionsReached:
    - resetStringInfo
    - appendStringInfoChar
    - appendStringInfoString
    - fgetc
    - initStringInfo
    - pg_free
    linkageType: ''
    returnType: int
    signature: int read_one_statement(StringInfo inBuf, FILE *pfile)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:946,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:949,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:960,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:962,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:970,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:977,1
    - Dst: processSQLNamePattern
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:978,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:984,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:986,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:987,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:990,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:992,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:992,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:995,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:998,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:999,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1006,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1014,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1023,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 3
    argNames:
    - conn
    - dbname_oid_list
    - db_exclude_patterns
    argTypes:
    - PGconn*
    - SimplePtrList*
    - SimpleStringList
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 937
    functionDepth: 1
    functionLinenumber: 937
    functionLinenumberEnd: 1026
    functionName: get_dbnames_list_to_restore
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_restore.c
    functionUses: 0
    functionsReached:
    - PQntuples
    - processSQLNamePattern
    - PQresultStatus
    - createPQExpBuffer
    - PQfinish
    - destroyPQExpBuffer
    - appendPQExpBufferStr
    - appendStringLiteralConn
    - pg_log_error
    - executeQuery
    - exit_nicely
    - resetPQExpBuffer
    - pg_log_info
    - PQclear
    - pg_strcasecmp
    linkageType: ''
    returnType: int
    signature: "int get_dbnames_list_to_restore(PGconn *conn,\n\t\t\t\t\t\t\tSimplePtrList
      *dbname_oid_list,\n\t\t\t\t\t\t\tSimpleStringList db_exclude_patterns)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: file_exists_in_directory
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1049,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1051,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1055,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1058,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1061,1
    - Dst: initStringInfo
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1063,1
    - Dst: pg_get_line_buf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1066,1
    - Dst: isdigit
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1075,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1079,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1085,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1088,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1089,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1092,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1095,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1097,1
    - Dst: simple_ptr_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1099,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1104,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 2
    argNames:
    - dumpdirpath
    - dbname_oid_list
    argTypes:
    - char*
    - SimplePtrList*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1036
    functionDepth: 2
    functionLinenumber: 1036
    functionLinenumberEnd: 1107
    functionName: get_dbname_oid_list_from_mfile
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_restore.c
    functionUses: 0
    functionsReached:
    - simple_ptr_list_append
    - fclose
    - isdigit
    - snprintf
    - sscanf
    - pg_malloc
    - fopen
    - pg_get_line_buf
    - pg_fatal
    - OidIsValid
    - pg_log_info
    - strlcpy
    - initStringInfo
    - strlen
    - file_exists_in_directory
    linkageType: ''
    returnType: int
    signature: int get_dbname_oid_list_from_mfile(const char *dumpdirpath, SimplePtrList
      *dbname_oid_list)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: get_dbname_oid_list_from_mfile
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1139,1
    - Dst: process_global_sql_commands
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1143,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1145,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1145,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1152,1
    - Dst: ConnectDatabase
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1154,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1161,1
    - Dst: ConnectDatabase
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1163,1
    - Dst: get_dbnames_list_to_restore
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1172,1
    - Dst: process_global_sql_commands
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1176,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1180,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1185,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1185,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1191,1
    - Dst: pfree
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1216,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1220,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1227,1
    - Dst: file_exists_in_directory
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1228,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1229,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1232,1
    - Dst: file_exists_in_directory
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1234,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1235,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1237,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1240,1
    - Dst: ConnectDatabase
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1247,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1252,1
    - Dst: restore_one_database
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1275,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1281,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1288,1
    - Dst: simple_ptr_list_destroy
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1291,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 65
    argCount: 5
    argNames:
    - conn
    - dumpdirpath
    - db_exclude_patterns
    - opts
    - numWorkers
    argTypes:
    - PGconn*
    - char*
    - SimpleStringList
    - RestoreOptions*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1294
      start: 1120
    functionDepth: 3
    functionLinenumber: 1120
    functionLinenumberEnd: 1294
    functionName: restore_all_databases
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_restore.c
    functionUses: 1
    functionsReached:
    - pfree
    - simple_ptr_list_destroy
    - PQfinish
    - get_dbnames_list_to_restore
    - ConnectDatabase
    - snprintf
    - pg_log_warning
    - process_global_sql_commands
    - restore_one_database
    - get_dbname_oid_list_from_mfile
    - pg_log_info
    - ngettext
    - file_exists_in_directory
    linkageType: ''
    returnType: int
    signature: "int restore_all_databases(PGconn *conn, const char *dumpdirpath,\n\t\t\t\t\t
      \ SimpleStringList db_exclude_patterns, RestoreOptions *opts,\n\t\t\t\t\t  int
      numWorkers)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1316,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1319,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1322,1
    - Dst: copy_or_print_global_file
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1330,1
    - Dst: initStringInfo
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1335,1
    - Dst: initStringInfo
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1338,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1339,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1341,1
    - Dst: PQuser
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1341,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1342,1
    - Dst: read_one_statement
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1345,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1348,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1351,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1352,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1354,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1362,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1362,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1363,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1365,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1370,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1370,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1373,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 3
    argNames:
    - conn
    - dumpdirpath
    - outfile
    argTypes:
    - PGconn*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1376
      start: 1306
    functionDepth: 2
    functionLinenumber: 1306
    functionLinenumberEnd: 1376
    functionName: process_global_sql_commands
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_restore.c
    functionUses: 2
    functionsReached:
    - strstr
    - PQresultStatus
    - snprintf
    - pg_log_warning
    - copy_or_print_global_file
    - read_one_statement
    - fopen
    - PQuser
    - pg_log_error_detail
    - pg_log_info
    - PQclear
    - pg_log_error
    - PQexec
    - PQerrorMessage
    - fclose
    - appendStringInfoString
    - pg_fatal
    - appendStringInfoChar
    - initStringInfo
    - ngettext
    linkageType: ''
    returnType: int
    signature: int process_global_sql_commands(PGconn *conn, const char *dumpdirpath,
      const char *outfile)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1392,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1396,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1397,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1401,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1402,1
    - Dst: fgetc
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1407,1
    - Dst: fputc
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1408,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1410,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1413,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/pg_restore.c:1414,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - outfile
    - pfile
    argTypes:
    - char*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1415
      start: 1384
    functionDepth: 1
    functionLinenumber: 1384
    functionLinenumberEnd: 1415
    functionName: copy_or_print_global_file
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_restore.c
    functionUses: 1
    functionsReached:
    - fclose
    - snprintf
    - fputc
    - fopen
    - fgetc
    - pg_fatal
    - strcmp
    linkageType: ''
    returnType: void
    signature: void copy_or_print_global_file(const char *outfile, FILE *pfile)
  - 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/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: 71
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 71
    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: 73
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 73
    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:111,1
    - Dst: getExtensions
      Src: /src/postgres/src/bin/pg_dump/common.c:112,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:114,1
    - Dst: getExtensionMembership
      Src: /src/postgres/src/bin/pg_dump/common.c:115,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:117,1
    - Dst: getNamespaces
      Src: /src/postgres/src/bin/pg_dump/common.c:118,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:126,1
    - Dst: getTables
      Src: /src/postgres/src/bin/pg_dump/common.c:127,1
    - Dst: getOwnedSeqs
      Src: /src/postgres/src/bin/pg_dump/common.c:129,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:131,1
    - Dst: getFuncs
      Src: /src/postgres/src/bin/pg_dump/common.c:132,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:135,1
    - Dst: getTypes
      Src: /src/postgres/src/bin/pg_dump/common.c:136,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:139,1
    - Dst: getProcLangs
      Src: /src/postgres/src/bin/pg_dump/common.c:140,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:142,1
    - Dst: getAggregates
      Src: /src/postgres/src/bin/pg_dump/common.c:143,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:145,1
    - Dst: getOperators
      Src: /src/postgres/src/bin/pg_dump/common.c:146,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:148,1
    - Dst: getAccessMethods
      Src: /src/postgres/src/bin/pg_dump/common.c:149,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:151,1
    - Dst: getOpclasses
      Src: /src/postgres/src/bin/pg_dump/common.c:152,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:154,1
    - Dst: getOpfamilies
      Src: /src/postgres/src/bin/pg_dump/common.c:155,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:157,1
    - Dst: getTSParsers
      Src: /src/postgres/src/bin/pg_dump/common.c:158,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:160,1
    - Dst: getTSTemplates
      Src: /src/postgres/src/bin/pg_dump/common.c:161,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:163,1
    - Dst: getTSDictionaries
      Src: /src/postgres/src/bin/pg_dump/common.c:164,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:166,1
    - Dst: getTSConfigurations
      Src: /src/postgres/src/bin/pg_dump/common.c:167,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:169,1
    - Dst: getForeignDataWrappers
      Src: /src/postgres/src/bin/pg_dump/common.c:170,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:172,1
    - Dst: getForeignServers
      Src: /src/postgres/src/bin/pg_dump/common.c:173,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:175,1
    - Dst: getDefaultACLs
      Src: /src/postgres/src/bin/pg_dump/common.c:176,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:178,1
    - Dst: getCollations
      Src: /src/postgres/src/bin/pg_dump/common.c:179,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:181,1
    - Dst: getConversions
      Src: /src/postgres/src/bin/pg_dump/common.c:182,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:184,1
    - Dst: getCasts
      Src: /src/postgres/src/bin/pg_dump/common.c:185,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:187,1
    - Dst: getTransforms
      Src: /src/postgres/src/bin/pg_dump/common.c:188,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:190,1
    - Dst: getInherits
      Src: /src/postgres/src/bin/pg_dump/common.c:191,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:193,1
    - Dst: getEventTriggers
      Src: /src/postgres/src/bin/pg_dump/common.c:194,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:197,1
    - Dst: processExtensionTables
      Src: /src/postgres/src/bin/pg_dump/common.c:198,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:201,1
    - Dst: flagInhTables
      Src: /src/postgres/src/bin/pg_dump/common.c:202,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:204,1
    - Dst: getTableAttrs
      Src: /src/postgres/src/bin/pg_dump/common.c:205,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:207,1
    - Dst: flagInhAttrs
      Src: /src/postgres/src/bin/pg_dump/common.c:208,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:210,1
    - Dst: getPartitioningInfo
      Src: /src/postgres/src/bin/pg_dump/common.c:211,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:213,1
    - Dst: getIndexes
      Src: /src/postgres/src/bin/pg_dump/common.c:214,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:216,1
    - Dst: flagInhIndexes
      Src: /src/postgres/src/bin/pg_dump/common.c:217,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:219,1
    - Dst: getExtendedStatistics
      Src: /src/postgres/src/bin/pg_dump/common.c:220,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:222,1
    - Dst: getConstraints
      Src: /src/postgres/src/bin/pg_dump/common.c:223,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:225,1
    - Dst: getTriggers
      Src: /src/postgres/src/bin/pg_dump/common.c:226,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:228,1
    - Dst: getRules
      Src: /src/postgres/src/bin/pg_dump/common.c:229,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:231,1
    - Dst: getPolicies
      Src: /src/postgres/src/bin/pg_dump/common.c:232,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:234,1
    - Dst: getPublications
      Src: /src/postgres/src/bin/pg_dump/common.c:235,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:237,1
    - Dst: getPublicationTables
      Src: /src/postgres/src/bin/pg_dump/common.c:238,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:240,1
    - Dst: getPublicationNamespaces
      Src: /src/postgres/src/bin/pg_dump/common.c:241,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:243,1
    - Dst: getSubscriptions
      Src: /src/postgres/src/bin/pg_dump/common.c:244,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/common.c:246,1
    - Dst: getSubscriptionTables
      Src: /src/postgres/src/bin/pg_dump/common.c:247,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/common.c:249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 89
    argCount: 2
    argNames:
    - fout
    - numTablesPtr
    argTypes:
    - Archive*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 253
    functionName: getSchemaData
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 0
    functionsReached:
    - getConstraints
    - getOpfamilies
    - getPartitioningInfo
    - getTriggers
    - flagInhTables
    - getPublications
    - getAggregates
    - flagInhIndexes
    - getTSConfigurations
    - getOpclasses
    - getTableAttrs
    - getPublicationNamespaces
    - getCasts
    - getInherits
    - flagInhAttrs
    - getOperators
    - getTypes
    - pg_log_info
    - getTSTemplates
    - getPolicies
    - getForeignServers
    - getIndexes
    - getSubscriptionTables
    - getEventTriggers
    - getExtensions
    - getAccessMethods
    - getOwnedSeqs
    - getForeignDataWrappers
    - getFuncs
    - getTransforms
    - getPublicationTables
    - getDefaultACLs
    - processExtensionTables
    - getNamespaces
    - getSubscriptions
    - getConversions
    - getTSParsers
    - getProcLangs
    - getTables
    - getTSDictionaries
    - getExtendedStatistics
    - getCollations
    - getRules
    - getExtensionMembership
    - free
    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:295,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/common.c:307,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/common.c:309,1
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/pg_dump/common.c:316,1
    - Dst: pg_malloc_array
      Src: /src/postgres/src/bin/pg_dump/common.c:320,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/common.c:351,1
    - Dst: palloc
      Src: /src/postgres/src/bin/pg_dump/common.c:355,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/common.c:359,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/common.c:360,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/common.c:374,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/common.c:375,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: 378
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 378
    functionName: flagInhTables
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 1
    functionsReached:
    - pg_malloc_array
    - AssignDumpId
    - pg_strdup
    - pg_fatal
    - palloc
    - pg_realloc_array
    - addObjectDependency
    - findTableByOid
    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:396,1
    - Dst: findIndexByOid
      Src: /src/postgres/src/bin/pg_dump/common.c:407,1
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_dump/common.c:411,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/common.c:416,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/common.c:417,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/common.c:437,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/common.c:438,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:441,1
    - Dst: simple_ptr_list_append
      Src: /src/postgres/src/bin/pg_dump/common.c:445,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 3
    argNames:
    - fout
    - tblinfo
    - numTables
    argTypes:
    - Archive*
    - TableInfo[]
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 385
    functionDepth: 1
    functionLinenumber: 385
    functionLinenumberEnd: 448
    functionName: flagInhIndexes
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 1
    functionsReached:
    - Assert
    - simple_ptr_list_append
    - findIndexByOid
    - AssignDumpId
    - pg_strdup
    - pg_malloc_object
    - addObjectDependency
    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:535,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/common.c:564,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/common.c:571,1
    - Dst: pg_malloc_object
      Src: /src/postgres/src/bin/pg_dump/common.c:608,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/common.c:612,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/common.c:613,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/common.c:619,1
    - Dst: shouldPrintColumn
      Src: /src/postgres/src/bin/pg_dump/common.c:622,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/common.c:632,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 60
    argCount: 4
    argNames:
    - fout
    - dopt
    - tblinfo
    - numTables
    argTypes:
    - Archive*
    - DumpOptions*
    - TableInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 476
    functionDepth: 1
    functionLinenumber: 476
    functionLinenumberEnd: 645
    functionName: flagInhAttrs
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 1
    functionsReached:
    - shouldPrintColumn
    - pg_strdup
    - AssignDumpId
    - strInArray
    - strcmp
    - pg_malloc_object
    - addObjectDependency
    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:679,1
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/pg_dump/common.c:684,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_dump/common.c:686,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/common.c:693,1
    - Dst: catalogid_create
      Src: /src/postgres/src/bin/pg_dump/common.c:700,1
    - Dst: catalogid_insert
      Src: /src/postgres/src/bin/pg_dump/common.c:702,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/common.c:708,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 35
    argCount: 1
    argNames:
    - dobj
    argTypes:
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 655
    functionDepth: 1
    functionLinenumber: 655
    functionLinenumberEnd: 711
    functionName: AssignDumpId
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 3
    functionsReached:
    - Assert
    - pg_malloc_array
    - memset
    - OidIsValid
    - catalogid_create
    - pg_realloc_array
    - catalogid_insert
    linkageType: ''
    returnType: void
    signature: void AssignDumpId(DumpableObject *dobj)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/common.c:724,1
    - Dst: catalogid_insert
      Src: /src/postgres/src/bin/pg_dump/common.c:727,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/common.c:733,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - catId
    - dobj
    argTypes:
    - CatalogId
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 717
    functionDepth: 1
    functionLinenumber: 717
    functionLinenumberEnd: 735
    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: 747
      start: 743
    functionDepth: 0
    functionLinenumber: 743
    functionLinenumberEnd: 747
    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: 756
      start: 752
    functionDepth: 0
    functionLinenumber: 752
    functionLinenumberEnd: 756
    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: 769
      start: 763
    functionDepth: 0
    functionLinenumber: 763
    functionLinenumberEnd: 769
    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:784,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - catalogId
    argTypes:
    - CatalogId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 776
    functionDepth: 0
    functionLinenumber: 776
    functionLinenumberEnd: 788
    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:801,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - objs
    - numObjs
    argTypes:
    - DumpableObject***
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 795
    functionDepth: 1
    functionLinenumber: 795
    functionLinenumberEnd: 809
    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:824,1
    - Dst: pg_realloc_array
      Src: /src/postgres/src/bin/pg_dump/common.c:829,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - dobj
    - refId
    argTypes:
    - DumpableObject*
    - DumpId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 834
      start: 816
    functionDepth: 1
    functionLinenumber: 816
    functionLinenumberEnd: 834
    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: 853
      start: 841
    functionDepth: 0
    functionLinenumber: 841
    functionLinenumberEnd: 853
    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:869,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/common.c:870,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - oid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 861
    functionDepth: 1
    functionLinenumber: 861
    functionLinenumberEnd: 872
    functionName: findTableByOid
    functionSourceFile: /src/postgres/src/bin/pg_dump/common.c
    functionUses: 1
    functionsReached:
    - Assert
    - findObjectByCatalogId
    linkageType: ''
    returnType: TableInfo
    signature: 'TableInfo *

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

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

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

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

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

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

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

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

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

      findSubscriptionByOid(Oid oid)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/common.c:1050,1
    - Dst: catalogid_insert
      Src: /src/postgres/src/bin/pg_dump/common.c:1053,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/common.c:1059,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - catId
    - ext
    argTypes:
    - CatalogId
    - ExtensionInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 1043
    functionDepth: 1
    functionLinenumber: 1043
    functionLinenumberEnd: 1061
    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:1075,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - catalogId
    argTypes:
    - CatalogId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1079
      start: 1067
    functionDepth: 0
    functionLinenumber: 1067
    functionLinenumberEnd: 1079
    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:1109,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/common.c:1111,1
    - Dst: isdigit
      Src: /src/postgres/src/bin/pg_dump/common.c:1119,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/common.c:1121,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 3
    argNames:
    - str
    - array
    - arraysize
    argTypes:
    - char*
    - Oid*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1128
      start: 1091
    functionDepth: 1
    functionLinenumber: 1091
    functionLinenumberEnd: 1128
    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:1145,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - pattern
    - arr
    - arr_size
    argTypes:
    - char*
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1149
      start: 1138
    functionDepth: 0
    functionLinenumber: 1138
    functionLinenumberEnd: 1149
    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:
    - _
    - get_compress_algorithm_name
    - psprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      supports_compression(const pg_compress_specification compression_spec)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0
      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:
    - InitCompressorLZ4
    - InitCompressorGzip
    - InitCompressorZstd
    - pg_malloc0
    - InitCompressorNone
    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:
    - CompressorState*::end
    - pg_free
    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
      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:
    - InitCompressFileHandleNone
    - InitCompressFileHandleZstd
    - InitCompressFileHandleGzip
    - pg_malloc0
    - InitCompressFileHandleLZ4
    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
    - access
    - psprintf
    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:272,1
    - Dst: free_keep_errno
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:274,1
    - Dst: free_keep_errno
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:277,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - path
    - mode
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 239
    functionDepth: 3
    functionLinenumber: 239
    functionLinenumberEnd: 280
    functionName: InitDiscoverCompressFileHandle
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_io.c
    functionUses: 0
    functionsReached:
    - hasSuffix
    - Assert
    - free_keep_errno
    - stat
    - pg_strdup
    - InitCompressFileHandle
    - strcmp
    - check_compressed_file
    - CompressFileHandle*::open_func
    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:293,1
    - Dst: free_keep_errno
      Src: /src/postgres/src/bin/pg_dump/compress_io.c:295,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 287
    functionDepth: 2
    functionLinenumber: 287
    functionLinenumberEnd: 298
    functionName: EndCompressFileHandle
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_io.c
    functionUses: 0
    functionsReached:
    - CompressFileHandle*::close_func
    - free_keep_errno
    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: 234
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 234
    functionName: fmtQualifiedDumpable
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: fmtQualifiedDumpable(obj)
  - BBCount: 104
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:539,1
    - Dst: pg_logging_set_level
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:540,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:541,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:541,1
    - Dst: init_parallel_dump_utils
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:547,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:549,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:553,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:553,1
    - Dst: help
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:555,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:556,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:558,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:558,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:560,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:561,1
    - Dst: InitDumpOptions
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:565,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:567,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:593,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:597,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:602,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:606,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:610,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:614,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:618,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:621,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:625,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:630,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:638,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:650,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:654,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:659,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:663,1
    - Dst: pg_logging_increase_verbosity
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:668,1
    - Dst: parse_compress_options
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:684,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:694,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:698,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:702,1
    - Dst: set_dump_section
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:706,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:710,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:719,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:721,1
    - Dst: option_parse_int
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:735,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:737,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:741,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:746,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:752,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:757,1
    - Dst: parse_sync_method
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:762,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:763,1
    - Dst: read_dump_filters
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:767,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:771,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:805,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:806,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:820,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:822,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:823,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:832,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:834,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:836,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:840,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:842,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:844,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:848,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:850,1
    - Dst: pg_fatal
      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:855,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:858,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:861,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:886,1
    - Dst: parseArchiveFormat
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:889,1
    - Dst: parse_compress_algorithm
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:913,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:915,1
    - Dst: parse_compress_specification
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:918,1
    - Dst: validate_compress_specification
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:920,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:922,1
    - Dst: supports_compression
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:925,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:927,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:935,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:947,1
    - Dst: CreateArchive
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:950,1
    - Dst: SetArchiveOptions
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:954,1
    - Dst: on_exit_close_archive
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:957,1
    - Dst: ConnectDatabaseAhx
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:976,1
    - Dst: setup_connection
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:977,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:993,1
    - Dst: expand_schema_name_patterns
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:998,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1002,1
    - Dst: expand_schema_name_patterns
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1004,1
    - Dst: expand_table_name_patterns
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1010,1
    - Dst: expand_table_name_patterns
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1013,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1019,1
    - Dst: expand_table_name_patterns
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1021,1
    - Dst: expand_table_name_patterns
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1024,1
    - Dst: expand_table_name_patterns
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1028,1
    - Dst: expand_table_name_patterns
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1031,1
    - Dst: expand_foreign_server_name_patterns
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1035,1
    - Dst: expand_extension_name_patterns
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1043,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1047,1
    - Dst: expand_extension_name_patterns
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1049,1
    - Dst: collectRoleNames
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1069,1
    - Dst: getSchemaData
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1075,1
    - Dst: getTableData
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1079,1
    - Dst: buildMatViewRefreshDependencies
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1080,1
    - Dst: getTableDataFKConstraints
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1082,1
    - Dst: getTableData
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1086,1
    - Dst: getLOs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1097,1
    - Dst: getDependencies
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1102,1
    - Dst: getAdditionalACLs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1108,1
    - Dst: collectComments
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1110,1
    - Dst: collectSecLabels
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1112,1
    - Dst: collectBinaryUpgradeClassOids
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1116,1
    - Dst: collectSequences
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1119,1
    - Dst: createBoundaryObjects
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1122,1
    - Dst: getDumpableObjects
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1125,1
    - Dst: addBoundaryDependencies
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1130,1
    - Dst: sortDumpableObjectsByTypeName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1139,1
    - Dst: sortDumpableObjects
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1141,1
    - Dst: dumpEncoding
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1152,1
    - Dst: dumpStdStrings
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1153,1
    - Dst: dumpSearchPath
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1154,1
    - Dst: dumpDatabase
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1158,1
    - Dst: dumpDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1162,1
    - Dst: NewRestoreOptions
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1167,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1171,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1172,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1173,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1174,1
    - Dst: SetArchiveOptions
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1208,1
    - Dst: ProcessArchiveRestoreOptions
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1211,1
    - Dst: BuildArchiveDependencies
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1219,1
    - Dst: RestoreArchive
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1229,1
    - Dst: CloseArchive
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1231,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1233,1
    CyclomaticComplexity: 147
    EdgeCount: 147
    ICount: 363
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1234
      start: 411
    functionDepth: 2
    functionLinenumber: 411
    functionLinenumberEnd: 1234
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - createBoundaryObjects
    - sortDumpableObjects
    - pg_logging_increase_verbosity
    - NewRestoreOptions
    - RestoreArchive
    - CloseArchive
    - collectComments
    - collectBinaryUpgradeClassOids
    - pg_log_warning
    - SetArchiveOptions
    - set_pglocale_pgservice
    - getTableData
    - getLOs
    - pg_logging_set_level
    - buildMatViewRefreshDependencies
    - ConnectDatabaseAhx
    - getAdditionalACLs
    - parse_compress_options
    - supports_compression
    - expand_extension_name_patterns
    - puts
    - getTableDataFKConstraints
    - pg_logging_init
    - setup_connection
    - help
    - parse_sync_method
    - pg_log_info
    - collectRoleNames
    - strcmp
    - pg_log_error
    - InitDumpOptions
    - expand_foreign_server_name_patterns
    - getSchemaData
    - dumpEncoding
    - ProcessArchiveRestoreOptions
    - parseArchiveFormat
    - getDumpableObjects
    - collectSequences
    - expand_schema_name_patterns
    - pg_log_error_hint
    - option_parse_int
    - read_dump_filters
    - CreateArchive
    - expand_table_name_patterns
    - pg_fatal
    - dumpDumpableObject
    - sortDumpableObjectsByTypeName
    - dumpDatabase
    - on_exit_close_archive
    - BuildArchiveDependencies
    - validate_compress_specification
    - get_progname
    - getopt_long
    - init_parallel_dump_utils
    - pg_strdup
    - collectSecLabels
    - dumpSearchPath
    - parse_compress_specification
    - parse_compress_algorithm
    - simple_string_list_append
    - dumpStdStrings
    - addBoundaryDependencies
    - exit_nicely
    - set_dump_section
    - getDependencies
    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:1240,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1240,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1241,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1241,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1242,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1242,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1244,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1244,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1245,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1245,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1246,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1246,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1248,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1248,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1249,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1249,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1250,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1250,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1251,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1251,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1253,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1253,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1254,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1254,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1255,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1255,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1256,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1256,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1258,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1258,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1259,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1259,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1260,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1260,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1261,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1261,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1262,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1262,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1263,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1263,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1264,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1264,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1265,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1265,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1266,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1266,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1267,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1267,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1268,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1268,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1269,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1269,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1270,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1270,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1272,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1272,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1273,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1273,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1274,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1274,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1275,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1275,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1276,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1276,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1277,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1277,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1278,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1278,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1279,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1279,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1280,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1280,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1281,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1281,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1283,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1283,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1284,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1284,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1287,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1287,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1288,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1288,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1291,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1291,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1292,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1292,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: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:1300,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1300,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:1305,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1305,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:1310,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1310,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: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:1324,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1324,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: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:1335,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1335,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:1338,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1338,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:1342,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1342,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1343,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 85
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1344
      start: 1237
    functionDepth: 0
    functionLinenumber: 1237
    functionLinenumberEnd: 1344
    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: 18
    BranchProfiles: []
    Callsites:
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1351,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1354,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1354,1
    - Dst: PQsetClientEncoding
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1361,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1362,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1370,1
    - Dst: setFmtEncoding
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1371,1
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1373,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1374,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1387,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1389,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1389,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1390,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1391,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1395,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1399,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1402,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1411,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1413,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1415,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1416,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1419,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1425,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1430,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1432,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1434,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1436,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1442,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1450,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1452,1
    - Dst: set_restrict_relation_kind
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1460,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1466,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1471,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:1486,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1496,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1500,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1502,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1503,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1504,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1505,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1510,1
    - Dst: get_synchronized_snapshot
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1511,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 61
    argCount: 4
    argNames:
    - AH
    - dumpencoding
    - dumpsnapshot
    - use_role
    argTypes:
    - Archive*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1513
      start: 1346
    functionDepth: 1
    functionLinenumber: 1346
    functionLinenumberEnd: 1513
    functionName: setup_connection
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - get_synchronized_snapshot
    - pg_malloc0
    - PQclientEncoding
    - createPQExpBuffer
    - appendPQExpBufferStr
    - PQclear
    - strcmp
    - setFmtEncoding
    - set_restrict_relation_kind
    - pg_fatal
    - fmtId
    - destroyPQExpBuffer
    - ExecuteSqlStatement
    - GetConnection
    - ExecuteSqlQueryForSingleRow
    - PQsetClientEncoding
    - pg_strdup
    - appendStringLiteralConn
    - appendPQExpBuffer
    - PQparameterStatus
    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:1525,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1526,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - AH
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1529
      start: 1516
    functionDepth: 2
    functionLinenumber: 1516
    functionLinenumberEnd: 1529
    functionName: setupDumpWorker
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - setup_connection
    - pg_encoding_to_char
    linkageType: ''
    returnType: void
    signature: void setupDumpWorker(Archive *AH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1538,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1539,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1539,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1540,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1543
      start: 1531
    functionDepth: 1
    functionLinenumber: 1531
    functionLinenumberEnd: 1543
    functionName: get_synchronized_snapshot
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - ExecuteSqlQueryForSingleRow
    - pg_strdup
    - PQgetvalue
    - PQclear
    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:1552,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1552,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1558,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1560,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1562,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1564,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1566,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1568,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1570,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1572,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1575,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 2
    argNames:
    - format
    - mode
    argTypes:
    - char*
    - ArchiveMode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1577
      start: 1545
    functionDepth: 1
    functionLinenumber: 1545
    functionLinenumberEnd: 1577
    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:1597,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1609,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1611,1
    - Dst: processSQLNamePattern
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1612,1
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1612,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1616,1
    - Dst: prohibit_crossdb_refs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1619,1
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1619,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1620,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1622,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1623,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1624,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1626,1
    - Dst: simple_oid_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1628,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1628,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1628,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1631,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1632,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1635,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: 1636
      start: 1583
    functionDepth: 1
    functionLinenumber: 1583
    functionLinenumberEnd: 1636
    functionName: expand_schema_name_patterns
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - prohibit_crossdb_refs
    - GetConnection
    - processSQLNamePattern
    - createPQExpBuffer
    - PQntuples
    - simple_oid_list_append
    - termPQExpBuffer
    - appendPQExpBufferStr
    - atooid
    - PQgetvalue
    - ExecuteSqlQuery
    - resetPQExpBuffer
    - pg_fatal
    - PQclear
    - destroyPQExpBuffer
    - initPQExpBuffer
    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:1656,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1666,1
    - Dst: processSQLNamePattern
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1668,1
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1668,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1672,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1675,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1676,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1677,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1679,1
    - Dst: simple_oid_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1681,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1681,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1681,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1684,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1685,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1688,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: 1689
      start: 1642
    functionDepth: 1
    functionLinenumber: 1642
    functionLinenumberEnd: 1689
    functionName: expand_extension_name_patterns
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - GetConnection
    - processSQLNamePattern
    - createPQExpBuffer
    - simple_oid_list_append
    - atooid
    - appendPQExpBufferStr
    - PQgetvalue
    - ExecuteSqlQuery
    - resetPQExpBuffer
    - pg_fatal
    - PQclear
    - destroyPQExpBuffer
    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:1708,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1719,1
    - Dst: processSQLNamePattern
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1721,1
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1721,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1725,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1728,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1729,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1730,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1732,1
    - Dst: simple_oid_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1733,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1733,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1733,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1735,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1736,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1739,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - fout
    - patterns
    - oids
    argTypes:
    - Archive*
    - SimpleStringList*
    - SimpleOidList*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1740
      start: 1695
    functionDepth: 1
    functionLinenumber: 1695
    functionLinenumberEnd: 1740
    functionName: expand_foreign_server_name_patterns
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - GetConnection
    - processSQLNamePattern
    - createPQExpBuffer
    - simple_oid_list_append
    - atooid
    - appendPQExpBufferStr
    - PQgetvalue
    - ExecuteSqlQuery
    - resetPQExpBuffer
    - pg_fatal
    - PQclear
    - destroyPQExpBuffer
    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:1760,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1782,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1785,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1795,1
    - Dst: processSQLNamePattern
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1796,1
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1796,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1801,1
    - Dst: prohibit_crossdb_refs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1804,1
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1804,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1805,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1809,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1818,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1819,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1820,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1820,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1822,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1823,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1825,1
    - Dst: simple_oid_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1827,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1827,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1827,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1830,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1831,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1834,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: 1835
      start: 1747
    functionDepth: 1
    functionLinenumber: 1747
    functionLinenumberEnd: 1835
    functionName: expand_table_name_patterns
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - termPQExpBuffer
    - PQgetvalue
    - resetPQExpBuffer
    - atooid
    - createPQExpBuffer
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - PQclear
    - prohibit_crossdb_refs
    - PQntuples
    - pg_fatal
    - destroyPQExpBuffer
    - ExecuteSqlStatement
    - processSQLNamePattern
    - GetConnection
    - ExecuteSqlQueryForSingleRow
    - simple_oid_list_append
    - appendPQExpBuffer
    - initPQExpBuffer
    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:1848,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1850,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1852,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1853,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - conn
    - dbname
    - pattern
    argTypes:
    - PGconn*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1855
      start: 1843
    functionDepth: 1
    functionLinenumber: 1843
    functionLinenumberEnd: 1855
    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: 4
    BranchProfiles: []
    Callsites:
    - Dst: findOwningExtension
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1871,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1879,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - dobj
    - fout
    argTypes:
    - DumpableObject*
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1912
      start: 1868
    functionDepth: 2
    functionLinenumber: 1868
    functionLinenumberEnd: 1912
    functionName: checkExtensionMembership
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - findOwningExtension
    - addObjectDependency
    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:1937,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1941,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1950,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1951,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1956,1
    - Dst: simple_oid_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1986,1
    - Dst: checkExtensionMembership
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:1997,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 2
    argNames:
    - nsinfo
    - fout
    argTypes:
    - NamespaceInfo*
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1998
      start: 1918
    functionDepth: 3
    functionLinenumber: 1918
    functionLinenumberEnd: 1998
    functionName: selectDumpableNamespace
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - strcmp
    - checkExtensionMembership
    - simple_oid_list_member
    - strncmp
    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:2007,1
    - Dst: simple_oid_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2015,1
    - Dst: simple_oid_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2025,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - tbinfo
    - fout
    argTypes:
    - TableInfo*
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2028
      start: 2004
    functionDepth: 3
    functionLinenumber: 2004
    functionLinenumberEnd: 2028
    functionName: selectDumpableTable
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - simple_oid_list_member
    - checkExtensionMembership
    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:2047,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2050,1
    - Dst: checkExtensionMembership
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2073,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - tyinfo
    - fout
    argTypes:
    - TypeInfo*
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2078
      start: 2043
    functionDepth: 3
    functionLinenumber: 2043
    functionLinenumberEnd: 2078
    functionName: selectDumpableType
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - checkExtensionMembership
    - OidIsValid
    - 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: 2099
      start: 2088
    functionDepth: 0
    functionLinenumber: 2088
    functionLinenumberEnd: 2099
    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:2113,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - cast
    - fout
    argTypes:
    - CastInfo*
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2125
      start: 2110
    functionDepth: 3
    functionLinenumber: 2110
    functionLinenumberEnd: 2125
    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:2138,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - plang
    - fout
    argTypes:
    - ProcLangInfo*
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2158
      start: 2135
    functionDepth: 3
    functionLinenumber: 2135
    functionLinenumberEnd: 2158
    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:2171,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - method
    - fout
    argTypes:
    - AccessMethodInfo*
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2183
      start: 2168
    functionDepth: 3
    functionLinenumber: 2168
    functionLinenumberEnd: 2183
    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:2211,1
    - Dst: simple_oid_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2221,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - extinfo
    - dopt
    argTypes:
    - ExtensionInfo*
    - DumpOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2225
      start: 2196
    functionDepth: 1
    functionLinenumber: 2196
    functionLinenumberEnd: 2225
    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:2238,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - dobj
    - fout
    argTypes:
    - DumpableObject*
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2243
      start: 2235
    functionDepth: 3
    functionLinenumber: 2235
    functionLinenumberEnd: 2243
    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:2256,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - sobj
    - fout
    argTypes:
    - StatsExtInfo*
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2263
      start: 2253
    functionDepth: 3
    functionLinenumber: 2253
    functionLinenumberEnd: 2263
    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:2274,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - dobj
    - fout
    argTypes:
    - DumpableObject*
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2286
      start: 2271
    functionDepth: 3
    functionLinenumber: 2271
    functionLinenumberEnd: 2286
    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:2299,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2305,1
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2306,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2312,1
    - Dst: fmtCopyColumnList
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2321,1
    - Dst: set_restrict_relation_kind
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2332,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2334,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2336,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2338,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2342,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2344,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2345,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2350,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2351,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2354,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2355,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2356,1
    - Dst: PQgetCopyData
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2360,1
    - Dst: WriteData
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2367,1
    - Dst: PQfreemem
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2368,1
    - Dst: archprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2417,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2422,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2423,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2423,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2424,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2425,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2429,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2430,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2432,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2433,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2433,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2434,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2435,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2437,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2440,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2441,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2444,1
    - Dst: set_restrict_relation_kind
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2448,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 49
    argCount: 2
    argNames:
    - fout
    - dcontext
    argTypes:
    - Archive*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2451
      start: 2293
    functionDepth: 1
    functionLinenumber: 2293
    functionLinenumberEnd: 2451
    functionName: dumpTableData_copy
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - PQresultStatus
    - PQfreemem
    - pg_log_warning
    - PQgetResult
    - WriteData
    - PQgetCopyData
    - strlen
    - createPQExpBuffer
    - archprintf
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - pg_log_error_detail
    - pg_log_info
    - PQclear
    - pg_log_error
    - fmtQualifiedDumpable
    - PQerrorMessage
    - fmtCopyColumnList
    - set_restrict_relation_kind
    - destroyPQExpBuffer
    - GetConnection
    - appendPQExpBuffer
    - exit_nicely
    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:2467,1
    - Dst: set_restrict_relation_kind
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2478,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2487,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2488,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2497,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2499,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2501,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2501,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2507,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2508,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2509,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2511,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2513,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2517,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2521,1
    - Dst: PQnfields
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2522,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2523,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2537,1
    - Dst: forcePartitionRootLoad
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2546,1
    - Dst: getRootTableInfo
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2547,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2551,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2552,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2557,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2564,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2568,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2569,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2570,1
    - Dst: PQfname
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2570,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2572,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2576,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2578,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2582,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2586,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2602,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2604,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2606,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2611,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2614,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2617,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2619,1
    - Dst: PQftype
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2624,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2645,1
    - Dst: strspn
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2647,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2647,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2648,1
    - Dst: archprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2650,1
    - Dst: archprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2656,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2657,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2661,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2661,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2662,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2664,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2669,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2670,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2671,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2673,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2679,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2685,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2687,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2693,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2695,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2698,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2705,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2707,1
    - Dst: archputs
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2710,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2712,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2714,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2716,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2717,1
    - Dst: set_restrict_relation_kind
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2721,1
    CyclomaticComplexity: 51
    EdgeCount: 51
    ICount: 130
    argCount: 2
    argNames:
    - fout
    - dcontext
    argTypes:
    - Archive*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2724
      start: 2461
    functionDepth: 1
    functionLinenumber: 2461
    functionLinenumberEnd: 2724
    functionName: dumpTableData_insert
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - strspn
    - appendPQExpBufferChar
    - appendStringLiteralAH
    - getRootTableInfo
    - PQgetvalue
    - resetPQExpBuffer
    - PQftype
    - strlen
    - createPQExpBuffer
    - PQnfields
    - archprintf
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - PQclear
    - strcmp
    - fmtQualifiedDumpable
    - PQntuples
    - archputs
    - pg_malloc
    - set_restrict_relation_kind
    - pg_fatal
    - fmtId
    - PQfname
    - destroyPQExpBuffer
    - ExecuteSqlStatement
    - forcePartitionRootLoad
    - appendPQExpBuffer
    - PQgetisnull
    - free
    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:2735,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2736,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2741,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - tbinfo
    argTypes:
    - TableInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2746
      start: 2730
    functionDepth: 1
    functionLinenumber: 2730
    functionLinenumberEnd: 2746
    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:2760,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2761,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2768,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - tbinfo
    argTypes:
    - TableInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2775
      start: 2755
    functionDepth: 1
    functionLinenumber: 2755
    functionLinenumberEnd: 2775
    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:2788,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2789,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2796,1
    - Dst: forcePartitionRootLoad
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2806,1
    - Dst: getRootTableInfo
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2810,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2811,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2812,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2814,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2817,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2824,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2826,1
    - Dst: fmtCopyColumnList
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2827,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2846,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2847,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2884,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2885,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 2
    argNames:
    - fout
    - tdinfo
    argTypes:
    - Archive*
    - TableDataInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2886
      start: 2783
    functionDepth: 2
    functionLinenumber: 2783
    functionLinenumberEnd: 2886
    functionName: dumpTableData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - Assert
    - fmtQualifiedDumpable
    - getRootTableInfo
    - forcePartitionRootLoad
    - createPQExpBuffer
    - pg_strdup
    - ARCHIVE_OPTS
    - printfPQExpBuffer
    - appendPQExpBuffer
    - fmtCopyColumnList
    - destroyPQExpBuffer
    - ArchiveEntry
    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:2905,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2907,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2908,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2911,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2914,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2923,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - fout
    - tdinfo
    argTypes:
    - Archive*
    - TableDataInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2924
      start: 2895
    functionDepth: 1
    functionLinenumber: 2895
    functionLinenumberEnd: 2924
    functionName: refreshMatViewData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - fmtQualifiedDumpable
    - createPQExpBuffer
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - destroyPQExpBuffer
    - ArchiveEntry
    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:2939,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 4
    argNames:
    - dopt
    - tblinfo
    - numTables
    - relkind
    argTypes:
    - DumpOptions*
    - TableInfo*
    - int
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2941
      start: 2930
    functionDepth: 1
    functionLinenumber: 2930
    functionLinenumberEnd: 2941
    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: 10
    BranchProfiles: []
    Callsites:
    - Dst: simple_oid_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2967,1
    - Dst: simple_oid_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2980,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:2985,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3000,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3005,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3022,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 34
    argCount: 2
    argNames:
    - dopt
    - tbinfo
    argTypes:
    - DumpOptions*
    - TableInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3027
      start: 2949
    functionDepth: 2
    functionLinenumber: 2949
    functionLinenumberEnd: 3027
    functionName: makeTableDataInfo
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - pg_malloc
    - AssignDumpId
    - simple_oid_list_member
    - addObjectDependency
    linkageType: ''
    returnType: void
    signature: void makeTableDataInfo(DumpOptions *dopt, TableInfo *tbinfo)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3051,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3053,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3065,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3076,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3082,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3084,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3086,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3087,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3088,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3099,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3099,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3100,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3100,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3102,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3102,1
    - Dst: findObjectByCatalogId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3104,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3108,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3110,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3114,1
    - Dst: findObjectByCatalogId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3116,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3120,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3122,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3126,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3128,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3134,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3136,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3137
      start: 3036
    functionDepth: 2
    functionLinenumber: 3036
    functionLinenumberEnd: 3137
    functionName: buildMatViewRefreshDependencies
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - Assert
    - PQntuples
    - atooid
    - createPQExpBuffer
    - appendPQExpBufferStr
    - PQgetvalue
    - PQfnumber
    - ExecuteSqlQuery
    - findObjectByCatalogId
    - PQclear
    - destroyPQExpBuffer
    - CppAsString2
    - addObjectDependency
    linkageType: ''
    returnType: void
    signature: void buildMatViewRefreshDependencies(Archive *fout)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getDumpableObjects
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3159,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3171,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3180,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3184,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3185
      start: 3151
    functionDepth: 2
    functionLinenumber: 3151
    functionLinenumberEnd: 3185
    functionName: getTableDataFKConstraints
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - free
    - addObjectDependency
    - getDumpableObjects
    - findTableByOid
    linkageType: ''
    returnType: void
    signature: void getTableDataFKConstraints(void)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3196,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3197,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3198,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3199,1
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3200,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3238,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3243,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3250,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3252,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3254,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3256,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3258,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3260,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3262,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3263,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3269,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3271,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3272,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3273,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3274,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3275,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3276,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3277,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3278,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3279,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3280,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3281,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3282,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3283,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3284,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3285,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3286,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3287,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3288,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3290,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3290,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3291,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3291,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3292,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3293,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3293,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3294,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3295,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3296,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3297,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3298,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3299,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3302,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3303,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3306,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3306,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3307,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3307,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3308,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3309,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3310,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3311,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3312,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3314,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3314,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3329,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3336,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3339,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3341,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3342,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3345,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3347,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3349,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3351,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3353,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3356,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3356,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3358,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3359,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3363,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3365,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3366,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3368,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3370,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3371,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3377,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3379,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3381,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3386,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3387,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3396,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3398,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3399,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3400,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3413,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3413,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3415,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3416,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3417,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3419,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3422,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3424,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3427,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3435,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3444,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3444,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3448,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3454,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3455,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3456,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3458,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3458,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3459,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3475,1
    - Dst: buildShSecLabelQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3477,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3478,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3479,1
    - Dst: emitShSecLabels
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3480,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3482,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3482,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3483,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3490,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3491,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3501,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3513,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3514,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3516,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3516,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3517,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3520,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3522,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3532,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3534,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3535,1
    - Dst: dumpDatabaseConfig
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3544,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3552,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3553,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3557,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3558,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3562,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3562,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3563,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3578,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3579,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3580,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3590,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3595,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3600,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3602,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3603,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3604,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3605,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3607,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3608,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3609,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3614,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3617,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3617,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3618,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3618,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3619,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3619,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3621,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3621,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3622,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3622,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3625,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3629,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3634,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3636,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3638,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3638,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3639,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3644,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3646,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3647,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3648,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3651,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3653,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3654,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3655,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3656,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3657,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 184
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3658
      start: 3192
    functionDepth: 1
    functionLinenumber: 3192
    functionLinenumberEnd: 3658
    functionName: dumpDatabase
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendStringLiteralAH
    - PQgetvalue
    - resetPQExpBuffer
    - dumpDatabaseConfig
    - strlen
    - atooid
    - createPQExpBuffer
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - getRoleName
    - pg_log_info
    - PQclear
    - strcmp
    - emitShSecLabels
    - buildShSecLabelQuery
    - PQntuples
    - dumpACL
    - PQfnumber
    - pg_fatal
    - fmtId
    - destroyPQExpBuffer
    - ArchiveEntry
    - GetConnection
    - ExecuteSqlQueryForSingleRow
    - pg_strdup
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - PQgetisnull
    - createDumpId
    - free
    linkageType: ''
    returnType: void
    signature: void dumpDatabase(Archive *fout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3668,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3669,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3673,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3677,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3679,1
    - Dst: makeAlterConfigCommand
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3680,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3680,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3684,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3687,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3692,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3694,1
    - Dst: makeAlterConfigCommand
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3695,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3695,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3696,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3700,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3702,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - AH
    - outbuf
    - dbname
    - dboid
    argTypes:
    - Archive*
    - PQExpBuffer
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3703
      start: 3664
    functionDepth: 1
    functionLinenumber: 3664
    functionLinenumberEnd: 3703
    functionName: dumpDatabaseConfig
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - GetConnection
    - createPQExpBuffer
    - PQgetvalue
    - printfPQExpBuffer
    - ExecuteSqlQuery
    - makeAlterConfigCommand
    - PQclear
    - destroyPQExpBuffer
    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:3711,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3712,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3714,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3716,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3717,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3718,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3720,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3720,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3721,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3726,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - AH
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3727
      start: 3708
    functionDepth: 1
    functionLinenumber: 3708
    functionLinenumberEnd: 3727
    functionName: dumpEncoding
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendStringLiteralAH
    - pg_encoding_to_char
    - createPQExpBuffer
    - appendPQExpBufferStr
    - ARCHIVE_OPTS
    - pg_log_info
    - createDumpId
    - destroyPQExpBuffer
    - ArchiveEntry
    linkageType: ''
    returnType: void
    signature: void dumpEncoding(Archive *AH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3737,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3739,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3742,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3745,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3745,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3746,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3751,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - AH
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3752
      start: 3733
    functionDepth: 1
    functionLinenumber: 3733
    functionLinenumberEnd: 3752
    functionName: dumpStdStrings
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - createPQExpBuffer
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - pg_log_info
    - createDumpId
    - destroyPQExpBuffer
    - ArchiveEntry
    linkageType: ''
    returnType: void
    signature: void dumpStdStrings(Archive *AH)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3760,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3761,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3774,1
    - Dst: parsePGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3777,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3777,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3778,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3789,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3790,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3790,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: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3797,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3799,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3799,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3800,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3806,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3808,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3809,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3810,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3811,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - AH
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3812
      start: 3757
    functionDepth: 1
    functionLinenumber: 3757
    functionLinenumberEnd: 3812
    functionName: dumpSearchPath
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendStringLiteralAH
    - parsePGArray
    - createPQExpBuffer
    - ExecuteSqlQueryForSingleRow
    - pg_strdup
    - appendPQExpBufferStr
    - PQgetvalue
    - ARCHIVE_OPTS
    - pg_fatal
    - fmtId
    - pg_log_info
    - createDumpId
    - PQclear
    - destroyPQExpBuffer
    - ArchiveEntry
    - free
    linkageType: ''
    returnType: void
    signature: void dumpSearchPath(Archive *AH)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3823,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3833,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3839,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3845,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3847,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3848,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3849,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3850,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3852,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3864,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3864,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3865,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3866,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3875,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3875,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3876,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3876,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3882,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3887,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3890,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3891,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3891,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3893,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3894,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3895,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3896,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3896,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3899,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3907,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3907,1
    - Dst: recordAdditionalCatalogID
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3912,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3919,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3936,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3939,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3940,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3943,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3948,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3949,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 55
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3950
      start: 3819
    functionDepth: 2
    functionLinenumber: 3819
    functionLinenumberEnd: 3950
    functionName: getLOs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - snprintf
    - pg_strdup
    - appendPQExpBufferStr
    - PQgetvalue
    - recordAdditionalCatalogID
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - getRoleName
    - PQgetisnull
    - pg_log_info
    - PQclear
    - strcmp
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getLOs(Archive *fout)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3960,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3967,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3970,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3971,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3993,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:3996,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4001,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4019,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4025,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4028,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4034,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4040,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - fout
    - loinfo
    argTypes:
    - Archive*
    - LoInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4041
      start: 3957
    functionDepth: 1
    functionLinenumber: 3957
    functionLinenumberEnd: 4041
    functionName: dumpLO
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - createPQExpBuffer
    - snprintf
    - dumpACL
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - dumpComment
    - dumpSecLabel
    - destroyPQExpBuffer
    - ArchiveEntry
    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:4051,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4054,1
    - Dst: lo_open
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4063,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4065,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4066,1
    - Dst: StartLO
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4068,1
    - Dst: lo_read
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4073,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4075,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4076,1
    - Dst: WriteData
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4078,1
    - Dst: lo_close
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4081,1
    - Dst: EndLO
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4083,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - fout
    - arg
    argTypes:
    - Archive*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4087
      start: 4047
    functionDepth: 1
    functionLinenumber: 4047
    functionLinenumberEnd: 4087
    functionName: dumpLOs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - lo_open
    - lo_read
    - lo_close
    - PQerrorMessage
    - GetConnection
    - EndLO
    - pg_fatal
    - StartLO
    - pg_log_info
    - WriteData
    linkageType: ''
    returnType: int
    signature: int dumpLOs(Archive *fout, const void *arg)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4122,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4123,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4128,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4144,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4145,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4159,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4163,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4165,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4175,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4183,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4185,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4188,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4190,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4191,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4200,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4202,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4205,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4206,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4207,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4208,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4209,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4210,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4211,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4212,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4213,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4215,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4219,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4219,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4220,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4226,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4226,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4227,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4227,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4228,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4231,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4231,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4232,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4234,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4235,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4237,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4240,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4240,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4242,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4245,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4245,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4247,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4251,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4251,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4255,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4257,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4258,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 80
    argCount: 3
    argNames:
    - fout
    - tblinfo
    - numTables
    argTypes:
    - Archive*
    - TableInfo[]
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4259
      start: 4093
    functionDepth: 2
    functionLinenumber: 4093
    functionLinenumberEnd: 4259
    functionName: getPolicies
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendPQExpBufferChar
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - appendPQExpBufferStr
    - PQgetvalue
    - appendPQExpBuffer
    - pg_malloc
    - printfPQExpBuffer
    - ExecuteSqlQuery
    - PQfnumber
    - PQgetisnull
    - pg_log_info
    - PQclear
    - destroyPQExpBuffer
    - findTableByOid
    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:4288,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4290,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4291,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4299,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4300,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4309,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4324,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4327,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4328,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4329,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4331,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4331,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4333,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4333,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4335,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4335,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4339,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4342,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4345,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4347,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4349,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4349,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4350,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4350,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4352,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4353,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4355,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4358,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4359,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4368,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4372,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4373,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4374,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4375,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4376,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 48
    argCount: 2
    argNames:
    - fout
    - polinfo
    argTypes:
    - Archive*
    - PolicyInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4377
      start: 4265
    functionDepth: 1
    functionLinenumber: 4265
    functionLinenumberEnd: 4377
    functionName: dumpPolicy
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - fmtQualifiedDumpable
    - createPQExpBuffer
    - pg_strdup
    - appendPQExpBufferStr
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - pg_fatal
    - fmtId
    - dumpComment
    - free
    - destroyPQExpBuffer
    - ArchiveEntry
    - psprintf
    linkageType: ''
    returnType: void
    signature: void dumpPolicy(Archive *fout, const PolicyInfo *polinfo)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4407,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4410,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4415,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4417,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4420,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4422,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4425,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4427,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4429,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4431,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4433,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4438,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4439,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4440,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4441,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4442,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4443,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4444,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4445,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4446,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4447,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4448,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4450,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4456,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4456,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4457,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4457,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4458,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4459,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4459,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4460,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4460,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4462,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4462,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4464,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4464,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4466,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4466,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4468,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4468,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4470,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4470,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4472,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4472,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4474,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4477,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4481,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4483,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 52
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4484
      start: 4383
    functionDepth: 4
    functionLinenumber: 4383
    functionLinenumberEnd: 4484
    functionName: getPublications
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - appendPQExpBufferStr
    - PQgetvalue
    - appendPQExpBuffer
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - getRoleName
    - selectDumpableObject
    - PQclear
    - strcmp
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getPublications(Archive *fout)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4503,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4504,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4506,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4506,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4508,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4511,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4515,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:4520,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4527,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4529,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4536,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4538,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4545,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4547,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4551,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4554,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4557,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4559,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4562,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4563,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4571,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4576,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4580,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4581,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4582,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 48
    argCount: 2
    argNames:
    - fout
    - pubinfo
    argTypes:
    - Archive*
    - PublicationInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4583
      start: 4490
    functionDepth: 1
    functionLinenumber: 4490
    functionLinenumberEnd: 4583
    functionName: dumpPublication
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - createPQExpBuffer
    - pg_strdup
    - appendPQExpBufferStr
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - dumpComment
    - fmtId
    - dumpSecLabel
    - destroyPQExpBuffer
    - ArchiveEntry
    - free
    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:4607,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4610,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4613,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4615,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4617,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4618,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4619,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4620,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4623,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4628,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4628,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4629,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4629,1
    - Dst: findPublicationByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4637,1
    - Dst: findNamespaceByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4640,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4647,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4647,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4648,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4648,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4649,1
    - Dst: selectDumpablePublicationObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4656,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4661,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4662,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4663
      start: 4589
    functionDepth: 4
    functionLinenumber: 4589
    functionLinenumberEnd: 4663
    functionName: getPublicationNamespaces
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - findNamespaceByOid
    - appendPQExpBufferStr
    - PQgetvalue
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - findPublicationByOid
    - PQclear
    - destroyPQExpBuffer
    - selectDumpablePublicationObject
    linkageType: ''
    returnType: void
    signature: void getPublicationNamespaces(Archive *fout)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4689,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4693,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4706,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4710,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4712,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4714,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4715,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4716,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4717,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4718,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4719,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4722,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4727,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4727,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4728,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4728,1
    - Dst: findPublicationByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4736,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4739,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4746,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4746,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4747,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4747,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4748,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4753,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4756,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4756,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4758,1
    - Dst: parsePGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4764,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4764,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4766,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4767,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4771,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4773,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4773,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4776,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4777,1
    - Dst: selectDumpablePublicationObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4783,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4788,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4789,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 54
    argCount: 3
    argNames:
    - fout
    - tblinfo
    - numTables
    argTypes:
    - Archive*
    - TableInfo[]
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4790
      start: 4669
    functionDepth: 4
    functionLinenumber: 4669
    functionLinenumberEnd: 4790
    functionName: getPublicationTables
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - parsePGArray
    - PQgetvalue
    - atooid
    - createPQExpBuffer
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - free
    - PQclear
    - PQntuples
    - pg_malloc
    - PQfnumber
    - findPublicationByOid
    - pg_fatal
    - fmtId
    - destroyPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - PQgetisnull
    - selectDumpablePublicationObject
    - findTableByOid
    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:4809,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4811,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4813,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4813,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4814,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4814,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4821,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4822,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4831,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4832,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - fout
    - pubsinfo
    argTypes:
    - Archive*
    - PublicationSchemaInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4833
      start: 4796
    functionDepth: 1
    functionLinenumber: 4796
    functionLinenumberEnd: 4833
    functionName: dumpPublicationNamespace
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - createPQExpBuffer
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - fmtId
    - free
    - destroyPQExpBuffer
    - ArchiveEntry
    - psprintf
    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:4852,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4854,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4856,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4857,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4858,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4859,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4862,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4871,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4873,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4883,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4884,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4893,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4894,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - fout
    - pubrinfo
    argTypes:
    - Archive*
    - PublicationRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4895
      start: 4839
    functionDepth: 1
    functionLinenumber: 4839
    functionLinenumberEnd: 4895
    functionName: dumpPublicationTable
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - fmtQualifiedDumpable
    - createPQExpBuffer
    - appendPQExpBufferStr
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - fmtId
    - free
    - destroyPQExpBuffer
    - ArchiveEntry
    - psprintf
    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:4906,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4908,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4912
      start: 4900
    functionDepth: 1
    functionLinenumber: 4900
    functionLinenumberEnd: 4912
    functionName: is_superuser
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - strcmp
    - PQparameterStatus
    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:4922,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4925,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4930,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4932,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4933,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - AH
    - value
    argTypes:
    - Archive*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4934
      start: 4919
    functionDepth: 1
    functionLinenumber: 4919
    functionLinenumberEnd: 4934
    functionName: set_restrict_relation_kind
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 3
    functionsReached:
    - createPQExpBuffer
    - appendPQExpBuffer
    - ExecuteSqlQuery
    - PQclear
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void set_restrict_relation_kind(Archive *AH, const char *value)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: is_superuser
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4971,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4975,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4980,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4980,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4982,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4983,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4987,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4990,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4997,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:4999,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5002,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5004,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5007,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5011,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5017,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5022,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5029,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5032,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5036,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5039,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5042,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5046,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5050,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5054,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5056,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5062,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5063,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5064,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5065,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5066,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5067,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5068,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5069,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5070,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5071,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5072,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5073,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5074,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5075,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5076,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5077,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5078,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5079,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5081,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5087,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5087,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5088,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5088,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5089,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5090,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5090,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5091,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5091,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5094,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5094,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5096,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5096,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5097,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5098,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5100,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5100,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5102,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5102,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5104,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5104,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5106,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5106,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5108,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5108,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5109,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5113,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5113,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5115,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5115,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5117,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5117,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5118,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5118,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5119,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5123,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5123,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5126,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5128,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5130,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 85
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5131
      start: 4940
    functionDepth: 4
    functionLinenumber: 4940
    functionLinenumberEnd: 5131
    functionName: getSubscriptions
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - pg_log_warning
    - PQgetvalue
    - atooid
    - createPQExpBuffer
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - getRoleName
    - PQclear
    - strcmp
    - atoi
    - PQntuples
    - pg_malloc
    - PQfnumber
    - destroyPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - selectDumpableObject
    - appendPQExpBuffer
    - is_superuser
    - PQgetisnull
    linkageType: ''
    returnType: void
    signature: void getSubscriptions(Archive *fout)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5156,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5161,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5166,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5167,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5168,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5169,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5171,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5174,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5174,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5175,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5175,1
    - Dst: findSubscriptionByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5184,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5186,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5191,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5193,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5200,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5201,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5203,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5204,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5207,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5207,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5212,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5216,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5217
      start: 5138
    functionDepth: 4
    functionLinenumber: 5138
    functionLinenumberEnd: 5217
    functionName: getSubscriptionTables
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - atooid
    - AssignDumpId
    - pg_strdup
    - PQgetvalue
    - selectDumpableObject
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - pg_fatal
    - PQgetisnull
    - PQclear
    - findSubscriptionByOid
    - findTableByOid
    linkageType: ''
    returnType: void
    signature: void getSubscriptionTables(Archive *fout)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5236,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5238,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5240,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5249,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5251,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5253,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5254,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5260,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5262,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5264,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5275,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5276,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5285,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5286,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - fout
    - subrinfo
    argTypes:
    - Archive*
    - SubRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5287
      start: 5224
    functionDepth: 1
    functionLinenumber: 5224
    functionLinenumberEnd: 5287
    functionName: dumpSubscriptionTable
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - appendStringLiteralAH
    - Assert
    - createPQExpBuffer
    - appendPQExpBufferStr
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - free
    - destroyPQExpBuffer
    - ArchiveEntry
    - psprintf
    linkageType: ''
    returnType: void
    signature: void dumpSubscriptionTable(Archive *fout, const SubRelInfo *subrinfo)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5309,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5310,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5312,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5312,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5314,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5317,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5319,1
    - Dst: parsePGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5322,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5323,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5325,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5329,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5331,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5331,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5334,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5336,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5338,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5341,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5344,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5346,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5348,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5351,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5354,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5357,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5360,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5363,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5365,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5366,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5366,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5368,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5369,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5371,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5390,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5392,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5394,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5395,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5404,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5406,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5411,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5412,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5420,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5425,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5429,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5430,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5432,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5433,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5434,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 66
    argCount: 2
    argNames:
    - fout
    - subinfo
    argTypes:
    - Archive*
    - SubscriptionInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5435
      start: 5293
    functionDepth: 1
    functionLinenumber: 5293
    functionLinenumberEnd: 5435
    functionName: dumpSubscription
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - appendStringLiteralAH
    - destroyPQExpBuffer
    - parsePGArray
    - createPQExpBuffer
    - pg_strdup
    - appendPQExpBufferStr
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - pg_fatal
    - fmtId
    - dumpComment
    - dumpSecLabel
    - strcmp
    - pg_strcasecmp
    - ArchiveEntry
    - free
    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:5459,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5461,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5462,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5470,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5471,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5472,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5475,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5477,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5477,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5480,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5481,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5482,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: 5484
      start: 5441
    functionDepth: 1
    functionLinenumber: 5441
    functionLinenumberEnd: 5484
    functionName: append_depends_on_extension
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - PQntuples
    - createPQExpBuffer
    - pg_strdup
    - PQgetvalue
    - appendPQExpBuffer
    - PQfnumber
    - ExecuteSqlQuery
    - fmtId
    - PQclear
    - destroyPQExpBuffer
    - pg_free
    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:5504,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5509,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5510,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5511,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - fout
    - upgrade_query
    argTypes:
    - Archive*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5515
      start: 5486
    functionDepth: 1
    functionLinenumber: 5486
    functionLinenumberEnd: 5515
    functionName: get_next_possible_free_pg_type_oid
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - ExecuteSqlQueryForSingleRow
    - PQclear
    - PQgetvalue
    - 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:5524,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5531,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5532,1
    - Dst: findTypeByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5536,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5542,1
    - Dst: get_next_possible_free_pg_type_oid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5543,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5545,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5547,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5549,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5561,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5569,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5571,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5571,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5571,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5572,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5572,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5572,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5574,1
    - Dst: get_next_possible_free_pg_type_oid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5578,1
    - Dst: get_next_possible_free_pg_type_oid
      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: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5584,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5587,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5589,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5594,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: 5595
      start: 5517
    functionDepth: 2
    functionLinenumber: 5517
    functionLinenumberEnd: 5595
    functionName: binary_upgrade_set_type_oids_by_type_oid
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - findTypeByOid
    - atooid
    - createPQExpBuffer
    - ExecuteSqlQueryForSingleRow
    - appendPQExpBufferStr
    - PQgetvalue
    - appendPQExpBuffer
    - get_next_possible_free_pg_type_oid
    - printfPQExpBuffer
    - PQfnumber
    - OidIsValid
    - PQclear
    - destroyPQExpBuffer
    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:5604,1
    - Dst: binary_upgrade_set_type_oids_by_type_oid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5605,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - fout
    - upgrade_buffer
    - tbinfo
    argTypes:
    - Archive*
    - PQExpBuffer
    - TableInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5607
      start: 5597
    functionDepth: 3
    functionLinenumber: 5597
    functionLinenumberEnd: 5607
    functionName: binary_upgrade_set_type_oids_by_rel
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - binary_upgrade_set_type_oids_by_type_oid
    - OidIsValid
    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:5618,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5619
      start: 5612
    functionDepth: 1
    functionLinenumber: 5612
    functionLinenumberEnd: 5619
    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:5642,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5644,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5646,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5650,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5650,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5651,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5652,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5652,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5653,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5653,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5654,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5654,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5655,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5655,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5656,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5656,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5659,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5660
      start: 5628
    functionDepth: 1
    functionLinenumber: 5628
    functionLinenumberEnd: 5660
    functionName: collectBinaryUpgradeClassOids
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - atooid
    - PQgetvalue
    - pg_malloc
    - ExecuteSqlQuery
    - PQclear
    linkageType: ''
    returnType: void
    signature: void collectBinaryUpgradeClassOids(Archive *fout)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5669,1
    - Dst: bsearch
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5683,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5687,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5693,1
    - Dst: RelFileNumberIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5702,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5704,1
    - Dst: OidIsValid
      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: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5718,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5723,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5726,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5734,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5737,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5742,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: 5743
      start: 5662
    functionDepth: 1
    functionLinenumber: 5662
    functionLinenumberEnd: 5743
    functionName: binary_upgrade_set_pg_class_oids
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - Assert
    - appendPQExpBufferStr
    - RelFileNumberIsValid
    - appendPQExpBuffer
    - bsearch
    - OidIsValid
    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:5773,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5779,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5782,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5784,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5785,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5788,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5788,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5789,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: 5790
      start: 5752
    functionDepth: 1
    functionLinenumber: 5752
    functionLinenumberEnd: 5790
    functionName: binary_upgrade_extension_member
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - findObjectByDumpId
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - pg_fatal
    - fmtId
    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:5811,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5817,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5823,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5825,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5827,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5829,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5830,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5831,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5832,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5833,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5834,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5841,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5841,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5842,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5842,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5843,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5844,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5844,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5845,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5845,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5846,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5846,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5849,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5850,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5851,1
    - Dst: selectDumpableNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5854,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5857,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5876,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5878,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5879,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5882,1
    - Dst: quoteAclUserName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5883,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5884,1
    - Dst: quoteAclUserName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5885,1
    - Dst: appendPGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5886,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5887,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5888,1
    - Dst: quoteAclUserName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5889,1
    - Dst: appendPGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5890,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5891,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5894,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5897,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5898,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5902,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5903,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 48
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5904
      start: 5796
    functionDepth: 4
    functionLinenumber: 5796
    functionLinenumberEnd: 5904
    functionName: getNamespaces
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendPQExpBufferChar
    - PQgetvalue
    - pstrdup
    - resetPQExpBuffer
    - atooid
    - createPQExpBuffer
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - getRoleName
    - PQclear
    - appendPGArray
    - strcmp
    - PQntuples
    - selectDumpableNamespace
    - pg_malloc
    - PQfnumber
    - destroyPQExpBuffer
    - quoteAclUserName
    - AssignDumpId
    - pg_strdup
    - PQgetisnull
    linkageType: ''
    returnType: void
    signature: void getNamespaces(Archive *fout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: findNamespaceByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5915,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5917,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - nsoid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5919
      start: 5910
    functionDepth: 2
    functionLinenumber: 5910
    functionLinenumberEnd: 5919
    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:5946,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5948,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5953,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5955,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5959,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5961,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5962,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5963,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5964,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5965,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5966,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5967,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5968,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5973,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5973,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5974,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5974,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5975,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5976,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5976,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5977,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5977,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5978,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5979,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5979,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5980,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5980,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5981,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5981,1
    - Dst: selectDumpableExtension
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5984,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5988,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:5989,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 36
    argCount: 2
    argNames:
    - fout
    - numExtensions
    argTypes:
    - Archive*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5994
      start: 5928
    functionDepth: 2
    functionLinenumber: 5928
    functionLinenumberEnd: 5994
    functionName: getExtensions
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - selectDumpableExtension
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - appendPQExpBufferStr
    - PQgetvalue
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - PQclear
    - destroyPQExpBuffer
    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:6009,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6042,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6054,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6056,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6058,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6060,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6061,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6062,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6063,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6064,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6065,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6066,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6067,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6068,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: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6078,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6078,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6079,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6079,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6080,1
    - Dst: pg_strdup
      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: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6083,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6083,1
    - Dst: PQgetvalue
      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: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6089,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: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6090,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6091,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6091,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6092,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6093,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6096,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6096,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6101,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6101,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6106,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6106,1
    - Dst: selectDumpableType
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6114,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6117,1
    - Dst: getDomainConstraints
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6127,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6143,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6146,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6147,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6161,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6163,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 68
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6164
      start: 6003
    functionDepth: 4
    functionLinenumber: 6003
    functionLinenumberEnd: 6164
    functionName: getTypes
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - findNamespace
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - selectDumpableType
    - appendPQExpBufferStr
    - PQgetvalue
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - getRoleName
    - PQgetisnull
    - PQclear
    - getDomainConstraints
    - strcmp
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getTypes(Archive *fout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6176,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6191,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6198,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6200,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6202,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: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6209,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6210,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6215,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6215,1
    - Dst: atooid
      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: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6217,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6218,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6218,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6220,1
    - Dst: atooid
      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: getRoleName
      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: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6222,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6223,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6223,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6226,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6229,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6231,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6232
      start: 6170
    functionDepth: 4
    functionLinenumber: 6170
    functionLinenumberEnd: 6232
    functionName: getOperators
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - findNamespace
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - appendPQExpBufferStr
    - PQgetvalue
    - selectDumpableObject
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - getRoleName
    - PQclear
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getOperators(Archive *fout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6252,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6259,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6264,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6266,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6268,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6270,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6271,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6272,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6273,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6274,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6279,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6279,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6280,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6280,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6281,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6282,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6282,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6284,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6284,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6284,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6285,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6285,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6288,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6291,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6293,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6294
      start: 6238
    functionDepth: 4
    functionLinenumber: 6238
    functionLinenumberEnd: 6294
    functionName: getCollations
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - findNamespace
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - appendPQExpBufferStr
    - PQgetvalue
    - selectDumpableObject
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - getRoleName
    - PQclear
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getCollations(Archive *fout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6314,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6321,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6326,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6328,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6330,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6332,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6333,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6334,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6335,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6336,1
    - Dst: atooid
      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:6342,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6342,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6343,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6344,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6344,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6346,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: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6347,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6347,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6350,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6353,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6355,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6356
      start: 6300
    functionDepth: 4
    functionLinenumber: 6300
    functionLinenumberEnd: 6356
    functionName: getConversions
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - findNamespace
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - appendPQExpBufferStr
    - PQgetvalue
    - selectDumpableObject
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - getRoleName
    - PQclear
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getConversions(Archive *fout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6380,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6383,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6387,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6389,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6391,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6393,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6394,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6395,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6396,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6397,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6402,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6402,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6403,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6403,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6404,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6405,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6405,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6407,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6407,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6408,1
    - Dst: selectDumpableAccessMethod
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6411,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6414,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6416,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6417
      start: 6362
    functionDepth: 4
    functionLinenumber: 6362
    functionLinenumberEnd: 6417
    functionName: getAccessMethods
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - appendPQExpBufferStr
    - PQgetvalue
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - selectDumpableAccessMethod
    - PQclear
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getAccessMethods(Archive *fout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6430,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6443,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6448,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6450,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6452,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: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6458,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: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6464,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6464,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6465,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6466,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6466,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6468,1
    - Dst: atooid
      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: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6469,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6469,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6472,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6475,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6477,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6478
      start: 6424
    functionDepth: 4
    functionLinenumber: 6424
    functionLinenumberEnd: 6478
    functionName: getOpclasses
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - findNamespace
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - appendPQExpBufferStr
    - PQgetvalue
    - selectDumpableObject
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - getRoleName
    - PQclear
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getOpclasses(Archive *fout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6498,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6505,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6510,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6512,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6514,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6516,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6517,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6518,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6519,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6520,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6525,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6525,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6526,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6526,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6527,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6528,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6528,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6530,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6530,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6530,1
    - Dst: getRoleName
      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: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6534,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6537,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6539,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6540
      start: 6484
    functionDepth: 4
    functionLinenumber: 6484
    functionLinenumberEnd: 6540
    functionName: getOpfamilies
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - findNamespace
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - appendPQExpBufferStr
    - PQgetvalue
    - selectDumpableObject
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - getRoleName
    - PQclear
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getOpfamilies(Archive *fout)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6553,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6576,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6595,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6601,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6605,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6617,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6623,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6626,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6628,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6630,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6632,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6633,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6634,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6635,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6636,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6637,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6638,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6639,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6640,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6645,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6645,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6646,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6646,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6647,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6648,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6648,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6650,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6650,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6650,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6651,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6651,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6652,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6652,1
    - Dst: getRoleName
      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: atoi
      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_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6663,1
    - Dst: parseOidArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6664,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6664,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6671,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6674,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6678,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6680,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 52
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6681
      start: 6546
    functionDepth: 4
    functionLinenumber: 6546
    functionLinenumberEnd: 6681
    functionName: getAggregates
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendPQExpBufferChar
    - PQgetvalue
    - findNamespace
    - atooid
    - createPQExpBuffer
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - getRoleName
    - PQclear
    - PQntuples
    - atoi
    - pg_malloc
    - PQfnumber
    - destroyPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - parseOidArray
    - appendPQExpBuffer
    - selectDumpableObject
    - PQgetisnull
    linkageType: ''
    returnType: void
    signature: void getAggregates(Archive *fout)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6694,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6736,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6767,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6773,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6775,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6779,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6800,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6808,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6814,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6817,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6819,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6821,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6823,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6824,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6825,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6826,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6827,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6828,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6829,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6830,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6831,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6832,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6833,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6838,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6838,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6839,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6839,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6840,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6841,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6841,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6843,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6843,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6843,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6844,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6844,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6845,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6845,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6848,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6848,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6849,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6849,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6850,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6850,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6851,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6851,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6856,1
    - Dst: parseOidArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6857,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6857,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6863,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6866,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6870,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6872,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 57
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6873
      start: 6687
    functionDepth: 4
    functionLinenumber: 6687
    functionLinenumberEnd: 6873
    functionName: getFuncs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendPQExpBufferChar
    - PQgetvalue
    - pg_malloc0
    - findNamespace
    - atooid
    - createPQExpBuffer
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - getRoleName
    - PQclear
    - PQntuples
    - atoi
    - pg_malloc
    - PQfnumber
    - destroyPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - parseOidArray
    - appendPQExpBuffer
    - selectDumpableObject
    - PQgetisnull
    linkageType: ''
    returnType: void
    signature: void getFuncs(Archive *fout)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6898,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6904,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6905,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6910,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6913,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6943,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    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: 6950
      start: 6882
    functionDepth: 2
    functionLinenumber: 6882
    functionLinenumberEnd: 6950
    functionName: getRelationStatistics
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - AssignDumpId
    - pg_strdup
    - pstrdup
    - pg_malloc
    - pg_fatal
    - pg_malloc0
    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: 26
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:6966,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7026,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7035,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7037,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7039,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7057,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7060,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7064,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7067,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7071,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7074,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7078,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7081,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7086,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7089,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7093,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7098,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7102,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7105,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7109,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7112,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7116,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7119,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7128,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7141,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7149,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7152,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7164,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7166,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7167,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7168,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7169,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7170,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7171,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7172,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7175,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7177,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7190,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7192,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7193,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7194,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7195,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7196,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7197,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7198,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7199,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7200,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7201,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7202,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7203,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7204,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7205,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7206,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7207,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7208,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7209,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7210,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7211,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7212,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7213,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7214,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7215,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7216,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7217,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7218,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7219,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7220,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7221,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7222,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7223,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7224,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7225,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7226,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7227,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7228,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7229,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7230,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7231,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7242,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7243,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7244,1
    - Dst: GetConnection
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7244,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7245,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7248,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7252,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7252,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7253,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7253,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7256,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7256,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7257,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7257,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7258,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7259,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7259,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7261,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7261,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7261,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7262,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7262,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7263,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7263,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7266,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7267,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7267,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7268,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7268,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7269,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7269,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7270,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7270,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7271,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7271,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7272,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7272,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7273,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7276,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7276,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7277,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7284,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7284,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7285,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7285,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7287,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7287,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7288,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7288,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7289,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7289,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7290,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7291,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7291,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7292,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7293,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7293,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7294,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7294,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7295,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7295,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7296,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7296,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7297,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7297,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7298,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7298,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7299,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7299,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7300,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7300,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7301,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7304,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7304,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7305,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7305,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7306,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7306,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7307,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7307,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7308,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7311,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7311,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7312,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7312,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7313,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7313,1
    - Dst: selectDumpableTable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7323,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7348,1
    - Dst: getRelationStatistics
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7357,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7359,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7391,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7392,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7395,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7396,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7402,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7403,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7404,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7413,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7414,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7419,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7422,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7424,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 179
    argCount: 2
    argNames:
    - fout
    - numTables
    argTypes:
    - Archive*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7427
      start: 6959
    functionDepth: 4
    functionLinenumber: 6959
    functionLinenumberEnd: 7427
    functionName: getTables
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQgetvalue
    - resetPQExpBuffer
    - pg_malloc0
    - findNamespace
    - atooid
    - createPQExpBuffer
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - getRoleName
    - PQclear
    - strcmp
    - getRelationStatistics
    - fmtQualifiedDumpable
    - PQntuples
    - atoi
    - PQfnumber
    - selectDumpableTable
    - destroyPQExpBuffer
    - ExecuteSqlStatement
    - CppAsString2
    - GetConnection
    - AssignDumpId
    - pg_strdup
    - appendStringLiteralConn
    - appendPQExpBuffer
    - PQgetisnull
    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:7450,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7453,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7455,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 3
    argNames:
    - fout
    - tblinfo
    - numTables
    argTypes:
    - Archive*
    - TableInfo[]
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7492
      start: 7436
    functionDepth: 2
    functionLinenumber: 7436
    functionLinenumberEnd: 7492
    functionName: getOwnedSeqs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - pg_fatal
    - OidIsValid
    - findTableByOid
    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:7507,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7514,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7516,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7518,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7522,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7524,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7525,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7529,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7529,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7530,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7530,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7533,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7535,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - fout
    - numInherits
    argTypes:
    - Archive*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7538
      start: 7501
    functionDepth: 1
    functionLinenumber: 7501
    functionLinenumberEnd: 7538
    functionName: getInherits
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - atooid
    - createPQExpBuffer
    - appendPQExpBufferStr
    - PQgetvalue
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - PQclear
    - destroyPQExpBuffer
    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:7571,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7581,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7589,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7591,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7595,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7595,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7598,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7600,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7605,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7607,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7608
      start: 7557
    functionDepth: 2
    functionLinenumber: 7557
    functionLinenumberEnd: 7608
    functionName: getPartitioningInfo
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - atooid
    - createPQExpBuffer
    - appendPQExpBufferStr
    - PQgetvalue
    - ExecuteSqlQuery
    - pg_fatal
    - PQclear
    - destroyPQExpBuffer
    - findTableByOid
    linkageType: ''
    returnType: void
    signature: void getPartitioningInfo(Archive *fout)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7620,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7621,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7664,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7680,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7681,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7683,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7685,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7691,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7693,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7695,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7713,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7716,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7720,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7733,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7741,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7744,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7748,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7751,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7765,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7787,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7800,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7802,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7804,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7805,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7806,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7807,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7808,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7809,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7810,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7811,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7812,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7813,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7814,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7815,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7816,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7817,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7818,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7819,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7820,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7821,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7822,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7823,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7824,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7825,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7826,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7827,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7828,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7829,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7830,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7831,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7832,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7834,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7843,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7843,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7851,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7851,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7865,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7869,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7881,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7881,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7882,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7882,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7883,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7883,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7886,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7886,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7887,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7887,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7888,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7890,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7890,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7893,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7893,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7894,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7894,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7895,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7895,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7896,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7896,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7897,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7897,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7898,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7898,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7899,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7899,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7900,1
    - Dst: parseOidArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7901,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7901,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7903,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7904,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7905,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7906,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7906,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7917,1
    - Dst: parsePGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7919,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7919,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7921,1
    - Dst: getRelationStatistics
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7924,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7925,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7929,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7938,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7940,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7940,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7941,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7941,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7942,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7944,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7944,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7950,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7950,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7955,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7956,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7957,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7963,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7973,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7975,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:7976,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 147
    argCount: 3
    argNames:
    - fout
    - tblinfo
    - numTables
    argTypes:
    - Archive*
    - TableInfo[]
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7977
      start: 7617
    functionDepth: 3
    functionLinenumber: 7617
    functionLinenumberEnd: 7977
    functionName: getIndexes
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendPQExpBufferChar
    - parsePGArray
    - PQgetvalue
    - addObjectDependency
    - atooid
    - createPQExpBuffer
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - PQclear
    - getRelationStatistics
    - PQntuples
    - atoi
    - pg_malloc
    - PQfnumber
    - pg_fatal
    - destroyPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - parseOidArray
    - appendPQExpBuffer
    - PQgetisnull
    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:8006,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8009,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8013,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8017,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8019,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8021,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8022,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8023,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8024,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8025,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8026,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8027,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8029,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: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8035,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8035,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8036,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8037,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8037,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8039,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8039,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8039,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8040,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8040,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8042,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8042,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8042,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8043,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8046,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8046,1
    - Dst: selectDumpableStatisticsObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8049,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8052,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8053,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8054
      start: 7986
    functionDepth: 4
    functionLinenumber: 7986
    functionLinenumberEnd: 8054
    functionName: getExtendedStatistics
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - findNamespace
    - PQntuples
    - atoi
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - appendPQExpBufferStr
    - PQgetvalue
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - getRoleName
    - selectDumpableStatisticsObject
    - PQgetisnull
    - PQclear
    - destroyPQExpBuffer
    - findTableByOid
    linkageType: ''
    returnType: void
    signature: void getExtendedStatistics(Archive *fout)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8068,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8069,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8091,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8101,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8102,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8104,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8106,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8110,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8112,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8113,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8120,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8122,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8125,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8127,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8129,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8130,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8131,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8132,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8133,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8134,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8135,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8137,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8142,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8142,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8158,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8162,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8162,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8163,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8163,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8164,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8165,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8165,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8170,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8170,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8171,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8171,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8184,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8187,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8187,1
    - Dst: addConstrChildIdxDeps
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8200,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8207,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8209,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8210,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 71
    argCount: 3
    argNames:
    - fout
    - tblinfo
    - numTables
    argTypes:
    - Archive*
    - TableInfo[]
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8211
      start: 8065
    functionDepth: 2
    functionLinenumber: 8065
    functionLinenumberEnd: 8211
    functionName: getConstraints
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendPQExpBufferChar
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - addConstrChildIdxDeps
    - appendPQExpBufferStr
    - PQgetvalue
    - appendPQExpBuffer
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - pg_fatal
    - PQclear
    - destroyPQExpBuffer
    - findTableByOid
    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:8229,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8235,1
    - Dst: addConstrChildIdxDeps
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8238,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - dobj
    - refidx
    argTypes:
    - DumpableObject*
    - IndxInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8240
      start: 8224
    functionDepth: 2
    functionLinenumber: 8224
    functionLinenumberEnd: 8240
    functionName: addConstrChildIdxDeps
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 2
    functionsReached:
    - Assert
    - addConstrChildIdxDeps
    - addObjectDependency
    linkageType: ''
    returnType: void
    signature: void addConstrChildIdxDeps(DumpableObject *dobj, const IndxInfo *refidx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8252,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8263,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8272,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8277,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8281,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8283,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8285,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8286,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8287,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8288,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8290,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8297,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8300,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8300,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8301,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8301,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8302,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8303,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8303,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8308,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8308,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8324,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8328,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8330,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 38
    argCount: 2
    argNames:
    - fout
    - tyinfo
    argTypes:
    - Archive*
    - TypeInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8331
      start: 8247
    functionDepth: 2
    functionLinenumber: 8247
    functionLinenumberEnd: 8331
    functionName: getDomainConstraints
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - appendPQExpBufferStr
    - PQgetvalue
    - printfPQExpBuffer
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - PQclear
    - destroyPQExpBuffer
    - ExecuteSqlStatement
    - addObjectDependency
    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:8343,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8353,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8360,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8362,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8364,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8366,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8367,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8368,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8369,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8370,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8371,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8372,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8379,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8379,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8380,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8380,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8381,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8382,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8382,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8383,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8383,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8384,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8386,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8390,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8391,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8392,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8406,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8413,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8422,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8424,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 40
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8425
      start: 8337
    functionDepth: 2
    functionLinenumber: 8337
    functionLinenumberEnd: 8425
    functionName: getRules
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - appendPQExpBufferStr
    - PQgetvalue
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - pg_fatal
    - PQclear
    - destroyPQExpBuffer
    - addObjectDependency
    - findTableByOid
    linkageType: ''
    returnType: void
    signature: void getRules(Archive *fout)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8437,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8438,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8459,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8470,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8471,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8473,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8485,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8508,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8528,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8546,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8558,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8560,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8562,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8563,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8564,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8565,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8566,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8567,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8568,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8570,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8579,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8579,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: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8599,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8608,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8608,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8609,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8609,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8610,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8611,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8611,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8614,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8615,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8616,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8616,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8620,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8622,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8623,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 61
    argCount: 3
    argNames:
    - fout
    - tblinfo
    - numTables
    argTypes:
    - Archive*
    - TableInfo[]
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8624
      start: 8434
    functionDepth: 2
    functionLinenumber: 8434
    functionLinenumberEnd: 8624
    functionName: getTriggers
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendPQExpBufferChar
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - PQgetvalue
    - appendPQExpBuffer
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - pg_fatal
    - PQclear
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getTriggers(Archive *fout, TableInfo tblinfo[], int numTables)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8651,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8653,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8663,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8665,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8667,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8669,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8670,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8671,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8672,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8673,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8674,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8675,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8676,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8681,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8681,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8682,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8682,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8683,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8684,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8684,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8685,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8685,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8686,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8686,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8687,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8687,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8688,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8688,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8689,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8689,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8690,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8693,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8696,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8698,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 32
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8699
      start: 8630
    functionDepth: 4
    functionLinenumber: 8630
    functionLinenumberEnd: 8699
    functionName: getEventTriggers
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - appendPQExpBufferStr
    - PQgetvalue
    - selectDumpableObject
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - getRoleName
    - PQclear
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getEventTriggers(Archive *fout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8714,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8727,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8737,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8739,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8741,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8743,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8744,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8745,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8746,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8747,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8748,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8749,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8750,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8751,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8752,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8757,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8757,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8758,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8758,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8759,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8761,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8761,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8762,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8762,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8763,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8763,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8766,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8767,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8767,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8768,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8768,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8769,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8769,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8770,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8770,1
    - Dst: selectDumpableProcLang
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8773,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8776,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8780,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8782,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 36
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8783
      start: 8708
    functionDepth: 4
    functionLinenumber: 8708
    functionLinenumberEnd: 8783
    functionName: getProcLangs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - selectDumpableProcLang
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - appendPQExpBufferStr
    - PQgetvalue
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - getRoleName
    - PQgetisnull
    - PQclear
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getProcLangs(Archive *fout)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8798,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8810,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8823,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8829,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8831,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8833,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8835,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8836,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8837,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8838,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8839,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8840,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8841,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8850,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8850,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8851,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8851,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8852,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8853,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8853,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8854,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8854,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8855,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8855,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8856,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8857,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8864,1
    - Dst: findTypeByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8865,1
    - Dst: findTypeByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8866,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8868,1
    - Dst: selectDumpableCast
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8873,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8876,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8878,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 36
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8879
      start: 8792
    functionDepth: 4
    functionLinenumber: 8792
    functionLinenumberEnd: 8879
    functionName: getCasts
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - findTypeByOid
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - appendPQExpBufferStr
    - PQgetvalue
    - appendPQExpBuffer
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - selectDumpableCast
    - PQclear
    - destroyPQExpBuffer
    - initPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getCasts(Archive *fout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8888,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8889,1
    - Dst: ExecuteSqlQueryForSingleRow
      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: fmtId
      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: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8892,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8893,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - fout
    - langid
    argTypes:
    - Archive*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8896
      start: 8881
    functionDepth: 1
    functionLinenumber: 8881
    functionLinenumberEnd: 8896
    functionName: get_language_name
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - createPQExpBuffer
    - pg_strdup
    - ExecuteSqlQueryForSingleRow
    - PQgetvalue
    - appendPQExpBuffer
    - fmtId
    - PQclear
    - destroyPQExpBuffer
    linkageType: ''
    returnType: char
    signature: 'char *

      get_language_name(Archive *fout, Oid langid)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8921,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8923,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8928,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8930,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8932,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8934,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8935,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8936,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8937,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8938,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8939,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8948,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8948,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8949,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8949,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8950,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8951,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8951,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8952,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8952,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8953,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8953,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8954,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8954,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8961,1
    - Dst: findTypeByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8962,1
    - Dst: get_language_name
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8963,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8965,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8968,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8971,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8974,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8976,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8977
      start: 8902
    functionDepth: 4
    functionLinenumber: 8902
    functionLinenumberEnd: 8977
    functionName: getTransforms
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - findTypeByOid
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - appendPQExpBufferStr
    - PQgetvalue
    - appendPQExpBuffer
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - selectDumpableObject
    - get_language_name
    - free
    - PQclear
    - destroyPQExpBuffer
    - initPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getTransforms(Archive *fout)
  - BBCount: 42
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8990,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8991,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:8992,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9032,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9033,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9048,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9049,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9055,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9056,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9059,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9060,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9069,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9113,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9122,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9130,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9133,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9137,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9140,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9144,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9148,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9152,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9155,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9159,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9171,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9179,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9183,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9185,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9187,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9188,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9189,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9190,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9191,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9192,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9193,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9194,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9195,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9196,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9197,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9198,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9199,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9200,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9201,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9202,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9203,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9204,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9205,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9206,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9207,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9208,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9209,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9210,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9213,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9214,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9223,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9223,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9230,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9230,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9244,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9248,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9253,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9254,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9255,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9256,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9257,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9258,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9259,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9260,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9261,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9262,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9263,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9264,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9265,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9266,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9267,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9268,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9269,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9270,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9271,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9272,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9273,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9274,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9279,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9279,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9280,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9282,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9282,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9283,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9283,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9284,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9287,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9287,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9288,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9289,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9290,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9291,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9293,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9294,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9294,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9295,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9296,1
    - Dst: determineNotNullFlags
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9299,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9308,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9309,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9309,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9310,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9310,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9311,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9311,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9312,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9313,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9313,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9314,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9314,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9316,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9324,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9325,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9331,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9333,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9345,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9347,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9349,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9356,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9358,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9359,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9364,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9364,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9365,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9365,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9366,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9366,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9367,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9367,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9368,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9383,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9387,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9400,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9403,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9405,1
    - Dst: shouldPrintColumn
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9437,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9455,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9462,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9480,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9482,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9483,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9492,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9494,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9495,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9497,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9498,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9499,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9500,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9501,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9502,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9508,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9508,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9514,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9514,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9528,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: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9534,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9534,1
    - Dst: AssignDumpId
      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: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9541,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9541,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9546,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9559,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9578,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9580,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9581,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9591,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9593,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9594,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9596,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9597,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9598,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9599,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9600,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9601,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9602,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9608,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9608,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9614,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9614,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9628,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9632,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9632,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9636,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9637,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9644,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9647,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9647,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9648,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9648,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9649,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9650,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9650,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9655,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9655,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9660,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9681,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9691,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9694,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9695,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9696,1
    CyclomaticComplexity: 73
    EdgeCount: 73
    ICount: 298
    argCount: 3
    argNames:
    - fout
    - tblinfo
    - numTables
    argTypes:
    - Archive*
    - TableInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9697
      start: 8986
    functionDepth: 2
    functionLinenumber: 8986
    functionLinenumberEnd: 9697
    functionName: getTableAttrs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendPQExpBufferChar
    - PQgetvalue
    - resetPQExpBuffer
    - addObjectDependency
    - atooid
    - createPQExpBuffer
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - pg_log_info
    - PQclear
    - pg_log_error
    - PQntuples
    - atoi
    - shouldPrintColumn
    - pg_log_error_hint
    - pg_malloc
    - PQfnumber
    - pg_fatal
    - destroyPQExpBuffer
    - pg_strdup
    - determineNotNullFlags
    - AssignDumpId
    - appendPQExpBuffer
    - printfPQExpBuffer
    - PQgetisnull
    - exit_nicely
    - ngettext
    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:9767,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9769,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9773,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9774,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9775,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9778,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9795,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9796,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9811,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9818,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9830,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9833,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9833,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9840,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9842,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9843,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9848,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9848,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9850,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: 9854
      start: 9746
    functionDepth: 1
    functionLinenumber: 9746
    functionLinenumberEnd: 9854
    functionName: determineNotNullFlags
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendPQExpBufferChar
    - createPQExpBuffer
    - appendPQExpBufferStr
    - PQgetvalue
    - appendPQExpBuffer
    - pstrdup
    - PQgetisnull
    - free
    - strcmp
    - psprintf
    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: 9881
      start: 9873
    functionDepth: 0
    functionLinenumber: 9873
    functionLinenumberEnd: 9881
    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:9906,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9913,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9918,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9920,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9922,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9924,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9925,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9926,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9927,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9928,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9929,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9930,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9931,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9932,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9937,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9937,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9938,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9938,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9939,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9940,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9940,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9942,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9942,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9942,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9943,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9943,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9944,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9944,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9945,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9945,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9946,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9946,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9947,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9947,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9950,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9953,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9955,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 31
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9956
      start: 9888
    functionDepth: 4
    functionLinenumber: 9888
    functionLinenumberEnd: 9956
    functionName: getTSParsers
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - findNamespace
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - appendPQExpBufferStr
    - PQgetvalue
    - selectDumpableObject
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - PQclear
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getTSParsers(Archive *fout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9978,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9980,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9985,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9987,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9989,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9991,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9992,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9993,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9994,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9995,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9996,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:9997,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10002,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10002,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10003,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10003,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10004,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10005,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10005,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10007,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10007,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10007,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10008,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10008,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10009,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10009,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10010,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10013,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10013,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10016,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10019,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10021,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10022
      start: 9962
    functionDepth: 4
    functionLinenumber: 9962
    functionLinenumberEnd: 10022
    functionName: getTSDictionaries
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - findNamespace
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - appendPQExpBufferStr
    - PQgetvalue
    - selectDumpableObject
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - getRoleName
    - PQgetisnull
    - PQclear
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getTSDictionaries(Archive *fout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10043,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10045,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10049,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10051,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10053,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10055,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10056,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10057,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10058,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10059,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10060,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10065,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10065,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10066,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10066,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10067,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10068,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10068,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10070,1
    - Dst: atooid
      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: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10071,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10071,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10072,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10072,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10075,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10078,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10080,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10081
      start: 10028
    functionDepth: 4
    functionLinenumber: 10028
    functionLinenumberEnd: 10081
    functionName: getTSTemplates
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - findNamespace
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - appendPQExpBufferStr
    - PQgetvalue
    - selectDumpableObject
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - PQclear
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getTSTemplates(Archive *fout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10102,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10104,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10108,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10110,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10112,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10114,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10115,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10116,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10117,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10118,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10119,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10124,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10124,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10125,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10125,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10126,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10127,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10127,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10129,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10129,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10129,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10130,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10130,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10131,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10131,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10134,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10137,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10140
      start: 10087
    functionDepth: 4
    functionLinenumber: 10087
    functionLinenumberEnd: 10140
    functionName: getTSConfigurations
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - findNamespace
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - appendPQExpBufferStr
    - PQgetvalue
    - selectDumpableObject
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - getRoleName
    - PQclear
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getTSConfigurations(Archive *fout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10164,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10166,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10180,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10182,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10184,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10186,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10187,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10188,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10189,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10190,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10191,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10192,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10193,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10194,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10199,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10199,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10200,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10200,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10201,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10202,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10202,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10204,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10204,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10205,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10205,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10208,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10208,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10209,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10209,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10210,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10210,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10211,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10211,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10214,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10217,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10221,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10223,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 36
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10224
      start: 10146
    functionDepth: 4
    functionLinenumber: 10146
    functionLinenumberEnd: 10224
    functionName: getForeignDataWrappers
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - appendPQExpBufferStr
    - PQgetvalue
    - selectDumpableObject
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - getRoleName
    - PQgetisnull
    - PQclear
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getForeignDataWrappers(Archive *fout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10249,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10251,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10263,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10265,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10267,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10269,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10270,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10271,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10272,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10273,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10274,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10275,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10276,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: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10283,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10283,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10284,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10284,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10285,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10286,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10286,1
    - Dst: pg_strdup
      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: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10289,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10289,1
    - Dst: getRoleName
      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: pg_strdup
      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: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10295,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10295,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10296,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10296,1
    - Dst: selectDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10299,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10305,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10309,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10311,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 39
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10312
      start: 10230
    functionDepth: 4
    functionLinenumber: 10230
    functionLinenumberEnd: 10312
    functionName: getForeignServers
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - appendPQExpBufferStr
    - PQgetvalue
    - selectDumpableObject
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - getRoleName
    - PQgetisnull
    - PQclear
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getForeignServers(Archive *fout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10335,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10349,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10361,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10363,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10365,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10367,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10368,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10369,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10370,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10371,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10372,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10373,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10377,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10377,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10380,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10380,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10381,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10381,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10382,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10384,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10384,1
    - Dst: findNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10387,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10391,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10391,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10392,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10392,1
    - Dst: getRoleName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10395,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10395,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10396,1
    - Dst: selectDumpableDefaultACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10402,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10405,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10407,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 33
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10408
      start: 10318
    functionDepth: 3
    functionLinenumber: 10318
    functionLinenumberEnd: 10408
    functionName: getDefaultACLs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - findNamespace
    - PQntuples
    - atooid
    - createPQExpBuffer
    - AssignDumpId
    - pg_strdup
    - selectDumpableDefaultACL
    - appendPQExpBufferStr
    - PQgetvalue
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - getRoleName
    - PQclear
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void getDefaultACLs(Archive *fout)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10418,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10441,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - roleoid_str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10443
      start: 10415
    functionDepth: 1
    functionLinenumber: 10415
    functionLinenumberEnd: 10443
    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:10460,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10462,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10464,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10468,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10468,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10469,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10469,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10472,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10473
      start: 10451
    functionDepth: 1
    functionLinenumber: 10451
    functionLinenumberEnd: 10473
    functionName: collectRoleNames
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - atooid
    - pg_strdup
    - PQgetvalue
    - pg_malloc
    - ExecuteSqlQuery
    - PQclear
    linkageType: ''
    returnType: void
    signature: void collectRoleNames(Archive *fout)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10489,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10495,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10499,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10501,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10504,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10504,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10507,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10515,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10520,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10524,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10526,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10529,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10529,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10530,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10530,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10531,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10531,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10532,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10533,1
    - Dst: findObjectByCatalogId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10539,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10553,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10563,1
    - Dst: pstrdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10579,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10582,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10586,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10589,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 41
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10590
      start: 10486
    functionDepth: 2
    functionLinenumber: 10486
    functionLinenumberEnd: 10590
    functionName: getAdditionalACLs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - atoi
    - atooid
    - createPQExpBuffer
    - pg_log_warning
    - appendPQExpBufferStr
    - PQgetvalue
    - printfPQExpBuffer
    - pstrdup
    - ExecuteSqlQuery
    - PQclear
    - strcmp
    - destroyPQExpBuffer
    - findObjectByCatalogId
    - findTableByOid
    linkageType: ''
    returnType: void
    signature: void getAdditionalACLs(Archive *fout)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10631,1
    - Dst: findComments
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10644,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10671,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10678,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10679,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10681,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10683,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10683,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10684,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10685,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10686,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10688,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10695,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10695,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10696,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10705,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10706,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: 10708
      start: 10615
    functionDepth: 1
    functionLinenumber: 10615
    functionLinenumberEnd: 10708
    functionName: dumpCommentExtended
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - appendStringLiteralAH
    - createPQExpBuffer
    - findComments
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - ARCHIVE_OPTS
    - fmtId
    - createDumpId
    - strcmp
    - destroyPQExpBuffer
    - ArchiveEntry
    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:10721,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: 10723
      start: 10715
    functionDepth: 2
    functionLinenumber: 10715
    functionLinenumberEnd: 10723
    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:10735,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10737,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10738,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10740,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10741,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: 10742
      start: 10731
    functionDepth: 1
    functionLinenumber: 10731
    functionLinenumberEnd: 10742
    functionName: appendNamedArgument
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - appendStringLiteralAH
    - appendPQExpBufferStr
    - appendPQExpBuffer
    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: 6
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10753,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10754,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10788,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10789,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10800,1
    - Dst: appendPGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10802,1
    - Dst: appendPGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10803,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10808,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10809,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10814,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10816,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10817,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10818,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10819,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10820,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10821,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10822,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10825,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10826,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10828
      start: 10749
    functionDepth: 1
    functionLinenumber: 10749
    functionLinenumberEnd: 10828
    functionName: fetchAttributeStats
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - appendStringLiteralAH
    - appendPQExpBufferChar
    - appendPGArray
    - createPQExpBuffer
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - strcmp
    - destroyPQExpBuffer
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      fetchAttributeStats(Archive *fout)'
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10874,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10878,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10882,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10885,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10895,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10900,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10919,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10927,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10933,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10936,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10939,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10942,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10943,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10945,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10946,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10947,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10948,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10949,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10950,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10951,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10961,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10962,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10964,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10966,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10970,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10972,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10975,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10977,1
    - Dst: fetchAttributeStats
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10978,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10982,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10983,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10984,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10985,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10986,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10987,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10988,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10989,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10990,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10991,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10992,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10993,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10994,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10995,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10996,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10997,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:10998,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11001,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11006,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11006,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11007,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11007,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11010,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11011,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11013,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11014,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11015,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11016,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11018,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11019,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11020,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11029,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11030,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11038,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11040,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11048,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11051,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11052,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11053,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11054,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11055,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11056,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11057,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11058,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11059,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11060,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11061,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11062,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11063,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11064,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11065,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11066,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11067,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11068,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11069,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11070,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11071,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11072,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11073,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11074,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11075,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11076,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11077,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11078,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11079,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11080,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11081,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11082,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11083,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11086,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11087,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11088,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11089,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11090,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11091,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11092,1
    - Dst: appendNamedArgument
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11093,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11094,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11096,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11099,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 120
    argCount: 3
    argNames:
    - fout
    - userArg
    - te
    argTypes:
    - Archive*
    - void*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11101
      start: 10837
    functionDepth: 2
    functionLinenumber: 10837
    functionLinenumberEnd: 11101
    functionName: dumpRelationStats_dumper
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - appendStringLiteralAH
    - fetchAttributeStats
    - PQntuples
    - createPQExpBuffer
    - appendNamedArgument
    - appendPQExpBufferStr
    - PQgetvalue
    - appendPQExpBuffer
    - PQfnumber
    - resetPQExpBuffer
    - pg_fatal
    - PQgetisnull
    - PQclear
    - strcmp
    - destroyPQExpBuffer
    - ExecuteSqlStatement
    - initPQExpBuffer
    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:11119,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11119,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11120,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - fout
    - rsinfo
    argTypes:
    - Archive*
    - RelStatsInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11128
      start: 11110
    functionDepth: 1
    functionLinenumber: 11110
    functionLinenumberEnd: 11128
    functionName: dumpRelationStats
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - createDumpId
    - ArchiveEntry
    - ARCHIVE_OPTS
    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:11155,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11163,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11164,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11173,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11174,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11175,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11177,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11178,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11179,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11180,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11181,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11183,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11183,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11184,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11195,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11196,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11197,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11198,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11198,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11200,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11201,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11202,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11203,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11204,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11205,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11206,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11208,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11208,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11209,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11223,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11224,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 36
    argCount: 3
    argNames:
    - fout
    - tbinfo
    - reltypename
    argTypes:
    - Archive*
    - TableInfo*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11225
      start: 11136
    functionDepth: 1
    functionLinenumber: 11136
    functionLinenumberEnd: 11225
    functionName: dumpTableComment
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - appendStringLiteralAH
    - fmtQualifiedDumpable
    - createPQExpBuffer
    - findComments
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - ARCHIVE_OPTS
    - resetPQExpBuffer
    - fmtId
    - createDumpId
    - destroyPQExpBuffer
    - ArchiveEntry
    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: 11297
      start: 11234
    functionDepth: 0
    functionLinenumber: 11234
    functionLinenumberEnd: 11297
    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:11324,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11326,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11330,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11334,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11335,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11336,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11337,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11339,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11341,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11350,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11350,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11351,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11351,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11352,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11352,1
    - Dst: findObjectByCatalogId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11358,1
    - Dst: findTypeByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11372,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11379,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11379,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11386,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11387,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11388
      start: 11311
    functionDepth: 2
    functionLinenumber: 11311
    functionLinenumberEnd: 11388
    functionName: collectComments
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - findTypeByOid
    - PQntuples
    - atoi
    - atooid
    - createPQExpBuffer
    - pg_strdup
    - appendPQExpBufferStr
    - PQgetvalue
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - findObjectByCatalogId
    - PQclear
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void collectComments(Archive *fout)
  - BBCount: 52
    BranchProfiles: []
    Callsites:
    - Dst: dumpNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11413,1
    - Dst: dumpExtension
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11416,1
    - Dst: dumpType
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11419,1
    - Dst: dumpShellType
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11422,1
    - Dst: dumpFunc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11425,1
    - Dst: dumpAgg
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11428,1
    - Dst: dumpOpr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11431,1
    - Dst: dumpAccessMethod
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11434,1
    - Dst: dumpOpclass
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11437,1
    - Dst: dumpOpfamily
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11440,1
    - Dst: dumpCollation
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11443,1
    - Dst: dumpConversion
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11446,1
    - Dst: dumpTable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11449,1
    - Dst: dumpTableAttach
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11452,1
    - Dst: dumpAttrDef
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11455,1
    - Dst: dumpIndex
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11458,1
    - Dst: dumpIndexAttach
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11461,1
    - Dst: dumpStatisticsExt
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11464,1
    - Dst: refreshMatViewData
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11467,1
    - Dst: dumpRule
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11470,1
    - Dst: dumpTrigger
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11473,1
    - Dst: dumpEventTrigger
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11476,1
    - Dst: dumpConstraint
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11479,1
    - Dst: dumpConstraint
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11482,1
    - Dst: dumpProcLang
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11485,1
    - Dst: dumpCast
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11488,1
    - Dst: dumpTransform
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11491,1
    - Dst: dumpSequenceData
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11494,1
    - Dst: dumpTableData
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11497,1
    - Dst: dumpTSParser
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11503,1
    - Dst: dumpTSDictionary
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11506,1
    - Dst: dumpTSTemplate
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11509,1
    - Dst: dumpTSConfig
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11512,1
    - Dst: dumpForeignDataWrapper
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11515,1
    - Dst: dumpForeignServer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11518,1
    - Dst: dumpDefaultACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11521,1
    - Dst: dumpLO
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11524,1
    - Dst: findObjectByDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11532,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11534,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11537,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11538,1
    - Dst: dumpPolicy
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11560,1
    - Dst: dumpPublication
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11563,1
    - Dst: dumpPublicationTable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11566,1
    - Dst: dumpPublicationNamespace
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11569,1
    - Dst: dumpSubscription
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11573,1
    - Dst: dumpSubscriptionTable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11576,1
    - Dst: dumpRelationStats
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11579,1
    CyclomaticComplexity: 51
    EdgeCount: 51
    ICount: 152
    argCount: 2
    argNames:
    - fout
    - dobj
    argTypes:
    - Archive*
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11586
      start: 11396
    functionDepth: 3
    functionLinenumber: 11396
    functionLinenumberEnd: 11586
    functionName: dumpDumpableObject
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - dumpOpclass
    - dumpPublicationNamespace
    - dumpAgg
    - dumpTableAttach
    - dumpIndex
    - dumpShellType
    - dumpAttrDef
    - dumpExtension
    - dumpNamespace
    - dumpIndexAttach
    - dumpCast
    - dumpConstraint
    - dumpCollation
    - dumpTSTemplate
    - dumpTSDictionary
    - dumpRelationStats
    - dumpSubscription
    - dumpTableData
    - dumpType
    - dumpFunc
    - dumpTrigger
    - dumpTSParser
    - dumpSequenceData
    - dumpForeignDataWrapper
    - dumpStatisticsExt
    - dumpPublication
    - dumpForeignServer
    - findObjectByDumpId
    - dumpTable
    - dumpProcLang
    - dumpOpr
    - dumpRule
    - dumpAccessMethod
    - dumpOpfamily
    - pg_fatal
    - dumpEventTrigger
    - ArchiveEntry
    - ARCHIVE_OPTS
    - refreshMatViewData
    - dumpDefaultACL
    - dumpConversion
    - dumpLO
    - dumpPolicy
    - dumpSubscriptionTable
    - dumpTSConfig
    - dumpPublicationTable
    - dumpTransform
    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:11604,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11605,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11607,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11607,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11611,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11612,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11617,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11619,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11624,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11628,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11629,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11641,1
    - Dst: dumpCommentExtended
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11643,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11650,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11655,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11659,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11661,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11662,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 2
    argNames:
    - fout
    - nspinfo
    argTypes:
    - Archive*
    - NamespaceInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11663
      start: 11592
    functionDepth: 2
    functionLinenumber: 11592
    functionLinenumberEnd: 11663
    functionName: dumpNamespace
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - binary_upgrade_extension_member
    - createPQExpBuffer
    - pg_strdup
    - dumpACL
    - appendPQExpBufferStr
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - fmtId
    - dumpCommentExtended
    - dumpSecLabel
    - strcmp
    - destroyPQExpBuffer
    - ArchiveEntry
    - free
    linkageType: ''
    returnType: void
    signature: void dumpNamespace(Archive *fout, const NamespaceInfo *nspinfo)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11681,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11682,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11684,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11684,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11686,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11700,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11701,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11716,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11723,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11725,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11727,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11728,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11729,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11730,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11731,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11732,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11733,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11740,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11741,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11743,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11744,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11745,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11746,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11748,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11749,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11750,1
    - Dst: findObjectByDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11756,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11760,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11761,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11764,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11765,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11769,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11770,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11778,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11783,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11787,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11789,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11790,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 50
    argCount: 2
    argNames:
    - fout
    - extinfo
    argTypes:
    - Archive*
    - ExtensionInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11791
      start: 11669
    functionDepth: 3
    functionLinenumber: 11669
    functionLinenumberEnd: 11791
    functionName: dumpExtension
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendStringLiteralAH
    - appendPQExpBufferChar
    - findObjectByDumpId
    - createPQExpBuffer
    - pg_strdup
    - appendPQExpBufferStr
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - dumpComment
    - fmtId
    - free
    - dumpSecLabel
    - destroyPQExpBuffer
    - ArchiveEntry
    - strlen
    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:11808,1
    - Dst: dumpDomain
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11810,1
    - Dst: dumpCompositeType
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11812,1
    - Dst: dumpEnumType
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11814,1
    - Dst: dumpRangeType
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11816,1
    - Dst: dumpUndefinedType
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11818,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11820,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 2
    argNames:
    - fout
    - tyinfo
    argTypes:
    - Archive*
    - TypeInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11822
      start: 11797
    functionDepth: 1
    functionLinenumber: 11797
    functionLinenumberEnd: 11822
    functionName: dumpType
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - dumpBaseType
    - dumpUndefinedType
    - dumpCompositeType
    - dumpRangeType
    - pg_log_warning
    - dumpEnumType
    - dumpDomain
    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:11832,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11833,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11834,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11848,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11855,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11860,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11864,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11866,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11868,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11868,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11869,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11869,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11875,1
    - Dst: binary_upgrade_set_type_oids_by_type_oid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11878,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11882,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11887,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11892,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11894,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11895,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11896,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11900,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11904,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11905,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11910,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11910,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11911,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11914,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11915,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11918,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11919,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11920,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11925,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11930,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11931,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11941,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11946,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11951,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11956,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11957,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11958,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11959,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11960,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11961,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 56
    argCount: 2
    argNames:
    - fout
    - tyinfo
    argTypes:
    - Archive*
    - TypeInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11962
      start: 11828
    functionDepth: 3
    functionLinenumber: 11828
    functionLinenumberEnd: 11962
    functionName: dumpEnumType
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendStringLiteralAH
    - appendPQExpBufferChar
    - PQgetvalue
    - binary_upgrade_set_type_oids_by_type_oid
    - atooid
    - createPQExpBuffer
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - dumpComment
    - PQclear
    - binary_upgrade_extension_member
    - fmtQualifiedDumpable
    - PQntuples
    - dumpACL
    - PQfnumber
    - fmtId
    - dumpSecLabel
    - destroyPQExpBuffer
    - ExecuteSqlStatement
    - ArchiveEntry
    - pg_strdup
    - ARCHIVE_OPTS
    - printfPQExpBuffer
    - appendPQExpBuffer
    - free
    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:11972,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11973,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11974,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11984,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11987,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11991,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11994,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:11997,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12011,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12016,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12020,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12022,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12022,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12023,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12023,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12029,1
    - Dst: binary_upgrade_set_type_oids_by_type_oid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12032,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12036,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12039,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12040,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12040,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12042,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12042,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12043,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12044,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12044,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12047,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12047,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12049,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12049,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12050,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12050,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12052,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12053,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12054,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12054,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12057,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12057,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12057,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12058,1
    - Dst: findCollationByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12060,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12063,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12064,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12067,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12067,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12068,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12069,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12071,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12071,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12072,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12073,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12075,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12078,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12083,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12084,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12094,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12099,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12104,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12109,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12110,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12111,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12112,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12113,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12114,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 54
    argCount: 2
    argNames:
    - fout
    - tyinfo
    argTypes:
    - Archive*
    - TypeInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12115
      start: 11968
    functionDepth: 3
    functionLinenumber: 11968
    functionLinenumberEnd: 12115
    functionName: dumpRangeType
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQgetvalue
    - binary_upgrade_set_type_oids_by_type_oid
    - atooid
    - createPQExpBuffer
    - appendPQExpBufferStr
    - dumpComment
    - PQclear
    - strcmp
    - binary_upgrade_extension_member
    - fmtQualifiedDumpable
    - dumpACL
    - PQfnumber
    - OidIsValid
    - fmtId
    - dumpSecLabel
    - destroyPQExpBuffer
    - ExecuteSqlStatement
    - ArchiveEntry
    - findCollationByOid
    - ExecuteSqlQueryForSingleRow
    - pg_strdup
    - ARCHIVE_OPTS
    - printfPQExpBuffer
    - appendPQExpBuffer
    - PQgetisnull
    - free
    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:12130,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12131,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12135,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12135,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12136,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12136,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12138,1
    - Dst: binary_upgrade_set_type_oids_by_type_oid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12141,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12145,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12149,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12154,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12155,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12165,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12170,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12175,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12180,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12181,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12182,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12183,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - fout
    - tyinfo
    argTypes:
    - Archive*
    - TypeInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12184
      start: 12126
    functionDepth: 3
    functionLinenumber: 12126
    functionLinenumberEnd: 12184
    functionName: dumpUndefinedType
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - binary_upgrade_extension_member
    - fmtQualifiedDumpable
    - createPQExpBuffer
    - pg_strdup
    - dumpACL
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - binary_upgrade_set_type_oids_by_type_oid
    - dumpComment
    - fmtId
    - dumpSecLabel
    - destroyPQExpBuffer
    - ArchiveEntry
    - free
    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:12194,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12195,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12196,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12228,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12245,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12249,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12252,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12255,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12260,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12264,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12266,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12266,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12267,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12267,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12268,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12268,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12269,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12269,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12270,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12270,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12271,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12271,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12272,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12272,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12273,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12273,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12274,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12274,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12275,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12275,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12275,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12276,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12276,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12276,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12277,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12277,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12277,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12278,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12278,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12278,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12279,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12279,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12279,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12280,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12280,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12280,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12281,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12281,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12282,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12282,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12283,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12283,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12284,1
    - Dst: PQfnumber
      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: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12286,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12286,1
    - Dst: PQgetvalue
      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: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12288,1
    - Dst: PQfnumber
      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: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12290,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12290,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: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12298,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12298,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12299,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12299,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12306,1
    - Dst: binary_upgrade_set_type_oids_by_type_oid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12313,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12317,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12321,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12324,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12325,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12326,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12327,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12328,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12329,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12330,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12331,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12332,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12333,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12334,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12335,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12337,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12338,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12342,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12344,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12346,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12349,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12350,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12352,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12353,1
    - Dst: getFormattedTypeName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12354,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12357,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12359,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12360,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12363,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12364,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12366,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12368,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12369,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12373,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12375,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12377,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12379,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12382,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12384,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12386,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12388,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12390,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12391,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12393,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12396,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12401,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12402,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12412,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12417,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12422,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12427,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12428,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12429,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12430,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12431,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12432,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 116
    argCount: 2
    argNames:
    - fout
    - tyinfo
    argTypes:
    - Archive*
    - TypeInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12433
      start: 12190
    functionDepth: 3
    functionLinenumber: 12190
    functionLinenumberEnd: 12433
    functionName: dumpBaseType
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendStringLiteralAH
    - PQgetvalue
    - binary_upgrade_set_type_oids_by_type_oid
    - getFormattedTypeName
    - atooid
    - createPQExpBuffer
    - appendPQExpBufferStr
    - dumpComment
    - PQclear
    - strcmp
    - binary_upgrade_extension_member
    - fmtQualifiedDumpable
    - dumpACL
    - PQfnumber
    - OidIsValid
    - fmtId
    - dumpSecLabel
    - destroyPQExpBuffer
    - ExecuteSqlStatement
    - ArchiveEntry
    - ExecuteSqlQueryForSingleRow
    - pg_strdup
    - ARCHIVE_OPTS
    - printfPQExpBuffer
    - appendPQExpBuffer
    - PQgetisnull
    - free
    linkageType: ''
    returnType: void
    signature: void dumpBaseType(Archive *fout, const TypeInfo *tyinfo)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12443,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12444,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12445,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12459,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12462,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12472,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12477,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12481,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12483,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12483,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12484,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12484,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12485,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12485,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12486,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12486,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12487,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12487,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12489,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12489,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12494,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12494,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12494,1
    - Dst: binary_upgrade_set_type_oids_by_type_oid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12497,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12502,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12502,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12503,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12503,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12505,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12511,1
    - Dst: findCollationByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12515,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12517,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12517,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12521,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12525,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12527,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12529,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12532,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12542,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12543,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12546,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12548,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12551,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12556,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12557,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12567,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12572,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12577,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12586,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12588,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12589,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12592,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12597,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12600,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12601,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12602,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12603,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12604,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 65
    argCount: 2
    argNames:
    - fout
    - tyinfo
    argTypes:
    - Archive*
    - TypeInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12605
      start: 12439
    functionDepth: 3
    functionLinenumber: 12439
    functionLinenumberEnd: 12605
    functionName: dumpDomain
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendStringLiteralAH
    - PQgetvalue
    - binary_upgrade_set_type_oids_by_type_oid
    - atooid
    - createPQExpBuffer
    - appendPQExpBufferStr
    - dumpComment
    - PQclear
    - binary_upgrade_extension_member
    - fmtQualifiedDumpable
    - dumpACL
    - PQfnumber
    - OidIsValid
    - fmtId
    - dumpSecLabel
    - destroyPQExpBuffer
    - ExecuteSqlStatement
    - ArchiveEntry
    - findCollationByOid
    - ExecuteSqlQueryForSingleRow
    - pg_strdup
    - ARCHIVE_OPTS
    - printfPQExpBuffer
    - appendPQExpBuffer
    - PQgetisnull
    - free
    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:12616,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12617,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12618,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12619,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12643,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12656,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12661,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12665,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12667,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12669,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12670,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12671,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12672,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12673,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12674,1
    - Dst: binary_upgrade_set_type_oids_by_type_oid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12678,1
    - Dst: binary_upgrade_set_pg_class_oids
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12681,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12684,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12684,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12685,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12685,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12687,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12700,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12701,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12702,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12703,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12704,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12705,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12705,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12712,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12713,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12717,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12717,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12720,1
    - Dst: findCollationByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12724,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12726,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12727,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12738,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12738,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12741,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12743,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12747,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12748,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12749,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12750,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12752,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12754,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12755,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12758,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12759,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12761,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12764,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12769,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12770,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12781,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12786,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12791,1
    - Dst: dumpCompositeTypeColComments
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12798,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12800,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12801,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12802,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12803,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12804,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12805,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12806,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 76
    argCount: 2
    argNames:
    - fout
    - tyinfo
    argTypes:
    - Archive*
    - TypeInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12807
      start: 12612
    functionDepth: 3
    functionLinenumber: 12612
    functionLinenumberEnd: 12807
    functionName: dumpCompositeType
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendStringLiteralAH
    - appendPQExpBufferChar
    - PQgetvalue
    - binary_upgrade_set_type_oids_by_type_oid
    - binary_upgrade_set_pg_class_oids
    - atooid
    - createPQExpBuffer
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - dumpComment
    - PQclear
    - binary_upgrade_extension_member
    - fmtQualifiedDumpable
    - PQntuples
    - dumpACL
    - PQfnumber
    - OidIsValid
    - fmtId
    - dumpSecLabel
    - destroyPQExpBuffer
    - ExecuteSqlStatement
    - ArchiveEntry
    - dumpCompositeTypeColComments
    - findCollationByOid
    - pg_strdup
    - ARCHIVE_OPTS
    - printfPQExpBuffer
    - appendPQExpBuffer
    - free
    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:12837,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12845,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12846,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12848,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12849,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12850,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12851,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12859,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12859,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12860,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12862,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12870,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12871,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12872,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12873,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12873,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12875,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12876,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12877,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12878,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12878,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12879,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12880,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12882,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12882,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12883,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
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 3
    argNames:
    - fout
    - tyinfo
    - res
    argTypes:
    - Archive*
    - TypeInfo*
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12899
      start: 12818
    functionDepth: 1
    functionLinenumber: 12818
    functionLinenumberEnd: 12899
    functionName: dumpCompositeTypeColComments
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendStringLiteralAH
    - fmtQualifiedDumpable
    - PQntuples
    - atoi
    - createPQExpBuffer
    - findComments
    - PQgetvalue
    - appendPQExpBuffer
    - appendPQExpBufferStr
    - PQfnumber
    - ARCHIVE_OPTS
    - resetPQExpBuffer
    - fmtId
    - createDumpId
    - destroyPQExpBuffer
    - ArchiveEntry
    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:12917,1
    - Dst: binary_upgrade_set_type_oids_by_type_oid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12929,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12933,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12934,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12937,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12938,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12945,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - fout
    - stinfo
    argTypes:
    - Archive*
    - ShellTypeInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12946
      start: 12907
    functionDepth: 3
    functionLinenumber: 12907
    functionLinenumberEnd: 12946
    functionName: dumpShellType
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - fmtQualifiedDumpable
    - createPQExpBuffer
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - binary_upgrade_set_type_oids_by_type_oid
    - destroyPQExpBuffer
    - ArchiveEntry
    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:12977,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12981,1
    - Dst: findFuncByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12983,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12988,1
    - Dst: findFuncByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:12990,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13001,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13002,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13004,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13005,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13007,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13007,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13009,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13014,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13017,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13018,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13019,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13020,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13021,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13022,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:13037,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13040,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13043,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13047,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13048,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13058,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13063,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13068,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13072,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13074,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13075,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 45
    argCount: 2
    argNames:
    - fout
    - plang
    argTypes:
    - Archive*
    - ProcLangInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13076
      start: 12953
    functionDepth: 3
    functionLinenumber: 12953
    functionLinenumberEnd: 13076
    functionName: dumpProcLang
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - binary_upgrade_extension_member
    - fmtQualifiedDumpable
    - createPQExpBuffer
    - findFuncByOid
    - pg_strdup
    - dumpACL
    - appendPQExpBufferStr
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - OidIsValid
    - fmtId
    - dumpComment
    - dumpSecLabel
    - destroyPQExpBuffer
    - ArchiveEntry
    - free
    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:13090,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13091,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13091,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13093,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13095,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - finfo
    - funcargs
    - is_agg
    argTypes:
    - FuncInfo*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13097
      start: 13085
    functionDepth: 1
    functionLinenumber: 13085
    functionLinenumberEnd: 13097
    functionName: format_function_arguments
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - fmtId
    - appendPQExpBufferStr
    - initPQExpBuffer
    - appendPQExpBuffer
    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:13114,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13116,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13116,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13118,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13122,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13124,1
    - Dst: getFormattedTypeName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13125,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13128,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - fout
    - finfo
    - honor_quotes
    argTypes:
    - Archive*
    - FuncInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13130
      start: 13108
    functionDepth: 1
    functionLinenumber: 13108
    functionLinenumberEnd: 13130
    functionName: format_function_signature
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - getFormattedTypeName
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - fmtId
    - initPQExpBuffer
    linkageType: ''
    returnType: char
    signature: 'char *

      format_function_signature(Archive *fout, const FuncInfo *finfo, bool honor_quotes)'
  - BBCount: 48
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13177,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13178,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13179,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13180,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13185,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13188,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13206,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13209,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13213,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13216,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13220,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13223,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13227,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13230,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13234,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13237,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13240,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13245,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13250,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13254,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13256,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13256,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13257,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13257,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13259,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13259,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13260,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13260,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13267,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13267,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13269,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13269,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13270,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13270,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13271,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13271,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13272,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13272,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13273,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13273,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13274,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13274,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13275,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13275,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13276,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13276,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13277,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13277,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13278,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13278,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13279,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13279,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13280,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13280,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13281,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13281,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13282,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13282,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13283,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13283,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13291,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13295,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13296,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13299,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13306,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13306,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13307,1
    - Dst: appendStringLiteralDQ
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13309,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13314,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13317,1
    - Dst: appendStringLiteralDQ
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13319,1
    - Dst: parsePGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13324,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13325,1
    - Dst: format_function_arguments
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13333,1
    - Dst: format_function_arguments
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13334,1
    - Dst: format_function_signature
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13336,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13338,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13339,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13347,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13350,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13352,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13359,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13361,1
    - Dst: getFormattedTypeName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13363,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13366,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13366,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13370,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13373,1
    - Dst: parseOidArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13374,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13378,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13379,1
    - Dst: getFormattedTypeName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13380,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13383,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13387,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13392,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13394,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13396,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13401,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13404,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13407,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13414,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13416,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13416,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13419,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13420,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13425,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13426,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13430,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13430,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13431,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13433,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13436,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13442,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13444,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13446,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13456,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13460,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13460,1
    - Dst: variable_is_guc_list_quote
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13477,1
    - Dst: SplitGUCList
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13484,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13489,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13490,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13493,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13496,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13499,1
    - Dst: append_depends_on_extension
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13501,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13506,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13511,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13512,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13523,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13528,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13533,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13538,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13540,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13541,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13542,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13543,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13544,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13545,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13546,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13547,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13548,1
    CyclomaticComplexity: 56
    EdgeCount: 56
    ICount: 184
    argCount: 2
    argNames:
    - fout
    - finfo
    argTypes:
    - Archive*
    - FuncInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13549
      start: 13137
    functionDepth: 3
    functionLinenumber: 13137
    functionLinenumberEnd: 13549
    functionName: dumpFunc
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendStringLiteralAH
    - parsePGArray
    - format_function_arguments
    - PQgetvalue
    - psprintf
    - format_function_signature
    - getFormattedTypeName
    - createPQExpBuffer
    - appendPQExpBufferStr
    - dumpComment
    - PQclear
    - strcmp
    - pg_free
    - binary_upgrade_extension_member
    - variable_is_guc_list_quote
    - dumpACL
    - appendStringLiteralDQ
    - pg_malloc
    - PQfnumber
    - pg_fatal
    - fmtId
    - dumpSecLabel
    - destroyPQExpBuffer
    - ExecuteSqlStatement
    - ArchiveEntry
    - SplitGUCList
    - ExecuteSqlQueryForSingleRow
    - parseOidArray
    - printfPQExpBuffer
    - appendPQExpBuffer
    - append_depends_on_extension
    - ARCHIVE_OPTS
    - PQgetisnull
    - free
    - strchr
    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:13572,1
    - Dst: findFuncByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13574,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13576,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13580,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13581,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13582,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13583,1
    - Dst: getFormattedTypeName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13585,1
    - Dst: getFormattedTypeName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13586,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13587,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13590,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13596,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13599,1
    - Dst: format_function_signature
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13604,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13610,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13611,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13612,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13615,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13618,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13622,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13624,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13625,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13627,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13630,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13634,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13638,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13639,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13647,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13651,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13652,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13653,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13654,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 50
    argCount: 2
    argNames:
    - fout
    - cast
    argTypes:
    - Archive*
    - CastInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13655
      start: 13555
    functionDepth: 3
    functionLinenumber: 13555
    functionLinenumberEnd: 13655
    functionName: dumpCast
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - format_function_signature
    - binary_upgrade_extension_member
    - getFormattedTypeName
    - createPQExpBuffer
    - findFuncByOid
    - pg_log_warning
    - appendPQExpBufferStr
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - pg_fatal
    - OidIsValid
    - fmtId
    - dumpComment
    - destroyPQExpBuffer
    - ArchiveEntry
    - free
    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:13678,1
    - Dst: findFuncByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13680,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13682,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13685,1
    - Dst: findFuncByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13687,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13689,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13693,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13694,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13695,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13696,1
    - Dst: get_language_name
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13698,1
    - Dst: getFormattedTypeName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13699,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13701,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13704,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13708,1
    - Dst: format_function_signature
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13714,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13720,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13721,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13722,1
    - Dst: pg_log_warning
      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: format_function_signature
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13735,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13741,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13742,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13743,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13746,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13749,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13751,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13754,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13758,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13762,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13763,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13773,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13777,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13778,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13779,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13780,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13781,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 53
    argCount: 2
    argNames:
    - fout
    - transform
    argTypes:
    - Archive*
    - TransformInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13782
      start: 13660
    functionDepth: 3
    functionLinenumber: 13660
    functionLinenumberEnd: 13782
    functionName: dumpTransform
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - format_function_signature
    - binary_upgrade_extension_member
    - getFormattedTypeName
    - createPQExpBuffer
    - findFuncByOid
    - pg_log_warning
    - appendPQExpBufferStr
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - get_language_name
    - pg_fatal
    - OidIsValid
    - fmtId
    - dumpComment
    - destroyPQExpBuffer
    - ArchiveEntry
    - free
    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:13830,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13833,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13834,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13835,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13836,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13837,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13842,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13856,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13861,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13865,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13867,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13868,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13869,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13870,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13871,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13872,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13873,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13874,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13875,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13876,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13878,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13879,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13880,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13881,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13882,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13883,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13884,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13885,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13886,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13887,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13890,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13891,1
    - Dst: convertRegProcReference
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13894,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13897,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13898,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13901,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13909,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13910,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13912,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13913,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13916,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13918,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13919,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13921,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13922,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13925,1
    - Dst: getFormattedOperatorName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13927,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13930,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13931,1
    - Dst: getFormattedOperatorName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13934,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13937,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13938,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13941,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13942,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13944,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13945,1
    - Dst: convertRegProcReference
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13947,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13950,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13951,1
    - Dst: convertRegProcReference
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13954,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13957,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13958,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13961,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13962,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13965,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13966,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13970,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13975,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13976,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13986,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13990,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13992,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13993,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13994,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13995,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:13996,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 93
    argCount: 2
    argNames:
    - fout
    - oprinfo
    argTypes:
    - Archive*
    - OprInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13997
      start: 13789
    functionDepth: 3
    functionLinenumber: 13789
    functionLinenumberEnd: 13997
    functionName: dumpOpr
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - pg_log_warning
    - PQgetvalue
    - convertRegProcReference
    - getFormattedOperatorName
    - createPQExpBuffer
    - appendPQExpBufferStr
    - dumpComment
    - PQclear
    - strcmp
    - binary_upgrade_extension_member
    - PQfnumber
    - OidIsValid
    - fmtId
    - destroyPQExpBuffer
    - ExecuteSqlStatement
    - ArchiveEntry
    - ExecuteSqlQueryForSingleRow
    - ARCHIVE_OPTS
    - printfPQExpBuffer
    - appendPQExpBuffer
    - free
    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:14016,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14019,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - proc
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14033
      start: 14008
    functionDepth: 1
    functionLinenumber: 14008
    functionLinenumberEnd: 14033
    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:14055,1
    - Dst: findOprByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14058,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14058,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14061,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14066,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14067,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - oproid
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14069
      start: 14049
    functionDepth: 2
    functionLinenumber: 14049
    functionLinenumberEnd: 14069
    functionName: getFormattedOperatorName
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - findOprByOid
    - atooid
    - pg_log_warning
    - fmtId
    - strcmp
    - psprintf
    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:14086,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14088,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14090,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14090,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14092,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - fout
    - funcOid
    argTypes:
    - Archive*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14095
      start: 14079
    functionDepth: 1
    functionLinenumber: 14079
    functionLinenumberEnd: 14095
    functionName: convertTSFunction
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - ExecuteSqlQueryForSingleRow
    - pg_strdup
    - snprintf
    - PQgetvalue
    - PQclear
    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:14113,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14114,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14116,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14116,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14118,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14123,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14126,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14129,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14131,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14132,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14133,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14137,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14139,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14143,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14147,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14148,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14156,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14160,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14161,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14162,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 2
    argNames:
    - fout
    - aminfo
    argTypes:
    - Archive*
    - AccessMethodInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14163
      start: 14101
    functionDepth: 3
    functionLinenumber: 14101
    functionLinenumberEnd: 14163
    functionName: dumpAccessMethod
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - binary_upgrade_extension_member
    - createPQExpBuffer
    - pg_strdup
    - pg_log_warning
    - appendPQExpBufferStr
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - dumpComment
    - fmtId
    - destroyPQExpBuffer
    - ArchiveEntry
    - free
    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:14216,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14217,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14218,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14219,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14222,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14234,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14236,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14237,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14238,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14239,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14240,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14241,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14242,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14245,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14245,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14246,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14247,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14249,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14249,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14250,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14251,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14253,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14253,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14255,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14256,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14257,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14258,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14261,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14262,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14263,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14264,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14265,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14267,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14268,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14270,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14271,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14271,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14272,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14272,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14274,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14278,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14280,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14285,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14293,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14294,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14309,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14311,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14313,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14314,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14315,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14316,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14320,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14321,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14322,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14323,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14326,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14328,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14331,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14333,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14334,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14334,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14335,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14335,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14341,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14353,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14355,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14367,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14369,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14371,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14372,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14373,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14374,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14378,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14379,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14380,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14381,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14384,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14386,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14389,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14391,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14396,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14405,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14407,1
    - Dst: appendPQExpBufferStr
      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:14410,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14411,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14414,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14419,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14420,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14430,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14434,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14435,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14436,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14437,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14438,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14439,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14440,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 105
    argCount: 2
    argNames:
    - fout
    - opcinfo
    argTypes:
    - Archive*
    - OpclassInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14441
      start: 14169
    functionDepth: 3
    functionLinenumber: 14169
    functionLinenumberEnd: 14441
    functionName: dumpOpclass
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQgetvalue
    - resetPQExpBuffer
    - strlen
    - createPQExpBuffer
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - dumpComment
    - PQclear
    - strcmp
    - binary_upgrade_extension_member
    - fmtQualifiedDumpable
    - PQntuples
    - PQfnumber
    - fmtId
    - destroyPQExpBuffer
    - ArchiveEntry
    - ExecuteSqlQueryForSingleRow
    - pg_strdup
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - free
    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:14487,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14488,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14489,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14490,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14496,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14511,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14513,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14515,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14527,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14530,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14532,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14538,1
    - Dst: PQfnumber
      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:14543,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14543,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14545,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14546,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14547,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14548,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14551,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14552,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14553,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14554,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14556,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14559,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14559,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14561,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14562,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14563,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14564,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14571,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14573,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14574,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14575,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14576,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14580,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14581,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14582,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14583,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14586,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14588,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14591,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14593,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14594,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14594,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14595,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14595,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: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14628,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14631,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14631,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14632,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14633,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14636,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14641,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14642,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14652,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14656,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14657,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14658,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14659,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14660,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14661,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14662,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 78
    argCount: 2
    argNames:
    - fout
    - opfinfo
    argTypes:
    - Archive*
    - OpfamilyInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14663
      start: 14450
    functionDepth: 3
    functionLinenumber: 14450
    functionLinenumberEnd: 14663
    functionName: dumpOpfamily
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQgetvalue
    - resetPQExpBuffer
    - strlen
    - createPQExpBuffer
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - dumpComment
    - PQclear
    - binary_upgrade_extension_member
    - fmtQualifiedDumpable
    - PQntuples
    - PQfnumber
    - fmtId
    - destroyPQExpBuffer
    - ArchiveEntry
    - ExecuteSqlQueryForSingleRow
    - pg_strdup
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - free
    linkageType: ''
    returnType: void
    signature: void dumpOpfamily(Archive *fout, const OpfamilyInfo *opfinfo)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14694,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14695,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14696,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14698,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14698,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14701,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14704,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14708,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14713,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14716,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14720,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14723,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14726,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14730,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14733,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14736,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14743,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14745,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14746,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14747,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14748,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14749,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14750,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14752,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14754,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14755,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14759,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14760,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14776,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14777,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14781,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14782,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14786,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14787,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14789,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14790,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14792,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14794,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14796,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14798,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14801,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14803,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14806,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14806,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14807,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14812,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14819,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14821,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14822,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14830,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14832,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14833,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14839,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14840,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14842,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14843,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14848,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14849,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14855,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14857,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14859,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14860,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14864,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14865,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14866,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14867,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14871,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14881,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14882,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14884,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14885,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14886,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14891,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14894,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14899,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14900,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14910,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14914,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14916,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14917,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14918,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14919,1
    CyclomaticComplexity: 51
    EdgeCount: 51
    ICount: 123
    argCount: 2
    argNames:
    - fout
    - collinfo
    argTypes:
    - Archive*
    - CollInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14920
      start: 14669
    functionDepth: 3
    functionLinenumber: 14669
    functionLinenumberEnd: 14920
    functionName: dumpCollation
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendStringLiteralAH
    - pg_log_warning
    - PQgetvalue
    - createPQExpBuffer
    - appendPQExpBufferStr
    - dumpComment
    - PQclear
    - strcmp
    - binary_upgrade_extension_member
    - fmtQualifiedDumpable
    - PQfnumber
    - pg_fatal
    - fmtId
    - destroyPQExpBuffer
    - ArchiveEntry
    - ExecuteSqlQueryForSingleRow
    - pg_strdup
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - PQgetisnull
    - free
    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:14948,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14949,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14950,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14952,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14952,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14955,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14963,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14965,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14966,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14967,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14968,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14970,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14971,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14972,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14973,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14975,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14976,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14978,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14980,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14981,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14982,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14983,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14985,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14988,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14993,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:14994,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15004,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15008,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15010,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15011,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15012,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15013,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 2
    argNames:
    - fout
    - convinfo
    argTypes:
    - Archive*
    - ConvInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15014
      start: 14926
    functionDepth: 3
    functionLinenumber: 14926
    functionLinenumberEnd: 15014
    functionName: dumpConversion
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendStringLiteralAH
    - binary_upgrade_extension_member
    - fmtQualifiedDumpable
    - createPQExpBuffer
    - pg_strdup
    - ExecuteSqlQueryForSingleRow
    - appendPQExpBufferStr
    - PQgetvalue
    - appendPQExpBuffer
    - ARCHIVE_OPTS
    - PQfnumber
    - dumpComment
    - fmtId
    - PQclear
    - destroyPQExpBuffer
    - ArchiveEntry
    - free
    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:15028,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15030,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15030,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15032,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15035,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15038,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15040,1
    - Dst: getFormattedTypeName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15042,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15045,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - agginfo
    - fout
    - honor_quotes
    argTypes:
    - AggInfo*
    - Archive*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15048
      start: 15022
    functionDepth: 1
    functionLinenumber: 15022
    functionLinenumberEnd: 15048
    functionName: format_aggregate_signature
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - getFormattedTypeName
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - fmtId
    - initPQExpBuffer
    linkageType: ''
    returnType: char
    signature: 'char *

      format_aggregate_signature(const AggInfo *agginfo, Archive *fout, bool honor_quotes)'
  - BBCount: 41
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15096,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15097,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15098,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15099,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15104,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15107,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15118,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15130,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15143,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15149,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15156,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15160,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15164,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15169,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15174,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15178,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15180,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15181,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15183,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15183,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15184,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15184,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15185,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15185,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15186,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15186,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15187,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15187,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15188,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15188,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15189,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15189,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15190,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15190,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15191,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15191,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15192,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15192,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15193,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15193,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15194,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15194,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15195,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15195,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15196,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15196,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15197,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15197,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15198,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15198,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15199,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15199,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15200,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15200,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15201,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15202,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15203,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15203,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15209,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15209,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15210,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15210,1
    - Dst: format_function_arguments
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15211,1
    - Dst: format_function_arguments
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15212,1
    - Dst: format_aggregate_signature
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15215,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15226,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15229,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15231,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15235,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15237,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15238,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15241,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15243,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15246,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15252,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15255,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15258,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15261,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15268,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15269,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15271,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15272,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15274,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15275,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15277,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15279,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15285,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15287,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15291,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15293,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15294,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15297,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15299,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15302,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15308,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15311,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15314,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15317,1
    - Dst: getFormattedOperatorName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15324,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15327,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15329,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15333,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15338,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15340,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15342,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15346,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15347,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15350,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15351,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15355,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15360,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15362,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15372,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15378,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15388,1
    - Dst: format_function_signature
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15390,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15393,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15398,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15399,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15400,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15402,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15404,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15405,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15406,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15407,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 162
    argCount: 2
    argNames:
    - fout
    - agginfo
    argTypes:
    - Archive*
    - AggInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15408
      start: 15054
    functionDepth: 3
    functionLinenumber: 15054
    functionLinenumberEnd: 15408
    functionName: dumpAgg
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendStringLiteralAH
    - format_function_arguments
    - PQgetvalue
    - format_function_signature
    - getFormattedOperatorName
    - createPQExpBuffer
    - appendPQExpBufferStr
    - dumpComment
    - PQclear
    - strcmp
    - binary_upgrade_extension_member
    - dumpACL
    - PQfnumber
    - pg_fatal
    - fmtId
    - dumpSecLabel
    - destroyPQExpBuffer
    - format_aggregate_signature
    - ExecuteSqlStatement
    - ArchiveEntry
    - ExecuteSqlQueryForSingleRow
    - ARCHIVE_OPTS
    - printfPQExpBuffer
    - appendPQExpBuffer
    - PQgetisnull
    - free
    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:15426,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15427,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15429,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15429,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15431,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15432,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15434,1
    - Dst: convertTSFunction
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15435,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15436,1
    - Dst: convertTSFunction
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15437,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15438,1
    - Dst: convertTSFunction
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15439,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15441,1
    - Dst: convertTSFunction
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15442,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15443,1
    - Dst: convertTSFunction
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15444,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15446,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15447,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15450,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15455,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15456,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15465,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15469,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15470,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15471,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - fout
    - prsinfo
    argTypes:
    - Archive*
    - TSParserInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15472
      start: 15414
    functionDepth: 3
    functionLinenumber: 15414
    functionLinenumberEnd: 15472
    functionName: dumpTSParser
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - binary_upgrade_extension_member
    - fmtQualifiedDumpable
    - createPQExpBuffer
    - pg_strdup
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - convertTSFunction
    - fmtId
    - dumpComment
    - destroyPQExpBuffer
    - ArchiveEntry
    - free
    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:15494,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15495,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15496,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15498,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15498,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15501,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15505,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15506,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15507,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15509,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15510,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15512,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15513,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15513,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15514,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15514,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15516,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15520,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15522,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15524,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15525,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15528,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15533,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15534,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15544,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15548,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15549,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15550,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15551,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 2
    argNames:
    - fout
    - dictinfo
    argTypes:
    - Archive*
    - TSDictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15552
      start: 15478
    functionDepth: 3
    functionLinenumber: 15478
    functionLinenumberEnd: 15552
    functionName: dumpTSDictionary
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - binary_upgrade_extension_member
    - fmtQualifiedDumpable
    - createPQExpBuffer
    - pg_strdup
    - ExecuteSqlQueryForSingleRow
    - appendPQExpBufferStr
    - PQgetvalue
    - appendPQExpBuffer
    - ARCHIVE_OPTS
    - dumpComment
    - fmtId
    - PQclear
    - destroyPQExpBuffer
    - ArchiveEntry
    - free
    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:15570,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15571,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15573,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15573,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15575,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15576,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15579,1
    - Dst: convertTSFunction
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15580,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15581,1
    - Dst: convertTSFunction
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15582,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15584,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15585,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15588,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15593,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15594,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15603,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15607,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15608,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15609,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - fout
    - tmplinfo
    argTypes:
    - Archive*
    - TSTemplateInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15610
      start: 15558
    functionDepth: 3
    functionLinenumber: 15558
    functionLinenumberEnd: 15610
    functionName: dumpTSTemplate
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - binary_upgrade_extension_member
    - fmtQualifiedDumpable
    - createPQExpBuffer
    - pg_strdup
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - convertTSFunction
    - fmtId
    - dumpComment
    - destroyPQExpBuffer
    - ArchiveEntry
    - free
    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:15636,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15637,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15638,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15640,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15640,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15643,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15647,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15648,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15649,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15651,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15652,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15654,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15654,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15655,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15655,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15657,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15659,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15660,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15670,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15671,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15673,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15674,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15678,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15679,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15682,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15682,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15686,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15687,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15688,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15690,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15691,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15694,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15698,1
    - Dst: PQclear
      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: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15703,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15706,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15711,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15712,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15722,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15726,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15727,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15728,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15729,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 44
    argCount: 2
    argNames:
    - fout
    - cfginfo
    argTypes:
    - Archive*
    - TSConfigInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15730
      start: 15616
    functionDepth: 3
    functionLinenumber: 15616
    functionLinenumberEnd: 15730
    functionName: dumpTSConfig
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQgetvalue
    - resetPQExpBuffer
    - createPQExpBuffer
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - dumpComment
    - PQclear
    - strcmp
    - binary_upgrade_extension_member
    - fmtQualifiedDumpable
    - PQntuples
    - PQfnumber
    - fmtId
    - destroyPQExpBuffer
    - ArchiveEntry
    - ExecuteSqlQueryForSingleRow
    - pg_strdup
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - free
    linkageType: ''
    returnType: void
    signature: void dumpTSConfig(Archive *fout, const TSConfigInfo *cfginfo)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15748,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15749,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15751,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15751,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15753,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15756,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15757,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15759,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15760,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15762,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15763,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15765,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15767,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15771,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15776,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15777,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15786,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15792,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15796,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15798,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15799,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - fout
    - fdwinfo
    argTypes:
    - Archive*
    - FdwInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15800
      start: 15736
    functionDepth: 3
    functionLinenumber: 15736
    functionLinenumberEnd: 15800
    functionName: dumpForeignDataWrapper
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - binary_upgrade_extension_member
    - createPQExpBuffer
    - pg_strdup
    - dumpACL
    - appendPQExpBufferStr
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - dumpComment
    - fmtId
    - free
    - strcmp
    - destroyPQExpBuffer
    - ArchiveEntry
    - strlen
    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:15821,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15822,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15823,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15825,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15825,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15828,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15832,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15833,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15835,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15836,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15838,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15839,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15841,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15843,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15844,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15847,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15848,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15848,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15850,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15851,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15853,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15855,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15859,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15863,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15864,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15873,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15879,1
    - Dst: dumpUserMappings
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15885,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15890,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15892,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15894,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15895,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15896,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 2
    argNames:
    - fout
    - srvinfo
    argTypes:
    - Archive*
    - ForeignServerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15897
      start: 15806
    functionDepth: 3
    functionLinenumber: 15806
    functionLinenumberEnd: 15897
    functionName: dumpForeignServer
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendStringLiteralAH
    - dumpUserMappings
    - binary_upgrade_extension_member
    - createPQExpBuffer
    - pg_strdup
    - ExecuteSqlQueryForSingleRow
    - dumpACL
    - appendPQExpBufferStr
    - PQgetvalue
    - appendPQExpBuffer
    - ARCHIVE_OPTS
    - dumpComment
    - fmtId
    - PQclear
    - free
    - destroyPQExpBuffer
    - ArchiveEntry
    - strlen
    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:15922,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15923,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15924,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15925,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15935,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15948,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15950,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15951,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15952,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15959,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15960,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15962,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15963,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15963,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15964,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15964,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15966,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15967,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15969,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15971,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15972,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15972,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15973,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15973,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15975,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15976,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15979,1
    - Dst: createDumpId
      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: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15989,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15991,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15992,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15993,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:15994,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: 15995
      start: 15906
    functionDepth: 1
    functionLinenumber: 15906
    functionLinenumberEnd: 15995
    functionName: dumpUserMappings
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - createPQExpBuffer
    - appendPQExpBufferStr
    - PQgetvalue
    - appendPQExpBuffer
    - ARCHIVE_OPTS
    - PQfnumber
    - ExecuteSqlQuery
    - resetPQExpBuffer
    - fmtId
    - PQclear
    - createDumpId
    - destroyPQExpBuffer
    - ArchiveEntry
    - strlen
    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:16012,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16013,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16037,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16042,1
    - Dst: buildDefaultACLCommands
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16045,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16053,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16057,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16058,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16066,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16067,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 2
    argNames:
    - fout
    - daclinfo
    argTypes:
    - Archive*
    - DefaultACLInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16068
      start: 16000
    functionDepth: 1
    functionLinenumber: 16000
    functionLinenumberEnd: 16068
    functionName: dumpDefaultACL
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - createPQExpBuffer
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - pg_fatal
    - buildDefaultACLCommands
    - destroyPQExpBuffer
    - ArchiveEntry
    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:16112,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16115,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16133,1
    - Dst: buildACLCommands
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16134,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16137,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16139,1
    - Dst: buildACLCommands
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16159,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16162,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16167,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16172,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16174,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16176,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16182,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16184,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16185,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16194,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16197,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: 16200
      start: 16092
    functionDepth: 1
    functionLinenumber: 16092
    functionLinenumberEnd: 16200
    functionName: dumpACL
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 14
    functionsReached:
    - createPQExpBuffer
    - appendPQExpBufferStr
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - pg_fatal
    - buildACLCommands
    - createDumpId
    - strcmp
    - destroyPQExpBuffer
    - ArchiveEntry
    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:16239,1
    - Dst: findSecLabels
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16252,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16254,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16264,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16266,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16268,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16268,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16269,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16270,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16271,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16276,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16278,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16279,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16279,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16280,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16288,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16291,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: 16292
      start: 16220
    functionDepth: 1
    functionLinenumber: 16220
    functionLinenumberEnd: 16292
    functionName: dumpSecLabel
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 14
    functionsReached:
    - appendStringLiteralAH
    - findSecLabels
    - createPQExpBuffer
    - appendPQExpBufferStr
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - fmtId
    - createDumpId
    - strcmp
    - destroyPQExpBuffer
    - ArchiveEntry
    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:16319,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16327,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16328,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16337,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16340,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16341,1
    - Dst: getAttrName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16345,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16347,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16348,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16349,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16349,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16351,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16352,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16353,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16354,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16358,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16359,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16360,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16361,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16361,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16362,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16371,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16372,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 3
    argNames:
    - fout
    - tbinfo
    - reltypename
    argTypes:
    - Archive*
    - TableInfo*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16373
      start: 16300
    functionDepth: 1
    functionLinenumber: 16300
    functionLinenumberEnd: 16373
    functionName: dumpTableSecLabel
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - appendStringLiteralAH
    - findSecLabels
    - fmtQualifiedDumpable
    - createPQExpBuffer
    - appendPQExpBufferStr
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - getAttrName
    - resetPQExpBuffer
    - fmtId
    - createDumpId
    - destroyPQExpBuffer
    - ArchiveEntry
    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: 16451
      start: 16382
    functionDepth: 0
    functionLinenumber: 16382
    functionLinenumberEnd: 16451
    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:16475,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16477,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16482,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16485,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16486,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16487,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16488,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16489,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16491,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16493,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16502,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16502,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16503,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16503,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16504,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16504,1
    - Dst: findObjectByCatalogId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16510,1
    - Dst: findTypeByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16524,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16531,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16531,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16532,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16532,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16539,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16540,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16541
      start: 16461
    functionDepth: 2
    functionLinenumber: 16461
    functionLinenumberEnd: 16541
    functionName: collectSecLabels
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - findTypeByOid
    - PQntuples
    - atoi
    - atooid
    - createPQExpBuffer
    - pg_strdup
    - appendPQExpBufferStr
    - PQgetvalue
    - pg_malloc
    - PQfnumber
    - ExecuteSqlQuery
    - findObjectByCatalogId
    - PQclear
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void collectSecLabels(Archive *fout)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: dumpSequence
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16561,1
    - Dst: dumpTableSchema
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16563,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16567,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16567,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16574,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16588,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16595,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16610,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16627,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16636,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16641,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16645,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16647,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16649,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16650,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16651,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16652,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16653,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16661,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16661,1
    - Dst: dumpACL
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16668,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16672,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16674,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16675,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16678,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 2
    argNames:
    - fout
    - tbinfo
    argTypes:
    - Archive*
    - TableInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16679
      start: 16547
    functionDepth: 2
    functionLinenumber: 16547
    functionLinenumberEnd: 16679
    functionName: dumpTable
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - dumpSequence
    - PQntuples
    - createPQExpBuffer
    - pg_strdup
    - dumpACL
    - appendPQExpBufferStr
    - PQgetvalue
    - printfPQExpBuffer
    - ExecuteSqlQuery
    - fmtId
    - PQclear
    - dumpTableSchema
    - destroyPQExpBuffer
    - ExecuteSqlStatement
    - free
    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:16690,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16691,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16696,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16700,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16702,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16704,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16705,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16708,1
    - Dst: PQgetlength
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16712,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16715,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16719,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16719,1
    - Dst: appendBinaryPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16720,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16720,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16722,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16723,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - fout
    - tbinfo
    argTypes:
    - Archive*
    - TableInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16726
      start: 16687
    functionDepth: 1
    functionLinenumber: 16687
    functionLinenumberEnd: 16726
    functionName: createViewAsClause
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - Assert
    - PQntuples
    - destroyPQExpBuffer
    - createPQExpBuffer
    - PQgetvalue
    - appendPQExpBuffer
    - ExecuteSqlQuery
    - appendBinaryPQExpBuffer
    - pg_fatal
    - PQclear
    - PQgetlength
    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:16739,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16742,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16747,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16748,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16750,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16756,1
    - Dst: findCollationByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16760,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16762,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16763,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16766,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16766,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - fout
    - tbinfo
    argTypes:
    - Archive*
    - TableInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16770
      start: 16736
    functionDepth: 2
    functionLinenumber: 16736
    functionLinenumberEnd: 16770
    functionName: createDummyViewAsClause
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - fmtQualifiedDumpable
    - findCollationByOid
    - createPQExpBuffer
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - OidIsValid
    - fmtId
    linkageType: ''
    returnType: PQExpBuffer
    signature: PQExpBuffer createDummyViewAsClause(Archive *fout, const TableInfo
      *tbinfo)
  - BBCount: 103
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16780,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16781,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16782,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16794,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16796,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16796,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16797,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16797,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16800,1
    - Dst: binary_upgrade_set_type_oids_by_rel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16804,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16817,1
    - Dst: binary_upgrade_set_pg_class_oids
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16820,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16823,1
    - Dst: createDummyViewAsClause
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16826,1
    - Dst: nonemptyReloptions
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16829,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16831,1
    - Dst: appendReloptionsArrayAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16832,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16833,1
    - Dst: createViewAsClause
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16835,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16837,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16838,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16841,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16842,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16859,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16865,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16868,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16869,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16869,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16870,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16871,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16876,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16884,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16897,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16898,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16899,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16900,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16900,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16901,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16901,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16902,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16903,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16919,1
    - Dst: binary_upgrade_set_pg_class_oids
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16922,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16929,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16940,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16941,1
    - Dst: getFormattedTypeName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16942,1
    - Dst: shouldPrintColumn
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16957,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16984,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16991,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16993,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16994,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16998,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:16998,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17008,1
    - Dst: OidIsValid
      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: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17027,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17030,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17033,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17040,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17042,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17043,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17046,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17050,1
    - Dst: findCollationByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17054,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17056,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17057,1
    - Dst: shouldPrintColumn
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17071,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17078,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17080,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17081,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17085,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17086,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17088,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17090,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17111,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17113,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17115,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17116,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17117,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17123,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17124,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17130,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17140,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17146,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17147,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17147,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17149,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17153,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17156,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17156,1
    - Dst: nonemptyReloptions
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17159,1
    - Dst: nonemptyReloptions
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17160,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17164,1
    - Dst: nonemptyReloptions
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17165,1
    - Dst: appendReloptionsArrayAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17168,1
    - Dst: nonemptyReloptions
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17170,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17173,1
    - Dst: appendReloptionsArrayAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17174,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17177,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17182,1
    - Dst: createViewAsClause
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17192,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17193,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17195,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17198,1
    - Dst: append_depends_on_extension
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17202,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17217,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17218,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17220,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17221,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17222,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17223,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17224,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17225,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17265,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17273,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17282,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17283,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17284,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17285,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17289,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17291,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17292,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17297,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17299,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17300,1
    - Dst: appendBinaryPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17303,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17318,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17319,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17322,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17323,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17328,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17329,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17333,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17343,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17362,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17365,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17366,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17371,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17372,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17378,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17381,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17382,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17387,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17388,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17393,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17395,1
    - Dst: appendBinaryPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17398,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17412,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17422,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17423,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17425,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17430,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17433,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17434,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17435,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17439,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17440,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17444,1
    - Dst: appendBinaryPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17445,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17450,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17455,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17457,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17461,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17463,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17464,1
    - Dst: getFormattedTypeName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17466,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17482,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17483,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17487,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17488,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17496,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17497,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17515,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17516,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17519,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17520,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17539,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17541,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17572,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17574,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17599,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17601,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17609,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17611,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17619,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17624,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17628,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17629,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17630,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17647,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17652,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17658,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17662,1
    - Dst: RELKIND_HAS_TABLESPACE
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17678,1
    - Dst: RELKIND_HAS_TABLE_AM
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17681,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17685,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17686,1
    - Dst: dumpTableComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17701,1
    - Dst: dumpTableSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17705,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17724,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17725,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17729,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17730,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:17734,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17735,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17736,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17738,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17739,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17741,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17741,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17742,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17753,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17754,1
    - Dst: dumpTableConstraintComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17766,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17769,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17770,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17771,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17772,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17773,1
    CyclomaticComplexity: 165
    EdgeCount: 165
    ICount: 410
    argCount: 2
    argNames:
    - fout
    - tbinfo
    argTypes:
    - Archive*
    - TableInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17774
      start: 16776
    functionDepth: 4
    functionLinenumber: 16776
    functionLinenumberEnd: 17774
    functionName: dumpTableSchema
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendStringLiteralAH
    - appendPQExpBufferChar
    - nonemptyReloptions
    - pg_log_warning
    - dumpTableConstraintComment
    - PQgetvalue
    - RELKIND_HAS_TABLE_AM
    - appendBinaryPQExpBuffer
    - resetPQExpBuffer
    - createViewAsClause
    - appendReloptionsArrayAH
    - binary_upgrade_set_pg_class_oids
    - dumpTableSecLabel
    - getFormattedTypeName
    - createPQExpBuffer
    - binary_upgrade_set_type_oids_by_rel
    - appendPQExpBufferStr
    - PQclear
    - RELKIND_HAS_TABLESPACE
    - binary_upgrade_extension_member
    - fmtQualifiedDumpable
    - shouldPrintColumn
    - createDummyViewAsClause
    - dumpTableComment
    - PQfnumber
    - OidIsValid
    - fmtId
    - destroyPQExpBuffer
    - ArchiveEntry
    - Assert
    - findCollationByOid
    - ExecuteSqlQueryForSingleRow
    - pg_strdup
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - append_depends_on_extension
    - createDumpId
    - free
    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:17803,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17808,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17811,1
    - Dst: ExecuteSqlStatement
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17816,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17821,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17825,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17826,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17829,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17831,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17832,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17834,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17844,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17845,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17852,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17853,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - fout
    - attachinfo
    argTypes:
    - Archive*
    - TableAttachInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17854
      start: 17791
    functionDepth: 1
    functionLinenumber: 17791
    functionLinenumberEnd: 17854
    functionName: dumpTableAttach
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - fmtQualifiedDumpable
    - createPQExpBuffer
    - ExecuteSqlQueryForSingleRow
    - appendPQExpBufferStr
    - PQgetvalue
    - printfPQExpBuffer
    - appendPQExpBuffer
    - ARCHIVE_OPTS
    - PQclear
    - destroyPQExpBuffer
    - ExecuteSqlStatement
    - ArchiveEntry
    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:17879,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17880,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17882,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17882,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17886,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17888,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17891,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17893,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17895,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17898,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17899,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17907,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17908,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17909,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17910,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - fout
    - adinfo
    argTypes:
    - Archive*
    - AttrDefInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17911
      start: 17859
    functionDepth: 1
    functionLinenumber: 17859
    functionLinenumberEnd: 17911
    functionName: dumpAttrDef
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - fmtQualifiedDumpable
    - createPQExpBuffer
    - pg_strdup
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - fmtId
    - free
    - destroyPQExpBuffer
    - ArchiveEntry
    - psprintf
    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:17940,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - attrnum
    - tblInfo
    argTypes:
    - int
    - TableInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17943
      start: 17920
    functionDepth: 0
    functionLinenumber: 17920
    functionLinenumberEnd: 17943
    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:17964,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17965,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17967,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17967,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17968,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17968,1
    - Dst: binary_upgrade_set_pg_class_oids
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17987,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:17991,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18002,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18003,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18005,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18013,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18013,1
    - Dst: parsePGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18017,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18018,1
    - Dst: parsePGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18019,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18020,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18022,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18026,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18032,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18034,1
    - Dst: append_depends_on_extension
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18040,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18047,1
    - Dst: fmtQualifiedDumpable
      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: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18064,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18067,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18068,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18077,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18078,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18083,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18090,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18091,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18092,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18093,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 46
    argCount: 2
    argNames:
    - fout
    - indxinfo
    argTypes:
    - Archive*
    - IndxInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18094
      start: 17949
    functionDepth: 3
    functionLinenumber: 17949
    functionLinenumberEnd: 18094
    functionName: dumpIndex
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - fmtQualifiedDumpable
    - destroyPQExpBuffer
    - parsePGArray
    - createPQExpBuffer
    - pg_strdup
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - append_depends_on_extension
    - pg_fatal
    - fmtId
    - free
    - dumpComment
    - binary_upgrade_set_pg_class_oids
    - ArchiveEntry
    - strlen
    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:18109,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18111,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18112,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18113,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18114,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18127,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18128,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18135,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - fout
    - attachinfo
    argTypes:
    - Archive*
    - IndexAttachInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18137
      start: 18100
    functionDepth: 1
    functionLinenumber: 18100
    functionLinenumberEnd: 18137
    functionName: dumpIndexAttach
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - fmtQualifiedDumpable
    - createPQExpBuffer
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - destroyPQExpBuffer
    - ArchiveEntry
    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:18158,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18159,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18160,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18162,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18162,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18164,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18168,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18170,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18173,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18181,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18182,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18183,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18187,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18188,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18191,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18193,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18203,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18209,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18210,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18211,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18212,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18213,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 2
    argNames:
    - fout
    - statsextinfo
    argTypes:
    - Archive*
    - StatsExtInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18214
      start: 18143
    functionDepth: 3
    functionLinenumber: 18143
    functionLinenumberEnd: 18214
    functionName: dumpStatisticsExt
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - fmtQualifiedDumpable
    - createPQExpBuffer
    - pg_strdup
    - ExecuteSqlQueryForSingleRow
    - PQgetvalue
    - appendPQExpBuffer
    - ARCHIVE_OPTS
    - dumpComment
    - fmtId
    - PQclear
    - destroyPQExpBuffer
    - ArchiveEntry
    - free
    linkageType: ''
    returnType: void
    signature: void dumpStatisticsExt(Archive *fout, const StatsExtInfo *statsextinfo)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18234,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18235,1
    - Dst: findObjectByDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18248,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18251,1
    - Dst: binary_upgrade_set_pg_class_oids
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18255,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18258,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18259,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18260,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18261,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18266,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18270,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18280,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18281,1
    - Dst: getAttrName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18289,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18291,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18293,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18296,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18299,1
    - Dst: getAttrName
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18308,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18310,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18312,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18315,1
    - Dst: nonemptyReloptions
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18317,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18319,1
    - Dst: appendReloptionsArrayAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18320,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18321,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18326,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18328,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18331,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18343,1
    - Dst: fmtQualifiedDumpable
      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: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18347,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18353,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18354,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18356,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18357,1
    - Dst: append_depends_on_extension
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18361,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18363,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18365,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18366,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18367,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18368,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18370,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18373,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18374,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18399,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18400,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18401,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18402,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18405,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18406,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18407,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18408,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18410,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18413,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18414,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18437,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18438,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18439,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18440,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18443,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18444,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18445,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18446,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18448,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18451,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18452,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18469,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18470,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18471,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18472,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18475,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18476,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18477,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18478,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18480,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18483,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18484,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18495,1
    - Dst: dumpTableConstraintComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18502,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18504,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18505,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18506,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 107
    argCount: 2
    argNames:
    - fout
    - coninfo
    argTypes:
    - Archive*
    - ConstraintInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18507
      start: 18220
    functionDepth: 2
    functionLinenumber: 18220
    functionLinenumberEnd: 18507
    functionName: dumpConstraint
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendPQExpBufferChar
    - nonemptyReloptions
    - dumpTableConstraintComment
    - appendReloptionsArrayAH
    - binary_upgrade_set_pg_class_oids
    - psprintf
    - createPQExpBuffer
    - appendPQExpBufferStr
    - findObjectByDumpId
    - fmtQualifiedDumpable
    - getAttrName
    - pg_fatal
    - fmtId
    - destroyPQExpBuffer
    - ArchiveEntry
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - append_depends_on_extension
    - free
    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:18520,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18523,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18523,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18525,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18526,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18529,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18535,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18536,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - fout
    - coninfo
    argTypes:
    - Archive*
    - ConstraintInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18537
      start: 18516
    functionDepth: 3
    functionLinenumber: 18516
    functionLinenumberEnd: 18537
    functionName: dumpTableConstraintComment
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 2
    functionsReached:
    - createPQExpBuffer
    - pg_strdup
    - appendPQExpBuffer
    - dumpComment
    - fmtId
    - destroyPQExpBuffer
    - free
    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:18542,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18544,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18548,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18550
      start: 18539
    functionDepth: 1
    functionLinenumber: 18539
    functionLinenumberEnd: 18550
    functionName: parse_sequence_type
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 0
    functionsReached:
    - pg_fatal
    - strcmp
    - lengthof
    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:18561,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18562
      start: 18555
    functionDepth: 1
    functionLinenumber: 18555
    functionLinenumberEnd: 18562
    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: 3
    BranchProfiles: []
    Callsites:
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18605,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18607,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18608,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18612,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18612,1
    - Dst: parse_sequence_type
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18613,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18613,1
    - Dst: strtoi64
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18614,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18614,1
    - Dst: strtoi64
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18615,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18615,1
    - Dst: strtoi64
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18616,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18616,1
    - Dst: strtoi64
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18617,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18617,1
    - Dst: strtoi64
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18618,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18618,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18619,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18619,1
    - Dst: strtoi64
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18620,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18620,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18621,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18621,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18624,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18625
      start: 18570
    functionDepth: 2
    functionLinenumber: 18570
    functionLinenumberEnd: 18625
    functionName: collectSequences
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - atooid
    - PQgetvalue
    - parse_sequence_type
    - pg_malloc
    - ExecuteSqlQuery
    - strtoi64
    - PQclear
    - strcmp
    linkageType: ''
    returnType: void
    signature: void collectSequences(Archive *fout)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18639,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18640,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18644,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18644,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18655,1
    - Dst: bsearch
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18658,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18671,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18675,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18677,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18679,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18680,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18680,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18682,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18683,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18685,1
    - Dst: parse_sequence_type
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18686,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18686,1
    - Dst: strtoi64
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18687,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18687,1
    - Dst: strtoi64
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18688,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18688,1
    - Dst: strtoi64
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18689,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18689,1
    - Dst: strtoi64
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18690,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18690,1
    - Dst: strtoi64
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18691,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18691,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18692,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18692,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18694,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18716,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18725,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18726,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18729,1
    - Dst: binary_upgrade_set_pg_class_oids
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18733,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18744,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18746,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18748,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18749,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18751,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18753,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18755,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18756,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18757,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18764,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18770,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18774,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18777,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18780,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18782,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18785,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18787,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18790,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18792,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18794,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18799,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18801,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18806,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18811,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18812,1
    - Dst: OidIsValid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18832,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18834,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18837,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18842,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18843,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18844,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18845,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18846,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18847,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18848,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18851,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18851,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18852,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18865,1
    - Dst: dumpSecLabel
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18870,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18875,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18876,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18877,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18878,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 98
    argCount: 2
    argNames:
    - fout
    - tbinfo
    argTypes:
    - Archive*
    - TableInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18879
      start: 18631
    functionDepth: 3
    functionLinenumber: 18631
    functionLinenumberEnd: 18879
    functionName: dumpSequence
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQgetvalue
    - strtoi64
    - resetPQExpBuffer
    - pg_malloc0
    - binary_upgrade_set_pg_class_oids
    - createPQExpBuffer
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - dumpComment
    - PQclear
    - strcmp
    - pg_free
    - binary_upgrade_extension_member
    - fmtQualifiedDumpable
    - PQntuples
    - parse_sequence_type
    - bsearch
    - pg_fatal
    - fmtId
    - OidIsValid
    - dumpSecLabel
    - destroyPQExpBuffer
    - ArchiveEntry
    - Assert
    - pg_strdup
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createDumpId
    - ngettext
    - free
    - findTableByOid
    linkageType: ''
    returnType: void
    signature: void dumpSequence(Archive *fout, const TableInfo *tbinfo)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18891,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18905,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18907,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18909,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18911,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18912,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18912,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18914,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18915,1
    - Dst: strtoi64
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18917,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18917,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18918,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18918,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18920,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18927,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18928,1
    - Dst: bsearch
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18931,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18938,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18939,1
    - Dst: appendStringLiteralAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18940,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18940,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18941,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18945,1
    - Dst: createDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18945,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18946,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18955,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 2
    argNames:
    - fout
    - tdinfo
    argTypes:
    - Archive*
    - TableDataInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18956
      start: 18885
    functionDepth: 1
    functionLinenumber: 18885
    functionLinenumberEnd: 18956
    functionName: dumpSequenceData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendStringLiteralAH
    - PQgetvalue
    - strtoi64
    - resetPQExpBuffer
    - createPQExpBuffer
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - PQclear
    - strcmp
    - fmtQualifiedDumpable
    - PQntuples
    - bsearch
    - pg_fatal
    - destroyPQExpBuffer
    - ArchiveEntry
    - Assert
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - createDumpId
    - ngettext
    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:18978,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18979,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18980,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18981,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18983,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18983,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18985,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18985,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18986,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18986,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18988,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18989,1
    - Dst: append_depends_on_extension
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18992,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:18998,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19006,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19007,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19008,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19010,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19015,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19019,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19022,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19025,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19028,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19029,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19033,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19035,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19040,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19043,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19046,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19049,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19052,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19053,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19056,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19057,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19059,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19062,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19063,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19072,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19076,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19077,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19078,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19079,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19080,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19081,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 67
    argCount: 2
    argNames:
    - fout
    - tginfo
    argTypes:
    - Archive*
    - TriggerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19082
      start: 18962
    functionDepth: 3
    functionLinenumber: 18962
    functionLinenumberEnd: 19082
    functionName: dumpTrigger
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - Assert
    - fmtQualifiedDumpable
    - createPQExpBuffer
    - pg_strdup
    - appendPQExpBufferStr
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - append_depends_on_extension
    - resetPQExpBuffer
    - dumpComment
    - fmtId
    - free
    - destroyPQExpBuffer
    - ArchiveEntry
    - psprintf
    linkageType: ''
    returnType: void
    signature: void dumpTrigger(Archive *fout, const TriggerInfo *tginfo)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19100,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19101,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19103,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19103,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19105,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19106,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19107,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19108,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19108,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19110,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19112,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19113,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19114,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19117,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19118,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19119,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19123,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19128,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19131,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19134,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19137,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19140,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19143,1
    - Dst: binary_upgrade_extension_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19147,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19151,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19152,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19160,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19164,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19165,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19166,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 46
    argCount: 2
    argNames:
    - fout
    - evtinfo
    argTypes:
    - Archive*
    - EventTriggerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19167
      start: 19088
    functionDepth: 3
    functionLinenumber: 19088
    functionLinenumberEnd: 19167
    functionName: dumpEventTrigger
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendPQExpBufferChar
    - binary_upgrade_extension_member
    - createPQExpBuffer
    - pg_strdup
    - appendPQExpBufferStr
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - dumpComment
    - fmtId
    - strcmp
    - destroyPQExpBuffer
    - ArchiveEntry
    - free
    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:19204,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19205,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19206,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19207,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19209,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19209,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19219,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19220,1
    - Dst: nonemptyReloptions
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19221,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19223,1
    - Dst: appendReloptionsArrayAH
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19224,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19225,1
    - Dst: createViewAsClause
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19227,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19228,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19229,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19231,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19233,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19238,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19242,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19244,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19245,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19248,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19248,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19250,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19259,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19259,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19263,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19264,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19267,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19268,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19271,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19272,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19286,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19287,1
    - Dst: createDummyViewAsClause
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19288,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19289,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19290,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19294,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19295,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19296,1
    - Dst: fmtQualifiedDumpable
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19297,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19300,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19301,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19303,1
    - Dst: ArchiveEntry
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19306,1
    - Dst: ARCHIVE_OPTS
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19307,1
    - Dst: dumpComment
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19317,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19322,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19323,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19324,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19325,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19326,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19327,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 67
    argCount: 2
    argNames:
    - fout
    - rinfo
    argTypes:
    - Archive*
    - RuleInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19328
      start: 19173
    functionDepth: 3
    functionLinenumber: 19173
    functionLinenumberEnd: 19328
    functionName: dumpRule
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - appendPQExpBufferChar
    - nonemptyReloptions
    - PQgetvalue
    - createViewAsClause
    - appendReloptionsArrayAH
    - psprintf
    - createPQExpBuffer
    - appendPQExpBufferStr
    - ExecuteSqlQuery
    - dumpComment
    - PQclear
    - fmtQualifiedDumpable
    - PQntuples
    - createDummyViewAsClause
    - pg_fatal
    - fmtId
    - destroyPQExpBuffer
    - ArchiveEntry
    - pg_strdup
    - ARCHIVE_OPTS
    - appendPQExpBuffer
    - printfPQExpBuffer
    - free
    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:19357,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19360,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19367,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19369,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19371,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19372,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19373,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19387,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19387,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19388,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19388,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19389,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19389,1
    - Dst: findExtensionByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19393,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19398,1
    - Dst: recordExtensionMembership
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19402,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19405,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19407,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - fout
    - extinfo
    - numExtensions
    argTypes:
    - Archive*
    - ExtensionInfo[]
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19408
      start: 19340
    functionDepth: 2
    functionLinenumber: 19340
    functionLinenumberEnd: 19408
    functionName: getExtensionMembership
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - atooid
    - createPQExpBuffer
    - recordExtensionMembership
    - pg_log_warning
    - findExtensionByOid
    - appendPQExpBufferStr
    - PQgetvalue
    - PQfnumber
    - ExecuteSqlQuery
    - PQclear
    - destroyPQExpBuffer
    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:19475,1
    - Dst: simple_oid_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19484,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19488,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19488,1
    - Dst: parsePGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19492,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19493,1
    - Dst: parsePGArray
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19494,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19495,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19497,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19502,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19506,1
    - Dst: simple_oid_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19518,1
    - Dst: simple_oid_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19530,1
    - Dst: simple_oid_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19535,1
    - Dst: makeTableDataInfo
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19541,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19544,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19545,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19551,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19553,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19565,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19567,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19575,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19576,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19578,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19579,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19589,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19589,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19590,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19590,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19591,1
    - Dst: findTableByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19592,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19604,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19607,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19608,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 60
    argCount: 3
    argNames:
    - fout
    - extinfo
    - numExtensions
    argTypes:
    - Archive*
    - ExtensionInfo[]
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19609
      start: 19433
    functionDepth: 3
    functionLinenumber: 19433
    functionLinenumberEnd: 19609
    functionName: processExtensionTables
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - simple_oid_list_member
    - PQntuples
    - parsePGArray
    - atooid
    - pg_strdup
    - createPQExpBuffer
    - addObjectDependency
    - PQgetvalue
    - printfPQExpBuffer
    - PQfnumber
    - ExecuteSqlQuery
    - pg_fatal
    - free
    - PQclear
    - makeTableDataInfo
    - destroyPQExpBuffer
    - strlen
    - findTableByOid
    linkageType: ''
    returnType: void
    signature: "void processExtensionTables(Archive *fout, ExtensionInfo extinfo[],\n\t\t\t\t\t
      \  int numExtensions)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19629,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19631,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19641,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19656,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19664,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19672,1
    - Dst: ExecuteSqlQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19674,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19676,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19678,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19679,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19680,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19681,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19682,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19697,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19697,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19698,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19698,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19699,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19699,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19700,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19700,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19701,1
    - Dst: findObjectByCatalogId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19706,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19715,1
    - Dst: findObjectByCatalogId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19721,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19726,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19751,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19754,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19757,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19759,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19760
      start: 19614
    functionDepth: 2
    functionLinenumber: 19614
    functionLinenumberEnd: 19760
    functionName: getDependencies
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - atooid
    - createPQExpBuffer
    - pg_log_warning
    - appendPQExpBufferStr
    - PQgetvalue
    - PQfnumber
    - ExecuteSqlQuery
    - pg_log_info
    - PQclear
    - destroyPQExpBuffer
    - findObjectByCatalogId
    - addObjectDependency
    linkageType: ''
    returnType: void
    signature: void getDependencies(Archive *fout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19772,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19776,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19777,1
    - Dst: AssignDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19781,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19782,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19785
      start: 19767
    functionDepth: 2
    functionLinenumber: 19767
    functionLinenumberEnd: 19785
    functionName: createBoundaryObjects
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - pg_malloc
    - AssignDumpId
    - 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:19835,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19842,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19843,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19859,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19864,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19870,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19877,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19883,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19884,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19887,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 75
    argCount: 3
    argNames:
    - dobjs
    - numObjs
    - boundaryObjs
    argTypes:
    - DumpableObject**
    - int
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19891
      start: 19791
    functionDepth: 2
    functionLinenumber: 19791
    functionLinenumberEnd: 19891
    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:19938,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19946,1
    - Dst: findDumpableDependencies
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19949,1
    - Dst: pg_realloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19954,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19960,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 1
    argNames:
    - fout
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19962
      start: 19917
    functionDepth: 1
    functionLinenumber: 19917
    functionLinenumberEnd: 19962
    functionName: BuildArchiveDependencies
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - findObjectByDumpId
    - pg_malloc
    - pg_realloc
    - findDumpableDependencies
    - free
    linkageType: ''
    returnType: void
    signature: void BuildArchiveDependencies(Archive *fout)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TocIDRequired
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19983,1
    - Dst: pg_realloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:19989,1
    - Dst: findObjectByDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20002,1
    - Dst: findDumpableDependencies
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20005,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: 20009
      start: 19965
    functionDepth: 1
    functionLinenumber: 19965
    functionLinenumberEnd: 20009
    functionName: findDumpableDependencies
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 2
    functionsReached:
    - findDumpableDependencies
    - findObjectByDumpId
    - pg_realloc
    - 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:20038,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20042,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20043,1
    - Dst: ExecuteSqlQueryForSingleRow
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20046,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20049,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20049,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20051,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20052,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - fout
    - oid
    - opts
    argTypes:
    - Archive*
    - Oid
    - OidOptions
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20064
      start: 20021
    functionDepth: 2
    functionLinenumber: 20021
    functionLinenumberEnd: 20064
    functionName: getFormattedTypeName
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 7
    functionsReached:
    - findTypeByOid
    - createPQExpBuffer
    - pg_strdup
    - ExecuteSqlQueryForSingleRow
    - PQgetvalue
    - appendPQExpBuffer
    - PQclear
    - destroyPQExpBuffer
    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:20082,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20091,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20092,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20092,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20099,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - ti
    - buffer
    argTypes:
    - TableInfo*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20101
      start: 20072
    functionDepth: 1
    functionLinenumber: 20072
    functionLinenumberEnd: 20101
    functionName: fmtCopyColumnList
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 2
    functionsReached:
    - appendPQExpBufferChar
    - appendPQExpBufferStr
    - fmtId
    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:20110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - reloptions
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20111
      start: 20106
    functionDepth: 0
    functionLinenumber: 20106
    functionLinenumberEnd: 20111
    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:20124,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - buffer
    - reloptions
    - prefix
    - fout
    argTypes:
    - PQExpBuffer
    - char*
    - char*
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20128
      start: 20118
    functionDepth: 1
    functionLinenumber: 20118
    functionLinenumberEnd: 20128
    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:20145,1
    - Dst: filter_read_item
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20147,1
    - Dst: pg_log_filter_error
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20161,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20161,1
    - Dst: filter_object_type_name
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20163,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20164,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20168,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20171,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20174,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20178,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20182,1
    - Dst: pg_log_filter_error
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20199,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20199,1
    - Dst: filter_object_type_name
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20201,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20202,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20206,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20209,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20213,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20217,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20220,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20223,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20230,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20231,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20235,1
    - Dst: filter_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump.c:20238,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 75
    argCount: 2
    argNames:
    - filename
    - dopt
    argTypes:
    - char*
    - DumpOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20239
      start: 20137
    functionDepth: 1
    functionLinenumber: 20137
    functionLinenumberEnd: 20239
    functionName: read_dump_filters
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump.c
    functionUses: 1
    functionsReached:
    - filter_read_item
    - Assert
    - pg_log_filter_error
    - simple_string_list_append
    - filter_init
    - _
    - filter_object_type_name
    - filter_free
    - exit_nicely
    - 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:37,1
    - Dst: CompressorState*::readF
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:39,1
    - Dst: ahwrite
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:41,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - AH
    - cs
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 45
    functionName: ReadDataFromArchiveNone
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_none.c
    functionUses: 0
    functionsReached:
    - pg_malloc
    - CompressorState*::readF
    - free
    - ahwrite
    linkageType: ''
    returnType: void
    signature: void ReadDataFromArchiveNone(ArchiveHandle *AH, CompressorState *cs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CompressorState*::writeF
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - AH
    - cs
    - data
    - dLen
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 53
    functionName: WriteDataToArchiveNone
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_none.c
    functionUses: 0
    functionsReached:
    - CompressorState*::writeF
    linkageType: ''
    returnType: void
    signature: "void WriteDataToArchiveNone(ArchiveHandle *AH, CompressorState *cs,\n\t\t\t\t\t
      \  const void *data, size_t dLen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - AH
    - cs
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 59
    functionName: EndCompressorNone
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_none.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EndCompressorNone(ArchiveHandle *AH, CompressorState *cs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - cs
    - compression_spec
    argTypes:
    - CompressorState*
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 74
    functionName: InitCompressorNone
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_none.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void InitCompressorNone(CompressorState *cs,\n\t\t\t\t   const pg_compress_specification
      compression_spec)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fread
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:95,1
    - Dst: feof
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:96,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:97,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 4
    argNames:
    - ptr
    - size
    - rsize
    - CFH
    argTypes:
    - void*
    - size_t
    - size_t*
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 103
    functionName: read_none
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_none.c
    functionUses: 0
    functionsReached:
    - pg_fatal
    - feof
    - fread
    linkageType: ''
    returnType: bool
    signature: bool read_none(void *ptr, size_t size, size_t *rsize, CompressFileHandle
      *CFH)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fwrite
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ptr
    - size
    - CFH
    argTypes:
    - void*
    - size_t
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 115
    functionName: write_none
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_none.c
    functionUses: 0
    functionsReached:
    - fwrite
    linkageType: ''
    returnType: bool
    signature: bool 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:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 121
    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:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ptr
    - size
    - CFH
    argTypes:
    - char*
    - int
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 127
    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:135,1
    - Dst: feof
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:138,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:139,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:141,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 145
    functionName: getc_none
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_none.c
    functionUses: 0
    functionsReached:
    - pg_fatal
    - fgetc
    - feof
    linkageType: ''
    returnType: int
    signature: int getc_none(CompressFileHandle *CFH)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 159
    functionName: close_none
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_none.c
    functionUses: 0
    functionsReached:
    - 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:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 165
    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: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:170,1
    - Dst: fdopen
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:173,1
    - Dst: dup
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:173,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:175,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - path
    - fd
    - mode
    - CFH
    argTypes:
    - char*
    - int
    - char*
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 181
    functionName: open_none
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_none.c
    functionUses: 0
    functionsReached:
    - dup
    - Assert
    - fopen
    - fdopen
    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:186,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/compress_none.c:188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - path
    - mode
    - CFH
    argTypes:
    - char*
    - char*
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 193
    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: 214
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 214
    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:
    - pg_log_error_detail
    - PQserverVersion
    - ExecuteSqlQueryForSingleRow
    - pg_strdup
    - PQgetvalue
    - exit
    - pg_fatal
    - PQparameterStatus
    - PQclear
    - strcmp
    - pg_log_error
    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:
    - PQfinish
    - pg_strdup
    - ConnectDatabaseAhx
    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: 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:
    - set_archive_cancel_info
    - PQpass
    - _check_database_version
    - simple_prompt
    - ExecuteSqlQueryForSingleRow
    - pg_strdup
    - ConnectDatabase
    - pg_fatal
    - PQconnectionUsedPassword
    - PQclear
    - PQsetNoticeProcessor
    - free
    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:
    - PQfinish
    - PQtransactionStatus
    - set_archive_cancel_info
    - PQcancel
    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: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:210,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:211,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:212,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - AH
    - query
    argTypes:
    - ArchiveHandle*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 214
    functionName: die_on_query_failure
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 0
    functionsReached:
    - exit
    - pg_log_error
    - PQerrorMessage
    - pg_log_error_detail
    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:222,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:223,1
    - Dst: die_on_query_failure
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:224,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:225,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - AHX
    - query
    argTypes:
    - Archive*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 216
    functionDepth: 2
    functionLinenumber: 216
    functionLinenumberEnd: 226
    functionName: ExecuteSqlStatement
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 16
    functionsReached:
    - PQresultStatus
    - PQexec
    - die_on_query_failure
    - PQclear
    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:234,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:235,1
    - Dst: die_on_query_failure
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:236,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - AHX
    - query
    - status
    argTypes:
    - Archive*
    - char*
    - ExecStatusType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 228
    functionDepth: 2
    functionLinenumber: 228
    functionLinenumberEnd: 238
    functionName: ExecuteSqlQuery
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 71
    functionsReached:
    - PQresultStatus
    - PQexec
    - die_on_query_failure
    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:249,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:252,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:254,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:254,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fout
    - query
    argTypes:
    - Archive*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 243
    functionDepth: 3
    functionLinenumber: 243
    functionLinenumberEnd: 260
    functionName: ExecuteSqlQueryForSingleRow
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 28
    functionsReached:
    - ngettext
    - ExecuteSqlQuery
    - pg_fatal
    - PQntuples
    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:273,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:275,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:277,1
    - Dst: warn_or_exit_horribly
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:290,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:291,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:295,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - AH
    - qry
    - desc
    argTypes:
    - ArchiveHandle*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 266
    functionDepth: 1
    functionLinenumber: 266
    functionLinenumberEnd: 296
    functionName: ExecuteSqlCommand
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 0
    functionsReached:
    - PQexec
    - PQerrorMessage
    - PQresultStatus
    - fprintf
    - PQclear
    - warn_or_exit_horribly
    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:326,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:334,1
    - Dst: ExecuteSqlCommand
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:345,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:347,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 33
    argCount: 3
    argNames:
    - AH
    - buf
    - bufLen
    argTypes:
    - ArchiveHandle*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 318
    functionDepth: 2
    functionLinenumber: 318
    functionLinenumberEnd: 377
    functionName: ExecuteSimpleCommands
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 0
    functionsReached:
    - createPQExpBuffer
    - appendPQExpBufferChar
    - resetPQExpBuffer
    - ExecuteSqlCommand
    linkageType: ''
    returnType: void
    signature: void ExecuteSimpleCommands(ArchiveHandle *AH, const char *buf, size_t
      bufLen)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PQputCopyData
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:398,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:399,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:400,1
    - Dst: ExecuteSimpleCommands
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:408,1
    - Dst: ExecuteSqlCommand
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:420,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:423,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:425,1
    - Dst: ExecuteSqlCommand
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:427,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:428,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - AHX
    - buf
    - bufLen
    argTypes:
    - Archive*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 383
    functionDepth: 3
    functionLinenumber: 383
    functionLinenumberEnd: 433
    functionName: ExecuteSqlCommandBuf
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 0
    functionsReached:
    - PQerrorMessage
    - ExecuteSimpleCommands
    - pg_malloc
    - pg_fatal
    - memcpy
    - ExecuteSqlCommand
    - PQputCopyData
    - free
    linkageType: ''
    returnType: int
    signature: int ExecuteSqlCommandBuf(Archive *AHX, const char *buf, size_t bufLen)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PQputCopyEnd
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:447,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:448,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:449,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:452,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:453,1
    - Dst: warn_or_exit_horribly
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:454,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:455,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:456,1
    - Dst: PQgetResult
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:459,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:460,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - AHX
    - tocEntryTag
    argTypes:
    - Archive*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 438
    functionDepth: 1
    functionLinenumber: 438
    functionLinenumberEnd: 465
    functionName: EndDBCopyMode
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 0
    functionsReached:
    - PQerrorMessage
    - PQresultStatus
    - PQputCopyEnd
    - pg_log_warning
    - PQgetResult
    - pg_fatal
    - PQclear
    - warn_or_exit_horribly
    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:472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - AHX
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 467
    functionDepth: 2
    functionLinenumber: 467
    functionLinenumberEnd: 473
    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:480,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - AHX
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 475
    functionDepth: 2
    functionLinenumber: 475
    functionLinenumberEnd: 481
    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:495,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:501,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:504,1
    - Dst: CommitTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:513,1
    - Dst: StartTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:514,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:517,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:524,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:525,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 4
    argNames:
    - AH
    - te
    - cmdBegin
    - cmdEnd
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 490
    functionDepth: 1
    functionLinenumber: 490
    functionLinenumberEnd: 526
    functionName: IssueCommandPerBlob
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 0
    functionsReached:
    - CommitTransaction
    - ahprintf
    - StartTransaction
    - pg_strdup
    - pg_free
    - strchr
    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:540,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:548,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:549,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:549,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:552,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:577,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:581,1
    - Dst: isdigit
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:581,1
    - Dst: isdigit
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:584,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:587,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:595,1
    - Dst: IssueCommandPerBlob
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:597,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:599,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_db.c:608,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 537
    functionDepth: 2
    functionLinenumber: 537
    functionLinenumberEnd: 609
    functionName: IssueACLPerBlob
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_db.c
    functionUses: 0
    functionsReached:
    - Assert
    - IssueCommandPerBlob
    - pg_strdup
    - isdigit
    - pg_fatal
    - getTocEntryByDumpId
    - isspace
    - strcmp
    - strncmp
    - pg_free
    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:614,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - AH
    - oid
    argTypes:
    - ArchiveHandle*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 611
    functionDepth: 1
    functionLinenumber: 611
    functionLinenumberEnd: 619
    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: free
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:69,1
    - Dst: 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
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:92,1
    - Dst: pg_malloc0
      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
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:108,1
    - Dst: pg_malloc0
      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: free
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:179,1
    - Dst: 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: free
      Src: /src/postgres/src/bin/pg_dump/connectdb.c:194,1
    - Dst: 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 < 90200 ||\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: 3
    functionsReached:
    - pg_malloc0
    - PQstatus
    - pg_log_error_detail
    - PQclear
    - strcmp
    - pg_log_error
    - PQconninfoFree
    - PQconnectdbParams
    - PQerrorMessage
    - PQconninfoParse
    - PQserverVersion
    - simple_prompt
    - PQfinish
    - constructConnStr
    - "server_version_temp < 90200 ||\n\t\t\t(server_version_temp / 100) >"
    - pg_fatal
    - PQconnectionNeedsPassword
    - executeQuery
    - PQparameterStatus
    - exit_nicely
    - free
    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:
    - appendConnStrVal
    - appendPQExpBufferChar
    - createPQExpBuffer
    - pg_strdup
    - appendPQExpBuffer
    - strcmp
    - destroyPQExpBuffer
    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: 12
    functionsReached:
    - pg_log_error_detail
    - PQexec
    - PQerrorMessage
    - PQresultStatus
    - PQfinish
    - exit_nicely
    - pg_log_info
    - pg_log_error
    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:
    - createPQExpBuffer
    - destroyPQExpBuffer
    - ahprintf
    - 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:
    - ahprintf
    - DropLOIfExists
    - 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:
    - _StartLOs
    - strcmp
    - TocEntry*::dataDumper
    - _EndLOs
    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: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_utils.c:48,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_utils.c:50,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_utils.c:52,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_backup_utils.c:56,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_backup_utils.c:57,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_backup_utils.c:58,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - arg
    - dumpSections
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 60
    functionName: set_dump_section
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_utils.c
    functionUses: 2
    functionsReached:
    - exit_nicely
    - strcmp
    - pg_log_error
    - pg_log_error_hint
    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:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - function
    - arg
    argTypes:
    - on_exit_nicely_callback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 72
    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:97,1
    - Dst: GetCurrentThreadId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_utils.c:101,1
    - Dst: _endthreadex
      Src: /src/postgres/src/bin/pg_dump/pg_backup_utils.c:102,1
    - Dst: exit
      Src: /src/postgres/src/bin/pg_dump/pg_backup_utils.c:105,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - code
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 106
    functionName: exit_nicely
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_utils.c
    functionUses: 11
    functionsReached:
    - GetCurrentThreadId
    - exit
    - function
    - _endthreadex
    linkageType: ''
    returnType: void
    signature: void exit_nicely(int code)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0
      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:
    - InitDiscoverCompressFileHandle
    - ReadHead
    - setFilePath
    - pg_fatal
    - pg_malloc0
    - EndCompressFileHandle
    - ReadToc
    - strcmp
    - create_or_open_dir
    linkageType: ''
    returnType: void
    signature: void InitArchiveFmt_Directory(ArchiveHandle *AH)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0
      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:
    - strcmp
    - snprintf
    - pg_malloc0
    - pg_strdup
    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
      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
    - ReadStr
    - strlen
    - pg_malloc0
    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
    - pg_fatal
    - lclContext*::dataFH::open_write_func
    - InitCompressFileHandle
    linkageType: ''
    returnType: void
    signature: void _StartData(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CompressFileHandle*::write_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:320,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:325,1
    - Dst: CompressFileHandle*::get_error_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:326,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - AH
    - data
    - dLen
    argTypes:
    - ArchiveHandle*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 313
    functionDepth: 0
    functionLinenumber: 313
    functionLinenumberEnd: 328
    functionName: _WriteData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - CompressFileHandle*::get_error_func
    - pg_fatal
    - 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:342,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:343,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 336
    functionDepth: 3
    functionLinenumber: 336
    functionLinenumberEnd: 346
    functionName: _EndData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - pg_fatal
    - EndCompressFileHandle
    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:362,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:364,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:367,1
    - Dst: CompressFileHandle*::read_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:369,1
    - Dst: ahwrite
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:371,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:374,1
    - Dst: EndCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:375,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:376,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - AH
    - filename
    argTypes:
    - ArchiveHandle*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 351
    functionDepth: 4
    functionLinenumber: 351
    functionLinenumberEnd: 377
    functionName: _PrintFileData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - InitDiscoverCompressFileHandle
    - pg_malloc
    - ahwrite
    - pg_fatal
    - EndCompressFileHandle
    - CompressFileHandle*::read_func
    - free
    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:390,1
    - Dst: _LoadLOs
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:391,1
    - Dst: setFilePath
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:396,1
    - Dst: _PrintFileData
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:397,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 382
    functionDepth: 1
    functionLinenumber: 382
    functionLinenumberEnd: 399
    functionName: _PrintTocData
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - _LoadLOs
    - strcmp
    - setFilePath
    - _PrintFileData
    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:411,1
    - Dst: setFilePath
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:421,1
    - Dst: setFilePath
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:423,1
    - Dst: InitDiscoverCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:425,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:428,1
    - Dst: CompressFileHandle*::gets_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:432,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:438,1
    - Dst: CppAsString2
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:438,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:439,1
    - Dst: StartRestoreLO
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:442,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:443,1
    - Dst: _PrintFileData
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:444,1
    - Dst: EndRestoreLO
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:445,1
    - Dst: CompressFileHandle*::eof_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:447,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:448,1
    - Dst: EndCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:451,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:452,1
    - Dst: EndRestoreLOs
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:457,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 401
    functionDepth: 4
    functionLinenumber: 401
    functionLinenumberEnd: 458
    functionName: _LoadLOs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 2
    functionsReached:
    - CompressFileHandle*::gets_func
    - InitDiscoverCompressFileHandle
    - EndRestoreLOs
    - _PrintFileData
    - snprintf
    - sscanf
    - EndCompressFileHandle
    - setFilePath
    - pg_fatal
    - StartRestoreLO
    - EndRestoreLO
    - CompressFileHandle*::eof_func
    - CppAsString2
    - StartRestoreLOs
    linkageType: ''
    returnType: void
    signature: void _LoadLOs(ArchiveHandle *AH, TocEntry *te)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CompressFileHandle*::write_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:474,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:479,1
    - Dst: CompressFileHandle*::get_error_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:480,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - AH
    - i
    argTypes:
    - ArchiveHandle*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 484
    functionName: _WriteByte
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 2
    functionsReached:
    - CompressFileHandle*::get_error_func
    - pg_fatal
    - 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:498,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 492
    functionDepth: 0
    functionLinenumber: 492
    functionLinenumberEnd: 499
    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: 3
    BranchProfiles: []
    Callsites:
    - Dst: CompressFileHandle*::write_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:512,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:517,1
    - Dst: CompressFileHandle*::get_error_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:518,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - AH
    - buf
    - len
    argTypes:
    - ArchiveHandle*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 505
    functionDepth: 0
    functionLinenumber: 505
    functionLinenumberEnd: 520
    functionName: _WriteBuf
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 1
    functionsReached:
    - CompressFileHandle*::get_error_func
    - pg_fatal
    - 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:537,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:538,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - AH
    - buf
    - len
    argTypes:
    - ArchiveHandle*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 527
    functionDepth: 0
    functionLinenumber: 527
    functionLinenumberEnd: 539
    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:564,1
    - Dst: ParallelBackupStart
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:567,1
    - Dst: InitCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:571,1
    - Dst: CompressFileHandle*::open_write_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:572,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:573,1
    - Dst: WriteHead
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:582,1
    - Dst: WriteToc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:584,1
    - Dst: EndCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:585,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:586,1
    - Dst: WriteDataChunks
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:587,1
    - Dst: ParallelBackupEnd
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:589,1
    - Dst: sync_dir_recurse
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:596,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 553
    functionDepth: 3
    functionLinenumber: 553
    functionLinenumberEnd: 599
    functionName: _CloseArchive
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - sync_dir_recurse
    - WriteHead
    - CompressFileHandle*::open_write_func
    - WriteToc
    - EndCompressFileHandle
    - setFilePath
    - pg_fatal
    - InitCompressFileHandle
    - ParallelBackupStart
    - ParallelBackupEnd
    - WriteDataChunks
    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: 612
      start: 604
    functionDepth: 0
    functionLinenumber: 604
    functionLinenumberEnd: 612
    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:633,1
    - Dst: InitCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:637,1
    - Dst: lclContext*::LOsTocFH::open_write_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:638,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:639,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 625
    functionDepth: 2
    functionLinenumber: 625
    functionLinenumberEnd: 640
    functionName: _StartLOs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 1
    functionsReached:
    - lclContext*::LOsTocFH::open_write_func
    - setFilePath
    - pg_fatal
    - InitCompressFileHandle
    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:653,1
    - Dst: InitCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:655,1
    - Dst: lclContext*::dataFH::open_write_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:656,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:657,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - AH
    - te
    - oid
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 647
    functionDepth: 2
    functionLinenumber: 647
    functionLinenumberEnd: 658
    functionName: _StartLO
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - snprintf
    - pg_fatal
    - lclContext*::dataFH::open_write_func
    - InitCompressFileHandle
    linkageType: ''
    returnType: void
    signature: void _StartLO(ArchiveHandle *AH, TocEntry *te, Oid oid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EndCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:674,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:675,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:679,1
    - Dst: CompressFileHandle*::write_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:680,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:685,1
    - Dst: CompressFileHandle*::get_error_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:686,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - AH
    - te
    - oid
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 665
    functionDepth: 3
    functionLinenumber: 665
    functionLinenumberEnd: 688
    functionName: _EndLO
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - snprintf
    - pg_fatal
    - EndCompressFileHandle
    - CompressFileHandle*::get_error_func
    - CompressFileHandle*::write_func
    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:700,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:701,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 695
    functionDepth: 3
    functionLinenumber: 695
    functionLinenumberEnd: 703
    functionName: _EndLOs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 1
    functionsReached:
    - pg_fatal
    - EndCompressFileHandle
    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:719,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:719,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:720,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:722,1
    - Dst: strcat
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:723,1
    - Dst: strcat
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:724,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - AH
    - buf
    - relativeFilename
    argTypes:
    - ArchiveHandle*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 711
    functionDepth: 0
    functionLinenumber: 711
    functionLinenumberEnd: 725
    functionName: setFilePath
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 6
    functionsReached:
    - strcat
    - pg_fatal
    - strlen
    - strcpy
    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:765,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:767,1
    - Dst: strlcat
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:772,1
    - Dst: strlcat
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:774,1
    - Dst: strlcat
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:776,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:778,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:789,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 22
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 737
    functionDepth: 1
    functionLinenumber: 737
    functionLinenumberEnd: 792
    functionName: _PrepParallelRestore
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - stat
    - strcmp
    - setFilePath
    - strlcat
    linkageType: ''
    returnType: void
    signature: void _PrepParallelRestore(ArchiveHandle *AH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:802,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_directory.c:803,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 797
    functionDepth: 1
    functionLinenumber: 797
    functionLinenumberEnd: 815
    functionName: _Clone
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_directory.c
    functionUses: 0
    functionsReached:
    - pg_malloc
    - 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:822,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 817
    functionDepth: 1
    functionLinenumber: 817
    functionLinenumberEnd: 823
    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:837,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 829
    functionDepth: 1
    functionLinenumber: 829
    functionLinenumberEnd: 840
    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:849,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 850
      start: 846
    functionDepth: 1
    functionLinenumber: 846
    functionLinenumberEnd: 850
    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:105,1
    - Dst: LZ4F_createCompressionContext
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:114,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:115,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:121,1
    - Dst: LZ4F_compressBegin
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:122,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:125,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - state
    argTypes:
    - LZ4State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 134
    functionName: LZ4State_compression_init
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - LZ4F_createCompressionContext
    - pg_malloc
    - LZ4F_isError
    - LZ4F_compressBegin
    - LZ4F_compressBound
    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:154,1
    - Dst: LZ4F_createDecompressionContext
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:155,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:156,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:157,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:158,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:160,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:161,1
    - Dst: CompressorState*::readF
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:163,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:176,1
    - Dst: LZ4F_decompress
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:177,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:179,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:180,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:181,1
    - Dst: ahwrite
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:183,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:188,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:189,1
    - Dst: LZ4F_freeDecompressionContext
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:191,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:192,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:193,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:194,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - AH
    - cs
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 195
    functionName: ReadDataFromArchiveLZ4
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - LZ4F_getErrorName
    - memset
    - CompressorState*::readF
    - ahwrite
    - pg_fatal
    - pg_malloc0
    - LZ4F_createDecompressionContext
    - LZ4F_decompress
    - LZ4F_isError
    - LZ4F_freeDecompressionContext
    - pg_free
    linkageType: ''
    returnType: void
    signature: void ReadDataFromArchiveLZ4(ArchiveHandle *AH, CompressorState *cs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CompressorState*::writeF
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:209,1
    - Dst: LZ4F_compressUpdate
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:222,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:226,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:227,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:228,1
    - Dst: CompressorState*::writeF
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:230,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - AH
    - cs
    - data
    - dLen
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 234
    functionName: WriteDataToArchiveLZ4
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - LZ4F_getErrorName
    - LZ4F_compressUpdate
    - CompressorState*::writeF
    - pg_fatal
    - 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: CompressorState*::writeF
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:253,1
    - Dst: LZ4F_compressEnd
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:255,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:258,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:259,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:260,1
    - Dst: CompressorState*::writeF
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:262,1
    - Dst: LZ4F_freeCompressionContext
      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:265,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:266,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:267,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:269,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:270,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - AH
    - cs
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 273
    functionName: EndCompressorLZ4
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - LZ4F_getErrorName
    - LZ4F_compressEnd
    - LZ4F_freeCompressionContext
    - CompressorState*::writeF
    - pg_fatal
    - LZ4F_isError
    - pg_free
    linkageType: ''
    returnType: void
    signature: void EndCompressorLZ4(ArchiveHandle *AH, CompressorState *cs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:296,1
    - Dst: LZ4State_compression_init
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:300,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:301,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:302,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - cs
    - compression_spec
    argTypes:
    - CompressorState*
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 278
    functionDepth: 2
    functionLinenumber: 278
    functionLinenumberEnd: 307
    functionName: InitCompressorLZ4
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 1
    functionsReached:
    - LZ4State_compression_init
    - LZ4F_getErrorName
    - pg_fatal
    - pg_malloc0
    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:325,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 326
    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:334,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:335,1
    - Dst: strerror
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:337,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 340
    functionName: LZ4Stream_get_error
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - LZ4F_isError
    - strerror
    - LZ4F_getErrorName
    linkageType: ''
    returnType: char
    signature: 'char *

      LZ4Stream_get_error(CompressFileHandle *CFH)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LZ4State_compression_init
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:367,1
    - Dst: fwrite
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:370,1
    - Dst: LZ4F_createDecompressionContext
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:378,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:379,1
    - Dst: Max
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:385,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:386,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:389,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 3
    argNames:
    - state
    - size
    - compressing
    argTypes:
    - LZ4State*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 352
    functionDepth: 2
    functionLinenumber: 352
    functionLinenumberEnd: 394
    functionName: LZ4Stream_init
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - LZ4State_compression_init
    - fwrite
    - pg_malloc
    - Max
    - LZ4F_createDecompressionContext
    - LZ4F_isError
    linkageType: ''
    returnType: bool
    signature: bool LZ4Stream_init(LZ4State *state, int size, bool compressing)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:420,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:424,1
    - Dst: memmove
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:428,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 4
    argNames:
    - state
    - ptr
    - size
    - eol_flag
    argTypes:
    - LZ4State*
    - void*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 406
    functionDepth: 0
    functionLinenumber: 406
    functionLinenumberEnd: 431
    functionName: LZ4Stream_read_overflow
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - memcpy
    - memchr
    - memmove
    linkageType: ''
    returnType: int
    signature: int LZ4Stream_read_overflow(LZ4State *state, void *ptr, int size, bool
      eol_flag)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: LZ4Stream_init
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:459,1
    - Dst: pg_realloc
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:470,1
    - Dst: LZ4Stream_read_overflow
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:474,1
    - Dst: memchr
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:475,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:478,1
    - Dst: fread
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:485,1
    - Dst: feof
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:486,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:498,1
    - Dst: LZ4F_decompress
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:499,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:501,1
    - Dst: memchr
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:521,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:528,1
    - Dst: memmove
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:533,1
    - Dst: pg_realloc
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:543,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:547,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:553,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 50
    argCount: 4
    argNames:
    - state
    - ptr
    - ptrsize
    - eol_flag
    argTypes:
    - LZ4State*
    - void*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 448
    functionDepth: 3
    functionLinenumber: 448
    functionLinenumberEnd: 556
    functionName: LZ4Stream_read_internal
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - feof
    - memcpy
    - memset
    - LZ4Stream_init
    - fread
    - memmove
    - pg_malloc
    - LZ4Stream_read_overflow
    - pg_realloc
    - LZ4F_decompress
    - LZ4F_isError
    - memchr
    - pg_free
    linkageType: ''
    returnType: int
    signature: int LZ4Stream_read_internal(LZ4State *state, void *ptr, int ptrsize,
      bool eol_flag)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LZ4Stream_init
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:569,1
    - Dst: Min
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:574,1
    - Dst: LZ4F_compressUpdate
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:578,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:580,1
    - Dst: fwrite
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:586,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - ptr
    - size
    - CFH
    argTypes:
    - void*
    - size_t
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 561
    functionDepth: 3
    functionLinenumber: 561
    functionLinenumberEnd: 596
    functionName: LZ4Stream_write
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - Min
    - LZ4F_compressUpdate
    - LZ4Stream_init
    - fwrite
    - LZ4F_isError
    linkageType: ''
    returnType: bool
    signature: bool LZ4Stream_write(const 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:607,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:608,1
    - Dst: LZ4Stream_get_error
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:608,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - ptr
    - size
    - rsize
    - CFH
    argTypes:
    - void*
    - size_t
    - size_t*
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 601
    functionDepth: 4
    functionLinenumber: 601
    functionLinenumberEnd: 614
    functionName: LZ4Stream_read
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - LZ4Stream_get_error
    - pg_fatal
    - LZ4Stream_read_internal
    linkageType: ''
    returnType: bool
    signature: bool LZ4Stream_read(void *ptr, size_t size, size_t *rsize, CompressFileHandle
      *CFH)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LZ4Stream_read_internal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:625,1
    - Dst: LZ4Stream_eof
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:627,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:628,1
    - Dst: LZ4Stream_get_error
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:628,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:630,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 619
    functionDepth: 4
    functionLinenumber: 619
    functionLinenumberEnd: 634
    functionName: LZ4Stream_getc
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - LZ4Stream_get_error
    - pg_fatal
    - LZ4Stream_eof
    - LZ4Stream_read_internal
    linkageType: ''
    returnType: int
    signature: int LZ4Stream_getc(CompressFileHandle *CFH)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LZ4Stream_read_internal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:645,1
    - Dst: LZ4Stream_eof
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:646,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:647,1
    - Dst: LZ4Stream_get_error
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:647,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - ptr
    - size
    - CFH
    argTypes:
    - char*
    - int
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 639
    functionDepth: 4
    functionLinenumber: 639
    functionLinenumberEnd: 660
    functionName: LZ4Stream_gets
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - LZ4Stream_get_error
    - pg_fatal
    - LZ4Stream_eof
    - LZ4Stream_read_internal
    linkageType: ''
    returnType: char
    signature: 'char *

      LZ4Stream_gets(char *ptr, int size, CompressFileHandle *CFH)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LZ4F_compressEnd
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:678,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:679,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:680,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:681,1
    - Dst: fwrite
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:682,1
    - Dst: LZ4F_freeCompressionContext
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:688,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:689,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:690,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:691,1
    - Dst: LZ4F_freeDecompressionContext
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:695,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:696,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:697,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:698,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:699,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:702,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:705,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:707,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 666
    functionDepth: 1
    functionLinenumber: 666
    functionLinenumberEnd: 708
    functionName: LZ4Stream_close
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - LZ4F_getErrorName
    - LZ4F_compressEnd
    - LZ4F_freeCompressionContext
    - fclose
    - fwrite
    - pg_fatal
    - LZ4F_isError
    - pg_free
    - LZ4F_freeDecompressionContext
    linkageType: ''
    returnType: bool
    signature: bool LZ4Stream_close(CompressFileHandle *CFH)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fdopen
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:718,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:720,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - path
    - fd
    - mode
    - CFH
    argTypes:
    - char*
    - int
    - char*
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 710
    functionDepth: 1
    functionLinenumber: 710
    functionLinenumberEnd: 730
    functionName: LZ4Stream_open
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - fopen
    - fdopen
    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:739,1
    - Dst: CompressFileHandle*::open_func
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:740,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:743,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - path
    - mode
    - CFH
    argTypes:
    - char*
    - char*
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 732
    functionDepth: 1
    functionLinenumber: 732
    functionLinenumberEnd: 747
    functionName: LZ4Stream_open_write
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 0
    functionsReached:
    - pg_free
    - 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
      Src: /src/postgres/src/bin/pg_dump/compress_lz4.c:769,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - CFH
    - compression_spec
    argTypes:
    - CompressFileHandle*
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 752
    functionDepth: 1
    functionLinenumber: 752
    functionLinenumberEnd: 774
    functionName: InitCompressFileHandleLZ4
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_lz4.c
    functionUses: 1
    functionsReached:
    - pg_malloc0
    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:780,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cs
    - compression_spec
    argTypes:
    - CompressorState*
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 776
    functionDepth: 0
    functionLinenumber: 776
    functionLinenumberEnd: 781
    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:787,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - CFH
    - compression_spec
    argTypes:
    - CompressFileHandle*
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 783
    functionDepth: 0
    functionLinenumber: 783
    functionLinenumberEnd: 788
    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:
    - tarClose
    - tarOpen
    - pg_malloc0_object
    - ReadHead
    - fopen
    - pg_fatal
    - ReadToc
    - strcmp
    - checkSeek
    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_strdup
    - snprintf
    - pg_malloc0_object
    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
    - ReadStr
    - strlen
    - pg_malloc0_object
    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
    - umask
    - pg_strdup
    - _tempnam
    - open
    - pg_malloc0_object
    - _tarPositionTo
    - pg_fatal
    - fdopen
    - free
    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
    - pg_fatal
    - free
    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:
    - _tarReadRaw
    - strlen
    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:
    - Assert
    - feof
    - fread
    - memcpy
    - READ_ERROR_EXIT
    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:
    - ahwrite
    - tarClose
    - tarOpen
    - tarRead
    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:
    - ahprintf
    - _PrintFileData
    - ahwrite
    - pg_fatal
    - _LoadLOs
    - strcmp
    - strncmp
    - strlen
    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:
    - tarClose
    - strncmp
    - atooid
    - EndRestoreLOs
    - snprintf
    - ahwrite
    - StartRestoreLO
    - pg_log_info
    - tarRead
    - EndRestoreLO
    - tarOpen
    - StartRestoreLOs
    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:
    - pg_fatal
    - tarRead
    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:
    - pg_fatal
    - tarRead
    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:
    - NewRestoreOptions
    - RestoreArchive
    - tarClose
    - SetArchiveOptions
    - fsync_fname
    - fputc
    - WriteToc
    - WriteHead
    - memcpy
    - tarPrintf
    - tarOpen
    - WriteDataChunks
    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:
    - sprintf
    - tarOpen
    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
    - tarOpen
    - pg_fatal
    - tarPrintf
    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: 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: 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:
    - tarWrite
    - va_end
    - pg_malloc
    - pvsnprintf
    - va_start
    - free
    linkageType: ''
    returnType: int
    signature: int tarPrintf(TAR_MEMBER *th, const char *fmt,...)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: tarChecksum
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:991,1
    - Dst: read_tar_number
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:993,1
    - Dst: memcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:999,1
    - Dst: memcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1000,1
    - Dst: memcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1003,1
    - Dst: memcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1006,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - header
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1010
      start: 987
    functionDepth: 1
    functionLinenumber: 987
    functionLinenumberEnd: 1010
    functionName: isValidTarHeader
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 0
    functionsReached:
    - tarChecksum
    - memcmp
    - read_tar_number
    linkageType: ''
    returnType: bool
    signature: bool isValidTarHeader(char *header)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: fseeko
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1028,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1029,1
    - Dst: ftello
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1030,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1032,1
    - Dst: fseeko
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1033,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1034,1
    - Dst: _tarWriteHeader
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1036,1
    - Dst: fread
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1038,1
    - Dst: fwrite
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1040,1
    - Dst: feof
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1044,1
    - Dst: READ_ERROR_EXIT
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1045,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1047,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1048,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1051,1
    - Dst: tarPaddingBytesRequired
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1054,1
    - Dst: fputc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1057,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 2
    argNames:
    - AH
    - th
    argTypes:
    - ArchiveHandle*
    - TAR_MEMBER*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1062
      start: 1013
    functionDepth: 1
    functionLinenumber: 1013
    functionLinenumberEnd: 1062
    functionName: _tarAddFile
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 1
    functionsReached:
    - ftello
    - fseeko
    - feof
    - fclose
    - fwrite
    - fread
    - fputc
    - tarPaddingBytesRequired
    - _tarWriteHeader
    - pg_fatal
    - READ_ERROR_EXIT
    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:1069,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1082,1
    - Dst: _tarReadRaw
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1086,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1089,1
    - Dst: _tarGetHeader
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1094,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1097,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1104,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1109,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1111,1
    - Dst: atoi
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1113,1
    - Dst: TocIDRequired
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1114,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1115,1
    - Dst: tarPaddingBytesRequired
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1121,1
    - Dst: _tarReadRaw
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1125,1
    - Dst: _tarGetHeader
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1127,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1128,1
    - Dst: tarPaddingBytesRequired
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1132,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 2
    argNames:
    - AH
    - filename
    argTypes:
    - ArchiveHandle*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1136
      start: 1065
    functionDepth: 2
    functionLinenumber: 1065
    functionLinenumberEnd: 1136
    functionName: _tarPositionTo
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 1
    functionsReached:
    - _tarGetHeader
    - strcmp
    - atoi
    - pg_malloc0_object
    - tarPaddingBytesRequired
    - pg_fatal
    - pg_log_debug
    - _tarReadRaw
    - free
    - TocIDRequired
    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:1157,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1162,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1162,1
    - Dst: tarChecksum
      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:1169,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1193,1
    - Dst: read_tar_number
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1195,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1197,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1201,1
    - Dst: ftello
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1202,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1204,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 2
    argNames:
    - AH
    - th
    argTypes:
    - ArchiveHandle*
    - TAR_MEMBER*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1208
      start: 1139
    functionDepth: 2
    functionLinenumber: 1139
    functionLinenumberEnd: 1208
    functionName: _tarGetHeader
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 1
    functionsReached:
    - tarChecksum
    - ftello
    - pg_strdup
    - read_tar_number
    - pg_fatal
    - strlcpy
    - pg_log_debug
    - _tarReadRaw
    - ngettext
    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:1216,1
    - Dst: time
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1217,1
    - Dst: fwrite
      Src: /src/postgres/src/bin/pg_dump/pg_backup_tar.c:1220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - th
    argTypes:
    - TAR_MEMBER*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1222
      start: 1211
    functionDepth: 1
    functionLinenumber: 1211
    functionLinenumberEnd: 1222
    functionName: _tarWriteHeader
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_tar.c
    functionUses: 1
    functionsReached:
    - fwrite
    - time
    - tarCreateHeader
    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:
    - FilterStateData*::exit_nicely
    - fopen
    - initStringInfo
    - strcmp
    - 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_end
    - vsnprintf
    - va_start
    - pg_log_error
    linkageType: ''
    returnType: void
    signature: void pg_log_filter_error(FilterStateData *fstate, const char *fmt,...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_dump/filter.c:189,1
    - Dst: isalpha
      Src: /src/postgres/src/bin/pg_dump/filter.c:192,1
    - Dst: isalpha
      Src: /src/postgres/src/bin/pg_dump/filter.c:196,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - line
    - size
    argTypes:
    - char**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 205
    functionName: filter_get_keyword
    functionSourceFile: /src/postgres/src/bin/pg_dump/filter.c
    functionUses: 0
    functionsReached:
    - isspace
    - isalpha
    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:218,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/filter.c:235,1
    - Dst: pg_get_line_buf
      Src: /src/postgres/src/bin/pg_dump/filter.c:237,1
    - Dst: ferror
      Src: /src/postgres/src/bin/pg_dump/filter.c:239,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/filter.c:240,1
    - Dst: pg_log_filter_error
      Src: /src/postgres/src/bin/pg_dump/filter.c:243,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/filter.c:243,1
    - Dst: FilterStateData*::exit_nicely
      Src: /src/postgres/src/bin/pg_dump/filter.c:245,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/filter.c:250,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/filter.c:256,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/filter.c:261,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/filter.c:271,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/filter.c:273,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/filter.c:278,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 3
    argNames:
    - fstate
    - str
    - pattern
    argTypes:
    - FilterStateData*
    - char*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 213
    functionDepth: 2
    functionLinenumber: 213
    functionLinenumberEnd: 282
    functionName: read_quoted_string
    functionSourceFile: /src/postgres/src/bin/pg_dump/filter.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - Assert
    - FilterStateData*::exit_nicely
    - pg_log_filter_error
    - ferror
    - pg_get_line_buf
    - _
    - 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:305,1
    - Dst: pg_log_filter_error
      Src: /src/postgres/src/bin/pg_dump/filter.c:310,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/filter.c:310,1
    - Dst: FilterStateData*::exit_nicely
      Src: /src/postgres/src/bin/pg_dump/filter.c:311,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_dump/filter.c:316,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/filter.c:316,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/filter.c:324,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/filter.c:328,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/filter.c:336,1
    - Dst: read_quoted_string
      Src: /src/postgres/src/bin/pg_dump/filter.c:338,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/filter.c:342,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/filter.c:346,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/filter.c:348,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_dump/filter.c:355,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 37
    argCount: 3
    argNames:
    - fstate
    - str
    - pattern
    argTypes:
    - FilterStateData*
    - char*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 298
    functionDepth: 3
    functionLinenumber: 298
    functionLinenumberEnd: 363
    functionName: read_pattern
    functionSourceFile: /src/postgres/src/bin/pg_dump/filter.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - read_quoted_string
    - FilterStateData*::exit_nicely
    - pg_log_filter_error
    - appendPQExpBufferStr
    - _
    - isspace
    - strchr
    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:394,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_dump/filter.c:404,1
    - Dst: filter_get_keyword
      Src: /src/postgres/src/bin/pg_dump/filter.c:417,1
    - Dst: pg_log_filter_error
      Src: /src/postgres/src/bin/pg_dump/filter.c:420,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/filter.c:421,1
    - Dst: FilterStateData*::exit_nicely
      Src: /src/postgres/src/bin/pg_dump/filter.c:422,1
    - Dst: is_keyword_str
      Src: /src/postgres/src/bin/pg_dump/filter.c:425,1
    - Dst: is_keyword_str
      Src: /src/postgres/src/bin/pg_dump/filter.c:427,1
    - Dst: pg_log_filter_error
      Src: /src/postgres/src/bin/pg_dump/filter.c:431,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/filter.c:432,1
    - Dst: FilterStateData*::exit_nicely
      Src: /src/postgres/src/bin/pg_dump/filter.c:433,1
    - Dst: filter_get_keyword
      Src: /src/postgres/src/bin/pg_dump/filter.c:436,1
    - Dst: pg_log_filter_error
      Src: /src/postgres/src/bin/pg_dump/filter.c:439,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/filter.c:439,1
    - Dst: FilterStateData*::exit_nicely
      Src: /src/postgres/src/bin/pg_dump/filter.c:440,1
    - Dst: get_object_type
      Src: /src/postgres/src/bin/pg_dump/filter.c:443,1
    - Dst: pg_log_filter_error
      Src: /src/postgres/src/bin/pg_dump/filter.c:445,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/filter.c:446,1
    - Dst: FilterStateData*::exit_nicely
      Src: /src/postgres/src/bin/pg_dump/filter.c:447,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/filter.c:450,1
    - Dst: read_pattern
      Src: /src/postgres/src/bin/pg_dump/filter.c:452,1
    - Dst: ferror
      Src: /src/postgres/src/bin/pg_dump/filter.c:465,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/filter.c:467,1
    - Dst: FilterStateData*::exit_nicely
      Src: /src/postgres/src/bin/pg_dump/filter.c:468,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 42
    argCount: 4
    argNames:
    - fstate
    - objname
    - comtype
    - objtype
    argTypes:
    - FilterStateData*
    - char**
    - FilterCommandType*
    - FilterObjectType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 388
    functionDepth: 4
    functionLinenumber: 388
    functionLinenumberEnd: 472
    functionName: filter_read_item
    functionSourceFile: /src/postgres/src/bin/pg_dump/filter.c
    functionUses: 2
    functionsReached:
    - read_pattern
    - FilterStateData*::exit_nicely
    - pg_log_filter_error
    - is_keyword_str
    - get_object_type
    - ferror
    - pg_get_line_buf
    - filter_get_keyword
    - _
    - isspace
    - pg_log_error
    - initPQExpBuffer
    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
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:136,1
    - Dst: InitDumpOptions
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 140
    functionName: NewDumpOptions
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached:
    - pg_malloc
    - 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:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - opts
    argTypes:
    - DumpOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 156
    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:165,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:168,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:169,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
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 33
    argCount: 1
    argNames:
    - ropt
    argTypes:
    - RestoreOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 162
    functionDepth: 2
    functionLinenumber: 162
    functionLinenumberEnd: 201
    functionName: dumpOptionsFromRestoreOptions
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached:
    - pg_strdup
    - NewDumpOptions
    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:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - AHX
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 223
    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:236,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: 240
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 240
    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:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - FileSpec
    - fmt
    argTypes:
    - char*
    - ArchiveFormat
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 244
    functionDepth: 1
    functionLinenumber: 244
    functionLinenumberEnd: 256
    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:264,1
    - Dst: EndCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:268,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:269,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - AHX
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 259
    functionDepth: 3
    functionLinenumber: 259
    functionLinenumberEnd: 270
    functionName: CloseArchive
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - pg_fatal
    - ArchiveHandle*::ClosePtr
    - EndCompressFileHandle
    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:278,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - AH
    - dopt
    - ropt
    argTypes:
    - Archive*
    - DumpOptions*
    - RestoreOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 273
    functionDepth: 3
    functionLinenumber: 273
    functionLinenumberEnd: 283
    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:313,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:317,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:323,1
    - Dst: _tocEntryRequired
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:332,1
    - Dst: StrictNamesCheck
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:337,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 1
    argNames:
    - AHX
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 338
    functionName: ProcessArchiveRestoreOptions
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - StrictNamesCheck
    - pg_log_warning
    - _tocEntryRequired
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void ProcessArchiveRestoreOptions(Archive *AHX)
  - BBCount: 55
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:365,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:369,1
    - Dst: ArchiveHandle*::ReopenPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:375,1
    - Dst: supports_compression
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:387,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:390,1
    - Dst: buildTocEntryArrays
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:403,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:410,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:412,1
    - Dst: ConnectDatabaseAhx
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:422,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:455,1
    - Dst: SaveOutput
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:462,1
    - Dst: SetOutput
      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:466,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:469,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:472,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:475,1
    - Dst: dumpTimestamp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:478,1
    - Dst: StartTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:483,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:485,1
    - Dst: _doSetFixedOutputState
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:491,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:513,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:514,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:523,1
    - Dst: strcmp
      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:533,1
    - Dst: CommitTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:537,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:539,1
    - Dst: _becomeOwner
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:544,1
    - Dst: _selectOutputSchema
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:545,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:552,1
    - Dst: IssueCommandPerBlob
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:556,1
    - Dst: IssueCommandPerBlob
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:561,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:568,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:575,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:586,1
    - Dst: DropLOIfExists
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:588,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:592,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:594,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:600,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:602,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:626,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:627,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:628,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:629,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: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:637,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:638,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:640,1
    - Dst: strstr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:643,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:648,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:650,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:655,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:657,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:661,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:663,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:664,1
    - Dst: StartTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:678,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:680,1
    - Dst: CommitTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:687,1
    - Dst: StartTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:688,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:691,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:710,1
    - Dst: ArchiveHandle*::PrepParallelRestorePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:724,1
    - Dst: pending_list_header_init
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:726,1
    - Dst: restore_toc_entries_prefork
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:729,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:730,1
    - Dst: ParallelBackupStart
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:733,1
    - Dst: restore_toc_entries_parallel
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:734,1
    - Dst: ParallelBackupEnd
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:735,1
    - Dst: restore_toc_entries_postfork
      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: _tocEntryRestorePass
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:756,1
    - Dst: restore_toc_entry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:759,1
    - Dst: _tocEntryRestorePass
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:775,1
    - Dst: restore_toc_entry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:776,1
    - Dst: _tocEntryRestorePass
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:785,1
    - Dst: restore_toc_entry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:786,1
    - Dst: CommitTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:798,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:800,1
    - Dst: dumpTimestamp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:804,1
    - Dst: time
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:804,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:806,1
    - Dst: RestoreOutput
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:814,1
    - Dst: DisconnectDatabase
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:817,1
    CyclomaticComplexity: 81
    EdgeCount: 81
    ICount: 189
    argCount: 2
    argNames:
    - AHX
    - append_data
    argTypes:
    - Archive*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 346
    functionDepth: 3
    functionLinenumber: 346
    functionLinenumberEnd: 818
    functionName: RestoreArchive
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 3
    functionsReached:
    - CommitTransaction
    - ahprintf
    - SaveOutput
    - strstr
    - restore_toc_entries_prefork
    - snprintf
    - pg_log_warning
    - time
    - ConnectDatabaseAhx
    - strlen
    - supports_compression
    - StartTransaction
    - createPQExpBuffer
    - appendPQExpBufferStr
    - restore_toc_entry
    - RestoreOutput
    - restore_toc_entries_postfork
    - pg_log_info
    - strcmp
    - ParallelBackupStart
    - ParallelBackupEnd
    - strcpy
    - pg_free
    - dumpTimestamp
    - _selectOutputSchema
    - IssueCommandPerBlob
    - _doSetFixedOutputState
    - _becomeOwner
    - pg_fatal
    - ArchiveHandle*::PrepParallelRestorePtr
    - restore_toc_entries_parallel
    - destroyPQExpBuffer
    - strncmp
    - SetOutput
    - Assert
    - pending_list_header_init
    - DisconnectDatabase
    - DropLOIfExists
    - pg_strdup
    - appendPQExpBuffer
    - ArchiveHandle*::ReopenPtr
    - _tocEntryRestorePass
    - buildTocEntryArrays
    - free
    linkageType: ''
    returnType: void
    signature: void RestoreArchive(Archive *AHX, bool append_data)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:838,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:840,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:841,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:842,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:843,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:862,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:863,1
    - Dst: CommitTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:869,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:871,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:877,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:880,1
    - Dst: _printTocEntry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:883,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:886,1
    - Dst: inhibit_data_for_failed_table
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:903,1
    - Dst: mark_create_done
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:918,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:930,1
    - Dst: _reconnectToDB
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:931,1
    - Dst: _printTocEntry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:952,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:954,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:955,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:957,1
    - Dst: _selectOutputSchema
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:959,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:962,1
    - Dst: ArchiveHandle*::PrintTocDataPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:965,1
    - Dst: _disableTriggersIfNecessary
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:973,1
    - Dst: _becomeOwner
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:976,1
    - Dst: _selectOutputSchema
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:977,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:979,1
    - Dst: is_load_via_partition_root
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:999,1
    - Dst: StartTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1007,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1013,1
    - Dst: fmtQualifiedId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1014,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1020,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1022,1
    - Dst: ArchiveHandle*::PrintTocDataPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1028,1
    - Dst: RestoringToDB
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1034,1
    - Dst: EndDBCopyMode
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1035,1
    - Dst: CommitTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1040,1
    - Dst: _enableTriggersIfNecessary
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1042,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1049,1
    - Dst: _printTocEntry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1050,1
    - Dst: _printTocEntry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1058,1
    - Dst: CommitTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1070,1
    - Dst: StartTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1071,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1074,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 98
    argCount: 3
    argNames:
    - AH
    - te
    - is_parallel
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 827
    functionDepth: 2
    functionLinenumber: 827
    functionLinenumberEnd: 1083
    functionName: restore_toc_entry
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - CommitTransaction
    - ahprintf
    - pg_log_warning
    - inhibit_data_for_failed_table
    - strlen
    - StartTransaction
    - _reconnectToDB
    - _disableTriggersIfNecessary
    - RestoringToDB
    - _printTocEntry
    - pg_log_info
    - strcmp
    - _enableTriggersIfNecessary
    - _selectOutputSchema
    - EndDBCopyMode
    - mark_create_done
    - _becomeOwner
    - ArchiveHandle*::PrintTocDataPtr
    - fmtQualifiedId
    - is_load_via_partition_root
    linkageType: ''
    returnType: int
    signature: int restore_toc_entry(ArchiveHandle *AH, TocEntry *te, bool is_parallel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1094,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1089
    functionDepth: 1
    functionLinenumber: 1089
    functionLinenumberEnd: 1107
    functionName: NewRestoreOptions
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 3
    functionsReached:
    - pg_malloc0
    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:1118,1
    - Dst: _becomeUser
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1126,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1131,1
    - Dst: fmtQualifiedId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1132,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1133
      start: 1109
    functionDepth: 1
    functionLinenumber: 1109
    functionLinenumberEnd: 1133
    functionName: _disableTriggersIfNecessary
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - fmtQualifiedId
    - ahprintf
    - _becomeUser
    - pg_log_info
    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:1144,1
    - Dst: _becomeUser
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1152,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1157,1
    - Dst: fmtQualifiedId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1158,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1159
      start: 1135
    functionDepth: 1
    functionLinenumber: 1135
    functionLinenumberEnd: 1159
    functionName: _enableTriggersIfNecessary
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - fmtQualifiedId
    - ahprintf
    - _becomeUser
    - pg_log_info
    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:1176,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1180,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1188,1
    - Dst: fmtQualifiedId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1189,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1190,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1191,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - te
    argTypes:
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1196
      start: 1172
    functionDepth: 1
    functionLinenumber: 1172
    functionLinenumberEnd: 1196
    functionName: is_load_via_partition_root
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - fmtQualifiedId
    - createPQExpBuffer
    - appendPQExpBuffer
    - destroyPQExpBuffer
    - strncmp
    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:1209,1
    - Dst: ArchiveHandle*::WriteDataPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - AHX
    - data
    - dLen
    argTypes:
    - Archive*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1212
      start: 1203
    functionDepth: 0
    functionLinenumber: 1203
    functionLinenumberEnd: 1212
    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
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1231,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1246,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1247,1
    - Dst: pg_strdup
      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:1249,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1251,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1252,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1253,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1254,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1255,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1259,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1260,1
    - Dst: ArchiveHandle*::ArchiveEntryPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1280,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 40
    argCount: 4
    argNames:
    - AHX
    - catalogId
    - dumpId
    - opts
    argTypes:
    - Archive*
    - CatalogId
    - DumpId
    - ArchiveOpts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1283
      start: 1224
    functionDepth: 1
    functionLinenumber: 1224
    functionLinenumberEnd: 1283
    functionName: ArchiveEntry
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 61
    functionsReached:
    - ArchiveHandle*::ArchiveEntryPtr
    - pg_strdup
    - pg_malloc
    - pg_malloc0
    - memcpy
    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:1301,1
    - Dst: SetOutput
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1303,1
    - Dst: strftime
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1305,1
    - Dst: localtime
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1306,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1307,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1309,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1310,1
    - Dst: sanitize_line
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1311,1
    - Dst: get_compress_algorithm_name
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1313,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1330,1
    - Dst: ARCHIVE_MAJOR
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1331,1
    - Dst: ARCHIVE_MINOR
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1331,1
    - Dst: ARCHIVE_REV
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1331,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1332,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1333,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1334,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1336,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1339,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1342,1
    - Dst: _tocEntryRequired
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1350,1
    - Dst: sanitize_line
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1361,1
    - Dst: sanitize_line
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1362,1
    - Dst: sanitize_line
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1363,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1365,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1370,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1371,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1372,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1378,1
    - Dst: ahprintf
      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:1381,1
    - Dst: StrictNamesCheck
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1387,1
    - Dst: RestoreOutput
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1390,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 56
    argCount: 1
    argNames:
    - AHX
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1391
      start: 1286
    functionDepth: 1
    functionLinenumber: 1286
    functionLinenumberEnd: 1391
    functionName: PrintTOCSummary
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - SetOutput
    - _tocEntryRequired
    - ahprintf
    - SaveOutput
    - ARCHIVE_REV
    - ARCHIVE_MINOR
    - get_compress_algorithm_name
    - StrictNamesCheck
    - RestoreOutput
    - ARCHIVE_MAJOR
    - sanitize_line
    - localtime
    - strftime
    - free
    - 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:1404,1
    - Dst: ArchiveHandle*::StartLOPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1406,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - AHX
    - oid
    argTypes:
    - Archive*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1409
      start: 1398
    functionDepth: 0
    functionLinenumber: 1398
    functionLinenumberEnd: 1409
    functionName: StartLO
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - pg_fatal
    - ArchiveHandle*::StartLOPtr
    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:1418,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - AHX
    - oid
    argTypes:
    - Archive*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1421
      start: 1412
    functionDepth: 0
    functionLinenumber: 1412
    functionLinenumberEnd: 1421
    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:1443,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1445,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1449
      start: 1430
    functionDepth: 1
    functionLinenumber: 1430
    functionLinenumberEnd: 1449
    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:1462,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1464,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1467,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1467,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1471
      start: 1454
    functionDepth: 1
    functionLinenumber: 1454
    functionLinenumberEnd: 1471
    functionName: EndRestoreLOs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 3
    functionsReached:
    - ngettext
    - CommitTransaction
    - ahprintf
    - pg_log_info
    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:1490,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1494,1
    - Dst: DropLOIfExists
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1498,1
    - Dst: lo_create
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1504,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1506,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1507,1
    - Dst: lo_open
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1509,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1511,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1512,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1517,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1520,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 3
    argNames:
    - AH
    - oid
    - drop
    argTypes:
    - ArchiveHandle*
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1525
      start: 1477
    functionDepth: 2
    functionLinenumber: 1477
    functionLinenumberEnd: 1525
    functionName: StartRestoreLO
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 3
    functionsReached:
    - lo_open
    - PQerrorMessage
    - ahprintf
    - DropLOIfExists
    - pg_malloc
    - pg_fatal
    - pg_log_info
    - lo_create
    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:1533,1
    - Dst: lo_close
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1540,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1545,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - AH
    - oid
    argTypes:
    - ArchiveHandle*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1547
      start: 1527
    functionDepth: 1
    functionLinenumber: 1527
    functionLinenumberEnd: 1547
    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
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1562,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1565,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1567,1
    - Dst: initStringInfo
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1569,1
    - Dst: pg_get_line_buf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1571,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1579,1
    - Dst: strspn
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1587,1
    - Dst: strtol
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1591,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1595,1
    - Dst: getTocEntryByDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1600,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1602,1
    - Dst: _moveBefore
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1619,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1622,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1624,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1625,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 1
    argNames:
    - AHX
    argTypes:
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1626
      start: 1553
    functionDepth: 1
    functionLinenumber: 1553
    functionLinenumberEnd: 1626
    functionName: SortTocFromFile
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - strspn
    - _moveBefore
    - fclose
    - pg_log_warning
    - fopen
    - strtol
    - pg_get_line_buf
    - pg_fatal
    - pg_malloc0
    - getTocEntryByDumpId
    - initStringInfo
    - pg_free
    - strchr
    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:1637,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1637,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - AH
    argTypes:
    - char*
    - Archive*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1638
      start: 1634
    functionDepth: 1
    functionLinenumber: 1634
    functionLinenumberEnd: 1638
    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:1654,1
    - Dst: va_start
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1658,1
    - Dst: pvsnprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1659,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1660,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1666,1
    - Dst: WriteData
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1670,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1671,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - AH
    - fmt
    argTypes:
    - Archive*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1673
      start: 1641
    functionDepth: 1
    functionLinenumber: 1641
    functionLinenumberEnd: 1673
    functionName: archprintf
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - va_end
    - pg_malloc
    - pvsnprintf
    - WriteData
    - va_start
    - free
    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:1691,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1692,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1695,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1701,1
    - Dst: InitCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1708,1
    - Dst: CompressFileHandle*::open_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1710,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1713,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1715,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 4
    argNames:
    - AH
    - filename
    - compression_spec
    - append_data
    argTypes:
    - ArchiveHandle*
    - char*
    - pg_compress_specification
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1719
      start: 1680
    functionDepth: 2
    functionLinenumber: 1680
    functionLinenumberEnd: 1719
    functionName: SetOutput
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - pg_fatal
    - fileno
    - InitCompressFileHandle
    - strcmp
    - CompressFileHandle*::open_func
    linkageType: ''
    returnType: void
    signature: "void SetOutput(ArchiveHandle *AH, const char *filename,\n\t\t  const
      pg_compress_specification compression_spec,\n\t\t  bool append_data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1725
      start: 1721
    functionDepth: 0
    functionLinenumber: 1721
    functionLinenumberEnd: 1725
    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:1731,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1732,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - AH
    - savedOutput
    argTypes:
    - ArchiveHandle*
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1735
      start: 1727
    functionDepth: 3
    functionLinenumber: 1727
    functionLinenumberEnd: 1735
    functionName: RestoreOutput
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - pg_fatal
    - EndCompressFileHandle
    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:1755,1
    - Dst: va_start
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1759,1
    - Dst: pvsnprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1760,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1761,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1767,1
    - Dst: ahwrite
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1771,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1772,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - AH
    - fmt
    argTypes:
    - ArchiveHandle*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1774
      start: 1742
    functionDepth: 1
    functionLinenumber: 1742
    functionLinenumberEnd: 1774
    functionName: ahprintf
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 21
    functionsReached:
    - va_end
    - pg_malloc
    - pvsnprintf
    - ahwrite
    - va_start
    - free
    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: 1785
      start: 1779
    functionDepth: 0
    functionLinenumber: 1779
    functionLinenumberEnd: 1785
    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:1797,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1798,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1798,1
    - Dst: warn_or_exit_horribly
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1804,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1805,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1809,1
    - Dst: appendByteaLiteralAHX
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1811,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1818,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1821,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1824
      start: 1790
    functionDepth: 2
    functionLinenumber: 1790
    functionLinenumberEnd: 1824
    functionName: dump_lo_buf
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - PQerrorMessage
    - ahprintf
    - createPQExpBuffer
    - lo_write
    - appendByteaLiteralAHX
    - pg_log_debug
    - destroyPQExpBuffer
    - warn_or_exit_horribly
    - ngettext
    linkageType: ''
    returnType: void
    signature: void dump_lo_buf(ArchiveHandle *AH)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1846,1
    - Dst: dump_lo_buf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1850,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1853,1
    - Dst: ArchiveHandle*::CustomOutPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1859,1
    - Dst: RestoringToDB
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1865,1
    - Dst: ExecuteSqlCommandBuf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1866,1
    - Dst: CompressFileHandle*::write_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1871,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 4
    argNames:
    - ptr
    - size
    - nmemb
    - AH
    argTypes:
    - void*
    - size_t
    - size_t
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1877
      start: 1833
    functionDepth: 4
    functionLinenumber: 1833
    functionLinenumberEnd: 1877
    functionName: ahwrite
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 9
    functionsReached:
    - dump_lo_buf
    - RestoringToDB
    - ArchiveHandle*::CustomOutPtr
    - memcpy
    - ExecuteSqlCommandBuf
    - CompressFileHandle*::write_func
    linkageType: ''
    returnType: void
    signature: void ahwrite(const void *ptr, size_t size, size_t nmemb, ArchiveHandle
      *AH)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1894,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1899,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1904,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1909,1
    - Dst: va_start
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1920,1
    - Dst: pg_log_generic_v
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1921,1
    - Dst: va_end
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1922,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1925,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 2
    argNames:
    - AH
    - fmt
    argTypes:
    - ArchiveHandle*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1928
      start: 1880
    functionDepth: 1
    functionLinenumber: 1880
    functionLinenumberEnd: 1928
    functionName: warn_or_exit_horribly
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 3
    functionsReached:
    - va_end
    - va_start
    - pg_log_info
    - exit_nicely
    - pg_log_generic_v
    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: 1944
      start: 1932
    functionDepth: 0
    functionLinenumber: 1932
    functionLinenumberEnd: 1944
    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: 1959
      start: 1947
    functionDepth: 0
    functionLinenumber: 1947
    functionLinenumberEnd: 1959
    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
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1978,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1979,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1985,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:1996,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2006,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2011
      start: 1972
    functionDepth: 1
    functionLinenumber: 1972
    functionLinenumberEnd: 2011
    functionName: buildTocEntryArrays
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - strcmp
    - pg_fatal
    - pg_malloc0
    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:2018,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - AH
    - id
    argTypes:
    - ArchiveHandle*
    - DumpId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2024
      start: 2013
    functionDepth: 2
    functionLinenumber: 2013
    functionLinenumberEnd: 2024
    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:2029,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - AH
    - id
    argTypes:
    - ArchiveHandle*
    - DumpId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2035
      start: 2026
    functionDepth: 3
    functionLinenumber: 2026
    functionLinenumberEnd: 2035
    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:2043,1
    - Dst: ArchiveHandle*::WriteBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2048,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - AH
    - o
    - wasSet
    argTypes:
    - ArchiveHandle*
    - pgoff_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2052
      start: 2037
    functionDepth: 0
    functionLinenumber: 2037
    functionLinenumberEnd: 2052
    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:2068,1
    - Dst: ArchiveHandle*::ReadBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2087,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2098,1
    - Dst: ArchiveHandle*::ReadBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2107,1
    - Dst: ArchiveHandle*::ReadBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2110,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2111,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 2
    argNames:
    - AH
    - o
    argTypes:
    - ArchiveHandle*
    - pgoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2116
      start: 2054
    functionDepth: 1
    functionLinenumber: 2054
    functionLinenumberEnd: 2116
    functionName: ReadOffset
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - pg_fatal
    - ArchiveHandle*::ReadBytePtr
    - ReadInt
    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:2134,1
    - Dst: ArchiveHandle*::WriteBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2138,1
    - Dst: ArchiveHandle*::WriteBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2142,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - AH
    - i
    argTypes:
    - ArchiveHandle*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2147
      start: 2118
    functionDepth: 0
    functionLinenumber: 2118
    functionLinenumberEnd: 2147
    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:2160,1
    - Dst: ArchiveHandle*::ReadBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2164,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2174
      start: 2149
    functionDepth: 0
    functionLinenumber: 2149
    functionLinenumberEnd: 2174
    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:2183,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2185,1
    - Dst: ArchiveHandle*::WriteBufPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2186,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2190,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - AH
    - c
    argTypes:
    - ArchiveHandle*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2193
      start: 2176
    functionDepth: 1
    functionLinenumber: 2176
    functionLinenumberEnd: 2193
    functionName: WriteStr
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - WriteInt
    - strlen
    - ArchiveHandle*::WriteBufPtr
    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:2201,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2206,1
    - Dst: ArchiveHandle*::ReadBufPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2207,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2213
      start: 2195
    functionDepth: 1
    functionLinenumber: 2195
    functionLinenumberEnd: 2213
    functionName: ReadStr
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - pg_malloc
    - ArchiveHandle*::ReadBufPtr
    - ReadInt
    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:2221,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2222,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2224,1
    - Dst: S_ISREG
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2224,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - dir
    - filename
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2225
      start: 2215
    functionDepth: 1
    functionLinenumber: 2215
    functionLinenumberEnd: 2225
    functionName: _fileExistsInDirectory
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached:
    - stat
    - snprintf
    - pg_fatal
    - S_ISREG
    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:2235,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2237,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2241,1
    - Dst: stat
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2255,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2255,1
    - Dst: _fileExistsInDirectory
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2258,1
    - Dst: _fileExistsInDirectory
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2261,1
    - Dst: _fileExistsInDirectory
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2265,1
    - Dst: _fileExistsInDirectory
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2269,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2272,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2278,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2280,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2287,1
    - Dst: fread
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2290,1
    - Dst: ferror
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2292,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2293,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2295,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2300,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2303,1
    - Dst: fread
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2315,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2319,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2320,1
    - Dst: strlen
      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:2321,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2321,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2327,1
    - Dst: feof
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2332,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2333,1
    - Dst: READ_ERROR_EXIT
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2335,1
    - Dst: isValidTarHeader
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2338,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2339,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2347,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2348,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 64
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2355
      start: 2227
    functionDepth: 2
    functionLinenumber: 2227
    functionLinenumberEnd: 2355
    functionName: _discoverArchiveFormat
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached:
    - isValidTarHeader
    - feof
    - READ_ERROR_EXIT
    - fclose
    - stat
    - _fileExistsInDirectory
    - ferror
    - S_ISDIR
    - fread
    - fopen
    - pg_fatal
    - pg_malloc0
    - memcpy
    - pg_log_debug
    - strlen
    - strncmp
    - free
    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:2371,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2374,1
    - Dst: time
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2388,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2394,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2411,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2421,1
    - Dst: InitCompressFileHandle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2425,1
    - Dst: CompressFileHandle*::open_func
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2426,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2426,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2427,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2437,1
    - Dst: _setmode
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2440,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2440,1
    - Dst: _setmode
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2442,1
    - Dst: fileno
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2442,1
    - Dst: _discoverArchiveFormat
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2449,1
    - Dst: InitArchiveFmt_Custom
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2456,1
    - Dst: InitArchiveFmt_Null
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2460,1
    - Dst: InitArchiveFmt_Directory
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2464,1
    - Dst: InitArchiveFmt_Tar
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2468,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2472,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: 2476
      start: 2361
    functionDepth: 5
    functionLinenumber: 2361
    functionLinenumberEnd: 2476
    functionName: _allocAH
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - strcmp
    - InitArchiveFmt_Custom
    - memset
    - _setmode
    - pg_strdup
    - _discoverArchiveFormat
    - time
    - InitArchiveFmt_Directory
    - InitArchiveFmt_Tar
    - pg_fatal
    - pg_malloc0
    - InitCompressFileHandle
    - fileno
    - InitArchiveFmt_Null
    - pg_log_debug
    - CompressFileHandle*::open_func
    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
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2498,1
    - Dst: qsort
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2513,1
    - Dst: DispatchJobForTocEntry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2516,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2519,1
    - Dst: WaitForWorkers
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2522,1
    - Dst: WriteDataChunksForTocEntry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2535,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 26
    argCount: 2
    argNames:
    - AH
    - pstate
    argTypes:
    - ArchiveHandle*
    - ParallelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2538
      start: 2481
    functionDepth: 4
    functionLinenumber: 2481
    functionLinenumberEnd: 2538
    functionName: WriteDataChunks
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 3
    functionsReached:
    - qsort
    - DispatchJobForTocEntry
    - WriteDataChunksForTocEntry
    - pg_malloc
    - WaitForWorkers
    - 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:2553,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2557,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: 2559
      start: 2547
    functionDepth: 1
    functionLinenumber: 2547
    functionLinenumberEnd: 2559
    functionName: mark_dump_job_done
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached:
    - pg_fatal
    - pg_log_info
    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:2570,1
    - Dst: TocEntry*::dataDumper
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2587,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2593
      start: 2562
    functionDepth: 0
    functionLinenumber: 2562
    functionLinenumberEnd: 2593
    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:2613,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2620,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2621,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2624,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2625,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2626,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2627,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2629,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2630,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2631,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2655,1
    - Dst: fseeko
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2658,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2659,1
    - Dst: TocEntry*::defnDumper
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2663,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2665,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2666,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2669,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2671,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2672,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2673,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2674,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2675,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2676,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2677,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2678,1
    - Dst: sprintf
      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:2684,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2686,1
    - Dst: ArchiveHandle*::WriteExtraTocPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2689,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 46
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2691
      start: 2595
    functionDepth: 2
    functionLinenumber: 2595
    functionLinenumberEnd: 2691
    functionName: WriteToc
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 3
    functionsReached:
    - WriteStr
    - fseeko
    - ArchiveHandle*::WriteExtraTocPtr
    - TocEntry*::defnDumper
    - pg_fatal
    - sprintf
    - WriteInt
    - pg_free
    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:2704,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2709,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2710,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2717,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2720,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2724,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2725,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2726,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2730,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2731,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2732,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2734,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2735,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2739,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2748,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2749,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2750,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2752,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2753,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2754,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2756,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2757,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2758,1
    - Dst: strcmp
      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:2760,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2761,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2767,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2768,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2771,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2774,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2777,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2780,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2783,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2785,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2791,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2793,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2796,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2800,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2806,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2810,1
    - Dst: pg_realloc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2816,1
    - Dst: sscanf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2818,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2819,1
    - Dst: pg_realloc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2825,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2831,1
    - Dst: ArchiveHandle*::ReadExtraTocPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2844,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2846,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2856,1
    - Dst: processEncodingEntry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2857,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2858,1
    - Dst: processStdStringsEntry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2859,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2860,1
    - Dst: processSearchPathEntry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2861,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 100
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2863
      start: 2693
    functionDepth: 2
    functionLinenumber: 2693
    functionLinenumberEnd: 2863
    functionName: ReadToc
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 3
    functionsReached:
    - ReadStr
    - processEncodingEntry
    - processSearchPathEntry
    - processStdStringsEntry
    - pg_log_warning
    - sscanf
    - ReadInt
    - pg_malloc
    - ArchiveHandle*::ReadExtraTocPtr
    - pg_fatal
    - pg_malloc0
    - pg_realloc
    - pg_log_debug
    - strcmp
    - free
    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:2869,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2874,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2876,1
    - Dst: pg_char_to_encoding
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2880,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2882,1
    - Dst: setFmtEncoding
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2885,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2888,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2891,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2892
      start: 2865
    functionDepth: 1
    functionLinenumber: 2865
    functionLinenumberEnd: 2892
    functionName: processEncodingEntry
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - pg_strdup
    - setFmtEncoding
    - pg_fatal
    - pg_char_to_encoding
    - free
    - strchr
    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:2900,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2901,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2903,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2906,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2908
      start: 2894
    functionDepth: 0
    functionLinenumber: 2894
    functionLinenumberEnd: 2908
    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:2917,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2918
      start: 2910
    functionDepth: 1
    functionLinenumber: 2910
    functionLinenumberEnd: 2918
    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:2925,1
    - Dst: simple_string_list_not_touched
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2929,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2931,1
    - Dst: simple_string_list_not_touched
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2936,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2938,1
    - Dst: simple_string_list_not_touched
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2943,1
    - Dst: pg_fatal
      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:2950,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2952,1
    - Dst: simple_string_list_not_touched
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2957,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2959,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 1
    argNames:
    - ropt
    argTypes:
    - RestoreOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2961
      start: 2920
    functionDepth: 1
    functionLinenumber: 2920
    functionLinenumberEnd: 2961
    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: 52
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2978,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2979,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2980,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2983,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2996,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:2997,1
    - Dst: _tocEntryIsACL
      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:3014,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3019,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3020,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3028,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3029,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3030,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3034,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3038,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3068,1
    - Dst: strcmp
      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:3070,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3071,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3074,1
    - Dst: getTocEntryByDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3106,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3110,1
    - Dst: simple_string_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3130,1
    - Dst: simple_string_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3136,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3141,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3142,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3143,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3144,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3145,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3146,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3147,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3148,1
    - Dst: simple_string_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3153,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3156,1
    - Dst: simple_string_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3161,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3164,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3165,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3166,1
    - Dst: simple_string_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3171,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:3179,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3203,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3204,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3205,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3206,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3207,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3208,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3209,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3210,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3211,1
    - Dst: strncmp
      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:3229,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3229,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: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: strncmp
      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: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3250,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3251,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3252,1
    CyclomaticComplexity: 110
    EdgeCount: 110
    ICount: 115
    argCount: 3
    argNames:
    - te
    - curSection
    - AH
    argTypes:
    - TocEntry*
    - teSection
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3261
      start: 2971
    functionDepth: 3
    functionLinenumber: 2971
    functionLinenumberEnd: 3261
    functionName: _tocEntryRequired
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - simple_string_list_member
    - _tocEntryIsACL
    - getTocEntryByDumpId
    - strcmp
    - strncmp
    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:3272,1
    - Dst: strcmp
      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:3274,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3276,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3277,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3286,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3287,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3299,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 10
    argCount: 1
    argNames:
    - te
    argTypes:
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3305
      start: 3268
    functionDepth: 0
    functionLinenumber: 3268
    functionLinenumberEnd: 3305
    functionName: _tocEntryRestorePass
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - strcmp
    - strncmp
    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:3318,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3319,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3320,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - te
    argTypes:
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3323
      start: 3314
    functionDepth: 0
    functionLinenumber: 3314
    functionLinenumberEnd: 3323
    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: 7
    BranchProfiles: []
    Callsites:
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3337,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3338,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3339,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3340,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3343,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3344,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3347,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3352,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3352,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3356,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3359,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3362,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3365,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3367,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3371,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3373,1
    - Dst: StartTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3382,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3384,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3388,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3389
      start: 3329
    functionDepth: 2
    functionLinenumber: 3329
    functionLinenumberEnd: 3389
    functionName: _doSetFixedOutputState
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - StartTransaction
    - ahprintf
    - fmtId
    - pg_encoding_to_char
    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:3399,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3401,1
    - Dst: appendStringLiteralAHX
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3407,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3409,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3410,1
    - Dst: RestoringToDB
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3412,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3416,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3418,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3420,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3421,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3423,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3426,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3428,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - AH
    - user
    argTypes:
    - ArchiveHandle*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3429
      start: 3396
    functionDepth: 2
    functionLinenumber: 3396
    functionLinenumberEnd: 3429
    functionName: _doSetSessionAuth
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - PQexec
    - PQerrorMessage
    - ahprintf
    - PQresultStatus
    - createPQExpBuffer
    - appendPQExpBufferStr
    - RestoringToDB
    - pg_fatal
    - PQclear
    - destroyPQExpBuffer
    - appendStringLiteralAHX
    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:3442,1
    - Dst: ReconnectToServer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3443,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3448,1
    - Dst: appendPsqlMetaConnect
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3449,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3450,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3451,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3458,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3462,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3465,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3468,1
    - Dst: _doSetFixedOutputState
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3472,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 2
    argNames:
    - AH
    - dbname
    argTypes:
    - ArchiveHandle*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3473
      start: 3439
    functionDepth: 3
    functionLinenumber: 3439
    functionLinenumberEnd: 3473
    functionName: _reconnectToDB
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - ahprintf
    - termPQExpBuffer
    - _doSetFixedOutputState
    - RestoringToDB
    - free
    - ReconnectToServer
    - initPQExpBuffer
    - 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:3486,1
    - Dst: _doSetSessionAuth
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3489,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3495,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3496,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - AH
    - user
    argTypes:
    - ArchiveHandle*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3497
      start: 3480
    functionDepth: 3
    functionLinenumber: 3480
    functionLinenumberEnd: 3497
    functionName: _becomeUser
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - free
    - strcmp
    - _doSetSessionAuth
    - 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:3511,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3512
      start: 3503
    functionDepth: 4
    functionLinenumber: 3503
    functionLinenumberEnd: 3512
    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:3534,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3537,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3539,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3540,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3541,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3542,1
    - Dst: RestoringToDB
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3544,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3548,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3550,1
    - Dst: warn_or_exit_horribly
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3551,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3553,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3555,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3558,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3560,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3561,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3563,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 2
    argNames:
    - AH
    - schemaName
    argTypes:
    - ArchiveHandle*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3564
      start: 3519
    functionDepth: 2
    functionLinenumber: 3519
    functionLinenumberEnd: 3564
    functionName: _selectOutputSchema
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - PQexec
    - PQerrorMessage
    - ahprintf
    - PQresultStatus
    - createPQExpBuffer
    - pg_strdup
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - RestoringToDB
    - fmtId
    - PQclear
    - strcmp
    - destroyPQExpBuffer
    - warn_or_exit_horribly
    - free
    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:3589,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3592,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3594,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3597,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3602,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3602,1
    - Dst: RestoringToDB
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3605,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3609,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3611,1
    - Dst: warn_or_exit_horribly
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3612,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3614,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3614,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3616,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3619,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3621,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3622,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3624,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 2
    argNames:
    - AH
    - tablespace
    argTypes:
    - ArchiveHandle*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3625
      start: 3570
    functionDepth: 2
    functionLinenumber: 3570
    functionLinenumberEnd: 3625
    functionName: _selectTablespace
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached:
    - PQexec
    - PQerrorMessage
    - ahprintf
    - PQresultStatus
    - createPQExpBuffer
    - pg_strdup
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - RestoringToDB
    - fmtId
    - PQclear
    - strcmp
    - destroyPQExpBuffer
    - warn_or_exit_horribly
    - free
    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:3648,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3651,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3652,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3652,1
    - Dst: RestoringToDB
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3654,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3658,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3660,1
    - Dst: warn_or_exit_horribly
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3661,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3663,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3665,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3668,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3670,1
    - Dst: 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
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - AH
    - tableam
    argTypes:
    - ArchiveHandle*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3674
      start: 3630
    functionDepth: 2
    functionLinenumber: 3630
    functionLinenumberEnd: 3674
    functionName: _selectTableAccessMethod
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached:
    - PQexec
    - PQerrorMessage
    - ahprintf
    - PQresultStatus
    - createPQExpBuffer
    - pg_strdup
    - appendPQExpBuffer
    - RestoringToDB
    - fmtId
    - PQclear
    - strcmp
    - destroyPQExpBuffer
    - warn_or_exit_horribly
    - free
    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:3694,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3696,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3698,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3699,1
    - Dst: fmtQualifiedId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3699,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3700,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3701,1
    - Dst: RestoringToDB
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3703,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3707,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3709,1
    - Dst: warn_or_exit_horribly
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3710,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3712,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3713,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3716,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3718,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3719
      start: 3680
    functionDepth: 2
    functionLinenumber: 3680
    functionLinenumberEnd: 3719
    functionName: _printTableAccessMethodNoStorage
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached:
    - Assert
    - fmtQualifiedId
    - PQexec
    - PQerrorMessage
    - ahprintf
    - PQresultStatus
    - createPQExpBuffer
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - RestoringToDB
    - fmtId
    - PQclear
    - destroyPQExpBuffer
    - warn_or_exit_horribly
    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:3734,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3735,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3736,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3737,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3738,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3739,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3740,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3741,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3742,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3743,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3744,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3745,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3747,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3748,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3749,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3750,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3751,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3752,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3753,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3754,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3756,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3758,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3758,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3759,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3759,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3762,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3764,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3771,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3772,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3773,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3774,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3775,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3776,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3779,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3783,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3790,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3792,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3796,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3797,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3798,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3799,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3800,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3801,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3802,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3803,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3804,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3805,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3806,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3807,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3812,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 22
    argCount: 2
    argNames:
    - buf
    - te
    argTypes:
    - PQExpBuffer
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3813
      start: 3728
    functionDepth: 1
    functionLinenumber: 3728
    functionLinenumberEnd: 3813
    functionName: _getObjectDescription
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached:
    - pg_strdup
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - pg_fatal
    - fmtId
    - free
    - strcmp
    - strlen
    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:3833,1
    - Dst: _selectOutputSchema
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3834,1
    - Dst: _selectTablespace
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3835,1
    - Dst: _selectTableAccessMethod
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3837,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3846,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3849,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3855,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3857,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3858,1
    - Dst: sanitize_line
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3862,1
    - Dst: sanitize_line
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3863,1
    - Dst: sanitize_line
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3864,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3866,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3870,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3871,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3872,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3874,1
    - Dst: sanitize_line
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3878,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3879,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3880,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3882,1
    - Dst: ArchiveHandle*::PrintExtraTocPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3885,1
    - Dst: ahprintf
      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:3911,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3911,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3913,1
    - Dst: fmtId
      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:3915,1
    - Dst: IssueCommandPerBlob
      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:3919,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3920,1
    - Dst: IssueACLPerBlob
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3922,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3947,1
    - Dst: TocEntry*::defnDumper
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3952,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3954,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3955,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3957,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3959,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3969,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3970,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3975,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3994,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3995,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3996,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3997,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:3999,1
    - Dst: psprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4002,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4002,1
    - Dst: IssueCommandPerBlob
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4004,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4005,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4012,1
    - Dst: _getObjectDescription
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4013,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4020,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4021,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4022,1
    - Dst: _printTableAccessMethodNoStorage
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4031,1
    - Dst: _tocEntryIsACL
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4037,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4039,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 79
    argCount: 3
    argNames:
    - AH
    - te
    - pfx
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4042
      start: 3822
    functionDepth: 5
    functionLinenumber: 3822
    functionLinenumberEnd: 4042
    functionName: _printTocEntry
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - ahprintf
    - termPQExpBuffer
    - IssueACLPerBlob
    - _tocEntryIsACL
    - _selectTablespace
    - _printTableAccessMethodNoStorage
    - psprintf
    - strlen
    - ArchiveHandle*::PrintExtraTocPtr
    - _getObjectDescription
    - strcmp
    - pg_free
    - _selectTableAccessMethod
    - _selectOutputSchema
    - IssueCommandPerBlob
    - initPQExpBuffer
    - TocEntry*::defnDumper
    - _becomeOwner
    - pg_fatal
    - fmtId
    - sanitize_line
    - strncmp
    - free
    - strchr
    linkageType: ''
    returnType: void
    signature: void _printTocEntry(ArchiveHandle *AH, TocEntry *te, const char *pfx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4067,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4069,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - str
    - want_hyphen
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4078
      start: 4060
    functionDepth: 1
    functionLinenumber: 4060
    functionLinenumberEnd: 4078
    functionName: sanitize_line
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - pg_strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      sanitize_line(const char *str, bool want_hyphen)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArchiveHandle*::WriteBufPtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4088,1
    - Dst: ArchiveHandle*::WriteBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4089,1
    - Dst: ARCHIVE_MAJOR
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4089,1
    - Dst: ArchiveHandle*::WriteBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4090,1
    - Dst: ARCHIVE_MINOR
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4090,1
    - Dst: ArchiveHandle*::WriteBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4091,1
    - Dst: ARCHIVE_REV
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4091,1
    - Dst: ArchiveHandle*::WriteBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4092,1
    - Dst: ArchiveHandle*::WriteBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4093,1
    - Dst: ArchiveHandle*::WriteBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4094,1
    - Dst: ArchiveHandle*::WriteBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4095,1
    - Dst: localtime
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4096,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4097,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4098,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4099,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4100,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4101,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4102,1
    - Dst: WriteInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4103,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4104,1
    - Dst: PQdb
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4104,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4105,1
    - Dst: WriteStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4107
      start: 4083
    functionDepth: 2
    functionLinenumber: 4083
    functionLinenumberEnd: 4107
    functionName: WriteHead
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 3
    functionsReached:
    - WriteStr
    - ARCHIVE_REV
    - ArchiveHandle*::WriteBufPtr
    - ARCHIVE_MINOR
    - PQdb
    - WriteInt
    - ARCHIVE_MAJOR
    - localtime
    - 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:4128,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4130,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4131,1
    - Dst: ArchiveHandle*::ReadBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4134,1
    - Dst: ArchiveHandle*::ReadBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4135,1
    - Dst: ArchiveHandle*::ReadBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4138,1
    - Dst: MAKE_ARCHIVE_VERSION
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4142,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4145,1
    - Dst: ArchiveHandle*::ReadBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4148,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4150,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4154,1
    - Dst: ArchiveHandle*::ReadBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4157,1
    - Dst: ArchiveHandle*::ReadBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4161,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4164,1
    - Dst: ArchiveHandle*::ReadBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4168,1
    - Dst: ArchiveHandle*::ReadBytePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4173,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4175,1
    - Dst: supports_compression
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4183,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4186,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4188,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4195,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4196,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4197,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4198,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4199,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4200,1
    - Dst: ReadInt
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4201,1
    - Dst: mktime
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4216,1
    - Dst: mktime
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4220,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4222,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4228,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4233,1
    - Dst: ReadStr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4234,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 63
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4236
      start: 4109
    functionDepth: 2
    functionLinenumber: 4109
    functionLinenumberEnd: 4236
    functionName: ReadHead
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 3
    functionsReached:
    - ReadStr
    - supports_compression
    - ArchiveHandle*::ReadBufPtr
    - pg_log_warning
    - ArchiveHandle*::ReadBytePtr
    - ReadInt
    - MAKE_ARCHIVE_VERSION
    - pg_fatal
    - mktime
    - strncmp
    - pg_free
    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:4249,1
    - Dst: fseeko
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4258,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - fp
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4262
      start: 4243
    functionDepth: 1
    functionLinenumber: 4243
    functionLinenumberEnd: 4262
    functionName: checkSeek
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 2
    functionsReached:
    - ftello
    - fseeko
    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:4273,1
    - Dst: localtime
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4273,1
    - Dst: ahprintf
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4274,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - AH
    - msg
    - tim
    argTypes:
    - ArchiveHandle*
    - char*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4275
      start: 4268
    functionDepth: 2
    functionLinenumber: 4268
    functionLinenumberEnd: 4275
    functionName: dumpTimestamp
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - ahprintf
    - localtime
    - strftime
    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:4292,1
    - Dst: fix_dependencies
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4295,1
    - Dst: _tocEntryRestorePass
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4350,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4356,1
    - Dst: restore_toc_entry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4360,1
    - Dst: reduce_dependencies
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4363,1
    - Dst: pending_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4368,1
    - Dst: CommitTransaction
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4378,1
    - Dst: DisconnectDatabase
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4385,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4388,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4390,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4392,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4394,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 2
    argNames:
    - AH
    - pending_list
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4396
      start: 4286
    functionDepth: 3
    functionLinenumber: 4286
    functionLinenumberEnd: 4396
    functionName: restore_toc_entries_prefork
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - CommitTransaction
    - DisconnectDatabase
    - restore_toc_entry
    - pending_list_append
    - _tocEntryRestorePass
    - reduce_dependencies
    - pg_log_info
    - fix_dependencies
    - pg_log_debug
    - free
    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:4416,1
    - Dst: binaryheap_allocate
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4419,1
    - Dst: move_to_ready_heap
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4432,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4441,1
    - Dst: pop_next_work_item
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4446,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4452,1
    - Dst: reduce_dependencies
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4456,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4461,1
    - Dst: DispatchJobForTocEntry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4466,1
    - Dst: IsEveryWorkerIdle
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4469,1
    - Dst: move_to_ready_heap
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4481,1
    - Dst: WaitForWorkers
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4506,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4511,1
    - Dst: binaryheap_empty
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4511,1
    - Dst: binaryheap_free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4513,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4515,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 3
    argNames:
    - AH
    - pstate
    - pending_list
    argTypes:
    - ArchiveHandle*
    - ParallelState*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4516
      start: 4409
    functionDepth: 4
    functionLinenumber: 4409
    functionLinenumberEnd: 4516
    functionName: restore_toc_entries_parallel
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - pop_next_work_item
    - Assert
    - IsEveryWorkerIdle
    - DispatchJobForTocEntry
    - binaryheap_empty
    - WaitForWorkers
    - reduce_dependencies
    - pg_log_debug
    - pg_log_info
    - binaryheap_allocate
    - move_to_ready_heap
    - binaryheap_free
    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:4533,1
    - Dst: ConnectDatabaseAhx
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4538,1
    - Dst: _doSetFixedOutputState
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4541,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4551,1
    - Dst: restore_toc_entry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4553,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - AH
    - pending_list
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4555
      start: 4527
    functionDepth: 3
    functionLinenumber: 4527
    functionLinenumberEnd: 4555
    functionName: restore_toc_entries_postfork
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - restore_toc_entry
    - _doSetFixedOutputState
    - pg_log_info
    - ConnectDatabaseAhx
    - 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: 4576
      start: 4561
    functionDepth: 0
    functionLinenumber: 4561
    functionLinenumberEnd: 4576
    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: 4590
      start: 4586
    functionDepth: 0
    functionLinenumber: 4586
    functionLinenumberEnd: 4590
    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: 4600
      start: 4593
    functionDepth: 0
    functionLinenumber: 4593
    functionLinenumberEnd: 4600
    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: 4610
      start: 4603
    functionDepth: 0
    functionLinenumber: 4603
    functionLinenumberEnd: 4610
    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: 4633
      start: 4614
    functionDepth: 0
    functionLinenumber: 4614
    functionLinenumberEnd: 4633
    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:4640,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - p1
    - p2
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4641
      start: 4636
    functionDepth: 1
    functionLinenumber: 4636
    functionLinenumberEnd: 4641
    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:4665,1
    - Dst: pending_list_remove
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4668,1
    - Dst: binaryheap_add
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4670,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - pending_list
    - ready_heap
    - pass
    argTypes:
    - TocEntry*
    - binaryheap*
    - RestorePass
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4673
      start: 4651
    functionDepth: 1
    functionLinenumber: 4651
    functionLinenumberEnd: 4673
    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:4698,1
    - Dst: binaryheap_get_node
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4700,1
    - Dst: has_lock_conflicts
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4714,1
    - Dst: has_lock_conflicts
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4715,1
    - Dst: binaryheap_remove_node
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4726,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4730,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 2
    argNames:
    - ready_heap
    - pstate
    argTypes:
    - binaryheap*
    - ParallelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4732
      start: 4686
    functionDepth: 1
    functionLinenumber: 4686
    functionLinenumberEnd: 4732
    functionName: pop_next_work_item
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - has_lock_conflicts
    - binaryheap_remove_node
    - binaryheap_get_node
    - pg_log_debug
    - binaryheap_size
    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:4748,1
    - Dst: restore_toc_entry
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4754,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4757
      start: 4743
    functionDepth: 3
    functionLinenumber: 4743
    functionLinenumberEnd: 4757
    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:4774,1
    - Dst: mark_create_done
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4778,1
    - Dst: inhibit_data_for_failed_table
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4781,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4787,1
    - Dst: reduce_dependencies
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4790,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: 4791
      start: 4766
    functionDepth: 1
    functionLinenumber: 4766
    functionLinenumberEnd: 4791
    functionName: mark_restore_job_done
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 0
    functionsReached:
    - mark_create_done
    - reduce_dependencies
    - pg_fatal
    - inhibit_data_for_failed_table
    - pg_log_info
    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:4831,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4842,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4848,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4850,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4893,1
    - Dst: identify_locking_dependencies
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4923,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 49
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4925
      start: 4807
    functionDepth: 1
    functionLinenumber: 4807
    functionLinenumberEnd: 4925
    functionName: fix_dependencies
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - pg_malloc
    - repoint_table_dependencies
    - strcmp
    - identify_locking_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:4958,1
    - Dst: pg_log_debug
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:4959,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4964
      start: 4937
    functionDepth: 1
    functionLinenumber: 4937
    functionLinenumberEnd: 4964
    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:4995,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5008,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5015,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5016,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5022,1
    - Dst: pg_realloc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5026,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5028
      start: 4971
    functionDepth: 1
    functionLinenumber: 4971
    functionLinenumberEnd: 5028
    functionName: identify_locking_dependencies
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - pg_malloc
    - strcmp
    - free
    - pg_realloc
    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:5041,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5047,1
    - Dst: _tocEntryRestorePass
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5059,1
    - Dst: pending_list_remove
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5064,1
    - Dst: binaryheap_add
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5066,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - AH
    - te
    - ready_heap
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    - binaryheap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5069
      start: 5035
    functionDepth: 1
    functionLinenumber: 5035
    functionLinenumberEnd: 5069
    functionName: reduce_dependencies
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 3
    functionsReached:
    - Assert
    - binaryheap_add
    - _tocEntryRestorePass
    - pg_log_debug
    - pending_list_remove
    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: 5084
      start: 5075
    functionDepth: 0
    functionLinenumber: 5075
    functionLinenumberEnd: 5084
    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:5093,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - AH
    - te
    argTypes:
    - ArchiveHandle*
    - TocEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5102
      start: 5090
    functionDepth: 1
    functionLinenumber: 5090
    functionLinenumberEnd: 5102
    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
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5116,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5117,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5120,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5121,1
    - Dst: memset
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5124,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5136,1
    - Dst: ConnectDatabaseAhx
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5155,1
    - Dst: _doSetFixedOutputState
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5159,1
    - Dst: ArchiveHandle*::ClonePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5163,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5165,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5167
      start: 5110
    functionDepth: 3
    functionLinenumber: 5110
    functionLinenumberEnd: 5167
    functionName: CloneArchive
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - Assert
    - memset
    - pg_strdup
    - pg_malloc
    - ArchiveHandle*::ClonePtr
    - _doSetFixedOutputState
    - ConnectDatabaseAhx
    - memcpy
    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:5178,1
    - Dst: ArchiveHandle*::DeClonePtr
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5181,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5185,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5188,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5189,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5190,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5191,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5192,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c:5194,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - AH
    argTypes:
    - ArchiveHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5195
      start: 5174
    functionDepth: 1
    functionLinenumber: 5174
    functionLinenumberEnd: 5195
    functionName: DeCloneArchive
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.c
    functionUses: 1
    functionsReached:
    - free
    - Assert
    - ArchiveHandle*::DeClonePtr
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void DeCloneArchive(ArchiveHandle *AH)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 40
    functionName: pg_fatal
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_utils.h
    functionUses: 405
    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: 341
      start: 339
    functionDepth: 0
    functionLinenumber: 339
    functionLinenumberEnd: 341
    functionName: appendStringLiteralAH
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup.h
    functionUses: 26
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: appendStringLiteralAH(buf,str,AH)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: parsePGArray
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:101,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:103,1
    - Dst: parsePGArray
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:108,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:110,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:111,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:125,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:132,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:141,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:148,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:159,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:160,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:161,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:162,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:167,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:168,1
    - Dst: parseAclItem
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:175,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:185,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:188,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:188,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:190,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:191,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:193,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:195,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:196,1
    - Dst: parseAclItem
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:225,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:239,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:243,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:244,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:250,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:251,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:252,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:256,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:259,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:259,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:261,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:262,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:264,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:266,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:266,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:270,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:273,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:273,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:275,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:276,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:278,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:280,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:280,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:281,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:285,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:286,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:297,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:298,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:299,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:300,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:302,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:303,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:304,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:306,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:307,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:308,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:309,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: 312
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 312
    functionName: buildACLCommands
    functionSourceFile: /src/postgres/src/bin/pg_dump/dumputils.c
    functionUses: 1
    functionsReached:
    - parsePGArray
    - createPQExpBuffer
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - pg_malloc
    - printfPQExpBuffer
    - parseAclItem
    - fmtId
    - strcmp
    - destroyPQExpBuffer
    - free
    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:336,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:344,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:345,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:347,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:347,1
    - Dst: buildACLCommands
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:353,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:357,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:361,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: 364
      start: 327
    functionDepth: 2
    functionLinenumber: 327
    functionLinenumberEnd: 364
    functionName: buildDefaultACLCommands
    functionSourceFile: /src/postgres/src/bin/pg_dump/dumputils.c
    functionUses: 1
    functionsReached:
    - createPQExpBuffer
    - appendPQExpBuffer
    - fmtId
    - buildACLCommands
    - destroyPQExpBuffer
    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: 23
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:397,1
    - Dst: dequoteAclUserName
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:400,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:403,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:408,1
    - Dst: dequoteAclUserName
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:412,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:415,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:421,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:445,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:446,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:448,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:448,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:449,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:449,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:451,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:453,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:454,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:456,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:460,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:461,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:465,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:466,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:467,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:468,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:473,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:475,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:476,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:477,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:478,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:479,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:480,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:481,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:482,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:483,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:484,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:486,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:487,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:489,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:491,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:492,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:493,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:495,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:496,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:497,1
    - Dst: strcmp
      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: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:500,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:501,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:502,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:503,1
    - Dst: strcmp
      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: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:506,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:508,1
    - Dst: CONVERT_PRIV
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:509,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:511,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:512,1
    - Dst: CONVERT_PRIV
      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: abort
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:518,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:524,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:525,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:527,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:531,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:532,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:534,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:537,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 84
    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: 540
      start: 384
    functionDepth: 1
    functionLinenumber: 384
    functionLinenumberEnd: 540
    functionName: parseAclItem
    functionSourceFile: /src/postgres/src/bin/pg_dump/dumputils.c
    functionUses: 1
    functionsReached:
    - pg_strdup
    - printfPQExpBuffer
    - appendPQExpBuffer
    - resetPQExpBuffer
    - abort
    - CONVERT_PRIV
    - strcmp
    - dequoteAclUserName
    - pg_free
    - strchr
    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: 444
      start: 426
    functionDepth: 0
    functionLinenumber: 426
    functionLinenumberEnd: 444
    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:555,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:562,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:567,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:568,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:571,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 2
    argNames:
    - output
    - input
    argTypes:
    - PQExpBuffer
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 572
    functionName: quoteAclUserName
    functionSourceFile: /src/postgres/src/bin/pg_dump/dumputils.c
    functionUses: 2
    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:583,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:591,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:608,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 2
    argNames:
    - output
    - input
    argTypes:
    - PQExpBuffer
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 580
    functionDepth: 1
    functionLinenumber: 580
    functionLinenumberEnd: 614
    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:623,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:624,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:626,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - aclbuf
    - keyword
    - subname
    argTypes:
    - PQExpBuffer
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 619
    functionDepth: 1
    functionLinenumber: 619
    functionLinenumberEnd: 627
    functionName: AddAcl
    functionSourceFile: /src/postgres/src/bin/pg_dump/dumputils.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - appendPQExpBufferStr
    - appendPQExpBuffer
    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:643,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - catalog_name
    - objectId
    - sql
    argTypes:
    - char*
    - Oid
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 639
    functionDepth: 1
    functionLinenumber: 639
    functionLinenumberEnd: 647
    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:663,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:665,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:666,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:669,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:671,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:672,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:674,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:675,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:676,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: 678
      start: 657
    functionDepth: 1
    functionLinenumber: 657
    functionLinenumberEnd: 678
    functionName: emitShSecLabels
    functionSourceFile: /src/postgres/src/bin/pg_dump/dumputils.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - appendStringLiteralConn
    - PQgetvalue
    - appendPQExpBuffer
    - appendPQExpBufferStr
    - fmtId
    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:694,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:695,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:696,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:697,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:698,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:699,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 4
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 691
    functionDepth: 1
    functionLinenumber: 691
    functionLinenumberEnd: 703
    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
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:739,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:739,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:742,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:760,1
    - Dst: memmove
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:766,1
    - Dst: strlen
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:766,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:777,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:784,1
    - Dst: isspace
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:790,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 43
    argCount: 3
    argNames:
    - rawstring
    - separator
    - namelist
    argTypes:
    - char*
    - char
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 725
    functionDepth: 1
    functionLinenumber: 725
    functionLinenumberEnd: 812
    functionName: SplitGUCList
    functionSourceFile: /src/postgres/src/bin/pg_dump/dumputils.c
    functionUses: 1
    functionsReached:
    - memmove
    - pg_malloc
    - isspace
    - strlen
    - strchr
    linkageType: ''
    returnType: bool
    signature: "bool SplitGUCList(char *rawstring, char separator,\n\t\t\t char ***namelist)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:835,1
    - Dst: strchr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:836,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:839,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:845,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:845,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:847,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:847,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:848,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:848,1
    - Dst: variable_is_guc_list_quote
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:864,1
    - Dst: SplitGUCList
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:871,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:876,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:877,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:880,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:883,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:885,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:887,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 7
    argNames:
    - conn
    - configitem
    - type
    - name
    - type2
    - name2
    - buf
    argTypes:
    - PGconn*
    - char*
    - char*
    - char*
    - char*
    - char*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 825
    functionDepth: 2
    functionLinenumber: 825
    functionLinenumberEnd: 888
    functionName: makeAlterConfigCommand
    functionSourceFile: /src/postgres/src/bin/pg_dump/dumputils.c
    functionUses: 1
    functionsReached:
    - SplitGUCList
    - variable_is_guc_list_quote
    - pg_strdup
    - strchr
    - appendPQExpBufferStr
    - appendStringLiteralConn
    - appendPQExpBuffer
    - fmtId
    - pg_free
    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:901,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:905,1
    - Dst: mkdir
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:909,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:910,1
    - Dst: chmod
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:914,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:915,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/dumputils.c:920,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - dirname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 922
      start: 896
    functionDepth: 1
    functionLinenumber: 896
    functionLinenumberEnd: 922
    functionName: create_or_open_dir
    functionSourceFile: /src/postgres/src/bin/pg_dump/dumputils.c
    functionUses: 1
    functionsReached:
    - chmod
    - mkdir
    - pg_check_dir
    - pg_fatal
    linkageType: ''
    returnType: void
    signature: void create_or_open_dir(const char *dirname)
  - 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: 97
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:218,1
    - Dst: pg_logging_set_level
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:219,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:220,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:220,1
    - Dst: get_progname
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:221,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:225,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:225,1
    - Dst: help
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:227,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:228,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:230,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:230,1
    - Dst: puts
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:232,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:233,1
    - Dst: find_other_exec
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:237,1
    - Dst: find_my_exec
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:242,1
    - Dst: strlcpy
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:243,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:246,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:249,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:253,1
    - Dst: getopt_long
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:255,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:261,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:269,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:273,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:274,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:275,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:279,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:280,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:281,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:284,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:291,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:295,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:299,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:303,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:311,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:315,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:316,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:324,1
    - Dst: pg_logging_increase_verbosity
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:329,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:330,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:335,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:340,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:345,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:352,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:353,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:357,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:358,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:359,1
    - Dst: appendPQExpBufferStr
      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: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:373,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:377,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:378,1
    - Dst: read_dumpall_filters
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:382,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:387,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:388,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:395,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:397,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:398,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:404,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:405,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:406,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:412,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:420,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:421,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:425,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:429,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:430,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:431,1
    - Dst: parseDumpFormat
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:435,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:442,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:444,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:445,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:446,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:455,1
    - Dst: sprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:457,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:461,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:463,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:465,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:467,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:469,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:471,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:473,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:475,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:477,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:479,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:481,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:483,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:485,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:487,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:489,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:491,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:493,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:495,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:497,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:499,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:501,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:503,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:505,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:507,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:509,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:511,1
    - Dst: create_or_open_dir
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:522,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:524,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:526,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:528,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:532,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:534,1
    - Dst: ConnectDatabase
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:547,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:552,1
    - Dst: ConnectDatabase
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:556,1
    - Dst: ConnectDatabase
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:560,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:566,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:568,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:569,1
    - Dst: expand_dbname_patterns
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:576,1
    - Dst: PQsetClientEncoding
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:584,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:585,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:593,1
    - Dst: setFmtEncoding
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:594,1
    - Dst: PQparameterStatus
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:595,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:602,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:604,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:604,1
    - Dst: executeCommand
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:605,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:606,1
    - Dst: executeCommand
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:611,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:613,1
    - Dst: dumpTimestamp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:615,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:625,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:628,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:629,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:630,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:631,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:632,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:633,1
    - Dst: dropDBs
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:646,1
    - Dst: dropTablespaces
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:649,1
    - Dst: dropRoles
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:652,1
    - Dst: dumpRoles
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:662,1
    - Dst: dumpRoleMembership
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:665,1
    - Dst: dumpRoleGUCPrivs
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:669,1
    - Dst: dumpTablespaces
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:674,1
    - Dst: dumpDatabases
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:678,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:680,1
    - Dst: dumpTimestamp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:683,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:684,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:688,1
    - Dst: fsync_fname
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:692,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:695,1
    CyclomaticComplexity: 116
    EdgeCount: 116
    ICount: 301
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 129
    functionDepth: 2
    functionLinenumber: 129
    functionLinenumberEnd: 696
    functionName: main
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 1
    functionsReached:
    - PG_TEXTDOMAIN
    - pg_logging_increase_verbosity
    - dumpRoleMembership
    - snprintf
    - set_pglocale_pgservice
    - fprintf
    - read_dumpall_filters
    - pg_logging_set_level
    - expand_dbname_patterns
    - find_other_exec
    - sprintf
    - PQclientEncoding
    - pg_encoding_to_char
    - createPQExpBuffer
    - puts
    - pg_logging_init
    - appendPQExpBufferStr
    - dumpRoles
    - fopen
    - appendShellString
    - help
    - dumpDatabases
    - strcmp
    - pg_log_error
    - create_or_open_dir
    - parseDumpFormat
    - dropRoles
    - dumpTimestamp
    - fclose
    - dumpRoleGUCPrivs
    - PQfinish
    - ConnectDatabase
    - pg_log_error_hint
    - setFmtEncoding
    - strlcpy
    - pg_fatal
    - fmtId
    - dropTablespaces
    - destroyPQExpBuffer
    - dropDBs
    - get_progname
    - getopt_long
    - find_my_exec
    - PQsetClientEncoding
    - pg_strdup
    - dumpTablespaces
    - appendPQExpBuffer
    - simple_string_list_append
    - PQparameterStatus
    - exit_nicely
    - fsync_fname
    - executeCommand
    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:702,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:702,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:703,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:703,1
    - 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: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:707,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:707,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: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:757,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:757,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:758,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:758,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:759,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:759,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:769,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:769,1
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:771,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:771,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
    - Dst: printf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:774,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:774,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 67
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 699
    functionDepth: 0
    functionLinenumber: 699
    functionLinenumberEnd: 775
    functionName: help
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 5
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void help(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:784,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:790,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:796,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:801,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:803,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:805,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:806,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:808,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:812,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:814,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:816,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:819,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:820,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:822,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 781
    functionDepth: 1
    functionLinenumber: 781
    functionLinenumberEnd: 823
    functionName: dropRoles
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - createPQExpBuffer
    - executeQuery
    - PQgetvalue
    - printfPQExpBuffer
    - fprintf
    - PQfnumber
    - fmtId
    - PQclear
    - destroyPQExpBuffer
    linkageType: ''
    returnType: void
    signature: void dropRoles(PGconn *conn)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:831,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:854,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:865,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:875,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:886,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:888,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:889,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:890,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:891,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:892,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:893,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:894,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:895,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:896,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:897,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:898,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:899,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:900,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:901,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:903,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:904,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:906,1
    - Dst: atooid
      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: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:912,1
    - Dst: strncmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:914,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:916,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:921,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:925,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:926,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: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:941,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:941,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:942,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:942,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:944,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:944,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:945,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:947,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:949,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:949,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:950,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:952,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:954,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:954,1
    - Dst: appendPQExpBufferStr
      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: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:959,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:959,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:960,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:962,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:964,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:964,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:965,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:967,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:969,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:969,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:970,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:972,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:974,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:974,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:975,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:977,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:979,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:979,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:980,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:981,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:984,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:986,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:987,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:987,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:990,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:991,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:992,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:994,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:996,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:998,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:998,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:999,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:999,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1000,1
    - Dst: buildShSecLabels
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1004,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1008,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1016,1
    - Dst: dumpUserConfig
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1017,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1017,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1019,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1021,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1023,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 82
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1024
      start: 828
    functionDepth: 1
    functionLinenumber: 828
    functionLinenumberEnd: 1024
    functionName: dumpRoles
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 1
    functionsReached:
    - buildShSecLabels
    - dumpUserConfig
    - pg_log_warning
    - PQgetvalue
    - fprintf
    - resetPQExpBuffer
    - atooid
    - createPQExpBuffer
    - appendPQExpBufferStr
    - PQclear
    - strcmp
    - PQntuples
    - PQfnumber
    - fmtId
    - destroyPQExpBuffer
    - strncmp
    - executeQuery
    - appendStringLiteralConn
    - printfPQExpBuffer
    - appendPQExpBuffer
    - PQgetisnull
    linkageType: ''
    returnType: void
    signature: void dumpRoles(PGconn *conn)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1036,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1037,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1065,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1073,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1081,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1082,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1088,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1089,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1090,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1091,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1092,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1093,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1094,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1095,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1096,1
    - Dst: PQfnumber
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1097,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1099,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1100,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1116,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1119,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1127,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1130,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1131,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1140,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1141,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1146,1
    - Dst: rolename_create
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1147,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1163,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1165,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1166,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1185,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1188,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1189,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1194,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1197,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1198,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1204,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1205,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1206,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1207,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1209,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1218,1
    - Dst: rolename_lookup
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1219,1
    - Dst: rolename_insert
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1231,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1234,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1235,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1235,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1236,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1236,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:1244,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1245,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1246,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1253,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1254,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1257,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1259,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1259,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1260,1
    - Dst: rolename_destroy
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1264,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1265,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1269,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1270,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1272,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 97
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1273
      start: 1033
    functionDepth: 1
    functionLinenumber: 1033
    functionLinenumberEnd: 1273
    functionName: dumpRoleMembership
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 1
    functionsReached:
    - rolename_destroy
    - pg_log_warning
    - PQgetvalue
    - fprintf
    - resetPQExpBuffer
    - pg_malloc0
    - rolename_create
    - rolename_lookup
    - atooid
    - createPQExpBuffer
    - appendPQExpBufferStr
    - PQclear
    - strcmp
    - pg_log_error
    - pg_free
    - rolename_insert
    - PQserverVersion
    - PQntuples
    - PQfinish
    - PQfnumber
    - fmtId
    - destroyPQExpBuffer
    - executeQuery
    - appendPQExpBuffer
    - printfPQExpBuffer
    - PQgetisnull
    - exit_nicely
    linkageType: ''
    returnType: void
    signature: void dumpRoleMembership(PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1292,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1299,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1300,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1302,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1304,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1305,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1306,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1307,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1308,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1312,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1312,1
    - Dst: buildACLCommands
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1314,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1318,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1320,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1321,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1324,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1326,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1327,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1330,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1331,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1332
      start: 1283
    functionDepth: 2
    functionLinenumber: 1283
    functionLinenumberEnd: 1332
    functionName: dumpRoleGUCPrivs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - destroyPQExpBuffer
    - createPQExpBuffer
    - pg_strdup
    - PQfinish
    - executeQuery
    - PQgetvalue
    - fprintf
    - exit_nicely
    - fmtId
    - buildACLCommands
    - PQclear
    - pg_log_error
    - free
    linkageType: ''
    returnType: void
    signature: void dumpRoleGUCPrivs(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1348,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1353,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1354,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1356,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1358,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1360,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1362,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1365,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1367,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1368
      start: 1338
    functionDepth: 1
    functionLinenumber: 1338
    functionLinenumberEnd: 1368
    functionName: dropTablespaces
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - executeQuery
    - PQgetvalue
    - fprintf
    - fmtId
    - PQclear
    linkageType: ''
    returnType: void
    signature: void dropTablespaces(PGconn *conn)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1383,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1393,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1394,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1396,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1398,1
    - Dst: atooid
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1399,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1399,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1400,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1401,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1402,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1403,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1404,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1405,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1406,1
    - Dst: pg_strdup
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1410,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1410,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1414,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1415,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1418,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1419,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1419,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1421,1
    - Dst: is_absolute_path
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1427,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1428,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1430,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1432,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1435,1
    - Dst: buildACLCommands
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1441,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1445,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1447,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1448,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1453,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1454,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1455,1
    - Dst: buildShSecLabels
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1459,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1463,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1465,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1466,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1469,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1470,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1471
      start: 1373
    functionDepth: 2
    functionLinenumber: 1373
    functionLinenumberEnd: 1471
    functionName: dumpTablespaces
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 1
    functionsReached:
    - buildShSecLabels
    - PQgetvalue
    - fprintf
    - atooid
    - createPQExpBuffer
    - appendPQExpBufferStr
    - PQclear
    - pg_log_error
    - PQntuples
    - is_absolute_path
    - PQfinish
    - fmtId
    - destroyPQExpBuffer
    - pg_strdup
    - executeQuery
    - appendStringLiteralConn
    - appendPQExpBuffer
    - buildACLCommands
    - exit_nicely
    - free
    linkageType: ''
    returnType: void
    signature: void dumpTablespaces(PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1487,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1493,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1494,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1496,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1498,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1505,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1506,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1507,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1509,1
    - Dst: fmtId
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1511,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1515,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1517,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1518
      start: 1477
    functionDepth: 1
    functionLinenumber: 1477
    functionLinenumberEnd: 1518
    functionName: dropDBs
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - executeQuery
    - PQgetvalue
    - fprintf
    - fmtId
    - PQclear
    - strcmp
    linkageType: ''
    returnType: void
    signature: void dropDBs(PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1527,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1531,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1535,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1536,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1538,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1540,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1543,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1546,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1549,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1551,1
    - Dst: makeAlterConfigCommand
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1552,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1552,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1555,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1558,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1560,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - conn
    - username
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1561
      start: 1524
    functionDepth: 3
    functionLinenumber: 1524
    functionLinenumberEnd: 1561
    functionName: dumpUserConfig
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 1
    functionsReached:
    - appendPQExpBufferChar
    - PQntuples
    - createPQExpBuffer
    - executeQuery
    - appendStringLiteralConn
    - printfPQExpBuffer
    - fprintf
    - PQgetvalue
    - makeAlterConfigCommand
    - resetPQExpBuffer
    - PQclear
    - destroyPQExpBuffer
    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:1578,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1590,1
    - Dst: processSQLNamePattern
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1592,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1598,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1600,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1601,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1604,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1605,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1607,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1607,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1610,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1611,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1614,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - conn
    - patterns
    - names
    argTypes:
    - PGconn*
    - SimpleStringList*
    - SimpleStringList*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1615
      start: 1567
    functionDepth: 1
    functionLinenumber: 1567
    functionLinenumberEnd: 1615
    functionName: expand_dbname_patterns
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - processSQLNamePattern
    - destroyPQExpBuffer
    - PQfinish
    - createPQExpBuffer
    - appendPQExpBufferStr
    - executeQuery
    - PQgetvalue
    - simple_string_list_append
    - exit_nicely
    - resetPQExpBuffer
    - PQclear
    - pg_log_error
    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: 20
    BranchProfiles: []
    Callsites:
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1640,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1646,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1647,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1658,1
    - Dst: mkdir
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1661,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1662,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1664,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1667,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1669,1
    - Dst: PQntuples
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1672,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1674,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1675,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1680,1
    - Dst: simple_string_list_member
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1684,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1686,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1697,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1699,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1701,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1704,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1707,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1710,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1720,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1720,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1726,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1732,1
    - Dst: runPgDump
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1734,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1736,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1743,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1745,1
    - Dst: fopen
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1747,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1749,1
    - Dst: fclose
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1756,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1758,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 55
    argCount: 2
    argNames:
    - conn
    - archDumpFormat
    argTypes:
    - PGconn*
    - ArchiveFormat
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1759
      start: 1620
    functionDepth: 1
    functionLinenumber: 1620
    functionLinenumberEnd: 1759
    functionName: dumpDatabases
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 1
    functionsReached:
    - PQntuples
    - simple_string_list_member
    - fclose
    - snprintf
    - executeQuery
    - PQgetvalue
    - fprintf
    - fopen
    - pg_fatal
    - runPgDump
    - pg_log_info
    - PQclear
    - strcmp
    - mkdir
    linkageType: ''
    returnType: void
    signature: void dumpDatabases(PGconn *conn, ArchiveFormat archDumpFormat)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1774,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1775,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1783,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1787,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1789,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1791,1
    - Dst: printfPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1795,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1803,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1805,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1812,1
    - Dst: appendConnStrVal
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1813,1
    - Dst: appendShellString
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1815,1
    - Dst: pg_log_info
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1817,1
    - Dst: fflush
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1819,1
    - Dst: system
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1821,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1823,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1824,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 4
    argNames:
    - dbname
    - create_opts
    - dbfile
    - archDumpFormat
    argTypes:
    - char*
    - char*
    - char*
    - ArchiveFormat
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1827
      start: 1766
    functionDepth: 1
    functionLinenumber: 1766
    functionLinenumberEnd: 1827
    functionName: runPgDump
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 1
    functionsReached:
    - appendConnStrVal
    - fflush
    - termPQExpBuffer
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - printfPQExpBuffer
    - appendShellString
    - pg_log_info
    - initPQExpBuffer
    - system
    linkageType: ''
    returnType: int
    signature: "int runPgDump(const char *dbname, const char *create_opts, char *dbfile,\n\t\t
      \ ArchiveFormat archDumpFormat)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1845,1
    - Dst: buildShSecLabelQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1848,1
    - Dst: executeQuery
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1849,1
    - Dst: emitShSecLabels
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1850,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1852,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1853,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: 1854
      start: 1840
    functionDepth: 2
    functionLinenumber: 1840
    functionLinenumberEnd: 1854
    functionName: buildShSecLabels
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 2
    functionsReached:
    - buildShSecLabelQuery
    - destroyPQExpBuffer
    - createPQExpBuffer
    - executeQuery
    - PQclear
    - emitShSecLabels
    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:1864,1
    - Dst: PQexec
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1866,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1868,1
    - Dst: pg_log_error
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1870,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1870,1
    - Dst: pg_log_error_detail
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1871,1
    - Dst: PQfinish
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1872,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1873,1
    - Dst: PQclear
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1876,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - conn
    - query
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1877
      start: 1859
    functionDepth: 1
    functionLinenumber: 1859
    functionLinenumberEnd: 1877
    functionName: executeCommand
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 5
    functionsReached:
    - pg_log_error_detail
    - PQexec
    - PQerrorMessage
    - PQresultStatus
    - PQfinish
    - exit_nicely
    - pg_log_info
    - PQclear
    - pg_log_error
    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:1887,1
    - Dst: strftime
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1889,1
    - Dst: localtime
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1889,1
    - Dst: fprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1890,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - msg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1891
      start: 1883
    functionDepth: 0
    functionLinenumber: 1883
    functionLinenumberEnd: 1891
    functionName: dumpTimestamp
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 2
    functionsReached:
    - localtime
    - strftime
    - 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:1910,1
    - Dst: filter_read_item
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1912,1
    - Dst: pg_log_filter_error
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1916,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1916,1
    - Dst: filter_object_type_name
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1918,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1919,1
    - Dst: pg_log_filter_error
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1936,1
    - Dst: _
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1936,1
    - Dst: exit_nicely
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1937,1
    - Dst: simple_string_list_append
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1941,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1946,1
    - Dst: filter_free
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1949,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 2
    argNames:
    - filename
    - pattern
    argTypes:
    - char*
    - SimpleStringList*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1950
      start: 1902
    functionDepth: 5
    functionLinenumber: 1902
    functionLinenumberEnd: 1950
    functionName: read_dumpall_filters
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 1
    functionsReached:
    - filter_read_item
    - pg_log_filter_error
    - simple_string_list_append
    - filter_init
    - _
    - filter_object_type_name
    - filter_free
    - exit_nicely
    - free
    linkageType: ''
    returnType: void
    signature: void read_dumpall_filters(const char *filename, SimpleStringList *pattern)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1962,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1964,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1966,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1968,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1970,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1972,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1974,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1976,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dumpall.c:1979,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 1
    argNames:
    - format
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1983
      start: 1957
    functionDepth: 1
    functionLinenumber: 1957
    functionLinenumberEnd: 1983
    functionName: parseDumpFormat
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dumpall.c
    functionUses: 1
    functionsReached:
    - pg_strcasecmp
    - pg_fatal
    linkageType: ''
    returnType: ArchiveFormat
    signature: ArchiveFormat parseDumpFormat(const char *format)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: qsort
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:193,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - objs
    - numObjs
    argTypes:
    - DumpableObject**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 195
    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: 23
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:220,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:232,1
    - Dst: findTypeByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:249,1
    - Dst: findTypeByOid
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:250,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:256,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:261,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:293,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:304,1
    - Dst: strcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:315,1
    - Dst: oidcmp
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:322,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 60
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 197
    functionDepth: 2
    functionLinenumber: 197
    functionLinenumberEnd: 323
    functionName: DOTypeNameCompare
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 0
    functionsReached:
    - oidcmp
    - strcmp
    - findTypeByOid
    linkageType: ''
    returnType: int
    signature: int DOTypeNameCompare(const void *p1, const void *p2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:350,1
    - Dst: TopoSort
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:351,1
    - Dst: findDependencyLoops
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:352,1
    - Dst: memcpy
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:354,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:356,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - objs
    - numObjs
    - preBoundaryId
    - postBoundaryId
    argTypes:
    - DumpableObject**
    - int
    - DumpId
    - DumpId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 333
    functionDepth: 1
    functionLinenumber: 333
    functionLinenumberEnd: 357
    functionName: sortDumpableObjects
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 1
    functionsReached:
    - findDependencyLoops
    - pg_malloc
    - TopoSort
    - memcpy
    - free
    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:391,1
    - Dst: binaryheap_allocate
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:420,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:429,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:430,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:436,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:442,1
    - Dst: binaryheap_add_unordered
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:458,1
    - Dst: binaryheap_build
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:460,1
    - Dst: binaryheap_empty
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:478,1
    - Dst: binaryheap_remove_first
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:481,1
    - Dst: binaryheap_add
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:491,1
    - Dst: binaryheap_free
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:511,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:512,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:513,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 47
    argCount: 4
    argNames:
    - objs
    - numObjs
    - ordering
    - nOrdering
    argTypes:
    - DumpableObject**
    - int
    - DumpableObject**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 385
    functionDepth: 1
    functionLinenumber: 385
    functionLinenumberEnd: 516
    functionName: TopoSort
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 1
    functionsReached:
    - getMaxDumpId
    - binaryheap_empty
    - binaryheap_add_unordered
    - binaryheap_add
    - pg_malloc
    - binaryheap_remove_first
    - pg_fatal
    - pg_malloc0
    - binaryheap_build
    - binaryheap_allocate
    - free
    - binaryheap_free
    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
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:565,1
    - Dst: getMaxDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:565,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:566,1
    - Dst: getMaxDumpId
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:566,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:567,1
    - Dst: findLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:576,1
    - Dst: repairDependencyLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:586,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:606,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:608,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:609,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:610,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - objs
    - nObjs
    - totObjs
    argTypes:
    - DumpableObject**
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 534
    functionDepth: 1
    functionLinenumber: 534
    functionLinenumberEnd: 611
    functionName: findDependencyLoops
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 1
    functionsReached:
    - getMaxDumpId
    - findLoop
    - pg_malloc
    - pg_fatal
    - pg_malloc0
    - repairDependencyLoop
    - free
    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:685,1
    - Dst: findLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:690,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: 706
      start: 630
    functionDepth: 1
    functionLinenumber: 630
    functionLinenumberEnd: 706
    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:721,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:726,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - typeobj
    - funcobj
    argTypes:
    - DumpableObject*
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 737
      start: 715
    functionDepth: 2
    functionLinenumber: 715
    functionLinenumberEnd: 737
    functionName: repairTypeFuncLoop
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 0
    functionsReached:
    - removeObjectDependency
    - addObjectDependency
    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:751,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - viewobj
    - ruleobj
    argTypes:
    - DumpableObject*
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 746
    functionDepth: 1
    functionLinenumber: 746
    functionLinenumberEnd: 753
    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:774,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:780,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:782,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - viewobj
    - ruleobj
    argTypes:
    - DumpableObject*
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 766
    functionDepth: 2
    functionLinenumber: 766
    functionLinenumberEnd: 783
    functionName: repairViewRuleMultiLoop
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 0
    functionsReached:
    - removeObjectDependency
    - addObjectDependency
    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:805,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - boundaryobj
    - nextobj
    argTypes:
    - DumpableObject*
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 800
    functionDepth: 1
    functionLinenumber: 800
    functionLinenumberEnd: 825
    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:839,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - boundaryobj
    - nextobj
    argTypes:
    - DumpableObject*
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 834
    functionDepth: 1
    functionLinenumber: 834
    functionLinenumberEnd: 847
    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:860,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tableobj
    - constraintobj
    argTypes:
    - DumpableObject*
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 855
    functionDepth: 1
    functionLinenumber: 855
    functionLinenumberEnd: 861
    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:877,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:881,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:883,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - tableobj
    - constraintobj
    argTypes:
    - DumpableObject*
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 872
    functionDepth: 2
    functionLinenumber: 872
    functionLinenumberEnd: 884
    functionName: repairTableConstraintMultiLoop
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 0
    functionsReached:
    - removeObjectDependency
    - addObjectDependency
    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:894,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tableobj
    - attrdefobj
    argTypes:
    - DumpableObject*
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 889
    functionDepth: 1
    functionLinenumber: 889
    functionLinenumberEnd: 895
    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:902,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:906,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - tableobj
    - attrdefobj
    argTypes:
    - DumpableObject*
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 897
    functionDepth: 2
    functionLinenumber: 897
    functionLinenumberEnd: 907
    functionName: repairTableAttrDefMultiLoop
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 0
    functionsReached:
    - removeObjectDependency
    - addObjectDependency
    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:917,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - domainobj
    - constraintobj
    argTypes:
    - DumpableObject*
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 912
    functionDepth: 1
    functionLinenumber: 912
    functionLinenumberEnd: 918
    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:925,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:929,1
    - Dst: addObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:931,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - domainobj
    - constraintobj
    argTypes:
    - DumpableObject*
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 920
    functionDepth: 2
    functionLinenumber: 920
    functionLinenumberEnd: 932
    functionName: repairDomainConstraintMultiLoop
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 0
    functionsReached:
    - removeObjectDependency
    - addObjectDependency
    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:938,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - partedindex
    - partindex
    argTypes:
    - DumpableObject*
    - DumpableObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 934
    functionDepth: 1
    functionLinenumber: 934
    functionLinenumberEnd: 939
    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:960,1
    - Dst: repairTypeFuncLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:967,1
    - Dst: repairViewRuleLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:981,1
    - Dst: repairViewRuleLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:993,1
    - Dst: repairViewRuleMultiLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1012,1
    - Dst: repairMatViewBoundaryMultiLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1035,1
    - Dst: repairMatViewBoundaryMultiLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1050,1
    - Dst: repairFunctionBoundaryMultiLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1072,1
    - Dst: repairTableConstraintLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1087,1
    - Dst: repairTableConstraintLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1096,1
    - Dst: repairTableConstraintMultiLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1113,1
    - Dst: repairTableAttrDefLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1127,1
    - Dst: repairTableAttrDefLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1135,1
    - Dst: repairIndexLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1146,1
    - Dst: repairIndexLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1151,1
    - Dst: repairTableAttrDefMultiLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1168,1
    - Dst: repairDomainConstraintLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1183,1
    - Dst: repairDomainConstraintLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1192,1
    - Dst: repairDomainConstraintMultiLoop
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1209,1
    - Dst: removeObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1230,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1247,1
    - Dst: ngettext
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1247,1
    - Dst: pg_log_warning_detail
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1251,1
    - Dst: pg_log_warning_hint
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1252,1
    - Dst: pg_log_warning_hint
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1253,1
    - Dst: removeObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1255,1
    - Dst: removeObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1257,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1265,1
    - Dst: describeDumpableObject
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1270,1
    - Dst: pg_log_warning_detail
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1271,1
    - Dst: removeObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1275,1
    - Dst: removeObjectDependency
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1277,1
    CyclomaticComplexity: 109
    EdgeCount: 109
    ICount: 163
    argCount: 2
    argNames:
    - loop
    - nLoop
    argTypes:
    - DumpableObject**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1278
      start: 948
    functionDepth: 3
    functionLinenumber: 948
    functionLinenumberEnd: 1278
    functionName: repairDependencyLoop
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_dump_sort.c
    functionUses: 1
    functionsReached:
    - repairTableConstraintLoop
    - repairDomainConstraintLoop
    - removeObjectDependency
    - repairFunctionBoundaryMultiLoop
    - pg_log_warning_detail
    - pg_log_warning
    - repairViewRuleLoop
    - repairTableAttrDefLoop
    - pg_log_warning_hint
    - describeDumpableObject
    - repairTableConstraintMultiLoop
    - repairTableAttrDefMultiLoop
    - repairDomainConstraintMultiLoop
    - repairMatViewBoundaryMultiLoop
    - repairTypeFuncLoop
    - repairViewRuleMultiLoop
    - ngettext
    - repairIndexLoop
    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:1291,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1296,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1301,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1306,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1311,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1316,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1321,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1326,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1331,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1336,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1341,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1346,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1351,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1356,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1361,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1368,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1373,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1378,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1383,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1388,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1393,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1398,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1403,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1408,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1413,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1418,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1425,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1432,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1437,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1442,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1447,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1452,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1457,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1462,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1467,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1472,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1477,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1482,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1487,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1492,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1497,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1502,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1507,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1512,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1517,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1522,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1527,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1532,1
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/pg_dump_sort.c:1538,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 148
    argCount: 3
    argNames:
    - obj
    - buf
    - bufsize
    argTypes:
    - DumpableObject*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1542
      start: 1285
    functionDepth: 0
    functionLinenumber: 1285
    functionLinenumberEnd: 1542
    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:1551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1552
      start: 1545
    functionDepth: 1
    functionLinenumber: 1545
    functionLinenumberEnd: 1552
    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
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:51,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:52,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:63,1
    - Dst: Assert
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:66,1
    - Dst: deflateInit
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:68,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - cs
    argTypes:
    - CompressorState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 77
    functionName: DeflateCompressorInit
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 0
    functionsReached:
    - Assert
    - deflateInit
    - pg_malloc
    - pg_fatal
    - pg_malloc0
    linkageType: ''
    returnType: void
    signature: void DeflateCompressorInit(CompressorState *cs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DeflateCompressorCommon
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:90,1
    - Dst: deflateEnd
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:92,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:93,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:95,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:96,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:97,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - AH
    - cs
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 99
    functionName: DeflateCompressorEnd
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 0
    functionsReached:
    - deflateEnd
    - DeflateCompressorCommon
    - pg_fatal
    - pg_free
    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:111,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:113,1
    - Dst: CompressorState*::writeF
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:132,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 15
    argCount: 3
    argNames:
    - AH
    - cs
    - flush
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 141
    functionName: DeflateCompressorCommon
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 1
    functionsReached:
    - CompressorState*::writeF
    - deflate
    - 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:148,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - AH
    - cs
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 143
    functionDepth: 2
    functionLinenumber: 143
    functionLinenumberEnd: 149
    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:159,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: 160
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 160
    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
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:172,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:178,1
    - Dst: pg_malloc
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:180,1
    - Dst: inflateInit
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:182,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:183,1
    - Dst: CompressorState*::readF
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:187,1
    - Dst: inflate
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:197,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:199,1
    - Dst: ahwrite
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:202,1
    - Dst: inflate
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:212,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:214,1
    - Dst: ahwrite
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:217,1
    - Dst: inflateEnd
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:220,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:221,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:223,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:224,1
    - Dst: free
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:225,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 2
    argNames:
    - AH
    - cs
    argTypes:
    - ArchiveHandle*
    - CompressorState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 162
    functionDepth: 5
    functionLinenumber: 162
    functionLinenumberEnd: 226
    functionName: ReadDataFromArchiveGzip
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 0
    functionsReached:
    - inflateInit
    - inflateEnd
    - pg_malloc
    - CompressorState*::readF
    - ahwrite
    - pg_fatal
    - inflate
    - free
    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:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - cs
    - compression_spec
    argTypes:
    - CompressorState*
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 229
    functionDepth: 2
    functionLinenumber: 229
    functionLinenumberEnd: 246
    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: 3
    BranchProfiles: []
    Callsites:
    - Dst: gzread
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:260,1
    - Dst: gzeof
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:261,1
    - Dst: gzerror
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:264,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:266,1
    - Dst: strerror
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:267,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - ptr
    - size
    - rsize
    - CFH
    argTypes:
    - void*
    - size_t
    - size_t*
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 274
    functionName: Gzip_read
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 0
    functionsReached:
    - strerror
    - pg_fatal
    - gzerror
    - gzeof
    - gzread
    linkageType: ''
    returnType: bool
    signature: bool Gzip_read(void *ptr, size_t size, size_t *rsize, CompressFileHandle
      *CFH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gzwrite
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ptr
    - size
    - CFH
    argTypes:
    - void*
    - size_t
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 282
    functionName: Gzip_write
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 0
    functionsReached:
    - gzwrite
    linkageType: ''
    returnType: bool
    signature: bool 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:291,1
    - Dst: gzeof
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:294,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:295,1
    - Dst: pg_fatal
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:297,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 301
    functionName: Gzip_getc
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 0
    functionsReached:
    - gzeof
    - pg_fatal
    - gzgetc
    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:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ptr
    - size
    - CFH
    argTypes:
    - char*
    - int
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 309
    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:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 319
    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:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 327
    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:336,1
    - Dst: strerror
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:338,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - CFH
    argTypes:
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 341
    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: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:354,1
    - Dst: strcpy
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:358,1
    - Dst: gzdopen
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:361,1
    - Dst: dup
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:361,1
    - Dst: gzopen
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:363,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - path
    - fd
    - mode
    - CFH
    argTypes:
    - char*
    - int
    - char*
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 343
    functionDepth: 0
    functionLinenumber: 343
    functionLinenumberEnd: 371
    functionName: Gzip_open
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 0
    functionsReached:
    - dup
    - snprintf
    - gzopen
    - gzdopen
    - strcpy
    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:380,1
    - Dst: CompressFileHandle*::open_func
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:381,1
    - Dst: pg_free
      Src: /src/postgres/src/bin/pg_dump/compress_gzip.c:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - path
    - mode
    - CFH
    argTypes:
    - char*
    - char*
    - CompressFileHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 373
    functionDepth: 1
    functionLinenumber: 373
    functionLinenumberEnd: 388
    functionName: Gzip_open_write
    functionSourceFile: /src/postgres/src/bin/pg_dump/compress_gzip.c
    functionUses: 0
    functionsReached:
    - pg_free
    - 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: 407
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 407
    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:413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cs
    - compression_spec
    argTypes:
    - CompressorState*
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 409
    functionDepth: 0
    functionLinenumber: 409
    functionLinenumberEnd: 414
    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:420,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - CFH
    - compression_spec
    argTypes:
    - CompressFileHandle*
    - pg_compress_specification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 416
    functionDepth: 0
    functionLinenumber: 416
    functionLinenumberEnd: 421
    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: 423
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 423
    functionName: ARCHIVE_OPTS
    functionSourceFile: /src/postgres/src/bin/pg_dump/pg_backup_archiver.h
    functionUses: 61
    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: 442
      start: 440
    functionDepth: 0
    functionLinenumber: 440
    functionLinenumberEnd: 442
    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: 445
      start: 443
    functionDepth: 0
    functionLinenumber: 443
    functionLinenumberEnd: 445
    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:
    - pg_TZDIR
    - strchr
    - open
    - scan_directory_ci
    - strlcpy
    - strlen
    - strcpy
    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:
    - AllocateDir
    - FreeDir
    - strlcpy
    - pg_strncasecmp
    - strlen
    - ReadDirExtended
    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: 9
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/timezone/pgtz.c:242,1
    - Dst: init_timezone_hashtable
      Src: /src/postgres/src/timezone/pgtz.c:246,1
    - Dst: pg_toupper
      Src: /src/postgres/src/timezone/pgtz.c:257,1
    - Dst: hash_search
      Src: /src/postgres/src/timezone/pgtz.c:260,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/pgtz.c:273,1
    - Dst: tzparse
      Src: /src/postgres/src/timezone/pgtz.c:275,1
    - Dst: elog
      Src: /src/postgres/src/timezone/pgtz.c:278,1
    - Dst: strcpy
      Src: /src/postgres/src/timezone/pgtz.c:281,1
    - Dst: tzload
      Src: /src/postgres/src/timezone/pgtz.c:283,1
    - Dst: tzparse
      Src: /src/postgres/src/timezone/pgtz.c:285,1
    - Dst: strcpy
      Src: /src/postgres/src/timezone/pgtz.c:291,1
    - Dst: hash_search
      Src: /src/postgres/src/timezone/pgtz.c:295,1
    - Dst: strcpy
      Src: /src/postgres/src/timezone/pgtz.c:301,1
    - Dst: memcpy
      Src: /src/postgres/src/timezone/pgtz.c:302,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 1
    argNames:
    - tzname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 233
    functionDepth: 2
    functionLinenumber: 233
    functionLinenumberEnd: 305
    functionName: pg_tzset
    functionSourceFile: /src/postgres/src/timezone/pgtz.c
    functionUses: 0
    functionsReached:
    - pg_toupper
    - init_timezone_hashtable
    - tzparse
    - hash_search
    - tzload
    - elog
    - memcpy
    - strcmp
    - 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:326,1
    - Dst: snprintf
      Src: /src/postgres/src/timezone/pgtz.c:331,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/pgtz.c:331,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/pgtz.c:332,1
    - Dst: snprintf
      Src: /src/postgres/src/timezone/pgtz.c:336,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/pgtz.c:336,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/pgtz.c:337,1
    - Dst: snprintf
      Src: /src/postgres/src/timezone/pgtz.c:341,1
    - Dst: snprintf
      Src: /src/postgres/src/timezone/pgtz.c:344,1
    - Dst: pg_tzset
      Src: /src/postgres/src/timezone/pgtz.c:347,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - gmtoffset
    argTypes:
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 319
    functionDepth: 3
    functionLinenumber: 319
    functionLinenumberEnd: 348
    functionName: pg_tzset_offset
    functionSourceFile: /src/postgres/src/timezone/pgtz.c
    functionUses: 0
    functionsReached:
    - snprintf
    - pg_tzset
    - strlen
    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:370,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 360
    functionDepth: 3
    functionLinenumber: 360
    functionLinenumberEnd: 372
    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
      Src: /src/postgres/src/timezone/pgtz.c:399,1
    - Dst: pstrdup
      Src: /src/postgres/src/timezone/pgtz.c:400,1
    - Dst: pg_TZDIR
      Src: /src/postgres/src/timezone/pgtz.c:400,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/pgtz.c:402,1
    - Dst: AllocateDir
      Src: /src/postgres/src/timezone/pgtz.c:405,1
    - Dst: ereport
      Src: /src/postgres/src/timezone/pgtz.c:407,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/timezone/pgtz.c:408,1
    - Dst: errmsg
      Src: /src/postgres/src/timezone/pgtz.c:409,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 396
    functionDepth: 1
    functionLinenumber: 396
    functionLinenumberEnd: 411
    functionName: pg_tzenumerate_start
    functionSourceFile: /src/postgres/src/timezone/pgtz.c
    functionUses: 0
    functionsReached:
    - errmsg
    - AllocateDir
    - pg_TZDIR
    - palloc0
    - pstrdup
    - ereport
    - strlen
    - errcode_for_file_access
    linkageType: ''
    returnType: pg_tzenum
    signature: 'pg_tzenum *

      pg_tzenumerate_start(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FreeDir
      Src: /src/postgres/src/timezone/pgtz.c:418,1
    - Dst: pfree
      Src: /src/postgres/src/timezone/pgtz.c:419,1
    - Dst: pfree
      Src: /src/postgres/src/timezone/pgtz.c:422,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - dir
    argTypes:
    - pg_tzenum*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 413
    functionDepth: 1
    functionLinenumber: 413
    functionLinenumberEnd: 423
    functionName: pg_tzenumerate_end
    functionSourceFile: /src/postgres/src/timezone/pgtz.c
    functionUses: 0
    functionsReached:
    - FreeDir
    - pfree
    linkageType: ''
    returnType: void
    signature: void pg_tzenumerate_end(pg_tzenum *dir)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ReadDir
      Src: /src/postgres/src/timezone/pgtz.c:433,1
    - Dst: FreeDir
      Src: /src/postgres/src/timezone/pgtz.c:438,1
    - Dst: pfree
      Src: /src/postgres/src/timezone/pgtz.c:439,1
    - Dst: snprintf
      Src: /src/postgres/src/timezone/pgtz.c:447,1
    - Dst: get_dirent_type
      Src: /src/postgres/src/timezone/pgtz.c:450,1
    - Dst: ereport
      Src: /src/postgres/src/timezone/pgtz.c:454,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/timezone/pgtz.c:455,1
    - Dst: pstrdup
      Src: /src/postgres/src/timezone/pgtz.c:457,1
    - Dst: AllocateDir
      Src: /src/postgres/src/timezone/pgtz.c:458,1
    - Dst: ereport
      Src: /src/postgres/src/timezone/pgtz.c:460,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/timezone/pgtz.c:461,1
    - Dst: errmsg
      Src: /src/postgres/src/timezone/pgtz.c:462,1
    - Dst: tzload
      Src: /src/postgres/src/timezone/pgtz.c:475,1
    - Dst: pg_tz_acceptable
      Src: /src/postgres/src/timezone/pgtz.c:481,1
    - Dst: strlcpy
      Src: /src/postgres/src/timezone/pgtz.c:488,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 32
    argCount: 1
    argNames:
    - dir
    argTypes:
    - pg_tzenum*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 425
    functionDepth: 1
    functionLinenumber: 425
    functionLinenumberEnd: 497
    functionName: pg_tzenumerate_next
    functionSourceFile: /src/postgres/src/timezone/pgtz.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - ReadDir
    - AllocateDir
    - FreeDir
    - snprintf
    - errmsg_internal
    - ereport
    - get_dirent_type
    - pstrdup
    - tzload
    - strlcpy
    - pg_tz_acceptable
    - errcode_for_file_access
    linkageType: ''
    returnType: pg_tz
    signature: 'pg_tz *

      pg_tzenumerate_next(pg_tzenum *dir)'
  - 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: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: SMALLEST
    functionSourceFile: /src/postgres/src/timezone/pgtz.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SMALLEST(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: 25
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 25
    functionName: BIGGEST
    functionSourceFile: /src/postgres/src/timezone/pgtz.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BIGGEST(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - s
    - utoff
    - isdst
    - desigidx
    argTypes:
    - struct ttinfo*
    - int32
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 115
    functionName: init_ttinfo
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void init_ttinfo(struct ttinfo *s, int32 utoff, bool isdst, int desigidx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TWOS_COMPLEMENT
      Src: /src/postgres/src/timezone/localtime.c:137,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - codep
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 141
    functionName: detzcode
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached:
    - TWOS_COMPLEMENT
    linkageType: ''
    returnType: int32
    signature: int32 detzcode(const char *const codep)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TWOS_COMPLEMENT
      Src: /src/postgres/src/timezone/localtime.c:151,1
    - Dst: TWOS_COMPLEMENT
      Src: /src/postgres/src/timezone/localtime.c:163,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - codep
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 167
    functionName: detzcode64
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached:
    - TWOS_COMPLEMENT
    linkageType: ''
    returnType: int64
    signature: int64 detzcode64(const char *const codep)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TYPE_BIT
      Src: /src/postgres/src/timezone/localtime.c:172,1
    - Dst: TYPE_SIGNED
      Src: /src/postgres/src/timezone/localtime.c:172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - t1
    - t0
    argTypes:
    - pg_time_t
    - pg_time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 175
    functionName: differ_by_repeat
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached:
    - TYPE_SIGNED
    - TYPE_BIT
    linkageType: ''
    returnType: bool
    signature: bool differ_by_repeat(const pg_time_t t1, const pg_time_t t0)
  - BBCount: 40
    BranchProfiles: []
    Callsites:
    - Dst: pg_open_tzfile
      Src: /src/postgres/src/timezone/localtime.c:233,1
    - Dst: read
      Src: /src/postgres/src/timezone/localtime.c:237,1
    - Dst: close
      Src: /src/postgres/src/timezone/localtime.c:242,1
    - Dst: close
      Src: /src/postgres/src/timezone/localtime.c:245,1
    - Dst: detzcode
      Src: /src/postgres/src/timezone/localtime.c:249,1
    - Dst: detzcode
      Src: /src/postgres/src/timezone/localtime.c:250,1
    - Dst: detzcode
      Src: /src/postgres/src/timezone/localtime.c:253,1
    - Dst: detzcode
      Src: /src/postgres/src/timezone/localtime.c:254,1
    - Dst: detzcode
      Src: /src/postgres/src/timezone/localtime.c:255,1
    - Dst: detzcode
      Src: /src/postgres/src/timezone/localtime.c:256,1
    - Dst: detzcode
      Src: /src/postgres/src/timezone/localtime.c:295,1
    - Dst: detzcode64
      Src: /src/postgres/src/timezone/localtime.c:295,1
    - Dst: TYPE_SIGNED
      Src: /src/postgres/src/timezone/localtime.c:301,1
    - Dst: detzcode
      Src: /src/postgres/src/timezone/localtime.c:334,1
    - Dst: detzcode
      Src: /src/postgres/src/timezone/localtime.c:353,1
    - Dst: detzcode64
      Src: /src/postgres/src/timezone/localtime.c:353,1
    - Dst: detzcode
      Src: /src/postgres/src/timezone/localtime.c:354,1
    - Dst: memmove
      Src: /src/postgres/src/timezone/localtime.c:413,1
    - Dst: tzparse
      Src: /src/postgres/src/timezone/localtime.c:422,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/localtime.c:441,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/localtime.c:449,1
    - Dst: strcpy
      Src: /src/postgres/src/timezone/localtime.c:453,1
    - Dst: leapcorr
      Src: /src/postgres/src/timezone/localtime.c:477,1
    - Dst: leapcorr
      Src: /src/postgres/src/timezone/localtime.c:483,1
    - Dst: typesequiv
      Src: /src/postgres/src/timezone/localtime.c:499,1
    - Dst: differ_by_repeat
      Src: /src/postgres/src/timezone/localtime.c:500,1
    - Dst: typesequiv
      Src: /src/postgres/src/timezone/localtime.c:506,1
    - Dst: differ_by_repeat
      Src: /src/postgres/src/timezone/localtime.c:508,1
    CyclomaticComplexity: 93
    EdgeCount: 93
    ICount: 174
    argCount: 5
    argNames:
    - name
    - canonname
    - sp
    - doextend
    - lsp
    argTypes:
    - char*
    - char*
    - struct state*
    - bool
    - union local_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 210
    functionDepth: 2
    functionLinenumber: 210
    functionLinenumberEnd: 578
    functionName: tzloadbody
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached:
    - TYPE_SIGNED
    - detzcode
    - close
    - tzparse
    - memmove
    - leapcorr
    - differ_by_repeat
    - pg_open_tzfile
    - read
    - strcmp
    - typesequiv
    - detzcode64
    - strlen
    - strcpy
    linkageType: ''
    returnType: int
    signature: "int tzloadbody(char const *name, char *canonname, struct state *sp,
      bool doextend,\n\t\t   union local_storage *lsp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/timezone/localtime.c:588,1
    - Dst: tzloadbody
      Src: /src/postgres/src/timezone/localtime.c:594,1
    - Dst: free
      Src: /src/postgres/src/timezone/localtime.c:596,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - name
    - canonname
    - sp
    - doextend
    argTypes:
    - char*
    - char*
    - struct state*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 585
    functionDepth: 3
    functionLinenumber: 585
    functionLinenumberEnd: 599
    functionName: tzload
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 3
    functionsReached:
    - malloc
    - tzloadbody
    - free
    linkageType: ''
    returnType: int
    signature: int tzload(const char *name, char *canonname, struct state *sp, bool
      doextend)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/timezone/localtime.c:619,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 6
    argCount: 3
    argNames:
    - sp
    - a
    - b
    argTypes:
    - struct state*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 601
    functionDepth: 0
    functionLinenumber: 601
    functionLinenumberEnd: 624
    functionName: typesequiv
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 1
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool typesequiv(const struct state *sp, int a, int b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: is_digit
      Src: /src/postgres/src/timezone/localtime.c:646,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 4
    argCount: 1
    argNames:
    - strp
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 641
    functionDepth: 1
    functionLinenumber: 641
    functionLinenumberEnd: 650
    functionName: getzname
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached:
    - is_digit
    linkageType: ''
    returnType: char
    signature: 'char *

      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: 670
      start: 662
    functionDepth: 0
    functionLinenumber: 662
    functionLinenumberEnd: 670
    functionName: getqzname
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      getqzname(const char *strp, const int delim)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_digit
      Src: /src/postgres/src/timezone/localtime.c:685,1
    - Dst: is_digit
      Src: /src/postgres/src/timezone/localtime.c:694,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - strp
    - nump
    - min
    - max
    argTypes:
    - char*
    - int*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 679
    functionDepth: 1
    functionLinenumber: 679
    functionLinenumberEnd: 699
    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:719,1
    - Dst: getnum
      Src: /src/postgres/src/timezone/localtime.c:726,1
    - Dst: getnum
      Src: /src/postgres/src/timezone/localtime.c:734,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - strp
    - secsp
    argTypes:
    - char*
    - int32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 709
    functionDepth: 2
    functionLinenumber: 709
    functionLinenumberEnd: 741
    functionName: getsecs
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached:
    - getnum
    linkageType: ''
    returnType: char
    signature: 'char *

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

      getoffset(const char *strp, int32 *const offsetp)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: getnum
      Src: /src/postgres/src/timezone/localtime.c:787,1
    - Dst: getnum
      Src: /src/postgres/src/timezone/localtime.c:796,1
    - Dst: getnum
      Src: /src/postgres/src/timezone/localtime.c:801,1
    - Dst: getnum
      Src: /src/postgres/src/timezone/localtime.c:806,1
    - Dst: is_digit
      Src: /src/postgres/src/timezone/localtime.c:808,1
    - Dst: getnum
      Src: /src/postgres/src/timezone/localtime.c:814,1
    - Dst: getoffset
      Src: /src/postgres/src/timezone/localtime.c:826,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 2
    argNames:
    - strp
    - rulep
    argTypes:
    - char*
    - struct rule*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 777
    functionDepth: 4
    functionLinenumber: 777
    functionLinenumberEnd: 831
    functionName: getrule
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached:
    - is_digit
    - getnum
    - getoffset
    linkageType: ''
    returnType: char
    signature: 'char *

      getrule(const char *strp, struct rule *const rulep)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: INITIALIZE
      Src: /src/postgres/src/timezone/localtime.c:852,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/localtime.c:853,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 3
    argNames:
    - year
    - rulep
    - offset
    argTypes:
    - int
    - struct rule*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 838
    functionDepth: 1
    functionLinenumber: 838
    functionLinenumberEnd: 928
    functionName: transtime
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached:
    - isleap
    - INITIALIZE
    linkageType: ''
    returnType: int32
    signature: "int32 transtime(const int year, const struct rule *const rulep,\n\t\t
      \ const int32 offset)"
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/timezone/localtime.c:952,1
    - Dst: getqzname
      Src: /src/postgres/src/timezone/localtime.c:962,1
    - Dst: getzname
      Src: /src/postgres/src/timezone/localtime.c:970,1
    - Dst: getoffset
      Src: /src/postgres/src/timezone/localtime.c:975,1
    - Dst: getqzname
      Src: /src/postgres/src/timezone/localtime.c:1001,1
    - Dst: getzname
      Src: /src/postgres/src/timezone/localtime.c:1010,1
    - Dst: getoffset
      Src: /src/postgres/src/timezone/localtime.c:1020,1
    - Dst: getrule
      Src: /src/postgres/src/timezone/localtime.c:1040,1
    - Dst: getrule
      Src: /src/postgres/src/timezone/localtime.c:1044,1
    - Dst: init_ttinfo
      Src: /src/postgres/src/timezone/localtime.c:1053,1
    - Dst: init_ttinfo
      Src: /src/postgres/src/timezone/localtime.c:1054,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/localtime.c:1063,1
    - Dst: increment_overflow_time
      Src: /src/postgres/src/timezone/localtime.c:1066,1
    - Dst: transtime
      Src: /src/postgres/src/timezone/localtime.c:1077,1
    - Dst: transtime
      Src: /src/postgres/src/timezone/localtime.c:1078,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/localtime.c:1080,1
    - Dst: increment_overflow_time
      Src: /src/postgres/src/timezone/localtime.c:1100,1
    - Dst: increment_overflow_time
      Src: /src/postgres/src/timezone/localtime.c:1105,1
    - Dst: increment_overflow_time
      Src: /src/postgres/src/timezone/localtime.c:1113,1
    - Dst: init_ttinfo
      Src: /src/postgres/src/timezone/localtime.c:1217,1
    - Dst: init_ttinfo
      Src: /src/postgres/src/timezone/localtime.c:1218,1
    - Dst: init_ttinfo
      Src: /src/postgres/src/timezone/localtime.c:1228,1
    - Dst: memcpy
      Src: /src/postgres/src/timezone/localtime.c:1233,1
    - Dst: memcpy
      Src: /src/postgres/src/timezone/localtime.c:1238,1
    CyclomaticComplexity: 52
    EdgeCount: 52
    ICount: 169
    argCount: 3
    argNames:
    - name
    - sp
    - lastditch
    argTypes:
    - char*
    - struct state*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1242
      start: 935
    functionDepth: 5
    functionLinenumber: 935
    functionLinenumberEnd: 1242
    functionName: tzparse
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 3
    functionsReached:
    - getqzname
    - init_ttinfo
    - transtime
    - getoffset
    - increment_overflow_time
    - getzname
    - isleap
    - memcpy
    - strlen
    - getrule
    linkageType: ''
    returnType: bool
    signature: bool tzparse(const char *name, struct state *sp, bool lastditch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tzload
      Src: /src/postgres/src/timezone/localtime.c:1247,1
    - Dst: tzparse
      Src: /src/postgres/src/timezone/localtime.c:1248,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - sp
    argTypes:
    - struct state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1249
      start: 1244
    functionDepth: 6
    functionLinenumber: 1244
    functionLinenumberEnd: 1249
    functionName: gmtload
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached:
    - tzload
    - tzparse
    linkageType: ''
    returnType: void
    signature: void gmtload(struct state *const sp)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: gmtsub
      Src: /src/postgres/src/timezone/localtime.c:1268,1
    - Dst: localsub
      Src: /src/postgres/src/timezone/localtime.c:1290,1
    - Dst: timesub
      Src: /src/postgres/src/timezone/localtime.c:1333,1
    - Dst: unconstify
      Src: /src/postgres/src/timezone/localtime.c:1337,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 44
    argCount: 3
    argNames:
    - sp
    - timep
    - tmp
    argTypes:
    - struct state*
    - pg_time_t*
    - struct pg_tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1258
    functionDepth: 1
    functionLinenumber: 1258
    functionLinenumberEnd: 1340
    functionName: localsub
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 1
    functionsReached:
    - localsub
    - timesub
    - gmtsub
    - unconstify
    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:1346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - timep
    - tz
    argTypes:
    - pg_time_t*
    - pg_tz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1347
      start: 1343
    functionDepth: 2
    functionLinenumber: 1343
    functionLinenumberEnd: 1347
    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: 4
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/timezone/localtime.c:1368,1
    - Dst: gmtload
      Src: /src/postgres/src/timezone/localtime.c:1371,1
    - Dst: timesub
      Src: /src/postgres/src/timezone/localtime.c:1374,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - timep
    - offset
    - tmp
    argTypes:
    - pg_time_t*
    - int32
    - struct pg_tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1386
      start: 1356
    functionDepth: 7
    functionLinenumber: 1356
    functionLinenumberEnd: 1386
    functionName: gmtsub
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 1
    functionsReached:
    - gmtload
    - timesub
    - malloc
    linkageType: ''
    returnType: struct pg_tm
    signature: "struct pg_tm *\ngmtsub(pg_time_t const *timep, int32 offset,\n\t   struct
      pg_tm *tmp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gmtsub
      Src: /src/postgres/src/timezone/localtime.c:1391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - timep
    argTypes:
    - pg_time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1392
      start: 1388
    functionDepth: 8
    functionLinenumber: 1388
    functionLinenumberEnd: 1392
    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:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1403
      start: 1399
    functionDepth: 0
    functionLinenumber: 1399
    functionLinenumberEnd: 1403
    functionName: leaps_thru_end_of_nonneg
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int leaps_thru_end_of_nonneg(int y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: leaps_thru_end_of_nonneg
      Src: /src/postgres/src/timezone/localtime.c:1409,1
    - Dst: leaps_thru_end_of_nonneg
      Src: /src/postgres/src/timezone/localtime.c:1410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - y
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1411
      start: 1405
    functionDepth: 1
    functionLinenumber: 1405
    functionLinenumberEnd: 1411
    functionName: leaps_thru_end_of
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 0
    functionsReached:
    - leaps_thru_end_of_nonneg
    linkageType: ''
    returnType: int
    signature: int leaps_thru_end_of(const int y)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: isleap
      Src: /src/postgres/src/timezone/localtime.c:1444,1
    - Dst: TYPE_SIGNED
      Src: /src/postgres/src/timezone/localtime.c:1452,1
    - Dst: increment_overflow
      Src: /src/postgres/src/timezone/localtime.c:1459,1
    - Dst: leaps_thru_end_of
      Src: /src/postgres/src/timezone/localtime.c:1461,1
    - Dst: leaps_thru_end_of
      Src: /src/postgres/src/timezone/localtime.c:1462,1
    - Dst: increment_overflow
      Src: /src/postgres/src/timezone/localtime.c:1485,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/localtime.c:1487,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/localtime.c:1489,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/localtime.c:1491,1
    - Dst: increment_overflow
      Src: /src/postgres/src/timezone/localtime.c:1492,1
    - Dst: increment_overflow
      Src: /src/postgres/src/timezone/localtime.c:1496,1
    - Dst: leaps_thru_end_of
      Src: /src/postgres/src/timezone/localtime.c:1506,1
    - Dst: leaps_thru_end_of
      Src: /src/postgres/src/timezone/localtime.c:1507,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/localtime.c:1521,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 78
    argCount: 4
    argNames:
    - timep
    - offset
    - sp
    - tmp
    argTypes:
    - pg_time_t*
    - int32
    - struct state*
    - struct pg_tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1532
      start: 1413
    functionDepth: 2
    functionLinenumber: 1413
    functionLinenumberEnd: 1532
    functionName: timesub
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 2
    functionsReached:
    - TYPE_SIGNED
    - increment_overflow
    - isleap
    - leaps_thru_end_of
    linkageType: ''
    returnType: struct pg_tm
    signature: "struct pg_tm *\ntimesub(const pg_time_t *timep, int32 offset,\n\t\tconst
      struct state *sp, struct pg_tm *tmp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ip
    - j
    argTypes:
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1554
      start: 1538
    functionDepth: 0
    functionLinenumber: 1538
    functionLinenumberEnd: 1554
    functionName: increment_overflow
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool increment_overflow(int *ip, int j)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TYPE_SIGNED
      Src: /src/postgres/src/timezone/localtime.c:1566,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - tp
    - j
    argTypes:
    - pg_time_t*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1571
      start: 1556
    functionDepth: 1
    functionLinenumber: 1556
    functionLinenumberEnd: 1571
    functionName: increment_overflow_time
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 1
    functionsReached:
    - TYPE_SIGNED
    linkageType: ''
    returnType: bool
    signature: bool increment_overflow_time(pg_time_t *tp, int32 j)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - sp
    - t
    argTypes:
    - struct state*
    - pg_time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1587
      start: 1573
    functionDepth: 0
    functionLinenumber: 1573
    functionLinenumberEnd: 1587
    functionName: leapcorr
    functionSourceFile: /src/postgres/src/timezone/localtime.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int64
    signature: int64 leapcorr(struct state const *sp, pg_time_t t)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: pg_next_dst_boundary
      Src: /src/postgres/src/timezone/localtime.c:1664,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: 1726
      start: 1609
    functionDepth: 1
    functionLinenumber: 1609
    functionLinenumberEnd: 1726
    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:1767,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: 1844
      start: 1742
    functionDepth: 0
    functionLinenumber: 1742
    functionLinenumberEnd: 1844
    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:1880,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: 1920
      start: 1860
    functionDepth: 0
    functionLinenumber: 1860
    functionLinenumberEnd: 1920
    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: 1958
      start: 1935
    functionDepth: 0
    functionLinenumber: 1935
    functionLinenumberEnd: 1958
    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: 1983
      start: 1964
    functionDepth: 0
    functionLinenumber: 1964
    functionLinenumberEnd: 1983
    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: 1994
      start: 1988
    functionDepth: 0
    functionLinenumber: 1988
    functionLinenumberEnd: 1994
    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:2015,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - tz
    argTypes:
    - pg_tz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2020
      start: 2003
    functionDepth: 3
    functionLinenumber: 2003
    functionLinenumberEnd: 2020
    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: 3
    BranchProfiles: []
    Callsites:
    - Dst: _fmt
      Src: /src/postgres/src/timezone/strftime.c:134,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - s
    - maxsize
    - format
    - t
    argTypes:
    - char*
    - size_t
    - char*
    - struct pg_tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 148
    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: 63
    BranchProfiles: []
    Callsites:
    - Dst: _add
      Src: /src/postgres/src/timezone/strftime.c:165,1
    - Dst: _add
      Src: /src/postgres/src/timezone/strftime.c:171,1
    - Dst: _add
      Src: /src/postgres/src/timezone/strftime.c:177,1
    - Dst: _add
      Src: /src/postgres/src/timezone/strftime.c:184,1
    - Dst: _yconv
      Src: /src/postgres/src/timezone/strftime.c:196,1
    - Dst: _fmt
      Src: /src/postgres/src/timezone/strftime.c:203,1
    - Dst: _fmt
      Src: /src/postgres/src/timezone/strftime.c:211,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:214,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:227,1
    - Dst: _fmt
      Src: /src/postgres/src/timezone/strftime.c:230,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:233,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:236,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:241,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:252,1
    - Dst: _add
      Src: /src/postgres/src/timezone/strftime.c:260,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:271,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:276,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:279,1
    - Dst: _add
      Src: /src/postgres/src/timezone/strftime.c:282,1
    - Dst: _add
      Src: /src/postgres/src/timezone/strftime.c:285,1
    - Dst: _fmt
      Src: /src/postgres/src/timezone/strftime.c:291,1
    - Dst: _fmt
      Src: /src/postgres/src/timezone/strftime.c:294,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:297,1
    - Dst: _fmt
      Src: /src/postgres/src/timezone/strftime.c:300,1
    - Dst: _add
      Src: /src/postgres/src/timezone/strftime.c:303,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:306,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:317,1
    - Dst: isleap_sum
      Src: /src/postgres/src/timezone/strftime.c:359,1
    - Dst: isleap_sum
      Src: /src/postgres/src/timezone/strftime.c:391,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:396,1
    - Dst: _yconv
      Src: /src/postgres/src/timezone/strftime.c:401,1
    - Dst: _yconv
      Src: /src/postgres/src/timezone/strftime.c:406,1
    - Dst: _fmt
      Src: /src/postgres/src/timezone/strftime.c:417,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:420,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:427,1
    - Dst: _fmt
      Src: /src/postgres/src/timezone/strftime.c:430,1
    - Dst: _fmt
      Src: /src/postgres/src/timezone/strftime.c:436,1
    - Dst: _yconv
      Src: /src/postgres/src/timezone/strftime.c:445,1
    - Dst: _yconv
      Src: /src/postgres/src/timezone/strftime.c:450,1
    - Dst: _add
      Src: /src/postgres/src/timezone/strftime.c:456,1
    - Dst: _add
      Src: /src/postgres/src/timezone/strftime.c:486,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:490,1
    - Dst: _fmt
      Src: /src/postgres/src/timezone/strftime.c:494,1
    CyclomaticComplexity: 68
    EdgeCount: 68
    ICount: 199
    argCount: 5
    argNames:
    - format
    - t
    - pt
    - ptlim
    - warnp
    argTypes:
    - char*
    - struct pg_tm*
    - char*
    - char*
    - enum warn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 513
    functionName: _fmt
    functionSourceFile: /src/postgres/src/timezone/strftime.c
    functionUses: 2
    functionsReached:
    - isleap_sum
    - _conv
    - _yconv
    - _add
    - _fmt
    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:518,1
    - Dst: sprintf
      Src: /src/postgres/src/timezone/strftime.c:520,1
    - Dst: _add
      Src: /src/postgres/src/timezone/strftime.c:521,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - n
    - format
    - pt
    - ptlim
    argTypes:
    - int
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 515
    functionDepth: 1
    functionLinenumber: 515
    functionLinenumberEnd: 522
    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: 530
      start: 524
    functionDepth: 0
    functionLinenumber: 524
    functionLinenumberEnd: 530
    functionName: _add
    functionSourceFile: /src/postgres/src/timezone/strftime.c
    functionUses: 6
    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:564,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:566,1
    - Dst: _conv
      Src: /src/postgres/src/timezone/strftime.c:569,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: 571
      start: 540
    functionDepth: 2
    functionLinenumber: 540
    functionLinenumberEnd: 571
    functionName: _yconv
    functionSourceFile: /src/postgres/src/timezone/strftime.c
    functionUses: 1
    functionsReached:
    - _add
    - _conv
    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:
    - (
    - mode
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: S_ISDIR
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_ISDIR(mode)
  - 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: 118
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 118
    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:
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:413,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:413,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - msg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 410
    functionDepth: 0
    functionLinenumber: 410
    functionLinenumberEnd: 415
    functionName: memory_exhausted
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - exit
    - _
    - fprintf
    linkageType: ''
    returnType: void
    signature: void memory_exhausted(const char *msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memory_exhausted
      Src: /src/postgres/src/timezone/zic.c:421,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:421,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - nitems
    - itemsize
    argTypes:
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 423
    functionName: size_product
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - memory_exhausted
    - _
    linkageType: ''
    returnType: size_t
    signature: size_t size_product(size_t nitems, size_t itemsize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memory_exhausted
      Src: /src/postgres/src/timezone/zic.c:429,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:429,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 425
    functionDepth: 1
    functionLinenumber: 425
    functionLinenumberEnd: 431
    functionName: memcheck
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - memory_exhausted
    - strerror
    linkageType: ''
    returnType: void
    signature: 'void *

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

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

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

      ecpyalloc(char const *str)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memory_exhausted
      Src: /src/postgres/src/timezone/zic.c:462,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:462,1
    - Dst: erealloc
      Src: /src/postgres/src/timezone/zic.c:464,1
    - Dst: size_product
      Src: /src/postgres/src/timezone/zic.c:464,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - ptr
    - itemsize
    - nitems
    - nitems_alloc
    argTypes:
    - void*
    - size_t
    - ptrdiff_t
    - ptrdiff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 451
    functionDepth: 3
    functionLinenumber: 451
    functionLinenumberEnd: 466
    functionName: growalloc
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - memory_exhausted
    - erealloc
    - size_product
    - _
    linkageType: ''
    returnType: void
    signature: 'void *

      growalloc(void *ptr, size_t itemsize, ptrdiff_t nitems, ptrdiff_t *nitems_alloc)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - name
    - num
    - rname
    - rnum
    argTypes:
    - char*
    - lineno_t
    - char*
    - lineno_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 472
    functionDepth: 0
    functionLinenumber: 472
    functionLinenumberEnd: 479
    functionName: eats
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void eats(char const *name, lineno_t num, char const *rname, lineno_t
      rnum)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: eats
      Src: /src/postgres/src/timezone/zic.c:484,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - name
    - num
    argTypes:
    - char*
    - lineno_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 481
    functionDepth: 1
    functionLinenumber: 481
    functionLinenumberEnd: 485
    functionName: eat
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - eats
    linkageType: ''
    returnType: void
    signature: void eat(char const *name, lineno_t num)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:495,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:495,1
    - Dst: vfprintf
      Src: /src/postgres/src/timezone/zic.c:496,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:498,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:498,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:500,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - string
    - args
    argTypes:
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 487
    functionDepth: 0
    functionLinenumber: 487
    functionLinenumberEnd: 501
    functionName: verror
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - vfprintf
    - _
    - fprintf
    linkageType: ''
    returnType: void
    signature: void verror(const char *string, va_list args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/timezone/zic.c:508,1
    - Dst: verror
      Src: /src/postgres/src/timezone/zic.c:509,1
    - Dst: va_end
      Src: /src/postgres/src/timezone/zic.c:510,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - string
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 503
    functionDepth: 1
    functionLinenumber: 503
    functionLinenumberEnd: 512
    functionName: error
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 301
    functionsReached:
    - va_end
    - va_start
    - verror
    linkageType: ''
    returnType: void
    signature: void error(const char *string,...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:519,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:519,1
    - Dst: va_start
      Src: /src/postgres/src/timezone/zic.c:520,1
    - Dst: verror
      Src: /src/postgres/src/timezone/zic.c:521,1
    - Dst: va_end
      Src: /src/postgres/src/timezone/zic.c:522,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - string
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 514
    functionDepth: 1
    functionLinenumber: 514
    functionLinenumberEnd: 524
    functionName: warning
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 52
    functionsReached:
    - va_end
    - fprintf
    - _
    - va_start
    - verror
    linkageType: ''
    returnType: void
    signature: void warning(const char *string,...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ferror
      Src: /src/postgres/src/timezone/zic.c:529,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:529,1
    - Dst: fclose
      Src: /src/postgres/src/timezone/zic.c:530,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:530,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:534,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:538,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - stream
    - dir
    - name
    argTypes:
    - FILE*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 526
    functionDepth: 0
    functionLinenumber: 526
    functionLinenumberEnd: 540
    functionName: close_file
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - fclose
    - ferror
    - fprintf
    - strerror
    - exit
    - _
    linkageType: ''
    returnType: void
    signature: void close_file(FILE *stream, char const *dir, char const *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:545,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:546,1
    - Dst: close_file
      Src: /src/postgres/src/timezone/zic.c:554,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:555,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - stream
    - status
    argTypes:
    - FILE*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 542
    functionDepth: 1
    functionLinenumber: 542
    functionLinenumberEnd: 556
    functionName: usage
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 19
    functionsReached:
    - exit
    - close_file
    - _
    - fprintf
    linkageType: ''
    returnType: void
    signature: void usage(FILE *stream, int status)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: chdir
      Src: /src/postgres/src/timezone/zic.c:564,1
    - Dst: mkdirs
      Src: /src/postgres/src/timezone/zic.c:570,1
    - Dst: chdir
      Src: /src/postgres/src/timezone/zic.c:571,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:575,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:575,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:576,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:577,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - dir
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 561
    functionDepth: 1
    functionLinenumber: 561
    functionLinenumberEnd: 580
    functionName: change_directory
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - chdir
    - fprintf
    - mkdirs
    - strerror
    - exit
    - _
    linkageType: ''
    returnType: void
    signature: void change_directory(char const *dir)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strtoimax
      Src: /src/postgres/src/timezone/zic.c:612,1
    - Dst: strtoimax
      Src: /src/postgres/src/timezone/zic.c:620,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 20
    argCount: 1
    argNames:
    - timerange
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 601
    functionDepth: 0
    functionLinenumber: 601
    functionLinenumberEnd: 630
    functionName: timerange_option
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - strtoimax
    linkageType: ''
    returnType: bool
    signature: bool timerange_option(char *timerange)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 643
    functionDepth: 0
    functionLinenumber: 643
    functionLinenumberEnd: 647
    functionName: want_bloat
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool want_bloat(void)
  - BBCount: 40
    BranchProfiles: []
    Callsites:
    - Dst: umask
      Src: /src/postgres/src/timezone/zic.c:663,1
    - Dst: umask
      Src: /src/postgres/src/timezone/zic.c:663,1
    - Dst: TYPE_BIT
      Src: /src/postgres/src/timezone/zic.c:666,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:668,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:669,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:673,1
    - Dst: printf
      Src: /src/postgres/src/timezone/zic.c:675,1
    - Dst: close_file
      Src: /src/postgres/src/timezone/zic.c:676,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:679,1
    - Dst: usage
      Src: /src/postgres/src/timezone/zic.c:681,1
    - Dst: getopt
      Src: /src/postgres/src/timezone/zic.c:683,1
    - Dst: usage
      Src: /src/postgres/src/timezone/zic.c:687,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:689,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:692,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:692,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:695,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:698,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:698,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:702,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:702,1
    - Dst: strdup
      Src: /src/postgres/src/timezone/zic.c:706,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:709,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:710,1
    - Dst: strdup
      Src: /src/postgres/src/timezone/zic.c:717,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:720,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:721,1
    - Dst: strdup
      Src: /src/postgres/src/timezone/zic.c:728,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:731,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:732,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:740,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:741,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:749,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:749,1
    - Dst: strdup
      Src: /src/postgres/src/timezone/zic.c:753,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:756,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:757,1
    - Dst: time
      Src: /src/postgres/src/timezone/zic.c:767,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:772,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:773,1
    - Dst: timerange_option
      Src: /src/postgres/src/timezone/zic.c:777,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:779,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:780,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:787,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:787,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:790,1
    - Dst: usage
      Src: /src/postgres/src/timezone/zic.c:791,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:796,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:798,1
    - Dst: abort
      Src: /src/postgres/src/timezone/zic.c:801,1
    - Dst: infile
      Src: /src/postgres/src/timezone/zic.c:810,1
    - Dst: adjleap
      Src: /src/postgres/src/timezone/zic.c:811,1
    - Dst: infile
      Src: /src/postgres/src/timezone/zic.c:815,1
    - Dst: associate
      Src: /src/postgres/src/timezone/zic.c:818,1
    - Dst: change_directory
      Src: /src/postgres/src/timezone/zic.c:819,1
    - Dst: outzone
      Src: /src/postgres/src/timezone/zic.c:827,1
    - Dst: eat
      Src: /src/postgres/src/timezone/zic.c:835,1
    - Dst: dolink
      Src: /src/postgres/src/timezone/zic.c:836,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:839,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:841,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:841,1
    - Dst: eat
      Src: /src/postgres/src/timezone/zic.c:845,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:845,1
    - Dst: dolink
      Src: /src/postgres/src/timezone/zic.c:846,1
    - Dst: eat
      Src: /src/postgres/src/timezone/zic.c:850,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:850,1
    - Dst: dolink
      Src: /src/postgres/src/timezone/zic.c:851,1
    - Dst: ferror
      Src: /src/postgres/src/timezone/zic.c:853,1
    - Dst: fclose
      Src: /src/postgres/src/timezone/zic.c:853,1
    CyclomaticComplexity: 53
    EdgeCount: 53
    ICount: 140
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 856
      start: 653
    functionDepth: 2
    functionLinenumber: 653
    functionLinenumberEnd: 856
    functionName: main
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - warning
    - time
    - fprintf
    - associate
    - abort
    - getopt
    - error
    - strdup
    - _
    - strcmp
    - close_file
    - fclose
    - ferror
    - infile
    - usage
    - eat
    - timerange_option
    - printf
    - umask
    - adjleap
    - change_directory
    - TYPE_BIT
    - dolink
    - outzone
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:870,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:870,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:872,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:872,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:885,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:885,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:892,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:892,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:895,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:895,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 18
    argCount: 3
    argNames:
    - name
    - component
    - component_end
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 858
    functionDepth: 2
    functionLinenumber: 858
    functionLinenumberEnd: 900
    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:926,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:928,1
    - Dst: strchr
      Src: /src/postgres/src/timezone/zic.c:928,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:929,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:930,1
    - Dst: componentcheck
      Src: /src/postgres/src/timezone/zic.c:935,1
    - Dst: componentcheck
      Src: /src/postgres/src/timezone/zic.c:940,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 902
    functionDepth: 3
    functionLinenumber: 902
    functionLinenumberEnd: 941
    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: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:965,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:968,1
    - Dst: emalloc
      Src: /src/postgres/src/timezone/zic.c:969,1
    - Dst: strcpy
      Src: /src/postgres/src/timezone/zic.c:970,1
    - Dst: strcpy
      Src: /src/postgres/src/timezone/zic.c:972,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:979,1
    - Dst: emalloc
      Src: /src/postgres/src/timezone/zic.c:984,1
    - Dst: memcpy
      Src: /src/postgres/src/timezone/zic.c:986,1
    - Dst: memmove
      Src: /src/postgres/src/timezone/zic.c:987,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 2
    argNames:
    - target
    - linkname
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 990
      start: 950
    functionDepth: 3
    functionLinenumber: 950
    functionLinenumberEnd: 990
    functionName: relname
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - emalloc
    - memmove
    - memcpy
    - strlen
    - strcpy
    linkageType: ''
    returnType: char
    signature: 'char *

      relname(char const *target, char const *linkname)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: linkat
      Src: /src/postgres/src/timezone/zic.c:998,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - target
    - linkname
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1001
      start: 995
    functionDepth: 1
    functionLinenumber: 995
    functionLinenumberEnd: 1001
    functionName: hardlinkerr
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - linkat
    linkageType: ''
    returnType: int
    signature: int hardlinkerr(char const *target, char const *linkname)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:1006,1
    - Dst: itsdir
      Src: /src/postgres/src/timezone/zic.c:1014,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:1016,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1016,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:1017,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:1018,1
    - Dst: itssymlink
      Src: /src/postgres/src/timezone/zic.c:1021,1
    - Dst: remove
      Src: /src/postgres/src/timezone/zic.c:1022,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:1026,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:1028,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1028,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:1030,1
    - Dst: hardlinkerr
      Src: /src/postgres/src/timezone/zic.c:1034,1
    - Dst: mkdirs
      Src: /src/postgres/src/timezone/zic.c:1037,1
    - Dst: hardlinkerr
      Src: /src/postgres/src/timezone/zic.c:1039,1
    - Dst: relname
      Src: /src/postgres/src/timezone/zic.c:1045,1
    - Dst: symlink
      Src: /src/postgres/src/timezone/zic.c:1047,1
    - Dst: mkdirs
      Src: /src/postgres/src/timezone/zic.c:1052,1
    - Dst: symlink
      Src: /src/postgres/src/timezone/zic.c:1054,1
    - Dst: free
      Src: /src/postgres/src/timezone/zic.c:1056,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:1060,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1060,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:1061,1
    - Dst: fopen
      Src: /src/postgres/src/timezone/zic.c:1070,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:1073,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:1075,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1075,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:1077,1
    - Dst: fopen
      Src: /src/postgres/src/timezone/zic.c:1079,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:1082,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:1084,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1084,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:1086,1
    - Dst: getc
      Src: /src/postgres/src/timezone/zic.c:1088,1
    - Dst: putc
      Src: /src/postgres/src/timezone/zic.c:1089,1
    - Dst: close_file
      Src: /src/postgres/src/timezone/zic.c:1090,1
    - Dst: close_file
      Src: /src/postgres/src/timezone/zic.c:1091,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:1093,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1093,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:1094,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:1097,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1097,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:1098,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 51
    argCount: 3
    argNames:
    - target
    - linkname
    - staysymlink
    argTypes:
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1102
      start: 1003
    functionDepth: 4
    functionLinenumber: 1003
    functionLinenumberEnd: 1102
    functionName: dolink
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - remove
    - warning
    - itssymlink
    - putc
    - close_file
    - fprintf
    - itsdir
    - strerror
    - exit
    - mkdirs
    - relname
    - symlink
    - _
    - fopen
    - hardlinkerr
    - getc
    - strcmp
    - free
    linkageType: ''
    returnType: void
    signature: void dolink(char const *target, char const *linkname, bool staysymlink)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/postgres/src/timezone/zic.c:1109,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/timezone/zic.c:1112,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:1116,1
    - Dst: emalloc
      Src: /src/postgres/src/timezone/zic.c:1117,1
    - Dst: memcpy
      Src: /src/postgres/src/timezone/zic.c:1120,1
    - Dst: strcpy
      Src: /src/postgres/src/timezone/zic.c:1121,1
    - Dst: stat
      Src: /src/postgres/src/timezone/zic.c:1122,1
    - Dst: free
      Src: /src/postgres/src/timezone/zic.c:1123,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1105
    functionDepth: 3
    functionLinenumber: 1105
    functionLinenumberEnd: 1127
    functionName: itsdir
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - stat
    - emalloc
    - S_ISDIR
    - free
    - memcpy
    - strlen
    - strcpy
    linkageType: ''
    returnType: bool
    signature: bool itsdir(char const *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: readlink
      Src: /src/postgres/src/timezone/zic.c:1136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1140
      start: 1130
    functionDepth: 0
    functionLinenumber: 1130
    functionLinenumberEnd: 1140
    functionName: itssymlink
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - readlink
    linkageType: ''
    returnType: bool
    signature: bool itssymlink(char const *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:1153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cp1
    - cp2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1155
      start: 1150
    functionDepth: 0
    functionLinenumber: 1150
    functionLinenumberEnd: 1155
    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:1169,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:1172,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:1175,1
    - Dst: eat
      Src: /src/postgres/src/timezone/zic.c:1178,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:1179,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1179,1
    - Dst: eat
      Src: /src/postgres/src/timezone/zic.c:1180,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:1181,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1181,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:1184,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:1187,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:1190,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:1208,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:1213,1
    - Dst: eat
      Src: /src/postgres/src/timezone/zic.c:1227,1
    - Dst: getsave
      Src: /src/postgres/src/timezone/zic.c:1228,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1235,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1235,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:1239,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 53
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1240
      start: 1157
    functionDepth: 2
    functionLinenumber: 1157
    functionLinenumberEnd: 1240
    functionName: associate
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - warning
    - qsort
    - error
    - getsave
    - exit
    - eat
    - _
    - strcmp
    linkageType: ''
    returnType: void
    signature: void associate(void)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:1254,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1256,1
    - Dst: fopen
      Src: /src/postgres/src/timezone/zic.c:1259,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:1261,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:1263,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1263,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:1265,1
    - Dst: eat
      Src: /src/postgres/src/timezone/zic.c:1270,1
    - Dst: fgets
      Src: /src/postgres/src/timezone/zic.c:1271,1
    - Dst: strchr
      Src: /src/postgres/src/timezone/zic.c:1273,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1276,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1276,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:1277,1
    - Dst: getfields
      Src: /src/postgres/src/timezone/zic.c:1280,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:1286,1
    - Dst: sscanf
      Src: /src/postgres/src/timezone/zic.c:1304,1
    - Dst: inzcont
      Src: /src/postgres/src/timezone/zic.c:1310,1
    - Dst: byword
      Src: /src/postgres/src/timezone/zic.c:1317,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1319,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1319,1
    - Dst: inrule
      Src: /src/postgres/src/timezone/zic.c:1324,1
    - Dst: inzone
      Src: /src/postgres/src/timezone/zic.c:1328,1
    - Dst: inlink
      Src: /src/postgres/src/timezone/zic.c:1331,1
    - Dst: inleap
      Src: /src/postgres/src/timezone/zic.c:1335,1
    - Dst: inexpires
      Src: /src/postgres/src/timezone/zic.c:1339,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:1343,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1344,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:1346,1
    - Dst: free
      Src: /src/postgres/src/timezone/zic.c:1349,1
    - Dst: close_file
      Src: /src/postgres/src/timezone/zic.c:1351,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1353,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1353,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 69
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1354
      start: 1242
    functionDepth: 2
    functionLinenumber: 1242
    functionLinenumberEnd: 1354
    functionName: infile
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - inzcont
    - fprintf
    - exit
    - error
    - inrule
    - inzone
    - byword
    - fopen
    - _
    - strcmp
    - close_file
    - eat
    - inexpires
    - fgets
    - inleap
    - sscanf
    - inlink
    - strerror
    - getfields
    - free
    - strchr
    linkageType: ''
    returnType: void
    signature: void infile(const char *name)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/postgres/src/timezone/zic.c:1389,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:1402,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1402,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1416,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1423,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1430,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1430,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:1437,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1437,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:1438,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 41
    argCount: 2
    argNames:
    - string
    - errstring
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1440
      start: 1364
    functionDepth: 2
    functionLinenumber: 1364
    functionLinenumberEnd: 1440
    functionName: gethms
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - warning
    - oadd
    - sscanf
    - _
    - error
    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:1447,1
    - Dst: gethms
      Src: /src/postgres/src/timezone/zic.c:1465,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1465,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - field
    - isdst
    argTypes:
    - char*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1468
      start: 1442
    functionDepth: 3
    functionLinenumber: 1442
    functionLinenumberEnd: 1468
    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: 22
    BranchProfiles: []
    Callsites:
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1477,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1477,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1501,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1501,1
    - Dst: getsave
      Src: /src/postgres/src/timezone/zic.c:1506,1
    - Dst: rulesub
      Src: /src/postgres/src/timezone/zic.c:1507,1
    - Dst: ecpyalloc
      Src: /src/postgres/src/timezone/zic.c:1509,1
    - Dst: ecpyalloc
      Src: /src/postgres/src/timezone/zic.c:1510,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:1511,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:1512,1
    - Dst: growalloc
      Src: /src/postgres/src/timezone/zic.c:1513,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 38
    argCount: 2
    argNames:
    - fields
    - nfields
    argTypes:
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1515
      start: 1470
    functionDepth: 4
    functionLinenumber: 1470
    functionLinenumberEnd: 1515
    functionName: inrule
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - getsave
    - ecpyalloc
    - rulesub
    - _
    - 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:1524,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1524,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:1527,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1529,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1530,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:1534,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1536,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1537,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:1543,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1545,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1545,1
    - Dst: inzsub
      Src: /src/postgres/src/timezone/zic.c:1552,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 2
    argNames:
    - fields
    - nfields
    argTypes:
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1553
      start: 1517
    functionDepth: 1
    functionLinenumber: 1517
    functionLinenumberEnd: 1553
    functionName: inzone
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - strcmp
    - error
    - inzsub
    - _
    linkageType: ''
    returnType: bool
    signature: bool inzone(char **fields, int nfields)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1560,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1560,1
    - Dst: inzsub
      Src: /src/postgres/src/timezone/zic.c:1563,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - fields
    - nfields
    argTypes:
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1564
      start: 1555
    functionDepth: 1
    functionLinenumber: 1555
    functionLinenumberEnd: 1564
    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: 10
    BranchProfiles: []
    Callsites:
    - Dst: namecheck
      Src: /src/postgres/src/timezone/zic.c:1592,1
    - Dst: ecpyalloc
      Src: /src/postgres/src/timezone/zic.c:1603,1
    - Dst: gethms
      Src: /src/postgres/src/timezone/zic.c:1607,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1607,1
    - Dst: strchr
      Src: /src/postgres/src/timezone/zic.c:1608,1
    - Dst: strchr
      Src: /src/postgres/src/timezone/zic.c:1610,1
    - Dst: strchr
      Src: /src/postgres/src/timezone/zic.c:1611,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1613,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1613,1
    - Dst: ecpyalloc
      Src: /src/postgres/src/timezone/zic.c:1617,1
    - Dst: ecpyalloc
      Src: /src/postgres/src/timezone/zic.c:1618,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:1623,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1623,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:1627,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:1628,1
    - Dst: rulesub
      Src: /src/postgres/src/timezone/zic.c:1634,1
    - Dst: rpytime
      Src: /src/postgres/src/timezone/zic.c:1642,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1651,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1651,1
    - Dst: growalloc
      Src: /src/postgres/src/timezone/zic.c:1655,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 55
    argCount: 3
    argNames:
    - fields
    - nfields
    - iscont
    argTypes:
    - char**
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1663
      start: 1566
    functionDepth: 4
    functionLinenumber: 1566
    functionLinenumberEnd: 1663
    functionName: inzsub
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 2
    functionsReached:
    - warning
    - growalloc
    - ecpyalloc
    - rpytime
    - namecheck
    - rulesub
    - _
    - error
    - strlen
    - gethms
    - strchr
    linkageType: ''
    returnType: bool
    signature: bool inzsub(char **fields, int nfields, bool iscont)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/postgres/src/timezone/zic.c:1684,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1689,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1689,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/zic.c:1705,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/zic.c:1711,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:1713,1
    - Dst: byword
      Src: /src/postgres/src/timezone/zic.c:1715,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1717,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1717,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/zic.c:1724,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:1725,1
    - Dst: sscanf
      Src: /src/postgres/src/timezone/zic.c:1729,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/zic.c:1730,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1732,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1732,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:1735,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1738,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1738,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1743,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1743,1
    - Dst: gethms
      Src: /src/postgres/src/timezone/zic.c:1747,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1747,1
    - Dst: tadd
      Src: /src/postgres/src/timezone/zic.c:1748,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1750,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1750,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 56
    argCount: 3
    argNames:
    - fields
    - nfields
    - expire_line
    argTypes:
    - char**
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1752
      start: 1665
    functionDepth: 3
    functionLinenumber: 1665
    functionLinenumberEnd: 1752
    functionName: getleapdatetime
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - oadd
    - tadd
    - sscanf
    - byword
    - isleap
    - _
    - error
    - gethms
    linkageType: ''
    returnType: zic_t
    signature: zic_t getleapdatetime(char **fields, int nfields, bool expire_line)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1758,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1758,1
    - Dst: getleapdatetime
      Src: /src/postgres/src/timezone/zic.c:1761,1
    - Dst: byword
      Src: /src/postgres/src/timezone/zic.c:1765,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1768,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1768,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:1775,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1778,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1778,1
    - Dst: leapadd
      Src: /src/postgres/src/timezone/zic.c:1780,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - fields
    - nfields
    argTypes:
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1784
      start: 1754
    functionDepth: 4
    functionLinenumber: 1754
    functionLinenumberEnd: 1784
    functionName: inleap
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - error
    - leapadd
    - getleapdatetime
    - byword
    - _
    - strcmp
    linkageType: ''
    returnType: void
    signature: void inleap(char **fields, int nfields)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1790,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1790,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1792,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1792,1
    - Dst: getleapdatetime
      Src: /src/postgres/src/timezone/zic.c:1794,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - fields
    - nfields
    argTypes:
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1795
      start: 1786
    functionDepth: 4
    functionLinenumber: 1786
    functionLinenumberEnd: 1795
    functionName: inexpires
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - getleapdatetime
    - error
    - _
    linkageType: ''
    returnType: void
    signature: void inexpires(char **fields, int nfields)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1804,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1804,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1809,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1809,1
    - Dst: namecheck
      Src: /src/postgres/src/timezone/zic.c:1812,1
    - Dst: ecpyalloc
      Src: /src/postgres/src/timezone/zic.c:1816,1
    - Dst: ecpyalloc
      Src: /src/postgres/src/timezone/zic.c:1817,1
    - Dst: growalloc
      Src: /src/postgres/src/timezone/zic.c:1818,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - fields
    - nfields
    argTypes:
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1820
      start: 1797
    functionDepth: 4
    functionLinenumber: 1797
    functionLinenumberEnd: 1820
    functionName: inlink
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - ecpyalloc
    - namecheck
    - _
    - error
    - growalloc
    linkageType: ''
    returnType: void
    signature: void inlink(char **fields, int nfields)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: byword
      Src: /src/postgres/src/timezone/zic.c:1836,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1838,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1838,1
    - Dst: ecpyalloc
      Src: /src/postgres/src/timezone/zic.c:1844,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:1847,1
    - Dst: lowerit
      Src: /src/postgres/src/timezone/zic.c:1848,1
    - Dst: gethms
      Src: /src/postgres/src/timezone/zic.c:1869,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1869,1
    - Dst: free
      Src: /src/postgres/src/timezone/zic.c:1870,1
    - Dst: byword
      Src: /src/postgres/src/timezone/zic.c:1876,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:1888,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1889,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:1891,1
    - Dst: sscanf
      Src: /src/postgres/src/timezone/zic.c:1893,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1897,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1897,1
    - Dst: byword
      Src: /src/postgres/src/timezone/zic.c:1901,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:1916,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1917,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:1919,1
    - Dst: sscanf
      Src: /src/postgres/src/timezone/zic.c:1921,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1925,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1925,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1930,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1930,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1935,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1935,1
    - Dst: ecpyalloc
      Src: /src/postgres/src/timezone/zic.c:1944,1
    - Dst: byword
      Src: /src/postgres/src/timezone/zic.c:1945,1
    - Dst: strchr
      Src: /src/postgres/src/timezone/zic.c:1953,1
    - Dst: strchr
      Src: /src/postgres/src/timezone/zic.c:1955,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1967,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1967,1
    - Dst: free
      Src: /src/postgres/src/timezone/zic.c:1968,1
    - Dst: byword
      Src: /src/postgres/src/timezone/zic.c:1971,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1973,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1973,1
    - Dst: free
      Src: /src/postgres/src/timezone/zic.c:1974,1
    - Dst: sscanf
      Src: /src/postgres/src/timezone/zic.c:1979,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:1983,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:1983,1
    - Dst: free
      Src: /src/postgres/src/timezone/zic.c:1984,1
    - Dst: free
      Src: /src/postgres/src/timezone/zic.c:1988,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 118
    argCount: 7
    argNames:
    - rp
    - loyearp
    - hiyearp
    - typep
    - monthp
    - dayp
    - timep
    argTypes:
    - struct rule*
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1989
      start: 1822
    functionDepth: 3
    functionLinenumber: 1822
    functionLinenumberEnd: 1989
    functionName: rulesub
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 2
    functionsReached:
    - byword
    - sscanf
    - ecpyalloc
    - fprintf
    - exit
    - lowerit
    - gethms
    - _
    - free
    - error
    - strlen
    - strchr
    linkageType: ''
    returnType: void
    signature: "void 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:
    - int32
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2000
      start: 1991
    functionDepth: 0
    functionLinenumber: 1991
    functionLinenumberEnd: 2000
    functionName: convert
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void convert(const int32 val, char *const buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - val
    - buf
    argTypes:
    - zic_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2011
      start: 2002
    functionDepth: 0
    functionLinenumber: 2002
    functionLinenumberEnd: 2011
    functionName: convert64
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void convert64(const zic_t val, char *const buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: convert
      Src: /src/postgres/src/timezone/zic.c:2018,1
    - Dst: fwrite
      Src: /src/postgres/src/timezone/zic.c:2019,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - val
    - fp
    argTypes:
    - int32
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2020
      start: 2013
    functionDepth: 1
    functionLinenumber: 2013
    functionLinenumberEnd: 2020
    functionName: puttzcode
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - convert
    - fwrite
    linkageType: ''
    returnType: void
    signature: void puttzcode(const int32 val, FILE *const fp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: puttzcode
      Src: /src/postgres/src/timezone/zic.c:2026,1
    - Dst: convert64
      Src: /src/postgres/src/timezone/zic.c:2031,1
    - Dst: fwrite
      Src: /src/postgres/src/timezone/zic.c:2032,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - val
    - fp
    - pass
    argTypes:
    - zic_t
    - FILE*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2034
      start: 2022
    functionDepth: 2
    functionLinenumber: 2022
    functionLinenumberEnd: 2034
    functionName: puttzcodepass
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - convert64
    - fwrite
    - puttzcode
    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: 2043
      start: 2036
    functionDepth: 0
    functionLinenumber: 2036
    functionLinenumberEnd: 2043
    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: 9
    EdgeCount: 9
    ICount: 17
    argCount: 5
    argNames:
    - r
    - lo
    - hi
    - ats
    - types
    argTypes:
    - struct timerange
    - zic_t
    - zic_t
    - zic_t*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2079
      start: 2054
    functionDepth: 0
    functionLinenumber: 2054
    functionLinenumberEnd: 2079
    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: 50
    BranchProfiles: []
    Callsites:
    - Dst: emalloc
      Src: /src/postgres/src/timezone/zic.c:2100,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/timezone/zic.c:2100,1
    - Dst: size_product
      Src: /src/postgres/src/timezone/zic.c:2100,1
    - Dst: qsort
      Src: /src/postgres/src/timezone/zic.c:2111,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:2151,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2151,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:2155,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2155,1
    - Dst: tadd
      Src: /src/postgres/src/timezone/zic.c:2177,1
    - Dst: want_bloat
      Src: /src/postgres/src/timezone/zic.c:2191,1
    - Dst: strchr
      Src: /src/postgres/src/timezone/zic.c:2192,1
    - Dst: limitrange
      Src: /src/postgres/src/timezone/zic.c:2203,1
    - Dst: limitrange
      Src: /src/postgres/src/timezone/zic.c:2204,1
    - Dst: remove
      Src: /src/postgres/src/timezone/zic.c:2209,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:2213,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:2215,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2215,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:2217,1
    - Dst: fopen
      Src: /src/postgres/src/timezone/zic.c:2219,1
    - Dst: mkdirs
      Src: /src/postgres/src/timezone/zic.c:2226,1
    - Dst: fopen
      Src: /src/postgres/src/timezone/zic.c:2227,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:2232,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2232,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:2233,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:2234,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:2298,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2298,1
    - Dst: memset
      Src: /src/postgres/src/timezone/zic.c:2324,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:2334,1
    - Dst: want_bloat
      Src: /src/postgres/src/timezone/zic.c:2344,1
    - Dst: addtype
      Src: /src/postgres/src/timezone/zic.c:2375,1
    - Dst: addtype
      Src: /src/postgres/src/timezone/zic.c:2387,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:2422,1
    - Dst: strcpy
      Src: /src/postgres/src/timezone/zic.c:2426,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:2427,1
    - Dst: want_bloat
      Src: /src/postgres/src/timezone/zic.c:2431,1
    - Dst: memcpy
      Src: /src/postgres/src/timezone/zic.c:2440,1
    - Dst: convert
      Src: /src/postgres/src/timezone/zic.c:2442,1
    - Dst: convert
      Src: /src/postgres/src/timezone/zic.c:2443,1
    - Dst: convert
      Src: /src/postgres/src/timezone/zic.c:2444,1
    - Dst: convert
      Src: /src/postgres/src/timezone/zic.c:2445,1
    - Dst: convert
      Src: /src/postgres/src/timezone/zic.c:2446,1
    - Dst: convert
      Src: /src/postgres/src/timezone/zic.c:2447,1
    - Dst: DO
      Src: /src/postgres/src/timezone/zic.c:2448,1
    - Dst: DO
      Src: /src/postgres/src/timezone/zic.c:2449,1
    - Dst: DO
      Src: /src/postgres/src/timezone/zic.c:2450,1
    - Dst: DO
      Src: /src/postgres/src/timezone/zic.c:2451,1
    - Dst: DO
      Src: /src/postgres/src/timezone/zic.c:2452,1
    - Dst: DO
      Src: /src/postgres/src/timezone/zic.c:2453,1
    - Dst: DO
      Src: /src/postgres/src/timezone/zic.c:2454,1
    - Dst: DO
      Src: /src/postgres/src/timezone/zic.c:2455,1
    - Dst: DO
      Src: /src/postgres/src/timezone/zic.c:2456,1
    - Dst: want_bloat
      Src: /src/postgres/src/timezone/zic.c:2458,1
    - Dst: puttzcode
      Src: /src/postgres/src/timezone/zic.c:2461,1
    - Dst: putc
      Src: /src/postgres/src/timezone/zic.c:2462,1
    - Dst: putc
      Src: /src/postgres/src/timezone/zic.c:2463,1
    - Dst: putc
      Src: /src/postgres/src/timezone/zic.c:2464,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:2479,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:2491,1
    - Dst: puttzcodepass
      Src: /src/postgres/src/timezone/zic.c:2505,1
    - Dst: puttzcodepass
      Src: /src/postgres/src/timezone/zic.c:2510,1
    - Dst: puttzcodepass
      Src: /src/postgres/src/timezone/zic.c:2513,1
    - Dst: putc
      Src: /src/postgres/src/timezone/zic.c:2516,1
    - Dst: putc
      Src: /src/postgres/src/timezone/zic.c:2520,1
    - Dst: putc
      Src: /src/postgres/src/timezone/zic.c:2523,1
    - Dst: puttzcode
      Src: /src/postgres/src/timezone/zic.c:2532,1
    - Dst: putc
      Src: /src/postgres/src/timezone/zic.c:2533,1
    - Dst: putc
      Src: /src/postgres/src/timezone/zic.c:2534,1
    - Dst: fwrite
      Src: /src/postgres/src/timezone/zic.c:2538,1
    - Dst: tadd
      Src: /src/postgres/src/timezone/zic.c:2564,1
    - Dst: puttzcodepass
      Src: /src/postgres/src/timezone/zic.c:2568,1
    - Dst: puttzcode
      Src: /src/postgres/src/timezone/zic.c:2569,1
    - Dst: putc
      Src: /src/postgres/src/timezone/zic.c:2574,1
    - Dst: putc
      Src: /src/postgres/src/timezone/zic.c:2578,1
    - Dst: fprintf
      Src: /src/postgres/src/timezone/zic.c:2580,1
    - Dst: close_file
      Src: /src/postgres/src/timezone/zic.c:2581,1
    - Dst: free
      Src: /src/postgres/src/timezone/zic.c:2582,1
    CyclomaticComplexity: 103
    EdgeCount: 103
    ICount: 253
    argCount: 4
    argNames:
    - name
    - string
    - version
    - defaulttype
    argTypes:
    - char*
    - char*
    - char
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2583
      start: 2081
    functionDepth: 3
    functionLinenumber: 2081
    functionLinenumberEnd: 2583
    functionName: writezone
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - puttzcodepass
    - warning
    - fprintf
    - mkdirs
    - exit
    - putc
    - error
    - strlen
    - limitrange
    - want_bloat
    - convert
    - fopen
    - _
    - DO
    - memcpy
    - strcmp
    - strcpy
    - puttzcode
    - remove
    - qsort
    - close_file
    - tadd
    - emalloc
    - fwrite
    - MAXALIGN
    - memset
    - strerror
    - addtype
    - size_product
    - free
    - strchr
    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: 2439
      start: 2438
    functionDepth: 0
    functionLinenumber: 2438
    functionLinenumberEnd: 2439
    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:2604,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:2604,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 2
    argNames:
    - buf
    - offset
    argTypes:
    - char*
    - zic_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2627
      start: 2585
    functionDepth: 0
    functionLinenumber: 2585
    functionLinenumberEnd: 2627
    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: 7
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/timezone/zic.c:2638,1
    - Dst: abbroffset
      Src: /src/postgres/src/timezone/zic.c:2644,1
    - Dst: sprintf
      Src: /src/postgres/src/timezone/zic.c:2647,1
    - Dst: strcpy
      Src: /src/postgres/src/timezone/zic.c:2651,1
    - Dst: memcpy
      Src: /src/postgres/src/timezone/zic.c:2655,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:2658,1
    - Dst: is_alpha
      Src: /src/postgres/src/timezone/zic.c:2661,1
    - Dst: memmove
      Src: /src/postgres/src/timezone/zic.c:2667,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    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: 2670
      start: 2629
    functionDepth: 1
    functionLinenumber: 2629
    functionLinenumberEnd: 2670
    functionName: doabbr
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - abbroffset
    - strchr
    - is_alpha
    - memmove
    - memcpy
    - sprintf
    - strlen
    - strcpy
    linkageType: ''
    returnType: size_t
    signature: "size_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: 2679
      start: 2672
    functionDepth: 0
    functionLinenumber: 2672
    functionLinenumberEnd: 2679
    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:2705,1
    - Dst: sprintf
      Src: /src/postgres/src/timezone/zic.c:2708,1
    - Dst: sprintf
      Src: /src/postgres/src/timezone/zic.c:2710,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - result
    - offset
    argTypes:
    - char*
    - zic_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2713
      start: 2681
    functionDepth: 0
    functionLinenumber: 2681
    functionLinenumberEnd: 2713
    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:2733,1
    - Dst: sprintf
      Src: /src/postgres/src/timezone/zic.c:2735,1
    - Dst: sprintf
      Src: /src/postgres/src/timezone/zic.c:2770,1
    - Dst: stringoffset
      Src: /src/postgres/src/timezone/zic.c:2780,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: 2794
      start: 2715
    functionDepth: 1
    functionLinenumber: 2715
    functionLinenumberEnd: 2794
    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: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct rule*
    - struct rule*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2808
      start: 2796
    functionDepth: 0
    functionLinenumber: 2796
    functionLinenumberEnd: 2808
    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: 19
    BranchProfiles: []
    Callsites:
    - Dst: rule_cmp
      Src: /src/postgres/src/timezone/zic.c:2868,1
    - Dst: rule_cmp
      Src: /src/postgres/src/timezone/zic.c:2870,1
    - Dst: doabbr
      Src: /src/postgres/src/timezone/zic.c:2900,1
    - Dst: stringoffset
      Src: /src/postgres/src/timezone/zic.c:2901,1
    - Dst: doabbr
      Src: /src/postgres/src/timezone/zic.c:2910,1
    - Dst: stringoffset
      Src: /src/postgres/src/timezone/zic.c:2914,1
    - Dst: stringrule
      Src: /src/postgres/src/timezone/zic.c:2924,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:2932,1
    - Dst: stringrule
      Src: /src/postgres/src/timezone/zic.c:2934,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 88
    argCount: 3
    argNames:
    - result
    - zpfirst
    - zonecount
    argTypes:
    - char*
    - struct zone*
    - ptrdiff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2943
      start: 2810
    functionDepth: 2
    functionLinenumber: 2810
    functionLinenumberEnd: 2943
    functionName: stringzone
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - stringoffset
    - doabbr
    - rule_cmp
    - stringrule
    - strlen
    linkageType: ''
    returnType: int
    signature: int stringzone(char *result, struct zone const *zpfirst, ptrdiff_t
      zonecount)
  - BBCount: 50
    BranchProfiles: []
    Callsites:
    - Dst: emalloc
      Src: /src/postgres/src/timezone/zic.c:2980,1
    - Dst: emalloc
      Src: /src/postgres/src/timezone/zic.c:2981,1
    - Dst: emalloc
      Src: /src/postgres/src/timezone/zic.c:2982,1
    - Dst: INITIALIZE
      Src: /src/postgres/src/timezone/zic.c:2983,1
    - Dst: INITIALIZE
      Src: /src/postgres/src/timezone/zic.c:2984,1
    - Dst: updateminmax
      Src: /src/postgres/src/timezone/zic.c:3003,1
    - Dst: updateminmax
      Src: /src/postgres/src/timezone/zic.c:3004,1
    - Dst: updateminmax
      Src: /src/postgres/src/timezone/zic.c:3010,1
    - Dst: updateminmax
      Src: /src/postgres/src/timezone/zic.c:3015,1
    - Dst: updateminmax
      Src: /src/postgres/src/timezone/zic.c:3017,1
    - Dst: stringzone
      Src: /src/postgres/src/timezone/zic.c:3026,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:3032,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3033,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:3041,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3041,1
    - Dst: want_bloat
      Src: /src/postgres/src/timezone/zic.c:3085,1
    - Dst: eat
      Src: /src/postgres/src/timezone/zic.c:3111,1
    - Dst: doabbr
      Src: /src/postgres/src/timezone/zic.c:3117,1
    - Dst: addtype
      Src: /src/postgres/src/timezone/zic.c:3118,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:3118,1
    - Dst: addtt
      Src: /src/postgres/src/timezone/zic.c:3123,1
    - Dst: eats
      Src: /src/postgres/src/timezone/zic.c:3143,1
    - Dst: rpytime
      Src: /src/postgres/src/timezone/zic.c:3149,1
    - Dst: INITIALIZE
      Src: /src/postgres/src/timezone/zic.c:3162,1
    - Dst: tadd
      Src: /src/postgres/src/timezone/zic.c:3171,1
    - Dst: tadd
      Src: /src/postgres/src/timezone/zic.c:3174,1
    - Dst: eats
      Src: /src/postgres/src/timezone/zic.c:3188,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:3192,1
    - Dst: tadd
      Src: /src/postgres/src/timezone/zic.c:3197,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3206,1
    - Dst: eats
      Src: /src/postgres/src/timezone/zic.c:3208,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:3210,1
    - Dst: eats
      Src: /src/postgres/src/timezone/zic.c:3212,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:3214,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:3230,1
    - Dst: doabbr
      Src: /src/postgres/src/timezone/zic.c:3232,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:3240,1
    - Dst: doabbr
      Src: /src/postgres/src/timezone/zic.c:3243,1
    - Dst: eats
      Src: /src/postgres/src/timezone/zic.c:3251,1
    - Dst: doabbr
      Src: /src/postgres/src/timezone/zic.c:3253,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:3255,1
    - Dst: want_bloat
      Src: /src/postgres/src/timezone/zic.c:3256,1
    - Dst: addtype
      Src: /src/postgres/src/timezone/zic.c:3261,1
    - Dst: addtt
      Src: /src/postgres/src/timezone/zic.c:3269,1
    - Dst: strchr
      Src: /src/postgres/src/timezone/zic.c:3277,1
    - Dst: strchr
      Src: /src/postgres/src/timezone/zic.c:3278,1
    - Dst: strcpy
      Src: /src/postgres/src/timezone/zic.c:3279,1
    - Dst: eat
      Src: /src/postgres/src/timezone/zic.c:3280,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:3282,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3282,1
    - Dst: addtype
      Src: /src/postgres/src/timezone/zic.c:3287,1
    - Dst: addtt
      Src: /src/postgres/src/timezone/zic.c:3291,1
    - Dst: tadd
      Src: /src/postgres/src/timezone/zic.c:3304,1
    - Dst: tadd
      Src: /src/postgres/src/timezone/zic.c:3306,1
    - Dst: rpytime
      Src: /src/postgres/src/timezone/zic.c:3334,1
    - Dst: addtt
      Src: /src/postgres/src/timezone/zic.c:3336,1
    - Dst: rpytime
      Src: /src/postgres/src/timezone/zic.c:3336,1
    - Dst: writezone
      Src: /src/postgres/src/timezone/zic.c:3341,1
    - Dst: free
      Src: /src/postgres/src/timezone/zic.c:3342,1
    - Dst: free
      Src: /src/postgres/src/timezone/zic.c:3343,1
    - Dst: free
      Src: /src/postgres/src/timezone/zic.c:3344,1
    CyclomaticComplexity: 89
    EdgeCount: 89
    ICount: 205
    argCount: 2
    argNames:
    - zpfirst
    - zonecount
    argTypes:
    - struct zone*
    - ptrdiff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3345
      start: 2945
    functionDepth: 4
    functionLinenumber: 2945
    functionLinenumberEnd: 3345
    functionName: outzone
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - warning
    - eats
    - rpytime
    - error
    - want_bloat
    - _
    - strcpy
    - doabbr
    - tadd
    - stringzone
    - emalloc
    - addtt
    - updateminmax
    - eat
    - INITIALIZE
    - oadd
    - writezone
    - addtype
    - free
    - strchr
    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:3350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - starttime
    - type
    argTypes:
    - zic_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3355
      start: 3347
    functionDepth: 4
    functionLinenumber: 3347
    functionLinenumberEnd: 3355
    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:3365,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3365,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:3366,1
    - Dst: want_bloat
      Src: /src/postgres/src/timezone/zic.c:3368,1
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:3372,1
    - Dst: newabbr
      Src: /src/postgres/src/timezone/zic.c:3375,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:3390,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3390,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:3391,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 27
    argCount: 5
    argNames:
    - utoff
    - abbr
    - isdst
    - ttisstd
    - ttisut
    argTypes:
    - zic_t
    - char*
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3400
      start: 3357
    functionDepth: 1
    functionLinenumber: 3357
    functionLinenumberEnd: 3400
    functionName: addtype
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 2
    functionsReached:
    - error
    - want_bloat
    - exit
    - _
    - strcmp
    - newabbr
    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:3409,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3409,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:3410,1
    - Dst: memmove
      Src: /src/postgres/src/timezone/zic.c:3415,1
    - Dst: memmove
      Src: /src/postgres/src/timezone/zic.c:3416,1
    - Dst: memmove
      Src: /src/postgres/src/timezone/zic.c:3417,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - t
    - correction
    - rolling
    argTypes:
    - zic_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3422
      start: 3402
    functionDepth: 0
    functionLinenumber: 3402
    functionLinenumberEnd: 3422
    functionName: leapadd
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - error
    - memmove
    - _
    - exit
    linkageType: ''
    returnType: void
    signature: void leapadd(zic_t t, int correction, int rolling)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:3438,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3438,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:3439,1
    - Dst: tadd
      Src: /src/postgres/src/timezone/zic.c:3442,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:3450,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3450,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:3455,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:3458,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3458,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:3459,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3464
      start: 3424
    functionDepth: 2
    functionLinenumber: 3424
    functionLinenumberEnd: 3464
    functionName: adjleap
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - warning
    - tadd
    - oadd
    - exit
    - _
    - error
    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: 3482
      start: 3467
    functionDepth: 0
    functionLinenumber: 3467
    functionLinenumberEnd: 3482
    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: 3546
      start: 3485
    functionDepth: 0
    functionLinenumber: 3485
    functionLinenumberEnd: 3546
    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: 3610
      start: 3550
    functionDepth: 0
    functionLinenumber: 3550
    functionLinenumberEnd: 3610
    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:3616,1
    - Dst: lowerit
      Src: /src/postgres/src/timezone/zic.c:3616,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ap
    - bp
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3620
      start: 3613
    functionDepth: 1
    functionLinenumber: 3613
    functionLinenumberEnd: 3620
    functionName: ciequal
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - lowerit
    linkageType: ''
    returnType: bool
    signature: bool ciequal(const char *ap, const char *bp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lowerit
      Src: /src/postgres/src/timezone/zic.c:3625,1
    - Dst: lowerit
      Src: /src/postgres/src/timezone/zic.c:3625,1
    - Dst: lowerit
      Src: /src/postgres/src/timezone/zic.c:3633,1
    - Dst: lowerit
      Src: /src/postgres/src/timezone/zic.c:3633,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - abbr
    - word
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3635
      start: 3622
    functionDepth: 1
    functionLinenumber: 3622
    functionLinenumberEnd: 3635
    functionName: itsabbr
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - lowerit
    linkageType: ''
    returnType: bool
    signature: bool itsabbr(const char *abbr, const char *word)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lowerit
      Src: /src/postgres/src/timezone/zic.c:3645,1
    - Dst: lowerit
      Src: /src/postgres/src/timezone/zic.c:3645,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - abbr
    - word
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3648
      start: 3639
    functionDepth: 1
    functionLinenumber: 3639
    functionLinenumberEnd: 3648
    functionName: ciprefix
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - lowerit
    linkageType: ''
    returnType: bool
    signature: bool ciprefix(char const *abbr, char const *word)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ciprefix
      Src: /src/postgres/src/timezone/zic.c:3664,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:3667,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3667,1
    - Dst: ciequal
      Src: /src/postgres/src/timezone/zic.c:3680,1
    - Dst: ciprefix
      Src: /src/postgres/src/timezone/zic.c:3688,1
    - Dst: itsabbr
      Src: /src/postgres/src/timezone/zic.c:3702,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:3706,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3706,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 31
    argCount: 2
    argNames:
    - word
    - table
    argTypes:
    - char*
    - struct lookup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3714
      start: 3650
    functionDepth: 2
    functionLinenumber: 3650
    functionLinenumberEnd: 3714
    functionName: byword
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 4
    functionsReached:
    - warning
    - itsabbr
    - ciprefix
    - ciequal
    - _
    linkageType: ''
    returnType: struct lookup
    signature: 'struct lookup *

      byword(const char *word, const struct lookup *table)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: emalloc
      Src: /src/postgres/src/timezone/zic.c:3725,1
    - Dst: size_product
      Src: /src/postgres/src/timezone/zic.c:3725,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:3725,1
    - Dst: is_space
      Src: /src/postgres/src/timezone/zic.c:3729,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:3744,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3744,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:3745,1
    - Dst: is_space
      Src: /src/postgres/src/timezone/zic.c:3747,1
    - Dst: is_space
      Src: /src/postgres/src/timezone/zic.c:3748,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3754
      start: 3716
    functionDepth: 3
    functionLinenumber: 3716
    functionLinenumberEnd: 3754
    functionName: getfields
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - emalloc
    - is_space
    - exit
    - _
    - error
    - size_product
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char **

      getfields(char *cp)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:3759,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3759,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:3760,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3761
      start: 3756
    functionDepth: 0
    functionLinenumber: 3756
    functionLinenumberEnd: 3761
    functionName: time_overflow
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 0
    functionsReached:
    - error
    - _
    - exit
    linkageType: ''
    returnType: void
    signature: void time_overflow(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time_overflow
      Src: /src/postgres/src/timezone/zic.c:3767,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - t1
    - t2
    argTypes:
    - zic_t
    - zic_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3769
      start: 3763
    functionDepth: 1
    functionLinenumber: 3763
    functionLinenumberEnd: 3769
    functionName: oadd
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 4
    functionsReached:
    - time_overflow
    linkageType: ''
    returnType: zic_t
    signature: zic_t oadd(zic_t t1, zic_t t2)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: time_overflow
      Src: /src/postgres/src/timezone/zic.c:3779,1
    - Dst: time_overflow
      Src: /src/postgres/src/timezone/zic.c:3788,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - t1
    - t2
    argTypes:
    - zic_t
    - zic_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3793
      start: 3771
    functionDepth: 1
    functionLinenumber: 3771
    functionLinenumberEnd: 3793
    functionName: tadd
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 4
    functionsReached:
    - time_overflow
    linkageType: ''
    returnType: zic_t
    signature: zic_t tadd(zic_t t1, zic_t t2)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: isleap
      Src: /src/postgres/src/timezone/zic.c:3832,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/zic.c:3838,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:3840,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/zic.c:3844,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:3845,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/zic.c:3849,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:3855,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3855,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:3856,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:3860,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:3882,1
    - Dst: oadd
      Src: /src/postgres/src/timezone/zic.c:3889,1
    - Dst: isleap
      Src: /src/postgres/src/timezone/zic.c:3894,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:3897,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3897,1
    - Dst: tadd
      Src: /src/postgres/src/timezone/zic.c:3906,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 74
    argCount: 2
    argNames:
    - rp
    - wantedy
    argTypes:
    - struct rule*
    - zic_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3907
      start: 3800
    functionDepth: 2
    functionLinenumber: 3800
    functionLinenumberEnd: 3907
    functionName: rpytime
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 2
    functionsReached:
    - warning
    - oadd
    - tadd
    - exit
    - isleap
    - _
    - error
    linkageType: ''
    returnType: zic_t
    signature: zic_t rpytime(const struct rule *rp, zic_t wantedy)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/timezone/zic.c:3914,1
    - Dst: is_alpha
      Src: /src/postgres/src/timezone/zic.c:3921,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3925,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3927,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3929,1
    - Dst: warning
      Src: /src/postgres/src/timezone/zic.c:3931,1
    - Dst: strlen
      Src: /src/postgres/src/timezone/zic.c:3933,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:3936,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3936,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:3937,1
    - Dst: strcpy
      Src: /src/postgres/src/timezone/zic.c:3939,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 22
    argCount: 1
    argNames:
    - string
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3941
      start: 3909
    functionDepth: 2
    functionLinenumber: 3909
    functionLinenumberEnd: 3941
    functionName: newabbr
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 1
    functionsReached:
    - warning
    - error
    - is_alpha
    - exit
    - _
    - strcmp
    - strlen
    - strcpy
    linkageType: ''
    returnType: void
    signature: void newabbr(const char *string)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ecpyalloc
      Src: /src/postgres/src/timezone/zic.c:3953,1
    - Dst: strchr
      Src: /src/postgres/src/timezone/zic.c:3967,1
    - Dst: mkdir
      Src: /src/postgres/src/timezone/zic.c:3978,1
    - Dst: itsdir
      Src: /src/postgres/src/timezone/zic.c:3987,1
    - Dst: error
      Src: /src/postgres/src/timezone/zic.c:3989,1
    - Dst: _
      Src: /src/postgres/src/timezone/zic.c:3989,1
    - Dst: strerror
      Src: /src/postgres/src/timezone/zic.c:3990,1
    - Dst: exit
      Src: /src/postgres/src/timezone/zic.c:3991,1
    - Dst: free
      Src: /src/postgres/src/timezone/zic.c:3997,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 2
    argNames:
    - argname
    - ancestors
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3998
      start: 3947
    functionDepth: 4
    functionLinenumber: 3947
    functionLinenumberEnd: 3998
    functionName: mkdirs
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 3
    functionsReached:
    - ecpyalloc
    - itsdir
    - strerror
    - exit
    - _
    - error
    - mkdir
    - free
    - strchr
    linkageType: ''
    returnType: void
    signature: void mkdirs(char const *argname, bool ancestors)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CopyFile
      Src: /src/postgres/src/timezone/zic.c:4008,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/timezone/zic.c:4010,1
    - Dst: GetLastError
      Src: /src/postgres/src/timezone/zic.c:4010,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - oldpath
    - newpath
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4014
      start: 4005
    functionDepth: 1
    functionLinenumber: 4005
    functionLinenumberEnd: 4014
    functionName: link
    functionSourceFile: /src/postgres/src/timezone/zic.c
    functionUses: 40
    functionsReached:
    - _dosmaperr
    - CopyFile
    - GetLastError
    linkageType: ''
    returnType: int
    signature: int link(const char *oldpath, const char *newpath)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 46
    functionName: is_digit
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: is_digit(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: TYPE_BIT
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 2
    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: 58
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 58
    functionName: TYPE_SIGNED
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TYPE_SIGNED(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 59
    functionName: TWOS_COMPLEMENT
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TWOS_COMPLEMENT(t)
  - 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: 68
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 68
    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: 70
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 70
    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: 84
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 84
    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: 89
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 89
    functionName: INITIALIZE
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INITIALIZE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - msgid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 92
    functionName: _
    functionSourceFile: /src/postgres/src/timezone/private.h
    functionUses: 238
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _(msgid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 134
    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: 148
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 148
    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: free
      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
    - add_stringlist_item
    - spawn_process
    - pfree
    - appendStringInfo
    - snprintf
    - setenv
    - fprintf
    - exit
    - free
    - _
    - initStringInfo
    - unsetenv
    - psprintf
    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: 2
    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: 56
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 56
    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: 66
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 66
    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: 76
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 76
    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:95,1
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/test/regress/regress.c:96,1
    - Dst: regress_lseg_construct
      Src: /src/postgres/src/test/regress/regress.c:107,1
    - Dst: regress_lseg_construct
      Src: /src/postgres/src/test/regress/regress.c:110,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/test/regress/regress.c:111,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/test/regress/regress.c:111,1
    - Dst: LsegPGetDatum
      Src: /src/postgres/src/test/regress/regress.c:112,1
    - Dst: LsegPGetDatum
      Src: /src/postgres/src/test/regress/regress.c:113,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/regress/regress.c:119,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/test/regress/regress.c:126,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/test/regress/regress.c:126,1
    - Dst: LsegPGetDatum
      Src: /src/postgres/src/test/regress/regress.c:127,1
    - Dst: LsegPGetDatum
      Src: /src/postgres/src/test/regress/regress.c:128,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 129
    functionName: interpt_pp
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - regress_lseg_construct
    - LsegPGetDatum
    - PG_RETURN_DATUM
    - PG_RETURN_NULL
    - PG_GETARG_PATH_P
    - DirectFunctionCall2
    - DatumGetBool
    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: 140
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 140
    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:147,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/test/regress/regress.c:151,1
    - Dst: GetAttributeByName
      Src: /src/postgres/src/test/regress/regress.c:151,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/regress/regress.c:153,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/regress/regress.c:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 155
    functionName: overpaid
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - DatumGetInt32
    - PG_RETURN_BOOL
    - GetAttributeByName
    - PG_RETURN_NULL
    - PG_GETARG_HEAPTUPLEHEADER
    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:176,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:194,1
    - Dst: errcode
      Src: /src/postgres/src/test/regress/regress.c:195,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:196,1
    - Dst: palloc
      Src: /src/postgres/src/test/regress/regress.c:199,1
    - Dst: atof
      Src: /src/postgres/src/test/regress/regress.c:200,1
    - Dst: atof
      Src: /src/postgres/src/test/regress/regress.c:201,1
    - Dst: atof
      Src: /src/postgres/src/test/regress/regress.c:202,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/test/regress/regress.c:204,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 205
    functionName: widget_in
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_CSTRING
    - atof
    - ereport
    - palloc
    - errcode
    - 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:210,1
    - Dst: psprintf
      Src: /src/postgres/src/test/regress/regress.c:211,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/test/regress/regress.c:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 215
    functionName: widget_out
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_CSTRING
    - psprintf
    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:222,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/regress/regress.c:223,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/test/regress/regress.c:226,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/test/regress/regress.c:226,1
    - Dst: PointPGetDatum
      Src: /src/postgres/src/test/regress/regress.c:227,1
    - Dst: PointPGetDatum
      Src: /src/postgres/src/test/regress/regress.c:228,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/regress/regress.c:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 231
    functionName: pt_in_widget
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - DatumGetFloat8
    - PG_GETARG_POINTER
    - PG_RETURN_BOOL
    - PG_GETARG_POINT_P
    - DirectFunctionCall2
    - PointPGetDatum
    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:238,1
    - Dst: palloc0
      Src: /src/postgres/src/test/regress/regress.c:243,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/test/regress/regress.c:251,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 252
    functionName: reverse_name
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - PG_RETURN_CSTRING
    - palloc0
    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:262,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:263,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/regress/regress.c:267,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 268
    functionName: trigger_return_old
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - CALLED_AS_TRIGGER
    - elog
    - 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:286,1
    - Dst: palloc
      Src: /src/postgres/src/test/regress/regress.c:287,1
    - Dst: sscanf
      Src: /src/postgres/src/test/regress/regress.c:290,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/test/regress/regress.c:299,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 283
    functionDepth: 1
    functionLinenumber: 283
    functionLinenumberEnd: 300
    functionName: int44in
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - palloc
    - sscanf
    - PG_RETURN_POINTER
    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:310,1
    - Dst: palloc
      Src: /src/postgres/src/test/regress/regress.c:311,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/regress.c:313,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/test/regress/regress.c:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 320
    functionName: int44out
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - palloc
    - snprintf
    - PG_RETURN_CSTRING
    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:326,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/regress/regress.c:326,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/test/regress/regress.c:328,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/test/regress/regress.c:329,1
    - Dst: cstring_to_text
      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: 323
    functionDepth: 1
    functionLinenumber: 323
    functionLinenumberEnd: 330
    functionName: test_canonicalize_path
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - PG_RETURN_TEXT_P
    - cstring_to_text
    - canonicalize_path
    - text_to_cstring
    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:336,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/test/regress/regress.c:353,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/test/regress/regress.c:354,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/test/regress/regress.c:355,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/test/regress/regress.c:359,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/test/regress/regress.c:360,1
    - Dst: palloc
      Src: /src/postgres/src/test/regress/regress.c:364,1
    - Dst: palloc
      Src: /src/postgres/src/test/regress/regress.c:365,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/test/regress/regress.c:367,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/regress/regress.c:369,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/test/regress/regress.c:378,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/test/regress/regress.c:380,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/test/regress/regress.c:381,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/test/regress/regress.c:384,1
    - Dst: VARATT_IS_EXTERNAL_INDIRECT
      Src: /src/postgres/src/test/regress/regress.c:387,1
    - Dst: VARATT_IS_EXTERNAL_ONDISK
      Src: /src/postgres/src/test/regress/regress.c:391,1
    - Dst: detoast_external_attr
      Src: /src/postgres/src/test/regress/regress.c:392,1
    - Dst: palloc0
      Src: /src/postgres/src/test/regress/regress.c:397,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/test/regress/regress.c:397,1
    - Dst: memcpy
      Src: /src/postgres/src/test/regress/regress.c:398,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/test/regress/regress.c:398,1
    - Dst: palloc0
      Src: /src/postgres/src/test/regress/regress.c:402,1
    - Dst: SET_VARTAG_EXTERNAL
      Src: /src/postgres/src/test/regress/regress.c:404,1
    - Dst: memcpy
      Src: /src/postgres/src/test/regress/regress.c:405,1
    - Dst: VARDATA_EXTERNAL
      Src: /src/postgres/src/test/regress/regress.c:405,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/regress/regress.c:408,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/test/regress/regress.c:411,1
    - Dst: pfree
      Src: /src/postgres/src/test/regress/regress.c:412,1
    - Dst: pfree
      Src: /src/postgres/src/test/regress/regress.c:413,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/test/regress/regress.c:414,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/regress/regress.c:416,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/test/regress/regress.c:427,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 333
    functionDepth: 1
    functionLinenumber: 333
    functionLinenumberEnd: 428
    functionName: make_tuple_indirect
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - VARSIZE_ANY
    - MemoryContextSwitchTo
    - heap_deform_tuple
    - HeapTupleHeaderGetTypMod
    - PG_RETURN_POINTER
    - HeapTupleHeaderGetDatumLength
    - pfree
    - ItemPointerSetInvalid
    - VARATT_IS_EXTERNAL_ONDISK
    - memcpy
    - DatumGetPointer
    - PG_GETARG_HEAPTUPLEHEADER
    - heap_form_tuple
    - TupleDescAttr
    - lookup_rowtype_tupdesc
    - VARATT_IS_EXTERNAL_INDIRECT
    - detoast_external_attr
    - palloc
    - ReleaseTupleDesc
    - VARDATA_EXTERNAL
    - SET_VARTAG_EXTERNAL
    - palloc0
    - PointerGetDatum
    - HeapTupleHeaderGetTypeId
    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:445,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/test/regress/regress.c:448,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/test/regress/regress.c:450,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/test/regress/regress.c:452,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 432
    functionDepth: 1
    functionLinenumber: 432
    functionLinenumberEnd: 453
    functionName: get_environ
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - CStringGetTextDatum
    - palloc
    - construct_array_builtin
    - PG_RETURN_POINTER
    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:460,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/regress/regress.c:460,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/regress/regress.c:461,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/regress/regress.c:461,1
    - Dst: superuser
      Src: /src/postgres/src/test/regress/regress.c:463,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:464,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/regress.c:466,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:467,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/regress/regress.c:469,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 470
    functionName: regress_setenv
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - PG_RETURN_VOID
    - setenv
    - elog
    - superuser
    - text_to_cstring
    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:478,1
    - Dst: superuser
      Src: /src/postgres/src/test/regress/regress.c:480,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:481,1
    - Dst: kill
      Src: /src/postgres/src/test/regress/regress.c:483,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/test/regress/regress.c:485,1
    - Dst: pg_usleep
      Src: /src/postgres/src/test/regress/regress.c:486,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:490,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/regress/regress.c:492,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 475
    functionDepth: 1
    functionLinenumber: 475
    functionLinenumberEnd: 493
    functionName: wait_pid
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - CHECK_FOR_INTERRUPTS
    - PG_RETURN_VOID
    - kill
    - pg_usleep
    - elog
    - PG_GETARG_INT32
    - superuser
    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:500,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:501,1
    - Dst: pg_atomic_unlocked_test_flag
      Src: /src/postgres/src/test/regress/regress.c:501,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:502,1
    - Dst: pg_atomic_test_set_flag
      Src: /src/postgres/src/test/regress/regress.c:502,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:503,1
    - Dst: pg_atomic_unlocked_test_flag
      Src: /src/postgres/src/test/regress/regress.c:503,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:504,1
    - Dst: pg_atomic_test_set_flag
      Src: /src/postgres/src/test/regress/regress.c:504,1
    - Dst: pg_atomic_clear_flag
      Src: /src/postgres/src/test/regress/regress.c:505,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:506,1
    - Dst: pg_atomic_unlocked_test_flag
      Src: /src/postgres/src/test/regress/regress.c:506,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:507,1
    - Dst: pg_atomic_test_set_flag
      Src: /src/postgres/src/test/regress/regress.c:507,1
    - Dst: pg_atomic_clear_flag
      Src: /src/postgres/src/test/regress/regress.c:508,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 495
    functionDepth: 1
    functionLinenumber: 495
    functionLinenumberEnd: 509
    functionName: test_atomic_flag
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - pg_atomic_clear_flag
    - EXPECT_TRUE
    - pg_atomic_unlocked_test_flag
    - pg_atomic_init_flag
    - pg_atomic_test_set_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:518,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:519,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/test/regress/regress.c:519,1
    - Dst: pg_atomic_write_u32
      Src: /src/postgres/src/test/regress/regress.c:520,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:521,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/test/regress/regress.c:521,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:522,1
    - Dst: pg_atomic_fetch_add_u32
      Src: /src/postgres/src/test/regress/regress.c:522,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/test/regress/regress.c:522,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:524,1
    - Dst: pg_atomic_fetch_sub_u32
      Src: /src/postgres/src/test/regress/regress.c:524,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:525,1
    - Dst: pg_atomic_sub_fetch_u32
      Src: /src/postgres/src/test/regress/regress.c:525,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:526,1
    - Dst: pg_atomic_add_fetch_u32
      Src: /src/postgres/src/test/regress/regress.c:526,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:527,1
    - Dst: pg_atomic_exchange_u32
      Src: /src/postgres/src/test/regress/regress.c:527,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:528,1
    - Dst: pg_atomic_exchange_u32
      Src: /src/postgres/src/test/regress/regress.c:528,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:531,1
    - Dst: pg_atomic_fetch_add_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_fetch_add_u32
      Src: /src/postgres/src/test/regress/regress.c:533,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:534,1
    - Dst: pg_atomic_fetch_add_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_fetch_add_u32
      Src: /src/postgres/src/test/regress/regress.c:535,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:537,1
    - Dst: pg_atomic_fetch_add_u32
      Src: /src/postgres/src/test/regress/regress.c:537,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:539,1
    - Dst: pg_atomic_fetch_add_u32
      Src: /src/postgres/src/test/regress/regress.c:539,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_read_u32
      Src: /src/postgres/src/test/regress/regress.c:542,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:543,1
    - Dst: pg_atomic_fetch_sub_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_read_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_sub_fetch_u32
      Src: /src/postgres/src/test/regress/regress.c:545,1
    - Dst: pg_atomic_sub_fetch_u32
      Src: /src/postgres/src/test/regress/regress.c:546,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:548,1
    - Dst: pg_atomic_compare_exchange_u32
      Src: /src/postgres/src/test/regress/regress.c:548,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:550,1
    - Dst: pg_atomic_compare_exchange_u32
      Src: /src/postgres/src/test/regress/regress.c:550,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:552,1
    - Dst: pg_atomic_compare_exchange_u32
      Src: /src/postgres/src/test/regress/regress.c:552,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:554,1
    - Dst: pg_atomic_compare_exchange_u32
      Src: /src/postgres/src/test/regress/regress.c:554,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: pg_atomic_compare_exchange_u32
      Src: /src/postgres/src/test/regress/regress.c:564,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:568,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:569,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/test/regress/regress.c:569,1
    - Dst: pg_atomic_write_u32
      Src: /src/postgres/src/test/regress/regress.c:570,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:573,1
    - Dst: pg_atomic_fetch_or_u32
      Src: /src/postgres/src/test/regress/regress.c:573,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:574,1
    - Dst: pg_atomic_fetch_or_u32
      Src: /src/postgres/src/test/regress/regress.c:574,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:575,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/test/regress/regress.c:575,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:577,1
    - Dst: pg_atomic_fetch_and_u32
      Src: /src/postgres/src/test/regress/regress.c:577,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:578,1
    - Dst: pg_atomic_fetch_and_u32
      Src: /src/postgres/src/test/regress/regress.c:578,1
    - Dst: EXPECT_EQ_U32
      Src: /src/postgres/src/test/regress/regress.c:580,1
    - Dst: pg_atomic_fetch_and_u32
      Src: /src/postgres/src/test/regress/regress.c:580,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 511
    functionDepth: 1
    functionLinenumber: 511
    functionLinenumberEnd: 581
    functionName: test_atomic_uint32
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - pg_atomic_read_u32
    - pg_atomic_fetch_add_u32
    - pg_atomic_fetch_sub_u32
    - pg_atomic_fetch_or_u32
    - pg_atomic_sub_fetch_u32
    - EXPECT_TRUE
    - EXPECT_EQ_U32
    - pg_atomic_add_fetch_u32
    - elog
    - pg_atomic_exchange_u32
    - pg_atomic_init_u32
    - pg_atomic_fetch_and_u32
    - pg_atomic_compare_exchange_u32
    - pg_atomic_write_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:590,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/regress/regress.c:591,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/test/regress/regress.c:591,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/test/regress/regress.c:592,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/regress/regress.c:593,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/test/regress/regress.c:593,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/regress/regress.c:594,1
    - Dst: pg_atomic_fetch_add_u64
      Src: /src/postgres/src/test/regress/regress.c:594,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/test/regress/regress.c:594,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/regress/regress.c:596,1
    - Dst: pg_atomic_fetch_sub_u64
      Src: /src/postgres/src/test/regress/regress.c:596,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/regress/regress.c:597,1
    - Dst: pg_atomic_sub_fetch_u64
      Src: /src/postgres/src/test/regress/regress.c:597,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/regress/regress.c:598,1
    - Dst: pg_atomic_add_fetch_u64
      Src: /src/postgres/src/test/regress/regress.c:598,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/regress/regress.c:599,1
    - Dst: pg_atomic_exchange_u64
      Src: /src/postgres/src/test/regress/regress.c:599,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/regress/regress.c:600,1
    - Dst: pg_atomic_exchange_u64
      Src: /src/postgres/src/test/regress/regress.c:600,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:604,1
    - Dst: pg_atomic_compare_exchange_u64
      Src: /src/postgres/src/test/regress/regress.c:604,1
    - Dst: pg_atomic_compare_exchange_u64
      Src: /src/postgres/src/test/regress/regress.c:610,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:614,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/regress/regress.c:615,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/test/regress/regress.c:615,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/test/regress/regress.c:617,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:620,1
    - Dst: pg_atomic_fetch_or_u64
      Src: /src/postgres/src/test/regress/regress.c:620,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/regress/regress.c:621,1
    - Dst: pg_atomic_fetch_or_u64
      Src: /src/postgres/src/test/regress/regress.c:621,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/regress/regress.c:622,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/test/regress/regress.c:622,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/regress/regress.c:624,1
    - Dst: pg_atomic_fetch_and_u64
      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_fetch_and_u64
      Src: /src/postgres/src/test/regress/regress.c:625,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/regress/regress.c:627,1
    - Dst: pg_atomic_fetch_and_u64
      Src: /src/postgres/src/test/regress/regress.c:627,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 583
    functionDepth: 1
    functionLinenumber: 583
    functionLinenumberEnd: 628
    functionName: test_atomic_uint64
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - pg_atomic_compare_exchange_u64
    - EXPECT_EQ_U64
    - pg_atomic_fetch_and_u64
    - EXPECT_TRUE
    - pg_atomic_sub_fetch_u64
    - pg_atomic_fetch_sub_u64
    - pg_atomic_add_fetch_u64
    - pg_atomic_fetch_add_u64
    - elog
    - pg_atomic_read_u64
    - pg_atomic_exchange_u64
    - pg_atomic_write_u64
    - pg_atomic_init_u64
    - pg_atomic_fetch_or_u64
    linkageType: ''
    returnType: void
    signature: void test_atomic_uint64(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/test/regress/regress.c:653,1
    - Dst: memcpy
      Src: /src/postgres/src/test/regress/regress.c:654,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/test/regress/regress.c:657,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/test/regress/regress.c:658,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/test/regress/regress.c:659,1
    - Dst: S_INIT_LOCK
      Src: /src/postgres/src/test/regress/regress.c:662,1
    - Dst: S_LOCK
      Src: /src/postgres/src/test/regress/regress.c:663,1
    - Dst: S_UNLOCK
      Src: /src/postgres/src/test/regress/regress.c:664,1
    - Dst: s_lock
      Src: /src/postgres/src/test/regress/regress.c:667,1
    - Dst: S_UNLOCK
      Src: /src/postgres/src/test/regress/regress.c:668,1
    - Dst: S_LOCK
      Src: /src/postgres/src/test/regress/regress.c:675,1
    - Dst: TAS
      Src: /src/postgres/src/test/regress/regress.c:677,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:678,1
    - Dst: TAS_SPIN
      Src: /src/postgres/src/test/regress/regress.c:681,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:682,1
    - Dst: S_UNLOCK
      Src: /src/postgres/src/test/regress/regress.c:685,1
    - Dst: memcmp
      Src: /src/postgres/src/test/regress/regress.c:692,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:693,1
    - Dst: memcmp
      Src: /src/postgres/src/test/regress/regress.c:694,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:695,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 636
    functionDepth: 1
    functionLinenumber: 636
    functionLinenumberEnd: 697
    functionName: test_spinlock
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - S_INIT_LOCK
    - memcmp
    - SpinLockInit
    - s_lock
    - TAS_SPIN
    - SpinLockRelease
    - TAS
    - elog
    - memcpy
    - S_LOCK
    - S_UNLOCK
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void test_spinlock(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_atomic_flag
      Src: /src/postgres/src/test/regress/regress.c:703,1
    - Dst: test_atomic_uint32
      Src: /src/postgres/src/test/regress/regress.c:705,1
    - Dst: test_atomic_uint64
      Src: /src/postgres/src/test/regress/regress.c:707,1
    - Dst: test_spinlock
      Src: /src/postgres/src/test/regress/regress.c:713,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/regress/regress.c:715,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 700
    functionDepth: 2
    functionLinenumber: 700
    functionLinenumberEnd: 716
    functionName: test_atomic_ops
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - test_atomic_flag
    - PG_RETURN_BOOL
    - test_spinlock
    - test_atomic_uint32
    - test_atomic_uint64
    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:722,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/regress/regress.c:723,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 719
    functionDepth: 1
    functionLinenumber: 719
    functionLinenumberEnd: 724
    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: IsCatalogTextUniqueIndexOid
      Src: /src/postgres/src/test/regress/regress.c:730,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/test/regress/regress.c:730,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 731
      start: 727
    functionDepth: 1
    functionLinenumber: 727
    functionLinenumberEnd: 731
    functionName: is_catalog_text_unique_index_oid
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - 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:737,1
    - Dst: IsA
      Src: /src/postgres/src/test/regress/regress.c:740,1
    - Dst: join_selectivity
      Src: /src/postgres/src/test/regress/regress.c:750,1
    - Dst: restriction_selectivity
      Src: /src/postgres/src/test/regress/regress.c:756,1
    - Dst: IsA
      Src: /src/postgres/src/test/regress/regress.c:765,1
    - Dst: IsA
      Src: /src/postgres/src/test/regress/regress.c:775,1
    - Dst: IsA
      Src: /src/postgres/src/test/regress/regress.c:783,1
    - Dst: linitial
      Src: /src/postgres/src/test/regress/regress.c:786,1
    - Dst: lsecond
      Src: /src/postgres/src/test/regress/regress.c:787,1
    - Dst: IsA
      Src: /src/postgres/src/test/regress/regress.c:789,1
    - Dst: IsA
      Src: /src/postgres/src/test/regress/regress.c:791,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/test/regress/regress.c:794,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/test/regress/regress.c:795,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/test/regress/regress.c:803,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 734
    functionDepth: 1
    functionLinenumber: 734
    functionLinenumberEnd: 804
    functionName: test_support_func
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - restriction_selectivity
    - linitial
    - PG_GETARG_POINTER
    - DatumGetInt32
    - join_selectivity
    - IsA
    - lsecond
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum test_support_func(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/regress/regress.c:810,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 807
    functionDepth: 1
    functionLinenumber: 807
    functionLinenumberEnd: 811
    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: 7
    BranchProfiles: []
    Callsites:
    - Dst: pg_encoding_max_length
      Src: /src/postgres/src/test/regress/regress.c:827,1
    - Dst: pg_encoding_set_invalid
      Src: /src/postgres/src/test/regress/regress.c:829,1
    - Dst: strnlen
      Src: /src/postgres/src/test/regress/regress.c:830,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:832,1
    - Dst: pg_encoding_mblen
      Src: /src/postgres/src/test/regress/regress.c:835,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:837,1
    - Dst: pg_encoding_verifymbstr
      Src: /src/postgres/src/test/regress/regress.c:840,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:842,1
    - Dst: pg_encoding_verifymbstr
      Src: /src/postgres/src/test/regress/regress.c:845,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:847,1
    - Dst: memset
      Src: /src/postgres/src/test/regress/regress.c:850,1
    - Dst: pg_encoding_verifymbstr
      Src: /src/postgres/src/test/regress/regress.c:853,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:855,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/regress/regress.c:860,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 815
    functionDepth: 1
    functionLinenumber: 815
    functionLinenumberEnd: 861
    functionName: test_enc_setup
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - pg_encoding_max_length
    - pg_encoding_mblen
    - memset
    - PG_RETURN_VOID
    - pg_encoding_set_invalid
    - elog
    - pg_encoding_verifymbstr
    - strnlen
    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:881,1
    - Dst: NameStr
      Src: /src/postgres/src/test/regress/regress.c:882,1
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/test/regress/regress.c:882,1
    - Dst: pg_char_to_encoding
      Src: /src/postgres/src/test/regress/regress.c:883,1
    - Dst: NameStr
      Src: /src/postgres/src/test/regress/regress.c:884,1
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/test/regress/regress.c:884,1
    - Dst: pg_char_to_encoding
      Src: /src/postgres/src/test/regress/regress.c:885,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/regress/regress.c:886,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:901,1
    - Dst: errcode
      Src: /src/postgres/src/test/regress/regress.c:902,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:903,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:906,1
    - Dst: errcode
      Src: /src/postgres/src/test/regress/regress.c:907,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:908,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/test/regress/regress.c:912,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:913,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/test/regress/regress.c:914,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/regress/regress.c:916,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/test/regress/regress.c:917,1
    - Dst: pg_encoding_verifymbstr
      Src: /src/postgres/src/test/regress/regress.c:924,1
    - Dst: report_invalid_encoding
      Src: /src/postgres/src/test/regress/regress.c:933,1
    - Dst: Assert
      Src: /src/postgres/src/test/regress/regress.c:940,1
    - Dst: palloc
      Src: /src/postgres/src/test/regress/regress.c:942,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/test/regress/regress.c:943,1
    - Dst: memcpy
      Src: /src/postgres/src/test/regress/regress.c:944,1
    - Dst: VARDATA
      Src: /src/postgres/src/test/regress/regress.c:944,1
    - Dst: FindDefaultConversionProc
      Src: /src/postgres/src/test/regress/regress.c:949,1
    - Dst: OidIsValid
      Src: /src/postgres/src/test/regress/regress.c:950,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:951,1
    - Dst: errcode
      Src: /src/postgres/src/test/regress/regress.c:952,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:953,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/test/regress/regress.c:954,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/test/regress/regress.c:955,1
    - Dst: ereport
      Src: /src/postgres/src/test/regress/regress.c:958,1
    - Dst: errcode
      Src: /src/postgres/src/test/regress/regress.c:959,1
    - Dst: errmsg
      Src: /src/postgres/src/test/regress/regress.c:960,1
    - Dst: errdetail
      Src: /src/postgres/src/test/regress/regress.c:961,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/test/regress/regress.c:965,1
    - Dst: pg_do_encoding_conversion_buf
      Src: /src/postgres/src/test/regress/regress.c:968,1
    - Dst: strlen
      Src: /src/postgres/src/test/regress/regress.c:974,1
    - Dst: palloc
      Src: /src/postgres/src/test/regress/regress.c:979,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/test/regress/regress.c:980,1
    - Dst: memcpy
      Src: /src/postgres/src/test/regress/regress.c:981,1
    - Dst: VARDATA
      Src: /src/postgres/src/test/regress/regress.c:981,1
    - Dst: pfree
      Src: /src/postgres/src/test/regress/regress.c:983,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/test/regress/regress.c:986,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/regress/regress.c:987,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/test/regress/regress.c:988,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/test/regress/regress.c:990,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/test/regress/regress.c:990,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 878
    functionDepth: 1
    functionLinenumber: 878
    functionLinenumberEnd: 991
    functionName: test_enc_conversion
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - HeapTupleGetDatum
    - report_invalid_encoding
    - PG_GETARG_BOOL
    - pg_encoding_verifymbstr
    - errdetail
    - MemoryContextAlloc
    - strlen
    - pg_do_encoding_conversion_buf
    - pfree
    - NameStr
    - pg_encoding_to_char
    - Int32GetDatum
    - PG_GETARG_NAME
    - get_call_result_type
    - memcpy
    - errmsg
    - heap_form_tuple
    - PG_RETURN_DATUM
    - PG_GETARG_BYTEA_PP
    - VARDATA
    - elog
    - OidIsValid
    - FindDefaultConversionProc
    - VARSIZE_ANY_EXHDR
    - palloc
    - SET_VARSIZE
    - Assert
    - BlessTupleDesc
    - ereport
    - PointerGetDatum
    - VARDATA_ANY
    - pg_char_to_encoding
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum test_enc_conversion(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/test/regress/regress.c:998,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/test/regress/regress.c:999,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/regress/regress.c:1001,1
    - Dst: IsBinaryCoercible
      Src: /src/postgres/src/test/regress/regress.c:1001,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1002
      start: 995
    functionDepth: 1
    functionLinenumber: 995
    functionLinenumberEnd: 1002
    functionName: binary_coercible
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - IsBinaryCoercible
    - 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:1018,1
    - Dst: log10
      Src: /src/postgres/src/test/regress/regress.c:1018,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:1019,1
    - Dst: GetRelationPath
      Src: /src/postgres/src/test/regress/regress.c:1022,1
    - Dst: strlen
      Src: /src/postgres/src/test/regress/regress.c:1025,1
    - Dst: elog
      Src: /src/postgres/src/test/regress/regress.c:1026,1
    - Dst: strlen
      Src: /src/postgres/src/test/regress/regress.c:1027,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/regress/regress.c:1029,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1030
      start: 1008
    functionDepth: 1
    functionLinenumber: 1008
    functionLinenumberEnd: 1030
    functionName: test_relpath
    functionSourceFile: /src/postgres/src/test/regress/regress.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - ceil
    - elog
    - log10
    - GetRelationPath
    - strlen
    linkageType: ''
    returnType: Datum
    signature: Datum test_relpath(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: 162
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 162
    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: 163
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 163
    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: 164
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 164
    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: 165
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 165
    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: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 166
    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: 167
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 167
    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: 168
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 168
    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:178,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:181,1
    - Dst: setrlimit
      Src: /src/postgres/src/test/regress/pg_regress.c:187,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 189
    functionName: unlimit_core_size
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 1
    functionsReached:
    - diag
    - setrlimit
    - getrlimit
    linkageType: ''
    returnType: void
    signature: void unlimit_core_size(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/test/regress/pg_regress.c:199,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:202,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - listhead
    - str
    argTypes:
    - _stringlist**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 212
    functionName: add_stringlist_item
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 3
    functionsReached:
    - pg_malloc
    - 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:223,1
    - Dst: free
      Src: /src/postgres/src/test/regress/pg_regress.c:224,1
    - Dst: free
      Src: /src/postgres/src/test/regress/pg_regress.c:225,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - listhead
    argTypes:
    - _stringlist**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 227
    functionName: free_stringlist
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 1
    functionsReached:
    - free
    - free_stringlist
    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:239,1
    - Dst: strsep
      Src: /src/postgres/src/test/regress/pg_regress.c:241,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/test/regress/pg_regress.c:243,1
    - Dst: free
      Src: /src/postgres/src/test/regress/pg_regress.c:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - s
    - delim
    - listhead
    argTypes:
    - char*
    - char*
    - _stringlist**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 246
    functionName: split_to_stringlist
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - add_stringlist_item
    - pg_strdup
    - strsep
    - free
    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:259,1
    - Dst: emit_tap_output_v
      Src: /src/postgres/src/test/regress/pg_regress.c:260,1
    - Dst: va_end
      Src: /src/postgres/src/test/regress/pg_regress.c:261,1
    - Dst: _exit
      Src: /src/postgres/src/test/regress/pg_regress.c:264,1
    - Dst: exit
      Src: /src/postgres/src/test/regress/pg_regress.c:266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - noatexit
    - fmt
    argTypes:
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 267
    functionName: bail_out
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - _exit
    - emit_tap_output_v
    - va_end
    - exit
    - va_start
    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:290,1
    - Dst: strlen
      Src: /src/postgres/src/test/regress/pg_regress.c:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ok
    - testname
    - runtime
    - parallel
    argTypes:
    - bool
    - char*
    - double
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 300
    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:307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - testname
    - runtime
    - parallel
    argTypes:
    - char*
    - double
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 302
    functionDepth: 2
    functionLinenumber: 302
    functionLinenumberEnd: 308
    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:318,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/test/regress/pg_regress.c:320,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/regress/pg_regress.c:322,1
    - Dst: test_status_print
      Src: /src/postgres/src/test/regress/pg_regress.c:326,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - testname
    - runtime
    - parallel
    argTypes:
    - char*
    - double
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 310
    functionDepth: 2
    functionLinenumber: 310
    functionLinenumberEnd: 327
    functionName: test_status_failed
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - makeStringInfo
    - test_status_print
    - appendStringInfoChar
    - appendStringInfo
    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:335,1
    - Dst: emit_tap_output_v
      Src: /src/postgres/src/test/regress/pg_regress.c:336,1
    - Dst: va_end
      Src: /src/postgres/src/test/regress/pg_regress.c:337,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - type
    - fmt
    argTypes:
    - TAPtype
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 330
    functionDepth: 1
    functionLinenumber: 330
    functionLinenumberEnd: 338
    functionName: emit_tap_output
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 1
    functionsReached:
    - va_end
    - emit_tap_output_v
    - va_start
    linkageType: ''
    returnType: void
    signature: void emit_tap_output(TAPtype type, const char *fmt,...)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:371,1
    - Dst: fprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:373,1
    - Dst: va_copy
      Src: /src/postgres/src/test/regress/pg_regress.c:378,1
    - Dst: fprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:387,1
    - Dst: fprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:389,1
    - Dst: vfprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:392,1
    - Dst: vfprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:396,1
    - Dst: fprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:413,1
    - Dst: fprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:415,1
    - Dst: va_end
      Src: /src/postgres/src/test/regress/pg_regress.c:418,1
    - Dst: fprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:422,1
    - Dst: fprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:424,1
    - Dst: fflush
      Src: /src/postgres/src/test/regress/pg_regress.c:426,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 38
    argCount: 3
    argNames:
    - type
    - fmt
    - argp
    argTypes:
    - TAPtype
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 427
    functionName: emit_tap_output_v
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 2
    functionsReached:
    - fflush
    - va_end
    - vfprintf
    - fprintf
    - va_copy
    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:441,1
    - Dst: fflush
      Src: /src/postgres/src/test/regress/pg_regress.c:446,1
    - Dst: system
      Src: /src/postgres/src/test/regress/pg_regress.c:447,1
    - Dst: bail_noatexit
      Src: /src/postgres/src/test/regress/pg_regress.c:451,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:451,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 432
    functionDepth: 1
    functionLinenumber: 432
    functionLinenumberEnd: 456
    functionName: stop_postmaster
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 6
    functionsReached:
    - fflush
    - bail_noatexit
    - snprintf
    - _
    - system
    linkageType: ''
    returnType: void
    signature: void stop_postmaster(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/test/regress/pg_regress.c:470,1
    - Dst: unlink
      Src: /src/postgres/src/test/regress/pg_regress.c:471,1
    - Dst: unlink
      Src: /src/postgres/src/test/regress/pg_regress.c:472,1
    - Dst: rmdir
      Src: /src/postgres/src/test/regress/pg_regress.c:473,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 467
    functionDepth: 1
    functionLinenumber: 467
    functionLinenumberEnd: 474
    functionName: remove_temp
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - rmdir
    - unlink
    - Assert
    linkageType: ''
    returnType: void
    signature: void remove_temp(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: remove_temp
      Src: /src/postgres/src/test/regress/pg_regress.c:482,1
    - Dst: pqsignal
      Src: /src/postgres/src/test/regress/pg_regress.c:484,1
    - Dst: raise
      Src: /src/postgres/src/test/regress/pg_regress.c:485,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 479
    functionDepth: 2
    functionLinenumber: 479
    functionLinenumberEnd: 486
    functionName: signal_remove_temp
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - pqsignal
    - remove_temp
    - raise
    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:569,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 28
    argCount: 2
    argNames:
    - str
    - pattern
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 545
    functionDepth: 1
    functionLinenumber: 545
    functionLinenumberEnd: 604
    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:626,1
    - Dst: fopen
      Src: /src/postgres/src/test/regress/pg_regress.c:627,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:633,1
    - Dst: fgets
      Src: /src/postgres/src/test/regress/pg_regress.c:636,1
    - Dst: strlen
      Src: /src/postgres/src/test/regress/pg_regress.c:644,1
    - Dst: isspace
      Src: /src/postgres/src/test/regress/pg_regress.c:645,1
    - Dst: strchr
      Src: /src/postgres/src/test/regress/pg_regress.c:649,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:652,1
    - Dst: strchr
      Src: /src/postgres/src/test/regress/pg_regress.c:656,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:659,1
    - Dst: strchr
      Src: /src/postgres/src/test/regress/pg_regress.c:662,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:665,1
    - Dst: string_matches_pattern
      Src: /src/postgres/src/test/regress/pg_regress.c:675,1
    - Dst: pg_malloc
      Src: /src/postgres/src/test/regress/pg_regress.c:677,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:679,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:680,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:681,1
    - Dst: fclose
      Src: /src/postgres/src/test/regress/pg_regress.c:686,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 619
    functionDepth: 2
    functionLinenumber: 619
    functionLinenumberEnd: 687
    functionName: load_resultmap
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - fclose
    - bail
    - snprintf
    - pg_strdup
    - pg_malloc
    - fopen
    - isspace
    - fgets
    - string_matches_pattern
    - strlen
    - strchr
    linkageType: ''
    returnType: void
    signature: void load_resultmap(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/postgres/src/test/regress/pg_regress.c:703,1
    - Dst: strcmp
      Src: /src/postgres/src/test/regress/pg_regress.c:710,1
    - Dst: strcmp
      Src: /src/postgres/src/test/regress/pg_regress.c:710,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - testname
    - file
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 717
      start: 692
    functionDepth: 0
    functionLinenumber: 692
    functionLinenumberEnd: 717
    functionName: get_expectfile
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strrchr
    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:729,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:734,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:735,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:736,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:737,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:744,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:745,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:746,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:747,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:748,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:749,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:760,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:770,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:771,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:772,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:778,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:780,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:785,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:786,1
    - Dst: getenv
      Src: /src/postgres/src/test/regress/pg_regress.c:795,1
    - Dst: psprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:800,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:802,1
    - Dst: free
      Src: /src/postgres/src/test/regress/pg_regress.c:803,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:817,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:819,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:820,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:821,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:822,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:823,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:824,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:826,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:827,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:829,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:836,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: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:848,1
    - Dst: getenv
      Src: /src/postgres/src/test/regress/pg_regress.c:851,1
    - Dst: make_temp_sockdir
      Src: /src/postgres/src/test/regress/pg_regress.c:853,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:854,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:856,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:861,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:862,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:876,1
    - Dst: unsetenv
      Src: /src/postgres/src/test/regress/pg_regress.c:877,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:883,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:884,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:895,1
    - Dst: getenv
      Src: /src/postgres/src/test/regress/pg_regress.c:900,1
    - Dst: getenv
      Src: /src/postgres/src/test/regress/pg_regress.c:901,1
    - Dst: note
      Src: /src/postgres/src/test/regress/pg_regress.c:912,1
    - Dst: note
      Src: /src/postgres/src/test/regress/pg_regress.c:914,1
    - Dst: note
      Src: /src/postgres/src/test/regress/pg_regress.c:916,1
    - Dst: note
      Src: /src/postgres/src/test/regress/pg_regress.c:918,1
    - Dst: load_resultmap
      Src: /src/postgres/src/test/regress/pg_regress.c:921,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 96
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 922
      start: 722
    functionDepth: 3
    functionLinenumber: 722
    functionLinenumberEnd: 922
    functionName: initialize_environment
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - getenv
    - load_resultmap
    - note
    - snprintf
    - setenv
    - psprintf
    - unsetenv
    - make_temp_sockdir
    - free
    linkageType: ''
    returnType: void
    signature: void initialize_environment(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_realloc
      Src: /src/postgres/src/test/regress/pg_regress.c:934,1
    - Dst: strlen
      Src: /src/postgres/src/test/regress/pg_regress.c:934,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - raw
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 947
      start: 927
    functionDepth: 1
    functionLinenumber: 927
    functionLinenumberEnd: 947
    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:965,1
    - Dst: GetCurrentProcess
      Src: /src/postgres/src/test/regress/pg_regress.c:965,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:967,1
    - Dst: GetLastError
      Src: /src/postgres/src/test/regress/pg_regress.c:967,1
    - Dst: GetTokenInformation
      Src: /src/postgres/src/test/regress/pg_regress.c:970,1
    - Dst: GetLastError
      Src: /src/postgres/src/test/regress/pg_regress.c:970,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:972,1
    - Dst: GetLastError
      Src: /src/postgres/src/test/regress/pg_regress.c:973,1
    - Dst: pg_malloc
      Src: /src/postgres/src/test/regress/pg_regress.c:975,1
    - Dst: GetTokenInformation
      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:979,1
    - Dst: LookupAccountSid
      Src: /src/postgres/src/test/regress/pg_regress.c:982,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:985,1
    - Dst: GetLastError
      Src: /src/postgres/src/test/regress/pg_regress.c:986,1
    - Dst: free
      Src: /src/postgres/src/test/regress/pg_regress.c:989,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - acct
    - dom
    argTypes:
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 953
    functionDepth: 1
    functionLinenumber: 953
    functionLinenumberEnd: 993
    functionName: current_windows_user
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - GetCurrentProcess
    - bail
    - GetLastError
    - pg_malloc
    - GetTokenInformation
    - LookupAccountSid
    - OpenProcessToken
    - free
    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:1017,1
    - Dst: get_user_name
      Src: /src/postgres/src/test/regress/pg_regress.c:1029,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1032,1
    - Dst: WSAStartup
      Src: /src/postgres/src/test/regress/pg_regress.c:1054,1
    - Dst: MAKEWORD
      Src: /src/postgres/src/test/regress/pg_regress.c:1054,1
    - Dst: getaddrinfo
      Src: /src/postgres/src/test/regress/pg_regress.c:1055,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1065,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1072,1
    - Dst: fopen
      Src: /src/postgres/src/test/regress/pg_regress.c:1074,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1077,1
    - Dst: CW
      Src: /src/postgres/src/test/regress/pg_regress.c:1079,1
    - Dst: fputs
      Src: /src/postgres/src/test/regress/pg_regress.c:1079,1
    - Dst: CW
      Src: /src/postgres/src/test/regress/pg_regress.c:1080,1
    - Dst: fputs
      Src: /src/postgres/src/test/regress/pg_regress.c:1080,1
    - Dst: CW
      Src: /src/postgres/src/test/regress/pg_regress.c:1083,1
    - Dst: fputs
      Src: /src/postgres/src/test/regress/pg_regress.c:1083,1
    - Dst: CW
      Src: /src/postgres/src/test/regress/pg_regress.c:1085,1
    - Dst: fclose
      Src: /src/postgres/src/test/regress/pg_regress.c:1085,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1087,1
    - Dst: fopen
      Src: /src/postgres/src/test/regress/pg_regress.c:1088,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1091,1
    - Dst: CW
      Src: /src/postgres/src/test/regress/pg_regress.c:1093,1
    - Dst: fputs
      Src: /src/postgres/src/test/regress/pg_regress.c:1093,1
    - Dst: CW
      Src: /src/postgres/src/test/regress/pg_regress.c:1100,1
    - Dst: fprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1100,1
    - Dst: fmtHba
      Src: /src/postgres/src/test/regress/pg_regress.c:1101,1
    - Dst: CW
      Src: /src/postgres/src/test/regress/pg_regress.c:1103,1
    - Dst: fprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1103,1
    - Dst: fmtHba
      Src: /src/postgres/src/test/regress/pg_regress.c:1104,1
    - Dst: CW
      Src: /src/postgres/src/test/regress/pg_regress.c:1105,1
    - Dst: fclose
      Src: /src/postgres/src/test/regress/pg_regress.c:1105,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 2
    argNames:
    - pgdata
    - superuser_name
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1106
      start: 1003
    functionDepth: 2
    functionLinenumber: 1003
    functionLinenumberEnd: 1106
    functionName: config_sspi_auth
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - current_windows_user
    - MAKEWORD
    - getaddrinfo
    - fmtHba
    - fputs
    - fclose
    - bail
    - snprintf
    - fprintf
    - fopen
    - CW
    - get_user_name
    - WSAStartup
    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: 1064
      start: 1059
    functionDepth: 0
    functionLinenumber: 1059
    functionLinenumberEnd: 1064
    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:1122,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/regress/pg_regress.c:1124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1129
      start: 1119
    functionDepth: 1
    functionLinenumber: 1119
    functionLinenumberEnd: 1129
    functionName: psql_start_command
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - makeStringInfo
    - appendStringInfo
    linkageType: ''
    returnType: StringInfo
    signature: StringInfo psql_start_command(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoString
      Src: /src/postgres/src/test/regress/pg_regress.c:1138,1
    - Dst: initStringInfo
      Src: /src/postgres/src/test/regress/pg_regress.c:1141,1
    - Dst: va_start
      Src: /src/postgres/src/test/regress/pg_regress.c:1147,1
    - Dst: appendStringInfoVA
      Src: /src/postgres/src/test/regress/pg_regress.c:1148,1
    - Dst: va_end
      Src: /src/postgres/src/test/regress/pg_regress.c:1149,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/test/regress/pg_regress.c:1152,1
    - Dst: strchr
      Src: /src/postgres/src/test/regress/pg_regress.c:1158,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/test/regress/pg_regress.c:1159,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/test/regress/pg_regress.c:1160,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/test/regress/pg_regress.c:1163,1
    - Dst: pfree
      Src: /src/postgres/src/test/regress/pg_regress.c:1165,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - buf
    - query
    argTypes:
    - StringInfo
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1166
      start: 1131
    functionDepth: 1
    functionLinenumber: 1131
    functionLinenumberEnd: 1166
    functionName: psql_add_command
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - pfree
    - enlargeStringInfo
    - appendStringInfoChar
    - va_end
    - appendStringInfoString
    - appendStringInfoVA
    - initStringInfo
    - va_start
    - strchr
    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:1172,1
    - Dst: fflush
      Src: /src/postgres/src/test/regress/pg_regress.c:1177,1
    - Dst: system
      Src: /src/postgres/src/test/regress/pg_regress.c:1178,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1181,1
    - Dst: destroyStringInfo
      Src: /src/postgres/src/test/regress/pg_regress.c:1185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - buf
    - database
    argTypes:
    - StringInfo
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1186
      start: 1168
    functionDepth: 1
    functionLinenumber: 1168
    functionLinenumberEnd: 1186
    functionName: psql_end_command
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - fflush
    - destroyStringInfo
    - appendStringInfo
    - bail
    - system
    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: 1197
      start: 1191
    functionDepth: 0
    functionLinenumber: 1191
    functionLinenumberEnd: 1197
    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:1212,1
    - Dst: pg_disable_aslr
      Src: /src/postgres/src/test/regress/pg_regress.c:1215,1
    - Dst: fork
      Src: /src/postgres/src/test/regress/pg_regress.c:1218,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1221,1
    - Dst: psprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1234,1
    - Dst: execl
      Src: /src/postgres/src/test/regress/pg_regress.c:1235,1
    - Dst: bail_noatexit
      Src: /src/postgres/src/test/regress/pg_regress.c:1237,1
    - Dst: getenv
      Src: /src/postgres/src/test/regress/pg_regress.c:1247,1
    - Dst: memset
      Src: /src/postgres/src/test/regress/pg_regress.c:1251,1
    - Dst: psprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1252,1
    - Dst: CreateRestrictedProcess
      Src: /src/postgres/src/test/regress/pg_regress.c:1254,1
    - Dst: exit
      Src: /src/postgres/src/test/regress/pg_regress.c:1255,1
    - Dst: CloseHandle
      Src: /src/postgres/src/test/regress/pg_regress.c:1257,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - cmdline
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1260
      start: 1203
    functionDepth: 1
    functionLinenumber: 1203
    functionLinenumberEnd: 1260
    functionName: spawn_process
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 2
    functionsReached:
    - getenv
    - fflush
    - bail_noatexit
    - memset
    - bail
    - fork
    - exit
    - pg_disable_aslr
    - CloseHandle
    - execl
    - CreateRestrictedProcess
    - psprintf
    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:1269,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:1273,1
    - Dst: fseek
      Src: /src/postgres/src/test/regress/pg_regress.c:1276,1
    - Dst: ftell
      Src: /src/postgres/src/test/regress/pg_regress.c:1277,1
    - Dst: fclose
      Src: /src/postgres/src/test/regress/pg_regress.c:1278,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - file
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1280
      start: 1265
    functionDepth: 1
    functionLinenumber: 1265
    functionLinenumberEnd: 1280
    functionName: file_size
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 1
    functionsReached:
    - diag
    - ftell
    - fclose
    - fopen
    - fseek
    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:1290,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:1294,1
    - Dst: fgetc
      Src: /src/postgres/src/test/regress/pg_regress.c:1297,1
    - Dst: fclose
      Src: /src/postgres/src/test/regress/pg_regress.c:1302,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - file
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1304
      start: 1285
    functionDepth: 1
    functionLinenumber: 1285
    functionLinenumberEnd: 1304
    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:1309,1
    - Dst: fclose
      Src: /src/postgres/src/test/regress/pg_regress.c:1313,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - file
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1315
      start: 1306
    functionDepth: 1
    functionLinenumber: 1306
    functionLinenumberEnd: 1315
    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:1322,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/test/regress/pg_regress.c:1324,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - dir
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1327
      start: 1317
    functionDepth: 1
    functionLinenumber: 1317
    functionLinenumberEnd: 1327
    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:1333,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1334,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - dir
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1335
      start: 1330
    functionDepth: 1
    functionLinenumber: 1330
    functionLinenumberEnd: 1335
    functionName: make_directory
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - bail
    - mkdir
    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:1344,1
    - Dst: malloc
      Src: /src/postgres/src/test/regress/pg_regress.c:1348,1
    - Dst: malloc
      Src: /src/postgres/src/test/regress/pg_regress.c:1351,1
    - Dst: free
      Src: /src/postgres/src/test/regress/pg_regress.c:1353,1
    - Dst: strcpy
      Src: /src/postgres/src/test/regress/pg_regress.c:1357,1
    - Dst: strrchr
      Src: /src/postgres/src/test/regress/pg_regress.c:1358,1
    - Dst: free
      Src: /src/postgres/src/test/regress/pg_regress.c:1361,1
    - Dst: free
      Src: /src/postgres/src/test/regress/pg_regress.c:1362,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1366,1
    - Dst: free
      Src: /src/postgres/src/test/regress/pg_regress.c:1367,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - expectfile
    - i
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1369
      start: 1340
    functionDepth: 1
    functionLinenumber: 1340
    functionLinenumberEnd: 1369
    functionName: get_alternative_expectfile
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - malloc
    - strrchr
    - snprintf
    - strlen
    - free
    - strcpy
    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:1379,1
    - Dst: system
      Src: /src/postgres/src/test/regress/pg_regress.c:1380,1
    - Dst: WIFEXITED
      Src: /src/postgres/src/test/regress/pg_regress.c:1381,1
    - Dst: WEXITSTATUS
      Src: /src/postgres/src/test/regress/pg_regress.c:1381,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1383,1
    - Dst: WEXITSTATUS
      Src: /src/postgres/src/test/regress/pg_regress.c:1391,1
    - Dst: file_size
      Src: /src/postgres/src/test/regress/pg_regress.c:1391,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1393,1
    - Dst: WEXITSTATUS
      Src: /src/postgres/src/test/regress/pg_regress.c:1397,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - cmd
    - filename
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1398
      start: 1374
    functionDepth: 2
    functionLinenumber: 1374
    functionLinenumberEnd: 1398
    functionName: run_diff
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - fflush
    - WIFEXITED
    - bail
    - WEXITSTATUS
    - file_size
    - system
    linkageType: ''
    returnType: int
    signature: int run_diff(const char *cmd, const char *filename)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: get_expectfile
      Src: /src/postgres/src/test/regress/pg_regress.c:1423,1
    - Dst: strlcpy
      Src: /src/postgres/src/test/regress/pg_regress.c:1425,1
    - Dst: strrchr
      Src: /src/postgres/src/test/regress/pg_regress.c:1432,1
    - Dst: strcpy
      Src: /src/postgres/src/test/regress/pg_regress.c:1435,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1439,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1442,1
    - Dst: run_diff
      Src: /src/postgres/src/test/regress/pg_regress.c:1447,1
    - Dst: unlink
      Src: /src/postgres/src/test/regress/pg_regress.c:1449,1
    - Dst: file_line_count
      Src: /src/postgres/src/test/regress/pg_regress.c:1454,1
    - Dst: strcpy
      Src: /src/postgres/src/test/regress/pg_regress.c:1455,1
    - Dst: get_alternative_expectfile
      Src: /src/postgres/src/test/regress/pg_regress.c:1461,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1463,1
    - Dst: file_exists
      Src: /src/postgres/src/test/regress/pg_regress.c:1465,1
    - Dst: free
      Src: /src/postgres/src/test/regress/pg_regress.c:1467,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1471,1
    - Dst: run_diff
      Src: /src/postgres/src/test/regress/pg_regress.c:1475,1
    - Dst: unlink
      Src: /src/postgres/src/test/regress/pg_regress.c:1477,1
    - Dst: free
      Src: /src/postgres/src/test/regress/pg_regress.c:1478,1
    - Dst: file_line_count
      Src: /src/postgres/src/test/regress/pg_regress.c:1482,1
    - Dst: strlcpy
      Src: /src/postgres/src/test/regress/pg_regress.c:1487,1
    - Dst: free
      Src: /src/postgres/src/test/regress/pg_regress.c:1489,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1499,1
    - Dst: run_diff
      Src: /src/postgres/src/test/regress/pg_regress.c:1503,1
    - Dst: unlink
      Src: /src/postgres/src/test/regress/pg_regress.c:1506,1
    - Dst: file_line_count
      Src: /src/postgres/src/test/regress/pg_regress.c:1510,1
    - Dst: strlcpy
      Src: /src/postgres/src/test/regress/pg_regress.c:1515,1
    - Dst: fopen
      Src: /src/postgres/src/test/regress/pg_regress.c:1525,1
    - Dst: fprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1528,1
    - Dst: fclose
      Src: /src/postgres/src/test/regress/pg_regress.c:1531,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1535,1
    - Dst: run_diff
      Src: /src/postgres/src/test/regress/pg_regress.c:1538,1
    - Dst: unlink
      Src: /src/postgres/src/test/regress/pg_regress.c:1540,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 57
    argCount: 3
    argNames:
    - testname
    - resultsfile
    - default_expectfile
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1542
      start: 1406
    functionDepth: 3
    functionLinenumber: 1406
    functionLinenumberEnd: 1542
    functionName: results_differ
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - file_exists
    - strrchr
    - get_alternative_expectfile
    - fclose
    - bail
    - snprintf
    - fprintf
    - run_diff
    - fopen
    - strlcpy
    - get_expectfile
    - unlink
    - file_line_count
    - free
    - strcpy
    linkageType: ''
    returnType: bool
    signature: bool results_differ(const char *testname, const char *resultsfile,
      const char *default_expectfile)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      Src: /src/postgres/src/test/regress/pg_regress.c:1560,1
    - Dst: memcpy
      Src: /src/postgres/src/test/regress/pg_regress.c:1562,1
    - Dst: wait
      Src: /src/postgres/src/test/regress/pg_regress.c:1573,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1576,1
    - Dst: WaitForMultipleObjects
      Src: /src/postgres/src/test/regress/pg_regress.c:1581,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1584,1
    - Dst: GetLastError
      Src: /src/postgres/src/test/regress/pg_regress.c:1585,1
    - Dst: GetExitCodeProcess
      Src: /src/postgres/src/test/regress/pg_regress.c:1597,1
    - Dst: CloseHandle
      Src: /src/postgres/src/test/regress/pg_regress.c:1598,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/test/regress/pg_regress.c:1602,1
    - Dst: note_detail
      Src: /src/postgres/src/test/regress/pg_regress.c:1604,1
    - Dst: free
      Src: /src/postgres/src/test/regress/pg_regress.c:1612,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: 1614
      start: 1552
    functionDepth: 1
    functionLinenumber: 1552
    functionLinenumberEnd: 1614
    functionName: wait_for_tests
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - bail
    - wait
    - GetLastError
    - WaitForMultipleObjects
    - pg_malloc
    - INSTR_TIME_SET_CURRENT
    - note_detail
    - CloseHandle
    - memcpy
    - 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:1622,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:1623,1
    - Dst: WEXITSTATUS
      Src: /src/postgres/src/test/regress/pg_regress.c:1624,1
    - Dst: WIFSIGNALED
      Src: /src/postgres/src/test/regress/pg_regress.c:1625,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:1628,1
    - Dst: WTERMSIG
      Src: /src/postgres/src/test/regress/pg_regress.c:1629,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:1631,1
    - Dst: WTERMSIG
      Src: /src/postgres/src/test/regress/pg_regress.c:1632,1
    - Dst: pg_strsignal
      Src: /src/postgres/src/test/regress/pg_regress.c:1632,1
    - Dst: WTERMSIG
      Src: /src/postgres/src/test/regress/pg_regress.c:1632,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:1636,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - exitstatus
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1637
      start: 1619
    functionDepth: 1
    functionLinenumber: 1619
    functionLinenumberEnd: 1637
    functionName: log_child_failure
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - diag
    - WIFEXITED
    - pg_strsignal
    - WEXITSTATUS
    - WTERMSIG
    - WIFSIGNALED
    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:1659,1
    - Dst: memset
      Src: /src/postgres/src/test/regress/pg_regress.c:1660,1
    - Dst: memset
      Src: /src/postgres/src/test/regress/pg_regress.c:1661,1
    - Dst: memset
      Src: /src/postgres/src/test/regress/pg_regress.c:1662,1
    - Dst: fopen
      Src: /src/postgres/src/test/regress/pg_regress.c:1664,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1666,1
    - Dst: fgets
      Src: /src/postgres/src/test/regress/pg_regress.c:1668,1
    - Dst: strlen
      Src: /src/postgres/src/test/regress/pg_regress.c:1679,1
    - Dst: isspace
      Src: /src/postgres/src/test/regress/pg_regress.c:1680,1
    - Dst: strncmp
      Src: /src/postgres/src/test/regress/pg_regress.c:1685,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1689,1
    - Dst: isspace
      Src: /src/postgres/src/test/regress/pg_regress.c:1697,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1706,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:1711,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1729,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/test/regress/pg_regress.c:1736,1
    - Dst: wait_for_tests
      Src: /src/postgres/src/test/regress/pg_regress.c:1737,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1742,1
    - Dst: note_detail
      Src: /src/postgres/src/test/regress/pg_regress.c:1749,1
    - Dst: wait_for_tests
      Src: /src/postgres/src/test/regress/pg_regress.c:1755,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/test/regress/pg_regress.c:1761,1
    - Dst: wait_for_tests
      Src: /src/postgres/src/test/regress/pg_regress.c:1763,1
    - Dst: note_end
      Src: /src/postgres/src/test/regress/pg_regress.c:1766,1
    - Dst: note_detail
      Src: /src/postgres/src/test/regress/pg_regress.c:1770,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/test/regress/pg_regress.c:1774,1
    - Dst: wait_for_tests
      Src: /src/postgres/src/test/regress/pg_regress.c:1776,1
    - Dst: note_end
      Src: /src/postgres/src/test/regress/pg_regress.c:1777,1
    - Dst: INSTR_TIME_SUBTRACT
      Src: /src/postgres/src/test/regress/pg_regress.c:1788,1
    - Dst: results_differ
      Src: /src/postgres/src/test/regress/pg_regress.c:1806,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:1809,1
    - Dst: test_status_failed
      Src: /src/postgres/src/test/regress/pg_regress.c:1816,1
    - Dst: INSTR_TIME_GET_MILLISEC
      Src: /src/postgres/src/test/regress/pg_regress.c:1816,1
    - Dst: log_child_failure
      Src: /src/postgres/src/test/regress/pg_regress.c:1817,1
    - Dst: test_status_failed
      Src: /src/postgres/src/test/regress/pg_regress.c:1823,1
    - Dst: INSTR_TIME_GET_MILLISEC
      Src: /src/postgres/src/test/regress/pg_regress.c:1823,1
    - Dst: test_status_ok
      Src: /src/postgres/src/test/regress/pg_regress.c:1827,1
    - Dst: INSTR_TIME_GET_MILLISEC
      Src: /src/postgres/src/test/regress/pg_regress.c:1827,1
    - Dst: pg_free
      Src: /src/postgres/src/test/regress/pg_regress.c:1834,1
    - Dst: free_stringlist
      Src: /src/postgres/src/test/regress/pg_regress.c:1836,1
    - Dst: free_stringlist
      Src: /src/postgres/src/test/regress/pg_regress.c:1837,1
    - Dst: free_stringlist
      Src: /src/postgres/src/test/regress/pg_regress.c:1838,1
    - Dst: fclose
      Src: /src/postgres/src/test/regress/pg_regress.c:1842,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: 1843
      start: 1642
    functionDepth: 4
    functionLinenumber: 1642
    functionLinenumberEnd: 1843
    functionName: run_schedule
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - INSTR_TIME_SUBTRACT
    - free_stringlist
    - note_end
    - strlen
    - bail
    - fopen
    - log_child_failure
    - INSTR_TIME_SET_CURRENT
    - wait_for_tests
    - pg_free
    - fclose
    - test_status_ok
    - note_detail
    - isspace
    - INSTR_TIME_GET_MILLISEC
    - results_differ
    - fgets
    - strncmp
    - diag
    - memset
    - pg_strdup
    - test_status_failed
    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:1865,1
    - Dst: wait_for_tests
      Src: /src/postgres/src/test/regress/pg_regress.c:1866,1
    - Dst: results_differ
      Src: /src/postgres/src/test/regress/pg_regress.c:1884,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:1887,1
    - Dst: INSTR_TIME_SUBTRACT
      Src: /src/postgres/src/test/regress/pg_regress.c:1892,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: log_child_failure
      Src: /src/postgres/src/test/regress/pg_regress.c:1897,1
    - Dst: test_status_failed
      Src: /src/postgres/src/test/regress/pg_regress.c:1903,1
    - Dst: INSTR_TIME_GET_MILLISEC
      Src: /src/postgres/src/test/regress/pg_regress.c:1903,1
    - Dst: test_status_ok
      Src: /src/postgres/src/test/regress/pg_regress.c:1907,1
    - Dst: INSTR_TIME_GET_MILLISEC
      Src: /src/postgres/src/test/regress/pg_regress.c:1907,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: 1910
      start: 1848
    functionDepth: 4
    functionLinenumber: 1848
    functionLinenumberEnd: 1910
    functionName: run_single_test
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - diag
    - INSTR_TIME_GET_MILLISEC
    - test_status_ok
    - wait_for_tests
    - INSTR_TIME_SUBTRACT
    - log_child_failure
    - INSTR_TIME_SET_CURRENT
    - results_differ
    - test_status_failed
    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:1922,1
    - Dst: make_directory
      Src: /src/postgres/src/test/regress/pg_regress.c:1923,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1926,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:1927,1
    - Dst: fopen
      Src: /src/postgres/src/test/regress/pg_regress.c:1928,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1930,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1933,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:1934,1
    - Dst: fopen
      Src: /src/postgres/src/test/regress/pg_regress.c:1935,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:1937,1
    - Dst: fclose
      Src: /src/postgres/src/test/regress/pg_regress.c:1940,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:1943,1
    - Dst: directory_exists
      Src: /src/postgres/src/test/regress/pg_regress.c:1944,1
    - Dst: make_directory
      Src: /src/postgres/src/test/regress/pg_regress.c:1945,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1946
      start: 1915
    functionDepth: 2
    functionLinenumber: 1915
    functionLinenumberEnd: 1946
    functionName: open_result_files
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - fclose
    - pg_strdup
    - snprintf
    - bail
    - make_directory
    - fopen
    - directory_exists
    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:1951,1
    - Dst: psql_add_command
      Src: /src/postgres/src/test/regress/pg_regress.c:1954,1
    - Dst: psql_add_command
      Src: /src/postgres/src/test/regress/pg_regress.c:1955,1
    - Dst: psql_end_command
      Src: /src/postgres/src/test/regress/pg_regress.c:1956,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - dbname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1957
      start: 1948
    functionDepth: 2
    functionLinenumber: 1948
    functionLinenumberEnd: 1957
    functionName: drop_database_if_exists
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - psql_end_command
    - psql_add_command
    - psql_start_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:1962,1
    - Dst: psql_add_command
      Src: /src/postgres/src/test/regress/pg_regress.c:1970,1
    - Dst: psql_add_command
      Src: /src/postgres/src/test/regress/pg_regress.c:1973,1
    - Dst: psql_add_command
      Src: /src/postgres/src/test/regress/pg_regress.c:1975,1
    - Dst: psql_end_command
      Src: /src/postgres/src/test/regress/pg_regress.c:1983,1
    - Dst: psql_command
      Src: /src/postgres/src/test/regress/pg_regress.c:1990,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - dbname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1991
      start: 1959
    functionDepth: 2
    functionLinenumber: 1959
    functionLinenumberEnd: 1991
    functionName: create_database
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - psql_end_command
    - psql_add_command
    - psql_command
    - psql_start_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:1996,1
    - Dst: psql_add_command
      Src: /src/postgres/src/test/regress/pg_regress.c:1999,1
    - Dst: psql_add_command
      Src: /src/postgres/src/test/regress/pg_regress.c:2000,1
    - Dst: psql_end_command
      Src: /src/postgres/src/test/regress/pg_regress.c:2001,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - rolename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2002
      start: 1993
    functionDepth: 2
    functionLinenumber: 1993
    functionLinenumberEnd: 2002
    functionName: drop_role_if_exists
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - psql_end_command
    - psql_add_command
    - psql_start_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:2007,1
    - Dst: psql_add_command
      Src: /src/postgres/src/test/regress/pg_regress.c:2009,1
    - Dst: psql_add_command
      Src: /src/postgres/src/test/regress/pg_regress.c:2012,1
    - Dst: psql_end_command
      Src: /src/postgres/src/test/regress/pg_regress.c:2015,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - rolename
    - granted_dbs
    argTypes:
    - char*
    - _stringlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2016
      start: 2004
    functionDepth: 2
    functionLinenumber: 2004
    functionLinenumberEnd: 2016
    functionName: create_role
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 0
    functionsReached:
    - psql_end_command
    - psql_add_command
    - psql_start_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:2021,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2021,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2022,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2022,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2023,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2023,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2024,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2024,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2025,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2025,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2026,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2026,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2027,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2027,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2028,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2028,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2029,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2029,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2030,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2030,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2031,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2031,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2032,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2032,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2033,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2033,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2034,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2034,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2035,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2035,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2036,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2036,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2037,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2037,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2038,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2038,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2039,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2039,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2040,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2040,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2041,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2041,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2042,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2042,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2043,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2043,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2044,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2044,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2045,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2045,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2046,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2046,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2047,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2047,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2048,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2048,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2049,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2049,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2050,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2050,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2051,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2051,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2052,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2052,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2053,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2053,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2054,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2054,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2055,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2055,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2056,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2056,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2057,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2057,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2058,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2058,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2059,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2059,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2060,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2060,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2061,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2061,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2062,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2062,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2063,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2063,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2064,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2064,1
    - Dst: printf
      Src: /src/postgres/src/test/regress/pg_regress.c:2065,1
    - Dst: _
      Src: /src/postgres/src/test/regress/pg_regress.c:2065,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 46
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2066
      start: 2018
    functionDepth: 0
    functionLinenumber: 2018
    functionLinenumberEnd: 2066
    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:2109,1
    - Dst: get_progname
      Src: /src/postgres/src/test/regress/pg_regress.c:2110,1
    - Dst: set_pglocale_pgservice
      Src: /src/postgres/src/test/regress/pg_regress.c:2111,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/test/regress/pg_regress.c:2111,1
    - Dst: get_restricted_token
      Src: /src/postgres/src/test/regress/pg_regress.c:2113,1
    - Dst: atexit
      Src: /src/postgres/src/test/regress/pg_regress.c:2115,1
    - Dst: getenv
      Src: /src/postgres/src/test/regress/pg_regress.c:2123,1
    - Dst: ifunc
      Src: /src/postgres/src/test/regress/pg_regress.c:2135,1
    - Dst: getenv
      Src: /src/postgres/src/test/regress/pg_regress.c:2137,1
    - Dst: getenv
      Src: /src/postgres/src/test/regress/pg_regress.c:2138,1
    - Dst: getopt_long
      Src: /src/postgres/src/test/regress/pg_regress.c:2140,1
    - Dst: help
      Src: /src/postgres/src/test/regress/pg_regress.c:2145,1
    - Dst: exit
      Src: /src/postgres/src/test/regress/pg_regress.c:2146,1
    - Dst: puts
      Src: /src/postgres/src/test/regress/pg_regress.c:2148,1
    - Dst: exit
      Src: /src/postgres/src/test/regress/pg_regress.c:2149,1
    - Dst: free_stringlist
      Src: /src/postgres/src/test/regress/pg_regress.c:2156,1
    - Dst: split_to_stringlist
      Src: /src/postgres/src/test/regress/pg_regress.c:2157,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:2163,1
    - Dst: atoi
      Src: /src/postgres/src/test/regress/pg_regress.c:2166,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:2169,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:2172,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/test/regress/pg_regress.c:2175,1
    - Dst: make_absolute_path
      Src: /src/postgres/src/test/regress/pg_regress.c:2178,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:2184,1
    - Dst: atoi
      Src: /src/postgres/src/test/regress/pg_regress.c:2187,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:2191,1
    - Dst: strlen
      Src: /src/postgres/src/test/regress/pg_regress.c:2195,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:2196,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:2201,1
    - Dst: split_to_stringlist
      Src: /src/postgres/src/test/regress/pg_regress.c:2204,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/test/regress/pg_regress.c:2207,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:2213,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/test/regress/pg_regress.c:2216,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:2219,1
    - Dst: atoi
      Src: /src/postgres/src/test/regress/pg_regress.c:2222,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/regress/pg_regress.c:2225,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/test/regress/pg_regress.c:2229,1
    - Dst: exit
      Src: /src/postgres/src/test/regress/pg_regress.c:2231,1
    - Dst: add_stringlist_item
      Src: /src/postgres/src/test/regress/pg_regress.c:2240,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2250,1
    - Dst: config_sspi_auth
      Src: /src/postgres/src/test/regress/pg_regress.c:2257,1
    - Dst: exit
      Src: /src/postgres/src/test/regress/pg_regress.c:2259,1
    - Dst: make_absolute_path
      Src: /src/postgres/src/test/regress/pg_regress.c:2273,1
    - Dst: make_absolute_path
      Src: /src/postgres/src/test/regress/pg_regress.c:2274,1
    - Dst: make_absolute_path
      Src: /src/postgres/src/test/regress/pg_regress.c:2275,1
    - Dst: make_absolute_path
      Src: /src/postgres/src/test/regress/pg_regress.c:2276,1
    - Dst: open_result_files
      Src: /src/postgres/src/test/regress/pg_regress.c:2281,1
    - Dst: initialize_environment
      Src: /src/postgres/src/test/regress/pg_regress.c:2283,1
    - Dst: unlimit_core_size
      Src: /src/postgres/src/test/regress/pg_regress.c:2286,1
    - Dst: directory_exists
      Src: /src/postgres/src/test/regress/pg_regress.c:2305,1
    - Dst: rmtree
      Src: /src/postgres/src/test/regress/pg_regress.c:2307,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2309,1
    - Dst: make_directory
      Src: /src/postgres/src/test/regress/pg_regress.c:2314,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:2317,1
    - Dst: directory_exists
      Src: /src/postgres/src/test/regress/pg_regress.c:2318,1
    - Dst: make_directory
      Src: /src/postgres/src/test/regress/pg_regress.c:2319,1
    - Dst: getenv
      Src: /src/postgres/src/test/regress/pg_regress.c:2321,1
    - Dst: initStringInfo
      Src: /src/postgres/src/test/regress/pg_regress.c:2323,1
    - Dst: getenv
      Src: /src/postgres/src/test/regress/pg_regress.c:2334,1
    - Dst: note
      Src: /src/postgres/src/test/regress/pg_regress.c:2337,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/regress/pg_regress.c:2339,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/test/regress/pg_regress.c:2345,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/test/regress/pg_regress.c:2347,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/regress/pg_regress.c:2349,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/regress/pg_regress.c:2350,1
    - Dst: fflush
      Src: /src/postgres/src/test/regress/pg_regress.c:2351,1
    - Dst: system
      Src: /src/postgres/src/test/regress/pg_regress.c:2352,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2354,1
    - Dst: note
      Src: /src/postgres/src/test/regress/pg_regress.c:2370,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/regress/pg_regress.c:2372,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/regress/pg_regress.c:2376,1
    - Dst: fflush
      Src: /src/postgres/src/test/regress/pg_regress.c:2377,1
    - Dst: system
      Src: /src/postgres/src/test/regress/pg_regress.c:2378,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2380,1
    - Dst: pfree
      Src: /src/postgres/src/test/regress/pg_regress.c:2387,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:2397,1
    - Dst: fopen
      Src: /src/postgres/src/test/regress/pg_regress.c:2398,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2400,1
    - Dst: fputs
      Src: /src/postgres/src/test/regress/pg_regress.c:2402,1
    - Dst: fputs
      Src: /src/postgres/src/test/regress/pg_regress.c:2403,1
    - Dst: fputs
      Src: /src/postgres/src/test/regress/pg_regress.c:2404,1
    - Dst: fputs
      Src: /src/postgres/src/test/regress/pg_regress.c:2405,1
    - Dst: fputs
      Src: /src/postgres/src/test/regress/pg_regress.c:2406,1
    - Dst: fputs
      Src: /src/postgres/src/test/regress/pg_regress.c:2407,1
    - Dst: fputs
      Src: /src/postgres/src/test/regress/pg_regress.c:2408,1
    - Dst: fopen
      Src: /src/postgres/src/test/regress/pg_regress.c:2416,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2419,1
    - Dst: fgets
      Src: /src/postgres/src/test/regress/pg_regress.c:2422,1
    - Dst: fputs
      Src: /src/postgres/src/test/regress/pg_regress.c:2423,1
    - Dst: fclose
      Src: /src/postgres/src/test/regress/pg_regress.c:2424,1
    - Dst: fclose
      Src: /src/postgres/src/test/regress/pg_regress.c:2427,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:2436,1
    - Dst: config_sspi_auth
      Src: /src/postgres/src/test/regress/pg_regress.c:2437,1
    - Dst: sprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:2445,1
    - Dst: PQpingParams
      Src: /src/postgres/src/test/regress/pg_regress.c:2460,1
    - Dst: note
      Src: /src/postgres/src/test/regress/pg_regress.c:2466,1
    - Dst: note
      Src: /src/postgres/src/test/regress/pg_regress.c:2468,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2469,1
    - Dst: note
      Src: /src/postgres/src/test/regress/pg_regress.c:2472,1
    - Dst: sprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:2474,1
    - Dst: setenv
      Src: /src/postgres/src/test/regress/pg_regress.c:2475,1
    - Dst: snprintf
      Src: /src/postgres/src/test/regress/pg_regress.c:2484,1
    - Dst: spawn_process
      Src: /src/postgres/src/test/regress/pg_regress.c:2493,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2495,1
    - Dst: getenv
      Src: /src/postgres/src/test/regress/pg_regress.c:2504,1
    - Dst: atoi
      Src: /src/postgres/src/test/regress/pg_regress.c:2507,1
    - Dst: pg_usleep
      Src: /src/postgres/src/test/regress/pg_regress.c:2521,1
    - Dst: PQpingParams
      Src: /src/postgres/src/test/regress/pg_regress.c:2523,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2530,1
    - Dst: waitpid
      Src: /src/postgres/src/test/regress/pg_regress.c:2536,1
    - Dst: WaitForSingleObject
      Src: /src/postgres/src/test/regress/pg_regress.c:2538,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2541,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:2547,1
    - Dst: kill
      Src: /src/postgres/src/test/regress/pg_regress.c:2557,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2558,1
    - Dst: TerminateProcess
      Src: /src/postgres/src/test/regress/pg_regress.c:2560,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2561,1
    - Dst: GetLastError
      Src: /src/postgres/src/test/regress/pg_regress.c:2562,1
    - Dst: bail
      Src: /src/postgres/src/test/regress/pg_regress.c:2564,1
    - Dst: note
      Src: /src/postgres/src/test/regress/pg_regress.c:2575,1
    - Dst: ULONGPID
      Src: /src/postgres/src/test/regress/pg_regress.c:2576,1
    - Dst: drop_database_if_exists
      Src: /src/postgres/src/test/regress/pg_regress.c:2587,1
    - Dst: drop_role_if_exists
      Src: /src/postgres/src/test/regress/pg_regress.c:2589,1
    - Dst: create_database
      Src: /src/postgres/src/test/regress/pg_regress.c:2599,1
    - Dst: create_role
      Src: /src/postgres/src/test/regress/pg_regress.c:2601,1
    - Dst: run_schedule
      Src: /src/postgres/src/test/regress/pg_regress.c:2609,1
    - Dst: run_single_test
      Src: /src/postgres/src/test/regress/pg_regress.c:2614,1
    - Dst: stop_postmaster
      Src: /src/postgres/src/test/regress/pg_regress.c:2622,1
    - Dst: rmtree
      Src: /src/postgres/src/test/regress/pg_regress.c:2632,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:2633,1
    - Dst: plan
      Src: /src/postgres/src/test/regress/pg_regress.c:2640,1
    - Dst: note
      Src: /src/postgres/src/test/regress/pg_regress.c:2646,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:2648,1
    - Dst: file_size
      Src: /src/postgres/src/test/regress/pg_regress.c:2650,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:2652,1
    - Dst: diag
      Src: /src/postgres/src/test/regress/pg_regress.c:2654,1
    - Dst: unlink
      Src: /src/postgres/src/test/regress/pg_regress.c:2659,1
    - Dst: unlink
      Src: /src/postgres/src/test/regress/pg_regress.c:2660,1
    - Dst: fclose
      Src: /src/postgres/src/test/regress/pg_regress.c:2663,1
    - Dst: exit
      Src: /src/postgres/src/test/regress/pg_regress.c:2667,1
    CyclomaticComplexity: 87
    EdgeCount: 87
    ICount: 281
    argCount: 5
    argNames:
    - argc
    - argv
    - ifunc
    - startfunc
    - postfunc
    argTypes:
    - int
    - char*[]
    - init_function
    - test_start_function
    - postprocess_result_function
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2670
      start: 2068
    functionDepth: 5
    functionLinenumber: 2068
    functionLinenumberEnd: 2670
    functionName: regression_main
    functionSourceFile: /src/postgres/src/test/regress/pg_regress.c
    functionUses: 1
    functionsReached:
    - PG_TEXTDOMAIN
    - getenv
    - spawn_process
    - snprintf
    - pg_usleep
    - set_pglocale_pgservice
    - run_schedule
    - exit
    - free_stringlist
    - sprintf
    - ULONGPID
    - unlink
    - strlen
    - add_stringlist_item
    - pfree
    - config_sspi_auth
    - bail
    - puts
    - split_to_stringlist
    - pg_logging_init
    - initialize_environment
    - make_directory
    - make_absolute_path
    - fopen
    - create_role
    - help
    - drop_role_if_exists
    - waitpid
    - drop_database_if_exists
    - system
    - run_single_test
    - open_result_files
    - fflush
    - get_restricted_token
    - atoi
    - fputs
    - fclose
    - note
    - appendStringInfoString
    - create_database
    - atexit
    - setenv
    - stop_postmaster
    - pg_log_error_hint
    - plan
    - file_size
    - fgets
    - directory_exists
    - diag
    - get_progname
    - getopt_long
    - WaitForSingleObject
    - rmtree
    - appendStringInfo
    - pg_strdup
    - unlimit_core_size
    - kill
    - GetLastError
    - ifunc
    - TerminateProcess
    - PQpingParams
    - initStringInfo
    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: 2572
      start: 2571
    functionDepth: 0
    functionLinenumber: 2571
    functionLinenumberEnd: 2572
    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: 2574
      start: 2573
    functionDepth: 0
    functionLinenumber: 2573
    functionLinenumberEnd: 2574
    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_pattern
    - lengthof
    - PG_RETURN_VOID
    - test_single_value_and_filler
    - test_single_value
    - test_empty
    - test_huge_distances
    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:
    - intset_create
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - intset_memory_usage
    - MemoryContextStats
    - fprintf
    - elog
    - intset_begin_iterate
    - AllocSetContextCreate
    - GetCurrentTimestamp
    - MemoryContextSetIdentifier
    - intset_num_entries
    - intset_iterate_next
    - palloc
    - pg_prng_uint64_range
    - intset_is_member
    - strlen
    - intset_add_member
    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:
    - intset_add_member
    - elog
    - intset_begin_iterate
    - intset_iterate_next
    - intset_num_entries
    - intset_create
    - 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
      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:
    - palloc
    - check_with_filler
    - intset_memory_usage
    - elog
    - intset_begin_iterate
    - intset_iterate_next
    - intset_num_entries
    - intset_create
    - intset_add_member
    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_begin_iterate
    - intset_iterate_next
    - intset_create
    - 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:
    - UINT64CONST
    - elog
    - intset_begin_iterate
    - intset_iterate_next
    - intset_create
    - intset_is_member
    - pg_prng_uint32
    - intset_add_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:64,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 67
    functionName: validate_string_option
    functionSourceFile: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    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:76,1
    - Dst: add_int_reloption
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:78,1
    - Dst: add_real_reloption
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:85,1
    - Dst: add_bool_reloption
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:92,1
    - Dst: add_enum_reloption
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:99,1
    - Dst: add_string_reloption
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:109,1
    - Dst: add_string_reloption
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 130
    functionName: create_reloptions_table
    functionSourceFile: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c
    functionUses: 0
    functionsReached:
    - add_bool_reloption
    - add_string_reloption
    - add_reloption_kind
    - add_real_reloption
    - add_int_reloption
    - add_enum_reloption
    linkageType: ''
    returnType: void
    signature: void create_reloptions_table(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - heap
    - index
    - indexInfo
    argTypes:
    - Relation
    - Relation
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 149
    functionName: dibuild
    functionSourceFile: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c
    functionUses: 0
    functionsReached:
    - palloc
    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: 158
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 158
    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: 172
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 172
    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: 186
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 186
    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: 196
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 196
    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: 215
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 215
    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:224,1
    - Dst: lengthof
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:227,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - reloptions
    - validate
    argTypes:
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 228
    functionName: dioptions
    functionSourceFile: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c
    functionUses: 0
    functionsReached:
    - build_reloptions
    - lengthof
    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: 238
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 238
    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:249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - r
    - nkeys
    - norderbys
    argTypes:
    - Relation
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 251
    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: 261
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 261
    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: 270
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 270
    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: makeNode
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:279,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 329
    functionName: dihandler
    functionSourceFile: /src/postgres/src/test/modules/dummy_index_am/dummy_index_am.c
    functionUses: 0
    functionsReached:
    - makeNode
    - 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:334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 331
    functionDepth: 2
    functionLinenumber: 331
    functionLinenumberEnd: 335
    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: 15
    BranchProfiles: []
    Callsites:
    - Dst: pg_logging_init
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:99,1
    - Dst: calloc
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:101,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:103,1
    - Dst: getopt
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:105,1
    - Dst: strtou64
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:110,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:112,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:119,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:121,1
    - Dst: usage
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:134,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:135,1
    - Dst: makeJsonLexContextIncremental
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:138,1
    - Dst: setJsonLexContextOwnsTokens
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:139,1
    - Dst: initStringInfo
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:140,1
    - Dst: fopen
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:142,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:143,1
    - Dst: fstat
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:145,1
    - Dst: fileno
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:145,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:146,1
    - Dst: fread
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:157,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:159,1
    - Dst: ferror
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:159,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:161,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:168,1
    - Dst: pg_parse_json_incremental
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:172,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:177,1
    - Dst: json_errdetail
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:177,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:181,1
    - Dst: pg_parse_json_incremental
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:185,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:190,1
    - Dst: json_errdetail
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:190,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:195,1
    - Dst: fclose
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:201,1
    - Dst: freeJsonLexContext
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:202,1
    - Dst: free
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:203,1
    - Dst: free
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:204,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 77
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 207
    functionName: main
    functionSourceFile: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c
    functionUses: 2
    functionsReached:
    - json_errdetail
    - makeStringInfo
    - calloc
    - fstat
    - fread
    - fprintf
    - exit
    - makeJsonLexContextIncremental
    - getopt
    - pg_logging_init
    - fopen
    - fileno
    - strtou64
    - freeJsonLexContext
    - resetStringInfo
    - fclose
    - appendStringInfoString
    - ferror
    - pg_parse_json_incremental
    - usage
    - pg_fatal
    - palloc
    - printf
    - appendBinaryStringInfo
    - setJsonLexContextOwnsTokens
    - initStringInfo
    - free
    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:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 225
    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:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 236
    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:244,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:245,1
    - Dst: escape_json
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:246,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - state
    - fname
    - isnull
    argTypes:
    - void*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 251
    functionName: do_object_field_start
    functionSourceFile: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c
    functionUses: 0
    functionsReached:
    - printf
    - escape_json
    - 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:257,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - state
    - fname
    - isnull
    argTypes:
    - void*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 260
    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:267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 271
    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:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 282
    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:290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - state
    - isnull
    argTypes:
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 294
    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: 302
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 302
    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:311,1
    - Dst: escape_json
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:312,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:313,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:316,1
    - Dst: free
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:319,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - state
    - token
    - tokentype
    argTypes:
    - void*
    - char*
    - JsonTokenType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 304
    functionDepth: 1
    functionLinenumber: 304
    functionLinenumberEnd: 322
    functionName: do_scalar
    functionSourceFile: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c
    functionUses: 0
    functionsReached:
    - printf
    - escape_json
    - resetStringInfo
    - free
    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:331,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:337,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:340,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:343,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:346,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:349,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:352,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:355,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:359,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:361,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:365,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 2
    argNames:
    - buf
    - str
    argTypes:
    - StringInfo
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 366
    functionName: escape_json
    functionSourceFile: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c
    functionUses: 3
    functionsReached:
    - appendStringInfoCharMacro
    - appendStringInfoString
    - appendStringInfo
    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:371,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:372,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:373,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:374,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_json_parser/test_json_parser_incremental.c:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 368
    functionDepth: 0
    functionLinenumber: 368
    functionLinenumberEnd: 377
    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: 2
    functionsReached:
    - freeJsonLexContext
    - appendBinaryStringInfo
    - fclose
    - sscanf
    - pg_logging_init
    - fread
    - fopen
    - pg_parse_json_incremental
    - pg_parse_json
    - pg_fatal
    - exit
    - makeJsonLexContextIncremental
    - initStringInfo
    - strcmp
    - makeJsonLexContextCstringLen
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - 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:
    - consume_xids_common
    - PG_GETARG_INT64
    - ReadNextFullTransactionId
    - elog
    - PG_RETURN_FULLTRANSACTIONID
    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:
    - consume_xids_common
    - elog
    - FullTransactionIdIsNormal
    - U64FromFullTransactionId
    - PG_RETURN_FULLTRANSACTIONID
    - PG_GETARG_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:
    - consume_xids_shortcut
    - EpochFromFullTransactionId
    - FullTransactionIdFollowsOrEquals
    - GetNewTransactionId
    - CHECK_FOR_INTERRUPTS
    - XidFromFullTransactionId
    - ReadNextFullTransactionId
    - elog
    - U64FromFullTransactionId
    - GetTopTransactionId
    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:
    - XidFromFullTransactionId
    - Min
    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:
    - LWLockRelease
    - LWLockAcquire
    - XidSkip
    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:52,1
    - Dst: SlruScanDirCbDeleteAll
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ctl
    - filename
    - segpage
    - data
    argTypes:
    - SlruCtl
    - char*
    - int64
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 54
    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(SlruCtl 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:59,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:60,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:60,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:62,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:64,1
    - Dst: SimpleLruZeroPage
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:65,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:68,1
    - Dst: strncpy
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:75,1
    - Dst: SimpleLruWritePage
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:78,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:79,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 82
    functionName: test_slru_page_write
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_slru.c
    functionUses: 0
    functionsReached:
    - SimpleLruWritePage
    - Assert
    - PG_GETARG_INT64
    - PG_GETARG_TEXT_PP
    - PG_RETURN_VOID
    - SimpleLruGetBankLock
    - strncpy
    - SimpleLruZeroPage
    - LWLockRelease
    - LWLockAcquire
    - text_to_cstring
    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:87,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 89
    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:94,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:95,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:98,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:101,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:102,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:105,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:107,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 108
    functionName: test_slru_page_read
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_slru.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - SimpleLruGetBankLock
    - PG_GETARG_BOOL
    - PG_RETURN_TEXT_P
    - cstring_to_text
    - LWLockRelease
    - LWLockAcquire
    - SimpleLruReadPage
    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:113,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:116,1
    - Dst: SimpleLruReadPage_ReadOnly
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:119,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:122,1
    - Dst: LWLockHeldByMe
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:122,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:124,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:126,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 127
    functionName: test_slru_page_readonly
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_slru.c
    functionUses: 0
    functionsReached:
    - Assert
    - SimpleLruReadPage_ReadOnly
    - LWLockHeldByMe
    - PG_GETARG_INT64
    - SimpleLruGetBankLock
    - PG_RETURN_TEXT_P
    - cstring_to_text
    - LWLockRelease
    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:132,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:134,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:136,1
    - Dst: SimpleLruDoesPhysicalPageExist
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:137,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:138,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 141
    functionName: test_slru_page_exists
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_slru.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    - SimpleLruGetBankLock
    - SimpleLruDoesPhysicalPageExist
    - LWLockRelease
    - LWLockAcquire
    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:146,1
    - Dst: SlruSyncFileTag
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:152,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:154,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 158
    functionName: test_slru_page_sync
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_slru.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_VOID
    - elog
    - SlruSyncFileTag
    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:163,1
    - Dst: SlruDeleteSegment
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:167,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:169,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 173
    functionName: test_slru_page_delete
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_slru.c
    functionUses: 0
    functionsReached:
    - SlruDeleteSegment
    - PG_GETARG_INT64
    - PG_RETURN_VOID
    - elog
    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:178,1
    - Dst: SimpleLruTruncate
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:180,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 182
    functionName: test_slru_page_truncate
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_slru.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_VOID
    - SimpleLruTruncate
    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:188,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 191
    functionName: test_slru_delete_all
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_slru.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - SlruScanDirectory
    linkageType: ''
    returnType: Datum
    signature: Datum test_slru_delete_all(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prev_shmem_request_hook
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:201,1
    - Dst: RequestAddinShmemSpace
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:204,1
    - Dst: SimpleLruShmemSize
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 205
    functionName: test_slru_shmem_request
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_slru.c
    functionUses: 0
    functionsReached:
    - prev_shmem_request_hook
    - SimpleLruShmemSize
    - RequestAddinShmemSpace
    linkageType: ''
    returnType: void
    signature: void test_slru_shmem_request(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - page1
    - page2
    argTypes:
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 211
    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: 2
    BranchProfiles: []
    Callsites:
    - Dst: prev_shmem_startup_hook
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:226,1
    - Dst: MakePGDirectory
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:232,1
    - Dst: LWLockNewTrancheId
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:235,1
    - Dst: LWLockRegisterTranche
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:236,1
    - Dst: LWLockNewTrancheId
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:238,1
    - Dst: LWLockRegisterTranche
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:239,1
    - Dst: SimpleLruInit
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 246
    functionName: test_slru_shmem_startup
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_slru.c
    functionUses: 0
    functionsReached:
    - LWLockRegisterTranche
    - SimpleLruInit
    - LWLockNewTrancheId
    - MakePGDirectory
    - prev_shmem_startup_hook
    linkageType: ''
    returnType: void
    signature: void test_slru_shmem_startup(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:252,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:253,1
    - Dst: errdetail
      Src: /src/postgres/src/test/modules/test_slru/test_slru.c:254,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 262
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_slru.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errdetail
    - ereport
    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:33,1
    - Dst: MultiXactIdCreate
      Src: /src/postgres/src/test/modules/test_slru/test_multixact.c:34,1
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/test/modules/test_slru/test_multixact.c:34,1
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/test/modules/test_slru/test_multixact.c:35,1
    - Dst: PG_RETURN_TRANSACTIONID
      Src: /src/postgres/src/test/modules/test_slru/test_multixact.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 37
    functionName: test_create_multixact
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_multixact.c
    functionUses: 0
    functionsReached:
    - GetCurrentTransactionId
    - PG_RETURN_TRANSACTIONID
    - MultiXactIdSetOldestMember
    - 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:46,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/test/modules/test_slru/test_multixact.c:49,1
    - Dst: AtEOXact_MultiXact
      Src: /src/postgres/src/test/modules/test_slru/test_multixact.c:51,1
    - Dst: GetMultiXactIdMembers
      Src: /src/postgres/src/test/modules/test_slru/test_multixact.c:53,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_slru/test_multixact.c:54,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_slru/test_multixact.c:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 57
    functionName: test_read_multixact
    functionSourceFile: /src/postgres/src/test/modules/test_slru/test_multixact.c
    functionUses: 0
    functionsReached:
    - AtEOXact_MultiXact
    - GetMultiXactIdMembers
    - PG_RETURN_VOID
    - PG_GETARG_TRANSACTIONID
    - elog
    - INJECTION_POINT
    linkageType: ''
    returnType: Datum
    signature: Datum test_read_multixact(PG_FUNCTION_ARGS)
  - 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:
    - ItemPointerSet
    - ginPostingListDecode
    - ItemPointerGetOffsetNumber
    - ginCompressPostingList
    - elog
    - SizeOfGinPostingList
    - ItemPointerEquals
    - 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
    - snprintf
    - CHECK_FOR_INTERRUPTS
    - strlen
    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:
    - bloom_lacks_element
    - snprintf
    - CHECK_FOR_INTERRUPTS
    - strlen
    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:
    - nfalsepos_for_missing_strings
    - pg_prng_int32p
    - bloom_create
    - populate_with_dummy_strings
    - errmsg_internal
    - ereport
    - elog
    - bloom_free
    - bloom_prop_bits_set
    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:
    - PG_GETARG_INT64
    - PG_RETURN_VOID
    - create_and_test_bloom
    - elog
    - 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:
    - MarkGUCPrefixReserved
    - DefineCustomBoolVariable
    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:
    - errmsg
    - pfree
    - GetUserId
    - ereport
    - IsParallelWorker
    - superuser_arg
    - errcode
    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:
    - errmsg
    - errcode
    - accesstype_to_string
    - pstrdup
    - ereport
    - elog
    - audit_success
    - superuser_arg
    - audit_attempt
    - GetUserId
    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:
    - errmsg
    - errcode
    - accesstype_arg_to_string
    - accesstype_to_string
    - ereport
    - audit_success
    - superuser_arg
    - audit_attempt
    - GetUserId
    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:
    - errmsg
    - errcode
    - ereport
    - pstrdup
    - audit_failure
    - audit_success
    - superuser_arg
    - audit_attempt
    - GetUserId
    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:
    - errmsg
    - errcode
    - GetCommandTagName
    - standard_ProcessUtility
    - pstrdup
    - ereport
    - audit_success
    - superuser_arg
    - CreateCommandTag
    - audit_attempt
    - GetUserId
    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:
    - psprintf
    - OidIsValid
    - pstrdup
    linkageType: ''
    returnType: char
    signature: 'char *

      accesstype_arg_to_string(ObjectAccessType access, void *arg)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockNewTrancheId
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:32,1
    - Dst: LWLockRegisterTranche
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:33,1
    - Dst: dsa_create
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:35,1
    - Dst: dsa_allocate
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:38,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:39,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:39,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:46,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:47,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:47,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:48,1
    - Dst: dsa_free
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:53,1
    - Dst: dsa_detach
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:56,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:58,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 59
    functionName: test_dsa_basic
    functionSourceFile: /src/postgres/src/test/modules/test_dsa/test_dsa.c
    functionUses: 0
    functionsReached:
    - LWLockRegisterTranche
    - dsa_allocate
    - PG_RETURN_VOID
    - snprintf
    - elog
    - dsa_get_address
    - LWLockNewTrancheId
    - dsa_create
    - strcmp
    - dsa_detach
    - dsa_free
    linkageType: ''
    returnType: Datum
    signature: Datum test_dsa_basic(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockNewTrancheId
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:73,1
    - Dst: LWLockRegisterTranche
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:74,1
    - Dst: dsa_create
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:77,1
    - Dst: ResourceOwnerCreate
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:84,1
    - Dst: dsa_allocate
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:89,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:90,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:90,1
    - Dst: dsa_free
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:95,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:99,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:102,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:105,1
    - Dst: ResourceOwnerDelete
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:108,1
    - Dst: dsa_detach
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:110,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_dsa/test_dsa.c:112,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 113
    functionName: test_dsa_resowners
    functionSourceFile: /src/postgres/src/test/modules/test_dsa/test_dsa.c
    functionUses: 0
    functionsReached:
    - LWLockRegisterTranche
    - dsa_allocate
    - ResourceOwnerDelete
    - PG_RETURN_VOID
    - snprintf
    - ResourceOwnerRelease
    - ResourceOwnerCreate
    - dsa_get_address
    - LWLockNewTrancheId
    - dsa_create
    - dsa_detach
    - dsa_free
    linkageType: ''
    returnType: Datum
    signature: Datum test_dsa_resowners(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: prev_planner_hook
      Src: /src/postgres/src/test/modules/delay_execution/delay_execution.c:49,1
    - Dst: standard_planner
      Src: /src/postgres/src/test/modules/delay_execution/delay_execution.c:52,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/test/modules/delay_execution/delay_execution.c:58,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/test/modules/delay_execution/delay_execution.c:59,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/test/modules/delay_execution/delay_execution.c:60,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/test/modules/delay_execution/delay_execution.c:61,1
    - Dst: AcceptInvalidationMessages
      Src: /src/postgres/src/test/modules/delay_execution/delay_execution.c:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - parse
    - query_string
    - cursorOptions
    - boundParams
    argTypes:
    - Query*
    - char*
    - int
    - ParamListInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 71
    functionName: delay_execution_planner
    functionSourceFile: /src/postgres/src/test/modules/delay_execution/delay_execution.c
    functionUses: 0
    functionsReached:
    - Int64GetDatum
    - standard_planner
    - AcceptInvalidationMessages
    - prev_planner_hook
    - DirectFunctionCall1
    linkageType: ''
    returnType: PlannedStmt
    signature: "PlannedStmt *\ndelay_execution_planner(Query *parse, const char *query_string,\n\t\t\t\t\t\tint
      cursorOptions, ParamListInfo boundParams)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DefineCustomIntVariable
      Src: /src/postgres/src/test/modules/delay_execution/delay_execution.c:78,1
    - Dst: MarkGUCPrefixReserved
      Src: /src/postgres/src/test/modules/delay_execution/delay_execution.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 95
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/test/modules/delay_execution/delay_execution.c
    functionUses: 0
    functionsReached:
    - DefineCustomIntVariable
    - MarkGUCPrefixReserved
    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:32,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:63,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:63,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 64
    functionName: get_command_type
    functionSourceFile: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - cstring_to_text
    - 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:73,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:76,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:78,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:78,1
    - Dst: CreateCommandName
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 79
    functionName: get_command_tag
    functionSourceFile: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c
    functionUses: 0
    functionsReached:
    - CreateCommandName
    - PG_GETARG_POINTER
    - PG_RETURN_NULL
    - PG_RETURN_TEXT_P
    - cstring_to_text
    linkageType: ''
    returnType: Datum
    signature: Datum get_command_tag(PG_FUNCTION_ARGS)
  - BBCount: 71
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:88,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:93,1
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:95,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:98,1
    - Dst: foreach
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:100,1
    - Dst: lfirst
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:102,1
    - Dst: castNode
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:103,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:108,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:109,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:314,1
    - Dst: psprintf
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:314,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:316,1
    - Dst: OidIsValid
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:317,1
    - Dst: getObjectDescription
      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:322,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c:327,1
    CyclomaticComplexity: 71
    EdgeCount: 71
    ICount: 220
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 331
    functionName: get_altertable_subcmdinfo
    functionSourceFile: /src/postgres/src/test/modules/test_ddl_deparse/test_ddl_deparse.c
    functionUses: 0
    functionsReached:
    - tuplestore_putvalues
    - PG_GETARG_POINTER
    - memset
    - CStringGetTextDatum
    - foreach
    - castNode
    - getObjectDescription
    - elog
    - InitMaterializedSRF
    - OidIsValid
    - lfirst
    - psprintf
    linkageType: ''
    returnType: Datum
    signature: Datum get_altertable_subcmdinfo(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: BlessTupleDesc
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:233,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:235,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: PG_RETURN_DATUM
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:244,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:244,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/test/modules/test_predtest/test_predtest.c:244,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 83
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 245
    functionName: test_predtest
    functionSourceFile: /src/postgres/src/test/modules/test_predtest/test_predtest.c
    functionUses: 0
    functionsReached:
    - HeapTupleGetDatum
    - BoolGetDatum
    - SPI_execute_plan
    - list_length
    - SPI_prepare
    - text_to_cstring
    - predicate_refuted_by
    - SPI_plan_get_cached_plan
    - make_ands_implicit
    - CreateTemplateTupleDesc
    - linitial_node
    - heap_form_tuple
    - SPI_connect
    - SPI_getbinval
    - PG_RETURN_DATUM
    - TupleDescAttr
    - TupleDescInitEntry
    - elog
    - predicate_implied_by
    - lsecond_node
    - Assert
    - PG_GETARG_TEXT_PP
    - BlessTupleDesc
    - DatumGetBool
    - SPI_finish
    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:
    - palloc
    - strlcpy
    - strlen
    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:76,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:77,1
    - Dst: SPI_connect
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:78,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:79,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:79,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:80,1
    - Dst: initStringInfo
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:83,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:84,1
    - Dst: SPI_execute
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:88,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:90,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:93,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:95,1
    - Dst: SPI_getbinval
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:95,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:99,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:104,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:105,1
    - Dst: SetCurrentStatementStartTimestamp
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:115,1
    - Dst: SPI_execute
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:118,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:121,1
    - Dst: SPI_finish
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:126,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:127,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:128,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:130,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 1
    argNames:
    - table
    argTypes:
    - worktable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 131
    functionName: initialize_worker_spi
    functionSourceFile: /src/postgres/src/test/modules/worker_spi/worker_spi.c
    functionUses: 0
    functionsReached:
    - SetCurrentStatementStartTimestamp
    - resetStringInfo
    - SPI_connect
    - CommitTransactionCommand
    - appendStringInfo
    - SPI_getbinval
    - GetTransactionSnapshot
    - pgstat_report_activity
    - PushActiveSnapshot
    - SPI_execute
    - elog
    - DatumGetInt64
    - initStringInfo
    - SPI_finish
    - StartTransactionCommand
    - PopActiveSnapshot
    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:136,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:145,1
    - Dst: sprintf
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:146,1
    - Dst: pstrdup
      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: memcpy
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:152,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:154,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:156,1
    - Dst: pqsignal
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:159,1
    - Dst: pqsignal
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:160,1
    - Dst: BackgroundWorkerUnblockSignals
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:163,1
    - Dst: OidIsValid
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:166,1
    - Dst: BackgroundWorkerInitializeConnectionByOid
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:167,1
    - Dst: BackgroundWorkerInitializeConnection
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:169,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:172,1
    - Dst: initialize_worker_spi
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:174,1
    - Dst: quote_identifier
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:183,1
    - Dst: quote_identifier
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:184,1
    - Dst: initStringInfo
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:186,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:187,1
    - Dst: WaitEventExtensionNew
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:212,1
    - Dst: WaitLatch
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:220,1
    - Dst: ResetLatch
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:224,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:226,1
    - Dst: ProcessConfigFile
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:234,1
    - Dst: SetCurrentStatementStartTimestamp
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:253,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:254,1
    - Dst: SPI_connect
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:255,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:256,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:256,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:258,1
    - Dst: SPI_execute
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:261,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:264,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:272,1
    - Dst: SPI_getbinval
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:272,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:276,1
    - Dst: SPI_finish
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:284,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:285,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:286,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:288,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:289,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 54
    argCount: 1
    argNames:
    - main_arg
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 133
    functionDepth: 2
    functionLinenumber: 133
    functionLinenumberEnd: 293
    functionName: worker_spi_main
    functionSourceFile: /src/postgres/src/test/modules/worker_spi/worker_spi.c
    functionUses: 0
    functionsReached:
    - SetCurrentStatementStartTimestamp
    - initialize_worker_spi
    - CHECK_FOR_INTERRUPTS
    - BackgroundWorkerInitializeConnection
    - pstrdup
    - sprintf
    - PopActiveSnapshot
    - ResetLatch
    - GetTransactionSnapshot
    - pgstat_report_activity
    - PushActiveSnapshot
    - memcpy
    - StartTransactionCommand
    - SPI_connect
    - SPI_getbinval
    - WaitEventExtensionNew
    - DatumGetInt32
    - BackgroundWorkerInitializeConnectionByOid
    - elog
    - OidIsValid
    - BackgroundWorkerUnblockSignals
    - SPI_execute
    - palloc
    - WaitLatch
    - pgstat_report_stat
    - ProcessConfigFile
    - CommitTransactionCommand
    - appendStringInfo
    - quote_identifier
    - pqsignal
    - initStringInfo
    - SPI_finish
    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:312,1
    - Dst: DefineCustomStringVariable
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:325,1
    - Dst: DefineCustomStringVariable
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:334,1
    - Dst: DefineCustomIntVariable
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:346,1
    - Dst: MarkGUCPrefixReserved
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:359,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:362,1
    - Dst: sprintf
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:367,1
    - Dst: sprintf
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:368,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:380,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:381,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:382,1
    - Dst: RegisterBackgroundWorker
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:384,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 386
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/test/modules/worker_spi/worker_spi.c
    functionUses: 0
    functionsReached:
    - DefineCustomIntVariable
    - memset
    - Int32GetDatum
    - RegisterBackgroundWorker
    - snprintf
    - MarkGUCPrefixReserved
    - DefineCustomStringVariable
    - sprintf
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:394,1
    - Dst: PG_GETARG_OID
      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_ARRAYTYPE_P
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:403,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:408,1
    - Dst: sprintf
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:413,1
    - Dst: sprintf
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:414,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:415,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:416,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:417,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:422,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:424,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:425,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:426,1
    - Dst: array_contains_nulls
      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:429,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:430,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:431,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:433,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:433,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:434,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:438,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:440,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:442,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:445,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:446,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:447,1
    - Dst: OidIsValid
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:454,1
    - Dst: get_database_oid
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:455,1
    - Dst: OidIsValid
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:461,1
    - Dst: get_role_oid
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:462,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:465,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:467,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:469,1
    - Dst: RegisterDynamicBackgroundWorker
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:471,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:472,1
    - Dst: WaitForBackgroundWorkerStartup
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:474,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:477,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:478,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:479,1
    - Dst: errhint
      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:482,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:483,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:484,1
    - Dst: errhint
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:485,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:486,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/worker_spi/worker_spi.c:488,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 391
    functionDepth: 1
    functionLinenumber: 391
    functionLinenumberEnd: 489
    functionName: worker_spi_launch
    functionSourceFile: /src/postgres/src/test/modules/worker_spi/worker_spi.c
    functionUses: 0
    functionsReached:
    - get_database_oid
    - snprintf
    - WaitForBackgroundWorkerStartup
    - errhint
    - sprintf
    - deconstruct_array_builtin
    - Int32GetDatum
    - PG_GETARG_OID
    - memcpy
    - strcmp
    - errmsg
    - PG_RETURN_INT32
    - get_role_oid
    - OidIsValid
    - PG_GETARG_ARRAYTYPE_P
    - ARR_ELEMTYPE
    - Assert
    - RegisterDynamicBackgroundWorker
    - memset
    - ARR_NDIM
    - array_contains_nulls
    - TextDatumGetCString
    - ereport
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    - errcode
    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_RETURN_VOID
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 45
    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:56,1
    - Dst: SET_VARSIZE_SHORT
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:60,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:62,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:66,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:67,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:70,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - data
    - datalen
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 71
    functionName: formTextDatum
    functionSourceFile: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c
    functionUses: 0
    functionsReached:
    - PointerGetDatum
    - SET_VARSIZE_SHORT
    - memcpy
    - palloc
    - SET_VARSIZE
    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: 89
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 89
    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:105,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - nodeLabels
    - nNodes
    - c
    - i
    argTypes:
    - Datum*
    - int
    - int16
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 120
    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(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:126,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:127,1
    - Dst: DatumGetName
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:128,1
    - Dst: NameStr
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:129,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:130,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:140,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:142,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:143,1
    - Dst: commonPrefix
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:145,1
    - Dst: formTextDatum
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:170,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:174,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:176,1
    - Dst: formTextDatum
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:188,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:192,1
    - Dst: searchChar
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:205,1
    - Dst: formTextDatum
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:223,1
    - Dst: formTextDatum
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:227,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:246,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:247,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:255,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:259,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 61
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 260
    functionName: spgist_name_choose
    functionSourceFile: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c
    functionUses: 0
    functionsReached:
    - formTextDatum
    - NameStr
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - commonPrefix
    - DatumGetTextPP
    - DatumGetName
    - searchChar
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - palloc
    - Int16GetDatum
    - strlen
    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:268,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:269,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:291,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:292,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:293,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:298,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:299,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:303,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:304,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:307,1
    - Dst: VARDATA
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:307,1
    - Dst: VARDATA
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:308,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:311,1
    - Dst: VARDATA
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:311,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:312,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:321,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:322,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:323,1
    - Dst: DatumGetInt16
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:328,1
    - Dst: VARDATA
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:338,1
    - Dst: DatumGetName
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:350,1
    - Dst: NameStr
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:351,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:352,1
    - Dst: memcmp
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:354,1
    - Dst: VARDATA
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:354,1
    - Dst: Min
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:355,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:374,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:387,1
    - Dst: datumCopy
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:389,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:389,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:394,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 61
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 265
    functionDepth: 1
    functionLinenumber: 265
    functionLinenumberEnd: 395
    functionName: spgist_name_inner_consistent
    functionSourceFile: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c
    functionUses: 0
    functionsReached:
    - datumCopy
    - strlen
    - Min
    - NameStr
    - memcmp
    - DatumGetInt16
    - memcpy
    - DatumGetPointer
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - VARDATA
    - DatumGetName
    - elog
    - VARSIZE_ANY_EXHDR
    - palloc
    - SET_VARSIZE
    - Assert
    - DatumGetTextPP
    - PointerGetDatum
    - VARDATA_ANY
    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:401,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:402,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:414,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:417,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:418,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:420,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:421,1
    - Dst: palloc0
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:424,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:425,1
    - Dst: Assert
      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: memcpy
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:429,1
    - Dst: VARDATA
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:429,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:430,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:435,1
    - Dst: VARDATA
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:435,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:436,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:437,1
    - Dst: VARDATA_ANY
      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: PointerGetDatum
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:440,1
    - Dst: DatumGetName
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:447,1
    - Dst: NameStr
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:448,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:449,1
    - Dst: memcmp
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:453,1
    - Dst: Min
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:453,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:481,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:491,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 398
    functionDepth: 1
    functionLinenumber: 398
    functionLinenumberEnd: 492
    functionName: spgist_name_leaf_consistent
    functionSourceFile: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c
    functionUses: 0
    functionsReached:
    - Min
    - Assert
    - NameStr
    - PG_GETARG_POINTER
    - memcmp
    - PG_RETURN_BOOL
    - DatumGetTextPP
    - palloc0
    - VARDATA
    - VARDATA_ANY
    - PointerGetDatum
    - DatumGetName
    - elog
    - VARSIZE_ANY_EXHDR
    - memcpy
    - DatumGetPointer
    - strlen
    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:498,1
    - Dst: NameStr
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:499,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:501,1
    - Dst: formTextDatum
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:501,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c:501,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 495
    functionDepth: 1
    functionLinenumber: 495
    functionLinenumberEnd: 502
    functionName: spgist_name_compress
    functionSourceFile: /src/postgres/src/test/modules/spgist_name_ops/spgist_name_ops.c
    functionUses: 0
    functionsReached:
    - formTextDatum
    - NameStr
    - PG_RETURN_DATUM
    - PG_GETARG_NAME
    - strlen
    linkageType: ''
    returnType: Datum
    signature: Datum spgist_name_compress(PG_FUNCTION_ARGS)
  - 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
      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:
    - strcmp
    - makeString
    - construct_array_builtin
    - make_parsestate
    - list_make2
    - makeNode
    - makeSimpleA_Expr
    - transformWhereClause
    - palloc0
    - pstrdup
    - list_make1
    - assign_expr_collations
    - copyObject
    - addRangeTableEntryForRelation
    - RelationGetRelationName
    - addNSItemToQuery
    - ObjectIdGetDatum
    - makeFuncCall
    linkageType: ''
    returnType: List
    signature: 'List *

      test_rls_hooks_permissive(CmdType cmdtype, Relation relation)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      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:
    - strcmp
    - makeString
    - construct_array_builtin
    - make_parsestate
    - list_make2
    - makeNode
    - makeSimpleA_Expr
    - transformWhereClause
    - palloc0
    - pstrdup
    - list_make1
    - assign_expr_collations
    - copyObject
    - addRangeTableEntryForRelation
    - RelationGetRelationName
    - addNSItemToQuery
    - ObjectIdGetDatum
    - makeFuncCall
    linkageType: ''
    returnType: List
    signature: 'List *

      test_rls_hooks_restrictive(CmdType cmdtype, Relation relation)'
  - 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: 23
    functionsReached:
    - PQfinish
    - exit
    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: 421
    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:
    - Assert
    - fflush
    - va_end
    - vfprintf
    - fprintf
    - exit
    - va_start
    - strlen
    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: 3
    argNames:
    - (
    - conn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 94
    functionName: confirm_query_canceled
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: confirm_query_canceled(conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:99,1
    - Dst: pg_fatal_impl
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:101,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:102,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:103,1
    - Dst: pg_fatal_impl
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:104,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:105,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:105,1
    - Dst: pg_fatal_impl
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:106,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:107,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:108,1
    - Dst: PQisBusy
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:110,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:111,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - line
    - conn
    argTypes:
    - int
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 94
    functionDepth: 2
    functionLinenumber: 94
    functionLinenumberEnd: 112
    functionName: confirm_query_canceled_impl
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - PQerrorMessage
    - pg_fatal_impl
    - PQresultStatus
    - PQisBusy
    - PQresultErrorField
    - PQgetResult
    - PQconsumeInput
    - PQclear
    - strcmp
    linkageType: ''
    returnType: void
    signature: void confirm_query_canceled_impl(int line, PGconn *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:125,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:127,1
    - Dst: PQexecParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:138,1
    - Dst: PQexecParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:143,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:148,1
    - Dst: pg_fatal_impl
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:149,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:149,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:150,1
    - Dst: pg_fatal_impl
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:151,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:151,1
    - Dst: PQnfields
      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: PQnfields
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:153,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:154,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:155,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:157,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:160,1
    - Dst: pg_usleep
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:163,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:166,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: 167
      start: 119
    functionDepth: 2
    functionLinenumber: 119
    functionLinenumberEnd: 167
    functionName: wait_for_connection_state
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - PQerrorMessage
    - PQntuples
    - PQresultStatus
    - pg_fatal_impl
    - PQnfields
    - pg_usleep
    - PQexecParams
    - PQgetvalue
    - PQclear
    - strcmp
    - psprintf
    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: 171
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 171
    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:182,1
    - Dst: PQbackendPID
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:182,1
    - Dst: getenv
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:184,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:188,1
    - Dst: pg_fatal_impl
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:190,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:190,1
    - Dst: wait_for_connection_state
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:196,1
    - Dst: PQbackendPID
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:196,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - line
    - conn
    - monitorConn
    argTypes:
    - int
    - PGconn*
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 171
    functionDepth: 3
    functionLinenumber: 171
    functionLinenumberEnd: 197
    functionName: send_cancellable_query_impl
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - getenv
    - PQsendQueryParams
    - PQerrorMessage
    - PQbackendPID
    - pg_fatal_impl
    - wait_for_connection_state
    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:206,1
    - Dst: pg_malloc
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:216,1
    - Dst: pg_malloc
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:217,1
    - Dst: PQconnectdbParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:231,1
    - Dst: PQstatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:233,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:234,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:235,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 238
    functionName: copy_connection
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - PQconnectdbParams
    - PQerrorMessage
    - PQconninfo
    - pg_malloc
    - pg_fatal
    - 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:251,1
    - Dst: PQsetnonblocking
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:253,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:254,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:254,1
    - Dst: copy_connection
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:260,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:261,1
    - Dst: PQstatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:261,1
    - Dst: send_cancellable_query
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:264,1
    - Dst: PQgetCancel
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:265,1
    - Dst: PQcancel
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:266,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:267,1
    - Dst: confirm_query_canceled
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:268,1
    - Dst: send_cancellable_query
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:271,1
    - Dst: PQcancel
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:272,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:273,1
    - Dst: confirm_query_canceled
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:274,1
    - Dst: PQfreeCancel
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:276,1
    - Dst: send_cancellable_query
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:279,1
    - Dst: PQrequestCancel
      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:281,1
    - Dst: confirm_query_canceled
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:282,1
    - Dst: send_cancellable_query
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:285,1
    - Dst: PQcancelCreate
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:286,1
    - Dst: PQcancelBlocking
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:287,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:288,1
    - Dst: PQcancelErrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:288,1
    - Dst: confirm_query_canceled
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:289,1
    - Dst: PQcancelFinish
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:290,1
    - Dst: send_cancellable_query
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:293,1
    - Dst: PQcancelCreate
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:294,1
    - Dst: PQcancelStart
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:295,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:296,1
    - Dst: PQcancelErrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:296,1
    - Dst: PQcancelPoll
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:302,1
    - Dst: PQcancelSocket
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:303,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:308,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:309,1
    - Dst: pg_debug
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:313,1
    - Dst: FD_SET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:314,1
    - Dst: pg_debug
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:317,1
    - Dst: FD_SET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:318,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:321,1
    - Dst: PQcancelErrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:321,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:325,1
    - Dst: PQcancelErrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:325,1
    - Dst: select
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:332,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:336,1
    - Dst: PQcancelStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:341,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:342,1
    - Dst: PQcancelErrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:342,1
    - Dst: confirm_query_canceled
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:343,1
    - Dst: PQcancelReset
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:349,1
    - Dst: send_cancellable_query
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:351,1
    - Dst: PQcancelStart
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:352,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:353,1
    - Dst: PQcancelErrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:353,1
    - Dst: PQcancelPoll
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:359,1
    - Dst: PQcancelSocket
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:360,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:365,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:366,1
    - Dst: pg_debug
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:370,1
    - Dst: FD_SET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:371,1
    - Dst: pg_debug
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:374,1
    - Dst: FD_SET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:375,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:378,1
    - Dst: PQcancelErrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:378,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:382,1
    - Dst: PQcancelErrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:382,1
    - Dst: select
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:389,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:393,1
    - Dst: PQcancelStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:398,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:399,1
    - Dst: PQcancelErrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:399,1
    - Dst: confirm_query_canceled
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:400,1
    - Dst: PQcancelFinish
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:402,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:404,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 102
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 243
    functionDepth: 2
    functionLinenumber: 243
    functionLinenumberEnd: 405
    functionName: test_cancel
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - PQcancelReset
    - fprintf
    - PQfreeCancel
    - PQcancelStatus
    - PQrequestCancel
    - PQstatus
    - FD_ZERO
    - PQcancelCreate
    - send_cancellable_query
    - PQerrorMessage
    - PQcancelErrorMessage
    - PQsetnonblocking
    - PQcancelFinish
    - select
    - pg_fatal
    - PQcancelSocket
    - PQcancelPoll
    - PQcancel
    - Assert
    - confirm_query_canceled
    - PQcancelBlocking
    - PQgetCancel
    - FD_SET
    - pg_debug
    - copy_connection
    - PQcancelStart
    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:412,1
    - Dst: PQisnonblocking
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:414,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:415,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:417,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:418,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:420,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:421,1
    - Dst: PQexec
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:424,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:425,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:426,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:427,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:427,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:429,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:430,1
    - Dst: PQsendQuery
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:433,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:434,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:435,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:435,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:437,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:438,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:441,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:442,1
    - Dst: PQisBusy
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:444,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:445,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:448,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:449,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:451,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:452,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:455,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:456,1
    - Dst: PQexec
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:459,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:460,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:461,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:462,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:464,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 31
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 407
    functionDepth: 1
    functionLinenumber: 407
    functionLinenumberEnd: 465
    functionName: test_disallowed_in_pipeline
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - strcmp
    - PQexec
    - PQerrorMessage
    - PQpipelineStatus
    - PQresultStatus
    - PQenterPipelineMode
    - PQisBusy
    - fprintf
    - pg_fatal
    - PQsendQuery
    - PQisnonblocking
    - PQexitPipelineMode
    linkageType: ''
    returnType: void
    signature: void test_disallowed_in_pipeline(PGconn *conn)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:474,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:480,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:481,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:484,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:486,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:486,1
    - Dst: PQpipelineSync
      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:489,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:489,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:492,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:494,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:494,1
    - Dst: PQsendPipelineSync
      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: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:498,1
    - Dst: PQsendQueryParams
      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:503,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:503,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:505,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:506,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:506,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:512,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: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:517,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:518,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:519,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:519,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:520,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:523,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:524,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:526,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:527,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:529,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:531,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:532,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:534,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:535,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:536,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:536,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:536,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:537,1
    - Dst: PQgetResult
      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:543,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:544,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:546,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:547,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:548,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:548,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:549,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:552,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:553,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:555,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:556,1
    - Dst: PQgetResult
      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:560,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:561,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:563,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:564,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:565,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:565,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:565,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:566,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:570,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:572,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:573,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:575,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:576,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:577,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:577,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:579,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:581,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:582,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:582,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:584,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:586,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:587,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:589,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:590,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:591,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:591,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:594,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:595,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:598,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:599,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:600,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:602,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:603,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:605,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 70
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 467
    functionDepth: 1
    functionLinenumber: 467
    functionLinenumberEnd: 606
    functionName: test_multi_pipelines
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - PQsendPipelineSync
    - PQsendQueryParams
    - PQerrorMessage
    - PQpipelineSync
    - PQpipelineStatus
    - PQresultStatus
    - PQenterPipelineMode
    - PQresStatus
    - fprintf
    - PQgetResult
    - pg_fatal
    - PQclear
    - PQexitPipelineMode
    linkageType: ''
    returnType: void
    signature: void test_multi_pipelines(PGconn *conn)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: PQsocket
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:617,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:619,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:622,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:624,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:625,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:631,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:633,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:633,1
    - Dst: PQflush
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:634,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:639,1
    - Dst: FD_SET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:640,1
    - Dst: select
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:643,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:645,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:646,1
    - Dst: FD_ISSET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:648,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:648,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:649,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:649,1
    - Dst: PQsendFlushRequest
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:653,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:654,1
    - Dst: PQflush
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:655,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:662,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:666,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:669,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:674,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:676,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:677,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:677,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:678,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:689,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:689,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:689,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:692,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 41
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 693
      start: 612
    functionDepth: 1
    functionLinenumber: 612
    functionLinenumberEnd: 693
    functionName: test_nosync
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - PQsendQueryParams
    - PQerrorMessage
    - FD_ISSET
    - PQresultStatus
    - PQenterPipelineMode
    - PQsocket
    - PQresStatus
    - fprintf
    - PQconsumeInput
    - PQgetResult
    - select
    - pg_fatal
    - FD_SET
    - FD_ZERO
    - PQclear
    - exit_nicely
    - PQflush
    - PQsendFlushRequest
    linkageType: ''
    returnType: void
    signature: void test_nosync(PGconn *conn)
  - BBCount: 56
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:714,1
    - Dst: PQexec
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:716,1
    - Dst: PQresultStatus
      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:718,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:718,1
    - Dst: PQexec
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:720,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:721,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:722,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:722,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:729,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:730,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:730,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:733,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:735,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:735,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:737,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:740,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:740,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:743,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:745,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:745,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:747,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:748,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:748,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:751,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:753,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:754,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:756,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:757,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:757,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:766,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:768,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:768,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:769,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:770,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:771,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:771,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:772,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:773,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:776,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:777,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:778,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:778,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:781,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:783,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:783,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:784,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:785,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:786,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:786,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:787,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:790,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:791,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:792,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:792,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:801,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:802,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:805,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:807,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:807,1
    - Dst: PQresultStatus
      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: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:810,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:810,1
    - Dst: PQclear
      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:814,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:815,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:815,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:815,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:817,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:818,1
    - Dst: PQpipelineStatus
      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:822,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:830,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:832,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:832,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:833,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:834,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:836,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:836,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:837,1
    - Dst: PQpipelineStatus
      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:840,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:843,1
    - Dst: pg_fatal
      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: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:849,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:849,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:850,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:851,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:852,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:852,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:853,1
    - Dst: PQgetResult
      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: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:857,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:857,1
    - Dst: PQgetResult
      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:861,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:861,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:862,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:863,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:865,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:867,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:868,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:869,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:869,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:870,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:873,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:874,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:874,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:875,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:876,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:876,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:878,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:880,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:883,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:883,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:884,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:885,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:886,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:886,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:890,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:890,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:890,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:895,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:896,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:898,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:899,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:900,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:901,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:901,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:902,1
    - Dst: PQsendQueryParams
      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:907,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:907,1
    - Dst: PQpipelineSync
      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: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:909,1
    - Dst: PQsetSingleRowMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:910,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:913,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:915,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:918,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:918,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:922,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:922,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:923,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:924,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:925,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:926,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:930,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:930,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:930,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:932,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:935,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:937,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:939,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:940,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:940,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:941,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:942,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:943,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:943,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:944,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:947,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:948,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:951,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:952,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:953,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:955,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:956,1
    - Dst: PQexec
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:973,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:975,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:976,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:977,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:977,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:977,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:978,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:979,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:979,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:980,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:982,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:984,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:985,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:988,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:990,1
    CyclomaticComplexity: 59
    EdgeCount: 59
    ICount: 156
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 704
    functionDepth: 1
    functionLinenumber: 704
    functionLinenumberEnd: 991
    functionName: test_pipeline_abort
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - PQpipelineStatus
    - PQresultStatus
    - PQgetvalue
    - fprintf
    - PQgetResult
    - PQpipelineSync
    - PQenterPipelineMode
    - PQclear
    - strcmp
    - PQexec
    - PQerrorMessage
    - PQsetSingleRowMode
    - PQntuples
    - PQresultErrorMessage
    - PQresStatus
    - PQresultErrorField
    - pg_fatal
    - PQexitPipelineMode
    - printf
    - PQsendQueryParams
    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:1026,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1027,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1027,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1051,1
    - Dst: pg_debug
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1055,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1056,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1058,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1058,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1061,1
    - Dst: pg_debug
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1062,1
    - Dst: PQsendPrepare
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1063,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1064,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1064,1
    - Dst: PQsetnonblocking
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1075,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1076,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1076,1
    - Dst: PQsocket
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1084,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1089,1
    - Dst: FD_SET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1090,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1091,1
    - Dst: FD_SET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1092,1
    - Dst: select
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1094,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1096,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1097,1
    - Dst: FD_ISSET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1104,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1106,1
    - Dst: PQisBusy
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1109,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1120,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1162,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1165,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1166,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1168,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1168,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1169,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1169,1
    - Dst: strncmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1171,1
    - Dst: PQcmdStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1171,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1171,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1172,1
    - Dst: PQcmdStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1173,1
    - Dst: pg_debug
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1175,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1177,1
    - Dst: FD_ISSET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1182,1
    - Dst: PQflush
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1184,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1188,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1190,1
    - Dst: PQsendQueryPrepared
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1192,1
    - Dst: pg_debug
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1195,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1207,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1208,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1213,1
    - Dst: pg_debug
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1216,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1221,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1222,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1227,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1229,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1234,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1235,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1242,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1243,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1244,1
    - Dst: PQsetnonblocking
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1246,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1247,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1247,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1249,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 136
    argCount: 2
    argNames:
    - conn
    - n_rows
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1250
      start: 1006
    functionDepth: 1
    functionLinenumber: 1006
    functionLinenumberEnd: 1250
    functionName: test_pipelined_insert
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - FD_ISSET
    - PQresultStatus
    - snprintf
    - fprintf
    - PQgetResult
    - PQisBusy
    - strlen
    - PQpipelineSync
    - PQenterPipelineMode
    - PQsendQueryPrepared
    - FD_ZERO
    - PQclear
    - PQerrorMessage
    - PQsetnonblocking
    - PQresStatus
    - select
    - pg_fatal
    - strncmp
    - PQexitPipelineMode
    - Assert
    - PQsendQueryParams
    - PQsocket
    - PQcmdStatus
    - PQsendPrepare
    - PQconsumeInput
    - FD_SET
    - pg_debug
    - exit_nicely
    - PQflush
    linkageType: ''
    returnType: void
    signature: void test_pipelined_insert(PGconn *conn, int n_rows)
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1260,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1262,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1263,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1263,1
    - Dst: PQsendPrepare
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1264,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: PQsendDescribePrepared
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1272,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1273,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1273,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1274,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1275,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1275,1
    - Dst: PQgetResult
      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: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1280,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1281,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1281,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1281,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1282,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1283,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1285,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1287,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1289,1
    - Dst: PQresultStatus
      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: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1291,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1291,1
    - Dst: PQnfields
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1292,1
    - Dst: lengthof
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1292,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1293,1
    - Dst: lengthof
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1294,1
    - Dst: PQnfields
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1294,1
    - Dst: PQnfields
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1295,1
    - Dst: PQftype
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1297,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1299,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1302,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1303,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1305,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1307,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1308,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1309,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1309,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1309,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1311,1
    - Dst: PQsendClosePrepared
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1312,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1313,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1313,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1314,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1315,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1315,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1317,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1319,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1320,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1321,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1321,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1321,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1322,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1323,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1325,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1326,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1327,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1328,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1328,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1328,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1330,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1331,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1331,1
    - Dst: PQdescribePrepared
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1334,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1335,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1336,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1336,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1336,1
    - Dst: PQclosePrepared
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1342,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1343,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1344,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1344,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1344,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1346,1
    - Dst: PQexec
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1347,1
    - Dst: PQexec
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1348,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1349,1
    - Dst: PQsendDescribePortal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1350,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1351,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1351,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1352,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1353,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1353,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1354,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1356,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1357,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1358,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1358,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1358,1
    - Dst: PQftype
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1360,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1362,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1364,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1365,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1367,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1368,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1369,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1370,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1370,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1370,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1372,1
    - Dst: PQsendClosePortal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1373,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1374,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1374,1
    - Dst: PQpipelineSync
      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:1376,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1376,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1378,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1380,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1381,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1382,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1382,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1382,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1383,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1384,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1386,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1387,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1388,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1389,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1389,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1389,1
    - Dst: PQexitPipelineMode
      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:1392,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1392,1
    - Dst: PQdescribePortal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1395,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1396,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1397,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1397,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1397,1
    - Dst: PQclosePortal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1403,1
    - Dst: PQresultStatus
      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: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1405,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1405,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1407,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 116
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1408
      start: 1252
    functionDepth: 1
    functionLinenumber: 1252
    functionLinenumberEnd: 1408
    functionName: test_prepared
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - lengthof
    - PQresultStatus
    - fprintf
    - PQgetResult
    - PQftype
    - PQdescribePortal
    - PQpipelineSync
    - PQsendClosePortal
    - PQdescribePrepared
    - PQnfields
    - PQenterPipelineMode
    - PQclosePortal
    - PQclear
    - PQsendClosePrepared
    - PQerrorMessage
    - PQexec
    - PQresStatus
    - PQsendDescribePrepared
    - PQsendDescribePortal
    - pg_fatal
    - PQexitPipelineMode
    - PQclosePrepared
    - PQsendPrepare
    linkageType: ''
    returnType: void
    signature: void test_prepared(PGconn *conn)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PQconninfo
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1419,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1434,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1435,1
    - Dst: PQconnectdbParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1457,1
    - Dst: PQstatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1459,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1460,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1461,1
    - Dst: PQfullProtocolVersion
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1463,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1465,1
    - Dst: PQfinish
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1467,1
    - Dst: PQconnectdbParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1474,1
    - Dst: PQstatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1476,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1477,1
    - Dst: PQfinish
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1479,1
    - Dst: PQconnectdbParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1485,1
    - Dst: PQstatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1487,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1488,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1489,1
    - Dst: PQfullProtocolVersion
      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:1493,1
    - Dst: PQfinish
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1495,1
    - Dst: PQconnectdbParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1501,1
    - Dst: PQstatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1503,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1504,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1505,1
    - Dst: PQfullProtocolVersion
      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:1509,1
    - Dst: PQfinish
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1511,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 49
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1512
      start: 1413
    functionDepth: 1
    functionLinenumber: 1413
    functionLinenumberEnd: 1512
    functionName: test_protocol_version
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - PQconnectdbParams
    - PQerrorMessage
    - PQfinish
    - PQfullProtocolVersion
    - PQconninfo
    - pg_fatal
    - PQstatus
    - pg_malloc0
    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:1521,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - arg
    - message
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1522
      start: 1515
    functionDepth: 0
    functionLinenumber: 1515
    functionLinenumberEnd: 1522
    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: 18
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1531,1
    - Dst: PQsetNoticeProcessor
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1533,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1536,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: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1538,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1539,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1539,1
    - Dst: PQsendFlushRequest
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1540,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1541,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:1544,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1545,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1546,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1547,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1547,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1548,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1549,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1551,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1552,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1553,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1553,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1554,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1555,1
    - Dst: strncmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1556,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1556,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1557,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1558,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1559,1
    - Dst: PQsendFlushRequest
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1560,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1561,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1562,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1563,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1564,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1564,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1565,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1566,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1568,1
    - Dst: PQexitPipelineMode
      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: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1570,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1573,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1574,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1577,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1578,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1578,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1579,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1580,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1580,1
    - Dst: PQsendFlushRequest
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1581,1
    - Dst: PQgetResult
      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:1584,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1585,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1586,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1586,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1586,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1587,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1588,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1588,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1589,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 49
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1590
      start: 1525
    functionDepth: 1
    functionLinenumber: 1525
    functionLinenumberEnd: 1590
    functionName: test_pipeline_idle
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - PQsendQueryParams
    - PQerrorMessage
    - PQresultStatus
    - PQenterPipelineMode
    - PQresStatus
    - fprintf
    - PQexitPipelineMode
    - PQgetResult
    - pg_fatal
    - PQclear
    - PQsetNoticeProcessor
    - strncmp
    - strlen
    - PQsendFlushRequest
    linkageType: ''
    returnType: void
    signature: void test_pipeline_idle(PGconn *conn)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1599,1
    - Dst: PQisnonblocking
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1609,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1610,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1612,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1613,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1613,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1615,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1618,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1618,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1620,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1621,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1623,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1624,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1624,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1626,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1628,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1629,1
    - Dst: PQresultStatus
      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:1632,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1633,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1633,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1635,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1638,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1639,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1645,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1646,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1648,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1650,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1651,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1653,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1654,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1655,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1655,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1655,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1657,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1660,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1661,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1662,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1662,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1665,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1666,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1669,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1670,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1671,1
    - Dst: PQpipelineStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1673,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1674,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1676,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 39
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1677
      start: 1592
    functionDepth: 1
    functionLinenumber: 1592
    functionLinenumberEnd: 1677
    functionName: test_simple_pipeline
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - PQsendQueryParams
    - PQerrorMessage
    - PQpipelineSync
    - PQpipelineStatus
    - PQresultStatus
    - PQenterPipelineMode
    - PQresStatus
    - fprintf
    - PQgetResult
    - pg_fatal
    - PQclear
    - PQisnonblocking
    - PQexitPipelineMode
    linkageType: ''
    returnType: void
    signature: void test_simple_pipeline(PGconn *conn)
  - BBCount: 44
    BranchProfiles: []
    Callsites:
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1686,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1687,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1688,1
    - Dst: psprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1695,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1697,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1705,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1706,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1707,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1709,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1710,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1710,1
    - Dst: PQsetSingleRowMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1721,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1722,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1727,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1729,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1733,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1735,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1737,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1745,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1746,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1748,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1749,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1753,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1753,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1757,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1757,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1761,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1762,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1764,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1770,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1770,1
    - Dst: PQgetvalue
      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:1774,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1776,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1779,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1787,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1789,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1790,1
    - Dst: PQsendFlushRequest
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1791,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1792,1
    - Dst: PQsetSingleRowMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1793,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1794,1
    - Dst: PQgetResult
      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:1797,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1798,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1799,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1800,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1800,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1801,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1803,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1804,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1805,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1806,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1806,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1807,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1808,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1810,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1812,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1813,1
    - Dst: PQsendFlushRequest
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1814,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1815,1
    - Dst: PQgetResult
      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:1818,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1819,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1820,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1821,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1821,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1822,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1823,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1829,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:1832,1
    - Dst: PQsendFlushRequest
      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: PQsetChunkedRowsMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1835,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1836,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1837,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1839,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1840,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1841,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1842,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1842,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1843,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1844,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1845,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1845,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1846,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1848,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1849,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1850,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1851,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1851,1
    - Dst: PQntuples
      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:1853,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1853,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1854,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1856,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1857,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1858,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1859,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1859,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1860,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1861,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1861,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1862,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1863,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1865,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1866,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1866,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1868,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 117
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1869
      start: 1679
    functionDepth: 1
    functionLinenumber: 1679
    functionLinenumberEnd: 1869
    functionName: test_singlerowmode
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - pfree
    - PQsendQueryParams
    - PQerrorMessage
    - PQpipelineSync
    - PQsetSingleRowMode
    - PQresultStatus
    - PQntuples
    - PQenterPipelineMode
    - PQresStatus
    - fprintf
    - PQgetvalue
    - PQsetChunkedRowsMode
    - PQgetResult
    - PQexitPipelineMode
    - pg_fatal
    - PQclear
    - psprintf
    - PQsendFlushRequest
    linkageType: ''
    returnType: void
    signature: void test_singlerowmode(PGconn *conn)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: PQexec
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1882,1
    - Dst: PQresultStatus
      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: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1886,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1887,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1889,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1890,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1891,1
    - Dst: PQsendPrepare
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1892,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1893,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1894,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1896,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1899,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1900,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1901,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1904,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1905,1
    - Dst: PQsendQueryPrepared
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1911,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1912,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1913,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1916,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1919,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1920,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1921,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1922,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1922,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1929,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1932,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1933,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1934,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1935,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1935,1
    - Dst: PQsendQueryPrepared
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1942,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1943,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1944,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1950,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1953,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1954,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1956,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1957,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1957,1
    - Dst: PQpipelineSync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1959,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1960,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1960,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1968,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1971,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1973,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1977,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1978,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1978,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1980,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1982,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1982,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1985,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1988,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1989,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1998,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:1999,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2000,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2000,1
    - Dst: PQexitPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2002,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2003,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2003,1
    - Dst: PQexec
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2006,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2007,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2008,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2008,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2009,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2010,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2011,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2011,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2012,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2013,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2015,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 75
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2016
      start: 1875
    functionDepth: 1
    functionLinenumber: 1875
    functionLinenumberEnd: 2016
    functionName: test_transaction
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - printf
    - PQsendQueryParams
    - PQexec
    - PQerrorMessage
    - PQpipelineSync
    - PQresultStatus
    - PQntuples
    - PQenterPipelineMode
    - PQresStatus
    - PQgetvalue
    - fprintf
    - PQsendPrepare
    - PQsendQueryPrepared
    - PQgetResult
    - pg_fatal
    - PQclear
    - strcmp
    - PQexitPipelineMode
    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:2026,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2044,1
    - Dst: PQsetnonblocking
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2046,1
    - Dst: sprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2050,1
    - Dst: PQexec
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2052,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2054,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2055,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2055,1
    - Dst: PQexec
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2057,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2058,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2059,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2059,1
    - Dst: PQprepare
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2061,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2064,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2065,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2065,1
    - Dst: PQenterPipelineMode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2067,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2068,1
    - Dst: PQisBusy
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2079,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2090,1
    - Dst: process_result
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2091,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2093,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2106,1
    - Dst: FD_SET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2107,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2109,1
    - Dst: FD_SET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2110,1
    - Dst: select
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2112,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2116,1
    - Dst: FD_ISSET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2119,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2119,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2120,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2120,1
    - Dst: FD_ISSET
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2126,1
    - Dst: sprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2138,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2139,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2144,1
    - Dst: sprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2145,1
    - Dst: PQsendQueryPrepared
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2148,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2149,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2149,1
    - Dst: PQsendFlushRequest
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2155,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2156,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2158,1
    - Dst: PQflush
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2159,1
    - Dst: PQflush
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2164,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2166,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2166,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2171,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2180,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2182,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 85
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2183
      start: 2023
    functionDepth: 1
    functionLinenumber: 2023
    functionLinenumberEnd: 2183
    functionName: test_uniqviol
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 0
    functionsReached:
    - FD_ISSET
    - PQresultStatus
    - fprintf
    - PQgetResult
    - PQisBusy
    - sprintf
    - PQsendFlushRequest
    - PQenterPipelineMode
    - PQsendQueryPrepared
    - FD_ZERO
    - PQexec
    - PQerrorMessage
    - PQsetnonblocking
    - select
    - pg_fatal
    - process_result
    - PQprepare
    - PQsocket
    - PQconsumeInput
    - FD_SET
    - PQflush
    linkageType: ''
    returnType: void
    signature: void test_uniqviol(PGconn *conn)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2198,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2200,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2204,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2204,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2205,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2207,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2209,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2210,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2210,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2214,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2214,1
    - Dst: PQclear
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2215,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2217,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2219,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2220,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2220,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2224,1
    - Dst: PQgetResult
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2225,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2227,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2228,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2228,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2232,1
    - Dst: PQresStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2232,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2232,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 4
    argNames:
    - conn
    - res
    - results
    - numsent
    argTypes:
    - PGconn*
    - PGresult*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2236
      start: 2191
    functionDepth: 1
    functionLinenumber: 2191
    functionLinenumberEnd: 2236
    functionName: process_result
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 1
    functionsReached:
    - PQerrorMessage
    - PQresultStatus
    - PQresStatus
    - fprintf
    - PQgetvalue
    - PQgetResult
    - pg_fatal
    - PQclear
    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:2242,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2243,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2244,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2245,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2246,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2247,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2249
      start: 2239
    functionDepth: 0
    functionLinenumber: 2239
    functionLinenumberEnd: 2249
    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:2254,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2255,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2256,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2257,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2258,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2259,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2260,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2261,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2262,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2263,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2264,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2265,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2267
      start: 2251
    functionDepth: 0
    functionLinenumber: 2251
    functionLinenumberEnd: 2267
    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: 26
    BranchProfiles: []
    Callsites:
    - Dst: getopt
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2280,1
    - Dst: strtol
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2286,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2289,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2291,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2295,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2302,1
    - Dst: usage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2307,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2308,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2311,1
    - Dst: print_test_list
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2313,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2314,1
    - Dst: pg_strdup
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2319,1
    - Dst: PQconnectdb
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2324,1
    - Dst: PQstatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2325,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2327,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2328,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2329,1
    - Dst: PQexec
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2332,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2333,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2334,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2334,1
    - Dst: PQexec
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2335,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2336,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2337,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2337,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2342,1
    - Dst: fopen
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2345,1
    - Dst: pg_fatal
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2347,1
    - Dst: setvbuf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2350,1
    - Dst: PQtrace
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2352,1
    - Dst: PQsetTraceFlags
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2353,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2357,1
    - Dst: test_cancel
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2358,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2359,1
    - Dst: test_disallowed_in_pipeline
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2360,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2361,1
    - Dst: test_multi_pipelines
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2362,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2363,1
    - Dst: test_nosync
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2364,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2365,1
    - Dst: test_pipeline_abort
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2366,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2367,1
    - Dst: test_pipeline_idle
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2368,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2369,1
    - Dst: test_pipelined_insert
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2370,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2371,1
    - Dst: test_prepared
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2372,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2373,1
    - Dst: test_protocol_version
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2374,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2375,1
    - Dst: test_simple_pipeline
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2376,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2377,1
    - Dst: test_singlerowmode
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2378,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2379,1
    - Dst: test_transaction
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2380,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2381,1
    - Dst: test_uniqviol
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2382,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2385,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2386,1
    - Dst: PQfinish
      Src: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c:2390,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 83
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2392
      start: 2269
    functionDepth: 3
    functionLinenumber: 2269
    functionLinenumberEnd: 2392
    functionName: main
    functionSourceFile: /src/postgres/src/test/modules/libpq_pipeline/libpq_pipeline.c
    functionUses: 2
    functionsReached:
    - PQresultStatus
    - test_pipeline_abort
    - test_simple_pipeline
    - fprintf
    - strtol
    - exit
    - test_pipeline_idle
    - getopt
    - test_singlerowmode
    - test_transaction
    - setvbuf
    - test_uniqviol
    - test_nosync
    - fopen
    - PQconnectdb
    - PQstatus
    - strcmp
    - PQerrorMessage
    - PQexec
    - test_cancel
    - PQfinish
    - print_test_list
    - PQsetTraceFlags
    - usage
    - pg_fatal
    - test_multi_pipelines
    - test_pipelined_insert
    - test_prepared
    - PQtrace
    - pg_strdup
    - test_protocol_version
    - test_disallowed_in_pipeline
    - exit_nicely
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      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:
    - PG_GETARG_POINTER
    - PG_RETURN_POINTER
    - PG_GETARG_INT32
    - palloc0
    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:
    - PG_GETARG_POINTER
    - pfree
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum testprs_end(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      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:
    - palloc
    - PG_RETURN_POINTER
    - pstrdup
    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:58,1
    - Dst: DefineCustomBoolVariable
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:66,1
    - Dst: MarkGUCPrefixReserved
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 76
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/test/modules/oauth_validator/validator.c
    functionUses: 0
    functionsReached:
    - DefineCustomStringVariable
    - MarkGUCPrefixReserved
    - DefineCustomBoolVariable
    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: 85
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 85
    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: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - ValidatorModuleState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 103
    functionName: validator_startup
    functionSourceFile: /src/postgres/src/test/modules/oauth_validator/validator.c
    functionUses: 0
    functionsReached:
    - elog
    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:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - ValidatorModuleState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 115
    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: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:128,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:131,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:132,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:138,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/oauth_validator/validator.c:140,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - state
    - token
    - role
    - res
    argTypes:
    - ValidatorModuleState*
    - char*
    - char*
    - ValidatorModuleResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 143
    functionName: validate_token
    functionSourceFile: /src/postgres/src/test/modules/oauth_validator/validator.c
    functionUses: 0
    functionsReached:
    - elog
    - pstrdup
    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:43,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:44,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
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - argv
    argTypes:
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 47
    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: 13
    BranchProfiles: []
    Callsites:
    - Dst: getopt_long
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:78,1
    - Dst: usage
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:83,1
    - Dst: usage
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:115,1
    - Dst: usage
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:122,1
    - Dst: PQsetAuthDataHook
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:129,1
    - Dst: PQconnectStart
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:142,1
    - Dst: PQconnectPoll
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:146,1
    - Dst: PQconnectdb
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:152,1
    - Dst: PQstatus
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:155,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:157,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:158,1
    - Dst: PQfinish
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:159,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:163,1
    - Dst: PQfinish
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:164,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 54
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 166
    functionName: main
    functionSourceFile: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c
    functionUses: 2
    functionsReached:
    - getopt_long
    - printf
    - PQsetAuthDataHook
    - PQerrorMessage
    - PQfinish
    - PQconnectStart
    - fprintf
    - usage
    - PQconnectPoll
    - PQconnectdb
    - PQstatus
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:189,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:198,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:202,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:204,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:213,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:217,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:219,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 3
    argNames:
    - type
    - conn
    - data
    argTypes:
    - PGauthData
    - PGconn*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 226
    functionName: handle_auth_data
    functionSourceFile: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c
    functionUses: 0
    functionsReached:
    - 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:246,1
    - Dst: MAKEWORD
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:246,1
    - Dst: perror
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:249,1
    - Dst: socket
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:253,1
    - Dst: perror
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:256,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - conn
    - req
    - altsock
    argTypes:
    - PGconn*
    - PGoauthBearerRequest*
    - pgsocket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 268
    functionName: async_cb
    functionSourceFile: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c
    functionUses: 0
    functionsReached:
    - MAKEWORD
    - WSAStartup
    - socket
    - perror
    linkageType: ''
    returnType: PostgresPollingStatusType
    signature: PostgresPollingStatusType async_cb(PGconn *conn, PGoauthBearerRequest
      *req, pgsocket *altsock)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:273,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:278,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:283,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:290,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c:291,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - conn
    - req
    - altsock
    argTypes:
    - PGconn*
    - PGoauthBearerRequest*
    - pgsocket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 293
    functionName: misbehave_cb
    functionSourceFile: /src/postgres/src/test/modules/oauth_validator/oauth_hook_client.c
    functionUses: 0
    functionsReached:
    - strcmp
    - exit
    - 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:
    - palloc
    - pg_prng_uint64_range
    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:
    - pfree
    - elog
    - GetPermutation
    - rbt_insert
    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:
    - rbt_begin_iterate
    - create_int_rbtree
    - elog
    - rbt_populate
    - rbt_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:
    - rbt_begin_iterate
    - create_int_rbtree
    - elog
    - rbt_populate
    - rbt_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:
    - rbt_populate
    - elog
    - 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:
    - rbt_find_great
    - create_int_rbtree
    - rbt_find_less
    - elog
    - pg_prng_uint64_range
    - rbt_populate
    - 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:
    - rbt_leftmost
    - rbt_populate
    - elog
    - 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:
    - pfree
    - create_int_rbtree
    - palloc0
    - elog
    - rbt_find
    - rbt_leftmost
    - palloc
    - pg_prng_uint64_range
    - rbt_populate
    - 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:
    - testfind
    - testrightleft
    - testleftmost
    - PG_RETURN_VOID
    - testfindltgt
    - testleftright
    - testdelete
    - elog
    - 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:
    - ItemPointerGetOffsetNumber
    - ItemPointerGetBlockNumber
    linkageType: ''
    returnType: int
    signature: int itemptr_cmp(const void *left, const void *right)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:87,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:94,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:100,1
    - Dst: LWLockNewTrancheId
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:106,1
    - Dst: LWLockRegisterTranche
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:107,1
    - Dst: TidStoreCreateShared
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:109,1
    - Dst: dsa_pin_mapping
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:115,1
    - Dst: TidStoreGetDSA
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:115,1
    - Dst: TidStoreCreateLocal
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:119,1
    - Dst: TidStoreMemoryUsage
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:121,1
    - Dst: palloc0
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:125,1
    - Dst: palloc0
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:126,1
    - Dst: palloc0
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:127,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:129,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:131,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 132
    functionName: test_create
    functionSourceFile: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c
    functionUses: 0
    functionsReached:
    - TidStoreMemoryUsage
    - Assert
    - LWLockRegisterTranche
    - MemoryContextSwitchTo
    - dsa_pin_mapping
    - PG_RETURN_VOID
    - palloc0
    - TidStoreGetDSA
    - TidStoreCreateLocal
    - PG_GETARG_BOOL
    - LWLockNewTrancheId
    - TidStoreCreateShared
    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:137,1
    - Dst: array_contains_nulls
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:137,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:138,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:139,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:140,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:142,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:143,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:144,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:145,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - ta
    argTypes:
    - ArrayType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 146
    functionName: sanity_check_array
    functionSourceFile: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ARR_NDIM
    - array_contains_nulls
    - ereport
    - ARR_HASNULL
    - errcode
    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:152,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 153
    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:161,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - blkno
    argTypes:
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 164
    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:171,1
    - Dst: PG_GETARG_ARRAYTYPE_P_COPY
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:172,1
    - Dst: check_tidstore_available
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:176,1
    - Dst: sanity_check_array
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:177,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:179,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:179,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:179,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:180,1
    - Dst: TidStoreLockExclusive
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:183,1
    - Dst: TidStoreSetBlockOffsets
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:184,1
    - Dst: TidStoreUnlock
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:185,1
    - Dst: purge_from_verification_array
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:188,1
    - Dst: repalloc
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:200,1
    - Dst: repalloc
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:201,1
    - Dst: repalloc
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:202,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:206,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:212,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 168
    functionDepth: 2
    functionLinenumber: 168
    functionLinenumberEnd: 213
    functionName: do_set_block_offsets
    functionSourceFile: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c
    functionUses: 0
    functionsReached:
    - TidStoreUnlock
    - check_tidstore_available
    - ARR_DIMS
    - ItemPointerSet
    - ARR_DATA_PTR
    - PG_GETARG_ARRAYTYPE_P_COPY
    - PG_GETARG_INT64
    - ARR_NDIM
    - purge_from_verification_array
    - TidStoreLockExclusive
    - ArrayGetNItems
    - PG_RETURN_INT64
    - repalloc
    - TidStoreSetBlockOffsets
    - sanity_check_array
    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:227,1
    - Dst: TidStoreIsMember
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:231,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:232,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:233,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:234,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:243,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:252,1
    - Dst: TidStoreLockShare
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:254,1
    - Dst: TidStoreIsMember
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:255,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:256,1
    - Dst: TidStoreUnlock
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:257,1
    - Dst: TidStoreLockShare
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:265,1
    - Dst: TidStoreBeginIterate
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:266,1
    - Dst: TidStoreIterateNext
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:267,1
    - Dst: TidStoreGetBlockOffsets
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:272,1
    - Dst: lengthof
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:272,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:273,1
    - Dst: lengthof
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:273,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:275,1
    - Dst: TidStoreEndIterate
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:278,1
    - Dst: TidStoreUnlock
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:279,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:287,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:289,1
    - Dst: qsort
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:291,1
    - Dst: qsort
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:292,1
    - Dst: itemptr_cmp
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:295,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:296,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:297,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:298,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:299,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:300,1
    - Dst: itemptr_cmp
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:301,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:302,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:303,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:304,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:305,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:306,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:309,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 218
    functionDepth: 2
    functionLinenumber: 218
    functionLinenumberEnd: 310
    functionName: check_set_block_offsets
    functionSourceFile: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c
    functionUses: 0
    functionsReached:
    - TidStoreUnlock
    - check_tidstore_available
    - ItemPointerSet
    - Assert
    - lengthof
    - qsort
    - TidStoreIterateNext
    - ItemPointerGetOffsetNumber
    - PG_RETURN_VOID
    - TidStoreGetBlockOffsets
    - TidStoreLockShare
    - TidStoreEndIterate
    - elog
    - TidStoreIsMember
    - ItemPointerGetBlockNumber
    - TidStoreBeginIterate
    - itemptr_cmp
    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:322,1
    - Dst: TidStoreMemoryUsage
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:324,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 317
    functionDepth: 2
    functionLinenumber: 317
    functionLinenumberEnd: 327
    functionName: test_is_full
    functionSourceFile: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c
    functionUses: 0
    functionsReached:
    - TidStoreMemoryUsage
    - check_tidstore_available
    - 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:333,1
    - Dst: TidStoreDestroy
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:335,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:338,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:339,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:340,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 330
    functionDepth: 2
    functionLinenumber: 330
    functionLinenumberEnd: 343
    functionName: test_destroy
    functionSourceFile: /src/postgres/src/test/modules/test_tidstore/test_tidstore.c
    functionUses: 0
    functionsReached:
    - pfree
    - check_tidstore_available
    - TidStoreDestroy
    - PG_RETURN_VOID
    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:
    - DefineCustomStringVariable
    - MarkGUCPrefixReserved
    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:
    - errmsg
    - ereport
    - SSL_CTX_set_default_passwd_cb
    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:
    - (
    - 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:
    - memset
    - LEN_NO_TAIL
    - elog
    - LEN_WITH_TAIL
    - pg_lfind8
    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:
    - pg_lfind8_le
    - memset
    - LEN_NO_TAIL
    - elog
    - 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:
    - test_lfind8_le_internal
    - PG_RETURN_VOID
    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:
    - pg_lfind32
    - elog
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum test_lfind32(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockInitialize
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:51,1
    - Dst: LWLockNewTrancheId
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 53
    functionName: init_tdr_dsm
    functionSourceFile: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c
    functionUses: 0
    functionsReached:
    - LWLockInitialize
    - LWLockNewTrancheId
    linkageType: ''
    returnType: void
    signature: void init_tdr_dsm(void *ptr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GetNamedDSMSegment
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:60,1
    - Dst: LWLockRegisterTranche
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:64,1
    - Dst: GetNamedDSA
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:67,1
    - Dst: GetNamedDSHash
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:70,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 71
    functionName: tdr_attach_shmem
    functionSourceFile: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c
    functionUses: 0
    functionsReached:
    - LWLockRegisterTranche
    - GetNamedDSMSegment
    - GetNamedDSA
    - GetNamedDSHash
    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:77,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:79,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:80,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:81,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 74
    functionDepth: 2
    functionLinenumber: 74
    functionLinenumberEnd: 84
    functionName: set_val_in_shmem
    functionSourceFile: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - tdr_attach_shmem
    - PG_GETARG_INT32
    - LWLockRelease
    - LWLockAcquire
    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:92,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:94,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:96,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 99
    functionName: get_val_in_shmem
    functionSourceFile: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - tdr_attach_shmem
    - LWLockRelease
    - LWLockAcquire
    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:106,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:106,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:107,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:107,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:110,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:111,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:112,1
    - Dst: tdr_attach_shmem
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:114,1
    - Dst: dshash_find_or_insert
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:116,1
    - Dst: dsa_free
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:118,1
    - Dst: dsa_allocate
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:120,1
    - Dst: strlen
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:120,1
    - Dst: strcpy
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:121,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:121,1
    - Dst: dshash_release_lock
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:123,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:125,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 126
    functionName: set_val_in_hash
    functionSourceFile: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c
    functionUses: 0
    functionsReached:
    - errmsg
    - dshash_find_or_insert
    - dsa_allocate
    - TextDatumGetCString
    - tdr_attach_shmem
    - PG_RETURN_VOID
    - ereport
    - dsa_get_address
    - dshash_release_lock
    - PG_GETARG_DATUM
    - dsa_free
    - strlen
    - 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:133,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:133,1
    - Dst: tdr_attach_shmem
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:136,1
    - Dst: dshash_find
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:138,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:140,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:142,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:142,1
    - Dst: dshash_release_lock
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:144,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 129
    functionDepth: 2
    functionLinenumber: 129
    functionLinenumberEnd: 147
    functionName: get_val_in_hash
    functionSourceFile: /src/postgres/src/test/modules/test_dsm_registry/test_dsm_registry.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - tdr_attach_shmem
    - TextDatumGetCString
    - PG_RETURN_NULL
    - dsa_get_address
    - dshash_release_lock
    - PG_RETURN_TEXT_P
    - dshash_find
    - cstring_to_text
    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:48,1
    - Dst: CALLED_AS_TRIGGER
      Src: /src/postgres/src/test/modules/plsample/plsample.c:54,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/plsample/plsample.c:61,1
    - Dst: plsample_trigger_handler
      Src: /src/postgres/src/test/modules/plsample/plsample.c:61,1
    - Dst: CALLED_AS_EVENT_TRIGGER
      Src: /src/postgres/src/test/modules/plsample/plsample.c:63,1
    - Dst: plsample_func_handler
      Src: /src/postgres/src/test/modules/plsample/plsample.c:76,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/test/modules/plsample/plsample.c:79,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/test/modules/plsample/plsample.c:82,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 85
    functionName: plsample_call_handler
    functionSourceFile: /src/postgres/src/test/modules/plsample/plsample.c
    functionUses: 0
    functionsReached:
    - CALLED_AS_TRIGGER
    - plsample_trigger_handler
    - PG_END_TRY
    - PG_TRY
    - CALLED_AS_EVENT_TRIGGER
    - PointerGetDatum
    - plsample_func_handler
    - PG_FINALLY
    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:115,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/test/modules/plsample/plsample.c:116,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/test/modules/plsample/plsample.c:117,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/plsample/plsample.c:118,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/test/modules/plsample/plsample.c:125,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/plsample/plsample.c:126,1
    - Dst: NameStr
      Src: /src/postgres/src/test/modules/plsample/plsample.c:126,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/test/modules/plsample/plsample.c:127,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/plsample/plsample.c:129,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/test/modules/plsample/plsample.c:131,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/test/modules/plsample/plsample.c:131,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:132,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:133,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/test/modules/plsample/plsample.c:140,1
    - Dst: palloc0
      Src: /src/postgres/src/test/modules/plsample/plsample.c:144,1
    - Dst: get_func_arg_info
      Src: /src/postgres/src/test/modules/plsample/plsample.c:145,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/test/modules/plsample/plsample.c:156,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/test/modules/plsample/plsample.c:156,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/test/modules/plsample/plsample.c:157,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/plsample/plsample.c:158,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/test/modules/plsample/plsample.c:160,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/test/modules/plsample/plsample.c:161,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/test/modules/plsample/plsample.c:162,1
    - Dst: OutputFunctionCall
      Src: /src/postgres/src/test/modules/plsample/plsample.c:164,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:165,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:166,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/test/modules/plsample/plsample.c:172,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/modules/plsample/plsample.c:183,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/test/modules/plsample/plsample.c:185,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/test/modules/plsample/plsample.c:186,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/test/modules/plsample/plsample.c:187,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/plsample/plsample.c:188,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/test/modules/plsample/plsample.c:189,1
    - Dst: getTypeIOParam
      Src: /src/postgres/src/test/modules/plsample/plsample.c:190,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/test/modules/plsample/plsample.c:192,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/test/modules/plsample/plsample.c:193,1
    - Dst: InputFunctionCall
      Src: /src/postgres/src/test/modules/plsample/plsample.c:195,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/test/modules/plsample/plsample.c:196,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 197
    functionName: plsample_func_handler
    functionSourceFile: /src/postgres/src/test/modules/plsample/plsample.c
    functionUses: 1
    functionsReached:
    - HeapTupleIsValid
    - pstrdup
    - SysCacheGetAttr
    - DirectFunctionCall1
    - NameStr
    - ReleaseSysCache
    - DatumGetCString
    - InputFunctionCall
    - GETSTRUCT
    - OutputFunctionCall
    - fmgr_info_cxt
    - errmsg
    - PG_RETURN_DATUM
    - elog
    - ObjectIdGetDatum
    - ereport
    - palloc0
    - SearchSysCache1
    - PG_RETURN_NULL
    - getTypeIOParam
    - AllocSetContextCreate
    - get_func_arg_info
    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:219,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/plsample/plsample.c:220,1
    - Dst: SPI_connect
      Src: /src/postgres/src/test/modules/plsample/plsample.c:223,1
    - Dst: SPI_register_trigger_data
      Src: /src/postgres/src/test/modules/plsample/plsample.c:225,1
    - Dst: Assert
      Src: /src/postgres/src/test/modules/plsample/plsample.c:226,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/test/modules/plsample/plsample.c:229,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/test/modules/plsample/plsample.c:230,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/test/modules/plsample/plsample.c:231,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/plsample/plsample.c:232,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/test/modules/plsample/plsample.c:241,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/plsample/plsample.c:242,1
    - Dst: NameStr
      Src: /src/postgres/src/test/modules/plsample/plsample.c:242,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/test/modules/plsample/plsample.c:243,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/plsample/plsample.c:245,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/test/modules/plsample/plsample.c:247,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/test/modules/plsample/plsample.c:247,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:248,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:249,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/test/modules/plsample/plsample.c:256,1
    - Dst: PG_TRY
      Src: /src/postgres/src/test/modules/plsample/plsample.c:282,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:284,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:285,1
    - Dst: SPI_getrelname
      Src: /src/postgres/src/test/modules/plsample/plsample.c:286,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:287,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:287,1
    - Dst: SPI_getnspname
      Src: /src/postgres/src/test/modules/plsample/plsample.c:289,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:290,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:290,1
    - Dst: TRIGGER_FIRED_BY_INSERT
      Src: /src/postgres/src/test/modules/plsample/plsample.c:294,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:296,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:296,1
    - Dst: TRIGGER_FIRED_BY_DELETE
      Src: /src/postgres/src/test/modules/plsample/plsample.c:299,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:301,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:301,1
    - Dst: TRIGGER_FIRED_BY_UPDATE
      Src: /src/postgres/src/test/modules/plsample/plsample.c:304,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:306,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:306,1
    - Dst: TRIGGER_FIRED_BY_TRUNCATE
      Src: /src/postgres/src/test/modules/plsample/plsample.c:309,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:311,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:311,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/plsample/plsample.c:315,1
    - Dst: TRIGGER_FIRED_BEFORE
      Src: /src/postgres/src/test/modules/plsample/plsample.c:317,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:318,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:318,1
    - Dst: TRIGGER_FIRED_AFTER
      Src: /src/postgres/src/test/modules/plsample/plsample.c:319,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:320,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:320,1
    - Dst: TRIGGER_FIRED_INSTEAD
      Src: /src/postgres/src/test/modules/plsample/plsample.c:321,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:322,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:322,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/plsample/plsample.c:324,1
    - Dst: TRIGGER_FIRED_FOR_ROW
      Src: /src/postgres/src/test/modules/plsample/plsample.c:326,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:327,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:327,1
    - Dst: TRIGGER_FIRED_FOR_STATEMENT
      Src: /src/postgres/src/test/modules/plsample/plsample.c:328,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:329,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:329,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/plsample/plsample.c:331,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/plsample/plsample.c:338,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/plsample/plsample.c:339,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/test/modules/plsample/plsample.c:342,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/test/modules/plsample/plsample.c:345,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/test/modules/plsample/plsample.c:347,1
    - Dst: SPI_finish
      Src: /src/postgres/src/test/modules/plsample/plsample.c:349,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/plsample/plsample.c:350,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 62
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 353
    functionName: plsample_trigger_handler
    functionSourceFile: /src/postgres/src/test/modules/plsample/plsample.c
    functionUses: 1
    functionsReached:
    - HeapTupleIsValid
    - pstrdup
    - TRIGGER_FIRED_BY_UPDATE
    - SysCacheGetAttr
    - DirectFunctionCall1
    - TRIGGER_FIRED_BY_TRUNCATE
    - CALLED_AS_TRIGGER
    - SPI_register_trigger_data
    - NameStr
    - PG_RE_THROW
    - ReleaseSysCache
    - DatumGetCString
    - TRIGGER_FIRED_BEFORE
    - TRIGGER_FIRED_AFTER
    - TRIGGER_FIRED_BY_DELETE
    - GETSTRUCT
    - errmsg
    - TRIGGER_FIRED_INSTEAD
    - SPI_connect
    - SPI_getnspname
    - elog
    - TRIGGER_FIRED_BY_INSERT
    - TRIGGER_FIRED_FOR_STATEMENT
    - ObjectIdGetDatum
    - Assert
    - PG_END_TRY
    - PG_TRY
    - TRIGGER_FIRED_FOR_ROW
    - PG_CATCH
    - ereport
    - SearchSysCache1
    - SPI_getrelname
    - SPI_finish
    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:
    - errmsg
    - ereport
    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:
    - errmsg
    - RelationGetRelid
    - table_open
    - EndCopyTo
    - PG_RETURN_VOID
    - table_close
    - ereport
    - DoCopyTo
    - PG_GETARG_OID
    - BeginCopyTo
    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:45,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:46,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:47,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:48,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:49,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:50,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:60,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:61,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:62,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:70,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:71,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:72,1
    - Dst: test_shm_mq_setup
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:75,1
    - Dst: shm_mq_send
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:78,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:80,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:81,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:82,1
    - Dst: shm_mq_receive
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:91,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:93,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:94,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:95,1
    - Dst: shm_mq_send
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:102,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:104,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:105,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:106,1
    - Dst: verify_message
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:113,1
    - Dst: dsm_detach
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:116,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:118,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 119
    functionName: test_shm_mq
    functionSourceFile: /src/postgres/src/test/modules/test_shm_mq/test.c
    functionUses: 0
    functionsReached:
    - errmsg
    - verify_message
    - PG_GETARG_INT64
    - PG_GETARG_TEXT_PP
    - test_shm_mq_setup
    - PG_RETURN_VOID
    - ereport
    - shm_mq_receive
    - PG_GETARG_INT32
    - dsm_detach
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - errcode
    - shm_mq_send
    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:134,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:135,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:136,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:137,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:138,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:139,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:140,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:152,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:153,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:154,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:161,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:162,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:163,1
    - Dst: test_shm_mq_setup
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:166,1
    - Dst: shm_mq_send
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:182,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:190,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:191,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:192,1
    - Dst: shm_mq_receive
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:201,1
    - Dst: verify_message
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:207,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:211,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:212,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:213,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:222,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:223,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:224,1
    - Dst: WaitEventExtensionNew
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:233,1
    - Dst: WaitLatch
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:241,1
    - Dst: ResetLatch
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:243,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:244,1
    - Dst: dsm_detach
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:249,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:251,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 252
    functionName: test_shm_mq_pipelined
    functionSourceFile: /src/postgres/src/test/modules/test_shm_mq/test.c
    functionUses: 0
    functionsReached:
    - CHECK_FOR_INTERRUPTS
    - PG_GETARG_BOOL
    - dsm_detach
    - ResetLatch
    - errmsg
    - verify_message
    - WaitEventExtensionNew
    - PG_RETURN_VOID
    - test_shm_mq_setup
    - shm_mq_receive
    - VARSIZE_ANY_EXHDR
    - WaitLatch
    - shm_mq_send
    - PG_GETARG_INT64
    - PG_GETARG_TEXT_PP
    - ereport
    - PG_GETARG_INT32
    - VARDATA_ANY
    - errcode
    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:263,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:264,1
    - Dst: errdetail
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:265,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:270,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:271,1
    - Dst: errdetail
      Src: /src/postgres/src/test/modules/test_shm_mq/test.c:272,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 4
    argNames:
    - origlen
    - origdata
    - newlen
    - newdata
    argTypes:
    - Size
    - char*
    - Size
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 273
    functionName: verify_message
    functionSourceFile: /src/postgres/src/test/modules/test_shm_mq/test.c
    functionUses: 2
    functionsReached:
    - errmsg
    - errdetail
    - ereport
    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:60,1
    - Dst: setup_background_workers
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:64,1
    - Dst: shm_mq_attach
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:67,1
    - Dst: shm_mq_attach
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:68,1
    - Dst: wait_for_workers_to_become_ready
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:71,1
    - Dst: cancel_on_dsm_detach
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:78,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:79,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:80,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: 81
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 81
    functionName: test_shm_mq_setup
    functionSourceFile: /src/postgres/src/test/modules/test_shm_mq/setup.c
    functionUses: 2
    functionsReached:
    - pfree
    - setup_background_workers
    - wait_for_workers_to_become_ready
    - cancel_on_dsm_detach
    - PointerGetDatum
    - shm_mq_attach
    - setup_dynamic_shared_memory
    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:104,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:105,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:106,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:109,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:110,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:111,1
    - Dst: shm_toc_initialize_estimator
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:122,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:123,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:125,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:126,1
    - Dst: shm_toc_estimate
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:127,1
    - Dst: dsm_create
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:130,1
    - Dst: shm_toc_estimate
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:130,1
    - Dst: shm_toc_create
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:131,1
    - Dst: dsm_segment_address
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:131,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:135,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:136,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:140,1
    - Dst: shm_mq_create
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:147,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:147,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:149,1
    - Dst: shm_mq_set_sender
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:154,1
    - Dst: shm_mq_set_receiver
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:160,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: 168
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 168
    functionName: setup_dynamic_shared_memory
    functionSourceFile: /src/postgres/src/test/modules/test_shm_mq/setup.c
    functionUses: 1
    functionsReached:
    - errmsg
    - shm_toc_create
    - shm_toc_initialize_estimator
    - shm_mq_create
    - shm_toc_estimate
    - SpinLockInit
    - shm_toc_estimate_chunk
    - shm_toc_insert
    - ereport
    - shm_mq_set_sender
    - shm_mq_set_receiver
    - shm_toc_estimate_keys
    - dsm_segment_address
    - shm_toc_allocate
    - errcode
    - dsm_create
    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:187,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:190,1
    - Dst: on_dsm_detach
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:213,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:214,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:217,1
    - Dst: sprintf
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:221,1
    - Dst: sprintf
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:222,1
    - Dst: snprintf
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:223,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:224,1
    - Dst: dsm_segment_handle
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:224,1
    - Dst: RegisterDynamicBackgroundWorker
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:231,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:232,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:233,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:234,1
    - Dst: errhint
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:235,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:240,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 2
    argNames:
    - nworkers
    - seg
    argTypes:
    - int
    - dsm_segment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 242
    functionName: setup_background_workers
    functionSourceFile: /src/postgres/src/test/modules/test_shm_mq/setup.c
    functionUses: 1
    functionsReached:
    - errmsg
    - MemoryContextSwitchTo
    - on_dsm_detach
    - dsm_segment_handle
    - RegisterDynamicBackgroundWorker
    - memset
    - UInt32GetDatum
    - snprintf
    - ereport
    - PointerGetDatum
    - errhint
    - MemoryContextAlloc
    - sprintf
    - errcode
    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:247,1
    - Dst: TerminateBackgroundWorker
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:252,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - seg
    - arg
    argTypes:
    - dsm_segment*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 244
    functionDepth: 1
    functionLinenumber: 244
    functionLinenumberEnd: 254
    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:267,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:269,1
    - Dst: check_worker_status
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:277,1
    - Dst: WaitEventExtensionNew
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:285,1
    - Dst: WaitLatch
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:288,1
    - Dst: ResetLatch
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:292,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:295,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:299,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:300,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:301,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - wstate
    - hdr
    argTypes:
    - worker_state*
    - test_shm_mq_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 302
    functionName: wait_for_workers_to_become_ready
    functionSourceFile: /src/postgres/src/test/modules/test_shm_mq/setup.c
    functionUses: 1
    functionsReached:
    - ResetLatch
    - errmsg
    - CHECK_FOR_INTERRUPTS
    - check_worker_status
    - WaitEventExtensionNew
    - ereport
    - SpinLockRelease
    - WaitLatch
    - errcode
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: "void wait_for_workers_to_become_ready(worker_state *wstate,\n\t\t\t\t\t\t\t\t
      volatile test_shm_mq_header *hdr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetBackgroundWorkerPid
      Src: /src/postgres/src/test/modules/test_shm_mq/setup.c:315,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - wstate
    argTypes:
    - worker_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 304
    functionDepth: 1
    functionLinenumber: 304
    functionLinenumberEnd: 322
    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: pqsignal
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:63,1
    - Dst: BackgroundWorkerUnblockSignals
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:64,1
    - Dst: dsm_attach
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:80,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:80,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:82,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:83,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:84,1
    - Dst: shm_toc_attach
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:85,1
    - Dst: dsm_segment_address
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:85,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:87,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:88,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:89,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:99,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:100,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:102,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:104,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:105,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:106,1
    - Dst: attach_to_queues
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:111,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:122,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:124,1
    - Dst: BackendPidGetProc
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:125,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:128,1
    - Dst: proc_exit
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:129,1
    - Dst: SetLatch
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:131,1
    - Dst: copy_messages
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:134,1
    - Dst: dsm_detach
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:140,1
    - Dst: proc_exit
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:141,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 1
    argNames:
    - main_arg
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 142
    functionName: test_shm_mq_main
    functionSourceFile: /src/postgres/src/test/modules/test_shm_mq/worker.c
    functionUses: 0
    functionsReached:
    - copy_messages
    - SpinLockRelease
    - dsm_detach
    - shm_toc_lookup
    - DatumGetUInt32
    - attach_to_queues
    - dsm_segment_address
    - SetLatch
    - proc_exit
    - errmsg
    - shm_toc_attach
    - elog
    - BackgroundWorkerUnblockSignals
    - SpinLockAcquire
    - BackendPidGetProc
    - ereport
    - pqsignal
    - dsm_attach
    - errcode
    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:160,1
    - Dst: shm_mq_set_receiver
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:161,1
    - Dst: shm_mq_attach
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:162,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:163,1
    - Dst: shm_mq_set_sender
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:164,1
    - Dst: shm_mq_attach
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:165,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: 166
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 166
    functionName: attach_to_queues
    functionSourceFile: /src/postgres/src/test/modules/test_shm_mq/worker.c
    functionUses: 1
    functionsReached:
    - shm_mq_set_receiver
    - shm_mq_attach
    - shm_mq_set_sender
    - 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:185,1
    - Dst: shm_mq_receive
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:188,1
    - Dst: shm_mq_send
      Src: /src/postgres/src/test/modules/test_shm_mq/worker.c:193,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - inqh
    - outqh
    argTypes:
    - shm_mq_handle*
    - shm_mq_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 197
    functionName: copy_messages
    functionSourceFile: /src/postgres/src/test/modules/test_shm_mq/worker.c
    functionUses: 1
    functionsReached:
    - shm_mq_send
    - CHECK_FOR_INTERRUPTS
    - shm_mq_receive
    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: 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: 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: LWLockRegisterTranche
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:130,1
    - Dst: dsa_create
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:131,1
    - Dst: rt_create
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:132,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:136,1
    - Dst: rt_create
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:139,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_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:145,1
    - Dst: rt_find
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:145,1
    - Dst: EXPECT_FALSE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:146,1
    - Dst: rt_delete
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:146,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:147,1
    - Dst: rt_num_entries
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:147,1
    - Dst: rt_begin_iterate
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:150,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:151,1
    - Dst: rt_iterate_next
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:151,1
    - Dst: rt_end_iterate
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:152,1
    - Dst: rt_free
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:154,1
    - Dst: dsa_detach
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 159
    functionName: test_empty
    functionSourceFile: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c
    functionUses: 1
    functionsReached:
    - rt_iterate_next
    - LWLockRegisterTranche
    - rt_create
    - rt_num_entries
    - EXPECT_TRUE
    - rt_end_iterate
    - rt_begin_iterate
    - rt_free
    - AllocSetContextCreate
    - LWLockNewTrancheId
    - rt_find
    - dsa_create
    - EXPECT_FALSE
    - dsa_detach
    - rt_delete
    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:170,1
    - Dst: LWLockRegisterTranche
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:173,1
    - Dst: dsa_create
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:174,1
    - Dst: rt_create
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:175,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:179,1
    - Dst: rt_create
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:182,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:185,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:188,1
    - Dst: EXPECT_FALSE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:202,1
    - Dst: rt_set
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:202,1
    - Dst: rt_stats
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:204,1
    - Dst: rt_find
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:211,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:214,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:215,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:224,1
    - Dst: rt_set
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:224,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:230,1
    - Dst: rt_delete
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:230,1
    - Dst: EXPECT_FALSE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:231,1
    - Dst: rt_set
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:231,1
    - Dst: rt_find
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:239,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:242,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:243,1
    - Dst: rt_begin_iterate
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:247,1
    - Dst: rt_iterate_next
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:261,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:263,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:264,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:265,1
    - Dst: rt_end_iterate
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:268,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:272,1
    - Dst: rt_delete
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:272,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:276,1
    - Dst: rt_find
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:276,1
    - Dst: rt_stats
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:278,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:280,1
    - Dst: rt_free
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:281,1
    - Dst: dsa_detach
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:284,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 52
    argCount: 3
    argNames:
    - test_info
    - shift
    - asc
    argTypes:
    - rt_node_class_test_elem*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 286
    functionName: test_basic
    functionSourceFile: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c
    functionUses: 0
    functionsReached:
    - EXPECT_EQ_U64
    - rt_iterate_next
    - LWLockRegisterTranche
    - pfree
    - LWLockNewTrancheId
    - rt_free
    - dsa_detach
    - EXPECT_TRUE
    - elog
    - rt_end_iterate
    - dsa_create
    - palloc
    - rt_set
    - rt_stats
    - rt_delete
    - rt_create
    - rt_begin_iterate
    - AllocSetContextCreate
    - rt_find
    - 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:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 292
    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:303,1
    - Dst: LWLockNewTrancheId
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:307,1
    - Dst: LWLockRegisterTranche
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:310,1
    - Dst: dsa_create
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:311,1
    - Dst: rt_create
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:312,1
    - Dst: SlabContextCreate
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:316,1
    - Dst: rt_create
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:320,1
    - Dst: pg_prng_seed
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:324,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:325,1
    - Dst: pg_prng_uint64
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:328,1
    - Dst: rt_set
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:334,1
    - Dst: rt_stats
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:337,1
    - Dst: rt_find
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:343,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:346,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:347,1
    - Dst: qsort
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:351,1
    - Dst: rt_find
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:363,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:364,1
    - Dst: rt_find
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:376,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:377,1
    - Dst: rt_find
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:385,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:386,1
    - Dst: rt_begin_iterate
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:390,1
    - Dst: rt_iterate_next
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:403,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:405,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:406,1
    - Dst: EXPECT_EQ_U64
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:407,1
    - Dst: rt_end_iterate
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:410,1
    - Dst: pg_prng_seed
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:413,1
    - Dst: pg_prng_uint64
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:418,1
    - Dst: rt_delete
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:420,1
    - Dst: EXPECT_TRUE
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:423,1
    - Dst: rt_num_entries
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:423,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:425,1
    - Dst: rt_free
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:426,1
    - Dst: dsa_detach
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:429,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 54
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 294
    functionDepth: 1
    functionLinenumber: 294
    functionLinenumberEnd: 431
    functionName: test_random
    functionSourceFile: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c
    functionUses: 0
    functionsReached:
    - pg_prng_uint64
    - EXPECT_EQ_U64
    - LWLockRegisterTranche
    - rt_iterate_next
    - rt_num_entries
    - pg_prng_seed
    - pfree
    - LWLockNewTrancheId
    - rt_free
    - dsa_detach
    - qsort
    - EXPECT_TRUE
    - SlabContextCreate
    - GetCurrentTimestamp
    - rt_end_iterate
    - dsa_create
    - palloc
    - rt_set
    - rt_stats
    - rt_delete
    - rt_create
    - rt_begin_iterate
    - rt_find
    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:439,1
    - Dst: lengthof
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:441,1
    - Dst: test_basic
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:446,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:450,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:454,1
    - Dst: test_basic
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:455,1
    - Dst: test_random
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:458,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c:460,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 433
    functionDepth: 2
    functionLinenumber: 433
    functionLinenumberEnd: 461
    functionName: test_radixtree
    functionSourceFile: /src/postgres/src/test/modules/test_radixtree/test_radixtree.c
    functionUses: 0
    functionsReached:
    - lengthof
    - PG_RETURN_VOID
    - test_empty
    - test_basic
    - test_random
    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:85,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:87,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:88,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:89,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:94,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:95,1
    - Dst: parse_test_flags
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:98,1
    - Dst: test_re_compile
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:101,1
    - Dst: setup_test_matches
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:104,1
    - Dst: PG_GETARG_TEXT_P_COPY
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:104,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:110,1
    - Dst: palloc
      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:115,1
    - Dst: build_test_info_result
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:122,1
    - Dst: pg_regfree
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:124,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:126,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:126,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:131,1
    - Dst: build_test_match_result
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:136,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:138,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:138,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:142,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 143
    functionName: test_regex
    functionSourceFile: /src/postgres/src/test/modules/test_regex/test_regex.c
    functionUses: 0
    functionsReached:
    - SRF_PERCALL_SETUP
    - build_test_info_result
    - MemoryContextSwitchTo
    - PG_GETARG_TEXT_P_COPY
    - test_re_compile
    - PG_GETARG_TEXT_PP
    - pg_regfree
    - build_test_match_result
    - PointerGetDatum
    - setup_test_matches
    - SRF_RETURN_DONE
    - SRF_FIRSTCALL_INIT
    - PG_GET_COLLATION
    - SRF_IS_FIRSTCALL
    - palloc
    - SRF_RETURN_NEXT
    - parse_test_flags
    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:163,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:164,1
    - Dst: palloc
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:171,1
    - Dst: pg_mb2wchar_with_len
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:172,1
    - Dst: pg_regcomp
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:176,1
    - Dst: pfree
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:182,1
    - Dst: pg_regerror
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:187,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:188,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:189,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:190,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: 192
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 192
    functionName: test_re_compile
    functionSourceFile: /src/postgres/src/test/modules/test_regex/test_regex.c
    functionUses: 1
    functionsReached:
    - errmsg
    - pfree
    - pg_regerror
    - pg_regcomp
    - ereport
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - palloc
    - pg_mb2wchar_with_len
    - errcode
    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:220,1
    - Dst: pg_regerror
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:232,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:233,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:234,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:235,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: 239
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 239
    functionName: test_re_execute
    functionSourceFile: /src/postgres/src/test/modules/test_regex/test_regex.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pg_regerror
    - pg_regexec
    - ereport
    - errcode
    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:262,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:263,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:413,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:414,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:415,1
    - Dst: pg_mblen
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:416,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 140
    argCount: 2
    argNames:
    - flags
    - opts
    argTypes:
    - test_re_flags*
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 424
    functionName: parse_test_flags
    functionSourceFile: /src/postgres/src/test/modules/test_regex/test_regex.c
    functionUses: 1
    functionsReached:
    - errmsg
    - pg_mblen
    - ereport
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - errcode
    linkageType: ''
    returnType: void
    signature: void parse_test_flags(test_re_flags *flags, text *opts)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      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
      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
      Src: /src/postgres/src/test/modules/test_regex/test_regex.c:477,1
    - Dst: palloc
      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:
    - errmsg
    - pfree
    - Assert
    - repalloc
    - pg_database_encoding_max_length
    - palloc0
    - ereport
    - test_re_execute
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - palloc
    - pg_mb2wchar_with_len
    - errcode
    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:
    - lengthof
    - snprintf
    - construct_md_array
    - PointerGetDatum
    - cstring_to_text
    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:
    - Assert
    - pg_wchar2mb_with_len
    - Int32GetDatum
    - snprintf
    - construct_md_array
    - PointerGetDatum
    - DirectFunctionCall3
    - cstring_to_text
    - cstring_to_text_with_len
    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:131,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:132,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:133,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 135
    functionName: injection_point_init_state
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - memset
    - ConditionVariableInit
    - SpinLockInit
    linkageType: ''
    returnType: void
    signature: void injection_point_init_state(void *ptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prev_shmem_request_hook
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:144,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:146,1
    - Dst: RequestAddinShmemSpace
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:147,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 148
    functionName: injection_shmem_request
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - prev_shmem_request_hook
    - RequestAddinShmemSpace
    - MAXALIGN
    linkageType: ''
    returnType: void
    signature: void injection_shmem_request(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: prev_shmem_startup_hook
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:156,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:159,1
    - Dst: ShmemInitStruct
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:161,1
    - Dst: injection_point_init_state
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:171,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:174,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 150
    functionDepth: 2
    functionLinenumber: 150
    functionLinenumberEnd: 175
    functionName: injection_shmem_startup
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - ShmemInitStruct
    - prev_shmem_startup_hook
    - injection_point_init_state
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void injection_shmem_startup(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetNamedDSMSegment
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 192
    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: 216
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 216
    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(InjectionPointCondition *condition)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strVal
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:234,1
    - Dst: lfirst
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:234,1
    - Dst: InjectionPointDetach
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:236,1
    - Dst: pgstat_drop_inj
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:239,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 241
    functionName: injection_points_cleanup
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - lfirst
    - pgstat_drop_inj
    - InjectionPointDetach
    - strVal
    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:234,1
    - Dst: lfirst
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:234,1
    - Dst: InjectionPointDetach
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:236,1
    - Dst: pgstat_drop_inj
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 240
    functionName: foreach
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 1
    functionsReached:
    - lfirst
    - pgstat_drop_inj
    - InjectionPointDetach
    - strVal
    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:250,1
    - Dst: pgstat_report_inj
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:253,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:256,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:259,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - name
    - private_data
    - arg
    argTypes:
    - char*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 244
    functionDepth: 1
    functionLinenumber: 244
    functionLinenumberEnd: 260
    functionName: injection_error
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - elog
    - injection_point_allowed
    - pgstat_report_inj
    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:268,1
    - Dst: pgstat_report_inj
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:271,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:274,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:277,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - name
    - private_data
    - arg
    argTypes:
    - char*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 278
    functionName: injection_notice
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - elog
    - injection_point_allowed
    - pgstat_report_inj
    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:290,1
    - Dst: injection_point_allowed
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:292,1
    - Dst: pgstat_report_inj
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:295,1
    - Dst: WaitEventInjectionPointNew
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:302,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:307,1
    - Dst: strlcpy
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:313,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:318,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:321,1
    - Dst: ConditionVariablePrepareToSleep
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:325,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:330,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:332,1
    - Dst: ConditionVariableSleep
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:336,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:338,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:341,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:343,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 3
    argNames:
    - name
    - private_data
    - arg
    argTypes:
    - char*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 281
    functionDepth: 2
    functionLinenumber: 281
    functionLinenumberEnd: 344
    functionName: injection_wait
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - ConditionVariablePrepareToSleep
    - injection_point_allowed
    - WaitEventInjectionPointNew
    - ConditionVariableCancelSleep
    - SpinLockRelease
    - injection_init_shmem
    - elog
    - strlcpy
    - pgstat_report_inj
    - ConditionVariableSleep
    - SpinLockAcquire
    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:353,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:353,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:354,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:354,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:358,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:360,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:362,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:365,1
    - Dst: pgstat_report_inj_fixed
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:373,1
    - Dst: InjectionPointAttach
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:374,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:382,1
    - Dst: lappend
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:383,1
    - Dst: makeString
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:383,1
    - Dst: pstrdup
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:383,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:384,1
    - Dst: pgstat_create_inj
      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: 5
    EdgeCount: 5
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 391
    functionName: injection_points_attach
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - makeString
    - MemoryContextSwitchTo
    - InjectionPointAttach
    - pgstat_report_inj_fixed
    - PG_GETARG_TEXT_PP
    - PG_RETURN_VOID
    - pstrdup
    - elog
    - lappend
    - strcmp
    - pgstat_create_inj
    - text_to_cstring
    linkageType: ''
    returnType: Datum
    signature: Datum injection_points_attach(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:400,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:400,1
    - Dst: injection_init_shmem
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:403,1
    - Dst: pgstat_report_inj_fixed
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:405,1
    - Dst: INJECTION_POINT_LOAD
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:406,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:408,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 397
    functionDepth: 2
    functionLinenumber: 397
    functionLinenumberEnd: 409
    functionName: injection_points_load
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - pgstat_report_inj_fixed
    - INJECTION_POINT_LOAD
    - PG_GETARG_TEXT_PP
    - PG_RETURN_VOID
    - injection_init_shmem
    - text_to_cstring
    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:421,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:422,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:423,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:423,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:425,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:426,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:426,1
    - Dst: pgstat_report_inj_fixed
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:428,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:429,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:431,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 415
    functionDepth: 1
    functionLinenumber: 415
    functionLinenumberEnd: 432
    functionName: injection_points_run
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - pgstat_report_inj_fixed
    - PG_RETURN_VOID
    - PG_GETARG_TEXT_PP
    - PG_ARGISNULL
    - INJECTION_POINT
    - text_to_cstring
    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:444,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:445,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:446,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:446,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:448,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:449,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:449,1
    - Dst: pgstat_report_inj_fixed
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:451,1
    - Dst: INJECTION_POINT_CACHED
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:452,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:454,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 438
    functionDepth: 1
    functionLinenumber: 438
    functionLinenumberEnd: 455
    functionName: injection_points_cached
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - INJECTION_POINT_CACHED
    - pgstat_report_inj_fixed
    - PG_RETURN_VOID
    - PG_GETARG_TEXT_PP
    - PG_ARGISNULL
    - text_to_cstring
    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:464,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:464,1
    - Dst: injection_init_shmem
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:468,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:471,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:474,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:482,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:483,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:486,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:489,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:490,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 461
    functionDepth: 2
    functionLinenumber: 461
    functionLinenumberEnd: 491
    functionName: injection_points_wakeup
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - PG_RETURN_VOID
    - SpinLockRelease
    - injection_init_shmem
    - elog
    - ConditionVariableBroadcast
    - strcmp
    - text_to_cstring
    - SpinLockAcquire
    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:508,1
    - Dst: before_shmem_exit
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:514,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:516,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 501
    functionDepth: 2
    functionLinenumber: 501
    functionLinenumberEnd: 517
    functionName: injection_points_set_local
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - injection_init_shmem
    - before_shmem_exit
    - PG_RETURN_VOID
    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:526,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:526,1
    - Dst: pgstat_report_inj_fixed
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:528,1
    - Dst: InjectionPointDetach
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:529,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:530,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:537,1
    - Dst: list_delete
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:538,1
    - Dst: makeString
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:538,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:539,1
    - Dst: pgstat_drop_inj
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:543,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:545,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 523
    functionDepth: 1
    functionLinenumber: 523
    functionLinenumberEnd: 546
    functionName: injection_points_detach
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - makeString
    - list_delete
    - MemoryContextSwitchTo
    - InjectionPointDetach
    - pgstat_report_inj_fixed
    - pgstat_drop_inj
    - PG_GETARG_TEXT_PP
    - PG_RETURN_VOID
    - elog
    - text_to_cstring
    linkageType: ''
    returnType: Datum
    signature: Datum injection_points_detach(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DefineCustomBoolVariable
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:555,1
    - Dst: MarkGUCPrefixReserved
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:566,1
    - Dst: pgstat_register_inj
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:574,1
    - Dst: pgstat_register_inj_fixed
      Src: /src/postgres/src/test/modules/injection_points/injection_points.c:575,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 549
    functionDepth: 1
    functionLinenumber: 549
    functionLinenumberEnd: 576
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_points.c
    functionUses: 0
    functionsReached:
    - MarkGUCPrefixReserved
    - pgstat_register_inj_fixed
    - pgstat_register_inj
    - DefineCustomBoolVariable
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockInitialize
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stats
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 79
    functionName: injection_stats_fixed_init_shmem_cb
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c
    functionUses: 0
    functionsReached:
    - LWLockInitialize
    linkageType: ''
    returnType: void
    signature: void injection_stats_fixed_init_shmem_cb(void *stats)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_get_custom_shmem_data
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:85,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:87,1
    - Dst: pgstat_copy_changecounted_stats
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:88,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ts
    argTypes:
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 94
    functionName: injection_stats_fixed_reset_all_cb
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c
    functionUses: 0
    functionsReached:
    - pgstat_copy_changecounted_stats
    - pgstat_get_custom_shmem_data
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void injection_stats_fixed_reset_all_cb(TimestampTz ts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_get_custom_shmem_data
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:100,1
    - Dst: pgstat_get_custom_snapshot_data
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:102,1
    - Dst: pgstat_copy_changecounted_stats
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:106,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:111,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:112,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:113,1
    - Dst: FIXED_COMP
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:117,1
    - Dst: FIXED_COMP
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:118,1
    - Dst: FIXED_COMP
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:119,1
    - Dst: FIXED_COMP
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:120,1
    - Dst: FIXED_COMP
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 123
    functionName: injection_stats_fixed_snapshot_cb
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c
    functionUses: 0
    functionsReached:
    - pgstat_copy_changecounted_stats
    - FIXED_COMP
    - pgstat_get_custom_snapshot_data
    - pgstat_get_custom_shmem_data
    - memcpy
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void injection_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: 117
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 117
    functionName: FIXED_COMP
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FIXED_COMP(fld)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_register_kind
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 135
    functionName: pgstat_register_inj_fixed
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c
    functionUses: 1
    functionsReached:
    - pgstat_register_kind
    linkageType: ''
    returnType: void
    signature: void pgstat_register_inj_fixed(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_get_custom_shmem_data
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:153,1
    - Dst: pgstat_begin_changecount_write
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:155,1
    - Dst: pgstat_end_changecount_write
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:161,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 5
    argNames:
    - numattach
    - numdetach
    - numrun
    - numcached
    - numloaded
    argTypes:
    - uint32
    - uint32
    - uint32
    - uint32
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 162
    functionName: pgstat_report_inj_fixed
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c
    functionUses: 5
    functionsReached:
    - pgstat_begin_changecount_write
    - pgstat_get_custom_shmem_data
    - pgstat_end_changecount_write
    linkageType: ''
    returnType: void
    signature: "void pgstat_report_inj_fixed(uint32 numattach,\n\t\t\t\t\t\tuint32
      numdetach,\n\t\t\t\t\t\tuint32 numrun,\n\t\t\t\t\t\tuint32 numcached,\n\t\t\t\t\t\tuint32
      numloaded)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:177,1
    - Dst: pgstat_snapshot_fixed
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:179,1
    - Dst: pgstat_get_custom_snapshot_data
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:180,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:183,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:184,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:186,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:188,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:190,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:192,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:194,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:196,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:197,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:198,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:199,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:200,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:208,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:208,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c:208,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 209
    functionName: injection_points_stats_fixed
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_stats_fixed.c
    functionUses: 0
    functionsReached:
    - pgstat_snapshot_fixed
    - HeapTupleGetDatum
    - heap_form_tuple
    - PG_RETURN_DATUM
    - BlessTupleDesc
    - Int64GetDatum
    - pgstat_get_custom_snapshot_data
    - TupleDescInitEntry
    - PG_RETURN_NULL
    - CreateTemplateTupleDesc
    linkageType: ''
    returnType: Datum
    signature: Datum injection_points_stats_fixed(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: 58
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 58
    functionName: PGSTAT_INJ_IDX
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_stats.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PGSTAT_INJ_IDX(name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_lock_entry
      Src: /src/postgres/src/test/modules/injection_points/injection_stats.c:79,1
    - Dst: pgstat_unlock_entry
      Src: /src/postgres/src/test/modules/injection_points/injection_stats.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - entry_ref
    - nowait
    argTypes:
    - PgStat_EntryRef*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 87
    functionName: injection_stats_flush_cb
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_stats.c
    functionUses: 0
    functionsReached:
    - pgstat_lock_entry
    - pgstat_unlock_entry
    linkageType: ''
    returnType: bool
    signature: bool injection_stats_flush_cb(PgStat_EntryRef *entry_ref, bool nowait)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_fetch_entry
      Src: /src/postgres/src/test/modules/injection_points/injection_stats.c:102,1
    - Dst: PGSTAT_INJ_IDX
      Src: /src/postgres/src/test/modules/injection_points/injection_stats.c:104,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 106
    functionName: pgstat_fetch_stat_injentry
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_stats.c
    functionUses: 0
    functionsReached:
    - pgstat_fetch_entry
    - PGSTAT_INJ_IDX
    linkageType: ''
    returnType: PgStat_StatInjEntry
    signature: 'PgStat_StatInjEntry *

      pgstat_fetch_stat_injentry(const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_register_kind
      Src: /src/postgres/src/test/modules/injection_points/injection_stats.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 118
    functionName: pgstat_register_inj
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_stats.c
    functionUses: 1
    functionsReached:
    - pgstat_register_kind
    linkageType: ''
    returnType: void
    signature: void pgstat_register_inj(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_prep_pending_entry
      Src: /src/postgres/src/test/modules/injection_points/injection_stats.c:133,1
    - Dst: PGSTAT_INJ_IDX
      Src: /src/postgres/src/test/modules/injection_points/injection_stats.c:134,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/injection_points/injection_stats.c:139,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 140
    functionName: pgstat_create_inj
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_stats.c
    functionUses: 1
    functionsReached:
    - memset
    - PGSTAT_INJ_IDX
    - pgstat_prep_pending_entry
    linkageType: ''
    returnType: void
    signature: void pgstat_create_inj(const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_drop_entry
      Src: /src/postgres/src/test/modules/injection_points/injection_stats.c:152,1
    - Dst: PGSTAT_INJ_IDX
      Src: /src/postgres/src/test/modules/injection_points/injection_stats.c:153,1
    - Dst: pgstat_request_entry_refs_gc
      Src: /src/postgres/src/test/modules/injection_points/injection_stats.c:154,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 155
    functionName: pgstat_drop_inj
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_stats.c
    functionUses: 3
    functionsReached:
    - pgstat_drop_entry
    - PGSTAT_INJ_IDX
    - pgstat_request_entry_refs_gc
    linkageType: ''
    returnType: void
    signature: void pgstat_drop_inj(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_prep_pending_entry
      Src: /src/postgres/src/test/modules/injection_points/injection_stats.c:174,1
    - Dst: PGSTAT_INJ_IDX
      Src: /src/postgres/src/test/modules/injection_points/injection_stats.c:175,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 182
    functionName: pgstat_report_inj
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_stats.c
    functionUses: 3
    functionsReached:
    - PGSTAT_INJ_IDX
    - pgstat_prep_pending_entry
    linkageType: ''
    returnType: void
    signature: void pgstat_report_inj(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/test/modules/injection_points/injection_stats.c:192,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/injection_points/injection_stats.c:192,1
    - Dst: pgstat_fetch_stat_injentry
      Src: /src/postgres/src/test/modules/injection_points/injection_stats.c:193,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/test/modules/injection_points/injection_stats.c:196,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/test/modules/injection_points/injection_stats.c:198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 189
    functionDepth: 2
    functionLinenumber: 189
    functionLinenumberEnd: 199
    functionName: injection_points_stats_numcalls
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_stats.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - pgstat_fetch_stat_injentry
    - PG_RETURN_NULL
    - PG_RETURN_INT64
    - text_to_cstring
    linkageType: ''
    returnType: Datum
    signature: Datum injection_points_stats_numcalls(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - entry
    - match_data
    argTypes:
    - PgStatShared_HashEntry*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 206
    functionName: match_inj_entries
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_stats.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool match_inj_entries(PgStatShared_HashEntry *entry, Datum match_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_drop_matching_entries
      Src: /src/postgres/src/test/modules/injection_points/injection_stats.c:215,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/injection_points/injection_stats.c:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 218
    functionName: injection_points_stats_drop
    functionSourceFile: /src/postgres/src/test/modules/injection_points/injection_stats.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - pgstat_drop_matching_entries
    linkageType: ''
    returnType: Datum
    signature: Datum injection_points_stats_drop(PG_FUNCTION_ARGS)
  - 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: 5
    EdgeCount: 5
    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:
    - FullTransactionIdEquals
    - CHECK_FOR_INTERRUPTS
    - FullTransactionIdFromAllowableAt
    - table_open
    - PG_ARGISNULL
    - elog
    - PG_GETARG_OID
    - ReadNextFullTransactionId
    - GetOldestNonRemovableTransactionId
    - table_close
    - PG_RETURN_FULLTRANSACTIONID
    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:
    - pfree
    - Assert
    - elog
    - 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:
    - DatumGetPointer
    - psprintf
    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
      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:
    - dlist_node_init
    - dlist_push_tail
    - PointerGetDatum
    - ResourceOwnerEnlarge
    - elog
    - ResourceOwnerRemember
    - palloc
    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:
    - pfree
    - GetTotalResourceCount
    - ResourceOwnerForget
    - dlist_is_empty
    - PointerGetDatum
    - dlist_head_element
    - elog
    - dlist_delete
    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:
    - Assert
    - ResourceOwnerDelete
    - GetTotalResourceCount
    - PG_RETURN_VOID
    - ResourceOwnerRelease
    - RememberManyTestResources
    - ForgetManyTestResources
    - elog
    - ResourceOwnerCreate
    - PG_GETARG_INT32
    - InitManyTestResourceKind
    - palloc
    - psprintf
    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: DatumGetPointer
      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
    - DatumGetPointer
    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: DatumGetPointer
      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:
    - DatumGetPointer
    - psprintf
    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:
    - ResourceOwnerDelete
    - PG_RETURN_VOID
    - ResourceOwnerRelease
    - ResourceOwnerEnlarge
    - elog
    - ResourceOwnerCreate
    - CStringGetDatum
    - PG_GETARG_INT32
    - ResourceOwnerRemember
    - palloc
    - psprintf
    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:
    - ResourceOwnerDelete
    - PG_RETURN_VOID
    - ResourceOwnerRelease
    - ResourceOwnerEnlarge
    - ResourceOwnerCreate
    - CStringGetDatum
    - ResourceOwnerRemember
    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:
    - PG_RETURN_VOID
    - ResourceOwnerRelease
    - ResourceOwnerEnlarge
    - ResourceOwnerCreate
    - CStringGetDatum
    - elog
    - ResourceOwnerRemember
    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:
    - PG_RETURN_VOID
    - ResourceOwnerForget
    - ResourceOwnerRelease
    - ResourceOwnerEnlarge
    - ResourceOwnerCreate
    - CStringGetDatum
    - elog
    - ResourceOwnerRemember
    linkageType: ''
    returnType: Datum
    signature: Datum test_resowner_forget_between_phases(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:
    - errmsg
    - ereport
    - strcmp
    - superuser
    - errcode
    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:
    - XLogRecGetInfo
    - elog
    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:
    - XLogRecGetData
    - XLogRecGetInfo
    - appendBinaryStringInfo
    - appendStringInfo
    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:
    - XLogBeginInsert
    - XLogInsert
    - PG_GETARG_TEXT_PP
    - PG_RETURN_LSN
    - XLogRegisterData
    - XLogSetRecordFlags
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    linkageType: ''
    returnType: Datum
    signature: Datum test_custom_rmgrs_insert_wal_record(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prev_shmem_request_hook
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:62,1
    - Dst: RequestAddinShmemSpace
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 65
    functionName: test_aio_shmem_request
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - prev_shmem_request_hook
    - RequestAddinShmemSpace
    linkageType: ''
    returnType: void
    signature: void test_aio_shmem_request(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: prev_shmem_startup_hook
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:73,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:76,1
    - Dst: ShmemInitStruct
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:78,1
    - Dst: InjectionPointAttach
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:89,1
    - Dst: InjectionPointLoad
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:94,1
    - Dst: InjectionPointAttach
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:96,1
    - Dst: InjectionPointLoad
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:101,1
    - Dst: InjectionPointLoad
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:112,1
    - Dst: InjectionPointLoad
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:113,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:114,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:118,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 119
    functionName: test_aio_shmem_startup
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - ShmemInitStruct
    - InjectionPointAttach
    - LWLockRelease
    - prev_shmem_startup_hook
    - elog
    - InjectionPointLoad
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void test_aio_shmem_startup(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 131
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached: []
    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:138,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:138,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:140,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:141,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:142,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:143,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:144,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:145,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:146,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:147,1
    - Dst: strcmp
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:148,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:149,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:151,1
    - Dst: errcode
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:152,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:153,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:154,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 155
    functionName: errno_from_string
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - errcode
    - PG_GETARG_TEXT_PP
    - errmsg_internal
    - ereport
    - strcmp
    - text_to_cstring
    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:161,1
    - Dst: PG_GETARG_UINT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:162,1
    - Dst: relation_open
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:167,1
    - Dst: Min
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:173,1
    - Dst: ExtendBufferedRelBy
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:175,1
    - Dst: BMR_REL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:175,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:187,1
    - Dst: relation_close
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:191,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:193,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 194
    functionName: grow_rel
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - Min
    - BMR_REL
    - ReleaseBuffer
    - PG_RETURN_VOID
    - ExtendBufferedRelBy
    - relation_close
    - PG_GETARG_OID
    - relation_open
    - PG_GETARG_UINT32
    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:200,1
    - Dst: PG_GETARG_UINT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:201,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:202,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:203,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:204,1
    - Dst: palloc_aligned
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:205,1
    - Dst: relation_open
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:211,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:213,1
    - Dst: LockBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:216,1
    - Dst: memcpy
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:222,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:222,1
    - Dst: LockBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:224,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:226,1
    - Dst: BufferIsLocal
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:238,1
    - Dst: InvalidateLocalBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:239,1
    - Dst: GetLocalBufferDescriptor
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:239,1
    - Dst: EvictUnpinnedBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:241,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:247,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:247,1
    - Dst: PageIsEmpty
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:249,1
    - Dst: PageInit
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:250,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:250,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:275,1
    - Dst: pg_checksum_page
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:278,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:287,1
    - Dst: PageSetChecksumInplace
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:291,1
    - Dst: smgrwrite
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:294,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:294,1
    - Dst: relation_close
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:297,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:299,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 300
    functionName: modify_rel_block
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - GetLocalBufferDescriptor
    - ReleaseBuffer
    - EvictUnpinnedBuffer
    - LockBuffer
    - PageSetChecksumInplace
    - relation_close
    - PG_GETARG_BOOL
    - BufferGetPageSize
    - pg_checksum_page
    - PG_GETARG_UINT32
    - InvalidateLocalBuffer
    - PageInit
    - PG_GETARG_OID
    - PageIsEmpty
    - relation_open
    - memcpy
    - PG_RETURN_VOID
    - RelationGetSmgr
    - elog
    - ReadBufferExtended
    - BufferGetPage
    - smgrwrite
    - memset
    - BufferIsLocal
    - palloc_aligned
    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:315,1
    - Dst: LockBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:316,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:318,1
    - Dst: GetLocalBufferDescriptor
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:320,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:321,1
    - Dst: GetBufferDescriptor
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:325,1
    - Dst: LockBufHdr
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:326,1
    - Dst: BUF_STATE_GET_REFCOUNT
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:334,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:339,1
    - Dst: pg_atomic_unlocked_write_u32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:340,1
    - Dst: UnlockBufHdr
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:342,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:345,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - rel
    - blkno
    argTypes:
    - Relation
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 306
    functionDepth: 1
    functionLinenumber: 306
    functionLinenumberEnd: 349
    functionName: create_toy_buffer
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - pg_atomic_read_u32
    - GetLocalBufferDescriptor
    - BUF_STATE_GET_REFCOUNT
    - LockBuffer
    - RelationUsesLocalBuffers
    - elog
    - pg_atomic_unlocked_write_u32
    - ReadBufferExtended
    - GetBufferDescriptor
    - LockBufHdr
    - UnlockBufHdr
    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:360,1
    - Dst: PG_GETARG_UINT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:361,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:362,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:363,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:364,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:365,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:366,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:367,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:379,1
    - Dst: relation_open
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:381,1
    - Dst: create_toy_buffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:385,1
    - Dst: BufferGetBlock
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:386,1
    - Dst: BufferIsLocal
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:387,1
    - Dst: GetLocalBufferDescriptor
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:388,1
    - Dst: GetBufferDescriptor
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:389,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:392,1
    - Dst: pgstat_prepare_report_checksum_failure
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:394,1
    - Dst: pgaio_io_acquire
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:396,1
    - Dst: pgaio_io_get_wref
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:397,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:399,1
    - Dst: StartLocalBufferIO
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:402,1
    - Dst: pgaio_io_set_flag
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:403,1
    - Dst: StartBufferIO
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:408,1
    - Dst: pgaio_io_set_handle_data_32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:411,1
    - Dst: pgaio_io_register_callbacks
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:418,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:419,1
    - Dst: pgaio_enter_batchmode
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:425,1
    - Dst: smgrstartreadv
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:427,1
    - Dst: smgrreleaseall
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:431,1
    - Dst: pgaio_exit_batchmode
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:434,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:437,1
    - Dst: pgaio_wref_wait
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:441,1
    - Dst: pgaio_result_report
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:444,1
    - Dst: relation_close
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:450,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:452,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 357
    functionDepth: 2
    functionLinenumber: 357
    functionLinenumberEnd: 453
    functionName: read_rel_block_ll
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - GetLocalBufferDescriptor
    - pgaio_io_set_handle_data_32
    - BufferGetBlock
    - ReleaseBuffer
    - RelationUsesLocalBuffers
    - relation_close
    - PG_GETARG_BOOL
    - pgaio_enter_batchmode
    - smgrreleaseall
    - PG_GETARG_UINT32
    - pgaio_io_register_callbacks
    - create_toy_buffer
    - pgstat_prepare_report_checksum_failure
    - StartLocalBufferIO
    - PG_GETARG_OID
    - relation_open
    - pgaio_wref_wait
    - PG_RETURN_VOID
    - RelationGetSmgr
    - pgaio_result_report
    - elog
    - pgaio_exit_batchmode
    - GetBufferDescriptor
    - pgaio_io_get_wref
    - pgaio_io_set_flag
    - pgaio_io_acquire
    - BufferIsLocal
    - StartBufferIO
    - PG_GETARG_INT32
    - smgrstartreadv
    linkageType: ''
    returnType: Datum
    signature: Datum read_rel_block_ll(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:459,1
    - Dst: PG_GETARG_UINT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:460,1
    - Dst: relation_open
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:465,1
    - Dst: PrefetchBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:471,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:474,1
    - Dst: ReadRecentBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:477,1
    - Dst: BufferIsLocal
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:479,1
    - Dst: GetLocalBufferDescriptor
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:480,1
    - Dst: GetBufferDescriptor
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:481,1
    - Dst: LockBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:484,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:486,1
    - Dst: BufferIsLocal
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:488,1
    - Dst: FlushLocalBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:489,1
    - Dst: FlushOneBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:491,1
    - Dst: LockBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:493,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:494,1
    - Dst: BufferIsLocal
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:496,1
    - Dst: InvalidateLocalBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:497,1
    - Dst: GetLocalBufferDescriptor
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:497,1
    - Dst: EvictUnpinnedBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:498,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:499,1
    - Dst: relation_close
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:503,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:505,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 456
    functionDepth: 1
    functionLinenumber: 456
    functionLinenumberEnd: 506
    functionName: invalidate_rel_block
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - pg_atomic_read_u32
    - FlushLocalBuffer
    - GetLocalBufferDescriptor
    - ReleaseBuffer
    - EvictUnpinnedBuffer
    - LockBuffer
    - relation_close
    - PG_GETARG_UINT32
    - InvalidateLocalBuffer
    - PG_GETARG_OID
    - relation_open
    - FlushOneBuffer
    - BufferIsValid
    - PG_RETURN_VOID
    - PrefetchBuffer
    - elog
    - GetBufferDescriptor
    - ReadRecentBuffer
    - BufferIsLocal
    linkageType: ''
    returnType: Datum
    signature: Datum invalidate_rel_block(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:512,1
    - Dst: PG_GETARG_UINT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:513,1
    - Dst: relation_open
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:517,1
    - Dst: create_toy_buffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:519,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:520,1
    - Dst: relation_close
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:522,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 509
    functionDepth: 2
    functionLinenumber: 509
    functionLinenumberEnd: 525
    functionName: buffer_create_toy
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - ReleaseBuffer
    - create_toy_buffer
    - relation_close
    - PG_GETARG_OID
    - relation_open
    - PG_GETARG_UINT32
    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:531,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:532,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:533,1
    - Dst: BufferIsLocal
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:536,1
    - Dst: StartLocalBufferIO
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:537,1
    - Dst: GetLocalBufferDescriptor
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:537,1
    - Dst: StartBufferIO
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:540,1
    - Dst: GetBufferDescriptor
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:540,1
    - Dst: BufferIsLocal
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:547,1
    - Dst: ResourceOwnerForgetBufferIO
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:548,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:551,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:552,1
    - Dst: DebugPrintBufferRefcount
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:553,1
    - Dst: errhidestmt
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:554,1
    - Dst: errhidecontext
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:554,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:556,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 528
    functionDepth: 1
    functionLinenumber: 528
    functionLinenumberEnd: 557
    functionName: buffer_call_start_io
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - ResourceOwnerForgetBufferIO
    - errmsg
    - GetLocalBufferDescriptor
    - BufferIsLocal
    - errhidecontext
    - StartLocalBufferIO
    - StartBufferIO
    - PG_RETURN_BOOL
    - ereport
    - PG_GETARG_BOOL
    - PG_GETARG_INT32
    - DebugPrintBufferRefcount
    - GetBufferDescriptor
    - errhidestmt
    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:563,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:564,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:565,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:566,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:567,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:587,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:588,1
    - Dst: DebugPrintBufferRefcount
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:589,1
    - Dst: errhidestmt
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:590,1
    - Dst: errhidecontext
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:590,1
    - Dst: BufferIsLocal
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:592,1
    - Dst: TerminateLocalBufferIO
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:593,1
    - Dst: GetLocalBufferDescriptor
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:593,1
    - Dst: TerminateBufferIO
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:596,1
    - Dst: GetBufferDescriptor
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:596,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:599,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:600,1
    - Dst: DebugPrintBufferRefcount
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:601,1
    - Dst: errhidestmt
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:602,1
    - Dst: errhidecontext
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:602,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:604,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 560
    functionDepth: 1
    functionLinenumber: 560
    functionLinenumberEnd: 605
    functionName: buffer_call_terminate_io
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - errmsg
    - TerminateLocalBufferIO
    - GetLocalBufferDescriptor
    - errhidecontext
    - BufferIsLocal
    - TerminateBufferIO
    - PG_RETURN_VOID
    - ereport
    - PG_GETARG_BOOL
    - DebugPrintBufferRefcount
    - PG_GETARG_INT32
    - GetBufferDescriptor
    - errhidestmt
    linkageType: ''
    returnType: Datum
    signature: Datum buffer_call_terminate_io(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pgaio_io_acquire
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:611,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:613,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 608
    functionDepth: 1
    functionLinenumber: 608
    functionLinenumberEnd: 614
    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:621,1
    - Dst: pgaio_io_release
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:623,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:625,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 617
    functionDepth: 1
    functionLinenumber: 617
    functionLinenumberEnd: 626
    functionName: handle_release_last
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - pgaio_io_release
    - elog
    - 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:632,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:634,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:635,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 629
    functionDepth: 1
    functionLinenumber: 629
    functionLinenumberEnd: 636
    functionName: handle_get_and_error
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - elog
    - pgaio_io_acquire
    - PG_RETURN_VOID
    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:642,1
    - Dst: pgaio_io_acquire
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:643,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:645,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 639
    functionDepth: 1
    functionLinenumber: 639
    functionLinenumberEnd: 646
    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:654,1
    - Dst: pgaio_io_release
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:655,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:657,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 649
    functionDepth: 1
    functionLinenumber: 649
    functionLinenumberEnd: 658
    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:664,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:665,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 661
    functionDepth: 1
    functionLinenumber: 661
    functionLinenumberEnd: 666
    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:672,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:673,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 669
    functionDepth: 1
    functionLinenumber: 669
    functionLinenumberEnd: 674
    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: 5
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:689,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:690,1
    - Dst: errhidestmt
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:692,1
    - Dst: errhidecontext
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:692,1
    - Dst: ereport
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:709,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:710,1
    - Dst: errhidestmt
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:712,1
    - Dst: errhidecontext
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:712,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:732,1
    - Dst: memset
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:737,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 3
    argNames:
    - name
    - private_data
    - arg
    argTypes:
    - char*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 684
    functionDepth: 1
    functionLinenumber: 684
    functionLinenumberEnd: 744
    functionName: inj_io_short_read
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - errmsg
    - memset
    - errhidecontext
    - ereport
    - errhidestmt
    linkageType: ''
    returnType: void
    signature: void inj_io_short_read(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:749,1
    - Dst: errmsg
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:750,1
    - Dst: errhidestmt
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:752,1
    - Dst: errhidecontext
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:752,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:755,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - name
    - private_data
    - arg
    argTypes:
    - char*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 746
    functionDepth: 1
    functionLinenumber: 746
    functionLinenumberEnd: 756
    functionName: inj_io_reopen
    functionSourceFile: /src/postgres/src/test/modules/test_aio/test_aio.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errhidecontext
    - ereport
    - elog
    - errhidestmt
    linkageType: ''
    returnType: void
    signature: void inj_io_reopen(const char *name, const void *private_data, void
      *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:765,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:767,1
    - Dst: elog
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:769,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:772,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 760
    functionDepth: 1
    functionLinenumber: 760
    functionLinenumberEnd: 773
    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_GETARG_INT32
    - PG_ARGISNULL
    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:782,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:784,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 776
    functionDepth: 1
    functionLinenumber: 776
    functionLinenumberEnd: 785
    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:794,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:797,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 788
    functionDepth: 1
    functionLinenumber: 788
    functionLinenumberEnd: 798
    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:807,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/test/modules/test_aio/test_aio.c:809,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 801
    functionDepth: 1
    functionLinenumber: 801
    functionLinenumberEnd: 810
    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
    - appendPQExpBufferStr
    - appendPQExpBuffer
    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: appendPQExpBuffer
      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:
    - memset
    - createPQExpBuffer
    - PQsetClientEncoding
    - PQescapeLiteral
    - appendPQExpBuffer
    - pg_malloc
    - escapify
    - report_result
    - destroyPQExpBuffer
    - pg_free
    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: appendPQExpBuffer
      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: appendPQExpBuffer
      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
    - json_errdetail
    - VALGRIND_MAKE_MEM_NOACCESS
    - createPQExpBuffer
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - appendBinaryPQExpBuffer
    - pg_parse_json
    - escapify
    - report_result
    - destroyPQExpBuffer
    - makeJsonLexContextCstringLen
    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:
    - PQerrorMessage
    - PQfreemem
    - 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:
    - PQerrorMessage
    - PQfreemem
    - 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:
    - appendPQExpBufferChar
    - PQerrorMessage
    - appendPQExpBufferStr
    - PQescapeStringConn
    - enlargePQExpBuffer
    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
    - enlargePQExpBuffer
    - PQescapeString
    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:
    - PQclientEncoding
    - setFmtEncoding
    - appendPQExpBufferStr
    - fmtId
    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:561,1
    - Dst: TOSTR_CASE
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:562,1
    - Dst: TOSTR_CASE
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:563,1
    - Dst: TOSTR_CASE
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:564,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:567,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - res
    argTypes:
    - PsqlScanResult
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 554
    functionDepth: 1
    functionLinenumber: 554
    functionLinenumberEnd: 569
    functionName: scan_res_s
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 0
    functionsReached:
    - TOSTR_CASE
    - pg_unreachable
    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: 558
      start: 557
    functionDepth: 0
    functionLinenumber: 557
    functionLinenumberEnd: 558
    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:588,1
    - Dst: psql_scan_create
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:590,1
    - Dst: psql_scan_setup
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:596,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:597,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:601,1
    - Dst: psql_scan
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:603,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:606,1
    - Dst: scan_res_s
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:608,1
    - Dst: escapify
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:609,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:610,1
    - Dst: psql_scan_destroy
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:616,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:617,1
    - Dst: report_result
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:628,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: 631
      start: 576
    functionDepth: 2
    functionLinenumber: 576
    functionLinenumberEnd: 631
    functionName: test_psql_parse
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 0
    functionsReached:
    - PQclientEncoding
    - appendPQExpBufferChar
    - createPQExpBuffer
    - psql_scan_setup
    - appendPQExpBuffer
    - escapify
    - psql_scan
    - resetPQExpBuffer
    - psql_scan_create
    - psql_scan_destroy
    - scan_res_s
    - report_result
    - destroyPQExpBuffer
    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: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: createPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:652,1
    - Dst: createPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:653,1
    - Dst: encoding_conflicts_ascii
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:656,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:656,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:662,1
    - Dst: escapify
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:663,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:664,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:668,1
    - Dst: escapify
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:670,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:671,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:672,1
    - Dst: pg_encoding_verifymbstr
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:677,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:677,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:681,1
    - Dst: pg_encoding_verifymbstr
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:684,1
    - Dst: PQclientEncoding
      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:686,1
    - Dst: strnlen
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:687,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:688,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:691,1
    - Dst: appendBinaryPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:711,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:719,1
    - Dst: VALGRIND_MAKE_MEM_NOACCESS
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:721,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:727,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:728,1
    - Dst: VALGRIND_MAKE_MEM_NOACCESS
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:730,1
    - Dst: pe_test_escape_func*::escape
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:735,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:740,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:748,1
    - Dst: escapify
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:749,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:750,1
    - Dst: pg_encoding_verifymbstr
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:752,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:752,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:757,1
    - Dst: strstr
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:765,1
    - Dst: report_result
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:766,1
    - Dst: report_result
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:809,1
    - Dst: report_result
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:839,1
    - Dst: test_psql_parse
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:850,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
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:858,1
    - Dst: destroyPQExpBuffer
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:859,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: 860
      start: 633
    functionDepth: 3
    functionLinenumber: 633
    functionLinenumberEnd: 860
    functionName: test_one_vector_escape
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - PQclientEncoding
    - VALGRIND_MAKE_MEM_NOACCESS
    - strstr
    - createPQExpBuffer
    - test_psql_parse
    - pe_test_escape_func*::escape
    - appendPQExpBufferStr
    - encoding_conflicts_ascii
    - appendPQExpBuffer
    - appendBinaryPQExpBuffer
    - escapify
    - pg_encoding_verifymbstr
    - report_result
    - destroyPQExpBuffer
    - strnlen
    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:865,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:867,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:868,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:869,1
    - Dst: lengthof
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:872,1
    - Dst: test_one_vector_escape
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:876,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - tc
    - tv
    argTypes:
    - pe_test_config*
    - pe_test_vector*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 862
    functionDepth: 4
    functionLinenumber: 862
    functionLinenumberEnd: 878
    functionName: test_one_vector
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 0
    functionsReached:
    - PQerrorMessage
    - lengthof
    - PQsetClientEncoding
    - fprintf
    - test_one_vector_escape
    - exit
    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:884,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:886,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:900,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - hint
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 880
    functionDepth: 0
    functionLinenumber: 880
    functionLinenumberEnd: 901
    functionName: usage
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 25
    functionsReached:
    - printf
    - exit
    - 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:919,1
    - Dst: usage
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:924,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:925,1
    - Dst: usage
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:943,1
    - Dst: usage
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:946,1
    - Dst: PQconnectdb
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:948,1
    - Dst: PQstatus
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:950,1
    - Dst: fprintf
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:952,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:953,1
    - Dst: exit
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:954,1
    - Dst: test_gb18030_page_multiple
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:957,1
    - Dst: test_gb18030_json
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:958,1
    - Dst: lengthof
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:960,1
    - Dst: test_one_vector
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:962,1
    - Dst: PQfinish
      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:967,1
    - Dst: printf
      Src: /src/postgres/src/test/modules/test_escape/test_escape.c:968,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 39
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 903
    functionDepth: 5
    functionLinenumber: 903
    functionLinenumberEnd: 970
    functionName: main
    functionSourceFile: /src/postgres/src/test/modules/test_escape/test_escape.c
    functionUses: 2
    functionsReached:
    - getopt_long
    - printf
    - PQerrorMessage
    - test_gb18030_page_multiple
    - lengthof
    - PQfinish
    - test_one_vector
    - fprintf
    - exit
    - usage
    - test_gb18030_json
    - PQstatus
    - PQconnectdb
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - 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:
    - printf
    - isalpha
    - isprint
    - toupper
    - isgraph
    - ispunct
    - iscntrl
    - flag
    - isdigit
    - isupper
    - isxdigit
    - isalnum
    - isspace
    - tolower
    - islower
    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: 2
    functionsReached:
    - fprintf
    - printf
    - describe_char
    - setlocale
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQfinish
      Src: /src/postgres/src/test/examples/testlibpq3.c:50,1
    - Dst: exit
      Src: /src/postgres/src/test/examples/testlibpq3.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 52
    functionName: exit_nicely
    functionSourceFile: /src/postgres/src/test/examples/testlibpq3.c
    functionUses: 26
    functionsReached:
    - PQfinish
    - exit
    linkageType: ''
    returnType: void
    signature: void exit_nicely(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - 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: PQfnumber
      Src: /src/postgres/src/test/examples/testlibpq3.c:71,1
    - Dst: PQntuples
      Src: /src/postgres/src/test/examples/testlibpq3.c:73,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: PQgetvalue
      Src: /src/postgres/src/test/examples/testlibpq3.c:84,1
    - Dst: ntohl
      Src: /src/postgres/src/test/examples/testlibpq3.c:90,1
    - Dst: PQgetlength
      Src: /src/postgres/src/test/examples/testlibpq3.c:100,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlibpq3.c:102,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlibpq3.c:103,1
    - Dst: PQgetlength
      Src: /src/postgres/src/test/examples/testlibpq3.c:104,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlibpq3.c:105,1
    - Dst: PQgetlength
      Src: /src/postgres/src/test/examples/testlibpq3.c:106,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlibpq3.c:107,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlibpq3.c:109,1
    - Dst: printf
      Src: /src/postgres/src/test/examples/testlibpq3.c:110,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - res
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 112
    functionName: show_binary_results
    functionSourceFile: /src/postgres/src/test/examples/testlibpq3.c
    functionUses: 0
    functionsReached:
    - printf
    - PQntuples
    - PQgetvalue
    - PQfnumber
    - ntohl
    - PQgetlength
    linkageType: ''
    returnType: void
    signature: void show_binary_results(PGresult *res)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PQconnectdb
      Src: /src/postgres/src/test/examples/testlibpq3.c:136,1
    - Dst: PQstatus
      Src: /src/postgres/src/test/examples/testlibpq3.c:139,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlibpq3.c:141,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlibpq3.c:141,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/examples/testlibpq3.c:142,1
    - Dst: PQexec
      Src: /src/postgres/src/test/examples/testlibpq3.c:146,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/examples/testlibpq3.c:147,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlibpq3.c:149,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlibpq3.c:149,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq3.c:150,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/examples/testlibpq3.c:151,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq3.c:153,1
    - Dst: PQexecParams
      Src: /src/postgres/src/test/examples/testlibpq3.c:169,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/examples/testlibpq3.c:178,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlibpq3.c:180,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlibpq3.c:180,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq3.c:181,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/examples/testlibpq3.c:182,1
    - Dst: show_binary_results
      Src: /src/postgres/src/test/examples/testlibpq3.c:185,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq3.c:187,1
    - Dst: htonl
      Src: /src/postgres/src/test/examples/testlibpq3.c:200,1
    - Dst: PQexecParams
      Src: /src/postgres/src/test/examples/testlibpq3.c:207,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/test/examples/testlibpq3.c:216,1
    - Dst: fprintf
      Src: /src/postgres/src/test/examples/testlibpq3.c:218,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/test/examples/testlibpq3.c:218,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq3.c:219,1
    - Dst: exit_nicely
      Src: /src/postgres/src/test/examples/testlibpq3.c:220,1
    - Dst: show_binary_results
      Src: /src/postgres/src/test/examples/testlibpq3.c:223,1
    - Dst: PQclear
      Src: /src/postgres/src/test/examples/testlibpq3.c:225,1
    - Dst: PQfinish
      Src: /src/postgres/src/test/examples/testlibpq3.c:228,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 39
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 114
    functionDepth: 2
    functionLinenumber: 114
    functionLinenumberEnd: 231
    functionName: main
    functionSourceFile: /src/postgres/src/test/examples/testlibpq3.c
    functionUses: 2
    functionsReached:
    - show_binary_results
    - PQerrorMessage
    - PQexec
    - PQresultStatus
    - PQfinish
    - PQexecParams
    - fprintf
    - PQstatus
    - PQconnectdb
    - PQclear
    - exit_nicely
    - htonl
    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_open
    - lo_close
    - lo_write
    - open
    - close
    - fprintf
    - read
    - lo_creat
    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_open
    - lo_read
    - malloc
    - lo_lseek
    - lo_close
    - fprintf
    - free
    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_open
    - malloc
    - lo_close
    - lo_lseek
    - lo_write
    - fprintf
    - free
    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:
    - write
    - lo_open
    - lo_read
    - lo_close
    - close
    - open
    - 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: 27
    functionsReached:
    - PQfinish
    - exit
    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: 2
    functionsReached:
    - PQsetdb
    - printf
    - PQerrorMessage
    - PQexec
    - lo_export
    - PQresultStatus
    - overwrite
    - PQfinish
    - fprintf
    - exit
    - pickout
    - PQstatus
    - PQclear
    - lo_import
    - exit_nicely
    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: 28
    functionsReached:
    - PQfinish
    - exit
    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:
    - PQexec
    - PQerrorMessage
    - PQresultStatus
    - fprintf
    - exit
    - PQstatus
    - PQclear
    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: 2
    functionsReached:
    - PQsetdb
    - printf
    - PQexec
    - PQfname
    - PQntuples
    - PQresultStatus
    - PQnfields
    - PQfinish
    - check_prepare_conn
    - PQgetvalue
    - fprintf
    - exit
    - PQclear
    - exit_nicely
    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: 29
    functionsReached:
    - PQfinish
    - exit
    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: 2
    functionsReached:
    - printf
    - PQerrorMessage
    - PQexec
    - PQfname
    - PQresultStatus
    - PQnfields
    - PQntuples
    - PQfinish
    - PQgetvalue
    - fprintf
    - PQstatus
    - PQconnectdb
    - PQclear
    - exit_nicely
    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: 30
    functionsReached:
    - PQfinish
    - exit
    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: 2
    functionsReached:
    - FD_ZERO
    - PQerrorMessage
    - PQexec
    - PQnotifies
    - PQresultStatus
    - PQfreemem
    - PQfinish
    - PQsocket
    - fprintf
    - strerror
    - PQconsumeInput
    - select
    - PQstatus
    - PQconnectdb
    - FD_SET
    - PQclear
    - exit_nicely
    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_open
    - lo_close
    - lo_write
    - open
    - close
    - fprintf
    - read
    - lo_creat
    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_open
    - malloc
    - lo_read
    - PQerrorMessage
    - lo_close
    - lo_lseek64
    - fprintf
    - lo_tell64
    - free
    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_open
    - malloc
    - lo_close
    - PQerrorMessage
    - lo_write
    - lo_lseek64
    - fprintf
    - free
    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_open
    - lo_close
    - PQerrorMessage
    - lo_truncate64
    - 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:
    - write
    - lo_open
    - lo_read
    - lo_close
    - close
    - open
    - 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: 31
    functionsReached:
    - PQfinish
    - exit
    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: 2
    functionsReached:
    - PQsetdb
    - printf
    - PQerrorMessage
    - PQexec
    - lo_export
    - PQresultStatus
    - overwrite
    - my_truncate
    - PQfinish
    - fprintf
    - exit
    - pickout
    - PQstatus
    - PQclear
    - lo_import
    - exit_nicely
    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
      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: 2
    functionsReached:
    - getenv
    - PQresultStatus
    - PQbackendPID
    - termPQExpBuffer
    - fprintf
    - exit
    - pg_malloc0
    - getopt
    - PQsetNoticeProcessor
    - run_testspec
    - psprintf
    - spec_yyparse
    - puts
    - appendPQExpBufferStr
    - PQconnectdb
    - PQstatus
    - setbuf
    - PQclear
    - PQerrorMessage
    - atoi
    - atexit
    - PQexecParams
    - printf
    - PQprepare
    - appendPQExpBuffer
    - check_testspec
    - initPQExpBuffer
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      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: 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
    - fprintf
    - pg_malloc
    - exit
    - bsearch
    - strcmp
    - free
    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
      Src: /src/postgres/src/test/isolation/isolationtester.c:420,1
    - Dst: pg_malloc
      Src: /src/postgres/src/test/isolation/isolationtester.c:421,1
    - Dst: pg_malloc
      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: free
      Src: /src/postgres/src/test/isolation/isolationtester.c:440,1
    - Dst: free
      Src: /src/postgres/src/test/isolation/isolationtester.c:441,1
    - Dst: 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_malloc
    - run_all_permutations_recurse
    - free
    - pg_malloc0
    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_all_permutations_recurse
    - run_permutation
    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
      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: 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:
    - printf
    - PQexec
    - PQerrorMessage
    - printResultSet
    - PQresultStatus
    - try_complete_step
    - fprintf
    - pg_malloc
    - memmove
    - exit
    - abort
    - gettimeofday
    - PQclear
    - PQsendQuery
    - try_complete_steps
    - free
    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:
    - try_complete_step
    - memmove
    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:
    - step_has_blocker
    - PQresultStatus
    - printResultSet
    - PQfreemem
    - snprintf
    - PQexecPrepared
    - fprintf
    - PQgetvalue
    - exit
    - PQgetResult
    - PQisBusy
    - PQnotifies
    - FD_ZERO
    - PQclear
    - PQcancelCreate
    - PQerrorMessage
    - PQntuples
    - PQcancelErrorMessage
    - PQresultErrorMessage
    - PQresultErrorField
    - PQresStatus
    - PQcancelFinish
    - select
    - gettimeofday
    - printf
    - PQsocket
    - PQcancelBlocking
    - PQconsumeInput
    - FD_SET
    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:
    - memset
    - PQprint
    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: free
      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
    - add_stringlist_item
    - spawn_process
    - pfree
    - appendStringInfo
    - snprintf
    - setenv
    - fprintf
    - exit
    - _
    - free
    - find_other_exec
    - initStringInfo
    - unsetenv
    - psprintf
    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:
    - add_stringlist_item
    - fprintf
    - exit
    - strlcpy
    - _
    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: 3
    functionsReached:
    - regression_main
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - int128
    - int128
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 63
    functionName: my_int128_compare
    functionSourceFile: /src/postgres/src/tools/testint128.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int my_int128_compare(int128 x, int128 y)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pg_prng_seed
      Src: /src/postgres/src/tools/testint128.c:78,1
    - Dst: strtol
      Src: /src/postgres/src/tools/testint128.c:81,1
    - Dst: pg_prng_uint64
      Src: /src/postgres/src/tools/testint128.c:87,1
    - Dst: pg_prng_uint64
      Src: /src/postgres/src/tools/testint128.c:88,1
    - Dst: pg_prng_uint64
      Src: /src/postgres/src/tools/testint128.c:89,1
    - Dst: int128_add_uint64
      Src: /src/postgres/src/tools/testint128.c:98,1
    - Dst: printf
      Src: /src/postgres/src/tools/testint128.c:102,1
    - Dst: printf
      Src: /src/postgres/src/tools/testint128.c:103,1
    - Dst: printf
      Src: /src/postgres/src/tools/testint128.c:104,1
    - Dst: int128_add_int64
      Src: /src/postgres/src/tools/testint128.c:113,1
    - Dst: printf
      Src: /src/postgres/src/tools/testint128.c:117,1
    - Dst: printf
      Src: /src/postgres/src/tools/testint128.c:118,1
    - Dst: printf
      Src: /src/postgres/src/tools/testint128.c:119,1
    - Dst: int128_add_int64_mul_int64
      Src: /src/postgres/src/tools/testint128.c:127,1
    - Dst: printf
      Src: /src/postgres/src/tools/testint128.c:131,1
    - Dst: printf
      Src: /src/postgres/src/tools/testint128.c:132,1
    - Dst: printf
      Src: /src/postgres/src/tools/testint128.c:133,1
    - Dst: pg_prng_uint64
      Src: /src/postgres/src/tools/testint128.c:141,1
    - Dst: my_int128_compare
      Src: /src/postgres/src/tools/testint128.c:143,1
    - Dst: int128_compare
      Src: /src/postgres/src/tools/testint128.c:144,1
    - Dst: printf
      Src: /src/postgres/src/tools/testint128.c:146,1
    - Dst: my_int128_compare
      Src: /src/postgres/src/tools/testint128.c:147,1
    - Dst: int128_compare
      Src: /src/postgres/src/tools/testint128.c:148,1
    - Dst: printf
      Src: /src/postgres/src/tools/testint128.c:149,1
    - Dst: printf
      Src: /src/postgres/src/tools/testint128.c:150,1
    - Dst: my_int128_compare
      Src: /src/postgres/src/tools/testint128.c:157,1
    - Dst: int128_compare
      Src: /src/postgres/src/tools/testint128.c:158,1
    - Dst: printf
      Src: /src/postgres/src/tools/testint128.c:160,1
    - Dst: my_int128_compare
      Src: /src/postgres/src/tools/testint128.c:161,1
    - Dst: int128_compare
      Src: /src/postgres/src/tools/testint128.c:162,1
    - Dst: printf
      Src: /src/postgres/src/tools/testint128.c:163,1
    - Dst: printf
      Src: /src/postgres/src/tools/testint128.c:164,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 56
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 170
    functionName: main
    functionSourceFile: /src/postgres/src/tools/testint128.c
    functionUses: 3
    functionsReached:
    - pg_prng_seed
    - printf
    - int128_add_uint64
    - pg_prng_uint64
    - int128_add_int64_mul_int64
    - strtol
    - int128_add_int64
    - int128_compare
    - my_int128_compare
    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:
    - printf
    - getnameinfo
    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:
    - printf
    - print_addr
    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: 3
    functionsReached:
    - MAKEWORD
    - WSAStartup
    - pg_foreach_ifaddr
    - fprintf
    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_reset
    - lookahead
    linkageType: ''
    returnType: int
    signature: int is_func_definition(char *tp)
  - BBCount: 92
    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:415,1
    - Dst: strncpy
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:416,1
    - Dst: isalpha
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:430,1
    - Dst: CHECK_SIZE_TOKEN
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:445,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:450,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:470,1
    - Dst: CHECK_SIZE_TOKEN
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:473,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:476,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:484,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:615,1
    - Dst: isspace
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:631,1
    - Dst: CHECK_SIZE_TOKEN
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:633,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:637,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:648,1
    - Dst: CHECK_SIZE_TOKEN
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:658,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:661,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:669,1
    - Dst: CHECK_SIZE_TOKEN
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:671,1
    CyclomaticComplexity: 146
    EdgeCount: 146
    ICount: 329
    argCount: 1
    argNames:
    - state
    argTypes:
    - struct parser_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 215
    functionDepth: 2
    functionLinenumber: 215
    functionLinenumberEnd: 674
    functionName: lexi
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/lexi.c
    functionUses: 0
    functionsReached:
    - strspn
    - fill_buffer
    - is_func_definition
    - isalpha
    - strrchr
    - isdigit
    - diag2
    - strncpy
    - CHECK_SIZE_TOKEN
    - bsearch
    - isspace
    - memcpy
    - strcmp
    - strchr
    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:680,1
    - Dst: err
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:683,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 676
    functionDepth: 1
    functionLinenumber: 676
    functionLinenumberEnd: 684
    functionName: alloc_typenames
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/lexi.c
    functionUses: 0
    functionsReached:
    - malloc
    - err
    linkageType: ''
    returnType: void
    signature: void alloc_typenames(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: realloc
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:693,1
    - Dst: err
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:696,1
    - Dst: strdup
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:699,1
    - Dst: strcmp
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:700,1
    - Dst: strdup
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:704,1
    - Dst: strcmp
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:709,1
    - Dst: memmove
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:713,1
    - Dst: strdup
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:715,1
    - Dst: err
      Src: /src/postgres/src/tools/pg_bsd_indent/lexi.c:719,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 1
    argNames:
    - key
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 686
    functionDepth: 1
    functionLinenumber: 686
    functionLinenumberEnd: 720
    functionName: add_typename
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/lexi.c
    functionUses: 0
    functionsReached:
    - realloc
    - memmove
    - strdup
    - strcmp
    - err
    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:
    - getenv
    - fclose
    - scan_profile
    - snprintf
    - fopen
    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:
    - isspace
    - getc
    - set_option
    - 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:
    - errx
    - printf
    - atof
    - add_typedefs_from_file
    - atoi
    - isdigit
    - eqin
    - exit
    - add_typename
    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:
    - fclose
    - fprintf
    - strcspn
    - fopen
    - exit
    - add_typename
    - fgets
    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:
    - printf
    - fill_buffer
    - count_spaces
    - compute_label_target
    - CHECK_SIZE_COM
    - compute_code_target
    - count_spaces_until
    - dump_line
    - strncmp
    - memchr
    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: 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: 37
    functionsReached:
    - va_end
    - vfprintf
    - fprintf
    - strerror
    - exit
    - va_start
    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:
    - va_end
    - vfprintf
    - fprintf
    - exit
    - va_start
    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: 99
    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: 8
    functionsReached:
    - errx
    - printf
    - reduce
    - diag2
    - nitems
    linkageType: ''
    returnType: void
    signature: void parse(int tk)
  - BBCount: 15
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    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:
    - count_spaces
    - compute_label_target
    - fwrite
    - pad_output
    - fprintf
    - compute_code_target
    - isspace
    - putc
    - strncmp
    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:
    - errx
    - getc
    - realloc
    - malloc
    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:
    - errx
    - realloc
    - fill_buffer
    - getc
    - putc
    - dump_line
    - strncmp
    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: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:561,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:562,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:563,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:567,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:568,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - level
    - msg
    - a
    - b
    argTypes:
    - int
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 555
    functionDepth: 0
    functionLinenumber: 555
    functionLinenumberEnd: 570
    functionName: diag4
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/io.c
    functionUses: 0
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void diag4(int level, const char *msg, int a, int b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:578,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:579,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:580,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:583,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:584,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:585,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - level
    - msg
    - a
    argTypes:
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 572
    functionDepth: 0
    functionLinenumber: 572
    functionLinenumberEnd: 587
    functionName: diag3
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/io.c
    functionUses: 0
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void diag3(int level, const char *msg, int a)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:595,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:596,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:597,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:600,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:601,1
    - Dst: fprintf
      Src: /src/postgres/src/tools/pg_bsd_indent/io.c:602,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - level
    - msg
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 589
    functionDepth: 0
    functionLinenumber: 589
    functionLinenumberEnd: 604
    functionName: diag2
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/io.c
    functionUses: 2
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void diag2(int level, const char *msg)
  - BBCount: 183
    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:308,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:319,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:324,1
    - Dst: fflush
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:325,1
    - Dst: exit
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:326,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:331,1
    - Dst: isspace
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:347,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:349,1
    - Dst: isblank
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:374,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:393,1
    - Dst: errx
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:440,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:444,1
    - Dst: lexi
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:448,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:460,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:462,1
    - Dst: printf
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:465,1
    - Dst: printf
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:467,1
    - Dst: fflush
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:470,1
    - Dst: exit
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:471,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:483,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:484,1
    - Dst: CHECK_SIZE_CODE
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:495,1
    - Dst: memcpy
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:497,1
    - Dst: CHECK_SIZE_CODE
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:514,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:522,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:529,1
    - Dst: nitems
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:537,1
    - Dst: diag3
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:538,1
    - Dst: nitems
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:539,1
    - Dst: indent_declaration
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:547,1
    - Dst: count_spaces_until
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:559,1
    - Dst: parse
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:569,1
    - Dst: diag3
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:593,1
    - Dst: parse
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:609,1
    - Dst: indent_declaration
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:628,1
    - Dst: CHECK_SIZE_CODE
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:637,1
    - Dst: memcpy
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:638,1
    - Dst: CHECK_SIZE_CODE
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:648,1
    - Dst: memcpy
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:651,1
    - Dst: CHECK_SIZE_LAB
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:699,1
    - Dst: memcpy
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:700,1
    - Dst: indent_declaration
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:732,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:747,1
    - Dst: parse
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:752,1
    - Dst: parse
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:761,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:778,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:785,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:796,1
    - Dst: parse
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:800,1
    - Dst: nitems
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:810,1
    - Dst: diag3
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:811,1
    - Dst: nitems
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:812,1
    - Dst: parse
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:829,1
    - Dst: parse
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:842,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:844,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:853,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:854,1
    - Dst: parse
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:867,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:896,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:897,1
    - Dst: parse
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:902,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:907,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:908,1
    - Dst: parse
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:913,1
    - Dst: parse
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:927,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:930,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:964,1
    - Dst: indent_declaration
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:974,1
    - Dst: parse
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:984,1
    - Dst: CHECK_SIZE_CODE
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:990,1
    - Dst: memcpy
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:993,1
    - Dst: CHECK_SIZE_CODE
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1004,1
    - Dst: memcpy
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1007,1
    - Dst: indent_declaration
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1026,1
    - Dst: count_spaces_until
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1034,1
    - Dst: compute_code_target
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1034,1
    - Dst: dump_line
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1044,1
    - Dst: CHECK_SIZE_LAB
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1045,1
    - Dst: fill_buffer
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1056,1
    - Dst: CHECK_SIZE_LAB
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1059,1
    - Dst: fill_buffer
      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:1068,1
    - Dst: errx
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1112,1
    - Dst: memmove
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1113,1
    - Dst: CHECK_SIZE_LAB
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1127,1
    - Dst: strncmp
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1132,1
    - Dst: nitems
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1133,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1138,1
    - Dst: strncmp
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1140,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1142,1
    - Dst: strncmp
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1148,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1150,1
    - Dst: nitems
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1166,1
    - Dst: strncmp
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1168,1
    - Dst: diag2
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1171,1
    - Dst: pr_comment
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1187,1
    CyclomaticComplexity: 311
    EdgeCount: 311
    ICount: 785
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1195
      start: 65
    functionDepth: 3
    functionLinenumber: 65
    functionLinenumberEnd: 1195
    functionName: main
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/indent.c
    functionUses: 3
    functionsReached:
    - errx
    - diag2
    - exit
    - pr_comment
    - diag3
    - count_spaces_until
    - CHECK_SIZE_LAB
    - alloc_typenames
    - CHECK_SIZE_CODE
    - memmove
    - fopen
    - memcpy
    - set_profile
    - parse
    - strcmp
    - bakcopy
    - err
    - malloc
    - fflush
    - set_option
    - nitems
    - indent_declaration
    - isspace
    - compute_code_target
    - strncmp
    - lexi
    - printf
    - fill_buffer
    - set_defaults
    - dump_line
    - isblank
    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:1216,1
    - Dst: creat
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1219,1
    - Dst: err
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1221,1
    - Dst: read
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1222,1
    - Dst: fileno
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1222,1
    - Dst: write
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1223,1
    - Dst: err
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1224,1
    - Dst: err
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1226,1
    - Dst: close
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1227,1
    - Dst: fclose
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1228,1
    - Dst: fopen
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1231,1
    - Dst: err
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1233,1
    - Dst: fopen
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1235,1
    - Dst: unlink
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1237,1
    - Dst: err
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1238,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1240
      start: 1202
    functionDepth: 1
    functionLinenumber: 1202
    functionLinenumberEnd: 1240
    functionName: bakcopy
    functionSourceFile: /src/postgres/src/tools/pg_bsd_indent/indent.c
    functionUses: 1
    functionsReached:
    - write
    - fclose
    - close
    - creat
    - fopen
    - read
    - fileno
    - unlink
    - sprintf
    - err
    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:1258,1
    - Dst: CHECK_SIZE_CODE
      Src: /src/postgres/src/tools/pg_bsd_indent/indent.c:1266,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 2
    argNames:
    - cur_dec_ind
    - tabs_to_var
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1275
      start: 1242
    functionDepth: 1
    functionLinenumber: 1242
    functionLinenumberEnd: 1275
    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
    - appendPQExpBufferChar
    - Assert
    - appendConnStrVal
    - escape_quotes
    - PQserverVersion
    - PQExpBufferDataBroken
    - createPQExpBuffer
    - PQconninfo
    - termPQExpBuffer
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - pg_fatal
    - free
    - PQExpBufferBroken
    - strcmp
    - initPQExpBuffer
    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
    - PQserverVersion
    - fclose
    - snprintf
    - fwrite
    - fopen
    - pg_fatal
    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
    - PQconninfoParse
    - FindDbnameInConnOpts
    - PQconndefaults
    - pg_fatal
    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:
    - ParallelSlot*::handler
    - Assert
    - PQclear
    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: ParallelSlotClearHandler
      Src: /src/postgres/src/fe_utils/parallel_slot.c:273,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 37
    argCount: 1
    argNames:
    - sa
    argTypes:
    - ParallelSlotArray*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 195
    functionDepth: 2
    functionLinenumber: 195
    functionLinenumberEnd: 279
    functionName: wait_on_slots
    functionSourceFile: /src/postgres/src/fe_utils/parallel_slot.c
    functionUses: 1
    functionsReached:
    - select_loop
    - processQueryResult
    - Assert
    - ParallelSlotClearHandler
    - FD_ISSET
    - SetCancelConn
    - PQsocket
    - ResetCancelConn
    - PQconsumeInput
    - PQgetResult
    - FD_SET
    - FD_ZERO
    - PQisBusy
    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:295,1
    - Dst: pg_log_error
      Src: /src/postgres/src/fe_utils/parallel_slot.c:317,1
    - Dst: exit
      Src: /src/postgres/src/fe_utils/parallel_slot.c:318,1
    - Dst: PQsocket
      Src: /src/postgres/src/fe_utils/parallel_slot.c:322,1
    - Dst: pg_log_error
      Src: /src/postgres/src/fe_utils/parallel_slot.c:326,1
    - Dst: pg_log_error_hint
      Src: /src/postgres/src/fe_utils/parallel_slot.c:328,1
    - Dst: exit
      Src: /src/postgres/src/fe_utils/parallel_slot.c:329,1
    - Dst: executeCommand
      Src: /src/postgres/src/fe_utils/parallel_slot.c:336,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - sa
    - slotno
    - dbname
    argTypes:
    - ParallelSlotArray*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 337
    functionName: connect_slot
    functionSourceFile: /src/postgres/src/fe_utils/parallel_slot.c
    functionUses: 0
    functionsReached:
    - PQsocket
    - pg_log_error_hint
    - connectDatabase
    - exit
    - pg_log_error
    - executeCommand
    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:375,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/parallel_slot.c:376,1
    - Dst: find_matching_idle_slot
      Src: /src/postgres/src/fe_utils/parallel_slot.c:381,1
    - Dst: find_unconnected_slot
      Src: /src/postgres/src/fe_utils/parallel_slot.c:389,1
    - Dst: connect_slot
      Src: /src/postgres/src/fe_utils/parallel_slot.c:392,1
    - Dst: find_any_idle_slot
      Src: /src/postgres/src/fe_utils/parallel_slot.c:398,1
    - Dst: disconnectDatabase
      Src: /src/postgres/src/fe_utils/parallel_slot.c:401,1
    - Dst: connect_slot
      Src: /src/postgres/src/fe_utils/parallel_slot.c:403,1
    - Dst: wait_on_slots
      Src: /src/postgres/src/fe_utils/parallel_slot.c:413,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 2
    argNames:
    - sa
    - dbname
    argTypes:
    - ParallelSlotArray*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 370
    functionDepth: 2
    functionLinenumber: 370
    functionLinenumberEnd: 416
    functionName: ParallelSlotsGetIdle
    functionSourceFile: /src/postgres/src/fe_utils/parallel_slot.c
    functionUses: 3
    functionsReached:
    - find_unconnected_slot
    - Assert
    - connect_slot
    - wait_on_slots
    - disconnectDatabase
    - find_matching_idle_slot
    - find_any_idle_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:433,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/parallel_slot.c:434,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/parallel_slot.c:435,1
    - Dst: palloc0
      Src: /src/postgres/src/fe_utils/parallel_slot.c:437,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: 447
      start: 427
    functionDepth: 1
    functionLinenumber: 427
    functionLinenumberEnd: 447
    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:464,1
    - Dst: disconnectDatabase
      Src: /src/postgres/src/fe_utils/parallel_slot.c:468,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sa
    - conn
    argTypes:
    - ParallelSlotArray*
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 459
    functionDepth: 1
    functionLinenumber: 459
    functionLinenumberEnd: 469
    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:490,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - sa
    argTypes:
    - ParallelSlotArray*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 478
    functionDepth: 1
    functionLinenumber: 478
    functionLinenumberEnd: 492
    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:509,1
    - Dst: ParallelSlotClearHandler
      Src: /src/postgres/src/fe_utils/parallel_slot.c:513,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - sa
    argTypes:
    - ParallelSlotArray*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 500
    functionDepth: 3
    functionLinenumber: 500
    functionLinenumberEnd: 517
    functionName: ParallelSlotsWaitCompletion
    functionSourceFile: /src/postgres/src/fe_utils/parallel_slot.c
    functionUses: 3
    functionsReached:
    - ParallelSlotClearHandler
    - consumeQueryResult
    linkageType: ''
    returnType: bool
    signature: bool ParallelSlotsWaitCompletion(ParallelSlotArray *sa)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/parallel_slot.c:542,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/parallel_slot.c:543,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/fe_utils/parallel_slot.c:549,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/fe_utils/parallel_slot.c:551,1
    - Dst: pg_log_error
      Src: /src/postgres/src/fe_utils/parallel_slot.c:553,1
    - Dst: PQdb
      Src: /src/postgres/src/fe_utils/parallel_slot.c:554,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/fe_utils/parallel_slot.c:554,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/parallel_slot.c:556,1
    - Dst: PQclear
      Src: /src/postgres/src/fe_utils/parallel_slot.c:558,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - res
    - conn
    - context
    argTypes:
    - PGresult*
    - PGconn*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 539
    functionDepth: 1
    functionLinenumber: 539
    functionLinenumberEnd: 564
    functionName: TableCommandResultHandler
    functionSourceFile: /src/postgres/src/fe_utils/parallel_slot.c
    functionUses: 0
    functionsReached:
    - Assert
    - PQerrorMessage
    - PQresultStatus
    - PQresultErrorField
    - PQdb
    - PQclear
    - strcmp
    - pg_log_error
    linkageType: ''
    returnType: bool
    signature: bool TableCommandResultHandler(PGresult *res, PGconn *conn, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      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
    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:
    - conditional_stack_reset
    - free
    linkageType: ''
    returnType: void
    signature: void conditional_stack_destroy(ConditionalStack cstack)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_malloc
      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
    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
      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:
    - fopen
    - pg_fatal
    - palloc0
    - pstrdup
    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:
    - pg_fatal
    - fwrite
    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:
    - pfree
    - Assert
    linkageType: ''
    returnType: void
    signature: void astreamer_plain_writer_free(astreamer *streamer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      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
    - 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: 15
    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: snprintf
      Src: /src/postgres/src/fe_utils/astreamer_file.c:222,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/astreamer_file.c:226,1
    - Dst: extract_directory
      Src: /src/postgres/src/fe_utils/astreamer_file.c:232,1
    - Dst: astreamer_extractor*::link_map
      Src: /src/postgres/src/fe_utils/astreamer_file.c:238,1
    - Dst: extract_link
      Src: /src/postgres/src/fe_utils/astreamer_file.c:239,1
    - Dst: create_file_for_extract
      Src: /src/postgres/src/fe_utils/astreamer_file.c:243,1
    - Dst: astreamer_extractor*::report_output_file
      Src: /src/postgres/src/fe_utils/astreamer_file.c:248,1
    - Dst: fwrite
      Src: /src/postgres/src/fe_utils/astreamer_file.c:256,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_file.c:261,1
    - Dst: fclose
      Src: /src/postgres/src/fe_utils/astreamer_file.c:269,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_file.c:278,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 42
    argCount: 5
    argNames:
    - streamer
    - member
    - data
    - len
    - context
    argTypes:
    - astreamer*
    - astreamer_member*
    - char*
    - int
    - astreamer_archive_context
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 280
    functionName: astreamer_extractor_content
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_file.c
    functionUses: 0
    functionsReached:
    - Assert
    - create_file_for_extract
    - fclose
    - astreamer_extractor*::report_output_file
    - snprintf
    - fwrite
    - extract_link
    - astreamer_extractor*::link_map
    - extract_directory
    - pg_fatal
    - strlen
    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:297,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/astreamer_file.c:299,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/astreamer_file.c:300,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/astreamer_file.c:301,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/astreamer_file.c:302,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/astreamer_file.c:303,1
    - Dst: strspn
      Src: /src/postgres/src/fe_utils/astreamer_file.c:306,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/astreamer_file.c:306,1
    - Dst: strstr
      Src: /src/postgres/src/fe_utils/astreamer_file.c:308,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 7
    argCount: 1
    argNames:
    - pathname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 294
    functionDepth: 1
    functionLinenumber: 294
    functionLinenumberEnd: 314
    functionName: should_allow_existing_directory
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_file.c
    functionUses: 0
    functionsReached:
    - strspn
    - strstr
    - last_dir_separator
    - strcmp
    - strlen
    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:322,1
    - Dst: should_allow_existing_directory
      Src: /src/postgres/src/fe_utils/astreamer_file.c:323,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_file.c:324,1
    - Dst: chmod
      Src: /src/postgres/src/fe_utils/astreamer_file.c:328,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_file.c:329,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 2
    argNames:
    - filename
    - mode
    argTypes:
    - char*
    - mode_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 319
    functionDepth: 2
    functionLinenumber: 319
    functionLinenumberEnd: 332
    functionName: extract_directory
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_file.c
    functionUses: 1
    functionsReached:
    - should_allow_existing_directory
    - mkdir
    - pg_fatal
    - chmod
    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:347,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_file.c:348,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - filename
    - linktarget
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 350
    functionName: extract_link
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_file.c
    functionUses: 1
    functionsReached:
    - pg_fatal
    - symlink
    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:362,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_file.c:364,1
    - Dst: chmod
      Src: /src/postgres/src/fe_utils/astreamer_file.c:367,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_file.c:368,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - filename
    - mode
    argTypes:
    - char*
    - mode_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 373
    functionName: create_file_for_extract
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_file.c
    functionUses: 1
    functionsReached:
    - chmod
    - fopen
    - 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:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 380
    functionDepth: 1
    functionLinenumber: 380
    functionLinenumberEnd: 387
    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:397,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_file.c:398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 399
    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:
    - createPQExpBuffer
    - resetPQExpBuffer
    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:
    - appendPQExpBufferChar
    - getLocalPQExpBuffer
    - pg_encoding_mblen
    - pg_encoding_verifymbchar
    - appendPQExpBufferStr
    - pg_encoding_set_invalid
    - enlargePQExpBuffer
    - ScanKeywordLookup
    - IS_HIGHBIT_SET
    - strlen
    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: 85
    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
    - createPQExpBuffer
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - fmtIdEnc
    - destroyPQExpBuffer
    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: 11
    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:
    - pg_encoding_verifymbchar
    - pg_encoding_set_invalid
    - enlargePQExpBuffer
    - SQL_STR_DOUBLE
    - PQmblen
    - IS_HIGHBIT_SET
    - strlen
    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: 18
    functionsReached:
    - appendPQExpBufferChar
    - PQclientEncoding
    - PQserverVersion
    - appendStringLiteral
    - PQescapeStringConn
    - enlargePQExpBuffer
    - strlen
    - strchr
    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:
    - appendPQExpBufferChar
    - strstr
    - createPQExpBuffer
    - appendPQExpBufferStr
    - destroyPQExpBuffer
    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:584,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/string_utils.c:586,1
    - Dst: _
      Src: /src/postgres/src/fe_utils/string_utils.c:587,1
    - Dst: exit
      Src: /src/postgres/src/fe_utils/string_utils.c:589,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - buf
    - str
    argTypes:
    - PQExpBuffer
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 581
    functionDepth: 1
    functionLinenumber: 581
    functionLinenumberEnd: 591
    functionName: appendShellString
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 10
    functionsReached:
    - appendShellStringNoError
    - exit
    - _
    - 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:607,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/string_utils.c:607,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:609,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:614,1
    - Dst: appendPQExpBufferStr
      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: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:628,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:642,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:656,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:659,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:673,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:674,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:683,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:686,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 42
    argCount: 2
    argNames:
    - buf
    - str
    argTypes:
    - PQExpBuffer
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 593
    functionDepth: 1
    functionLinenumber: 593
    functionLinenumberEnd: 690
    functionName: appendShellStringNoError
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 2
    functionsReached:
    - strspn
    - appendPQExpBufferChar
    - appendPQExpBufferStr
    - strlen
    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:721,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:728,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:731,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:734,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 20
    argCount: 2
    argNames:
    - buf
    - str
    argTypes:
    - PQExpBuffer
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 697
    functionDepth: 1
    functionLinenumber: 697
    functionLinenumberEnd: 735
    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:759,1
    - Dst: _
      Src: /src/postgres/src/fe_utils/string_utils.c:760,1
    - Dst: exit
      Src: /src/postgres/src/fe_utils/string_utils.c:762,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:776,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:783,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:784,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:786,1
    - Dst: appendConnStrVal
      Src: /src/postgres/src/fe_utils/string_utils.c:787,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:795,1
    - Dst: fmtIdEnc
      Src: /src/postgres/src/fe_utils/string_utils.c:795,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:797,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:801,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:802,1
    - Dst: fmtIdEnc
      Src: /src/postgres/src/fe_utils/string_utils.c:802,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:804,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 24
    argCount: 2
    argNames:
    - buf
    - dbname
    argTypes:
    - PQExpBuffer
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 742
    functionDepth: 2
    functionLinenumber: 742
    functionLinenumberEnd: 805
    functionName: appendPsqlMetaConnect
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 3
    functionsReached:
    - appendConnStrVal
    - appendPQExpBufferChar
    - termPQExpBuffer
    - appendPQExpBufferStr
    - fprintf
    - fmtIdEnc
    - exit
    - _
    - initPQExpBuffer
    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:838,1
    - Dst: malloc
      Src: /src/postgres/src/fe_utils/string_utils.c:841,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 45
    argCount: 3
    argNames:
    - atext
    - itemarray
    - nitems
    argTypes:
    - char*
    - char***
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 818
    functionDepth: 1
    functionLinenumber: 818
    functionLinenumberEnd: 888
    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:908,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/fe_utils/string_utils.c:913,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:938,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:944,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:945,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:947,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:950,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 26
    argCount: 2
    argNames:
    - buffer
    - value
    argTypes:
    - PQExpBuffer
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 951
      start: 901
    functionDepth: 1
    functionLinenumber: 901
    functionLinenumberEnd: 951
    functionName: appendPGArray
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 2
    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:973,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/string_utils.c:975,1
    - Dst: strchr
      Src: /src/postgres/src/fe_utils/string_utils.c:991,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1001,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1002,1
    - Dst: fmtId
      Src: /src/postgres/src/fe_utils/string_utils.c:1002,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/string_utils.c:1012,1
    - Dst: fmtId
      Src: /src/postgres/src/fe_utils/string_utils.c:1012,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1013,1
    - Dst: appendStringLiteral
      Src: /src/postgres/src/fe_utils/string_utils.c:1015,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/string_utils.c:1018,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: 1021
      start: 965
    functionDepth: 3
    functionLinenumber: 965
    functionLinenumberEnd: 1021
    functionName: appendReloptionsArray
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 2
    functionsReached:
    - parsePGArray
    - appendStringLiteral
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - fmtId
    - strcmp
    - free
    - strchr
    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:1076,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1077,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1082,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1083,1
    - Dst: patternToSQLRegex
      Src: /src/postgres/src/fe_utils/string_utils.c:1093,1
    - Dst: PQclientEncoding
      Src: /src/postgres/src/fe_utils/string_utils.c:1093,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/string_utils.c:1115,1
    - Dst: WHEREAND
      Src: /src/postgres/src/fe_utils/string_utils.c:1117,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1120,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/fe_utils/string_utils.c:1122,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/fe_utils/string_utils.c:1123,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1124,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1125,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/fe_utils/string_utils.c:1128,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/fe_utils/string_utils.c:1129,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1130,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1131,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1135,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/fe_utils/string_utils.c:1136,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/fe_utils/string_utils.c:1137,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1138,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1139,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/string_utils.c:1149,1
    - Dst: WHEREAND
      Src: /src/postgres/src/fe_utils/string_utils.c:1151,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1152,1
    - Dst: appendStringLiteralConn
      Src: /src/postgres/src/fe_utils/string_utils.c:1153,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/fe_utils/string_utils.c:1154,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1155,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1156,1
    - Dst: WHEREAND
      Src: /src/postgres/src/fe_utils/string_utils.c:1164,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1165,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1169,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1170,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: 1174
      start: 1052
    functionDepth: 3
    functionLinenumber: 1052
    functionLinenumberEnd: 1174
    functionName: processSQLNamePattern
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 8
    functionsReached:
    - PQclientEncoding
    - appendPQExpBufferChar
    - PQserverVersion
    - WHEREAND
    - termPQExpBuffer
    - appendStringLiteralConn
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - patternToSQLRegex
    - strcmp
    - initPQExpBuffer
    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: 1067
      start: 1064
    functionDepth: 0
    functionLinenumber: 1064
    functionLinenumberEnd: 1067
    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:1238,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/string_utils.c:1239,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/string_utils.c:1242,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/string_utils.c:1243,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1260,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1264,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1265,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1275,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1277,1
    - Dst: isupper
      Src: /src/postgres/src/fe_utils/string_utils.c:1284,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1286,1
    - Dst: pg_tolower
      Src: /src/postgres/src/fe_utils/string_utils.c:1287,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1289,1
    - Dst: pg_tolower
      Src: /src/postgres/src/fe_utils/string_utils.c:1290,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1295,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1297,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1302,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1304,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1314,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1316,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1317,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1321,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1332,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1334,1
    - Dst: strchr
      Src: /src/postgres/src/fe_utils/string_utils.c:1353,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1354,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1356,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/fe_utils/string_utils.c:1357,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1361,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/fe_utils/string_utils.c:1362,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1366,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1370,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1371,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1377,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1378,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1385,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/fe_utils/string_utils.c:1387,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1388,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/fe_utils/string_utils.c:1392,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: 1393
      start: 1224
    functionDepth: 1
    functionLinenumber: 1224
    functionLinenumberEnd: 1393
    functionName: patternToSQLRegex
    functionSourceFile: /src/postgres/src/fe_utils/string_utils.c
    functionUses: 4
    functionsReached:
    - appendPQExpBufferChar
    - Assert
    - isupper
    - termPQExpBuffer
    - appendPQExpBufferStr
    - PQmblenBounded
    - pg_tolower
    - initPQExpBuffer
    - strchr
    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
      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: 2
    functionsReached:
    - initStringInfo
    - palloc0
    linkageType: ''
    returnType: astreamer
    signature: 'astreamer *

      astreamer_tar_parser_new(astreamer *next)'
  - BBCount: 13
    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:242,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:244,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:249,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 56
    argCount: 5
    argNames:
    - streamer
    - member
    - data
    - len
    - context
    argTypes:
    - astreamer*
    - astreamer_member*
    - char*
    - int
    - astreamer_archive_context
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 252
    functionName: astreamer_tar_parser_content
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_tar.c
    functionUses: 0
    functionsReached:
    - Min
    - Assert
    - astreamer_tar_header
    - pg_fatal
    - astreamer_content
    - astreamer_buffer_bytes
    - astreamer_buffer_until
    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: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:268,1
    - Dst: strlcpy
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:290,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:292,1
    - Dst: read_tar_number
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:293,1
    - Dst: read_tar_number
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:294,1
    - Dst: read_tar_number
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:295,1
    - Dst: read_tar_number
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:296,1
    - Dst: strlcpy
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:302,1
    - Dst: tarPaddingBytesRequired
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:305,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:308,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - mystreamer
    argTypes:
    - astreamer_tar_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 260
    functionDepth: 1
    functionLinenumber: 260
    functionLinenumberEnd: 313
    functionName: astreamer_tar_header
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_tar.c
    functionUses: 1
    functionsReached:
    - Assert
    - read_tar_number
    - tarPaddingBytesRequired
    - pg_fatal
    - strlcpy
    - astreamer_content
    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:326,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:329,1
    - Dst: astreamer_finalize
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:334,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 335
    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:343,1
    - Dst: astreamer_free
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 345
    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
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:360,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - next
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 366
    functionName: astreamer_tar_archiver_new
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_tar.c
    functionUses: 1
    functionsReached:
    - palloc0
    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:398,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:402,1
    - Dst: tarCreateHeader
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:405,1
    - Dst: time
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:407,1
    - Dst: tarPaddingBytesRequired
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:417,1
    - Dst: memset
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:420,1
    - Dst: memset
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:430,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:435,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: 436
      start: 389
    functionDepth: 1
    functionLinenumber: 389
    functionLinenumberEnd: 436
    functionName: astreamer_tar_archiver_content
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_tar.c
    functionUses: 0
    functionsReached:
    - Assert
    - memset
    - time
    - tarPaddingBytesRequired
    - astreamer_content
    - tarCreateHeader
    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:444,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 441
    functionDepth: 1
    functionLinenumber: 441
    functionLinenumberEnd: 445
    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:453,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:454,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 450
    functionDepth: 1
    functionLinenumber: 450
    functionLinenumberEnd: 455
    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
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - next
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 461
    functionDepth: 0
    functionLinenumber: 461
    functionLinenumberEnd: 472
    functionName: astreamer_tar_terminator_new
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_tar.c
    functionUses: 1
    functionsReached:
    - palloc0
    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:484,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:485,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:488,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: 489
      start: 477
    functionDepth: 1
    functionLinenumber: 477
    functionLinenumberEnd: 489
    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:500,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:501,1
    - Dst: astreamer_finalize
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 495
    functionDepth: 1
    functionLinenumber: 495
    functionLinenumberEnd: 504
    functionName: astreamer_tar_terminator_finalize
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_tar.c
    functionUses: 0
    functionsReached:
    - memset
    - astreamer_finalize
    - astreamer_content
    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:512,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_tar.c:513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 509
    functionDepth: 1
    functionLinenumber: 509
    functionLinenumberEnd: 514
    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: pg_wchar
    signature: pg_wchar 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: 1
    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:
    - sprintf
    - exit
    - utf8_to_unicode
    - PQmblen
    - PQdsplen
    - 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:
    - Assert
    - PQconnectdbParams
    - lengthof
    - PQerrorMessage
    - simple_prompt
    - PQfinish
    - executeQuery
    - pg_fatal
    - PQstatus
    - PQclear
    - PQconnectionNeedsPassword
    - free
    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:
    - Assert
    - PQfinish
    - PQcancelFinish
    - PQcancelBlocking
    - PQtransactionStatus
    - PQcancelCreate
    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
      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_log_error
      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:
    - Assert
    - LZ4F_getErrorName
    - memset
    - LZ4F_createCompressionContext
    - palloc0
    - LZ4F_isError
    - pg_fatal
    - initStringInfo
    - pg_log_error
    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_log_error
      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_log_error
      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:
    - enlargeStringInfo
    - LZ4F_getErrorName
    - LZ4F_compressUpdate
    - LZ4F_isError
    - pg_log_error
    - astreamer_content
    - LZ4F_compressBegin
    - LZ4F_compressBound
    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_log_error
      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:
    - enlargeStringInfo
    - LZ4F_getErrorName
    - LZ4F_compressEnd
    - astreamer_finalize
    - LZ4F_isError
    - pg_log_error
    - astreamer_content
    - LZ4F_compressBound
    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
      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: LZ4F_createDecompressionContext
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:293,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:294,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:295,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:296,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:300,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - next
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 303
    functionName: astreamer_lz4_decompressor_new
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_lz4.c
    functionUses: 2
    functionsReached:
    - Assert
    - LZ4F_getErrorName
    - palloc0
    - LZ4F_isError
    - pg_fatal
    - LZ4F_createDecompressionContext
    - initStringInfo
    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:351,1
    - Dst: LZ4F_isError
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:355,1
    - Dst: pg_log_error
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:356,1
    - Dst: LZ4F_getErrorName
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:357,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:371,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 5
    argNames:
    - streamer
    - member
    - data
    - len
    - context
    argTypes:
    - astreamer*
    - astreamer_member*
    - char*
    - int
    - astreamer_archive_context
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 311
    functionDepth: 1
    functionLinenumber: 311
    functionLinenumberEnd: 386
    functionName: astreamer_lz4_decompressor_content
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_lz4.c
    functionUses: 0
    functionsReached:
    - LZ4F_getErrorName
    - LZ4F_decompress
    - LZ4F_isError
    - pg_log_error
    - astreamer_content
    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: 1
    BranchProfiles: []
    Callsites:
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:402,1
    - Dst: astreamer_finalize
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 391
    functionDepth: 1
    functionLinenumber: 391
    functionLinenumberEnd: 408
    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:419,1
    - Dst: LZ4F_freeDecompressionContext
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:420,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:421,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_lz4.c:422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 413
    functionDepth: 1
    functionLinenumber: 413
    functionLinenumberEnd: 423
    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
    - printf
    - hlp
    - exit
    - strcmp
    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:
    - isspace
    - pg_log_error
    - strtoint
    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:
    - strcmp
    - pg_log_error
    linkageType: ''
    returnType: bool
    signature: bool parse_sync_method(const char *optarg, DataDirSyncMethod *sync_method)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:76,1
    - Dst: palloc0
      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_DStreamOutSize
      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_log_error
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:120,1
    - Dst: ZSTD_getErrorName
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:121,1
    - Dst: exit
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:122,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:133,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 2
    argNames:
    - next
    - compress
    argTypes:
    - astreamer*
    - pg_compress_specification*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 136
    functionName: astreamer_zstd_compressor_new
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_zstd.c
    functionUses: 1
    functionsReached:
    - enlargeStringInfo
    - Assert
    - ZSTD_getErrorName
    - ZSTD_DStreamOutSize
    - ZSTD_isError
    - palloc0
    - ZSTD_createCCtx
    - exit
    - pg_fatal
    - ZSTD_CCtx_setParameter
    - initStringInfo
    - pg_log_error
    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:160,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:169,1
    - Dst: ZSTD_compressStream2
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:181,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:184,1
    - Dst: pg_log_error
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:185,1
    - Dst: ZSTD_getErrorName
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:186,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: 188
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 188
    functionName: astreamer_zstd_compressor_content
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_zstd.c
    functionUses: 0
    functionsReached:
    - ZSTD_getErrorName
    - ZSTD_isError
    - ZSTD_compressBound
    - pg_log_error
    - astreamer_content
    - ZSTD_compressStream2
    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:202,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:211,1
    - Dst: ZSTD_compressStream2
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:222,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:226,1
    - Dst: pg_log_error
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:227,1
    - Dst: ZSTD_getErrorName
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:228,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:234,1
    - Dst: astreamer_finalize
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:239,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 240
    functionName: astreamer_zstd_compressor_finalize
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_zstd.c
    functionUses: 0
    functionsReached:
    - ZSTD_getErrorName
    - ZSTD_isError
    - astreamer_finalize
    - ZSTD_compressBound
    - pg_log_error
    - astreamer_content
    - ZSTD_compressStream2
    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:250,1
    - Dst: ZSTD_freeCCtx
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:251,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:252,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 254
    functionName: astreamer_zstd_compressor_free
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_zstd.c
    functionUses: 0
    functionsReached:
    - astreamer_free
    - ZSTD_freeCCtx
    - pfree
    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:267,1
    - Dst: palloc0
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:269,1
    - Dst: initStringInfo
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:274,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:275,1
    - Dst: ZSTD_DStreamOutSize
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:275,1
    - Dst: ZSTD_createDCtx
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:277,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:279,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:288,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - next
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 291
    functionName: astreamer_zstd_decompressor_new
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_zstd.c
    functionUses: 2
    functionsReached:
    - enlargeStringInfo
    - Assert
    - ZSTD_DStreamOutSize
    - palloc0
    - ZSTD_createDCtx
    - pg_fatal
    - initStringInfo
    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:318,1
    - Dst: ZSTD_decompressStream
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:329,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:332,1
    - Dst: pg_log_error
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:333,1
    - Dst: ZSTD_getErrorName
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:334,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: 336
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 336
    functionName: astreamer_zstd_decompressor_content
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_zstd.c
    functionUses: 0
    functionsReached:
    - ZSTD_getErrorName
    - ZSTD_isError
    - ZSTD_decompressStream
    - pg_log_error
    - astreamer_content
    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:351,1
    - Dst: astreamer_finalize
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:356,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 341
    functionDepth: 1
    functionLinenumber: 341
    functionLinenumberEnd: 357
    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:367,1
    - Dst: ZSTD_freeDCtx
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:368,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:369,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_zstd.c:370,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 362
    functionDepth: 1
    functionLinenumber: 362
    functionLinenumberEnd: 371
    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
      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
    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:
    - pg_malloc
    - strlen
    - strcpy
    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
      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
    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: 2
    functionsReached:
    - pg_free
    linkageType: ''
    returnType: void
    signature: void simple_ptr_list_destroy(SimplePtrList *list)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      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:
    - dup
    - get_gz_error
    - palloc0
    - pstrdup
    - pg_fatal
    - fileno
    - gzopen
    - gzsetparams
    - gzdopen
    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:
    - get_gz_error
    - pg_fatal
    - gzwrite
    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:
    - pfree
    - Assert
    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
      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: inflateInit2
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:268,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:269,1
    - Dst: pg_fatal
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:273,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - next
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 276
    functionName: astreamer_gzip_decompressor_new
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_gzip.c
    functionUses: 2
    functionsReached:
    - Assert
    - palloc0
    - inflateInit2
    - pg_fatal
    - initStringInfo
    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:304,1
    - Dst: inflate
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:317,1
    - Dst: pg_log_error
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:320,1
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:328,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 5
    argNames:
    - streamer
    - member
    - data
    - len
    - context
    argTypes:
    - astreamer*
    - astreamer_member*
    - char*
    - int
    - astreamer_archive_context
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 334
    functionName: astreamer_gzip_decompressor_content
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_gzip.c
    functionUses: 0
    functionsReached:
    - inflate
    - Assert
    - pg_log_error
    - astreamer_content
    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: 1
    BranchProfiles: []
    Callsites:
    - Dst: astreamer_content
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:350,1
    - Dst: astreamer_finalize
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 339
    functionDepth: 1
    functionLinenumber: 339
    functionLinenumberEnd: 356
    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:364,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:365,1
    - Dst: pfree
      Src: /src/postgres/src/fe_utils/astreamer_gzip.c:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 361
    functionDepth: 1
    functionLinenumber: 361
    functionLinenumberEnd: 367
    functionName: astreamer_gzip_decompressor_free
    functionSourceFile: /src/postgres/src/fe_utils/astreamer_gzip.c
    functionUses: 0
    functionsReached:
    - astreamer_free
    - 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:376,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - opaque
    - items
    - size
    argTypes:
    - void*
    - unsigned
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 373
    functionDepth: 0
    functionLinenumber: 373
    functionLinenumberEnd: 377
    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:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - opaque
    - address
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 387
    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:
    - wait_result_is_any_signal
    - pfree
    - fflush
    - wait_result_to_str
    - stat
    - snprintf
    - open
    - BuildRestoreCommand
    - pg_fatal
    - pg_log_error
    - system
    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:284,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - my_str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 285
    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:291,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:296,1
    - Dst: strchr
      Src: /src/postgres/src/fe_utils/print.c:299,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:300,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - my_str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 303
    functionName: additional_numeric_locale_len
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - integer_digits
    - strlen
    - 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:327,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:327,1
    - Dst: pg_strdup
      Src: /src/postgres/src/fe_utils/print.c:328,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:330,1
    - Dst: additional_numeric_locale_len
      Src: /src/postgres/src/fe_utils/print.c:330,1
    - Dst: pg_malloc
      Src: /src/postgres/src/fe_utils/print.c:331,1
    - Dst: integer_digits
      Src: /src/postgres/src/fe_utils/print.c:333,1
    - Dst: strcpy
      Src: /src/postgres/src/fe_utils/print.c:353,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:354,1
    - Dst: strcpy
      Src: /src/postgres/src/fe_utils/print.c:363,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:364,1
    - Dst: strcpy
      Src: /src/postgres/src/fe_utils/print.c:369,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/print.c:372,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:372,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 1
    argNames:
    - my_str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 313
    functionDepth: 2
    functionLinenumber: 313
    functionLinenumberEnd: 375
    functionName: format_numeric_locale
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - strspn
    - Assert
    - pg_strdup
    - pg_malloc
    - additional_numeric_locale_len
    - integer_digits
    - strlen
    - strcpy
    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:382,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:384,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - sep
    - fout
    argTypes:
    - struct separator
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 385
    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:405,1
    - Dst: ngettext
      Src: /src/postgres/src/fe_utils/print.c:406,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - cont
    argTypes:
    - printTableContent*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 397
    functionDepth: 1
    functionLinenumber: 397
    functionLinenumberEnd: 413
    functionName: footers_with_default
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - snprintf
    - ngettext
    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:437,1
    - Dst: print_separator
      Src: /src/postgres/src/fe_utils/print.c:438,1
    - Dst: print_separator
      Src: /src/postgres/src/fe_utils/print.c:447,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:448,1
    - Dst: print_separator
      Src: /src/postgres/src/fe_utils/print.c:462,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:467,1
    - Dst: print_separator
      Src: /src/postgres/src/fe_utils/print.c:470,1
    - Dst: footers_with_default
      Src: /src/postgres/src/fe_utils/print.c:478,1
    - Dst: print_separator
      Src: /src/postgres/src/fe_utils/print.c:488,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:491,1
    - Dst: print_separator
      Src: /src/postgres/src/fe_utils/print.c:504,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:506,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 47
    argCount: 2
    argNames:
    - cont
    - fout
    argTypes:
    - printTableContent*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 421
    functionDepth: 2
    functionLinenumber: 421
    functionLinenumberEnd: 509
    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:528,1
    - Dst: print_separator
      Src: /src/postgres/src/fe_utils/print.c:542,1
    - Dst: print_separator
      Src: /src/postgres/src/fe_utils/print.c:543,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:549,1
    - Dst: print_separator
      Src: /src/postgres/src/fe_utils/print.c:550,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:551,1
    - Dst: print_separator
      Src: /src/postgres/src/fe_utils/print.c:554,1
    - Dst: print_separator
      Src: /src/postgres/src/fe_utils/print.c:566,1
    - Dst: print_separator
      Src: /src/postgres/src/fe_utils/print.c:569,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:570,1
    - Dst: print_separator
      Src: /src/postgres/src/fe_utils/print.c:578,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:580,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 39
    argCount: 2
    argNames:
    - cont
    - fout
    argTypes:
    - printTableContent*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 512
    functionDepth: 1
    functionLinenumber: 512
    functionLinenumberEnd: 583
    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:603,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:605,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:610,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:615,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:617,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:623,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:625,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:627,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: 628
      start: 592
    functionDepth: 0
    functionLinenumber: 592
    functionLinenumberEnd: 628
    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: 70
    BranchProfiles: []
    Callsites:
    - Dst: get_line_style
      Src: /src/postgres/src/fe_utils/print.c:640,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/fe_utils/print.c:681,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/fe_utils/print.c:682,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/fe_utils/print.c:683,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/fe_utils/print.c:684,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/fe_utils/print.c:685,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/fe_utils/print.c:686,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/fe_utils/print.c:687,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/fe_utils/print.c:688,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/fe_utils/print.c:689,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/fe_utils/print.c:690,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/fe_utils/print.c:691,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/fe_utils/print.c:692,1
    - Dst: pg_wcssize
      Src: /src/postgres/src/fe_utils/print.c:717,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:717,1
    - Dst: pg_wcssize
      Src: /src/postgres/src/fe_utils/print.c:741,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:741,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/fe_utils/print.c:788,1
    - Dst: pg_malloc
      Src: /src/postgres/src/fe_utils/print.c:791,1
    - Dst: isatty
      Src: /src/postgres/src/fe_utils/print.c:805,1
    - Dst: fileno
      Src: /src/postgres/src/fe_utils/print.c:805,1
    - Dst: ioctl
      Src: /src/postgres/src/fe_utils/print.c:814,1
    - Dst: fileno
      Src: /src/postgres/src/fe_utils/print.c:814,1
    - Dst: print_aligned_vertical
      Src: /src/postgres/src/fe_utils/print.c:880,1
    - Dst: PageOutput
      Src: /src/postgres/src/fe_utils/print.c:888,1
    - Dst: pg_wcssize
      Src: /src/postgres/src/fe_utils/print.c:902,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:902,1
    - Dst: IsPagerNeeded
      Src: /src/postgres/src/fe_utils/print.c:928,1
    - Dst: pg_wcssize
      Src: /src/postgres/src/fe_utils/print.c:941,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:941,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:945,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:948,1
    - Dst: _print_horizontal_line
      Src: /src/postgres/src/fe_utils/print.c:959,1
    - Dst: pg_wcsformat
      Src: /src/postgres/src/fe_utils/print.c:963,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:964,1
    - Dst: memset
      Src: /src/postgres/src/fe_utils/print.c:970,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:974,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:983,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:991,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1001,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1004,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1008,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1013,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1014,1
    - Dst: _print_horizontal_line
      Src: /src/postgres/src/fe_utils/print.c:1017,1
    - Dst: pg_wcsformat
      Src: /src/postgres/src/fe_utils/print.c:1035,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:1035,1
    - Dst: memset
      Src: /src/postgres/src/fe_utils/print.c:1040,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1053,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1069,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1071,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1073,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1080,1
    - Dst: strlen_max_width
      Src: /src/postgres/src/fe_utils/print.c:1086,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1101,1
    - Dst: fwrite
      Src: /src/postgres/src/fe_utils/print.c:1102,1
    - Dst: fwrite
      Src: /src/postgres/src/fe_utils/print.c:1108,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1146,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1152,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1154,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1156,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1162,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1164,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1166,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1168,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1174,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1175,1
    - Dst: footers_with_default
      Src: /src/postgres/src/fe_utils/print.c:1181,1
    - Dst: _print_horizontal_line
      Src: /src/postgres/src/fe_utils/print.c:1184,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1193,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1196,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:1203,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:1204,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:1206,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:1207,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:1208,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:1209,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:1210,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:1211,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:1212,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:1213,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:1214,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:1215,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:1216,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:1217,1
    - Dst: ClosePager
      Src: /src/postgres/src/fe_utils/print.c:1220,1
    CyclomaticComplexity: 122
    EdgeCount: 122
    ICount: 279
    argCount: 3
    argNames:
    - cont
    - fout
    - is_pager
    argTypes:
    - printTableContent*
    - FILE*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1221
      start: 634
    functionDepth: 2
    functionLinenumber: 634
    functionLinenumberEnd: 1221
    functionName: print_aligned_text
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - IsPagerNeeded
    - get_line_style
    - fprintf
    - pg_malloc0
    - strlen
    - print_aligned_vertical
    - _print_horizontal_line
    - ioctl
    - PageOutput
    - strlen_max_width
    - ClosePager
    - fputc
    - fileno
    - pg_wcssize
    - pg_wcsformat
    - fputs
    - fwrite
    - isatty
    - pg_malloc
    - footers_with_default
    - memset
    - free
    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:1233,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1239,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1241,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1246,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1248,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1255,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1261,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1266,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1270,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1275,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1280,1
    - Dst: Min
      Src: /src/postgres/src/fe_utils/print.c:1295,1
    - Dst: Max
      Src: /src/postgres/src/fe_utils/print.c:1295,1
    - Dst: Min
      Src: /src/postgres/src/fe_utils/print.c:1297,1
    - Dst: Max
      Src: /src/postgres/src/fe_utils/print.c:1297,1
    - Dst: Min
      Src: /src/postgres/src/fe_utils/print.c:1305,1
    - Dst: Max
      Src: /src/postgres/src/fe_utils/print.c:1305,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1315,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1317,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1320,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: 1321
      start: 1224
    functionDepth: 1
    functionLinenumber: 1224
    functionLinenumberEnd: 1321
    functionName: print_aligned_vertical_line
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - Min
    - fputs
    - fputc
    - fprintf
    - get_line_style
    - Max
    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: 68
    BranchProfiles: []
    Callsites:
    - Dst: get_line_style
      Src: /src/postgres/src/fe_utils/print.c:1329,1
    - Dst: footers_with_default
      Src: /src/postgres/src/fe_utils/print.c:1357,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1364,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1367,1
    - Dst: IsPagerNeeded
      Src: /src/postgres/src/fe_utils/print.c:1379,1
    - Dst: pg_wcssize
      Src: /src/postgres/src/fe_utils/print.c:1390,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:1390,1
    - Dst: pg_wcssize
      Src: /src/postgres/src/fe_utils/print.c:1410,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:1410,1
    - Dst: pg_malloc
      Src: /src/postgres/src/fe_utils/print.c:1427,1
    - Dst: pg_malloc
      Src: /src/postgres/src/fe_utils/print.c:1428,1
    - Dst: pg_malloc
      Src: /src/postgres/src/fe_utils/print.c:1430,1
    - Dst: pg_malloc
      Src: /src/postgres/src/fe_utils/print.c:1431,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1437,1
    - Dst: isatty
      Src: /src/postgres/src/fe_utils/print.c:1445,1
    - Dst: fileno
      Src: /src/postgres/src/fe_utils/print.c:1445,1
    - Dst: ioctl
      Src: /src/postgres/src/fe_utils/print.c:1454,1
    - Dst: fileno
      Src: /src/postgres/src/fe_utils/print.c:1454,1
    - Dst: log10
      Src: /src/postgres/src/fe_utils/print.c:1515,1
    - Dst: print_aligned_vertical_line
      Src: /src/postgres/src/fe_utils/print.c:1616,1
    - Dst: print_aligned_vertical_line
      Src: /src/postgres/src/fe_utils/print.c:1620,1
    - Dst: pg_wcsformat
      Src: /src/postgres/src/fe_utils/print.c:1625,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:1626,1
    - Dst: pg_wcsformat
      Src: /src/postgres/src/fe_utils/print.c:1629,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:1629,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1644,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1657,1
    - Dst: strlen_max_width
      Src: /src/postgres/src/fe_utils/print.c:1662,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1664,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1671,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1681,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1689,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1707,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1714,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1716,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1718,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1731,1
    - Dst: strlen_max_width
      Src: /src/postgres/src/fe_utils/print.c:1736,1
    - Dst: fwrite
      Src: /src/postgres/src/fe_utils/print.c:1738,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1754,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1755,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1765,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1766,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1778,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1779,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1786,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1788,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1797,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1799,1
    - Dst: print_aligned_vertical_line
      Src: /src/postgres/src/fe_utils/print.c:1807,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1816,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:1818,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1821,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:1824,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:1825,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:1826,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:1827,1
    - Dst: ClosePager
      Src: /src/postgres/src/fe_utils/print.c:1830,1
    CyclomaticComplexity: 111
    EdgeCount: 111
    ICount: 219
    argCount: 3
    argNames:
    - cont
    - fout
    - is_pager
    argTypes:
    - printTableContent*
    - FILE*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1831
      start: 1323
    functionDepth: 2
    functionLinenumber: 1323
    functionLinenumberEnd: 1831
    functionName: print_aligned_vertical
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 1
    functionsReached:
    - IsPagerNeeded
    - fprintf
    - get_line_style
    - print_aligned_vertical_line
    - strlen
    - ioctl
    - ClosePager
    - strlen_max_width
    - fputc
    - fileno
    - log10
    - pg_wcssize
    - pg_wcsformat
    - fputs
    - fwrite
    - isatty
    - pg_malloc
    - footers_with_default
    - free
    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:1844,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1848,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1849,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1851,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - str
    - fout
    argTypes:
    - char*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1852
      start: 1839
    functionDepth: 0
    functionLinenumber: 1839
    functionLinenumberEnd: 1852
    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:1870,1
    - Dst: strcspn
      Src: /src/postgres/src/fe_utils/print.c:1871,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:1871,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/print.c:1872,1
    - Dst: csv_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:1874,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1876,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 4
    argCount: 3
    argNames:
    - str
    - fout
    - sep
    argTypes:
    - char*
    - FILE*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1877
      start: 1854
    functionDepth: 1
    functionLinenumber: 1854
    functionLinenumberEnd: 1877
    functionName: csv_print_field
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - fputs
    - strcspn
    - csv_escaped_print
    - strcmp
    - strlen
    - strchr
    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:1902,1
    - Dst: csv_print_field
      Src: /src/postgres/src/fe_utils/print.c:1903,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1905,1
    - Dst: csv_print_field
      Src: /src/postgres/src/fe_utils/print.c:1911,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1913,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1915,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - cont
    - fout
    argTypes:
    - printTableContent*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1917
      start: 1879
    functionDepth: 2
    functionLinenumber: 1879
    functionLinenumberEnd: 1917
    functionName: print_csv_text
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - csv_print_field
    - fputc
    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:1932,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1936,1
    - Dst: csv_print_field
      Src: /src/postgres/src/fe_utils/print.c:1939,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1941,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - cont
    - fout
    argTypes:
    - printTableContent*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1943
      start: 1919
    functionDepth: 2
    functionLinenumber: 1919
    functionLinenumberEnd: 1943
    functionName: print_csv_vertical
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - csv_print_field
    - fputc
    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:1962,1
    - 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:1979,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:1981,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:1984,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 2
    argNames:
    - in
    - fout
    argTypes:
    - char*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1989
      start: 1951
    functionDepth: 0
    functionLinenumber: 1951
    functionLinenumberEnd: 1989
    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:2006,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:2008,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2009,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2014,1
    - Dst: html_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2015,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2016,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2022,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2025,1
    - Dst: html_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2026,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2027,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2029,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2040,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:2043,1
    - Dst: strspn
      Src: /src/postgres/src/fe_utils/print.c:2045,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2046,1
    - Dst: html_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2048,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2050,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2053,1
    - Dst: footers_with_default
      Src: /src/postgres/src/fe_utils/print.c:2058,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2060,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2067,1
    - Dst: html_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2070,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2071,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2073,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2076,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 49
    argCount: 2
    argNames:
    - cont
    - fout
    argTypes:
    - printTableContent*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2078
      start: 1992
    functionDepth: 2
    functionLinenumber: 1992
    functionLinenumberEnd: 2078
    functionName: print_html_text
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - strspn
    - fputs
    - fputc
    - html_escaped_print
    - fprintf
    - footers_with_default
    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:2096,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:2098,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2099,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2104,1
    - Dst: html_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2105,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2106,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:2118,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2122,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2124,1
    - Dst: html_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2126,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2127,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:2129,1
    - Dst: strspn
      Src: /src/postgres/src/fe_utils/print.c:2131,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2132,1
    - Dst: html_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2134,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2136,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2141,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2148,1
    - Dst: html_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2151,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2152,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2154,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2157,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 43
    argCount: 2
    argNames:
    - cont
    - fout
    argTypes:
    - printTableContent*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2159
      start: 2081
    functionDepth: 1
    functionLinenumber: 2081
    functionLinenumberEnd: 2159
    functionName: print_html_vertical
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - strspn
    - fputs
    - fputc
    - 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:2177,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2180,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - in
    - fout
    argTypes:
    - char*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2183
      start: 2167
    functionDepth: 0
    functionLinenumber: 2167
    functionLinenumberEnd: 2183
    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:2199,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2204,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2205,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2206,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:2210,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2214,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:2215,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2217,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2221,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:2231,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2239,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2240,1
    - Dst: asciidoc_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2241,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2243,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2257,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2258,1
    - Dst: strspn
      Src: /src/postgres/src/fe_utils/print.c:2261,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2264,1
    - Dst: asciidoc_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2267,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2270,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2273,1
    - Dst: footers_with_default
      Src: /src/postgres/src/fe_utils/print.c:2277,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2284,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2287,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2288,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2290,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 67
    argCount: 2
    argNames:
    - cont
    - fout
    argTypes:
    - printTableContent*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2293
      start: 2185
    functionDepth: 2
    functionLinenumber: 2185
    functionLinenumberEnd: 2293
    functionName: print_asciidoc_text
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - strspn
    - asciidoc_escaped_print
    - fputs
    - fprintf
    - footers_with_default
    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:2310,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2315,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2316,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2317,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2321,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2325,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:2335,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:2346,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2350,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2353,1
    - Dst: asciidoc_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2354,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:2356,1
    - Dst: strspn
      Src: /src/postgres/src/fe_utils/print.c:2358,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2359,1
    - Dst: asciidoc_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2361,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2362,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2365,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2374,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2377,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2378,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2380,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 52
    argCount: 2
    argNames:
    - cont
    - fout
    argTypes:
    - printTableContent*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2383
      start: 2295
    functionDepth: 1
    functionLinenumber: 2295
    functionLinenumberEnd: 2383
    functionName: print_asciidoc_vertical
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - strspn
    - asciidoc_escaped_print
    - 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:2405,1
    - 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:2445,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2448,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 48
    argCount: 2
    argNames:
    - in
    - fout
    argTypes:
    - char*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2450
      start: 2391
    functionDepth: 0
    functionLinenumber: 2391
    functionLinenumberEnd: 2450
    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:2472,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2473,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2474,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2478,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2481,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2484,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2486,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2489,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2491,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2494,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2502,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2503,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2504,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2505,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2507,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2508,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2515,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2519,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2521,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2526,1
    - Dst: footers_with_default
      Src: /src/postgres/src/fe_utils/print.c:2531,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2534,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2536,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2545,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2546,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2550,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 59
    argCount: 2
    argNames:
    - cont
    - fout
    argTypes:
    - printTableContent*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2552
      start: 2453
    functionDepth: 2
    functionLinenumber: 2453
    functionLinenumberEnd: 2552
    functionName: print_latex_text
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - latex_escaped_print
    - footers_with_default
    - fputc
    - fputs
    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:2580,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2583,1
    - Dst: strspn
      Src: /src/postgres/src/fe_utils/print.c:2594,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2599,1
    - Dst: fwrite
      Src: /src/postgres/src/fe_utils/print.c:2600,1
    - Dst: strcspn
      Src: /src/postgres/src/fe_utils/print.c:2600,1
    - Dst: strcspn
      Src: /src/postgres/src/fe_utils/print.c:2603,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2605,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2610,1
    - Dst: fwrite
      Src: /src/postgres/src/fe_utils/print.c:2611,1
    - Dst: strcspn
      Src: /src/postgres/src/fe_utils/print.c:2611,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2613,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2616,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2619,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2622,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2626,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2628,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2635,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2639,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2640,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2641,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2642,1
    - Dst: fputs
      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:2649,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2653,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2654,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2655,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2656,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2658,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2661,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2662,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2669,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2670,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2671,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2672,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2673,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2674,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2676,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2677,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2678,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2679,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2680,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2681,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2686,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2687,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2697,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2698,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2699,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2700,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2703,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2705,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2712,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 96
    argCount: 2
    argNames:
    - cont
    - fout
    argTypes:
    - printTableContent*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2713
      start: 2560
    functionDepth: 1
    functionLinenumber: 2560
    functionLinenumberEnd: 2713
    functionName: print_latex_longtable_text
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - strspn
    - fputs
    - fputc
    - fwrite
    - strcspn
    - latex_escaped_print
    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:2736,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2737,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2738,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2742,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2744,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2746,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2748,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2749,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2764,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:2765,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:2768,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2771,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2774,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2775,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2776,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2777,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2783,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2785,1
    - Dst: latex_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2794,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2795,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2799,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 51
    argCount: 2
    argNames:
    - cont
    - fout
    argTypes:
    - printTableContent*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2801
      start: 2716
    functionDepth: 1
    functionLinenumber: 2716
    functionLinenumberEnd: 2801
    functionName: print_latex_vertical
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - latex_escaped_print
    - fputc
    - fputs
    - 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:2818,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2821,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - in
    - fout
    argTypes:
    - char*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2823
      start: 2809
    functionDepth: 0
    functionLinenumber: 2809
    functionLinenumberEnd: 2823
    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:2845,1
    - Dst: troff_ms_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2846,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2847,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2851,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2853,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2855,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2859,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2861,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2863,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2871,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2872,1
    - Dst: troff_ms_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2873,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2874,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2876,1
    - Dst: troff_ms_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2883,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2887,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2892,1
    - Dst: footers_with_default
      Src: /src/postgres/src/fe_utils/print.c:2897,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2899,1
    - Dst: troff_ms_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2908,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2909,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2913,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 51
    argCount: 2
    argNames:
    - cont
    - fout
    argTypes:
    - printTableContent*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2915
      start: 2826
    functionDepth: 2
    functionLinenumber: 2826
    functionLinenumberEnd: 2915
    functionName: print_troff_ms_text
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 0
    functionsReached:
    - troff_ms_escaped_print
    - fputc
    - fputs
    - footers_with_default
    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:2939,1
    - Dst: troff_ms_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2940,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2941,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2945,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2947,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2949,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2953,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2971,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2973,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2974,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:2977,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2980,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2988,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2990,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:2992,1
    - Dst: troff_ms_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2997,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:2998,1
    - Dst: troff_ms_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:2999,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:3001,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:3006,1
    - Dst: troff_ms_escaped_print
      Src: /src/postgres/src/fe_utils/print.c:3015,1
    - Dst: fputc
      Src: /src/postgres/src/fe_utils/print.c:3016,1
    - Dst: fputs
      Src: /src/postgres/src/fe_utils/print.c:3020,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 62
    argCount: 2
    argNames:
    - cont
    - fout
    argTypes:
    - printTableContent*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3022
      start: 2918
    functionDepth: 1
    functionLinenumber: 2918
    functionLinenumberEnd: 3022
    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:3042,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3044
      start: 3038
    functionDepth: 0
    functionLinenumber: 3038
    functionLinenumberEnd: 3044
    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:3065,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3067
      start: 3061
    functionDepth: 0
    functionLinenumber: 3061
    functionLinenumberEnd: 3067
    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: 3078
      start: 3074
    functionDepth: 0
    functionLinenumber: 3074
    functionLinenumberEnd: 3078
    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: 7
    BranchProfiles: []
    Callsites:
    - Dst: isatty
      Src: /src/postgres/src/fe_utils/print.c:3092,1
    - Dst: fileno
      Src: /src/postgres/src/fe_utils/print.c:3092,1
    - Dst: isatty
      Src: /src/postgres/src/fe_utils/print.c:3092,1
    - Dst: fileno
      Src: /src/postgres/src/fe_utils/print.c:3092,1
    - Dst: ioctl
      Src: /src/postgres/src/fe_utils/print.c:3100,1
    - Dst: fileno
      Src: /src/postgres/src/fe_utils/print.c:3100,1
    - Dst: getenv
      Src: /src/postgres/src/fe_utils/print.c:3111,1
    - Dst: getenv
      Src: /src/postgres/src/fe_utils/print.c:3113,1
    - Dst: strspn
      Src: /src/postgres/src/fe_utils/print.c:3119,1
    - Dst: strlen
      Src: /src/postgres/src/fe_utils/print.c:3119,1
    - Dst: fflush
      Src: /src/postgres/src/fe_utils/print.c:3122,1
    - Dst: disable_sigpipe_trap
      Src: /src/postgres/src/fe_utils/print.c:3123,1
    - Dst: popen
      Src: /src/postgres/src/fe_utils/print.c:3124,1
    - Dst: restore_sigpipe_trap
      Src: /src/postgres/src/fe_utils/print.c:3128,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 22
    argCount: 2
    argNames:
    - lines
    - topt
    argTypes:
    - int
    - printTableOpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3133
      start: 3088
    functionDepth: 1
    functionLinenumber: 3088
    functionLinenumberEnd: 3133
    functionName: PageOutput
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 8
    functionsReached:
    - getenv
    - strspn
    - ioctl
    - fflush
    - restore_sigpipe_trap
    - isatty
    - popen
    - fileno
    - disable_sigpipe_trap
    - strlen
    linkageType: ''
    returnType: FILE
    signature: 'FILE *

      PageOutput(int lines, const printTableOpt *topt)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:3154,1
    - Dst: _
      Src: /src/postgres/src/fe_utils/print.c:3154,1
    - Dst: pclose
      Src: /src/postgres/src/fe_utils/print.c:3156,1
    - Dst: restore_sigpipe_trap
      Src: /src/postgres/src/fe_utils/print.c:3157,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - pagerpipe
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3159
      start: 3140
    functionDepth: 1
    functionLinenumber: 3140
    functionLinenumberEnd: 3159
    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
      Src: /src/postgres/src/fe_utils/print.c:3182,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:3188,1
    - Dst: _
      Src: /src/postgres/src/fe_utils/print.c:3188,1
    - Dst: exit
      Src: /src/postgres/src/fe_utils/print.c:3191,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/fe_utils/print.c:3193,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/fe_utils/print.c:3198,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: 3205
      start: 3171
    functionDepth: 1
    functionLinenumber: 3171
    functionLinenumberEnd: 3205
    functionName: printTableInit
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 5
    functionsReached:
    - exit
    - _
    - pg_malloc0
    - 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:3229,1
    - Dst: _
      Src: /src/postgres/src/fe_utils/print.c:3229,1
    - Dst: exit
      Src: /src/postgres/src/fe_utils/print.c:3232,1
    - Dst: mbvalidate
      Src: /src/postgres/src/fe_utils/print.c:3235,1
    - Dst: _
      Src: /src/postgres/src/fe_utils/print.c:3239,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - content
    - header
    - translate
    - align
    argTypes:
    - printTableContent*
    - char*
    - bool
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3245
      start: 3219
    functionDepth: 3
    functionLinenumber: 3219
    functionLinenumberEnd: 3245
    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:3272,1
    - Dst: _
      Src: /src/postgres/src/fe_utils/print.c:3272,1
    - Dst: exit
      Src: /src/postgres/src/fe_utils/print.c:3274,1
    - Dst: mbvalidate
      Src: /src/postgres/src/fe_utils/print.c:3277,1
    - Dst: _
      Src: /src/postgres/src/fe_utils/print.c:3282,1
    - Dst: pg_malloc0
      Src: /src/postgres/src/fe_utils/print.c:3289,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - content
    - cell
    - translate
    - mustfree
    argTypes:
    - printTableContent*
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3295
      start: 3259
    functionDepth: 3
    functionLinenumber: 3259
    functionLinenumberEnd: 3295
    functionName: printTableAddCell
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 4
    functionsReached:
    - fprintf
    - exit
    - pg_malloc0
    - _
    - mbvalidate
    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
      Src: /src/postgres/src/fe_utils/print.c:3314,1
    - Dst: pg_strdup
      Src: /src/postgres/src/fe_utils/print.c:3315,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - content
    - footer
    argTypes:
    - printTableContent*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3323
      start: 3309
    functionDepth: 1
    functionLinenumber: 3309
    functionLinenumberEnd: 3323
    functionName: printTableAddFooter
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 3
    functionsReached:
    - pg_strdup
    - pg_malloc0
    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:3339,1
    - Dst: pg_strdup
      Src: /src/postgres/src/fe_utils/print.c:3340,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/fe_utils/print.c:3343,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - content
    - footer
    argTypes:
    - printTableContent*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3344
      start: 3334
    functionDepth: 2
    functionLinenumber: 3334
    functionLinenumberEnd: 3344
    functionName: printTableSetFooter
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 1
    functionsReached:
    - pg_strdup
    - free
    - printTableAddFooter
    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:3363,1
    - Dst: unconstify
      Src: /src/postgres/src/fe_utils/print.c:3363,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:3365,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:3368,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:3369,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:3370,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:3389,1
    - Dst: free
      Src: /src/postgres/src/fe_utils/print.c:3390,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 1
    argNames:
    - content
    argTypes:
    - printTableContent*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3395
      start: 3352
    functionDepth: 1
    functionLinenumber: 3352
    functionLinenumberEnd: 3395
    functionName: printTableCleanup
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 5
    functionsReached:
    - unconstify
    - free
    linkageType: ''
    returnType: void
    signature: void printTableCleanup(printTableContent *const content)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PageOutput
      Src: /src/postgres/src/fe_utils/print.c:3427,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 5
    argNames:
    - cont
    - extra_lines
    - expanded
    - fout
    - is_pager
    argTypes:
    - printTableContent*
    - int
    - bool
    - FILE**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3432
      start: 3402
    functionDepth: 2
    functionLinenumber: 3402
    functionLinenumberEnd: 3432
    functionName: IsPagerNeeded
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 2
    functionsReached:
    - PageOutput
    linkageType: ''
    returnType: void
    signature: "void IsPagerNeeded(const printTableContent *cont, int extra_lines,
      bool expanded,\n\t\t\t  FILE **fout, bool *is_pager)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: IsPagerNeeded
      Src: /src/postgres/src/fe_utils/print.c:3459,1
    - Dst: clearerr
      Src: /src/postgres/src/fe_utils/print.c:3464,1
    - Dst: print_aligned_text
      Src: /src/postgres/src/fe_utils/print.c:3469,1
    - Dst: print_unaligned_vertical
      Src: /src/postgres/src/fe_utils/print.c:3475,1
    - Dst: print_unaligned_text
      Src: /src/postgres/src/fe_utils/print.c:3477,1
    - Dst: print_aligned_vertical
      Src: /src/postgres/src/fe_utils/print.c:3489,1
    - Dst: print_aligned_text
      Src: /src/postgres/src/fe_utils/print.c:3491,1
    - Dst: print_csv_vertical
      Src: /src/postgres/src/fe_utils/print.c:3495,1
    - Dst: print_csv_text
      Src: /src/postgres/src/fe_utils/print.c:3497,1
    - Dst: print_html_vertical
      Src: /src/postgres/src/fe_utils/print.c:3501,1
    - Dst: print_html_text
      Src: /src/postgres/src/fe_utils/print.c:3503,1
    - Dst: print_asciidoc_vertical
      Src: /src/postgres/src/fe_utils/print.c:3507,1
    - Dst: print_asciidoc_text
      Src: /src/postgres/src/fe_utils/print.c:3509,1
    - Dst: print_latex_vertical
      Src: /src/postgres/src/fe_utils/print.c:3513,1
    - Dst: print_latex_text
      Src: /src/postgres/src/fe_utils/print.c:3515,1
    - Dst: print_latex_vertical
      Src: /src/postgres/src/fe_utils/print.c:3519,1
    - Dst: print_latex_longtable_text
      Src: /src/postgres/src/fe_utils/print.c:3521,1
    - Dst: print_troff_ms_vertical
      Src: /src/postgres/src/fe_utils/print.c:3525,1
    - Dst: print_troff_ms_text
      Src: /src/postgres/src/fe_utils/print.c:3527,1
    - Dst: fprintf
      Src: /src/postgres/src/fe_utils/print.c:3530,1
    - Dst: _
      Src: /src/postgres/src/fe_utils/print.c:3530,1
    - Dst: exit
      Src: /src/postgres/src/fe_utils/print.c:3532,1
    - Dst: ClosePager
      Src: /src/postgres/src/fe_utils/print.c:3536,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: 3537
      start: 3442
    functionDepth: 3
    functionLinenumber: 3442
    functionLinenumberEnd: 3537
    functionName: printTable
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 5
    functionsReached:
    - IsPagerNeeded
    - print_html_text
    - print_asciidoc_vertical
    - fprintf
    - exit
    - print_html_vertical
    - print_aligned_vertical
    - ClosePager
    - print_aligned_text
    - print_csv_text
    - _
    - print_latex_vertical
    - clearerr
    - print_asciidoc_text
    - print_troff_ms_vertical
    - print_csv_vertical
    - print_unaligned_text
    - print_latex_longtable_text
    - print_latex_text
    - print_unaligned_vertical
    - print_troff_ms_text
    linkageType: ''
    returnType: void
    signature: "void printTable(const printTableContent *cont,\n\t\t   FILE *fout,
      bool is_pager, FILE *flog)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: printTableInit
      Src: /src/postgres/src/fe_utils/print.c:3560,1
    - Dst: PQnfields
      Src: /src/postgres/src/fe_utils/print.c:3561,1
    - Dst: PQntuples
      Src: /src/postgres/src/fe_utils/print.c:3561,1
    - Dst: Assert
      Src: /src/postgres/src/fe_utils/print.c:3564,1
    - Dst: printTableAddHeader
      Src: /src/postgres/src/fe_utils/print.c:3569,1
    - Dst: PQfname
      Src: /src/postgres/src/fe_utils/print.c:3569,1
    - Dst: column_type_alignment
      Src: /src/postgres/src/fe_utils/print.c:3571,1
    - Dst: PQftype
      Src: /src/postgres/src/fe_utils/print.c:3571,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/fe_utils/print.c:3583,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/fe_utils/print.c:3587,1
    - Dst: format_numeric_locale
      Src: /src/postgres/src/fe_utils/print.c:3590,1
    - Dst: printTableAddCell
      Src: /src/postgres/src/fe_utils/print.c:3596,1
    - Dst: printTableAddFooter
      Src: /src/postgres/src/fe_utils/print.c:3606,1
    - Dst: printTable
      Src: /src/postgres/src/fe_utils/print.c:3609,1
    - Dst: printTableCleanup
      Src: /src/postgres/src/fe_utils/print.c:3610,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 5
    argNames:
    - result
    - opt
    - fout
    - is_pager
    - flog
    argTypes:
    - PGresult*
    - printQueryOpt*
    - FILE*
    - bool
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3611
      start: 3548
    functionDepth: 4
    functionLinenumber: 3548
    functionLinenumberEnd: 3611
    functionName: printQuery
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 45
    functionsReached:
    - format_numeric_locale
    - Assert
    - printTableAddCell
    - printTableInit
    - printTableAddHeader
    - PQntuples
    - printTableAddFooter
    - PQnfields
    - PQgetvalue
    - printTable
    - printTableCleanup
    - PQgetisnull
    - PQfname
    - column_type_alignment
    - PQftype
    linkageType: ''
    returnType: void
    signature: "void printQuery(const PGresult *result, const printQueryOpt *opt,\n\t\t
      \  FILE *fout, bool is_pager, FILE *flog)"
  - BBCount: 13
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 1
    argNames:
    - ftype
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3638
      start: 3613
    functionDepth: 0
    functionLinenumber: 3613
    functionLinenumberEnd: 3638
    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:3645,1
    - Dst: pg_strdup
      Src: /src/postgres/src/fe_utils/print.c:3649,1
    - Dst: pg_strdup
      Src: /src/postgres/src/fe_utils/print.c:3667,1
    - Dst: strcmp
      Src: /src/postgres/src/fe_utils/print.c:3669,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3673
      start: 3640
    functionDepth: 1
    functionLinenumber: 3640
    functionLinenumberEnd: 3673
    functionName: setDecimalLocale
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 1
    functionsReached:
    - strcmp
    - pg_strdup
    - localeconv
    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: 3688
      start: 3676
    functionDepth: 0
    functionLinenumber: 3676
    functionLinenumberEnd: 3688
    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: 3738
      start: 3690
    functionDepth: 0
    functionLinenumber: 3690
    functionLinenumberEnd: 3738
    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:3749,1
    - Dst: PQdsplen
      Src: /src/postgres/src/fe_utils/print.c:3754,1
    - Dst: PQmblen
      Src: /src/postgres/src/fe_utils/print.c:3767,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - str
    - target_width
    - encoding
    argTypes:
    - unsigned char*
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3776
      start: 3745
    functionDepth: 1
    functionLinenumber: 3745
    functionLinenumberEnd: 3776
    functionName: strlen_max_width
    functionSourceFile: /src/postgres/src/fe_utils/print.c
    functionUses: 2
    functionsReached:
    - PQdsplen
    - strlen
    - PQmblen
    linkageType: ''
    returnType: int
    signature: int strlen_max_width(unsigned char *str, int *target_width, int encoding)
  - 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: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 38
    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:82,1
    - Dst: PQfreeCancel
      Src: /src/postgres/src/fe_utils/cancel.c:92,1
    - Dst: PQgetCancel
      Src: /src/postgres/src/fe_utils/cancel.c:94,1
    - Dst: LeaveCriticalSection
      Src: /src/postgres/src/fe_utils/cancel.c:97,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 99
    functionName: SetCancelConn
    functionSourceFile: /src/postgres/src/fe_utils/cancel.c
    functionUses: 10
    functionsReached:
    - EnterCriticalSection
    - LeaveCriticalSection
    - PQgetCancel
    - PQfreeCancel
    linkageType: ''
    returnType: void
    signature: void SetCancelConn(PGconn *conn)
  - 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:121,1
    - Dst: LeaveCriticalSection
      Src: /src/postgres/src/fe_utils/cancel.c:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 126
    functionName: ResetCancelConn
    functionSourceFile: /src/postgres/src/fe_utils/cancel.c
    functionUses: 12
    functionsReached:
    - EnterCriticalSection
    - LeaveCriticalSection
    - PQfreeCancel
    linkageType: ''
    returnType: void
    signature: void ResetCancelConn(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: cancel_callback
      Src: /src/postgres/src/fe_utils/cancel.c:160,1
    - Dst: PQcancel
      Src: /src/postgres/src/fe_utils/cancel.c:165,1
    - Dst: write_stderr
      Src: /src/postgres/src/fe_utils/cancel.c:167,1
    - Dst: write_stderr
      Src: /src/postgres/src/fe_utils/cancel.c:171,1
    - Dst: write_stderr
      Src: /src/postgres/src/fe_utils/cancel.c:172,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 175
    functionName: handle_sigint
    functionSourceFile: /src/postgres/src/fe_utils/cancel.c
    functionUses: 0
    functionsReached:
    - PQcancel
    - cancel_callback
    - write_stderr
    linkageType: ''
    returnType: void
    signature: void handle_sigint(SIGNAL_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _
      Src: /src/postgres/src/fe_utils/cancel.c:186,1
    - Dst: _
      Src: /src/postgres/src/fe_utils/cancel.c:187,1
    - Dst: pqsignal
      Src: /src/postgres/src/fe_utils/cancel.c:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 190
    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:205,1
    - Dst: EnterCriticalSection
      Src: /src/postgres/src/fe_utils/cancel.c:208,1
    - Dst: PQcancel
      Src: /src/postgres/src/fe_utils/cancel.c:211,1
    - Dst: write_stderr
      Src: /src/postgres/src/fe_utils/cancel.c:213,1
    - Dst: write_stderr
      Src: /src/postgres/src/fe_utils/cancel.c:217,1
    - Dst: write_stderr
      Src: /src/postgres/src/fe_utils/cancel.c:218,1
    - Dst: LeaveCriticalSection
      Src: /src/postgres/src/fe_utils/cancel.c:222,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - dwCtrlType
    argTypes:
    - DWORD
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 229
    functionName: consoleHandler
    functionSourceFile: /src/postgres/src/fe_utils/cancel.c
    functionUses: 0
    functionsReached:
    - EnterCriticalSection
    - PQcancel
    - LeaveCriticalSection
    - cancel_callback
    - write_stderr
    linkageType: ''
    returnType: BOOL
    signature: BOOL consoleHandler(DWORD dwCtrlType)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _
      Src: /src/postgres/src/fe_utils/cancel.c:235,1
    - Dst: _
      Src: /src/postgres/src/fe_utils/cancel.c:236,1
    - Dst: InitializeCriticalSection
      Src: /src/postgres/src/fe_utils/cancel.c:238,1
    - Dst: SetConsoleCtrlHandler
      Src: /src/postgres/src/fe_utils/cancel.c:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 241
    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: 24
    functionsReached:
    - printf
    - PQexec
    - PQerrorMessage
    - PQresultStatus
    - PQfinish
    - exit
    - pg_log_error_detail
    - pg_log_error
    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:
    - printf
    - PQexec
    - PQerrorMessage
    - PQresultStatus
    - PQfinish
    - exit
    - pg_log_error_detail
    - PQclear
    - pg_log_error
    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:
    - printf
    - PQexec
    - PQresultStatus
    - ResetCancelConn
    - SetCancelConn
    - PQclear
    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
    - PLy_cursor_query
    - PyArg_ParseTuple
    - PLy_exception_set
    - PyErr_Clear
    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:
    - SPI_cursor_open
    - SPI_prepare
    - PinPortal
    - PLy_spi_subtransaction_begin
    - strlen
    - Py_INCREF
    - PLy_spi_subtransaction_abort
    - PLy_input_setup_func
    - PLy_current_execution_context
    - PLy_spi_subtransaction_commit
    - PyObject_New
    - elog
    - MemoryContextStrdup
    - Assert
    - PG_END_TRY
    - PG_TRY
    - PG_CATCH
    - SPI_result_code_string
    - AllocSetContextCreate
    - SPI_freeplan
    - pg_verifymbstr
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_cursor_query(const char *query)'
  - BBCount: 8
    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: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:261,1
    - Dst: PLy_output_convert
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:265,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:268,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:270,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:272,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:275,1
    - Dst: SPI_cursor_open
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:277,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:280,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:281,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:283,1
    - Dst: PinPortal
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:285,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:287,1
    - Dst: PLy_spi_subtransaction_commit
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:288,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:290,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:292,1
    - Dst: PLy_spi_subtransaction_abort
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:294,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:297,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:299,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 66
    argCount: 2
    argNames:
    - ob
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 301
    functionName: PLy_cursor_plan
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_cursorobject.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - PLyUnicode_AsString
    - SPI_cursor_open
    - PinPortal
    - PLy_spi_subtransaction_begin
    - Py_INCREF
    - MemoryContextDelete
    - PLy_exception_set_plural
    - PLy_spi_subtransaction_abort
    - PLy_input_setup_func
    - PLy_current_execution_context
    - PLy_spi_subtransaction_commit
    - PyObject_Str
    - PySequence_Length
    - PyObject_New
    - elog
    - PySequence_Check
    - PySequence_GetItem
    - palloc
    - PG_FINALLY
    - PLy_output_convert
    - Py_DECREF
    - MemoryContextStrdup
    - Assert
    - PG_END_TRY
    - PG_TRY
    - PLy_exception_set
    - PG_CATCH
    - SPI_result_code_string
    - AllocSetContextCreate
    - PLy_elog
    - PyUnicode_Check
    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:307,1
    - Dst: GetPortalByName
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:313,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:315,1
    - Dst: UnpinPortal
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:317,1
    - Dst: SPI_cursor_close
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:318,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:324,1
    - Dst: PyObject_Free
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:328,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:331,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - self
    argTypes:
    - PLyCursorObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 303
    functionDepth: 1
    functionLinenumber: 303
    functionLinenumberEnd: 333
    functionName: PLy_cursor_dealloc
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_cursorobject.c
    functionUses: 0
    functionsReached:
    - Py_DECREF
    - PyObject_Free
    - MemoryContextDelete
    - UnpinPortal
    - Py_TYPE
    - SPI_cursor_close
    - PortalIsValid
    - 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:340,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:349,1
    - Dst: GetPortalByName
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:353,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:354,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:356,1
    - Dst: PLy_spi_subtransaction_begin
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:364,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:366,1
    - Dst: SPI_cursor_fetch
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:368,1
    - Dst: PyErr_SetNone
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:371,1
    - Dst: PLy_input_setup_tuple
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:376,1
    - Dst: PLy_input_from_tuple
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:379,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:383,1
    - Dst: PLy_spi_subtransaction_commit
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:385,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:387,1
    - Dst: PLy_spi_subtransaction_abort
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:389,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:392,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 32
    argCount: 1
    argNames:
    - self
    argTypes:
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 335
    functionDepth: 1
    functionLinenumber: 335
    functionLinenumberEnd: 395
    functionName: PLy_cursor_iternext
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_cursorobject.c
    functionUses: 0
    functionsReached:
    - PLy_current_execution_context
    - PLy_spi_subtransaction_commit
    - PG_END_TRY
    - PLy_spi_subtransaction_begin
    - PG_TRY
    - PyErr_SetNone
    - PLy_exception_set
    - PG_CATCH
    - PLy_spi_subtransaction_abort
    - PLy_input_from_tuple
    - SPI_freetuptable
    - PLy_input_setup_tuple
    - PortalIsValid
    - SPI_cursor_fetch
    - 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:403,1
    - Dst: PyArg_ParseTuple
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:408,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:415,1
    - Dst: GetPortalByName
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:419,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:420,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:422,1
    - Dst: PLy_result_new
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:427,1
    - Dst: PLy_spi_subtransaction_begin
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:434,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:436,1
    - Dst: SPI_cursor_fetch
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:438,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:440,1
    - Dst: PyLong_FromLong
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:441,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:443,1
    - Dst: PyLong_FromUnsignedLongLong
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:444,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:456,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:457,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:458,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:460,1
    - Dst: PyList_New
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:461,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:464,1
    - Dst: PLy_input_setup_tuple
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:469,1
    - Dst: PLy_input_from_tuple
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:474,1
    - Dst: PyList_SetItem
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:479,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:484,1
    - Dst: PLy_spi_subtransaction_commit
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:486,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:488,1
    - Dst: PLy_spi_subtransaction_abort
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:490,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:493,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 49
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 397
    functionDepth: 1
    functionLinenumber: 397
    functionLinenumberEnd: 496
    functionName: PLy_cursor_fetch
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_cursorobject.c
    functionUses: 0
    functionsReached:
    - PyArg_ParseTuple
    - PLy_input_from_tuple
    - PLy_spi_subtransaction_begin
    - PLy_spi_subtransaction_abort
    - PyLong_FromLong
    - errmsg
    - PLy_current_execution_context
    - PLy_spi_subtransaction_commit
    - PyList_New
    - PyList_SetItem
    - SPI_cursor_fetch
    - GetPortalByName
    - Py_DECREF
    - PLy_result_new
    - PG_END_TRY
    - PG_TRY
    - PyLong_FromUnsignedLongLong
    - PLy_exception_set
    - PG_CATCH
    - ereport
    - SPI_freetuptable
    - PLy_input_setup_tuple
    - PortalIsValid
    - errcode
    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:505,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:507,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:509,1
    - Dst: UnpinPortal
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:514,1
    - Dst: SPI_cursor_close
      Src: /src/postgres/src/pl/plpython/plpy_cursorobject.c:515,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - self
    - unused
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 498
    functionDepth: 1
    functionLinenumber: 498
    functionLinenumberEnd: 520
    functionName: PLy_cursor_close
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_cursorobject.c
    functionUses: 0
    functionsReached:
    - UnpinPortal
    - PLy_exception_set
    - SPI_cursor_close
    - PortalIsValid
    - 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
    - Py_INCREF
    - PyList_New
    - PyObject_New
    - PyLong_FromLong
    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
    - PyObject_Free
    - Py_XDECREF
    - Py_TYPE
    - FreeTupleDesc
    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:
    - NameStr
    - PyList_New
    - PLy_exception_set
    - TupleDescAttr
    - PLyUnicode_FromString
    - PyList_SetItem
    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_New
    - PLy_exception_set
    - TupleDescAttr
    - PyLong_FromLong
    - PyList_SetItem
    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_New
    - PLy_exception_set
    - TupleDescAttr
    - PyLong_FromLong
    - PyList_SetItem
    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:
    - Py_INCREF
    - PyList_GetItem
    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: 23
    BranchProfiles: []
    Callsites:
    - Dst: PLy_global_args_push
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:68,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:70,1
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:75,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:77,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:79,1
    - Dst: MemoryContextRegisterResetCallback
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:84,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:89,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:90,1
    - Dst: Assert
      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:101,1
    - Dst: PLy_procedure_call
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:102,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:103,1
    - Dst: PLy_function_restore_args
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:116,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:132,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:135,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:136,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:137,1
    - Dst: errdetail
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:138,1
    - Dst: PyObject_GetIter
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:143,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:145,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:149,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:150,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:151,1
    - Dst: errdetail
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:152,1
    - Dst: PyIter_Next
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:156,1
    - Dst: PyErr_Occurred
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:160,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:162,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:166,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:169,1
    - Dst: PLy_function_save_args
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:179,1
    - Dst: SPI_finish
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:189,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:190,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:207,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:208,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:209,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:211,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:212,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:213,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:241,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:242,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:243,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:244,1
    - Dst: PLy_output_setup_record
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:246,1
    - Dst: PLy_output_convert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:249,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:253,1
    - Dst: PLy_global_args_pop
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:256,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:258,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:259,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:270,1
    - Dst: PLy_function_drop_args
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:274,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:278,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:280,1
    - Dst: PLy_global_args_pop
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:285,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:287,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:288,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:296,1
    - Dst: SRF_RETURN_NEXT_NULL
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:299,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:301,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 103
    argCount: 2
    argNames:
    - fcinfo
    - proc
    argTypes:
    - FunctionCallInfo
    - PLyProcedure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 306
    functionName: PLy_exec_function
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 0
    functionsReached:
    - PyObject_GetIter
    - MemoryContextRegisterResetCallback
    - PLy_output_setup_record
    - SRF_FIRSTCALL_INIT
    - SRF_RETURN_DONE
    - errdetail
    - SRF_RETURN_NEXT
    - PLy_function_drop_args
    - Py_INCREF
    - PG_RE_THROW
    - get_call_result_type
    - PLy_global_args_pop
    - SRF_PERCALL_SETUP
    - PLy_global_args_push
    - PLy_procedure_call
    - PLy_function_build_args
    - errmsg
    - Py_XDECREF
    - MemoryContextAllocZero
    - IsA
    - elog
    - SRF_IS_FIRSTCALL
    - PLy_function_save_args
    - SRF_RETURN_NEXT_NULL
    - PLy_function_restore_args
    - PLy_output_convert
    - Py_DECREF
    - Assert
    - PyIter_Next
    - PG_END_TRY
    - PG_TRY
    - PG_CATCH
    - ereport
    - PyErr_Occurred
    - PLy_elog
    - SPI_finish
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum PLy_exec_function(FunctionCallInfo fcinfo, PLyProcedure *proc)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:327,1
    - Dst: CALLED_AS_TRIGGER
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:327,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:338,1
    - Dst: PLy_output_setup_func
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:340,1
    - Dst: PLy_input_setup_func
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:345,1
    - Dst: PLy_output_setup_tuple
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:349,1
    - Dst: PLy_input_setup_tuple
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:350,1
    - Dst: PLy_global_args_push
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:357,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:359,1
    - Dst: SPI_register_trigger_data
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:363,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:364,1
    - Dst: PLy_trigger_build_args
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:366,1
    - Dst: PLy_procedure_call
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:367,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:369,1
    - Dst: SPI_finish
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:374,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:375,1
    - Dst: PyUnicode_Check
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:384,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:385,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:388,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:389,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:390,1
    - Dst: errdetail
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:391,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:395,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:397,1
    - Dst: TRIGGER_FIRED_BY_INSERT
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:399,1
    - Dst: TRIGGER_FIRED_BY_UPDATE
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:400,1
    - Dst: PLy_modify_tuple
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:401,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:403,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:404,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:406,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:412,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:413,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:414,1
    - Dst: errdetail
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:415,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:419,1
    - Dst: PLy_global_args_pop
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:421,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:422,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:423,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:425,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 44
    argCount: 2
    argNames:
    - fcinfo
    - proc
    argTypes:
    - FunctionCallInfo
    - PLyProcedure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 428
    functionName: PLy_exec_trigger
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 0
    functionsReached:
    - PLy_output_setup_func
    - PLyUnicode_AsString
    - TRIGGER_FIRED_BY_UPDATE
    - errdetail
    - CALLED_AS_TRIGGER
    - SPI_register_trigger_data
    - PLy_input_setup_func
    - PLy_trigger_build_args
    - PLy_global_args_pop
    - PLy_modify_tuple
    - errmsg
    - PLy_global_args_push
    - PLy_procedure_call
    - Py_XDECREF
    - elog
    - TRIGGER_FIRED_BY_INSERT
    - pg_strcasecmp
    - PG_FINALLY
    - Assert
    - PLy_output_setup_tuple
    - PG_END_TRY
    - PG_TRY
    - RelationGetDescr
    - ereport
    - PLy_input_setup_tuple
    - SPI_finish
    - PyUnicode_Check
    - errcode
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple PLy_exec_trigger(FunctionCallInfo fcinfo, PLyProcedure *proc)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PyList_New
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:444,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:448,1
    - Dst: PLy_input_convert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:457,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:461,1
    - Dst: PyList_SetItem
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:465,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:466,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:469,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:470,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:474,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:476,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:477,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:479,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:481,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 2
    argNames:
    - fcinfo
    - proc
    argTypes:
    - FunctionCallInfo
    - PLyProcedure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 432
    functionDepth: 1
    functionLinenumber: 432
    functionLinenumberEnd: 484
    functionName: PLy_function_build_args
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 1
    functionsReached:
    - Py_INCREF
    - PG_RE_THROW
    - PG_END_TRY
    - PLy_elog
    - Py_XDECREF
    - PG_TRY
    - PyList_New
    - PG_CATCH
    - PLy_input_convert
    - PyList_SetItem
    - PyDict_SetItemString
    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:502,1
    - Dst: PyDict_GetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:508,1
    - Dst: Py_XINCREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:509,1
    - Dst: PyDict_GetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:514,1
    - Dst: Py_XINCREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:515,1
    - Dst: PyDict_GetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:527,1
    - Dst: Py_XINCREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:529,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - proc
    argTypes:
    - PLyProcedure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 495
    functionDepth: 1
    functionLinenumber: 495
    functionLinenumberEnd: 535
    functionName: PLy_function_save_args
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 1
    functionsReached:
    - PyDict_GetItemString
    - Py_XINCREF
    - 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:553,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:555,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:563,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:564,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:570,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:571,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:575,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - proc
    - savedargs
    argTypes:
    - PLyProcedure*
    - PLySavedArgs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 541
    functionDepth: 0
    functionLinenumber: 541
    functionLinenumberEnd: 576
    functionName: PLy_function_restore_args
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 1
    functionsReached:
    - Py_DECREF
    - PyDict_SetItemString
    - pfree
    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:589,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:593,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:594,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:597,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - savedargs
    argTypes:
    - PLySavedArgs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 581
    functionDepth: 0
    functionLinenumber: 581
    functionLinenumberEnd: 598
    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:619,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - proc
    argTypes:
    - PLyProcedure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 610
    functionDepth: 2
    functionLinenumber: 610
    functionLinenumberEnd: 630
    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:643,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:650,1
    - Dst: PLy_function_restore_args
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:655,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:660,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - proc
    argTypes:
    - PLyProcedure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 640
    functionDepth: 1
    functionLinenumber: 640
    functionLinenumberEnd: 671
    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: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:684,1
    - Dst: PLy_function_drop_args
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:688,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 678
    functionDepth: 1
    functionLinenumber: 678
    functionLinenumberEnd: 690
    functionName: plpython_srf_cleanup_callback
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 0
    functionsReached:
    - PLy_function_drop_args
    - Py_XDECREF
    linkageType: ''
    returnType: void
    signature: void plpython_srf_cleanup_callback(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PLy_current_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:695,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:699,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 692
    functionDepth: 1
    functionLinenumber: 692
    functionLinenumberEnd: 700
    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:706,1
    - Dst: PyDict_New
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:725,1
    - Dst: PyList_New
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:731,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:734,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:740,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:744,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:746,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:747,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:748,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:750,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:750,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:751,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:752,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:753,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:754,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:755,1
    - Dst: SPI_getrelname
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:757,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:758,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:759,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:760,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:761,1
    - Dst: SPI_getnspname
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:763,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:764,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:765,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:766,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:767,1
    - Dst: TRIGGER_FIRED_BEFORE
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:769,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:770,1
    - Dst: TRIGGER_FIRED_AFTER
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:771,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:772,1
    - Dst: TRIGGER_FIRED_INSTEAD
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:773,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:774,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:777,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:780,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:781,1
    - Dst: TRIGGER_FIRED_FOR_ROW
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:783,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:785,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:786,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:787,1
    - Dst: TRIGGER_FIRED_BY_INSERT
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:794,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:796,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:798,1
    - Dst: PLy_input_from_tuple
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:799,1
    - Dst: TRIGGER_FIRED_BEFORE
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:802,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:803,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:804,1
    - Dst: TRIGGER_FIRED_BY_DELETE
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:807,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:809,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:811,1
    - Dst: PLy_input_from_tuple
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:812,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:816,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:817,1
    - Dst: TRIGGER_FIRED_BY_UPDATE
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:820,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:822,1
    - Dst: PLy_input_from_tuple
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:824,1
    - Dst: TRIGGER_FIRED_BEFORE
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:827,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:828,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:829,1
    - Dst: PLy_input_from_tuple
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:830,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:834,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:835,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:840,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:844,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:845,1
    - Dst: TRIGGER_FIRED_FOR_STATEMENT
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:847,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:849,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:850,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:851,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:853,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:854,1
    - Dst: TRIGGER_FIRED_BY_INSERT
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:857,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:858,1
    - Dst: TRIGGER_FIRED_BY_DELETE
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:859,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:860,1
    - Dst: TRIGGER_FIRED_BY_UPDATE
      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_BY_TRUNCATE
      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: elog
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:867,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:871,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:872,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:875,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:886,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:890,1
    - Dst: PyList_SetItem
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:895,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:900,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:902,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:903,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:905,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:907,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:908,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:909,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:911,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 121
    argCount: 3
    argNames:
    - fcinfo
    - proc
    - rv
    argTypes:
    - FunctionCallInfo
    - PLyProcedure*
    - HeapTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 914
      start: 702
    functionDepth: 1
    functionLinenumber: 702
    functionLinenumberEnd: 914
    functionName: PLy_trigger_build_args
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 1
    functionsReached:
    - PLy_input_from_tuple
    - TRIGGER_FIRED_BY_UPDATE
    - PyDict_SetItemString
    - DirectFunctionCall1
    - TRIGGER_FIRED_BY_TRUNCATE
    - pfree
    - Py_INCREF
    - PG_RE_THROW
    - TRIGGER_FIRED_AFTER
    - DatumGetCString
    - TRIGGER_FIRED_BEFORE
    - PyDict_New
    - TRIGGER_FIRED_BY_DELETE
    - TRIGGER_FIRED_INSTEAD
    - Py_XDECREF
    - PyList_New
    - SPI_getnspname
    - elog
    - TRIGGER_FIRED_BY_INSERT
    - PLyUnicode_FromString
    - TRIGGER_FIRED_FOR_STATEMENT
    - PyList_SetItem
    - ObjectIdGetDatum
    - Py_DECREF
    - Assert
    - PG_END_TRY
    - PG_TRY
    - TRIGGER_FIRED_FOR_ROW
    - RelationGetDescr
    - PG_CATCH
    - SPI_getrelname
    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:941,1
    - Dst: PyDict_GetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:947,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:948,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:949,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:950,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:951,1
    - Dst: PyDict_Check
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:952,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:953,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:954,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:955,1
    - Dst: PyDict_Keys
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:957,1
    - Dst: PyList_Size
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:958,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:960,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:962,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:963,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:964,1
    - Dst: PyList_GetItem
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:973,1
    - Dst: PyUnicode_Check
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:974,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:975,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:978,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:979,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:980,1
    - Dst: SPI_fnumber
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:983,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:985,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:986,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:987,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:990,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:991,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:992,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:994,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:995,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:996,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:997,1
    - Dst: PyDict_GetItem
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1000,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1002,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1004,1
    - Dst: PLy_output_convert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1009,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1014,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1018,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1020,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1022,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1023,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1024,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1027,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1029,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1031,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1033,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1035,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1037,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1038,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1040,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1041,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1042,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 66
    argCount: 4
    argNames:
    - proc
    - pltd
    - tdata
    - otup
    argTypes:
    - PLyProcedure*
    - PyObject*
    - TriggerData*
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 919
    functionDepth: 1
    functionLinenumber: 919
    functionLinenumberEnd: 1047
    functionName: PLy_modify_tuple
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 1
    functionsReached:
    - PLyUnicode_AsString
    - PyDict_Keys
    - SPI_fnumber
    - pfree
    - Py_INCREF
    - PG_RE_THROW
    - heap_modify_tuple
    - errmsg
    - Py_XDECREF
    - PyDict_GetItemString
    - PyList_Size
    - TupleDescAttr
    - PyList_GetItem
    - elog
    - PyDict_GetItem
    - PLy_output_convert
    - Py_DECREF
    - PG_END_TRY
    - PG_TRY
    - RelationGetDescr
    - PG_CATCH
    - ereport
    - PyDict_Check
    - palloc0
    - PyUnicode_Check
    - errcode
    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:1052,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1055,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 1049
    functionDepth: 1
    functionLinenumber: 1049
    functionLinenumberEnd: 1056
    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:1063,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1065,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1067,1
    - Dst: PyEval_EvalCode
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1069,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1076,1
    - Dst: list_length
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1076,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1078,1
    - Dst: PLy_abort_open_subtransactions
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1080,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1082,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1086,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - proc
    - kargs
    - vargs
    argTypes:
    - PLyProcedure*
    - char*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 1059
    functionDepth: 1
    functionLinenumber: 1059
    functionLinenumberEnd: 1089
    functionName: PLy_procedure_call
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 2
    functionsReached:
    - Assert
    - PG_END_TRY
    - PG_TRY
    - PLy_abort_open_subtransactions
    - list_length
    - PyEval_EvalCode
    - PLy_elog
    - PyDict_SetItemString
    - PG_FINALLY
    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:1098,1
    - Dst: list_length
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1100,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1104,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1106,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1107,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1109,1
    - Dst: linitial
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1111,1
    - Dst: list_delete_first
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1112,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1114,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_exec.c:1116,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - save_subxact_level
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1118
      start: 1095
    functionDepth: 1
    functionLinenumber: 1095
    functionLinenumberEnd: 1118
    functionName: PLy_abort_open_subtransactions
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_exec.c
    functionUses: 1
    functionsReached:
    - errmsg
    - pfree
    - Assert
    - MemoryContextSwitchTo
    - linitial
    - list_delete_first
    - ereport
    - RollbackAndReleaseCurrentSubTransaction
    - 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
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 137
    functionName: PyInit_plpy
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_plpymodule.c
    functionUses: 0
    functionsReached:
    - PyModule_Create
    - PLy_add_exceptions
    linkageType: ''
    returnType: PyMODINIT_FUNC
    signature: PyMODINIT_FUNC PyInit_plpy(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PLy_plan_init_type
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:149,1
    - Dst: PLy_result_init_type
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:150,1
    - Dst: PLy_subtransaction_init_type
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:151,1
    - Dst: PLy_cursor_init_type
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:152,1
    - Dst: PyModule_Create
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:154,1
    - Dst: PyImport_AddModule
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:161,1
    - Dst: PyModule_GetDict
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:162,1
    - Dst: PyImport_AddModule
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:163,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:165,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:166,1
    - Dst: PyErr_Occurred
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:167,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:168,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 169
    functionName: PLy_init_plpy
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_plpymodule.c
    functionUses: 0
    functionsReached:
    - PyModule_Create
    - PLy_plan_init_type
    - PLy_subtransaction_init_type
    - PLy_cursor_init_type
    - PLy_result_init_type
    - PyErr_Occurred
    - PLy_elog
    - PyDict_SetItemString
    - PyModule_GetDict
    - PyImport_AddModule
    linkageType: ''
    returnType: void
    signature: void PLy_init_plpy(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PyModule_Create
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:177,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:179,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:185,1
    - Dst: PyModule_AddObject
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:186,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:187,1
    - Dst: PLy_create_exception
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:189,1
    - Dst: PLy_create_exception
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:191,1
    - Dst: PLy_create_exception
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:193,1
    - Dst: hash_create
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:198,1
    - Dst: PLy_generate_spi_exceptions
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:201,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - plpy
    argTypes:
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 202
    functionName: PLy_add_exceptions
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_plpymodule.c
    functionUses: 1
    functionsReached:
    - PyModule_Create
    - Py_INCREF
    - hash_create
    - PyModule_AddObject
    - PLy_create_exception
    - PLy_generate_spi_exceptions
    - PLy_elog
    linkageType: ''
    returnType: void
    signature: void PLy_add_exceptions(PyObject *plpy)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PyErr_NewException
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:213,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:215,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:221,1
    - Dst: PyModule_AddObject
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:222,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - name
    - base
    - dict
    - modname
    - mod
    argTypes:
    - char*
    - PyObject*
    - PyObject*
    - char*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 231
    functionName: PLy_create_exception
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_plpymodule.c
    functionUses: 1
    functionsReached:
    - PyModule_AddObject
    - PLy_elog
    - Py_INCREF
    - PyErr_NewException
    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:247,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:250,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:252,1
    - Dst: unpack_sql_state
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:252,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:254,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:256,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:257,1
    - Dst: PLy_create_exception
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:259,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:262,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:264,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - mod
    - base
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 236
    functionDepth: 2
    functionLinenumber: 236
    functionLinenumberEnd: 267
    functionName: PLy_generate_spi_exceptions
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_plpymodule.c
    functionUses: 1
    functionsReached:
    - Py_DECREF
    - Assert
    - PyDict_New
    - unpack_sql_state
    - hash_search
    - PLy_create_exception
    - PLyUnicode_FromString
    - PLy_elog
    - PyDict_SetItemString
    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:280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - self
    - args
    - kw
    argTypes:
    - PyObject*
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 277
    functionDepth: 1
    functionLinenumber: 277
    functionLinenumberEnd: 281
    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:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - self
    - args
    - kw
    argTypes:
    - PyObject*
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 283
    functionDepth: 1
    functionLinenumber: 283
    functionLinenumberEnd: 287
    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:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - self
    - args
    - kw
    argTypes:
    - PyObject*
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 293
    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:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - self
    - args
    - kw
    argTypes:
    - PyObject*
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 295
    functionDepth: 1
    functionLinenumber: 295
    functionLinenumberEnd: 299
    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:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - self
    - args
    - kw
    argTypes:
    - PyObject*
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 305
    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:310,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - self
    - args
    - kw
    argTypes:
    - PyObject*
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 311
    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:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - self
    - args
    - kw
    argTypes:
    - PyObject*
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 317
    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:326,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:329,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:330,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:331,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 319
    functionDepth: 1
    functionLinenumber: 319
    functionLinenumberEnd: 334
    functionName: PLy_quote_literal
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_plpymodule.c
    functionUses: 0
    functionsReached:
    - quote_literal_cstr
    - PLyUnicode_FromString
    - PyArg_ParseTuple
    - pfree
    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:343,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:347,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:349,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:350,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:351,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 354
    functionName: PLy_quote_nullable
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_plpymodule.c
    functionUses: 0
    functionsReached:
    - quote_literal_cstr
    - PLyUnicode_FromString
    - PyArg_ParseTuple
    - pfree
    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:363,1
    - Dst: quote_identifier
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:366,1
    - Dst: PLyUnicode_FromString
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:367,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 370
    functionName: PLy_quote_ident
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_plpymodule.c
    functionUses: 0
    functionsReached:
    - quote_identifier
    - PLyUnicode_FromString
    - PyArg_ParseTuple
    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:378,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:384,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:384,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:385,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - obj
    argTypes:
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 373
    functionDepth: 1
    functionLinenumber: 373
    functionLinenumberEnd: 392
    functionName: object_to_string
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_plpymodule.c
    functionUses: 0
    functionsReached:
    - PyObject_Str
    - PLyUnicode_AsString
    - Py_DECREF
    - pstrdup
    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:413,1
    - Dst: PyArg_UnpackTuple
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:421,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:422,1
    - Dst: PyObject_Str
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:423,1
    - Dst: PyObject_Str
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:426,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:428,1
    - Dst: dgettext
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:431,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:433,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:435,1
    - Dst: PyDict_Next
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:439,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:441,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:443,1
    - Dst: PyTuple_Size
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:446,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:448,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:453,1
    - Dst: object_to_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:454,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:456,1
    - Dst: object_to_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:457,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:458,1
    - Dst: object_to_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:459,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:460,1
    - Dst: object_to_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:461,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:462,1
    - Dst: object_to_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:463,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:464,1
    - Dst: object_to_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:465,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:466,1
    - Dst: object_to_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:467,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:468,1
    - Dst: object_to_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:469,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:470,1
    - Dst: object_to_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:471,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:474,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:484,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:486,1
    - Dst: strspn
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:490,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:492,1
    - Dst: MAKE_SQLSTATE
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:496,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:504,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:507,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:507,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:509,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:509,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:511,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:511,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:513,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:513,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:515,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:515,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:517,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:517,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:519,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:519,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:521,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:521,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:523,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:524,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:525,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:526,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:527,1
    - Dst: err_generic_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:529,1
    - Dst: err_generic_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:531,1
    - Dst: err_generic_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:533,1
    - Dst: err_generic_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:535,1
    - Dst: err_generic_string
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:537,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:539,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:543,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:544,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:545,1
    - Dst: PLy_exception_set_with_details
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:547,1
    - Dst: FreeErrorData
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:548,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_plpymodule.c:552,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 86
    argCount: 4
    argNames:
    - level
    - self
    - args
    - kw
    argTypes:
    - int
    - PyObject*
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 394
    functionDepth: 2
    functionLinenumber: 394
    functionLinenumberEnd: 558
    functionName: PLy_output
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_plpymodule.c
    functionUses: 7
    functionsReached:
    - strspn
    - PyDict_Next
    - MemoryContextSwitchTo
    - PLy_exception_set_with_details
    - PLyUnicode_AsString
    - pstrdup
    - errhint
    - err_generic_string
    - strlen
    - pfree
    - errdetail_internal
    - PyArg_UnpackTuple
    - strcmp
    - CopyErrorData
    - Py_XDECREF
    - PyObject_Str
    - object_to_string
    - FreeErrorData
    - PyTuple_Size
    - PG_END_TRY
    - dgettext
    - MAKE_SQLSTATE
    - PG_TRY
    - PLy_exception_set
    - PG_CATCH
    - errmsg_internal
    - ereport
    - FlushErrorState
    - PLy_elog
    - pg_verifymbstr
    - errcode
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_output(volatile int level, PyObject *self, PyObject *args, PyObject *kw)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 38
    functionName: init_procedure_caches
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_procedure.c
    functionUses: 0
    functionsReached:
    - hash_create
    linkageType: ''
    returnType: void
    signature: void init_procedure_caches(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - proc
    argTypes:
    - PLyProcedure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 51
    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: 8
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:75,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:75,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:76,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:77,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:88,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:92,1
    - Dst: PLy_procedure_create
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:97,1
    - Dst: PLy_procedure_valid
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:101,1
    - Dst: PLy_procedure_delete
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:106,1
    - Dst: PLy_procedure_create
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:107,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:112,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:116,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:117,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:119,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:121,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 3
    argNames:
    - fn_oid
    - fn_rel
    - is_trigger
    argTypes:
    - Oid
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 124
    functionName: PLy_procedure_get
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_procedure.c
    functionUses: 0
    functionsReached:
    - PLy_procedure_create
    - PLy_procedure_valid
    - PG_RE_THROW
    - PG_END_TRY
    - PLy_procedure_delete
    - PG_TRY
    - ReleaseSysCache
    - HeapTupleIsValid
    - PG_CATCH
    - hash_search
    - SearchSysCache1
    - elog
    - ObjectIdGetDatum
    linkageType: ''
    returnType: PLyProcedure
    signature: 'PLyProcedure *

      PLy_procedure_get(Oid fn_oid, Oid fn_rel, bool is_trigger)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:140,1
    - Dst: snprintf
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:141,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:143,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:146,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:158,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:162,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:164,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:167,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:175,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:175,1
    - Dst: MemoryContextSetIdentifier
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:176,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:177,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:178,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:189,1
    - Dst: oid_array_to_list
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:192,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:209,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:209,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:210,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:211,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:212,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:221,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:222,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:223,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:225,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:226,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:227,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:228,1
    - Dst: PLy_output_setup_func
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:232,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:235,1
    - Dst: get_func_arg_info
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:263,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:280,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:281,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:293,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:295,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:296,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:297,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:298,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:299,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:303,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:304,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:305,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:306,1
    - Dst: PLy_input_setup_func
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:309,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:314,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:316,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:325,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:327,1
    - Dst: PLy_procedure_compile
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:329,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:331,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:333,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:335,1
    - Dst: PLy_procedure_delete
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:336,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:337,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:339,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:341,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 93
    argCount: 3
    argNames:
    - procTup
    - fn_oid
    - is_trigger
    argTypes:
    - HeapTuple
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 343
    functionName: PLy_procedure_create
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_procedure.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - PLy_output_setup_func
    - HeapTupleIsValid
    - snprintf
    - SysCacheGetAttrNotNull
    - pstrdup
    - SysCacheGetAttr
    - pfree
    - PG_RE_THROW
    - NameStr
    - ReleaseSysCache
    - GETSTRUCT
    - PLy_input_setup_func
    - PLy_procedure_compile
    - errmsg
    - PLy_procedure_delete
    - format_type_be
    - elog
    - HeapTupleHeaderGetRawXmin
    - ObjectIdGetDatum
    - Assert
    - PG_END_TRY
    - PG_TRY
    - oid_array_to_list
    - TextDatumGetCString
    - PG_CATCH
    - palloc0
    - ereport
    - SearchSysCache1
    - AllocSetContextCreate
    - MemoryContextSetIdentifier
    - get_func_arg_info
    - errcode
    linkageType: ''
    returnType: PLyProcedure
    signature: 'PLyProcedure *

      PLy_procedure_create(HeapTuple procTup, Oid fn_oid, bool is_trigger)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PyDict_Copy
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:355,1
    - Dst: PyDict_New
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:361,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:363,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:364,1
    - Dst: PLy_procedure_munge_source
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:369,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:371,1
    - Dst: Py_CompileString
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:372,1
    - Dst: PyEval_EvalCode
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:374,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:375,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:382,1
    - Dst: snprintf
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:387,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:389,1
    - Dst: Py_CompileString
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:390,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:396,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:399,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 2
    argNames:
    - proc
    - src
    argTypes:
    - PLyProcedure*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 348
    functionDepth: 1
    functionLinenumber: 348
    functionLinenumberEnd: 400
    functionName: PLy_procedure_compile
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_procedure.c
    functionUses: 1
    functionsReached:
    - MemoryContextStrdup
    - pfree
    - Py_DECREF
    - PyDict_New
    - snprintf
    - elog
    - PyEval_EvalCode
    - PyDict_Copy
    - PLy_elog
    - PyDict_SetItemString
    - Py_CompileString
    - PLy_procedure_munge_source
    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:405,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:406,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:407,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:408,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - proc
    argTypes:
    - PLyProcedure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 402
    functionDepth: 1
    functionLinenumber: 402
    functionLinenumberEnd: 409
    functionName: PLy_procedure_delete
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_procedure.c
    functionUses: 2
    functionsReached:
    - MemoryContextDelete
    - Py_XDECREF
    linkageType: ''
    returnType: void
    signature: void PLy_procedure_delete(PLyProcedure *proc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:421,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:422,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - proc
    - procTup
    argTypes:
    - PLyProcedure*
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 414
    functionDepth: 1
    functionLinenumber: 414
    functionLinenumberEnd: 426
    functionName: PLy_procedure_valid
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_procedure.c
    functionUses: 1
    functionsReached:
    - ItemPointerEquals
    - HeapTupleHeaderGetRawXmin
    linkageType: ''
    returnType: bool
    signature: bool PLy_procedure_valid(PLyProcedure *proc, HeapTuple procTup)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:440,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:440,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:442,1
    - Dst: snprintf
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:443,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:444,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_procedure.c:468,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - name
    - src
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 428
    functionDepth: 1
    functionLinenumber: 428
    functionLinenumberEnd: 471
    functionName: PLy_procedure_munge_source
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_procedure.c
    functionUses: 1
    functionsReached:
    - Assert
    - snprintf
    - elog
    - palloc
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      PLy_procedure_munge_source(const char *name, const char *src)'
  - 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: 7
    BranchProfiles: []
    Callsites:
    - Dst: PLy_current_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:42,1
    - Dst: PyArg_ParseTuple
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:47,1
    - Dst: PySequence_Check
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:50,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:52,1
    - Dst: PLy_plan_new
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:57,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:60,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:63,1
    - Dst: PySequence_Length
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:65,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:68,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:69,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:71,1
    - Dst: PLy_spi_subtransaction_begin
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:76,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:78,1
    - Dst: PySequence_GetItem
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:88,1
    - Dst: PyUnicode_Check
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:89,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:90,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:93,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:94,1
    - Dst: parseTypeString
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:104,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:106,1
    - Dst: PLy_output_setup_func
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:115,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:120,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:120,1
    - Dst: SPI_prepare
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:121,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:123,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:124,1
    - Dst: SPI_keepplan
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:127,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:128,1
    - Dst: PLy_spi_subtransaction_commit
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:130,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:132,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:134,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:135,1
    - Dst: PLy_spi_subtransaction_abort
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:137,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:140,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:142,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 50
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 144
    functionName: PLy_spi_prepare
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_spi.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - PLy_output_setup_func
    - PyArg_ParseTuple
    - PLyUnicode_AsString
    - SPI_prepare
    - PLy_plan_new
    - PLy_spi_subtransaction_begin
    - strlen
    - PLy_spi_subtransaction_abort
    - SPI_keepplan
    - errmsg
    - PLy_current_execution_context
    - PLy_spi_subtransaction_commit
    - Py_XDECREF
    - PySequence_Length
    - parseTypeString
    - elog
    - PySequence_Check
    - PySequence_GetItem
    - Py_DECREF
    - Assert
    - PG_END_TRY
    - PG_TRY
    - PLy_exception_set
    - PG_CATCH
    - SPI_result_code_string
    - palloc0
    - ereport
    - AllocSetContextCreate
    - pg_verifymbstr
    - PyUnicode_Check
    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:157,1
    - Dst: PLy_spi_execute_query
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:158,1
    - Dst: PyErr_Clear
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:160,1
    - Dst: PyArg_ParseTuple
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:162,1
    - Dst: is_PLyPlanObject
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:163,1
    - Dst: PLy_spi_execute_plan
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:164,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:166,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 168
    functionName: PLy_spi_execute
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_spi.c
    functionUses: 0
    functionsReached:
    - PLy_spi_execute_query
    - PyArg_ParseTuple
    - PLy_exception_set
    - PLy_spi_execute_plan
    - PyErr_Clear
    - is_PLyPlanObject
    linkageType: ''
    returnType: PyObject
    signature: 'PyObject *

      PLy_spi_execute(PyObject *self, PyObject *args)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PySequence_Check
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:182,1
    - Dst: PyUnicode_Check
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:182,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:184,1
    - Dst: PySequence_Length
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:187,1
    - Dst: PyObject_Str
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:197,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:200,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:201,1
    - Dst: PLy_exception_set_plural
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:202,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:207,1
    - Dst: PLy_spi_subtransaction_begin
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:215,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:217,1
    - Dst: PLy_current_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:219,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:229,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:232,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:236,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:237,1
    - Dst: PySequence_GetItem
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:250,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:251,1
    - Dst: PLy_output_convert
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:255,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:258,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:260,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:262,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:265,1
    - Dst: SPI_execute_plan
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:267,1
    - Dst: PLy_spi_execute_fetch_result
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:269,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:271,1
    - Dst: PLy_spi_subtransaction_commit
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:272,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:274,1
    - Dst: PLy_spi_subtransaction_abort
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:277,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:280,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:284,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:286,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 58
    argCount: 3
    argNames:
    - ob
    - list
    - limit
    argTypes:
    - PyObject*
    - PyObject*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 291
    functionName: PLy_spi_execute_plan
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_spi.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - PLyUnicode_AsString
    - SPI_execute_plan
    - PLy_spi_subtransaction_begin
    - MemoryContextDelete
    - PLy_exception_set_plural
    - PLy_spi_subtransaction_abort
    - PLy_current_execution_context
    - PLy_spi_subtransaction_commit
    - PyObject_Str
    - PySequence_Length
    - PySequence_Check
    - PySequence_GetItem
    - palloc
    - PG_FINALLY
    - PLy_output_convert
    - Py_DECREF
    - PG_END_TRY
    - PG_TRY
    - PLy_exception_set
    - PG_CATCH
    - SPI_result_code_string
    - PLy_spi_execute_fetch_result
    - AllocSetContextCreate
    - PLy_elog
    - PyUnicode_Check
    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:304,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:306,1
    - Dst: PLy_current_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:308,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:310,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:310,1
    - Dst: SPI_execute
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:311,1
    - Dst: PLy_spi_execute_fetch_result
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:312,1
    - Dst: PLy_spi_subtransaction_commit
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:314,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:316,1
    - Dst: PLy_spi_subtransaction_abort
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:318,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:321,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:325,1
    - Dst: PLy_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:326,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:328,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 2
    argNames:
    - query
    - limit
    argTypes:
    - char*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 333
    functionName: PLy_spi_execute_query
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_spi.c
    functionUses: 1
    functionsReached:
    - PLy_current_execution_context
    - PLy_spi_subtransaction_commit
    - PG_END_TRY
    - Py_XDECREF
    - pg_verifymbstr
    - PG_TRY
    - PLy_spi_subtransaction_abort
    - PG_CATCH
    - PLy_exception_set
    - PLy_spi_execute_fetch_result
    - SPI_result_code_string
    - SPI_execute
    - PLy_spi_subtransaction_begin
    - strlen
    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:339,1
    - Dst: PLy_result_new
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:342,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:345,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:348,1
    - Dst: PyLong_FromLong
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:349,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:353,1
    - Dst: PyLong_FromUnsignedLongLong
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:354,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:361,1
    - Dst: PyLong_FromUnsignedLongLong
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:362,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:364,1
    - Dst: PLy_input_setup_func
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:369,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:373,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:387,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:388,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:389,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:391,1
    - Dst: PyList_New
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:392,1
    - Dst: PLy_input_setup_tuple
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:395,1
    - Dst: PLy_input_from_tuple
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:400,1
    - Dst: PyList_SetItem
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:405,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:418,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:419,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:420,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:422,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:424,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:425,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:426,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:427,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:429,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:431,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:432,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:437,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 50
    argCount: 3
    argNames:
    - tuptable
    - rows
    - status
    argTypes:
    - SPITupleTable*
    - uint64
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 335
    functionDepth: 1
    functionLinenumber: 335
    functionLinenumberEnd: 443
    functionName: PLy_spi_execute_fetch_result
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_spi.c
    functionUses: 2
    functionsReached:
    - MemoryContextSwitchTo
    - CreateTupleDescCopy
    - PLy_input_from_tuple
    - PG_RE_THROW
    - MemoryContextDelete
    - PLy_input_setup_func
    - PyLong_FromLong
    - errmsg
    - PLy_current_execution_context
    - PyList_New
    - PyList_SetItem
    - Py_DECREF
    - PLy_result_new
    - PG_END_TRY
    - PG_TRY
    - PyLong_FromUnsignedLongLong
    - PG_CATCH
    - ereport
    - SPI_freetuptable
    - PLy_input_setup_tuple
    - AllocSetContextCreate
    - errcode
    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:449,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:451,1
    - Dst: SPI_commit
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:453,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:458,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:465,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:466,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:467,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:473,1
    - Dst: PLy_spi_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:482,1
    - Dst: FreeErrorData
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:483,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 445
    functionDepth: 1
    functionLinenumber: 445
    functionLinenumberEnd: 490
    functionName: PLy_commit
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_spi.c
    functionUses: 0
    functionsReached:
    - CopyErrorData
    - PLy_current_execution_context
    - MemoryContextSwitchTo
    - FreeErrorData
    - PG_END_TRY
    - PG_TRY
    - FlushErrorState
    - PG_CATCH
    - hash_search
    - PLy_spi_exception_set
    - SPI_commit
    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:496,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:498,1
    - Dst: SPI_rollback
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:500,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:505,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:512,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:513,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:514,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:520,1
    - Dst: PLy_spi_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:529,1
    - Dst: FreeErrorData
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:530,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:534,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 537
    functionName: PLy_rollback
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_spi.c
    functionUses: 0
    functionsReached:
    - CopyErrorData
    - PLy_current_execution_context
    - MemoryContextSwitchTo
    - FreeErrorData
    - PG_END_TRY
    - PG_TRY
    - FlushErrorState
    - PG_CATCH
    - hash_search
    - PLy_spi_exception_set
    - SPI_rollback
    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:567,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:569,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - oldcontext
    - oldowner
    argTypes:
    - MemoryContext
    - ResourceOwner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 564
    functionDepth: 1
    functionLinenumber: 564
    functionLinenumberEnd: 570
    functionName: PLy_spi_subtransaction_begin
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_spi.c
    functionUses: 7
    functionsReached:
    - MemoryContextSwitchTo
    - BeginInternalSubTransaction
    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:576,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:577,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - oldcontext
    - oldowner
    argTypes:
    - MemoryContext
    - ResourceOwner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 572
    functionDepth: 1
    functionLinenumber: 572
    functionLinenumberEnd: 579
    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:589,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:590,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:591,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:594,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:595,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:599,1
    - Dst: PLy_spi_exception_set
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:608,1
    - Dst: FreeErrorData
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:609,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - oldcontext
    - oldowner
    argTypes:
    - MemoryContext
    - ResourceOwner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 581
    functionDepth: 1
    functionLinenumber: 581
    functionLinenumberEnd: 610
    functionName: PLy_spi_subtransaction_abort
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_spi.c
    functionUses: 7
    functionsReached:
    - CopyErrorData
    - FreeErrorData
    - MemoryContextSwitchTo
    - FlushErrorState
    - hash_search
    - RollbackAndReleaseCurrentSubTransaction
    - PLy_spi_exception_set
    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:623,1
    - Dst: PyObject_CallObject
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:628,1
    - Dst: Py_BuildValue
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:632,1
    - Dst: PyObject_SetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:639,1
    - Dst: PyErr_SetObject
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:642,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:644,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:645,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:646,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:650,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:651,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:652,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_spi.c:653,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 2
    argNames:
    - excclass
    - edata
    argTypes:
    - PyObject*
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 616
    functionDepth: 1
    functionLinenumber: 616
    functionLinenumberEnd: 654
    functionName: PLy_spi_exception_set
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_spi.c
    functionUses: 3
    functionsReached:
    - Py_DECREF
    - PyErr_SetObject
    - Py_XDECREF
    - PyObject_CallObject
    - PyObject_SetAttrString
    - Py_BuildValue
    - elog
    linkageType: ''
    returnType: void
    signature: void PLy_spi_exception_set(PyObject *excclass, ErrorData *edata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find_rendezvous_variable
      Src: /src/postgres/src/pl/plpython/plpy_main.c:77,1
    - Dst: pg_bindtextdomain
      Src: /src/postgres/src/pl/plpython/plpy_main.c:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 91
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_main.c
    functionUses: 0
    functionsReached:
    - find_rendezvous_variable
    - pg_bindtextdomain
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_main.c:111,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_main.c:112,1
    - Dst: errdetail
      Src: /src/postgres/src/pl/plpython/plpy_main.c:113,1
    - Dst: PyImport_AppendInittab
      Src: /src/postgres/src/pl/plpython/plpy_main.c:119,1
    - Dst: Py_Initialize
      Src: /src/postgres/src/pl/plpython/plpy_main.c:120,1
    - Dst: PyImport_ImportModule
      Src: /src/postgres/src/pl/plpython/plpy_main.c:121,1
    - Dst: PLy_init_interp
      Src: /src/postgres/src/pl/plpython/plpy_main.c:122,1
    - Dst: PLy_init_plpy
      Src: /src/postgres/src/pl/plpython/plpy_main.c:123,1
    - Dst: PyErr_Occurred
      Src: /src/postgres/src/pl/plpython/plpy_main.c:124,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_main.c:125,1
    - Dst: init_procedure_caches
      Src: /src/postgres/src/pl/plpython/plpy_main.c:127,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 97
    functionDepth: 3
    functionLinenumber: 97
    functionLinenumberEnd: 134
    functionName: PLy_initialize
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_main.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PLy_init_interp
    - PLy_elog
    - PyImport_ImportModule
    - ereport
    - PyErr_Occurred
    - PyImport_AppendInittab
    - init_procedure_caches
    - Py_Initialize
    - errdetail
    - PLy_init_plpy
    linkageType: ''
    returnType: void
    signature: void PLy_initialize(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PyImport_AddModule
      Src: /src/postgres/src/pl/plpython/plpy_main.c:146,1
    - Dst: PyErr_Occurred
      Src: /src/postgres/src/pl/plpython/plpy_main.c:147,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_main.c:148,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_main.c:149,1
    - Dst: PyModule_GetDict
      Src: /src/postgres/src/pl/plpython/plpy_main.c:150,1
    - Dst: PyDict_New
      Src: /src/postgres/src/pl/plpython/plpy_main.c:151,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_main.c:153,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_main.c:154,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_main.c:155,1
    - Dst: PyErr_Occurred
      Src: /src/postgres/src/pl/plpython/plpy_main.c:156,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_main.c:157,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 158
    functionName: PLy_init_interp
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_main.c
    functionUses: 1
    functionsReached:
    - Py_DECREF
    - Py_INCREF
    - PyDict_New
    - PyErr_Occurred
    - PLy_elog
    - PyDict_SetItemString
    - PyModule_GetDict
    - PyImport_AddModule
    linkageType: ''
    returnType: void
    signature: void PLy_init_interp(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/pl/plpython/plpy_main.c:163,1
    - Dst: CheckFunctionValidatorAccess
      Src: /src/postgres/src/pl/plpython/plpy_main.c:168,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/pl/plpython/plpy_main.c:169,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/pl/plpython/plpy_main.c:172,1
    - Dst: PLy_initialize
      Src: /src/postgres/src/pl/plpython/plpy_main.c:175,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/plpython/plpy_main.c:178,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plpython/plpy_main.c:178,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpython/plpy_main.c:179,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_main.c:180,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/plpython/plpy_main.c:181,1
    - Dst: PLy_procedure_is_trigger
      Src: /src/postgres/src/pl/plpython/plpy_main.c:183,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plpython/plpy_main.c:185,1
    - Dst: PLy_procedure_get
      Src: /src/postgres/src/pl/plpython/plpy_main.c:188,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/pl/plpython/plpy_main.c:190,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 160
    functionDepth: 4
    functionLinenumber: 160
    functionLinenumberEnd: 191
    functionName: plpython3_validator
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_main.c
    functionUses: 0
    functionsReached:
    - PLy_procedure_is_trigger
    - ReleaseSysCache
    - HeapTupleIsValid
    - PG_RETURN_VOID
    - PLy_procedure_get
    - PLy_initialize
    - GETSTRUCT
    - SearchSysCache1
    - PG_GETARG_OID
    - elog
    - CheckFunctionValidatorAccess
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum plpython3_validator(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PLy_initialize
      Src: /src/postgres/src/pl/plpython/plpy_main.c:201,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpython/plpy_main.c:204,1
    - Dst: castNode
      Src: /src/postgres/src/pl/plpython/plpy_main.c:205,1
    - Dst: SPI_connect_ext
      Src: /src/postgres/src/pl/plpython/plpy_main.c:208,1
    - Dst: PLy_push_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_main.c:215,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_main.c:217,1
    - Dst: CALLED_AS_TRIGGER
      Src: /src/postgres/src/pl/plpython/plpy_main.c:233,1
    - Dst: PLy_procedure_get
      Src: /src/postgres/src/pl/plpython/plpy_main.c:238,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/pl/plpython/plpy_main.c:238,1
    - Dst: PLy_exec_trigger
      Src: /src/postgres/src/pl/plpython/plpy_main.c:240,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plpython/plpy_main.c:241,1
    - Dst: PLy_procedure_get
      Src: /src/postgres/src/pl/plpython/plpy_main.c:245,1
    - Dst: PLy_exec_function
      Src: /src/postgres/src/pl/plpython/plpy_main.c:247,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_main.c:250,1
    - Dst: PLy_pop_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_main.c:252,1
    - Dst: PyErr_Clear
      Src: /src/postgres/src/pl/plpython/plpy_main.c:253,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plpython/plpy_main.c:254,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_main.c:256,1
    - Dst: PLy_pop_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_main.c:259,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 193
    functionDepth: 4
    functionLinenumber: 193
    functionLinenumberEnd: 262
    functionName: plpython3_call_handler
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_main.c
    functionUses: 0
    functionsReached:
    - CALLED_AS_TRIGGER
    - PG_RE_THROW
    - PLy_exec_function
    - PG_END_TRY
    - RelationGetRelid
    - PG_TRY
    - PLy_procedure_get
    - PG_CATCH
    - IsA
    - PLy_initialize
    - castNode
    - PointerGetDatum
    - PLy_exec_trigger
    - PLy_push_execution_context
    - PyErr_Clear
    - SPI_connect_ext
    - PLy_pop_execution_context
    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:267,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpython/plpy_main.c:268,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/pl/plpython/plpy_main.c:268,1
    - Dst: PLy_initialize
      Src: /src/postgres/src/pl/plpython/plpy_main.c:274,1
    - Dst: SPI_connect_ext
      Src: /src/postgres/src/pl/plpython/plpy_main.c:277,1
    - Dst: MemSet
      Src: /src/postgres/src/pl/plpython/plpy_main.c:279,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/pl/plpython/plpy_main.c:279,1
    - Dst: MemSet
      Src: /src/postgres/src/pl/plpython/plpy_main.c:280,1
    - Dst: MemSet
      Src: /src/postgres/src/pl/plpython/plpy_main.c:285,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plpython/plpy_main.c:286,1
    - Dst: MemoryContextStrdup
      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:303,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_main.c:305,1
    - Dst: PLy_procedure_compile
      Src: /src/postgres/src/pl/plpython/plpy_main.c:317,1
    - Dst: PLy_exec_function
      Src: /src/postgres/src/pl/plpython/plpy_main.c:319,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_main.c:321,1
    - Dst: PLy_pop_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_main.c:323,1
    - Dst: PLy_procedure_delete
      Src: /src/postgres/src/pl/plpython/plpy_main.c:324,1
    - Dst: PyErr_Clear
      Src: /src/postgres/src/pl/plpython/plpy_main.c:325,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plpython/plpy_main.c:326,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_main.c:328,1
    - Dst: PLy_pop_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_main.c:331,1
    - Dst: PLy_procedure_delete
      Src: /src/postgres/src/pl/plpython/plpy_main.c:334,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/pl/plpython/plpy_main.c:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 264
    functionDepth: 4
    functionLinenumber: 264
    functionLinenumberEnd: 337
    functionName: plpython3_inline_handler
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_main.c
    functionUses: 0
    functionsReached:
    - PLy_initialize
    - PLy_push_execution_context
    - PG_GETARG_DATUM
    - PyErr_Clear
    - LOCAL_FCINFO
    - PLy_exec_function
    - PG_RE_THROW
    - PLy_procedure_compile
    - DatumGetPointer
    - PLy_pop_execution_context
    - PLy_procedure_delete
    - PG_RETURN_VOID
    - MemSet
    - MemoryContextStrdup
    - PG_END_TRY
    - SizeForFunctionCallInfo
    - PG_TRY
    - PG_CATCH
    - AllocSetContextCreate
    - SPI_connect_ext
    linkageType: ''
    returnType: Datum
    signature: Datum plpython3_inline_handler(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - procStruct
    argTypes:
    - Form_pg_proc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 339
    functionDepth: 0
    functionLinenumber: 339
    functionLinenumberEnd: 343
    functionName: PLy_procedure_is_trigger
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_main.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool PLy_procedure_is_trigger(Form_pg_proc procStruct)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpython/plpy_main.c:353,1
    - Dst: PLy_procedure_name
      Src: /src/postgres/src/pl/plpython/plpy_main.c:354,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpython/plpy_main.c:356,1
    - Dst: PLy_procedure_name
      Src: /src/postgres/src/pl/plpython/plpy_main.c:357,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 345
    functionDepth: 1
    functionLinenumber: 345
    functionLinenumberEnd: 359
    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:364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 365
    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:371,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 374
    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:385,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - context
    argTypes:
    - PLyExecutionContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 376
    functionDepth: 1
    functionLinenumber: 376
    functionLinenumberEnd: 389
    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:398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - atomic_context
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 391
    functionDepth: 1
    functionLinenumber: 391
    functionLinenumberEnd: 405
    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:413,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/plpython/plpy_main.c:418,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_main.c:419,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 407
    functionDepth: 1
    functionLinenumber: 407
    functionLinenumberEnd: 420
    functionName: PLy_pop_execution_context
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_main.c
    functionUses: 2
    functionsReached:
    - pfree
    - elog
    - MemoryContextDelete
    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:
    - PyUnicode_AsUTF8String
    - Py_DECREF
    - PG_RE_THROW
    - PyBytes_AsString
    - PG_END_TRY
    - pfree
    - GetDatabaseEncoding
    - PG_TRY
    - PG_CATCH
    - PyBytes_FromStringAndSize
    - pg_any_to_server
    - PLy_elog
    - strlen
    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:
    - PLyUnicode_Bytes
    - PyBytes_AsString
    - Py_XDECREF
    - pstrdup
    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:
    - PyUnicode_FromString
    - PyUnicode_FromStringAndSize
    - pfree
    - pg_server_to_any
    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: 6
    functionsReached:
    - strlen
    - PLyUnicode_FromStringAndSize
    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:
    - Py_INCREF
    - MemoryContextSwitchTo
    - lcons
    - PLy_exception_set
    - BeginInternalSubTransaction
    - MemoryContextAlloc
    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
    - MemoryContextSwitchTo
    - PyArg_ParseTuple
    - linitial
    - list_delete_first
    - PLy_exception_set
    - RollbackAndReleaseCurrentSubTransaction
    - ReleaseCurrentSubTransaction
    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:
    - Py_DECREF
    - PyObject_Free
    - MemoryContextDelete
    - Py_TYPE
    - SPI_freeplan
    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:
    - PLy_cursor_plan
    - PyArg_ParseTuple
    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:
    - Py_INCREF
    - PyArg_ParseTuple
    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: PyObject_GetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:151,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:152,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:156,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:158,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:160,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:162,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 49
    argCount: 2
    argNames:
    - elevel
    - fmt
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 163
    functionName: PLy_elog_impl
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_elog.c
    functionUses: 0
    functionsReached:
    - PLy_get_error_data
    - PyErr_Fetch
    - internalerrposition
    - PLy_traceback
    - appendStringInfoVA
    - errhint
    - PyErr_GivenExceptionMatches
    - err_generic_string
    - va_start
    - pfree
    - enlargeStringInfo
    - PLy_get_spi_error_data
    - errdetail_internal
    - errcontext
    - internalerrquery
    - Py_XDECREF
    - va_end
    - PG_FINALLY
    - Py_DECREF
    - PG_END_TRY
    - dgettext
    - PG_TRY
    - PyObject_GetAttrString
    - errmsg_internal
    - PyErr_NormalizeException
    - ereport
    - initStringInfo
    - errcode
    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:196,1
    - Dst: PyObject_GetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:203,1
    - Dst: PyObject_GetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:204,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:206,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:208,1
    - Dst: PyObject_Str
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:210,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:211,1
    - Dst: initStringInfo
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:215,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:219,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:222,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:223,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:224,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:225,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:227,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:228,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:232,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:234,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:235,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:236,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:238,1
    - Dst: initStringInfo
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:244,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:246,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:255,1
    - Dst: PyObject_GetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:257,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:259,1
    - Dst: PyObject_GetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:261,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:263,1
    - Dst: PyObject_GetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:265,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:267,1
    - Dst: PyObject_GetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:269,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:271,1
    - Dst: PyObject_GetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:273,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:275,1
    - Dst: PLy_current_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:280,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:294,1
    - Dst: PLy_procedure_name
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:296,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:297,1
    - Dst: PyLong_AsLong
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:298,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:301,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:304,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:312,1
    - Dst: get_source_line
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:323,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:326,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:327,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:332,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:334,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:335,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:336,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:337,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:338,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:340,1
    - Dst: PyObject_GetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:343,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:345,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 86
    argCount: 6
    argNames:
    - e
    - v
    - tb
    - xmsg
    - tbmsg
    - tb_depth
    argTypes:
    - PyObject*
    - PyObject*
    - PyObject*
    - char**
    - char**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 172
    functionDepth: 3
    functionLinenumber: 172
    functionLinenumberEnd: 351
    functionName: PLy_traceback
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_elog.c
    functionUses: 1
    functionsReached:
    - pfree
    - PLy_current_execution_context
    - PG_END_TRY
    - Py_XDECREF
    - PLyUnicode_AsString
    - PyObject_GetAttrString
    - PG_TRY
    - PyObject_Str
    - appendStringInfoString
    - appendStringInfo
    - PLy_procedure_name
    - elog
    - PyLong_AsLong
    - get_source_line
    - initStringInfo
    - strcmp
    - PG_FINALLY
    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:362,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:366,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:367,1
    - Dst: strspn
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:368,1
    - Dst: MAKE_SQLSTATE
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:370,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:374,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - exc
    - sqlerrcode
    argTypes:
    - PyObject*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 356
    functionDepth: 3
    functionLinenumber: 356
    functionLinenumberEnd: 375
    functionName: PLy_get_sqlerrcode
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_elog.c
    functionUses: 0
    functionsReached:
    - strspn
    - Py_DECREF
    - PLyUnicode_AsString
    - MAKE_SQLSTATE
    - PyObject_GetAttrString
    - strlen
    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:389,1
    - Dst: PyArg_ParseTuple
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:393,1
    - Dst: PLy_get_sqlerrcode
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:404,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:407,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: 408
      start: 380
    functionDepth: 4
    functionLinenumber: 380
    functionLinenumberEnd: 408
    functionName: PLy_get_spi_error_data
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_elog.c
    functionUses: 1
    functionsReached:
    - Py_XDECREF
    - PLy_get_sqlerrcode
    - PyArg_ParseTuple
    - 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:421,1
    - Dst: get_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:422,1
    - Dst: get_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:423,1
    - Dst: get_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:424,1
    - Dst: get_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:425,1
    - Dst: get_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:426,1
    - Dst: get_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:427,1
    - Dst: get_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:428,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: 429
      start: 416
    functionDepth: 4
    functionLinenumber: 416
    functionLinenumberEnd: 429
    functionName: PLy_get_error_data
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_elog.c
    functionUses: 1
    functionsReached:
    - PLy_get_sqlerrcode
    - get_string_attr
    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:448,1
    - Dst: isspace
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:457,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:461,1
    - Dst: pnstrdup
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:471,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 2
    argNames:
    - src
    - lineno
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 434
    functionDepth: 0
    functionLinenumber: 434
    functionLinenumberEnd: 472
    functionName: get_source_line
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_elog.c
    functionUses: 1
    functionsReached:
    - isspace
    - pnstrdup
    - pstrdup
    - 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:482,1
    - Dst: vsnprintf
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:483,1
    - Dst: dgettext
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:483,1
    - Dst: va_end
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:484,1
    - Dst: PyErr_SetString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - exc
    - fmt
    argTypes:
    - PyObject*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 476
    functionDepth: 1
    functionLinenumber: 476
    functionLinenumberEnd: 487
    functionName: PLy_exception_set
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_elog.c
    functionUses: 15
    functionsReached:
    - vsnprintf
    - PyErr_SetString
    - dgettext
    - va_end
    - va_start
    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:498,1
    - Dst: vsnprintf
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:499,1
    - Dst: dngettext
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:500,1
    - Dst: va_end
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:502,1
    - Dst: PyErr_SetString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:504,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: 505
      start: 490
    functionDepth: 1
    functionLinenumber: 490
    functionLinenumberEnd: 505
    functionName: PLy_exception_set_plural
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_elog.c
    functionUses: 2
    functionsReached:
    - vsnprintf
    - PyErr_SetString
    - va_end
    - va_start
    - dngettext
    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:514,1
    - Dst: PyObject_CallObject
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:519,1
    - Dst: set_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:523,1
    - Dst: unpack_sql_state
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:524,1
    - Dst: set_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:527,1
    - Dst: set_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:530,1
    - Dst: set_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:533,1
    - Dst: set_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:536,1
    - Dst: set_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:539,1
    - Dst: set_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:542,1
    - Dst: set_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:545,1
    - Dst: set_string_attr
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:548,1
    - Dst: PyErr_SetObject
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:551,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:553,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:554,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:559,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:560,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:562,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 45
    argCount: 2
    argNames:
    - excclass
    - edata
    argTypes:
    - PyObject*
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 508
    functionDepth: 1
    functionLinenumber: 508
    functionLinenumberEnd: 563
    functionName: PLy_exception_set_with_details
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_elog.c
    functionUses: 1
    functionsReached:
    - Py_DECREF
    - PyErr_SetObject
    - Py_XDECREF
    - set_string_attr
    - PyObject_CallObject
    - Py_BuildValue
    - unpack_sql_state
    - elog
    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:571,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:574,1
    - Dst: PLyUnicode_AsString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:574,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:576,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - obj
    - attrname
    - str
    argTypes:
    - PyObject*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 566
    functionDepth: 3
    functionLinenumber: 566
    functionLinenumberEnd: 577
    functionName: get_string_attr
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_elog.c
    functionUses: 1
    functionsReached:
    - PLyUnicode_AsString
    - Py_XDECREF
    - pstrdup
    - 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:590,1
    - Dst: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:597,1
    - Dst: PyObject_SetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:600,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_elog.c:601,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - obj
    - attrname
    - str
    argTypes:
    - PyObject*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 582
    functionDepth: 3
    functionLinenumber: 582
    functionLinenumberEnd: 604
    functionName: set_string_attr
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_elog.c
    functionUses: 1
    functionsReached:
    - PyObject_SetAttrString
    - Py_INCREF
    - PLyUnicode_FromString
    - Py_DECREF
    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
    - MemoryContextSwitchTo
    - MemoryContextReset
    - PLy_get_scratch_context
    - 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:
    - PLy_current_execution_context
    - MemoryContextSwitchTo
    - MemoryContextReset
    - PLyDict_FromTuple
    - PLy_get_scratch_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:
    - pfree
    - Assert
    - TupleDescAttr
    - MemoryContextAllocZero
    - PLy_input_setup_func
    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:
    - pfree
    - Assert
    - PLy_output_setup_func
    - 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:
    - check_stack_depth
    - getTypeInputInfo
    - IsTrueArrayType
    - PLy_output_setup_func
    - get_transform_tosql
    - MemoryContextAllocZero
    - lookup_type_cache
    - fmgr_info_cxt
    - getBaseType
    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:
    - check_stack_depth
    - IsTrueArrayType
    - getTypeOutputInfo
    - MemoryContextAllocZero
    - PLy_input_setup_func
    - lookup_type_cache
    - fmgr_info_cxt
    - get_transform_fromsql
    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:
    - DatumGetFloat8
    - PyFloat_FromDouble
    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:
    - DatumGetCString
    - PyObject_GetAttrString
    - PyImport_ImportModule
    - PLy_elog
    - DirectFunctionCall1
    - PyErr_Clear
    - PyObject_CallFunction
    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:
    - DatumGetObjectId
    - PyLong_FromUnsignedLong
    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:
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - PyBytes_FromStringAndSize
    - DatumGetByteaPP
    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
    - PLyUnicode_FromString
    - OutputFunctionCall
    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:
    - PLyList_FromArray_recurse
    - Assert
    - ARR_DIMS
    - DatumGetArrayTypeP
    - ARR_DATA_PTR
    - ARR_NDIM
    - PyList_New
    - ARR_NULLBITMAP
    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: Py_INCREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:744,1
    - Dst: PyList_SetItem
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:745,1
    - Dst: fetch_att
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:751,1
    - Dst: PyList_SetItem
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:752,1
    - Dst: PLyDatumToOb*::func
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:752,1
    - Dst: att_addlength_pointer
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:753,1
    - Dst: att_align_nominal
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:754,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**
    - bits8**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 706
    functionDepth: 1
    functionLinenumber: 706
    functionLinenumberEnd: 775
    functionName: PLyList_FromArray_recurse
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 2
    functionsReached:
    - PLyList_FromArray_recurse
    - Py_INCREF
    - att_align_nominal
    - PyList_New
    - PyList_SetItem
    - PLyDatumToOb*::func
    - fetch_att
    - att_addlength_pointer
    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, bits8 **bitmap_p, int *bitmask_p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:790,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:792,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:793,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:794,1
    - Dst: PLy_input_setup_tuple
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:797,1
    - Dst: PLy_current_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:798,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:801,1
    - Dst: PLyDict_FromTuple
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:804,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:806,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - arg
    - d
    argTypes:
    - PLyDatumToOb*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 780
    functionDepth: 2
    functionLinenumber: 780
    functionLinenumberEnd: 809
    functionName: PLyDict_FromComposite
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - ReleaseTupleDesc
    - DatumGetHeapTupleHeader
    - PLy_current_execution_context
    - PLyDict_FromTuple
    - lookup_rowtype_tupdesc
    - PLy_input_setup_tuple
    - HeapTupleHeaderGetTypeId
    - HeapTupleHeaderGetTypMod
    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:820,1
    - Dst: PyDict_New
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:822,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:826,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:833,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:852,1
    - Dst: heap_getattr
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:853,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:856,1
    - Dst: PLyDatumToOb*::func
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:859,1
    - Dst: PyDict_SetItemString
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:860,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:861,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:865,1
    - Dst: Py_DECREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:867,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:868,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:870,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: 873
      start: 814
    functionDepth: 1
    functionLinenumber: 814
    functionLinenumberEnd: 873
    functionName: PLyDict_FromTuple
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 2
    functionsReached:
    - Py_DECREF
    - Assert
    - NameStr
    - PG_RE_THROW
    - heap_getattr
    - PG_END_TRY
    - PG_TRY
    - PLyDatumToOb*::func
    - PyDict_New
    - TupleDescAttr
    - PG_CATCH
    - PyDict_SetItemString
    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:891,1
    - Dst: PyObject_IsTrue
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:891,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - arg
    - plrv
    - isnull
    - inarray
    argTypes:
    - PLyObToDatum*
    - PyObject*
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 892
      start: 881
    functionDepth: 1
    functionLinenumber: 881
    functionLinenumberEnd: 892
    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:913,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:915,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:917,1
    - Dst: PyBytes_AsString
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:919,1
    - Dst: PyBytes_Size
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:920,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:922,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:924,1
    - Dst: memcpy
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:925,1
    - Dst: VARDATA
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:925,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:926,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:928,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:930,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:932,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 4
    argNames:
    - arg
    - plrv
    - isnull
    - inarray
    argTypes:
    - PLyObToDatum*
    - PyObject*
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 935
      start: 899
    functionDepth: 1
    functionLinenumber: 899
    functionLinenumberEnd: 935
    functionName: PLyObject_ToBytea
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 0
    functionsReached:
    - PyBytes_AsString
    - PG_END_TRY
    - Py_XDECREF
    - PG_TRY
    - PyObject_Bytes
    - memcpy
    - PyBytes_Size
    - VARDATA
    - PointerGetDatum
    - PLy_elog
    - palloc
    - PG_FINALLY
    - SET_VARSIZE
    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:961,1
    - Dst: PLyUnicode_ToComposite
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:962,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:972,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:974,1
    - Dst: PLy_output_setup_tuple
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:978,1
    - Dst: PLy_current_execution_context
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:979,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:988,1
    - Dst: PinTupleDesc
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:994,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:999,1
    - Dst: PySequence_Check
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1005,1
    - Dst: PLySequence_ToComposite
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1007,1
    - Dst: PyMapping_Check
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1008,1
    - Dst: PLyMapping_ToComposite
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1010,1
    - Dst: PLyGenericObject_ToComposite
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1013,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1015,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 4
    argNames:
    - arg
    - plrv
    - isnull
    - inarray
    argTypes:
    - PLyObToDatum*
    - PyObject*
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 943
    functionDepth: 2
    functionLinenumber: 943
    functionLinenumberEnd: 1018
    functionName: PLyObject_ToComposite
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 0
    functionsReached:
    - ReleaseTupleDesc
    - Assert
    - PLy_current_execution_context
    - PLy_output_setup_tuple
    - PyMapping_Check
    - PLyMapping_ToComposite
    - PLyUnicode_ToComposite
    - PLySequence_ToComposite
    - lookup_rowtype_tupdesc
    - PinTupleDesc
    - PySequence_Check
    - PLyGenericObject_ToComposite
    - PyUnicode_Check
    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:1034,1
    - Dst: PLyUnicode_Bytes
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1035,1
    - Dst: PyFloat_Check
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1036,1
    - Dst: PyObject_Repr
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1039,1
    - Dst: PLyUnicode_Bytes
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1041,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1042,1
    - Dst: PyObject_Str
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1046,1
    - Dst: PLyUnicode_Bytes
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1048,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1049,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1052,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1054,1
    - Dst: PyBytes_AsString
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1054,1
    - Dst: PyBytes_Size
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1055,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1056,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1058,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1061,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1062,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1063,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1065,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1066,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - plrv
    argTypes:
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1069
      start: 1026
    functionDepth: 2
    functionLinenumber: 1026
    functionLinenumberEnd: 1069
    functionName: PLyObject_AsString
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PLyUnicode_Bytes
    - PyBytes_AsString
    - Py_XDECREF
    - PyObject_Str
    - pstrdup
    - PyBytes_Size
    - ereport
    - elog
    - PyObject_Repr
    - PyFloat_Check
    - PLy_elog
    - pg_verifymbstr
    - PyUnicode_Check
    - errcode
    - strlen
    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:1089,1
    - Dst: InputFunctionCall
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1091,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - arg
    - plrv
    - isnull
    - inarray
    argTypes:
    - PLyObToDatum*
    - PyObject*
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1095
      start: 1076
    functionDepth: 3
    functionLinenumber: 1076
    functionLinenumberEnd: 1095
    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:1108,1
    - Dst: domain_check
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - arg
    - plrv
    - isnull
    - inarray
    argTypes:
    - PLyObToDatum*
    - PyObject*
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1112
      start: 1101
    functionDepth: 1
    functionLinenumber: 1101
    functionLinenumberEnd: 1112
    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:1128,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - arg
    - plrv
    - isnull
    - inarray
    argTypes:
    - PLyObToDatum*
    - PyObject*
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1129
      start: 1118
    functionDepth: 1
    functionLinenumber: 1118
    functionLinenumberEnd: 1129
    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:1157,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1158,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1159,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1160,1
    - Dst: memset
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1163,1
    - Dst: PySequence_Length
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1164,1
    - Dst: PLySequence_ToArray_recurse
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1170,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1177,1
    - Dst: construct_empty_array
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1177,1
    - Dst: makeMdArrayResult
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1182,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - arg
    - plrv
    - isnull
    - inarray
    argTypes:
    - PLyObToDatum*
    - PyObject*
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1184
      start: 1135
    functionDepth: 1
    functionLinenumber: 1135
    functionLinenumberEnd: 1184
    functionName: PLySequence_ToArray
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 0
    functionsReached:
    - errmsg
    - memset
    - PySequence_Length
    - ereport
    - PointerGetDatum
    - construct_empty_array
    - makeMdArrayResult
    - PySequence_Check
    - PLySequence_ToArray_recurse
    - errcode
    linkageType: ''
    returnType: Datum
    signature: "Datum PLySequence_ToArray(PLyObToDatum *arg, PyObject *plrv,\n\t\t\t\t\tbool
      *isnull, bool inarray)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PySequence_Length
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1201,1
    - Dst: PLy_elog
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1205,1
    - Dst: PySequence_GetItem
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1210,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1213,1
    - Dst: PyList_Check
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1216,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1223,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1224,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1225,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: PySequence_Length
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1233,1
    - Dst: PySequence_Length
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1237,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1238,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1239,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1240,1
    - Dst: PLySequence_ToArray_recurse
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1243,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1254,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1255,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1256,1
    - Dst: PLyObToDatum*::func
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1259,1
    - Dst: initArrayResult
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1263,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1267,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1271,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1273,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1275,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 7
    argNames:
    - obj
    - astatep
    - ndims
    - dims
    - cur_depth
    - elm
    - elmbasetype
    argTypes:
    - PyObject*
    - ArrayBuildState**
    - int*
    - int*
    - int
    - PLyObToDatum*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1277
      start: 1195
    functionDepth: 1
    functionLinenumber: 1195
    functionLinenumberEnd: 1277
    functionName: PLySequence_ToArray_recurse
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 2
    functionsReached:
    - errmsg
    - PLyObToDatum*::func
    - PG_END_TRY
    - Py_XDECREF
    - PG_TRY
    - PySequence_Length
    - ereport
    - accumArrayResult
    - initArrayResult
    - PLy_elog
    - PLySequence_ToArray_recurse
    - PG_FINALLY
    - PySequence_GetItem
    - errcode
    - PyList_Check
    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:1292,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1293,1
    - Dst: PLyObject_AsString
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1295,1
    - Dst: isspace
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1327,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1330,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1331,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1332,1
    - Dst: errdetail
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1333,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1334,1
    - Dst: InputFunctionCall
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1337,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - arg
    - string
    - inarray
    argTypes:
    - PLyObToDatum*
    - PyObject*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1341
      start: 1283
    functionDepth: 3
    functionLinenumber: 1283
    functionLinenumberEnd: 1341
    functionName: PLyUnicode_ToComposite
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 1
    functionsReached:
    - errmsg
    - InputFunctionCall
    - ereport
    - errhint
    - fmgr_info_cxt
    - OidIsValid
    - PLyObject_AsString
    - isspace
    - errdetail
    - errcode
    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:1353,1
    - Dst: PyMapping_Check
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1353,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1356,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1357,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1363,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1372,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1375,1
    - Dst: PyMapping_GetItemString
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1377,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1379,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1380,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1381,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1382,1
    - Dst: PLyObToDatum*::func
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1385,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1387,1
    - Dst: PG_CATCH
      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_RE_THROW
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1393,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1395,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1398,1
    - Dst: heap_copy_tuple_as_datum
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1399,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1400,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1402,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1403,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 3
    argNames:
    - arg
    - desc
    - mapping
    argTypes:
    - PLyObToDatum*
    - TupleDesc
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1406
      start: 1344
    functionDepth: 1
    functionLinenumber: 1344
    functionLinenumberEnd: 1406
    functionName: PLyMapping_ToComposite
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 1
    functionsReached:
    - errhint
    - pfree
    - PyMapping_Check
    - NameStr
    - PG_RE_THROW
    - heap_freetuple
    - errmsg
    - heap_form_tuple
    - Py_XDECREF
    - TupleDescAttr
    - heap_copy_tuple_as_datum
    - palloc
    - Assert
    - PLyObToDatum*::func
    - PG_END_TRY
    - PG_TRY
    - PG_CATCH
    - ereport
    - PyMapping_GetItemString
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum PLyMapping_ToComposite(PLyObToDatum *arg, TupleDesc desc, PyObject
      *mapping)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1419,1
    - Dst: PySequence_Check
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1419,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1429,1
    - Dst: PySequence_Length
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1432,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1433,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1434,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1435,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1438,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1439,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1446,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1455,1
    - Dst: PySequence_GetItem
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1457,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1458,1
    - Dst: PLyObToDatum*::func
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1460,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1462,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1465,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1467,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1468,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1470,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1475,1
    - Dst: heap_copy_tuple_as_datum
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1476,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1477,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1479,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1480,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 40
    argCount: 3
    argNames:
    - arg
    - desc
    - sequence
    argTypes:
    - PLyObToDatum*
    - TupleDesc
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1483
      start: 1409
    functionDepth: 1
    functionLinenumber: 1409
    functionLinenumberEnd: 1483
    functionName: PLySequence_ToComposite
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 1
    functionsReached:
    - pfree
    - PG_RE_THROW
    - heap_freetuple
    - errmsg
    - heap_form_tuple
    - Py_XDECREF
    - TupleDescAttr
    - PySequence_Length
    - heap_copy_tuple_as_datum
    - PySequence_Check
    - PySequence_GetItem
    - palloc
    - Assert
    - PLyObToDatum*::func
    - PG_END_TRY
    - PG_TRY
    - PG_CATCH
    - ereport
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum PLySequence_ToComposite(PLyObToDatum *arg, TupleDesc desc, PyObject
      *sequence)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1496,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1497,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1503,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1512,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1515,1
    - Dst: PyObject_GetAttrString
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1517,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1531,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1532,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1533,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1535,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1536,1
    - Dst: PLyObToDatum*::func
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1539,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1541,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1544,1
    - Dst: Py_XDECREF
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1546,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1547,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1549,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1552,1
    - Dst: heap_copy_tuple_as_datum
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1553,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1554,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1556,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpython/plpy_typeio.c:1557,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 4
    argNames:
    - arg
    - desc
    - object
    - inarray
    argTypes:
    - PLyObToDatum*
    - TupleDesc
    - PyObject*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1560
      start: 1486
    functionDepth: 1
    functionLinenumber: 1486
    functionLinenumberEnd: 1560
    functionName: PLyGenericObject_ToComposite
    functionSourceFile: /src/postgres/src/pl/plpython/plpy_typeio.c
    functionUses: 1
    functionsReached:
    - errmsg
    - heap_form_tuple
    - PLyObToDatum*::func
    - NameStr
    - PG_RE_THROW
    - Py_XDECREF
    - PG_END_TRY
    - PyObject_GetAttrString
    - PG_TRY
    - heap_freetuple
    - pfree
    - TupleDescAttr
    - PG_CATCH
    - heap_copy_tuple_as_datum
    - ereport
    - errhint
    - palloc
    - errcode
    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
    - palloc
    - strlen
    - strcpy
    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:
    - E_LIST_WALK
    - S_LIST_WALK
    - elog
    - 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_add_member
    - bms_free
    - bms_copy
    - plpgsql_statement_tree_walker
    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
    - mark_stmt
    - bms_add_member
    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:
    - Assert
    - free_stmt
    - MemoryContextDelete
    - free_expr
    - elog
    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_case
    - dump_perform
    - dump_foreach_a
    - dump_loop
    - dump_dynexecute
    - dump_open
    - dump_assert
    - dump_raise
    - dump_commit
    - dump_fetch
    - dump_return
    - dump_execsql
    - dump_dynfors
    - dump_forc
    - dump_getdiag
    - dump_rollback
    - dump_exit
    - elog
    - dump_assign
    - dump_fori
    - dump_return_next
    - printf
    - dump_block
    - dump_if
    - dump_fors
    - dump_close
    - dump_call
    - dump_return_query
    - dump_while
    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:
    - printf
    - dump_stmts
    - dump_ind
    - foreach
    - lfirst
    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:
    - printf
    - dump_expr
    - dump_ind
    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:
    - printf
    - dump_stmts
    - dump_ind
    - foreach
    - dump_expr
    - lfirst
    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:
    - printf
    - dump_stmts
    - dump_ind
    - foreach
    - dump_expr
    - lfirst
    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:
    - printf
    - dump_stmts
    - dump_ind
    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:
    - printf
    - dump_stmts
    - dump_expr
    - dump_ind
    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:
    - printf
    - dump_stmts
    - dump_expr
    - dump_ind
    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:
    - printf
    - dump_stmts
    - dump_expr
    - dump_ind
    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:
    - printf
    - dump_stmts
    - dump_expr
    - dump_ind
    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:
    - printf
    - dump_stmts
    - dump_expr
    - dump_ind
    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:
    - printf
    - dump_ind
    - foreach
    - dump_expr
    - lfirst
    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
    - printf
    - dump_ind
    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:
    - printf
    - dump_expr
    - dump_ind
    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:
    - printf
    - dump_ind
    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:
    - printf
    - dump_expr
    - dump_ind
    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:
    - printf
    - dump_expr
    - dump_ind
    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:
    - printf
    - dump_ind
    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:
    - printf
    - dump_ind
    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:
    - printf
    - dump_expr
    - dump_ind
    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:
    - printf
    - dump_expr
    - dump_ind
    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:
    - printf
    - dump_expr
    - dump_ind
    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:
    - printf
    - dump_ind
    - foreach
    - dump_expr
    - lfirst
    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:
    - printf
    - dump_ind
    - foreach
    - dump_expr
    - lfirst
    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:
    - printf
    - dump_expr
    - dump_ind
    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:
    - printf
    - dump_expr
    - dump_ind
    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:
    - printf
    - dump_ind
    - foreach
    - dump_expr
    - lfirst
    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:
    - printf
    - dump_stmts
    - dump_ind
    - foreach
    - dump_expr
    - lfirst
    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:
    - printf
    - dump_ind
    - list_head
    - foreach
    - plpgsql_getdiag_kindname
    - lfirst
    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:
    - printf
    - dump_expr
    - fflush
    - dump_block
    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:
    - GUC_check_errdetail
    - pfree
    - pstrdup
    - guc_malloc
    - pg_strcasecmp
    - SplitIdentifierString
    - lfirst
    - list_free
    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:
    - GUC_check_errdetail
    - pfree
    - pg_strcasecmp
    - lfirst
    - list_free
    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:
    - RegisterXactCallback
    - DefineCustomBoolVariable
    - DefineCustomEnumVariable
    - MarkGUCPrefixReserved
    - RegisterSubXactCallback
    - DefineCustomStringVariable
    - gettext_noop
    - find_rendezvous_variable
    - pg_bindtextdomain
    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:
    - plpgsql_exec_event_trigger
    - castNode
    - ResourceOwnerCreate
    - CALLED_AS_TRIGGER
    - plpgsql_exec_function
    - ReleaseAllPlanCacheRefsInOwner
    - ResourceOwnerDelete
    - CALLED_AS_EVENT_TRIGGER
    - IsA
    - elog
    - PG_FINALLY
    - plpgsql_compile
    - PG_END_TRY
    - PG_TRY
    - plpgsql_exec_trigger
    - SPI_result_code_string
    - PointerGetDatum
    - SPI_finish
    - SPI_connect_ext
    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:
    - plpgsql_subxact_cb
    - castNode
    - ResourceOwnerCreate
    - CreateExecutorState
    - PG_GETARG_DATUM
    - LOCAL_FCINFO
    - PG_RE_THROW
    - plpgsql_exec_function
    - GetCurrentSubTransactionId
    - ReleaseAllPlanCacheRefsInOwner
    - DatumGetPointer
    - FreeExecutorState
    - ResourceOwnerDelete
    - elog
    - MemSet
    - plpgsql_free_function_memory
    - Assert
    - PG_END_TRY
    - SizeForFunctionCallInfo
    - PG_TRY
    - PG_CATCH
    - SPI_result_code_string
    - SPI_finish
    - SPI_connect_ext
    - plpgsql_compile_inline
    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:
    - HeapTupleIsValid
    - get_typtype
    - LOCAL_FCINFO
    - ReleaseSysCache
    - GETSTRUCT
    - PG_GETARG_OID
    - CheckFunctionValidatorAccess
    - errmsg
    - SPI_connect
    - PG_RETURN_VOID
    - format_type_be
    - IsPolymorphicType
    - elog
    - MemSet
    - ObjectIdGetDatum
    - plpgsql_compile
    - SizeForFunctionCallInfo
    - SPI_result_code_string
    - ereport
    - SearchSysCache1
    - SPI_finish
    - get_func_arg_info
    - errcode
    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:202,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:203,1
    - Dst: plpgsql_scanner_init
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:204,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:206,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:206,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:235,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:238,1
    - Dst: format_procedure
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:240,1
    - Dst: MemoryContextSetIdentifier
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:241,1
    - Dst: plpgsql_ns_init
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:270,1
    - Dst: plpgsql_ns_push
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:271,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:271,1
    - Dst: plpgsql_start_datums
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:273,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:287,1
    - Dst: get_func_arg_info
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:289,1
    - Dst: cfunc_resolve_polymorphic_argtypes
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:292,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:297,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:298,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:300,1
    - Dst: snprintf
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:315,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:318,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:327,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:328,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:329,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:330,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:336,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:347,1
    - Dst: add_parameter_name
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:362,1
    - Dst: add_parameter_name
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:366,1
    - Dst: build_row_from_vars
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:379,1
    - Dst: plpgsql_adddatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:382,1
    - Dst: IsPolymorphicType
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:399,1
    - Dst: get_fn_expr_rettype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:417,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:418,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:419,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:420,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:421,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:436,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:436,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:437,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:438,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:439,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:449,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:450,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:451,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: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:456,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:459,1
    - Dst: IsPolymorphicType
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:469,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:472,1
    - Dst: build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:473,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:480,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:493,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:494,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:495,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:496,1
    - Dst: plpgsql_build_record
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:499,1
    - Dst: plpgsql_build_record
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:503,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:507,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:508,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:513,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:518,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:519,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:524,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:529,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:530,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:535,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:540,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:541,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:546,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:551,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:552,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:557,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:562,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:563,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:568,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:573,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:574,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:579,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:584,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:585,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:590,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:595,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:596,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:601,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:606,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:607,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:612,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:627,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:628,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:629,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:632,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:633,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:638,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:643,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:644,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:649,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:656,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:667,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:668,1
    - Dst: plpgsql_yyparse
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:678,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:680,1
    - Dst: plpgsql_scanner_finish
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:682,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:683,1
    - Dst: add_dummy_return
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:693,1
    - Dst: plpgsql_finish_datums
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:702,1
    - Dst: plpgsql_mark_local_assignment_targets
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:705,1
    - Dst: plpgsql_dumptree
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:709,1
    - Dst: MemoryContextSetParent
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:714,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:724,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 208
    argCount: 5
    argNames:
    - fcinfo
    - procTup
    - hashkey
    - cfunc
    - forValidator
    argTypes:
    - FunctionCallInfo
    - HeapTuple
    - CachedFunctionHashKey*
    - CachedFunction*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 166
    functionDepth: 5
    functionLinenumber: 166
    functionLinenumberEnd: 726
    functionName: plpgsql_compile_callback
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - add_dummy_return
    - HeapTupleIsValid
    - snprintf
    - SysCacheGetAttrNotNull
    - plpgsql_adddatum
    - pstrdup
    - plpgsql_finish_datums
    - cfunc_resolve_polymorphic_argtypes
    - errhint
    - plpgsql_scanner_init
    - build_row_from_vars
    - build_datatype
    - CALLED_AS_TRIGGER
    - pfree
    - NameStr
    - get_fn_expr_rettype
    - ReleaseSysCache
    - plpgsql_ns_push
    - GETSTRUCT
    - plpgsql_build_datatype
    - format_procedure
    - plpgsql_build_record
    - plpgsql_start_datums
    - errmsg
    - CALLED_AS_EVENT_TRIGGER
    - format_type_be
    - plpgsql_scanner_finish
    - IsPolymorphicType
    - plpgsql_yyparse
    - elog
    - OidIsValid
    - plpgsql_ns_init
    - palloc
    - plpgsql_build_variable
    - ObjectIdGetDatum
    - plpgsql_mark_local_assignment_targets
    - type_is_rowtype
    - Assert
    - add_parameter_name
    - TextDatumGetCString
    - ereport
    - SearchSysCache1
    - AllocSetContextCreate
    - MemoryContextSetIdentifier
    - plpgsql_dumptree
    - get_func_arg_info
    - errcode
    - MemoryContextSetParent
    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:753,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:771,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:779,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:782,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:784,1
    - Dst: plpgsql_ns_init
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:803,1
    - Dst: plpgsql_ns_push
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:804,1
    - Dst: plpgsql_start_datums
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:806,1
    - Dst: plpgsql_build_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:827,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:828,1
    - Dst: plpgsql_yyparse
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:838,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:840,1
    - Dst: plpgsql_scanner_finish
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:842,1
    - Dst: add_dummy_return
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:849,1
    - Dst: plpgsql_finish_datums
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:856,1
    - Dst: plpgsql_mark_local_assignment_targets
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:859,1
    - Dst: plpgsql_dumptree
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:863,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:873,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 58
    argCount: 1
    argNames:
    - proc_source
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 738
    functionDepth: 5
    functionLinenumber: 738
    functionLinenumberEnd: 876
    functionName: plpgsql_compile_inline
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - add_dummy_return
    - plpgsql_ns_push
    - plpgsql_scanner_finish
    - plpgsql_finish_datums
    - palloc0
    - pstrdup
    - plpgsql_yyparse
    - plpgsql_build_datatype
    - elog
    - plpgsql_scanner_init
    - AllocSetContextCreate
    - plpgsql_ns_init
    - plpgsql_build_variable
    - plpgsql_start_datums
    - plpgsql_dumptree
    - plpgsql_mark_local_assignment_targets
    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:896,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:906,1
    - Dst: plpgsql_latest_lineno
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:907,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 908
      start: 884
    functionDepth: 1
    functionLinenumber: 884
    functionLinenumberEnd: 908
    functionName: plpgsql_compile_error_callback
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - errcontext
    - plpgsql_latest_lineno
    - function_parse_error_transpose
    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:924,1
    - Dst: plpgsql_ns_top
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:924,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:927,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:928,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:929,1
    - Dst: plpgsql_ns_additem
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:933,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - itemtype
    - itemno
    - name
    argTypes:
    - PLpgSQL_nsitem_type
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 914
    functionDepth: 2
    functionLinenumber: 914
    functionLinenumberEnd: 934
    functionName: add_parameter_name
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 1
    functionsReached:
    - errmsg
    - plpgsql_ns_lookup
    - ereport
    - plpgsql_ns_top
    - errcode
    - plpgsql_ns_additem
    linkageType: ''
    returnType: void
    signature: void add_parameter_name(PLpgSQL_nsitem_type itemtype, int itemno, const
      char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc0::palloc0
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:953,1
    - Dst: list_make1
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:956,1
    - Dst: llast
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:961,1
    - Dst: palloc0::palloc0
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:965,1
    - Dst: lappend
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:971,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - function
    argTypes:
    - PLpgSQL_function*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 939
    functionDepth: 1
    functionLinenumber: 939
    functionLinenumberEnd: 973
    functionName: add_dummy_return
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 2
    functionsReached:
    - lappend
    - llast
    - palloc0::palloc0
    - list_make1
    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: 992
      start: 984
    functionDepth: 0
    functionLinenumber: 984
    functionLinenumberEnd: 992
    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:1003,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - pstate
    - cref
    argTypes:
    - ParseState*
    - ColumnRef*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1006
      start: 997
    functionDepth: 1
    functionLinenumber: 997
    functionLinenumberEnd: 1006
    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:1033,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1041,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1042,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1043,1
    - Dst: NameListToString
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1044,1
    - Dst: errdetail
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1045,1
    - Dst: parser_errposition
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1046,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - pstate
    - cref
    - var
    argTypes:
    - ParseState*
    - ColumnRef*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1050
      start: 1011
    functionDepth: 1
    functionLinenumber: 1011
    functionLinenumberEnd: 1050
    functionName: plpgsql_post_column_ref
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - NameListToString
    - parser_errposition
    - ereport
    - resolve_column_ref
    - errdetail
    - errcode
    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:1062,1
    - Dst: plpgsql_ns_lookup
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1064,1
    - Dst: make_datum_param
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1071,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - pstate
    - pref
    argTypes:
    - ParseState*
    - ParamRef*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1055
    functionDepth: 1
    functionLinenumber: 1055
    functionLinenumberEnd: 1072
    functionName: plpgsql_param_ref
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - make_datum_param
    - snprintf
    - plpgsql_ns_lookup
    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:1114,1
    - Dst: linitial
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1118,1
    - Dst: strVal
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1120,1
    - Dst: linitial
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1127,1
    - Dst: lsecond
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1128,1
    - Dst: strVal
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1130,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1133,1
    - Dst: strVal
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1141,1
    - Dst: linitial
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1150,1
    - Dst: lsecond
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1151,1
    - Dst: lthird
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1152,1
    - Dst: strVal
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1154,1
    - Dst: strVal
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1155,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1158,1
    - Dst: strVal
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1166,1
    - Dst: plpgsql_ns_lookup
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1176,1
    - Dst: make_datum_param
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1187,1
    - Dst: make_datum_param
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1191,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1204,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1206,1
    - Dst: make_datum_param
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1208,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1225,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1226,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1227,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1229,1
    - Dst: parser_errposition
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1230,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1234,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: 1239
      start: 1082
    functionDepth: 1
    functionLinenumber: 1082
    functionLinenumberEnd: 1239
    functionName: resolve_column_ref
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 2
    functionsReached:
    - errmsg
    - Assert
    - plpgsql_ns_lookup
    - linitial
    - parser_errposition
    - lsecond
    - IsA
    - list_length
    - lthird
    - ereport
    - errhint
    - elog
    - strVal
    - make_datum_param
    - strcmp
    - errcode
    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:1255,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1261,1
    - Dst: bms_add_member
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1262,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1263,1
    - Dst: makeNode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1265,1
    - Dst: plpgsql_exec_get_datum_type_info
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1268,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - expr
    - dno
    - location
    argTypes:
    - PLpgSQL_expr*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1245
    functionDepth: 1
    functionLinenumber: 1245
    functionLinenumberEnd: 1276
    functionName: make_datum_param
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 2
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - makeNode
    - 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:1314,1
    - Dst: plpgsql_ns_top
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1314,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1332,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: 1345
      start: 1298
    functionDepth: 1
    functionLinenumber: 1298
    functionLinenumberEnd: 1345
    functionName: plpgsql_parse_word
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - elog
    - plpgsql_ns_top
    - plpgsql_ns_lookup
    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:1361,1
    - Dst: makeString
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1361,1
    - Dst: makeString
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1362,1
    - Dst: plpgsql_ns_lookup
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1375,1
    - Dst: plpgsql_ns_top
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1375,1
    - Dst: plpgsql_build_recfield::plpgsql_build_recfield
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1403,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 4
    argNames:
    - word1
    - word2
    - wdatum
    - cword
    argTypes:
    - char*
    - char*
    - PLwdatum*
    - PLcword*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1426
      start: 1353
    functionDepth: 1
    functionLinenumber: 1353
    functionLinenumberEnd: 1426
    functionName: plpgsql_parse_dblword
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - makeString
    - plpgsql_ns_lookup
    - list_make2
    - plpgsql_build_recfield::plpgsql_build_recfield
    - 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:1455,1
    - Dst: plpgsql_ns_top
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1455,1
    - Dst: plpgsql_build_recfield::plpgsql_build_recfield
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1477,1
    - Dst: list_make2
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1478,1
    - Dst: makeString
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1478,1
    - Dst: makeString
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1479,1
    - Dst: plpgsql_build_recfield::plpgsql_build_recfield
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1484,1
    - Dst: list_make3
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1485,1
    - Dst: makeString
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1485,1
    - Dst: makeString
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1486,1
    - Dst: makeString
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1487,1
    - Dst: wdatum::wdatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1489,1
    - Dst: list_make3
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1503,1
    - Dst: makeString
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1503,1
    - Dst: makeString
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1504,1
    - Dst: makeString
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1505,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: 1508
      start: 1434
    functionDepth: 1
    functionLinenumber: 1434
    functionLinenumberEnd: 1508
    functionName: plpgsql_parse_tripword
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - makeString
    - plpgsql_ns_lookup
    - list_make2
    - list_make3
    - plpgsql_build_recfield::plpgsql_build_recfield
    - 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:1526,1
    - Dst: plpgsql_ns_top
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1526,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1544,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1545,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1546,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - ident
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1548
      start: 1518
    functionDepth: 1
    functionLinenumber: 1518
    functionLinenumberEnd: 1548
    functionName: plpgsql_parse_wordtype
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - plpgsql_ns_lookup
    - ereport
    - plpgsql_ns_top
    - errcode
    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:1574,1
    - Dst: list_length
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1576,1
    - Dst: plpgsql_ns_lookup
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1581,1
    - Dst: plpgsql_ns_top
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1581,1
    - Dst: strVal
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1582,1
    - Dst: linitial
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1582,1
    - Dst: strVal
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1583,1
    - Dst: lsecond
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1583,1
    - Dst: makeRangeVar
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1604,1
    - Dst: strVal
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1605,1
    - Dst: linitial
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1605,1
    - Dst: strVal
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1607,1
    - Dst: lsecond
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1607,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1619,1
    - Dst: list_length
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1619,1
    - Dst: list_delete_last
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1620,1
    - Dst: list_copy
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1620,1
    - Dst: makeRangeVarFromNameList
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1621,1
    - Dst: strVal
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1622,1
    - Dst: llast
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1622,1
    - Dst: RangeVarGetRelid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1626,1
    - Dst: SearchSysCacheAttName
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1631,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1632,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1633,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1634,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1635,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1637,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1639,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1640,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1641,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1642,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1649,1
    - Dst: build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1650,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1654,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1657,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1658,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1659,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1660,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1662,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 41
    argCount: 1
    argNames:
    - idents
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1664
      start: 1559
    functionDepth: 1
    functionLinenumber: 1559
    functionLinenumberEnd: 1664
    functionName: plpgsql_parse_cwordtype
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - list_copy
    - HeapTupleIsValid
    - list_length
    - plpgsql_ns_top
    - makeRangeVar
    - build_datatype
    - ReleaseSysCache
    - lsecond
    - RangeVarGetRelid
    - GETSTRUCT
    - SearchSysCacheAttName
    - errmsg
    - plpgsql_ns_lookup
    - linitial
    - list_delete_last
    - llast
    - elog
    - strVal
    - makeRangeVarFromNameList
    - ObjectIdGetDatum
    - Assert
    - ereport
    - SearchSysCache1
    - errcode
    linkageType: ''
    returnType: PLpgSQL_type
    signature: 'PLpgSQL_type *

      plpgsql_parse_cwordtype(List *idents)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RelnameGetRelid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1684,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1685,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1686,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1687,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1688,1
    - Dst: get_rel_type_id
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1691,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1692,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1693,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1694,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1695,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1699,1
    - Dst: makeTypeName
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1700,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ident
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1701
      start: 1671
    functionDepth: 1
    functionLinenumber: 1671
    functionLinenumberEnd: 1701
    functionName: plpgsql_parse_wordrowtype
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - makeTypeName
    - ereport
    - plpgsql_build_datatype
    - RelnameGetRelid
    - OidIsValid
    - get_rel_type_id
    - errcode
    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:1722,1
    - Dst: makeRangeVarFromNameList
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1725,1
    - Dst: RangeVarGetRelid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1726,1
    - Dst: get_rel_type_id
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1729,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1730,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1731,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1732,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1733,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1736,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1739,1
    - Dst: makeTypeNameFromNameList
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1740,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - idents
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1741
      start: 1708
    functionDepth: 1
    functionLinenumber: 1708
    functionLinenumberEnd: 1741
    functionName: plpgsql_parse_cwordrowtype
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - makeTypeNameFromNameList
    - MemoryContextSwitchTo
    - RangeVarGetRelid
    - ereport
    - plpgsql_build_datatype
    - OidIsValid
    - get_rel_type_id
    - makeRangeVarFromNameList
    - errcode
    linkageType: ''
    returnType: PLpgSQL_type
    signature: 'PLpgSQL_type *

      plpgsql_parse_cwordrowtype(List *idents)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1765,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1767,1
    - Dst: plpgsql_adddatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1777,1
    - Dst: plpgsql_ns_additem
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1779,1
    - Dst: plpgsql_build_record
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1790,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1797,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1798,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1799,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1800,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1804,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: 1810
      start: 1752
    functionDepth: 2
    functionLinenumber: 1752
    functionLinenumberEnd: 1810
    functionName: plpgsql_build_variable
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 2
    functionsReached:
    - errmsg
    - format_type_be
    - plpgsql_adddatum
    - palloc0
    - pstrdup
    - ereport
    - elog
    - plpgsql_build_record
    - errcode
    - plpgsql_ns_additem
    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
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1822,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1824,1
    - Dst: plpgsql_adddatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1831,1
    - Dst: plpgsql_ns_additem
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1833,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: 1836
      start: 1815
    functionDepth: 2
    functionLinenumber: 1815
    functionLinenumberEnd: 1836
    functionName: plpgsql_build_record
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 2
    functionsReached:
    - plpgsql_ns_additem
    - plpgsql_adddatum
    - palloc0
    - pstrdup
    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
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1848,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1852,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1854,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1855,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1865,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1884,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1894,1
    - Dst: TupleDescInitEntryCollation
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1898,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 36
    argCount: 2
    argNames:
    - vars
    - numvars
    argTypes:
    - PLpgSQL_variable**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1902
      start: 1842
    functionDepth: 1
    functionLinenumber: 1842
    functionLinenumberEnd: 1902
    functionName: build_row_from_vars
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 1
    functionsReached:
    - Assert
    - palloc0
    - TupleDescInitEntryCollation
    - TupleDescInitEntry
    - elog
    - palloc
    - CreateTemplateTupleDesc
    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:1921,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1923,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1929,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1931,1
    - Dst: plpgsql_adddatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1935,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - rec
    - fldname
    argTypes:
    - PLpgSQL_rec*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1942
      start: 1909
    functionDepth: 1
    functionLinenumber: 1909
    functionLinenumberEnd: 1942
    functionName: plpgsql_build_recfield
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 2
    functionsReached:
    - Assert
    - plpgsql_adddatum
    - palloc0
    - pstrdup
    - strcmp
    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:1963,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1963,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1964,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1965,1
    - Dst: build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1967,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1969,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - typeOid
    - typmod
    - collation
    - origtypname
    argTypes:
    - Oid
    - int32
    - Oid
    - TypeName*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1972
      start: 1956
    functionDepth: 1
    functionLinenumber: 1956
    functionLinenumberEnd: 1972
    functionName: plpgsql_build_datatype
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 4
    functionsReached:
    - ReleaseSysCache
    - HeapTupleIsValid
    - SearchSysCache1
    - elog
    - 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:1982,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1986,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1987,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1988,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1989,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1991,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1993,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:1993,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2007,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2019,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2027,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2027,1
    - Dst: IsTrueArrayType
      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: get_base_element_type
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2045,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2061,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2065,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2068,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2069,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2070,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2071,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 59
    argCount: 4
    argNames:
    - typeTup
    - typmod
    - collation
    - origtypname
    argTypes:
    - HeapTuple
    - int32
    - Oid
    - TypeName*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2085
      start: 1978
    functionDepth: 1
    functionLinenumber: 1978
    functionLinenumberEnd: 2085
    functionName: build_datatype
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 6
    functionsReached:
    - errmsg
    - get_base_element_type
    - NameStr
    - IsTrueArrayType
    - format_type_be
    - GETSTRUCT
    - ereport
    - pstrdup
    - lookup_type_cache
    - elog
    - OidIsValid
    - palloc
    - errcode
    - 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:2102,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2103,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2104,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2105,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2106,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2107,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2110,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - dtype
    argTypes:
    - PLpgSQL_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2112
      start: 2090
    functionDepth: 2
    functionLinenumber: 2090
    functionLinenumberEnd: 2112
    functionName: plpgsql_build_datatype_arrayof
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - format_type_be
    - ereport
    - plpgsql_build_datatype
    - OidIsValid
    - errcode
    - get_array_type
    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:2128,1
    - Dst: strspn
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2129,1
    - Dst: MAKE_SQLSTATE
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2130,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2139,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2143,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2144,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2145,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - condname
    - allow_sqlstate
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2148
      start: 2121
    functionDepth: 1
    functionLinenumber: 2121
    functionLinenumberEnd: 2148
    functionName: plpgsql_recognize_err_condition
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - strspn
    - errmsg
    - MAKE_SQLSTATE
    - ereport
    - strcmp
    - errcode
    - strlen
    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:2169,1
    - Dst: palloc::palloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2171,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2181,1
    - Dst: palloc::palloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2183,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2192,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2193,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2194,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - condname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2198
      start: 2157
    functionDepth: 1
    functionLinenumber: 2157
    functionLinenumberEnd: 2198
    functionName: plpgsql_parse_err_condition
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - palloc::palloc
    - strcmp
    - errcode
    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:2210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2214
      start: 2204
    functionDepth: 1
    functionLinenumber: 2204
    functionLinenumberEnd: 2214
    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:2227,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - newdatum
    argTypes:
    - PLpgSQL_datum*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2232
      start: 2221
    functionDepth: 0
    functionLinenumber: 2221
    functionLinenumberEnd: 2232
    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
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2245,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2255,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2258,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - function
    argTypes:
    - PLpgSQL_function*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2265
      start: 2238
    functionDepth: 1
    functionLinenumber: 2238
    functionLinenumberEnd: 2265
    functionName: plpgsql_finish_datums
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 2
    functionsReached:
    - palloc
    - MAXALIGN
    linkageType: ''
    returnType: void
    signature: void plpgsql_finish_datums(PLpgSQL_function *function)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_comp.c:2310,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 1
    argNames:
    - varnos
    argTypes:
    - int**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2332
      start: 2282
    functionDepth: 0
    functionLinenumber: 2282
    functionLinenumberEnd: 2332
    functionName: plpgsql_add_initdatums
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_comp.c
    functionUses: 0
    functionsReached:
    - palloc
    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:507,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:523,1
    - Dst: copy_plpgsql_datums
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:524,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:529,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:540,1
    - Dst: VARATT_IS_EXTERNAL_EXPANDED_RW
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:563,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:563,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:566,1
    - Dst: TransferExpandedObject
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:567,1
    - Dst: VARATT_IS_EXTERNAL_EXPANDED_RO
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:572,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:572,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:579,1
    - Dst: expand_array
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:580,1
    - Dst: exec_move_row_from_datum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:597,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:604,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:608,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:614,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:618,1
    - Dst: exec_set_found
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:623,1
    - Dst: exec_toplevel_block
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:635,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:639,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:640,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:641,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:647,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:656,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:657,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:658,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:659,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:662,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:663,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:664,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:674,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:675,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:676,1
    - Dst: SPI_datumTransfer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:700,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:717,1
    - Dst: coerce_function_result_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:721,1
    - Dst: coerce_function_result_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:725,1
    - Dst: domain_check
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:728,1
    - Dst: SPI_datumTransfer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:740,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:746,1
    - Dst: exec_cast_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:754,1
    - Dst: SPI_datumTransfer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:769,1
    - Dst: exec_cast_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:782,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:791,1
    - Dst: plpgsql_destroy_econtext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:800,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:801,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: 813
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 813
    functionName: plpgsql_exec_function
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - MemoryContextSwitchTo
    - exec_toplevel_block
    - CreateTupleDescCopy
    - coerce_function_result_tuple
    - domain_check
    - copy_plpgsql_datums
    - VARATT_IS_EXTERNAL_EXPANDED_RW
    - SPI_datumTransfer
    - VARATT_IS_EXTERNAL_EXPANDED_RO
    - exec_move_row
    - get_call_result_type
    - DatumGetPointer
    - gettext_noop
    - errmsg
    - plpgsql_destroy_econtext
    - IsA
    - exec_move_row_from_datum
    - elog
    - assign_simple_var
    - TransferExpandedObject
    - plpgsql_estate_setup
    - ereport
    - exec_eval_cleanup
    - exec_set_found
    - expand_array
    - errcode
    - exec_cast_value
    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:831,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:831,1
    - Dst: VARATT_IS_EXTERNAL_EXPANDED
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:834,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:834,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:836,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:838,1
    - Dst: expanded_record_get_tupdesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:841,1
    - Dst: convert_tuples_by_position
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:844,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:846,1
    - Dst: expanded_record_get_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:851,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:852,1
    - Dst: execute_attr_map_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:853,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:859,1
    - Dst: SPI_returntuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:859,1
    - Dst: ExpandedRecordIsDomain
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:864,1
    - Dst: EOH_get_flat_size
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:880,1
    - Dst: SPI_palloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:881,1
    - Dst: EOH_flatten_into
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:882,1
    - Dst: HeapTupleHeaderSetTypeId
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:883,1
    - Dst: HeapTupleHeaderSetTypMod
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:884,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:885,1
    - Dst: SPI_datumTransfer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:894,1
    - Dst: deconstruct_composite_datum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:904,1
    - Dst: convert_tuples_by_position
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:908,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:910,1
    - Dst: execute_attr_map_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:914,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:920,1
    - Dst: SPI_returntuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:920,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:924,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 2
    argNames:
    - estate
    - tupdesc
    argTypes:
    - PLpgSQL_execstate*
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 823
    functionDepth: 1
    functionLinenumber: 823
    functionLinenumberEnd: 926
    functionName: coerce_function_result_tuple
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - convert_tuples_by_position
    - expanded_record_get_tupdesc
    - execute_attr_map_tuple
    - HeapTupleHeaderSetTypMod
    - expanded_record_get_tuple
    - VARATT_IS_EXTERNAL_EXPANDED
    - deconstruct_composite_datum
    - EOH_flatten_into
    - SPI_datumTransfer
    - ExpandedRecordIsDomain
    - gettext_noop
    - DatumGetPointer
    - SPI_palloc
    - type_is_rowtype
    - ReleaseTupleDesc
    - Assert
    - HeapTupleHeaderSetTypeId
    - PointerGetDatum
    - SPI_returntuple
    - EOH_get_flat_size
    - DatumGetEOHP
    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:949,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:963,1
    - Dst: copy_plpgsql_datums
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:964,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:976,1
    - Dst: make_expanded_record_from_tupdesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:981,1
    - Dst: make_expanded_record_from_exprecord
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:983,1
    - Dst: TRIGGER_FIRED_FOR_ROW
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:986,1
    - Dst: TRIGGER_FIRED_BY_INSERT
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:992,1
    - Dst: expanded_record_set_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:994,1
    - Dst: TRIGGER_FIRED_BY_UPDATE
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:997,1
    - Dst: expanded_record_set_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:999,1
    - Dst: expanded_record_set_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1001,1
    - Dst: TRIGGER_FIRED_BEFORE
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1013,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1016,1
    - Dst: expanded_record_set_field_internal
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1017,1
    - Dst: TRIGGER_FIRED_BY_DELETE
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1024,1
    - Dst: expanded_record_set_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1026,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1030,1
    - Dst: SPI_register_trigger_data
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1033,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1034,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1036,1
    - Dst: exec_set_found
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1041,1
    - Dst: exec_toplevel_block
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1053,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1057,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1058,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1059,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1062,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1065,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1066,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1067,1
    - Dst: TRIGGER_FIRED_FOR_ROW
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1079,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1087,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1087,1
    - Dst: VARATT_IS_EXTERNAL_EXPANDED
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1090,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1090,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1092,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1094,1
    - Dst: expanded_record_get_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1097,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1098,1
    - Dst: expanded_record_get_tupdesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1099,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1101,1
    - Dst: convert_tuples_by_position
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1104,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1105,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1106,1
    - Dst: execute_attr_map_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1109,1
    - Dst: SPI_copytuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1121,1
    - Dst: deconstruct_composite_datum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1128,1
    - Dst: convert_tuples_by_position
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1132,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1133,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1134,1
    - Dst: execute_attr_map_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1137,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1139,1
    - Dst: SPI_copytuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1143,1
    - Dst: plpgsql_destroy_econtext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1154,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1155,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 78
    argCount: 2
    argNames:
    - func
    - trigdata
    argTypes:
    - PLpgSQL_function*
    - TriggerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1167
      start: 934
    functionDepth: 1
    functionLinenumber: 934
    functionLinenumberEnd: 1167
    functionName: plpgsql_exec_trigger
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - convert_tuples_by_position
    - exec_toplevel_block
    - DatumGetEOHP
    - make_expanded_record_from_exprecord
    - TRIGGER_FIRED_BY_UPDATE
    - expanded_record_get_tupdesc
    - copy_plpgsql_datums
    - execute_attr_map_tuple
    - expanded_record_get_tuple
    - VARATT_IS_EXTERNAL_EXPANDED
    - deconstruct_composite_datum
    - SPI_register_trigger_data
    - TRIGGER_FIRED_BEFORE
    - expanded_record_set_field_internal
    - TRIGGER_FIRED_BY_DELETE
    - SPI_copytuple
    - make_expanded_record_from_tupdesc
    - gettext_noop
    - DatumGetPointer
    - errmsg
    - TupleDescAttr
    - plpgsql_destroy_econtext
    - TRIGGER_FIRED_BY_INSERT
    - elog
    - expanded_record_set_tuple
    - type_is_rowtype
    - ReleaseTupleDesc
    - Assert
    - TRIGGER_FIRED_FOR_ROW
    - RelationGetDescr
    - plpgsql_estate_setup
    - ereport
    - exec_eval_cleanup
    - exec_set_found
    - errcode
    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:1184,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1198,1
    - Dst: copy_plpgsql_datums
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1199,1
    - Dst: exec_toplevel_block
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1211,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1215,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1216,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1217,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1220,1
    - Dst: plpgsql_destroy_econtext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1229,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1230,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - func
    - trigdata
    argTypes:
    - PLpgSQL_function*
    - EventTriggerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1237
      start: 1174
    functionDepth: 1
    functionLinenumber: 1174
    functionLinenumberEnd: 1237
    functionName: plpgsql_exec_event_trigger
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - errmsg
    - exec_toplevel_block
    - plpgsql_destroy_econtext
    - plpgsql_estate_setup
    - ereport
    - copy_plpgsql_datums
    - exec_eval_cleanup
    - gettext_noop
    - errcode
    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:1275,1
    - Dst: _
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1278,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1286,1
    - Dst: _
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1288,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1294,1
    - Dst: plpgsql_stmt_typename
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1297,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1300,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1302
      start: 1242
    functionDepth: 1
    functionLinenumber: 1242
    functionLinenumberEnd: 1302
    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: 7
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1322,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1328,1
    - Dst: memcpy
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1345,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1346,1
    - Dst: memcpy
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1351,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1352,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1367,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1375,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 2
    argNames:
    - estate
    - func
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_function*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1376
      start: 1309
    functionDepth: 1
    functionLinenumber: 1309
    functionLinenumberEnd: 1376
    functionName: copy_plpgsql_datums
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 3
    functionsReached:
    - Assert
    - elog
    - memcpy
    - 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:1399,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1405,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1406,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1407,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1408,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1414,1
    - Dst: TRIGGER_FIRED_BEFORE
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1415,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1416,1
    - Dst: TRIGGER_FIRED_AFTER
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1417,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1418,1
    - Dst: TRIGGER_FIRED_INSTEAD
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1419,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1420,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1422,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1427,1
    - Dst: TRIGGER_FIRED_FOR_ROW
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1428,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1429,1
    - Dst: TRIGGER_FIRED_FOR_STATEMENT
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1430,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1431,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1433,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1438,1
    - Dst: TRIGGER_FIRED_BY_INSERT
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1439,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1440,1
    - Dst: TRIGGER_FIRED_BY_UPDATE
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1441,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1442,1
    - Dst: TRIGGER_FIRED_BY_DELETE
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1443,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1444,1
    - Dst: TRIGGER_FIRED_BY_TRUNCATE
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1445,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1446,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1448,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1453,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1454,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1455,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1461,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1462,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1463,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1464,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1464,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1470,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1471,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1472,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1473,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1473,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1473,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1479,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1480,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1481,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1487,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1500,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1502,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1506,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1507,1
    - Dst: construct_md_array
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1507,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1515,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1521,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1522,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1527,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1528,1
    - Dst: GetCommandTagName
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1528,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1532,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1535,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 91
    argCount: 2
    argNames:
    - estate
    - var
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_var*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1536
      start: 1383
    functionDepth: 1
    functionLinenumber: 1383
    functionLinenumberEnd: 1536
    functionName: plpgsql_fulfill_promise
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - GetCommandTagName
    - construct_md_array
    - TRIGGER_FIRED_BY_UPDATE
    - RelationGetRelationName
    - DirectFunctionCall1
    - TRIGGER_FIRED_BY_TRUNCATE
    - assign_text_var
    - TRIGGER_FIRED_AFTER
    - TRIGGER_FIRED_BEFORE
    - TRIGGER_FIRED_BY_DELETE
    - CStringGetDatum
    - Int16GetDatum
    - TRIGGER_FIRED_INSTEAD
    - get_namespace_name
    - elog
    - TRIGGER_FIRED_BY_INSERT
    - assign_simple_var
    - RelationGetNamespace
    - TRIGGER_FIRED_FOR_STATEMENT
    - palloc
    - ObjectIdGetDatum
    - TRIGGER_FIRED_FOR_ROW
    - CStringGetTextDatum
    - PointerGetDatum
    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:1549,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - estate
    argTypes:
    - PLpgSQL_execstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1554
      start: 1543
    functionDepth: 1
    functionLinenumber: 1543
    functionLinenumberEnd: 1554
    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:1566,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1568,1
    - Dst: MemoryContextGetParent
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1568,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - estate
    argTypes:
    - PLpgSQL_execstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1573
      start: 1562
    functionDepth: 1
    functionLinenumber: 1562
    functionLinenumberEnd: 1573
    functionName: push_stmt_mcontext
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached:
    - MemoryContextGetParent
    - Assert
    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:1586,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - estate
    argTypes:
    - PLpgSQL_execstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1587
      start: 1581
    functionDepth: 1
    functionLinenumber: 1581
    functionLinenumberEnd: 1587
    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:1616,1
    - Dst: ERRCODE_TO_CATEGORY
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1617,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 2
    argNames:
    - edata
    - cond
    argTypes:
    - ErrorData*
    - PLpgSQL_condition*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1621
      start: 1594
    functionDepth: 1
    functionLinenumber: 1594
    functionLinenumberEnd: 1621
    functionName: exception_matches_conditions
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached:
    - ERRCODE_IS_CATEGORY
    - ERRCODE_TO_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:1644,1
    - Dst: exec_stmt_block
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1646,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - estate
    - block
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1655
      start: 1633
    functionDepth: 1
    functionLinenumber: 1633
    functionLinenumberEnd: 1655
    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:1671,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1700,1
    - Dst: exec_assign_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1711,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1719,1
    - Dst: exec_assign_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1723,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1744,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1748,1
    - Dst: exec_assign_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1752,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1759,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1776,1
    - Dst: get_stmt_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1787,1
    - Dst: BeginInternalSubTransaction
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1789,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1791,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1793,1
    - Dst: plpgsql_create_econtext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1801,1
    - Dst: exec_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1806,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1808,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1822,1
    - Dst: datumTransfer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1823,1
    - Dst: ReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1828,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1829,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1833,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1841,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1846,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1849,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1850,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1851,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1854,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1855,1
    - Dst: MemoryContextDeleteChildren
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1876,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1888,1
    - Dst: foreach
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1891,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1893,1
    - Dst: exception_matches_conditions
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1895,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1911,1
    - Dst: unpack_sql_state
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1912,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1913,1
    - Dst: exec_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1923,1
    - Dst: ReThrowError
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1938,1
    - Dst: pop_stmt_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1941,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1942,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1944,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1946,1
    - Dst: exec_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1955,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1977,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:1983,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 107
    argCount: 2
    argNames:
    - estate
    - block
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1987
      start: 1662
    functionDepth: 2
    functionLinenumber: 1662
    functionLinenumberEnd: 1987
    functionName: exec_stmt_block
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - exec_assign_value
    - MemoryContextSwitchTo
    - get_stmt_mcontext
    - MemoryContextReset
    - BeginInternalSubTransaction
    - MemoryContextDeleteChildren
    - exception_matches_conditions
    - get_typlenbyval
    - assign_text_var
    - exec_assign_expr
    - unpack_sql_state
    - exec_move_row
    - RollbackAndReleaseCurrentSubTransaction
    - foreach
    - pop_stmt_mcontext
    - exec_stmts
    - strcmp
    - gettext_noop
    - CopyErrorData
    - ReThrowError
    - elog
    - ReleaseCurrentSubTransaction
    - assign_simple_var
    - lfirst
    - Assert
    - PG_END_TRY
    - PG_TRY
    - plpgsql_create_econtext
    - FlushErrorState
    - PG_CATCH
    - datumTransfer
    - 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:2008,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2014,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2023,1
    - Dst: exec_stmt_block
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2028,1
    - Dst: exec_stmt_assign
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2032,1
    - Dst: exec_stmt_perform
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2036,1
    - Dst: exec_stmt_call
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2040,1
    - Dst: exec_stmt_getdiag
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2044,1
    - Dst: exec_stmt_if
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2048,1
    - Dst: exec_stmt_case
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2052,1
    - Dst: exec_stmt_loop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2056,1
    - Dst: exec_stmt_while
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2060,1
    - Dst: exec_stmt_fori
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2064,1
    - Dst: exec_stmt_fors
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2068,1
    - Dst: exec_stmt_forc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2072,1
    - Dst: exec_stmt_foreach_a
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2076,1
    - Dst: exec_stmt_exit
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2080,1
    - Dst: exec_stmt_return
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2084,1
    - Dst: exec_stmt_return_next
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2088,1
    - Dst: exec_stmt_return_query
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2092,1
    - Dst: exec_stmt_raise
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2096,1
    - Dst: exec_stmt_assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2100,1
    - Dst: exec_stmt_execsql
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2104,1
    - Dst: exec_stmt_dynexecute
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2108,1
    - Dst: exec_stmt_dynfors
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2112,1
    - Dst: exec_stmt_open
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2116,1
    - Dst: exec_stmt_fetch
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2120,1
    - Dst: exec_stmt_close
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2124,1
    - Dst: exec_stmt_commit
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2128,1
    - Dst: exec_stmt_rollback
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2132,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2138,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 105
    argCount: 2
    argNames:
    - estate
    - stmts
    argTypes:
    - PLpgSQL_execstate*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2155
      start: 1995
    functionDepth: 3
    functionLinenumber: 1995
    functionLinenumberEnd: 2155
    functionName: exec_stmts
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - exec_stmt_commit
    - exec_stmt_exit
    - exec_stmt_assert
    - CHECK_FOR_INTERRUPTS
    - exec_stmt_call
    - exec_stmt_case
    - exec_stmt_fors
    - exec_stmt_loop
    - exec_stmt_forc
    - exec_stmt_execsql
    - exec_stmt_raise
    - exec_stmt_close
    - exec_stmt_foreach_a
    - exec_stmt_dynfors
    - exec_stmt_fori
    - exec_stmt_return_next
    - exec_stmt_return_query
    - exec_stmt_rollback
    - exec_stmt_dynexecute
    - exec_stmt_getdiag
    - elog
    - exec_stmt_return
    - exec_stmt_block
    - exec_stmt_fetch
    - lfirst
    - exec_stmt_open
    - exec_stmt_while
    - exec_stmt_if
    - exec_stmt_assign
    - exec_stmt_perform
    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:2014,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2023,1
    - Dst: exec_stmt_block
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2028,1
    - Dst: exec_stmt_assign
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2032,1
    - Dst: exec_stmt_perform
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2036,1
    - Dst: exec_stmt_call
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2040,1
    - Dst: exec_stmt_getdiag
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2044,1
    - Dst: exec_stmt_if
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2048,1
    - Dst: exec_stmt_case
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2052,1
    - Dst: exec_stmt_loop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2056,1
    - Dst: exec_stmt_while
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2060,1
    - Dst: exec_stmt_fori
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2064,1
    - Dst: exec_stmt_fors
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2068,1
    - Dst: exec_stmt_forc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2072,1
    - Dst: exec_stmt_foreach_a
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2076,1
    - Dst: exec_stmt_exit
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2080,1
    - Dst: exec_stmt_return
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2084,1
    - Dst: exec_stmt_return_next
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2088,1
    - Dst: exec_stmt_return_query
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2092,1
    - Dst: exec_stmt_raise
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2096,1
    - Dst: exec_stmt_assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2100,1
    - Dst: exec_stmt_execsql
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2104,1
    - Dst: exec_stmt_dynexecute
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2108,1
    - Dst: exec_stmt_dynfors
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2112,1
    - Dst: exec_stmt_open
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2116,1
    - Dst: exec_stmt_fetch
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2120,1
    - Dst: exec_stmt_close
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2124,1
    - Dst: exec_stmt_commit
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2128,1
    - Dst: exec_stmt_rollback
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2132,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2138,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 98
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2151
      start: 2012
    functionDepth: 3
    functionLinenumber: 2012
    functionLinenumberEnd: 2151
    functionName: foreach
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 12
    functionsReached:
    - exec_stmt_commit
    - exec_stmt_exit
    - exec_stmt_assert
    - CHECK_FOR_INTERRUPTS
    - exec_stmt_call
    - exec_stmt_case
    - exec_stmt_fors
    - exec_stmt_loop
    - exec_stmt_forc
    - exec_stmt_execsql
    - exec_stmt_raise
    - exec_stmt_close
    - exec_stmt_foreach_a
    - exec_stmt_dynfors
    - exec_stmt_fori
    - exec_stmt_return_next
    - exec_stmt_return_query
    - exec_stmt_rollback
    - exec_stmt_dynexecute
    - exec_stmt_getdiag
    - elog
    - exec_stmt_return
    - exec_stmt_block
    - exec_stmt_fetch
    - lfirst
    - exec_stmt_open
    - exec_stmt_while
    - exec_stmt_if
    - exec_stmt_assign
    - exec_stmt_perform
    linkageType: ''
    returnType: void
    signature: void foreach(s, stmts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2166,1
    - Dst: exec_assign_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_assign*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2171
      start: 2163
    functionDepth: 1
    functionLinenumber: 2163
    functionLinenumberEnd: 2171
    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:2184,1
    - Dst: exec_set_found
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2185,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_perform*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2189
      start: 2179
    functionDepth: 1
    functionLinenumber: 2179
    functionLinenumberEnd: 2189
    functionName: exec_stmt_perform
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - exec_set_found
    - exec_run_select
    - exec_eval_cleanup
    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:2210,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2215,1
    - Dst: make_callstmt_target
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2223,1
    - Dst: setup_param_list
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2225,1
    - Dst: memset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2236,1
    - Dst: SPI_execute_plan_extended
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2242,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2245,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2246,1
    - Dst: plpgsql_create_econtext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2258,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2270,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2272,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2275,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2277,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2278,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_call*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2281
      start: 2196
    functionDepth: 1
    functionLinenumber: 2196
    functionLinenumberEnd: 2281
    functionName: exec_stmt_call
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - Assert
    - SPI_execute_plan_extended
    - exec_prepare_plan
    - memset
    - plpgsql_create_econtext
    - SPI_result_code_string
    - exec_move_row
    - elog
    - SPI_freetuptable
    - setup_param_list
    - exec_eval_cleanup
    - make_callstmt_target
    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:2306,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2306,1
    - Dst: SPI_plan_get_cached_plan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2313,1
    - Dst: list_length
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2314,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2315,1
    - Dst: linitial_node
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2316,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2318,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2319,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2323,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2324,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2325,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2326,1
    - Dst: get_func_arg_info
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2333,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2335,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2341,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2343,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2347,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2349,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2349,1
    - Dst: list_nth
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2363,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2365,1
    - Dst: exec_check_assignable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2373,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2380,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2381,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2382,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2385,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2386,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2387,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2393,1
    - Dst: list_length
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2393,1
    - Dst: ReleaseCachedPlan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2397,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2399,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 41
    argCount: 2
    argNames:
    - estate
    - expr
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2402
      start: 2288
    functionDepth: 1
    functionLinenumber: 2288
    functionLinenumberEnd: 2402
    functionName: make_callstmt_target
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - HeapTupleIsValid
    - list_length
    - ReleaseSysCache
    - SPI_plan_get_cached_plan
    - ReleaseCachedPlan
    - linitial_node
    - errmsg
    - IsA
    - elog
    - list_nth
    - palloc
    - get_eval_mcontext
    - ObjectIdGetDatum
    - Assert
    - palloc0
    - ereport
    - SearchSysCache1
    - get_func_arg_info
    - errcode
    - exec_check_assignable
    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:2421,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2422,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2423,1
    - Dst: foreach
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2425,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2427,1
    - Dst: exec_assign_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2433,1
    - Dst: UInt64GetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2434,1
    - Dst: exec_assign_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2439,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2440,1
    - Dst: exec_assign_c_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2445,1
    - Dst: exec_assign_c_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2450,1
    - Dst: exec_assign_c_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2455,1
    - Dst: exec_assign_c_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2460,1
    - Dst: unpack_sql_state
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2461,1
    - Dst: exec_assign_c_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2465,1
    - Dst: exec_assign_c_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2470,1
    - Dst: exec_assign_c_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2475,1
    - Dst: exec_assign_c_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2480,1
    - Dst: exec_assign_c_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2485,1
    - Dst: exec_assign_c_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2490,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2500,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2500,1
    - Dst: GetErrorContextStack
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2501,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2502,1
    - Dst: exec_assign_c_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2504,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2509,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2514,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 54
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_getdiag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2517
      start: 2409
    functionDepth: 1
    functionLinenumber: 2409
    functionLinenumberEnd: 2517
    functionName: exec_stmt_getdiag
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - errmsg
    - errcode
    - exec_assign_value
    - MemoryContextSwitchTo
    - ObjectIdGetDatum
    - unpack_sql_state
    - ereport
    - foreach
    - exec_assign_c_string
    - GetErrorContextStack
    - elog
    - exec_eval_cleanup
    - UInt64GetDatum
    - get_eval_mcontext
    - lfirst
    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:2532,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2533,1
    - Dst: exec_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2535,1
    - Dst: foreach
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2537,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2539,1
    - Dst: exec_eval_boolean
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2541,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2542,1
    - Dst: exec_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2544,1
    - Dst: exec_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2547,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2548
      start: 2525
    functionDepth: 4
    functionLinenumber: 2525
    functionLinenumberEnd: 2548
    functionName: exec_stmt_if
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - exec_eval_boolean
    - foreach
    - exec_eval_cleanup
    - exec_stmts
    - lfirst
    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:2569,1
    - Dst: plpgsql_build_datatype
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2584,1
    - Dst: exec_assign_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2590,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2597,1
    - Dst: foreach
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2601,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2603,1
    - Dst: exec_eval_boolean
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2606,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2607,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2614,1
    - Dst: exec_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2617,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2623,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2627,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2628,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2629,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2630,1
    - Dst: exec_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2633,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_case*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2634
      start: 2555
    functionDepth: 4
    functionLinenumber: 2555
    functionLinenumberEnd: 2634
    functionName: exec_stmt_case
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - exec_assign_value
    - errcode
    - errmsg
    - exec_eval_boolean
    - ereport
    - foreach
    - plpgsql_build_datatype
    - errhint
    - exec_eval_cleanup
    - assign_simple_var
    - exec_stmts
    - lfirst
    - exec_eval_expr
    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:2649,1
    - Dst: LOOP_RC_PROCESSING
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2651,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2655
      start: 2642
    functionDepth: 4
    functionLinenumber: 2642
    functionLinenumberEnd: 2655
    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:2674,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2675,1
    - 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: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_while*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2686
      start: 2664
    functionDepth: 4
    functionLinenumber: 2664
    functionLinenumberEnd: 2686
    functionName: exec_stmt_while
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - exec_stmts
    - exec_eval_boolean
    - exec_eval_cleanup
    - 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:2714,1
    - Dst: exec_cast_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2716,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2721,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2722,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2723,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2724,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2725,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2730,1
    - Dst: exec_cast_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2732,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2737,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2738,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2739,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2740,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2741,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2748,1
    - Dst: exec_cast_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2750,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2755,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2756,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2757,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2758,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2759,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2761,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2762,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2763,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2792,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2792,1
    - Dst: exec_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2797,1
    - Dst: LOOP_RC_PROCESSING
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2799,1
    - Dst: exec_set_found
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2825,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 49
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_fori*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2828
      start: 2695
    functionDepth: 4
    functionLinenumber: 2695
    functionLinenumberEnd: 2828
    functionName: exec_stmt_fori
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - errmsg
    - Int32GetDatum
    - exec_set_found
    - DatumGetInt32
    - ereport
    - exec_eval_cleanup
    - assign_simple_var
    - exec_stmts
    - exec_eval_expr
    - errcode
    - exec_cast_value
    - 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:2847,1
    - Dst: exec_for_query
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2852,1
    - Dst: SPI_cursor_close
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2857,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_fors*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2860
      start: 2838
    functionDepth: 1
    functionLinenumber: 2838
    functionLinenumberEnd: 2860
    functionName: exec_stmt_fors
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - exec_for_query
    - exec_run_select
    - SPI_cursor_close
    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:2889,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2890,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2891,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2892,1
    - Dst: SPI_cursor_find
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2894,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2895,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2896,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2897,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2918,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2919,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2920,1
    - Dst: memset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2922,1
    - Dst: exec_stmt_execsql
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2931,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2932,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2937,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2938,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2939,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2943,1
    - Dst: exec_prepare_plan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2946,1
    - Dst: setup_param_list
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2951,1
    - Dst: SPI_cursor_open_with_paramlist
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2956,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2960,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2961,1
    - Dst: exec_check_assignable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2969,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2970,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2976,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2978,1
    - Dst: exec_for_query
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2984,1
    - Dst: SPI_cursor_close
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2990,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:2993,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 45
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_forc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2996
      start: 2867
    functionDepth: 2
    functionLinenumber: 2867
    functionLinenumberEnd: 2996
    functionName: exec_stmt_forc
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - MemoryContextSwitchTo
    - get_stmt_mcontext
    - MemoryContextReset
    - exec_stmt_execsql
    - SPI_cursor_close
    - assign_text_var
    - setup_param_list
    - errmsg
    - exec_for_query
    - elog
    - SPI_cursor_open_with_paramlist
    - assign_simple_var
    - Assert
    - SPI_cursor_find
    - memset
    - exec_prepare_plan
    - TextDatumGetCString
    - SPI_result_code_string
    - ereport
    - exec_eval_cleanup
    - errcode
    - exec_check_assignable
    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:3026,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3028,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3029,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3030,1
    - Dst: get_stmt_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3037,1
    - Dst: push_stmt_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3038,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3039,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3042,1
    - Dst: get_element_type
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3042,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3043,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3044,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3045,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3046,1
    - Dst: DatumGetArrayTypePCopy
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3053,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3056,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3059,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3060,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3061,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3062,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3063,1
    - Dst: get_element_type
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3077,1
    - Dst: plpgsql_exec_get_datum_type
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3077,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3087,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3088,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3089,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: array_create_iterator
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3096,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3108,1
    - Dst: array_iterate
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3113,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3118,1
    - Dst: exec_assign_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3121,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3126,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3126,1
    - Dst: exec_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3131,1
    - Dst: LOOP_RC_PROCESSING
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3133,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3135,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3139,1
    - Dst: pop_stmt_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3140,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3143,1
    - Dst: exec_set_found
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3151,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 45
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_foreach_a*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3154
      start: 3007
    functionDepth: 4
    functionLinenumber: 3007
    functionLinenumberEnd: 3154
    functionName: exec_stmt_foreach_a
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - exec_assign_value
    - MemoryContextSwitchTo
    - get_stmt_mcontext
    - MemoryContextReset
    - LOOP_RC_PROCESSING
    - pfree
    - plpgsql_exec_get_datum_type
    - pop_stmt_mcontext
    - array_iterate
    - exec_stmts
    - DatumGetPointer
    - errmsg
    - format_type_be
    - OidIsValid
    - get_element_type
    - push_stmt_mcontext
    - array_create_iterator
    - ARR_ELEMTYPE
    - ARR_NDIM
    - ereport
    - exec_eval_cleanup
    - exec_set_found
    - DatumGetArrayTypePCopy
    - errcode
    - exec_eval_expr
    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:3174,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3175,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_exit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3185
      start: 3163
    functionDepth: 1
    functionLinenumber: 3163
    functionLinenumberEnd: 3185
    functionName: exec_stmt_exit
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - exec_eval_boolean
    - exec_eval_cleanup
    linkageType: ''
    returnType: int
    signature: int exec_stmt_exit(PLpgSQL_execstate *estate, PLpgSQL_stmt_exit *stmt)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: plpgsql_fulfill_promise
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3232,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3253,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3254,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3255,1
    - Dst: ExpandedRecordIsEmpty
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3264,1
    - Dst: ExpandedRecordGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3266,1
    - Dst: exec_eval_datum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3279,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3289,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3299,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3309,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3310,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3311,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3312,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 47
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_return*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3331
      start: 3196
    functionDepth: 2
    functionLinenumber: 3196
    functionLinenumberEnd: 3331
    functionName: exec_stmt_return
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - errmsg
    - ExpandedRecordGetDatum
    - ExpandedRecordIsEmpty
    - ereport
    - elog
    - plpgsql_fulfill_promise
    - exec_eval_datum
    - errcode
    - exec_eval_expr
    - 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:3349,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3350,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3351,1
    - Dst: exec_init_tuple_store
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3354,1
    - Dst: plpgsql_fulfill_promise
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3378,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3387,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3390,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3391,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3392,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3395,1
    - Dst: exec_cast_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3400,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3408,1
    - Dst: instantiate_empty_record_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3421,1
    - Dst: ExpandedRecordIsEmpty
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3422,1
    - Dst: deconstruct_expanded_record
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3423,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3426,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3426,1
    - Dst: expanded_record_get_tupdesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3427,1
    - Dst: convert_tuples_by_position
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3428,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3430,1
    - Dst: expanded_record_get_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3431,1
    - Dst: execute_attr_map_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3433,1
    - Dst: tuplestore_puttuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3434,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3435,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3446,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3446,1
    - Dst: make_tuple_from_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3447,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3449,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3450,1
    - Dst: errmsg
      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: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3458,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3469,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3484,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3485,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3486,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3487,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3490,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3490,1
    - Dst: deconstruct_composite_datum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3491,1
    - Dst: convert_tuples_by_position
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3493,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3494,1
    - Dst: execute_attr_map_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3496,1
    - Dst: tuplestore_puttuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3497,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3498,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3499,1
    - Dst: eval_mcontext_alloc0
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3508,1
    - Dst: eval_mcontext_alloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3510,1
    - Dst: memset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3511,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3512,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3518,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3522,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3523,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3524,1
    - Dst: exec_cast_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3527,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3535,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3541,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3542,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3543,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3546,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 80
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_return_next*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3549
      start: 3339
    functionDepth: 2
    functionLinenumber: 3339
    functionLinenumberEnd: 3549
    functionName: exec_stmt_return_next
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - convert_tuples_by_position
    - MemoryContextSwitchTo
    - eval_mcontext_alloc
    - expanded_record_get_tupdesc
    - execute_attr_map_tuple
    - expanded_record_get_tuple
    - plpgsql_fulfill_promise
    - deconstruct_composite_datum
    - instantiate_empty_record_variable
    - eval_mcontext_alloc0
    - exec_init_tuple_store
    - gettext_noop
    - errmsg
    - tuplestore_putvalues
    - TupleDescAttr
    - ExpandedRecordIsEmpty
    - elog
    - deconstruct_expanded_record
    - exec_eval_expr
    - get_eval_mcontext
    - type_is_rowtype
    - ReleaseTupleDesc
    - MakeExpandedObjectReadOnly
    - memset
    - ereport
    - tuplestore_puttuple
    - make_tuple_from_row
    - exec_eval_cleanup
    - errcode
    - exec_cast_value
    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:3565,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3569,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3570,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3571,1
    - Dst: exec_init_tuple_store
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3574,1
    - Dst: tuplestore_tuple_count
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3576,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3582,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3583,1
    - Dst: SetTuplestoreDestReceiverParams
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3584,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3589,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3590,1
    - Dst: exec_prepare_plan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3603,1
    - Dst: setup_param_list
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3608,1
    - Dst: memset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3613,1
    - Dst: SPI_execute_plan_extended
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3619,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3621,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3622,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3638,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3639,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3642,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3643,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3644,1
    - Dst: convert_value_to_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3647,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3650,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3652,1
    - Dst: memset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3655,1
    - Dst: exec_eval_using_params
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3656,1
    - Dst: SPI_execute_extended
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3662,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3664,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3665,1
    - Dst: DestReceiver*::rDestroy
      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:3670,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3671,1
    - Dst: tuplestore_tuple_count
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3674,1
    - Dst: exec_set_found
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3677,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 46
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_return_query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3680
      start: 3557
    functionDepth: 2
    functionLinenumber: 3557
    functionLinenumberEnd: 3680
    functionName: exec_stmt_return_query
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - MemoryContextSwitchTo
    - get_stmt_mcontext
    - MemoryContextReset
    - SPI_execute_extended
    - SetTuplestoreDestReceiverParams
    - CreateDestReceiver
    - setup_param_list
    - exec_init_tuple_store
    - gettext_noop
    - errmsg
    - SPI_execute_plan_extended
    - tuplestore_tuple_count
    - exec_eval_using_params
    - elog
    - exec_eval_expr
    - MemoryContextStrdup
    - Assert
    - exec_prepare_plan
    - memset
    - SPI_result_code_string
    - ereport
    - DestReceiver*::rDestroy
    - exec_eval_cleanup
    - exec_set_found
    - errcode
    - convert_value_to_string
    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:3692,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3693,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3694,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3695,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3699,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3700,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3701,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3710,1
    - Dst: tuplestore_begin_heap
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3715,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3719,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - estate
    argTypes:
    - PLpgSQL_execstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3722
      start: 3682
    functionDepth: 1
    functionLinenumber: 3682
    functionLinenumberEnd: 3722
    functionName: exec_init_tuple_store
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - errmsg
    - MemoryContextSwitchTo
    - IsA
    - ereport
    - tuplestore_begin_heap
    - errcode
    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: 3733
      start: 3724
    functionDepth: 0
    functionLinenumber: 3724
    functionLinenumberEnd: 3733
    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:3759,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3761,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3762,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3763,1
    - Dst: get_stmt_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3767,1
    - Dst: plpgsql_recognize_err_condition
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3771,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3772,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3783,1
    - Dst: initStringInfo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3784,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3785,1
    - Dst: list_head
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3787,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3805,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3812,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3814,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3815,1
    - Dst: convert_value_to_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3823,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3826,1
    - Dst: lnext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3827,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3828,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3831,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3836,1
    - Dst: foreach
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3841,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3843,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3850,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3855,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3856,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3857,1
    - Dst: convert_value_to_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3859,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3865,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3866,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3867,1
    - Dst: plpgsql_recognize_err_condition
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3869,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3870,1
    - Dst: SET_RAISE_OPTION_TEXT
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3873,1
    - Dst: SET_RAISE_OPTION_TEXT
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3876,1
    - Dst: SET_RAISE_OPTION_TEXT
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3879,1
    - Dst: SET_RAISE_OPTION_TEXT
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3882,1
    - Dst: SET_RAISE_OPTION_TEXT
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3885,1
    - Dst: SET_RAISE_OPTION_TEXT
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3888,1
    - Dst: SET_RAISE_OPTION_TEXT
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3891,1
    - Dst: SET_RAISE_OPTION_TEXT
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3894,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3897,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3900,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3916,1
    - Dst: unpack_sql_state
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3917,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3923,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3924,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3925,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3926,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3927,1
    - Dst: err_generic_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3929,1
    - Dst: err_generic_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3931,1
    - Dst: err_generic_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3933,1
    - Dst: err_generic_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3935,1
    - Dst: err_generic_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3937,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3940,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 92
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_raise*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3943
      start: 3738
    functionDepth: 2
    functionLinenumber: 3738
    functionLinenumberEnd: 3943
    functionName: exec_stmt_raise
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - MemoryContextSwitchTo
    - get_stmt_mcontext
    - MemoryContextReset
    - errhint
    - err_generic_string
    - errdetail_internal
    - unpack_sql_state
    - foreach
    - errmsg
    - SET_RAISE_OPTION_TEXT
    - ReThrowError
    - appendStringInfoString
    - list_head
    - lnext
    - elog
    - exec_eval_expr
    - plpgsql_recognize_err_condition
    - lfirst
    - MemoryContextStrdup
    - appendStringInfoChar
    - errmsg_internal
    - ereport
    - exec_eval_cleanup
    - initStringInfo
    - errcode
    - convert_value_to_string
    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:3959,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3960,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3972,1
    - Dst: convert_value_to_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3975,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3979,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3980,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3981,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:3982,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_assert*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3986
      start: 3949
    functionDepth: 1
    functionLinenumber: 3949
    functionLinenumberEnd: 3986
    functionName: exec_stmt_assert
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - errmsg
    - exec_eval_boolean
    - errmsg_internal
    - ereport
    - exec_eval_cleanup
    - exec_eval_expr
    - errcode
    - convert_value_to_string
    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:4043,1
    - Dst: hash_create
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4057,1
    - Dst: hash_create
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4071,1
    - Dst: hash_create
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4084,1
    - Dst: plpgsql_create_econtext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4121,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: 4140
      start: 3992
    functionDepth: 1
    functionLinenumber: 3992
    functionLinenumberEnd: 4140
    functionName: plpgsql_estate_setup
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 3
    functionsReached:
    - hash_create
    - makeParamList
    - plpgsql_create_econtext
    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:4154,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4162,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - estate
    argTypes:
    - PLpgSQL_execstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4163
      start: 4149
    functionDepth: 1
    functionLinenumber: 4149
    functionLinenumberEnd: 4163
    functionName: exec_eval_cleanup
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 18
    functionsReached:
    - ResetExprContext
    - SPI_freetuptable
    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:4196,1
    - Dst: SPI_prepare_extended
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4201,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4203,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4204,1
    - Dst: SPI_keepplan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4206,1
    - Dst: exec_simple_check_plan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - estate
    - expr
    - cursorOptions
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_expr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4211
      start: 4186
    functionDepth: 1
    functionLinenumber: 4186
    functionLinenumberEnd: 4211
    functionName: exec_prepare_plan
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 3
    functionsReached:
    - memset
    - SPI_prepare_extended
    - SPI_result_code_string
    - elog
    - SPI_keepplan
    - 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: 31
    BranchProfiles: []
    Callsites:
    - Dst: exec_prepare_plan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4241,1
    - Dst: foreach
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4248,1
    - Dst: SPI_plan_get_plan_sources
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4248,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4250,1
    - Dst: setup_param_list
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4274,1
    - Dst: SPI_execute_plan_with_paramlist
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4301,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4312,1
    - Dst: exec_set_found
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4313,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4324,1
    - Dst: exec_set_found
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4325,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4330,1
    - Dst: exec_set_found
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4341,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4346,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4347,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4348,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4352,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4353,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4354,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4358,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4359,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4375,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4376,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4377,1
    - Dst: format_expr_params
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4394,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4398,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4399,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4400,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4401,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4404,1
    - Dst: format_expr_params
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4414,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4420,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4421,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4422,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4423,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4424,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4427,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4431,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4432,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4438,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4439,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4440,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4441,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 88
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_execsql*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4445
      start: 4221
    functionDepth: 2
    functionLinenumber: 4221
    functionLinenumberEnd: 4445
    functionName: exec_stmt_execsql
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 3
    functionsReached:
    - SPI_execute_plan_with_paramlist
    - errhint
    - format_expr_params
    - errdetail_internal
    - exec_move_row
    - foreach
    - setup_param_list
    - errmsg
    - SPI_plan_get_plan_sources
    - elog
    - lfirst
    - Assert
    - exec_prepare_plan
    - SPI_result_code_string
    - ereport
    - SPI_freetuptable
    - exec_eval_cleanup
    - exec_set_found
    - errcode
    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:4465,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4471,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4473,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4474,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4475,1
    - Dst: convert_value_to_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4478,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4481,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4483,1
    - Dst: exec_eval_using_params
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4488,1
    - Dst: memset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4490,1
    - Dst: SPI_execute_extended
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4494,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4528,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4529,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4530,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4531,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4536,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4537,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4538,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4542,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4543,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4544,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4548,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4549,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4565,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4566,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4567,1
    - Dst: format_preparedparamsdata
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4584,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4588,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4589,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4590,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4591,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4594,1
    - Dst: format_preparedparamsdata
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4603,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4607,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4608,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4609,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4610,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4614,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4617,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4629,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4630,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 68
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_dynexecute*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4633
      start: 4453
    functionDepth: 2
    functionLinenumber: 4453
    functionLinenumberEnd: 4633
    functionName: exec_stmt_dynexecute
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - get_stmt_mcontext
    - MemoryContextReset
    - SPI_execute_extended
    - errhint
    - errdetail_internal
    - exec_move_row
    - format_preparedparamsdata
    - errmsg
    - exec_eval_using_params
    - elog
    - exec_eval_expr
    - MemoryContextStrdup
    - memset
    - SPI_result_code_string
    - ereport
    - SPI_freetuptable
    - exec_eval_cleanup
    - errcode
    - convert_value_to_string
    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:4649,1
    - Dst: exec_for_query
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4655,1
    - Dst: SPI_cursor_close
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4660,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_dynfors*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4663
      start: 4643
    functionDepth: 1
    functionLinenumber: 4643
    functionLinenumberEnd: 4663
    functionName: exec_stmt_dynfors
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - exec_for_query
    - exec_dynquery_with_params
    - 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:4691,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4692,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4693,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4694,1
    - Dst: SPI_cursor_find
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4696,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4697,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4698,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4699,1
    - Dst: exec_prepare_plan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4717,1
    - Dst: exec_dynquery_with_params
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4725,1
    - Dst: exec_check_assignable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4741,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4742,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4767,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4768,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4769,1
    - Dst: memset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4771,1
    - Dst: exec_stmt_execsql
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4780,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4781,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4786,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4787,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4788,1
    - Dst: exec_prepare_plan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4793,1
    - Dst: setup_param_list
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4799,1
    - Dst: SPI_cursor_open_with_paramlist
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4804,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4808,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4809,1
    - Dst: exec_check_assignable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4817,1
    - Dst: assign_text_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4818,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4822,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4824,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 54
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_open*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4827
      start: 4670
    functionDepth: 3
    functionLinenumber: 4670
    functionLinenumberEnd: 4827
    functionName: exec_stmt_open
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - MemoryContextSwitchTo
    - get_stmt_mcontext
    - MemoryContextReset
    - exec_dynquery_with_params
    - exec_stmt_execsql
    - assign_text_var
    - setup_param_list
    - errmsg
    - elog
    - SPI_cursor_open_with_paramlist
    - SPI_cursor_find
    - exec_prepare_plan
    - memset
    - TextDatumGetCString
    - SPI_result_code_string
    - ereport
    - exec_eval_cleanup
    - errcode
    - exec_check_assignable
    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:4852,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4853,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4854,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4857,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4857,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4858,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4859,1
    - Dst: SPI_cursor_find
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4861,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4863,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4864,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4865,1
    - Dst: exec_eval_integer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4873,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4876,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4877,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4878,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4880,1
    - Dst: SPI_scroll_cursor_fetch
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4891,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4901,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4903,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4905,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4906,1
    - Dst: SPI_scroll_cursor_move
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4911,1
    - Dst: exec_set_found
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4917,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_fetch*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4920
      start: 4835
    functionDepth: 2
    functionLinenumber: 4835
    functionLinenumberEnd: 4920
    functionName: exec_stmt_fetch
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - errmsg
    - MemoryContextSwitchTo
    - SPI_cursor_find
    - SPI_scroll_cursor_fetch
    - TextDatumGetCString
    - exec_move_row
    - ereport
    - exec_eval_integer
    - SPI_freetuptable
    - exec_eval_cleanup
    - SPI_scroll_cursor_move
    - exec_set_found
    - get_eval_mcontext
    - errcode
    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:4940,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4941,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4942,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4945,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4945,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4946,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4947,1
    - Dst: SPI_cursor_find
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4949,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4951,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4952,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4953,1
    - Dst: SPI_cursor_close
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4959,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_close*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4962
      start: 4926
    functionDepth: 1
    functionLinenumber: 4926
    functionLinenumberEnd: 4962
    functionName: exec_stmt_close
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - errmsg
    - MemoryContextSwitchTo
    - SPI_cursor_find
    - TextDatumGetCString
    - ereport
    - SPI_cursor_close
    - get_eval_mcontext
    - errcode
    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:4973,1
    - Dst: SPI_commit
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4975,1
    - Dst: plpgsql_create_econtext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4983,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_commit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4986
      start: 4969
    functionDepth: 1
    functionLinenumber: 4969
    functionLinenumberEnd: 4986
    functionName: exec_stmt_commit
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - SPI_commit
    - plpgsql_create_econtext
    - SPI_commit_and_chain
    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:4997,1
    - Dst: SPI_rollback
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:4999,1
    - Dst: plpgsql_create_econtext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5007,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - estate
    - stmt
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_stmt_rollback*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5010
      start: 4993
    functionDepth: 1
    functionLinenumber: 4993
    functionLinenumberEnd: 5010
    functionName: exec_stmt_rollback
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - SPI_rollback_and_chain
    - plpgsql_create_econtext
    - SPI_rollback
    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:5029,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5031,1
    - Dst: exec_assign_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5032,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5033,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: 5034
      start: 5016
    functionDepth: 2
    functionLinenumber: 5016
    functionLinenumberEnd: 5034
    functionName: exec_assign_expr
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - exec_assign_value
    - exec_eval_cleanup
    - exec_eval_expr
    - exec_prepare_plan
    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:5054,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5054,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5056,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5058,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5059,1
    - Dst: exec_assign_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5061,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5061,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - estate
    - target
    - str
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_datum*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5063
      start: 5046
    functionDepth: 1
    functionLinenumber: 5046
    functionLinenumberEnd: 5063
    functionName: exec_assign_c_string
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - exec_assign_value
    - MemoryContextSwitchTo
    - PointerGetDatum
    - cstring_to_text
    - get_eval_mcontext
    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:5091,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5100,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5101,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5102,1
    - Dst: VARATT_IS_EXTERNAL_EXPANDED_RW
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5123,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5123,1
    - Dst: expand_array
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5126,1
    - Dst: datumTransfer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5133,1
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5152,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5169,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5175,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5176,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5177,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5178,1
    - Dst: exec_move_row_from_datum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5179,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5195,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5196,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5197,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5201,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5207,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5208,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5209,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5210,1
    - Dst: exec_move_row_from_datum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5211,1
    - Dst: instantiate_empty_record_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5237,1
    - Dst: unlikely
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5245,1
    - Dst: expanded_record_lookup_field
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5247,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5250,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5251,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5252,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5259,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5260,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5261,1
    - Dst: exec_cast_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5265,1
    - Dst: expanded_record_set_field
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5274,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5280,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: 5282
      start: 5074
    functionDepth: 1
    functionLinenumber: 5074
    functionLinenumberEnd: 5282
    functionName: exec_assign_value
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 6
    functionsReached:
    - errmsg
    - expanded_record_lookup_field
    - instantiate_empty_record_variable
    - exec_move_row
    - ereport
    - exec_move_row_from_datum
    - datumTransfer
    - unlikely
    - elog
    - VARATT_IS_EXTERNAL_EXPANDED_RW
    - expand_array
    - assign_simple_var
    - expanded_record_set_field
    - DatumGetPointer
    - errcode
    - exec_cast_value
    - type_is_rowtype
    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:5315,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5337,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5339,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5340,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5340,1
    - Dst: make_tuple_from_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5341,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5343,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5346,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5348,1
    - Dst: ExpandedRecordIsEmpty
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5367,1
    - Dst: ExpandedRecordGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5375,1
    - Dst: instantiate_empty_record_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5410,1
    - Dst: unlikely
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5418,1
    - Dst: expanded_record_lookup_field
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5420,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5423,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5424,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5425,1
    - Dst: expanded_record_get_field
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5435,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5442,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 70
    argCount: 6
    argNames:
    - estate
    - datum
    - typeid
    - typetypmod
    - value
    - isnull
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_datum*
    - Oid*
    - int32*
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5444
      start: 5301
    functionDepth: 2
    functionLinenumber: 5301
    functionLinenumberEnd: 5444
    functionName: exec_eval_datum
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - ExpandedRecordGetDatum
    - HeapTupleGetDatum
    - expanded_record_lookup_field
    - MemoryContextSwitchTo
    - errmsg
    - expanded_record_get_field
    - instantiate_empty_record_variable
    - BlessTupleDesc
    - ExpandedRecordIsEmpty
    - ereport
    - elog
    - unlikely
    - make_tuple_from_row
    - plpgsql_fulfill_promise
    - get_eval_mcontext
    - errcode
    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:5499,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: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5522,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 2
    argNames:
    - estate
    - datum
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_datum*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5528
      start: 5452
    functionDepth: 1
    functionLinenumber: 5452
    functionLinenumberEnd: 5528
    functionName: plpgsql_exec_get_datum_type
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - expanded_record_lookup_field
    - errmsg
    - instantiate_empty_record_variable
    - ereport
    - unlikely
    - elog
    - errcode
    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:5590,1
    - Dst: unlikely
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5596,1
    - Dst: expanded_record_lookup_field
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5598,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5601,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5602,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5603,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5615,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: 5621
      start: 5537
    functionDepth: 1
    functionLinenumber: 5537
    functionLinenumberEnd: 5621
    functionName: plpgsql_exec_get_datum_type_info
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - expanded_record_lookup_field
    - errmsg
    - instantiate_empty_record_variable
    - ereport
    - unlikely
    - elog
    - errcode
    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:5641,1
    - Dst: exec_cast_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5642,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5645,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - estate
    - expr
    - isNull
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_expr*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5646
      start: 5632
    functionDepth: 1
    functionLinenumber: 5632
    functionLinenumberEnd: 5646
    functionName: exec_eval_integer
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - exec_cast_value
    - DatumGetInt32
    - 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:5664,1
    - Dst: exec_cast_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5665,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5668,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - estate
    - expr
    - isNull
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_expr*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5669
      start: 5655
    functionDepth: 1
    functionLinenumber: 5655
    functionLinenumberEnd: 5669
    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:5693,1
    - Dst: exec_eval_simple_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5699,1
    - Dst: exec_run_select
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5706,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5708,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5709,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5710,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5711,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5717,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5718,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5719,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5723,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5728,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5745,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5746,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5747,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5748,1
    - Dst: SPI_getbinval
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5753,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: 5755
      start: 5678
    functionDepth: 2
    functionLinenumber: 5678
    functionLinenumberEnd: 5755
    functionName: exec_eval_expr
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 12
    functionsReached:
    - errmsg
    - exec_run_select
    - exec_prepare_plan
    - SPI_getbinval
    - errcontext
    - exec_eval_simple_expr
    - TupleDescAttr
    - ereport
    - errmsg_plural
    - errcode
    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:5786,1
    - Dst: setup_param_list
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5792,1
    - Dst: SPI_cursor_open_with_paramlist
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5799,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5803,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5804,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5805,1
    - Dst: SPI_execute_plan_with_paramlist
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5812,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5821,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5822,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5823,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5824,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5826,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5827,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5828,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5829,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5833,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: 5838
      start: 5762
    functionDepth: 2
    functionLinenumber: 5762
    functionLinenumberEnd: 5838
    functionName: exec_run_select
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 3
    functionsReached:
    - errmsg
    - Assert
    - exec_prepare_plan
    - SPI_execute_plan_with_paramlist
    - errcontext
    - SPI_result_code_string
    - ereport
    - SPI_cursor_open_with_paramlist
    - elog
    - setup_param_list
    - exec_eval_cleanup
    - errcode
    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:5865,1
    - Dst: SPI_cursor_fetch
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5883,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5893,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5894,1
    - Dst: expanded_record_set_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5928,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5938,1
    - Dst: compatible_tupdescs
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5951,1
    - Dst: expanded_record_get_tupdesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5952,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5958,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5960,1
    - Dst: exec_stmts
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5965,1
    - Dst: LOOP_RC_PROCESSING
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5967,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5970,1
    - Dst: SPI_cursor_fetch
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5975,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5985,1
    - Dst: UnpinPortal
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5987,1
    - Dst: exec_set_found
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:5995,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: 5998
      start: 5846
    functionDepth: 4
    functionLinenumber: 5846
    functionLinenumberEnd: 5998
    functionName: exec_for_query
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 3
    functionsReached:
    - UnpinPortal
    - exec_set_found
    - exec_move_row
    - expanded_record_get_tupdesc
    - SPI_freetuptable
    - exec_eval_cleanup
    - PinPortal
    - compatible_tupdescs
    - exec_stmts
    - SPI_cursor_fetch
    - expanded_record_set_tuple
    - 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:6052,1
    - Dst: EnsurePortalSnapshotExists
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6063,1
    - Dst: likely
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6070,1
    - Dst: CachedPlanIsSimplyValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6070,1
    - Dst: ReleaseCachedPlan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6092,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6109,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6109,1
    - Dst: SPI_plan_get_cached_plan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6110,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6111,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6119,1
    - Dst: exec_is_simple_query
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6129,1
    - Dst: CachedPlanAllowsSimpleValidityCheck
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6130,1
    - Dst: ReleaseCachedPlan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6141,1
    - Dst: ReleaseCachedPlan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6149,1
    - Dst: exec_save_simple_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6152,1
    - Dst: unlikely
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6182,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6184,1
    - Dst: ExecInitExprWithParams
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6186,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6190,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6205,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6205,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6209,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6210,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6210,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6221,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6233,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6235,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: 6241
      start: 6028
    functionDepth: 1
    functionLinenumber: 6028
    functionLinenumberEnd: 6241
    functionName: exec_eval_simple_expr
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - exec_is_simple_query
    - likely
    - PopActiveSnapshot
    - get_eval_mcontext
    - CommandCounterIncrement
    - GetTransactionSnapshot
    - ExecInitExprWithParams
    - unlikely
    - EnsurePortalSnapshotExists
    - SPI_plan_get_cached_plan
    - CachedPlanAllowsSimpleValidityCheck
    - PushActiveSnapshot
    - CachedPlanIsSimplyValid
    - ExecEvalExpr
    - ReleaseCachedPlan
    - exec_save_simple_expr
    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:6268,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6273,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - estate
    - expr
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6295
      start: 6259
    functionDepth: 1
    functionLinenumber: 6259
    functionLinenumberEnd: 6295
    functionName: setup_param_list
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 6
    functionsReached:
    - bms_is_empty
    - Assert
    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:6321,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6326,1
    - Dst: bms_is_member
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6338,1
    - Dst: unlikely
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6379,1
    - Dst: expanded_record_lookup_field
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6381,1
    - Dst: exec_eval_datum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6408,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6420,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6424,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 48
    argCount: 4
    argNames:
    - params
    - paramid
    - speculative
    - prm
    argTypes:
    - ParamListInfo
    - int
    - bool
    - ParamExternData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6429
      start: 6307
    functionDepth: 3
    functionLinenumber: 6307
    functionLinenumberEnd: 6429
    functionName: plpgsql_param_fetch
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached:
    - expanded_record_lookup_field
    - Assert
    - MakeExpandedObjectReadOnly
    - unlikely
    - bms_is_member
    - 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:6451,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6512,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: 6513
      start: 6434
    functionDepth: 1
    functionLinenumber: 6434
    functionLinenumberEnd: 6513
    functionName: plpgsql_param_compile
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached:
    - ExprEvalPushStep
    - Assert
    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:6540,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6544,1
    - Dst: VARATT_IS_EXTERNAL_EXPANDED_RW
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6551,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6551,1
    - Dst: exec_check_rw_parameter
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6561,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6571,1
    - Dst: plpgsql_param_eval_var_ro
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6576,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6580,1
    - Dst: plpgsql_param_eval_var_transfer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6583,1
    - Dst: plpgsql_param_eval_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6590,1
    - Dst: plpgsql_param_eval_var_ro
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6596,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6612,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6613
      start: 6528
    functionDepth: 1
    functionLinenumber: 6528
    functionLinenumberEnd: 6613
    functionName: plpgsql_param_eval_var_check
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached:
    - Assert
    - plpgsql_param_eval_var_ro
    - exec_check_rw_parameter
    - VARATT_IS_EXTERNAL_EXPANDED_RW
    - plpgsql_param_eval_var
    - DatumGetPointer
    - plpgsql_param_eval_var_transfer
    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:6637,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6641,1
    - Dst: VARATT_IS_EXTERNAL_EXPANDED_RW
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6651,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6651,1
    - Dst: TransferExpandedObject
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6653,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6654,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6672,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6673
      start: 6625
    functionDepth: 1
    functionLinenumber: 6625
    functionLinenumberEnd: 6673
    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:6693,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6697,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6704,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6705
      start: 6681
    functionDepth: 1
    functionLinenumber: 6681
    functionLinenumberEnd: 6705
    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:6725,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6729,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6735,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6741,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6742
      start: 6713
    functionDepth: 1
    functionLinenumber: 6713
    functionLinenumberEnd: 6742
    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:6764,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6768,1
    - Dst: instantiate_empty_record_variable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6781,1
    - Dst: unlikely
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6789,1
    - Dst: expanded_record_lookup_field
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6791,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6794,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6795,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6796,1
    - Dst: expanded_record_get_field
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6802,1
    - Dst: unlikely
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6807,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6808,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6809,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6810,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6812,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6813,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6814
      start: 6750
    functionDepth: 1
    functionLinenumber: 6750
    functionLinenumberEnd: 6814
    functionName: plpgsql_param_eval_recfield
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached:
    - expanded_record_lookup_field
    - errmsg
    - Assert
    - expanded_record_get_field
    - instantiate_empty_record_variable
    - format_type_be
    - ereport
    - unlikely
    - errcode
    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:6836,1
    - Dst: exec_eval_datum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6842,1
    - Dst: unlikely
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6847,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6848,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6849,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6850,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6852,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6853,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6854
      start: 6822
    functionDepth: 3
    functionLinenumber: 6822
    functionLinenumberEnd: 6854
    functionName: plpgsql_param_eval_generic
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - format_type_be
    - ereport
    - unlikely
    - exec_eval_datum
    - errcode
    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:6876,1
    - Dst: exec_eval_datum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6882,1
    - Dst: unlikely
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6887,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6888,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6889,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6890,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6892,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6893,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6896,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6899
      start: 6862
    functionDepth: 3
    functionLinenumber: 6862
    functionLinenumberEnd: 6899
    functionName: plpgsql_param_eval_generic_ro
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - MakeExpandedObjectReadOnly
    - format_type_be
    - ereport
    - unlikely
    - exec_eval_datum
    - errcode
    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:6943,1
    - Dst: expanded_record_set_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6945,1
    - Dst: assign_record_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6946,1
    - Dst: DeleteExpandedObject
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6952,1
    - Dst: ExpandedRecordGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6952,1
    - Dst: make_expanded_record_for_rec
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6961,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6976,1
    - Dst: compatible_tupdescs
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6977,1
    - Dst: expanded_record_get_tupdesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6977,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6979,1
    - Dst: deconstruct_expanded_record
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6982,1
    - Dst: expanded_record_set_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6987,1
    - Dst: assign_record_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:6991,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7001,1
    - Dst: lengthof
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7014,1
    - Dst: eval_mcontext_alloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7023,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7029,1
    - Dst: exec_move_row_from_fields
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7031,1
    - Dst: exec_move_row_from_fields
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7039,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: 7042
      start: 6912
    functionDepth: 1
    functionLinenumber: 6912
    functionLinenumberEnd: 7042
    functionName: exec_move_row
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 8
    functionsReached:
    - ExpandedRecordGetDatum
    - lengthof
    - HeapTupleIsValid
    - eval_mcontext_alloc
    - heap_deform_tuple
    - assign_record_var
    - expanded_record_get_tupdesc
    - DeleteExpandedObject
    - make_expanded_record_for_rec
    - compatible_tupdescs
    - deconstruct_expanded_record
    - exec_move_row_from_fields
    - expanded_record_set_tuple
    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:7055,1
    - Dst: typenameTypeIdAndMod
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7077,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7083,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7087,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7095,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7096,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7097,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7098,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - rec
    argTypes:
    - PLpgSQL_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7112
      start: 7047
    functionDepth: 1
    functionLinenumber: 7047
    functionLinenumberEnd: 7112
    functionName: revalidate_rectypeid
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - format_type_be
    - ereport
    - lookup_type_cache
    - errcode
    - typenameTypeIdAndMod
    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:7134,1
    - Dst: revalidate_rectypeid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7141,1
    - Dst: make_expanded_record_from_exprecord
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7148,1
    - Dst: make_expanded_record_from_typeid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7151,1
    - Dst: ExpandedRecordIsDomain
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7161,1
    - Dst: make_expanded_record_from_exprecord
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7162,1
    - Dst: expanded_record_get_tupdesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7167,1
    - Dst: make_expanded_record_from_tupdesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7168,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: 7174
      start: 7127
    functionDepth: 2
    functionLinenumber: 7127
    functionLinenumberEnd: 7174
    functionName: make_expanded_record_for_rec
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - make_expanded_record_from_typeid
    - make_expanded_record_from_exprecord
    - expanded_record_get_tupdesc
    - revalidate_rectypeid
    - make_expanded_record_from_tupdesc
    - ExpandedRecordIsDomain
    - get_eval_mcontext
    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:7222,1
    - Dst: expanded_record_get_tupdesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7224,1
    - Dst: lengthof
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7246,1
    - Dst: eval_mcontext_alloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7255,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7265,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7278,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7285,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7286,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7299,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7300,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7301,1
    - Dst: errdetail
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7303,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7307,1
    - Dst: exec_cast_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7311,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7329,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7333,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7334,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7335,1
    - Dst: errdetail
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7337,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7341,1
    - Dst: expanded_record_set_fields
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7349,1
    - Dst: assign_record_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7352,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7358,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7387,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7394,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7395,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7407,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7408,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7409,1
    - Dst: errdetail
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7411,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7415,1
    - Dst: exec_assign_value
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7418,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7429,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7433,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7434,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7435,1
    - Dst: errdetail
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7437,1
    - Dst: errhint
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7441,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7447,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: 7448
      start: 7190
    functionDepth: 2
    functionLinenumber: 7190
    functionLinenumberEnd: 7448
    functionName: exec_move_row_from_fields
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - errmsg
    - expanded_record_set_fields
    - Assert
    - exec_assign_value
    - lengthof
    - eval_mcontext_alloc
    - TupleDescAttr
    - assign_record_var
    - ereport
    - expanded_record_get_tupdesc
    - errhint
    - elog
    - errdetail
    - errcode
    - exec_cast_value
    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:7467,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7468,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 2
    argNames:
    - src_tupdesc
    - dst_tupdesc
    argTypes:
    - TupleDesc
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7489
      start: 7456
    functionDepth: 1
    functionLinenumber: 7456
    functionLinenumberEnd: 7489
    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:7514,1
    - Dst: eval_mcontext_alloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7515,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7522,1
    - Dst: exec_eval_datum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7528,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7531,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7536,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - estate
    - row
    - tupdesc
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_row*
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7539
      start: 7500
    functionDepth: 3
    functionLinenumber: 7500
    functionLinenumberEnd: 7539
    functionName: make_tuple_from_row
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - heap_form_tuple
    - eval_mcontext_alloc
    - TupleDescAttr
    - eval_mcontext_alloc0
    - exec_eval_datum
    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:7563,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7566,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7567,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7572,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7573,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - value
    - tmptup
    argTypes:
    - Datum
    - HeapTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7575
      start: 7555
    functionDepth: 1
    functionLinenumber: 7555
    functionLinenumberEnd: 7575
    functionName: deconstruct_composite_datum
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 3
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - DatumGetHeapTupleHeader
    - ItemPointerSetInvalid
    - lookup_rowtype_tupdesc
    - HeapTupleHeaderGetTypeId
    - HeapTupleHeaderGetTypMod
    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:7592,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7592,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7594,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7597,1
    - Dst: revalidate_rectypeid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7617,1
    - Dst: VARATT_IS_EXTERNAL_EXPANDED_RW
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7627,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7627,1
    - Dst: ExpandedRecordIsDomain
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7630,1
    - Dst: assign_record_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7632,1
    - Dst: expanded_record_set_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7655,1
    - Dst: make_expanded_record_for_rec
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7665,1
    - Dst: expanded_record_set_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7678,1
    - Dst: assign_record_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7680,1
    - Dst: ExpandedRecordIsEmpty
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7688,1
    - Dst: deconstruct_expanded_record
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7691,1
    - Dst: assign_record_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7692,1
    - Dst: ExpandedRecordIsEmpty
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7703,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7705,1
    - Dst: expanded_record_get_tupdesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7706,1
    - Dst: deconstruct_expanded_record
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7714,1
    - Dst: exec_move_row_from_fields
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7715,1
    - Dst: expanded_record_get_tupdesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7717,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7734,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7734,1
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7736,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7737,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7740,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7741,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7746,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7747,1
    - Dst: expanded_record_set_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7769,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7783,1
    - Dst: make_expanded_record_from_typeid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7785,1
    - Dst: expanded_record_set_tuple
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7787,1
    - Dst: assign_record_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7789,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7803,1
    - Dst: exec_move_row
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7806,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7809,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 59
    argCount: 3
    argNames:
    - estate
    - target
    - value
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_variable*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7811
      start: 7586
    functionDepth: 3
    functionLinenumber: 7586
    functionLinenumberEnd: 7811
    functionName: exec_move_row_from_datum
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - MemoryContextSwitchTo
    - expanded_record_get_tupdesc
    - revalidate_rectypeid
    - VARATT_IS_EXTERNAL_EXPANDED_RW
    - VARATT_IS_EXTERNAL_EXPANDED
    - HeapTupleHeaderGetTypMod
    - exec_move_row_from_fields
    - HeapTupleHeaderGetDatumLength
    - ItemPointerSetInvalid
    - exec_move_row
    - make_expanded_record_from_typeid
    - ExpandedRecordIsDomain
    - DatumGetPointer
    - DatumGetHeapTupleHeader
    - assign_record_var
    - ExpandedRecordIsEmpty
    - lookup_rowtype_tupdesc
    - deconstruct_expanded_record
    - get_eval_mcontext
    - expanded_record_set_tuple
    - ReleaseTupleDesc
    - Assert
    - make_expanded_record_for_rec
    - HeapTupleHeaderGetTypeId
    - DatumGetEOHP
    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:7822,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7826,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7827,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7828,1
    - Dst: errdetail
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7829,1
    - Dst: revalidate_rectypeid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7832,1
    - Dst: make_expanded_record_from_typeid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7835,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - estate
    - rec
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7837
      start: 7819
    functionDepth: 2
    functionLinenumber: 7819
    functionLinenumberEnd: 7837
    functionName: instantiate_empty_record_variable
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 6
    functionsReached:
    - errmsg
    - Assert
    - make_expanded_record_from_typeid
    - ereport
    - revalidate_rectypeid
    - errdetail
    - errcode
    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:7862,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7862,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7863,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7864,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7865,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - estate
    - value
    - valtype
    argTypes:
    - PLpgSQL_execstate*
    - Datum
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7868
      start: 7854
    functionDepth: 1
    functionLinenumber: 7854
    functionLinenumberEnd: 7868
    functionName: convert_value_to_string
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 4
    functionsReached:
    - OidOutputFunctionCall
    - MemoryContextSwitchTo
    - get_eval_mcontext
    - getTypeOutputInfo
    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:7896,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: 7901
      start: 7883
    functionDepth: 1
    functionLinenumber: 7883
    functionLinenumberEnd: 7901
    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:7915,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7923,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7923,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7930,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7935,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: 7939
      start: 7907
    functionDepth: 1
    functionLinenumber: 7907
    functionLinenumberEnd: 7939
    functionName: do_cast_value
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - ExecEvalExpr
    - MemoryContextSwitchTo
    - get_eval_mcontext
    - get_cast_hashentry
    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:7968,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:7974,1
    - Dst: FreeCachedExpression
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8008,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8017,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8017,1
    - Dst: makeNode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8023,1
    - Dst: get_typcollation
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8026,1
    - Dst: coerce_to_target_type
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8046,1
    - Dst: makeNode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8062,1
    - Dst: coerce_to_target_type
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8071,1
    - Dst: GetCachedExpression
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8082,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8086,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8099,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8121,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8122,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8125,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: 8129
      start: 7951
    functionDepth: 1
    functionLinenumber: 7951
    functionLinenumberEnd: 8129
    functionName: get_cast_hashentry
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - get_typcollation
    - IsA
    - FreeCachedExpression
    - hash_search
    - ExecInitExpr
    - coerce_to_target_type
    - makeNode
    - GetCachedExpression
    - get_eval_mcontext
    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:8163,1
    - Dst: SPI_plan_get_plan_sources
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8167,1
    - Dst: linitial
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8168,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8175,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8175,1
    - Dst: SPI_plan_get_cached_plan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8176,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8177,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8180,1
    - Dst: CachedPlanAllowsSimpleValidityCheck
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8188,1
    - Dst: exec_save_simple_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8197,1
    - Dst: ReleaseCachedPlan
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8204,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 2
    argNames:
    - estate
    - expr
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8205
      start: 8142
    functionDepth: 1
    functionLinenumber: 8142
    functionLinenumberEnd: 8205
    functionName: exec_simple_check_plan
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - SPI_plan_get_plan_sources
    - Assert
    - MemoryContextSwitchTo
    - exec_is_simple_query
    - linitial
    - CachedPlanAllowsSimpleValidityCheck
    - SPI_plan_get_cached_plan
    - get_eval_mcontext
    - exec_save_simple_expr
    - 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:8224,1
    - Dst: list_length
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8225,1
    - Dst: linitial
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8227,1
    - Dst: list_length
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8232,1
    - Dst: linitial
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8234,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8239,1
    - Dst: list_length
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8273,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 19
    argCount: 1
    argNames:
    - expr
    argTypes:
    - PLpgSQL_expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8280
      start: 8214
    functionDepth: 1
    functionLinenumber: 8214
    functionLinenumberEnd: 8280
    functionName: exec_is_simple_query
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - SPI_plan_get_plan_sources
    - linitial
    - IsA
    - list_length
    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:8298,1
    - Dst: list_length
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8298,1
    - Dst: linitial_node
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8299,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8300,1
    - Dst: Assert
      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:8315,1
    - Dst: linitial_node
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8316,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8318,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8320,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8327,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8327,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8329,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8334,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8337,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8337,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8338,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8343,1
    - Dst: nodeTag
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8344,1
    - Dst: exprType
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8356,1
    - Dst: exprTypmod
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8357,1
    - Dst: contain_mutable_functions
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8359,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 29
    argCount: 2
    argNames:
    - expr
    - cplan
    argTypes:
    - PLpgSQL_expr*
    - CachedPlan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8360
      start: 8285
    functionDepth: 1
    functionLinenumber: 8285
    functionLinenumberEnd: 8360
    functionName: exec_save_simple_expr
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - nodeTag
    - exprType
    - Assert
    - exprTypmod
    - contain_mutable_functions
    - IsA
    - list_length
    - elog
    - linitial_node
    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:8423,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8426,1
    - Dst: count_param_references
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8442,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8445,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8465,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8467,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8474,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8481,1
    - Dst: get_typsubscript
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8485,1
    - Dst: list_make2
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8493,1
    - Dst: get_func_support
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8503,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8504,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8515,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8515,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8516,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8522,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8522,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8523,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8524,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 48
    argCount: 2
    argNames:
    - expr
    - paramid
    argTypes:
    - PLpgSQL_expr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8531
      start: 8410
    functionDepth: 1
    functionLinenumber: 8410
    functionLinenumberEnd: 8531
    functionName: exec_check_rw_parameter
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - OidFunctionCall1
    - Assert
    - get_func_support
    - list_make2
    - IsA
    - PointerGetDatum
    - count_param_references
    - get_typsubscript
    - OidIsValid
    - 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:8545,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8559,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - count_param_references_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8560
      start: 8540
    functionDepth: 1
    functionLinenumber: 8540
    functionLinenumberEnd: 8560
    functionName: count_param_references
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - IsA
    - expression_tree_walker
    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:8572,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8580,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8581,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8582,1
    - Dst: exec_check_assignable
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8590,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8594,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - estate
    - dno
    argTypes:
    - PLpgSQL_execstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8597
      start: 8567
    functionDepth: 1
    functionLinenumber: 8567
    functionLinenumberEnd: 8597
    functionName: exec_check_assignable
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 4
    functionsReached:
    - errmsg
    - Assert
    - ereport
    - elog
    - errcode
    - exec_check_assignable
    linkageType: ''
    returnType: void
    signature: void exec_check_assignable(PLpgSQL_execstate *estate, int dno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assign_simple_var
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8609,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8609,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - estate
    - state
    argTypes:
    - PLpgSQL_execstate*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8610
      start: 8603
    functionDepth: 1
    functionLinenumber: 8603
    functionLinenumberEnd: 8610
    functionName: exec_set_found
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 9
    functionsReached:
    - BoolGetDatum
    - assign_simple_var
    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:8643,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8644,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8645,1
    - Dst: ResourceOwnerCreate
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8657,1
    - Dst: CreateExprContext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8665,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8672,1
    - Dst: GetCurrentSubTransactionId
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8676,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - estate
    argTypes:
    - PLpgSQL_execstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8680
      start: 8619
    functionDepth: 1
    functionLinenumber: 8619
    functionLinenumberEnd: 8680
    functionName: plpgsql_create_econtext
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 5
    functionsReached:
    - MemoryContextSwitchTo
    - GetCurrentSubTransactionId
    - ResourceOwnerCreate
    - CreateExprContext
    - CreateExecutorState
    - MemoryContextAlloc
    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:8693,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8694,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8697,1
    - Dst: FreeExprContext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8700,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - estate
    argTypes:
    - PLpgSQL_execstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8702
      start: 8688
    functionDepth: 1
    functionLinenumber: 8688
    functionLinenumberEnd: 8702
    functionName: plpgsql_destroy_econtext
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 3
    functionsReached:
    - pfree
    - Assert
    - 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:8730,1
    - Dst: ReleaseAllPlanCacheRefsInOwner
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8733,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - event
    - arg
    argTypes:
    - XactEvent
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8743
      start: 8710
    functionDepth: 1
    functionLinenumber: 8710
    functionLinenumberEnd: 8743
    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:8763,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8766,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 4
    argNames:
    - event
    - mySubid
    - parentSubid
    - arg
    argTypes:
    - SubXactEvent
    - SubTransactionId
    - SubTransactionId
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8770
      start: 8752
    functionDepth: 1
    functionLinenumber: 8752
    functionLinenumberEnd: 8770
    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:8783,1
    - Dst: VARATT_IS_EXTERNAL_NON_EXPANDED
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8797,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8797,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8808,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8808,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8809,1
    - Dst: detoast_external_attr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8809,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8809,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8810,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8813,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8813,1
    - Dst: datumCopy
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8815,1
    - Dst: DatumIsReadWriteExpandedObject
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8823,1
    - Dst: DeleteExpandedObject
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8826,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8828,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8828,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: 8841
      start: 8779
    functionDepth: 1
    functionLinenumber: 8779
    functionLinenumberEnd: 8841
    functionName: assign_simple_var
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 8
    functionsReached:
    - pfree
    - Assert
    - MemoryContextSwitchTo
    - get_eval_mcontext
    - DatumIsReadWriteExpandedObject
    - datumCopy
    - PointerGetDatum
    - DeleteExpandedObject
    - VARATT_IS_EXTERNAL_NON_EXPANDED
    - detoast_external_attr
    - 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:8849,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8849,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - estate
    - var
    - str
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_var*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8850
      start: 8846
    functionDepth: 2
    functionLinenumber: 8846
    functionLinenumberEnd: 8850
    functionName: assign_text_var
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 4
    functionsReached:
    - CStringGetTextDatum
    - assign_simple_var
    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:8859,1
    - Dst: TransferExpandedRecord
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8862,1
    - Dst: DeleteExpandedObject
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8866,1
    - Dst: ExpandedRecordGetDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8866,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - estate
    - rec
    - erh
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_rec*
    - ExpandedRecordHeader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8870
      start: 8855
    functionDepth: 1
    functionLinenumber: 8855
    functionLinenumberEnd: 8870
    functionName: assign_record_var
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 3
    functionsReached:
    - ExpandedRecordGetDatum
    - Assert
    - DeleteExpandedObject
    - 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:8892,1
    - Dst: get_stmt_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8893,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8894,1
    - Dst: makeParamList
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8895,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8896,1
    - Dst: lfirst
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8901,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8911,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8916,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8929,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8929,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8937,1
    - Dst: datumCopy
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8939,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8942,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8944,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 2
    argNames:
    - estate
    - params
    argTypes:
    - PLpgSQL_execstate*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8950
      start: 8878
    functionDepth: 3
    functionLinenumber: 8878
    functionLinenumberEnd: 8950
    functionName: exec_eval_using_params
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - makeParamList
    - MemoryContextSwitchTo
    - get_typlenbyval
    - get_stmt_mcontext
    - CStringGetTextDatum
    - DatumGetCString
    - datumCopy
    - list_length
    - exec_eval_cleanup
    - lfirst
    - exec_eval_expr
    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:8901,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8911,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8916,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8929,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8929,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8937,1
    - Dst: datumCopy
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8939,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8942,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8944,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8947
      start: 8899
    functionDepth: 3
    functionLinenumber: 8899
    functionLinenumberEnd: 8947
    functionName: foreach
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 17
    functionsReached:
    - MemoryContextSwitchTo
    - get_typlenbyval
    - DatumGetCString
    - CStringGetTextDatum
    - datumCopy
    - exec_eval_cleanup
    - lfirst
    - exec_eval_expr
    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:8974,1
    - Dst: exec_eval_expr
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8980,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8982,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8983,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8984,1
    - Dst: convert_value_to_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8987,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8990,1
    - Dst: exec_eval_cleanup
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8992,1
    - Dst: memset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:8999,1
    - Dst: exec_eval_using_params
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9000,1
    - Dst: SPI_cursor_parse_open
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9004,1
    - Dst: elog
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9007,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9008,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9011,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: 9014
      start: 8960
    functionDepth: 4
    functionLinenumber: 8960
    functionLinenumberEnd: 9014
    functionName: exec_dynquery_with_params
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 2
    functionsReached:
    - errmsg
    - MemoryContextStrdup
    - get_stmt_mcontext
    - memset
    - MemoryContextReset
    - exec_eval_using_params
    - SPI_result_code_string
    - ereport
    - convert_value_to_string
    - elog
    - exec_eval_cleanup
    - SPI_cursor_parse_open
    - errcode
    - exec_eval_expr
    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:9033,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9033,1
    - Dst: initStringInfo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9035,1
    - Dst: bms_next_member
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9038,1
    - Dst: exec_eval_datum
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9048,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9052,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9057,1
    - Dst: appendStringInfoStringQuoted
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9059,1
    - Dst: convert_value_to_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9060,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9068,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - estate
    - expr
    argTypes:
    - PLpgSQL_execstate*
    - PLpgSQL_expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9071
      start: 9021
    functionDepth: 3
    functionLinenumber: 9021
    functionLinenumberEnd: 9071
    functionName: format_expr_params
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - get_eval_mcontext
    - appendStringInfo
    - appendStringInfoString
    - appendStringInfoStringQuoted
    - initStringInfo
    - exec_eval_datum
    - bms_next_member
    - convert_value_to_string
    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:9089,1
    - Dst: get_eval_mcontext
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9089,1
    - Dst: initStringInfo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9091,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9101,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9106,1
    - Dst: appendStringInfoStringQuoted
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9108,1
    - Dst: convert_value_to_string
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9109,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plpgsql/src/pl_exec.c:9115,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - estate
    - paramLI
    argTypes:
    - PLpgSQL_execstate*
    - ParamListInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9118
      start: 9078
    functionDepth: 2
    functionLinenumber: 9078
    functionLinenumberEnd: 9118
    functionName: format_preparedparamsdata
    functionSourceFile: /src/postgres/src/pl/plpgsql/src/pl_exec.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - appendStringInfo
    - appendStringInfoString
    - appendStringInfoStringQuoted
    - initStringInfo
    - get_eval_mcontext
    - 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: 254
    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:
    - push_back_token
    - AT_STMT_START
    - plpgsql_parse_tripword
    - plpgsql_parse_word
    - plpgsql_parse_dblword
    - internal_yylex
    - ScanKeywordLookup
    - GetScanKeyword
    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:
    - core_yylex
    - strcmp
    - strlen
    - pstrdup
    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:
    - internalerrposition
    - pg_mbstrlen_with_len
    - 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:
    - errmsg
    - ereport
    - plpgsql_scanner_errposition
    - _
    - errcode
    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:
    - location_lineno_init
    - palloc0_object
    - scanner_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
    - newSVOP
    - start_subparse
    - newSUB
    - newSTATEOP
    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
    - 'Null'
    - strlen
    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
    - 'Null'
    - strlen
    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
    - 'Null'
    - sv_vsetpvfn
    - strlen
    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
    - 'Null'
    - sv_vsetpvfn
    - strlen
    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_end
    - vwarner
    - va_start
    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_end
    - vwarner
    - va_start
    - 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_end
    - vwarner
    - va_start
    - ckWARN_d
    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_end
    - va_start
    - 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_end
    - va_start
    - 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:
    - newSVsv
    - mess
    - sv_catsv
    - SvSetSV_nosteal
    - SvCUR
    - SvEND
    - SvPOK
    - sv_dec
    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
    - croak
    - HvNAME
    - CvGV
    - PTR2UV
    - 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:
    - newSVpv
    - eval_sv
    - D_PPP_CROAK_IF_ERROR
    - PUSHMARK
    - SvREFCNT_dec
    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:
    - append_elem
    - newSVOP
    - SvREADONLY_off
    - utilize
    - newNULLLIST
    - sawparens
    - va_arg
    - start_subparse
    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_end
    - va_start
    - 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:
    - SvPOK_on
    - SvREADONLY_on
    - sv_upgrade
    - newSVpvn
    - PERL_HASH
    - SvIVX
    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:
    - assert
    - SvMAGIC
    - SvTYPE
    - AvPAD_NAMELIST
    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:
    - SvTYPE
    - SvFLAGS
    - SvMAGICAL_off
    - SvMAGIC
    - MGVTBL*::svt_free
    - SvMAGICAL
    - mg_magical
    - MUTABLE_SV
    - Safefree
    - SvREFCNT_dec
    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:
    - GvCV
    - CxTYPE
    - DPPP_dopoptosub_at
    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:
    - memEQ
    - SvPV
    - strlen
    - localeconv
    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:
    - GROK_NUMERIC_RADIX
    - memEQ
    - isSPACE
    - 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:
    - vsnprintf
    - vsprintf
    - va_end
    - Perl_croak
    - va_start
    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_end
    - va_start
    - 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:
    - memcpy
    - strlen
    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:
    - memcpy
    - strlen
    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:
    - assert
    - UNLIKELY
    - D_PPP_utf8_to_uvchr_buf_callee
    - ckWARN_d
    - D_PPP_MIN
    - UTF8_IS_CONTINUATION
    - UTF8SKIP
    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:
    - isPRINT
    - is_utf8_string
    - sv_catpvn
    - SvPVX
    - isDIGIT
    - my_snprintf
    - utf8_to_uvchr_buf
    - sv_setpvs
    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:
    - sv_catpv
    - pv_escape
    - SvPVX
    - sv_catpvs
    - D_PPP_CONSTPV_ARG
    - sv_setpvs
    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
    - SvPVX
    - pv_pretty
    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:
    - pg_any_to_server
    - pstrdup
    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:
    - pstrdup
    - strlen
    - pg_server_to_any
    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:
    - newSVsv
    - SvPVutf8
    - SvTYPE
    - SvREFCNT_inc_simple_void
    - GetDatabaseEncoding
    - utf_u2e
    - isGV_with_GP
    - SvREADONLY
    - SvPV
    - SvREFCNT_dec
    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:
    - newSVpv
    - SvUTF8_on
    - pfree
    - GetDatabaseEncoding
    - 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:
    - mess
    - SvUTF8_on
    - pfree
    - get_sv
    - croak_sv
    - croak
    - utf_e2u
    - sv_2mortal
    - cstr2sv
    - sv_setsv
    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: 131
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 131
    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: 137
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 137
    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: 305
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 305
    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:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - sv
    argTypes:
    - SV*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 313
    functionDepth: 0
    functionLinenumber: 313
    functionLinenumberEnd: 319
    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:363,1
    - Dst: HeUTF8
      Src: /src/postgres/src/pl/plperl/plperl.c:364,1
    - Dst: SvUTF8_on
      Src: /src/postgres/src/pl/plperl/plperl.c:365,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:366,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - he
    argTypes:
    - HE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 324
    functionDepth: 2
    functionLinenumber: 324
    functionLinenumberEnd: 373
    functionName: hek2cstr
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - HeUTF8
    - SvUTF8_on
    - sv2cstr
    - HeSVKEY_force
    linkageType: ''
    returnType: char
    signature: 'char *

      hek2cstr(HE *he)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_bindtextdomain
      Src: /src/postgres/src/pl/plperl/plperl.c:401,1
    - Dst: DefineCustomBoolVariable
      Src: /src/postgres/src/pl/plperl/plperl.c:406,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plperl/plperl.c:407,1
    - Dst: DefineCustomStringVariable
      Src: /src/postgres/src/pl/plperl/plperl.c:420,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plperl/plperl.c:421,1
    - Dst: DefineCustomStringVariable
      Src: /src/postgres/src/pl/plperl/plperl.c:442,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plperl/plperl.c:443,1
    - Dst: DefineCustomStringVariable
      Src: /src/postgres/src/pl/plperl/plperl.c:450,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/plperl/plperl.c:451,1
    - Dst: MarkGUCPrefixReserved
      Src: /src/postgres/src/pl/plperl/plperl.c:458,1
    - Dst: hash_create
      Src: /src/postgres/src/pl/plperl/plperl.c:465,1
    - Dst: hash_create
      Src: /src/postgres/src/pl/plperl/plperl.c:472,1
    - Dst: PLPERL_SET_OPMASK
      Src: /src/postgres/src/pl/plperl/plperl.c:480,1
    - Dst: plperl_init_interp
      Src: /src/postgres/src/pl/plperl/plperl.c:485,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 488
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - hash_create
    - DefineCustomBoolVariable
    - MarkGUCPrefixReserved
    - plperl_init_interp
    - DefineCustomStringVariable
    - 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: 504
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 504
    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:516,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:529,1
    - Dst: plperl_destroy_interp
      Src: /src/postgres/src/pl/plperl/plperl.c:534,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/pl/plperl/plperl.c:537,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/pl/plperl/plperl.c:538,1
    - Dst: activate_interpreter
      Src: /src/postgres/src/pl/plperl/plperl.c:542,1
    - Dst: plperl_destroy_interp
      Src: /src/postgres/src/pl/plperl/plperl.c:543,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:547,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 510
    functionDepth: 1
    functionLinenumber: 510
    functionLinenumberEnd: 548
    functionName: plperl_fini
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - hash_seq_search
    - hash_seq_init
    - plperl_destroy_interp
    - activate_interpreter
    - elog
    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:564,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plperl/plperl.c:568,1
    - Dst: hash_create
      Src: /src/postgres/src/pl/plperl/plperl.c:585,1
    - Dst: activate_interpreter
      Src: /src/postgres/src/pl/plperl/plperl.c:596,1
    - Dst: plperl_trusted_init
      Src: /src/postgres/src/pl/plperl/plperl.c:615,1
    - Dst: plperl_untrusted_init
      Src: /src/postgres/src/pl/plperl/plperl.c:617,1
    - Dst: on_proc_exit
      Src: /src/postgres/src/pl/plperl/plperl.c:620,1
    - Dst: plperl_init_interp
      Src: /src/postgres/src/pl/plperl/plperl.c:636,1
    - Dst: plperl_trusted_init
      Src: /src/postgres/src/pl/plperl/plperl.c:639,1
    - Dst: plperl_untrusted_init
      Src: /src/postgres/src/pl/plperl/plperl.c:641,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:643,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:644,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:645,1
    - Dst: set_interp_require
      Src: /src/postgres/src/pl/plperl/plperl.c:649,1
    - Dst: newXS
      Src: /src/postgres/src/pl/plperl/plperl.c:661,1
    - Dst: eval_pv
      Src: /src/postgres/src/pl/plperl/plperl.c:664,1
    - Dst: SvTRUE
      Src: /src/postgres/src/pl/plperl/plperl.c:665,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:666,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:667,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:668,1
    - Dst: strip_trailing_ws
      Src: /src/postgres/src/pl/plperl/plperl.c:668,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:668,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plperl/plperl.c:669,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 42
    argCount: 1
    argNames:
    - trusted
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 554
    functionDepth: 2
    functionLinenumber: 554
    functionLinenumberEnd: 677
    functionName: select_perl_context
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - plperl_untrusted_init
    - errcode
    - errmsg
    - SvTRUE
    - newXS
    - eval_pv
    - plperl_trusted_init
    - hash_create
    - errcontext
    - sv2cstr
    - ereport
    - hash_search
    - activate_interpreter
    - plperl_init_interp
    - on_proc_exit
    - set_interp_require
    - GetUserId
    - strip_trailing_ws
    linkageType: ''
    returnType: void
    signature: void select_perl_context(bool trusted)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/pl/plperl/plperl.c:690,1
    - Dst: PERL_SET_CONTEXT
      Src: /src/postgres/src/pl/plperl/plperl.c:691,1
    - Dst: set_interp_require
      Src: /src/postgres/src/pl/plperl/plperl.c:693,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plperl/plperl.c:693,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - interp_desc
    argTypes:
    - plperl_interp_desc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 685
    functionDepth: 1
    functionLinenumber: 685
    functionLinenumberEnd: 696
    functionName: activate_interpreter
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 2
    functionsReached:
    - Assert
    - PERL_SET_CONTEXT
    - set_interp_require
    - OidIsValid
    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:745,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plperl/plperl.c:746,1
    - Dst: setlocale
      Src: /src/postgres/src/pl/plperl/plperl.c:747,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plperl/plperl.c:748,1
    - Dst: setlocale
      Src: /src/postgres/src/pl/plperl/plperl.c:749,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plperl/plperl.c:750,1
    - Dst: setlocale
      Src: /src/postgres/src/pl/plperl/plperl.c:751,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plperl/plperl.c:752,1
    - Dst: setlocale
      Src: /src/postgres/src/pl/plperl/plperl.c:753,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plperl/plperl.c:754,1
    - Dst: PERL_SYS_INIT3
      Src: /src/postgres/src/pl/plperl/plperl.c:786,1
    - Dst: pqsignal
      Src: /src/postgres/src/pl/plperl/plperl.c:797,1
    - Dst: perl_alloc
      Src: /src/postgres/src/pl/plperl/plperl.c:806,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:808,1
    - Dst: PERL_SET_CONTEXT
      Src: /src/postgres/src/pl/plperl/plperl.c:810,1
    - Dst: perl_construct
      Src: /src/postgres/src/pl/plperl/plperl.c:811,1
    - Dst: perl_parse
      Src: /src/postgres/src/pl/plperl/plperl.c:848,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:850,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:851,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:852,1
    - Dst: strip_trailing_ws
      Src: /src/postgres/src/pl/plperl/plperl.c:852,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:852,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plperl/plperl.c:853,1
    - Dst: perl_run
      Src: /src/postgres/src/pl/plperl/plperl.c:855,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:856,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:857,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:858,1
    - Dst: strip_trailing_ws
      Src: /src/postgres/src/pl/plperl/plperl.c:858,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:858,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plperl/plperl.c:859,1
    - Dst: PLPERL_RESTORE_LOCALE
      Src: /src/postgres/src/pl/plperl/plperl.c:862,1
    - Dst: PLPERL_RESTORE_LOCALE
      Src: /src/postgres/src/pl/plperl/plperl.c:863,1
    - Dst: PLPERL_RESTORE_LOCALE
      Src: /src/postgres/src/pl/plperl/plperl.c:864,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
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 46
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 706
    functionDepth: 2
    functionLinenumber: 706
    functionLinenumberEnd: 871
    functionName: plperl_init_interp
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 2
    functionsReached:
    - errmsg
    - perl_alloc
    - perl_run
    - setlocale
    - PLPERL_RESTORE_LOCALE
    - errcontext
    - sv2cstr
    - pstrdup
    - ereport
    - pqsignal
    - elog
    - PERL_SYS_INIT3
    - perl_parse
    - PERL_SET_CONTEXT
    - perl_construct
    - errcode
    - strip_trailing_ws
    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: 760
      start: 756
    functionDepth: 0
    functionLinenumber: 756
    functionLinenumberEnd: 760
    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:892,1
    - Dst: hv_fetch
      Src: /src/postgres/src/pl/plperl/plperl.c:896,1
    - Dst: GvHVn
      Src: /src/postgres/src/pl/plperl/plperl.c:896,1
    - Dst: DIE
      Src: /src/postgres/src/pl/plperl/plperl.c:900,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 881
    functionDepth: 0
    functionLinenumber: 881
    functionLinenumberEnd: 911
    functionName: pp_require_safe
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - GvHVn
    - hv_fetch
    - DIE
    - SvPV
    linkageType: ''
    returnType: OP
    signature: 'OP *

      pp_require_safe(pTHX)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: JMPENV_PUSH
      Src: /src/postgres/src/pl/plperl/plperl.c:942,1
    - Dst: PERL_UNUSED_VAR
      Src: /src/postgres/src/pl/plperl/plperl.c:943,1
    - Dst: call_list
      Src: /src/postgres/src/pl/plperl/plperl.c:945,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - interp
    argTypes:
    - PerlInterpreter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 919
    functionDepth: 1
    functionLinenumber: 919
    functionLinenumberEnd: 953
    functionName: plperl_destroy_interp
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 1
    functionsReached:
    - PERL_UNUSED_VAR
    - call_list
    - JMPENV_PUSH
    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:971,1
    - Dst: SvTRUE
      Src: /src/postgres/src/pl/plperl/plperl.c:972,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:973,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:974,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:975,1
    - Dst: strip_trailing_ws
      Src: /src/postgres/src/pl/plperl/plperl.c:975,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:975,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plperl/plperl.c:976,1
    - Dst: eval_pv
      Src: /src/postgres/src/pl/plperl/plperl.c:983,1
    - Dst: SvTRUE
      Src: /src/postgres/src/pl/plperl/plperl.c:984,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:985,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:986,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:987,1
    - Dst: strip_trailing_ws
      Src: /src/postgres/src/pl/plperl/plperl.c:987,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:987,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plperl/plperl.c:988,1
    - Dst: gv_stashpv
      Src: /src/postgres/src/pl/plperl/plperl.c:1005,1
    - Dst: hv_iterinit
      Src: /src/postgres/src/pl/plperl/plperl.c:1006,1
    - Dst: hv_iternextsv
      Src: /src/postgres/src/pl/plperl/plperl.c:1007,1
    - Dst: isGV_with_GP
      Src: /src/postgres/src/pl/plperl/plperl.c:1009,1
    - Dst: GvCV
      Src: /src/postgres/src/pl/plperl/plperl.c:1009,1
    - Dst: SvREFCNT_dec
      Src: /src/postgres/src/pl/plperl/plperl.c:1011,1
    - Dst: GvCV
      Src: /src/postgres/src/pl/plperl/plperl.c:1011,1
    - Dst: GvCV_set
      Src: /src/postgres/src/pl/plperl/plperl.c:1012,1
    - Dst: hv_clear
      Src: /src/postgres/src/pl/plperl/plperl.c:1014,1
    - Dst: hv_clear
      Src: /src/postgres/src/pl/plperl/plperl.c:1018,1
    - Dst: eval_pv
      Src: /src/postgres/src/pl/plperl/plperl.c:1025,1
    - Dst: SvTRUE
      Src: /src/postgres/src/pl/plperl/plperl.c:1027,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1028,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1029,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1030,1
    - Dst: strip_trailing_ws
      Src: /src/postgres/src/pl/plperl/plperl.c:1030,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:1030,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plperl/plperl.c:1031,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 958
    functionDepth: 2
    functionLinenumber: 958
    functionLinenumberEnd: 1033
    functionName: plperl_trusted_init
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 1
    functionsReached:
    - errmsg
    - GvCV_set
    - SvTRUE
    - hv_clear
    - eval_pv
    - errcontext
    - GvCV
    - sv2cstr
    - ereport
    - SvREFCNT_dec
    - isGV_with_GP
    - hv_iternextsv
    - gv_stashpv
    - hv_iterinit
    - errcode
    - strip_trailing_ws
    linkageType: ''
    returnType: void
    signature: void plperl_trusted_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: eval_pv
      Src: /src/postgres/src/pl/plperl/plperl.c:1049,1
    - Dst: SvTRUE
      Src: /src/postgres/src/pl/plperl/plperl.c:1050,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1051,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1052,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1053,1
    - Dst: strip_trailing_ws
      Src: /src/postgres/src/pl/plperl/plperl.c:1053,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:1053,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/plperl/plperl.c:1054,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 1039
    functionDepth: 2
    functionLinenumber: 1039
    functionLinenumberEnd: 1056
    functionName: plperl_untrusted_init
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 1
    functionsReached:
    - errmsg
    - SvTRUE
    - eval_pv
    - errcontext
    - sv2cstr
    - ereport
    - errcode
    - strip_trailing_ws
    linkageType: ''
    returnType: void
    signature: void plperl_untrusted_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plperl/plperl.c:1065,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plperl/plperl.c:1066,1
    - Dst: isspace
      Src: /src/postgres/src/pl/plperl/plperl.c:1068,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - msg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1071
      start: 1062
    functionDepth: 0
    functionLinenumber: 1062
    functionLinenumberEnd: 1071
    functionName: strip_trailing_ws
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 4
    functionsReached:
    - isspace
    - strlen
    - pstrdup
    linkageType: ''
    returnType: char
    signature: 'char *

      strip_trailing_ws(const char *msg)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/pl/plperl/plperl.c:1085,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plperl/plperl.c:1086,1
    - Dst: memset
      Src: /src/postgres/src/pl/plperl/plperl.c:1087,1
    - Dst: hv_iterinit
      Src: /src/postgres/src/pl/plperl/plperl.c:1089,1
    - Dst: hv_iternext
      Src: /src/postgres/src/pl/plperl/plperl.c:1090,1
    - Dst: HeVAL
      Src: /src/postgres/src/pl/plperl/plperl.c:1092,1
    - Dst: hek2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:1093,1
    - Dst: SPI_fnumber
      Src: /src/postgres/src/pl/plperl/plperl.c:1094,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plperl/plperl.c:1095,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1098,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1099,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1100,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1103,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1104,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1105,1
    - Dst: plperl_sv_to_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:1108,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:1116,1
    - Dst: hv_iterinit
      Src: /src/postgres/src/pl/plperl/plperl.c:1118,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/pl/plperl/plperl.c:1120,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:1121,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:1122,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - perlhash
    - td
    argTypes:
    - HV*
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1124
      start: 1076
    functionDepth: 3
    functionLinenumber: 1076
    functionLinenumberEnd: 1124
    functionName: plperl_build_tuple_result
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - hek2cstr
    - hv_iternext
    - heap_form_tuple
    - palloc
    - memset
    - TupleDescAttr
    - plperl_sv_to_datum
    - palloc0
    - HeVAL
    - ereport
    - SPI_fnumber
    - hv_iterinit
    - errcode
    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:1130,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:1130,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:1132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - src
    - td
    argTypes:
    - SV*
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1133
      start: 1127
    functionDepth: 4
    functionLinenumber: 1127
    functionLinenumberEnd: 1133
    functionName: plperl_hash_to_datum
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - SvRV
    - HeapTupleGetDatum
    - plperl_build_tuple_result
    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:1144,1
    - Dst: SvROK
      Src: /src/postgres/src/pl/plperl/plperl.c:1144,1
    - Dst: SvTYPE
      Src: /src/postgres/src/pl/plperl/plperl.c:1146,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:1146,1
    - Dst: sv_isa
      Src: /src/postgres/src/pl/plperl/plperl.c:1148,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:1150,1
    - Dst: hv_fetch_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1151,1
    - Dst: SvOK
      Src: /src/postgres/src/pl/plperl/plperl.c:1153,1
    - Dst: SvROK
      Src: /src/postgres/src/pl/plperl/plperl.c:1153,1
    - Dst: SvTYPE
      Src: /src/postgres/src/pl/plperl/plperl.c:1154,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:1154,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:1157,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 1
    argNames:
    - sv
    argTypes:
    - SV*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1161
      start: 1139
    functionDepth: 1
    functionLinenumber: 1139
    functionLinenumberEnd: 1161
    functionName: get_perl_array_ref
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - SvRV
    - SvTYPE
    - hv_fetch_string
    - SvOK
    - elog
    - SvROK
    - sv_isa
    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:1179,1
    - Dst: av_fetch
      Src: /src/postgres/src/pl/plperl/plperl.c:1184,1
    - Dst: get_perl_array_ref
      Src: /src/postgres/src/pl/plperl/plperl.c:1187,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:1192,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1199,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1200,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1201,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1204,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1205,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1206,1
    - Dst: av_len
      Src: /src/postgres/src/pl/plperl/plperl.c:1209,1
    - Dst: av_len
      Src: /src/postgres/src/pl/plperl/plperl.c:1213,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1214,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1215,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1216,1
    - Dst: array_to_datum_internal
      Src: /src/postgres/src/pl/plperl/plperl.c:1219,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1231,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1232,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1233,1
    - Dst: plperl_sv_to_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:1235,1
    - Dst: initArrayResult
      Src: /src/postgres/src/pl/plperl/plperl.c:1245,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/pl/plperl/plperl.c:1249,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: 1253
      start: 1171
    functionDepth: 2
    functionLinenumber: 1171
    functionLinenumberEnd: 1253
    functionName: array_to_datum_internal
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 1
    functionsReached:
    - SvRV
    - errmsg
    - av_fetch
    - array_to_datum_internal
    - plperl_sv_to_datum
    - ereport
    - get_perl_array_ref
    - accumArrayResult
    - initArrayResult
    - av_len
    - errcode
    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:1262,1
    - Dst: get_element_type
      Src: /src/postgres/src/pl/plperl/plperl.c:1272,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1274,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1275,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1276,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plperl/plperl.c:1277,1
    - Dst: _sv_to_datum_finfo
      Src: /src/postgres/src/pl/plperl/plperl.c:1279,1
    - Dst: memset
      Src: /src/postgres/src/pl/plperl/plperl.c:1281,1
    - Dst: av_len
      Src: /src/postgres/src/pl/plperl/plperl.c:1282,1
    - Dst: array_to_datum_internal
      Src: /src/postgres/src/pl/plperl/plperl.c:1284,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:1291,1
    - Dst: construct_empty_array
      Src: /src/postgres/src/pl/plperl/plperl.c:1291,1
    - Dst: makeMdArrayResult
      Src: /src/postgres/src/pl/plperl/plperl.c:1296,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - src
    - typid
    - typmod
    argTypes:
    - SV*
    - Oid
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1298
      start: 1258
    functionDepth: 3
    functionLinenumber: 1258
    functionLinenumberEnd: 1298
    functionName: plperl_array_to_datum
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - SvRV
    - errmsg
    - _sv_to_datum_finfo
    - memset
    - array_to_datum_internal
    - format_type_be
    - ereport
    - PointerGetDatum
    - construct_empty_array
    - makeMdArrayResult
    - get_element_type
    - av_len
    - errcode
    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:1307,1
    - Dst: fmgr_info
      Src: /src/postgres/src/pl/plperl/plperl.c:1309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - typid
    - finfo
    - typioparam
    argTypes:
    - Oid
    - FmgrInfo*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1310
      start: 1301
    functionDepth: 1
    functionLinenumber: 1301
    functionLinenumberEnd: 1310
    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:1334,1
    - Dst: SvOK
      Src: /src/postgres/src/pl/plperl/plperl.c:1343,1
    - Dst: _sv_to_datum_finfo
      Src: /src/postgres/src/pl/plperl/plperl.c:1348,1
    - Dst: InputFunctionCall
      Src: /src/postgres/src/pl/plperl/plperl.c:1353,1
    - Dst: get_transform_tosql
      Src: /src/postgres/src/pl/plperl/plperl.c:1355,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/pl/plperl/plperl.c:1356,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:1356,1
    - Dst: SvROK
      Src: /src/postgres/src/pl/plperl/plperl.c:1357,1
    - Dst: get_perl_array_ref
      Src: /src/postgres/src/pl/plperl/plperl.c:1360,1
    - Dst: plperl_array_to_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:1365,1
    - Dst: SvTYPE
      Src: /src/postgres/src/pl/plperl/plperl.c:1367,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:1367,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/plperl/plperl.c:1374,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1375,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1376,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1377,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plperl/plperl.c:1378,1
    - Dst: lookup_rowtype_tupdesc_domain
      Src: /src/postgres/src/pl/plperl/plperl.c:1380,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/pl/plperl/plperl.c:1392,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1397,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1398,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1399,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plperl/plperl.c:1401,1
    - Dst: plperl_hash_to_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:1405,1
    - Dst: domain_check
      Src: /src/postgres/src/pl/plperl/plperl.c:1408,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/pl/plperl/plperl.c:1411,1
    - Dst: plperl_sv_to_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:1420,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:1420,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:1428,1
    - Dst: _sv_to_datum_finfo
      Src: /src/postgres/src/pl/plperl/plperl.c:1433,1
    - Dst: InputFunctionCall
      Src: /src/postgres/src/pl/plperl/plperl.c:1437,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:1438,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: 1442
      start: 1324
    functionDepth: 5
    functionLinenumber: 1324
    functionLinenumberEnd: 1442
    functionName: plperl_sv_to_datum
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 3
    functionsReached:
    - SvRV
    - sv2cstr
    - plperl_sv_to_datum
    - get_perl_array_ref
    - domain_check
    - SvROK
    - lookup_rowtype_tupdesc_domain
    - OidFunctionCall1
    - pfree
    - InputFunctionCall
    - get_call_result_type
    - errmsg
    - SvOK
    - get_transform_tosql
    - plperl_hash_to_datum
    - format_type_be
    - type_is_rowtype
    - check_stack_depth
    - ReleaseTupleDesc
    - _sv_to_datum_finfo
    - SvTYPE
    - Assert
    - ereport
    - PointerGetDatum
    - plperl_array_to_datum
    - errcode
    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:1454,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/pl/plperl/plperl.c:1456,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:1456,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plperl/plperl.c:1457,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1458,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1459,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1460,1
    - Dst: plperl_sv_to_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:1462,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/pl/plperl/plperl.c:1470,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/pl/plperl/plperl.c:1473,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - sv
    - fqtypename
    argTypes:
    - SV*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1474
      start: 1445
    functionDepth: 6
    functionLinenumber: 1445
    functionLinenumberEnd: 1474
    functionName: plperl_sv_to_literal
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - errmsg
    - check_spi_usage_allowed
    - getTypeOutputInfo
    - plperl_sv_to_datum
    - ereport
    - OidOutputFunctionCall
    - CStringGetDatum
    - OidIsValid
    - DirectFunctionCall1
    - errcode
    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:1485,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/pl/plperl/plperl.c:1486,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plperl/plperl.c:1505,1
    - Dst: get_type_io_data
      Src: /src/postgres/src/pl/plperl/plperl.c:1508,1
    - Dst: get_transform_fromsql
      Src: /src/postgres/src/pl/plperl/plperl.c:1513,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plperl/plperl.c:1518,1
    - Dst: fmgr_info
      Src: /src/postgres/src/pl/plperl/plperl.c:1519,1
    - Dst: fmgr_info
      Src: /src/postgres/src/pl/plperl/plperl.c:1521,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/plperl/plperl.c:1523,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/pl/plperl/plperl.c:1526,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/pl/plperl/plperl.c:1527,1
    - Dst: newRV_noinc
      Src: /src/postgres/src/pl/plperl/plperl.c:1532,1
    - Dst: newAV
      Src: /src/postgres/src/pl/plperl/plperl.c:1532,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/pl/plperl/plperl.c:1536,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plperl/plperl.c:1541,1
    - Dst: split_array
      Src: /src/postgres/src/pl/plperl/plperl.c:1546,1
    - Dst: newHV
      Src: /src/postgres/src/pl/plperl/plperl.c:1549,1
    - Dst: hv_store
      Src: /src/postgres/src/pl/plperl/plperl.c:1550,1
    - Dst: hv_store
      Src: /src/postgres/src/pl/plperl/plperl.c:1551,1
    - Dst: newSVuv
      Src: /src/postgres/src/pl/plperl/plperl.c:1551,1
    - Dst: sv_bless
      Src: /src/postgres/src/pl/plperl/plperl.c:1553,1
    - Dst: newRV_noinc
      Src: /src/postgres/src/pl/plperl/plperl.c:1553,1
    - Dst: gv_stashpv
      Src: /src/postgres/src/pl/plperl/plperl.c:1554,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 2
    argNames:
    - arg
    - typid
    argTypes:
    - Datum
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1555
      start: 1481
    functionDepth: 1
    functionLinenumber: 1481
    functionLinenumberEnd: 1555
    functionName: plperl_ref_from_pg_array
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - newRV_noinc
    - sv_bless
    - get_type_io_data
    - split_array
    - newHV
    - gv_stashpv
    - deconstruct_array
    - ARR_DIMS
    - DatumGetArrayTypeP
    - get_transform_fromsql
    - newAV
    - hv_store
    - fmgr_info
    - OidIsValid
    - palloc
    - type_is_rowtype
    - ARR_ELEMTYPE
    - newSVuv
    - ARR_NDIM
    - palloc0
    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:1568,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/pl/plperl/plperl.c:1571,1
    - Dst: make_array_ref
      Src: /src/postgres/src/pl/plperl/plperl.c:1577,1
    - Dst: newAV
      Src: /src/postgres/src/pl/plperl/plperl.c:1579,1
    - Dst: split_array
      Src: /src/postgres/src/pl/plperl/plperl.c:1583,1
    - Dst: av_push
      Src: /src/postgres/src/pl/plperl/plperl.c:1585,1
    - Dst: newRV_noinc
      Src: /src/postgres/src/pl/plperl/plperl.c:1587,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: 1588
      start: 1560
    functionDepth: 1
    functionLinenumber: 1560
    functionLinenumberEnd: 1588
    functionName: split_array
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 2
    functionsReached:
    - check_stack_depth
    - Assert
    - newRV_noinc
    - av_push
    - split_array
    - newAV
    - make_array_ref
    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:1599,1
    - Dst: av_push
      Src: /src/postgres/src/pl/plperl/plperl.c:1609,1
    - Dst: newSV
      Src: /src/postgres/src/pl/plperl/plperl.c:1609,1
    - Dst: av_push
      Src: /src/postgres/src/pl/plperl/plperl.c:1616,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plperl/plperl.c:1616,1
    - Dst: FunctionCall1
      Src: /src/postgres/src/pl/plperl/plperl.c:1616,1
    - Dst: av_push
      Src: /src/postgres/src/pl/plperl/plperl.c:1619,1
    - Dst: plperl_hash_from_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:1619,1
    - Dst: OutputFunctionCall
      Src: /src/postgres/src/pl/plperl/plperl.c:1622,1
    - Dst: av_push
      Src: /src/postgres/src/pl/plperl/plperl.c:1624,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:1624,1
    - Dst: newRV_noinc
      Src: /src/postgres/src/pl/plperl/plperl.c:1628,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - info
    - first
    - last
    argTypes:
    - plperl_array_info*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1629
      start: 1594
    functionDepth: 2
    functionLinenumber: 1594
    functionLinenumberEnd: 1629
    functionName: make_array_ref
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 1
    functionsReached:
    - plperl_hash_from_datum
    - newRV_noinc
    - FunctionCall1
    - OutputFunctionCall
    - av_push
    - newSV
    - cstr2sv
    - DatumGetPointer
    - newAV
    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:1645,1
    - Dst: hv_ksplit
      Src: /src/postgres/src/pl/plperl/plperl.c:1646,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/pl/plperl/plperl.c:1651,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/pl/plperl/plperl.c:1651,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:1652,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1654,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:1654,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1655,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:1655,1
    - Dst: TRIGGER_FIRED_BY_INSERT
      Src: /src/postgres/src/pl/plperl/plperl.c:1662,1
    - Dst: TRIGGER_FIRED_FOR_ROW
      Src: /src/postgres/src/pl/plperl/plperl.c:1665,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1666,1
    - Dst: plperl_hash_from_tuple
      Src: /src/postgres/src/pl/plperl/plperl.c:1667,1
    - Dst: TRIGGER_FIRED_BEFORE
      Src: /src/postgres/src/pl/plperl/plperl.c:1669,1
    - Dst: TRIGGER_FIRED_BY_DELETE
      Src: /src/postgres/src/pl/plperl/plperl.c:1671,1
    - Dst: TRIGGER_FIRED_FOR_ROW
      Src: /src/postgres/src/pl/plperl/plperl.c:1674,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1675,1
    - Dst: plperl_hash_from_tuple
      Src: /src/postgres/src/pl/plperl/plperl.c:1676,1
    - Dst: TRIGGER_FIRED_BY_UPDATE
      Src: /src/postgres/src/pl/plperl/plperl.c:1680,1
    - Dst: TRIGGER_FIRED_FOR_ROW
      Src: /src/postgres/src/pl/plperl/plperl.c:1683,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1685,1
    - Dst: plperl_hash_from_tuple
      Src: /src/postgres/src/pl/plperl/plperl.c:1686,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: TRIGGER_FIRED_BEFORE
      Src: /src/postgres/src/pl/plperl/plperl.c:1692,1
    - Dst: TRIGGER_FIRED_BY_TRUNCATE
      Src: /src/postgres/src/pl/plperl/plperl.c:1695,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1700,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:1700,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1701,1
    - Dst: newSViv
      Src: /src/postgres/src/pl/plperl/plperl.c:1701,1
    - Dst: newAV
      Src: /src/postgres/src/pl/plperl/plperl.c:1705,1
    - Dst: av_extend
      Src: /src/postgres/src/pl/plperl/plperl.c:1707,1
    - Dst: av_push
      Src: /src/postgres/src/pl/plperl/plperl.c:1709,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:1709,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1710,1
    - Dst: newRV_noinc
      Src: /src/postgres/src/pl/plperl/plperl.c:1710,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1713,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:1714,1
    - Dst: SPI_getrelname
      Src: /src/postgres/src/pl/plperl/plperl.c:1714,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1716,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:1717,1
    - Dst: SPI_getrelname
      Src: /src/postgres/src/pl/plperl/plperl.c:1717,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1719,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:1720,1
    - Dst: SPI_getnspname
      Src: /src/postgres/src/pl/plperl/plperl.c:1720,1
    - Dst: TRIGGER_FIRED_BEFORE
      Src: /src/postgres/src/pl/plperl/plperl.c:1722,1
    - Dst: TRIGGER_FIRED_AFTER
      Src: /src/postgres/src/pl/plperl/plperl.c:1724,1
    - Dst: TRIGGER_FIRED_INSTEAD
      Src: /src/postgres/src/pl/plperl/plperl.c:1726,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1730,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:1730,1
    - Dst: TRIGGER_FIRED_FOR_ROW
      Src: /src/postgres/src/pl/plperl/plperl.c:1732,1
    - Dst: TRIGGER_FIRED_FOR_STATEMENT
      Src: /src/postgres/src/pl/plperl/plperl.c:1734,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1738,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:1738,1
    - Dst: newRV_noinc
      Src: /src/postgres/src/pl/plperl/plperl.c:1740,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 55
    argCount: 1
    argNames:
    - fcinfo
    argTypes:
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1741
      start: 1632
    functionDepth: 2
    functionLinenumber: 1632
    functionLinenumberEnd: 1741
    functionName: plperl_trigger_build_args
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - newRV_noinc
    - TRIGGER_FIRED_BY_UPDATE
    - newHV
    - DirectFunctionCall1
    - TRIGGER_FIRED_BY_TRUNCATE
    - av_extend
    - TRIGGER_FIRED_AFTER
    - hv_ksplit
    - DatumGetCString
    - TRIGGER_FIRED_BEFORE
    - TRIGGER_FIRED_BY_DELETE
    - hv_store_string
    - newAV
    - TRIGGER_FIRED_INSTEAD
    - SPI_getnspname
    - av_push
    - TRIGGER_FIRED_BY_INSERT
    - newSViv
    - TRIGGER_FIRED_FOR_STATEMENT
    - ObjectIdGetDatum
    - TRIGGER_FIRED_FOR_ROW
    - SPI_getrelname
    - cstr2sv
    - plperl_hash_from_tuple
    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:1752,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1756,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:1756,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:1757,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:1757,1
    - Dst: GetCommandTagName
      Src: /src/postgres/src/pl/plperl/plperl.c:1757,1
    - Dst: newRV_noinc
      Src: /src/postgres/src/pl/plperl/plperl.c:1759,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - fcinfo
    argTypes:
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1760
      start: 1745
    functionDepth: 2
    functionLinenumber: 1745
    functionLinenumberEnd: 1760
    functionName: plperl_event_trigger_build_args
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - newRV_noinc
    - GetCommandTagName
    - hv_store_string
    - newHV
    - cstr2sv
    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:1777,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1779,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1780,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1781,1
    - Dst: SvOK
      Src: /src/postgres/src/pl/plperl/plperl.c:1782,1
    - Dst: SvROK
      Src: /src/postgres/src/pl/plperl/plperl.c:1782,1
    - Dst: SvTYPE
      Src: /src/postgres/src/pl/plperl/plperl.c:1782,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:1782,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: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:1786,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plperl/plperl.c:1791,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plperl/plperl.c:1792,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plperl/plperl.c:1793,1
    - Dst: hv_iterinit
      Src: /src/postgres/src/pl/plperl/plperl.c:1795,1
    - Dst: hv_iternext
      Src: /src/postgres/src/pl/plperl/plperl.c:1796,1
    - Dst: hek2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:1798,1
    - Dst: HeVAL
      Src: /src/postgres/src/pl/plperl/plperl.c:1799,1
    - Dst: SPI_fnumber
      Src: /src/postgres/src/pl/plperl/plperl.c:1800,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plperl/plperl.c:1801,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1804,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1805,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1806,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1809,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1810,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1811,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:1814,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:1815,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:1816,1
    - Dst: plperl_sv_to_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:1819,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:1828,1
    - Dst: hv_iterinit
      Src: /src/postgres/src/pl/plperl/plperl.c:1830,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/pl/plperl/plperl.c:1832,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:1834,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:1835,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:1836,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 3
    argNames:
    - hvTD
    - tdata
    - otup
    argTypes:
    - HV*
    - TriggerData*
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1839
      start: 1763
    functionDepth: 6
    functionLinenumber: 1763
    functionLinenumberEnd: 1839
    functionName: plperl_modify_tuple
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - errmsg
    - SvRV
    - SvTYPE
    - hv_iternext
    - hek2cstr
    - pfree
    - hv_fetch_string
    - SvOK
    - heap_modify_tuple
    - TupleDescAttr
    - plperl_sv_to_datum
    - ereport
    - palloc0
    - HeVAL
    - SvROK
    - SPI_fnumber
    - hv_iterinit
    - errcode
    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:1862,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:1865,1
    - Dst: CALLED_AS_TRIGGER
      Src: /src/postgres/src/pl/plperl/plperl.c:1868,1
    - Dst: plperl_trigger_handler
      Src: /src/postgres/src/pl/plperl/plperl.c:1869,1
    - Dst: CALLED_AS_EVENT_TRIGGER
      Src: /src/postgres/src/pl/plperl/plperl.c:1870,1
    - Dst: plperl_event_trigger_handler
      Src: /src/postgres/src/pl/plperl/plperl.c:1872,1
    - Dst: plperl_func_handler
      Src: /src/postgres/src/pl/plperl/plperl.c:1876,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/pl/plperl/plperl.c:1878,1
    - Dst: activate_interpreter
      Src: /src/postgres/src/pl/plperl/plperl.c:1881,1
    - Dst: decrement_prodesc_refcount
      Src: /src/postgres/src/pl/plperl/plperl.c:1883,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:1885,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1888
      start: 1853
    functionDepth: 2
    functionLinenumber: 1853
    functionLinenumberEnd: 1888
    functionName: plperl_call_handler
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - CALLED_AS_TRIGGER
    - PG_END_TRY
    - PG_TRY
    - CALLED_AS_EVENT_TRIGGER
    - plperl_func_handler
    - plperl_trigger_handler
    - activate_interpreter
    - MemSet
    - plperl_event_trigger_handler
    - decrement_prodesc_refcount
    - PG_FINALLY
    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:1898,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/pl/plperl/plperl.c:1899,1
    - Dst: MemSet
      Src: /src/postgres/src/pl/plperl/plperl.c:1908,1
    - Dst: MemSet
      Src: /src/postgres/src/pl/plperl/plperl.c:1921,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/pl/plperl/plperl.c:1921,1
    - Dst: MemSet
      Src: /src/postgres/src/pl/plperl/plperl.c:1922,1
    - Dst: MemSet
      Src: /src/postgres/src/pl/plperl/plperl.c:1923,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:1946,1
    - Dst: SPI_connect_ext
      Src: /src/postgres/src/pl/plperl/plperl.c:1952,1
    - Dst: select_perl_context
      Src: /src/postgres/src/pl/plperl/plperl.c:1954,1
    - Dst: plperl_create_sub
      Src: /src/postgres/src/pl/plperl/plperl.c:1956,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:1959,1
    - Dst: plperl_call_perl_func
      Src: /src/postgres/src/pl/plperl/plperl.c:1961,1
    - Dst: SvREFCNT_dec_current
      Src: /src/postgres/src/pl/plperl/plperl.c:1963,1
    - Dst: SPI_finish
      Src: /src/postgres/src/pl/plperl/plperl.c:1965,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:1966,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/pl/plperl/plperl.c:1968,1
    - Dst: SvREFCNT_dec_current
      Src: /src/postgres/src/pl/plperl/plperl.c:1971,1
    - Dst: activate_interpreter
      Src: /src/postgres/src/pl/plperl/plperl.c:1973,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:1975,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/pl/plperl/plperl.c:1979,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1980
      start: 1895
    functionDepth: 3
    functionLinenumber: 1895
    functionLinenumberEnd: 1980
    functionName: plperl_inline_handler
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - select_perl_context
    - LOCAL_FCINFO
    - PG_END_TRY
    - SizeForFunctionCallInfo
    - PG_TRY
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - plperl_call_perl_func
    - activate_interpreter
    - plperl_create_sub
    - MemSet
    - elog
    - SvREFCNT_dec_current
    - SPI_finish
    - PG_FINALLY
    - SPI_connect_ext
    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:1992,1
    - Dst: CheckFunctionValidatorAccess
      Src: /src/postgres/src/pl/plperl/plperl.c:2004,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/pl/plperl/plperl.c:2005,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/plperl/plperl.c:2008,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:2008,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plperl/plperl.c:2009,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:2010,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/plperl/plperl.c:2011,1
    - Dst: get_typtype
      Src: /src/postgres/src/pl/plperl/plperl.c:2013,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2025,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2026,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2027,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plperl/plperl.c:2028,1
    - Dst: get_func_arg_info
      Src: /src/postgres/src/pl/plperl/plperl.c:2032,1
    - Dst: get_typtype
      Src: /src/postgres/src/pl/plperl/plperl.c:2036,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2038,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2039,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2040,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plperl/plperl.c:2041,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plperl/plperl.c:2044,1
    - Dst: compile_plperl_function
      Src: /src/postgres/src/pl/plperl/plperl.c:2049,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/pl/plperl/plperl.c:2053,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2054
      start: 1989
    functionDepth: 1
    functionLinenumber: 1989
    functionLinenumberEnd: 2054
    functionName: plperl_validator
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - ReleaseSysCache
    - HeapTupleIsValid
    - PG_RETURN_VOID
    - format_type_be
    - compile_plperl_function
    - GETSTRUCT
    - ereport
    - SearchSysCache1
    - PG_GETARG_OID
    - elog
    - get_typtype
    - CheckFunctionValidatorAccess
    - get_func_arg_info
    - 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:2070,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2071
      start: 2067
    functionDepth: 3
    functionLinenumber: 2067
    functionLinenumberEnd: 2071
    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:2078,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2079
      start: 2075
    functionDepth: 4
    functionLinenumber: 2075
    functionLinenumberEnd: 2079
    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:2087,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2088
      start: 2083
    functionDepth: 2
    functionLinenumber: 2083
    functionLinenumberEnd: 2088
    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:2101,1
    - Dst: sprintf
      Src: /src/postgres/src/pl/plperl/plperl.c:2105,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:2108,1
    - Dst: newAV
      Src: /src/postgres/src/pl/plperl/plperl.c:2108,1
    - Dst: PUSHMARK
      Src: /src/postgres/src/pl/plperl/plperl.c:2112,1
    - Dst: EXTEND
      Src: /src/postgres/src/pl/plperl/plperl.c:2113,1
    - Dst: PUSHs
      Src: /src/postgres/src/pl/plperl/plperl.c:2114,1
    - Dst: sv_2mortal
      Src: /src/postgres/src/pl/plperl/plperl.c:2114,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:2114,1
    - Dst: PUSHs
      Src: /src/postgres/src/pl/plperl/plperl.c:2115,1
    - Dst: sv_2mortal
      Src: /src/postgres/src/pl/plperl/plperl.c:2115,1
    - Dst: newRV_noinc
      Src: /src/postgres/src/pl/plperl/plperl.c:2115,1
    - Dst: PUSHs
      Src: /src/postgres/src/pl/plperl/plperl.c:2122,1
    - Dst: PUSHs
      Src: /src/postgres/src/pl/plperl/plperl.c:2123,1
    - Dst: sv_2mortal
      Src: /src/postgres/src/pl/plperl/plperl.c:2123,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:2123,1
    - Dst: call_pv
      Src: /src/postgres/src/pl/plperl/plperl.c:2131,1
    - Dst: SvROK
      Src: /src/postgres/src/pl/plperl/plperl.c:2139,1
    - Dst: SvTYPE
      Src: /src/postgres/src/pl/plperl/plperl.c:2139,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:2139,1
    - Dst: newRV_inc
      Src: /src/postgres/src/pl/plperl/plperl.c:2141,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:2141,1
    - Dst: SvTRUE
      Src: /src/postgres/src/pl/plperl/plperl.c:2149,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2150,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2151,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2152,1
    - Dst: strip_trailing_ws
      Src: /src/postgres/src/pl/plperl/plperl.c:2152,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:2152,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2155,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2156,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2157,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: 2161
      start: 2095
    functionDepth: 2
    functionLinenumber: 2095
    functionLinenumberEnd: 2161
    functionName: plperl_create_sub
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 1
    functionsReached:
    - SvRV
    - newRV_noinc
    - call_pv
    - EXTEND
    - sv2cstr
    - PUSHMARK
    - SvROK
    - newHV
    - sprintf
    - strip_trailing_ws
    - PUSHs
    - hv_store_string
    - newAV
    - errmsg
    - sv_2mortal
    - SvTYPE
    - SvTRUE
    - newRV_inc
    - ereport
    - cstr2sv
    - errcode
    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:2173,1
    - Dst: newXS
      Src: /src/postgres/src/pl/plperl/plperl.c:2174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2177
      start: 2168
    functionDepth: 0
    functionLinenumber: 2168
    functionLinenumberEnd: 2177
    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:2194,1
    - Dst: EXTEND
      Src: /src/postgres/src/pl/plperl/plperl.c:2195,1
    - Dst: get_func_signature
      Src: /src/postgres/src/pl/plperl/plperl.c:2199,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plperl/plperl.c:2200,1
    - Dst: PUSHs
      Src: /src/postgres/src/pl/plperl/plperl.c:2205,1
    - Dst: plperl_hash_from_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:2208,1
    - Dst: PUSHs
      Src: /src/postgres/src/pl/plperl/plperl.c:2210,1
    - Dst: sv_2mortal
      Src: /src/postgres/src/pl/plperl/plperl.c:2210,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plperl/plperl.c:2217,1
    - Dst: plperl_ref_from_pg_array
      Src: /src/postgres/src/pl/plperl/plperl.c:2218,1
    - Dst: get_transform_fromsql
      Src: /src/postgres/src/pl/plperl/plperl.c:2219,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plperl/plperl.c:2220,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/pl/plperl/plperl.c:2220,1
    - Dst: OutputFunctionCall
      Src: /src/postgres/src/pl/plperl/plperl.c:2225,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:2227,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:2228,1
    - Dst: PUSHs
      Src: /src/postgres/src/pl/plperl/plperl.c:2231,1
    - Dst: sv_2mortal
      Src: /src/postgres/src/pl/plperl/plperl.c:2231,1
    - Dst: call_sv
      Src: /src/postgres/src/pl/plperl/plperl.c:2237,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2246,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2247,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2248,1
    - Dst: SvTRUE
      Src: /src/postgres/src/pl/plperl/plperl.c:2251,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2258,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2259,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2260,1
    - Dst: strip_trailing_ws
      Src: /src/postgres/src/pl/plperl/plperl.c:2260,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:2260,1
    - Dst: newSVsv
      Src: /src/postgres/src/pl/plperl/plperl.c:2263,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 48
    argCount: 2
    argNames:
    - desc
    - fcinfo
    argTypes:
    - plperl_proc_desc*
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2270
      start: 2180
    functionDepth: 2
    functionLinenumber: 2180
    functionLinenumberEnd: 2270
    functionName: plperl_call_perl_func
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 1
    functionsReached:
    - plperl_hash_from_datum
    - sv2cstr
    - EXTEND
    - PUSHMARK
    - strip_trailing_ws
    - OidFunctionCall1
    - pfree
    - PUSHs
    - OutputFunctionCall
    - get_transform_fromsql
    - DatumGetPointer
    - errmsg
    - newSVsv
    - OidIsValid
    - call_sv
    - sv_2mortal
    - Assert
    - SvTRUE
    - plperl_ref_from_pg_array
    - ereport
    - get_func_signature
    - cstr2sv
    - errcode
    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:2288,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2290,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2291,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2292,1
    - Dst: save_item
      Src: /src/postgres/src/pl/plperl/plperl.c:2294,1
    - Dst: sv_setsv
      Src: /src/postgres/src/pl/plperl/plperl.c:2295,1
    - Dst: PUSHMARK
      Src: /src/postgres/src/pl/plperl/plperl.c:2297,1
    - Dst: EXTEND
      Src: /src/postgres/src/pl/plperl/plperl.c:2298,1
    - Dst: PUSHs
      Src: /src/postgres/src/pl/plperl/plperl.c:2301,1
    - Dst: sv_2mortal
      Src: /src/postgres/src/pl/plperl/plperl.c:2301,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:2301,1
    - Dst: call_sv
      Src: /src/postgres/src/pl/plperl/plperl.c:2305,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2314,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2315,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2316,1
    - Dst: SvTRUE
      Src: /src/postgres/src/pl/plperl/plperl.c:2319,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2326,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2327,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2328,1
    - Dst: strip_trailing_ws
      Src: /src/postgres/src/pl/plperl/plperl.c:2328,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:2328,1
    - Dst: newSVsv
      Src: /src/postgres/src/pl/plperl/plperl.c:2331,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 35
    argCount: 3
    argNames:
    - desc
    - fcinfo
    - td
    argTypes:
    - plperl_proc_desc*
    - FunctionCallInfo
    - SV*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2338
      start: 2273
    functionDepth: 2
    functionLinenumber: 2273
    functionLinenumberEnd: 2338
    functionName: plperl_call_perl_trigger_func
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - errmsg
    - newSVsv
    - SvTRUE
    - get_sv
    - sv_setsv
    - save_item
    - PUSHs
    - sv2cstr
    - EXTEND
    - ereport
    - PUSHMARK
    - call_sv
    - sv_2mortal
    - cstr2sv
    - errcode
    - strip_trailing_ws
    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:2355,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2357,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2358,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2359,1
    - Dst: save_item
      Src: /src/postgres/src/pl/plperl/plperl.c:2361,1
    - Dst: sv_setsv
      Src: /src/postgres/src/pl/plperl/plperl.c:2362,1
    - Dst: PUSHMARK
      Src: /src/postgres/src/pl/plperl/plperl.c:2364,1
    - Dst: call_sv
      Src: /src/postgres/src/pl/plperl/plperl.c:2368,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2377,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2378,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2379,1
    - Dst: SvTRUE
      Src: /src/postgres/src/pl/plperl/plperl.c:2382,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2389,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2390,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2391,1
    - Dst: strip_trailing_ws
      Src: /src/postgres/src/pl/plperl/plperl.c:2391,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:2391,1
    - Dst: newSVsv
      Src: /src/postgres/src/pl/plperl/plperl.c:2394,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 32
    argCount: 3
    argNames:
    - desc
    - fcinfo
    - td
    argTypes:
    - plperl_proc_desc*
    - FunctionCallInfo
    - SV*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2400
      start: 2341
    functionDepth: 2
    functionLinenumber: 2341
    functionLinenumberEnd: 2400
    functionName: plperl_call_perl_event_trigger_func
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - errmsg
    - newSVsv
    - SvTRUE
    - get_sv
    - sv_setsv
    - save_item
    - sv2cstr
    - ereport
    - PUSHMARK
    - call_sv
    - errcode
    - strip_trailing_ws
    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:2413,1
    - Dst: castNode
      Src: /src/postgres/src/pl/plperl/plperl.c:2414,1
    - Dst: SPI_connect_ext
      Src: /src/postgres/src/pl/plperl/plperl.c:2416,1
    - Dst: compile_plperl_function
      Src: /src/postgres/src/pl/plperl/plperl.c:2418,1
    - Dst: increment_prodesc_refcount
      Src: /src/postgres/src/pl/plperl/plperl.c:2420,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plperl/plperl.c:2433,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2434,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2435,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2436,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2439,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2440,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2441,1
    - Dst: activate_interpreter
      Src: /src/postgres/src/pl/plperl/plperl.c:2444,1
    - Dst: plperl_call_perl_func
      Src: /src/postgres/src/pl/plperl/plperl.c:2446,1
    - Dst: SPI_finish
      Src: /src/postgres/src/pl/plperl/plperl.c:2454,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:2455,1
    - Dst: get_perl_array_ref
      Src: /src/postgres/src/pl/plperl/plperl.c:2467,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:2473,1
    - Dst: av_fetch
      Src: /src/postgres/src/pl/plperl/plperl.c:2475,1
    - Dst: plperl_return_next_internal
      Src: /src/postgres/src/pl/plperl/plperl.c:2477,1
    - Dst: SvOK
      Src: /src/postgres/src/pl/plperl/plperl.c:2481,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2483,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2484,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2485,1
    - Dst: plperl_sv_to_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:2499,1
    - Dst: IsA
      Src: /src/postgres/src/pl/plperl/plperl.c:2507,1
    - Dst: SvREFCNT_dec_current
      Src: /src/postgres/src/pl/plperl/plperl.c:2514,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2517
      start: 2402
    functionDepth: 6
    functionLinenumber: 2402
    functionLinenumberEnd: 2517
    functionName: plperl_func_handler
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 1
    functionsReached:
    - SvRV
    - av_fetch
    - plperl_sv_to_datum
    - get_perl_array_ref
    - castNode
    - compile_plperl_function
    - plperl_call_perl_func
    - activate_interpreter
    - SvREFCNT_dec_current
    - errmsg
    - SvOK
    - IsA
    - elog
    - ereport
    - increment_prodesc_refcount
    - plperl_return_next_internal
    - SPI_finish
    - SPI_connect_ext
    - errcode
    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:2533,1
    - Dst: SPI_register_trigger_data
      Src: /src/postgres/src/pl/plperl/plperl.c:2537,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plperl/plperl.c:2538,1
    - Dst: compile_plperl_function
      Src: /src/postgres/src/pl/plperl/plperl.c:2541,1
    - Dst: increment_prodesc_refcount
      Src: /src/postgres/src/pl/plperl/plperl.c:2543,1
    - Dst: activate_interpreter
      Src: /src/postgres/src/pl/plperl/plperl.c:2551,1
    - Dst: plperl_trigger_build_args
      Src: /src/postgres/src/pl/plperl/plperl.c:2553,1
    - Dst: plperl_call_perl_trigger_func
      Src: /src/postgres/src/pl/plperl/plperl.c:2554,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:2555,1
    - Dst: SPI_finish
      Src: /src/postgres/src/pl/plperl/plperl.c:2563,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:2564,1
    - Dst: SvOK
      Src: /src/postgres/src/pl/plperl/plperl.c:2566,1
    - Dst: TRIGGER_FIRED_BY_INSERT
      Src: /src/postgres/src/pl/plperl/plperl.c:2571,1
    - Dst: TRIGGER_FIRED_BY_UPDATE
      Src: /src/postgres/src/pl/plperl/plperl.c:2573,1
    - Dst: TRIGGER_FIRED_BY_DELETE
      Src: /src/postgres/src/pl/plperl/plperl.c:2575,1
    - Dst: TRIGGER_FIRED_BY_TRUNCATE
      Src: /src/postgres/src/pl/plperl/plperl.c:2577,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:2587,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/pl/plperl/plperl.c:2589,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/pl/plperl/plperl.c:2591,1
    - Dst: TRIGGER_FIRED_BY_INSERT
      Src: /src/postgres/src/pl/plperl/plperl.c:2595,1
    - Dst: plperl_modify_tuple
      Src: /src/postgres/src/pl/plperl/plperl.c:2596,1
    - Dst: TRIGGER_FIRED_BY_UPDATE
      Src: /src/postgres/src/pl/plperl/plperl.c:2598,1
    - Dst: plperl_modify_tuple
      Src: /src/postgres/src/pl/plperl/plperl.c:2599,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2603,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2604,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2605,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2611,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2612,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2613,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:2617,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:2618,1
    - Dst: SvREFCNT_dec_current
      Src: /src/postgres/src/pl/plperl/plperl.c:2624,1
    - Dst: SvREFCNT_dec_current
      Src: /src/postgres/src/pl/plperl/plperl.c:2626,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2629
      start: 2520
    functionDepth: 7
    functionLinenumber: 2520
    functionLinenumberEnd: 2629
    functionName: plperl_trigger_handler
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 1
    functionsReached:
    - SvRV
    - sv2cstr
    - plperl_modify_tuple
    - TRIGGER_FIRED_BY_UPDATE
    - TRIGGER_FIRED_BY_TRUNCATE
    - pfree
    - SPI_register_trigger_data
    - compile_plperl_function
    - TRIGGER_FIRED_BY_DELETE
    - activate_interpreter
    - SvREFCNT_dec_current
    - errmsg
    - SPI_connect
    - SvOK
    - plperl_call_perl_trigger_func
    - elog
    - TRIGGER_FIRED_BY_INSERT
    - pg_strcasecmp
    - Assert
    - plperl_trigger_build_args
    - ereport
    - increment_prodesc_refcount
    - PointerGetDatum
    - SPI_finish
    - errcode
    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:2640,1
    - Dst: compile_plperl_function
      Src: /src/postgres/src/pl/plperl/plperl.c:2643,1
    - Dst: increment_prodesc_refcount
      Src: /src/postgres/src/pl/plperl/plperl.c:2645,1
    - Dst: activate_interpreter
      Src: /src/postgres/src/pl/plperl/plperl.c:2653,1
    - Dst: plperl_event_trigger_build_args
      Src: /src/postgres/src/pl/plperl/plperl.c:2655,1
    - Dst: plperl_call_perl_event_trigger_func
      Src: /src/postgres/src/pl/plperl/plperl.c:2656,1
    - Dst: SPI_finish
      Src: /src/postgres/src/pl/plperl/plperl.c:2658,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:2659,1
    - Dst: SvREFCNT_dec_current
      Src: /src/postgres/src/pl/plperl/plperl.c:2664,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2665
      start: 2632
    functionDepth: 3
    functionLinenumber: 2632
    functionLinenumberEnd: 2665
    functionName: plperl_event_trigger_handler
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 1
    functionsReached:
    - SPI_connect
    - compile_plperl_function
    - increment_prodesc_refcount
    - activate_interpreter
    - elog
    - plperl_event_trigger_build_args
    - plperl_call_perl_event_trigger_func
    - SvREFCNT_dec_current
    - SPI_finish
    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:2681,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/pl/plperl/plperl.c:2682,1
    - Dst: decrement_prodesc_refcount
      Src: /src/postgres/src/pl/plperl/plperl.c:2690,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - proc_ptr
    - procTup
    argTypes:
    - plperl_proc_ptr*
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2694
      start: 2668
    functionDepth: 1
    functionLinenumber: 2668
    functionLinenumberEnd: 2694
    functionName: validate_plperl_function
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - decrement_prodesc_refcount
    - ItemPointerEquals
    - HeapTupleHeaderGetRawXmin
    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:2700,1
    - Dst: activate_interpreter
      Src: /src/postgres/src/pl/plperl/plperl.c:2706,1
    - Dst: SvREFCNT_dec_current
      Src: /src/postgres/src/pl/plperl/plperl.c:2707,1
    - Dst: activate_interpreter
      Src: /src/postgres/src/pl/plperl/plperl.c:2708,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/plperl/plperl.c:2711,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - prodesc
    argTypes:
    - plperl_proc_desc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2712
      start: 2697
    functionDepth: 2
    functionLinenumber: 2697
    functionLinenumberEnd: 2712
    functionName: free_plperl_function
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - activate_interpreter
    - Assert
    - MemoryContextDelete
    - SvREFCNT_dec_current
    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:2728,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:2728,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plperl/plperl.c:2729,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:2730,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/plperl/plperl.c:2731,1
    - Dst: GetUserId
      Src: /src/postgres/src/pl/plperl/plperl.c:2741,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plperl/plperl.c:2742,1
    - Dst: validate_plperl_function
      Src: /src/postgres/src/pl/plperl/plperl.c:2744,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plperl/plperl.c:2747,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plperl/plperl.c:2753,1
    - Dst: validate_plperl_function
      Src: /src/postgres/src/pl/plperl/plperl.c:2755,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plperl/plperl.c:2758,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/plperl/plperl.c:2773,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:2776,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plperl/plperl.c:2791,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:2799,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plperl/plperl.c:2800,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/plperl/plperl.c:2801,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/plperl/plperl.c:2801,1
    - Dst: MemoryContextSetIdentifier
      Src: /src/postgres/src/pl/plperl/plperl.c:2802,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/pl/plperl/plperl.c:2805,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plperl/plperl.c:2808,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plperl/plperl.c:2809,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plperl/plperl.c:2810,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:2811,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/pl/plperl/plperl.c:2818,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:2820,1
    - Dst: oid_array_to_list
      Src: /src/postgres/src/pl/plperl/plperl.c:2821,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:2822,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/plperl/plperl.c:2827,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:2828,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plperl/plperl.c:2829,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:2830,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/plperl/plperl.c:2832,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plperl/plperl.c:2835,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/plperl/plperl.c:2845,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:2845,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plperl/plperl.c:2846,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:2847,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/plperl/plperl.c:2848,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2858,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2859,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2860,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2863,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2864,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2865,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plperl/plperl.c:2866,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/plperl/plperl.c:2871,1
    - Dst: IsTrueArrayType
      Src: /src/postgres/src/pl/plperl/plperl.c:2872,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/pl/plperl/plperl.c:2874,1
    - Dst: getTypeIOParam
      Src: /src/postgres/src/pl/plperl/plperl.c:2877,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plperl/plperl.c:2879,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/plperl/plperl.c:2894,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:2894,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/plperl/plperl.c:2895,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:2896,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/plperl/plperl.c:2897,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:2902,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:2903,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:2904,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/plperl/plperl.c:2905,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/plperl/plperl.c:2907,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/pl/plperl/plperl.c:2912,1
    - Dst: IsTrueArrayType
      Src: /src/postgres/src/pl/plperl/plperl.c:2918,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plperl/plperl.c:2923,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/pl/plperl/plperl.c:2932,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/pl/plperl/plperl.c:2934,1
    - Dst: select_perl_context
      Src: /src/postgres/src/pl/plperl/plperl.c:2940,1
    - Dst: plperl_create_sub
      Src: /src/postgres/src/pl/plperl/plperl.c:2944,1
    - Dst: activate_interpreter
      Src: /src/postgres/src/pl/plperl/plperl.c:2946,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:2948,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:2951,1
    - Dst: GetUserId
      Src: /src/postgres/src/pl/plperl/plperl.c:2959,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plperl/plperl.c:2961,1
    - Dst: increment_prodesc_refcount
      Src: /src/postgres/src/pl/plperl/plperl.c:2965,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plperl/plperl.c:2967,1
    - Dst: free_plperl_function
      Src: /src/postgres/src/pl/plperl/plperl.c:2975,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/plperl/plperl.c:2977,1
    - Dst: activate_interpreter
      Src: /src/postgres/src/pl/plperl/plperl.c:2980,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/plperl/plperl.c:2982,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:2984,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/plperl/plperl.c:2989,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: 2992
      start: 2715
    functionDepth: 3
    functionLinenumber: 2715
    functionLinenumberEnd: 2992
    functionName: compile_plperl_function
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 4
    functionsReached:
    - MemoryContextSwitchTo
    - IsTrueArrayType
    - HeapTupleIsValid
    - SysCacheGetAttrNotNull
    - pstrdup
    - plperl_create_sub
    - SysCacheGetAttr
    - GetUserId
    - pfree
    - PG_RE_THROW
    - NameStr
    - MemoryContextDelete
    - ReleaseSysCache
    - GETSTRUCT
    - activate_interpreter
    - fmgr_info_cxt
    - errmsg
    - format_type_be
    - elog
    - HeapTupleHeaderGetRawXmin
    - ObjectIdGetDatum
    - type_is_rowtype
    - select_perl_context
    - PG_END_TRY
    - PG_TRY
    - oid_array_to_list
    - validate_plperl_function
    - TextDatumGetCString
    - PG_CATCH
    - free_plperl_function
    - palloc0
    - hash_search
    - SearchSysCache1
    - ereport
    - increment_prodesc_refcount
    - getTypeIOParam
    - AllocSetContextCreate
    - MemoryContextSetIdentifier
    - errcode
    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:3005,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/pl/plperl/plperl.c:3008,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/pl/plperl/plperl.c:3009,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/pl/plperl/plperl.c:3010,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/pl/plperl/plperl.c:3013,1
    - Dst: plperl_hash_from_tuple
      Src: /src/postgres/src/pl/plperl/plperl.c:3016,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/pl/plperl/plperl.c:3017,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - attr
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3020
      start: 2995
    functionDepth: 1
    functionLinenumber: 2995
    functionLinenumberEnd: 3020
    functionName: plperl_hash_from_datum
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 2
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - ReleaseTupleDesc
    - DatumGetHeapTupleHeader
    - lookup_rowtype_tupdesc
    - HeapTupleHeaderGetTypeId
    - HeapTupleHeaderGetTypMod
    - plperl_hash_from_tuple
    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:3031,1
    - Dst: newHV
      Src: /src/postgres/src/pl/plperl/plperl.c:3033,1
    - Dst: hv_ksplit
      Src: /src/postgres/src/pl/plperl/plperl.c:3034,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/plperl/plperl.c:3043,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/plperl/plperl.c:3058,1
    - Dst: heap_getattr
      Src: /src/postgres/src/pl/plperl/plperl.c:3059,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:3068,1
    - Dst: newSV
      Src: /src/postgres/src/pl/plperl/plperl.c:3068,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/plperl/plperl.c:3072,1
    - Dst: plperl_hash_from_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:3074,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:3076,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plperl/plperl.c:3083,1
    - Dst: get_base_element_type
      Src: /src/postgres/src/pl/plperl/plperl.c:3083,1
    - Dst: plperl_ref_from_pg_array
      Src: /src/postgres/src/pl/plperl/plperl.c:3084,1
    - Dst: get_transform_fromsql
      Src: /src/postgres/src/pl/plperl/plperl.c:3085,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/pl/plperl/plperl.c:3086,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/pl/plperl/plperl.c:3086,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/pl/plperl/plperl.c:3092,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/pl/plperl/plperl.c:3094,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:3095,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:3096,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:3099,1
    - Dst: newRV_noinc
      Src: /src/postgres/src/pl/plperl/plperl.c:3102,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 36
    argCount: 3
    argNames:
    - tuple
    - tupdesc
    - include_generated
    argTypes:
    - HeapTuple
    - TupleDesc
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3103
      start: 3023
    functionDepth: 2
    functionLinenumber: 3023
    functionLinenumberEnd: 3103
    functionName: plperl_hash_from_tuple
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 2
    functionsReached:
    - plperl_hash_from_datum
    - newRV_noinc
    - getTypeOutputInfo
    - OidOutputFunctionCall
    - newHV
    - OidFunctionCall1
    - pfree
    - NameStr
    - heap_getattr
    - hv_ksplit
    - hv_store_string
    - newSV
    - get_transform_fromsql
    - DatumGetPointer
    - get_base_element_type
    - TupleDescAttr
    - OidIsValid
    - type_is_rowtype
    - check_stack_depth
    - plperl_ref_from_pg_array
    - cstr2sv
    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:3113,1
    - Dst: croak
      Src: /src/postgres/src/pl/plperl/plperl.c:3128,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3130
      start: 3106
    functionDepth: 0
    functionLinenumber: 3106
    functionLinenumberEnd: 3130
    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:3145,1
    - Dst: BeginInternalSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3147,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3149,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3151,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plperl/plperl.c:3155,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plperl/plperl.c:3155,1
    - Dst: SPI_execute
      Src: /src/postgres/src/pl/plperl/plperl.c:3157,1
    - Dst: plperl_spi_execute_fetch_result
      Src: /src/postgres/src/pl/plperl/plperl.c:3159,1
    - Dst: ReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3163,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3164,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plperl/plperl.c:3167,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3172,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plperl/plperl.c:3173,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plperl/plperl.c:3174,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3177,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3178,1
    - Dst: croak_cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:3182,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 2
    argNames:
    - query
    - limit
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3190
      start: 3133
    functionDepth: 3
    functionLinenumber: 3133
    functionLinenumberEnd: 3190
    functionName: plperl_spi_exec
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - CopyErrorData
    - MemoryContextSwitchTo
    - PG_END_TRY
    - PG_TRY
    - check_spi_usage_allowed
    - plperl_spi_execute_fetch_result
    - FlushErrorState
    - PG_CATCH
    - BeginInternalSubTransaction
    - RollbackAndReleaseCurrentSubTransaction
    - croak_cstr
    - ReleaseCurrentSubTransaction
    - SPI_execute
    - pg_verifymbstr
    - strlen
    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:3200,1
    - Dst: newHV
      Src: /src/postgres/src/pl/plperl/plperl.c:3202,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:3204,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:3205,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plperl/plperl.c:3205,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:3206,1
    - Dst: newSVnv
      Src: /src/postgres/src/pl/plperl/plperl.c:3208,1
    - Dst: newSVuv
      Src: /src/postgres/src/pl/plperl/plperl.c:3209,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:3219,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:3220,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:3221,1
    - Dst: newAV
      Src: /src/postgres/src/pl/plperl/plperl.c:3223,1
    - Dst: av_extend
      Src: /src/postgres/src/pl/plperl/plperl.c:3224,1
    - Dst: plperl_hash_from_tuple
      Src: /src/postgres/src/pl/plperl/plperl.c:3227,1
    - Dst: av_push
      Src: /src/postgres/src/pl/plperl/plperl.c:3228,1
    - Dst: hv_store_string
      Src: /src/postgres/src/pl/plperl/plperl.c:3230,1
    - Dst: newRV_noinc
      Src: /src/postgres/src/pl/plperl/plperl.c:3231,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/plperl/plperl.c:3234,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - tuptable
    - processed
    - status
    argTypes:
    - SPITupleTable*
    - uint64
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3237
      start: 3193
    functionDepth: 3
    functionLinenumber: 3193
    functionLinenumberEnd: 3237
    functionName: plperl_spi_execute_fetch_result
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 1
    functionsReached:
    - errmsg
    - plperl_hash_from_tuple
    - newRV_noinc
    - av_extend
    - newSVuv
    - check_spi_usage_allowed
    - SPI_result_code_string
    - ereport
    - av_push
    - hv_store_string
    - SPI_freetuptable
    - newHV
    - cstr2sv
    - newSVnv
    - newAV
    - errcode
    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:3250,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3252,1
    - Dst: plperl_return_next_internal
      Src: /src/postgres/src/pl/plperl/plperl.c:3254,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plperl/plperl.c:3256,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3261,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plperl/plperl.c:3262,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plperl/plperl.c:3263,1
    - Dst: croak_cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:3266,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - sv
    argTypes:
    - SV*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3269
      start: 3245
    functionDepth: 3
    functionLinenumber: 3245
    functionLinenumberEnd: 3269
    functionName: plperl_return_next
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - CopyErrorData
    - MemoryContextSwitchTo
    - PG_END_TRY
    - PG_TRY
    - check_spi_usage_allowed
    - FlushErrorState
    - PG_CATCH
    - croak_cstr
    - 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:3291,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:3292,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:3293,1
    - Dst: Assert
      Src: /src/postgres/src/pl/plperl/plperl.c:3299,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/pl/plperl/plperl.c:3311,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:3314,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:3315,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:3316,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3327,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3334,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/pl/plperl/plperl.c:3336,1
    - Dst: tuplestore_begin_heap
      Src: /src/postgres/src/pl/plperl/plperl.c:3338,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3341,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plperl/plperl.c:3353,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3358,1
    - Dst: SvOK
      Src: /src/postgres/src/pl/plperl/plperl.c:3364,1
    - Dst: SvROK
      Src: /src/postgres/src/pl/plperl/plperl.c:3364,1
    - Dst: SvTYPE
      Src: /src/postgres/src/pl/plperl/plperl.c:3364,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:3364,1
    - Dst: ereport
      Src: /src/postgres/src/pl/plperl/plperl.c:3365,1
    - Dst: errcode
      Src: /src/postgres/src/pl/plperl/plperl.c:3366,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/plperl/plperl.c:3367,1
    - Dst: plperl_build_tuple_result
      Src: /src/postgres/src/pl/plperl/plperl.c:3370,1
    - Dst: SvRV
      Src: /src/postgres/src/pl/plperl/plperl.c:3370,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/plperl/plperl.c:3373,1
    - Dst: domain_check
      Src: /src/postgres/src/pl/plperl/plperl.c:3374,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/pl/plperl/plperl.c:3374,1
    - Dst: tuplestore_puttuple
      Src: /src/postgres/src/pl/plperl/plperl.c:3379,1
    - Dst: plperl_sv_to_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:3386,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/pl/plperl/plperl.c:3394,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3399,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/pl/plperl/plperl.c:3400,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 44
    argCount: 1
    argNames:
    - sv
    argTypes:
    - SV*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3401
      start: 3275
    functionDepth: 6
    functionLinenumber: 3275
    functionLinenumberEnd: 3401
    functionName: plperl_return_next_internal
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 2
    functionsReached:
    - SvRV
    - HeapTupleGetDatum
    - MemoryContextSwitchTo
    - CreateTupleDescCopy
    - MemoryContextReset
    - tuplestore_begin_heap
    - plperl_sv_to_datum
    - domain_check
    - SvROK
    - get_call_result_type
    - errmsg
    - tuplestore_putvalues
    - SvOK
    - plperl_build_tuple_result
    - elog
    - OidIsValid
    - Assert
    - SvTYPE
    - ereport
    - tuplestore_puttuple
    - AllocSetContextCreate
    - errcode
    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:3416,1
    - Dst: BeginInternalSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3418,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3420,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3422,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plperl/plperl.c:3428,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plperl/plperl.c:3428,1
    - Dst: SPI_prepare
      Src: /src/postgres/src/pl/plperl/plperl.c:3431,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3433,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plperl/plperl.c:3434,1
    - Dst: SPI_cursor_open
      Src: /src/postgres/src/pl/plperl/plperl.c:3436,1
    - Dst: SPI_freeplan
      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: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:3441,1
    - Dst: PinPortal
      Src: /src/postgres/src/pl/plperl/plperl.c:3443,1
    - Dst: ReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3446,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3447,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plperl/plperl.c:3450,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3455,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plperl/plperl.c:3456,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plperl/plperl.c:3457,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3460,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3461,1
    - Dst: croak_cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:3465,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3470,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 31
    argCount: 1
    argNames:
    - query
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3473
      start: 3404
    functionDepth: 3
    functionLinenumber: 3404
    functionLinenumberEnd: 3473
    functionName: plperl_spi_query
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - SPI_cursor_open
    - BeginInternalSubTransaction
    - SPI_prepare
    - PinPortal
    - strlen
    - check_spi_usage_allowed
    - RollbackAndReleaseCurrentSubTransaction
    - croak_cstr
    - CopyErrorData
    - elog
    - ReleaseCurrentSubTransaction
    - pg_verifymbstr
    - PG_END_TRY
    - PG_TRY
    - FlushErrorState
    - PG_CATCH
    - SPI_result_code_string
    - SPI_freeplan
    - cstr2sv
    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:3488,1
    - Dst: BeginInternalSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3490,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3492,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3494,1
    - Dst: SPI_cursor_find
      Src: /src/postgres/src/pl/plperl/plperl.c:3497,1
    - Dst: SPI_cursor_fetch
      Src: /src/postgres/src/pl/plperl/plperl.c:3505,1
    - Dst: UnpinPortal
      Src: /src/postgres/src/pl/plperl/plperl.c:3508,1
    - Dst: SPI_cursor_close
      Src: /src/postgres/src/pl/plperl/plperl.c:3509,1
    - Dst: plperl_hash_from_tuple
      Src: /src/postgres/src/pl/plperl/plperl.c:3514,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/plperl/plperl.c:3518,1
    - Dst: ReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3522,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3523,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plperl/plperl.c:3526,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3531,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plperl/plperl.c:3532,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plperl/plperl.c:3533,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3536,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3537,1
    - Dst: croak_cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:3541,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3546,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 35
    argCount: 1
    argNames:
    - cursor
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3549
      start: 3476
    functionDepth: 3
    functionLinenumber: 3476
    functionLinenumberEnd: 3549
    functionName: plperl_spi_fetchrow
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - CopyErrorData
    - MemoryContextSwitchTo
    - plperl_hash_from_tuple
    - PG_END_TRY
    - SPI_cursor_find
    - PG_TRY
    - check_spi_usage_allowed
    - SPI_cursor_close
    - FlushErrorState
    - PG_CATCH
    - BeginInternalSubTransaction
    - RollbackAndReleaseCurrentSubTransaction
    - croak_cstr
    - SPI_freetuptable
    - ReleaseCurrentSubTransaction
    - UnpinPortal
    - SPI_cursor_fetch
    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:3556,1
    - Dst: SPI_cursor_find
      Src: /src/postgres/src/pl/plperl/plperl.c:3558,1
    - Dst: UnpinPortal
      Src: /src/postgres/src/pl/plperl/plperl.c:3562,1
    - Dst: SPI_cursor_close
      Src: /src/postgres/src/pl/plperl/plperl.c:3563,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - cursor
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3565
      start: 3551
    functionDepth: 1
    functionLinenumber: 3551
    functionLinenumberEnd: 3565
    functionName: plperl_spi_cursor_close
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - SPI_cursor_close
    - SPI_cursor_find
    - UnpinPortal
    - check_spi_usage_allowed
    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:3580,1
    - Dst: BeginInternalSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3582,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3583,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3585,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/pl/plperl/plperl.c:3587,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plperl/plperl.c:3595,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3598,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/plperl/plperl.c:3599,1
    - Dst: snprintf
      Src: /src/postgres/src/pl/plperl/plperl.c:3600,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plperl/plperl.c:3603,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plperl/plperl.c:3604,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plperl/plperl.c:3605,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3606,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/plperl/plperl.c:3612,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3615,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:3630,1
    - Dst: parseTypeString
      Src: /src/postgres/src/pl/plperl/plperl.c:3631,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:3632,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/pl/plperl/plperl.c:3634,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/pl/plperl/plperl.c:3637,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/pl/plperl/plperl.c:3642,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plperl/plperl.c:3642,1
    - Dst: SPI_prepare
      Src: /src/postgres/src/pl/plperl/plperl.c:3647,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3650,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plperl/plperl.c:3651,1
    - Dst: SPI_keepplan
      Src: /src/postgres/src/pl/plperl/plperl.c:3657,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3658,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plperl/plperl.c:3664,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/plperl/plperl.c:3670,1
    - Dst: ReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3673,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3674,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plperl/plperl.c:3677,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3682,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plperl/plperl.c:3683,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plperl/plperl.c:3684,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plperl/plperl.c:3688,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/plperl/plperl.c:3692,1
    - Dst: SPI_freeplan
      Src: /src/postgres/src/pl/plperl/plperl.c:3694,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3697,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3698,1
    - Dst: croak_cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:3702,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3707,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:3712,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 59
    argCount: 3
    argNames:
    - query
    - argc
    - argv
    argTypes:
    - char*
    - int
    - SV**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3713
      start: 3567
    functionDepth: 3
    functionLinenumber: 3567
    functionLinenumberEnd: 3713
    functionName: plperl_spi_prepare
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - CHECK_FOR_INTERRUPTS
    - snprintf
    - sv2cstr
    - BeginInternalSubTransaction
    - SPI_prepare
    - strlen
    - pfree
    - MemoryContextDelete
    - check_spi_usage_allowed
    - RollbackAndReleaseCurrentSubTransaction
    - croak_cstr
    - SPI_keepplan
    - fmgr_info_cxt
    - CopyErrorData
    - parseTypeString
    - elog
    - ReleaseCurrentSubTransaction
    - palloc
    - getTypeInputInfo
    - cstr2sv
    - PG_END_TRY
    - PG_TRY
    - FlushErrorState
    - PG_CATCH
    - SPI_result_code_string
    - palloc0
    - hash_search
    - AllocSetContextCreate
    - SPI_freeplan
    - pg_verifymbstr
    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:3735,1
    - Dst: BeginInternalSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3737,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3739,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3741,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plperl/plperl.c:3748,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3751,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3755,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3758,1
    - Dst: hv_fetch_string
      Src: /src/postgres/src/pl/plperl/plperl.c:3767,1
    - Dst: SvIOK
      Src: /src/postgres/src/pl/plperl/plperl.c:3768,1
    - Dst: SvIV
      Src: /src/postgres/src/pl/plperl/plperl.c:3769,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plperl/plperl.c:3776,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plperl/plperl.c:3777,1
    - Dst: plperl_sv_to_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:3789,1
    - Dst: SPI_execute_plan
      Src: /src/postgres/src/pl/plperl/plperl.c:3802,1
    - Dst: plperl_spi_execute_fetch_result
      Src: /src/postgres/src/pl/plperl/plperl.c:3804,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:3808,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:3809,1
    - Dst: ReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3813,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3814,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plperl/plperl.c:3817,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3822,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plperl/plperl.c:3823,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plperl/plperl.c:3824,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3827,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3828,1
    - Dst: croak_cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:3832,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3837,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 53
    argCount: 4
    argNames:
    - query
    - attr
    - argc
    - argv
    argTypes:
    - char*
    - HV*
    - int
    - SV**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3840
      start: 3715
    functionDepth: 6
    functionLinenumber: 3715
    functionLinenumberEnd: 3840
    functionName: plperl_spi_exec_prepared
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - plperl_spi_execute_fetch_result
    - plperl_sv_to_datum
    - BeginInternalSubTransaction
    - SPI_execute_plan
    - pfree
    - check_spi_usage_allowed
    - hv_fetch_string
    - RollbackAndReleaseCurrentSubTransaction
    - croak_cstr
    - CopyErrorData
    - SvIOK
    - elog
    - ReleaseCurrentSubTransaction
    - palloc
    - PG_END_TRY
    - PG_TRY
    - FlushErrorState
    - PG_CATCH
    - hash_search
    - SvIV
    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:3860,1
    - Dst: BeginInternalSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3862,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3864,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3866,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plperl/plperl.c:3871,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3874,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3878,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3881,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plperl/plperl.c:3889,1
    - Dst: palloc
      Src: /src/postgres/src/pl/plperl/plperl.c:3890,1
    - Dst: plperl_sv_to_datum
      Src: /src/postgres/src/pl/plperl/plperl.c:3902,1
    - Dst: SPI_cursor_open
      Src: /src/postgres/src/pl/plperl/plperl.c:3915,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:3919,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:3920,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3923,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/plperl/plperl.c:3924,1
    - Dst: cstr2sv
      Src: /src/postgres/src/pl/plperl/plperl.c:3926,1
    - Dst: PinPortal
      Src: /src/postgres/src/pl/plperl/plperl.c:3928,1
    - Dst: ReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3931,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3932,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plperl/plperl.c:3935,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3940,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plperl/plperl.c:3941,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plperl/plperl.c:3942,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/plperl/plperl.c:3945,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:3946,1
    - Dst: croak_cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:3950,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3955,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 49
    argCount: 3
    argNames:
    - query
    - argc
    - argv
    argTypes:
    - char*
    - int
    - SV**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3958
      start: 3842
    functionDepth: 6
    functionLinenumber: 3842
    functionLinenumberEnd: 3958
    functionName: plperl_spi_query_prepared
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - SPI_cursor_open
    - plperl_sv_to_datum
    - BeginInternalSubTransaction
    - PinPortal
    - pfree
    - check_spi_usage_allowed
    - RollbackAndReleaseCurrentSubTransaction
    - croak_cstr
    - CopyErrorData
    - elog
    - ReleaseCurrentSubTransaction
    - palloc
    - PG_END_TRY
    - PG_TRY
    - FlushErrorState
    - PG_CATCH
    - SPI_result_code_string
    - hash_search
    - cstr2sv
    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:3967,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plperl/plperl.c:3969,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3972,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:3976,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/plperl/plperl.c:3983,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/plperl/plperl.c:3986,1
    - Dst: SPI_freeplan
      Src: /src/postgres/src/pl/plperl/plperl.c:3988,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - query
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3989
      start: 3960
    functionDepth: 1
    functionLinenumber: 3960
    functionLinenumberEnd: 3989
    functionName: plperl_spi_freeplan
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - MemoryContextDelete
    - check_spi_usage_allowed
    - hash_search
    - elog
    - SPI_freeplan
    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:3996,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:3998,1
    - Dst: SPI_commit
      Src: /src/postgres/src/pl/plperl/plperl.c:4000,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plperl/plperl.c:4002,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:4007,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plperl/plperl.c:4008,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plperl/plperl.c:4009,1
    - Dst: croak_cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:4012,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:4014,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4015
      start: 3991
    functionDepth: 3
    functionLinenumber: 3991
    functionLinenumberEnd: 4015
    functionName: plperl_spi_commit
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - CopyErrorData
    - MemoryContextSwitchTo
    - PG_END_TRY
    - PG_TRY
    - check_spi_usage_allowed
    - FlushErrorState
    - PG_CATCH
    - croak_cstr
    - SPI_commit
    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:4022,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:4024,1
    - Dst: SPI_rollback
      Src: /src/postgres/src/pl/plperl/plperl.c:4026,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plperl/plperl.c:4028,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:4033,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plperl/plperl.c:4034,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plperl/plperl.c:4035,1
    - Dst: croak_cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:4038,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:4040,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4041
      start: 4017
    functionDepth: 3
    functionLinenumber: 4017
    functionLinenumberEnd: 4041
    functionName: plperl_spi_rollback
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - CopyErrorData
    - MemoryContextSwitchTo
    - PG_END_TRY
    - PG_TRY
    - check_spi_usage_allowed
    - FlushErrorState
    - PG_CATCH
    - croak_cstr
    - SPI_rollback
    linkageType: ''
    returnType: void
    signature: void plperl_spi_rollback(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:4065,1
    - Dst: sv2cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:4067,1
    - Dst: elog
      Src: /src/postgres/src/pl/plperl/plperl.c:4068,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:4069,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/plperl/plperl.c:4071,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/plperl/plperl.c:4076,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/plperl/plperl.c:4077,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/plperl/plperl.c:4078,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:4081,1
    - Dst: croak_cstr
      Src: /src/postgres/src/pl/plperl/plperl.c:4084,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/plperl/plperl.c:4086,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - level
    - msg
    argTypes:
    - int
    - SV*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4087
      start: 4054
    functionDepth: 3
    functionLinenumber: 4054
    functionLinenumberEnd: 4087
    functionName: plperl_util_elog
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - pfree
    - CopyErrorData
    - MemoryContextSwitchTo
    - PG_END_TRY
    - PG_TRY
    - FlushErrorState
    - PG_CATCH
    - sv2cstr
    - croak_cstr
    - elog
    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:4101,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plperl/plperl.c:4101,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plperl/plperl.c:4107,1
    - Dst: hv_store
      Src: /src/postgres/src/pl/plperl/plperl.c:4108,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:4111,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4114
      start: 4093
    functionDepth: 1
    functionLinenumber: 4093
    functionLinenumberEnd: 4114
    functionName: hv_store_string
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 5
    functionsReached:
    - hv_store
    - pfree
    - strlen
    - pg_server_to_any
    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:4128,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plperl/plperl.c:4128,1
    - Dst: strlen
      Src: /src/postgres/src/pl/plperl/plperl.c:4131,1
    - Dst: hv_fetch
      Src: /src/postgres/src/pl/plperl/plperl.c:4132,1
    - Dst: pfree
      Src: /src/postgres/src/pl/plperl/plperl.c:4135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4138
      start: 4120
    functionDepth: 1
    functionLinenumber: 4120
    functionLinenumberEnd: 4138
    functionName: hv_fetch_string
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 3
    functionsReached:
    - pfree
    - hv_fetch
    - strlen
    - pg_server_to_any
    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:4149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4150
      start: 4143
    functionDepth: 0
    functionLinenumber: 4143
    functionLinenumberEnd: 4150
    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:4161,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4162
      start: 4155
    functionDepth: 0
    functionLinenumber: 4155
    functionLinenumberEnd: 4162
    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:4170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4171
      start: 4167
    functionDepth: 0
    functionLinenumber: 4167
    functionLinenumberEnd: 4171
    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:4185,1
    - Dst: setlocale
      Src: /src/postgres/src/pl/plperl/plperl.c:4200,1
    - Dst: new_ctype
      Src: /src/postgres/src/pl/plperl/plperl.c:4204,1
    - Dst: setlocale
      Src: /src/postgres/src/pl/plperl/plperl.c:4218,1
    - Dst: new_collate
      Src: /src/postgres/src/pl/plperl/plperl.c:4222,1
    - Dst: setlocale
      Src: /src/postgres/src/pl/plperl/plperl.c:4237,1
    - Dst: new_numeric
      Src: /src/postgres/src/pl/plperl/plperl.c:4241,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 2
    argNames:
    - category
    - locale
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4247
      start: 4181
    functionDepth: 1
    functionLinenumber: 4181
    functionLinenumberEnd: 4247
    functionName: setlocale_perl
    functionSourceFile: /src/postgres/src/pl/plperl/plperl.c
    functionUses: 0
    functionsReached:
    - new_collate
    - new_numeric
    - new_ctype
    - setlocale
    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: 599
    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: 255
    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: 50
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 50
    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:83,1
    - Dst: strlen
      Src: /src/postgres/src/pl/tcl/pltcl.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - src
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 84
    functionName: utf_u2e
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 1
    functionsReached:
    - pg_any_to_server
    - strlen
    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:89,1
    - Dst: strlen
      Src: /src/postgres/src/pl/tcl/pltcl.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - src
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 90
    functionName: utf_e2u
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 2
    functionsReached:
    - strlen
    - pg_server_to_any
    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: 104
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 104
    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: 107
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 107
    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: 359
      start: 353
    functionDepth: 0
    functionLinenumber: 353
    functionLinenumberEnd: 359
    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: 364
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 364
    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: 369
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 369
    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: 374
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 374
    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: 380
      start: 376
    functionDepth: 0
    functionLinenumber: 376
    functionLinenumberEnd: 380
    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: 385
      start: 382
    functionDepth: 0
    functionLinenumber: 382
    functionLinenumberEnd: 385
    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: 390
      start: 387
    functionDepth: 0
    functionLinenumber: 387
    functionLinenumberEnd: 390
    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: 396
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 396
    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:417,1
    - Dst: Tcl_FindExecutable
      Src: /src/postgres/src/pl/tcl/pltcl.c:421,1
    - Dst: Tcl_SetNotifier
      Src: /src/postgres/src/pl/tcl/pltcl.c:435,1
    - Dst: Tcl_CreateInterp
      Src: /src/postgres/src/pl/tcl/pltcl.c:441,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:442,1
    - Dst: Tcl_Init
      Src: /src/postgres/src/pl/tcl/pltcl.c:443,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:444,1
    - Dst: hash_create
      Src: /src/postgres/src/pl/tcl/pltcl.c:451,1
    - Dst: hash_create
      Src: /src/postgres/src/pl/tcl/pltcl.c:461,1
    - Dst: DefineCustomStringVariable
      Src: /src/postgres/src/pl/tcl/pltcl.c:469,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/tcl/pltcl.c:470,1
    - Dst: DefineCustomStringVariable
      Src: /src/postgres/src/pl/tcl/pltcl.c:476,1
    - Dst: gettext_noop
      Src: /src/postgres/src/pl/tcl/pltcl.c:477,1
    - Dst: MarkGUCPrefixReserved
      Src: /src/postgres/src/pl/tcl/pltcl.c:484,1
    - Dst: MarkGUCPrefixReserved
      Src: /src/postgres/src/pl/tcl/pltcl.c:485,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 407
    functionDepth: 1
    functionLinenumber: 407
    functionLinenumberEnd: 488
    functionName: _PG_init
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - Tcl_SetNotifier
    - hash_create
    - Tcl_CreateInterp
    - Tcl_FindExecutable
    - elog
    - MarkGUCPrefixReserved
    - DefineCustomStringVariable
    - gettext_noop
    - Tcl_Init
    - pg_bindtextdomain
    linkageType: ''
    returnType: void
    signature: void _PG_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/pl/tcl/pltcl.c:504,1
    - Dst: Tcl_CreateSlave
      Src: /src/postgres/src/pl/tcl/pltcl.c:505,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:507,1
    - Dst: Tcl_InitHashTable
      Src: /src/postgres/src/pl/tcl/pltcl.c:512,1
    - Dst: Tcl_CreateObjCommand
      Src: /src/postgres/src/pl/tcl/pltcl.c:517,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: PG_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:547,1
    - Dst: call_pltcl_start_proc
      Src: /src/postgres/src/pl/tcl/pltcl.c:550,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/tcl/pltcl.c:552,1
    - Dst: Tcl_DeleteInterp
      Src: /src/postgres/src/pl/tcl/pltcl.c:555,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/tcl/pltcl.c:556,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:558,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: 559
      start: 493
    functionDepth: 1
    functionLinenumber: 493
    functionLinenumberEnd: 559
    functionName: pltcl_init_interp
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - call_pltcl_start_proc
    - PG_RE_THROW
    - PG_END_TRY
    - Tcl_CreateObjCommand
    - PG_TRY
    - snprintf
    - Tcl_CreateSlave
    - PG_CATCH
    - elog
    - Tcl_InitHashTable
    - Tcl_DeleteInterp
    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:575,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/tcl/pltcl.c:579,1
    - Dst: pltcl_init_interp
      Src: /src/postgres/src/pl/tcl/pltcl.c:587,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - prolang
    - pltrusted
    argTypes:
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 566
    functionDepth: 2
    functionLinenumber: 566
    functionLinenumberEnd: 590
    functionName: pltcl_fetch_interp
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - pltcl_init_interp
    - GetUserId
    - hash_search
    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:599,1
    - Dst: unconstify
      Src: /src/postgres/src/pl/tcl/pltcl.c:621,1
    - Dst: stringToQualifiedNameList
      Src: /src/postgres/src/pl/tcl/pltcl.c:626,1
    - Dst: LookupFuncName
      Src: /src/postgres/src/pl/tcl/pltcl.c:627,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/pl/tcl/pltcl.c:630,1
    - Dst: GetUserId
      Src: /src/postgres/src/pl/tcl/pltcl.c:630,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/pl/tcl/pltcl.c:632,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/tcl/pltcl.c:635,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/tcl/pltcl.c:635,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/tcl/pltcl.c:636,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:637,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/tcl/pltcl.c:638,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:642,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:643,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:644,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:653,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:654,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:655,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/tcl/pltcl.c:659,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/pl/tcl/pltcl.c:667,1
    - Dst: fmgr_info
      Src: /src/postgres/src/pl/tcl/pltcl.c:668,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/pl/tcl/pltcl.c:669,1
    - Dst: pgstat_init_function_usage
      Src: /src/postgres/src/pl/tcl/pltcl.c:672,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/pl/tcl/pltcl.c:673,1
    - Dst: pgstat_end_function_usage
      Src: /src/postgres/src/pl/tcl/pltcl.c:674,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 2
    argNames:
    - prolang
    - pltrusted
    argTypes:
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 596
    functionDepth: 1
    functionLinenumber: 596
    functionLinenumberEnd: 678
    functionName: call_pltcl_start_proc
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 1
    functionsReached:
    - HeapTupleIsValid
    - unconstify
    - InvokeFunctionExecuteHook
    - GetUserId
    - object_aclcheck
    - LOCAL_FCINFO
    - pgstat_end_function_usage
    - ReleaseSysCache
    - GETSTRUCT
    - LookupFuncName
    - stringToQualifiedNameList
    - FunctionCallInvoke
    - errmsg
    - InitFunctionCallInfoData
    - pgstat_init_function_usage
    - aclcheck_error
    - fmgr_info
    - elog
    - ObjectIdGetDatum
    - ereport
    - SearchSysCache1
    - errcode
    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:689,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 683
    functionDepth: 0
    functionLinenumber: 683
    functionLinenumberEnd: 690
    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:706,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 703
    functionDepth: 1
    functionLinenumber: 703
    functionLinenumberEnd: 707
    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:718,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 715
    functionDepth: 1
    functionLinenumber: 715
    functionLinenumberEnd: 719
    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:742,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:750,1
    - Dst: CALLED_AS_TRIGGER
      Src: /src/postgres/src/pl/tcl/pltcl.c:756,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/pl/tcl/pltcl.c:759,1
    - Dst: pltcl_trigger_handler
      Src: /src/postgres/src/pl/tcl/pltcl.c:759,1
    - Dst: CALLED_AS_EVENT_TRIGGER
      Src: /src/postgres/src/pl/tcl/pltcl.c:763,1
    - Dst: pltcl_event_trigger_handler
      Src: /src/postgres/src/pl/tcl/pltcl.c:766,1
    - Dst: pltcl_func_handler
      Src: /src/postgres/src/pl/tcl/pltcl.c:773,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/pl/tcl/pltcl.c:776,1
    - Dst: Assert
      Src: /src/postgres/src/pl/tcl/pltcl.c:786,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/tcl/pltcl.c:788,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:791,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 1
    argNames:
    - pltrusted
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 794
      start: 726
    functionDepth: 1
    functionLinenumber: 726
    functionLinenumberEnd: 794
    functionName: pltcl_handler
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 2
    functionsReached:
    - CALLED_AS_TRIGGER
    - pltcl_event_trigger_handler
    - Assert
    - MemoryContextDelete
    - PG_END_TRY
    - PG_TRY
    - memset
    - CALLED_AS_EVENT_TRIGGER
    - pltcl_func_handler
    - PointerGetDatum
    - pltcl_trigger_handler
    - PG_FINALLY
    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:813,1
    - Dst: castNode
      Src: /src/postgres/src/pl/tcl/pltcl.c:814,1
    - Dst: SPI_connect_ext
      Src: /src/postgres/src/pl/tcl/pltcl.c:817,1
    - Dst: compile_pltcl_function
      Src: /src/postgres/src/pl/tcl/pltcl.c:820,1
    - Dst: IsA
      Src: /src/postgres/src/pl/tcl/pltcl.c:838,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:839,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:840,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:841,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:844,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:845,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:846,1
    - Dst: Tcl_NewObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:857,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:858,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:859,1
    - Dst: Tcl_IncrRefCount
      Src: /src/postgres/src/pl/tcl/pltcl.c:862,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:867,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:877,1
    - Dst: Tcl_NewObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:877,1
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/pl/tcl/pltcl.c:887,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/pl/tcl/pltcl.c:889,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/pl/tcl/pltcl.c:890,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/pl/tcl/pltcl.c:891,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/pl/tcl/pltcl.c:893,1
    - Dst: pltcl_build_tuple_argument
      Src: /src/postgres/src/pl/tcl/pltcl.c:896,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:897,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/pl/tcl/pltcl.c:899,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:909,1
    - Dst: Tcl_NewObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:909,1
    - Dst: OutputFunctionCall
      Src: /src/postgres/src/pl/tcl/pltcl.c:914,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:917,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:918,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:918,1
    - Dst: pfree
      Src: /src/postgres/src/pl/tcl/pltcl.c:920,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/tcl/pltcl.c:925,1
    - Dst: Tcl_DecrRefCount
      Src: /src/postgres/src/pl/tcl/pltcl.c:928,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/tcl/pltcl.c:929,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:931,1
    - Dst: Tcl_EvalObjEx
      Src: /src/postgres/src/pl/tcl/pltcl.c:938,1
    - Dst: Tcl_DecrRefCount
      Src: /src/postgres/src/pl/tcl/pltcl.c:941,1
    - Dst: throw_tcl_error
      Src: /src/postgres/src/pl/tcl/pltcl.c:947,1
    - Dst: SPI_finish
      Src: /src/postgres/src/pl/tcl/pltcl.c:958,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:959,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:976,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/pl/tcl/pltcl.c:977,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:978,1
    - Dst: InputFunctionCall
      Src: /src/postgres/src/pl/tcl/pltcl.c:986,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/pl/tcl/pltcl.c:1007,1
    - Dst: Assert
      Src: /src/postgres/src/pl/tcl/pltcl.c:1013,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:1017,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:1018,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:1019,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:1024,1
    - Dst: Assert
      Src: /src/postgres/src/pl/tcl/pltcl.c:1028,1
    - Dst: Assert
      Src: /src/postgres/src/pl/tcl/pltcl.c:1029,1
    - Dst: TupleDescGetAttInMetadata
      Src: /src/postgres/src/pl/tcl/pltcl.c:1031,1
    - Dst: Tcl_GetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:1034,1
    - Dst: Tcl_ListObjGetElements
      Src: /src/postgres/src/pl/tcl/pltcl.c:1035,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:1036,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:1037,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:1038,1
    - Dst: utf_u2e
      Src: /src/postgres/src/pl/tcl/pltcl.c:1039,1
    - Dst: Tcl_GetStringResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:1039,1
    - Dst: pltcl_build_tuple_result
      Src: /src/postgres/src/pl/tcl/pltcl.c:1041,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/pl/tcl/pltcl.c:1043,1
    - Dst: InputFunctionCall
      Src: /src/postgres/src/pl/tcl/pltcl.c:1046,1
    - Dst: utf_u2e
      Src: /src/postgres/src/pl/tcl/pltcl.c:1047,1
    - Dst: Tcl_GetStringResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:1047,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 99
    argCount: 2
    argNames:
    - call_state
    - pltrusted
    argTypes:
    - pltcl_call_state*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1052
      start: 800
    functionDepth: 1
    functionLinenumber: 800
    functionLinenumberEnd: 1052
    functionName: pltcl_func_handler
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 1
    functionsReached:
    - HeapTupleGetDatum
    - MemoryContextSwitchTo
    - Tcl_DecrRefCount
    - pltcl_build_tuple_argument
    - CreateTupleDescCopy
    - Tcl_EvalObjEx
    - castNode
    - utf_u2e
    - HeapTupleHeaderGetTypMod
    - Tcl_IncrRefCount
    - HeapTupleHeaderGetDatumLength
    - pfree
    - PG_RE_THROW
    - InputFunctionCall
    - OutputFunctionCall
    - pltcl_build_tuple_result
    - Tcl_NewObj
    - get_call_result_type
    - Tcl_ListObjGetElements
    - UTF_E2U
    - Tcl_GetStringResult
    - errmsg
    - TupleDescGetAttInMetadata
    - DatumGetHeapTupleHeader
    - compile_pltcl_function
    - Tcl_NewStringObj
    - Tcl_GetObjResult
    - IsA
    - lookup_rowtype_tupdesc
    - elog
    - throw_tcl_error
    - Tcl_ListObjAppendElement
    - ReleaseTupleDesc
    - Assert
    - PG_END_TRY
    - PG_TRY
    - PG_CATCH
    - ereport
    - HeapTupleHeaderGetTypeId
    - SPI_finish
    - SPI_connect_ext
    - errcode
    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:1080,1
    - Dst: SPI_register_trigger_data
      Src: /src/postgres/src/pl/tcl/pltcl.c:1083,1
    - Dst: Assert
      Src: /src/postgres/src/pl/tcl/pltcl.c:1084,1
    - Dst: compile_pltcl_function
      Src: /src/postgres/src/pl/tcl/pltcl.c:1087,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/pl/tcl/pltcl.c:1088,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/pl/tcl/pltcl.c:1097,1
    - Dst: Tcl_NewObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1103,1
    - Dst: Tcl_IncrRefCount
      Src: /src/postgres/src/pl/tcl/pltcl.c:1104,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:1106,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1109,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1110,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1113,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1114,1
    - Dst: utf_e2u
      Src: /src/postgres/src/pl/tcl/pltcl.c:1114,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/pl/tcl/pltcl.c:1118,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/pl/tcl/pltcl.c:1118,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/tcl/pltcl.c:1119,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1120,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1121,1
    - Dst: pfree
      Src: /src/postgres/src/pl/tcl/pltcl.c:1122,1
    - Dst: SPI_getrelname
      Src: /src/postgres/src/pl/tcl/pltcl.c:1125,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1126,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1127,1
    - Dst: utf_e2u
      Src: /src/postgres/src/pl/tcl/pltcl.c:1127,1
    - Dst: pfree
      Src: /src/postgres/src/pl/tcl/pltcl.c:1128,1
    - Dst: SPI_getnspname
      Src: /src/postgres/src/pl/tcl/pltcl.c:1131,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1132,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1133,1
    - Dst: utf_e2u
      Src: /src/postgres/src/pl/tcl/pltcl.c:1133,1
    - Dst: pfree
      Src: /src/postgres/src/pl/tcl/pltcl.c:1134,1
    - Dst: Tcl_NewObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1137,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1138,1
    - Dst: Tcl_NewObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1138,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/tcl/pltcl.c:1141,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1144,1
    - Dst: Tcl_NewObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1144,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1146,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1147,1
    - Dst: utf_e2u
      Src: /src/postgres/src/pl/tcl/pltcl.c:1147,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/tcl/pltcl.c:1147,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1149,1
    - Dst: TRIGGER_FIRED_BEFORE
      Src: /src/postgres/src/pl/tcl/pltcl.c:1152,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1153,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1154,1
    - Dst: TRIGGER_FIRED_AFTER
      Src: /src/postgres/src/pl/tcl/pltcl.c:1155,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1156,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1157,1
    - Dst: TRIGGER_FIRED_INSTEAD
      Src: /src/postgres/src/pl/tcl/pltcl.c:1158,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1159,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1160,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:1162,1
    - Dst: TRIGGER_FIRED_FOR_ROW
      Src: /src/postgres/src/pl/tcl/pltcl.c:1165,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1167,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1168,1
    - Dst: TRIGGER_FIRED_BY_INSERT
      Src: /src/postgres/src/pl/tcl/pltcl.c:1177,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1179,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1180,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1182,1
    - Dst: pltcl_build_tuple_argument
      Src: /src/postgres/src/pl/tcl/pltcl.c:1183,1
    - Dst: TRIGGER_FIRED_BEFORE
      Src: /src/postgres/src/pl/tcl/pltcl.c:1185,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1186,1
    - Dst: Tcl_NewObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1186,1
    - Dst: TRIGGER_FIRED_BY_DELETE
      Src: /src/postgres/src/pl/tcl/pltcl.c:1190,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1192,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1193,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1195,1
    - Dst: Tcl_NewObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1195,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1196,1
    - Dst: pltcl_build_tuple_argument
      Src: /src/postgres/src/pl/tcl/pltcl.c:1197,1
    - Dst: TRIGGER_FIRED_BY_UPDATE
      Src: /src/postgres/src/pl/tcl/pltcl.c:1203,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1205,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1206,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1208,1
    - Dst: pltcl_build_tuple_argument
      Src: /src/postgres/src/pl/tcl/pltcl.c:1209,1
    - Dst: TRIGGER_FIRED_BEFORE
      Src: /src/postgres/src/pl/tcl/pltcl.c:1211,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1212,1
    - Dst: pltcl_build_tuple_argument
      Src: /src/postgres/src/pl/tcl/pltcl.c:1213,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:1220,1
    - Dst: TRIGGER_FIRED_FOR_STATEMENT
      Src: /src/postgres/src/pl/tcl/pltcl.c:1222,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1224,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1225,1
    - Dst: TRIGGER_FIRED_BY_INSERT
      Src: /src/postgres/src/pl/tcl/pltcl.c:1227,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1228,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1229,1
    - Dst: TRIGGER_FIRED_BY_DELETE
      Src: /src/postgres/src/pl/tcl/pltcl.c:1230,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1231,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1232,1
    - Dst: TRIGGER_FIRED_BY_UPDATE
      Src: /src/postgres/src/pl/tcl/pltcl.c:1233,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1234,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1235,1
    - Dst: TRIGGER_FIRED_BY_TRUNCATE
      Src: /src/postgres/src/pl/tcl/pltcl.c:1236,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1237,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1238,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:1240,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1242,1
    - Dst: Tcl_NewObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1242,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1243,1
    - Dst: Tcl_NewObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1243,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:1248,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1252,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1253,1
    - Dst: utf_e2u
      Src: /src/postgres/src/pl/tcl/pltcl.c:1253,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/tcl/pltcl.c:1255,1
    - Dst: Tcl_DecrRefCount
      Src: /src/postgres/src/pl/tcl/pltcl.c:1257,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/tcl/pltcl.c:1258,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:1260,1
    - Dst: Tcl_EvalObjEx
      Src: /src/postgres/src/pl/tcl/pltcl.c:1267,1
    - Dst: Tcl_DecrRefCount
      Src: /src/postgres/src/pl/tcl/pltcl.c:1270,1
    - Dst: throw_tcl_error
      Src: /src/postgres/src/pl/tcl/pltcl.c:1276,1
    - Dst: SPI_finish
      Src: /src/postgres/src/pl/tcl/pltcl.c:1281,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:1282,1
    - Dst: Tcl_GetStringResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:1289,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/tcl/pltcl.c:1291,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/tcl/pltcl.c:1293,1
    - Dst: Tcl_ListObjGetElements
      Src: /src/postgres/src/pl/tcl/pltcl.c:1300,1
    - Dst: Tcl_GetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:1300,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:1302,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:1303,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:1304,1
    - Dst: utf_u2e
      Src: /src/postgres/src/pl/tcl/pltcl.c:1305,1
    - Dst: Tcl_GetStringResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:1305,1
    - Dst: pltcl_build_tuple_result
      Src: /src/postgres/src/pl/tcl/pltcl.c:1308,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 100
    argCount: 2
    argNames:
    - call_state
    - pltrusted
    argTypes:
    - pltcl_call_state*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1312
      start: 1058
    functionDepth: 1
    functionLinenumber: 1058
    functionLinenumberEnd: 1312
    functionName: pltcl_trigger_handler
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 1
    functionsReached:
    - Tcl_DecrRefCount
    - pltcl_build_tuple_argument
    - Tcl_EvalObjEx
    - TRIGGER_FIRED_BY_UPDATE
    - utf_u2e
    - Tcl_IncrRefCount
    - DirectFunctionCall1
    - TRIGGER_FIRED_BY_TRUNCATE
    - pfree
    - SPI_register_trigger_data
    - NameStr
    - PG_RE_THROW
    - RelationGetRelid
    - DatumGetCString
    - TRIGGER_FIRED_BEFORE
    - TRIGGER_FIRED_AFTER
    - TRIGGER_FIRED_BY_DELETE
    - pltcl_build_tuple_result
    - Tcl_NewObj
    - strcmp
    - Tcl_ListObjGetElements
    - Tcl_GetStringResult
    - errmsg
    - TRIGGER_FIRED_INSTEAD
    - compile_pltcl_function
    - SPI_connect
    - Tcl_NewStringObj
    - Tcl_GetObjResult
    - SPI_getnspname
    - TupleDescAttr
    - elog
    - TRIGGER_FIRED_BY_INSERT
    - utf_e2u
    - TRIGGER_FIRED_FOR_STATEMENT
    - ObjectIdGetDatum
    - throw_tcl_error
    - Tcl_ListObjAppendElement
    - Assert
    - PG_END_TRY
    - PG_TRY
    - TRIGGER_FIRED_FOR_ROW
    - RelationGetDescr
    - PG_CATCH
    - ereport
    - SPI_getrelname
    - SPI_finish
    - errcode
    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:1328,1
    - Dst: compile_pltcl_function
      Src: /src/postgres/src/pl/tcl/pltcl.c:1331,1
    - Dst: Tcl_NewObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1340,1
    - Dst: Tcl_IncrRefCount
      Src: /src/postgres/src/pl/tcl/pltcl.c:1341,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1342,1
    - Dst: Tcl_NewStringObj
      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: utf_e2u
      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: GetCommandTagName
      Src: /src/postgres/src/pl/tcl/pltcl.c:1347,1
    - Dst: Tcl_EvalObjEx
      Src: /src/postgres/src/pl/tcl/pltcl.c:1350,1
    - Dst: Tcl_DecrRefCount
      Src: /src/postgres/src/pl/tcl/pltcl.c:1353,1
    - Dst: throw_tcl_error
      Src: /src/postgres/src/pl/tcl/pltcl.c:1357,1
    - Dst: SPI_finish
      Src: /src/postgres/src/pl/tcl/pltcl.c:1359,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:1360,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - call_state
    - pltrusted
    argTypes:
    - pltcl_call_state*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1361
      start: 1317
    functionDepth: 1
    functionLinenumber: 1317
    functionLinenumberEnd: 1361
    functionName: pltcl_event_trigger_handler
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 1
    functionsReached:
    - Tcl_ListObjAppendElement
    - compile_pltcl_function
    - SPI_connect
    - Tcl_NewStringObj
    - Tcl_DecrRefCount
    - GetCommandTagName
    - Tcl_EvalObjEx
    - elog
    - Tcl_NewObj
    - utf_e2u
    - Tcl_IncrRefCount
    - SPI_finish
    - throw_tcl_error
    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:1385,1
    - Dst: utf_u2e
      Src: /src/postgres/src/pl/tcl/pltcl.c:1385,1
    - Dst: Tcl_GetStringResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:1385,1
    - Dst: utf_u2e
      Src: /src/postgres/src/pl/tcl/pltcl.c:1386,1
    - Dst: Tcl_GetVar
      Src: /src/postgres/src/pl/tcl/pltcl.c:1386,1
    - Dst: strlen
      Src: /src/postgres/src/pl/tcl/pltcl.c:1392,1
    - Dst: strncmp
      Src: /src/postgres/src/pl/tcl/pltcl.c:1393,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:1402,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:1403,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:1404,1
    - Dst: errcontext
      Src: /src/postgres/src/pl/tcl/pltcl.c:1405,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - interp
    - proname
    argTypes:
    - Tcl_Interp*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1407
      start: 1371
    functionDepth: 1
    functionLinenumber: 1371
    functionLinenumberEnd: 1407
    functionName: throw_tcl_error
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 3
    functionsReached:
    - errmsg
    - errcontext
    - pstrdup
    - ereport
    - utf_u2e
    - Tcl_GetVar
    - strlen
    - strncmp
    - errcode
    - Tcl_GetStringResult
    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:1433,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/tcl/pltcl.c:1433,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/tcl/pltcl.c:1434,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:1435,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/tcl/pltcl.c:1436,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/tcl/pltcl.c:1443,1
    - Dst: GetUserId
      Src: /src/postgres/src/pl/tcl/pltcl.c:1444,1
    - Dst: hash_search
      Src: /src/postgres/src/pl/tcl/pltcl.c:1446,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/pl/tcl/pltcl.c:1461,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/pl/tcl/pltcl.c:1462,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/tcl/pltcl.c:1465,1
    - Dst: Tcl_DStringInit
      Src: /src/postgres/src/pl/tcl/pltcl.c:1477,1
    - Dst: Tcl_DStringInit
      Src: /src/postgres/src/pl/tcl/pltcl.c:1478,1
    - Dst: Tcl_DStringInit
      Src: /src/postgres/src/pl/tcl/pltcl.c:1479,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:1480,1
    - Dst: OidIsValid
      Src: /src/postgres/src/pl/tcl/pltcl.c:1482,1
    - Dst: pltcl_fetch_interp
      Src: /src/postgres/src/pl/tcl/pltcl.c:1502,1
    - Dst: Tcl_DeleteCommand
      Src: /src/postgres/src/pl/tcl/pltcl.c:1517,1
    - Dst: format_procedure
      Src: /src/postgres/src/pl/tcl/pltcl.c:1525,1
    - Dst: Tcl_DStringAppend
      Src: /src/postgres/src/pl/tcl/pltcl.c:1540,1
    - Dst: Tcl_DStringAppend
      Src: /src/postgres/src/pl/tcl/pltcl.c:1543,1
    - Dst: Tcl_DStringAppend
      Src: /src/postgres/src/pl/tcl/pltcl.c:1546,1
    - Dst: strchr
      Src: /src/postgres/src/pl/tcl/pltcl.c:1552,1
    - Dst: Tcl_DStringAppend
      Src: /src/postgres/src/pl/tcl/pltcl.c:1559,1
    - Dst: Tcl_DStringAppend
      Src: /src/postgres/src/pl/tcl/pltcl.c:1562,1
    - Dst: strchr
      Src: /src/postgres/src/pl/tcl/pltcl.c:1564,1
    - Dst: Tcl_GetCommandInfo
      Src: /src/postgres/src/pl/tcl/pltcl.c:1568,1
    - Dst: Tcl_DStringValue
      Src: /src/postgres/src/pl/tcl/pltcl.c:1569,1
    - Dst: snprintf
      Src: /src/postgres/src/pl/tcl/pltcl.c:1572,1
    - Dst: Tcl_DStringAppend
      Src: /src/postgres/src/pl/tcl/pltcl.c:1573,1
    - Dst: Tcl_DStringValue
      Src: /src/postgres/src/pl/tcl/pltcl.c:1575,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/tcl/pltcl.c:1580,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:1588,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/tcl/pltcl.c:1589,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/tcl/pltcl.c:1590,1
    - Dst: MemoryContextSetIdentifier
      Src: /src/postgres/src/pl/tcl/pltcl.c:1591,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/tcl/pltcl.c:1592,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/pl/tcl/pltcl.c:1595,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/tcl/pltcl.c:1598,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/tcl/pltcl.c:1599,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:1600,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/tcl/pltcl.c:1618,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/tcl/pltcl.c:1618,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/tcl/pltcl.c:1619,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:1620,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/tcl/pltcl.c:1621,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:1631,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:1632,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:1633,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:1635,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:1636,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:1637,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/tcl/pltcl.c:1638,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/pl/tcl/pltcl.c:1642,1
    - Dst: getTypeIOParam
      Src: /src/postgres/src/pl/tcl/pltcl.c:1645,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/tcl/pltcl.c:1648,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/tcl/pltcl.c:1652,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/pl/tcl/pltcl.c:1666,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/pl/tcl/pltcl.c:1666,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/pl/tcl/pltcl.c:1667,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:1668,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/pl/tcl/pltcl.c:1669,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:1674,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:1675,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:1676,1
    - Dst: format_type_be
      Src: /src/postgres/src/pl/tcl/pltcl.c:1677,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/pl/tcl/pltcl.c:1679,1
    - Dst: snprintf
      Src: /src/postgres/src/pl/tcl/pltcl.c:1682,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/pl/tcl/pltcl.c:1687,1
    - Dst: snprintf
      Src: /src/postgres/src/pl/tcl/pltcl.c:1690,1
    - Dst: strcat
      Src: /src/postgres/src/pl/tcl/pltcl.c:1694,1
    - Dst: strcat
      Src: /src/postgres/src/pl/tcl/pltcl.c:1695,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/tcl/pltcl.c:1697,1
    - Dst: strcpy
      Src: /src/postgres/src/pl/tcl/pltcl.c:1703,1
    - Dst: strcpy
      Src: /src/postgres/src/pl/tcl/pltcl.c:1709,1
    - Dst: Tcl_DStringAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1720,1
    - Dst: Tcl_DStringAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1721,1
    - Dst: Tcl_DStringAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1722,1
    - Dst: Tcl_DStringAppend
      Src: /src/postgres/src/pl/tcl/pltcl.c:1729,1
    - Dst: Tcl_DStringAppend
      Src: /src/postgres/src/pl/tcl/pltcl.c:1730,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:1734,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: snprintf
      Src: /src/postgres/src/pl/tcl/pltcl.c:1757,1
    - Dst: Tcl_DStringAppend
      Src: /src/postgres/src/pl/tcl/pltcl.c:1760,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/pl/tcl/pltcl.c:1768,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/pl/tcl/pltcl.c:1770,1
    - Dst: Tcl_DStringAppend
      Src: /src/postgres/src/pl/tcl/pltcl.c:1772,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:1772,1
    - Dst: pfree
      Src: /src/postgres/src/pl/tcl/pltcl.c:1774,1
    - Dst: Tcl_DStringAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1775,1
    - Dst: Tcl_DStringValue
      Src: /src/postgres/src/pl/tcl/pltcl.c:1776,1
    - Dst: Tcl_EvalEx
      Src: /src/postgres/src/pl/tcl/pltcl.c:1781,1
    - Dst: Tcl_DStringValue
      Src: /src/postgres/src/pl/tcl/pltcl.c:1782,1
    - Dst: Tcl_DStringLength
      Src: /src/postgres/src/pl/tcl/pltcl.c:1783,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:1786,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:1787,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:1788,1
    - Dst: utf_u2e
      Src: /src/postgres/src/pl/tcl/pltcl.c:1790,1
    - Dst: Tcl_GetStringResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:1790,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/tcl/pltcl.c:1792,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/tcl/pltcl.c:1799,1
    - Dst: Tcl_DStringFree
      Src: /src/postgres/src/pl/tcl/pltcl.c:1800,1
    - Dst: Tcl_DStringFree
      Src: /src/postgres/src/pl/tcl/pltcl.c:1801,1
    - Dst: Tcl_DStringFree
      Src: /src/postgres/src/pl/tcl/pltcl.c:1802,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/pl/tcl/pltcl.c:1803,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:1805,1
    - Dst: Assert
      Src: /src/postgres/src/pl/tcl/pltcl.c:1824,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/tcl/pltcl.c:1826,1
    - Dst: Tcl_DStringFree
      Src: /src/postgres/src/pl/tcl/pltcl.c:1829,1
    - Dst: Tcl_DStringFree
      Src: /src/postgres/src/pl/tcl/pltcl.c:1830,1
    - Dst: Tcl_DStringFree
      Src: /src/postgres/src/pl/tcl/pltcl.c:1831,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/pl/tcl/pltcl.c:1833,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: 1836
      start: 1416
    functionDepth: 3
    functionLinenumber: 1416
    functionLinenumberEnd: 1836
    functionName: compile_pltcl_function
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 3
    functionsReached:
    - Tcl_DStringAppendElement
    - MemoryContextSwitchTo
    - HeapTupleIsValid
    - snprintf
    - Tcl_DStringInit
    - SysCacheGetAttrNotNull
    - pstrdup
    - utf_u2e
    - GetUserId
    - Tcl_GetCommandInfo
    - pfree
    - PG_RE_THROW
    - pltcl_fetch_interp
    - Tcl_DStringLength
    - ReleaseSysCache
    - MemoryContextDelete
    - GETSTRUCT
    - Tcl_DeleteCommand
    - format_procedure
    - fmgr_info_cxt
    - UTF_E2U
    - strcpy
    - errmsg
    - Tcl_GetStringResult
    - strcat
    - Tcl_EvalEx
    - Tcl_DStringValue
    - format_type_be
    - elog
    - ItemPointerEquals
    - HeapTupleHeaderGetRawXmin
    - OidIsValid
    - ObjectIdGetDatum
    - Tcl_DStringAppend
    - type_is_rowtype
    - Assert
    - PG_END_TRY
    - PG_TRY
    - TextDatumGetCString
    - Tcl_DStringFree
    - PG_CATCH
    - palloc0
    - hash_search
    - SearchSysCache1
    - ereport
    - getTypeIOParam
    - AllocSetContextCreate
    - MemoryContextSetIdentifier
    - errcode
    - strchr
    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:1862,1
    - Dst: Tcl_GetIndexFromObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1866,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:1879,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:1893,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:1896,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:1897,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:1898,1
    - Dst: UTF_U2E
      Src: /src/postgres/src/pl/tcl/pltcl.c:1898,1
    - Dst: Tcl_GetString
      Src: /src/postgres/src/pl/tcl/pltcl.c:1898,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/tcl/pltcl.c:1901,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:1906,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/tcl/pltcl.c:1907,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/tcl/pltcl.c:1908,1
    - Dst: pltcl_construct_errorCode
      Src: /src/postgres/src/pl/tcl/pltcl.c:1911,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:1913,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1913,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:1913,1
    - Dst: FreeErrorData
      Src: /src/postgres/src/pl/tcl/pltcl.c:1915,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:1919,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: 1922
      start: 1842
    functionDepth: 1
    functionLinenumber: 1842
    functionLinenumberEnd: 1922
    functionName: pltcl_elog
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - errmsg
    - CopyErrorData
    - FreeErrorData
    - MemoryContextSwitchTo
    - Tcl_WrongNumArgs
    - Tcl_NewStringObj
    - PG_END_TRY
    - PG_TRY
    - FlushErrorState
    - PG_CATCH
    - UTF_E2U
    - ereport
    - Tcl_SetObjResult
    - Tcl_GetString
    - pltcl_construct_errorCode
    - UTF_U2E
    - errcode
    - Tcl_GetIndexFromObj
    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:1932,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1934,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1935,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: unpack_sql_state
      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: 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: pltcl_get_condition_name
      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: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1949,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1950,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:1950,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1954,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1955,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1957,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1958,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:1958,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1963,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1964,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1966,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1967,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:1967,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1972,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1973,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1975,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1976,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:1976,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1981,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1982,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1984,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1985,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:1985,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1990,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1991,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1993,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:1994,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:1994,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:1999,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2000,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2002,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2003,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:2003,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2008,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2009,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2011,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2012,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:2012,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2017,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2018,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2020,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2021,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:2021,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2027,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2028,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2030,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2031,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:2031,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2036,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2037,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2038,1
    - Dst: Tcl_NewIntObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2039,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2043,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2044,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2046,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2047,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:2047,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2052,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2053,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2054,1
    - Dst: Tcl_NewIntObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2055,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2059,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2060,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:2062,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2063,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:2063,1
    - Dst: Tcl_SetObjErrorCode
      Src: /src/postgres/src/pl/tcl/pltcl.c:2067,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 86
    argCount: 2
    argNames:
    - interp
    - edata
    argTypes:
    - Tcl_Interp*
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2068
      start: 1929
    functionDepth: 1
    functionLinenumber: 1929
    functionLinenumberEnd: 2068
    functionName: pltcl_construct_errorCode
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 1
    functionsReached:
    - Tcl_ListObjAppendElement
    - Tcl_NewStringObj
    - unpack_sql_state
    - Tcl_NewIntObj
    - Tcl_NewObj
    - Tcl_SetObjErrorCode
    - pltcl_get_condition_name
    - UTF_E2U
    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: 2085
      start: 2074
    functionDepth: 0
    functionLinenumber: 2074
    functionLinenumberEnd: 2085
    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:2106,1
    - Dst: Tcl_GetStringFromObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2114,1
    - Dst: palloc
      Src: /src/postgres/src/pl/tcl/pltcl.c:2115,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2137,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2137,1
    - Dst: pfree
      Src: /src/postgres/src/pl/tcl/pltcl.c:2138,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: 2140
      start: 2092
    functionDepth: 0
    functionLinenumber: 2092
    functionLinenumberEnd: 2140
    functionName: pltcl_quote
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - pfree
    - Tcl_GetStringFromObj
    - Tcl_WrongNumArgs
    - Tcl_NewStringObj
    - Tcl_SetObjResult
    - palloc
    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:2158,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2167,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2168,1
    - Dst: Tcl_GetIntFromObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2175,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2184,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2185,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2192,1
    - Dst: Tcl_NewBooleanObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2192,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/pl/tcl/pltcl.c:2192,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: 2194
      start: 2146
    functionDepth: 1
    functionLinenumber: 2146
    functionLinenumberEnd: 2194
    functionName: pltcl_argisnull
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - Tcl_WrongNumArgs
    - Tcl_NewStringObj
    - PG_ARGISNULL
    - Tcl_GetIntFromObj
    - Tcl_SetObjResult
    - Tcl_NewBooleanObj
    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:2211,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2220,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2221,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: 2232
      start: 2200
    functionDepth: 0
    functionLinenumber: 2200
    functionLinenumberEnd: 2232
    functionName: pltcl_returnnull
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - Tcl_WrongNumArgs
    - Tcl_SetObjResult
    - Tcl_NewStringObj
    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:2254,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2255,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2261,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2262,1
    - Dst: Tcl_WrongNumArgs
      Src: /src/postgres/src/pl/tcl/pltcl.c:2271,1
    - Dst: BeginInternalSubTransaction
      Src: /src/postgres/src/pl/tcl/pltcl.c:2283,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:2284,1
    - Dst: pltcl_init_tuple_store
      Src: /src/postgres/src/pl/tcl/pltcl.c:2288,1
    - Dst: Tcl_ListObjGetElements
      Src: /src/postgres/src/pl/tcl/pltcl.c:2296,1
    - Dst: pltcl_build_tuple_result
      Src: /src/postgres/src/pl/tcl/pltcl.c:2302,1
    - Dst: tuplestore_puttuple
      Src: /src/postgres/src/pl/tcl/pltcl.c:2304,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:2314,1
    - Dst: InputFunctionCall
      Src: /src/postgres/src/pl/tcl/pltcl.c:2316,1
    - Dst: utf_u2e
      Src: /src/postgres/src/pl/tcl/pltcl.c:2317,1
    - Dst: Tcl_GetString
      Src: /src/postgres/src/pl/tcl/pltcl.c:2317,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/pl/tcl/pltcl.c:2320,1
    - Dst: pltcl_subtrans_commit
      Src: /src/postgres/src/pl/tcl/pltcl.c:2324,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/tcl/pltcl.c:2326,1
    - Dst: pltcl_subtrans_abort
      Src: /src/postgres/src/pl/tcl/pltcl.c:2328,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:2331,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: 2334
      start: 2238
    functionDepth: 1
    functionLinenumber: 2238
    functionLinenumberEnd: 2334
    functionName: pltcl_returnnext
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - tuplestore_putvalues
    - Tcl_WrongNumArgs
    - Tcl_NewStringObj
    - PG_END_TRY
    - PG_TRY
    - pltcl_subtrans_abort
    - InputFunctionCall
    - pltcl_build_tuple_result
    - BeginInternalSubTransaction
    - Tcl_SetObjResult
    - Tcl_GetString
    - utf_u2e
    - elog
    - tuplestore_puttuple
    - pltcl_subtrans_commit
    - PG_CATCH
    - pltcl_init_tuple_store
    - Tcl_ListObjGetElements
    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:2364,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:2367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - oldcontext
    - oldowner
    argTypes:
    - MemoryContext
    - ResourceOwner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2368
      start: 2361
    functionDepth: 1
    functionLinenumber: 2361
    functionLinenumberEnd: 2368
    functionName: pltcl_subtrans_begin
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - BeginInternalSubTransaction
    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:2374,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:2375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - oldcontext
    - oldowner
    argTypes:
    - MemoryContext
    - ResourceOwner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2377
      start: 2370
    functionDepth: 1
    functionLinenumber: 2370
    functionLinenumberEnd: 2377
    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:2386,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/tcl/pltcl.c:2387,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/tcl/pltcl.c:2388,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/tcl/pltcl.c:2391,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:2392,1
    - Dst: pltcl_construct_errorCode
      Src: /src/postgres/src/pl/tcl/pltcl.c:2396,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2398,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2398,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:2398,1
    - Dst: FreeErrorData
      Src: /src/postgres/src/pl/tcl/pltcl.c:2400,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - interp
    - oldcontext
    - oldowner
    argTypes:
    - Tcl_Interp*
    - MemoryContext
    - ResourceOwner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2401
      start: 2379
    functionDepth: 2
    functionLinenumber: 2379
    functionLinenumberEnd: 2401
    functionName: pltcl_subtrans_abort
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 1
    functionsReached:
    - CopyErrorData
    - FreeErrorData
    - MemoryContextSwitchTo
    - Tcl_NewStringObj
    - FlushErrorState
    - Tcl_SetObjResult
    - RollbackAndReleaseCurrentSubTransaction
    - pltcl_construct_errorCode
    - UTF_E2U
    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:2437,1
    - Dst: Tcl_GetIndexFromObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2445,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2451,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2452,1
    - Dst: Tcl_GetString
      Src: /src/postgres/src/pl/tcl/pltcl.c:2459,1
    - Dst: Tcl_GetIntFromObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2463,1
    - Dst: Tcl_WrongNumArgs
      Src: /src/postgres/src/pl/tcl/pltcl.c:2472,1
    - Dst: pltcl_subtrans_begin
      Src: /src/postgres/src/pl/tcl/pltcl.c:2484,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:2486,1
    - Dst: SPI_execute
      Src: /src/postgres/src/pl/tcl/pltcl.c:2489,1
    - Dst: UTF_U2E
      Src: /src/postgres/src/pl/tcl/pltcl.c:2489,1
    - Dst: Tcl_GetString
      Src: /src/postgres/src/pl/tcl/pltcl.c:2489,1
    - Dst: pltcl_process_SPI_result
      Src: /src/postgres/src/pl/tcl/pltcl.c:2493,1
    - Dst: pltcl_subtrans_commit
      Src: /src/postgres/src/pl/tcl/pltcl.c:2500,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/tcl/pltcl.c:2502,1
    - Dst: pltcl_subtrans_abort
      Src: /src/postgres/src/pl/tcl/pltcl.c:2504,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:2507,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: 2510
      start: 2408
    functionDepth: 3
    functionLinenumber: 2408
    functionLinenumberEnd: 2510
    functionName: pltcl_SPI_execute
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - Tcl_WrongNumArgs
    - Tcl_NewStringObj
    - PG_END_TRY
    - PG_TRY
    - pltcl_subtrans_abort
    - PG_CATCH
    - Tcl_GetString
    - Tcl_SetObjResult
    - Tcl_GetIntFromObj
    - pltcl_subtrans_begin
    - pltcl_subtrans_commit
    - SPI_execute
    - pltcl_process_SPI_result
    - UTF_U2E
    - Tcl_GetIndexFromObj
    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:2537,1
    - Dst: Tcl_NewWideIntObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2537,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2544,1
    - Dst: Tcl_NewIntObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2544,1
    - Dst: pltcl_set_tuple_values
      Src: /src/postgres/src/pl/tcl/pltcl.c:2569,1
    - Dst: pltcl_set_tuple_values
      Src: /src/postgres/src/pl/tcl/pltcl.c:2582,1
    - Dst: Tcl_EvalObjEx
      Src: /src/postgres/src/pl/tcl/pltcl.c:2585,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2605,1
    - Dst: Tcl_NewWideIntObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2605,1
    - Dst: Tcl_AppendResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2610,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/pl/tcl/pltcl.c:2611,1
    - Dst: SPI_freetuptable
      Src: /src/postgres/src/pl/tcl/pltcl.c:2616,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 54
    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: 2619
      start: 2517
    functionDepth: 1
    functionLinenumber: 2517
    functionLinenumberEnd: 2619
    functionName: pltcl_process_SPI_result
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 1
    functionsReached:
    - Tcl_AppendResult
    - Tcl_EvalObjEx
    - Tcl_SetObjResult
    - SPI_result_code_string
    - Tcl_NewIntObj
    - SPI_freetuptable
    - Tcl_NewWideIntObj
    - pltcl_set_tuple_values
    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:2650,1
    - Dst: Tcl_ListObjGetElements
      Src: /src/postgres/src/pl/tcl/pltcl.c:2657,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/pl/tcl/pltcl.c:2667,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:2670,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/tcl/pltcl.c:2671,1
    - Dst: snprintf
      Src: /src/postgres/src/pl/tcl/pltcl.c:2672,1
    - Dst: palloc
      Src: /src/postgres/src/pl/tcl/pltcl.c:2674,1
    - Dst: palloc
      Src: /src/postgres/src/pl/tcl/pltcl.c:2675,1
    - Dst: palloc
      Src: /src/postgres/src/pl/tcl/pltcl.c:2676,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:2677,1
    - Dst: pltcl_subtrans_begin
      Src: /src/postgres/src/pl/tcl/pltcl.c:2684,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:2686,1
    - Dst: parseTypeString
      Src: /src/postgres/src/pl/tcl/pltcl.c:2700,1
    - Dst: Tcl_GetString
      Src: /src/postgres/src/pl/tcl/pltcl.c:2700,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/pl/tcl/pltcl.c:2703,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/pl/tcl/pltcl.c:2706,1
    - Dst: SPI_prepare
      Src: /src/postgres/src/pl/tcl/pltcl.c:2714,1
    - Dst: UTF_U2E
      Src: /src/postgres/src/pl/tcl/pltcl.c:2714,1
    - Dst: Tcl_GetString
      Src: /src/postgres/src/pl/tcl/pltcl.c:2714,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:2719,1
    - Dst: SPI_keepplan
      Src: /src/postgres/src/pl/tcl/pltcl.c:2725,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:2726,1
    - Dst: pltcl_subtrans_commit
      Src: /src/postgres/src/pl/tcl/pltcl.c:2728,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/tcl/pltcl.c:2730,1
    - Dst: pltcl_subtrans_abort
      Src: /src/postgres/src/pl/tcl/pltcl.c:2732,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/pl/tcl/pltcl.c:2734,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:2738,1
    - Dst: Tcl_CreateHashEntry
      Src: /src/postgres/src/pl/tcl/pltcl.c:2746,1
    - Dst: Tcl_SetHashValue
      Src: /src/postgres/src/pl/tcl/pltcl.c:2747,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2750,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2750,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: 2752
      start: 2630
    functionDepth: 3
    functionLinenumber: 2630
    functionLinenumberEnd: 2752
    functionName: pltcl_SPI_prepare
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - snprintf
    - SPI_prepare
    - UTF_U2E
    - MemoryContextDelete
    - pltcl_subtrans_abort
    - SPI_keepplan
    - pltcl_subtrans_commit
    - fmgr_info_cxt
    - Tcl_ListObjGetElements
    - Tcl_SetHashValue
    - Tcl_WrongNumArgs
    - Tcl_CreateHashEntry
    - Tcl_NewStringObj
    - parseTypeString
    - pltcl_subtrans_begin
    - elog
    - palloc
    - getTypeInputInfo
    - PG_END_TRY
    - PG_TRY
    - PG_CATCH
    - palloc0
    - Tcl_GetString
    - Tcl_SetObjResult
    - AllocSetContextCreate
    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:2795,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2801,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2802,1
    - Dst: Tcl_GetString
      Src: /src/postgres/src/pl/tcl/pltcl.c:2809,1
    - Dst: Tcl_GetIntFromObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2813,1
    - Dst: Tcl_GetString
      Src: /src/postgres/src/pl/tcl/pltcl.c:2818,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2828,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2829,1
    - Dst: Tcl_FindHashEntry
      Src: /src/postgres/src/pl/tcl/pltcl.c:2835,1
    - Dst: Tcl_GetString
      Src: /src/postgres/src/pl/tcl/pltcl.c:2835,1
    - Dst: Tcl_AppendResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2838,1
    - Dst: Tcl_GetString
      Src: /src/postgres/src/pl/tcl/pltcl.c:2838,1
    - Dst: Tcl_GetHashValue
      Src: /src/postgres/src/pl/tcl/pltcl.c:2841,1
    - Dst: strlen
      Src: /src/postgres/src/pl/tcl/pltcl.c:2849,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2851,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2852,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2866,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2867,1
    - Dst: Tcl_ListObjGetElements
      Src: /src/postgres/src/pl/tcl/pltcl.c:2875,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:2883,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:2884,1
    - Dst: Tcl_WrongNumArgs
      Src: /src/postgres/src/pl/tcl/pltcl.c:2900,1
    - Dst: pltcl_subtrans_begin
      Src: /src/postgres/src/pl/tcl/pltcl.c:2911,1
    - Dst: PG_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:2913,1
    - Dst: palloc
      Src: /src/postgres/src/pl/tcl/pltcl.c:2919,1
    - Dst: InputFunctionCall
      Src: /src/postgres/src/pl/tcl/pltcl.c:2925,1
    - Dst: InputFunctionCall
      Src: /src/postgres/src/pl/tcl/pltcl.c:2933,1
    - Dst: UTF_U2E
      Src: /src/postgres/src/pl/tcl/pltcl.c:2934,1
    - Dst: Tcl_GetString
      Src: /src/postgres/src/pl/tcl/pltcl.c:2934,1
    - Dst: SPI_execute_plan
      Src: /src/postgres/src/pl/tcl/pltcl.c:2944,1
    - Dst: pltcl_process_SPI_result
      Src: /src/postgres/src/pl/tcl/pltcl.c:2948,1
    - Dst: pltcl_subtrans_commit
      Src: /src/postgres/src/pl/tcl/pltcl.c:2955,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/tcl/pltcl.c:2957,1
    - Dst: pltcl_subtrans_abort
      Src: /src/postgres/src/pl/tcl/pltcl.c:2959,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:2962,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: 2965
      start: 2758
    functionDepth: 3
    functionLinenumber: 2758
    functionLinenumberEnd: 2965
    functionName: pltcl_SPI_execute_plan
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - SPI_execute_plan
    - UTF_U2E
    - strlen
    - pltcl_subtrans_abort
    - InputFunctionCall
    - pltcl_subtrans_commit
    - pltcl_process_SPI_result
    - Tcl_ListObjGetElements
    - Tcl_NewStringObj
    - Tcl_WrongNumArgs
    - Tcl_AppendResult
    - pltcl_subtrans_begin
    - palloc
    - PG_END_TRY
    - PG_TRY
    - Tcl_FindHashEntry
    - PG_CATCH
    - Tcl_GetIntFromObj
    - Tcl_GetString
    - Tcl_SetObjResult
    - Tcl_GetHashValue
    - Tcl_GetIndexFromObj
    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:2984,1
    - Dst: BeginInternalSubTransaction
      Src: /src/postgres/src/pl/tcl/pltcl.c:2993,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:2994,1
    - Dst: Tcl_EvalObjEx
      Src: /src/postgres/src/pl/tcl/pltcl.c:2996,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/tcl/pltcl.c:3001,1
    - Dst: ReleaseCurrentSubTransaction
      Src: /src/postgres/src/pl/tcl/pltcl.c:3006,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:3010,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: 3014
      start: 2974
    functionDepth: 1
    functionLinenumber: 2974
    functionLinenumberEnd: 3014
    functionName: pltcl_subtransaction
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - Tcl_WrongNumArgs
    - Tcl_EvalObjEx
    - BeginInternalSubTransaction
    - RollbackAndReleaseCurrentSubTransaction
    - ReleaseCurrentSubTransaction
    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:3028,1
    - Dst: SPI_commit
      Src: /src/postgres/src/pl/tcl/pltcl.c:3030,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/tcl/pltcl.c:3032,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:3037,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/tcl/pltcl.c:3038,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/tcl/pltcl.c:3039,1
    - Dst: pltcl_construct_errorCode
      Src: /src/postgres/src/pl/tcl/pltcl.c:3042,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:3044,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:3044,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:3044,1
    - Dst: FreeErrorData
      Src: /src/postgres/src/pl/tcl/pltcl.c:3046,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:3050,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: 3053
      start: 3022
    functionDepth: 2
    functionLinenumber: 3022
    functionLinenumberEnd: 3053
    functionName: pltcl_commit
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - CopyErrorData
    - FreeErrorData
    - MemoryContextSwitchTo
    - Tcl_NewStringObj
    - PG_END_TRY
    - PG_TRY
    - FlushErrorState
    - PG_CATCH
    - Tcl_SetObjResult
    - SPI_commit
    - pltcl_construct_errorCode
    - UTF_E2U
    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:3067,1
    - Dst: SPI_rollback
      Src: /src/postgres/src/pl/tcl/pltcl.c:3069,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/pl/tcl/pltcl.c:3071,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:3076,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/pl/tcl/pltcl.c:3077,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/pl/tcl/pltcl.c:3078,1
    - Dst: pltcl_construct_errorCode
      Src: /src/postgres/src/pl/tcl/pltcl.c:3081,1
    - Dst: Tcl_SetObjResult
      Src: /src/postgres/src/pl/tcl/pltcl.c:3083,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:3083,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:3083,1
    - Dst: FreeErrorData
      Src: /src/postgres/src/pl/tcl/pltcl.c:3085,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/pl/tcl/pltcl.c:3089,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: 3092
      start: 3061
    functionDepth: 2
    functionLinenumber: 3061
    functionLinenumberEnd: 3092
    functionName: pltcl_rollback
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 0
    functionsReached:
    - CopyErrorData
    - FreeErrorData
    - MemoryContextSwitchTo
    - Tcl_NewStringObj
    - PG_END_TRY
    - PG_TRY
    - FlushErrorState
    - PG_CATCH
    - Tcl_SetObjResult
    - SPI_rollback
    - pltcl_construct_errorCode
    - UTF_E2U
    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:3134,1
    - Dst: Tcl_NewWideIntObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:3134,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/tcl/pltcl.c:3139,1
    - Dst: pstrdup
      Src: /src/postgres/src/pl/tcl/pltcl.c:3149,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:3149,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/tcl/pltcl.c:3149,1
    - Dst: heap_getattr
      Src: /src/postgres/src/pl/tcl/pltcl.c:3155,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/pl/tcl/pltcl.c:3167,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/pl/tcl/pltcl.c:3168,1
    - Dst: Tcl_SetVar2Ex
      Src: /src/postgres/src/pl/tcl/pltcl.c:3170,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:3171,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:3171,1
    - Dst: pfree
      Src: /src/postgres/src/pl/tcl/pltcl.c:3173,1
    - Dst: Tcl_UnsetVar2
      Src: /src/postgres/src/pl/tcl/pltcl.c:3176,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: 3180
      start: 3101
    functionDepth: 1
    functionLinenumber: 3101
    functionLinenumberEnd: 3180
    functionName: pltcl_set_tuple_values
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 1
    functionsReached:
    - pfree
    - NameStr
    - Tcl_NewStringObj
    - heap_getattr
    - Tcl_SetVar2Ex
    - getTypeOutputInfo
    - TupleDescAttr
    - pstrdup
    - OidOutputFunctionCall
    - Tcl_UnsetVar2
    - Tcl_NewWideIntObj
    - UTF_E2U
    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:3190,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/tcl/pltcl.c:3201,1
    - Dst: NameStr
      Src: /src/postgres/src/pl/tcl/pltcl.c:3220,1
    - Dst: heap_getattr
      Src: /src/postgres/src/pl/tcl/pltcl.c:3225,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/pl/tcl/pltcl.c:3237,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/pl/tcl/pltcl.c:3239,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:3241,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:3242,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:3242,1
    - Dst: Tcl_ListObjAppendElement
      Src: /src/postgres/src/pl/tcl/pltcl.c:3245,1
    - Dst: Tcl_NewStringObj
      Src: /src/postgres/src/pl/tcl/pltcl.c:3246,1
    - Dst: UTF_E2U
      Src: /src/postgres/src/pl/tcl/pltcl.c:3246,1
    - Dst: pfree
      Src: /src/postgres/src/pl/tcl/pltcl.c:3248,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 3
    argNames:
    - tuple
    - tupdesc
    - include_generated
    argTypes:
    - HeapTuple
    - TupleDesc
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3253
      start: 3187
    functionDepth: 1
    functionLinenumber: 3187
    functionLinenumberEnd: 3253
    functionName: pltcl_build_tuple_argument
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 2
    functionsReached:
    - Tcl_ListObjAppendElement
    - pfree
    - NameStr
    - Tcl_NewStringObj
    - heap_getattr
    - getTypeOutputInfo
    - TupleDescAttr
    - OidOutputFunctionCall
    - Tcl_NewObj
    - UTF_E2U
    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:3283,1
    - Dst: TupleDescGetAttInMetadata
      Src: /src/postgres/src/pl/tcl/pltcl.c:3284,1
    - Dst: elog
      Src: /src/postgres/src/pl/tcl/pltcl.c:3288,1
    - Dst: palloc0
      Src: /src/postgres/src/pl/tcl/pltcl.c:3293,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:3296,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:3297,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:3298,1
    - Dst: utf_u2e
      Src: /src/postgres/src/pl/tcl/pltcl.c:3302,1
    - Dst: Tcl_GetString
      Src: /src/postgres/src/pl/tcl/pltcl.c:3302,1
    - Dst: SPI_fnumber
      Src: /src/postgres/src/pl/tcl/pltcl.c:3303,1
    - Dst: strcmp
      Src: /src/postgres/src/pl/tcl/pltcl.c:3312,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:3314,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:3315,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:3316,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:3321,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:3322,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:3323,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/pl/tcl/pltcl.c:3326,1
    - Dst: ereport
      Src: /src/postgres/src/pl/tcl/pltcl.c:3327,1
    - Dst: errcode
      Src: /src/postgres/src/pl/tcl/pltcl.c:3328,1
    - Dst: errmsg
      Src: /src/postgres/src/pl/tcl/pltcl.c:3329,1
    - Dst: utf_u2e
      Src: /src/postgres/src/pl/tcl/pltcl.c:3332,1
    - Dst: Tcl_GetString
      Src: /src/postgres/src/pl/tcl/pltcl.c:3332,1
    - Dst: BuildTupleFromCStrings
      Src: /src/postgres/src/pl/tcl/pltcl.c:3335,1
    - Dst: domain_check
      Src: /src/postgres/src/pl/tcl/pltcl.c:3339,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/pl/tcl/pltcl.c:3339,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: 3345
      start: 3266
    functionDepth: 1
    functionLinenumber: 3266
    functionLinenumberEnd: 3345
    functionName: pltcl_build_tuple_result
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 3
    functionsReached:
    - errmsg
    - TupleDescGetAttInMetadata
    - strcmp
    - HeapTupleGetDatum
    - RelationGetDescr
    - TupleDescAttr
    - ereport
    - palloc0
    - Tcl_GetString
    - utf_u2e
    - elog
    - domain_check
    - SPI_fnumber
    - BuildTupleFromCStrings
    - errcode
    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:3358,1
    - Dst: Assert
      Src: /src/postgres/src/pl/tcl/pltcl.c:3360,1
    - Dst: Assert
      Src: /src/postgres/src/pl/tcl/pltcl.c:3361,1
    - Dst: Assert
      Src: /src/postgres/src/pl/tcl/pltcl.c:3364,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:3374,1
    - Dst: tuplestore_begin_heap
      Src: /src/postgres/src/pl/tcl/pltcl.c:3379,1
    - Dst: TupleDescGetAttInMetadata
      Src: /src/postgres/src/pl/tcl/pltcl.c:3383,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/pl/tcl/pltcl.c:3386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - call_state
    argTypes:
    - pltcl_call_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3387
      start: 3350
    functionDepth: 1
    functionLinenumber: 3350
    functionLinenumberEnd: 3387
    functionName: pltcl_init_tuple_store
    functionSourceFile: /src/postgres/src/pl/tcl/pltcl.c
    functionUses: 1
    functionsReached:
    - TupleDescGetAttInMetadata
    - Assert
    - MemoryContextSwitchTo
    - tuplestore_begin_heap
    linkageType: ''
    returnType: void
    signature: void pltcl_init_tuple_store(pltcl_call_state *call_state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __get_cpuid
      Src: /src/postgres/src/port/pg_popcount_avx512.c:45,1
    - Dst: __cpuid
      Src: /src/postgres/src/port/pg_popcount_avx512.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 52
    functionName: xsave_available
    functionSourceFile: /src/postgres/src/port/pg_popcount_avx512.c
    functionUses: 0
    functionsReached:
    - __get_cpuid
    - __cpuid
    linkageType: ''
    returnType: bool
    signature: bool xsave_available(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _xgetbv
      Src: /src/postgres/src/port/pg_popcount_avx512.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 71
    functionName: zmm_regs_available
    functionSourceFile: /src/postgres/src/port/pg_popcount_avx512.c
    functionUses: 0
    functionsReached:
    - _xgetbv
    linkageType: ''
    returnType: bool
    signature: bool zmm_regs_available(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __get_cpuid_count
      Src: /src/postgres/src/port/pg_popcount_avx512.c:83,1
    - Dst: __cpuidex
      Src: /src/postgres/src/port/pg_popcount_avx512.c:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 91
    functionName: avx512_popcnt_available
    functionSourceFile: /src/postgres/src/port/pg_popcount_avx512.c
    functionUses: 0
    functionsReached:
    - __get_cpuid_count
    - __cpuidex
    linkageType: ''
    returnType: bool
    signature: bool avx512_popcnt_available(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xsave_available
      Src: /src/postgres/src/port/pg_popcount_avx512.c:100,1
    - Dst: zmm_regs_available
      Src: /src/postgres/src/port/pg_popcount_avx512.c:101,1
    - Dst: avx512_popcnt_available
      Src: /src/postgres/src/port/pg_popcount_avx512.c:102,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 103
    functionName: pg_popcount_avx512_available
    functionSourceFile: /src/postgres/src/port/pg_popcount_avx512.c
    functionUses: 0
    functionsReached:
    - avx512_popcnt_available
    - zmm_regs_available
    - xsave_available
    linkageType: ''
    returnType: bool
    signature: bool pg_popcount_avx512_available(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _mm512_setzero_si512
      Src: /src/postgres/src/port/pg_popcount_avx512.c:115,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/port/pg_popcount_avx512.c:118,1
    - Dst: TYPEALIGN_DOWN
      Src: /src/postgres/src/port/pg_popcount_avx512.c:127,1
    - Dst: TYPEALIGN_DOWN
      Src: /src/postgres/src/port/pg_popcount_avx512.c:128,1
    - Dst: _mm512_maskz_loadu_epi8
      Src: /src/postgres/src/port/pg_popcount_avx512.c:136,1
    - Dst: _mm512_popcnt_epi64
      Src: /src/postgres/src/port/pg_popcount_avx512.c:137,1
    - Dst: _mm512_add_epi64
      Src: /src/postgres/src/port/pg_popcount_avx512.c:138,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/port/pg_popcount_avx512.c:141,1
    - Dst: _mm512_load_si512
      Src: /src/postgres/src/port/pg_popcount_avx512.c:145,1
    - Dst: _mm512_popcnt_epi64
      Src: /src/postgres/src/port/pg_popcount_avx512.c:146,1
    - Dst: _mm512_add_epi64
      Src: /src/postgres/src/port/pg_popcount_avx512.c:147,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/port/pg_popcount_avx512.c:152,1
    - Dst: _mm512_maskz_loadu_epi8
      Src: /src/postgres/src/port/pg_popcount_avx512.c:154,1
    - Dst: _mm512_popcnt_epi64
      Src: /src/postgres/src/port/pg_popcount_avx512.c:155,1
    - Dst: _mm512_add_epi64
      Src: /src/postgres/src/port/pg_popcount_avx512.c:156,1
    - Dst: _mm512_reduce_add_epi64
      Src: /src/postgres/src/port/pg_popcount_avx512.c:158,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 2
    argNames:
    - buf
    - bytes
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 159
    functionName: pg_popcount_avx512
    functionSourceFile: /src/postgres/src/port/pg_popcount_avx512.c
    functionUses: 0
    functionsReached:
    - UINT64CONST
    - TYPEALIGN_DOWN
    - _mm512_load_si512
    - _mm512_reduce_add_epi64
    - _mm512_add_epi64
    - _mm512_setzero_si512
    - _mm512_maskz_loadu_epi8
    - _mm512_popcnt_epi64
    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_avx512.c:172,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/port/pg_popcount_avx512.c:175,1
    - Dst: _mm512_set1_epi8
      Src: /src/postgres/src/port/pg_popcount_avx512.c:176,1
    - Dst: TYPEALIGN_DOWN
      Src: /src/postgres/src/port/pg_popcount_avx512.c:185,1
    - Dst: TYPEALIGN_DOWN
      Src: /src/postgres/src/port/pg_popcount_avx512.c:186,1
    - Dst: _mm512_maskz_loadu_epi8
      Src: /src/postgres/src/port/pg_popcount_avx512.c:194,1
    - Dst: _mm512_and_si512
      Src: /src/postgres/src/port/pg_popcount_avx512.c:195,1
    - Dst: _mm512_popcnt_epi64
      Src: /src/postgres/src/port/pg_popcount_avx512.c:196,1
    - Dst: _mm512_add_epi64
      Src: /src/postgres/src/port/pg_popcount_avx512.c:197,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/port/pg_popcount_avx512.c:200,1
    - Dst: _mm512_load_si512
      Src: /src/postgres/src/port/pg_popcount_avx512.c:204,1
    - Dst: _mm512_and_si512
      Src: /src/postgres/src/port/pg_popcount_avx512.c:205,1
    - Dst: _mm512_popcnt_epi64
      Src: /src/postgres/src/port/pg_popcount_avx512.c:206,1
    - Dst: _mm512_add_epi64
      Src: /src/postgres/src/port/pg_popcount_avx512.c:207,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/port/pg_popcount_avx512.c:212,1
    - Dst: _mm512_maskz_loadu_epi8
      Src: /src/postgres/src/port/pg_popcount_avx512.c:214,1
    - Dst: _mm512_and_si512
      Src: /src/postgres/src/port/pg_popcount_avx512.c:215,1
    - Dst: _mm512_popcnt_epi64
      Src: /src/postgres/src/port/pg_popcount_avx512.c:216,1
    - Dst: _mm512_add_epi64
      Src: /src/postgres/src/port/pg_popcount_avx512.c:217,1
    - Dst: _mm512_reduce_add_epi64
      Src: /src/postgres/src/port/pg_popcount_avx512.c:219,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 3
    argNames:
    - buf
    - bytes
    - mask
    argTypes:
    - char*
    - int
    - bits8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 220
    functionName: pg_popcount_masked_avx512
    functionSourceFile: /src/postgres/src/port/pg_popcount_avx512.c
    functionUses: 0
    functionsReached:
    - UINT64CONST
    - TYPEALIGN_DOWN
    - _mm512_load_si512
    - _mm512_reduce_add_epi64
    - _mm512_add_epi64
    - _mm512_popcnt_epi64
    - _mm512_setzero_si512
    - _mm512_maskz_loadu_epi8
    - _mm512_and_si512
    - _mm512_set1_epi8
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_masked_avx512(const char *buf, int bytes, bits8
      mask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/port/pqsignal.c:90,1
    - Dst: Assert
      Src: /src/postgres/src/port/pqsignal.c:91,1
    - Dst: Assert
      Src: /src/postgres/src/port/pqsignal.c:99,1
    - Dst: Assert
      Src: /src/postgres/src/port/pqsignal.c:100,1
    - Dst: unlikely
      Src: /src/postgres/src/port/pqsignal.c:102,1
    - Dst: getpid
      Src: /src/postgres/src/port/pqsignal.c:102,1
    - Dst: pqsignal
      Src: /src/postgres/src/port/pqsignal.c:104,1
    - Dst: raise
      Src: /src/postgres/src/port/pqsignal.c:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 113
    functionName: wrapper_handler
    functionSourceFile: /src/postgres/src/port/pqsignal.c
    functionUses: 0
    functionsReached:
    - Assert
    - pqsignal
    - unlikely
    - getpid
    - raise
    linkageType: ''
    returnType: void
    signature: void wrapper_handler(SIGNAL_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/port/pqsignal.c:129,1
    - Dst: Assert
      Src: /src/postgres/src/port/pqsignal.c:130,1
    - Dst: sigemptyset
      Src: /src/postgres/src/port/pqsignal.c:140,1
    - Dst: sigaction
      Src: /src/postgres/src/port/pqsignal.c:146,1
    - Dst: Assert
      Src: /src/postgres/src/port/pqsignal.c:147,1
    - Dst: signal
      Src: /src/postgres/src/port/pqsignal.c:150,1
    - Dst: Assert
      Src: /src/postgres/src/port/pqsignal.c:151,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - signo
    - func
    argTypes:
    - int
    - pqsigfunc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 153
    functionName: pqsignal
    functionSourceFile: /src/postgres/src/port/pqsignal.c
    functionUses: 22
    functionsReached:
    - sigemptyset
    - Assert
    - sigaction
    - 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:32,1
    - Dst: __crc32cb
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:35,1
    - Dst: PointerIsAligned
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:38,1
    - Dst: __crc32ch
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:41,1
    - Dst: PointerIsAligned
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:44,1
    - Dst: __crc32cw
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:47,1
    - Dst: __crc32cd
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:54,1
    - Dst: __crc32cw
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:61,1
    - Dst: __crc32ch
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:66,1
    - Dst: __crc32cb
      Src: /src/postgres/src/port/pg_crc32c_armv8.c:71,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 3
    argNames:
    - crc
    - data
    - len
    argTypes:
    - pg_crc32c
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 75
    functionName: pg_comp_crc32c_armv8
    functionSourceFile: /src/postgres/src/port/pg_crc32c_armv8.c
    functionUses: 0
    functionsReached:
    - __crc32cd
    - __crc32ch
    - PointerIsAligned
    - __crc32cb
    - __crc32cw
    linkageType: ''
    returnType: pg_crc32c
    signature: pg_crc32c pg_comp_crc32c_armv8(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: 1
    BranchProfiles: []
    Callsites:
    - Dst: numa_available
      Src: /src/postgres/src/port/pg_numa.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 53
    functionName: pg_numa_init
    functionSourceFile: /src/postgres/src/port/pg_numa.c
    functionUses: 0
    functionsReached:
    - numa_available
    linkageType: ''
    returnType: int
    signature: int pg_numa_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/port/pg_numa.c:77,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/port/pg_numa.c:80,1
    - Dst: numa_move_pages
      Src: /src/postgres/src/port/pg_numa.c:87,1
    - Dst: Assert
      Src: /src/postgres/src/port/pg_numa.c:98,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: 101
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 101
    functionName: pg_numa_query_pages
    functionSourceFile: /src/postgres/src/port/pg_numa.c
    functionUses: 0
    functionsReached:
    - Min
    - Assert
    - 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:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 107
    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: 117
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 117
    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: 123
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 123
    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: 129
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 129
    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: 46
    functionsReached:
    - _dosmaperr
    - GetLastError
    - 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: 39
    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:
    - malloc
    - memcpy
    - 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:
    - malloc
    - memcpy
    - strlen
    - _popen
    - 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_init
    - pthread_cond_destroy
    - pthread_mutex_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:
    - pthread_cond_wait
    - Assert
    - pthread_mutex_lock
    - pthread_mutex_unlock
    - pthread_cond_broadcast
    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:61,1
    - Dst: getauxval
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 68
    functionName: pg_popcount_sve_available
    functionSourceFile: /src/postgres/src/port/pg_popcount_aarch64.c
    functionUses: 0
    functionsReached:
    - elf_aux_info
    - getauxval
    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:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 83
    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:88,1
    - Dst: pg_popcount_optimized
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buf
    - bytes
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 90
    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:95,1
    - Dst: pg_popcount_masked_optimized
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - buf
    - bytes
    - mask
    argTypes:
    - char*
    - int
    - bits8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 97
    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, bits8
      mask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: svptrue_b64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:107,1
    - Dst: svdup_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:108,1
    - Dst: svdup_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:109,1
    - Dst: svdup_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:110,1
    - Dst: svdup_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:111,1
    - Dst: svcntb
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:112,1
    - Dst: svld1_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:124,1
    - Dst: svadd_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:125,1
    - Dst: svcnt_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:125,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:150,1
    - Dst: svadd_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:151,1
    - Dst: svcnt_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:151,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: svaddv_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:164,1
    - Dst: svadd_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:164,1
    - Dst: svaddv_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:165,1
    - Dst: svadd_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:165,1
    - Dst: svwhilelt_b8_s32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:174,1
    - Dst: svld1_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:175,1
    - Dst: svaddv_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:176,1
    - Dst: svcnt_u8_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:176,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 34
    argCount: 2
    argNames:
    - buf
    - bytes
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 181
    functionName: pg_popcount_sve
    functionSourceFile: /src/postgres/src/port/pg_popcount_aarch64.c
    functionUses: 0
    functionsReached:
    - svadd_u64_x
    - svaddv_u8
    - svcntb
    - svld1_u8
    - svaddv_u64
    - svld1_u64
    - svcnt_u64_x
    - svwhilelt_b8_s32
    - svptrue_b64
    - svcnt_u8_x
    - svdup_u64
    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:191,1
    - Dst: svdup_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:192,1
    - Dst: svdup_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:193,1
    - Dst: svdup_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:194,1
    - Dst: svdup_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:195,1
    - Dst: svcntb
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:196,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:199,1
    - Dst: svand_n_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:209,1
    - Dst: svld1_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:209,1
    - Dst: svadd_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:210,1
    - Dst: svcnt_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:210,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:235,1
    - Dst: svld1_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:235,1
    - Dst: svadd_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:236,1
    - Dst: svcnt_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:236,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: svaddv_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:249,1
    - Dst: svadd_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:249,1
    - Dst: svaddv_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:250,1
    - Dst: svadd_u64_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:250,1
    - Dst: svwhilelt_b8_s32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:259,1
    - Dst: svand_n_u8_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:260,1
    - Dst: svld1_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:260,1
    - Dst: svaddv_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:261,1
    - Dst: svcnt_u8_x
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:261,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 34
    argCount: 3
    argNames:
    - buf
    - bytes
    - mask
    argTypes:
    - char*
    - int
    - bits8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 188
    functionDepth: 1
    functionLinenumber: 188
    functionLinenumberEnd: 266
    functionName: pg_popcount_masked_sve
    functionSourceFile: /src/postgres/src/port/pg_popcount_aarch64.c
    functionUses: 0
    functionsReached:
    - UINT64CONST
    - svadd_u64_x
    - svand_n_u8_x
    - svaddv_u8
    - svcntb
    - svld1_u8
    - svaddv_u64
    - svld1_u64
    - svcnt_u64_x
    - svwhilelt_b8_s32
    - svptrue_b64
    - svand_n_u64_x
    - svcnt_u8_x
    - svdup_u64
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_masked_sve(const char *buf, int bytes, bits8 mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_popcount_neon
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - bytes
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 280
    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:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buf
    - bytes
    - mask
    argTypes:
    - char*
    - int
    - bits8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 286
    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, bits8
      mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_popcount64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - word
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 298
    functionName: pg_popcount32
    functionSourceFile: /src/postgres/src/port/pg_popcount_aarch64.c
    functionUses: 0
    functionsReached:
    - pg_popcount64
    linkageType: ''
    returnType: int
    signature: int pg_popcount32(uint32 word)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vaddv_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:312,1
    - Dst: vcnt_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:312,1
    - Dst: vld1_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - word
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 313
    functionName: pg_popcount64
    functionSourceFile: /src/postgres/src/port/pg_popcount_aarch64.c
    functionUses: 1
    functionsReached:
    - vld1_u8
    - vaddv_u8
    - vcnt_u8
    linkageType: ''
    returnType: int
    signature: int pg_popcount64(uint64 word)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vdupq_n_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:323,1
    - Dst: vdupq_n_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:324,1
    - Dst: vdupq_n_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:325,1
    - Dst: vdupq_n_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:326,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:336,1
    - Dst: vpadalq_u32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:337,1
    - Dst: vpaddlq_u16
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:337,1
    - Dst: vpaddlq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:337,1
    - Dst: vcntq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:337,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:340,1
    - Dst: vpadalq_u32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:341,1
    - Dst: vpaddlq_u16
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:341,1
    - Dst: vpaddlq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:341,1
    - Dst: vcntq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:341,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:344,1
    - Dst: vpadalq_u32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:345,1
    - Dst: vpaddlq_u16
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:345,1
    - Dst: vpaddlq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:345,1
    - Dst: vcntq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:345,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:348,1
    - Dst: vpadalq_u32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:349,1
    - Dst: vpaddlq_u16
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:349,1
    - Dst: vpaddlq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:349,1
    - Dst: vcntq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:349,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:360,1
    - Dst: vpadalq_u32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:361,1
    - Dst: vpaddlq_u16
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:361,1
    - Dst: vpaddlq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:361,1
    - Dst: vcntq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:361,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:364,1
    - Dst: vpadalq_u32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:365,1
    - Dst: vpaddlq_u16
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:365,1
    - Dst: vpaddlq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:365,1
    - Dst: vcntq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:365,1
    - Dst: vaddvq_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:374,1
    - Dst: vaddq_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:374,1
    - Dst: vaddvq_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:375,1
    - Dst: vaddq_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:375,1
    - Dst: pg_popcount64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:382,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 2
    argNames:
    - buf
    - bytes
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 393
    functionName: pg_popcount_neon
    functionSourceFile: /src/postgres/src/port/pg_popcount_aarch64.c
    functionUses: 1
    functionsReached:
    - vpadalq_u32
    - vpaddlq_u8
    - vaddq_u64
    - vcntq_u8
    - vld1q_u8
    - vaddvq_u64
    - vpaddlq_u16
    - pg_popcount64
    - vdupq_n_u64
    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:403,1
    - Dst: vdupq_n_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:404,1
    - Dst: vdupq_n_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:405,1
    - Dst: vdupq_n_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:406,1
    - Dst: vdupq_n_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:407,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:410,1
    - Dst: vandq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:418,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:418,1
    - Dst: vpadalq_u32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:419,1
    - Dst: vpaddlq_u16
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:419,1
    - Dst: vpaddlq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:419,1
    - Dst: vcntq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:419,1
    - Dst: vandq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:422,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:422,1
    - Dst: vpadalq_u32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:423,1
    - Dst: vpaddlq_u16
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:423,1
    - Dst: vpaddlq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:423,1
    - Dst: vcntq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:423,1
    - Dst: vandq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:426,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:426,1
    - Dst: vpadalq_u32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:427,1
    - Dst: vpaddlq_u16
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:427,1
    - Dst: vpaddlq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:427,1
    - Dst: vcntq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:427,1
    - Dst: vandq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:430,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:430,1
    - Dst: vpadalq_u32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:431,1
    - Dst: vpaddlq_u16
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:431,1
    - Dst: vpaddlq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:431,1
    - Dst: vcntq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:431,1
    - Dst: vandq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:442,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:442,1
    - Dst: vpadalq_u32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:443,1
    - Dst: vpaddlq_u16
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:443,1
    - Dst: vpaddlq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:443,1
    - Dst: vcntq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:443,1
    - Dst: vandq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:446,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:446,1
    - Dst: vpadalq_u32
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:447,1
    - Dst: vpaddlq_u16
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:447,1
    - Dst: vpaddlq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:447,1
    - Dst: vcntq_u8
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:447,1
    - Dst: vaddvq_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:456,1
    - Dst: vaddq_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:456,1
    - Dst: vaddvq_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:457,1
    - Dst: vaddq_u64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:457,1
    - Dst: pg_popcount64
      Src: /src/postgres/src/port/pg_popcount_aarch64.c:464,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 3
    argNames:
    - buf
    - bytes
    - mask
    argTypes:
    - char*
    - int
    - bits8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 399
    functionDepth: 1
    functionLinenumber: 399
    functionLinenumberEnd: 475
    functionName: pg_popcount_masked_neon
    functionSourceFile: /src/postgres/src/port/pg_popcount_aarch64.c
    functionUses: 1
    functionsReached:
    - vpadalq_u32
    - UINT64CONST
    - vpaddlq_u8
    - vdupq_n_u8
    - vaddq_u64
    - vcntq_u8
    - vld1q_u8
    - vandq_u8
    - vaddvq_u64
    - vpaddlq_u16
    - pg_popcount64
    - vdupq_n_u64
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_masked_neon(const char *buf, int bytes, bits8 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:
    - memcpy
    - strlen
    - strstr
    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:
    - map_locale
    - unconstify
    - setlocale
    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: 5
    functionsReached:
    - errmsg_internal
    - lengthof
    - ereport
    - 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:38,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/win32pread.c:40,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/port/win32pread.c:43,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/win32pread.c:43,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - fd
    - buf
    - size
    - offset
    argTypes:
    - int
    - void*
    - size_t
    - off_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 19
    functionDepth: 2
    functionLinenumber: 19
    functionLinenumberEnd: 48
    functionName: pg_pread
    functionSourceFile: /src/postgres/src/port/win32pread.c
    functionUses: 1
    functionsReached:
    - Min
    - ReadFile
    - GetLastError
    - _dosmaperr
    - _get_osfhandle
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t pg_pread(int fd, void *buf, size_t size, off_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: 77
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 77
    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
    - memset
    - GetLastError
    - _dosmaperr
    - GetFileInformationByHandle
    - fileattr_to_unixmode
    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:
    - memset
    - pg_RtlGetLastNtStatus
    - S_ISDIR
    - pgwin32_open_handle
    - readlink
    - fileinfo_to_stat
    - CloseHandle
    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:
    - S_ISLNK
    - pg_RtlGetLastNtStatus
    - _pglstat64
    - readlink
    - strlcpy
    - 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:
    - _get_osfhandle
    - memset
    - fileinfo_to_stat
    - 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:
    - _get_osfhandle
    - _fileno
    - pgwin32_get_file_type
    - _fseeki64
    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:
    - _get_osfhandle
    - _ftelli64
    - _fileno
    - 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:82,1
    - Dst: isxdigit
      Src: /src/postgres/src/port/inet_aton.c:88,1
    - Dst: islower
      Src: /src/postgres/src/port/inet_aton.c:91,1
    - Dst: isspace
      Src: /src/postgres/src/port/inet_aton.c:115,1
    - Dst: pg_hton32
      Src: /src/postgres/src/port/inet_aton.c:147,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 55
    argCount: 2
    argNames:
    - cp
    - addr
    argTypes:
    - char*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 149
    functionName: inet_aton
    functionSourceFile: /src/postgres/src/port/inet_aton.c
    functionUses: 0
    functionsReached:
    - isxdigit
    - isdigit
    - pg_hton32
    - isspace
    - islower
    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:
    - lstat
    - _DIAGASSERT
    - stat
    - isdigit
    - open
    - S_ISDIR
    - getpid
    - mkdir
    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: 1
    functionsReached:
    - _DIAGASSERT
    - GETTEMP
    linkageType: ''
    returnType: char
    signature: 'char *

      mkdtemp(char *path)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/port/getopt.c:92,1
    - Dst: fprintf
      Src: /src/postgres/src/port/getopt.c:105,1
    - Dst: fprintf
      Src: /src/postgres/src/port/getopt.c:125,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 43
    argCount: 3
    argNames:
    - nargc
    - nargv
    - ostr
    argTypes:
    - int
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 137
    functionName: getopt
    functionSourceFile: /src/postgres/src/port/getopt.c
    functionUses: 4
    functionsReached:
    - fprintf
    - strchr
    linkageType: ''
    returnType: int
    signature: int getopt(int nargc, char *const *nargv, const char *ostr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _xgetbv
      Src: /src/postgres/src/port/pg_crc32c_sse42_choose.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 54
    functionName: zmm_regs_available
    functionSourceFile: /src/postgres/src/port/pg_crc32c_sse42_choose.c
    functionUses: 1
    functionsReached:
    - _xgetbv
    linkageType: ''
    returnType: bool
    signature: bool zmm_regs_available(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: __get_cpuid
      Src: /src/postgres/src/port/pg_crc32c_sse42_choose.c:74,1
    - Dst: __cpuid
      Src: /src/postgres/src/port/pg_crc32c_sse42_choose.c:76,1
    - Dst: zmm_regs_available
      Src: /src/postgres/src/port/pg_crc32c_sse42_choose.c:86,1
    - Dst: memset
      Src: /src/postgres/src/port/pg_crc32c_sse42_choose.c:90,1
    - Dst: __get_cpuid_count
      Src: /src/postgres/src/port/pg_crc32c_sse42_choose.c:93,1
    - Dst: __cpuidex
      Src: /src/postgres/src/port/pg_crc32c_sse42_choose.c:95,1
    - Dst: pg_comp_crc32c
      Src: /src/postgres/src/port/pg_crc32c_sse42_choose.c:106,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - crc
    - data
    - len
    argTypes:
    - pg_crc32c
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 107
    functionName: pg_comp_crc32c_choose
    functionSourceFile: /src/postgres/src/port/pg_crc32c_sse42_choose.c
    functionUses: 0
    functionsReached:
    - __get_cpuid
    - memset
    - __get_cpuid_count
    - zmm_regs_available
    - __cpuid
    - __cpuidex
    - pg_comp_crc32c
    linkageType: ''
    returnType: pg_crc32c
    signature: pg_crc32c pg_comp_crc32c_choose(pg_crc32c crc, const void *data, size_t
      len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elf_aux_info
      Src: /src/postgres/src/port/pg_crc32c_armv8_choose.c:50,1
    - Dst: elf_aux_info
      Src: /src/postgres/src/port/pg_crc32c_armv8_choose.c:53,1
    - Dst: getauxval
      Src: /src/postgres/src/port/pg_crc32c_armv8_choose.c:58,1
    - Dst: getauxval
      Src: /src/postgres/src/port/pg_crc32c_armv8_choose.c:60,1
    - Dst: memset
      Src: /src/postgres/src/port/pg_crc32c_armv8_choose.c:90,1
    - Dst: sysctlbyname
      Src: /src/postgres/src/port/pg_crc32c_armv8_choose.c:91,1
    - Dst: WIDTHMASK
      Src: /src/postgres/src/port/pg_crc32c_armv8_choose.c:97,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 108
    functionName: pg_crc32c_armv8_available
    functionSourceFile: /src/postgres/src/port/pg_crc32c_armv8_choose.c
    functionUses: 0
    functionsReached:
    - memset
    - getauxval
    - WIDTHMASK
    - elf_aux_info
    - sysctlbyname
    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: 72
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 72
    functionName: WIDTHMASK
    functionSourceFile: /src/postgres/src/port/pg_crc32c_armv8_choose.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WIDTHMASK(w)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_crc32c_armv8_available
      Src: /src/postgres/src/port/pg_crc32c_armv8_choose.c:117,1
    - Dst: pg_comp_crc32c
      Src: /src/postgres/src/port/pg_crc32c_armv8_choose.c:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - crc
    - data
    - len
    argTypes:
    - pg_crc32c
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 114
    functionDepth: 2
    functionLinenumber: 114
    functionLinenumberEnd: 123
    functionName: pg_comp_crc32c_choose
    functionSourceFile: /src/postgres/src/port/pg_crc32c_armv8_choose.c
    functionUses: 0
    functionsReached:
    - pg_crc32c_armv8_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: 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:84,1
    - Dst: openFlagsToCreateFileFlags
      Src: /src/postgres/src/port/open.c:91,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/open.c:107,1
    - Dst: ereport
      Src: /src/postgres/src/port/open.c:114,1
    - Dst: errmsg
      Src: /src/postgres/src/port/open.c:115,1
    - Dst: _
      Src: /src/postgres/src/port/open.c:116,1
    - Dst: _
      Src: /src/postgres/src/port/open.c:116,1
    - Dst: errdetail
      Src: /src/postgres/src/port/open.c:117,1
    - Dst: errhint
      Src: /src/postgres/src/port/open.c:118,1
    - Dst: pg_usleep
      Src: /src/postgres/src/port/open.c:123,1
    - Dst: pg_RtlGetLastNtStatus
      Src: /src/postgres/src/port/open.c:142,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/port/open.c:150,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 |\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: 155
      start: 64
    functionDepth: 2
    functionLinenumber: 64
    functionLinenumberEnd: 155
    functionName: pgwin32_open_handle
    functionSourceFile: /src/postgres/src/port/open.c
    functionUses: 1
    functionsReached:
    - assert
    - errmsg
    - CreateFile
    - pg_RtlGetLastNtStatus
    - pg_usleep
    - GetLastError
    - ereport
    - initialize_ntdll
    - openFlagsToCreateFileFlags
    - errhint
    - _dosmaperr
    - _
    - errdetail
    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:163,1
    - Dst: _open_osfhandle
      Src: /src/postgres/src/port/open.c:182,1
    - Dst: CloseHandle
      Src: /src/postgres/src/port/open.c:183,1
    - Dst: _setmode
      Src: /src/postgres/src/port/open.c:185,1
    - Dst: _close
      Src: /src/postgres/src/port/open.c:187,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - fileName
    - fileFlags
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 157
    functionDepth: 3
    functionLinenumber: 157
    functionLinenumberEnd: 192
    functionName: pgwin32_open
    functionSourceFile: /src/postgres/src/port/open.c
    functionUses: 0
    functionsReached:
    - _close
    - _setmode
    - pgwin32_open_handle
    - CloseHandle
    - _open_osfhandle
    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:200,1
    - Dst: strchr
      Src: /src/postgres/src/port/open.c:202,1
    - Dst: strstr
      Src: /src/postgres/src/port/open.c:204,1
    - Dst: strchr
      Src: /src/postgres/src/port/open.c:206,1
    - Dst: strchr
      Src: /src/postgres/src/port/open.c:208,1
    - Dst: strchr
      Src: /src/postgres/src/port/open.c:211,1
    - Dst: strchr
      Src: /src/postgres/src/port/open.c:213,1
    - Dst: pgwin32_open
      Src: /src/postgres/src/port/open.c:216,1
    - Dst: _fdopen
      Src: /src/postgres/src/port/open.c:219,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - fileName
    - mode
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 194
    functionDepth: 4
    functionLinenumber: 194
    functionLinenumberEnd: 220
    functionName: pgwin32_fopen
    functionSourceFile: /src/postgres/src/port/open.c
    functionUses: 0
    functionsReached:
    - pgwin32_open
    - strchr
    - _fdopen
    - strstr
    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:38,1
    - Dst: _dosmaperr
      Src: /src/postgres/src/port/win32pwrite.c:40,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/win32pwrite.c:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - fd
    - buf
    - size
    - offset
    argTypes:
    - int
    - void*
    - size_t
    - off_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 19
    functionDepth: 2
    functionLinenumber: 19
    functionLinenumberEnd: 45
    functionName: pg_pwrite
    functionSourceFile: /src/postgres/src/port/win32pwrite.c
    functionUses: 3
    functionsReached:
    - Min
    - GetLastError
    - WriteFile
    - _dosmaperr
    - _get_osfhandle
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t pg_pwrite(int fd, const void *buf, size_t size, off_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:
    - GetProcessTimes
    - GetCurrentProcess
    - memset
    - GetLastError
    - _dosmaperr
    - memcpy
    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:
    - CallNamedPipe
    - OpenProcess
    - snprintf
    - GetLastError
    - _dosmaperr
    - TerminateProcess
    - CloseHandle
    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
    - pg_usleep
    - GetLastError
    - MoveFileEx
    - _dosmaperr
    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:
    - rmdir
    - lstat
    - S_ISLNK
    - pg_usleep
    - lstat_error_was_status_delete_pending
    - unlink
    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: 5
    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: 28
    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:
    - snprintf
    - fprintf
    - _dosmaperr
    - RemoveDirectory
    - CloseHandle
    - strlen
    - errcode_for_file_access
    - MAKELANGID
    - memcmp
    - _
    - errmsg
    - DeviceIoControl
    - CreateDirectory
    - strlcpy
    - FormatMessage
    - CreateFile
    - CTL_CODE
    - LocalFree
    - GetLastError
    - ereport
    - MultiByteToWideChar
    - strchr
    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:
    - errmsg
    - CreateFile
    - isalpha
    - MAKELANGID
    - LocalFree
    - GetLastError
    - ereport
    - fprintf
    - WideCharToMultiByte
    - memmove
    - _dosmaperr
    - DeviceIoControl
    - errcode_for_file_access
    - FormatMessage
    - _
    - CloseHandle
    - strlen
    - GetFileAttributes
    linkageType: ''
    returnType: int
    signature: int pgreadlink(const char *path, char *buf, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __get_cpuid
      Src: /src/postgres/src/port/pg_bitutils.c:144,1
    - Dst: __cpuid
      Src: /src/postgres/src/port/pg_bitutils.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 152
    functionName: pg_popcount_available
    functionSourceFile: /src/postgres/src/port/pg_bitutils.c
    functionUses: 0
    functionsReached:
    - __get_cpuid
    - __cpuid
    linkageType: ''
    returnType: bool
    signature: bool pg_popcount_available(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_popcount_available
      Src: /src/postgres/src/port/pg_bitutils.c:163,1
    - Dst: pg_popcount_avx512_available
      Src: /src/postgres/src/port/pg_bitutils.c:179,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 160
    functionDepth: 2
    functionLinenumber: 160
    functionLinenumberEnd: 185
    functionName: choose_popcount_functions
    functionSourceFile: /src/postgres/src/port/pg_bitutils.c
    functionUses: 2
    functionsReached:
    - pg_popcount_avx512_available
    - pg_popcount_available
    linkageType: ''
    returnType: void
    signature: void choose_popcount_functions(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: choose_popcount_functions
      Src: /src/postgres/src/port/pg_bitutils.c:190,1
    - Dst: pg_popcount32
      Src: /src/postgres/src/port/pg_bitutils.c:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - word
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 192
    functionName: pg_popcount32_choose
    functionSourceFile: /src/postgres/src/port/pg_bitutils.c
    functionUses: 0
    functionsReached:
    - pg_popcount32
    - choose_popcount_functions
    linkageType: ''
    returnType: int
    signature: int pg_popcount32_choose(uint32 word)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: choose_popcount_functions
      Src: /src/postgres/src/port/pg_bitutils.c:197,1
    - Dst: pg_popcount64
      Src: /src/postgres/src/port/pg_bitutils.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - word
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 199
    functionName: pg_popcount64_choose
    functionSourceFile: /src/postgres/src/port/pg_bitutils.c
    functionUses: 0
    functionsReached:
    - pg_popcount64
    - choose_popcount_functions
    linkageType: ''
    returnType: int
    signature: int pg_popcount64_choose(uint64 word)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: choose_popcount_functions
      Src: /src/postgres/src/port/pg_bitutils.c:204,1
    - Dst: pg_popcount_optimized
      Src: /src/postgres/src/port/pg_bitutils.c:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buf
    - bytes
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 206
    functionName: pg_popcount_choose
    functionSourceFile: /src/postgres/src/port/pg_bitutils.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_bitutils.c:211,1
    - Dst: pg_popcount_masked
      Src: /src/postgres/src/port/pg_bitutils.c:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - buf
    - bytes
    - mask
    argTypes:
    - char*
    - int
    - bits8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 213
    functionName: pg_popcount_masked_choose
    functionSourceFile: /src/postgres/src/port/pg_bitutils.c
    functionUses: 0
    functionsReached:
    - choose_popcount_functions
    - pg_popcount_masked
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_masked_choose(const char *buf, int bytes, bits8
      mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __popcnt
      Src: /src/postgres/src/port/pg_bitutils.c:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - word
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 230
    functionName: pg_popcount32_fast
    functionSourceFile: /src/postgres/src/port/pg_bitutils.c
    functionUses: 0
    functionsReached:
    - __popcnt
    linkageType: ''
    returnType: int
    signature: int pg_popcount32_fast(uint32 word)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __popcnt64
      Src: /src/postgres/src/port/pg_bitutils.c:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - word
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 247
    functionName: pg_popcount64_fast
    functionSourceFile: /src/postgres/src/port/pg_bitutils.c
    functionUses: 0
    functionsReached:
    - __popcnt64
    linkageType: ''
    returnType: int
    signature: int pg_popcount64_fast(uint64 word)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TYPEALIGN
      Src: /src/postgres/src/port/pg_bitutils.c:260,1
    - Dst: pg_popcount64_fast
      Src: /src/postgres/src/port/pg_bitutils.c:266,1
    - Dst: TYPEALIGN
      Src: /src/postgres/src/port/pg_bitutils.c:274,1
    - Dst: pg_popcount32_fast
      Src: /src/postgres/src/port/pg_bitutils.c:280,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - buf
    - bytes
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 293
    functionName: pg_popcount_fast
    functionSourceFile: /src/postgres/src/port/pg_bitutils.c
    functionUses: 0
    functionsReached:
    - pg_popcount64_fast
    - pg_popcount32_fast
    - TYPEALIGN
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_fast(const char *buf, int bytes)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UINT64CONST
      Src: /src/postgres/src/port/pg_bitutils.c:306,1
    - Dst: TYPEALIGN
      Src: /src/postgres/src/port/pg_bitutils.c:308,1
    - Dst: pg_popcount64_fast
      Src: /src/postgres/src/port/pg_bitutils.c:314,1
    - Dst: TYPEALIGN
      Src: /src/postgres/src/port/pg_bitutils.c:324,1
    - Dst: pg_popcount32_fast
      Src: /src/postgres/src/port/pg_bitutils.c:330,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - buf
    - bytes
    - mask
    argTypes:
    - char*
    - int
    - bits8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 343
    functionName: pg_popcount_masked_fast
    functionSourceFile: /src/postgres/src/port/pg_bitutils.c
    functionUses: 0
    functionsReached:
    - pg_popcount64_fast
    - UINT64CONST
    - pg_popcount32_fast
    - TYPEALIGN
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_masked_fast(const char *buf, int bytes, bits8 mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_popcount
      Src: /src/postgres/src/port/pg_bitutils.c:360,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - word
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 372
    functionName: pg_popcount32_slow
    functionSourceFile: /src/postgres/src/port/pg_bitutils.c
    functionUses: 0
    functionsReached:
    - __builtin_popcount
    linkageType: ''
    returnType: int
    signature: int pg_popcount32_slow(uint32 word)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_popcountl
      Src: /src/postgres/src/port/pg_bitutils.c:383,1
    - Dst: __builtin_popcountll
      Src: /src/postgres/src/port/pg_bitutils.c:385,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - word
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 400
    functionName: pg_popcount64_slow
    functionSourceFile: /src/postgres/src/port/pg_bitutils.c
    functionUses: 0
    functionsReached:
    - __builtin_popcountll
    - __builtin_popcountl
    linkageType: ''
    returnType: int
    signature: int pg_popcount64_slow(uint64 word)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TYPEALIGN
      Src: /src/postgres/src/port/pg_bitutils.c:413,1
    - Dst: pg_popcount64_slow
      Src: /src/postgres/src/port/pg_bitutils.c:419,1
    - Dst: TYPEALIGN
      Src: /src/postgres/src/port/pg_bitutils.c:427,1
    - Dst: pg_popcount32_slow
      Src: /src/postgres/src/port/pg_bitutils.c:433,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - buf
    - bytes
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 406
    functionDepth: 1
    functionLinenumber: 406
    functionLinenumberEnd: 446
    functionName: pg_popcount_slow
    functionSourceFile: /src/postgres/src/port/pg_bitutils.c
    functionUses: 0
    functionsReached:
    - pg_popcount64_slow
    - pg_popcount32_slow
    - TYPEALIGN
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_slow(const char *buf, int bytes)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UINT64CONST
      Src: /src/postgres/src/port/pg_bitutils.c:459,1
    - Dst: TYPEALIGN
      Src: /src/postgres/src/port/pg_bitutils.c:461,1
    - Dst: pg_popcount64_slow
      Src: /src/postgres/src/port/pg_bitutils.c:467,1
    - Dst: TYPEALIGN
      Src: /src/postgres/src/port/pg_bitutils.c:477,1
    - Dst: pg_popcount32_slow
      Src: /src/postgres/src/port/pg_bitutils.c:483,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - buf
    - bytes
    - mask
    argTypes:
    - char*
    - int
    - bits8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 452
    functionDepth: 1
    functionLinenumber: 452
    functionLinenumberEnd: 496
    functionName: pg_popcount_masked_slow
    functionSourceFile: /src/postgres/src/port/pg_bitutils.c
    functionUses: 0
    functionsReached:
    - UINT64CONST
    - pg_popcount32_slow
    - pg_popcount64_slow
    - TYPEALIGN
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_masked_slow(const char *buf, int bytes, bits8 mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_popcount32_slow
      Src: /src/postgres/src/port/pg_bitutils.c:511,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - word
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 508
    functionDepth: 1
    functionLinenumber: 508
    functionLinenumberEnd: 512
    functionName: pg_popcount32
    functionSourceFile: /src/postgres/src/port/pg_bitutils.c
    functionUses: 1
    functionsReached:
    - pg_popcount32_slow
    linkageType: ''
    returnType: int
    signature: int pg_popcount32(uint32 word)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_popcount64_slow
      Src: /src/postgres/src/port/pg_bitutils.c:517,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - word
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 514
    functionDepth: 1
    functionLinenumber: 514
    functionLinenumberEnd: 518
    functionName: pg_popcount64
    functionSourceFile: /src/postgres/src/port/pg_bitutils.c
    functionUses: 4
    functionsReached:
    - pg_popcount64_slow
    linkageType: ''
    returnType: int
    signature: int pg_popcount64(uint64 word)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_popcount_slow
      Src: /src/postgres/src/port/pg_bitutils.c:527,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - bytes
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 524
    functionDepth: 2
    functionLinenumber: 524
    functionLinenumberEnd: 528
    functionName: pg_popcount_optimized
    functionSourceFile: /src/postgres/src/port/pg_bitutils.c
    functionUses: 2
    functionsReached:
    - pg_popcount_slow
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_optimized(const char *buf, int bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_popcount_masked_slow
      Src: /src/postgres/src/port/pg_bitutils.c:537,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buf
    - bytes
    - mask
    argTypes:
    - char*
    - int
    - bits8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 534
    functionDepth: 2
    functionLinenumber: 534
    functionLinenumberEnd: 538
    functionName: pg_popcount_masked_optimized
    functionSourceFile: /src/postgres/src/port/pg_bitutils.c
    functionUses: 1
    functionsReached:
    - pg_popcount_masked_slow
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_popcount_masked_optimized(const char *buf, int bytes, bits8
      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:
    - __builtin_loongarch_crcc_w_h_w
    - __builtin_loongarch_crcc_w_d_w
    - __builtin_loongarch_crcc_w_w_w
    - PointerIsAligned
    - __builtin_loongarch_crcc_w_b_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:
    - strspn
    - malloc
    - strrchr
    - memset
    - GetLocaleInfoEx
    - MultiByteToWideChar
    - sprintf
    - strlen
    - 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:
    - errmsg
    - sprintf
    - pg_strcasecmp
    - ereport
    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:
    - errmsg
    - setlocale
    - strlen
    - freelocale
    - fputc
    - fprintf
    - ereport
    - nl_langinfo_l
    - strdup
    - _
    - win32_get_codeset
    - newlocale
    - pg_strcasecmp
    - free
    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
    - SQL_STR_DOUBLE
    - strlen
    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: 3
    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: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int tarChecksum(char *header)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/port/tar.c:117,1
    - Dst: strlen
      Src: /src/postgres/src/port/tar.c:120,1
    - Dst: memset
      Src: /src/postgres/src/port/tar.c:123,1
    - Dst: strlcpy
      Src: /src/postgres/src/port/tar.c:126,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/port/tar.c:127,1
    - Dst: strlen
      Src: /src/postgres/src/port/tar.c:134,1
    - Dst: Min
      Src: /src/postgres/src/port/tar.c:136,1
    - Dst: print_tar_number
      Src: /src/postgres/src/port/tar.c:142,1
    - Dst: print_tar_number
      Src: /src/postgres/src/port/tar.c:145,1
    - Dst: print_tar_number
      Src: /src/postgres/src/port/tar.c:148,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/port/tar.c:151,1
    - Dst: print_tar_number
      Src: /src/postgres/src/port/tar.c:153,1
    - Dst: print_tar_number
      Src: /src/postgres/src/port/tar.c:155,1
    - Dst: print_tar_number
      Src: /src/postgres/src/port/tar.c:158,1
    - Dst: strlcpy
      Src: /src/postgres/src/port/tar.c:167,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/port/tar.c:169,1
    - Dst: strcpy
      Src: /src/postgres/src/port/tar.c:181,1
    - Dst: memcpy
      Src: /src/postgres/src/port/tar.c:184,1
    - Dst: strlcpy
      Src: /src/postgres/src/port/tar.c:188,1
    - Dst: strlcpy
      Src: /src/postgres/src/port/tar.c:192,1
    - Dst: print_tar_number
      Src: /src/postgres/src/port/tar.c:195,1
    - Dst: print_tar_number
      Src: /src/postgres/src/port/tar.c:198,1
    - Dst: print_tar_number
      Src: /src/postgres/src/port/tar.c:203,1
    - Dst: tarChecksum
      Src: /src/postgres/src/port/tar.c:203,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: 206
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 206
    functionName: tarCreateHeader
    functionSourceFile: /src/postgres/src/port/tar.c
    functionUses: 3
    functionsReached:
    - tarChecksum
    - Min
    - memcpy
    - memset
    - S_ISDIR
    - strlcpy
    - print_tar_number
    - strlen
    - strcpy
    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:47,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - dst
    - src
    - siz
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 60
    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:
    - win32_socket_strerror
    - snprintf
    - gnuish_strerror_r
    - get_errno_symbol
    - _
    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
    - strerror_r
    - strlcpy
    linkageType: ''
    returnType: char
    signature: 'char *

      gnuish_strerror_r(int errnum, char *buf, size_t buflen)'
  - BBCount: 64
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 130
    argCount: 1
    argNames:
    - errnum
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 266
    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:281,1
    - Dst: snprintf
      Src: /src/postgres/src/port/strerror.c:285,1
    - Dst: GetLastError
      Src: /src/postgres/src/port/strerror.c:287,1
    - Dst: ZeroMemory
      Src: /src/postgres/src/port/strerror.c:292,1
    - Dst: FormatMessage
      Src: /src/postgres/src/port/strerror.c:293,1
    - Dst: MAKELANGID
      Src: /src/postgres/src/port/strerror.c:298,1
    - Dst: snprintf
      Src: /src/postgres/src/port/strerror.c:304,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - errnum
    - buf
    - buflen
    argTypes:
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 308
    functionName: win32_socket_strerror
    functionSourceFile: /src/postgres/src/port/strerror.c
    functionUses: 1
    functionsReached:
    - MAKELANGID
    - LoadLibraryEx
    - snprintf
    - GetLastError
    - ZeroMemory
    - FormatMessage
    linkageType: ''
    returnType: char
    signature: 'char *

      win32_socket_strerror(int errnum, char *buf, size_t buflen)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - str
    - maxlen
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 33
    functionName: strnlen
    functionSourceFile: /src/postgres/src/port/strnlen.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t strnlen(const char *str, size_t maxlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset_s
      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_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: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:
    - 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:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 47
    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:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 55
    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:
    - unconstify
    - IS_PATH_VAR_SEP
    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: 4
    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:
    - snprintf
    - strlcpy
    - strlen
    - skip_drive
    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: 19
    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:
    - trim_directory
    - trim_trailing_separator
    - Assert
    - debackslash_path
    - skip_drive
    - append_subdir_to_path
    - strcmp
    - 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:
    - IS_DIR_SEP
    - isalpha
    - path_contains_parent_reference
    - is_absolute_path
    linkageType: ''
    returnType: bool
    signature: bool path_is_relative_and_below_cwd(const char *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/port/path.c:639,1
    - Dst: strncmp
      Src: /src/postgres/src/port/path.c:641,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:642,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - path1
    - path2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 636
    functionDepth: 1
    functionLinenumber: 636
    functionLinenumberEnd: 645
    functionName: path_is_prefix_of_path
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 2
    functionsReached:
    - strncmp
    - strlen
    - IS_DIR_SEP
    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:657,1
    - Dst: skip_drive
      Src: /src/postgres/src/port/path.c:661,1
    - Dst: strdup
      Src: /src/postgres/src/port/path.c:667,1
    - Dst: fprintf
      Src: /src/postgres/src/port/path.c:670,1
    - Dst: abort
      Src: /src/postgres/src/port/path.c:671,1
    - Dst: strlen
      Src: /src/postgres/src/port/path.c:676,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/port/path.c:677,1
    - Dst: strlen
      Src: /src/postgres/src/port/path.c:677,1
    - Dst: strlen
      Src: /src/postgres/src/port/path.c:678,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - argv0
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 651
    functionDepth: 3
    functionLinenumber: 651
    functionLinenumberEnd: 682
    functionName: get_progname
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 37
    functionsReached:
    - skip_drive
    - last_dir_separator
    - fprintf
    - strdup
    - abort
    - pg_strcasecmp
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      get_progname(const char *argv0)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_tolower
      Src: /src/postgres/src/port/path.c:699,1
    - Dst: pg_tolower
      Src: /src/postgres/src/port/path.c:699,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:701,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:701,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 689
    functionDepth: 1
    functionLinenumber: 689
    functionLinenumberEnd: 710
    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:753,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:753,1
    - Dst: strlen
      Src: /src/postgres/src/port/path.c:760,1
    - Dst: strlcpy
      Src: /src/postgres/src/port/path.c:766,1
    - Dst: trim_directory
      Src: /src/postgres/src/port/path.c:767,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/port/path.c:768,1
    - Dst: strlen
      Src: /src/postgres/src/port/path.c:773,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:775,1
    - Dst: dir_strcmp
      Src: /src/postgres/src/port/path.c:776,1
    - Dst: trim_trailing_separator
      Src: /src/postgres/src/port/path.c:779,1
    - Dst: join_path_components
      Src: /src/postgres/src/port/path.c:780,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/port/path.c:781,1
    - Dst: strlcpy
      Src: /src/postgres/src/port/path.c:786,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/port/path.c:787,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: 788
      start: 737
    functionDepth: 3
    functionLinenumber: 737
    functionLinenumberEnd: 788
    functionName: make_relative_path
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 0
    functionsReached:
    - trim_directory
    - trim_trailing_separator
    - IS_DIR_SEP
    - join_path_components
    - strlcpy
    - dir_strcmp
    - canonicalize_path
    - strlen
    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:815,1
    - Dst: malloc
      Src: /src/postgres/src/port/path.c:823,1
    - Dst: ereport
      Src: /src/postgres/src/port/path.c:827,1
    - Dst: errcode
      Src: /src/postgres/src/port/path.c:828,1
    - Dst: errmsg
      Src: /src/postgres/src/port/path.c:829,1
    - Dst: fprintf
      Src: /src/postgres/src/port/path.c:831,1
    - Dst: _
      Src: /src/postgres/src/port/path.c:831,1
    - Dst: getcwd
      Src: /src/postgres/src/port/path.c:836,1
    - Dst: free
      Src: /src/postgres/src/port/path.c:840,1
    - Dst: free
      Src: /src/postgres/src/port/path.c:848,1
    - Dst: elog
      Src: /src/postgres/src/port/path.c:851,1
    - Dst: fprintf
      Src: /src/postgres/src/port/path.c:853,1
    - Dst: _
      Src: /src/postgres/src/port/path.c:853,1
    - Dst: strlen
      Src: /src/postgres/src/port/path.c:859,1
    - Dst: strlen
      Src: /src/postgres/src/port/path.c:859,1
    - Dst: malloc::malloc
      Src: /src/postgres/src/port/path.c:859,1
    - Dst: free
      Src: /src/postgres/src/port/path.c:862,1
    - Dst: ereport
      Src: /src/postgres/src/port/path.c:864,1
    - Dst: errcode
      Src: /src/postgres/src/port/path.c:865,1
    - Dst: errmsg
      Src: /src/postgres/src/port/path.c:866,1
    - Dst: fprintf
      Src: /src/postgres/src/port/path.c:868,1
    - Dst: _
      Src: /src/postgres/src/port/path.c:868,1
    - Dst: free
      Src: /src/postgres/src/port/path.c:873,1
    - Dst: strdup::strdup
      Src: /src/postgres/src/port/path.c:877,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
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 44
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 806
    functionDepth: 1
    functionLinenumber: 806
    functionLinenumberEnd: 895
    functionName: make_absolute_path
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 3
    functionsReached:
    - errmsg
    - malloc::malloc
    - malloc
    - is_absolute_path
    - ereport
    - fprintf
    - elog
    - _
    - getcwd
    - strdup::strdup
    - strlen
    - errcode
    - free
    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:904,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - my_exec_path
    - ret_path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 905
      start: 901
    functionDepth: 4
    functionLinenumber: 901
    functionLinenumberEnd: 905
    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:913,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - my_exec_path
    - ret_path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 914
      start: 910
    functionDepth: 4
    functionLinenumber: 910
    functionLinenumberEnd: 914
    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:922,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - my_exec_path
    - ret_path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 919
    functionDepth: 4
    functionLinenumber: 919
    functionLinenumberEnd: 923
    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:931,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - my_exec_path
    - ret_path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 928
    functionDepth: 4
    functionLinenumber: 928
    functionLinenumberEnd: 932
    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:940,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - my_exec_path
    - ret_path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 937
    functionDepth: 4
    functionLinenumber: 937
    functionLinenumberEnd: 941
    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:949,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - my_exec_path
    - ret_path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 946
    functionDepth: 4
    functionLinenumber: 946
    functionLinenumberEnd: 950
    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:958,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - my_exec_path
    - ret_path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 955
    functionDepth: 4
    functionLinenumber: 955
    functionLinenumberEnd: 959
    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:967,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - my_exec_path
    - ret_path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 964
    functionDepth: 4
    functionLinenumber: 964
    functionLinenumberEnd: 968
    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:976,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - my_exec_path
    - ret_path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 973
    functionDepth: 4
    functionLinenumber: 973
    functionLinenumberEnd: 977
    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:985,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - my_exec_path
    - ret_path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 982
    functionDepth: 4
    functionLinenumber: 982
    functionLinenumberEnd: 986
    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:994,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - my_exec_path
    - ret_path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 991
    functionDepth: 4
    functionLinenumber: 991
    functionLinenumberEnd: 995
    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:1014,1
    - Dst: strlcpy
      Src: /src/postgres/src/port/path.c:1017,1
    - Dst: getpwuid_r
      Src: /src/postgres/src/port/path.c:1027,1
    - Dst: geteuid
      Src: /src/postgres/src/port/path.c:1027,1
    - Dst: strlcpy
      Src: /src/postgres/src/port/path.c:1030,1
    - Dst: getenv
      Src: /src/postgres/src/port/path.c:1043,1
    - Dst: snprintf
      Src: /src/postgres/src/port/path.c:1046,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - ret_path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1004
    functionDepth: 1
    functionLinenumber: 1004
    functionLinenumberEnd: 1049
    functionName: get_home_path
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 3
    functionsReached:
    - getenv
    - getpwuid_r
    - snprintf
    - strlcpy
    - geteuid
    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:1070,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1071
      start: 1067
    functionDepth: 1
    functionLinenumber: 1067
    functionLinenumberEnd: 1071
    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:1089,1
    - Dst: strlen
      Src: /src/postgres/src/port/path.c:1095,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:1095,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:1098,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:1101,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:1104,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 14
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1108
      start: 1084
    functionDepth: 2
    functionLinenumber: 1084
    functionLinenumberEnd: 1108
    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:1121,1
    - Dst: strlen
      Src: /src/postgres/src/port/path.c:1122,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/port/path.c:1124,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1126
      start: 1116
    functionDepth: 2
    functionLinenumber: 1116
    functionLinenumberEnd: 1126
    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:1141,1
    - Dst: memmove
      Src: /src/postgres/src/port/path.c:1145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - path
    - subdir
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1148
      start: 1138
    functionDepth: 0
    functionLinenumber: 1138
    functionLinenumberEnd: 1148
    functionName: append_subdir_to_path
    functionSourceFile: /src/postgres/src/port/path.c
    functionUses: 1
    functionsReached:
    - strlen
    - memmove
    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:
    - pg_vsnprintf
    - va_end
    - va_start
    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: 0
    functionsReached:
    - va_end
    - pg_vsprintf
    - va_start
    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_end
    - pg_vfprintf
    - va_start
    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_end
    - pg_vfprintf
    - va_start
    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: 86
    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:622,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:624,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:626,1
    - Dst: fmtint
      Src: /src/postgres/src/port/snprintf.c:628,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:654,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:656,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:658,1
    - Dst: fmtint
      Src: /src/postgres/src/port/snprintf.c:660,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:674,1
    - Dst: fmtchar
      Src: /src/postgres/src/port/snprintf.c:675,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:688,1
    - Dst: fmtstr
      Src: /src/postgres/src/port/snprintf.c:692,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:700,1
    - Dst: fmtptr
      Src: /src/postgres/src/port/snprintf.c:701,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:718,1
    - Dst: fmtfloat
      Src: /src/postgres/src/port/snprintf.c:719,1
    - Dst: strerror_r
      Src: /src/postgres/src/port/snprintf.c:727,1
    - Dst: dostr
      Src: /src/postgres/src/port/snprintf.c:730,1
    - Dst: strlen
      Src: /src/postgres/src/port/snprintf.c:730,1
    - Dst: dopr_outch
      Src: /src/postgres/src/port/snprintf.c:734,1
    CyclomaticComplexity: 78
    EdgeCount: 78
    ICount: 249
    argCount: 3
    argNames:
    - target
    - format
    - args
    argTypes:
    - PrintfTarget*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 372
    functionDepth: 1
    functionLinenumber: 372
    functionLinenumberEnd: 755
    functionName: dopr
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 3
    functionsReached:
    - fmtstr
    - fmtint
    - fmtptr
    - fmtfloat
    - va_arg
    - find_arguments
    - strerror_r
    - fmtchar
    - dopr_outch
    - strchrnul
    - dostr
    - strlen
    linkageType: ''
    returnType: void
    signature: void dopr(PrintfTarget *target, const char *format, va_list args)
  - BBCount: 64
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/port/snprintf.c:791,1
    - Dst: Max
      Src: /src/postgres/src/port/snprintf.c:838,1
    - Dst: Max
      Src: /src/postgres/src/port/snprintf.c:906,1
    - Dst: Max
      Src: /src/postgres/src/port/snprintf.c:918,1
    - Dst: Max
      Src: /src/postgres/src/port/snprintf.c:931,1
    - Dst: Max
      Src: /src/postgres/src/port/snprintf.c:947,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:979,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:982,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:985,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:988,1
    - Dst: va_arg
      Src: /src/postgres/src/port/snprintf.c:991,1
    CyclomaticComplexity: 52
    EdgeCount: 52
    ICount: 166
    argCount: 3
    argNames:
    - format
    - args
    - argvalues
    argTypes:
    - char*
    - va_list
    - PrintfArgValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 763
    functionDepth: 0
    functionLinenumber: 763
    functionLinenumberEnd: 997
    functionName: find_arguments
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 1
    functionsReached:
    - va_arg
    - Max
    - 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:1011,1
    - Dst: strlen
      Src: /src/postgres/src/port/snprintf.c:1013,1
    - Dst: compute_padlen
      Src: /src/postgres/src/port/snprintf.c:1015,1
    - Dst: dopr_outchmulti
      Src: /src/postgres/src/port/snprintf.c:1019,1
    - Dst: dostr
      Src: /src/postgres/src/port/snprintf.c:1023,1
    - Dst: trailing_pad
      Src: /src/postgres/src/port/snprintf.c:1025,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: 1026
      start: 999
    functionDepth: 1
    functionLinenumber: 999
    functionLinenumberEnd: 1026
    functionName: fmtstr
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 1
    functionsReached:
    - trailing_pad
    - compute_padlen
    - dopr_outchmulti
    - dostr
    - strlen
    - strnlen
    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:1035,1
    - Dst: dostr
      Src: /src/postgres/src/port/snprintf.c:1039,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - value
    - target
    argTypes:
    - void*
    - PrintfTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1040
      start: 1028
    functionDepth: 1
    functionLinenumber: 1028
    functionLinenumberEnd: 1040
    functionName: fmtptr
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 1
    functionsReached:
    - snprintf
    - dostr
    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:1091,1
    - Dst: Max
      Src: /src/postgres/src/port/snprintf.c:1139,1
    - Dst: compute_padlen
      Src: /src/postgres/src/port/snprintf.c:1141,1
    - Dst: leading_pad
      Src: /src/postgres/src/port/snprintf.c:1143,1
    - Dst: dopr_outchmulti
      Src: /src/postgres/src/port/snprintf.c:1146,1
    - Dst: dostr
      Src: /src/postgres/src/port/snprintf.c:1148,1
    - Dst: trailing_pad
      Src: /src/postgres/src/port/snprintf.c:1150,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: 1151
      start: 1042
    functionDepth: 1
    functionLinenumber: 1042
    functionLinenumberEnd: 1151
    functionName: fmtint
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 1
    functionsReached:
    - leading_pad
    - adjust_sign
    - Max
    - trailing_pad
    - compute_padlen
    - dopr_outchmulti
    - dostr
    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:1158,1
    - Dst: dopr_outchmulti
      Src: /src/postgres/src/port/snprintf.c:1162,1
    - Dst: dopr_outch
      Src: /src/postgres/src/port/snprintf.c:1166,1
    - Dst: trailing_pad
      Src: /src/postgres/src/port/snprintf.c:1168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - value
    - leftjust
    - minlen
    - target
    argTypes:
    - int
    - int
    - int
    - PrintfTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1169
      start: 1153
    functionDepth: 1
    functionLinenumber: 1153
    functionLinenumberEnd: 1169
    functionName: fmtchar
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 1
    functionsReached:
    - dopr_outchmulti
    - trailing_pad
    - dopr_outch
    - compute_padlen
    linkageType: ''
    returnType: void
    signature: void fmtchar(int value, int leftjust, int minlen, PrintfTarget *target)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/port/snprintf.c:1203,1
    - Dst: isnan
      Src: /src/postgres/src/port/snprintf.c:1205,1
    - Dst: strcpy
      Src: /src/postgres/src/port/snprintf.c:1207,1
    - Dst: adjust_sign
      Src: /src/postgres/src/port/snprintf.c:1221,1
    - Dst: memcmp
      Src: /src/postgres/src/port/snprintf.c:1223,1
    - Dst: isinf
      Src: /src/postgres/src/port/snprintf.c:1227,1
    - Dst: strcpy
      Src: /src/postgres/src/port/snprintf.c:1229,1
    - Dst: snprintf
      Src: /src/postgres/src/port/snprintf.c:1241,1
    - Dst: snprintf
      Src: /src/postgres/src/port/snprintf.c:1248,1
    - Dst: compute_padlen
      Src: /src/postgres/src/port/snprintf.c:1270,1
    - Dst: leading_pad
      Src: /src/postgres/src/port/snprintf.c:1272,1
    - Dst: strrchr
      Src: /src/postgres/src/port/snprintf.c:1277,1
    - Dst: strrchr
      Src: /src/postgres/src/port/snprintf.c:1280,1
    - Dst: dostr
      Src: /src/postgres/src/port/snprintf.c:1284,1
    - Dst: dopr_outchmulti
      Src: /src/postgres/src/port/snprintf.c:1285,1
    - Dst: dostr
      Src: /src/postgres/src/port/snprintf.c:1286,1
    - Dst: dostr
      Src: /src/postgres/src/port/snprintf.c:1291,1
    - Dst: dopr_outchmulti
      Src: /src/postgres/src/port/snprintf.c:1292,1
    - Dst: dostr
      Src: /src/postgres/src/port/snprintf.c:1298,1
    - Dst: trailing_pad
      Src: /src/postgres/src/port/snprintf.c:1301,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 58
    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: 1306
      start: 1171
    functionDepth: 1
    functionLinenumber: 1171
    functionLinenumberEnd: 1306
    functionName: fmtfloat
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 1
    functionsReached:
    - isnan
    - Min
    - isinf
    - strrchr
    - memcmp
    - snprintf
    - leading_pad
    - adjust_sign
    - trailing_pad
    - compute_padlen
    - dopr_outchmulti
    - dostr
    - strcpy
    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: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/port/snprintf.c:1327,1
    - Dst: isnan
      Src: /src/postgres/src/port/snprintf.c:1348,1
    - Dst: strcpy
      Src: /src/postgres/src/port/snprintf.c:1350,1
    - Dst: memcmp
      Src: /src/postgres/src/port/snprintf.c:1359,1
    - Dst: isinf
      Src: /src/postgres/src/port/snprintf.c:1365,1
    - Dst: strcpy
      Src: /src/postgres/src/port/snprintf.c:1367,1
    - Dst: snprintf
      Src: /src/postgres/src/port/snprintf.c:1377,1
    - Dst: dopr_outch
      Src: /src/postgres/src/port/snprintf.c:1398,1
    - Dst: dostr
      Src: /src/postgres/src/port/snprintf.c:1400,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 48
    argCount: 4
    argNames:
    - str
    - count
    - precision
    - value
    argTypes:
    - char*
    - size_t
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1406
      start: 1317
    functionDepth: 1
    functionLinenumber: 1317
    functionLinenumberEnd: 1406
    functionName: pg_strfromd
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 0
    functionsReached:
    - isnan
    - Assert
    - isinf
    - memcmp
    - snprintf
    - dopr_outch
    - dostr
    - strcpy
    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: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: memmove
      Src: /src/postgres/src/port/snprintf.c:1439,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - str
    - slen
    - target
    argTypes:
    - char*
    - int
    - PrintfTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1444
      start: 1409
    functionDepth: 1
    functionLinenumber: 1409
    functionLinenumberEnd: 1444
    functionName: dostr
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 6
    functionsReached:
    - Min
    - dopr_outch
    - flushbuffer
    - memmove
    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:1457,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - c
    - target
    argTypes:
    - int
    - PrintfTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1460
      start: 1446
    functionDepth: 1
    functionLinenumber: 1446
    functionLinenumberEnd: 1460
    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:1468,1
    - Dst: flushbuffer
      Src: /src/postgres/src/port/snprintf.c:1488,1
    - Dst: Min
      Src: /src/postgres/src/port/snprintf.c:1491,1
    - Dst: memset
      Src: /src/postgres/src/port/snprintf.c:1492,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - c
    - slen
    - target
    argTypes:
    - int
    - int
    - PrintfTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1496
      start: 1462
    functionDepth: 2
    functionLinenumber: 1462
    functionLinenumberEnd: 1496
    functionName: dopr_outchmulti
    functionSourceFile: /src/postgres/src/port/snprintf.c
    functionUses: 4
    functionsReached:
    - memset
    - Min
    - dopr_outch
    - flushbuffer
    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: 1510
      start: 1499
    functionDepth: 0
    functionLinenumber: 1499
    functionLinenumberEnd: 1510
    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: 1524
      start: 1513
    functionDepth: 0
    functionLinenumber: 1513
    functionLinenumberEnd: 1524
    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:1536,1
    - Dst: dopr_outchmulti
      Src: /src/postgres/src/port/snprintf.c:1542,1
    - Dst: dopr_outchmulti
      Src: /src/postgres/src/port/snprintf.c:1549,1
    - Dst: dopr_outch
      Src: /src/postgres/src/port/snprintf.c:1554,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 4
    argNames:
    - zpad
    - signvalue
    - padlen
    - target
    argTypes:
    - int
    - int
    - int*
    - PrintfTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1560
      start: 1527
    functionDepth: 3
    functionLinenumber: 1527
    functionLinenumberEnd: 1560
    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:1567,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - padlen
    - target
    argTypes:
    - int
    - PrintfTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1568
      start: 1563
    functionDepth: 3
    functionLinenumber: 1563
    functionLinenumberEnd: 1568
    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:
    - lconv_string_member
    - lengthof
    - free
    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:
    - lconv_string_member
    - lengthof
    - lconv_char_member
    - nl_langinfo_l
    - strdup
    - pg_localeconv_free
    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:
    - lconv_string_member
    - lengthof
    - lconv_char_member
    - strdup
    - pg_localeconv_free
    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:
    - localeconv_l
    - wcsdup
    - _configthreadlocale
    - pthread_mutex_lock
    - setlocale
    - memset
    - freelocale
    - pg_localeconv_copy_members
    - pthread_mutex_unlock
    - free
    - localeconv
    - newlocale
    - uselocale
    - pg_localeconv_from_langinfo
    - _wsetlocale
    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:
    - SetEnvironmentVariable
    - putenvFunc
    - GetModuleHandleEx
    - GetProcAddress
    - FreeLibrary
    - _putenv
    - strdup
    - free
    - strchr
    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:
    - getenv
    - malloc
    - pgwin32_putenv
    - free
    - sprintf
    - strlen
    - strchr
    linkageType: ''
    returnType: int
    signature: int pgwin32_setenv(const char *name, const char *value, int overwrite)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/port/win32env.c:155,1
    - Dst: strlen
      Src: /src/postgres/src/port/win32env.c:155,1
    - Dst: sprintf
      Src: /src/postgres/src/port/win32env.c:159,1
    - Dst: pgwin32_putenv
      Src: /src/postgres/src/port/win32env.c:160,1
    - Dst: free
      Src: /src/postgres/src/port/win32env.c:161,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 149
    functionDepth: 2
    functionLinenumber: 149
    functionLinenumberEnd: 163
    functionName: pgwin32_unsetenv
    functionSourceFile: /src/postgres/src/port/win32env.c
    functionUses: 0
    functionsReached:
    - malloc
    - pgwin32_putenv
    - sprintf
    - strlen
    - free
    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: 1
    functionsReached:
    - RAND_bytes
    - RAND_poll
    - RAND_status
    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: 1
    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: 1
    functionsReached:
    - close
    - open
    - 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:
    - fprintf
    - strcspn
    - strncmp
    - strlen
    - strchr
    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_ipv4
    - inet_net_ntop_ipv6
    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
    - memset
    - SPRINTF
    - strlen
    - strcpy
    linkageType: ''
    returnType: char
    signature: 'char *

      inet_net_ntop_ipv6(const u_char *src, int bits, char *dst, size_t size)'
  - 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:
    - memset
    - pg_RtlNtStatusToDosError
    - initialize_ntdll
    - NT_SUCCESS
    - _dosmaperr
    - pg_NtFlushBuffersFileEx
    - _get_osfhandle
    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:
    - snprintf
    - GetLastError
    - FormatMessage
    - MAKELANGID
    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:
    - set_dl_error
    - GetProcAddress
    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
    - LoadLibrary
    - set_dl_error
    linkageType: ''
    returnType: void
    signature: 'void *

      dlopen(const char *file, int mode)'
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/port/pgmkdirp.c:71,1
    - Dst: strstr
      Src: /src/postgres/src/port/pgmkdirp.c:76,1
    - Dst: umask
      Src: /src/postgres/src/port/pgmkdirp.c:103,1
    - Dst: umask
      Src: /src/postgres/src/port/pgmkdirp.c:105,1
    - Dst: umask
      Src: /src/postgres/src/port/pgmkdirp.c:120,1
    - Dst: stat
      Src: /src/postgres/src/port/pgmkdirp.c:123,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/port/pgmkdirp.c:125,1
    - Dst: mkdir
      Src: /src/postgres/src/port/pgmkdirp.c:135,1
    - Dst: umask
      Src: /src/postgres/src/port/pgmkdirp.c:145,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 48
    argCount: 2
    argNames:
    - path
    - omode
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 148
    functionName: pg_mkdir_p
    functionSourceFile: /src/postgres/src/port/pgmkdirp.c
    functionUses: 8
    functionsReached:
    - umask
    - strstr
    - stat
    - S_ISDIR
    - mkdir
    - strlen
    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:
    - isnan
    - isinf
    - strtod
    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: write_stderr
      Src: /src/postgres/src/port/win32security.c:34,1
    - Dst: fprintf
      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: 0
    functionLinenumber: 27
    functionLinenumberEnd: 39
    functionName: log_error
    functionSourceFile: /src/postgres/src/port/win32security.c
    functionUses: 261
    functionsReached:
    - va_end
    - va_start
    - write_stderr
    - fprintf
    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:
    - CheckTokenMembership
    - AllocateAndInitializeSid
    - GetLastError
    - FreeSid
    - exit
    - _
    - log_error
    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:
    - CheckTokenMembership
    - AllocateAndInitializeSid
    - GetLastError
    - FreeSid
    - fprintf
    - GetStdHandle
    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:
    - _dosmaperr
    - GetLastError
    - 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:
    - ucred_geteuid
    - getsockopt
    - ucred_free
    - getpeerucred
    - ucred_getegid
    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:
    - lengthof
    - LoadLibraryEx
    - GetLastError
    - GetProcAddress
    - _dosmaperr
    - FreeLibrary
    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: 7
    functionsReached:
    - Assert
    - GetSystemTimePreciseAsFileTime
    linkageType: ''
    returnType: int
    signature: int gettimeofday(struct timeval *tp, void *tzp)
  - 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
    - malloc
    - GetFileAttributes
    - strlen
    - free
    - 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:
    - FindNextFile
    - GetLastError
    - FindFirstFile
    - _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:
    - free
    - FindClose
    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: 18
    functionsReached:
    - SleepEx
    - nanosleep
    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:42,1
    - Dst: _mm_crc32_u32
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:49,1
    - Dst: _mm_crc32_u32
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:60,1
    - Dst: _mm_crc32_u8
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:68,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - crc
    - data
    - len
    argTypes:
    - pg_crc32c
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 73
    functionName: pg_comp_crc32c_sse42
    functionSourceFile: /src/postgres/src/port/pg_crc32c_sse42.c
    functionUses: 0
    functionsReached:
    - _mm_crc32_u64
    - _mm_crc32_u32
    - _mm_crc32_u8
    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: 91
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 91
    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: 92
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 92
    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:102,1
    - Dst: _mm_crc32_u8
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:105,1
    - Dst: _mm_crc32_u64
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:108,1
    - Dst: _mm512_loadu_si512
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:121,1
    - Dst: _mm512_broadcast_i32x4
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:125,1
    - Dst: _mm_setr_epi32
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:125,1
    - Dst: _mm512_xor_si512
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:126,1
    - Dst: _mm512_zextsi128_si512
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:126,1
    - Dst: _mm_cvtsi32_si128
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:126,1
    - Dst: clmul_lo
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:132,1
    - Dst: clmul_hi
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:132,1
    - Dst: _mm512_ternarylogic_epi64
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:133,1
    - Dst: _mm512_loadu_si512
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:134,1
    - Dst: _mm512_setr_epi32
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:140,1
    - Dst: clmul_lo
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:144,1
    - Dst: clmul_hi
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:144,1
    - Dst: _mm512_xor_si512
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:145,1
    - Dst: _mm_ternarylogic_epi64
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:146,1
    - Dst: _mm512_castsi512_si128
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:146,1
    - Dst: _mm512_extracti32x4_epi32
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:147,1
    - Dst: _mm512_extracti32x4_epi32
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:148,1
    - Dst: _mm_xor_si128
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:150,1
    - Dst: _mm512_extracti32x4_epi32
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:150,1
    - Dst: _mm_crc32_u64
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:153,1
    - Dst: _mm_extract_epi64
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:153,1
    - Dst: _mm_crc32_u64
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:154,1
    - Dst: _mm_extract_epi64
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:154,1
    - Dst: pg_comp_crc32c_sse42
      Src: /src/postgres/src/port/pg_crc32c_sse42.c:158,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 3
    argNames:
    - crc
    - data
    - len
    argTypes:
    - pg_crc32c
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 159
    functionName: pg_comp_crc32c_avx512
    functionSourceFile: /src/postgres/src/port/pg_crc32c_sse42.c
    functionUses: 0
    functionsReached:
    - clmul_lo
    - _mm_cvtsi32_si128
    - _mm512_zextsi128_si512
    - clmul_hi
    - _mm512_xor_si512
    - _mm_extract_epi64
    - _mm512_extracti32x4_epi32
    - _mm_ternarylogic_epi64
    - _mm_xor_si128
    - _mm512_setr_epi32
    - _mm_crc32_u64
    - _mm512_ternarylogic_epi64
    - _mm512_castsi512_si128
    - _mm_setr_epi32
    - _mm512_loadu_si512
    - pg_comp_crc32c_sse42
    - unlikely
    - _mm512_broadcast_i32x4
    - _mm_crc32_u8
    linkageType: ''
    returnType: pg_crc32c
    signature: pg_crc32c pg_comp_crc32c_avx512(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:47,1
    - Dst: isupper
      Src: /src/postgres/src/port/pgstrcasecmp.c:47,1
    - Dst: tolower
      Src: /src/postgres/src/port/pgstrcasecmp.c:48,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/port/pgstrcasecmp.c:52,1
    - Dst: isupper
      Src: /src/postgres/src/port/pgstrcasecmp.c:52,1
    - Dst: tolower
      Src: /src/postgres/src/port/pgstrcasecmp.c:53,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 18
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 62
    functionName: pg_strcasecmp
    functionSourceFile: /src/postgres/src/port/pgstrcasecmp.c
    functionUses: 41
    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:80,1
    - Dst: isupper
      Src: /src/postgres/src/port/pgstrcasecmp.c:80,1
    - Dst: tolower
      Src: /src/postgres/src/port/pgstrcasecmp.c:81,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/port/pgstrcasecmp.c:85,1
    - Dst: isupper
      Src: /src/postgres/src/port/pgstrcasecmp.c:85,1
    - Dst: tolower
      Src: /src/postgres/src/port/pgstrcasecmp.c:86,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 18
    argCount: 3
    argNames:
    - s1
    - s2
    - n
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 95
    functionName: pg_strncasecmp
    functionSourceFile: /src/postgres/src/port/pgstrcasecmp.c
    functionUses: 12
    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:109,1
    - Dst: islower
      Src: /src/postgres/src/port/pgstrcasecmp.c:109,1
    - Dst: toupper
      Src: /src/postgres/src/port/pgstrcasecmp.c:110,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 112
    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:126,1
    - Dst: isupper
      Src: /src/postgres/src/port/pgstrcasecmp.c:126,1
    - Dst: tolower
      Src: /src/postgres/src/port/pgstrcasecmp.c:127,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 129
    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: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 140
    functionName: pg_ascii_toupper
    functionSourceFile: /src/postgres/src/port/pgstrcasecmp.c
    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: 151
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 151
    functionName: pg_ascii_tolower
    functionSourceFile: /src/postgres/src/port/pgstrcasecmp.c
    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:
    - (
    - 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: 4
    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: 5
    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: 5
    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: 4
    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: 14
    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: 5
    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: 8
    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: 13
    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_POINTER
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 15
    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: 278
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 278
    functionName: PG_GETARG_CSTRING
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 3
    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: 279
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 279
    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: 280
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 280
    functionName: PG_GETARG_TRANSACTIONID
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 1
    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: 282
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 282
    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: 283
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 283
    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: 284
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 284
    functionName: PG_GETARG_INT64
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 12
    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: 286
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 286
    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: 288
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 288
    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: 290
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 290
    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: 292
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 292
    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: 293
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 293
    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: 294
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 294
    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: 295
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 295
    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: 296
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 296
    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: 298
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 298
    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: 299
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 299
    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: 300
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 300
    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: 301
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 301
    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: 302
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 302
    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: 304
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 304
    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: 305
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 305
    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: 306
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 306
    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: 307
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 307
    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: 309
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 309
    functionName: PG_GETARG_BYTEA_PP
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 1
    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: 310
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 310
    functionName: PG_GETARG_TEXT_PP
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 16
    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: 311
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 311
    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: 312
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 312
    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: 313
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 313
    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: 315
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 315
    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: 316
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 316
    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: 317
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 317
    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: 318
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 318
    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: 319
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 319
    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: 321
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 321
    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: 322
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 322
    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: 323
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 323
    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: 324
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 324
    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: 332
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 332
    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: 333
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 333
    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: 334
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 334
    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: 335
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 335
    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: 336
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 336
    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: 337
      start: 336
    functionDepth: 0
    functionLinenumber: 336
    functionLinenumberEnd: 337
    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: 338
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 338
    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: 339
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 339
    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: 342
      start: 341
    functionDepth: 0
    functionLinenumber: 341
    functionLinenumberEnd: 342
    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: 343
      start: 342
    functionDepth: 0
    functionLinenumber: 342
    functionLinenumberEnd: 343
    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: 347
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 347
    functionName: PG_RETURN_NULL
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 10
    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: 350
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 350
    functionName: PG_RETURN_VOID
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 68
    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: 354
      start: 353
    functionDepth: 0
    functionLinenumber: 353
    functionLinenumberEnd: 354
    functionName: PG_RETURN_DATUM
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 6
    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: 355
      start: 354
    functionDepth: 0
    functionLinenumber: 354
    functionLinenumberEnd: 355
    functionName: PG_RETURN_INT32
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 5
    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: 356
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 356
    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: 357
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 357
    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: 358
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 358
    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: 359
      start: 358
    functionDepth: 0
    functionLinenumber: 358
    functionLinenumberEnd: 359
    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: 360
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 360
    functionName: PG_RETURN_BOOL
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 8
    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: 361
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 361
    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: 362
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 362
    functionName: PG_RETURN_POINTER
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 8
    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: 363
      start: 362
    functionDepth: 0
    functionLinenumber: 362
    functionLinenumberEnd: 363
    functionName: PG_RETURN_CSTRING
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 3
    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: 364
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 364
    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: 365
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 365
    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: 367
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 367
    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: 368
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 368
    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: 369
      start: 368
    functionDepth: 0
    functionLinenumber: 368
    functionLinenumberEnd: 369
    functionName: PG_RETURN_INT64
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 2
    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: 370
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 370
    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: 372
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 372
    functionName: PG_RETURN_BYTEA_P
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 0
    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: 373
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 373
    functionName: PG_RETURN_TEXT_P
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 6
    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: 374
      start: 373
    functionDepth: 0
    functionLinenumber: 373
    functionLinenumberEnd: 374
    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: 375
      start: 374
    functionDepth: 0
    functionLinenumber: 374
    functionLinenumberEnd: 375
    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: 376
      start: 375
    functionDepth: 0
    functionLinenumber: 375
    functionLinenumberEnd: 376
    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: 425
      start: 415
    functionDepth: 0
    functionLinenumber: 415
    functionLinenumberEnd: 425
    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: 507
      start: 501
    functionDepth: 0
    functionLinenumber: 501
    functionLinenumberEnd: 507
    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: 548
      start: 538
    functionDepth: 0
    functionLinenumber: 538
    functionLinenumberEnd: 548
    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: 684
      start: 682
    functionDepth: 0
    functionLinenumber: 682
    functionLinenumberEnd: 684
    functionName: DirectFunctionCall1
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 9
    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: 686
      start: 684
    functionDepth: 0
    functionLinenumber: 684
    functionLinenumberEnd: 686
    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: 688
      start: 686
    functionDepth: 0
    functionLinenumber: 686
    functionLinenumberEnd: 688
    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: 690
      start: 688
    functionDepth: 0
    functionLinenumber: 688
    functionLinenumberEnd: 690
    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: 692
      start: 690
    functionDepth: 0
    functionLinenumber: 690
    functionLinenumberEnd: 692
    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: 694
      start: 692
    functionDepth: 0
    functionLinenumber: 692
    functionLinenumberEnd: 694
    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: 696
      start: 694
    functionDepth: 0
    functionLinenumber: 694
    functionLinenumberEnd: 696
    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: 698
      start: 696
    functionDepth: 0
    functionLinenumber: 696
    functionLinenumberEnd: 698
    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: 700
      start: 698
    functionDepth: 0
    functionLinenumber: 698
    functionLinenumberEnd: 700
    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: 702
      start: 700
    functionDepth: 0
    functionLinenumber: 700
    functionLinenumberEnd: 702
    functionName: FunctionCall1
    functionSourceFile: /src/postgres/src/include/fmgr.h
    functionUses: 16
    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: 704
      start: 702
    functionDepth: 0
    functionLinenumber: 702
    functionLinenumberEnd: 704
    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: 706
      start: 704
    functionDepth: 0
    functionLinenumber: 704
    functionLinenumberEnd: 706
    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: 708
      start: 706
    functionDepth: 0
    functionLinenumber: 706
    functionLinenumberEnd: 708
    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: 710
      start: 708
    functionDepth: 0
    functionLinenumber: 708
    functionLinenumberEnd: 710
    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: 712
      start: 710
    functionDepth: 0
    functionLinenumber: 710
    functionLinenumberEnd: 712
    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: 714
      start: 712
    functionDepth: 0
    functionLinenumber: 712
    functionLinenumberEnd: 714
    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: 716
      start: 714
    functionDepth: 0
    functionLinenumber: 714
    functionLinenumberEnd: 716
    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: 718
      start: 716
    functionDepth: 0
    functionLinenumber: 716
    functionLinenumberEnd: 718
    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: 720
      start: 718
    functionDepth: 0
    functionLinenumber: 718
    functionLinenumberEnd: 720
    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: 722
      start: 720
    functionDepth: 0
    functionLinenumber: 720
    functionLinenumberEnd: 722
    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: 724
      start: 722
    functionDepth: 0
    functionLinenumber: 722
    functionLinenumberEnd: 724
    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: 726
      start: 724
    functionDepth: 0
    functionLinenumber: 724
    functionLinenumberEnd: 726
    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: 728
      start: 726
    functionDepth: 0
    functionLinenumber: 726
    functionLinenumberEnd: 728
    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: 730
      start: 728
    functionDepth: 0
    functionLinenumber: 728
    functionLinenumberEnd: 730
    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: 732
      start: 730
    functionDepth: 0
    functionLinenumber: 730
    functionLinenumberEnd: 732
    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: 734
      start: 732
    functionDepth: 0
    functionLinenumber: 732
    functionLinenumberEnd: 734
    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: 736
      start: 734
    functionDepth: 0
    functionLinenumber: 734
    functionLinenumberEnd: 736
    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: 738
      start: 736
    functionDepth: 0
    functionLinenumber: 736
    functionLinenumberEnd: 738
    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: 850
      start: 848
    functionDepth: 0
    functionLinenumber: 848
    functionLinenumberEnd: 850
    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: 83
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 83
    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: 87
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 87
    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: 89
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 89
    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: 96
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 96
    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: 104
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 104
    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: 105
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 105
    functionName: is_absolute_path
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 13
    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: 107
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 107
    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: 108
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 108
    functionName: is_absolute_path
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: is_absolute_path(filename)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 246
    functionName: printf
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 630
    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: 286
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 286
    functionName: rename
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 5
    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: 287
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 287
    functionName: unlink
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 28
    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: 303
      start: 302
    functionDepth: 0
    functionLinenumber: 302
    functionLinenumberEnd: 303
    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: 304
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 304
    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: 322
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 322
    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: 336
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 336
    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: 346
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 346
    functionName: open
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 157
    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: 347
      start: 346
    functionDepth: 0
    functionLinenumber: 346
    functionLinenumberEnd: 347
    functionName: fopen
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 63
    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: 368
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 368
    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: 369
      start: 368
    functionDepth: 0
    functionLinenumber: 368
    functionLinenumberEnd: 369
    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: 370
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 370
    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: 434
      start: 433
    functionDepth: 0
    functionLinenumber: 433
    functionLinenumberEnd: 434
    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: 480
      start: 479
    functionDepth: 0
    functionLinenumber: 479
    functionLinenumberEnd: 480
    functionName: qsort
    functionSourceFile: /src/postgres/src/include/port.h
    functionUses: 13
    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: 321
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 321
    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: 622
      start: 620
    functionDepth: 0
    functionLinenumber: 620
    functionLinenumberEnd: 622
    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: 624
      start: 622
    functionDepth: 0
    functionLinenumber: 622
    functionLinenumberEnd: 624
    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: 626
      start: 624
    functionDepth: 0
    functionLinenumber: 624
    functionLinenumberEnd: 626
    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: 628
      start: 626
    functionDepth: 0
    functionLinenumber: 626
    functionLinenumberEnd: 628
    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: 676
      start: 673
    functionDepth: 0
    functionLinenumber: 673
    functionLinenumberEnd: 676
    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: 684
      start: 679
    functionDepth: 0
    functionLinenumber: 679
    functionLinenumberEnd: 684
    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: 689
      start: 684
    functionDepth: 0
    functionLinenumber: 684
    functionLinenumberEnd: 689
    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: 694
      start: 689
    functionDepth: 0
    functionLinenumber: 689
    functionLinenumberEnd: 694
    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: 699
      start: 694
    functionDepth: 0
    functionLinenumber: 694
    functionLinenumberEnd: 699
    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: 704
      start: 699
    functionDepth: 0
    functionLinenumber: 699
    functionLinenumberEnd: 704
    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: 709
      start: 704
    functionDepth: 0
    functionLinenumber: 704
    functionLinenumberEnd: 709
    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: 714
      start: 709
    functionDepth: 0
    functionLinenumber: 709
    functionLinenumberEnd: 714
    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: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tag
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 95
    functionName: VARTAG_IS_EXPANDED
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARTAG_IS_EXPANDED(tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tag
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 101
    functionName: VARTAG_SIZE
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARTAG_SIZE(tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 180
    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: 182
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 182
    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: 184
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 184
    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: 186
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 186
    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: 188
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 188
    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: 190
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 190
    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: 194
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 194
    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: 196
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 196
    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: 198
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 198
    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: 201
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 201
    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: 203
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 203
    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: 205
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 205
    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: 208
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 208
    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: 213
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 213
    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: 215
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 215
    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: 217
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 217
    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: 219
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 219
    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: 221
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 221
    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: 223
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 223
    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: 227
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 227
    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: 229
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 229
    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: 231
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 231
    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: 234
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 234
    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: 236
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 236
    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: 238
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 238
    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: 241
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 241
    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: 245
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 245
    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: 246
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 246
    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: 247
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 247
    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: 248
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 248
    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: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 261
    functionName: VARATT_CAN_MAKE_SHORT
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_CAN_MAKE_SHORT(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: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 263
    functionName: VARATT_CONVERTED_SHORT_SIZE
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_CONVERTED_SHORT_SIZE(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 279
    functionName: VARDATA
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARDATA(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 280
    functionName: VARSIZE
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARSIZE(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 282
    functionName: VARSIZE_SHORT
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARSIZE_SHORT(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 283
    functionName: VARDATA_SHORT
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARDATA_SHORT(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 285
    functionName: VARTAG_EXTERNAL
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARTAG_EXTERNAL(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 286
    functionName: VARSIZE_EXTERNAL
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARSIZE_EXTERNAL(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 287
    functionName: VARDATA_EXTERNAL
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARDATA_EXTERNAL(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 289
    functionName: VARATT_IS_COMPRESSED
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_IS_COMPRESSED(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 290
    functionName: VARATT_IS_EXTERNAL
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_IS_EXTERNAL(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 292
    functionName: VARATT_IS_EXTERNAL_ONDISK
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_IS_EXTERNAL_ONDISK(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 294
    functionName: VARATT_IS_EXTERNAL_INDIRECT
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_IS_EXTERNAL_INDIRECT(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 296
    functionName: VARATT_IS_EXTERNAL_EXPANDED_RO
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_IS_EXTERNAL_EXPANDED_RO(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 298
    functionName: VARATT_IS_EXTERNAL_EXPANDED_RW
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_IS_EXTERNAL_EXPANDED_RW(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 300
    functionName: VARATT_IS_EXTERNAL_EXPANDED
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_IS_EXTERNAL_EXPANDED(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 302
    functionName: VARATT_IS_EXTERNAL_NON_EXPANDED
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_IS_EXTERNAL_NON_EXPANDED(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 302
    functionDepth: 0
    functionLinenumber: 302
    functionLinenumberEnd: 303
    functionName: VARATT_IS_SHORT
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_IS_SHORT(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 304
    functionName: VARATT_IS_EXTENDED
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_IS_EXTENDED(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: 306
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 306
    functionName: SET_VARSIZE
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_VARSIZE(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: 307
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 307
    functionName: SET_VARSIZE_SHORT
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_VARSIZE_SHORT(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: 308
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 308
    functionName: SET_VARSIZE_COMPRESSED
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_VARSIZE_COMPRESSED(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: 310
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 310
    functionName: SET_VARTAG_EXTERNAL
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_VARTAG_EXTERNAL(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: 315
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 315
    functionName: VARSIZE_ANY
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARSIZE_ANY(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 321
    functionName: VARSIZE_ANY_EXHDR
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARSIZE_ANY_EXHDR(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 326
    functionName: VARDATA_ANY
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARDATA_ANY(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 330
    functionName: VARDATA_COMPRESSED_GET_EXTSIZE
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARDATA_COMPRESSED_GET_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: 332
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 332
    functionName: VARDATA_COMPRESSED_GET_COMPRESS_METHOD
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARDATA_COMPRESSED_GET_COMPRESS_METHOD(PTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - toast_pointer
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 336
    functionName: VARATT_EXTERNAL_GET_EXTSIZE
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_EXTERNAL_GET_EXTSIZE(toast_pointer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - toast_pointer
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 336
    functionDepth: 0
    functionLinenumber: 336
    functionLinenumberEnd: 338
    functionName: VARATT_EXTERNAL_GET_COMPRESS_METHOD
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_EXTERNAL_GET_COMPRESS_METHOD(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: 346
      start: 339
    functionDepth: 0
    functionLinenumber: 339
    functionLinenumberEnd: 346
    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: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - toast_pointer
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 354
    functionDepth: 0
    functionLinenumber: 354
    functionLinenumberEnd: 357
    functionName: VARATT_EXTERNAL_IS_COMPRESSED
    functionSourceFile: /src/postgres/src/include/varatt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VARATT_EXTERNAL_IS_COMPRESSED(toast_pointer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TYPEALIGN
      Src: /src/postgres/src/include/pgtar.h:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - len
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 82
    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: 115
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 115
    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: 119
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 119
    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: 127
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 127
    functionName: CHECK_FOR_INTERRUPTS
    functionSourceFile: /src/postgres/src/include/miscadmin.h
    functionUses: 14
    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: 132
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 132
    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: 134
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 134
    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: 140
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 140
    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: 142
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 142
    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: 148
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 148
    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: 150
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 150
    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: 156
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 156
    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: 381
      start: 380
    functionDepth: 0
    functionLinenumber: 380
    functionLinenumberEnd: 381
    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: 382
      start: 381
    functionDepth: 0
    functionLinenumber: 381
    functionLinenumberEnd: 382
    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: 383
      start: 382
    functionDepth: 0
    functionLinenumber: 382
    functionLinenumberEnd: 383
    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: 384
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 384
    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: 385
      start: 384
    functionDepth: 0
    functionLinenumber: 384
    functionLinenumberEnd: 385
    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: 386
      start: 385
    functionDepth: 0
    functionLinenumber: 385
    functionLinenumberEnd: 386
    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: 387
      start: 386
    functionDepth: 0
    functionLinenumber: 386
    functionLinenumberEnd: 387
    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: 388
      start: 387
    functionDepth: 0
    functionLinenumber: 387
    functionLinenumberEnd: 388
    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: 389
      start: 388
    functionDepth: 0
    functionLinenumber: 388
    functionLinenumberEnd: 389
    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: 390
      start: 389
    functionDepth: 0
    functionLinenumber: 389
    functionLinenumberEnd: 390
    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: 391
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 391
    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: 392
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 392
    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: 393
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 393
    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: 394
      start: 393
    functionDepth: 0
    functionLinenumber: 393
    functionLinenumberEnd: 394
    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: 398
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 398
    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: 406
      start: 404
    functionDepth: 0
    functionLinenumber: 404
    functionLinenumberEnd: 406
    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: 477
      start: 476
    functionDepth: 0
    functionLinenumber: 476
    functionLinenumberEnd: 477
    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: 478
      start: 477
    functionDepth: 0
    functionLinenumber: 477
    functionLinenumberEnd: 478
    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: 479
      start: 478
    functionDepth: 0
    functionLinenumber: 478
    functionLinenumberEnd: 479
    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: 481
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 481
    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: 489
      start: 482
    functionDepth: 0
    functionLinenumber: 482
    functionLinenumberEnd: 489
    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: 127
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 127
    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: 132
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 132
    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: 174
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 174
    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: 177
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 177
    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: 189
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 189
    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: 200
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 200
    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: 212
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 212
    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: 230
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 230
    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: 231
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 231
    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: 239
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 239
    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: 240
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 240
    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: 248
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 248
    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: 329
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 329
    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: 331
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 331
    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: 333
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 333
    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: 344
      start: 343
    functionDepth: 0
    functionLinenumber: 343
    functionLinenumberEnd: 344
    functionName: likely
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 15
    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: 345
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 345
    functionName: unlikely
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 15
    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: 347
      start: 346
    functionDepth: 0
    functionLinenumber: 346
    functionLinenumberEnd: 347
    functionName: likely
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 15
    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: 348
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 348
    functionName: unlikely
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: unlikely(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - identifier
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 362
    functionDepth: 0
    functionLinenumber: 362
    functionLinenumberEnd: 363
    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: 364
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 364
    functionName: CppAsString2
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 19
    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: 365
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 365
    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: 389
      start: 380
    functionDepth: 0
    functionLinenumber: 380
    functionLinenumberEnd: 389
    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: 399
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 399
    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: 498
      start: 497
    functionDepth: 0
    functionLinenumber: 497
    functionLinenumberEnd: 498
    functionName: INT64CONST
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 12
    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: 499
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 499
    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: 699
      start: 698
    functionDepth: 0
    functionLinenumber: 698
    functionLinenumberEnd: 699
    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: 710
      start: 709
    functionDepth: 0
    functionLinenumber: 709
    functionLinenumberEnd: 710
    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: 3
    argNames:
    - (
    - pointer
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 715
    functionDepth: 0
    functionLinenumber: 715
    functionLinenumberEnd: 716
    functionName: PointerIsValid
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PointerIsValid(pointer)
  - 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: 723
      start: 721
    functionDepth: 0
    functionLinenumber: 721
    functionLinenumberEnd: 723
    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: 726
      start: 724
    functionDepth: 0
    functionLinenumber: 724
    functionLinenumberEnd: 726
    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: 728
      start: 727
    functionDepth: 0
    functionLinenumber: 727
    functionLinenumberEnd: 728
    functionName: OidIsValid
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 42
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OidIsValid(objectId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 729
    functionDepth: 0
    functionLinenumber: 729
    functionLinenumberEnd: 730
    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: 741
      start: 740
    functionDepth: 0
    functionLinenumber: 740
    functionLinenumberEnd: 741
    functionName: lengthof
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 51
    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: 758
      start: 756
    functionDepth: 0
    functionLinenumber: 756
    functionLinenumberEnd: 758
    functionName: TYPEALIGN
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 6
    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: 760
      start: 759
    functionDepth: 0
    functionLinenumber: 759
    functionLinenumberEnd: 760
    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: 761
      start: 760
    functionDepth: 0
    functionLinenumber: 760
    functionLinenumberEnd: 761
    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: 762
      start: 761
    functionDepth: 0
    functionLinenumber: 761
    functionLinenumberEnd: 762
    functionName: LONGALIGN
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LONGALIGN(LEN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - LEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 762
    functionDepth: 0
    functionLinenumber: 762
    functionLinenumberEnd: 763
    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: 764
      start: 763
    functionDepth: 0
    functionLinenumber: 763
    functionLinenumberEnd: 764
    functionName: MAXALIGN
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 4
    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: 766
      start: 765
    functionDepth: 0
    functionLinenumber: 765
    functionLinenumberEnd: 766
    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: 767
      start: 766
    functionDepth: 0
    functionLinenumber: 766
    functionLinenumberEnd: 767
    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: 770
      start: 768
    functionDepth: 0
    functionLinenumber: 768
    functionLinenumberEnd: 770
    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: 772
      start: 771
    functionDepth: 0
    functionLinenumber: 771
    functionLinenumberEnd: 772
    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: 773
      start: 772
    functionDepth: 0
    functionLinenumber: 772
    functionLinenumberEnd: 773
    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: 774
      start: 773
    functionDepth: 0
    functionLinenumber: 773
    functionLinenumberEnd: 774
    functionName: LONGALIGN_DOWN
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LONGALIGN_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: 775
      start: 774
    functionDepth: 0
    functionLinenumber: 774
    functionLinenumberEnd: 775
    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: 776
      start: 775
    functionDepth: 0
    functionLinenumber: 775
    functionLinenumberEnd: 776
    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: 777
      start: 776
    functionDepth: 0
    functionLinenumber: 776
    functionLinenumberEnd: 777
    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: 786
      start: 784
    functionDepth: 0
    functionLinenumber: 784
    functionLinenumberEnd: 786
    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: 789
      start: 788
    functionDepth: 0
    functionLinenumber: 788
    functionLinenumberEnd: 789
    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: 811
      start: 810
    functionDepth: 0
    functionLinenumber: 810
    functionLinenumberEnd: 811
    functionName: Assert
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 325
    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: 812
      start: 811
    functionDepth: 0
    functionLinenumber: 811
    functionLinenumberEnd: 812
    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: 817
      start: 816
    functionDepth: 0
    functionLinenumber: 816
    functionLinenumberEnd: 817
    functionName: Assert
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 325
    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: 818
      start: 817
    functionDepth: 0
    functionLinenumber: 817
    functionLinenumberEnd: 818
    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: 830
      start: 825
    functionDepth: 0
    functionLinenumber: 825
    functionLinenumberEnd: 830
    functionName: Assert
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 325
    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: 840
      start: 837
    functionDepth: 0
    functionLinenumber: 837
    functionLinenumberEnd: 840
    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: 848
      start: 846
    functionDepth: 0
    functionLinenumber: 846
    functionLinenumberEnd: 848
    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: 883
      start: 881
    functionDepth: 0
    functionLinenumber: 881
    functionLinenumberEnd: 883
    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: 885
      start: 883
    functionDepth: 0
    functionLinenumber: 883
    functionLinenumberEnd: 885
    functionName: StaticAssertStmt
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    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: 887
      start: 885
    functionDepth: 0
    functionLinenumber: 885
    functionLinenumberEnd: 887
    functionName: StaticAssertExpr
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    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: 890
      start: 888
    functionDepth: 0
    functionLinenumber: 888
    functionLinenumberEnd: 890
    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: 892
      start: 890
    functionDepth: 0
    functionLinenumber: 890
    functionLinenumberEnd: 892
    functionName: StaticAssertStmt
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    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: 894
      start: 892
    functionDepth: 0
    functionLinenumber: 892
    functionLinenumberEnd: 894
    functionName: StaticAssertExpr
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    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: 899
      start: 897
    functionDepth: 0
    functionLinenumber: 897
    functionLinenumberEnd: 899
    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: 901
      start: 899
    functionDepth: 0
    functionLinenumber: 899
    functionLinenumberEnd: 901
    functionName: StaticAssertStmt
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    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: 903
      start: 901
    functionDepth: 0
    functionLinenumber: 901
    functionLinenumberEnd: 903
    functionName: StaticAssertExpr
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    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: 906
      start: 904
    functionDepth: 0
    functionLinenumber: 904
    functionLinenumberEnd: 906
    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: 908
      start: 906
    functionDepth: 0
    functionLinenumber: 906
    functionLinenumberEnd: 908
    functionName: StaticAssertStmt
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    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: 910
      start: 908
    functionDepth: 0
    functionLinenumber: 908
    functionLinenumberEnd: 910
    functionName: StaticAssertExpr
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    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: 929
      start: 926
    functionDepth: 0
    functionLinenumber: 926
    functionLinenumberEnd: 929
    functionName: AssertVariableIsOfType
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AssertVariableIsOfType(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: 932
      start: 929
    functionDepth: 0
    functionLinenumber: 929
    functionLinenumberEnd: 932
    functionName: AssertVariableIsOfTypeMacro
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AssertVariableIsOfTypeMacro(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: 936
      start: 933
    functionDepth: 0
    functionLinenumber: 933
    functionLinenumberEnd: 936
    functionName: AssertVariableIsOfType
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AssertVariableIsOfType(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: 939
      start: 936
    functionDepth: 0
    functionLinenumber: 936
    functionLinenumberEnd: 939
    functionName: AssertVariableIsOfTypeMacro
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AssertVariableIsOfTypeMacro(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: 951
      start: 950
    functionDepth: 0
    functionLinenumber: 950
    functionLinenumberEnd: 951
    functionName: Max
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 23
    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: 957
      start: 956
    functionDepth: 0
    functionLinenumber: 956
    functionLinenumberEnd: 957
    functionName: Min
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 26
    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: 975
      start: 972
    functionDepth: 0
    functionLinenumber: 972
    functionLinenumberEnd: 975
    functionName: MemSet
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 5
    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: 1024
      start: 1005
    functionDepth: 0
    functionLinenumber: 1005
    functionLinenumberEnd: 1024
    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: 1039
      start: 1037
    functionDepth: 0
    functionLinenumber: 1037
    functionLinenumberEnd: 1039
    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: 1041
      start: 1039
    functionDepth: 0
    functionLinenumber: 1039
    functionLinenumberEnd: 1041
    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: 1043
      start: 1041
    functionDepth: 0
    functionLinenumber: 1041
    functionLinenumberEnd: 1043
    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: 1045
      start: 1043
    functionDepth: 0
    functionLinenumber: 1043
    functionLinenumberEnd: 1045
    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: 1047
      start: 1045
    functionDepth: 0
    functionLinenumber: 1045
    functionLinenumberEnd: 1047
    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: 1049
      start: 1047
    functionDepth: 0
    functionLinenumber: 1047
    functionLinenumberEnd: 1049
    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: 1063
      start: 1061
    functionDepth: 0
    functionLinenumber: 1061
    functionLinenumberEnd: 1063
    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: 1111
      start: 1110
    functionDepth: 0
    functionLinenumber: 1110
    functionLinenumberEnd: 1111
    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: 1120
      start: 1118
    functionDepth: 0
    functionLinenumber: 1118
    functionLinenumberEnd: 1120
    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: 1135
      start: 1134
    functionDepth: 0
    functionLinenumber: 1134
    functionLinenumberEnd: 1135
    functionName: gettext
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 32
    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: 1136
      start: 1135
    functionDepth: 0
    functionLinenumber: 1135
    functionLinenumberEnd: 1136
    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: 1137
      start: 1136
    functionDepth: 0
    functionLinenumber: 1136
    functionLinenumberEnd: 1137
    functionName: ngettext
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 25
    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: 1138
      start: 1137
    functionDepth: 0
    functionLinenumber: 1137
    functionLinenumberEnd: 1138
    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: 1141
      start: 1140
    functionDepth: 0
    functionLinenumber: 1140
    functionLinenumberEnd: 1141
    functionName: _
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 262
    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: 1152
      start: 1151
    functionDepth: 0
    functionLinenumber: 1151
    functionLinenumberEnd: 1152
    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: 1168
      start: 1167
    functionDepth: 0
    functionLinenumber: 1167
    functionLinenumberEnd: 1168
    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: 1170
      start: 1169
    functionDepth: 0
    functionLinenumber: 1169
    functionLinenumberEnd: 1170
    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: 1189
      start: 1188
    functionDepth: 0
    functionLinenumber: 1188
    functionLinenumberEnd: 1189
    functionName: unconstify
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 11
    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: 1190
      start: 1189
    functionDepth: 0
    functionLinenumber: 1189
    functionLinenumberEnd: 1190
    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: 1195
      start: 1191
    functionDepth: 0
    functionLinenumber: 1191
    functionLinenumberEnd: 1195
    functionName: unconstify
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 11
    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: 1199
      start: 1195
    functionDepth: 0
    functionLinenumber: 1195
    functionLinenumberEnd: 1199
    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: 1202
      start: 1200
    functionDepth: 0
    functionLinenumber: 1200
    functionLinenumberEnd: 1202
    functionName: unconstify
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 11
    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: 1204
      start: 1202
    functionDepth: 0
    functionLinenumber: 1202
    functionLinenumberEnd: 1204
    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: 1250
      start: 1249
    functionDepth: 0
    functionLinenumber: 1249
    functionLinenumberEnd: 1250
    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: 1251
      start: 1250
    functionDepth: 0
    functionLinenumber: 1250
    functionLinenumberEnd: 1251
    functionName: strtou64
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 2
    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: 1253
      start: 1252
    functionDepth: 0
    functionLinenumber: 1252
    functionLinenumberEnd: 1253
    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: 1254
      start: 1253
    functionDepth: 0
    functionLinenumber: 1253
    functionLinenumberEnd: 1254
    functionName: strtou64
    functionSourceFile: /src/postgres/src/include/c.h
    functionUses: 2
    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: 1263
      start: 1262
    functionDepth: 0
    functionLinenumber: 1262
    functionLinenumberEnd: 1263
    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: 1265
      start: 1264
    functionDepth: 0
    functionLinenumber: 1264
    functionLinenumberEnd: 1265
    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: 1317
      start: 1316
    functionDepth: 0
    functionLinenumber: 1316
    functionLinenumberEnd: 1317
    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: 1321
      start: 1320
    functionDepth: 0
    functionLinenumber: 1320
    functionLinenumberEnd: 1321
    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: 8
    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: 8
    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: 2
    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: 2
    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: 2
    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: 2
    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: 1
    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: 2
    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: 98
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 98
    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: 110
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 110
    functionName: BoolGetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 3
    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: 120
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 120
    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: 130
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 130
    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:
    - int8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 140
    functionName: Int8GetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Datum
    signature: Datum Int8GetDatum(int8 X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 150
    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: 160
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 160
    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: 170
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 170
    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: 180
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 180
    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: 190
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 190
    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: 200
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 200
    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: 210
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 210
    functionName: DatumGetInt32
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 6
    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: 220
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 220
    functionName: Int32GetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 6
    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: 230
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 230
    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: 240
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 240
    functionName: UInt32GetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 1
    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: 250
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 250
    functionName: DatumGetObjectId
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 1
    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: 260
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 260
    functionName: ObjectIdGetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 21
    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: 270
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 270
    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: 280
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 280
    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: 290
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 290
    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: 300
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 300
    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: 310
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 310
    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: 320
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 320
    functionName: DatumGetPointer
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 24
    functionsReached: []
    linkageType: ''
    returnType: Pointer
    signature: Pointer DatumGetPointer(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 330
    functionName: PointerGetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 28
    functionsReached: []
    linkageType: ''
    returnType: Datum
    signature: Datum PointerGetDatum(const void *X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/include/postgres.h:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 339
    functionDepth: 1
    functionLinenumber: 339
    functionLinenumberEnd: 343
    functionName: DatumGetCString
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 19
    functionsReached:
    - DatumGetPointer
    linkageType: ''
    returnType: char
    signature: 'char *

      DatumGetCString(Datum X)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/postgres.h:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 354
    functionDepth: 1
    functionLinenumber: 354
    functionLinenumberEnd: 358
    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: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: 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:380,1
    - Dst: NameStr
      Src: /src/postgres/src/include/postgres.h:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - NameData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 377
    functionDepth: 2
    functionLinenumber: 377
    functionLinenumberEnd: 381
    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:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/include/postgres.h:395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 389
    functionDepth: 1
    functionLinenumber: 389
    functionLinenumberEnd: 397
    functionName: DatumGetInt64
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 2
    functionsReached:
    - DatumGetPointer
    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: 411
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 411
    functionName: Int64GetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: Datum
    signature: Datum Int64GetDatum(int64 X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/include/postgres.h:429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 423
    functionDepth: 1
    functionLinenumber: 423
    functionLinenumberEnd: 431
    functionName: DatumGetUInt64
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 0
    functionsReached:
    - DatumGetPointer
    linkageType: ''
    returnType: uint64
    signature: uint64 DatumGetUInt64(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Int64GetDatum
      Src: /src/postgres/src/include/postgres.h:446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - X
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 440
    functionDepth: 0
    functionLinenumber: 440
    functionLinenumberEnd: 448
    functionName: UInt64GetDatum
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 1
    functionsReached:
    - Int64GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum UInt64GetDatum(uint64 X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/include/postgres.h:471,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 462
    functionDepth: 1
    functionLinenumber: 462
    functionLinenumberEnd: 473
    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:489,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - X
    argTypes:
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 479
    functionDepth: 1
    functionLinenumber: 479
    functionLinenumberEnd: 490
    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:508,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/include/postgres.h:511,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 498
    functionDepth: 2
    functionLinenumber: 498
    functionLinenumberEnd: 513
    functionName: DatumGetFloat8
    functionSourceFile: /src/postgres/src/include/postgres.h
    functionUses: 2
    functionsReached:
    - DatumGetInt64
    - DatumGetPointer
    linkageType: ''
    returnType: float8
    signature: float8 DatumGetFloat8(Datum X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Int64GetDatum
      Src: /src/postgres/src/include/postgres.h:533,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - X
    argTypes:
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 523
    functionDepth: 0
    functionLinenumber: 523
    functionLinenumberEnd: 534
    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: 556
      start: 554
    functionDepth: 0
    functionLinenumber: 554
    functionLinenumberEnd: 556
    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: 558
      start: 556
    functionDepth: 0
    functionLinenumber: 556
    functionLinenumberEnd: 558
    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: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 559
    functionDepth: 0
    functionLinenumber: 559
    functionLinenumberEnd: 561
    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: 563
      start: 561
    functionDepth: 0
    functionLinenumber: 561
    functionLinenumberEnd: 563
    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: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    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: 43
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 43
    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: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    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
    - bits8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 29
    functionName: att_isnull
    functionSourceFile: /src/postgres/src/include/access/tupmacs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool att_isnull(int ATT, const bits8 *BITS)
  - 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: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    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:60,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/include/access/tupmacs.h:62,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/include/access/tupmacs.h:64,1
    - Dst: elog
      Src: /src/postgres/src/include/access/tupmacs.h:70,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/access/tupmacs.h:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - T
    - attbyval
    - attlen
    argTypes:
    - void*
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 76
    functionName: fetch_att
    functionSourceFile: /src/postgres/src/include/access/tupmacs.h
    functionUses: 1
    functionsReached:
    - Int32GetDatum
    - PointerGetDatum
    - elog
    - CharGetDatum
    - Int16GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum fetch_att(const void *T, bool attbyval, int attlen)
  - 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: 93
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 93
    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: 103
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 103
    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: 124
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 124
    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: 134
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 134
    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: 160
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 160
    functionName: att_align_nominal
    functionSourceFile: /src/postgres/src/include/access/tupmacs.h
    functionUses: 1
    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: 167
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 167
    functionName: att_nominal_alignby
    functionSourceFile: /src/postgres/src/include/access/tupmacs.h
    functionUses: 0
    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: 175
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 175
    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: 201
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 201
    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:216,1
    - Dst: DatumGetInt16
      Src: /src/postgres/src/include/access/tupmacs.h:219,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/include/access/tupmacs.h:222,1
    - Dst: elog
      Src: /src/postgres/src/include/access/tupmacs.h:230,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - T
    - newdatum
    - attlen
    argTypes:
    - void*
    - Datum
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 232
    functionName: store_att_byval
    functionSourceFile: /src/postgres/src/include/access/tupmacs.h
    functionUses: 0
    functionsReached:
    - DatumGetChar
    - elog
    - DatumGetInt32
    - DatumGetInt16
    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: PointerIsValid
      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:
    - Assert
    - IndexInfoFindDataOffset
    - nocache_index_getattr
    - IndexTupleHasNulls
    - att_isnull
    - TupleDescCompactAttr
    - fetchatt
    - PointerIsValid
    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: 328
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 328
    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:
    - (
    - scan
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 163
    functionName: IndexScanIsValid
    functionSourceFile: /src/postgres/src/include/access/genam.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IndexScanIsValid(scan)
  - 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: XLogRecPtrIsInvalid
    functionSourceFile: /src/postgres/src/include/access/xlogdefs.h
    functionUses: 5
    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: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    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
    - PageGetContents
    - MAXALIGN
    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
    - P_HAS_FULLXID
    - PageGetContents
    - P_ISDELETED
    - BTPageGetOpaque
    - PageIsNew
    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
    - GlobalVisCheckRemovableFullXid
    - P_ISDELETED
    - BTPageGetOpaque
    - BTPageGetDeleteXid
    - PageIsNew
    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:
    - Assert
    - ItemPointerSetOffsetNumber
    - 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:
    - ItemPointerGetOffsetNumberNoCheck
    - Assert
    - 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:
    - ItemPointerGetBlockNumberNoCheck
    - Assert
    - 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
    - ItemPointerGetOffsetNumberNoCheck
    - BTreeTupleIsPivot
    - BTreeTupleIsPosting
    - 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:
    - Assert
    - BTreeTupleGetPostingN
    - BTreeTupleIsPivot
    - BTreeTupleIsPosting
    - BTreeTupleGetNPosting
    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: 1164
      start: 1158
    functionDepth: 0
    functionLinenumber: 1158
    functionLinenumberEnd: 1164
    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: 1166
      start: 1164
    functionDepth: 0
    functionLinenumber: 1164
    functionLinenumberEnd: 1166
    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: 1171
      start: 1166
    functionDepth: 0
    functionLinenumber: 1166
    functionLinenumberEnd: 1171
    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: 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: 15
    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: 39
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 39
    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: 46
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 46
    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:498,1
    - Dst: GinItemPointerGetOffsetNumber
      Src: /src/postgres/src/include/access/gin_private.h:498,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/include/access/gin_private.h:499,1
    - Dst: GinItemPointerGetOffsetNumber
      Src: /src/postgres/src/include/access/gin_private.h:499,1
    - Dst: pg_cmp_u64
      Src: /src/postgres/src/include/access/gin_private.h:501,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - ItemPointer
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 495
    functionDepth: 1
    functionLinenumber: 495
    functionLinenumberEnd: 502
    functionName: ginCompareItemPointers
    functionSourceFile: /src/postgres/src/include/access/gin_private.h
    functionUses: 0
    functionsReached:
    - GinItemPointerGetOffsetNumber
    - GinItemPointerGetBlockNumber
    - pg_cmp_u64
    linkageType: ''
    returnType: int
    signature: int ginCompareItemPointers(ItemPointer a, ItemPointer b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - relation
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 46
    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: 52
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 52
    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: 52
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 52
    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: 53
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 53
    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: 213
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 213
    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: 215
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 215
    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: 217
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 217
    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: 29
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 29
    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: 54
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: ISUPDATE_from_mxstatus
    functionSourceFile: /src/postgres/src/include/access/multixact.h
    functionUses: 0
    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: 86
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 86
    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: 96
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 96
    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: 99
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 99
    functionName: IsValidWalSegSize
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 7
    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: 102
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 102
    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: 105
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 105
    functionName: XLogSegNoOffsetToRecPtr
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 4
    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: 108
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 108
    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: 119
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 119
    functionName: XLByteToSeg
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 5
    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: 122
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 122
    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: 129
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 129
    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: 138
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 138
    functionName: XLByteInSeg
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 2
    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: 141
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 141
    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: 145
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 145
    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:168,1
    - Dst: XLogSegmentsPerXLogId
      Src: /src/postgres/src/include/access/xlog_internal.h:169,1
    - Dst: XLogSegmentsPerXLogId
      Src: /src/postgres/src/include/access/xlog_internal.h:170,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: 171
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 171
    functionName: XLogFileName
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 13
    functionsReached:
    - snprintf
    - XLogSegmentsPerXLogId
    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:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - fname
    - tli
    - log
    - seg
    argTypes:
    - char*
    - TimeLineID
    - uint32
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 177
    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:182,1
    - Dst: strspn
      Src: /src/postgres/src/include/access/xlog_internal.h:183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - fname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 184
    functionName: IsXLogFileName
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 5
    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:194,1
    - Dst: strlen
      Src: /src/postgres/src/include/access/xlog_internal.h:194,1
    - Dst: strspn
      Src: /src/postgres/src/include/access/xlog_internal.h:195,1
    - Dst: strcmp
      Src: /src/postgres/src/include/access/xlog_internal.h:196,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - fname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 197
    functionName: IsPartialXLogFileName
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 4
    functionsReached:
    - strspn
    - strcmp
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool IsPartialXLogFileName(const char *fname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/postgres/src/include/access/xlog_internal.h:205,1
    - Dst: XLogSegmentsPerXLogId
      Src: /src/postgres/src/include/access/xlog_internal.h:206,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: 207
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 207
    functionName: XLogFromFileName
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 4
    functionsReached:
    - sscanf
    - XLogSegmentsPerXLogId
    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:212,1
    - Dst: XLogSegmentsPerXLogId
      Src: /src/postgres/src/include/access/xlog_internal.h:213,1
    - Dst: XLogSegmentsPerXLogId
      Src: /src/postgres/src/include/access/xlog_internal.h:214,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: 215
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 215
    functionName: XLogFilePath
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 1
    functionsReached:
    - snprintf
    - XLogSegmentsPerXLogId
    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:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fname
    - tli
    argTypes:
    - char*
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 221
    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:226,1
    - Dst: strlen
      Src: /src/postgres/src/include/access/xlog_internal.h:226,1
    - Dst: strspn
      Src: /src/postgres/src/include/access/xlog_internal.h:227,1
    - Dst: strcmp
      Src: /src/postgres/src/include/access/xlog_internal.h:228,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - fname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 229
    functionName: IsTLHistoryFileName
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 0
    functionsReached:
    - strspn
    - strcmp
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool IsTLHistoryFileName(const char *fname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/include/access/xlog_internal.h:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - path
    - tli
    argTypes:
    - char*
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 235
    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:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - path
    - xlog
    - suffix
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 241
    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:246,1
    - Dst: XLogSegmentsPerXLogId
      Src: /src/postgres/src/include/access/xlog_internal.h:247,1
    - Dst: XLogSegmentsPerXLogId
      Src: /src/postgres/src/include/access/xlog_internal.h:248,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/include/access/xlog_internal.h:249,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: 250
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 250
    functionName: BackupHistoryFileName
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 2
    functionsReached:
    - XLogSegmentOffset
    - snprintf
    - XLogSegmentsPerXLogId
    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:255,1
    - Dst: strspn
      Src: /src/postgres/src/include/access/xlog_internal.h:256,1
    - Dst: strcmp
      Src: /src/postgres/src/include/access/xlog_internal.h:257,1
    - Dst: strlen
      Src: /src/postgres/src/include/access/xlog_internal.h:257,1
    - Dst: strlen
      Src: /src/postgres/src/include/access/xlog_internal.h:257,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - fname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 258
    functionName: IsBackupHistoryFileName
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 2
    functionsReached:
    - strspn
    - strcmp
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool IsBackupHistoryFileName(const char *fname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      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: XLogSegmentsPerXLogId
      Src: /src/postgres/src/include/access/xlog_internal.h:265,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/include/access/xlog_internal.h:266,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: 267
      start: 260
    functionDepth: 1
    functionLinenumber: 260
    functionLinenumberEnd: 267
    functionName: BackupHistoryFilePath
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 0
    functionsReached:
    - XLogSegmentOffset
    - snprintf
    - XLogSegmentsPerXLogId
    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: 373
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 373
    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:378,1
    - Dst: RmgrIdExists
      Src: /src/postgres/src/include/access/xlog_internal.h:378,1
    - Dst: RmgrNotFound
      Src: /src/postgres/src/include/access/xlog_internal.h:379,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rmid
    argTypes:
    - RmgrId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 381
    functionName: GetRmgr
    functionSourceFile: /src/postgres/src/include/access/xlog_internal.h
    functionUses: 0
    functionsReached:
    - RmgrIdExists
    - unlikely
    - RmgrNotFound
    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:
    - Assert
    - PageGetContents
    - GistPageGetOpaque
    - 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
    - FullTransactionIdFromEpochAndXid
    - PageGetContents
    - GistPageIsDeleted
    - 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: 157
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 157
    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:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tupdesc
    - i
    argTypes:
    - TupleDesc
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 165
    functionName: TupleDescAttr
    functionSourceFile: /src/postgres/src/include/access/tupdesc.h
    functionUses: 25
    functionsReached:
    - 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:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tupdesc
    - i
    argTypes:
    - TupleDesc
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 186
    functionName: TupleDescCompactAttr
    functionSourceFile: /src/postgres/src/include/access/tupdesc.h
    functionUses: 1
    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: 202
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 202
    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: 218
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 218
    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: 224
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 224
    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: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::scan_begin
      Src: /src/postgres/src/include/access/tableam.h:876,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - rel
    - snapshot
    - nkeys
    - key
    argTypes:
    - Relation
    - Snapshot
    - int
    - struct ScanKeyData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 869
    functionDepth: 0
    functionLinenumber: 869
    functionLinenumberEnd: 877
    functionName: table_beginscan
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::scan_begin
    linkageType: ''
    returnType: TableScanDesc
    signature: "TableScanDesc table_beginscan(Relation rel, Snapshot snapshot,\n\t\t\t\tint
      nkeys, struct ScanKeyData *key)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::scan_begin
      Src: /src/postgres/src/include/access/tableam.h:905,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 6
    argNames:
    - rel
    - snapshot
    - nkeys
    - key
    - allow_strat
    - allow_sync
    argTypes:
    - Relation
    - Snapshot
    - int
    - struct ScanKeyData*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 893
    functionDepth: 0
    functionLinenumber: 893
    functionLinenumberEnd: 906
    functionName: table_beginscan_strat
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::scan_begin
    linkageType: ''
    returnType: TableScanDesc
    signature: "TableScanDesc table_beginscan_strat(Relation rel, Snapshot snapshot,\n\t\t\t\t\t
      \ int nkeys, struct ScanKeyData *key,\n\t\t\t\t\t  bool allow_strat, bool allow_sync)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::scan_begin
      Src: /src/postgres/src/include/access/tableam.h:920,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - rel
    - snapshot
    - nkeys
    - key
    argTypes:
    - Relation
    - Snapshot
    - int
    - struct ScanKeyData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 922
      start: 914
    functionDepth: 0
    functionLinenumber: 914
    functionLinenumberEnd: 922
    functionName: table_beginscan_bm
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::scan_begin
    linkageType: ''
    returnType: TableScanDesc
    signature: "TableScanDesc table_beginscan_bm(Relation rel, Snapshot snapshot,\n\t\t\t\t
      \  int nkeys, struct ScanKeyData *key)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::scan_begin
      Src: /src/postgres/src/include/access/tableam.h:946,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 7
    argNames:
    - rel
    - snapshot
    - nkeys
    - key
    - allow_strat
    - allow_sync
    - allow_pagemode
    argTypes:
    - Relation
    - Snapshot
    - int
    - struct ScanKeyData*
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 947
      start: 931
    functionDepth: 0
    functionLinenumber: 931
    functionLinenumberEnd: 947
    functionName: table_beginscan_sampling
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::scan_begin
    linkageType: ''
    returnType: TableScanDesc
    signature: "TableScanDesc table_beginscan_sampling(Relation rel, Snapshot snapshot,\n\t\t\t\t\t\t
      int nkeys, struct 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)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::scan_begin
      Src: /src/postgres/src/include/access/tableam.h:959,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rel
    - snapshot
    argTypes:
    - Relation
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 960
      start: 954
    functionDepth: 0
    functionLinenumber: 954
    functionLinenumberEnd: 960
    functionName: table_beginscan_tid
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::scan_begin
    linkageType: ''
    returnType: TableScanDesc
    signature: TableScanDesc table_beginscan_tid(Relation rel, Snapshot snapshot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::scan_begin
      Src: /src/postgres/src/include/access/tableam.h:972,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 967
    functionDepth: 0
    functionLinenumber: 967
    functionLinenumberEnd: 973
    functionName: table_beginscan_analyze
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::scan_begin
    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:981,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - scan
    argTypes:
    - TableScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 978
    functionDepth: 0
    functionLinenumber: 978
    functionLinenumberEnd: 982
    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:991,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - scan
    - key
    argTypes:
    - TableScanDesc
    - struct ScanKeyData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 987
    functionDepth: 0
    functionLinenumber: 987
    functionLinenumberEnd: 992
    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,\n\t\t\t struct ScanKeyData *key)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TableScanDesc::rs_rd::rd_tableam::scan_rescan
      Src: /src/postgres/src/include/access/tableam.h:1006,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - scan
    - key
    - allow_strat
    - allow_sync
    - allow_pagemode
    argTypes:
    - TableScanDesc
    - struct ScanKeyData*
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 1002
    functionDepth: 0
    functionLinenumber: 1002
    functionLinenumberEnd: 1009
    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, struct ScanKeyData
      *key,\n\t\t\t\t\t\tbool allow_strat, bool allow_sync, bool allow_pagemode)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/include/access/tableam.h:1017,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/tableam.h:1020,1
    - Dst: unlikely
      Src: /src/postgres/src/include/access/tableam.h:1028,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/include/access/tableam.h:1028,1
    - Dst: elog
      Src: /src/postgres/src/include/access/tableam.h:1029,1
    - Dst: TableScanDesc::rs_rd::rd_tableam::scan_getnextslot
      Src: /src/postgres/src/include/access/tableam.h:1031,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - sscan
    - direction
    - slot
    argTypes:
    - TableScanDesc
    - ScanDirection
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1032
      start: 1014
    functionDepth: 1
    functionLinenumber: 1014
    functionLinenumberEnd: 1032
    functionName: table_scan_getnextslot
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Assert
    - RelationGetRelid
    - TransactionIdIsValid
    - TableScanDesc::rs_rd::rd_tableam::scan_getnextslot
    - elog
    - unlikely
    linkageType: ''
    returnType: bool
    signature: bool table_scan_getnextslot(TableScanDesc sscan, ScanDirection direction,
      TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::scan_begin
      Src: /src/postgres/src/include/access/tableam.h:1051,1
    - Dst: TableScanDesc::rs_rd::rd_tableam::scan_set_tidrange
      Src: /src/postgres/src/include/access/tableam.h:1054,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - rel
    - snapshot
    - mintid
    - maxtid
    argTypes:
    - Relation
    - Snapshot
    - ItemPointer
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1043
    functionDepth: 0
    functionLinenumber: 1043
    functionLinenumberEnd: 1057
    functionName: table_beginscan_tidrange
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - TableScanDesc::rs_rd::rd_tableam::scan_set_tidrange
    - Relation::rd_tableam::scan_begin
    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)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/tableam.h:1069,1
    - Dst: TableScanDesc::rs_rd::rd_tableam::scan_rescan
      Src: /src/postgres/src/include/access/tableam.h:1071,1
    - Dst: TableScanDesc::rs_rd::rd_tableam::scan_set_tidrange
      Src: /src/postgres/src/include/access/tableam.h:1072,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - sscan
    - mintid
    - maxtid
    argTypes:
    - TableScanDesc
    - ItemPointer
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1073
      start: 1064
    functionDepth: 1
    functionLinenumber: 1064
    functionLinenumberEnd: 1073
    functionName: table_rescan_tidrange
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - TableScanDesc::rs_rd::rd_tableam::scan_set_tidrange
    - Assert
    - 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:1085,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/tableam.h:1088,1
    - Dst: TableScanDesc::rs_rd::rd_tableam::scan_getnextslot_tidrange
      Src: /src/postgres/src/include/access/tableam.h:1091,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - sscan
    - direction
    - slot
    argTypes:
    - TableScanDesc
    - ScanDirection
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1094
      start: 1080
    functionDepth: 1
    functionLinenumber: 1080
    functionLinenumberEnd: 1094
    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:1136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rel
    - pscan
    argTypes:
    - Relation
    - ParallelTableScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1137
      start: 1133
    functionDepth: 0
    functionLinenumber: 1133
    functionLinenumberEnd: 1137
    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: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::index_fetch_begin
      Src: /src/postgres/src/include/access/tableam.h:1154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1155
      start: 1151
    functionDepth: 0
    functionLinenumber: 1151
    functionLinenumberEnd: 1155
    functionName: table_index_fetch_begin
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - Relation::rd_tableam::index_fetch_begin
    linkageType: ''
    returnType: IndexFetchTableData
    signature: 'IndexFetchTableData *

      table_index_fetch_begin(Relation rel)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct IndexFetchTableData*::rel::rd_tableam::index_fetch_reset
      Src: /src/postgres/src/include/access/tableam.h:1164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - scan
    argTypes:
    - struct IndexFetchTableData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1165
      start: 1161
    functionDepth: 0
    functionLinenumber: 1161
    functionLinenumberEnd: 1165
    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:1173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - scan
    argTypes:
    - struct IndexFetchTableData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1174
      start: 1170
    functionDepth: 0
    functionLinenumber: 1170
    functionLinenumberEnd: 1174
    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: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/include/access/tableam.h:1212,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/include/access/tableam.h:1212,1
    - Dst: elog
      Src: /src/postgres/src/include/access/tableam.h:1213,1
    - Dst: struct IndexFetchTableData*::rel::rd_tableam::index_fetch_tuple
      Src: /src/postgres/src/include/access/tableam.h:1215,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 6
    argNames:
    - scan
    - tid
    - snapshot
    - slot
    - call_again
    - all_dead
    argTypes:
    - struct IndexFetchTableData*
    - ItemPointer
    - Snapshot
    - TupleTableSlot*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1218
      start: 1200
    functionDepth: 1
    functionLinenumber: 1200
    functionLinenumberEnd: 1218
    functionName: table_index_fetch_tuple
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - TransactionIdIsValid
    - unlikely
    - struct IndexFetchTableData*::rel::rd_tableam::index_fetch_tuple
    - elog
    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:1258,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/include/access/tableam.h:1258,1
    - Dst: elog
      Src: /src/postgres/src/include/access/tableam.h:1259,1
    - Dst: Relation::rd_tableam::tuple_fetch_row_version
      Src: /src/postgres/src/include/access/tableam.h:1261,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 4
    argNames:
    - rel
    - tid
    - snapshot
    - slot
    argTypes:
    - Relation
    - ItemPointer
    - Snapshot
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1262
      start: 1247
    functionDepth: 1
    functionLinenumber: 1247
    functionLinenumberEnd: 1262
    functionName: table_tuple_fetch_row_version
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - TransactionIdIsValid
    - unlikely
    - Relation::rd_tableam::tuple_fetch_row_version
    - elog
    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:1276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - scan
    - tid
    argTypes:
    - TableScanDesc
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1277
      start: 1273
    functionDepth: 0
    functionLinenumber: 1273
    functionLinenumberEnd: 1277
    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:1298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - rel
    - slot
    - snapshot
    argTypes:
    - Relation
    - TupleTableSlot*
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1299
      start: 1294
    functionDepth: 0
    functionLinenumber: 1294
    functionLinenumberEnd: 1299
    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:1318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rel
    - delstate
    argTypes:
    - Relation
    - TM_IndexDeleteOp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1319
      start: 1315
    functionDepth: 0
    functionLinenumber: 1315
    functionLinenumberEnd: 1319
    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:1365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - rel
    - slot
    - cid
    - options
    - bistate
    argTypes:
    - Relation
    - TupleTableSlot*
    - CommandId
    - int
    - struct BulkInsertStateData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1367
      start: 1361
    functionDepth: 0
    functionLinenumber: 1361
    functionLinenumberEnd: 1367
    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   int options, struct BulkInsertStateData *bistate)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::tuple_insert_speculative
      Src: /src/postgres/src/include/access/tableam.h:1386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - rel
    - slot
    - cid
    - options
    - bistate
    - specToken
    argTypes:
    - Relation
    - TupleTableSlot*
    - CommandId
    - int
    - struct BulkInsertStateData*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1388
      start: 1380
    functionDepth: 0
    functionLinenumber: 1380
    functionLinenumberEnd: 1388
    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, int options,\n\t\t\t\t\t\t\t   struct 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:1398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - rel
    - slot
    - specToken
    - succeeded
    argTypes:
    - Relation
    - TupleTableSlot*
    - uint32
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1400
      start: 1394
    functionDepth: 0
    functionLinenumber: 1394
    functionLinenumberEnd: 1400
    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:1420,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - rel
    - slots
    - nslots
    - cid
    - options
    - bistate
    argTypes:
    - Relation
    - TupleTableSlot**
    - int
    - CommandId
    - int
    - struct BulkInsertStateData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1422
      start: 1416
    functionDepth: 0
    functionLinenumber: 1416
    functionLinenumberEnd: 1422
    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, int options, struct BulkInsertStateData *bistate)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::tuple_delete
      Src: /src/postgres/src/include/access/tableam.h:1455,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 8
    argNames:
    - rel
    - tid
    - cid
    - snapshot
    - crosscheck
    - wait
    - tmfd
    - changingPart
    argTypes:
    - Relation
    - ItemPointer
    - CommandId
    - Snapshot
    - Snapshot
    - bool
    - TM_FailureData*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1458
      start: 1450
    functionDepth: 0
    functionLinenumber: 1450
    functionLinenumberEnd: 1458
    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   Snapshot snapshot, Snapshot crosscheck, bool wait,\n\t\t\t\t
      \  TM_FailureData *tmfd, bool changingPart)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::tuple_update
      Src: /src/postgres/src/include/access/tableam.h:1500,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 10
    argNames:
    - rel
    - otid
    - slot
    - cid
    - snapshot
    - crosscheck
    - wait
    - tmfd
    - lockmode
    - update_indexes
    argTypes:
    - Relation
    - ItemPointer
    - TupleTableSlot*
    - CommandId
    - Snapshot
    - Snapshot
    - bool
    - TM_FailureData*
    - LockTupleMode*
    - TU_UpdateIndexes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1504
      start: 1494
    functionDepth: 0
    functionLinenumber: 1494
    functionLinenumberEnd: 1504
    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, 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:1545,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: 1548
      start: 1539
    functionDepth: 0
    functionLinenumber: 1539
    functionLinenumberEnd: 1548
    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:1559,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - rel
    - options
    argTypes:
    - Relation
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1560
      start: 1554
    functionDepth: 0
    functionLinenumber: 1554
    functionLinenumberEnd: 1560
    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, int options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::relation_set_new_filelocator
      Src: /src/postgres/src/include/access/tableam.h:1587,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: 1590
      start: 1580
    functionDepth: 0
    functionLinenumber: 1580
    functionLinenumberEnd: 1590
    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:1601,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1602
      start: 1598
    functionDepth: 0
    functionLinenumber: 1598
    functionLinenumberEnd: 1602
    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:1613,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rel
    - newrlocator
    argTypes:
    - Relation
    - RelFileLocator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1614
      start: 1610
    functionDepth: 0
    functionLinenumber: 1610
    functionLinenumberEnd: 1614
    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:1648,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 10
    argNames:
    - OldTable
    - NewTable
    - OldIndex
    - use_sort
    - OldestXmin
    - xid_cutoff
    - multi_cutoff
    - num_tuples
    - tups_vacuumed
    - tups_recently_dead
    argTypes:
    - Relation
    - Relation
    - Relation
    - bool
    - TransactionId
    - TransactionId*
    - MultiXactId*
    - double*
    - double*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1653
      start: 1637
    functionDepth: 0
    functionLinenumber: 1637
    functionLinenumberEnd: 1653
    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\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:1670,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - rel
    - params
    - bstrategy
    argTypes:
    - Relation
    - VacuumParams
    - BufferAccessStrategy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1671
      start: 1666
    functionDepth: 0
    functionLinenumber: 1666
    functionLinenumberEnd: 1671
    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:1684,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - scan
    - stream
    argTypes:
    - TableScanDesc
    - ReadStream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1685
      start: 1681
    functionDepth: 0
    functionLinenumber: 1681
    functionLinenumberEnd: 1685
    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:1702,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - scan
    - OldestXmin
    - liverows
    - deadrows
    - slot
    argTypes:
    - TableScanDesc
    - TransactionId
    - double*
    - double*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1705
      start: 1697
    functionDepth: 0
    functionLinenumber: 1697
    functionLinenumberEnd: 1705
    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, TransactionId
      OldestXmin,\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:1744,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
    - struct IndexInfo*
    - bool
    - bool
    - IndexBuildCallback
    - void*
    - TableScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1755
      start: 1734
    functionDepth: 0
    functionLinenumber: 1734
    functionLinenumberEnd: 1755
    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   struct 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:1780,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
    - struct IndexInfo*
    - bool
    - bool
    - bool
    - BlockNumber
    - BlockNumber
    - IndexBuildCallback
    - void*
    - TableScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1791
      start: 1767
    functionDepth: 0
    functionLinenumber: 1767
    functionLinenumberEnd: 1791
    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 struct 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:1805,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - table_rel
    - index_rel
    - index_info
    - snapshot
    - state
    argTypes:
    - Relation
    - Relation
    - struct IndexInfo*
    - Snapshot
    - struct ValidateIndexState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1810
      start: 1798
    functionDepth: 0
    functionLinenumber: 1798
    functionLinenumberEnd: 1810
    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  struct IndexInfo *index_info,\n\t\t\t\t\t\t  Snapshot
      snapshot,\n\t\t\t\t\t\t  struct ValidateIndexState *state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::relation_size
      Src: /src/postgres/src/include/access/tableam.h:1830,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rel
    - forkNumber
    argTypes:
    - Relation
    - ForkNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1831
      start: 1827
    functionDepth: 0
    functionLinenumber: 1827
    functionLinenumberEnd: 1831
    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:1839,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1840
      start: 1836
    functionDepth: 0
    functionLinenumber: 1836
    functionLinenumberEnd: 1840
    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:1849,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1850
      start: 1846
    functionDepth: 0
    functionLinenumber: 1846
    functionLinenumberEnd: 1850
    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:1880,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - toastrel
    - valueid
    - attrsize
    - sliceoffset
    - slicelength
    - result
    argTypes:
    - Relation
    - Oid
    - int32
    - int32
    - int32
    - struct varlena*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1884
      start: 1875
    functionDepth: 0
    functionLinenumber: 1875
    functionLinenumberEnd: 1884
    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, struct
      varlena *result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Relation::rd_tableam::relation_estimate_size
      Src: /src/postgres/src/include/access/tableam.h:1901,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: 1903
      start: 1896
    functionDepth: 0
    functionLinenumber: 1896
    functionLinenumberEnd: 1903
    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: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/include/access/tableam.h:1936,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/include/access/tableam.h:1936,1
    - Dst: elog
      Src: /src/postgres/src/include/access/tableam.h:1937,1
    - Dst: TableScanDesc::rs_rd::rd_tableam::scan_bitmap_next_tuple
      Src: /src/postgres/src/include/access/tableam.h:1939,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 5
    argNames:
    - scan
    - slot
    - recheck
    - lossy_pages
    - exact_pages
    argTypes:
    - TableScanDesc
    - TupleTableSlot*
    - bool*
    - uint64*
    - uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1944
      start: 1924
    functionDepth: 1
    functionLinenumber: 1924
    functionLinenumberEnd: 1944
    functionName: table_scan_bitmap_next_tuple
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - TransactionIdIsValid
    - unlikely
    - TableScanDesc::rs_rd::rd_tableam::scan_bitmap_next_tuple
    - elog
    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: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/include/access/tableam.h:1964,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/include/access/tableam.h:1964,1
    - Dst: elog
      Src: /src/postgres/src/include/access/tableam.h:1965,1
    - Dst: TableScanDesc::rs_rd::rd_tableam::scan_sample_next_block
      Src: /src/postgres/src/include/access/tableam.h:1966,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - scan
    - scanstate
    argTypes:
    - TableScanDesc
    - struct SampleScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1967
      start: 1955
    functionDepth: 1
    functionLinenumber: 1955
    functionLinenumberEnd: 1967
    functionName: table_scan_sample_next_block
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - TransactionIdIsValid
    - unlikely
    - elog
    - 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
      struct SampleScanState *scanstate)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/include/access/tableam.h:1987,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/include/access/tableam.h:1987,1
    - Dst: elog
      Src: /src/postgres/src/include/access/tableam.h:1988,1
    - Dst: TableScanDesc::rs_rd::rd_tableam::scan_sample_next_tuple
      Src: /src/postgres/src/include/access/tableam.h:1989,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - scan
    - scanstate
    - slot
    argTypes:
    - TableScanDesc
    - struct SampleScanState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1991
      start: 1977
    functionDepth: 1
    functionLinenumber: 1977
    functionLinenumberEnd: 1991
    functionName: table_scan_sample_next_tuple
    functionSourceFile: /src/postgres/src/include/access/tableam.h
    functionUses: 0
    functionsReached:
    - TransactionIdIsValid
    - unlikely
    - TableScanDesc::rs_rd::rd_tableam::scan_sample_next_tuple
    - elog
    linkageType: ''
    returnType: bool
    signature: "bool table_scan_sample_next_tuple(TableScanDesc scan,\n\t\t\t\t\t\t\t
      struct 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: 194
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 194
    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:
    - DatumGetBool
    - heap_getattr
    - FunctionCall2Coll
    linkageType: ''
    returnType: bool
    signature: bool HeapKeyTest(HeapTuple tuple, TupleDesc tupdesc, int nkeys, ScanKey
      keys)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - scan
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 288
    functionName: HeapScanIsValid
    functionSourceFile: /src/postgres/src/include/access/heapam.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HeapScanIsValid(scan)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderSetXmax
      Src: /src/postgres/src/include/access/heapam.h:443,1
    - Dst: HeapTupleHeaderSetXvac
      Src: /src/postgres/src/include/access/heapam.h:446,1
    - Dst: HeapTupleHeaderSetXvac
      Src: /src/postgres/src/include/access/heapam.h:449,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - tuple
    - frz
    argTypes:
    - HeapTupleHeader
    - HeapTupleFreeze*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 440
    functionDepth: 1
    functionLinenumber: 440
    functionLinenumberEnd: 453
    functionName: heap_execute_freeze_tuple
    functionSourceFile: /src/postgres/src/include/access/heapam.h
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderSetXmax
    - HeapTupleHeaderSetXvac
    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: 101
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 101
    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: 104
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 104
    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: 110
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 110
    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: 121
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 121
    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: 124
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 124
    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: 127
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 127
    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: 6
    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:
    - XidFromFullTransactionId
    - FullTransactionIdPrecedes
    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:
    - XidFromFullTransactionId
    - FullTransactionIdPrecedes
    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: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - xid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 302
    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:317,1
    - Dst: ReadNextFullTransactionId
      Src: /src/postgres/src/include/access/transam.h:317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 318
    functionName: ReadNextTransactionId
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 0
    functionsReached:
    - XidFromFullTransactionId
    - ReadNextFullTransactionId
    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: 330
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 330
    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:336,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/include/access/transam.h:339,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/include/access/transam.h:342,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - TransactionId
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 333
    functionDepth: 1
    functionLinenumber: 333
    functionLinenumberEnd: 345
    functionName: TransactionIdOlder
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 0
    functionsReached:
    - TransactionIdIsValid
    - TransactionIdPrecedes
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId TransactionIdOlder(TransactionId a, TransactionId b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/transam.h:351,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/include/access/transam.h:351,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/transam.h:352,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/include/access/transam.h:352,1
    - Dst: NormalTransactionIdPrecedes
      Src: /src/postgres/src/include/access/transam.h:353,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - TransactionId
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 348
    functionDepth: 1
    functionLinenumber: 348
    functionLinenumberEnd: 356
    functionName: NormalTransactionIdOlder
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 0
    functionsReached:
    - TransactionIdIsNormal
    - Assert
    - 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:362,1
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/include/access/transam.h:365,1
    - Dst: FullTransactionIdFollows
      Src: /src/postgres/src/include/access/transam.h:368,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - FullTransactionId
    - FullTransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 359
    functionDepth: 1
    functionLinenumber: 359
    functionLinenumberEnd: 371
    functionName: FullTransactionIdNewer
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 0
    functionsReached:
    - FullTransactionIdIsValid
    - FullTransactionIdFollows
    linkageType: ''
    returnType: FullTransactionId
    signature: FullTransactionId FullTransactionIdNewer(FullTransactionId a, FullTransactionId
      b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/include/access/transam.h:387,1
    - Dst: FullTransactionIdFromEpochAndXid
      Src: /src/postgres/src/include/access/transam.h:388,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/transam.h:390,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/include/access/transam.h:390,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/include/access/transam.h:391,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/include/access/transam.h:406,1
    - Dst: unlikely
      Src: /src/postgres/src/include/access/transam.h:407,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/include/access/transam.h:407,1
    - Dst: Assert
      Src: /src/postgres/src/include/access/transam.h:409,1
    - Dst: FullTransactionIdFromEpochAndXid
      Src: /src/postgres/src/include/access/transam.h:413,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - nextFullXid
    - xid
    argTypes:
    - FullTransactionId
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 380
    functionDepth: 1
    functionLinenumber: 380
    functionLinenumberEnd: 414
    functionName: FullTransactionIdFromAllowableAt
    functionSourceFile: /src/postgres/src/include/access/transam.h
    functionUses: 1
    functionsReached:
    - EpochFromFullTransactionId
    - Assert
    - FullTransactionIdFromEpochAndXid
    - XidFromFullTransactionId
    - TransactionIdIsNormal
    - unlikely
    - TransactionIdPrecedesOrEquals
    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:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tup
    argTypes:
    - GinTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 40
    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: 313
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 313
    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: 314
      start: 313
    functionDepth: 0
    functionLinenumber: 313
    functionLinenumberEnd: 314
    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: 319
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 319
    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: 320
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 320
    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: 326
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 326
    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: 342
      start: 341
    functionDepth: 0
    functionLinenumber: 341
    functionLinenumberEnd: 342
    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: 345
      start: 342
    functionDepth: 0
    functionLinenumber: 342
    functionLinenumberEnd: 345
    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: 397
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 397
    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: 399
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 399
    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: 402
      start: 399
    functionDepth: 0
    functionLinenumber: 399
    functionLinenumberEnd: 402
    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: 405
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 405
    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: 410
      start: 406
    functionDepth: 0
    functionLinenumber: 406
    functionLinenumberEnd: 410
    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: 411
      start: 410
    functionDepth: 0
    functionLinenumber: 410
    functionLinenumberEnd: 411
    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: 414
      start: 411
    functionDepth: 0
    functionLinenumber: 411
    functionLinenumberEnd: 414
    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: 461
      start: 457
    functionDepth: 0
    functionLinenumber: 457
    functionLinenumberEnd: 461
    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: 471
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 471
    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: 485
      start: 484
    functionDepth: 0
    functionLinenumber: 484
    functionLinenumberEnd: 485
    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: 489
      start: 488
    functionDepth: 0
    functionLinenumber: 488
    functionLinenumberEnd: 489
    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: 490
      start: 489
    functionDepth: 0
    functionLinenumber: 489
    functionLinenumberEnd: 490
    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: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctl
    - pageno
    argTypes:
    - SlruCtl
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 181
    functionName: SimpleLruGetBankLock
    functionSourceFile: /src/postgres/src/include/access/slru.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: LWLock
    signature: 'LWLock *

      SimpleLruGetBankLock(SlruCtl ctl, int64 pageno)'
  - 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: 200
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 200
    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: 61
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 61
    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:
    - int16
    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(int16 infomask)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - infomask
    argTypes:
    - int16
    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(int16 infomask)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - infomask
    argTypes:
    - int16
    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(int16 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: 5
    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:
    - HeapTupleHeaderXminFrozen
    - HeapTupleHeaderGetRawXmin
    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: HeapTupleHeaderSetXminCommitted
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached:
    - Assert
    - HeapTupleHeaderXminInvalid
    linkageType: ''
    returnType: void
    signature: void HeapTupleHeaderSetXminCommitted(HeapTupleHeaderData *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/htup_details.h:370,1
    - Dst: HeapTupleHeaderXminCommitted
      Src: /src/postgres/src/include/access/htup_details.h:370,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 372
    functionName: HeapTupleHeaderSetXminInvalid
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached:
    - Assert
    - HeapTupleHeaderXminCommitted
    linkageType: ''
    returnType: void
    signature: void HeapTupleHeaderSetXminInvalid(HeapTupleHeaderData *tup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/access/htup_details.h:377,1
    - Dst: HeapTupleHeaderXminInvalid
      Src: /src/postgres/src/include/access/htup_details.h:377,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 379
    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: 385
      start: 381
    functionDepth: 0
    functionLinenumber: 381
    functionLinenumberEnd: 385
    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: 391
      start: 387
    functionDepth: 0
    functionLinenumber: 387
    functionLinenumberEnd: 391
    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:407,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/include/access/htup_details.h:409,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 401
    functionDepth: 1
    functionLinenumber: 401
    functionLinenumberEnd: 410
    functionName: HeapTupleHeaderGetUpdateXid
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached:
    - HeapTupleGetUpdateXid
    - HeapTupleHeaderGetRawXmax
    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: 423
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 423
    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:429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - tup
    - cid
    argTypes:
    - HeapTupleHeaderData*
    - CommandId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 426
    functionDepth: 1
    functionLinenumber: 426
    functionLinenumberEnd: 432
    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:438,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - tup
    - cid
    - iscombo
    argTypes:
    - HeapTupleHeaderData*
    - CommandId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 435
    functionDepth: 1
    functionLinenumber: 435
    functionLinenumberEnd: 444
    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: 453
      start: 446
    functionDepth: 0
    functionLinenumber: 446
    functionLinenumberEnd: 453
    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:458,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tup
    - xid
    argTypes:
    - HeapTupleHeaderData*
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 455
    functionDepth: 1
    functionLinenumber: 455
    functionLinenumberEnd: 460
    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:468,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 465
    functionDepth: 1
    functionLinenumber: 465
    functionLinenumberEnd: 469
    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:474,1
    - Dst: HeapTupleHeaderIsSpeculative
      Src: /src/postgres/src/include/access/htup_details.h:474,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/include/access/htup_details.h:475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 471
    functionDepth: 2
    functionLinenumber: 471
    functionLinenumberEnd: 476
    functionName: HeapTupleHeaderGetSpeculativeToken
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached:
    - ItemPointerGetBlockNumber
    - Assert
    - 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:481,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tup
    - token
    argTypes:
    - HeapTupleHeaderData*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 478
    functionDepth: 1
    functionLinenumber: 478
    functionLinenumberEnd: 482
    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:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 484
    functionDepth: 1
    functionLinenumber: 484
    functionLinenumberEnd: 488
    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:493,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 490
    functionDepth: 1
    functionLinenumber: 490
    functionLinenumberEnd: 494
    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:499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 496
    functionDepth: 1
    functionLinenumber: 496
    functionLinenumberEnd: 500
    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:505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tup
    - len
    argTypes:
    - HeapTupleHeaderData*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 502
    functionDepth: 1
    functionLinenumber: 502
    functionLinenumberEnd: 506
    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: 512
      start: 508
    functionDepth: 0
    functionLinenumber: 508
    functionLinenumberEnd: 512
    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: 518
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 518
    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: 524
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 524
    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: 530
      start: 526
    functionDepth: 0
    functionLinenumber: 526
    functionLinenumberEnd: 530
    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:544,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 538
    functionDepth: 1
    functionLinenumber: 538
    functionLinenumberEnd: 545
    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: 551
      start: 547
    functionDepth: 0
    functionLinenumber: 547
    functionLinenumberEnd: 551
    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: 557
      start: 553
    functionDepth: 0
    functionLinenumber: 553
    functionLinenumberEnd: 557
    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: 563
      start: 559
    functionDepth: 0
    functionLinenumber: 559
    functionLinenumberEnd: 563
    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: 569
      start: 565
    functionDepth: 0
    functionLinenumber: 565
    functionLinenumberEnd: 569
    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: 575
      start: 571
    functionDepth: 0
    functionLinenumber: 571
    functionLinenumberEnd: 575
    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: 584
      start: 582
    functionDepth: 0
    functionLinenumber: 582
    functionLinenumberEnd: 584
    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: 589
      start: 585
    functionDepth: 0
    functionLinenumber: 585
    functionLinenumberEnd: 589
    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: 592
      start: 590
    functionDepth: 0
    functionLinenumber: 590
    functionLinenumberEnd: 592
    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: 602
      start: 598
    functionDepth: 0
    functionLinenumber: 598
    functionLinenumberEnd: 602
    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: 714
      start: 710
    functionDepth: 0
    functionLinenumber: 710
    functionLinenumberEnd: 714
    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: 720
      start: 716
    functionDepth: 0
    functionLinenumber: 716
    functionLinenumberEnd: 720
    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: 726
      start: 722
    functionDepth: 0
    functionLinenumber: 722
    functionLinenumberEnd: 726
    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: 736
      start: 732
    functionDepth: 0
    functionLinenumber: 732
    functionLinenumberEnd: 736
    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: 746
      start: 742
    functionDepth: 0
    functionLinenumber: 742
    functionLinenumberEnd: 746
    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:751,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 748
    functionDepth: 1
    functionLinenumber: 748
    functionLinenumberEnd: 752
    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: 758
      start: 754
    functionDepth: 0
    functionLinenumber: 754
    functionLinenumberEnd: 758
    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:763,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 760
    functionDepth: 1
    functionLinenumber: 760
    functionLinenumberEnd: 764
    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: 770
      start: 766
    functionDepth: 0
    functionLinenumber: 766
    functionLinenumberEnd: 770
    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:775,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 776
      start: 772
    functionDepth: 2
    functionLinenumber: 772
    functionLinenumberEnd: 776
    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:781,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 778
    functionDepth: 1
    functionLinenumber: 778
    functionLinenumberEnd: 782
    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:787,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 784
    functionDepth: 1
    functionLinenumber: 784
    functionLinenumberEnd: 788
    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:793,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 794
      start: 790
    functionDepth: 1
    functionLinenumber: 790
    functionLinenumberEnd: 794
    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:799,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 796
    functionDepth: 1
    functionLinenumber: 796
    functionLinenumberEnd: 800
    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:805,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 802
    functionDepth: 1
    functionLinenumber: 802
    functionLinenumberEnd: 806
    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:868,1
    - Dst: HeapTupleNoNulls
      Src: /src/postgres/src/include/access/htup_details.h:871,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/include/access/htup_details.h:875,1
    - Dst: fetchatt
      Src: /src/postgres/src/include/access/htup_details.h:877,1
    - Dst: nocachegetattr
      Src: /src/postgres/src/include/access/htup_details.h:880,1
    - Dst: att_isnull
      Src: /src/postgres/src/include/access/htup_details.h:884,1
    - Dst: nocachegetattr
      Src: /src/postgres/src/include/access/htup_details.h:890,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - tup
    - attnum
    - tupleDesc
    - isnull
    argTypes:
    - HeapTuple
    - int
    - TupleDesc
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 892
      start: 865
    functionDepth: 2
    functionLinenumber: 865
    functionLinenumberEnd: 892
    functionName: fastgetattr
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 0
    functionsReached:
    - Assert
    - HeapTupleNoNulls
    - nocachegetattr
    - att_isnull
    - TupleDescCompactAttr
    - fetchatt
    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:913,1
    - Dst: getmissingattr
      Src: /src/postgres/src/include/access/htup_details.h:914,1
    - Dst: fastgetattr
      Src: /src/postgres/src/include/access/htup_details.h:916,1
    - Dst: heap_getsysattr
      Src: /src/postgres/src/include/access/htup_details.h:919,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - tup
    - attnum
    - tupleDesc
    - isnull
    argTypes:
    - HeapTuple
    - int
    - TupleDesc
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 908
    functionDepth: 3
    functionLinenumber: 908
    functionLinenumberEnd: 920
    functionName: heap_getattr
    functionSourceFile: /src/postgres/src/include/access/htup_details.h
    functionUses: 5
    functionsReached:
    - heap_getsysattr
    - getmissingattr
    - HeapTupleHeaderGetNatts
    - fastgetattr
    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:
    - bbsink*::bbs_ops::begin_archive
    - Assert
    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:
    - bbsink*::bbs_ops::end_archive
    - Assert
    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:
    - bbsink*::bbs_ops::begin_manifest
    - Assert
    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:
    - bbsink*::bbs_ops::manifest_contents
    - Assert
    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:
    - bbsink*::bbs_ops::end_backup
    - Assert
    - list_length
    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:
    - bbsink*::bbs_ops::cleanup
    - Assert
    linkageType: ''
    returnType: void
    signature: void bbsink_cleanup(bbsink *sink)
  - 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: 55
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 55
    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: 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:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 96
    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: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_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:110,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: 111
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 111
    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:116,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: 117
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 117
    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:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - b
    - t
    - v
    - name
    argTypes:
    - LLVMBuilderRef
    - LLVMTypeRef
    - LLVMValueRef
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 123
    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:128,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: 129
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 129
    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:137,1
    - Dst: LLVMStructGetTypeAtIndex
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:138,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:139,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: 141
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 141
    functionName: l_load_struct_gep
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - l_struct_gep
    - l_load
    - 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:149,1
    - Dst: l_gep
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:149,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: 150
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 150
    functionName: l_load_gep1
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - l_gep
    - l_load
    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:166,1
    - Dst: vsnprintf
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:167,1
    - Dst: va_end
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:168,1
    - Dst: LLVMGetTypeContext
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:170,1
    - Dst: LLVMTypeOf
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:170,1
    - Dst: LLVMGetBasicBlockParent
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:170,1
    - Dst: LLVMInsertBasicBlockInContext
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - r
    - fmt
    argTypes:
    - LLVMBasicBlockRef
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 173
    functionName: l_bb_before_v
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - vsnprintf
    - LLVMGetBasicBlockParent
    - LLVMInsertBasicBlockInContext
    - va_end
    - LLVMTypeOf
    - LLVMGetTypeContext
    - va_start
    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:189,1
    - Dst: vsnprintf
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:190,1
    - Dst: va_end
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:191,1
    - Dst: LLVMGetTypeContext
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:193,1
    - Dst: LLVMTypeOf
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:193,1
    - Dst: LLVMAppendBasicBlockInContext
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - f
    - fmt
    argTypes:
    - LLVMValueRef
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 196
    functionName: l_bb_append_v
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - vsnprintf
    - va_end
    - LLVMTypeOf
    - LLVMGetTypeContext
    - LLVMAppendBasicBlockInContext
    - va_start
    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:207,1
    - Dst: LLVMGetTypeContext
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:207,1
    - Dst: LLVMTypeOf
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:207,1
    - Dst: LLVMAddCallSiteAttribute
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - f
    argTypes:
    - LLVMValueRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 213
    functionName: l_callsite_ro
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - LLVMTypeOf
    - LLVMGetTypeContext
    - LLVMAddCallSiteAttribute
    - LLVMCreateStringAttribute
    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:225,1
    - Dst: LLVMCreateEnumAttribute
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:227,1
    - Dst: LLVMGetTypeContext
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:227,1
    - Dst: LLVMTypeOf
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:227,1
    - Dst: LLVMAddCallSiteAttribute
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - f
    argTypes:
    - LLVMValueRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 229
    functionName: l_callsite_alwaysinline
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - LLVMAddCallSiteAttribute
    - LLVMGetEnumAttributeKindForName
    - LLVMTypeOf
    - LLVMGetTypeContext
    - LLVMCreateEnumAttribute
    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:241,1
    - Dst: LLVMAddGlobal
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:242,1
    - Dst: l_ptr
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:242,1
    - Dst: l_load
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:243,1
    - Dst: l_ptr
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:243,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:244,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - mod
    - b
    - nc
    argTypes:
    - LLVMModuleRef
    - LLVMBuilderRef
    - LLVMValueRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 247
    functionName: l_mcxt_switch
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - LLVMGetNamedGlobal
    - LLVMAddGlobal
    - l_load
    - l_ptr
    - LLVMBuildStore
    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:258,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:263,1
    - Dst: LLVMArrayType
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:264,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - b
    - v_fcinfo
    - argno
    argTypes:
    - LLVMBuilderRef
    - LLVMValueRef
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 252
    functionDepth: 1
    functionLinenumber: 252
    functionLinenumberEnd: 273
    functionName: l_funcnullp
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - l_struct_gep
    - LLVMArrayType
    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:284,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:289,1
    - Dst: LLVMArrayType
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:290,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - b
    - v_fcinfo
    - argno
    argTypes:
    - LLVMBuilderRef
    - LLVMValueRef
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 278
    functionDepth: 1
    functionLinenumber: 278
    functionLinenumberEnd: 299
    functionName: l_funcvaluep
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - l_struct_gep
    - LLVMArrayType
    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:307,1
    - Dst: l_funcnullp
      Src: /src/postgres/src/include/jit/llvmjit_emit.h:307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - b
    - v_fcinfo
    - argno
    argTypes:
    - LLVMBuilderRef
    - LLVMValueRef
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 304
    functionDepth: 2
    functionLinenumber: 304
    functionLinenumberEnd: 308
    functionName: l_funcnull
    functionSourceFile: /src/postgres/src/include/jit/llvmjit_emit.h
    functionUses: 0
    functionsReached:
    - l_funcnullp
    - l_load
    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:316,1
    - Dst: l_funcvaluep
      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_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: 1
    BranchProfiles: []
    Callsites:
    - Dst: libpqsrv_connect_prepare
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:70,1
    - Dst: PQconnectStart
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:72,1
    - Dst: libpqsrv_connect_internal
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - conninfo
    - wait_event_info
    argTypes:
    - char*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 77
    functionName: libpqsrv_connect
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h
    functionUses: 0
    functionsReached:
    - libpqsrv_connect_prepare
    - PQconnectStart
    - libpqsrv_connect_internal
    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:91,1
    - Dst: PQconnectStartParams
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:93,1
    - Dst: libpqsrv_connect_internal
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - keywords
    - values
    - expand_dbname
    - wait_event_info
    argTypes:
    - char**
    - char**
    - int
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 98
    functionName: libpqsrv_connect_params
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h
    functionUses: 0
    functionsReached:
    - libpqsrv_connect_prepare
    - libpqsrv_connect_internal
    - PQconnectStartParams
    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:119,1
    - Dst: PQfinish
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:120,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 121
    functionName: libpqsrv_disconnect
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h
    functionUses: 0
    functionsReached:
    - PQfinish
    - ReleaseExternalFD
    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:138,1
    - Dst: ereport
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:141,1
    - Dst: errcode
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:142,1
    - Dst: errmsg
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:143,1
    - Dst: errdetail
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:144,1
    - Dst: errhint
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:145,1
    - Dst: ereport
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:147,1
    - Dst: errcode
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:148,1
    - Dst: errmsg
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:149,1
    - Dst: errdetail
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:150,1
    - Dst: errhint
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:151,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 154
    functionName: libpqsrv_connect_prepare
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h
    functionUses: 2
    functionsReached:
    - errmsg
    - AcquireExternalFD
    - ereport
    - errhint
    - errdetail
    - errcode
    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:168,1
    - Dst: PQstatus
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:176,1
    - Dst: PG_TRY
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:183,1
    - Dst: PQstatus
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:206,1
    - Dst: WaitLatchOrSocket
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:212,1
    - Dst: PQsocket
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:214,1
    - Dst: ResetLatch
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:221,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:222,1
    - Dst: PQconnectPoll
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:227,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:230,1
    - Dst: ReleaseExternalFD
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:237,1
    - Dst: PQfinish
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:238,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:240,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:242,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 2
    argNames:
    - conn
    - wait_event_info
    argTypes:
    - PGconn*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 243
    functionName: libpqsrv_connect_internal
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h
    functionUses: 2
    functionsReached:
    - ResetLatch
    - ReleaseExternalFD
    - PG_RE_THROW
    - PG_END_TRY
    - CHECK_FOR_INTERRUPTS
    - PG_TRY
    - PQfinish
    - PG_CATCH
    - PQsocket
    - PQstatus
    - PQconnectPoll
    - WaitLatchOrSocket
    linkageType: ''
    returnType: void
    signature: void libpqsrv_connect_internal(PGconn *conn, uint32 wait_event_info)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQsendQuery
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:258,1
    - Dst: libpqsrv_get_result_last
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:260,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - conn
    - query
    - wait_event_info
    argTypes:
    - PGconn*
    - char*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 261
    functionName: libpqsrv_exec
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h
    functionUses: 0
    functionsReached:
    - libpqsrv_get_result_last
    - PQsendQuery
    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:279,1
    - Dst: libpqsrv_get_result_last
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:282,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: 283
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 283
    functionName: libpqsrv_exec_params
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h
    functionUses: 0
    functionsReached:
    - libpqsrv_get_result_last
    - PQsendQueryParams
    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: PG_TRY
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:295,1
    - Dst: libpqsrv_get_result
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:302,1
    - Dst: PQclear
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:310,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:313,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:314,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:315,1
    - Dst: PQstatus
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:316,1
    - Dst: PG_CATCH
      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:322,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:323,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:325,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - conn
    - wait_event_info
    argTypes:
    - PGconn*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 328
    functionName: libpqsrv_get_result_last
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h
    functionUses: 2
    functionsReached:
    - PG_RE_THROW
    - PG_END_TRY
    - PG_TRY
    - PQresultStatus
    - PG_CATCH
    - PQstatus
    - PQclear
    - libpqsrv_get_result
    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:340,1
    - Dst: WaitLatchOrSocket
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:344,1
    - Dst: PQsocket
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:347,1
    - Dst: ResetLatch
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:354,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:355,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:359,1
    - Dst: PQgetResult
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:367,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - conn
    - wait_event_info
    argTypes:
    - PGconn*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 333
    functionDepth: 1
    functionLinenumber: 333
    functionLinenumberEnd: 368
    functionName: libpqsrv_get_result
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h
    functionUses: 1
    functionsReached:
    - ResetLatch
    - CHECK_FOR_INTERRUPTS
    - PQsocket
    - PQconsumeInput
    - PQgetResult
    - WaitLatchOrSocket
    - PQisBusy
    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:391,1
    - Dst: PG_TRY
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:397,1
    - Dst: PQcancelStart
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:399,1
    - Dst: pchomp
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:401,1
    - Dst: PQcancelErrorMessage
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:401,1
    - Dst: PQcancelPoll
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:412,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:417,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:418,1
    - Dst: pchomp
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:434,1
    - Dst: PQcancelErrorMessage
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:434,1
    - Dst: WaitLatchOrSocket
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:439,1
    - Dst: PQcancelSocket
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:439,1
    - Dst: ResetLatch
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:442,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:444,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:448,1
    - Dst: PQcancelFinish
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:450,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h:452,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 2
    argNames:
    - conn
    - endtime
    argTypes:
    - PGconn*
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 385
    functionDepth: 1
    functionLinenumber: 385
    functionLinenumberEnd: 455
    functionName: libpqsrv_cancel
    functionSourceFile: /src/postgres/src/include/libpq/libpq-be-fe-helpers.h
    functionUses: 0
    functionsReached:
    - ResetLatch
    - PG_FINALLY
    - pchomp
    - PQcancelSocket
    - PG_END_TRY
    - CHECK_FOR_INTERRUPTS
    - PG_TRY
    - PQcancelErrorMessage
    - TimestampDifferenceMilliseconds
    - PQcancelFinish
    - GetCurrentTimestamp
    - WaitLatchOrSocket
    - PQcancelCreate
    - PQcancelPoll
    - PQcancelStart
    linkageType: ''
    returnType: char
    signature: 'char *

      libpqsrv_cancel(PGconn *conn, TimestampTz endtime)'
  - 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: 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: 47
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 47
    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: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    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: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    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: 51
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 51
    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: 53
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 53
    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:
    - enlargeStringInfo
    - pq_writeint8
    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:
    - enlargeStringInfo
    - pq_writeint16
    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:
    - enlargeStringInfo
    - pq_writeint32
    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:
    - enlargeStringInfo
    - pq_writeint64
    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:
    - pq_sendint8
    - pq_sendint32
    - pq_sendint16
    - elog
    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: 1
    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: 2
    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: 49
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 49
    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:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 70
    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: 88
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 88
    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: 89
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 89
    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: 90
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 90
    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: 91
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 91
    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:
    - GetCommandTagName
    - CreateCommandTag
    linkageType: ''
    returnType: char
    signature: 'char *

      CreateCommandName(Node *parsetree)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/fe_utils/astreamer.h:139,1
    - Dst: astreamer*::bbs_ops::content
      Src: /src/postgres/src/include/fe_utils/astreamer.h:140,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: 141
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 141
    functionName: astreamer_content
    functionSourceFile: /src/postgres/src/include/fe_utils/astreamer.h
    functionUses: 21
    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:147,1
    - Dst: astreamer*::bbs_ops::finalize
      Src: /src/postgres/src/include/fe_utils/astreamer.h:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 149
    functionName: astreamer_finalize
    functionSourceFile: /src/postgres/src/include/fe_utils/astreamer.h
    functionUses: 13
    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:155,1
    - Dst: astreamer*::bbs_ops::free
      Src: /src/postgres/src/include/fe_utils/astreamer.h:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - streamer
    argTypes:
    - astreamer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 157
    functionName: astreamer_free
    functionSourceFile: /src/postgres/src/include/fe_utils/astreamer.h
    functionUses: 13
    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:169,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/include/fe_utils/astreamer.h:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - streamer
    - data
    - len
    - nbytes
    argTypes:
    - astreamer*
    - char**
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 174
    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:198,1
    - Dst: astreamer_buffer_bytes
      Src: /src/postgres/src/include/fe_utils/astreamer.h:203,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: 205
      start: 183
    functionDepth: 2
    functionLinenumber: 183
    functionLinenumberEnd: 205
    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: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ParallelSlotClearHandler(ParallelSlot *slot)
  - 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: 126
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 126
    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: 10
    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: 25
    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: 7
    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: 3
    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: 1
    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: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 208
    functionName: list_make_ptr_cell
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_make_ptr_cell(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 209
    functionName: list_make_int_cell
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_make_int_cell(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 210
    functionName: list_make_oid_cell
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_make_oid_cell(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 211
    functionName: list_make_xid_cell
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_make_xid_cell(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x1
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 214
    functionName: list_make1
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 3
    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: 216
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 216
    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: 219
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 219
    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: 222
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 222
    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: 226
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 226
    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: 229
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 229
    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: 231
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 231
    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: 234
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 234
    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: 237
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 237
    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: 241
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 241
    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: 244
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 244
    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: 246
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 246
    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: 249
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 249
    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: 252
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 252
    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: 256
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 256
    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: 259
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 259
    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: 261
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 261
    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: 264
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 264
    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: 267
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 267
    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: 271
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 271
    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:279,1
    - Dst: Assert
      Src: /src/postgres/src/include/nodes/pg_list.h:280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - list
    - n
    argTypes:
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 282
    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:290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - list
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 292
    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:301,1
    - Dst: IsA
      Src: /src/postgres/src/include/nodes/pg_list.h:301,1
    - Dst: lfirst
      Src: /src/postgres/src/include/nodes/pg_list.h:302,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/include/nodes/pg_list.h:302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - list
    - n
    argTypes:
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 298
    functionDepth: 2
    functionLinenumber: 298
    functionLinenumberEnd: 303
    functionName: list_nth
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 1
    functionsReached:
    - lfirst
    - Assert
    - list_nth_cell
    - IsA
    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:312,1
    - Dst: IsA
      Src: /src/postgres/src/include/nodes/pg_list.h:312,1
    - Dst: lfirst_int
      Src: /src/postgres/src/include/nodes/pg_list.h:313,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/include/nodes/pg_list.h:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - list
    - n
    argTypes:
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 309
    functionDepth: 2
    functionLinenumber: 309
    functionLinenumberEnd: 314
    functionName: list_nth_int
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached:
    - list_nth_cell
    - Assert
    - 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:323,1
    - Dst: IsA
      Src: /src/postgres/src/include/nodes/pg_list.h:323,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/include/nodes/pg_list.h:324,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/include/nodes/pg_list.h:324,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - list
    - n
    argTypes:
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 320
    functionDepth: 2
    functionLinenumber: 320
    functionLinenumberEnd: 325
    functionName: list_nth_oid
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached:
    - list_nth_cell
    - Assert
    - 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: 328
      start: 327
    functionDepth: 0
    functionLinenumber: 327
    functionLinenumberEnd: 328
    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:335,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - l
    - c
    argTypes:
    - List*
    - ListCell*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 332
    functionDepth: 1
    functionLinenumber: 332
    functionLinenumberEnd: 337
    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:345,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - l
    - c
    argTypes:
    - List*
    - ListCell*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 342
    functionDepth: 1
    functionLinenumber: 342
    functionLinenumberEnd: 351
    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: 380
      start: 373
    functionDepth: 0
    functionLinenumber: 373
    functionLinenumberEnd: 380
    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: 393
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 393
    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: 404
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 404
    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: 421
      start: 414
    functionDepth: 0
    functionLinenumber: 414
    functionLinenumberEnd: 421
    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:427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - lst
    - N
    argTypes:
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 422
    functionDepth: 1
    functionLinenumber: 422
    functionLinenumberEnd: 429
    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: 445
      start: 438
    functionDepth: 0
    functionLinenumber: 438
    functionLinenumberEnd: 445
    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:450,1
    - Dst: list_length
      Src: /src/postgres/src/include/nodes/pg_list.h:450,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lst
    - initcell
    argTypes:
    - List*
    - ListCell*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 446
    functionDepth: 2
    functionLinenumber: 446
    functionLinenumberEnd: 453
    functionName: for_each_cell_setup
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached:
    - list_cell_number
    - list_length
    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: 470
      start: 469
    functionDepth: 0
    functionLinenumber: 469
    functionLinenumberEnd: 470
    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: 471
      start: 470
    functionDepth: 0
    functionLinenumber: 470
    functionLinenumberEnd: 471
    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: 472
      start: 471
    functionDepth: 0
    functionLinenumber: 471
    functionLinenumberEnd: 472
    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: 473
      start: 472
    functionDepth: 0
    functionLinenumber: 472
    functionLinenumberEnd: 473
    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: 490
      start: 481
    functionDepth: 0
    functionLinenumber: 481
    functionLinenumberEnd: 490
    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: 505
      start: 496
    functionDepth: 0
    functionLinenumber: 496
    functionLinenumberEnd: 505
    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: 524
      start: 518
    functionDepth: 0
    functionLinenumber: 518
    functionLinenumberEnd: 524
    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: 528
      start: 525
    functionDepth: 0
    functionLinenumber: 525
    functionLinenumberEnd: 528
    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: 547
      start: 540
    functionDepth: 0
    functionLinenumber: 540
    functionLinenumberEnd: 547
    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:553,1
    - Dst: list_length
      Src: /src/postgres/src/include/nodes/pg_list.h:553,1
    - Dst: list_cell_number
      Src: /src/postgres/src/include/nodes/pg_list.h:554,1
    - Dst: list_length
      Src: /src/postgres/src/include/nodes/pg_list.h:554,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - list1
    - initcell1
    - list2
    - initcell2
    argTypes:
    - List*
    - ListCell*
    - List*
    - ListCell*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 548
    functionDepth: 2
    functionLinenumber: 548
    functionLinenumberEnd: 557
    functionName: for_both_cell_setup
    functionSourceFile: /src/postgres/src/include/nodes/pg_list.h
    functionUses: 0
    functionsReached:
    - list_cell_number
    - list_length
    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: 570
      start: 563
    functionDepth: 0
    functionLinenumber: 563
    functionLinenumberEnd: 570
    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: 583
      start: 575
    functionDepth: 0
    functionLinenumber: 575
    functionLinenumberEnd: 583
    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: 598
      start: 588
    functionDepth: 0
    functionLinenumber: 588
    functionLinenumberEnd: 598
    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:
    - lsecond
    - list_length
    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: 111
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 111
    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: 119
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 119
    functionName: bms_is_empty
    functionSourceFile: /src/postgres/src/include/nodes/bitmapset.h
    functionUses: 1
    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: 140
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 140
    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:154,1
    - Dst: palloc0
      Src: /src/postgres/src/include/nodes/nodes.h:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - size
    - tag
    argTypes:
    - size_t
    - NodeTag
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 159
    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: 162
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 162
    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: 163
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 163
    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: 165
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 165
    functionName: IsA
    functionSourceFile: /src/postgres/src/include/nodes/nodes.h
    functionUses: 23
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsA(nodeptr,_type_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/nodes/nodes.h:177,1
    - Dst: nodeTag
      Src: /src/postgres/src/include/nodes/nodes.h:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - type
    - ptr
    argTypes:
    - NodeTag
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 179
    functionName: castNodeImpl
    functionSourceFile: /src/postgres/src/include/nodes/nodes.h
    functionUses: 0
    functionsReached:
    - nodeTag
    - Assert
    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: 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: 5
    argNames:
    - (
    - _type_
    - ','
    - nodeptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 183
    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: 2
    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: 2
    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: 351
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 351
    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: 392
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 392
    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: 393
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 393
    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: 394
      start: 393
    functionDepth: 0
    functionLinenumber: 393
    functionLinenumberEnd: 394
    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: 395
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 395
    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: 4
    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: 248
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 248
    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:
    - (
    - cte
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1739
      start: 1734
    functionDepth: 0
    functionLinenumber: 1734
    functionLinenumberEnd: 1739
    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: 894
      start: 892
    functionDepth: 0
    functionLinenumber: 892
    functionLinenumberEnd: 894
    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: 896
      start: 894
    functionDepth: 0
    functionLinenumber: 894
    functionLinenumberEnd: 896
    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: 898
      start: 896
    functionDepth: 0
    functionLinenumber: 896
    functionLinenumberEnd: 898
    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: 900
      start: 898
    functionDepth: 0
    functionLinenumber: 898
    functionLinenumberEnd: 900
    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: 1260
      start: 1259
    functionDepth: 0
    functionLinenumber: 1259
    functionLinenumberEnd: 1260
    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: 1261
      start: 1260
    functionDepth: 0
    functionLinenumber: 1260
    functionLinenumberEnd: 1261
    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: 1268
      start: 1263
    functionDepth: 0
    functionLinenumber: 1263
    functionLinenumberEnd: 1268
    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: 1273
      start: 1268
    functionDepth: 0
    functionLinenumber: 1268
    functionLinenumberEnd: 1273
    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: 1278
      start: 1273
    functionDepth: 0
    functionLinenumber: 1273
    functionLinenumberEnd: 1278
    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: 144
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 144
    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: 234
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 234
    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: 235
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 235
    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: 1488
      start: 1487
    functionDepth: 0
    functionLinenumber: 1487
    functionLinenumberEnd: 1488
    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: 187
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 187
    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: 597
      start: 594
    functionDepth: 0
    functionLinenumber: 594
    functionLinenumberEnd: 597
    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: 866
      start: 863
    functionDepth: 0
    functionLinenumber: 863
    functionLinenumberEnd: 866
    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: 871
      start: 868
    functionDepth: 0
    functionLinenumber: 868
    functionLinenumberEnd: 871
    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: 876
      start: 873
    functionDepth: 0
    functionLinenumber: 873
    functionLinenumberEnd: 876
    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: 882
      start: 878
    functionDepth: 0
    functionLinenumber: 878
    functionLinenumberEnd: 882
    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: 1089
      start: 1086
    functionDepth: 0
    functionLinenumber: 1086
    functionLinenumberEnd: 1089
    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: 1097
      start: 1094
    functionDepth: 0
    functionLinenumber: 1094
    functionLinenumberEnd: 1097
    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: 3
    argNames:
    - (
    - eclass
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1474
      start: 1472
    functionDepth: 0
    functionLinenumber: 1472
    functionLinenumberEnd: 1474
    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: 1684
      start: 1682
    functionDepth: 0
    functionLinenumber: 1682
    functionLinenumberEnd: 1684
    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: 1805
      start: 1803
    functionDepth: 0
    functionLinenumber: 1803
    functionLinenumberEnd: 1805
    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: 2074
      start: 2072
    functionDepth: 0
    functionLinenumber: 2072
    functionLinenumberEnd: 2074
    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: 2081
      start: 2080
    functionDepth: 0
    functionLinenumber: 2080
    functionLinenumberEnd: 2081
    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: 2865
      start: 2862
    functionDepth: 0
    functionLinenumber: 2862
    functionLinenumberEnd: 2865
    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
    - off_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:
    - pg_pread
    - pread
    - preadv
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t pg_preadv(int fd, const struct iovec *iov, int iovcnt, off_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
    - off_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:
    - pwritev
    - pg_pwrite
    - pwrite
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t pg_pwritev(int fd, const struct iovec *iov, int iovcnt, off_t
      offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_loadu_si128
      Src: /src/postgres/src/include/port/simd.h:111,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/include/port/simd.h:113,1
    - Dst: memcpy
      Src: /src/postgres/src/include/port/simd.h:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - v
    - s
    argTypes:
    - Vector8*
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 117
    functionName: vector8_load
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - memcpy
    - _mm_loadu_si128
    - vld1q_u8
    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:124,1
    - Dst: vld1q_u32
      Src: /src/postgres/src/include/port/simd.h:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - v
    - s
    argTypes:
    - Vector32*
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 128
    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_set1_epi8
      Src: /src/postgres/src/include/port/simd.h:138,1
    - Dst: vdupq_n_u8
      Src: /src/postgres/src/include/port/simd.h:140,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/include/port/simd.h:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - c
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 144
    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:151,1
    - Dst: vdupq_n_u32
      Src: /src/postgres/src/include/port/simd.h:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - c
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 155
    functionName: vector32_broadcast
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - vdupq_n_u32
    - _mm_set1_epi32
    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:182,1
    - Dst: vector8_broadcast
      Src: /src/postgres/src/include/port/simd.h:182,1
    - Dst: vector8_is_highbit_set
      Src: /src/postgres/src/include/port/simd.h:184,1
    - Dst: vector8_eq
      Src: /src/postgres/src/include/port/simd.h:184,1
    - Dst: vector8_broadcast
      Src: /src/postgres/src/include/port/simd.h:184,1
    - Dst: Assert
      Src: /src/postgres/src/include/port/simd.h:187,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - v
    - c
    argTypes:
    - Vector8
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 161
    functionDepth: 2
    functionLinenumber: 161
    functionLinenumberEnd: 189
    functionName: vector8_has
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - Assert
    - vector8_is_highbit_set
    - vector8_has_zero
    - vector8_eq
    - vector8_broadcast
    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:202,1
    - Dst: vector8_has
      Src: /src/postgres/src/include/port/simd.h:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - v
    argTypes:
    - Vector8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 194
    functionDepth: 3
    functionLinenumber: 194
    functionLinenumberEnd: 206
    functionName: vector8_has_zero
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 1
    functionsReached:
    - vector8_has_le
    - vector8_has
    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:240,1
    - Dst: vector8_broadcast
      Src: /src/postgres/src/include/port/simd.h:240,1
    - Dst: vector8_has_zero
      Src: /src/postgres/src/include/port/simd.h:260,1
    - Dst: vector8_ssub
      Src: /src/postgres/src/include/port/simd.h:260,1
    - Dst: vector8_broadcast
      Src: /src/postgres/src/include/port/simd.h:260,1
    - Dst: Assert
      Src: /src/postgres/src/include/port/simd.h:263,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - v
    - c
    argTypes:
    - Vector8
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 212
    functionDepth: 4
    functionLinenumber: 212
    functionLinenumberEnd: 265
    functionName: vector8_has_le
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 1
    functionsReached:
    - vector8_has_zero
    - Assert
    - vector8_ssub
    - vector8_broadcast
    linkageType: ''
    returnType: bool
    signature: bool vector8_has_le(const Vector8 v, const uint8 c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_movemask_epi8
      Src: /src/postgres/src/include/port/simd.h:274,1
    - Dst: vmaxvq_u8
      Src: /src/postgres/src/include/port/simd.h:276,1
    - Dst: vector8_broadcast
      Src: /src/postgres/src/include/port/simd.h:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - Vector8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 270
    functionDepth: 2
    functionLinenumber: 270
    functionLinenumberEnd: 280
    functionName: vector8_is_highbit_set
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 1
    functionsReached:
    - vmaxvq_u8
    - _mm_movemask_epi8
    - vector8_broadcast
    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:297,1
    - Dst: vector8_is_highbit_set
      Src: /src/postgres/src/include/port/simd.h:299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - v
    argTypes:
    - Vector32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 293
    functionDepth: 3
    functionLinenumber: 293
    functionLinenumberEnd: 301
    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:312,1
    - Dst: vandq_u8
      Src: /src/postgres/src/include/port/simd.h:326,1
    - Dst: vld1q_u8
      Src: /src/postgres/src/include/port/simd.h:326,1
    - Dst: vshrq_n_s8
      Src: /src/postgres/src/include/port/simd.h:326,1
    - Dst: vextq_u8
      Src: /src/postgres/src/include/port/simd.h:327,1
    - Dst: vaddvq_u16
      Src: /src/postgres/src/include/port/simd.h:329,1
    - Dst: vzip1q_u8
      Src: /src/postgres/src/include/port/simd.h:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - v
    argTypes:
    - Vector8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 331
    functionName: vector8_highbit_mask
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - vaddvq_u16
    - vshrq_n_s8
    - _mm_movemask_epi8
    - vld1q_u8
    - vandq_u8
    - vzip1q_u8
    - vextq_u8
    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:341,1
    - Dst: vorrq_u8
      Src: /src/postgres/src/include/port/simd.h:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - v1
    - v2
    argTypes:
    - Vector8
    - Vector8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 347
    functionName: vector8_or
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - _mm_or_si128
    - vorrq_u8
    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:354,1
    - Dst: vorrq_u32
      Src: /src/postgres/src/include/port/simd.h:356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - v1
    - v2
    argTypes:
    - Vector32
    - Vector32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 358
    functionName: vector32_or
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - _mm_or_si128
    - vorrq_u32
    linkageType: ''
    returnType: Vector32
    signature: Vector32 vector32_or(const Vector32 v1, const Vector32 v2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_subs_epu8
      Src: /src/postgres/src/include/port/simd.h:372,1
    - Dst: vqsubq_u8
      Src: /src/postgres/src/include/port/simd.h:374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - v1
    - v2
    argTypes:
    - Vector8
    - Vector8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 368
    functionDepth: 0
    functionLinenumber: 368
    functionLinenumberEnd: 376
    functionName: vector8_ssub
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 1
    functionsReached:
    - vqsubq_u8
    - _mm_subs_epu8
    linkageType: ''
    returnType: Vector8
    signature: Vector8 vector8_ssub(const Vector8 v1, const Vector8 v2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_cmpeq_epi8
      Src: /src/postgres/src/include/port/simd.h:388,1
    - Dst: vceqq_u8
      Src: /src/postgres/src/include/port/simd.h:390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - v1
    - v2
    argTypes:
    - Vector8
    - Vector8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 384
    functionDepth: 0
    functionLinenumber: 384
    functionLinenumberEnd: 392
    functionName: vector8_eq
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 1
    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:400,1
    - Dst: vceqq_u32
      Src: /src/postgres/src/include/port/simd.h:402,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - v1
    - v2
    argTypes:
    - Vector32
    - Vector32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 396
    functionDepth: 0
    functionLinenumber: 396
    functionLinenumberEnd: 404
    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_min_epu8
      Src: /src/postgres/src/include/port/simd.h:415,1
    - Dst: vminq_u8
      Src: /src/postgres/src/include/port/simd.h:417,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - v1
    - v2
    argTypes:
    - Vector8
    - Vector8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 411
    functionDepth: 0
    functionLinenumber: 411
    functionLinenumberEnd: 419
    functionName: vector8_min
    functionSourceFile: /src/postgres/src/include/port/simd.h
    functionUses: 0
    functionsReached:
    - vminq_u8
    - _mm_min_epu8
    linkageType: ''
    returnType: Vector8
    signature: Vector8 vector8_min(const Vector8 v1, const Vector8 v2)
  - 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: __builtin_constant_p
      Src: /src/postgres/src/include/port/pg_crc32c.h:73,1
    - Dst: _mm_crc32_u64
      Src: /src/postgres/src/include/port/pg_crc32c.h:83,1
    - Dst: _mm_crc32_u32
      Src: /src/postgres/src/include/port/pg_crc32c.h:86,1
    - Dst: _mm_crc32_u8
      Src: /src/postgres/src/include/port/pg_crc32c.h:88,1
    - Dst: pg_comp_crc32c
      Src: /src/postgres/src/include/port/pg_crc32c.h:93,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - crc
    - data
    - len
    argTypes:
    - pg_crc32c
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 94
    functionName: pg_comp_crc32c_dispatch
    functionSourceFile: /src/postgres/src/include/port/pg_crc32c.h
    functionUses: 0
    functionsReached:
    - __builtin_constant_p
    - _mm_crc32_u32
    - _mm_crc32_u64
    - pg_comp_crc32c
    - _mm_crc32_u8
    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: 104
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 104
    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: 105
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 105
    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: 118
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 118
    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: 119
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 119
    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: 127
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 127
    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: 128
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 128
    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: 139
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 139
    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: 140
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 140
    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: 155
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 155
    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: 157
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 157
    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: 159
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 159
    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:
    - __builtin_clz
    - Assert
    - _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: 1
    functionsReached:
    - __builtin_clzl
    - Assert
    - __builtin_clzll
    - _BitScanReverse64
    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: 0
    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
    - _BitScanForward64
    - __builtin_ctzl
    - __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: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_popcount_optimized
      Src: /src/postgres/src/include/port/pg_bitutils.h:384,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - buf
    - bytes
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 362
    functionDepth: 0
    functionLinenumber: 362
    functionLinenumberEnd: 385
    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:415,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - buf
    - bytes
    - mask
    argTypes:
    - char*
    - int
    - bits8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 393
    functionDepth: 0
    functionLinenumber: 393
    functionLinenumberEnd: 416
    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, bits8 mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - word
    - n
    argTypes:
    - uint32
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 425
    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: 431
      start: 427
    functionDepth: 0
    functionLinenumber: 427
    functionLinenumberEnd: 431
    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: 8
    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: 8
    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: 50
    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: 18
    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: 8
    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: 423
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 423
    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: 424
      start: 423
    functionDepth: 0
    functionLinenumber: 423
    functionLinenumberEnd: 424
    functionName: localtime_r
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 0
    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: 476
      start: 475
    functionDepth: 0
    functionLinenumber: 475
    functionLinenumberEnd: 476
    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: 485
      start: 484
    functionDepth: 0
    functionLinenumber: 484
    functionLinenumberEnd: 485
    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: 494
      start: 493
    functionDepth: 0
    functionLinenumber: 493
    functionLinenumberEnd: 494
    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: 499
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 499
    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: 500
      start: 499
    functionDepth: 0
    functionLinenumber: 499
    functionLinenumberEnd: 500
    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: 501
      start: 500
    functionDepth: 0
    functionLinenumber: 500
    functionLinenumberEnd: 501
    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: 502
      start: 501
    functionDepth: 0
    functionLinenumber: 501
    functionLinenumberEnd: 502
    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: 503
      start: 502
    functionDepth: 0
    functionLinenumber: 502
    functionLinenumberEnd: 503
    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: 504
      start: 503
    functionDepth: 0
    functionLinenumber: 503
    functionLinenumberEnd: 504
    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: 505
      start: 504
    functionDepth: 0
    functionLinenumber: 504
    functionLinenumberEnd: 505
    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: 506
      start: 505
    functionDepth: 0
    functionLinenumber: 505
    functionLinenumberEnd: 506
    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: 545
      start: 544
    functionDepth: 0
    functionLinenumber: 544
    functionLinenumberEnd: 545
    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: 546
      start: 545
    functionDepth: 0
    functionLinenumber: 545
    functionLinenumberEnd: 546
    functionName: setenv
    functionSourceFile: /src/postgres/src/include/port/win32_port.h
    functionUses: 13
    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: 547
      start: 546
    functionDepth: 0
    functionLinenumber: 546
    functionLinenumberEnd: 547
    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: 132
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 132
    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: 144
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 144
    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: 157
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 157
    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: 158
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 158
    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: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 163
    functionName: pg_spin_delay
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_spin_delay()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_init_flag_impl
      Src: /src/postgres/src/include/port/atomics.h:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 173
    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:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 186
    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:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 199
    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:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 210
    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:223,1
    - Dst: pg_atomic_init_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - val
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 226
    functionName: pg_atomic_init_u32
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    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:241,1
    - Dst: pg_atomic_read_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 243
    functionName: pg_atomic_read_u32
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 3
    functionsReached:
    - pg_atomic_read_u32_impl
    - AssertPointerAlignment
    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:260,1
    - Dst: pg_atomic_read_membarrier_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 263
    functionName: pg_atomic_read_membarrier_u32
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 0
    functionsReached:
    - AssertPointerAlignment
    - pg_atomic_read_membarrier_u32_impl
    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:278,1
    - Dst: pg_atomic_write_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - val
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 275
    functionDepth: 1
    functionLinenumber: 275
    functionLinenumberEnd: 281
    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:297,1
    - Dst: pg_atomic_unlocked_write_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - val
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 294
    functionDepth: 1
    functionLinenumber: 294
    functionLinenumberEnd: 300
    functionName: pg_atomic_unlocked_write_u32
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - AssertPointerAlignment
    - pg_atomic_unlocked_write_u32_impl
    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:317,1
    - Dst: pg_atomic_write_membarrier_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - val
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 320
    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:332,1
    - Dst: pg_atomic_exchange_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - newval
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 329
    functionDepth: 1
    functionLinenumber: 329
    functionLinenumberEnd: 335
    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:352,1
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics.h:353,1
    - Dst: pg_atomic_compare_exchange_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ptr
    - expected
    - newval
    argTypes:
    - pg_atomic_uint32*
    - uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 348
    functionDepth: 1
    functionLinenumber: 348
    functionLinenumberEnd: 356
    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:368,1
    - Dst: pg_atomic_fetch_add_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint32*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 365
    functionDepth: 1
    functionLinenumber: 365
    functionLinenumberEnd: 370
    functionName: pg_atomic_fetch_add_u32
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    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:383,1
    - Dst: Assert
      Src: /src/postgres/src/include/port/atomics.h:384,1
    - Dst: pg_atomic_fetch_sub_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:385,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ptr
    - sub_
    argTypes:
    - pg_atomic_uint32*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 380
    functionDepth: 1
    functionLinenumber: 380
    functionLinenumberEnd: 386
    functionName: pg_atomic_fetch_sub_u32
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - Assert
    - AssertPointerAlignment
    - pg_atomic_fetch_sub_u32_impl
    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:398,1
    - Dst: pg_atomic_fetch_and_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - and_
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 395
    functionDepth: 1
    functionLinenumber: 395
    functionLinenumberEnd: 400
    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:412,1
    - Dst: pg_atomic_fetch_or_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - or_
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 409
    functionDepth: 1
    functionLinenumber: 409
    functionLinenumberEnd: 414
    functionName: pg_atomic_fetch_or_u32
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - AssertPointerAlignment
    - pg_atomic_fetch_or_u32_impl
    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:426,1
    - Dst: pg_atomic_add_fetch_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint32*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 423
    functionDepth: 1
    functionLinenumber: 423
    functionLinenumberEnd: 428
    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:441,1
    - Dst: Assert
      Src: /src/postgres/src/include/port/atomics.h:442,1
    - Dst: pg_atomic_sub_fetch_u32_impl
      Src: /src/postgres/src/include/port/atomics.h:443,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ptr
    - sub_
    argTypes:
    - pg_atomic_uint32*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 438
    functionDepth: 1
    functionLinenumber: 438
    functionLinenumberEnd: 444
    functionName: pg_atomic_sub_fetch_u32
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - Assert
    - pg_atomic_sub_fetch_u32_impl
    - AssertPointerAlignment
    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:461,1
    - Dst: pg_atomic_init_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:463,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - val
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 452
    functionDepth: 1
    functionLinenumber: 452
    functionLinenumberEnd: 464
    functionName: pg_atomic_init_u64
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - AssertPointerAlignment
    - pg_atomic_init_u64_impl
    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:470,1
    - Dst: pg_atomic_read_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 466
    functionDepth: 1
    functionLinenumber: 466
    functionLinenumberEnd: 473
    functionName: pg_atomic_read_u64
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - AssertPointerAlignment
    - pg_atomic_read_u64_impl
    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:479,1
    - Dst: pg_atomic_read_membarrier_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:481,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 475
    functionDepth: 1
    functionLinenumber: 475
    functionLinenumberEnd: 482
    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:488,1
    - Dst: pg_atomic_write_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:490,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - val
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 484
    functionDepth: 1
    functionLinenumber: 484
    functionLinenumberEnd: 491
    functionName: pg_atomic_write_u64
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - AssertPointerAlignment
    - pg_atomic_write_u64_impl
    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:497,1
    - Dst: pg_atomic_write_membarrier_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - val
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 493
    functionDepth: 1
    functionLinenumber: 493
    functionLinenumberEnd: 500
    functionName: pg_atomic_write_membarrier_u64
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 0
    functionsReached:
    - AssertPointerAlignment
    - pg_atomic_write_membarrier_u64_impl
    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:506,1
    - Dst: pg_atomic_exchange_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:508,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - newval
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 502
    functionDepth: 1
    functionLinenumber: 502
    functionLinenumberEnd: 509
    functionName: pg_atomic_exchange_u64
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - AssertPointerAlignment
    - pg_atomic_exchange_u64_impl
    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:516,1
    - Dst: pg_atomic_compare_exchange_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:518,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ptr
    - expected
    - newval
    argTypes:
    - pg_atomic_uint64*
    - uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 511
    functionDepth: 1
    functionLinenumber: 511
    functionLinenumberEnd: 519
    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:525,1
    - Dst: pg_atomic_fetch_add_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:527,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint64*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 521
    functionDepth: 1
    functionLinenumber: 521
    functionLinenumberEnd: 528
    functionName: pg_atomic_fetch_add_u64
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - AssertPointerAlignment
    - pg_atomic_fetch_add_u64_impl
    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:534,1
    - Dst: Assert
      Src: /src/postgres/src/include/port/atomics.h:536,1
    - Dst: pg_atomic_fetch_sub_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:537,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ptr
    - sub_
    argTypes:
    - pg_atomic_uint64*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 530
    functionDepth: 1
    functionLinenumber: 530
    functionLinenumberEnd: 538
    functionName: pg_atomic_fetch_sub_u64
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - pg_atomic_fetch_sub_u64_impl
    - Assert
    - AssertPointerAlignment
    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:544,1
    - Dst: pg_atomic_fetch_and_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - and_
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 540
    functionDepth: 1
    functionLinenumber: 540
    functionLinenumberEnd: 547
    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:553,1
    - Dst: pg_atomic_fetch_or_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:555,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - or_
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 549
    functionDepth: 1
    functionLinenumber: 549
    functionLinenumberEnd: 556
    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:562,1
    - Dst: pg_atomic_add_fetch_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:564,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint64*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 558
    functionDepth: 1
    functionLinenumber: 558
    functionLinenumberEnd: 565
    functionName: pg_atomic_add_fetch_u64
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - AssertPointerAlignment
    - pg_atomic_add_fetch_u64_impl
    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:571,1
    - Dst: Assert
      Src: /src/postgres/src/include/port/atomics.h:573,1
    - Dst: pg_atomic_sub_fetch_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ptr
    - sub_
    argTypes:
    - pg_atomic_uint64*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 567
    functionDepth: 1
    functionLinenumber: 567
    functionLinenumberEnd: 575
    functionName: pg_atomic_sub_fetch_u64
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 1
    functionsReached:
    - pg_atomic_sub_fetch_u64_impl
    - Assert
    - 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:590,1
    - Dst: pg_atomic_read_u64_impl
      Src: /src/postgres/src/include/port/atomics.h:593,1
    - Dst: pg_memory_barrier
      Src: /src/postgres/src/include/port/atomics.h:596,1
    - Dst: pg_atomic_compare_exchange_u64
      Src: /src/postgres/src/include/port/atomics.h:602,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ptr
    - target
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 584
    functionDepth: 2
    functionLinenumber: 584
    functionLinenumberEnd: 607
    functionName: pg_atomic_monotonic_advance_u64
    functionSourceFile: /src/postgres/src/include/port/atomics.h
    functionUses: 0
    functionsReached:
    - pg_atomic_compare_exchange_u64
    - AssertPointerAlignment
    - pg_memory_barrier
    - pg_atomic_read_u64_impl
    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: 0
    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: 0
    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: 0
    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: 152
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 152
    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: 155
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 155
    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: 157
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 157
    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: 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_has
    - vector8_load
    linkageType: ''
    returnType: bool
    signature: bool pg_lfind8(uint8 key, 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: 5
    functionLinenumber: 57
    functionLinenumberEnd: 81
    functionName: pg_lfind8_le
    functionSourceFile: /src/postgres/src/include/port/pg_lfind.h
    functionUses: 1
    functionsReached:
    - vector8_has_le
    - vector8_load
    linkageType: ''
    returnType: bool
    signature: bool pg_lfind8_le(uint8 key, 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_load
    - vector32_or
    - vector32_is_highbit_set
    - vector32_eq
    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
    - vector32_broadcast
    - pg_lfind32_simd_helper
    - pg_lfind32_one_by_one_helper
    linkageType: ''
    returnType: bool
    signature: bool pg_lfind32(uint32 key, const uint32 *base, uint32 nelem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: pg_spin_delay_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_spin_delay_impl()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 49
    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: 58
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 58
    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: 67
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 67
    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:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 80
    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:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 87
    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:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 94
    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:102,1
    - Dst: pg_atomic_write_u32_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 104
    functionName: pg_atomic_clear_flag_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_memory_barrier_impl
    - pg_atomic_write_u32_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:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 117
    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:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 125
    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:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 132
    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:139,1
    - Dst: pg_atomic_write_u32_impl
      Src: /src/postgres/src/include/port/atomics/generic.h:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 141
    functionName: pg_atomic_clear_flag_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic.h
    functionUses: 1
    functionsReached:
    - pg_memory_barrier_impl
    - pg_atomic_write_u32_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: 154
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 154
    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:164,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - xchg_
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 167
    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:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint32*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 180
    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:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - sub_
    argTypes:
    - pg_atomic_uint32*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 189
    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:199,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - and_
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 202
    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:212,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - or_
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 215
    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:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint32*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 224
    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:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - sub_
    argTypes:
    - pg_atomic_uint32*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 233
    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:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 242
    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:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - val
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 251
    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:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - xchg_
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 264
    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:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - val
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 283
    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:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - val
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 295
    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:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics/generic.h:312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 306
    functionDepth: 1
    functionLinenumber: 306
    functionLinenumberEnd: 314
    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:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 332
    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: 342
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 342
    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:352,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint64*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 355
    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:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - sub_
    argTypes:
    - pg_atomic_uint64*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 364
    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:374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - and_
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 377
    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:387,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - or_
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 382
    functionDepth: 0
    functionLinenumber: 382
    functionLinenumberEnd: 390
    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:398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint64*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 399
    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:407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - sub_
    argTypes:
    - pg_atomic_uint64*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 404
    functionDepth: 0
    functionLinenumber: 404
    functionLinenumberEnd: 408
    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:416,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 417
    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:425,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - val
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 426
    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: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: pg_compiler_barrier_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-sunpro.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: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: pg_memory_barrier_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-sunpro.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: 35
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 35
    functionName: pg_read_barrier_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-sunpro.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: 38
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 38
    functionName: pg_write_barrier_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-sunpro.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_write_barrier_impl()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomic_cas_32
      Src: /src/postgres/src/include/port/atomics/generic-sunpro.h:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ptr
    - expected
    - newval
    argTypes:
    - pg_atomic_uint32*
    - uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 82
    functionName: pg_atomic_compare_exchange_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-sunpro.h
    functionUses: 6
    functionsReached:
    - atomic_cas_32
    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_swap_32
      Src: /src/postgres/src/include/port/atomics/generic-sunpro.h:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - newval
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 89
    functionName: pg_atomic_exchange_u32_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-sunpro.h
    functionUses: 3
    functionsReached:
    - atomic_swap_32
    linkageType: ''
    returnType: uint32
    signature: uint32 pg_atomic_exchange_u32_impl(volatile pg_atomic_uint32 *ptr,
      uint32 newval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertPointerAlignment
      Src: /src/postgres/src/include/port/atomics/generic-sunpro.h:99,1
    - Dst: atomic_cas_64
      Src: /src/postgres/src/include/port/atomics/generic-sunpro.h:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - ptr
    - expected
    - newval
    argTypes:
    - pg_atomic_uint64*
    - uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 104
    functionName: pg_atomic_compare_exchange_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-sunpro.h
    functionUses: 6
    functionsReached:
    - atomic_cas_64
    - 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: atomic_swap_64
      Src: /src/postgres/src/include/port/atomics/generic-sunpro.h:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - newval
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 111
    functionName: pg_atomic_exchange_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-sunpro.h
    functionUses: 3
    functionsReached:
    - atomic_swap_64
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_atomic_exchange_u64_impl(volatile pg_atomic_uint64 *ptr,
      uint64 newval)
  - 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: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    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: 53
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 53
    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:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 115
    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: 126
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 126
    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:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 135
    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:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 144
    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:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ptr
    - expected
    - newval
    argTypes:
    - pg_atomic_uint32*
    - uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 159
    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:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ptr
    - expected
    - newval
    argTypes:
    - pg_atomic_uint32*
    - uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 174
    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:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - newval
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 191
    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:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint32*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 202
    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:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - sub_
    argTypes:
    - pg_atomic_uint32*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 211
    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:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - and_
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 220
    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:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - or_
    argTypes:
    - pg_atomic_uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 229
    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:241,1
    - Dst: __atomic_compare_exchange_n
      Src: /src/postgres/src/include/port/atomics/generic-gcc.h:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ptr
    - expected
    - newval
    argTypes:
    - pg_atomic_uint64*
    - uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 244
    functionName: pg_atomic_compare_exchange_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-gcc.h
    functionUses: 6
    functionsReached:
    - AssertPointerAlignment
    - __atomic_compare_exchange_n
    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:256,1
    - Dst: __sync_val_compare_and_swap
      Src: /src/postgres/src/include/port/atomics/generic-gcc.h:257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - ptr
    - expected
    - newval
    argTypes:
    - pg_atomic_uint64*
    - uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 261
    functionName: pg_atomic_compare_exchange_u64_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/generic-gcc.h
    functionUses: 6
    functionsReached:
    - __sync_val_compare_and_swap
    - 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: __atomic_exchange_n
      Src: /src/postgres/src/include/port/atomics/generic-gcc.h:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - newval
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 278
    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:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - add_
    argTypes:
    - pg_atomic_uint64*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 289
    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:297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - sub_
    argTypes:
    - pg_atomic_uint64*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 298
    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:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - and_
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 307
    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:315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - or_
    argTypes:
    - pg_atomic_uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 316
    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: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 111
    functionName: pg_spin_delay_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/arch-x86.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pg_spin_delay_impl(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_pause
      Src: /src/postgres/src/include/port/atomics/arch-x86.h:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 118
    functionName: pg_spin_delay_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/arch-x86.h
    functionUses: 0
    functionsReached:
    - _mm_pause
    linkageType: ''
    returnType: void
    signature: void pg_spin_delay_impl(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 126
    functionName: pg_spin_delay_impl
    functionSourceFile: /src/postgres/src/include/port/atomics/arch-x86.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pg_spin_delay_impl(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - pg_atomic_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 146
    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: 158
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 158
    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: 179
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 179
    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: 193
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 193
    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:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ptr
    - expected
    - newval
    argTypes:
    - pg_atomic_uint64*
    - uint64*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 218
    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: 232
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 232
    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: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - d
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: COPYCHAR
    functionSourceFile: /src/postgres/src/include/tsearch/ts_locale.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COPYCHAR(d,s)
  - 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: 235
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 235
    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: 237
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 237
    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: 240
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 240
    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: 243
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 243
    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: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: 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:259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 260
    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:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - TSQueryData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 266
    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: 269
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 269
    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: 270
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 270
    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: 271
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 271
    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: 51
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 51
    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:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - TSQuerySign
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 257
    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:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 259
    functionDepth: 2
    functionLinenumber: 259
    functionLinenumberEnd: 263
    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: 266
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 266
    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: 267
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 267
    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: 133
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 133
    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: 38
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 38
    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: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    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: 64
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 64
    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: 65
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 65
    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: 85
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 85
    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: 86
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 86
    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: 87
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 87
    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: 95
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 95
    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: 119
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 119
    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: 120
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 120
    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: 121
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 121
    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: 122
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 122
    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: 128
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 128
    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:44,1
    - Dst: BKI_ARRAY_DEFAULT
      Src: /src/postgres/src/include/catalog/pg_type.h:88,1
    - Dst: BKI_ARRAY_DEFAULT
      Src: /src/postgres/src/include/catalog/pg_type.h:109,1
    - Dst: BKI_LOOKUP_OPT
      Src: /src/postgres/src/include/catalog/pg_type.h:109,1
    - Dst: BKI_LOOKUP_OPT
      Src: /src/postgres/src/include/catalog/pg_type.h:143,1
    - Dst: BKI_LOOKUP_OPT
      Src: /src/postgres/src/include/catalog/pg_type.h:144,1
    - Dst: BKI_ARRAY_DEFAULT
      Src: /src/postgres/src/include/catalog/pg_type.h:149,1
    - Dst: BKI_LOOKUP_OPT
      Src: /src/postgres/src/include/catalog/pg_type.h:149,1
    - Dst: BKI_LOOKUP_OPT
      Src: /src/postgres/src/include/catalog/pg_type.h:208,1
    - Dst: BKI_LOOKUP_OPT
      Src: /src/postgres/src/include/catalog/pg_type.h:228,1
    - Dst: BKI_ARRAY_DEFAULT
      Src: /src/postgres/src/include/catalog/pg_type.h:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 254
    functionName: BKI_SCHEMA_MACRO
    functionSourceFile: /src/postgres/src/include/catalog/pg_type.h
    functionUses: 0
    functionsReached:
    - BKI_ARRAY_DEFAULT
    - BKI_LOOKUP
    - BKI_LOOKUP_OPT
    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: 316
      start: 313
    functionDepth: 0
    functionLinenumber: 313
    functionLinenumberEnd: 316
    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: 325
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 325
    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: 332
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 332
    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: 337
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 337
    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:38,1
    - Dst: BKI_LOOKUP_OPT
      Src: /src/postgres/src/include/catalog/pg_proc.h:53,1
    - Dst: BKI_DEFAULT
      Src: /src/postgres/src/include/catalog/pg_proc.h:100,1
    - Dst: BKI_LOOKUP
      Src: /src/postgres/src/include/catalog/pg_proc.h:100,1
    - Dst: BKI_DEFAULT
      Src: /src/postgres/src/include/catalog/pg_proc.h:103,1
    - Dst: BKI_DEFAULT
      Src: /src/postgres/src/include/catalog/pg_proc.h:106,1
    - Dst: BKI_DEFAULT
      Src: /src/postgres/src/include/catalog/pg_proc.h:112,1
    - Dst: BKI_LOOKUP
      Src: /src/postgres/src/include/catalog/pg_proc.h:112,1
    - Dst: BKI_DEFAULT
      Src: /src/postgres/src/include/catalog/pg_proc.h:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 129
    functionName: BKI_SCHEMA_MACRO
    functionSourceFile: /src/postgres/src/include/catalog/pg_proc.h
    functionUses: 0
    functionsReached:
    - BKI_DEFAULT
    - BKI_LOOKUP
    - BKI_LOOKUP_OPT
    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: 89
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 89
    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: 64
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 64
    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:175,1
    - Dst: BKI_DEFAULT
      Src: /src/postgres/src/include/catalog/pg_attribute.h:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 186
    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: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 97
    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: 39
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 39
    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: 39
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 39
    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: 42
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 42
    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: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 89
    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: 49
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 49
    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: 114
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 114
    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: 116
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 116
    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: 117
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 117
    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: 118
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 118
    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: 119
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 119
    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: 120
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 120
    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: 121
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 121
    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: 122
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 122
    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: 123
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 123
    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: 124
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 124
    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: 126
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 126
    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: 127
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 127
    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: 128
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 128
    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: 129
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 129
    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: 130
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 130
    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: 131
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 131
    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: 132
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 132
    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: 133
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 133
    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: 143
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 143
    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: 150
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 150
    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: 83
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 83
    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:
    - Dst: BKI_LOOKUP
      Src: /src/postgres/src/include/catalog/pg_class.h:41,1
    - Dst: BKI_LOOKUP_OPT
      Src: /src/postgres/src/include/catalog/pg_class.h:60,1
    - Dst: BKI_LOOKUP_OPT
      Src: /src/postgres/src/include/catalog/pg_class.h:75,1
    - Dst: BKI_DEFAULT
      Src: /src/postgres/src/include/catalog/pg_class.h:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 145
    functionName: BKI_SCHEMA_MACRO
    functionSourceFile: /src/postgres/src/include/catalog/pg_class.h
    functionUses: 0
    functionsReached:
    - BKI_DEFAULT
    - BKI_LOOKUP
    - BKI_LOOKUP_OPT
    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: 206
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 206
    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: 210
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 210
    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: 221
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 221
    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: 233
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 233
    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:192,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/include/catalog/index.h:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - itemptr
    argTypes:
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 205
    functionName: itemptr_encode
    functionSourceFile: /src/postgres/src/include/catalog/index.h
    functionUses: 0
    functionsReached:
    - ItemPointerGetOffsetNumber
    - ItemPointerGetBlockNumber
    linkageType: ''
    returnType: int64
    signature: int64 itemptr_encode(ItemPointer itemptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerSet
      Src: /src/postgres/src/include/catalog/index.h:216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - itemptr
    - encoded
    argTypes:
    - ItemPointer
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 217
    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: 437
      start: 435
    functionDepth: 0
    functionLinenumber: 435
    functionLinenumberEnd: 437
    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: 439
      start: 437
    functionDepth: 0
    functionLinenumber: 437
    functionLinenumberEnd: 439
    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: 441
      start: 439
    functionDepth: 0
    functionLinenumber: 439
    functionLinenumberEnd: 441
    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: 443
      start: 441
    functionDepth: 0
    functionLinenumber: 441
    functionLinenumberEnd: 443
    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: 445
      start: 443
    functionDepth: 0
    functionLinenumber: 443
    functionLinenumberEnd: 445
    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: 447
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 447
    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: 449
      start: 447
    functionDepth: 0
    functionLinenumber: 447
    functionLinenumberEnd: 449
    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: 451
      start: 449
    functionDepth: 0
    functionLinenumber: 449
    functionLinenumberEnd: 451
    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: 453
      start: 451
    functionDepth: 0
    functionLinenumber: 451
    functionLinenumberEnd: 453
    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: 455
      start: 453
    functionDepth: 0
    functionLinenumber: 453
    functionLinenumberEnd: 455
    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: 457
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 457
    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: 459
      start: 457
    functionDepth: 0
    functionLinenumber: 457
    functionLinenumberEnd: 459
    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: 461
      start: 459
    functionDepth: 0
    functionLinenumber: 459
    functionLinenumberEnd: 461
    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: 463
      start: 461
    functionDepth: 0
    functionLinenumber: 461
    functionLinenumberEnd: 463
    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: 465
      start: 463
    functionDepth: 0
    functionLinenumber: 463
    functionLinenumberEnd: 465
    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: 467
      start: 465
    functionDepth: 0
    functionLinenumber: 465
    functionLinenumberEnd: 467
    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: 469
      start: 467
    functionDepth: 0
    functionLinenumber: 467
    functionLinenumberEnd: 469
    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:477,1
    - Dst: tuplestore_end
      Src: /src/postgres/src/include/replication/walreceiver.h:480,1
    - Dst: FreeTupleDesc
      Src: /src/postgres/src/include/replication/walreceiver.h:483,1
    - Dst: pfree
      Src: /src/postgres/src/include/replication/walreceiver.h:485,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - walres
    argTypes:
    - WalRcvExecResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 470
    functionDepth: 1
    functionLinenumber: 470
    functionLinenumberEnd: 486
    functionName: walrcv_clear_result
    functionSourceFile: /src/postgres/src/include/replication/walreceiver.h
    functionUses: 0
    functionsReached:
    - pfree
    - FreeTupleDesc
    - tuplestore_end
    linkageType: ''
    returnType: void
    signature: void walrcv_clear_result(WalRcvExecResult *walres)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - worker
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 331
    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: 333
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 333
    functionName: isTablesyncWorker
    functionSourceFile: /src/postgres/src/include/replication/worker_internal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isTablesyncWorker(worker)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isTablesyncWorker
      Src: /src/postgres/src/include/replication/worker_internal.h:337,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 334
    functionDepth: 1
    functionLinenumber: 334
    functionLinenumberEnd: 338
    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: Assert
      Src: /src/postgres/src/include/replication/worker_internal.h:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 345
    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:350,1
    - Dst: isParallelApplyWorker
      Src: /src/postgres/src/include/replication/worker_internal.h:351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 347
    functionDepth: 1
    functionLinenumber: 347
    functionLinenumberEnd: 352
    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: []
    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: 229
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 229
    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: 230
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 230
    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:251,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/include/replication/slot.h:257,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - s
    - ts
    - acquire_lock
    argTypes:
    - ReplicationSlot*
    - TimestampTz
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 258
    functionName: ReplicationSlotSetInactiveSince
    functionSourceFile: /src/postgres/src/include/replication/slot.h
    functionUses: 0
    functionsReached:
    - SpinLockRelease
    - SpinLockAcquire
    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: 60
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 60
    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:71,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - physical
    - logical
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 73
    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: 2
    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: 2
    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: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - int16
    - int16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 633
    functionDepth: 0
    functionLinenumber: 633
    functionLinenumberEnd: 637
    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: 643
      start: 639
    functionDepth: 0
    functionLinenumber: 639
    functionLinenumberEnd: 643
    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: 649
      start: 645
    functionDepth: 0
    functionLinenumber: 645
    functionLinenumberEnd: 649
    functionName: pg_cmp_s32
    functionSourceFile: /src/postgres/src/include/common/int.h
    functionUses: 3
    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: 655
      start: 651
    functionDepth: 0
    functionLinenumber: 651
    functionLinenumberEnd: 655
    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: 661
      start: 657
    functionDepth: 0
    functionLinenumber: 657
    functionLinenumberEnd: 661
    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: 667
      start: 663
    functionDepth: 0
    functionLinenumber: 663
    functionLinenumberEnd: 667
    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: 673
      start: 669
    functionDepth: 0
    functionLinenumber: 669
    functionLinenumberEnd: 673
    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:
    - pg_wchar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13630
      start: 13524
    functionDepth: 0
    functionLinenumber: 13524
    functionLinenumberEnd: 13630
    functionName: case_index
    functionSourceFile: /src/postgres/src/include/common/unicode_case_table.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16
    signature: uint16 case_index(pg_wchar 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: 108
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 108
    functionName: pg_log_error
    functionSourceFile: /src/postgres/src/include/common/logging.h
    functionUses: 261
    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: 111
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 111
    functionName: pg_log_error_detail
    functionSourceFile: /src/postgres/src/include/common/logging.h
    functionUses: 34
    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: 114
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 114
    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: 117
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 117
    functionName: pg_log_warning
    functionSourceFile: /src/postgres/src/include/common/logging.h
    functionUses: 52
    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: 120
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 120
    functionName: pg_log_warning_detail
    functionSourceFile: /src/postgres/src/include/common/logging.h
    functionUses: 4
    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: 123
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 123
    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: 126
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 126
    functionName: pg_log_info
    functionSourceFile: /src/postgres/src/include/common/logging.h
    functionUses: 94
    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: 129
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 129
    functionName: pg_log_info_detail
    functionSourceFile: /src/postgres/src/include/common/logging.h
    functionUses: 0
    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: 132
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 132
    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: 137
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 137
    functionName: pg_log_debug
    functionSourceFile: /src/postgres/src/include/common/logging.h
    functionUses: 57
    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: 142
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 142
    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: 147
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 147
    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: 155
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 155
    functionName: pg_fatal
    functionSourceFile: /src/postgres/src/include/common/logging.h
    functionUses: 461
    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: 161
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 161
    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: 162
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 162
    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: 8018
      start: 6724
    functionDepth: 0
    functionLinenumber: 6724
    functionLinenumberEnd: 8018
    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:
    - UInt64GetDatum
    - hash_bytes_uint32_extended
    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: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - i128
    - v
    argTypes:
    - INT128*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 44
    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: 2
    argCount: 2
    argNames:
    - i128
    - v
    argTypes:
    - INT128*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 53
    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: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - i128
    - x
    - y
    argTypes:
    - INT128*
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 65
    functionName: int128_add_int64_mul_int64
    functionSourceFile: /src/postgres/src/include/common/int128.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void int128_add_int64_mul_int64(INT128 *i128, int64 x, int64 y)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - INT128
    - INT128
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 78
    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: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - v
    argTypes:
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 87
    functionName: int64_to_int128
    functionSourceFile: /src/postgres/src/include/common/int128.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: INT128
    signature: INT128 int64_to_int128(int64 v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - INT128
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 97
    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: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 4
    argCount: 2
    argNames:
    - i128
    - v
    argTypes:
    - INT128*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 137
    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: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - i128
    - v
    argTypes:
    - INT128*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 164
    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: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i64
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 171
    functionName: INT64_AU32
    functionSourceFile: /src/postgres/src/include/common/int128.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INT64_AU32(i64)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i64
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 172
    functionName: INT64_AL32
    functionSourceFile: /src/postgres/src/include/common/int128.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INT64_AL32(i64)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/include/common/int128.h:180,1
    - Dst: INT64_AU32
      Src: /src/postgres/src/include/common/int128.h:204,1
    - Dst: INT64_AL32
      Src: /src/postgres/src/include/common/int128.h:205,1
    - Dst: INT64_AU32
      Src: /src/postgres/src/include/common/int128.h:206,1
    - Dst: INT64_AL32
      Src: /src/postgres/src/include/common/int128.h:207,1
    - Dst: INT64_AU32
      Src: /src/postgres/src/include/common/int128.h:216,1
    - Dst: int128_add_uint64
      Src: /src/postgres/src/include/common/int128.h:219,1
    - Dst: INT64_AL32
      Src: /src/postgres/src/include/common/int128.h:219,1
    - Dst: INT64_AU32
      Src: /src/postgres/src/include/common/int128.h:224,1
    - Dst: int128_add_uint64
      Src: /src/postgres/src/include/common/int128.h:227,1
    - Dst: INT64_AL32
      Src: /src/postgres/src/include/common/int128.h:227,1
    - Dst: int128_add_uint64
      Src: /src/postgres/src/include/common/int128.h:230,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - i128
    - x
    - y
    argTypes:
    - INT128*
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 232
    functionName: int128_add_int64_mul_int64
    functionSourceFile: /src/postgres/src/include/common/int128.h
    functionUses: 1
    functionsReached:
    - int128_add_uint64
    - StaticAssertDecl
    - INT64_AU32
    - INT64_AL32
    linkageType: ''
    returnType: void
    signature: void int128_add_int64_mul_int64(INT128 *i128, int64 x, int64 y)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - INT128
    - INT128
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 249
    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:260,1
    - Dst: INT64CONST
      Src: /src/postgres/src/include/common/int128.h:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 262
    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: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - INT128
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 272
    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: 52
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 52
    functionName: pg_malloc_object
    functionSourceFile: /src/postgres/src/include/common/fe_memutils.h
    functionUses: 3
    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: 53
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 53
    functionName: pg_malloc0_object
    functionSourceFile: /src/postgres/src/include/common/fe_memutils.h
    functionUses: 5
    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: 58
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 58
    functionName: pg_malloc_array
    functionSourceFile: /src/postgres/src/include/common/fe_memutils.h
    functionUses: 7
    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: 59
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 59
    functionName: pg_malloc0_array
    functionSourceFile: /src/postgres/src/include/common/fe_memutils.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pg_malloc0_array(type, count)
  - 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: 65
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 65
    functionName: pg_realloc_array
    functionSourceFile: /src/postgres/src/include/common/fe_memutils.h
    functionUses: 6
    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: 76
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 76
    functionName: palloc_object
    functionSourceFile: /src/postgres/src/include/common/fe_memutils.h
    functionUses: 0
    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: 77
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 77
    functionName: palloc0_object
    functionSourceFile: /src/postgres/src/include/common/fe_memutils.h
    functionUses: 1
    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: 78
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 78
    functionName: palloc_array
    functionSourceFile: /src/postgres/src/include/common/fe_memutils.h
    functionUses: 1
    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: 79
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 79
    functionName: palloc0_array
    functionSourceFile: /src/postgres/src/include/common/fe_memutils.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: palloc0_array(type, count)
  - 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: 80
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 80
    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:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - hs
    - seed
    argTypes:
    - fasthash_state*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 114
    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: 124
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 124
    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:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - hs
    argTypes:
    - fasthash_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 132
    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:140,1
    - Dst: memcpy
      Src: /src/postgres/src/include/common/hashfn_unstable.h:150,1
    - Dst: memcpy
      Src: /src/postgres/src/include/common/hashfn_unstable.h:162,1
    - Dst: memcpy
      Src: /src/postgres/src/include/common/hashfn_unstable.h:181,1
    - Dst: memcpy
      Src: /src/postgres/src/include/common/hashfn_unstable.h:193,1
    - Dst: fasthash_combine
      Src: /src/postgres/src/include/common/hashfn_unstable.h:210,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 52
    argCount: 3
    argNames:
    - hs
    - k
    - len
    argTypes:
    - fasthash_state*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 135
    functionDepth: 2
    functionLinenumber: 135
    functionLinenumberEnd: 211
    functionName: fasthash_accum
    functionSourceFile: /src/postgres/src/include/common/hashfn_unstable.h
    functionUses: 0
    functionsReached:
    - fasthash_combine
    - memcpy
    - Assert
    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: 219
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 219
    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:235,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - hs
    - str
    argTypes:
    - fasthash_state*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 223
    functionDepth: 3
    functionLinenumber: 223
    functionLinenumberEnd: 240
    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:259,1
    - Dst: PointerIsAligned
      Src: /src/postgres/src/include/common/hashfn_unstable.h:259,1
    - Dst: haszero64
      Src: /src/postgres/src/include/common/hashfn_unstable.h:269,1
    - Dst: fasthash_combine
      Src: /src/postgres/src/include/common/hashfn_unstable.h:274,1
    - Dst: fasthash_accum_cstring_unaligned
      Src: /src/postgres/src/include/common/hashfn_unstable.h:279,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - hs
    - str
    argTypes:
    - fasthash_state*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 252
    functionDepth: 4
    functionLinenumber: 252
    functionLinenumberEnd: 283
    functionName: fasthash_accum_cstring_aligned
    functionSourceFile: /src/postgres/src/include/common/hashfn_unstable.h
    functionUses: 0
    functionsReached:
    - Assert
    - fasthash_accum_cstring_unaligned
    - fasthash_combine
    - PointerIsAligned
    - haszero64
    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:298,1
    - Dst: fasthash_accum_cstring_unaligned
      Src: /src/postgres/src/include/common/hashfn_unstable.h:299,1
    - Dst: PointerIsAligned
      Src: /src/postgres/src/include/common/hashfn_unstable.h:301,1
    - Dst: fasthash_accum_cstring_aligned
      Src: /src/postgres/src/include/common/hashfn_unstable.h:303,1
    - Dst: Assert
      Src: /src/postgres/src/include/common/hashfn_unstable.h:304,1
    - Dst: Assert
      Src: /src/postgres/src/include/common/hashfn_unstable.h:305,1
    - Dst: fasthash_accum_cstring_unaligned
      Src: /src/postgres/src/include/common/hashfn_unstable.h:314,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - hs
    - str
    argTypes:
    - fasthash_state*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 288
    functionDepth: 5
    functionLinenumber: 288
    functionLinenumberEnd: 315
    functionName: fasthash_accum_cstring
    functionSourceFile: /src/postgres/src/include/common/hashfn_unstable.h
    functionUses: 0
    functionsReached:
    - Assert
    - fasthash_accum_cstring_unaligned
    - fasthash_accum_cstring_aligned
    - PointerIsAligned
    - memcpy
    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:327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hs
    - tweak
    argTypes:
    - fasthash_state*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 324
    functionDepth: 1
    functionLinenumber: 324
    functionLinenumberEnd: 328
    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: 344
      start: 336
    functionDepth: 0
    functionLinenumber: 336
    functionLinenumberEnd: 344
    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:350,1
    - Dst: fasthash_final64
      Src: /src/postgres/src/include/common/hashfn_unstable.h:350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hs
    - tweak
    argTypes:
    - fasthash_state*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 347
    functionDepth: 2
    functionLinenumber: 347
    functionLinenumberEnd: 351
    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:364,1
    - Dst: fasthash_accum
      Src: /src/postgres/src/include/common/hashfn_unstable.h:371,1
    - Dst: fasthash_accum
      Src: /src/postgres/src/include/common/hashfn_unstable.h:376,1
    - Dst: fasthash_final64
      Src: /src/postgres/src/include/common/hashfn_unstable.h:377,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - k
    - len
    - seed
    argTypes:
    - char*
    - size_t
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 359
    functionDepth: 3
    functionLinenumber: 359
    functionLinenumberEnd: 378
    functionName: fasthash64
    functionSourceFile: /src/postgres/src/include/common/hashfn_unstable.h
    functionUses: 0
    functionsReached:
    - fasthash_final64
    - fasthash_accum
    - fasthash_init
    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:384,1
    - Dst: fasthash64
      Src: /src/postgres/src/include/common/hashfn_unstable.h:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - k
    - len
    - seed
    argTypes:
    - char*
    - size_t
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 381
    functionDepth: 4
    functionLinenumber: 381
    functionLinenumberEnd: 385
    functionName: fasthash32
    functionSourceFile: /src/postgres/src/include/common/hashfn_unstable.h
    functionUses: 0
    functionsReached:
    - fasthash_reduce32
    - fasthash64
    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:396,1
    - Dst: fasthash_accum_cstring
      Src: /src/postgres/src/include/common/hashfn_unstable.h:402,1
    - Dst: fasthash_final32
      Src: /src/postgres/src/include/common/hashfn_unstable.h:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 390
    functionDepth: 6
    functionLinenumber: 390
    functionLinenumberEnd: 405
    functionName: hash_string
    functionSourceFile: /src/postgres/src/include/common/hashfn_unstable.h
    functionUses: 0
    functionsReached:
    - fasthash_init
    - fasthash_final32
    - fasthash_accum_cstring
    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: 1771
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 1771
    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: 3008
      start: 2748
    functionDepth: 0
    functionLinenumber: 2748
    functionLinenumberEnd: 3008
    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: 0
    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: 168
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 168
    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: 177
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 177
    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: 194
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 194
    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:223,1
    - Dst: slot_getattr
      Src: /src/postgres/src/include/executor/executor.h:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - slot
    - attno
    - isNull
    argTypes:
    - TupleTableSlot*
    - AttrNumber
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 225
    functionName: ExecGetJunkAttribute
    functionSourceFile: /src/postgres/src/include/executor/executor.h
    functionUses: 0
    functionsReached:
    - slot_getattr
    - Assert
    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: 284
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 284
    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:311,1
    - Dst: PlanState*::ExecProcNode
      Src: /src/postgres/src/include/executor/executor.h:313,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - node
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 314
    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:391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isNull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 386
    functionDepth: 0
    functionLinenumber: 386
    functionLinenumberEnd: 392
    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:417,1
    - Dst: Assert
      Src: /src/postgres/src/include/executor/executor.h:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - econtext
    argTypes:
    - ExprState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 411
    functionDepth: 1
    functionLinenumber: 411
    functionLinenumberEnd: 420
    functionName: ExecEvalExprNoReturn
    functionSourceFile: /src/postgres/src/include/executor/executor.h
    functionUses: 0
    functionsReached:
    - ExprState*::evalfunc
    - Assert
    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:437,1
    - Dst: ExprState*::evalfunc
      Src: /src/postgres/src/include/executor/executor.h:438,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/include/executor/executor.h:439,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - state
    - econtext
    - isNull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 429
    functionDepth: 1
    functionLinenumber: 429
    functionLinenumberEnd: 441
    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:457,1
    - Dst: ExecEvalExprNoReturn
      Src: /src/postgres/src/include/executor/executor.h:458,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/include/executor/executor.h:459,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - state
    - econtext
    argTypes:
    - ExprState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 451
    functionDepth: 2
    functionLinenumber: 451
    functionLinenumberEnd: 460
    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:487,1
    - Dst: ExecEvalExprNoReturnSwitchContext
      Src: /src/postgres/src/include/executor/executor.h:490,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - projInfo
    argTypes:
    - ProjectionInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 476
    functionDepth: 3
    functionLinenumber: 476
    functionLinenumberEnd: 500
    functionName: ExecProject
    functionSourceFile: /src/postgres/src/include/executor/executor.h
    functionUses: 0
    functionsReached:
    - ExecClearTuple
    - ExecEvalExprNoReturnSwitchContext
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecProject(ProjectionInfo *projInfo)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/executor/executor.h:523,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/include/executor/executor.h:525,1
    - Dst: Assert
      Src: /src/postgres/src/include/executor/executor.h:528,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/include/executor/executor.h:530,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - state
    - econtext
    argTypes:
    - ExprState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 512
    functionDepth: 2
    functionLinenumber: 512
    functionLinenumberEnd: 531
    functionName: ExecQual
    functionSourceFile: /src/postgres/src/include/executor/executor.h
    functionUses: 0
    functionsReached:
    - DatumGetBool
    - Assert
    - 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:542,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/include/executor/executor.h:545,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - econtext
    argTypes:
    - ExprState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 539
    functionDepth: 3
    functionLinenumber: 539
    functionLinenumberEnd: 547
    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: 631
      start: 622
    functionDepth: 0
    functionLinenumber: 622
    functionLinenumberEnd: 631
    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: 646
      start: 644
    functionDepth: 0
    functionLinenumber: 644
    functionLinenumberEnd: 646
    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: 654
      start: 650
    functionDepth: 0
    functionLinenumber: 650
    functionLinenumberEnd: 654
    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: 657
      start: 655
    functionDepth: 0
    functionLinenumber: 655
    functionLinenumberEnd: 657
    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: 664
      start: 659
    functionDepth: 0
    functionLinenumber: 659
    functionLinenumberEnd: 664
    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:693,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rti
    - estate
    argTypes:
    - Index
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 690
    functionDepth: 3
    functionLinenumber: 690
    functionLinenumberEnd: 694
    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: 93
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 93
    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: 153
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 153
    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: 185
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 185
    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: 191
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 191
    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: 196
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 196
    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: 202
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 202
    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: 291
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 291
    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: 297
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 297
    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: 12
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/include/executor/execScan.h:37,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/include/executor/execScan.h:60,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/include/executor/execScan.h:72,1
    - Dst: Assert
      Src: /src/postgres/src/include/executor/execScan.h:82,1
    - Dst: TupIsNull
      Src: /src/postgres/src/include/executor/execScan.h:88,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/include/executor/execScan.h:93,1
    - Dst: EvalPlanQualFetchRowMark
      Src: /src/postgres/src/include/executor/execScan.h:108,1
    - Dst: TupIsNull
      Src: /src/postgres/src/include/executor/execScan.h:112,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/include/executor/execScan.h:117,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 127
    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:
    - EvalPlanQualFetchRowMark
    - Assert
    - CHECK_FOR_INTERRUPTS
    - TupIsNull
    - ExecClearTuple
    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:169,1
    - Dst: ExecScanFetch
      Src: /src/postgres/src/include/executor/execScan.h:170,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/include/executor/execScan.h:177,1
    - Dst: ExecScanFetch
      Src: /src/postgres/src/include/executor/execScan.h:187,1
    - Dst: TupIsNull
      Src: /src/postgres/src/include/executor/execScan.h:195,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/include/executor/execScan.h:198,1
    - Dst: ExecQual
      Src: /src/postgres/src/include/executor/execScan.h:215,1
    - Dst: ExecProject
      Src: /src/postgres/src/include/executor/execScan.h:226,1
    - Dst: InstrCountFiltered1
      Src: /src/postgres/src/include/executor/execScan.h:237,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/include/executor/execScan.h:242,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 151
    functionDepth: 4
    functionLinenumber: 151
    functionLinenumberEnd: 244
    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
    - ExecScanFetch
    - InstrCountFiltered1
    - ExecQual
    - ExecClearTuple
    - ExecProject
    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: 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_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: 101
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 101
    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: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 105
    functionName: TTS_SLOW
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TTS_SLOW(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: 239
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 239
    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: 240
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 240
    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: 241
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 241
    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: 242
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 242
    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: 312
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 312
    functionName: TupIsNull
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TupIsNull(slot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: slot_getsomeattrs_int
      Src: /src/postgres/src/include/executor/tuptable.h:362,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - slot
    - attnum
    argTypes:
    - TupleTableSlot*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 363
    functionName: slot_getsomeattrs
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 0
    functionsReached:
    - slot_getsomeattrs_int
    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:374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 371
    functionDepth: 2
    functionLinenumber: 371
    functionLinenumberEnd: 375
    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:387,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/include/executor/tuptable.h:390,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - slot
    - attnum
    argTypes:
    - TupleTableSlot*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 384
    functionDepth: 2
    functionLinenumber: 384
    functionLinenumberEnd: 393
    functionName: slot_attisnull
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 0
    functionsReached:
    - slot_getsomeattrs
    - Assert
    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:402,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/include/executor/tuptable.h:405,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - slot
    - attnum
    - isnull
    argTypes:
    - TupleTableSlot*
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 398
    functionDepth: 2
    functionLinenumber: 398
    functionLinenumberEnd: 410
    functionName: slot_getattr
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 1
    functionsReached:
    - slot_getsomeattrs
    - Assert
    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:422,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/include/executor/tuptable.h:427,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/include/executor/tuptable.h:432,1
    - Dst: TupleTableSlot*::tts_ops::getsysattr
      Src: /src/postgres/src/include/executor/tuptable.h:436,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - slot
    - attnum
    - isnull
    argTypes:
    - TupleTableSlot*
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 419
    functionDepth: 1
    functionLinenumber: 419
    functionLinenumberEnd: 437
    functionName: slot_getsysattr
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 0
    functionsReached:
    - Assert
    - TupleTableSlot*::tts_ops::getsysattr
    - ObjectIdGetDatum
    - 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:451,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 448
    functionDepth: 0
    functionLinenumber: 448
    functionLinenumberEnd: 452
    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:460,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 457
    functionDepth: 0
    functionLinenumber: 457
    functionLinenumberEnd: 463
    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:478,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 475
    functionDepth: 0
    functionLinenumber: 475
    functionLinenumberEnd: 479
    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:487,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/include/executor/tuptable.h:487,1
    - Dst: TupleTableSlot*::tts_ops::copy_heap_tuple
      Src: /src/postgres/src/include/executor/tuptable.h:489,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 484
    functionDepth: 1
    functionLinenumber: 484
    functionLinenumberEnd: 490
    functionName: ExecCopySlotHeapTuple
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 0
    functionsReached:
    - TTS_EMPTY
    - Assert
    - 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:498,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 495
    functionDepth: 0
    functionLinenumber: 495
    functionLinenumberEnd: 499
    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:510,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - slot
    - extra
    argTypes:
    - TupleTableSlot*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 507
    functionDepth: 0
    functionLinenumber: 507
    functionLinenumberEnd: 511
    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:527,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/include/executor/tuptable.h:527,1
    - Dst: Assert
      Src: /src/postgres/src/include/executor/tuptable.h:528,1
    - Dst: Assert
      Src: /src/postgres/src/include/executor/tuptable.h:529,1
    - Dst: TupleTableSlot*::tts_ops::copyslot
      Src: /src/postgres/src/include/executor/tuptable.h:532,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - dstslot
    - srcslot
    argTypes:
    - TupleTableSlot*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 524
    functionDepth: 1
    functionLinenumber: 524
    functionLinenumberEnd: 535
    functionName: ExecCopySlot
    functionSourceFile: /src/postgres/src/include/executor/tuptable.h
    functionUses: 0
    functionsReached:
    - TTS_EMPTY
    - Assert
    - TupleTableSlot*::tts_ops::copyslot
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecCopySlot(TupleTableSlot *dstslot, TupleTableSlot *srcslot)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/postgres/src/include/portability/instr_time.h:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 120
    functionName: pg_clock_gettime_ns
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 0
    functionsReached:
    - clock_gettime
    linkageType: ''
    returnType: instr_time
    signature: instr_time pg_clock_gettime_ns(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 124
    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: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 127
    functionName: INSTR_TIME_GET_NANOSEC
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INSTR_TIME_GET_NANOSEC(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QueryPerformanceCounter
      Src: /src/postgres/src/include/portability/instr_time.h:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 145
    functionName: pg_query_performance_counter
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 0
    functionsReached:
    - QueryPerformanceCounter
    linkageType: ''
    returnType: instr_time
    signature: instr_time pg_query_performance_counter(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QueryPerformanceFrequency
      Src: /src/postgres/src/include/portability/instr_time.h:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 154
    functionName: GetTimerFrequency
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 0
    functionsReached:
    - QueryPerformanceFrequency
    linkageType: ''
    returnType: double
    signature: double GetTimerFrequency(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 158
    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: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 161
    functionName: INSTR_TIME_GET_NANOSEC
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 0
    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: 170
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 170
    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: 173
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 173
    functionName: INSTR_TIME_SET_ZERO
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 2
    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: 176
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 176
    functionName: INSTR_TIME_SET_CURRENT_LAZY
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INSTR_TIME_SET_CURRENT_LAZY(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: 180
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 180
    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:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 183
    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: 186
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 186
    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: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 190
    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: 193
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 193
    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: 196
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 196
    functionName: INSTR_TIME_GET_MICROSEC
    functionSourceFile: /src/postgres/src/include/portability/instr_time.h
    functionUses: 2
    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: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    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: 46
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 46
    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:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 127
    functionName: IS_LC1
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_LC1(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 148
    functionName: IS_LC2
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_LC2(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 156
    functionName: IS_LCPRV1
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_LCPRV1(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 158
    functionName: IS_LCPRV1_A_RANGE
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_LCPRV1_A_RANGE(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 160
    functionName: IS_LCPRV1_B_RANGE
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_LCPRV1_B_RANGE(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 168
    functionName: IS_LCPRV2
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_LCPRV2(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 170
    functionName: IS_LCPRV2_A_RANGE
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_LCPRV2_A_RANGE(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 172
    functionName: IS_LCPRV2_B_RANGE
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_LCPRV2_B_RANGE(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _enc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 299
    functionName: PG_VALID_BE_ENCODING
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 0
    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: 302
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 302
    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: 305
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 305
    functionName: PG_VALID_ENCODING
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 0
    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: 308
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 308
    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: 529
      start: 523
    functionDepth: 0
    functionLinenumber: 523
    functionLinenumberEnd: 529
    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:
    - pg_wchar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 534
    functionDepth: 0
    functionLinenumber: 534
    functionLinenumberEnd: 538
    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(pg_wchar c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - pg_wchar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 540
    functionDepth: 0
    functionLinenumber: 540
    functionLinenumberEnd: 544
    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(pg_wchar c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - pg_wchar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 546
    functionDepth: 0
    functionLinenumber: 546
    functionLinenumberEnd: 550
    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(pg_wchar c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - first
    - second
    argTypes:
    - pg_wchar
    - pg_wchar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 552
    functionDepth: 0
    functionLinenumber: 552
    functionLinenumberEnd: 556
    functionName: surrogate_pair_to_codepoint
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: pg_wchar
    signature: pg_wchar surrogate_pair_to_codepoint(pg_wchar first, pg_wchar second)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - c
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 564
    functionDepth: 0
    functionLinenumber: 564
    functionLinenumberEnd: 584
    functionName: utf8_to_unicode
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: pg_wchar
    signature: pg_wchar utf8_to_unicode(const unsigned char *c)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - c
    - utf8string
    argTypes:
    - pg_wchar
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 590
    functionDepth: 0
    functionLinenumber: 590
    functionLinenumberEnd: 617
    functionName: unicode_to_utf8
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned char
    signature: 'unsigned char *

      unicode_to_utf8(pg_wchar c, unsigned char *utf8string)'
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - c
    argTypes:
    - pg_wchar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 622
    functionDepth: 0
    functionLinenumber: 622
    functionLinenumberEnd: 633
    functionName: unicode_utf8len
    functionSourceFile: /src/postgres/src/include/mb/pg_wchar.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int unicode_utf8len(pg_wchar 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: 94
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 94
    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: 97
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 97
    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: 101
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 101
    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: 14
    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:316,1
    - Dst: DO_SWAP
      Src: /src/postgres/src/include/lib/sort_template.h:318,1
    - Dst: DO_CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/include/lib/sort_template.h:325,1
    - Dst: DO_COMPARE
      Src: /src/postgres/src/include/lib/sort_template.h:326,1
    - Dst: DO_MED3
      Src: /src/postgres/src/include/lib/sort_template.h:343,1
    - Dst: DO_MED3
      Src: /src/postgres/src/include/lib/sort_template.h:344,1
    - Dst: DO_MED3
      Src: /src/postgres/src/include/lib/sort_template.h:345,1
    - Dst: DO_MED3
      Src: /src/postgres/src/include/lib/sort_template.h:347,1
    - Dst: DO_SWAP
      Src: /src/postgres/src/include/lib/sort_template.h:349,1
    - Dst: DO_COMPARE
      Src: /src/postgres/src/include/lib/sort_template.h:354,1
    - Dst: DO_SWAP
      Src: /src/postgres/src/include/lib/sort_template.h:358,1
    - Dst: DO_CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/include/lib/sort_template.h:362,1
    - Dst: DO_COMPARE
      Src: /src/postgres/src/include/lib/sort_template.h:364,1
    - Dst: DO_SWAP
      Src: /src/postgres/src/include/lib/sort_template.h:368,1
    - Dst: DO_CHECK_FOR_INTERRUPTS
      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: Min
      Src: /src/postgres/src/include/lib/sort_template.h:381,1
    - Dst: DO_SWAPN
      Src: /src/postgres/src/include/lib/sort_template.h:382,1
    - Dst: Min
      Src: /src/postgres/src/include/lib/sort_template.h:383,1
    - Dst: DO_SWAPN
      Src: /src/postgres/src/include/lib/sort_template.h:384,1
    - Dst: DO_SORT
      Src: /src/postgres/src/include/lib/sort_template.h:391,1
    - Dst: DO_SORT
      Src: /src/postgres/src/include/lib/sort_template.h:405,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 82
    argCount: 2
    argNames:
    - data
    - ST_SORT_PROTO_ARG
    argTypes:
    - ST_ELEMENT_TYPE*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 291
    functionDepth: 1
    functionLinenumber: 291
    functionLinenumberEnd: 414
    functionName: ST_SORT
    functionSourceFile: /src/postgres/src/include/lib/sort_template.h
    functionUses: 0
    functionsReached:
    - DO_MED3
    - Min
    - DO_SWAPN
    - DO_SWAP
    - DO_SORT
    - DO_CHECK_FOR_INTERRUPTS
    - DO_COMPARE
    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_delete
    - dlist_member_check
    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_delete_thoroughly
    - dlist_member_check
    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_check
    - dlist_push_tail
    - 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
    - Assert
    - dclist_init
    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:
    - Assert
    - dlist_push_tail
    - dclist_init
    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:
    - Assert
    - dlist_insert_after
    - dlist_member_check
    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:
    - Assert
    - dlist_insert_before
    - dlist_member_check
    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:
    - Assert
    - dlist_move_head
    - dlist_member_check
    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_move_tail
    - Assert
    - dlist_member_check
    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:
    - Assert
    - dlist_has_next
    - dlist_member_check
    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:
    - Assert
    - dlist_has_prev
    - dlist_member_check
    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:
    - dlist_prev_node
    - Assert
    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:
    - slist_check
    - Assert
    - 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:
    - dsa_allocate
    - pg_unreachable
    - memset
    - RT_PTR_SET_LOCAL
    - MemoryContextAlloc
    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
    - dsa_allocate
    - RT_PTR_SET_LOCAL
    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:
    - pfree
    - Assert
    - 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:
    - pfree
    - Assert
    - 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:
    - UINT64CONST
    - pg_rightmost_one_pos32
    - vector8_highbit_mask
    - Assert
    - vector8_load
    - vector8_eq
    - vector8_broadcast
    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:
    - Assert
    - RT_NODE_256_GET_CHILD
    - pg_unreachable
    - RT_NODE_256_IS_CHUNK_USED
    - RT_NODE_16_SEARCH_EQ
    - RT_NODE_48_GET_CHILD
    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:
    - Assert
    - RT_NODE_SEARCH
    - RT_PTR_SET_LOCAL
    - RT_GET_KEY_CHUNK
    - RT_PTR_ALLOC_IS_VALID
    - RT_CHILDPTR_IS_VALUE
    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:
    - UINT64CONST
    - Assert
    - vector8_highbit_mask
    - pg_rightmost_one_pos32
    - vector8_load
    - vector8_min
    - vector8_eq
    - vector8_broadcast
    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_NODE_256_GET_CHILD
    - RT_VERIFY_NODE
    - RT_BM_BIT
    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_BM_IDX
    - RT_ALLOC_NODE
    - RT_FREE_NODE
    - RT_COPY_COMMON
    - RT_ADD_CHILD_256
    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:
    - bmw_rightmost_one_pos
    - RT_BM_IDX
    - Assert
    - RT_VERIFY_NODE
    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_BM_IDX
    - Assert
    - RT_ALLOC_NODE
    - RT_NODE_16_GET_INSERTPOS
    - RT_FREE_NODE
    - RT_COPY_COMMON
    - RT_BM_BIT
    - RT_VERIFY_NODE
    - memcpy
    - RT_COPY_ARRAYS_FOR_INSERT
    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_NODE_16_GET_INSERTPOS
    - RT_SHIFT_ARRAYS_FOR_INSERT
    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:
    - Assert
    - RT_ALLOC_NODE
    - RT_FREE_NODE
    - RT_COPY_COMMON
    - RT_VERIFY_NODE
    - RT_COPY_ARRAYS_FOR_INSERT
    - 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_NODE_4_GET_INSERTPOS
    - RT_SHIFT_ARRAYS_FOR_INSERT
    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_GROW_NODE_4
    - pg_unreachable
    - RT_GROW_NODE_48
    - RT_ADD_CHILD_16
    - RT_NODE_MUST_GROW
    - unlikely
    - RT_ADD_CHILD_256
    - RT_GROW_NODE_16
    - RT_ADD_CHILD_4
    - RT_ADD_CHILD_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:
    - RT_KEY_GET_SHIFT
    - Assert
    - RT_ALLOC_NODE
    - RT_SHIFT_GET_MAX_VAL
    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_INSERT
    - RT_NODE_SEARCH
    - RT_PTR_SET_LOCAL
    - RT_GET_KEY_CHUNK
    - RT_GET_SLOT_RECURSIVE
    - RT_EXTEND_DOWN
    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_KEY_GET_SHIFT
    - RT_VALUE_IS_EMBEDDABLE
    - Assert
    - RT_ALLOC_LEAF
    - RT_EXTEND_UP
    - RT_PTR_SET_LOCAL
    - RT_GET_KEY_CHUNK
    - RT_GET_SLOT_RECURSIVE
    - RT_PTR_ALLOC_IS_VALID
    - RT_SHIFT_GET_MAX_VAL
    - unlikely
    - RT_CHILDPTR_IS_VALUE
    - RT_GET_VALUE_SIZE
    - memcpy
    - RT_FREE_LEAF
    - RT_EXTEND_DOWN
    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
      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
      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:
    - LWLockInitialize
    - RT_ALLOC_NODE
    - palloc0
    - RT_SHIFT_GET_MAX_VAL
    - dsa_allocate0
    - dsa_get_address
    - RT_SLAB_BLOCK_SIZE
    - SlabContextCreate
    linkageType: ''
    returnType: void
    signature: void RT_CREATE(MemoryContext ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      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
    - dsa_get_address
    - palloc0
    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:
    - pfree
    - Assert
    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:
    - check_stack_depth
    - RT_FREE_RECURSE
    - RT_NODE_256_GET_CHILD
    - RT_PTR_SET_LOCAL
    - RT_NODE_256_IS_CHUNK_USED
    - RT_NODE_48_GET_CHILD
    - RT_CHILDPTR_IS_VALUE
    - RT_NODE_48_IS_CHUNK_USED
    - dsa_free
    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:
    - RT_FREE_RECURSE
    - Assert
    - pfree
    - MemoryContextReset
    - RT_PTR_ALLOC_IS_VALID
    - dsa_free
    linkageType: ''
    returnType: RT_SCOPE
    signature: RT_SCOPE RT_FREE(RT_RADIX_TREE * tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      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
    - RT_PTR_SET_LOCAL
    - palloc0
    - RT_PTR_ALLOC_IS_VALID
    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:
    - Assert
    - RT_NODE_256_GET_CHILD
    - RT_NODE_256_IS_CHUNK_USED
    - RT_NODE_48_GET_CHILD
    - RT_NODE_48_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_NODE_ITERATE_NEXT
    - RT_CHILDPTR_IS_VALUE
    - RT_PTR_SET_LOCAL
    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:
    - Assert
    - RT_ALLOC_NODE
    - RT_FREE_NODE
    - RT_COPY_COMMON
    - 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:
    - RT_BM_IDX
    - Assert
    - Min
    - RT_BM_BIT
    - 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:
    - Assert
    - RT_ALLOC_NODE
    - RT_FREE_NODE
    - RT_COPY_COMMON
    - RT_VERIFY_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:
    - RT_BM_IDX
    - Assert
    - RT_SHRINK_NODE_48
    - RT_BM_BIT
    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_FREE_NODE
    - RT_COPY_ARRAYS_AND_DELETE
    - RT_COPY_COMMON
    - RT_VERIFY_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_SHIFT_ARRAYS_AND_DELETE
    - Assert
    - RT_SHRINK_NODE_16
    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:
    - RT_SHIFT_GET_MAX_VAL
    - RT_FREE_NODE
    - Assert
    - RT_SHIFT_ARRAYS_AND_DELETE
    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:
    - pg_unreachable
    - RT_REMOVE_CHILD_48
    - RT_REMOVE_CHILD_4
    - 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:
    - Assert
    - RT_NODE_DELETE
    - RT_DELETE_RECURSIVE
    - RT_NODE_SEARCH
    - RT_PTR_SET_LOCAL
    - RT_GET_KEY_CHUNK
    - RT_CHILDPTR_IS_VALUE
    - RT_FREE_LEAF
    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:
    - RT_DELETE_RECURSIVE
    - Assert
    - 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:
    - MemoryContextMemAllocated
    - Assert
    - dsa_get_total_size
    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: RT_BM_IDX
      Src: /src/postgres/src/include/lib/radixtree.h:2728,1
    - Dst: bmw_popcount
      Src: /src/postgres/src/include/lib/radixtree.h:2729,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: 12
    EdgeCount: 12
    ICount: 32
    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_BM_IDX
    - Assert
    - RT_BM_BIT
    - bmw_popcount
    - RT_NODE_48_IS_CHUNK_USED
    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: 2782
    functionDepth: 3
    functionLinenumber: 2782
    functionLinenumberEnd: 2885
    functionName: RT_DUMP_NODE
    functionSourceFile: /src/postgres/src/include/lib/radixtree.h
    functionUses: 0
    functionsReached:
    - RT_NODE_256_GET_CHILD
    - RT_NODE_256_IS_CHUNK_USED
    - RT_NODE_48_GET_CHILD
    - fprintf
    - RT_NODE_48_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: 100
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 100
    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: 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(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: 102
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 102
    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: 282
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 282
    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: 284
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 284
    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: 298
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 298
    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: 299
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 299
    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: 301
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 301
    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: 302
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 302
    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:316,1
    - Dst: pg_nextpower2_64
      Src: /src/postgres/src/include/lib/simplehash.h:319,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/simplehash.h:320,1
    - Dst: unlikely
      Src: /src/postgres/src/include/lib/simplehash.h:326,1
    - Dst: sh_error
      Src: /src/postgres/src/include/lib/simplehash.h:327,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - newsize
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 310
    functionDepth: 3
    functionLinenumber: 310
    functionLinenumberEnd: 330
    functionName: SH_COMPUTE_SIZE
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - Assert
    - Max
    - unlikely
    - sh_error
    - pg_nextpower2_64
    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:339,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - tb
    - newsize
    argTypes:
    - SH_TYPE*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 336
    functionDepth: 4
    functionLinenumber: 336
    functionLinenumberEnd: 353
    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: 360
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 360
    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:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - tb
    - curelem
    - startelem
    argTypes:
    - SH_TYPE*
    - uint32
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 363
    functionDepth: 1
    functionLinenumber: 363
    functionLinenumberEnd: 371
    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:379,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - tb
    - curelem
    - startelem
    argTypes:
    - SH_TYPE*
    - uint32
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 382
    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: 392
      start: 385
    functionDepth: 0
    functionLinenumber: 385
    functionLinenumberEnd: 392
    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:398,1
    - Dst: SH_HASH_KEY
      Src: /src/postgres/src/include/lib/simplehash.h:400,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tb
    - entry
    argTypes:
    - SH_TYPE*
    - SH_ELEMENT_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 402
    functionName: SH_ENTRY_HASH
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - SH_HASH_KEY
    - SH_GET_HASH
    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:415,1
    - Dst: MemoryContextAllocExtended
      Src: /src/postgres/src/include/lib/simplehash.h:417,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - type
    - size
    argTypes:
    - SH_TYPE*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 411
    functionDepth: 1
    functionLinenumber: 411
    functionLinenumberEnd: 420
    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:426,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - type
    - pointer
    argTypes:
    - SH_TYPE*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 423
    functionDepth: 0
    functionLinenumber: 423
    functionLinenumberEnd: 427
    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:452,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/include/lib/simplehash.h:454,1
    - Dst: Min
      Src: /src/postgres/src/include/lib/simplehash.h:460,1
    - Dst: SH_COMPUTE_SIZE
      Src: /src/postgres/src/include/lib/simplehash.h:462,1
    - Dst: SH_ALLOCATE
      Src: /src/postgres/src/include/lib/simplehash.h:464,1
    - Dst: SH_UPDATE_PARAMETERS
      Src: /src/postgres/src/include/lib/simplehash.h:466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - nelements
    - private_data
    argTypes:
    - MemoryContext
    - uint32
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 444
    functionDepth: 5
    functionLinenumber: 444
    functionLinenumberEnd: 468
    functionName: SH_CREATE
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - Min
    - SH_COMPUTE_SIZE
    - SH_RAW_ALLOCATOR
    - SH_ALLOCATE
    - MemoryContextAllocZero
    - SH_UPDATE_PARAMETERS
    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:474,1
    - Dst: pfree
      Src: /src/postgres/src/include/lib/simplehash.h:475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tb
    argTypes:
    - SH_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 471
    functionDepth: 1
    functionLinenumber: 471
    functionLinenumberEnd: 476
    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:482,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tb
    argTypes:
    - SH_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 479
    functionDepth: 0
    functionLinenumber: 479
    functionLinenumberEnd: 484
    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:503,1
    - Dst: pg_nextpower2_64
      Src: /src/postgres/src/include/lib/simplehash.h:503,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/simplehash.h:504,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/simplehash.h:505,1
    - Dst: SH_COMPUTE_SIZE
      Src: /src/postgres/src/include/lib/simplehash.h:507,1
    - Dst: SH_ALLOCATE
      Src: /src/postgres/src/include/lib/simplehash.h:509,1
    - Dst: SH_UPDATE_PARAMETERS
      Src: /src/postgres/src/include/lib/simplehash.h:515,1
    - Dst: SH_ENTRY_HASH
      Src: /src/postgres/src/include/lib/simplehash.h:549,1
    - Dst: SH_INITIAL_BUCKET
      Src: /src/postgres/src/include/lib/simplehash.h:550,1
    - Dst: SH_ENTRY_HASH
      Src: /src/postgres/src/include/lib/simplehash.h:572,1
    - Dst: SH_INITIAL_BUCKET
      Src: /src/postgres/src/include/lib/simplehash.h:573,1
    - Dst: SH_NEXT
      Src: /src/postgres/src/include/lib/simplehash.h:586,1
    - Dst: memcpy
      Src: /src/postgres/src/include/lib/simplehash.h:590,1
    - Dst: SH_FREE
      Src: /src/postgres/src/include/lib/simplehash.h:601,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 2
    argNames:
    - tb
    - newsize
    argTypes:
    - SH_TYPE*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 493
    functionDepth: 5
    functionLinenumber: 493
    functionLinenumberEnd: 602
    functionName: SH_GROW
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - Assert
    - SH_COMPUTE_SIZE
    - SH_NEXT
    - SH_FREE
    - SH_ALLOCATE
    - SH_INITIAL_BUCKET
    - SH_UPDATE_PARAMETERS
    - SH_ENTRY_HASH
    - memcpy
    - pg_nextpower2_64
    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:627,1
    - Dst: unlikely
      Src: /src/postgres/src/include/lib/simplehash.h:629,1
    - Dst: sh_error
      Src: /src/postgres/src/include/lib/simplehash.h:630,1
    - Dst: SH_GROW
      Src: /src/postgres/src/include/lib/simplehash.h:636,1
    - Dst: SH_INITIAL_BUCKET
      Src: /src/postgres/src/include/lib/simplehash.h:642,1
    - Dst: SH_GET_HASH
      Src: /src/postgres/src/include/lib/simplehash.h:657,1
    - Dst: SH_COMPARE_KEYS
      Src: /src/postgres/src/include/lib/simplehash.h:672,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/simplehash.h:674,1
    - Dst: SH_ENTRY_HASH
      Src: /src/postgres/src/include/lib/simplehash.h:679,1
    - Dst: SH_INITIAL_BUCKET
      Src: /src/postgres/src/include/lib/simplehash.h:680,1
    - Dst: SH_DISTANCE_FROM_OPTIMAL
      Src: /src/postgres/src/include/lib/simplehash.h:681,1
    - Dst: SH_NEXT
      Src: /src/postgres/src/include/lib/simplehash.h:695,1
    - Dst: unlikely
      Src: /src/postgres/src/include/lib/simplehash.h:713,1
    - Dst: SH_PREV
      Src: /src/postgres/src/include/lib/simplehash.h:733,1
    - Dst: memcpy
      Src: /src/postgres/src/include/lib/simplehash.h:736,1
    - Dst: SH_GET_HASH
      Src: /src/postgres/src/include/lib/simplehash.h:745,1
    - Dst: SH_NEXT
      Src: /src/postgres/src/include/lib/simplehash.h:752,1
    - Dst: unlikely
      Src: /src/postgres/src/include/lib/simplehash.h:763,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: 770
      start: 608
    functionDepth: 6
    functionLinenumber: 608
    functionLinenumberEnd: 770
    functionName: SH_INSERT_HASH_INTERNAL
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - SH_ENTRY_HASH
    - Assert
    - SH_NEXT
    - SH_PREV
    - sh_error
    - SH_INITIAL_BUCKET
    - SH_DISTANCE_FROM_OPTIMAL
    - SH_COMPARE_KEYS
    - unlikely
    - SH_GROW
    - memcpy
    - SH_GET_HASH
    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:779,1
    - Dst: SH_INSERT_HASH_INTERNAL
      Src: /src/postgres/src/include/lib/simplehash.h:781,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 776
    functionDepth: 7
    functionLinenumber: 776
    functionLinenumberEnd: 782
    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_HASH_KEY
    - SH_INSERT_HASH_INTERNAL
    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:792,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 789
    functionDepth: 7
    functionLinenumber: 789
    functionLinenumberEnd: 793
    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:802,1
    - Dst: Assert
      Src: /src/postgres/src/include/lib/simplehash.h:814,1
    - Dst: SH_COMPARE_KEYS
      Src: /src/postgres/src/include/lib/simplehash.h:816,1
    - Dst: SH_NEXT
      Src: /src/postgres/src/include/lib/simplehash.h:826,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: 828
      start: 799
    functionDepth: 2
    functionLinenumber: 799
    functionLinenumberEnd: 828
    functionName: SH_LOOKUP_HASH_INTERNAL
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - SH_COMPARE_KEYS
    - Assert
    - 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:836,1
    - Dst: SH_LOOKUP_HASH_INTERNAL
      Src: /src/postgres/src/include/lib/simplehash.h:838,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 833
    functionDepth: 3
    functionLinenumber: 833
    functionLinenumberEnd: 839
    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_HASH_KEY
    - SH_LOOKUP_HASH_INTERNAL
    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:849,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 850
      start: 846
    functionDepth: 3
    functionLinenumber: 846
    functionLinenumberEnd: 850
    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:859,1
    - Dst: SH_INITIAL_BUCKET
      Src: /src/postgres/src/include/lib/simplehash.h:860,1
    - Dst: SH_COMPARE_KEYS
      Src: /src/postgres/src/include/lib/simplehash.h:871,1
    - Dst: SH_NEXT
      Src: /src/postgres/src/include/lib/simplehash.h:890,1
    - Dst: SH_ENTRY_HASH
      Src: /src/postgres/src/include/lib/simplehash.h:899,1
    - Dst: SH_INITIAL_BUCKET
      Src: /src/postgres/src/include/lib/simplehash.h:900,1
    - Dst: memcpy
      Src: /src/postgres/src/include/lib/simplehash.h:910,1
    - Dst: SH_NEXT
      Src: /src/postgres/src/include/lib/simplehash.h:920,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - tb
    - key
    argTypes:
    - SH_TYPE*
    - SH_KEY_TYPE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 922
      start: 856
    functionDepth: 2
    functionLinenumber: 856
    functionLinenumberEnd: 922
    functionName: SH_DELETE
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - SH_HASH_KEY
    - SH_INITIAL_BUCKET
    - SH_COMPARE_KEYS
    - SH_ENTRY_HASH
    - memcpy
    - 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:931,1
    - Dst: SH_INITIAL_BUCKET
      Src: /src/postgres/src/include/lib/simplehash.h:932,1
    - Dst: SH_NEXT
      Src: /src/postgres/src/include/lib/simplehash.h:953,1
    - Dst: SH_ENTRY_HASH
      Src: /src/postgres/src/include/lib/simplehash.h:962,1
    - Dst: SH_INITIAL_BUCKET
      Src: /src/postgres/src/include/lib/simplehash.h:963,1
    - Dst: memcpy
      Src: /src/postgres/src/include/lib/simplehash.h:973,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - tb
    - entry
    argTypes:
    - SH_TYPE*
    - SH_ELEMENT_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 927
    functionDepth: 2
    functionLinenumber: 927
    functionLinenumberEnd: 977
    functionName: SH_DELETE_ITEM
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - memcpy
    - SH_NEXT
    - SH_INITIAL_BUCKET
    - SH_ENTRY_HASH
    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:1004,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - tb
    - iter
    argTypes:
    - SH_TYPE*
    - SH_ITERATOR*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 982
    functionDepth: 1
    functionLinenumber: 982
    functionLinenumberEnd: 1013
    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: 1032
      start: 1022
    functionDepth: 0
    functionLinenumber: 1022
    functionLinenumberEnd: 1032
    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: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1065
      start: 1044
    functionDepth: 0
    functionLinenumber: 1044
    functionLinenumberEnd: 1065
    functionName: 'SH_ELEMENT_TYPE *

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

      SH_ITERATE(SH_TYPE * tb, SH_ITERATOR * iter)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/include/lib/simplehash.h:1080,1
    - Dst: SH_ENTRY_HASH
      Src: /src/postgres/src/include/lib/simplehash.h:1097,1
    - Dst: SH_INITIAL_BUCKET
      Src: /src/postgres/src/include/lib/simplehash.h:1098,1
    - Dst: SH_DISTANCE_FROM_OPTIMAL
      Src: /src/postgres/src/include/lib/simplehash.h:1099,1
    - Dst: pfree
      Src: /src/postgres/src/include/lib/simplehash.h:1123,1
    - Dst: sh_log
      Src: /src/postgres/src/include/lib/simplehash.h:1138,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 1
    argNames:
    - tb
    argTypes:
    - SH_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1141
      start: 1071
    functionDepth: 1
    functionLinenumber: 1071
    functionLinenumberEnd: 1141
    functionName: SH_STAT
    functionSourceFile: /src/postgres/src/include/lib/simplehash.h
    functionUses: 0
    functionsReached:
    - pfree
    - sh_log
    - SH_DISTANCE_FROM_OPTIMAL
    - SH_INITIAL_BUCKET
    - palloc0
    - SH_ENTRY_HASH
    linkageType: ''
    returnType: SH_SCOPE
    signature: SH_SCOPE SH_STAT(SH_TYPE * tb)
  - 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: 2
    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: 1
    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: 1
    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: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    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: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    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: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    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: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    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: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    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: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: 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:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 59
    functionDepth: 2
    functionLinenumber: 59
    functionLinenumberEnd: 63
    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: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: 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:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - DateADT
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 75
    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:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - TimeADT
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 81
    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:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - TimeTzADT*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 87
    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: 90
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 90
    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: 91
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 91
    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: 92
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 92
    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: 94
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 94
    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: 95
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 95
    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: 96
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 96
    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: 98
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 98
    functionName: CStringGetTextDatum
    functionSourceFile: /src/postgres/src/include/utils/builtins.h
    functionUses: 6
    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: 99
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 99
    functionName: TextDatumGetCString
    functionSourceFile: /src/postgres/src/include/utils/builtins.h
    functionUses: 11
    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: 54
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 54
    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: 58
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 58
    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: 61
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 61
    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:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - base
    - val
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 73
    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: 80
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    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: 7
    argNames:
    - (
    - base
    - ','
    - rp
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 88
    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: 92
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 92
    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: 242
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 242
    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: 253
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 253
    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: 272
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 272
    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:
    - Dst: VALGRIND_MAKE_MEM_UNDEFINED
      Src: /src/postgres/src/include/utils/memdebug.h:41,1
    - Dst: memset
      Src: /src/postgres/src/include/utils/memdebug.h:42,1
    - Dst: VALGRIND_MAKE_MEM_NOACCESS
      Src: /src/postgres/src/include/utils/memdebug.h:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ptr
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 44
    functionName: wipe_mem
    functionSourceFile: /src/postgres/src/include/utils/memdebug.h
    functionUses: 0
    functionsReached:
    - memset
    - VALGRIND_MAKE_MEM_NOACCESS
    - 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:55,1
    - Dst: VALGRIND_MAKE_MEM_NOACCESS
      Src: /src/postgres/src/include/utils/memdebug.h:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - base
    - offset
    argTypes:
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 58
    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:66,1
    - Dst: VALGRIND_MAKE_MEM_NOACCESS
      Src: /src/postgres/src/include/utils/memdebug.h:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - base
    - offset
    argTypes:
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 71
    functionName: sentinel_ok
    functionSourceFile: /src/postgres/src/include/utils/memdebug.h
    functionUses: 0
    functionsReached:
    - VALGRIND_MAKE_MEM_NOACCESS
    - VALGRIND_MAKE_MEM_DEFINED
    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: 68
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 68
    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: 69
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 69
    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: 73
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 73
    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: 76
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 76
    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: 77
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 77
    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: 92
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 92
    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: 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: 7
    argNames:
    - (
    - elevel
    - ','
    - domain
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 151
    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: 161
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 161
    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: 165
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 165
    functionName: ereport
    functionSourceFile: /src/postgres/src/include/utils/elog.h
    functionUses: 139
    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: 241
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 241
    functionName: elog
    functionSourceFile: /src/postgres/src/include/utils/elog.h
    functionUses: 202
    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: 274
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 274
    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: 277
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 277
    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: 290
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 290
    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: 293
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 293
    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: 394
      start: 385
    functionDepth: 0
    functionLinenumber: 385
    functionLinenumberEnd: 394
    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: 401
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 401
    functionName: PG_CATCH
    functionSourceFile: /src/postgres/src/include/utils/elog.h
    functionUses: 51
    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: 409
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 409
    functionName: PG_FINALLY
    functionSourceFile: /src/postgres/src/include/utils/elog.h
    functionUses: 14
    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: 417
      start: 410
    functionDepth: 0
    functionLinenumber: 410
    functionLinenumberEnd: 417
    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: 420
      start: 418
    functionDepth: 0
    functionLinenumber: 418
    functionLinenumberEnd: 420
    functionName: PG_RE_THROW
    functionSourceFile: /src/postgres/src/include/utils/elog.h
    functionUses: 23
    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: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A
    - ','
    - B
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 92
    functionName: HYPOT
    functionSourceFile: /src/postgres/src/include/utils/geo_decls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HYPOT(A, B)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/include/utils/geo_decls.h:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 179
    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:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 184
    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: 186
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 186
    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: 187
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 187
    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:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 188
    functionDepth: 1
    functionLinenumber: 188
    functionLinenumberEnd: 192
    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:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - LSEG*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 197
    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: 199
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 199
    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: 200
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 200
    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:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 205
    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:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 210
    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:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - PATH*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 215
    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: 217
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 217
    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: 218
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 218
    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: 219
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 219
    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:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 224
    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:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - LINE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 229
    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: 231
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 231
    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: 232
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 232
    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:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 237
    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:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - BOX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 242
    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: 244
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 244
    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: 245
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 245
    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:249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 250
    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: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: 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:259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - POLYGON*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 260
    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: 262
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 262
    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: 263
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 263
    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: 264
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 264
    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:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 265
    functionDepth: 1
    functionLinenumber: 265
    functionLinenumberEnd: 269
    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:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - CIRCLE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 270
    functionDepth: 1
    functionLinenumber: 270
    functionLinenumberEnd: 274
    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: 276
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 276
    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: 277
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 277
    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: 1
    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: 0
    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: 6
    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: 1
    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: 3
    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: 3
    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: 2
    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: 195
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 195
    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:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 21
    functionDepth: 2
    functionLinenumber: 21
    functionLinenumberEnd: 25
    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:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 31
    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: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    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: 35
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 35
    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:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 64
    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:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 70
    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:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - X
    argTypes:
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 76
    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: 79
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 79
    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: 80
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 80
    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: 81
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 81
    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: 96
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 96
    functionName: palloc_object
    functionSourceFile: /src/postgres/src/include/utils/palloc.h
    functionUses: 0
    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: 97
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 97
    functionName: palloc0_object
    functionSourceFile: /src/postgres/src/include/utils/palloc.h
    functionUses: 1
    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: 102
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 102
    functionName: palloc_array
    functionSourceFile: /src/postgres/src/include/utils/palloc.h
    functionUses: 1
    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: 103
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 103
    functionName: palloc0_array
    functionSourceFile: /src/postgres/src/include/utils/palloc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: palloc0_array(type, count)
  - 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: 109
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 109
    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: 110
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 110
    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: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - context
    argTypes:
    - MemoryContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 130
    functionName: MemoryContextSwitchTo
    functionSourceFile: /src/postgres/src/include/utils/palloc.h
    functionUses: 85
    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: 2
    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: 2
    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: 0
    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: 5
    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:
    - (
    - tranch_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: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dsa_create(tranch_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - place
    - ','
    - size
    - ','
    - tranch_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, tranch_id, segment)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 597
    functionDepth: 0
    functionLinenumber: 597
    functionLinenumberEnd: 598
    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:
    - Dst: Assert
      Src: /src/postgres/src/include/utils/pgstat_internal.h:796,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/include/utils/pgstat_internal.h:798,1
    - Dst: pg_write_barrier
      Src: /src/postgres/src/include/utils/pgstat_internal.h:800,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - cc
    argTypes:
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 793
    functionDepth: 1
    functionLinenumber: 793
    functionLinenumberEnd: 801
    functionName: pgstat_begin_changecount_write
    functionSourceFile: /src/postgres/src/include/utils/pgstat_internal.h
    functionUses: 1
    functionsReached:
    - Assert
    - START_CRIT_SECTION
    - pg_write_barrier
    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:806,1
    - Dst: pg_write_barrier
      Src: /src/postgres/src/include/utils/pgstat_internal.h:808,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/include/utils/pgstat_internal.h:812,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - cc
    argTypes:
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 813
      start: 803
    functionDepth: 1
    functionLinenumber: 803
    functionLinenumberEnd: 813
    functionName: pgstat_end_changecount_write
    functionSourceFile: /src/postgres/src/include/utils/pgstat_internal.h
    functionUses: 1
    functionsReached:
    - Assert
    - END_CRIT_SECTION
    - pg_write_barrier
    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:820,1
    - Dst: pg_read_barrier
      Src: /src/postgres/src/include/utils/pgstat_internal.h:822,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - cc
    argTypes:
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 815
    functionDepth: 1
    functionLinenumber: 815
    functionLinenumberEnd: 825
    functionName: pgstat_begin_changecount_read
    functionSourceFile: /src/postgres/src/include/utils/pgstat_internal.h
    functionUses: 0
    functionsReached:
    - pg_read_barrier
    - CHECK_FOR_INTERRUPTS
    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:835,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - cc
    - before_cc
    argTypes:
    - uint32*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 830
    functionDepth: 1
    functionLinenumber: 830
    functionLinenumberEnd: 845
    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:862,1
    - Dst: memcpy
      Src: /src/postgres/src/include/utils/pgstat_internal.h:864,1
    - Dst: pgstat_end_changecount_read
      Src: /src/postgres/src/include/utils/pgstat_internal.h:866,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: 867
      start: 854
    functionDepth: 2
    functionLinenumber: 854
    functionLinenumberEnd: 867
    functionName: pgstat_copy_changecounted_stats
    functionSourceFile: /src/postgres/src/include/utils/pgstat_internal.h
    functionUses: 2
    functionsReached:
    - memcpy
    - pgstat_end_changecount_read
    - pgstat_begin_changecount_read
    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:873,1
    - Dst: memcmp
      Src: /src/postgres/src/include/utils/pgstat_internal.h:874,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: 875
      start: 870
    functionDepth: 1
    functionLinenumber: 870
    functionLinenumberEnd: 875
    functionName: pgstat_cmp_hash_key
    functionSourceFile: /src/postgres/src/include/utils/pgstat_internal.h
    functionUses: 0
    functionsReached:
    - memcmp
    - Assert
    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:882,1
    - Dst: fasthash32
      Src: /src/postgres/src/include/utils/pgstat_internal.h:883,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - d
    - size
    - arg
    argTypes:
    - void*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 877
    functionDepth: 5
    functionLinenumber: 877
    functionLinenumberEnd: 884
    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:893,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - kind
    argTypes:
    - PgStat_Kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 890
    functionDepth: 1
    functionLinenumber: 890
    functionLinenumberEnd: 894
    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:902,1
    - Dst: Assert
      Src: /src/postgres/src/include/utils/pgstat_internal.h:904,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - kind
    - entry
    argTypes:
    - PgStat_Kind
    - PgStatShared_Common*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 899
    functionDepth: 1
    functionLinenumber: 899
    functionLinenumberEnd: 907
    functionName: pgstat_get_entry_data
    functionSourceFile: /src/postgres/src/include/utils/pgstat_internal.h
    functionUses: 0
    functionsReached:
    - Assert
    - pgstat_get_kind_info
    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:918,1
    - Dst: pgstat_is_kind_custom
      Src: /src/postgres/src/include/utils/pgstat_internal.h:918,1
    - Dst: Assert
      Src: /src/postgres/src/include/utils/pgstat_internal.h:919,1
    - Dst: pgstat_get_kind_info
      Src: /src/postgres/src/include/utils/pgstat_internal.h:919,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - kind
    argTypes:
    - PgStat_Kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 922
      start: 913
    functionDepth: 1
    functionLinenumber: 913
    functionLinenumberEnd: 922
    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:933,1
    - Dst: pgstat_is_kind_custom
      Src: /src/postgres/src/include/utils/pgstat_internal.h:933,1
    - Dst: Assert
      Src: /src/postgres/src/include/utils/pgstat_internal.h:934,1
    - Dst: pgstat_get_kind_info
      Src: /src/postgres/src/include/utils/pgstat_internal.h:934,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - kind
    argTypes:
    - PgStat_Kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 937
      start: 928
    functionDepth: 1
    functionLinenumber: 928
    functionLinenumberEnd: 937
    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: 2
    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: 0
    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:51,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/include/utils/arrayaccess.h:66,1
    - Dst: ARR_NULLBITMAP
      Src: /src/postgres/src/include/utils/arrayaccess.h:67,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/include/utils/arrayaccess.h:74,1
    - Dst: ARR_NULLBITMAP
      Src: /src/postgres/src/include/utils/arrayaccess.h:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - it
    - a
    argTypes:
    - array_iter*
    - AnyArrayType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 78
    functionName: array_iter_setup
    functionSourceFile: /src/postgres/src/include/utils/arrayaccess.h
    functionUses: 0
    functionsReached:
    - VARATT_IS_EXPANDED_HEADER
    - ARR_NULLBITMAP
    - ARR_DATA_PTR
    linkageType: ''
    returnType: void
    signature: void array_iter_setup(array_iter *it, AnyArrayType *a)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fetch_att
      Src: /src/postgres/src/include/utils/arrayaccess.h:101,1
    - Dst: att_addlength_pointer
      Src: /src/postgres/src/include/utils/arrayaccess.h:102,1
    - Dst: att_align_nominal
      Src: /src/postgres/src/include/utils/arrayaccess.h:104,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 6
    argNames:
    - it
    - isnull
    - i
    - elmlen
    - elmbyval
    - elmalign
    argTypes:
    - array_iter*
    - bool*
    - int
    - int
    - bool
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 80
    functionDepth: 2
    functionLinenumber: 80
    functionLinenumberEnd: 116
    functionName: array_iter_next
    functionSourceFile: /src/postgres/src/include/utils/arrayaccess.h
    functionUses: 0
    functionsReached:
    - att_align_nominal
    - fetch_att
    - att_addlength_pointer
    linkageType: ''
    returnType: Datum
    signature: "Datum array_iter_next(array_iter *it, bool *isnull, int i,\n\t\t\t\tint
      elmlen, bool elmbyval, char elmalign)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - kind
    argTypes:
    - PgStat_Kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 64
    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: 70
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 70
    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: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 91
    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: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 108
    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: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 120
    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: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 133
    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: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
      Src: /src/postgres/src/include/utils/float.h:152,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 155
    functionName: float4_pl
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - unlikely
    - isinf
    - float_overflow_error
    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:163,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:163,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:163,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:163,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/include/utils/float.h:164,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 167
    functionName: float8_pl
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - unlikely
    - isinf
    - float_overflow_error
    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:175,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:175,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:175,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:175,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/include/utils/float.h:176,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 179
    functionName: float4_mi
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - unlikely
    - isinf
    - float_overflow_error
    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:187,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:187,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:187,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:187,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/include/utils/float.h:188,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 191
    functionName: float8_mi
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - unlikely
    - isinf
    - float_overflow_error
    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:199,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:199,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:199,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:199,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/include/utils/float.h:200,1
    - Dst: unlikely
      Src: /src/postgres/src/include/utils/float.h:201,1
    - Dst: float_underflow_error
      Src: /src/postgres/src/include/utils/float.h:202,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 7
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 205
    functionName: float4_mul
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - unlikely
    - isinf
    - float_underflow_error
    - float_overflow_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:213,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:213,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:213,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:213,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/include/utils/float.h:214,1
    - Dst: unlikely
      Src: /src/postgres/src/include/utils/float.h:215,1
    - Dst: float_underflow_error
      Src: /src/postgres/src/include/utils/float.h:216,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 7
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 219
    functionName: float8_mul
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - unlikely
    - isinf
    - float_underflow_error
    - float_overflow_error
    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:226,1
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:226,1
    - Dst: float_zero_divide_error
      Src: /src/postgres/src/include/utils/float.h:227,1
    - Dst: unlikely
      Src: /src/postgres/src/include/utils/float.h:229,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:229,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:229,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/include/utils/float.h:230,1
    - Dst: unlikely
      Src: /src/postgres/src/include/utils/float.h:231,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:231,1
    - Dst: float_underflow_error
      Src: /src/postgres/src/include/utils/float.h:232,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 235
    functionName: float4_div
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - isnan
    - isinf
    - unlikely
    - float_overflow_error
    - float_underflow_error
    - float_zero_divide_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:242,1
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:242,1
    - Dst: float_zero_divide_error
      Src: /src/postgres/src/include/utils/float.h:243,1
    - Dst: unlikely
      Src: /src/postgres/src/include/utils/float.h:245,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:245,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:245,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/include/utils/float.h:246,1
    - Dst: unlikely
      Src: /src/postgres/src/include/utils/float.h:247,1
    - Dst: isinf
      Src: /src/postgres/src/include/utils/float.h:247,1
    - Dst: float_underflow_error
      Src: /src/postgres/src/include/utils/float.h:248,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 251
    functionName: float8_div
    functionSourceFile: /src/postgres/src/include/utils/float.h
    functionUses: 0
    functionsReached:
    - isnan
    - isinf
    - unlikely
    - float_overflow_error
    - float_underflow_error
    - float_zero_divide_error
    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: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:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 265
    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:270,1
    - 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: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 271
    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:276,1
    - 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: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 277
    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:282,1
    - 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: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 283
    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: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:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 285
    functionDepth: 1
    functionLinenumber: 285
    functionLinenumberEnd: 289
    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: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:
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 291
    functionDepth: 1
    functionLinenumber: 291
    functionLinenumberEnd: 295
    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: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:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 301
    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: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:
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 303
    functionDepth: 1
    functionLinenumber: 303
    functionLinenumberEnd: 307
    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: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:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 309
    functionDepth: 1
    functionLinenumber: 309
    functionLinenumberEnd: 313
    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:318,1
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:318,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 315
    functionDepth: 1
    functionLinenumber: 315
    functionLinenumberEnd: 319
    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:324,1
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:324,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 321
    functionDepth: 1
    functionLinenumber: 321
    functionLinenumberEnd: 325
    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:330,1
    - Dst: isnan
      Src: /src/postgres/src/include/utils/float.h:330,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 327
    functionDepth: 1
    functionLinenumber: 327
    functionLinenumberEnd: 331
    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:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 333
    functionDepth: 2
    functionLinenumber: 333
    functionLinenumberEnd: 337
    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:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 339
    functionDepth: 2
    functionLinenumber: 339
    functionLinenumberEnd: 343
    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:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 345
    functionDepth: 2
    functionLinenumber: 345
    functionLinenumberEnd: 349
    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:354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 351
    functionDepth: 2
    functionLinenumber: 351
    functionLinenumberEnd: 355
    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:
    - set_ps_display_with_len
    - strlen
    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: 152
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 152
    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: 153
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 153
    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: 154
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 154
    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: 155
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 155
    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: 156
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 156
    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: 157
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 157
    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: 158
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 158
    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: 159
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 159
    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: 160
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 160
    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: 170
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 170
    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: 207
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 207
    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: 208
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 208
    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: 209
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 209
    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: 210
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 210
    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: 220
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 220
    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: 221
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 221
    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: 222
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 222
    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: 223
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 223
    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: 300
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 300
    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:376,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - d
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 373
    functionDepth: 1
    functionLinenumber: 373
    functionLinenumberEnd: 377
    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:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - d
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 379
    functionDepth: 1
    functionLinenumber: 379
    functionLinenumberEnd: 383
    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:388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - Jsonb*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 385
    functionDepth: 1
    functionLinenumber: 385
    functionLinenumberEnd: 389
    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: 392
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 392
    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: 393
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 393
    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: 394
      start: 393
    functionDepth: 0
    functionLinenumber: 393
    functionLinenumberEnd: 394
    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:
    - unlikely
    - AllocHugeSizeIsValid
    - MemoryContextSizeFailure
    - AllocSizeIsValid
    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:
    - HdrMaskCheckMagic
    - Assert
    - 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
    - HdrMaskIsExternal
    - HdrMaskGetValue
    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:
    - HdrMaskBlockOffset
    - Assert
    - 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: 4
    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: 4
    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:
    - expanded_record_fetch_field
    - likely
    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: 2
    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: 2
    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: 0
    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: 0
    functionLinenumber: 51
    functionLinenumberEnd: 55
    functionName: TimestampTzGetDatum
    functionSourceFile: /src/postgres/src/include/utils/timestamp.h
    functionUses: 0
    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: 369
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 369
    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: 377
      start: 374
    functionDepth: 0
    functionLinenumber: 374
    functionLinenumberEnd: 377
    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: 384
      start: 382
    functionDepth: 0
    functionLinenumber: 382
    functionLinenumberEnd: 384
    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: 391
      start: 389
    functionDepth: 0
    functionLinenumber: 389
    functionLinenumberEnd: 391
    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: 402
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 402
    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: 411
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 411
    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: 441
      start: 437
    functionDepth: 0
    functionLinenumber: 437
    functionLinenumberEnd: 441
    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: 451
      start: 447
    functionDepth: 0
    functionLinenumber: 447
    functionLinenumberEnd: 451
    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: 462
      start: 457
    functionDepth: 0
    functionLinenumber: 457
    functionLinenumberEnd: 462
    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: 473
      start: 468
    functionDepth: 0
    functionLinenumber: 468
    functionLinenumberEnd: 473
    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: 484
      start: 479
    functionDepth: 0
    functionLinenumber: 479
    functionLinenumberEnd: 484
    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: 490
      start: 489
    functionDepth: 0
    functionLinenumber: 489
    functionLinenumberEnd: 490
    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: 4
    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: 2
    functionsReached:
    - unlikely
    - smgrpin
    - smgropen
    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:
    - smgrunpin
    - smgrclose
    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: 2
    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: 672
      start: 669
    functionDepth: 0
    functionLinenumber: 669
    functionLinenumberEnd: 672
    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: 681
      start: 680
    functionDepth: 0
    functionLinenumber: 680
    functionLinenumberEnd: 681
    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: 689
      start: 688
    functionDepth: 0
    functionLinenumber: 688
    functionLinenumberEnd: 689
    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: 699
      start: 695
    functionDepth: 0
    functionLinenumber: 695
    functionLinenumberEnd: 699
    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: 717
      start: 712
    functionDepth: 0
    functionLinenumber: 712
    functionLinenumberEnd: 717
    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: 110
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 110
    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: 259
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 259
    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: 261
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 261
    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: 268
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 268
    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: 396
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 396
    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: 76
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 76
    functionName: pgstat_report_wait_start
    functionSourceFile: /src/postgres/src/include/utils/wait_event.h
    functionUses: 0
    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: 89
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 89
    functionName: pgstat_report_wait_end
    functionSourceFile: /src/postgres/src/include/utils/wait_event.h
    functionUses: 0
    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: 58
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: IsMVCCSnapshot
    functionSourceFile: /src/postgres/src/include/utils/snapmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IsMVCCSnapshot(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:
    - SortSupport::comparator
    - INVERT_COMPARE_RESULT
    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: INVERT_COMPARE_RESULT
      Src: /src/postgres/src/include/utils/sortsupport.h:259,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: 263
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 263
    functionName: ApplyUnsignedSortComparator
    functionSourceFile: /src/postgres/src/include/utils/sortsupport.h
    functionUses: 0
    functionsReached:
    - INVERT_COMPARE_RESULT
    linkageType: ''
    returnType: int
    signature: "int ApplyUnsignedSortComparator(Datum datum1, bool isNull1,\n\t\t\t\t\t\t\tDatum
      datum2, bool isNull2,\n\t\t\t\t\t\t\tSortSupport ssup)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt64
      Src: /src/postgres/src/include/utils/sortsupport.h:291,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/include/utils/sortsupport.h:291,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/include/utils/sortsupport.h:292,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/include/utils/sortsupport.h:292,1
    - Dst: INVERT_COMPARE_RESULT
      Src: /src/postgres/src/include/utils/sortsupport.h:294,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: 298
      start: 266
    functionDepth: 2
    functionLinenumber: 266
    functionLinenumberEnd: 298
    functionName: ApplySignedSortComparator
    functionSourceFile: /src/postgres/src/include/utils/sortsupport.h
    functionUses: 0
    functionsReached:
    - DatumGetInt64
    - INVERT_COMPARE_RESULT
    linkageType: ''
    returnType: int
    signature: "int ApplySignedSortComparator(Datum datum1, bool isNull1,\n\t\t\t\t\t\t
      \ Datum datum2, bool isNull2,\n\t\t\t\t\t\t  SortSupport ssup)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/include/utils/sortsupport.h:326,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/include/utils/sortsupport.h:326,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/include/utils/sortsupport.h:327,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/include/utils/sortsupport.h:327,1
    - Dst: INVERT_COMPARE_RESULT
      Src: /src/postgres/src/include/utils/sortsupport.h:329,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: 333
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 333
    functionName: ApplyInt32SortComparator
    functionSourceFile: /src/postgres/src/include/utils/sortsupport.h
    functionUses: 0
    functionsReached:
    - DatumGetInt32
    - INVERT_COMPARE_RESULT
    linkageType: ''
    returnType: int
    signature: "int ApplyInt32SortComparator(Datum datum1, bool isNull1,\n\t\t\t\t\t\t
      Datum datum2, bool isNull2,\n\t\t\t\t\t\t SortSupport ssup)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: SortSupport::abbrev_full_comparator
      Src: /src/postgres/src/include/utils/sortsupport.h:365,1
    - Dst: INVERT_COMPARE_RESULT
      Src: /src/postgres/src/include/utils/sortsupport.h:367,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: 371
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 371
    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: 144
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 144
    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: 107
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 107
    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: 215
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 215
    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: 217
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 217
    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: 219
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 219
    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: 2
    functionLinenumber: 17
    functionLinenumberEnd: 21
    functionName: DatumGetFullTransactionId
    functionSourceFile: /src/postgres/src/include/utils/xid8.h
    functionUses: 0
    functionsReached:
    - FullTransactionIdFromU64
    - DatumGetUInt64
    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:
    - UInt64GetDatum
    - U64FromFullTransactionId
    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:
    - Assert
    - vector8_load
    - vector8_or
    - vector8_is_highbit_set
    - vector8_eq
    - vector8_broadcast
    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: 3
    argNames:
    - (
    - la
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 109
    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: 110
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 110
    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: 118
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 118
    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: 120
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 120
    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: 122
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 122
    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: 123
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 123
    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: 132
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 132
    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: 133
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 133
    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: 191
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 191
    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: 238
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 238
    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: 259
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 259
    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: 318
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 318
    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: 344
      start: 343
    functionDepth: 0
    functionLinenumber: 343
    functionLinenumberEnd: 344
    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: 435
      start: 434
    functionDepth: 0
    functionLinenumber: 434
    functionLinenumberEnd: 435
    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: 437
      start: 436
    functionDepth: 0
    functionLinenumber: 436
    functionLinenumberEnd: 437
    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: 439
      start: 438
    functionDepth: 0
    functionLinenumber: 438
    functionLinenumberEnd: 439
    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: 491
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 491
    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: 492
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 492
    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: 493
      start: 492
    functionDepth: 0
    functionLinenumber: 492
    functionLinenumberEnd: 493
    functionName: UP
    functionSourceFile: /src/postgres/src/include/regex/regguts.h
    functionUses: 6
    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: 494
      start: 493
    functionDepth: 0
    functionLinenumber: 493
    functionLinenumberEnd: 494
    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: 495
      start: 494
    functionDepth: 0
    functionLinenumber: 494
    functionLinenumberEnd: 495
    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: 496
      start: 495
    functionDepth: 0
    functionLinenumber: 495
    functionLinenumberEnd: 496
    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: 497
      start: 496
    functionDepth: 0
    functionLinenumber: 496
    functionLinenumberEnd: 497
    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: 525
      start: 523
    functionDepth: 0
    functionLinenumber: 523
    functionLinenumberEnd: 525
    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: 3
    argNames:
    - (
    - re
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 56
    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: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    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: 63
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 63
    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: 64
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 64
    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: 79
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 79
    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: 92
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 92
    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: 93
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 93
    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: 94
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 94
    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: 95
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 95
    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: 108
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 108
    functionName: PageXLogRecPtrGet
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr PageXLogRecPtrGet(PageXLogRecPtr val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ptr
    - ','
    - lsn
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 112
    functionName: PageXLogRecPtrSet
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PageXLogRecPtrSet(ptr, lsn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - page
    argTypes:
    - PageData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 228
    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: 238
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 238
    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: 248
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 248
    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:261,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 258
    functionDepth: 1
    functionLinenumber: 258
    functionLinenumberEnd: 262
    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: 281
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 281
    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: 291
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 291
    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:303,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/bufpage.h:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - page
    - size
    - version
    argTypes:
    - Page
    - Size
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 300
    functionDepth: 1
    functionLinenumber: 300
    functionLinenumberEnd: 307
    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:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - page
    argTypes:
    - PageData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 321
    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:331,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/bufpage.h:332,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/bufpage.h:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - page
    argTypes:
    - PageData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 328
    functionDepth: 1
    functionLinenumber: 328
    functionLinenumberEnd: 334
    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: 345
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 345
    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:357,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/bufpage.h:358,1
    - Dst: ItemIdHasStorage
      Src: /src/postgres/src/include/storage/bufpage.h:358,1
    - Dst: ItemIdGetOffset
      Src: /src/postgres/src/include/storage/bufpage.h:360,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - page
    - itemId
    argTypes:
    - PageData*
    - ItemIdData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 354
    functionDepth: 1
    functionLinenumber: 354
    functionLinenumberEnd: 361
    functionName: PageGetItem
    functionSourceFile: /src/postgres/src/include/storage/bufpage.h
    functionUses: 0
    functionsReached:
    - Assert
    - ItemIdGetOffset
    - ItemIdHasStorage
    linkageType: ''
    returnType: Item
    signature: Item PageGetItem(const 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: 381
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 381
    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:389,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - page
    argTypes:
    - PageData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 390
    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:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - page
    - lsn
    argTypes:
    - Page
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 391
    functionDepth: 1
    functionLinenumber: 391
    functionLinenumberEnd: 395
    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: 401
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 401
    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: 406
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 406
    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: 411
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 411
    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: 417
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 417
    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: 422
      start: 418
    functionDepth: 0
    functionLinenumber: 418
    functionLinenumberEnd: 422
    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: 427
      start: 423
    functionDepth: 0
    functionLinenumber: 423
    functionLinenumberEnd: 427
    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: 433
      start: 429
    functionDepth: 0
    functionLinenumber: 429
    functionLinenumberEnd: 433
    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: 438
      start: 434
    functionDepth: 0
    functionLinenumber: 434
    functionLinenumberEnd: 438
    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: 443
      start: 439
    functionDepth: 0
    functionLinenumber: 439
    functionLinenumberEnd: 443
    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: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - page
    - ','
    - xid
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 448
    functionDepth: 0
    functionLinenumber: 448
    functionLinenumberEnd: 455
    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: 457
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 457
    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: 477
      start: 473
    functionDepth: 0
    functionLinenumber: 473
    functionLinenumberEnd: 477
    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: 68
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 68
    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: 70
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 70
    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: 72
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 72
    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: 75
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 75
    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: 78
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 78
    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: 81
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 81
    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: 86
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 86
    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: 87
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 87
    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: 7
    argNames:
    - (
    - locktag
    - ','
    - dboid
    - ','
    - reloid
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 189
    functionName: SET_LOCKTAG_RELATION
    functionSourceFile: /src/postgres/src/include/storage/lock.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: 198
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 198
    functionName: SET_LOCKTAG_RELATION_EXTEND
    functionSourceFile: /src/postgres/src/include/storage/lock.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: 207
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 207
    functionName: SET_LOCKTAG_DATABASE_FROZEN_IDS
    functionSourceFile: /src/postgres/src/include/storage/lock.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: 216
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 216
    functionName: SET_LOCKTAG_PAGE
    functionSourceFile: /src/postgres/src/include/storage/lock.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: 225
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 225
    functionName: SET_LOCKTAG_TUPLE
    functionSourceFile: /src/postgres/src/include/storage/lock.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: 234
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 234
    functionName: SET_LOCKTAG_TRANSACTION
    functionSourceFile: /src/postgres/src/include/storage/lock.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: 243
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 243
    functionName: SET_LOCKTAG_VIRTUALTRANSACTION
    functionSourceFile: /src/postgres/src/include/storage/lock.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: 255
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 255
    functionName: SET_LOCKTAG_SPECULATIVE_INSERTION
    functionSourceFile: /src/postgres/src/include/storage/lock.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: 270
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 270
    functionName: SET_LOCKTAG_OBJECT
    functionSourceFile: /src/postgres/src/include/storage/lock.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: 278
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 278
    functionName: SET_LOCKTAG_ADVISORY
    functionSourceFile: /src/postgres/src/include/storage/lock.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: 290
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 290
    functionName: SET_LOCKTAG_APPLY_TRANSACTION
    functionSourceFile: /src/postgres/src/include/storage/lock.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:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 325
    functionDepth: 0
    functionLinenumber: 325
    functionLinenumberEnd: 326
    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: 327
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 327
    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: 385
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 385
    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: 445
      start: 444
    functionDepth: 0
    functionLinenumber: 444
    functionLinenumberEnd: 445
    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: 446
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 446
    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: 527
      start: 525
    functionDepth: 0
    functionLinenumber: 525
    functionLinenumberEnd: 527
    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: 530
      start: 527
    functionDepth: 0
    functionLinenumber: 527
    functionLinenumberEnd: 530
    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: 532
      start: 530
    functionDepth: 0
    functionLinenumber: 530
    functionLinenumberEnd: 532
    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: 544
      start: 542
    functionDepth: 0
    functionLinenumber: 542
    functionLinenumberEnd: 544
    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: 109
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 109
    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: 110
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 110
    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:
    - (
    - reln
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 285
    functionName: RelationGetNumberOfBlocks
    functionSourceFile: /src/postgres/src/include/storage/bufmgr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RelationGetNumberOfBlocks(reln)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/storage/bufmgr.h:370,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/bufmgr.h:371,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - bufnum
    argTypes:
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 374
    functionName: BufferIsValid
    functionSourceFile: /src/postgres/src/include/storage/bufmgr.h
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: bool
    signature: bool BufferIsValid(Buffer bufnum)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/storage/bufmgr.h:386,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/include/storage/bufmgr.h:386,1
    - Dst: BufferIsLocal
      Src: /src/postgres/src/include/storage/bufmgr.h:388,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 383
    functionDepth: 2
    functionLinenumber: 383
    functionLinenumberEnd: 392
    functionName: BufferGetBlock
    functionSourceFile: /src/postgres/src/include/storage/bufmgr.h
    functionUses: 1
    functionsReached:
    - BufferIsLocal
    - Assert
    - BufferIsValid
    linkageType: ''
    returnType: Block
    signature: Block BufferGetBlock(Buffer buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/include/storage/bufmgr.h:408,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/include/storage/bufmgr.h:408,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 405
    functionDepth: 2
    functionLinenumber: 405
    functionLinenumberEnd: 410
    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:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 416
    functionDepth: 3
    functionLinenumber: 416
    functionLinenumberEnd: 420
    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: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 58
    functionName: SpinLockInit
    functionSourceFile: /src/postgres/src/include/storage/spin.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SpinLockInit(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 60
    functionName: SpinLockAcquire
    functionSourceFile: /src/postgres/src/include/storage/spin.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SpinLockAcquire(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: SpinLockRelease
    functionSourceFile: /src/postgres/src/include/storage/spin.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SpinLockRelease(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 64
    functionName: SpinLockFree
    functionSourceFile: /src/postgres/src/include/storage/spin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SpinLockFree(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PointerIsValid
      Src: /src/postgres/src/include/storage/itemptr.h:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - pointer
    argTypes:
    - ItemPointerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 86
    functionName: ItemPointerIsValid
    functionSourceFile: /src/postgres/src/include/storage/itemptr.h
    functionUses: 0
    functionsReached:
    - PointerIsValid
    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:
    - ItemPointerGetBlockNumberNoCheck
    - Assert
    - 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: 2
    functionLinenumber: 123
    functionLinenumberEnd: 128
    functionName: ItemPointerGetOffsetNumber
    functionSourceFile: /src/postgres/src/include/storage/itemptr.h
    functionUses: 5
    functionsReached:
    - ItemPointerGetOffsetNumberNoCheck
    - Assert
    - 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: PointerIsValid
      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
    - PointerIsValid
    - 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: PointerIsValid
      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
    - PointerIsValid
    - 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
    - Dst: PointerIsValid
      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
    - PointerIsValid
    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: PointerIsValid
      Src: /src/postgres/src/include/storage/itemptr.h:174,1
    - Dst: Assert
      Src: /src/postgres/src/include/storage/itemptr.h:175,1
    - Dst: PointerIsValid
      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
    - PointerIsValid
    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: PointerIsValid
      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
    - PointerIsValid
    - 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: 3
    functionLinenumber: 196
    functionLinenumberEnd: 202
    functionName: ItemPointerIndicatesMovedPartitions
    functionSourceFile: /src/postgres/src/include/storage/itemptr.h
    functionUses: 1
    functionsReached:
    - ItemPointerGetOffsetNumber
    - ItemPointerGetBlockNumberNoCheck
    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:
    - (
    - 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: 79
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 79
    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: 81
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 81
    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:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - file
    - buffer
    - amount
    - offset
    - wait_event_info
    argTypes:
    - File
    - void*
    - size_t
    - off_t
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 208
    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, off_t offset,\n\t\t
      uint32 wait_event_info)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unconstify
      Src: /src/postgres/src/include/storage/fd.h:215,1
    - Dst: FileWriteV
      Src: /src/postgres/src/include/storage/fd.h:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - file
    - buffer
    - amount
    - offset
    - wait_event_info
    argTypes:
    - File
    - void*
    - size_t
    - off_t
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 220
    functionName: FileWrite
    functionSourceFile: /src/postgres/src/include/storage/fd.h
    functionUses: 0
    functionsReached:
    - FileWriteV
    - unconstify
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t FileWrite(File file, const void *buffer, size_t amount, off_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: 101
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 101
    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: 439
      start: 438
    functionDepth: 0
    functionLinenumber: 438
    functionLinenumberEnd: 439
    functionName: GetPGProcByNumber
    functionSourceFile: /src/postgres/src/include/storage/proc.h
    functionUses: 0
    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: 440
      start: 439
    functionDepth: 0
    functionLinenumber: 439
    functionLinenumberEnd: 440
    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: 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: 1
    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: 1
    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: 1
    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: 1
    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: 1
    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: 1
    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: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_UNLOCK(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 611
    functionDepth: 0
    functionLinenumber: 611
    functionLinenumberEnd: 612
    functionName: TAS
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAS(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 619
    functionDepth: 0
    functionLinenumber: 619
    functionLinenumberEnd: 620
    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: 622
      start: 621
    functionDepth: 0
    functionLinenumber: 621
    functionLinenumberEnd: 622
    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: _mm_pause
      Src: /src/postgres/src/include/storage/s_lock.h:630,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 627
    functionDepth: 0
    functionLinenumber: 627
    functionLinenumberEnd: 631
    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: 638
      start: 633
    functionDepth: 0
    functionLinenumber: 633
    functionLinenumberEnd: 638
    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: 646
      start: 644
    functionDepth: 0
    functionLinenumber: 644
    functionLinenumberEnd: 646
    functionName: S_UNLOCK
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 1
    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: 666
      start: 664
    functionDepth: 0
    functionLinenumber: 664
    functionLinenumberEnd: 666
    functionName: S_LOCK
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 1
    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: 670
      start: 669
    functionDepth: 0
    functionLinenumber: 669
    functionLinenumberEnd: 670
    functionName: S_LOCK_FREE
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_LOCK_FREE(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 691
    functionDepth: 0
    functionLinenumber: 691
    functionLinenumberEnd: 692
    functionName: S_UNLOCK
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 1
    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: 696
      start: 695
    functionDepth: 0
    functionLinenumber: 695
    functionLinenumberEnd: 696
    functionName: S_INIT_LOCK
    functionSourceFile: /src/postgres/src/include/storage/s_lock.h
    functionUses: 1
    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: 700
      start: 699
    functionDepth: 0
    functionLinenumber: 699
    functionLinenumberEnd: 700
    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: 707
      start: 706
    functionDepth: 0
    functionLinenumber: 706
    functionLinenumberEnd: 707
    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: 711
      start: 710
    functionDepth: 0
    functionLinenumber: 710
    functionLinenumberEnd: 711
    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: 749
      start: 739
    functionDepth: 0
    functionLinenumber: 739
    functionLinenumberEnd: 749
    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: 752
      start: 751
    functionDepth: 0
    functionLinenumber: 751
    functionLinenumberEnd: 752
    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: 140
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 140
    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:
    - Dst: Assert
      Src: /src/postgres/src/include/storage/checksum_impl.h:154,1
    - Dst: memcpy
      Src: /src/postgres/src/include/storage/checksum_impl.h:157,1
    - Dst: CHECKSUM_COMP
      Src: /src/postgres/src/include/storage/checksum_impl.h:162,1
    - Dst: CHECKSUM_COMP
      Src: /src/postgres/src/include/storage/checksum_impl.h:167,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - page
    argTypes:
    - PGChecksummablePage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 174
    functionName: pg_checksum_block
    functionSourceFile: /src/postgres/src/include/storage/checksum_impl.h
    functionUses: 0
    functionsReached:
    - CHECKSUM_COMP
    - memcpy
    - Assert
    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:194,1
    - Dst: PageIsNew
      Src: /src/postgres/src/include/storage/checksum_impl.h:194,1
    - Dst: pg_checksum_block
      Src: /src/postgres/src/include/storage/checksum_impl.h:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - page
    - blkno
    argTypes:
    - char*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 186
    functionDepth: 2
    functionLinenumber: 186
    functionLinenumberEnd: 215
    functionName: pg_checksum_page
    functionSourceFile: /src/postgres/src/include/storage/checksum_impl.h
    functionUses: 3
    functionsReached:
    - Assert
    - pg_checksum_block
    - PageIsNew
    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: 60
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 60
    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: 61
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 61
    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: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tag
    argTypes:
    - BufferTag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 119
    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: 125
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 125
    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: 133
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 133
    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:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - tag
    argTypes:
    - BufferTag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 145
    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:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - tag
    argTypes:
    - BufferTag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 154
    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:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - tag
    - rlocator
    - forkNum
    - blockNum
    argTypes:
    - BufferTag*
    - RelFileLocator*
    - ForkNumber
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 164
    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: 174
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 174
    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:182,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - rlocator
    argTypes:
    - BufferTag*
    - RelFileLocator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 183
    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: 196
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 196
    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:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hashcode
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 203
    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: 209
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 209
    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: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - id
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 337
    functionName: GetBufferDescriptor
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: BufferDesc
    signature: 'BufferDesc *

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

      GetLocalBufferDescriptor(uint32 id)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bdesc
    argTypes:
    - BufferDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 349
    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: 355
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 355
    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: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bdesc
    argTypes:
    - BufferDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 361
    functionName: BufferDescriptorGetContentLock
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: LWLock
    signature: 'LWLock *

      BufferDescriptorGetContentLock(const BufferDesc *bdesc)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_write_barrier
      Src: /src/postgres/src/include/storage/buf_internals.h:379,1
    - Dst: pg_atomic_write_u32
      Src: /src/postgres/src/include/storage/buf_internals.h:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - desc
    - buf_state
    argTypes:
    - BufferDesc*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 376
    functionDepth: 2
    functionLinenumber: 376
    functionLinenumberEnd: 381
    functionName: UnlockBufHdr
    functionSourceFile: /src/postgres/src/include/storage/buf_internals.h
    functionUses: 1
    functionsReached:
    - pg_atomic_write_u32
    - pg_write_barrier
    linkageType: ''
    returnType: void
    signature: void UnlockBufHdr(BufferDesc *desc, uint32 buf_state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ResourceOwnerRemember
      Src: /src/postgres/src/include/storage/buf_internals.h:410,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/include/storage/buf_internals.h:410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - owner
    - buffer
    argTypes:
    - ResourceOwner
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 407
    functionDepth: 1
    functionLinenumber: 407
    functionLinenumberEnd: 411
    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:415,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/include/storage/buf_internals.h:415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - owner
    - buffer
    argTypes:
    - ResourceOwner
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 412
    functionDepth: 1
    functionLinenumber: 412
    functionLinenumberEnd: 416
    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:420,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/include/storage/buf_internals.h:420,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - owner
    - buffer
    argTypes:
    - ResourceOwner
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 421
    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:425,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/include/storage/buf_internals.h:425,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - owner
    - buffer
    argTypes:
    - ResourceOwner
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 422
    functionDepth: 1
    functionLinenumber: 422
    functionLinenumberEnd: 426
    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:102,1
    - Dst: PostmasterIsAliveInternal
      Src: /src/postgres/src/include/storage/pmsignal.h:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 105
    functionName: PostmasterIsAlive
    functionSourceFile: /src/postgres/src/include/storage/pmsignal.h
    functionUses: 0
    functionsReached:
    - PostmasterIsAliveInternal
    - likely
    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: 108
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 108
    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:
    - proclist_delete_offset
    - proclist_is_empty
    - Assert
    - GetPGProcByNumber
    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: 384
      start: 376
    functionDepth: 0
    functionLinenumber: 376
    functionLinenumberEnd: 384
    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: 396
      start: 389
    functionDepth: 0
    functionLinenumber: 389
    functionLinenumberEnd: 396
    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/header.h
    functionUses: 198
    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/header.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/header.h
    functionUses: 26
    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/header.h
    functionUses: 504
    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: 12
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 12
    functionName: SIZE
    functionSourceFile: /src/postgres/src/include/snowball/libstemmer/header.h
    functionUses: 12
    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: 13
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 13
    functionName: SET_SIZE
    functionSourceFile: /src/postgres/src/include/snowball/libstemmer/header.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: 14
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 14
    functionName: CAPACITY
    functionSourceFile: /src/postgres/src/include/snowball/libstemmer/header.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CAPACITY(p)
  - 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: 5
    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: 9
    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: 112
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 112
    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: 115
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 115
    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: 118
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 118
    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: 121
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 121
    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: 124
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 124
    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: 127
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 127
    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: 130
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 130
    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: 133
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 133
    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: 136
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 136
    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: 168
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 168
    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: 182
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 182
    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:
    - umul128
    - shiftright128
    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:
    - umul128
    - shiftright128
    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:
    - log10Pow5
    - UINT64CONST
    - multipleOfPowerOf5
    - div5
    - div10
    - div100
    - multipleOfPowerOf2
    - pow5bits
    - mulShiftAll
    - log10Pow2
    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:
    - Assert
    - memset
    - memmove
    - div1e8
    - memcpy
    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:
    - div10
    - decimalLength
    - div1e8
    - memcpy
    - 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:
    - UINT64CONST
    - d2d
    - double_to_bits
    - to_chars
    - copy_special_str
    - d2d_small_int
    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_init
    - INIT_CRC32C
    - pg_cryptohash_create
    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:
    - COMP_CRC32C
    - pg_cryptohash_update
    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:
    - Assert
    - StaticAssertDecl
    - FIN_CRC32C
    - pg_cryptohash_final
    - memcpy
    - pg_cryptohash_free
    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:
    - pg_wchar
    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(pg_wchar 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:
    - pg_wchar
    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:
    - lengthof
    - range_search
    linkageType: ''
    returnType: bool
    signature: bool pg_u_prop_alphabetic(pg_wchar 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:
    - pg_wchar
    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:
    - lengthof
    - range_search
    linkageType: ''
    returnType: bool
    signature: bool pg_u_prop_lowercase(pg_wchar 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:
    - pg_wchar
    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:
    - lengthof
    - range_search
    linkageType: ''
    returnType: bool
    signature: bool pg_u_prop_uppercase(pg_wchar 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:
    - pg_wchar
    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:
    - unicode_category
    - pg_u_prop_uppercase
    - pg_u_prop_lowercase
    - PG_U_CATEGORY_MASK
    linkageType: ''
    returnType: bool
    signature: bool pg_u_prop_cased(pg_wchar 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:
    - pg_wchar
    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:
    - lengthof
    - range_search
    linkageType: ''
    returnType: bool
    signature: bool pg_u_prop_case_ignorable(pg_wchar 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:
    - pg_wchar
    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:
    - lengthof
    - range_search
    linkageType: ''
    returnType: bool
    signature: bool pg_u_prop_white_space(pg_wchar 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:
    - pg_wchar
    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:
    - lengthof
    - range_search
    linkageType: ''
    returnType: bool
    signature: bool pg_u_prop_hex_digit(pg_wchar 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:
    - pg_wchar
    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:
    - lengthof
    - range_search
    linkageType: ''
    returnType: bool
    signature: bool pg_u_prop_join_control(pg_wchar 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:
    - pg_wchar
    - 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(pg_wchar 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:
    - pg_wchar
    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(pg_wchar 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:
    - pg_wchar
    - 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(pg_wchar 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:
    - pg_wchar
    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:
    - unicode_category
    - pg_u_isalpha
    - pg_u_prop_join_control
    - PG_U_CATEGORY_MASK
    linkageType: ''
    returnType: bool
    signature: bool pg_u_isword(pg_wchar 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:
    - pg_wchar
    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(pg_wchar 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:
    - pg_wchar
    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(pg_wchar 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:
    - pg_wchar
    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(pg_wchar 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:
    - pg_wchar
    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(pg_wchar 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:
    - pg_wchar
    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:
    - unicode_category
    - pg_u_isspace
    - PG_U_CATEGORY_MASK
    linkageType: ''
    returnType: bool
    signature: bool pg_u_isgraph(pg_wchar 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:
    - pg_wchar
    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:
    - pg_u_isgraph
    - pg_u_isblank
    - unicode_category
    linkageType: ''
    returnType: bool
    signature: bool pg_u_isprint(pg_wchar 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:
    - pg_wchar
    - 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:
    - unicode_category
    - pg_u_isalpha
    - PG_U_CATEGORY_MASK
    linkageType: ''
    returnType: bool
    signature: bool pg_u_ispunct(pg_wchar 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:
    - pg_wchar
    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(pg_wchar 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:
    - pg_wchar
    - 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:
    - pg_u_prop_hex_digit
    - unicode_category
    linkageType: ''
    returnType: bool
    signature: bool pg_u_isxdigit(pg_wchar 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
    - pg_wchar
    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, pg_wchar
      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: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    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: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    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: 35
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 35
    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: 36
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 36
    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: 60
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 60
    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:83,1
    - Dst: pg_unicode_decompinfo::hash
      Src: /src/postgres/src/common/unicode_norm.c:84,1
    - Dst: bsearch
      Src: /src/postgres/src/common/unicode_norm.c:100,1
    - Dst: lengthof
      Src: /src/postgres/src/common/unicode_norm.c:102,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - code
    argTypes:
    - pg_wchar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 106
    functionName: get_code_entry
    functionSourceFile: /src/postgres/src/common/unicode_norm.c
    functionUses: 0
    functionsReached:
    - bsearch
    - lengthof
    - pg_unicode_decompinfo::hash
    - pg_hton32
    linkageType: ''
    returnType: pg_unicode_decomposition
    signature: 'pg_unicode_decomposition *

      get_code_entry(pg_wchar code)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_code_entry
      Src: /src/postgres/src/common/unicode_norm.c:114,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - code
    argTypes:
    - pg_wchar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 111
    functionDepth: 2
    functionLinenumber: 111
    functionLinenumberEnd: 124
    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(pg_wchar code)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DECOMPOSITION_IS_INLINE
      Src: /src/postgres/src/common/unicode_norm.c:138,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_norm.c:140,1
    - Dst: DECOMPOSITION_SIZE
      Src: /src/postgres/src/common/unicode_norm.c:140,1
    - Dst: DECOMPOSITION_SIZE
      Src: /src/postgres/src/common/unicode_norm.c:147,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - entry
    - dec_size
    argTypes:
    - pg_unicode_decomposition*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 150
    functionName: get_code_decomposition
    functionSourceFile: /src/postgres/src/common/unicode_norm.c
    functionUses: 0
    functionsReached:
    - Assert
    - DECOMPOSITION_SIZE
    - DECOMPOSITION_IS_INLINE
    linkageType: ''
    returnType: pg_wchar
    signature: 'pg_wchar *

      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:186,1
    - Dst: DECOMPOSITION_SIZE
      Src: /src/postgres/src/common/unicode_norm.c:192,1
    - Dst: DECOMPOSITION_IS_COMPAT
      Src: /src/postgres/src/common/unicode_norm.c:193,1
    - Dst: get_code_decomposition
      Src: /src/postgres/src/common/unicode_norm.c:200,1
    - Dst: get_decomposed_size
      Src: /src/postgres/src/common/unicode_norm.c:205,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 2
    argNames:
    - code
    - compat
    argTypes:
    - pg_wchar
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 158
    functionDepth: 2
    functionLinenumber: 158
    functionLinenumberEnd: 209
    functionName: get_decomposed_size
    functionSourceFile: /src/postgres/src/common/unicode_norm.c
    functionUses: 1
    functionsReached:
    - DECOMPOSITION_IS_COMPAT
    - get_code_decomposition
    - get_code_entry
    - get_decomposed_size
    - DECOMPOSITION_SIZE
    linkageType: ''
    returnType: int
    signature: int get_decomposed_size(pg_wchar code, bool compat)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pg_hton64
      Src: /src/postgres/src/common/unicode_norm.c:269,1
    - Dst: pg_unicode_recompinfo::hash
      Src: /src/postgres/src/common/unicode_norm.c:270,1
    - Dst: lengthof
      Src: /src/postgres/src/common/unicode_norm.c:290,1
    - Dst: DECOMPOSITION_SIZE
      Src: /src/postgres/src/common/unicode_norm.c:294,1
    - Dst: DECOMPOSITION_NO_COMPOSE
      Src: /src/postgres/src/common/unicode_norm.c:297,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 32
    argCount: 3
    argNames:
    - start
    - code
    - result
    argTypes:
    - uint32
    - uint32
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 311
    functionName: recompose_code
    functionSourceFile: /src/postgres/src/common/unicode_norm.c
    functionUses: 0
    functionsReached:
    - lengthof
    - pg_hton64
    - pg_unicode_recompinfo::hash
    - DECOMPOSITION_NO_COMPOSE
    - DECOMPOSITION_SIZE
    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:361,1
    - Dst: DECOMPOSITION_SIZE
      Src: /src/postgres/src/common/unicode_norm.c:369,1
    - Dst: DECOMPOSITION_IS_COMPAT
      Src: /src/postgres/src/common/unicode_norm.c:370,1
    - Dst: get_code_decomposition
      Src: /src/postgres/src/common/unicode_norm.c:382,1
    - Dst: decompose_code
      Src: /src/postgres/src/common/unicode_norm.c:388,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 4
    argNames:
    - code
    - compat
    - result
    - current
    argTypes:
    - pg_wchar
    - bool
    - pg_wchar**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 320
    functionDepth: 2
    functionLinenumber: 320
    functionLinenumberEnd: 390
    functionName: decompose_code
    functionSourceFile: /src/postgres/src/common/unicode_norm.c
    functionUses: 1
    functionsReached:
    - decompose_code
    - DECOMPOSITION_IS_COMPAT
    - get_code_decomposition
    - get_code_entry
    - DECOMPOSITION_SIZE
    linkageType: ''
    returnType: void
    signature: void decompose_code(pg_wchar code, bool compat, pg_wchar **result,
      int *current)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: get_decomposed_size
      Src: /src/postgres/src/common/unicode_norm.c:426,1
    - Dst: ALLOC
      Src: /src/postgres/src/common/unicode_norm.c:428,1
    - Dst: decompose_code
      Src: /src/postgres/src/common/unicode_norm.c:438,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_norm.c:440,1
    - Dst: get_canonical_class
      Src: /src/postgres/src/common/unicode_norm.c:454,1
    - Dst: get_canonical_class
      Src: /src/postgres/src/common/unicode_norm.c:455,1
    - Dst: ALLOC
      Src: /src/postgres/src/common/unicode_norm.c:490,1
    - Dst: FREE
      Src: /src/postgres/src/common/unicode_norm.c:493,1
    - Dst: get_canonical_class
      Src: /src/postgres/src/common/unicode_norm.c:505,1
    - Dst: recompose_code
      Src: /src/postgres/src/common/unicode_norm.c:509,1
    - Dst: FREE
      Src: /src/postgres/src/common/unicode_norm.c:529,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 54
    argCount: 2
    argNames:
    - form
    - input
    argTypes:
    - UnicodeNormalizationForm
    - pg_wchar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 401
    functionDepth: 3
    functionLinenumber: 401
    functionLinenumberEnd: 532
    functionName: unicode_normalize
    functionSourceFile: /src/postgres/src/common/unicode_norm.c
    functionUses: 0
    functionsReached:
    - Assert
    - FREE
    - decompose_code
    - get_decomposed_size
    - get_canonical_class
    - recompose_code
    - ALLOC
    linkageType: ''
    returnType: pg_wchar
    signature: 'pg_wchar *

      unicode_normalize(UnicodeNormalizationForm form, const pg_wchar *input)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_hton32
      Src: /src/postgres/src/common/unicode_norm.c:552,1
    - Dst: pg_unicode_norminfo*::hash
      Src: /src/postgres/src/common/unicode_norm.c:553,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ch
    - norminfo
    argTypes:
    - pg_wchar
    - pg_unicode_norminfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 542
    functionDepth: 1
    functionLinenumber: 542
    functionLinenumberEnd: 568
    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(pg_wchar ch, const pg_unicode_norminfo *norminfo)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: qc_hash_lookup
      Src: /src/postgres/src/common/unicode_norm.c:581,1
    - Dst: qc_hash_lookup
      Src: /src/postgres/src/common/unicode_norm.c:584,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_norm.c:587,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - form
    - ch
    argTypes:
    - UnicodeNormalizationForm
    - pg_wchar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 573
    functionDepth: 2
    functionLinenumber: 573
    functionLinenumberEnd: 595
    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,
      pg_wchar ch)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: get_canonical_class
      Src: /src/postgres/src/common/unicode_norm.c:619,1
    - Dst: qc_is_allowed
      Src: /src/postgres/src/common/unicode_norm.c:623,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - form
    - input
    argTypes:
    - UnicodeNormalizationForm
    - pg_wchar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 597
    functionDepth: 3
    functionLinenumber: 597
    functionLinenumberEnd: 632
    functionName: unicode_is_normalized_quickcheck
    functionSourceFile: /src/postgres/src/common/unicode_norm.c
    functionUses: 0
    functionsReached:
    - qc_is_allowed
    - get_canonical_class
    linkageType: ''
    returnType: UnicodeNormalizationQC
    signature: UnicodeNormalizationQC unicode_is_normalized_quickcheck(UnicodeNormalizationForm
      form, const pg_wchar *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: 52
    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
      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: 7
    functionsReached:
    - readdir
    - pfree
    - rmdir
    - palloc
    - rmtree
    - pg_log_warning
    - snprintf
    - CLOSEDIR
    - pstrdup
    - get_dirent_type
    - OPENDIR
    - repalloc
    - unlink
    - strcmp
    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
    - json_lex
    - lex_peek
    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:
    - memset
    - jsonapi_makeStringInfo
    - ALLOC0
    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:
    - Assert
    - FREE
    - ALLOC0
    - jsonapi_initStringInfo
    - ALLOC
    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
    - FREE
    - memset
    - ALLOC0
    - 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:
    - FREE
    - jsonapi_termStringInfo
    - jsonapi_destroyStringInfo
    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:
    - lex_expect
    - allocate_incremental_state
    - lex_peek
    - parse_scalar
    - parse_array
    - pg_parse_json_incremental
    - parse_object
    - json_lex
    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:
    - lex_expect
    - lex_peek
    - parse_array_element
    - memcpy
    - json_lex
    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:
    - get_fnull
    - IS_NT
    - dec_lex_level
    - have_prediction
    - get_fname
    - inc_lex_level
    - IS_SEM
    - next_prediction
    - ALLOC
    - OFS
    - lex_peek
    - set_fname
    - pop_prediction
    - push_prediction
    - memcpy
    - STRDUP
    - set_fnull
    - TD_ENTRY
    - report_parse_error
    - Assert
    - FREE
    - json_lex
    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:
    - report_parse_error
    - FREE
    - lex_peek
    - memcpy
    - STRDUP
    - json_lex
    - ALLOC
    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:
    - report_parse_error
    - lex_expect
    - FREE
    - lex_peek
    - parse_scalar
    - parse_array
    - parse_object
    - STRDUP
    - json_lex
    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:
    - check_stack_depth
    - report_parse_error
    - Assert
    - lex_expect
    - lex_peek
    - parse_object_field
    - json_lex
    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_object
    - parse_scalar
    - parse_array
    - lex_peek
    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:
    - check_stack_depth
    - lex_expect
    - lex_peek
    - parse_array_element
    - json_lex
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType parse_array(JsonLexContext *lex, const JsonSemAction
      *sem)
  - BBCount: 63
    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:1698,1
    - Dst: JSON_ALPHANUMERIC_CHAR
      Src: /src/postgres/src/common/jsonapi.c:1717,1
    - Dst: jsonapi_appendStringInfoCharMacro
      Src: /src/postgres/src/common/jsonapi.c:1719,1
    - Dst: Assert
      Src: /src/postgres/src/common/jsonapi.c:1738,1
    - Dst: json_lex
      Src: /src/postgres/src/common/jsonapi.c:1765,1
    - Dst: Assert
      Src: /src/postgres/src/common/jsonapi.c:1793,1
    - Dst: json_lex_string
      Src: /src/postgres/src/common/jsonapi.c:1859,1
    - Dst: json_lex_number
      Src: /src/postgres/src/common/jsonapi.c:1866,1
    - Dst: json_lex_number
      Src: /src/postgres/src/common/jsonapi.c:1882,1
    - Dst: JSON_ALPHANUMERIC_CHAR
      Src: /src/postgres/src/common/jsonapi.c:1900,1
    - Dst: jsonapi_appendBinaryStringInfo
      Src: /src/postgres/src/common/jsonapi.c:1918,1
    - Dst: memcmp
      Src: /src/postgres/src/common/jsonapi.c:1931,1
    - Dst: memcmp
      Src: /src/postgres/src/common/jsonapi.c:1933,1
    - Dst: memcmp
      Src: /src/postgres/src/common/jsonapi.c:1938,1
    CyclomaticComplexity: 66
    EdgeCount: 66
    ICount: 204
    argCount: 1
    argNames:
    - lex
    argTypes:
    - JsonLexContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1950
      start: 1588
    functionDepth: 1
    functionLinenumber: 1588
    functionLinenumberEnd: 1950
    functionName: json_lex
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 9
    functionsReached:
    - jsonapi_appendBinaryStringInfo
    - Assert
    - json_lex_number
    - json_lex_string
    - jsonapi_appendStringInfoCharMacro
    - PQExpBufferDataBroken
    - memcmp
    - JSON_ALPHANUMERIC_CHAR
    - json_lex
    - 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:2000,1
    - Dst: Assert
      Src: /src/postgres/src/common/jsonapi.c:2003,1
    - Dst: FAIL_OR_INCOMPLETE_AT_CHAR_START
      Src: /src/postgres/src/common/jsonapi.c:2010,1
    - Dst: FAIL_OR_INCOMPLETE_AT_CHAR_START
      Src: /src/postgres/src/common/jsonapi.c:2018,1
    - Dst: FAIL_OR_INCOMPLETE_AT_CHAR_START
      Src: /src/postgres/src/common/jsonapi.c:2028,1
    - Dst: FAIL_AT_CHAR_END
      Src: /src/postgres/src/common/jsonapi.c:2036,1
    - Dst: is_utf16_surrogate_first
      Src: /src/postgres/src/common/jsonapi.c:2043,1
    - Dst: FAIL_AT_CHAR_END
      Src: /src/postgres/src/common/jsonapi.c:2046,1
    - Dst: is_utf16_surrogate_second
      Src: /src/postgres/src/common/jsonapi.c:2050,1
    - Dst: FAIL_AT_CHAR_END
      Src: /src/postgres/src/common/jsonapi.c:2053,1
    - Dst: surrogate_pair_to_codepoint
      Src: /src/postgres/src/common/jsonapi.c:2054,1
    - Dst: FAIL_AT_CHAR_END
      Src: /src/postgres/src/common/jsonapi.c:2059,1
    - Dst: FAIL_AT_CHAR_END
      Src: /src/postgres/src/common/jsonapi.c:2069,1
    - Dst: pg_unicode_to_server_noerror
      Src: /src/postgres/src/common/jsonapi.c:2082,1
    - Dst: FAIL_AT_CHAR_END
      Src: /src/postgres/src/common/jsonapi.c:2083,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/common/jsonapi.c:2084,1
    - Dst: unicode_to_utf8
      Src: /src/postgres/src/common/jsonapi.c:2093,1
    - Dst: pg_utf_mblen
      Src: /src/postgres/src/common/jsonapi.c:2094,1
    - Dst: jsonapi_appendBinaryStringInfo
      Src: /src/postgres/src/common/jsonapi.c:2095,1
    - Dst: jsonapi_appendStringInfoChar
      Src: /src/postgres/src/common/jsonapi.c:2100,1
    - Dst: FAIL_AT_CHAR_END
      Src: /src/postgres/src/common/jsonapi.c:2103,1
    - Dst: FAIL_AT_CHAR_END
      Src: /src/postgres/src/common/jsonapi.c:2110,1
    - Dst: jsonapi_appendStringInfoChar
      Src: /src/postgres/src/common/jsonapi.c:2117,1
    - Dst: jsonapi_appendStringInfoChar
      Src: /src/postgres/src/common/jsonapi.c:2120,1
    - Dst: jsonapi_appendStringInfoChar
      Src: /src/postgres/src/common/jsonapi.c:2123,1
    - Dst: jsonapi_appendStringInfoChar
      Src: /src/postgres/src/common/jsonapi.c:2126,1
    - Dst: jsonapi_appendStringInfoChar
      Src: /src/postgres/src/common/jsonapi.c:2129,1
    - Dst: jsonapi_appendStringInfoChar
      Src: /src/postgres/src/common/jsonapi.c:2132,1
    - Dst: FAIL_AT_CHAR_END
      Src: /src/postgres/src/common/jsonapi.c:2142,1
    - Dst: strchr
      Src: /src/postgres/src/common/jsonapi.c:2145,1
    - Dst: FAIL_AT_CHAR_END
      Src: /src/postgres/src/common/jsonapi.c:2155,1
    - Dst: FAIL_AT_CHAR_END
      Src: /src/postgres/src/common/jsonapi.c:2163,1
    - Dst: pg_lfind8
      Src: /src/postgres/src/common/jsonapi.c:2170,1
    - Dst: pg_lfind8
      Src: /src/postgres/src/common/jsonapi.c:2171,1
    - Dst: pg_lfind8_le
      Src: /src/postgres/src/common/jsonapi.c:2172,1
    - Dst: jsonapi_appendBinaryStringInfo
      Src: /src/postgres/src/common/jsonapi.c:2192,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/common/jsonapi.c:2209,1
    CyclomaticComplexity: 52
    EdgeCount: 52
    ICount: 124
    argCount: 1
    argNames:
    - lex
    argTypes:
    - JsonLexContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2220
      start: 1963
    functionDepth: 6
    functionLinenumber: 1963
    functionLinenumberEnd: 2220
    functionName: json_lex_string
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 1
    functionsReached:
    - jsonapi_appendBinaryStringInfo
    - Assert
    - is_utf16_surrogate_first
    - FAIL_OR_INCOMPLETE_AT_CHAR_START
    - jsonapi_appendStringInfoChar
    - pg_lfind8_le
    - FAIL_AT_CHAR_END
    - appendStringInfoString
    - strchr
    - pg_lfind8
    - is_utf16_surrogate_second
    - PQExpBufferBroken
    - pg_unicode_to_server_noerror
    - surrogate_pair_to_codepoint
    - unicode_to_utf8
    - pg_utf_mblen
    - 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: 1983
      start: 1971
    functionDepth: 0
    functionLinenumber: 1971
    functionLinenumberEnd: 1983
    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: 1992
      start: 1983
    functionDepth: 0
    functionLinenumber: 1983
    functionLinenumberEnd: 1992
    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:2321,1
    - Dst: jsonapi_appendBinaryStringInfo
      Src: /src/postgres/src/common/jsonapi.c:2330,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: 2353
      start: 2250
    functionDepth: 1
    functionLinenumber: 2250
    functionLinenumberEnd: 2353
    functionName: json_lex_number
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 2
    functionsReached:
    - jsonapi_appendBinaryStringInfo
    - JSON_ALPHANUMERIC_CHAR
    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:2394,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 2
    argNames:
    - ctx
    - lex
    argTypes:
    - JsonParseContext
    - JsonLexContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2396
      start: 2360
    functionDepth: 1
    functionLinenumber: 2360
    functionLinenumberEnd: 2396
    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:2410,1
    - Dst: jsonapi_resetStringInfo
      Src: /src/postgres/src/common/jsonapi.c:2414,1
    - Dst: jsonapi_makeStringInfo
      Src: /src/postgres/src/common/jsonapi.c:2416,1
    - Dst: _
      Src: /src/postgres/src/common/jsonapi.c:2435,1
    - Dst: _
      Src: /src/postgres/src/common/jsonapi.c:2437,1
    - Dst: _
      Src: /src/postgres/src/common/jsonapi.c:2439,1
    - Dst: json_token_error
      Src: /src/postgres/src/common/jsonapi.c:2441,1
    - Dst: jsonapi_appendStringInfo
      Src: /src/postgres/src/common/jsonapi.c:2444,1
    - Dst: _
      Src: /src/postgres/src/common/jsonapi.c:2445,1
    - Dst: json_token_error
      Src: /src/postgres/src/common/jsonapi.c:2449,1
    - Dst: json_token_error
      Src: /src/postgres/src/common/jsonapi.c:2452,1
    - Dst: json_token_error
      Src: /src/postgres/src/common/jsonapi.c:2455,1
    - Dst: json_token_error
      Src: /src/postgres/src/common/jsonapi.c:2458,1
    - Dst: json_token_error
      Src: /src/postgres/src/common/jsonapi.c:2461,1
    - Dst: _
      Src: /src/postgres/src/common/jsonapi.c:2464,1
    - Dst: json_token_error
      Src: /src/postgres/src/common/jsonapi.c:2466,1
    - Dst: json_token_error
      Src: /src/postgres/src/common/jsonapi.c:2469,1
    - Dst: json_token_error
      Src: /src/postgres/src/common/jsonapi.c:2472,1
    - Dst: json_token_error
      Src: /src/postgres/src/common/jsonapi.c:2475,1
    - Dst: _
      Src: /src/postgres/src/common/jsonapi.c:2481,1
    - Dst: _
      Src: /src/postgres/src/common/jsonapi.c:2483,1
    - Dst: _
      Src: /src/postgres/src/common/jsonapi.c:2486,1
    - Dst: psprintf
      Src: /src/postgres/src/common/jsonapi.c:2495,1
    - Dst: _
      Src: /src/postgres/src/common/jsonapi.c:2495,1
    - Dst: GetDatabaseEncodingName
      Src: /src/postgres/src/common/jsonapi.c:2496,1
    - Dst: Assert
      Src: /src/postgres/src/common/jsonapi.c:2498,1
    - Dst: _
      Src: /src/postgres/src/common/jsonapi.c:2502,1
    - Dst: _
      Src: /src/postgres/src/common/jsonapi.c:2504,1
    - Dst: jsonapi_appendStringInfo
      Src: /src/postgres/src/common/jsonapi.c:2519,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/common/jsonapi.c:2525,1
    - Dst: _
      Src: /src/postgres/src/common/jsonapi.c:2526,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 77
    argCount: 2
    argNames:
    - error
    - lex
    argTypes:
    - JsonParseErrorType
    - JsonLexContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2530
      start: 2404
    functionDepth: 1
    functionLinenumber: 2404
    functionLinenumberEnd: 2530
    functionName: json_errdetail
    functionSourceFile: /src/postgres/src/common/jsonapi.c
    functionUses: 2
    functionsReached:
    - GetDatabaseEncodingName
    - json_token_error
    - Assert
    - jsonapi_appendStringInfo
    - psprintf
    - _
    - PQExpBufferBroken
    - jsonapi_makeStringInfo
    - 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: 2426
      start: 2422
    functionDepth: 0
    functionLinenumber: 2422
    functionLinenumberEnd: 2426
    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: 130
    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: 1
    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: 135
    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_create
    - pg_cryptohash_final
    - pg_cryptohash_error
    - pg_cryptohash_update
    - bytesToHex
    - pg_cryptohash_init
    - pg_cryptohash_free
    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_create
    - pg_cryptohash_final
    - pg_cryptohash_error
    - pg_cryptohash_update
    - pg_cryptohash_init
    - pg_cryptohash_free
    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:
    - pg_md5_hash
    - malloc
    - _
    - free
    - memcpy
    - strlen
    - 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:62,1
    - Dst: getaddrinfo
      Src: /src/postgres/src/common/ip.c:65,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: 69
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 69
    functionName: pg_getaddrinfo_all
    functionSourceFile: /src/postgres/src/common/ip.c
    functionUses: 0
    functionsReached:
    - getaddrinfo_unix
    - getaddrinfo
    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:92,1
    - Dst: free
      Src: /src/postgres/src/common/ip.c:93,1
    - Dst: freeaddrinfo
      Src: /src/postgres/src/common/ip.c:100,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - hint_ai_family
    - ai
    argTypes:
    - int
    - struct addrinfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 102
    functionName: pg_freeaddrinfo_all
    functionSourceFile: /src/postgres/src/common/ip.c
    functionUses: 0
    functionsReached:
    - freeaddrinfo
    - free
    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:122,1
    - Dst: getnameinfo
      Src: /src/postgres/src/common/ip.c:127,1
    - Dst: strlcpy
      Src: /src/postgres/src/common/ip.c:135,1
    - Dst: strlcpy
      Src: /src/postgres/src/common/ip.c:137,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: 141
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 141
    functionName: pg_getnameinfo_all
    functionSourceFile: /src/postgres/src/common/ip.c
    functionUses: 0
    functionsReached:
    - getnameinfo_unix
    - strlcpy
    - getnameinfo
    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:162,1
    - Dst: memcpy
      Src: /src/postgres/src/common/ip.c:171,1
    - Dst: calloc
      Src: /src/postgres/src/common/ip.c:182,1
    - Dst: calloc
      Src: /src/postgres/src/common/ip.c:186,1
    - Dst: free
      Src: /src/postgres/src/common/ip.c:189,1
    - Dst: strcpy
      Src: /src/postgres/src/common/ip.c:204,1
    - Dst: strlen
      Src: /src/postgres/src/common/ip.c:218,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 3
    argNames:
    - path
    - hintsp
    - result
    argTypes:
    - char*
    - struct addrinfo*
    - struct addrinfo**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 222
    functionName: getaddrinfo_unix
    functionSourceFile: /src/postgres/src/common/ip.c
    functionUses: 1
    functionsReached:
    - calloc
    - memcpy
    - strlen
    - free
    - 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:242,1
    - Dst: snprintf
      Src: /src/postgres/src/common/ip.c:254,1
    - Dst: snprintf
      Src: /src/postgres/src/common/ip.c:256,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: 262
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 262
    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:
    - pg_wchar
    - pg_wchar*
    - 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(pg_wchar code, const pg_wchar *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_utf8_islegal
    - pg_utf_mblen
    - strlen
    linkageType: ''
    returnType: int
    signature: int pg_utf8_string_len(const char *source)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: pg_is_ascii
      Src: /src/postgres/src/common/saslprep.c:1067,1
    - Dst: STRDUP
      Src: /src/postgres/src/common/saslprep.c:1069,1
    - Dst: pg_utf8_string_len
      Src: /src/postgres/src/common/saslprep.c:1080,1
    - Dst: ALLOC
      Src: /src/postgres/src/common/saslprep.c:1086,1
    - Dst: utf8_to_unicode
      Src: /src/postgres/src/common/saslprep.c:1093,1
    - Dst: pg_utf_mblen
      Src: /src/postgres/src/common/saslprep.c:1094,1
    - Dst: IS_CODE_IN_TABLE
      Src: /src/postgres/src/common/saslprep.c:1112,1
    - Dst: IS_CODE_IN_TABLE
      Src: /src/postgres/src/common/saslprep.c:1114,1
    - Dst: unicode_normalize
      Src: /src/postgres/src/common/saslprep.c:1131,1
    - Dst: IS_CODE_IN_TABLE
      Src: /src/postgres/src/common/saslprep.c:1143,1
    - Dst: IS_CODE_IN_TABLE
      Src: /src/postgres/src/common/saslprep.c:1145,1
    - Dst: IS_CODE_IN_TABLE
      Src: /src/postgres/src/common/saslprep.c:1175,1
    - Dst: IS_CODE_IN_TABLE
      Src: /src/postgres/src/common/saslprep.c:1191,1
    - Dst: IS_CODE_IN_TABLE
      Src: /src/postgres/src/common/saslprep.c:1195,1
    - Dst: IS_CODE_IN_TABLE
      Src: /src/postgres/src/common/saslprep.c:1196,1
    - Dst: unicode_to_utf8
      Src: /src/postgres/src/common/saslprep.c:1208,1
    - Dst: pg_utf_mblen
      Src: /src/postgres/src/common/saslprep.c:1209,1
    - Dst: ALLOC
      Src: /src/postgres/src/common/saslprep.c:1212,1
    - Dst: unicode_to_utf8
      Src: /src/postgres/src/common/saslprep.c:1223,1
    - Dst: pg_utf_mblen
      Src: /src/postgres/src/common/saslprep.c:1224,1
    - Dst: Assert
      Src: /src/postgres/src/common/saslprep.c:1226,1
    - Dst: FREE
      Src: /src/postgres/src/common/saslprep.c:1229,1
    - Dst: FREE
      Src: /src/postgres/src/common/saslprep.c:1230,1
    - Dst: FREE
      Src: /src/postgres/src/common/saslprep.c:1237,1
    - Dst: FREE
      Src: /src/postgres/src/common/saslprep.c:1239,1
    - Dst: FREE
      Src: /src/postgres/src/common/saslprep.c:1245,1
    - Dst: FREE
      Src: /src/postgres/src/common/saslprep.c:1247,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 101
    argCount: 2
    argNames:
    - input
    - output
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1250
      start: 1046
    functionDepth: 4
    functionLinenumber: 1046
    functionLinenumberEnd: 1250
    functionName: pg_saslprep
    functionSourceFile: /src/postgres/src/common/saslprep.c
    functionUses: 0
    functionsReached:
    - Assert
    - FREE
    - pg_is_ascii
    - pg_utf8_string_len
    - IS_CODE_IN_TABLE
    - unicode_normalize
    - utf8_to_unicode
    - STRDUP
    - unicode_to_utf8
    - pg_utf_mblen
    - ALLOC
    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
      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:
    - palloc
    - initStringInfoInternal
    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: 7
    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: 32
    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: 14
    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: 21
    functionsReached:
    - enlargeStringInfo
    - va_end
    - appendStringInfoVA
    - va_start
    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:
    - pvsnprintf
    - Assert
    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: 14
    functionsReached:
    - strlen
    - appendBinaryStringInfo
    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: 8
    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: 9
    functionsReached:
    - enlargeStringInfo
    - memcpy
    - Assert
    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:
    - enlargeStringInfo
    - memcpy
    - Assert
    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: 18
    functionsReached:
    - errmsg
    - Assert
    - ereport
    - fprintf
    - exit
    - elog
    - _
    - repalloc
    - errdetail
    - errcode
    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: 3
    functionsReached:
    - pfree
    - Assert
    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: 53
    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
      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
      Src: /src/postgres/src/common/pgfnames.c:61,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/pgfnames.c:64,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/common/pgfnames.c:69,1
    - Dst: closedir
      Src: /src/postgres/src/common/pgfnames.c:73,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/common/pgfnames.c:74,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 36
    functionDepth: 3
    functionLinenumber: 36
    functionLinenumberEnd: 77
    functionName: pgfnames
    functionSourceFile: /src/postgres/src/common/pgfnames.c
    functionUses: 1
    functionsReached:
    - readdir
    - strcmp
    - closedir
    - pg_log_warning
    - pstrdup
    - opendir
    - repalloc
    - palloc
    linkageType: ''
    returnType: char
    signature: 'char **

      pgfnames(const char *path)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/common/pgfnames.c:91,1
    - Dst: pfree
      Src: /src/postgres/src/common/pgfnames.c:93,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - filenames
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 94
    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: 3
    functionsReached:
    - stat
    - SetDataDirectoryCreatePerm
    linkageType: ''
    returnType: bool
    signature: bool GetDataDirectoryCreatePerm(const char *dataDir)
  - 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:
    - get_include_path
    - get_includeserver_path
    - pstrdup
    - palloc_array
    - cleanup_path
    - strrchr
    - get_etc_path
    - _
    - get_pkginclude_path
    - get_man_path
    - get_pkglib_path
    - strlcpy
    - get_locale_path
    - Assert
    - get_doc_path
    - get_lib_path
    - get_html_path
    - strlcat
    - get_share_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
    - AllocateAndInitializeSid
    - CreateRestrictedToken
    - GetCurrentProcess
    - CreateProcessAsUser
    - GetLastError
    - ZeroMemory
    - FreeSid
    - ResumeThread
    - CloseHandle
    - 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:
    - getenv
    - WaitForSingleObject
    - pg_free
    - pg_strdup
    - GetCommandLine
    - ZeroMemory
    - setenv
    - GetLastError
    - exit
    - pg_fatal
    - CloseHandle
    - strcmp
    - pg_log_error
    - CreateRestrictedProcess
    - GetExitCodeProcess
    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: 67
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 67
    functionName: log_error
    functionSourceFile: /src/postgres/src/common/exec.c
    functionUses: 264
    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: 70
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 70
    functionName: log_error
    functionSourceFile: /src/postgres/src/common/exec.c
    functionUses: 264
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_error(errcodefn, ...)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/common/exec.c:98,1
    - Dst: strlen
      Src: /src/postgres/src/common/exec.c:98,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/common/exec.c:99,1
    - Dst: strlen
      Src: /src/postgres/src/common/exec.c:99,1
    - Dst: strlen
      Src: /src/postgres/src/common/exec.c:99,1
    - Dst: strlcpy
      Src: /src/postgres/src/common/exec.c:101,1
    - Dst: strcat
      Src: /src/postgres/src/common/exec.c:102,1
    - Dst: stat
      Src: /src/postgres/src/common/exec.c:113,1
    - Dst: S_ISREG
      Src: /src/postgres/src/common/exec.c:116,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/common/exec.c:124,1
    - Dst: access
      Src: /src/postgres/src/common/exec.c:133,1
    - Dst: access
      Src: /src/postgres/src/common/exec.c:134,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 142
    functionName: validate_exec
    functionSourceFile: /src/postgres/src/common/exec.c
    functionUses: 1
    functionsReached:
    - strcat
    - S_ISREG
    - stat
    - S_ISDIR
    - access
    - strlcpy
    - pg_strcasecmp
    - strlen
    linkageType: ''
    returnType: int
    signature: int validate_exec(const char *path)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/postgres/src/common/exec.c:167,1
    - Dst: first_dir_separator
      Src: /src/postgres/src/common/exec.c:168,1
    - Dst: validate_exec
      Src: /src/postgres/src/common/exec.c:170,1
    - Dst: normalize_exec_path
      Src: /src/postgres/src/common/exec.c:171,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:173,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:173,1
    - Dst: _
      Src: /src/postgres/src/common/exec.c:174,1
    - Dst: validate_exec
      Src: /src/postgres/src/common/exec.c:180,1
    - Dst: normalize_exec_path
      Src: /src/postgres/src/common/exec.c:181,1
    - Dst: getenv
      Src: /src/postgres/src/common/exec.c:188,1
    - Dst: first_path_var_separator
      Src: /src/postgres/src/common/exec.c:200,1
    - Dst: strlen
      Src: /src/postgres/src/common/exec.c:202,1
    - Dst: strlcpy
      Src: /src/postgres/src/common/exec.c:204,1
    - Dst: Min
      Src: /src/postgres/src/common/exec.c:204,1
    - Dst: join_path_components
      Src: /src/postgres/src/common/exec.c:206,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/common/exec.c:207,1
    - Dst: validate_exec
      Src: /src/postgres/src/common/exec.c:209,1
    - Dst: normalize_exec_path
      Src: /src/postgres/src/common/exec.c:212,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:216,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:216,1
    - Dst: _
      Src: /src/postgres/src/common/exec.c:217,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:224,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:224,1
    - Dst: _
      Src: /src/postgres/src/common/exec.c:225,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 2
    argNames:
    - argv0
    - retpath
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 159
    functionDepth: 3
    functionLinenumber: 159
    functionLinenumberEnd: 227
    functionName: find_my_exec
    functionSourceFile: /src/postgres/src/common/exec.c
    functionUses: 11
    functionsReached:
    - getenv
    - Min
    - first_dir_separator
    - validate_exec
    - normalize_exec_path
    - first_path_var_separator
    - join_path_components
    - strlcpy
    - _
    - strlen
    - canonicalize_path
    - errcode
    - log_error
    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:247,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:251,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/common/exec.c:251,1
    - Dst: _
      Src: /src/postgres/src/common/exec.c:252,1
    - Dst: strlcpy
      Src: /src/postgres/src/common/exec.c:256,1
    - Dst: free
      Src: /src/postgres/src/common/exec.c:257,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/common/exec.c:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 240
    functionDepth: 2
    functionLinenumber: 240
    functionLinenumberEnd: 265
    functionName: normalize_exec_path
    functionSourceFile: /src/postgres/src/common/exec.c
    functionUses: 1
    functionsReached:
    - pg_realpath
    - strlcpy
    - _
    - free
    - canonicalize_path
    - log_error
    - 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:287,1
    - Dst: _fullpath
      Src: /src/postgres/src/common/exec.c:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - fname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 302
    functionName: pg_realpath
    functionSourceFile: /src/postgres/src/common/exec.c
    functionUses: 1
    functionsReached:
    - realpath
    - _fullpath
    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:316,1
    - Dst: last_dir_separator
      Src: /src/postgres/src/common/exec.c:320,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/common/exec.c:321,1
    - Dst: snprintf
      Src: /src/postgres/src/common/exec.c:324,1
    - Dst: strlen
      Src: /src/postgres/src/common/exec.c:324,1
    - Dst: strlen
      Src: /src/postgres/src/common/exec.c:324,1
    - Dst: validate_exec
      Src: /src/postgres/src/common/exec.c:327,1
    - Dst: snprintf
      Src: /src/postgres/src/common/exec.c:330,1
    - Dst: pipe_read_line
      Src: /src/postgres/src/common/exec.c:332,1
    - Dst: strcmp
      Src: /src/postgres/src/common/exec.c:335,1
    - Dst: pfree
      Src: /src/postgres/src/common/exec.c:337,1
    - Dst: pfree
      Src: /src/postgres/src/common/exec.c:341,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - argv0
    - target
    - versionstr
    - retpath
    argTypes:
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 309
    functionDepth: 4
    functionLinenumber: 309
    functionLinenumberEnd: 343
    functionName: find_other_exec
    functionSourceFile: /src/postgres/src/common/exec.c
    functionUses: 9
    functionsReached:
    - pfree
    - find_my_exec
    - validate_exec
    - last_dir_separator
    - snprintf
    - pipe_read_line
    - strcmp
    - canonicalize_path
    - strlen
    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:357,1
    - Dst: popen
      Src: /src/postgres/src/common/exec.c:360,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:362,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:362,1
    - Dst: _
      Src: /src/postgres/src/common/exec.c:363,1
    - Dst: pg_get_line
      Src: /src/postgres/src/common/exec.c:369,1
    - Dst: ferror
      Src: /src/postgres/src/common/exec.c:373,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:374,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/common/exec.c:374,1
    - Dst: _
      Src: /src/postgres/src/common/exec.c:375,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:377,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:377,1
    - Dst: _
      Src: /src/postgres/src/common/exec.c:378,1
    - Dst: pclose_check
      Src: /src/postgres/src/common/exec.c:381,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 351
    functionDepth: 1
    functionLinenumber: 351
    functionLinenumberEnd: 384
    functionName: pipe_read_line
    functionSourceFile: /src/postgres/src/common/exec.c
    functionUses: 3
    functionsReached:
    - fflush
    - pclose_check
    - ferror
    - pg_get_line
    - popen
    - _
    - errcode
    - log_error
    - 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:396,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:404,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:404,1
    - Dst: _
      Src: /src/postgres/src/common/exec.c:405,1
    - Dst: wait_result_to_str
      Src: /src/postgres/src/common/exec.c:409,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:410,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:410,1
    - Dst: pfree
      Src: /src/postgres/src/common/exec.c:412,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - stream
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 390
    functionDepth: 1
    functionLinenumber: 390
    functionLinenumberEnd: 415
    functionName: pclose_check
    functionSourceFile: /src/postgres/src/common/exec.c
    functionUses: 1
    functionsReached:
    - pfree
    - wait_result_to_str
    - pclose
    - _
    - errcode
    - log_error
    linkageType: ''
    returnType: int
    signature: int pclose_check(FILE *stream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/common/exec.c:435,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/common/exec.c:435,1
    - Dst: setlocale
      Src: /src/postgres/src/common/exec.c:437,1
    - Dst: find_my_exec
      Src: /src/postgres/src/common/exec.c:450,1
    - Dst: get_locale_path
      Src: /src/postgres/src/common/exec.c:454,1
    - Dst: bindtextdomain
      Src: /src/postgres/src/common/exec.c:455,1
    - Dst: textdomain
      Src: /src/postgres/src/common/exec.c:456,1
    - Dst: setenv
      Src: /src/postgres/src/common/exec.c:458,1
    - Dst: getenv
      Src: /src/postgres/src/common/exec.c:461,1
    - Dst: get_etc_path
      Src: /src/postgres/src/common/exec.c:463,1
    - Dst: setenv
      Src: /src/postgres/src/common/exec.c:465,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - argv0
    - app
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 428
    functionDepth: 5
    functionLinenumber: 428
    functionLinenumberEnd: 467
    functionName: set_pglocale_pgservice
    functionSourceFile: /src/postgres/src/common/exec.c
    functionUses: 34
    functionsReached:
    - PG_TEXTDOMAIN
    - getenv
    - find_my_exec
    - textdomain
    - setlocale
    - bindtextdomain
    - get_etc_path
    - setenv
    - get_locale_path
    - strcmp
    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:482,1
    - Dst: procctl
      Src: /src/postgres/src/common/exec.c:486,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 478
    functionDepth: 0
    functionLinenumber: 478
    functionLinenumberEnd: 491
    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:535,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/exec.c:537,1
    - Dst: LocalAlloc
      Src: /src/postgres/src/common/exec.c:539,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:542,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:542,1
    - Dst: _
      Src: /src/postgres/src/common/exec.c:543,1
    - Dst: GetTokenInformation
      Src: /src/postgres/src/common/exec.c:547,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:549,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:549,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/exec.c:551,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:557,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:557,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/exec.c:559,1
    - Dst: GetAclInformation
      Src: /src/postgres/src/common/exec.c:565,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:569,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:569,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/exec.c:571,1
    - Dst: GetTokenUser
      Src: /src/postgres/src/common/exec.c:576,1
    - Dst: GetLengthSid
      Src: /src/postgres/src/common/exec.c:581,1
    - Dst: LocalAlloc
      Src: /src/postgres/src/common/exec.c:584,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:587,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:587,1
    - Dst: _
      Src: /src/postgres/src/common/exec.c:588,1
    - Dst: InitializeAcl
      Src: /src/postgres/src/common/exec.c:592,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:594,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:594,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/exec.c:595,1
    - Dst: GetAce
      Src: /src/postgres/src/common/exec.c:602,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:604,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:604,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/exec.c:605,1
    - Dst: AddAce
      Src: /src/postgres/src/common/exec.c:609,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:611,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:611,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/exec.c:612,1
    - Dst: AddAccessAllowedAceEx
      Src: /src/postgres/src/common/exec.c:618,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:620,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:620,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/exec.c:622,1
    - Dst: SetTokenInformation
      Src: /src/postgres/src/common/exec.c:629,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:631,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:631,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/exec.c:633,1
    - Dst: LocalFree
      Src: /src/postgres/src/common/exec.c:641,1
    - Dst: LocalFree
      Src: /src/postgres/src/common/exec.c:644,1
    - Dst: LocalFree
      Src: /src/postgres/src/common/exec.c:647,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 73
    argCount: 1
    argNames:
    - hToken
    argTypes:
    - HANDLE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 518
    functionDepth: 1
    functionLinenumber: 518
    functionLinenumberEnd: 650
    functionName: AddUserToTokenDacl
    functionSourceFile: /src/postgres/src/common/exec.c
    functionUses: 2
    functionsReached:
    - GetTokenUser
    - SetTokenInformation
    - GetAce
    - GetAclInformation
    - LocalFree
    - AddAce
    - GetLastError
    - AddAccessAllowedAceEx
    - InitializeAcl
    - GetTokenInformation
    - _
    - GetLengthSid
    - LocalAlloc
    - errcode
    - log_error
    linkageType: ''
    returnType: BOOL
    signature: BOOL AddUserToTokenDacl(HANDLE hToken)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GetTokenInformation
      Src: /src/postgres/src/common/exec.c:667,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/exec.c:673,1
    - Dst: LocalAlloc
      Src: /src/postgres/src/common/exec.c:675,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:679,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:679,1
    - Dst: _
      Src: /src/postgres/src/common/exec.c:680,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:686,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:686,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/exec.c:688,1
    - Dst: GetTokenInformation
      Src: /src/postgres/src/common/exec.c:693,1
    - Dst: LocalFree
      Src: /src/postgres/src/common/exec.c:699,1
    - Dst: log_error
      Src: /src/postgres/src/common/exec.c:702,1
    - Dst: errcode
      Src: /src/postgres/src/common/exec.c:702,1
    - Dst: GetLastError
      Src: /src/postgres/src/common/exec.c:704,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - hToken
    - ppTokenUser
    argTypes:
    - HANDLE
    - PTOKEN_USER*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 660
    functionDepth: 1
    functionLinenumber: 660
    functionLinenumberEnd: 710
    functionName: GetTokenUser
    functionSourceFile: /src/postgres/src/common/exec.c
    functionUses: 1
    functionsReached:
    - LocalFree
    - GetLastError
    - GetTokenInformation
    - _
    - LocalAlloc
    - errcode
    - log_error
    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:30,1
    - Dst: fprintf
      Src: /src/postgres/src/common/fe_memutils.c:35,1
    - Dst: _
      Src: /src/postgres/src/common/fe_memutils.c:35,1
    - Dst: exit
      Src: /src/postgres/src/common/fe_memutils.c:36,1
    - Dst: MemSet
      Src: /src/postgres/src/common/fe_memutils.c:42,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - size
    - flags
    argTypes:
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 44
    functionName: pg_malloc_internal
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 0
    functionsReached:
    - malloc
    - fprintf
    - exit
    - MemSet
    - _
    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:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 46
    functionDepth: 2
    functionLinenumber: 46
    functionLinenumberEnd: 50
    functionName: pg_malloc
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 172
    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: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_malloc0
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 77
    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:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - size
    - flags
    argTypes:
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 62
    functionName: pg_malloc_extended
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 2
    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:72,1
    - Dst: fprintf
      Src: /src/postgres/src/common/fe_memutils.c:75,1
    - Dst: _
      Src: /src/postgres/src/common/fe_memutils.c:75,1
    - Dst: exit
      Src: /src/postgres/src/common/fe_memutils.c:76,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ptr
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 79
    functionName: pg_realloc
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 21
    functionsReached:
    - realloc
    - exit
    - _
    - 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:91,1
    - Dst: _
      Src: /src/postgres/src/common/fe_memutils.c:92,1
    - Dst: exit
      Src: /src/postgres/src/common/fe_memutils.c:93,1
    - Dst: strdup
      Src: /src/postgres/src/common/fe_memutils.c:95,1
    - Dst: fprintf
      Src: /src/postgres/src/common/fe_memutils.c:98,1
    - Dst: _
      Src: /src/postgres/src/common/fe_memutils.c:98,1
    - Dst: exit
      Src: /src/postgres/src/common/fe_memutils.c:99,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - in
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 102
    functionName: pg_strdup
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 246
    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:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 108
    functionName: pg_free
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 102
    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:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - size
    argTypes:
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 114
    functionDepth: 2
    functionLinenumber: 114
    functionLinenumberEnd: 118
    functionName: palloc
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 67
    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: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: palloc0
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 50
    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:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - size
    - flags
    argTypes:
    - Size
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 126
    functionDepth: 2
    functionLinenumber: 126
    functionLinenumberEnd: 130
    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:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pointer
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 132
    functionDepth: 2
    functionLinenumber: 132
    functionLinenumberEnd: 136
    functionName: pfree
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 133
    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:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - in
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 142
    functionName: pstrdup
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 62
    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:152,1
    - Dst: _
      Src: /src/postgres/src/common/fe_memutils.c:153,1
    - Dst: exit
      Src: /src/postgres/src/common/fe_memutils.c:154,1
    - Dst: strnlen
      Src: /src/postgres/src/common/fe_memutils.c:157,1
    - Dst: malloc
      Src: /src/postgres/src/common/fe_memutils.c:158,1
    - Dst: fprintf
      Src: /src/postgres/src/common/fe_memutils.c:161,1
    - Dst: _
      Src: /src/postgres/src/common/fe_memutils.c:161,1
    - Dst: exit
      Src: /src/postgres/src/common/fe_memutils.c:162,1
    - Dst: memcpy
      Src: /src/postgres/src/common/fe_memutils.c:165,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - in
    - size
    argTypes:
    - char*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 169
    functionName: pnstrdup
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 6
    functionsReached:
    - malloc
    - fprintf
    - exit
    - _
    - memcpy
    - strnlen
    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:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pointer
    - size
    argTypes:
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 171
    functionDepth: 2
    functionLinenumber: 171
    functionLinenumberEnd: 175
    functionName: repalloc
    functionSourceFile: /src/postgres/src/common/fe_memutils.c
    functionUses: 6
    functionsReached:
    - pg_realloc
    linkageType: ''
    returnType: void
    signature: 'void *

      repalloc(void *pointer, Size size)'
  - 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_free
    - CHECK_FOR_INTERRUPTS
    - pg_hmac_update
    - pg_hmac_error
    - pg_hmac_init
    - pg_hton32
    - pg_hmac_create
    - memcpy
    - pg_hmac_final
    - strlen
    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_create
    - pg_cryptohash_final
    - pg_cryptohash_error
    - pg_cryptohash_update
    - pg_cryptohash_init
    - pg_cryptohash_free
    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_free
    - pg_hmac_update
    - pg_hmac_error
    - pg_hmac_init
    - pg_hmac_create
    - pg_hmac_final
    - strlen
    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_free
    - pg_hmac_update
    - pg_hmac_error
    - pg_hmac_init
    - pg_hmac_create
    - pg_hmac_final
    - strlen
    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:
    - scram_ClientKey
    - Assert
    - malloc
    - sprintf
    - pg_b64_encode
    - pg_b64_enc_len
    - elog
    - scram_ServerKey
    - scram_H
    - scram_SaltedPassword
    - _
    - free
    - palloc
    - strlen
    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:
    - strcmp
    - strlen
    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
    - malloc
    - snprintf
    - palloc_extended
    - strlen
    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: 2
    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: 9
    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: 88
    functionsReached:
    - pfree
    - va_end
    - pvsnprintf
    - palloc
    - va_start
    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:
    - errmsg
    - vsnprintf
    - ereport
    - fprintf
    - unlikely
    - exit
    - elog
    - _
    - errcode
    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: 8
    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: 5
    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: 6
    functionsReached:
    - xoroshiro128ss
    - pg_leftmost_one_pos64
    - likely
    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: 0
    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:
    - UINT64CONST
    - xoroshiro128ss
    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:
    - pg_prng_uint64_range
    - likely
    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: 3
    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: 1
    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:
    - log
    - sqrt
    - pg_prng_double
    - sin
    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:
    - GetScanKeyword
    - ScanKeywordList*::hash
    - strlen
    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:
    - initStringInfo
    - pg_get_line_append
    - pfree
    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: 5
    functionsReached:
    - pg_get_line_append
    - resetStringInfo
    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:
    - enlargeStringInfo
    - ferror
    - sigsetjmp
    - fgets
    - strlen
    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:
    - memset
    - Assert
    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:
    - memset
    - Assert
    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
      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:
    - palloc
    - blockreftable_create
    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
    - memcpy
    - blockreftable_insert
    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:
    - memcpy
    - MemoryContextSwitchTo
    - BlockRefTableEntryMarkBlockModified
    - blockreftable_insert
    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:
    - memcpy
    - Assert
    - blockreftable_lookup
    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
      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
    - Assert
    - qsort
    - BlockRefTableFileTerminate
    - memset
    - blockreftable_lookup
    - INIT_CRC32C
    - BlockRefTableWrite
    - memcpy
    - palloc
    - blockreftable_start_iterate
    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
      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:
    - error_callback
    - INIT_CRC32C
    - BlockRefTableRead
    - palloc0
    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: 4
    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: pfree
      Src: /src/postgres/src/common/blkreftable.c:662,1
    - Dst: palloc
      Src: /src/postgres/src/common/blkreftable.c:663,1
    - Dst: BlockRefTableRead
      Src: /src/postgres/src/common/blkreftable.c:664,1
    - Dst: memcpy
      Src: /src/postgres/src/common/blkreftable.c:672,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 4
    argNames:
    - reader
    - rlocator
    - forknum
    - limit_block
    argTypes:
    - BlockRefTableReader*
    - RelFileLocator*
    - ForkNumber*
    - BlockNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 612
    functionDepth: 1
    functionLinenumber: 612
    functionLinenumberEnd: 676
    functionName: BlockRefTableReaderNextRelation
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - palloc
    - memcmp
    - FIN_CRC32C
    - EQ_CRC32C
    - BlockRefTableRead
    - memcpy
    - BlockRefTableReader*::error_callback
    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:696,1
    - Dst: BlockRefTableRead
      Src: /src/postgres/src/common/blkreftable.c:760,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 29
    argCount: 3
    argNames:
    - reader
    - blocks
    - nblocks
    argTypes:
    - BlockRefTableReader*
    - BlockNumber*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 688
    functionDepth: 1
    functionLinenumber: 688
    functionLinenumberEnd: 767
    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:777,1
    - Dst: pfree
      Src: /src/postgres/src/common/blkreftable.c:780,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - reader
    argTypes:
    - BlockRefTableReader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 772
    functionDepth: 0
    functionLinenumber: 772
    functionLinenumberEnd: 781
    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
      Src: /src/postgres/src/common/blkreftable.c:797,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/common/blkreftable.c:800,1
    - Dst: BlockRefTableWrite
      Src: /src/postgres/src/common/blkreftable.c:803,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: 806
      start: 789
    functionDepth: 1
    functionLinenumber: 789
    functionLinenumberEnd: 806
    functionName: CreateBlockRefTableWriter
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 0
    functionsReached:
    - INIT_CRC32C
    - palloc0
    - BlockRefTableWrite
    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:833,1
    - Dst: BlockRefTableWrite
      Src: /src/postgres/src/common/blkreftable.c:838,1
    - Dst: BlockRefTableWrite
      Src: /src/postgres/src/common/blkreftable.c:846,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - writer
    - entry
    argTypes:
    - BlockRefTableWriter*
    - BlockRefTableEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 816
    functionDepth: 1
    functionLinenumber: 816
    functionLinenumberEnd: 849
    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:857,1
    - Dst: pfree
      Src: /src/postgres/src/common/blkreftable.c:858,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - writer
    argTypes:
    - BlockRefTableWriter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 854
    functionDepth: 1
    functionLinenumber: 854
    functionLinenumberEnd: 859
    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
      Src: /src/postgres/src/common/blkreftable.c:877,1
    - Dst: memcpy
      Src: /src/postgres/src/common/blkreftable.c:879,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - rlocator
    - forknum
    argTypes:
    - RelFileLocator
    - ForkNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 874
    functionDepth: 0
    functionLinenumber: 874
    functionLinenumberEnd: 884
    functionName: CreateBlockRefTableEntry
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 0
    functionsReached:
    - memcpy
    - palloc0
    linkageType: ''
    returnType: BlockRefTableEntry
    signature: 'BlockRefTableEntry *

      CreateBlockRefTableEntry(RelFileLocator rlocator, ForkNumber forknum)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/blkreftable.c:952,1
    - Dst: Assert
      Src: /src/postgres/src/common/blkreftable.c:956,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - entry
    - limit_block
    argTypes:
    - BlockRefTableEntry*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 893
    functionDepth: 1
    functionLinenumber: 893
    functionLinenumberEnd: 959
    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:993,1
    - Dst: palloc0
      Src: /src/postgres/src/common/blkreftable.c:1000,1
    - Dst: palloc0
      Src: /src/postgres/src/common/blkreftable.c:1001,1
    - Dst: palloc0
      Src: /src/postgres/src/common/blkreftable.c:1003,1
    - Dst: repalloc
      Src: /src/postgres/src/common/blkreftable.c:1007,1
    - Dst: memset
      Src: /src/postgres/src/common/blkreftable.c:1009,1
    - Dst: repalloc
      Src: /src/postgres/src/common/blkreftable.c:1011,1
    - Dst: memset
      Src: /src/postgres/src/common/blkreftable.c:1013,1
    - Dst: repalloc
      Src: /src/postgres/src/common/blkreftable.c:1015,1
    - Dst: memset
      Src: /src/postgres/src/common/blkreftable.c:1017,1
    - Dst: palloc
      Src: /src/postgres/src/common/blkreftable.c:1032,1
    - Dst: palloc0
      Src: /src/postgres/src/common/blkreftable.c:1073,1
    - Dst: pfree
      Src: /src/postgres/src/common/blkreftable.c:1089,1
    - Dst: Assert
      Src: /src/postgres/src/common/blkreftable.c:1105,1
    - Dst: repalloc
      Src: /src/postgres/src/common/blkreftable.c:1106,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 56
    argCount: 3
    argNames:
    - entry
    - forknum
    - blknum
    argTypes:
    - BlockRefTableEntry*
    - ForkNumber
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1115
      start: 964
    functionDepth: 1
    functionLinenumber: 964
    functionLinenumberEnd: 1115
    functionName: BlockRefTableEntryMarkBlockModified
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - memset
    - palloc0
    - Max
    - repalloc
    - palloc
    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:1126,1
    - Dst: pfree
      Src: /src/postgres/src/common/blkreftable.c:1132,1
    - Dst: pfree
      Src: /src/postgres/src/common/blkreftable.c:1138,1
    - Dst: pfree
      Src: /src/postgres/src/common/blkreftable.c:1142,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - entry
    argTypes:
    - BlockRefTableEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1121
    functionDepth: 0
    functionLinenumber: 1121
    functionLinenumberEnd: 1143
    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: 1178
      start: 1151
    functionDepth: 0
    functionLinenumber: 1151
    functionLinenumberEnd: 1178
    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:1186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - BlockRefTableBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1188
      start: 1183
    functionDepth: 0
    functionLinenumber: 1183
    functionLinenumberEnd: 1188
    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:1209,1
    - Dst: memcpy
      Src: /src/postgres/src/common/blkreftable.c:1211,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/common/blkreftable.c:1212,1
    - Dst: BlockRefTableBuffer*::io_callback
      Src: /src/postgres/src/common/blkreftable.c:1226,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/common/blkreftable.c:1228,1
    - Dst: BlockRefTableReader*::error_callback
      Src: /src/postgres/src/common/blkreftable.c:1234,1
    - Dst: BlockRefTableBuffer*::io_callback
      Src: /src/postgres/src/common/blkreftable.c:1243,1
    - Dst: BlockRefTableReader*::error_callback
      Src: /src/postgres/src/common/blkreftable.c:1249,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 3
    argNames:
    - reader
    - data
    - length
    argTypes:
    - BlockRefTableReader*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1254
      start: 1195
    functionDepth: 1
    functionLinenumber: 1195
    functionLinenumberEnd: 1254
    functionName: BlockRefTableRead
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 3
    functionsReached:
    - COMP_CRC32C
    - Min
    - BlockRefTableBuffer*::io_callback
    - memcpy
    - 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:1264,1
    - Dst: BlockRefTableBuffer*::io_callback
      Src: /src/postgres/src/common/blkreftable.c:1269,1
    - Dst: BlockRefTableBuffer*::io_callback
      Src: /src/postgres/src/common/blkreftable.c:1277,1
    - Dst: memcpy
      Src: /src/postgres/src/common/blkreftable.c:1282,1
    - Dst: Assert
      Src: /src/postgres/src/common/blkreftable.c:1284,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - buffer
    - data
    - length
    argTypes:
    - BlockRefTableBuffer*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1285
      start: 1260
    functionDepth: 1
    functionLinenumber: 1260
    functionLinenumberEnd: 1285
    functionName: BlockRefTableWrite
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 3
    functionsReached:
    - COMP_CRC32C
    - memcpy
    - BlockRefTableBuffer*::io_callback
    - Assert
    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:1298,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/common/blkreftable.c:1306,1
    - Dst: BlockRefTableWrite
      Src: /src/postgres/src/common/blkreftable.c:1307,1
    - Dst: BlockRefTableFlush
      Src: /src/postgres/src/common/blkreftable.c:1310,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - BlockRefTableBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1311
      start: 1291
    functionDepth: 2
    functionLinenumber: 1291
    functionLinenumberEnd: 1311
    functionName: BlockRefTableFileTerminate
    functionSourceFile: /src/postgres/src/common/blkreftable.c
    functionUses: 2
    functionsReached:
    - FIN_CRC32C
    - BlockRefTableWrite
    - 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: 0
    functionsReached:
    - memset
    - pglz_out_literal
    - pglz_hist_add
    - pglz_out_tag
    - pglz_find_match
    linkageType: ''
    returnType: int32
    signature: "int32 pglz_compress(const char *source, int32 slen, char *dest,\n\t\t\t
      \ const PGLZ_Strategy *strategy)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/common/pg_lzcompress.c:745,1
    - Dst: Min
      Src: /src/postgres/src/common/pg_lzcompress.c:752,1
    - Dst: memcpy
      Src: /src/postgres/src/common/pg_lzcompress.c:769,1
    - Dst: memcpy
      Src: /src/postgres/src/common/pg_lzcompress.c:799,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 33
    argCount: 5
    argNames:
    - source
    - slen
    - dest
    - rawsize
    - check_complete
    argTypes:
    - char*
    - int32
    - char*
    - int32
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 691
    functionDepth: 1
    functionLinenumber: 691
    functionLinenumberEnd: 828
    functionName: pglz_decompress
    functionSourceFile: /src/postgres/src/common/pg_lzcompress.c
    functionUses: 0
    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:873,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - rawsize
    - total_compressed_size
    argTypes:
    - int32
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 845
    functionDepth: 0
    functionLinenumber: 845
    functionLinenumberEnd: 876
    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: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/common/compression.c:51,1
    - Dst: strcmp
      Src: /src/postgres/src/common/compression.c:53,1
    - Dst: strcmp
      Src: /src/postgres/src/common/compression.c:55,1
    - Dst: strcmp
      Src: /src/postgres/src/common/compression.c:57,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - name
    - algorithm
    argTypes:
    - char*
    - pg_compress_algorithm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 62
    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:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - algorithm
    argTypes:
    - pg_compress_algorithm
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 85
    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:132,1
    - Dst: _
      Src: /src/postgres/src/common/compression.c:132,1
    - Dst: psprintf
      Src: /src/postgres/src/common/compression.c:141,1
    - Dst: _
      Src: /src/postgres/src/common/compression.c:141,1
    - Dst: psprintf
      Src: /src/postgres/src/common/compression.c:150,1
    - Dst: _
      Src: /src/postgres/src/common/compression.c:150,1
    - Dst: strtol
      Src: /src/postgres/src/common/compression.c:161,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/compression.c:205,1
    - Dst: _
      Src: /src/postgres/src/common/compression.c:205,1
    - Dst: palloc
      Src: /src/postgres/src/common/compression.c:210,1
    - Dst: memcpy
      Src: /src/postgres/src/common/compression.c:211,1
    - Dst: palloc
      Src: /src/postgres/src/common/compression.c:217,1
    - Dst: memcpy
      Src: /src/postgres/src/common/compression.c:218,1
    - Dst: strcmp
      Src: /src/postgres/src/common/compression.c:223,1
    - Dst: expect_integer_value
      Src: /src/postgres/src/common/compression.c:225,1
    - Dst: strcmp
      Src: /src/postgres/src/common/compression.c:232,1
    - Dst: expect_integer_value
      Src: /src/postgres/src/common/compression.c:234,1
    - Dst: strcmp
      Src: /src/postgres/src/common/compression.c:237,1
    - Dst: expect_boolean_value
      Src: /src/postgres/src/common/compression.c:239,1
    - Dst: psprintf
      Src: /src/postgres/src/common/compression.c:244,1
    - Dst: _
      Src: /src/postgres/src/common/compression.c:244,1
    - Dst: pfree
      Src: /src/postgres/src/common/compression.c:247,1
    - Dst: pfree
      Src: /src/postgres/src/common/compression.c:249,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: 266
      start: 106
    functionDepth: 2
    functionLinenumber: 106
    functionLinenumberEnd: 266
    functionName: parse_compress_specification
    functionSourceFile: /src/postgres/src/common/compression.c
    functionUses: 3
    functionsReached:
    - strcmp
    - pfree
    - expect_boolean_value
    - pstrdup
    - strtol
    - expect_integer_value
    - _
    - memcpy
    - palloc
    - psprintf
    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:283,1
    - Dst: _
      Src: /src/postgres/src/common/compression.c:283,1
    - Dst: strtol
      Src: /src/postgres/src/common/compression.c:288,1
    - Dst: psprintf
      Src: /src/postgres/src/common/compression.c:292,1
    - Dst: _
      Src: /src/postgres/src/common/compression.c:292,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - keyword
    - value
    - result
    argTypes:
    - char*
    - char*
    - pg_compress_specification*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 274
    functionDepth: 2
    functionLinenumber: 274
    functionLinenumberEnd: 297
    functionName: expect_integer_value
    functionSourceFile: /src/postgres/src/common/compression.c
    functionUses: 1
    functionsReached:
    - strtol
    - _
    - psprintf
    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:316,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/common/compression.c:318,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/common/compression.c:320,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/common/compression.c:323,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/common/compression.c:325,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/common/compression.c:327,1
    - Dst: psprintf
      Src: /src/postgres/src/common/compression.c:331,1
    - Dst: _
      Src: /src/postgres/src/common/compression.c:331,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 3
    argNames:
    - keyword
    - value
    - result
    argTypes:
    - char*
    - char*
    - pg_compress_specification*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 310
    functionDepth: 2
    functionLinenumber: 310
    functionLinenumberEnd: 334
    functionName: expect_boolean_value
    functionSourceFile: /src/postgres/src/common/compression.c
    functionUses: 1
    functionsReached:
    - pg_strcasecmp
    - _
    - psprintf
    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:372,1
    - Dst: ZSTD_minCLevel
      Src: /src/postgres/src/common/compression.c:373,1
    - Dst: psprintf
      Src: /src/postgres/src/common/compression.c:379,1
    - Dst: _
      Src: /src/postgres/src/common/compression.c:379,1
    - Dst: get_compress_algorithm_name
      Src: /src/postgres/src/common/compression.c:380,1
    - Dst: psprintf
      Src: /src/postgres/src/common/compression.c:386,1
    - Dst: _
      Src: /src/postgres/src/common/compression.c:386,1
    - Dst: get_compress_algorithm_name
      Src: /src/postgres/src/common/compression.c:387,1
    - Dst: psprintf
      Src: /src/postgres/src/common/compression.c:397,1
    - Dst: _
      Src: /src/postgres/src/common/compression.c:397,1
    - Dst: get_compress_algorithm_name
      Src: /src/postgres/src/common/compression.c:398,1
    - Dst: psprintf
      Src: /src/postgres/src/common/compression.c:408,1
    - Dst: _
      Src: /src/postgres/src/common/compression.c:408,1
    - Dst: get_compress_algorithm_name
      Src: /src/postgres/src/common/compression.c:409,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 31
    argCount: 1
    argNames:
    - spec
    argTypes:
    - pg_compress_specification*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 343
    functionDepth: 2
    functionLinenumber: 343
    functionLinenumberEnd: 413
    functionName: validate_compress_specification
    functionSourceFile: /src/postgres/src/common/compression.c
    functionUses: 3
    functionsReached:
    - ZSTD_maxCLevel
    - _
    - get_compress_algorithm_name
    - psprintf
    - ZSTD_minCLevel
    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:438,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/compression.c:443,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/compression.c:448,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/compression.c:449,1
    - Dst: strchr
      Src: /src/postgres/src/common/compression.c:458,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/compression.c:461,1
    - Dst: palloc
      Src: /src/postgres/src/common/compression.c:468,1
    - Dst: memcpy
      Src: /src/postgres/src/common/compression.c:469,1
    - Dst: pstrdup
      Src: /src/postgres/src/common/compression.c:473,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 3
    argNames:
    - option
    - algorithm
    - detail
    argTypes:
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 425
    functionDepth: 0
    functionLinenumber: 425
    functionLinenumberEnd: 475
    functionName: parse_compress_options
    functionSourceFile: /src/postgres/src/common/compression.c
    functionUses: 4
    functionsReached:
    - pstrdup
    - strtol
    - memcpy
    - palloc
    - strchr
    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:
    - getpwuid
    - GetUserName
    - GetLastError
    - strerror
    - geteuid
    - _
    - psprintf
    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:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - capacity
    - compare
    - arg
    argTypes:
    - int
    - binaryheap_comparator
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 54
    functionName: binaryheap_allocate
    functionSourceFile: /src/postgres/src/common/binaryheap.c
    functionUses: 2
    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: 67
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 67
    functionName: binaryheap_reset
    functionSourceFile: /src/postgres/src/common/binaryheap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void binaryheap_reset(binaryheap *heap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/common/binaryheap.c:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - heap
    argTypes:
    - binaryheap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 78
    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: 93
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 93
    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: 99
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 99
    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: 105
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 105
    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:121,1
    - Dst: elog
      Src: /src/postgres/src/common/binaryheap.c:123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - heap
    - d
    argTypes:
    - binaryheap*
    - bh_node_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 129
    functionName: binaryheap_add_unordered
    functionSourceFile: /src/postgres/src/common/binaryheap.c
    functionUses: 1
    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:142,1
    - Dst: sift_down
      Src: /src/postgres/src/common/binaryheap.c:143,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - heap
    argTypes:
    - binaryheap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 145
    functionName: binaryheap_build
    functionSourceFile: /src/postgres/src/common/binaryheap.c
    functionUses: 1
    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:159,1
    - Dst: elog
      Src: /src/postgres/src/common/binaryheap.c:161,1
    - Dst: sift_up
      Src: /src/postgres/src/common/binaryheap.c:166,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - heap
    - d
    argTypes:
    - binaryheap*
    - bh_node_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 167
    functionName: binaryheap_add
    functionSourceFile: /src/postgres/src/common/binaryheap.c
    functionUses: 3
    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:179,1
    - Dst: binaryheap_empty
      Src: /src/postgres/src/common/binaryheap.c:179,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - heap
    argTypes:
    - binaryheap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 181
    functionName: binaryheap_first
    functionSourceFile: /src/postgres/src/common/binaryheap.c
    functionUses: 0
    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:196,1
    - Dst: binaryheap_empty
      Src: /src/postgres/src/common/binaryheap.c:196,1
    - Dst: sift_down
      Src: /src/postgres/src/common/binaryheap.c:213,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - heap
    argTypes:
    - binaryheap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 216
    functionName: binaryheap_remove_first
    functionSourceFile: /src/postgres/src/common/binaryheap.c
    functionUses: 1
    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:229,1
    - Dst: binaryheap_empty
      Src: /src/postgres/src/common/binaryheap.c:229,1
    - Dst: Assert
      Src: /src/postgres/src/common/binaryheap.c:230,1
    - Dst: binaryheap*::bh_compare
      Src: /src/postgres/src/common/binaryheap.c:233,1
    - Dst: sift_up
      Src: /src/postgres/src/common/binaryheap.c:242,1
    - Dst: sift_down
      Src: /src/postgres/src/common/binaryheap.c:244,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - heap
    - n
    argTypes:
    - binaryheap*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 245
    functionName: binaryheap_remove_node
    functionSourceFile: /src/postgres/src/common/binaryheap.c
    functionUses: 1
    functionsReached:
    - Assert
    - binaryheap*::bh_compare
    - sift_down
    - binaryheap_empty
    - 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:257,1
    - Dst: binaryheap_empty
      Src: /src/postgres/src/common/binaryheap.c:257,1
    - Dst: sift_down
      Src: /src/postgres/src/common/binaryheap.c:262,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - heap
    - d
    argTypes:
    - binaryheap*
    - bh_node_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 263
    functionName: binaryheap_replace_first
    functionSourceFile: /src/postgres/src/common/binaryheap.c
    functionUses: 0
    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:289,1
    - Dst: binaryheap*::bh_compare
      Src: /src/postgres/src/common/binaryheap.c:291,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - heap
    - node_off
    argTypes:
    - binaryheap*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 306
    functionName: sift_up
    functionSourceFile: /src/postgres/src/common/binaryheap.c
    functionUses: 2
    functionsReached:
    - binaryheap*::bh_compare
    - parent_offset
    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:324,1
    - Dst: right_offset
      Src: /src/postgres/src/common/binaryheap.c:325,1
    - Dst: binaryheap*::bh_compare
      Src: /src/postgres/src/common/binaryheap.c:330,1
    - Dst: binaryheap*::bh_compare
      Src: /src/postgres/src/common/binaryheap.c:340,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 2
    argNames:
    - heap
    - node_off
    argTypes:
    - binaryheap*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 354
    functionName: sift_down
    functionSourceFile: /src/postgres/src/common/binaryheap.c
    functionUses: 4
    functionsReached:
    - binaryheap*::bh_compare
    - left_offset
    - right_offset
    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:
    - getenv
    - _fileno
    - fflush
    - pg_strip_crlf
    - fputs
    - fclose
    - pg_strdup
    - tcsetattr
    - pg_get_line
    - GetConsoleMode
    - fopen
    - SetConsoleMode
    - fileno
    - tcgetattr
    - _get_osfhandle
    - _
    - strcmp
    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:56,1
    - Dst: get_controlfile_by_exact_path
      Src: /src/postgres/src/common/controldata_utils.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - DataDir
    - crc_ok_p
    argTypes:
    - char*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 59
    functionName: get_controlfile
    functionSourceFile: /src/postgres/src/common/controldata_utils.c
    functionUses: 5
    functionsReached:
    - snprintf
    - get_controlfile_by_exact_path
    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:79,1
    - Dst: palloc_object
      Src: /src/postgres/src/common/controldata_utils.c:81,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/common/controldata_utils.c:84,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/common/controldata_utils.c:90,1
    - Dst: ereport
      Src: /src/postgres/src/common/controldata_utils.c:91,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/common/controldata_utils.c:92,1
    - Dst: errmsg
      Src: /src/postgres/src/common/controldata_utils.c:93,1
    - Dst: open
      Src: /src/postgres/src/common/controldata_utils.c:96,1
    - Dst: pg_fatal
      Src: /src/postgres/src/common/controldata_utils.c:97,1
    - Dst: read
      Src: /src/postgres/src/common/controldata_utils.c:101,1
    - Dst: ereport
      Src: /src/postgres/src/common/controldata_utils.c:106,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/common/controldata_utils.c:107,1
    - Dst: errmsg
      Src: /src/postgres/src/common/controldata_utils.c:108,1
    - Dst: pg_fatal
      Src: /src/postgres/src/common/controldata_utils.c:110,1
    - Dst: ereport
      Src: /src/postgres/src/common/controldata_utils.c:114,1
    - Dst: errcode
      Src: /src/postgres/src/common/controldata_utils.c:115,1
    - Dst: errmsg
      Src: /src/postgres/src/common/controldata_utils.c:116,1
    - Dst: pg_fatal
      Src: /src/postgres/src/common/controldata_utils.c:119,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/common/controldata_utils.c:125,1
    - Dst: ereport
      Src: /src/postgres/src/common/controldata_utils.c:126,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/common/controldata_utils.c:127,1
    - Dst: errmsg
      Src: /src/postgres/src/common/controldata_utils.c:128,1
    - Dst: close
      Src: /src/postgres/src/common/controldata_utils.c:131,1
    - Dst: pg_fatal
      Src: /src/postgres/src/common/controldata_utils.c:132,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/common/controldata_utils.c:136,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/common/controldata_utils.c:137,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/common/controldata_utils.c:140,1
    - Dst: EQ_CRC32C
      Src: /src/postgres/src/common/controldata_utils.c:142,1
    - Dst: EQ_CRC32C
      Src: /src/postgres/src/common/controldata_utils.c:154,1
    - Dst: pg_usleep
      Src: /src/postgres/src/common/controldata_utils.c:159,1
    - Dst: elog
      Src: /src/postgres/src/common/controldata_utils.c:168,1
    - Dst: _
      Src: /src/postgres/src/common/controldata_utils.c:168,1
    - Dst: pg_log_warning
      Src: /src/postgres/src/common/controldata_utils.c:170,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 2
    argNames:
    - ControlFilePath
    - crc_ok_p
    argTypes:
    - char*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 177
    functionName: get_controlfile_by_exact_path
    functionSourceFile: /src/postgres/src/common/controldata_utils.c
    functionUses: 3
    functionsReached:
    - pg_log_warning
    - pg_usleep
    - errcode_for_file_access
    - COMP_CRC32C
    - FIN_CRC32C
    - EQ_CRC32C
    - read
    - _
    - errmsg
    - CloseTransientFile
    - close
    - elog
    - pg_fatal
    - palloc_object
    - Assert
    - INIT_CRC32C
    - open
    - ereport
    - OpenTransientFile
    - errcode
    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:197,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/common/controldata_utils.c:200,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/common/controldata_utils.c:201,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/common/controldata_utils.c:204,1
    - Dst: memset
      Src: /src/postgres/src/common/controldata_utils.c:211,1
    - Dst: memcpy
      Src: /src/postgres/src/common/controldata_utils.c:212,1
    - Dst: snprintf
      Src: /src/postgres/src/common/controldata_utils.c:214,1
    - Dst: BasicOpenFile
      Src: /src/postgres/src/common/controldata_utils.c:222,1
    - Dst: ereport
      Src: /src/postgres/src/common/controldata_utils.c:223,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/common/controldata_utils.c:224,1
    - Dst: errmsg
      Src: /src/postgres/src/common/controldata_utils.c:225,1
    - Dst: open
      Src: /src/postgres/src/common/controldata_utils.c:228,1
    - Dst: pg_fatal
      Src: /src/postgres/src/common/controldata_utils.c:230,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/common/controldata_utils.c:235,1
    - Dst: write
      Src: /src/postgres/src/common/controldata_utils.c:237,1
    - Dst: ereport
      Src: /src/postgres/src/common/controldata_utils.c:244,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/common/controldata_utils.c:245,1
    - Dst: errmsg
      Src: /src/postgres/src/common/controldata_utils.c:246,1
    - Dst: pg_fatal
      Src: /src/postgres/src/common/controldata_utils.c:249,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/common/controldata_utils.c:253,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/common/controldata_utils.c:259,1
    - Dst: pg_fsync
      Src: /src/postgres/src/common/controldata_utils.c:260,1
    - Dst: ereport
      Src: /src/postgres/src/common/controldata_utils.c:261,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/common/controldata_utils.c:262,1
    - Dst: errmsg
      Src: /src/postgres/src/common/controldata_utils.c:263,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/common/controldata_utils.c:265,1
    - Dst: fsync
      Src: /src/postgres/src/common/controldata_utils.c:267,1
    - Dst: pg_fatal
      Src: /src/postgres/src/common/controldata_utils.c:268,1
    - Dst: close
      Src: /src/postgres/src/common/controldata_utils.c:272,1
    - Dst: ereport
      Src: /src/postgres/src/common/controldata_utils.c:275,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/common/controldata_utils.c:276,1
    - Dst: errmsg
      Src: /src/postgres/src/common/controldata_utils.c:277,1
    - Dst: pg_fatal
      Src: /src/postgres/src/common/controldata_utils.c:280,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 3
    argNames:
    - DataDir
    - ControlFile
    - do_sync
    argTypes:
    - char*
    - ControlFileData*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 188
    functionDepth: 1
    functionLinenumber: 188
    functionLinenumberEnd: 283
    functionName: update_controlfile
    functionSourceFile: /src/postgres/src/common/controldata_utils.c
    functionUses: 4
    functionsReached:
    - fsync
    - snprintf
    - BasicOpenFile
    - time
    - pgstat_report_wait_end
    - pgstat_report_wait_start
    - errcode_for_file_access
    - COMP_CRC32C
    - FIN_CRC32C
    - memcpy
    - pg_fsync
    - errmsg
    - write
    - close
    - pg_fatal
    - memset
    - INIT_CRC32C
    - open
    - ereport
    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:
    - pg_wchar
    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: pg_wchar
    signature: pg_wchar unicode_lowercase_simple(pg_wchar 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:
    - pg_wchar
    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: pg_wchar
    signature: pg_wchar unicode_titlecase_simple(pg_wchar 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:
    - pg_wchar
    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: pg_wchar
    signature: pg_wchar unicode_uppercase_simple(pg_wchar 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:
    - pg_wchar
    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: pg_wchar
    signature: pg_wchar unicode_casefold_simple(pg_wchar 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: 5
    argNames:
    - dst
    - dstsize
    - src
    - srclen
    - full
    argTypes:
    - char*
    - size_t
    - char*
    - ssize_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,
      ssize_t srclen,\n\t\t\t\t bool full)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: convert_case
      Src: /src/postgres/src/common/unicode_case.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - dst
    - dstsize
    - src
    - srclen
    - full
    - wbnext
    - wbstate
    argTypes:
    - char*
    - size_t
    - char*
    - ssize_t
    - bool
    - WordBoundaryNext
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 143
    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,
      ssize_t srclen,\n\t\t\t\t bool full, WordBoundaryNext wbnext, void *wbstate)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: convert_case
      Src: /src/postgres/src/common/unicode_case.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - dst
    - dstsize
    - src
    - srclen
    - full
    argTypes:
    - char*
    - size_t
    - char*
    - ssize_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 170
    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,
      ssize_t srclen,\n\t\t\t\t bool full)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: convert_case
      Src: /src/postgres/src/common/unicode_case.c:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - dst
    - dstsize
    - src
    - srclen
    - full
    argTypes:
    - char*
    - size_t
    - char*
    - ssize_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 188
    functionDepth: 1
    functionLinenumber: 188
    functionLinenumberEnd: 194
    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,
      ssize_t srclen,\n\t\t\t\tbool full)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_case.c:223,1
    - Dst: wbnext
      Src: /src/postgres/src/common/unicode_case.c:228,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_case.c:229,1
    - Dst: utf8_to_unicode
      Src: /src/postgres/src/common/unicode_case.c:234,1
    - Dst: unicode_utf8len
      Src: /src/postgres/src/common/unicode_case.c:235,1
    - Dst: wbnext
      Src: /src/postgres/src/common/unicode_case.c:245,1
    - Dst: casemap
      Src: /src/postgres/src/common/unicode_case.c:251,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_case.c:258,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_case.c:259,1
    - Dst: memcpy
      Src: /src/postgres/src/common/unicode_case.c:261,1
    - Dst: unicode_utf8len
      Src: /src/postgres/src/common/unicode_case.c:269,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_case.c:271,1
    - Dst: unicode_to_utf8
      Src: /src/postgres/src/common/unicode_case.c:273,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_case.c:280,1
    - Dst: unicode_utf8len
      Src: /src/postgres/src/common/unicode_case.c:284,1
    - Dst: unicode_to_utf8
      Src: /src/postgres/src/common/unicode_case.c:287,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 44
    argCount: 8
    argNames:
    - dst
    - dstsize
    - src
    - srclen
    - str_casekind
    - full
    - wbnext
    - wbstate
    argTypes:
    - char*
    - size_t
    - char*
    - ssize_t
    - CaseKind
    - bool
    - WordBoundaryNext
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 301
    functionName: convert_case
    functionSourceFile: /src/postgres/src/common/unicode_case.c
    functionUses: 4
    functionsReached:
    - wbnext
    - Assert
    - casemap
    - unicode_utf8len
    - utf8_to_unicode
    - memcpy
    - unicode_to_utf8
    linkageType: ''
    returnType: size_t
    signature: "size_t convert_case(char *dst, size_t dstsize, const char *src, ssize_t
      srclen,\n\t\t\t CaseKind str_casekind, bool full, WordBoundaryNext wbnext,\n\t\t\t
      void *wbstate)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: utf8_to_unicode
      Src: /src/postgres/src/common/unicode_case.c:323,1
    - Dst: pg_u_prop_case_ignorable
      Src: /src/postgres/src/common/unicode_case.c:325,1
    - Dst: pg_u_prop_cased
      Src: /src/postgres/src/common/unicode_case.c:327,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_case.c:335,1
    - Dst: utf8_to_unicode
      Src: /src/postgres/src/common/unicode_case.c:347,1
    - Dst: pg_u_prop_case_ignorable
      Src: /src/postgres/src/common/unicode_case.c:349,1
    - Dst: pg_u_prop_cased
      Src: /src/postgres/src/common/unicode_case.c:351,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_case.c:359,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 30
    argCount: 3
    argNames:
    - str
    - len
    - offset
    argTypes:
    - unsigned char*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 311
    functionDepth: 3
    functionLinenumber: 311
    functionLinenumberEnd: 363
    functionName: check_final_sigma
    functionSourceFile: /src/postgres/src/common/unicode_case.c
    functionUses: 0
    functionsReached:
    - utf8_to_unicode
    - pg_u_prop_cased
    - pg_u_prop_case_ignorable
    - Assert
    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:376,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode_case.c:379,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: 381
      start: 369
    functionDepth: 4
    functionLinenumber: 369
    functionLinenumberEnd: 381
    functionName: check_special_conditions
    functionSourceFile: /src/postgres/src/common/unicode_case.c
    functionUses: 0
    functionsReached:
    - check_final_sigma
    - Assert
    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:415,1
    - Dst: check_special_conditions
      Src: /src/postgres/src/common/unicode_case.c:421,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 8
    argNames:
    - u1
    - casekind
    - full
    - src
    - srclen
    - srcoff
    - simple
    - special
    argTypes:
    - pg_wchar
    - CaseKind
    - bool
    - char*
    - size_t
    - size_t
    - pg_wchar*
    - pg_wchar**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 396
    functionDepth: 5
    functionLinenumber: 396
    functionLinenumberEnd: 431
    functionName: casemap
    functionSourceFile: /src/postgres/src/common/unicode_case.c
    functionUses: 1
    functionsReached:
    - check_special_conditions
    - case_index
    linkageType: ''
    returnType: enum CaseMapResult
    signature: "enum CaseMapResult casemap(pg_wchar u1, CaseKind casekind, bool full,\n\t\tconst
      char *src, size_t srclen, size_t srcoff,\n\t\tpg_wchar *simple, const pg_wchar
      **special)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: case_index
      Src: /src/postgres/src/common/unicode_case.c:444,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ucs
    - map
    argTypes:
    - pg_wchar
    - pg_wchar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 437
    functionDepth: 1
    functionLinenumber: 437
    functionLinenumberEnd: 445
    functionName: find_case_map
    functionSourceFile: /src/postgres/src/common/unicode_case.c
    functionUses: 4
    functionsReached:
    - case_index
    linkageType: ''
    returnType: pg_wchar
    signature: pg_wchar find_case_map(pg_wchar ucs, const pg_wchar *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:
    - memset
    - ALLOC
    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_sha1_init
    - pg_md5_init
    - pg_sha512_init
    - pg_sha384_init
    - pg_sha256_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_md5_update
    - pg_sha224_update
    - pg_sha512_update
    - pg_sha384_update
    - pg_sha1_update
    - pg_sha256_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_sha256_final
    - pg_md5_final
    - pg_sha384_final
    - pg_sha1_final
    - pg_sha512_final
    - pg_sha224_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: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - from
    - to
    - len
    argTypes:
    - unsigned char*
    - pg_wchar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 82
    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: 88
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 88
    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: 99
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 99
    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: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:125,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 3
    argNames:
    - from
    - to
    - len
    argTypes:
    - unsigned char*
    - pg_wchar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 141
    functionName: pg_euc2wchar_with_len
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    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:152,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 157
    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:168,1
    - Dst: pg_ascii_dsplen
      Src: /src/postgres/src/common/wchar.c:171,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 173
    functionName: pg_euc_dsplen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - pg_ascii_dsplen
    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:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - from
    - to
    - len
    argTypes:
    - unsigned char*
    - pg_wchar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 178
    functionDepth: 2
    functionLinenumber: 178
    functionLinenumberEnd: 182
    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:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 184
    functionDepth: 2
    functionLinenumber: 184
    functionLinenumberEnd: 188
    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:199,1
    - Dst: pg_ascii_dsplen
      Src: /src/postgres/src/common/wchar.c:202,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 204
    functionName: pg_eucjp_dsplen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - pg_ascii_dsplen
    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:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - from
    - to
    - len
    argTypes:
    - unsigned char*
    - pg_wchar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 209
    functionDepth: 2
    functionLinenumber: 209
    functionLinenumberEnd: 213
    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:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 215
    functionDepth: 2
    functionLinenumber: 215
    functionLinenumberEnd: 219
    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:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 221
    functionDepth: 2
    functionLinenumber: 221
    functionLinenumberEnd: 225
    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: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:252,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 3
    argNames:
    - from
    - to
    - len
    argTypes:
    - unsigned char*
    - pg_wchar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 268
    functionName: pg_euccn2wchar_with_len
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: int
    signature: int pg_euccn2wchar_with_len(const unsigned char *from, pg_wchar *to,
      int len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:275,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 270
    functionDepth: 1
    functionLinenumber: 270
    functionLinenumberEnd: 280
    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:287,1
    - Dst: pg_ascii_dsplen
      Src: /src/postgres/src/common/wchar.c:290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 292
    functionName: pg_euccn_dsplen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - pg_ascii_dsplen
    linkageType: ''
    returnType: int
    signature: int pg_euccn_dsplen(const unsigned char *s)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:320,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 3
    argNames:
    - from
    - to
    - len
    argTypes:
    - unsigned char*
    - pg_wchar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 336
    functionName: pg_euctw2wchar_with_len
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    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:347,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 352
    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:363,1
    - Dst: pg_ascii_dsplen
      Src: /src/postgres/src/common/wchar.c:366,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 354
    functionDepth: 1
    functionLinenumber: 354
    functionLinenumberEnd: 368
    functionName: pg_euctw_dsplen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - pg_ascii_dsplen
    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: 416
      start: 376
    functionDepth: 0
    functionLinenumber: 376
    functionLinenumberEnd: 416
    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:425,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 422
    functionDepth: 2
    functionLinenumber: 422
    functionLinenumberEnd: 426
    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:431,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 428
    functionDepth: 2
    functionLinenumber: 428
    functionLinenumberEnd: 432
    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: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 41
    argCount: 3
    argNames:
    - from
    - to
    - len
    argTypes:
    - unsigned char*
    - pg_wchar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 440
    functionDepth: 0
    functionLinenumber: 440
    functionLinenumberEnd: 497
    functionName: pg_utf2wchar_with_len
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached: []
    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:515,1
    - Dst: pg_utf_mblen
      Src: /src/postgres/src/common/wchar.c:516,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - from
    - to
    - len
    argTypes:
    - pg_wchar*
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 506
    functionDepth: 1
    functionLinenumber: 506
    functionLinenumberEnd: 524
    functionName: pg_wchar2utf_with_len
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - unicode_to_utf8
    - pg_utf_mblen
    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: 559
      start: 537
    functionDepth: 0
    functionLinenumber: 537
    functionLinenumberEnd: 559
    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: 600
      start: 580
    functionDepth: 0
    functionLinenumber: 580
    functionLinenumberEnd: 600
    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:649,1
    - Dst: mbbisearch
      Src: /src/postgres/src/common/wchar.c:654,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 10
    argCount: 1
    argNames:
    - ucs
    argTypes:
    - pg_wchar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 627
    functionDepth: 1
    functionLinenumber: 627
    functionLinenumberEnd: 659
    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:664,1
    - Dst: utf8_to_unicode
      Src: /src/postgres/src/common/wchar.c:664,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 661
    functionDepth: 2
    functionLinenumber: 661
    functionLinenumberEnd: 665
    functionName: pg_utf_dsplen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - utf8_to_unicode
    - ucs_wcwidth
    linkageType: ''
    returnType: int
    signature: int pg_utf_dsplen(const unsigned char *s)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IS_LC1
      Src: /src/postgres/src/common/wchar.c:680,1
    - Dst: IS_LCPRV1
      Src: /src/postgres/src/common/wchar.c:686,1
    - Dst: IS_LC2
      Src: /src/postgres/src/common/wchar.c:693,1
    - Dst: IS_LCPRV2
      Src: /src/postgres/src/common/wchar.c:700,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 3
    argNames:
    - from
    - to
    - len
    argTypes:
    - unsigned char*
    - pg_wchar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 673
    functionDepth: 1
    functionLinenumber: 673
    functionLinenumberEnd: 718
    functionName: pg_mule2wchar_with_len
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_LCPRV1
    - IS_LC1
    - IS_LCPRV2
    - IS_LC2
    linkageType: ''
    returnType: int
    signature: int pg_mule2wchar_with_len(const unsigned char *from, pg_wchar *to,
      int len)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IS_LC1
      Src: /src/postgres/src/common/wchar.c:736,1
    - Dst: IS_LC2
      Src: /src/postgres/src/common/wchar.c:742,1
    - Dst: IS_LCPRV1_A_RANGE
      Src: /src/postgres/src/common/wchar.c:749,1
    - Dst: IS_LCPRV1_B_RANGE
      Src: /src/postgres/src/common/wchar.c:756,1
    - Dst: IS_LCPRV2_A_RANGE
      Src: /src/postgres/src/common/wchar.c:763,1
    - Dst: IS_LCPRV2_B_RANGE
      Src: /src/postgres/src/common/wchar.c:771,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 48
    argCount: 3
    argNames:
    - from
    - to
    - len
    argTypes:
    - pg_wchar*
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 726
    functionDepth: 1
    functionLinenumber: 726
    functionLinenumberEnd: 789
    functionName: pg_wchar2mule_with_len
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_LCPRV2_B_RANGE
    - IS_LC1
    - IS_LC2
    - IS_LCPRV2_A_RANGE
    - IS_LCPRV1_A_RANGE
    - IS_LCPRV1_B_RANGE
    linkageType: ''
    returnType: int
    signature: int pg_wchar2mule_with_len(const pg_wchar *from, unsigned char *to,
      int len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IS_LC1
      Src: /src/postgres/src/common/wchar.c:797,1
    - Dst: IS_LCPRV1
      Src: /src/postgres/src/common/wchar.c:799,1
    - Dst: IS_LC2
      Src: /src/postgres/src/common/wchar.c:801,1
    - Dst: IS_LCPRV2
      Src: /src/postgres/src/common/wchar.c:803,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 808
      start: 792
    functionDepth: 1
    functionLinenumber: 792
    functionLinenumberEnd: 808
    functionName: pg_mule_mblen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_LCPRV1
    - IS_LC1
    - IS_LCPRV2
    - IS_LC2
    linkageType: ''
    returnType: int
    signature: int pg_mule_mblen(const unsigned char *s)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IS_LC1
      Src: /src/postgres/src/common/wchar.c:821,1
    - Dst: IS_LCPRV1
      Src: /src/postgres/src/common/wchar.c:823,1
    - Dst: IS_LC2
      Src: /src/postgres/src/common/wchar.c:825,1
    - Dst: IS_LCPRV2
      Src: /src/postgres/src/common/wchar.c:827,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 810
    functionDepth: 1
    functionLinenumber: 810
    functionLinenumberEnd: 833
    functionName: pg_mule_dsplen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_LCPRV1
    - IS_LC1
    - IS_LCPRV2
    - IS_LC2
    linkageType: ''
    returnType: int
    signature: int pg_mule_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: 851
      start: 838
    functionDepth: 0
    functionLinenumber: 838
    functionLinenumberEnd: 851
    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: 873
      start: 860
    functionDepth: 0
    functionLinenumber: 860
    functionLinenumberEnd: 873
    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: 879
      start: 875
    functionDepth: 0
    functionLinenumber: 875
    functionLinenumberEnd: 879
    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:884,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 881
    functionDepth: 1
    functionLinenumber: 881
    functionLinenumberEnd: 885
    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:897,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 890
    functionDepth: 1
    functionLinenumber: 890
    functionLinenumberEnd: 902
    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:911,1
    - Dst: pg_ascii_dsplen
      Src: /src/postgres/src/common/wchar.c:914,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 916
      start: 904
    functionDepth: 1
    functionLinenumber: 904
    functionLinenumberEnd: 916
    functionName: pg_sjis_dsplen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - pg_ascii_dsplen
    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:926,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 921
    functionDepth: 1
    functionLinenumber: 921
    functionLinenumberEnd: 931
    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:938,1
    - Dst: pg_ascii_dsplen
      Src: /src/postgres/src/common/wchar.c:941,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 943
      start: 933
    functionDepth: 1
    functionLinenumber: 933
    functionLinenumberEnd: 943
    functionName: pg_big5_dsplen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - pg_ascii_dsplen
    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:953,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 948
    functionDepth: 1
    functionLinenumber: 948
    functionLinenumberEnd: 958
    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:965,1
    - Dst: pg_ascii_dsplen
      Src: /src/postgres/src/common/wchar.c:968,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 960
    functionDepth: 1
    functionLinenumber: 960
    functionLinenumberEnd: 970
    functionName: pg_gbk_dsplen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - pg_ascii_dsplen
    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:980,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 975
    functionDepth: 1
    functionLinenumber: 975
    functionLinenumberEnd: 985
    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:992,1
    - Dst: pg_ascii_dsplen
      Src: /src/postgres/src/common/wchar.c:995,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 987
    functionDepth: 1
    functionLinenumber: 987
    functionLinenumberEnd: 997
    functionName: pg_uhc_dsplen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - pg_ascii_dsplen
    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:1019,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 1014
    functionDepth: 1
    functionLinenumber: 1014
    functionLinenumberEnd: 1026
    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:1033,1
    - Dst: pg_ascii_dsplen
      Src: /src/postgres/src/common/wchar.c:1036,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 1028
    functionDepth: 1
    functionLinenumber: 1028
    functionLinenumberEnd: 1038
    functionName: pg_gb18030_dsplen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - pg_ascii_dsplen
    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: 1066
      start: 1062
    functionDepth: 0
    functionLinenumber: 1062
    functionLinenumberEnd: 1066
    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:1071,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1077
      start: 1068
    functionDepth: 0
    functionLinenumber: 1068
    functionLinenumberEnd: 1077
    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: 1080
      start: 1079
    functionDepth: 0
    functionLinenumber: 1079
    functionLinenumberEnd: 1080
    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:1106,1
    - Dst: IS_EUC_RANGE_VALID
      Src: /src/postgres/src/common/wchar.c:1109,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:1114,1
    - Dst: IS_EUC_RANGE_VALID
      Src: /src/postgres/src/common/wchar.c:1119,1
    - Dst: IS_EUC_RANGE_VALID
      Src: /src/postgres/src/common/wchar.c:1122,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 38
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1134
      start: 1081
    functionDepth: 1
    functionLinenumber: 1081
    functionLinenumberEnd: 1134
    functionName: pg_eucjp_verifychar
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - IS_EUC_RANGE_VALID
    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:1146,1
    - Dst: pg_eucjp_verifychar
      Src: /src/postgres/src/common/wchar.c:1154,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1163
      start: 1136
    functionDepth: 2
    functionLinenumber: 1136
    functionLinenumberEnd: 1163
    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:1174,1
    - Dst: IS_EUC_RANGE_VALID
      Src: /src/postgres/src/common/wchar.c:1179,1
    - Dst: IS_EUC_RANGE_VALID
      Src: /src/postgres/src/common/wchar.c:1182,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1192
      start: 1165
    functionDepth: 1
    functionLinenumber: 1165
    functionLinenumberEnd: 1192
    functionName: pg_euckr_verifychar
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - IS_EUC_RANGE_VALID
    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:1204,1
    - Dst: pg_euckr_verifychar
      Src: /src/postgres/src/common/wchar.c:1212,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1221
      start: 1194
    functionDepth: 2
    functionLinenumber: 1194
    functionLinenumberEnd: 1221
    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:1246,1
    - Dst: IS_EUC_RANGE_VALID
      Src: /src/postgres/src/common/wchar.c:1249,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:1257,1
    - Dst: IS_EUC_RANGE_VALID
      Src: /src/postgres/src/common/wchar.c:1264,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1275
      start: 1227
    functionDepth: 1
    functionLinenumber: 1227
    functionLinenumberEnd: 1275
    functionName: pg_euctw_verifychar
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - IS_EUC_RANGE_VALID
    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:1287,1
    - Dst: pg_euctw_verifychar
      Src: /src/postgres/src/common/wchar.c:1295,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1304
      start: 1277
    functionDepth: 2
    functionLinenumber: 1277
    functionLinenumberEnd: 1304
    functionName: pg_euctw_verifystr
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_euctw_verifychar
    - IS_HIGHBIT_SET
    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:1313,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:1318,1
    - Dst: IS_EUC_RANGE_VALID
      Src: /src/postgres/src/common/wchar.c:1324,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1328
      start: 1306
    functionDepth: 3
    functionLinenumber: 1306
    functionLinenumberEnd: 1328
    functionName: pg_johab_verifychar
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_johab_mblen
    - IS_HIGHBIT_SET
    - IS_EUC_RANGE_VALID
    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:1340,1
    - Dst: pg_johab_verifychar
      Src: /src/postgres/src/common/wchar.c:1348,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1357
      start: 1330
    functionDepth: 4
    functionLinenumber: 1330
    functionLinenumberEnd: 1357
    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: 3
    BranchProfiles: []
    Callsites:
    - Dst: pg_mule_mblen
      Src: /src/postgres/src/common/wchar.c:1366,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:1374,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1378
      start: 1359
    functionDepth: 2
    functionLinenumber: 1359
    functionLinenumberEnd: 1378
    functionName: pg_mule_verifychar
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - pg_mule_mblen
    linkageType: ''
    returnType: int
    signature: int pg_mule_verifychar(const unsigned char *s, int len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:1390,1
    - Dst: pg_mule_verifychar
      Src: /src/postgres/src/common/wchar.c:1398,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1407
      start: 1380
    functionDepth: 3
    functionLinenumber: 1380
    functionLinenumberEnd: 1407
    functionName: pg_mule_verifystr
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_mule_verifychar
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: int
    signature: int pg_mule_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: 1413
      start: 1409
    functionDepth: 0
    functionLinenumber: 1409
    functionLinenumberEnd: 1413
    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:1418,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1424
      start: 1415
    functionDepth: 0
    functionLinenumber: 1415
    functionLinenumberEnd: 1424
    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:1434,1
    - Dst: ISSJISHEAD
      Src: /src/postgres/src/common/wchar.c:1444,1
    - Dst: ISSJISTAIL
      Src: /src/postgres/src/common/wchar.c:1444,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1447
      start: 1426
    functionDepth: 1
    functionLinenumber: 1426
    functionLinenumberEnd: 1447
    functionName: pg_sjis_verifychar
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - ISSJISTAIL
    - pg_sjis_mblen
    - 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:1459,1
    - Dst: pg_sjis_verifychar
      Src: /src/postgres/src/common/wchar.c:1467,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1476
      start: 1449
    functionDepth: 2
    functionLinenumber: 1449
    functionLinenumberEnd: 1476
    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:1484,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1501
      start: 1478
    functionDepth: 2
    functionLinenumber: 1478
    functionLinenumberEnd: 1501
    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:1513,1
    - Dst: pg_big5_verifychar
      Src: /src/postgres/src/common/wchar.c:1521,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1530
      start: 1503
    functionDepth: 3
    functionLinenumber: 1503
    functionLinenumberEnd: 1530
    functionName: pg_big5_verifystr
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - pg_big5_verifychar
    - IS_HIGHBIT_SET
    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:1538,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1555
      start: 1532
    functionDepth: 2
    functionLinenumber: 1532
    functionLinenumberEnd: 1555
    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:1567,1
    - Dst: pg_gbk_verifychar
      Src: /src/postgres/src/common/wchar.c:1575,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1584
      start: 1557
    functionDepth: 3
    functionLinenumber: 1557
    functionLinenumberEnd: 1584
    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:1592,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1609
      start: 1586
    functionDepth: 2
    functionLinenumber: 1586
    functionLinenumberEnd: 1609
    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:1621,1
    - Dst: pg_uhc_verifychar
      Src: /src/postgres/src/common/wchar.c:1629,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1638
      start: 1611
    functionDepth: 3
    functionLinenumber: 1611
    functionLinenumberEnd: 1638
    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:1645,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 15
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1669
      start: 1640
    functionDepth: 1
    functionLinenumber: 1640
    functionLinenumberEnd: 1669
    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:1681,1
    - Dst: pg_gb18030_verifychar
      Src: /src/postgres/src/common/wchar.c:1689,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1698
      start: 1671
    functionDepth: 2
    functionLinenumber: 1671
    functionLinenumberEnd: 1698
    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:1723,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1727
      start: 1700
    functionDepth: 1
    functionLinenumber: 1700
    functionLinenumberEnd: 1727
    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: 1888
      start: 1872
    functionDepth: 0
    functionLinenumber: 1872
    functionLinenumberEnd: 1888
    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:1913,1
    - Dst: utf8_advance
      Src: /src/postgres/src/common/wchar.c:1914,1
    - Dst: Assert
      Src: /src/postgres/src/common/wchar.c:1941,1
    - Dst: Assert
      Src: /src/postgres/src/common/wchar.c:1944,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:1944,1
    - Dst: pg_utf_mblen
      Src: /src/postgres/src/common/wchar.c:1945,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/common/wchar.c:1955,1
    - Dst: pg_utf8_verifychar
      Src: /src/postgres/src/common/wchar.c:1963,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1972
      start: 1890
    functionDepth: 4
    functionLinenumber: 1890
    functionLinenumberEnd: 1972
    functionName: pg_utf8_verifystr
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - Assert
    - is_valid_ascii
    - pg_utf8_verifychar
    - utf8_advance
    - IS_HIGHBIT_SET
    - pg_utf_mblen
    linkageType: ''
    returnType: int
    signature: int pg_utf8_verifystr(const unsigned char *s, int len)
  - BBCount: 20
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 45
    argCount: 2
    argNames:
    - source
    - length
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2043
      start: 1988
    functionDepth: 0
    functionLinenumber: 1988
    functionLinenumberEnd: 2043
    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:2053,1
    - Dst: pg_encoding_max_length
      Src: /src/postgres/src/common/wchar.c:2053,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - encoding
    - dst
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2057
      start: 2050
    functionDepth: 1
    functionLinenumber: 2050
    functionLinenumberEnd: 2057
    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:2137,1
    - Dst: mblen
      Src: /src/postgres/src/common/wchar.c:2138,1
    - Dst: mblen
      Src: /src/postgres/src/common/wchar.c:2139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - encoding
    - mbstr
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2140
      start: 2134
    functionDepth: 1
    functionLinenumber: 2134
    functionLinenumberEnd: 2140
    functionName: pg_encoding_mblen
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 2
    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:2156,1
    - Dst: pg_encoding_mblen
      Src: /src/postgres/src/common/wchar.c:2158,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 3
    argNames:
    - encoding
    - mbstr
    - remaining
    argTypes:
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2159
      start: 2146
    functionDepth: 2
    functionLinenumber: 2146
    functionLinenumberEnd: 2159
    functionName: pg_encoding_mblen_or_incomplete
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - pg_encoding_mblen
    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:2169,1
    - Dst: pg_encoding_mblen
      Src: /src/postgres/src/common/wchar.c:2169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - encoding
    - mbstr
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2170
      start: 2166
    functionDepth: 2
    functionLinenumber: 2166
    functionLinenumberEnd: 2170
    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:2178,1
    - Dst: dsplen
      Src: /src/postgres/src/common/wchar.c:2179,1
    - Dst: dsplen
      Src: /src/postgres/src/common/wchar.c:2180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - encoding
    - mbstr
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2181
      start: 2175
    functionDepth: 1
    functionLinenumber: 2175
    functionLinenumberEnd: 2181
    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:2191,1
    - Dst: mbverifychar
      Src: /src/postgres/src/common/wchar.c:2192,1
    - Dst: mbverifychar
      Src: /src/postgres/src/common/wchar.c:2193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - encoding
    - mbstr
    - len
    argTypes:
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2194
      start: 2188
    functionDepth: 1
    functionLinenumber: 2188
    functionLinenumberEnd: 2194
    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:2204,1
    - Dst: mbverifystr
      Src: /src/postgres/src/common/wchar.c:2205,1
    - Dst: mbverifystr
      Src: /src/postgres/src/common/wchar.c:2206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - encoding
    - mbstr
    - len
    argTypes:
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2207
      start: 2201
    functionDepth: 1
    functionLinenumber: 2201
    functionLinenumberEnd: 2207
    functionName: pg_encoding_verifymbstr
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 4
    functionsReached:
    - mbverifystr
    - PG_VALID_ENCODING
    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:2215,1
    - Dst: PG_VALID_ENCODING
      Src: /src/postgres/src/common/wchar.c:2215,1
    - Dst: PG_VALID_ENCODING
      Src: /src/postgres/src/common/wchar.c:2221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - encoding
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2224
      start: 2212
    functionDepth: 1
    functionLinenumber: 2212
    functionLinenumberEnd: 2224
    functionName: pg_encoding_max_length
    functionSourceFile: /src/postgres/src/common/wchar.c
    functionUses: 3
    functionsReached:
    - PG_VALID_ENCODING
    - Assert
    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:
    - FREE
    - memset
    - pg_cryptohash_create
    - explicit_bzero
    - ALLOC
    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:
    - FREE
    - memset
    - pg_cryptohash_create
    - pg_cryptohash_final
    - pg_cryptohash_error
    - pg_cryptohash_update
    - pg_cryptohash_init
    - pg_cryptohash_free
    - ALLOC
    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_error
    - pg_cryptohash_update
    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:
    - FREE
    - memset
    - pg_cryptohash_final
    - pg_cryptohash_error
    - pg_cryptohash_update
    - pg_cryptohash_init
    - ALLOC
    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:
    - FREE
    - pg_cryptohash_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:57,1
    - Dst: GetConsoleMode
      Src: /src/postgres/src/common/logging.c:67,1
    - Dst: SetConsoleMode
      Src: /src/postgres/src/common/logging.c:73,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 76
    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:85,1
    - Dst: isatty
      Src: /src/postgres/src/common/logging.c:87,1
    - Dst: fileno
      Src: /src/postgres/src/common/logging.c:87,1
    - Dst: enable_vt_processing
      Src: /src/postgres/src/common/logging.c:96,1
    - Dst: setvbuf
      Src: /src/postgres/src/common/logging.c:100,1
    - Dst: get_progname
      Src: /src/postgres/src/common/logging.c:102,1
    - Dst: strcmp
      Src: /src/postgres/src/common/logging.c:107,1
    - Dst: strcmp
      Src: /src/postgres/src/common/logging.c:108,1
    - Dst: getenv
      Src: /src/postgres/src/common/logging.c:114,1
    - Dst: strdup
      Src: /src/postgres/src/common/logging.c:118,1
    - Dst: strsep
      Src: /src/postgres/src/common/logging.c:125,1
    - Dst: strchr
      Src: /src/postgres/src/common/logging.c:127,1
    - Dst: strcmp
      Src: /src/postgres/src/common/logging.c:138,1
    - Dst: strdup
      Src: /src/postgres/src/common/logging.c:139,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: free
      Src: /src/postgres/src/common/logging.c:149,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 37
    argCount: 1
    argNames:
    - argv0
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 82
    functionDepth: 4
    functionLinenumber: 82
    functionLinenumberEnd: 160
    functionName: pg_logging_init
    functionSourceFile: /src/postgres/src/common/logging.c
    functionUses: 35
    functionsReached:
    - getenv
    - get_progname
    - setvbuf
    - strsep
    - isatty
    - strdup
    - fileno
    - enable_vt_processing
    - strcmp
    - free
    - strchr
    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: 169
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 169
    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: 179
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 179
    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: 193
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 193
    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: 199
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 199
    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: 205
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 205
    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:
    - Dst: va_start
      Src: /src/postgres/src/common/logging.c:213,1
    - Dst: pg_log_generic_v
      Src: /src/postgres/src/common/logging.c:214,1
    - Dst: va_end
      Src: /src/postgres/src/common/logging.c:215,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: 216
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 216
    functionName: pg_log_generic
    functionSourceFile: /src/postgres/src/common/logging.c
    functionUses: 0
    functionsReached:
    - va_end
    - va_start
    - 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: 27
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/common/logging.c:229,1
    - Dst: Assert
      Src: /src/postgres/src/common/logging.c:230,1
    - Dst: Assert
      Src: /src/postgres/src/common/logging.c:231,1
    - Dst: Assert
      Src: /src/postgres/src/common/logging.c:232,1
    - Dst: strlen
      Src: /src/postgres/src/common/logging.c:232,1
    - Dst: fflush
      Src: /src/postgres/src/common/logging.c:242,1
    - Dst: log_pre_callback
      Src: /src/postgres/src/common/logging.c:245,1
    - Dst: log_locus_callback
      Src: /src/postgres/src/common/logging.c:248,1
    - Dst: _
      Src: /src/postgres/src/common/logging.c:250,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:255,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:257,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:260,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:262,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:264,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:266,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:278,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:279,1
    - Dst: _
      Src: /src/postgres/src/common/logging.c:279,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:281,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:285,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:286,1
    - Dst: _
      Src: /src/postgres/src/common/logging.c:286,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:288,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:296,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:297,1
    - Dst: _
      Src: /src/postgres/src/common/logging.c:297,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:299,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:303,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: va_copy
      Src: /src/postgres/src/common/logging.c:313,1
    - Dst: vsnprintf
      Src: /src/postgres/src/common/logging.c:314,1
    - Dst: va_end
      Src: /src/postgres/src/common/logging.c:315,1
    - Dst: pg_malloc_extended
      Src: /src/postgres/src/common/logging.c:317,1
    - Dst: vfprintf
      Src: /src/postgres/src/common/logging.c:324,1
    - Dst: vsnprintf
      Src: /src/postgres/src/common/logging.c:328,1
    - Dst: fprintf
      Src: /src/postgres/src/common/logging.c:334,1
    - Dst: free
      Src: /src/postgres/src/common/logging.c:336,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 80
    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: 337
      start: 218
    functionDepth: 3
    functionLinenumber: 218
    functionLinenumberEnd: 337
    functionName: pg_log_generic_v
    functionSourceFile: /src/postgres/src/common/logging.c
    functionUses: 7
    functionsReached:
    - vsnprintf
    - Assert
    - fflush
    - pg_malloc_extended
    - log_pre_callback
    - va_end
    - vfprintf
    - fprintf
    - _
    - free
    - log_locus_callback
    - strlen
    - va_copy
    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:
    - errmsg
    - FREE
    - memset
    - ereport
    - ResourceOwnerEnlarge
    - ERR_clear_error
    - ResourceOwnerRememberHMAC
    - explicit_bzero
    - HMAC_CTX_new
    - errcode
    - ALLOC
    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_sha256
    - SSLerrmessage
    - EVP_sha224
    - HMAC_Init_ex
    - EVP_sha384
    - EVP_sha1
    - EVP_sha512
    - ERR_get_error
    - EVP_md5
    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:
    - ERR_get_error
    - HMAC_Update
    - SSLerrmessage
    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:
    - ERR_get_error
    - SSLerrmessage
    - 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
    - HMAC_CTX_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_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:
    - close
    - open
    - syncfs
    - exit
    - pg_log_error
    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:
    - readdir
    - pfree
    - lstat
    - S_ISLNK
    - closedir
    - snprintf
    - walkdir
    - opendir
    - exit
    - do_syncfs
    - strcmp
    - pg_log_error
    - psprintf
    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:
    - do_syncfs
    - exit
    - pg_log_error
    - walkdir
    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:
    - readdir
    - closedir
    - snprintf
    - walkdir
    - get_dirent_type
    - opendir
    - strcmp
    - pg_log_error
    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:
    - close
    - open
    - posix_fadvise
    - sync_file_range
    - pg_log_error
    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
    - exit
    - pg_log_error
    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:
    - get_parent_directory
    - fsync_fname
    - strlcpy
    - strlen
    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: 2
    functionsReached:
    - fsync
    - rename
    - close
    - open
    - fsync_parent_path
    - exit
    - pg_log_error
    - fsync_fname
    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:
    - pg_log_generic
    - errmsg
    - lstat
    - S_ISREG
    - S_ISLNK
    - stat
    - S_ISDIR
    - ereport
    - errcode_for_file_access
    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
    - off_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: 0
    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, off_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
    - off_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: 1
    functionsReached:
    - pg_pwritev_with_retry
    - unconstify
    - Assert
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t pg_pwrite_zeros(int fd, size_t size, off_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:
    - errmsg
    - ereport
    - errhint
    - strcmp
    - errcode
    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:463,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - encoding
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 460
    functionDepth: 1
    functionLinenumber: 460
    functionLinenumberEnd: 466
    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:474,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - encoding
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 471
    functionDepth: 1
    functionLinenumber: 471
    functionLinenumberEnd: 477
    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:489,1
    - Dst: PG_VALID_FE_ENCODING
      Src: /src/postgres/src/common/encnames.c:492,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 484
    functionDepth: 1
    functionLinenumber: 484
    functionLinenumberEnd: 496
    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:503,1
    - Dst: PG_VALID_BE_ENCODING
      Src: /src/postgres/src/common/encnames.c:506,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 498
    functionDepth: 1
    functionLinenumber: 498
    functionLinenumberEnd: 510
    functionName: pg_valid_server_encoding
    functionSourceFile: /src/postgres/src/common/encnames.c
    functionUses: 1
    functionsReached:
    - PG_VALID_BE_ENCODING
    - pg_char_to_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:515,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - encoding
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 512
    functionDepth: 1
    functionLinenumber: 512
    functionLinenumberEnd: 516
    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:531,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - key
    - newkey
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 523
    functionDepth: 0
    functionLinenumber: 523
    functionLinenumberEnd: 541
    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:551,1
    - Dst: strlen
      Src: /src/postgres/src/common/encnames.c:562,1
    - Dst: clean_encoding_name
      Src: /src/postgres/src/common/encnames.c:565,1
    - Dst: strcmp
      Src: /src/postgres/src/common/encnames.c:574,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 548
    functionDepth: 1
    functionLinenumber: 548
    functionLinenumberEnd: 584
    functionName: pg_char_to_encoding
    functionSourceFile: /src/postgres/src/common/encnames.c
    functionUses: 6
    functionsReached:
    - strcmp
    - clean_encoding_name
    - lengthof
    - strlen
    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:589,1
    - Dst: Assert
      Src: /src/postgres/src/common/encnames.c:593,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - encoding
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 586
    functionDepth: 1
    functionLinenumber: 586
    functionLinenumberEnd: 597
    functionName: pg_encoding_to_char
    functionSourceFile: /src/postgres/src/common/encnames.c
    functionUses: 11
    functionsReached:
    - PG_VALID_ENCODING
    - Assert
    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: 33
    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: 146
    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: 95
    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: 35
    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:
    - H
    - F0
    - memset
    - F2
    - F3
    - memmove
    - F1
    - W
    - S
    - K
    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
    - sha1_step
    - memset
    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:
    - sha1_step
    - memmove
    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_pad
    - sha1_result
    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: 71
    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: 39
    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: 97
    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
    - ROUND4
    - ROUND2
    - 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:
    - md5_calc
    - memmove
    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:
    - md5_calc
    - memmove
    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: 81
    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:283,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:284,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - context
    argTypes:
    - pg_sha256_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 286
    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: 301
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 301
    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: 313
      start: 302
    functionDepth: 0
    functionLinenumber: 302
    functionLinenumberEnd: 313
    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:347,1
    - 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
      Src: /src/postgres/src/common/sha2.c:360,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
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 40
    argCount: 2
    argNames:
    - context
    - data
    argTypes:
    - pg_sha256_ctx*
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 382
    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:422,1
    - Dst: Ch
      Src: /src/postgres/src/common/sha2.c:422,1
    - Dst: Sigma0_256
      Src: /src/postgres/src/common/sha2.c:423,1
    - Dst: Maj
      Src: /src/postgres/src/common/sha2.c:423,1
    - Dst: sigma0_256
      Src: /src/postgres/src/common/sha2.c:440,1
    - Dst: sigma1_256
      Src: /src/postgres/src/common/sha2.c:442,1
    - Dst: Sigma1_256
      Src: /src/postgres/src/common/sha2.c:445,1
    - Dst: Ch
      Src: /src/postgres/src/common/sha2.c:445,1
    - Dst: Sigma0_256
      Src: /src/postgres/src/common/sha2.c:447,1
    - Dst: Maj
      Src: /src/postgres/src/common/sha2.c:447,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 52
    argCount: 2
    argNames:
    - context
    - data
    argTypes:
    - pg_sha256_ctx*
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 385
    functionDepth: 1
    functionLinenumber: 385
    functionLinenumberEnd: 472
    functionName: SHA256_Transform
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached:
    - Maj
    - Sigma0_256
    - Ch
    - sigma0_256
    - sigma1_256
    - Sigma1_256
    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:494,1
    - Dst: SHA256_Transform
      Src: /src/postgres/src/common/sha2.c:498,1
    - Dst: memcpy
      Src: /src/postgres/src/common/sha2.c:503,1
    - Dst: SHA256_Transform
      Src: /src/postgres/src/common/sha2.c:513,1
    - Dst: memcpy
      Src: /src/postgres/src/common/sha2.c:521,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: 526
      start: 475
    functionDepth: 2
    functionLinenumber: 475
    functionLinenumberEnd: 526
    functionName: pg_sha256_update
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 1
    functionsReached:
    - memcpy
    - SHA256_Transform
    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:536,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:546,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:552,1
    - Dst: SHA256_Transform
      Src: /src/postgres/src/common/sha2.c:555,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:558,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:564,1
    - Dst: SHA256_Transform
      Src: /src/postgres/src/common/sha2.c:573,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 1
    argNames:
    - context
    argTypes:
    - pg_sha256_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 528
    functionDepth: 2
    functionLinenumber: 528
    functionLinenumberEnd: 574
    functionName: SHA256_Last
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached:
    - REVERSE64
    - memset
    - SHA256_Transform
    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:582,1
    - Dst: REVERSE32
      Src: /src/postgres/src/common/sha2.c:591,1
    - Dst: memcpy
      Src: /src/postgres/src/common/sha2.c:595,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:599,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - context
    - digest
    argTypes:
    - pg_sha256_ctx*
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 576
    functionDepth: 3
    functionLinenumber: 576
    functionLinenumberEnd: 600
    functionName: pg_sha256_final
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 1
    functionsReached:
    - memset
    - memcpy
    - SHA256_Last
    - 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:609,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:610,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - context
    argTypes:
    - pg_sha512_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 604
    functionDepth: 0
    functionLinenumber: 604
    functionLinenumberEnd: 612
    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: 629
      start: 618
    functionDepth: 0
    functionLinenumber: 618
    functionLinenumberEnd: 629
    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: 642
      start: 631
    functionDepth: 0
    functionLinenumber: 631
    functionLinenumberEnd: 642
    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:673,1
    - 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
      Src: /src/postgres/src/common/sha2.c:686,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
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 39
    argCount: 2
    argNames:
    - context
    - data
    argTypes:
    - pg_sha512_ctx*
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 643
    functionDepth: 1
    functionLinenumber: 643
    functionLinenumberEnd: 708
    functionName: SHA512_Transform
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached:
    - ROUND512
    - ROUND512_0_TO_15
    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:748,1
    - Dst: Ch
      Src: /src/postgres/src/common/sha2.c:748,1
    - Dst: Sigma0_512
      Src: /src/postgres/src/common/sha2.c:749,1
    - Dst: Maj
      Src: /src/postgres/src/common/sha2.c:749,1
    - Dst: sigma0_512
      Src: /src/postgres/src/common/sha2.c:766,1
    - Dst: sigma1_512
      Src: /src/postgres/src/common/sha2.c:768,1
    - Dst: Sigma1_512
      Src: /src/postgres/src/common/sha2.c:771,1
    - Dst: Ch
      Src: /src/postgres/src/common/sha2.c:771,1
    - Dst: Sigma0_512
      Src: /src/postgres/src/common/sha2.c:773,1
    - Dst: Maj
      Src: /src/postgres/src/common/sha2.c:773,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 51
    argCount: 2
    argNames:
    - context
    - data
    argTypes:
    - pg_sha512_ctx*
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 711
    functionDepth: 1
    functionLinenumber: 711
    functionLinenumberEnd: 798
    functionName: SHA512_Transform
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached:
    - Maj
    - Sigma0_512
    - sigma1_512
    - Ch
    - sigma0_512
    - Sigma1_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:820,1
    - Dst: ADDINC128
      Src: /src/postgres/src/common/sha2.c:821,1
    - Dst: SHA512_Transform
      Src: /src/postgres/src/common/sha2.c:824,1
    - Dst: memcpy
      Src: /src/postgres/src/common/sha2.c:829,1
    - Dst: ADDINC128
      Src: /src/postgres/src/common/sha2.c:830,1
    - Dst: SHA512_Transform
      Src: /src/postgres/src/common/sha2.c:839,1
    - Dst: ADDINC128
      Src: /src/postgres/src/common/sha2.c:840,1
    - Dst: memcpy
      Src: /src/postgres/src/common/sha2.c:847,1
    - Dst: ADDINC128
      Src: /src/postgres/src/common/sha2.c:848,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: 852
      start: 801
    functionDepth: 2
    functionLinenumber: 801
    functionLinenumberEnd: 852
    functionName: pg_sha512_update
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 1
    functionsReached:
    - SHA512_Transform
    - memcpy
    - ADDINC128
    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:862,1
    - Dst: REVERSE64
      Src: /src/postgres/src/common/sha2.c:863,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:873,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:879,1
    - Dst: SHA512_Transform
      Src: /src/postgres/src/common/sha2.c:882,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:885,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:891,1
    - Dst: SHA512_Transform
      Src: /src/postgres/src/common/sha2.c:901,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - context
    argTypes:
    - pg_sha512_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 854
    functionDepth: 2
    functionLinenumber: 854
    functionLinenumberEnd: 902
    functionName: SHA512_Last
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 0
    functionsReached:
    - REVERSE64
    - memset
    - SHA512_Transform
    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:910,1
    - Dst: REVERSE64
      Src: /src/postgres/src/common/sha2.c:920,1
    - Dst: memcpy
      Src: /src/postgres/src/common/sha2.c:924,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:928,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - context
    - digest
    argTypes:
    - pg_sha512_ctx*
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 904
    functionDepth: 3
    functionLinenumber: 904
    functionLinenumberEnd: 929
    functionName: pg_sha512_final
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 1
    functionsReached:
    - REVERSE64
    - memcpy
    - SHA512_Last
    - memset
    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:938,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:939,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - context
    argTypes:
    - pg_sha384_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 933
    functionDepth: 0
    functionLinenumber: 933
    functionLinenumberEnd: 941
    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:946,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: 947
      start: 943
    functionDepth: 3
    functionLinenumber: 943
    functionLinenumberEnd: 947
    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:955,1
    - Dst: REVERSE64
      Src: /src/postgres/src/common/sha2.c:965,1
    - Dst: memcpy
      Src: /src/postgres/src/common/sha2.c:969,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:973,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - context
    - digest
    argTypes:
    - pg_sha384_ctx*
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 974
      start: 949
    functionDepth: 3
    functionLinenumber: 949
    functionLinenumberEnd: 974
    functionName: pg_sha384_final
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 1
    functionsReached:
    - REVERSE64
    - memcpy
    - SHA512_Last
    - memset
    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:982,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:983,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - context
    argTypes:
    - pg_sha224_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 977
    functionDepth: 0
    functionLinenumber: 977
    functionLinenumberEnd: 985
    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:990,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: 991
      start: 987
    functionDepth: 3
    functionLinenumber: 987
    functionLinenumberEnd: 991
    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:999,1
    - Dst: REVERSE32
      Src: /src/postgres/src/common/sha2.c:1008,1
    - Dst: memcpy
      Src: /src/postgres/src/common/sha2.c:1012,1
    - Dst: memset
      Src: /src/postgres/src/common/sha2.c:1016,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - context
    - digest
    argTypes:
    - pg_sha224_ctx*
    - uint8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1017
      start: 993
    functionDepth: 3
    functionLinenumber: 993
    functionLinenumberEnd: 1017
    functionName: pg_sha224_final
    functionSourceFile: /src/postgres/src/common/sha2.c
    functionUses: 1
    functionsReached:
    - memset
    - memcpy
    - SHA256_Last
    - 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:
    - make_native_path
    - pfree
    - replace_percent_placeholders
    - pstrdup
    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
      Src: /src/postgres/src/common/parse_manifest.c:135,1
    - Dst: palloc
      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:
    - palloc
    - JsonManifestParseContext*::error_cb
    - pg_cryptohash_create
    - makeJsonLexContextIncremental
    - 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:
    - json_manifest_parse_failure
    - json_errdetail
    - JsonManifestParseContext*::error_cb
    - pg_parse_json_incremental
    - pg_cryptohash_update
    - verify_manifest_checksum
    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
    - json_manifest_parse_failure
    - json_errdetail
    - pg_parse_json
    - verify_manifest_checksum
    - makeJsonLexContextCstringLen
    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_file
    - json_manifest_parse_failure
    - json_manifest_finalize_wal_range
    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_parse_failure
    - json_manifest_finalize_system_identifier
    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:
    - JsonManifestParseContext*::version_cb
    - Assert
    - json_manifest_parse_failure
    - strtoi64
    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:
    - strtou64
    - Assert
    - json_manifest_parse_failure
    - JsonManifestParseContext*::system_identifier_cb
    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:
    - hexdecode_string
    - pfree
    - json_manifest_parse_failure
    - strtou64
    - JsonManifestParseContext*::error_cb
    - pg_checksum_parse_type
    - JsonManifestParseContext*::per_file_cb
    - palloc
    - strlen
    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:
    - pfree
    - json_manifest_parse_failure
    - strtoul
    - JsonManifestParseContext*::per_wal_range_cb
    - parse_xlogrecptr
    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:
    - hexdecode_string
    - json_manifest_parse_failure
    - JsonManifestParseContext*::error_cb
    - memcmp
    - pg_cryptohash_create
    - pg_cryptohash_final
    - pg_cryptohash_update
    - pg_cryptohash_init
    - pg_cryptohash_free
    - strlen
    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:
    - JsonManifestParseContext*::error_cb
    - pg_unreachable
    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:
    - log10Pow5
    - multipleOfPowerOf5
    - mulPow5InvDivPow2
    - multipleOfPowerOf2
    - mulPow5divPow2
    - pow5bits
    - log10Pow2
    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:
    - memset
    - memcpy
    - Assert
    - memmove
    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:
    - to_chars_f
    - decimalLength
    - memcpy
    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:
    - to_chars
    - f2d_small_int
    - float_to_bits
    - copy_special_str
    - f2d
    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:
    - palloc
    - float_to_shortest_decimal_buf
    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:
    - WIFEXITED
    - snprintf
    - WEXITSTATUS
    - WTERMSIG
    - pg_strsignal
    - pstrdup
    - _
    - WIFSIGNALED
    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:
    - WIFEXITED
    - WIFSIGNALED
    - WEXITSTATUS
    - WTERMSIG
    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:
    - WIFEXITED
    - WIFSIGNALED
    - WEXITSTATUS
    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:
    - WIFEXITED
    - WEXITSTATUS
    - WIFSIGNALED
    - WTERMSIG
    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:
    - errmsg
    - appendStringInfoChar
    - va_arg
    - appendStringInfoString
    - va_end
    - ereport
    - va_start
    - exit
    - pg_log_error_detail
    - initStringInfo
    - pg_log_error
    - errdetail
    - errcode
    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:
    - errmsg
    - ResourceOwnerRememberCryptoHash
    - FREE
    - memset
    - EVP_MD_CTX_create
    - ereport
    - ResourceOwnerEnlarge
    - ERR_clear_error
    - explicit_bzero
    - errcode
    - ALLOC
    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_sha256
    - SSLerrmessage
    - EVP_sha224
    - EVP_DigestInit_ex
    - EVP_sha384
    - EVP_sha1
    - ERR_clear_error
    - EVP_sha512
    - ERR_get_error
    - EVP_md5
    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
    - ERR_get_error
    - SSLerrmessage
    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
    - ERR_get_error
    - SSLerrmessage
    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:
    - explicit_bzero
    - FREE
    - ResourceOwnerForgetCryptoHash
    - EVP_MD_CTX_destroy
    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:57,1
    - Dst: pg_u_isalnum
      Src: /src/postgres/src/common/unicode/case_test.c:59,1
    - Dst: unicode_utf8len
      Src: /src/postgres/src/common/unicode/case_test.c:66,1
    - Dst: unicode_utf8len
      Src: /src/postgres/src/common/unicode/case_test.c:71,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 49
    functionDepth: 4
    functionLinenumber: 49
    functionLinenumberEnd: 75
    functionName: initcap_wbnext
    functionSourceFile: /src/postgres/src/common/unicode/case_test.c
    functionUses: 0
    functionsReached:
    - pg_u_isalnum
    - utf8_to_unicode
    - unicode_utf8len
    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:82,1
    - Dst: unicode_titlecase_simple
      Src: /src/postgres/src/common/unicode/case_test.c:83,1
    - Dst: unicode_uppercase_simple
      Src: /src/postgres/src/common/unicode/case_test.c:84,1
    - Dst: unicode_casefold_simple
      Src: /src/postgres/src/common/unicode/case_test.c:85,1
    - Dst: u_tolower
      Src: /src/postgres/src/common/unicode/case_test.c:86,1
    - Dst: u_totitle
      Src: /src/postgres/src/common/unicode/case_test.c:87,1
    - Dst: u_toupper
      Src: /src/postgres/src/common/unicode/case_test.c:88,1
    - Dst: u_foldCase
      Src: /src/postgres/src/common/unicode/case_test.c:89,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:94,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:97,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:99,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/case_test.c:100,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - code
    argTypes:
    - pg_wchar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 102
    functionName: icu_test_simple
    functionSourceFile: /src/postgres/src/common/unicode/case_test.c
    functionUses: 0
    functionsReached:
    - printf
    - u_toupper
    - u_totitle
    - u_tolower
    - exit
    - unicode_lowercase_simple
    - unicode_casefold_simple
    - unicode_uppercase_simple
    - unicode_titlecase_simple
    - u_foldCase
    linkageType: ''
    returnType: void
    signature: void icu_test_simple(pg_wchar code)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/common/unicode/case_test.c:120,1
    - Dst: unicode_strlower
      Src: /src/postgres/src/common/unicode/case_test.c:127,1
    - Dst: unicode_strtitle
      Src: /src/postgres/src/common/unicode/case_test.c:128,1
    - Dst: unicode_strupper
      Src: /src/postgres/src/common/unicode/case_test.c:129,1
    - Dst: unicode_strfold
      Src: /src/postgres/src/common/unicode/case_test.c:130,1
    - Dst: ucasemap_utf8ToLower
      Src: /src/postgres/src/common/unicode/case_test.c:132,1
    - Dst: ucasemap_utf8ToTitle
      Src: /src/postgres/src/common/unicode/case_test.c:134,1
    - Dst: ucasemap_utf8ToUpper
      Src: /src/postgres/src/common/unicode/case_test.c:136,1
    - Dst: ucasemap_utf8FoldCase
      Src: /src/postgres/src/common/unicode/case_test.c:138,1
    - Dst: strcmp
      Src: /src/postgres/src/common/unicode/case_test.c:140,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:142,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/case_test.c:144,1
    - Dst: strcmp
      Src: /src/postgres/src/common/unicode/case_test.c:146,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:148,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/case_test.c:150,1
    - Dst: strcmp
      Src: /src/postgres/src/common/unicode/case_test.c:152,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:154,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/case_test.c:156,1
    - Dst: strcmp
      Src: /src/postgres/src/common/unicode/case_test.c:158,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:160,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/case_test.c:162,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 104
    functionDepth: 2
    functionLinenumber: 104
    functionLinenumberEnd: 164
    functionName: icu_test_full
    functionSourceFile: /src/postgres/src/common/unicode/case_test.c
    functionUses: 0
    functionsReached:
    - ucasemap_utf8ToLower
    - strcmp
    - printf
    - unicode_strfold
    - unicode_strtitle
    - ucasemap_utf8ToTitle
    - ucasemap_utf8ToUpper
    - exit
    - unicode_strupper
    - ucasemap_utf8FoldCase
    - unicode_strlower
    - strlen
    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:177,1
    - Dst: u_charType
      Src: /src/postgres/src/common/unicode/case_test.c:181,1
    - Dst: icu_test_simple
      Src: /src/postgres/src/common/unicode/case_test.c:190,1
    - Dst: unicode_to_utf8
      Src: /src/postgres/src/common/unicode/case_test.c:191,1
    - Dst: icu_test_full
      Src: /src/postgres/src/common/unicode/case_test.c:192,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:199,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:202,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 169
    functionDepth: 3
    functionLinenumber: 169
    functionLinenumberEnd: 204
    functionName: test_icu
    functionSourceFile: /src/postgres/src/common/unicode/case_test.c
    functionUses: 0
    functionsReached:
    - printf
    - u_charType
    - icu_test_full
    - unicode_category
    - icu_test_simple
    - unicode_to_utf8
    linkageType: ''
    returnType: void
    signature: void test_icu(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/common/unicode/case_test.c:210,1
    - Dst: strlen
      Src: /src/postgres/src/common/unicode/case_test.c:212,1
    - Dst: strlen
      Src: /src/postgres/src/common/unicode/case_test.c:213,1
    - Dst: malloc
      Src: /src/postgres/src/common/unicode/case_test.c:214,1
    - Dst: malloc
      Src: /src/postgres/src/common/unicode/case_test.c:215,1
    - Dst: strdup
      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: memcpy
      Src: /src/postgres/src/common/unicode/case_test.c:220,1
    - Dst: memset
      Src: /src/postgres/src/common/unicode/case_test.c:223,1
    - Dst: tfunc
      Src: /src/postgres/src/common/unicode/case_test.c:224,1
    - Dst: strlen
      Src: /src/postgres/src/common/unicode/case_test.c:225,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:227,1
    - Dst: strlen
      Src: /src/postgres/src/common/unicode/case_test.c:228,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/case_test.c:229,1
    - Dst: memcmp
      Src: /src/postgres/src/common/unicode/case_test.c:231,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:233,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/case_test.c:235,1
    - Dst: memset
      Src: /src/postgres/src/common/unicode/case_test.c:239,1
    - Dst: tfunc
      Src: /src/postgres/src/common/unicode/case_test.c:240,1
    - Dst: strlen
      Src: /src/postgres/src/common/unicode/case_test.c:241,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:243,1
    - Dst: strlen
      Src: /src/postgres/src/common/unicode/case_test.c:244,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/case_test.c:245,1
    - Dst: strcmp
      Src: /src/postgres/src/common/unicode/case_test.c:247,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:249,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/case_test.c:251,1
    - Dst: memset
      Src: /src/postgres/src/common/unicode/case_test.c:255,1
    - Dst: tfunc
      Src: /src/postgres/src/common/unicode/case_test.c:256,1
    - Dst: strlen
      Src: /src/postgres/src/common/unicode/case_test.c:257,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:259,1
    - Dst: strlen
      Src: /src/postgres/src/common/unicode/case_test.c:260,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:261,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/case_test.c:262,1
    - Dst: memcmp
      Src: /src/postgres/src/common/unicode/case_test.c:264,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:266,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/case_test.c:268,1
    - Dst: memset
      Src: /src/postgres/src/common/unicode/case_test.c:272,1
    - Dst: tfunc
      Src: /src/postgres/src/common/unicode/case_test.c:273,1
    - Dst: strlen
      Src: /src/postgres/src/common/unicode/case_test.c:274,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:276,1
    - Dst: strlen
      Src: /src/postgres/src/common/unicode/case_test.c:277,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/case_test.c:278,1
    - Dst: strcmp
      Src: /src/postgres/src/common/unicode/case_test.c:280,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:282,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/case_test.c:284,1
    - Dst: free
      Src: /src/postgres/src/common/unicode/case_test.c:287,1
    - Dst: free
      Src: /src/postgres/src/common/unicode/case_test.c:288,1
    - Dst: free
      Src: /src/postgres/src/common/unicode/case_test.c:289,1
    - Dst: free
      Src: /src/postgres/src/common/unicode/case_test.c:290,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 47
    argCount: 3
    argNames:
    - tfunc
    - test_string
    - expected
    argTypes:
    - TestFunc
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 291
    functionName: test_convert
    functionSourceFile: /src/postgres/src/common/unicode/case_test.c
    functionUses: 0
    functionsReached:
    - printf
    - malloc
    - tfunc
    - memset
    - memcmp
    - exit
    - strdup
    - free
    - memcpy
    - strcmp
    - strlen
    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:297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - dst
    - dstsize
    - src
    - srclen
    argTypes:
    - char*
    - size_t
    - char*
    - ssize_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 293
    functionDepth: 2
    functionLinenumber: 293
    functionLinenumberEnd: 298
    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\tssize_t
      srclen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_strtitle
      Src: /src/postgres/src/common/unicode/case_test.c:312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - dst
    - dstsize
    - src
    - srclen
    argTypes:
    - char*
    - size_t
    - char*
    - ssize_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 300
    functionDepth: 2
    functionLinenumber: 300
    functionLinenumberEnd: 314
    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\tssize_t
      srclen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_strupper
      Src: /src/postgres/src/common/unicode/case_test.c:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - dst
    - dstsize
    - src
    - srclen
    argTypes:
    - char*
    - size_t
    - char*
    - ssize_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 316
    functionDepth: 2
    functionLinenumber: 316
    functionLinenumberEnd: 321
    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\tssize_t
      srclen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_strfold
      Src: /src/postgres/src/common/unicode/case_test.c:327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - dst
    - dstsize
    - src
    - srclen
    argTypes:
    - char*
    - size_t
    - char*
    - ssize_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 323
    functionDepth: 2
    functionLinenumber: 323
    functionLinenumberEnd: 328
    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
      \  ssize_t srclen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:334,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:336,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:338,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:340,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:342,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:343,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:344,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:345,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:347,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:348,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:349,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:350,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:352,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:353,1
    - Dst: test_convert
      Src: /src/postgres/src/common/unicode/case_test.c:355,1
    - Dst: icu_test_full
      Src: /src/postgres/src/common/unicode/case_test.c:359,1
    - Dst: icu_test_full
      Src: /src/postgres/src/common/unicode/case_test.c:360,1
    - Dst: icu_test_full
      Src: /src/postgres/src/common/unicode/case_test.c:361,1
    - Dst: icu_test_full
      Src: /src/postgres/src/common/unicode/case_test.c:362,1
    - Dst: icu_test_full
      Src: /src/postgres/src/common/unicode/case_test.c:363,1
    - Dst: icu_test_full
      Src: /src/postgres/src/common/unicode/case_test.c:364,1
    - Dst: icu_test_full
      Src: /src/postgres/src/common/unicode/case_test.c:365,1
    - Dst: icu_test_full
      Src: /src/postgres/src/common/unicode/case_test.c:366,1
    - Dst: icu_test_full
      Src: /src/postgres/src/common/unicode/case_test.c:367,1
    - Dst: icu_test_full
      Src: /src/postgres/src/common/unicode/case_test.c:369,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 330
    functionDepth: 3
    functionLinenumber: 330
    functionLinenumberEnd: 373
    functionName: test_convert_case
    functionSourceFile: /src/postgres/src/common/unicode/case_test.c
    functionUses: 0
    functionsReached:
    - icu_test_full
    - printf
    - test_convert
    linkageType: ''
    returnType: void
    signature: void test_convert_case()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ucasemap_open
      Src: /src/postgres/src/common/unicode/case_test.c:385,1
    - Dst: U_FAILURE
      Src: /src/postgres/src/common/unicode/case_test.c:386,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:388,1
    - Dst: u_errorName
      Src: /src/postgres/src/common/unicode/case_test.c:389,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/case_test.c:390,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:394,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:396,1
    - Dst: test_icu
      Src: /src/postgres/src/common/unicode/case_test.c:397,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/case_test.c:399,1
    - Dst: test_convert_case
      Src: /src/postgres/src/common/unicode/case_test.c:402,1
    - Dst: ucasemap_close
      Src: /src/postgres/src/common/unicode/case_test.c:405,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/case_test.c:407,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 375
    functionDepth: 4
    functionLinenumber: 375
    functionLinenumberEnd: 408
    functionName: main
    functionSourceFile: /src/postgres/src/common/unicode/case_test.c
    functionUses: 12
    functionsReached:
    - printf
    - u_errorName
    - test_icu
    - exit
    - ucasemap_close
    - test_convert_case
    - U_FAILURE
    - ucasemap_open
    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:
    - pg_wchar*
    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 pg_wchar *s)'
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - pg_wchar*
    - pg_wchar*
    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 pg_wchar *s1, const pg_wchar *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: 12
    functionsReached:
    - printf
    - pg_wcscmp
    - unicode_normalize
    - exit
    - print_wchar_str
    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:41,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode/category_test.c:43,1
    - Dst: Assert
      Src: /src/postgres/src/common/unicode/category_test.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - version
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 47
    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:64,1
    - Dst: u_charType
      Src: /src/postgres/src/common/unicode/category_test.c:65,1
    - Dst: pg_u_prop_alphabetic
      Src: /src/postgres/src/common/unicode/category_test.c:68,1
    - Dst: pg_u_prop_lowercase
      Src: /src/postgres/src/common/unicode/category_test.c:69,1
    - Dst: pg_u_prop_uppercase
      Src: /src/postgres/src/common/unicode/category_test.c:70,1
    - Dst: pg_u_prop_cased
      Src: /src/postgres/src/common/unicode/category_test.c:71,1
    - Dst: pg_u_prop_case_ignorable
      Src: /src/postgres/src/common/unicode/category_test.c:72,1
    - Dst: pg_u_prop_white_space
      Src: /src/postgres/src/common/unicode/category_test.c:73,1
    - Dst: pg_u_prop_hex_digit
      Src: /src/postgres/src/common/unicode/category_test.c:74,1
    - Dst: pg_u_prop_join_control
      Src: /src/postgres/src/common/unicode/category_test.c:75,1
    - Dst: u_hasBinaryProperty
      Src: /src/postgres/src/common/unicode/category_test.c:77,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: pg_u_isalpha
      Src: /src/postgres/src/common/unicode/category_test.c:98,1
    - Dst: pg_u_islower
      Src: /src/postgres/src/common/unicode/category_test.c:99,1
    - Dst: pg_u_isupper
      Src: /src/postgres/src/common/unicode/category_test.c:100,1
    - Dst: pg_u_ispunct
      Src: /src/postgres/src/common/unicode/category_test.c:101,1
    - Dst: pg_u_isdigit
      Src: /src/postgres/src/common/unicode/category_test.c:102,1
    - Dst: pg_u_isxdigit
      Src: /src/postgres/src/common/unicode/category_test.c:103,1
    - Dst: pg_u_isalnum
      Src: /src/postgres/src/common/unicode/category_test.c:104,1
    - Dst: pg_u_isspace
      Src: /src/postgres/src/common/unicode/category_test.c:105,1
    - Dst: pg_u_isblank
      Src: /src/postgres/src/common/unicode/category_test.c:106,1
    - Dst: pg_u_iscntrl
      Src: /src/postgres/src/common/unicode/category_test.c:107,1
    - Dst: pg_u_isgraph
      Src: /src/postgres/src/common/unicode/category_test.c:108,1
    - Dst: pg_u_isprint
      Src: /src/postgres/src/common/unicode/category_test.c:109,1
    - Dst: u_isUAlphabetic
      Src: /src/postgres/src/common/unicode/category_test.c:111,1
    - Dst: u_isULowercase
      Src: /src/postgres/src/common/unicode/category_test.c:112,1
    - Dst: u_isUUppercase
      Src: /src/postgres/src/common/unicode/category_test.c:113,1
    - Dst: u_ispunct
      Src: /src/postgres/src/common/unicode/category_test.c:114,1
    - Dst: u_isdigit
      Src: /src/postgres/src/common/unicode/category_test.c:115,1
    - Dst: u_hasBinaryProperty
      Src: /src/postgres/src/common/unicode/category_test.c:116,1
    - Dst: u_hasBinaryProperty
      Src: /src/postgres/src/common/unicode/category_test.c:118,1
    - Dst: u_isUWhiteSpace
      Src: /src/postgres/src/common/unicode/category_test.c:120,1
    - Dst: u_isblank
      Src: /src/postgres/src/common/unicode/category_test.c:121,1
    - Dst: u_hasBinaryProperty
      Src: /src/postgres/src/common/unicode/category_test.c:123,1
    - Dst: u_hasBinaryProperty
      Src: /src/postgres/src/common/unicode/category_test.c:125,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:152,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:153,1
    - Dst: unicode_category_abbrev
      Src: /src/postgres/src/common/unicode/category_test.c:154,1
    - Dst: unicode_category_string
      Src: /src/postgres/src/common/unicode/category_test.c:155,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:156,1
    - Dst: unicode_category_abbrev
      Src: /src/postgres/src/common/unicode/category_test.c:157,1
    - Dst: unicode_category_string
      Src: /src/postgres/src/common/unicode/category_test.c:158,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:159,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/category_test.c:160,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:172,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:177,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:181,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/category_test.c:182,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:198,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:201,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:203,1
    - Dst: exit
      Src: /src/postgres/src/common/unicode/category_test.c:204,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:212,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:215,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:218,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 55
    functionDepth: 4
    functionLinenumber: 55
    functionLinenumberEnd: 219
    functionName: icu_test
    functionSourceFile: /src/postgres/src/common/unicode/category_test.c
    functionUses: 0
    functionsReached:
    - pg_u_prop_hex_digit
    - pg_u_iscntrl
    - exit
    - u_isdigit
    - u_isUWhiteSpace
    - pg_u_prop_cased
    - pg_u_isalpha
    - pg_u_isalnum
    - unicode_category
    - pg_u_isblank
    - pg_u_isspace
    - pg_u_prop_uppercase
    - pg_u_prop_case_ignorable
    - pg_u_isgraph
    - unicode_category_string
    - pg_u_isprint
    - pg_u_prop_white_space
    - pg_u_prop_join_control
    - u_isUAlphabetic
    - u_isUUppercase
    - pg_u_isxdigit
    - pg_u_prop_alphabetic
    - unicode_category_abbrev
    - pg_u_isdigit
    - pg_u_isupper
    - printf
    - u_ispunct
    - u_charType
    - pg_u_ispunct
    - u_isblank
    - pg_u_prop_lowercase
    - pg_u_islower
    - u_isULowercase
    - u_hasBinaryProperty
    linkageType: ''
    returnType: void
    signature: void icu_test()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parse_unicode_version
      Src: /src/postgres/src/common/unicode/category_test.c:225,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:226,1
    - Dst: parse_unicode_version
      Src: /src/postgres/src/common/unicode/category_test.c:229,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:230,1
    - Dst: icu_test
      Src: /src/postgres/src/common/unicode/category_test.c:232,1
    - Dst: printf
      Src: /src/postgres/src/common/unicode/category_test.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 222
    functionDepth: 5
    functionLinenumber: 222
    functionLinenumberEnd: 236
    functionName: main
    functionSourceFile: /src/postgres/src/common/unicode/category_test.c
    functionUses: 12
    functionsReached:
    - printf
    - icu_test
    - parse_unicode_version
    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
      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:
    - errmsg
    - PG_GETARG_CSTRING
    - sscanf
    - ereport
    - palloc
    - errcode
    - 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
    - PG_RETURN_CSTRING
    - psprintf
    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
      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
    - palloc
    - PG_RETURN_POINTER
    - pq_getmsgfloat8
    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:
    - PG_GETARG_POINTER
    - pq_endtypsend
    - pq_sendfloat8
    - PG_RETURN_BYTEA_P
    - pq_begintypsend
    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
      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
    - palloc
    - PG_RETURN_POINTER
    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:
    - PG_GETARG_POINTER
    - PG_RETURN_BOOL
    - complex_abs_cmp_internal
    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:
    - PG_GETARG_POINTER
    - PG_RETURN_BOOL
    - complex_abs_cmp_internal
    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:
    - PG_GETARG_POINTER
    - PG_RETURN_BOOL
    - complex_abs_cmp_internal
    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:
    - PG_GETARG_POINTER
    - PG_RETURN_BOOL
    - complex_abs_cmp_internal
    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:
    - PG_GETARG_POINTER
    - PG_RETURN_BOOL
    - complex_abs_cmp_internal
    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:
    - PG_GETARG_POINTER
    - complex_abs_cmp_internal
    - 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:27,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/tutorial/funcs.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 30
    functionName: add_one
    functionSourceFile: /src/postgres/src/tutorial/funcs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_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:40,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/tutorial/funcs.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 43
    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:50,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/tutorial/funcs.c:51,1
    - Dst: palloc
      Src: /src/postgres/src/tutorial/funcs.c:52,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/tutorial/funcs.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 58
    functionName: makepoint
    functionSourceFile: /src/postgres/src/tutorial/funcs.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - palloc
    - PG_RETURN_POINT_P
    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:67,1
    - Dst: palloc
      Src: /src/postgres/src/tutorial/funcs.c:74,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/tutorial/funcs.c:74,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/tutorial/funcs.c:76,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/tutorial/funcs.c:76,1
    - Dst: memcpy
      Src: /src/postgres/src/tutorial/funcs.c:82,1
    - Dst: VARDATA
      Src: /src/postgres/src/tutorial/funcs.c:82,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/tutorial/funcs.c:83,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/tutorial/funcs.c:84,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/tutorial/funcs.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 86
    functionName: copytext
    functionSourceFile: /src/postgres/src/tutorial/funcs.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - VARDATA
    - VARDATA_ANY
    - PG_RETURN_TEXT_P
    - VARSIZE_ANY_EXHDR
    - memcpy
    - palloc
    - SET_VARSIZE
    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:93,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/tutorial/funcs.c:94,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/tutorial/funcs.c:95,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/tutorial/funcs.c:96,1
    - Dst: palloc
      Src: /src/postgres/src/tutorial/funcs.c:98,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/tutorial/funcs.c:100,1
    - Dst: memcpy
      Src: /src/postgres/src/tutorial/funcs.c:101,1
    - Dst: VARDATA
      Src: /src/postgres/src/tutorial/funcs.c:101,1
    - Dst: VARDATA_ANY
      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: PG_RETURN_TEXT_P
      Src: /src/postgres/src/tutorial/funcs.c:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 104
    functionName: concat_text
    functionSourceFile: /src/postgres/src/tutorial/funcs.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - VARDATA
    - VARDATA_ANY
    - PG_RETURN_TEXT_P
    - VARSIZE_ANY_EXHDR
    - memcpy
    - palloc
    - SET_VARSIZE
    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:113,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/tutorial/funcs.c:114,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/tutorial/funcs.c:115,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/tutorial/funcs.c:118,1
    - Dst: DirectFunctionCall2Coll
      Src: /src/postgres/src/tutorial/funcs.c:118,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/tutorial/funcs.c:120,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/tutorial/funcs.c:121,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/tutorial/funcs.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 123
    functionName: t_starts_with
    functionSourceFile: /src/postgres/src/tutorial/funcs.c
    functionUses: 0
    functionsReached:
    - DirectFunctionCall2Coll
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PointerGetDatum
    - PG_GET_COLLATION
    - DatumGetBool
    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:132,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/tutorial/funcs.c:133,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/tutorial/funcs.c:137,1
    - Dst: GetAttributeByName
      Src: /src/postgres/src/tutorial/funcs.c:137,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/tutorial/funcs.c:139,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/tutorial/funcs.c:145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 146
    functionName: c_overpaid
    functionSourceFile: /src/postgres/src/tutorial/funcs.c
    functionUses: 0
    functionsReached:
    - DatumGetInt32
    - PG_RETURN_BOOL
    - GetAttributeByName
    - PG_GETARG_INT32
    - PG_GETARG_HEAPTUPLEHEADER
    linkageType: ''
    returnType: Datum
    signature: Datum c_overpaid(PG_FUNCTION_ARGS)
  - 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
    - gss_display_status
    - appendBinaryPQExpBuffer
    - gss_release_buffer
    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
    - pg_GSS_error_int
    - appendPQExpBuffer
    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
    - malloc
    - PQhost
    - gss_import_name
    - snprintf
    - libpq_append_conn_error
    - free
    - libpq_gettext
    - strlen
    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:
    - unconstify
    - free
    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: 192
    functionsReached:
    - malloc
    - initPQExpBuffer
    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:
    - unconstify
    - malloc
    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: 183
    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:
    - unconstify
    - free
    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:
    - markPQExpBufferBroken
    - realloc
    - 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: 95
    functionsReached:
    - appendPQExpBufferVA
    - va_end
    - resetPQExpBuffer
    - PQExpBufferBroken
    - va_start
    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: 218
    functionsReached:
    - appendPQExpBufferVA
    - va_end
    - va_start
    - 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
    - enlargePQExpBuffer
    - markPQExpBufferBroken
    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: 247
    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: 78
    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:163,1
    - Dst: pqSetResultError
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:209,1
    - Dst: dupEvents
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:216,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:220,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 57
    argCount: 2
    argNames:
    - conn
    - status
    argTypes:
    - PGconn*
    - ExecStatusType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 237
    functionName: PQmakeEmptyPGresult
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - malloc
    - dupEvents
    - pqSetResultError
    - 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:266,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:272,1
    - Dst: pqResultStrdup
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:279,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 3
    argNames:
    - res
    - numAttributes
    - attDescs
    argTypes:
    - PGresult*
    - int
    - PGresAttDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 291
    functionName: PQsetResultAttrs
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - memcpy
    - PQresultAlloc
    - pqResultStrdup
    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:326,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:332,1
    - Dst: PQsetResultAttrs
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:337,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:339,1
    - Dst: PQsetvalue
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:354,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:358,1
    - Dst: dupEvents
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:372,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:376,1
    - Dst: proc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:392,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 43
    argCount: 2
    argNames:
    - src
    - flags
    argTypes:
    - PGresult*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 317
    functionDepth: 2
    functionLinenumber: 317
    functionLinenumberEnd: 399
    functionName: PQcopyResult
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - PQsetResultAttrs
    - dupEvents
    - PQsetvalue
    - PQclear
    - PQmakeEmptyPGresult
    - 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:418,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:428,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:432,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:433,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:436,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - events
    - count
    - memSize
    argTypes:
    - PGEvent*
    - int
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 407
    functionDepth: 1
    functionLinenumber: 407
    functionLinenumberEnd: 441
    functionName: dupEvents
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 2
    functionsReached:
    - strlen
    - malloc
    - strdup
    - free
    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:462,1
    - Dst: pqInternalNotice
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:468,1
    - Dst: pqResultAlloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:481,1
    - Dst: pqAddTuple
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:495,1
    - Dst: pqResultAlloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:514,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:518,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:530,1
    - Dst: pqInternalNotice
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:531,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: 534
      start: 451
    functionDepth: 1
    functionLinenumber: 451
    functionLinenumberEnd: 534
    functionName: PQsetvalue
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - pqInternalNotice
    - check_field_number
    - pqResultAlloc
    - pqAddTuple
    - libpq_gettext
    - memcpy
    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:549,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - res
    - nBytes
    argTypes:
    - PGresult*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 542
    functionDepth: 1
    functionLinenumber: 542
    functionLinenumberEnd: 550
    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: 11
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:608,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:633,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 50
    argCount: 3
    argNames:
    - res
    - nBytes
    - isBinary
    argTypes:
    - PGresult*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 562
    functionDepth: 1
    functionLinenumber: 562
    functionLinenumberEnd: 656
    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: 668
      start: 662
    functionDepth: 0
    functionLinenumber: 662
    functionLinenumberEnd: 668
    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:677,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:677,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:680,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - res
    - str
    argTypes:
    - PGresult*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 674
    functionDepth: 2
    functionLinenumber: 674
    functionLinenumberEnd: 682
    functionName: pqResultStrdup
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - strcpy
    - strlen
    - pqResultAlloc
    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:706,1
    - Dst: pqResultStrdup
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:707,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:713,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - res
    - errorMessage
    - offset
    argTypes:
    - PGresult*
    - PQExpBuffer
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 691
    functionDepth: 3
    functionLinenumber: 691
    functionLinenumberEnd: 714
    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:742,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:745,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:748,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:758,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:770,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 1
    argNames:
    - res
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 720
    functionDepth: 1
    functionLinenumber: 720
    functionLinenumberEnd: 771
    functionName: PQclear
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 297
    functionsReached:
    - proc
    - free
    linkageType: ''
    returnType: void
    signature: void PQclear(PGresult *res)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:781,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:784,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 778
    functionDepth: 2
    functionLinenumber: 778
    functionLinenumberEnd: 786
    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:806,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 802
    functionDepth: 3
    functionLinenumber: 802
    functionLinenumberEnd: 809
    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:829,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:834,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:836,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 819
    functionDepth: 4
    functionLinenumber: 819
    functionLinenumberEnd: 837
    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:874,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:886,1
    - Dst: pqSetResultError
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:894,1
    - Dst: unconstify
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:906,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 850
    functionDepth: 4
    functionLinenumber: 850
    functionLinenumberEnd: 926
    functionName: pqPrepareAsyncResult
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - PQmakeEmptyPGresult
    - unconstify
    - libpq_append_conn_error
    - pqSetResultError
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      pqPrepareAsyncResult(PGconn *conn)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:948,1
    - Dst: vsnprintf
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:949,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:949,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:950,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:954,1
    - Dst: pqSaveMessageField
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:962,1
    - Dst: pqSaveMessageField
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:963,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:963,1
    - Dst: pqSaveMessageField
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:964,1
    - Dst: pqResultAlloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:971,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:971,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:973,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:975,1
    - Dst: PGresult*::noticeHooks::noticeRec
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:980,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:981,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - hooks
    - fmt
    argTypes:
    - PGNoticeHooks*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 937
    functionDepth: 2
    functionLinenumber: 937
    functionLinenumberEnd: 982
    functionName: pqInternalNotice
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - vsnprintf
    - va_end
    - pqSaveMessageField
    - pqResultAlloc
    - PGresult*::noticeHooks::noticeRec
    - libpq_gettext
    - PQclear
    - sprintf
    - va_start
    - PQmakeEmptyPGresult
    - strlen
    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:1021,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1033,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1040,1
    - Dst: realloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1043,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - res
    - tup
    - errmsgp
    argTypes:
    - PGresult*
    - PGresAttValue*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 992
    functionDepth: 1
    functionLinenumber: 992
    functionLinenumberEnd: 1054
    functionName: pqAddTuple
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - realloc
    - malloc
    - libpq_gettext
    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:1065,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1067,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1072,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - res
    - code
    - value
    argTypes:
    - PGresult*
    - char
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1075
      start: 1059
    functionDepth: 2
    functionLinenumber: 1059
    functionLinenumberEnd: 1075
    functionName: pqSaveMessageField
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - strcpy
    - strlen
    - pqResultAlloc
    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:1093,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1099,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1107,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1108,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1108,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1115,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1116,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1118,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1130,1
    - Dst: pg_char_to_encoding
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1132,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1138,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1140,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1143,1
    - Dst: sscanf
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1151,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1179,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1182,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1184,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1187,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1189,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1191,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 57
    argCount: 3
    argNames:
    - conn
    - name
    - value
    argTypes:
    - PGconn*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1193
      start: 1080
    functionDepth: 2
    functionLinenumber: 1080
    functionLinenumberEnd: 1193
    functionName: pqSaveParameterStatus
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - malloc
    - atoi
    - sscanf
    - free
    - strcmp
    - pg_char_to_encoding
    - strlen
    - strcpy
    linkageType: ''
    returnType: void
    signature: void pqSaveParameterStatus(PGconn *conn, const char *name, const char
      *value)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PQcopyResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1225,1
    - Dst: pqResultAlloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1247,1
    - Dst: pqResultAlloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1266,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1271,1
    - Dst: pqAddTuple
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1280,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 2
    argNames:
    - conn
    - errmsgp
    argTypes:
    - PGconn*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1291
      start: 1205
    functionDepth: 3
    functionLinenumber: 1205
    functionLinenumberEnd: 1291
    functionName: pqRowProcessor
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - pqAddTuple
    - memcpy
    - PQcopyResult
    - pqResultAlloc
    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:1312,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1315,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1328
      start: 1305
    functionDepth: 1
    functionLinenumber: 1305
    functionLinenumberEnd: 1328
    functionName: pqAllocCmdQueueEntry
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - malloc
    - libpq_append_conn_error
    linkageType: ''
    returnType: PGcmdQueueEntry
    signature: 'PGcmdQueueEntry *

      pqAllocCmdQueueEntry(PGconn *conn)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1341,1
    - Dst: pqPipelineProcessQueue
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1376,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - conn
    - entry
    argTypes:
    - PGconn*
    - PGcmdQueueEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1379
      start: 1338
    functionDepth: 1
    functionLinenumber: 1338
    functionLinenumberEnd: 1379
    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:1392,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1396,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - conn
    - entry
    argTypes:
    - PGconn*
    - PGcmdQueueEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1402
      start: 1385
    functionDepth: 1
    functionLinenumber: 1385
    functionLinenumberEnd: 1402
    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:1418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - query
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1419
      start: 1415
    functionDepth: 1
    functionLinenumber: 1415
    functionLinenumberEnd: 1419
    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:1424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - query
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1425
      start: 1421
    functionDepth: 1
    functionLinenumber: 1421
    functionLinenumberEnd: 1425
    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:1432,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1438,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1444,1
    - Dst: pqAllocCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1449,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1455,1
    - Dst: pqPuts
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1456,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1457,1
    - Dst: pqRecycleCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1460,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1467,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1473,1
    - Dst: pqAppendCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1477,1
    - Dst: pqRecycleCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1482,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 3
    argNames:
    - conn
    - query
    - newQuery
    argTypes:
    - PGconn*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1485
      start: 1427
    functionDepth: 2
    functionLinenumber: 1427
    functionLinenumberEnd: 1485
    functionName: PQsendQueryInternal
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 2
    functionsReached:
    - pqFlush
    - pqPutMsgEnd
    - PQsendQueryStart
    - pqAllocCmdQueueEntry
    - pqPutMsgStart
    - libpq_append_conn_error
    - strdup
    - pqAppendCmdQueueEntry
    - pqRecycleCmdQueueEntry
    - pqPuts
    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:1501,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1507,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1512,1
    - Dst: PQsendQueryGuts
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1517,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: 1526
      start: 1491
    functionDepth: 1
    functionLinenumber: 1491
    functionLinenumberEnd: 1526
    functionName: PQsendQueryParams
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 12
    functionsReached:
    - PQsendQueryStart
    - libpq_append_conn_error
    - 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:1542,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1548,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1553,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1558,1
    - Dst: pqAllocCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1563,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1568,1
    - Dst: pqPuts
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1569,1
    - Dst: pqPuts
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1570,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1577,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1581,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1587,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1590,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1596,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1597,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1606,1
    - Dst: pqPipelineFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1613,1
    - Dst: pqAppendCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1617,1
    - Dst: pqRecycleCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1622,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: 1625
      start: 1535
    functionDepth: 2
    functionLinenumber: 1535
    functionLinenumberEnd: 1625
    functionName: PQsendPrepare
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 4
    functionsReached:
    - pqPutMsgEnd
    - pqPipelineFlush
    - PQsendQueryStart
    - pqAllocCmdQueueEntry
    - pqPutInt
    - pqPutMsgStart
    - libpq_append_conn_error
    - strdup
    - pqAppendCmdQueueEntry
    - pqRecycleCmdQueueEntry
    - pqPuts
    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:1641,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1647,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1652,1
    - Dst: PQsendQueryGuts
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1657,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: 1666
      start: 1632
    functionDepth: 1
    functionLinenumber: 1632
    functionLinenumberEnd: 1666
    functionName: PQsendQueryPrepared
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 6
    functionsReached:
    - PQsendQueryStart
    - libpq_append_conn_error
    - 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:1684,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1689,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1697,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1727,1
    - Dst: pqClearAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1737,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 2
    argNames:
    - conn
    - newQuery
    argTypes:
    - PGconn*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1747
      start: 1672
    functionDepth: 3
    functionLinenumber: 1672
    functionLinenumberEnd: 1747
    functionName: PQsendQueryStart
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 4
    functionsReached:
    - libpq_append_conn_error
    - pqClearConnErrorState
    - pqClearAsyncResult
    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:1770,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1783,1
    - Dst: pqPuts
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1784,1
    - Dst: pqPuts
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1785,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1789,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1793,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1799,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1802,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1807,1
    - Dst: pqPuts
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1808,1
    - Dst: pqPuts
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1809,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1815,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1819,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1825,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1829,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1846,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1853,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1855,1
    - Dst: pqPutnchar
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1856,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1862,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1866,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1867,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1869,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1873,1
    - Dst: pqPutc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1874,1
    - Dst: pqPuts
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1875,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1876,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1880,1
    - Dst: pqPuts
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1881,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1882,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1883,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1889,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1890,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1900,1
    - Dst: pqPipelineFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1907,1
    - Dst: pqAppendCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1911,1
    - Dst: pqRecycleCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1916,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: 1919
      start: 1756
    functionDepth: 2
    functionLinenumber: 1756
    functionLinenumberEnd: 1919
    functionName: PQsendQueryGuts
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 2
    functionsReached:
    - pqPutMsgEnd
    - pqRecycleCmdQueueEntry
    - pqPipelineFlush
    - pqPutc
    - pqAllocCmdQueueEntry
    - pqPutInt
    - pqPutMsgStart
    - libpq_append_conn_error
    - pqPutnchar
    - strdup
    - pqAppendCmdQueueEntry
    - strlen
    - pqPuts
    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:1939,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1942
      start: 1924
    functionDepth: 1
    functionLinenumber: 1924
    functionLinenumberEnd: 1942
    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:1950,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1959
      start: 1947
    functionDepth: 2
    functionLinenumber: 1947
    functionLinenumberEnd: 1959
    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:1967,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - conn
    - chunkSize
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1976
      start: 1964
    functionDepth: 2
    functionLinenumber: 1964
    functionLinenumberEnd: 1976
    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:1994,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:1996,1
    - Dst: pqReadData
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2006,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2011
      start: 1983
    functionDepth: 1
    functionLinenumber: 1983
    functionLinenumberEnd: 2011
    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:2022,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2023
      start: 2019
    functionDepth: 1
    functionLinenumber: 2019
    functionLinenumberEnd: 2023
    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:2037,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2048
      start: 2030
    functionDepth: 2
    functionLinenumber: 2030
    functionLinenumberEnd: 2048
    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:2070,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2081,1
    - Dst: pqWait
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2083,1
    - Dst: pqWait
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2098,1
    - Dst: pqReadData
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2099,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2102,1
    - Dst: pqPrepareAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2104,1
    - Dst: parseInput
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2108,1
    - Dst: pqSaveWriteError
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2116,1
    - Dst: pqPrepareAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2118,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2129,1
    - Dst: pqPipelineProcessQueue
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2137,1
    - Dst: pqPrepareAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2142,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2154,1
    - Dst: pqCommandQueueAdvance
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2159,1
    - Dst: pqPipelineProcessQueue
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2182,1
    - Dst: pqPrepareAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2191,1
    - Dst: getCopyResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2196,1
    - Dst: getCopyResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2199,1
    - Dst: getCopyResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2202,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2205,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2206,1
    - Dst: pqPrepareAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2208,1
    - Dst: PQfireResultCreateEvents
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2214,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 70
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2217
      start: 2061
    functionDepth: 5
    functionLinenumber: 2061
    functionLinenumberEnd: 2217
    functionName: PQgetResult
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 33
    functionsReached:
    - pqFlush
    - pqSaveWriteError
    - Assert
    - pqPipelineProcessQueue
    - pqSaveErrorResult
    - pqCommandQueueAdvance
    - parseInput
    - PQfireResultCreateEvents
    - pqWait
    - libpq_append_conn_error
    - pqPrepareAsyncResult
    - getCopyResult
    - pqReadData
    linkageType: ''
    returnType: PGresult
    signature: 'PGresult *

      PQgetResult(PGconn *conn)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2236,1
    - Dst: pqPrepareAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2238,1
    - Dst: pqPrepareAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2243,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2246,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - conn
    - copytype
    argTypes:
    - PGconn*
    - ExecStatusType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2247
      start: 2223
    functionDepth: 5
    functionLinenumber: 2223
    functionLinenumberEnd: 2247
    functionName: getCopyResult
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - pqPrepareAsyncResult
    - PQmakeEmptyPGresult
    - pqSaveErrorResult
    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:2264,1
    - Dst: PQsendQuery
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2266,1
    - Dst: PQexecFinish
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2268,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - query
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2269
      start: 2261
    functionDepth: 2
    functionLinenumber: 2261
    functionLinenumberEnd: 2269
    functionName: PQexec
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 76
    functionsReached:
    - PQsendQuery
    - PQexecFinish
    - 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:2285,1
    - Dst: PQsendQueryParams
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2287,1
    - Dst: PQexecFinish
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2291,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: 2292
      start: 2275
    functionDepth: 2
    functionLinenumber: 2275
    functionLinenumberEnd: 2292
    functionName: PQexecParams
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 5
    functionsReached:
    - PQexecFinish
    - PQsendQueryParams
    - 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:2310,1
    - Dst: PQsendPrepare
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2312,1
    - Dst: PQexecFinish
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2314,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: 2315
      start: 2305
    functionDepth: 3
    functionLinenumber: 2305
    functionLinenumberEnd: 2315
    functionName: PQprepare
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 5
    functionsReached:
    - PQsendPrepare
    - PQexecFinish
    - 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:2331,1
    - Dst: PQsendQueryPrepared
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2333,1
    - Dst: PQexecFinish
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2337,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: 2338
      start: 2322
    functionDepth: 2
    functionLinenumber: 2322
    functionLinenumberEnd: 2338
    functionName: PQexecPrepared
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - PQsendQueryPrepared
    - PQexecFinish
    - 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:2357,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2361,1
    - Dst: PQgetResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2369,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2373,1
    - Dst: PQputCopyEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2377,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2378,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2394,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2404
      start: 2343
    functionDepth: 6
    functionLinenumber: 2343
    functionLinenumberEnd: 2404
    functionName: PQexecStart
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 4
    functionsReached:
    - PQputCopyEnd
    - pqClearConnErrorState
    - PQgetResult
    - libpq_append_conn_error
    - libpq_gettext
    - PQclear
    linkageType: ''
    returnType: bool
    signature: bool PQexecStart(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQgetResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2427,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2429,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2439
      start: 2409
    functionDepth: 6
    functionLinenumber: 2409
    functionLinenumberEnd: 2439
    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:2457,1
    - Dst: PQsendTypedCommand
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2459,1
    - Dst: PQexecFinish
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2461,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - stmt
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2462
      start: 2454
    functionDepth: 7
    functionLinenumber: 2454
    functionLinenumberEnd: 2462
    functionName: PQdescribePrepared
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 2
    functionsReached:
    - PQexecFinish
    - PQsendTypedCommand
    - 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:2476,1
    - Dst: PQsendTypedCommand
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2478,1
    - Dst: PQexecFinish
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2480,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - portal
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2481
      start: 2473
    functionDepth: 7
    functionLinenumber: 2473
    functionLinenumberEnd: 2481
    functionName: PQdescribePortal
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - PQexecFinish
    - PQsendTypedCommand
    - 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:2493,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - stmt
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2494
      start: 2490
    functionDepth: 1
    functionLinenumber: 2490
    functionLinenumberEnd: 2494
    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:2506,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - portal
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2507
      start: 2503
    functionDepth: 1
    functionLinenumber: 2503
    functionLinenumberEnd: 2507
    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:2523,1
    - Dst: PQsendTypedCommand
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2525,1
    - Dst: PQexecFinish
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2527,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - stmt
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2528
      start: 2520
    functionDepth: 7
    functionLinenumber: 2520
    functionLinenumberEnd: 2528
    functionName: PQclosePrepared
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - PQexecFinish
    - PQsendTypedCommand
    - 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:2541,1
    - Dst: PQsendTypedCommand
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2543,1
    - Dst: PQexecFinish
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2545,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - portal
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2546
      start: 2538
    functionDepth: 7
    functionLinenumber: 2538
    functionLinenumberEnd: 2546
    functionName: PQclosePortal
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - PQexecFinish
    - PQsendTypedCommand
    - 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:2558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - stmt
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2559
      start: 2555
    functionDepth: 1
    functionLinenumber: 2555
    functionLinenumberEnd: 2559
    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:2571,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - portal
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2572
      start: 2568
    functionDepth: 1
    functionLinenumber: 2568
    functionLinenumberEnd: 2572
    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:2597,1
    - Dst: pqAllocCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2600,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2605,1
    - Dst: pqPutc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2606,1
    - Dst: pqPuts
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2607,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2608,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2614,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2615,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2630,1
    - Dst: pqPipelineFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2639,1
    - Dst: pqAppendCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2643,1
    - Dst: pqRecycleCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2648,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 35
    argCount: 4
    argNames:
    - conn
    - command
    - type
    - target
    argTypes:
    - PGconn*
    - char
    - char
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2651
      start: 2588
    functionDepth: 4
    functionLinenumber: 2588
    functionLinenumberEnd: 2651
    functionName: PQsendTypedCommand
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 8
    functionsReached:
    - pqPutMsgEnd
    - pqPipelineFlush
    - PQsendQueryStart
    - pqPutc
    - pqAllocCmdQueueEntry
    - pqPutMsgStart
    - libpq_append_conn_error
    - pqAppendCmdQueueEntry
    - pqRecycleCmdQueueEntry
    - pqPuts
    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:2675,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2686
      start: 2666
    functionDepth: 2
    functionLinenumber: 2666
    functionLinenumberEnd: 2686
    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:2702,1
    - Dst: parseInput
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2714,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2726,1
    - Dst: pqCheckOutBufferSpace
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2728,1
    - Dst: pqIsnonblocking
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2730,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2733,1
    - Dst: pqPutnchar
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2734,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2735,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 3
    argNames:
    - conn
    - buffer
    - nbytes
    argTypes:
    - PGconn*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2739
      start: 2694
    functionDepth: 2
    functionLinenumber: 2694
    functionLinenumberEnd: 2739
    functionName: PQputCopyData
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 5
    functionsReached:
    - pqFlush
    - pqPutMsgEnd
    - parseInput
    - pqIsnonblocking
    - pqCheckOutBufferSpace
    - libpq_append_conn_error
    - pqPutMsgStart
    - pqPutnchar
    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:2756,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2767,1
    - Dst: pqPuts
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2768,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2769,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2775,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2776,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2787,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2788,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2799,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 24
    argCount: 2
    argNames:
    - conn
    - errormsg
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2803
      start: 2748
    functionDepth: 1
    functionLinenumber: 2748
    functionLinenumberEnd: 2803
    functionName: PQputCopyEnd
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 8
    functionsReached:
    - pqFlush
    - pqPutMsgEnd
    - libpq_append_conn_error
    - pqPutMsgStart
    - pqPuts
    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:2824,1
    - Dst: pqGetCopyData3
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2827,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - conn
    - buffer
    - async
    argTypes:
    - PGconn*
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2828
      start: 2815
    functionDepth: 1
    functionLinenumber: 2815
    functionLinenumberEnd: 2828
    functionName: PQgetCopyData
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 5
    functionsReached:
    - libpq_append_conn_error
    - pqGetCopyData3
    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:2866,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - conn
    - buffer
    - length
    argTypes:
    - PGconn*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2867
      start: 2853
    functionDepth: 1
    functionLinenumber: 2853
    functionLinenumberEnd: 2867
    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:2906,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - conn
    - buffer
    - bufsize
    argTypes:
    - PGconn*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2907
      start: 2900
    functionDepth: 1
    functionLinenumber: 2900
    functionLinenumberEnd: 2907
    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:2920,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2920,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - string
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2921
      start: 2917
    functionDepth: 1
    functionLinenumber: 2917
    functionLinenumberEnd: 2921
    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:2930,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - conn
    - buffer
    - nbytes
    argTypes:
    - PGconn*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2934
      start: 2927
    functionDepth: 3
    functionLinenumber: 2927
    functionLinenumberEnd: 2934
    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:2954,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2955
      start: 2948
    functionDepth: 1
    functionLinenumber: 2948
    functionLinenumberEnd: 2955
    functionName: PQendcopy
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - pqEndcopy3
    linkageType: ''
    returnType: int
    signature: int PQendcopy(PGconn *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pqClearConnErrorState
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:2999,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3003,1
    - Dst: pgHavePendingResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3008,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3010,1
    - Dst: pqFunctionCall3
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3014,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    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: 3018
      start: 2979
    functionDepth: 1
    functionLinenumber: 2979
    functionLinenumberEnd: 3018
    functionName: PQfn
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - pgHavePendingResult
    - libpq_append_conn_error
    - pqFunctionCall3
    - pqClearConnErrorState
    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: 4
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3053,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3060
      start: 3041
    functionDepth: 0
    functionLinenumber: 3041
    functionLinenumberEnd: 3060
    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:3089,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3093,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3104,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3110,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3118,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3121
      start: 3072
    functionDepth: 1
    functionLinenumber: 3072
    functionLinenumberEnd: 3121
    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:3172,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 3
    argNames:
    - conn
    - isReadyForQuery
    - gotSync
    argTypes:
    - PGconn*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3173
      start: 3141
    functionDepth: 2
    functionLinenumber: 3141
    functionLinenumberEnd: 3173
    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:3208,1
    - Dst: pqClearConnErrorState
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3235,1
    - Dst: pqClearAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3238,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3251,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3254,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3255,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 39
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3265
      start: 3179
    functionDepth: 4
    functionLinenumber: 3179
    functionLinenumberEnd: 3265
    functionName: pqPipelineProcessQueue
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 2
    functionsReached:
    - Assert
    - pqSaveErrorResult
    - pqClearConnErrorState
    - libpq_append_conn_error
    - pqClearAsyncResult
    - PQmakeEmptyPGresult
    linkageType: ''
    returnType: void
    signature: void pqPipelineProcessQueue(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pqPipelineSyncInternal
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3275
      start: 3271
    functionDepth: 1
    functionLinenumber: 3271
    functionLinenumberEnd: 3275
    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:3284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3285
      start: 3281
    functionDepth: 1
    functionLinenumber: 3281
    functionLinenumberEnd: 3285
    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:3303,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3313,1
    - Dst: pqAllocCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3325,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3333,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3334,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3345,1
    - Dst: pqPipelineFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3350,1
    - Dst: pqAppendCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3355,1
    - Dst: pqRecycleCmdQueueEntry
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3360,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 43
    argCount: 2
    argNames:
    - conn
    - immediate_flush
    argTypes:
    - PGconn*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3363
      start: 3293
    functionDepth: 2
    functionLinenumber: 3293
    functionLinenumberEnd: 3363
    functionName: pqPipelineSyncInternal
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 2
    functionsReached:
    - pqFlush
    - pqPutMsgEnd
    - pqPipelineFlush
    - appendPQExpBufferStr
    - pqAllocCmdQueueEntry
    - libpq_append_conn_error
    - pqPutMsgStart
    - pqAppendCmdQueueEntry
    - pqRecycleCmdQueueEntry
    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:3379,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3387,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3391,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3392,1
    - Dst: pqPipelineFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3402,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3406
      start: 3370
    functionDepth: 1
    functionLinenumber: 3370
    functionLinenumberEnd: 3406
    functionName: PQsendFlushRequest
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 5
    functionsReached:
    - pqPipelineFlush
    - pqPutMsgEnd
    - libpq_append_conn_error
    - pqPutMsgStart
    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: 3416
      start: 3410
    functionDepth: 0
    functionLinenumber: 3410
    functionLinenumberEnd: 3416
    functionName: PQresultStatus
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 121
    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:3421,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3422,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - status
    argTypes:
    - ExecStatusType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3424
      start: 3418
    functionDepth: 1
    functionLinenumber: 3418
    functionLinenumberEnd: 3424
    functionName: PQresStatus
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 12
    functionsReached:
    - lengthof
    - libpq_gettext
    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: 3432
      start: 3426
    functionDepth: 0
    functionLinenumber: 3426
    functionLinenumberEnd: 3432
    functionName: PQresultErrorMessage
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 30
    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:3449,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3449,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3451,1
    - Dst: pqBuildErrorMessage3
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3453,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3456,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3458,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3459,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3459,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - res
    - verbosity
    - show_context
    argTypes:
    - PGresult*
    - PGVerbosity
    - PGContextVisibility
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3463
      start: 3434
    functionDepth: 2
    functionLinenumber: 3434
    functionLinenumberEnd: 3463
    functionName: PQresultVerboseErrorMessage
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - PQExpBufferDataBroken
    - termPQExpBuffer
    - strdup
    - libpq_gettext
    - pqBuildErrorMessage3
    - initPQExpBuffer
    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: 3478
      start: 3465
    functionDepth: 0
    functionLinenumber: 3465
    functionLinenumberEnd: 3478
    functionName: PQresultErrorField
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 11
    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: 3486
      start: 3480
    functionDepth: 0
    functionLinenumber: 3480
    functionLinenumberEnd: 3486
    functionName: PQntuples
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 173
    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: 3494
      start: 3488
    functionDepth: 0
    functionLinenumber: 3488
    functionLinenumberEnd: 3494
    functionName: PQnfields
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 25
    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: 3502
      start: 3496
    functionDepth: 0
    functionLinenumber: 3496
    functionLinenumberEnd: 3502
    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:3516,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - res
    - field_num
    argTypes:
    - PGresult*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3522
      start: 3509
    functionDepth: 3
    functionLinenumber: 3509
    functionLinenumberEnd: 3522
    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:3532,1
    - Dst: pqInternalNotice
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3539,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - res
    - tup_num
    - field_num
    argTypes:
    - PGresult*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3545
      start: 3524
    functionDepth: 3
    functionLinenumber: 3524
    functionLinenumberEnd: 3545
    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:3554,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - res
    - param_num
    argTypes:
    - PGresult*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3561
      start: 3547
    functionDepth: 3
    functionLinenumber: 3547
    functionLinenumberEnd: 3561
    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:3569,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - res
    - field_num
    argTypes:
    - PGresult*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3575
      start: 3566
    functionDepth: 4
    functionLinenumber: 3566
    functionLinenumberEnd: 3575
    functionName: PQfname
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 9
    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:3618,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3627,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3637,1
    - Dst: pg_tolower
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3667,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3675,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3677,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3681,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 46
    argCount: 2
    argNames:
    - res
    - field_name
    argTypes:
    - PGresult*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3683
      start: 3588
    functionDepth: 2
    functionLinenumber: 3588
    functionLinenumberEnd: 3683
    functionName: PQfnumber
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 87
    functionsReached:
    - free
    - strcmp
    - strdup
    - pg_tolower
    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:3688,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - res
    - field_num
    argTypes:
    - PGresult*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3694
      start: 3685
    functionDepth: 4
    functionLinenumber: 3685
    functionLinenumberEnd: 3694
    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:3699,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - res
    - field_num
    argTypes:
    - PGresult*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3705
      start: 3696
    functionDepth: 4
    functionLinenumber: 3696
    functionLinenumberEnd: 3705
    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:3710,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - res
    - field_num
    argTypes:
    - PGresult*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3716
      start: 3707
    functionDepth: 4
    functionLinenumber: 3707
    functionLinenumberEnd: 3716
    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:3721,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - res
    - field_num
    argTypes:
    - PGresult*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3727
      start: 3718
    functionDepth: 4
    functionLinenumber: 3718
    functionLinenumberEnd: 3727
    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:3732,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - res
    - field_num
    argTypes:
    - PGresult*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3738
      start: 3729
    functionDepth: 4
    functionLinenumber: 3729
    functionLinenumberEnd: 3738
    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:3743,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - res
    - field_num
    argTypes:
    - PGresult*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3749
      start: 3740
    functionDepth: 4
    functionLinenumber: 3740
    functionLinenumberEnd: 3749
    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: 3757
      start: 3751
    functionDepth: 0
    functionLinenumber: 3751
    functionLinenumberEnd: 3757
    functionName: PQcmdStatus
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

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

      PQoidStatus(const PGresult *res)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3799,1
    - Dst: strtoul
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3804,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 7
    argCount: 1
    argNames:
    - res
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3810
      start: 3792
    functionDepth: 0
    functionLinenumber: 3792
    functionLinenumberEnd: 3810
    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:3830,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3840,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3841,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3842,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3844,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3845,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3847,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3848,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3856,1
    - Dst: pqInternalNotice
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3865,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 32
    argCount: 1
    argNames:
    - res
    argTypes:
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3869
      start: 3821
    functionDepth: 3
    functionLinenumber: 3821
    functionLinenumberEnd: 3869
    functionName: PQcmdTuples
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 1
    functionsReached:
    - isdigit
    - pqInternalNotice
    - strncmp
    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:3878,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - res
    - tup_num
    - field_num
    argTypes:
    - PGresult*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3881
      start: 3875
    functionDepth: 4
    functionLinenumber: 3875
    functionLinenumberEnd: 3881
    functionName: PQgetvalue
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 193
    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:3889,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - res
    - tup_num
    - field_num
    argTypes:
    - PGresult*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3895
      start: 3886
    functionDepth: 4
    functionLinenumber: 3886
    functionLinenumberEnd: 3895
    functionName: PQgetlength
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 4
    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:3903,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - res
    - tup_num
    - field_num
    argTypes:
    - PGresult*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3909
      start: 3900
    functionDepth: 4
    functionLinenumber: 3900
    functionLinenumberEnd: 3909
    functionName: PQgetisnull
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 52
    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: 3920
      start: 3914
    functionDepth: 0
    functionLinenumber: 3914
    functionLinenumberEnd: 3920
    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:3928,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - res
    - param_num
    argTypes:
    - PGresult*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3934
      start: 3925
    functionDepth: 4
    functionLinenumber: 3925
    functionLinenumberEnd: 3934
    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:3967,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:3970,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - conn
    - arg
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3976
      start: 3943
    functionDepth: 1
    functionLinenumber: 3943
    functionLinenumberEnd: 3976
    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:3987,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3988
      start: 3982
    functionDepth: 1
    functionLinenumber: 3982
    functionLinenumberEnd: 3988
    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: 3995
      start: 3991
    functionDepth: 0
    functionLinenumber: 3991
    functionLinenumberEnd: 3995
    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:4004,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4005
      start: 3999
    functionDepth: 1
    functionLinenumber: 3999
    functionLinenumberEnd: 4005
    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:4020,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4022
      start: 4015
    functionDepth: 1
    functionLinenumber: 4015
    functionLinenumberEnd: 4022
    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:4034,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4035
      start: 4031
    functionDepth: 1
    functionLinenumber: 4031
    functionLinenumberEnd: 4035
    functionName: PQfreemem
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 28
    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:4051,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - notify
    argTypes:
    - PGnotify*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4052
      start: 4048
    functionDepth: 2
    functionLinenumber: 4048
    functionLinenumberEnd: 4052
    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:4078,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4091,1
    - Dst: SQL_STR_DOUBLE
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4094,1
    - Dst: pg_encoding_mblen_or_incomplete
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4104,1
    - Dst: pg_encoding_verifymbchar
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4108,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4141,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4143,1
    - Dst: pg_encoding_set_invalid
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4148,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: 4174
      start: 4070
    functionDepth: 3
    functionLinenumber: 4070
    functionLinenumberEnd: 4174
    functionName: PQescapeStringInternal
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - pg_encoding_verifymbchar
    - pg_encoding_set_invalid
    - libpq_append_conn_error
    - SQL_STR_DOUBLE
    - pg_encoding_mblen_or_incomplete
    - IS_HIGHBIT_SET
    - strnlen
    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:4191,1
    - Dst: PQescapeStringInternal
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4193,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: 4196
      start: 4176
    functionDepth: 4
    functionLinenumber: 4176
    functionLinenumberEnd: 4196
    functionName: PQescapeStringConn
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 6
    functionsReached:
    - PQescapeStringInternal
    - pqClearConnErrorState
    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:4201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - to
    - from
    - length
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4204
      start: 4198
    functionDepth: 4
    functionLinenumber: 4198
    functionLinenumberEnd: 4204
    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: 16
    BranchProfiles: []
    Callsites:
    - Dst: strnlen
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4221,1
    - Dst: pqClearConnErrorState
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4231,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4244,1
    - Dst: pg_encoding_mblen_or_incomplete
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4249,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4255,1
    - Dst: pg_encoding_verifymbstr
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4271,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4274,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4290,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4293,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4326,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4339,1
    - Dst: pg_encoding_mblen
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4343,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 66
    argCount: 4
    argNames:
    - conn
    - str
    - len
    - as_ident
    argTypes:
    - PGconn*
    - char*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4362
      start: 4213
    functionDepth: 3
    functionLinenumber: 4213
    functionLinenumberEnd: 4362
    functionName: PQescapeInternal
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - malloc
    - pg_encoding_mblen
    - memcpy
    - pqClearConnErrorState
    - libpq_append_conn_error
    - pg_encoding_mblen_or_incomplete
    - pg_encoding_verifymbstr
    - IS_HIGHBIT_SET
    - strnlen
    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:4367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - conn
    - str
    - len
    argTypes:
    - PGconn*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4368
      start: 4364
    functionDepth: 4
    functionLinenumber: 4364
    functionLinenumberEnd: 4368
    functionName: PQescapeLiteral
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 11
    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:4373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - conn
    - str
    - len
    argTypes:
    - PGconn*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4374
      start: 4370
    functionDepth: 4
    functionLinenumber: 4370
    functionLinenumberEnd: 4374
    functionName: PQescapeIdentifier
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 9
    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: 4399
      start: 4390
    functionDepth: 0
    functionLinenumber: 4390
    functionLinenumberEnd: 4399
    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: 15
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4455,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4459,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 59
    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: 4511
      start: 4417
    functionDepth: 1
    functionLinenumber: 4417
    functionLinenumberEnd: 4511
    functionName: PQescapeByteaInternal
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - malloc
    - libpq_append_conn_error
    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:4522,1
    - Dst: PQescapeByteaInternal
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4524,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: 4527
      start: 4513
    functionDepth: 2
    functionLinenumber: 4513
    functionLinenumberEnd: 4527
    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:4532,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: 4535
      start: 4529
    functionDepth: 2
    functionLinenumber: 4529
    functionLinenumberEnd: 4535
    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: 4539
      start: 4538
    functionDepth: 0
    functionLinenumber: 4538
    functionLinenumberEnd: 4539
    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: 4540
      start: 4539
    functionDepth: 0
    functionLinenumber: 4539
    functionLinenumberEnd: 4540
    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: 4541
      start: 4540
    functionDepth: 0
    functionLinenumber: 4540
    functionLinenumberEnd: 4541
    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:4567,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4576,1
    - Dst: get_hex
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4591,1
    - Dst: get_hex
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4594,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4607,1
    - Dst: ISFIRSTOCTDIGIT
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4621,1
    - Dst: ISOCTDIGIT
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4622,1
    - Dst: ISOCTDIGIT
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4623,1
    - Dst: OCTVAL
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4627,1
    - Dst: OCTVAL
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4628,1
    - Dst: OCTVAL
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4629,1
    - Dst: realloc
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4653,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-exec.c:4658,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 52
    argCount: 2
    argNames:
    - strtext
    - retbuflen
    argTypes:
    - unsigned char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4664
      start: 4554
    functionDepth: 1
    functionLinenumber: 4554
    functionLinenumberEnd: 4664
    functionName: PQunescapeBytea
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-exec.c
    functionUses: 0
    functionsReached:
    - realloc
    - malloc
    - OCTVAL
    - get_hex
    - ISFIRSTOCTDIGIT
    - free
    - ISOCTDIGIT
    - strlen
    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: 344
      start: 342
    functionDepth: 0
    functionLinenumber: 342
    functionLinenumberEnd: 344
    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: 634
      start: 633
    functionDepth: 0
    functionLinenumber: 633
    functionLinenumberEnd: 634
    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:
    - pqMakeEmptyPGconn
    - malloc
    - pqConnectOptions2
    - calloc
    - pqReleaseConnHosts
    - libpq_append_conn_error
    - strdup
    - pqCopyPGconn
    - memcpy
    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:
    - PQcancelStart
    - pqConnectDBComplete
    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:
    - resetPQExpBuffer
    - libpq_append_conn_error
    - PQconnectPoll
    - pqReadData
    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: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:385,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:389,1
    - Dst: pqParseIntParam
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:399,1
    - Dst: pqParseIntParam
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:406,1
    - Dst: pqParseIntParam
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:413,1
    - Dst: pqParseIntParam
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:420,1
    - Dst: pqParseIntParam
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:427,1
    - Dst: pg_hton32
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:434,1
    - Dst: pg_hton32
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:435,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:436,1
    - Dst: pg_hton32
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:438,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:443,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 52
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 445
    functionName: PQgetCancel
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-cancel.c
    functionUses: 3
    functionsReached:
    - malloc
    - pqParseIntParam
    - pg_hton32
    - memcpy
    - free
    linkageType: ''
    returnType: PGcancel
    signature: 'PGcancel *

      PQgetCancel(PGconn *conn)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:460,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:464,1
    - Dst: pg_hton32
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:465,1
    - Dst: pg_hton32
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:466,1
    - Dst: pqPutnchar
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:467,1
    - Dst: pqPutnchar
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:469,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:473,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:477,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - cancelConn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 454
    functionDepth: 1
    functionLinenumber: 454
    functionLinenumberEnd: 481
    functionName: PQsendCancelRequest
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-cancel.c
    functionUses: 0
    functionsReached:
    - pqFlush
    - pqPutMsgEnd
    - memset
    - pqPutMsgStart
    - pqPutnchar
    - pg_hton32
    linkageType: ''
    returnType: int
    signature: int PQsendCancelRequest(PGconn *cancelConn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cancel
    argTypes:
    - PGcancel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 484
    functionDepth: 1
    functionLinenumber: 484
    functionLinenumberEnd: 488
    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:503,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - fd
    - protoid
    - optid
    - value
    argTypes:
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 506
    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: 18
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:541,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:543,1
    - Dst: socket
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:551,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:553,1
    - Dst: optional_setsockopt
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:571,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:573,1
    - Dst: optional_setsockopt
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:578,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:581,1
    - Dst: optional_setsockopt
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:587,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:590,1
    - Dst: optional_setsockopt
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:596,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:599,1
    - Dst: pqSetKeepalivesWin32
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:607,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:611,1
    - Dst: optional_setsockopt
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:619,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:622,1
    - Dst: connect
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:629,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:635,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:639,1
    - Dst: send
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:647,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:652,1
    - Dst: recv
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:664,1
    - Dst: closesocket
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:673,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:674,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:683,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:703,1
    - Dst: strncat
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:704,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:705,1
    - Dst: closesocket
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:708,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:709,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 93
    argCount: 3
    argNames:
    - cancel
    - errbuf
    - errbufsize
    argTypes:
    - PGcancel*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 530
    functionDepth: 1
    functionLinenumber: 530
    functionLinenumberEnd: 711
    functionName: PQcancel
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-cancel.c
    functionUses: 7
    functionsReached:
    - strcat
    - connect
    - optional_setsockopt
    - send
    - pg_ntoh32
    - strncat
    - recv
    - SOCK_ERRNO_SET
    - socket
    - strlcpy
    - memcpy
    - strlen
    - closesocket
    - pqSetKeepalivesWin32
    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:737,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:740,1
    - Dst: PQgetCancel
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:746,1
    - Dst: PQcancel
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:749,1
    - Dst: PQfreeCancel
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:751,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:755,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-cancel.c:762,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 725
    functionDepth: 2
    functionLinenumber: 725
    functionLinenumberEnd: 767
    functionName: PQrequestCancel
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-cancel.c
    functionUses: 1
    functionsReached:
    - PQcancel
    - PQgetCancel
    - strlcpy
    - strlen
    - PQfreeCancel
    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_error
    - malloc
    - pg_GSS_have_cred_cache
    - gss_init_sec_context
    - pqTraceOutputMessage
    - gss_release_name
    - pqGetnchar
    - libpq_append_conn_error
    - libpq_gettext
    - gss_release_buffer
    - gss_delete_sec_context
    - pqPacketSend
    - free
    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:
    - malloc
    - pqTraceOutputMessage
    - pg_SSPI_error
    - appendPQExpBufferStr
    - pqGetnchar
    - InitializeSecurityContext
    - FreeContextBuffer
    - libpq_append_conn_error
    - libpq_gettext
    - memcpy
    - pqPacketSend
    - free
    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:
    - malloc
    - strlen
    - pg_SSPI_error
    - pg_SSPI_continue
    - libpq_append_conn_error
    - libpq_gettext
    - sprintf
    - AcquireCredentialsHandle
    - free
    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:
    - lengthof
    - termPQExpBuffer
    - libpq_append_conn_error
    - pqPutnchar
    - pqPuts
    - pqFlush
    - PQExpBufferDataBroken
    - pqGets
    - appendPQExpBufferStr
    - strcmp
    - pqTraceOutputMessage
    - initPQExpBuffer
    - pqPutInt
    - pqPutMsgStart
    - Assert
    - pqPutMsgEnd
    - PGconn*::sasl::init
    - PGconn*::sasl::exchange
    - free
    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:
    - malloc
    - pqTraceOutputMessage
    - pqGetnchar
    - libpq_append_conn_error
    - pqPacketSend
    - PGconn*::sasl::exchange
    - free
    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:
    - malloc
    - pqTraceOutputMessage
    - pg_md5_encrypt
    - pqGetnchar
    - libpq_append_conn_error
    - free
    - pqPacketSend
    - strlen
    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_allowed
    - auth_method_description
    - PGconn*::sasl::channel_bound
    - libpq_append_conn_error
    - libpq_gettext
    - StaticAssertDecl
    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_SSPI_startup
    - pgunlock_thread
    - pg_SASL_continue
    - check_expected_areq
    - pg_SSPI_continue
    - appendPQExpBufferStr
    - libpq_append_conn_error
    - pg_SASL_init
    - pg_strcasecmp
    - pglock_thread
    - pg_password_sendauth
    - pg_GSS_continue
    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:
    - GetUserName
    - getpwuid_r
    - GetLastError
    - strdup
    - libpq_append_error
    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:
    - pg_fe_getusername
    - geteuid
    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
    - malloc
    - pg_md5_encrypt
    - strlen
    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:
    - malloc
    - PQexec
    - PQntuples
    - PQresultStatus
    - PQnfields
    - pg_md5_encrypt
    - pqClearConnErrorState
    - PQgetvalue
    - pg_fe_scram_build_secret
    - libpq_append_conn_error
    - free
    - PQclear
    - strcmp
    - strlen
    - strcpy
    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:
    - PQescapeIdentifier
    - PQexec
    - PQfreemem
    - initPQExpBuffer
    - PQescapeLiteral
    - termPQExpBuffer
    - printfPQExpBuffer
    - PQencryptPasswordConn
    - strlen
    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
    - InitializeCriticalSection
    - InterlockedExchange
    - Sleep
    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:
    - malloc
    - wildcard_certificate_match
    - libpq_append_conn_error
    - memcpy
    - pg_strcasecmp
    - strlen
    - free
    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:
    - inet_pton
    - memcmp
    - inet_aton
    - libpq_append_conn_error
    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:
    - appendPQExpBufferChar
    - appendPQExpBuffer
    - pgtls_verify_peer_name_matches_certificate_guts
    - libpq_append_conn_error
    - libpq_ngettext
    - strcmp
    - free
    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:
    - open_client_SSL
    - initialize_SSL
    - pgtls_close
    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:
    - SSLerrfree
    - SSLerrmessage
    - appendPQExpBufferStr
    - ERR_clear_error
    - SOCK_ERRNO_SET
    - SSL_get_error
    - ERR_get_error
    - libpq_append_conn_error
    - SOCK_STRERROR
    - SSL_read
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t pgtls_read(PGconn *conn, void *ptr, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSL_pending
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 237
    functionName: pgtls_read_pending
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - SSL_pending
    linkageType: ''
    returnType: bool
    signature: bool pgtls_read_pending(PGconn *conn)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:248,1
    - Dst: ERR_clear_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:249,1
    - Dst: SSL_write
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:250,1
    - Dst: SSL_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:251,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:252,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:259,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:287,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:291,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:292,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:297,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:305,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:307,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:308,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:321,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:326,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:334,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 51
    argCount: 3
    argNames:
    - conn
    - ptr
    - len
    argTypes:
    - PGconn*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 239
    functionDepth: 2
    functionLinenumber: 239
    functionLinenumberEnd: 337
    functionName: pgtls_write
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - SSLerrfree
    - SSLerrmessage
    - SSL_write
    - appendPQExpBufferStr
    - ERR_clear_error
    - SOCK_ERRNO_SET
    - SSL_get_error
    - ERR_get_error
    - libpq_append_conn_error
    - SOCK_STRERROR
    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:362,1
    - Dst: OBJ_find_sigid_algs
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:364,1
    - Dst: X509_get_signature_nid
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:364,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:368,1
    - Dst: EVP_sha256
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:382,1
    - Dst: EVP_get_digestbynid
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:385,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:388,1
    - Dst: OBJ_nid2sn
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:389,1
    - Dst: X509_digest
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:395,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:397,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:402,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:405,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:408,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 2
    argNames:
    - conn
    - len
    argTypes:
    - PGconn*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 339
    functionDepth: 1
    functionLinenumber: 339
    functionLinenumberEnd: 412
    functionName: pgtls_get_peer_certificate_hash
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - EVP_sha256
    - EVP_get_digestbynid
    - malloc
    - OBJ_nid2sn
    - memcpy
    - X509_get_signature_info
    - libpq_append_conn_error
    - X509_digest
    - X509_get_signature_nid
    - OBJ_find_sigid_algs
    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: 433
      start: 429
    functionDepth: 0
    functionLinenumber: 429
    functionLinenumberEnd: 433
    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:453,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ssl
    - arg
    argTypes:
    - SSL*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 461
    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:479,1
    - Dst: ASN1_STRING_get0_data
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:486,1
    - Dst: ASN1_STRING_length
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:487,1
    - Dst: pq_verify_peer_name_matches_certificate_name
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:490,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: 491
      start: 469
    functionDepth: 4
    functionLinenumber: 469
    functionLinenumberEnd: 491
    functionName: openssl_verify_peer_name_matches_certificate_name
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - ASN1_STRING_length
    - pq_verify_peer_name_matches_certificate_name
    - libpq_append_conn_error
    - ASN1_STRING_get0_data
    linkageType: ''
    returnType: int
    signature: "int openssl_verify_peer_name_matches_certificate_name(PGconn *conn,
      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:509,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_ip
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:520,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: 521
      start: 498
    functionDepth: 3
    functionLinenumber: 498
    functionLinenumberEnd: 521
    functionName: openssl_verify_peer_name_matches_certificate_ip
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - pq_verify_peer_name_matches_certificate_ip
    - ASN1_STRING_length
    - libpq_append_conn_error
    - ASN1_STRING_get0_data
    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:531,1
    - Dst: inet_pton
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:533,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - host
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 523
    functionDepth: 2
    functionLinenumber: 523
    functionLinenumberEnd: 536
    functionName: is_ip_address
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - inet_pton
    - inet_aton
    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:548,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:555,1
    - Dst: is_ip_address
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:577,1
    - Dst: STACK_OF
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:586,1
    - Dst: X509_get_ext_d2i
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:587,1
    - Dst: sk_GENERAL_NAME_num
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:591,1
    - Dst: sk_GENERAL_NAME_value
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:595,1
    - Dst: openssl_verify_peer_name_matches_certificate_name
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:610,1
    - Dst: openssl_verify_peer_name_matches_certificate_ip
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:617,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:627,1
    - Dst: sk_GENERAL_NAME_pop_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:640,1
    - Dst: X509_get_subject_name
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:655,1
    - Dst: X509_NAME_get_index_by_NID
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:660,1
    - Dst: openssl_verify_peer_name_matches_certificate_name
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:667,1
    - Dst: X509_NAME_ENTRY_get_data
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:668,1
    - Dst: X509_NAME_get_entry
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:668,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:676,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 48
    argCount: 3
    argNames:
    - conn
    - names_examined
    - first_name
    argTypes:
    - PGconn*
    - int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 543
    functionDepth: 5
    functionLinenumber: 543
    functionLinenumberEnd: 683
    functionName: pgtls_verify_peer_name_matches_certificate_guts
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 1
    functionsReached:
    - sk_GENERAL_NAME_pop_free
    - Assert
    - X509_get_ext_d2i
    - X509_NAME_ENTRY_get_data
    - X509_NAME_get_index_by_NID
    - STACK_OF
    - sk_GENERAL_NAME_num
    - X509_NAME_get_entry
    - openssl_verify_peer_name_matches_certificate_ip
    - is_ip_address
    - sk_GENERAL_NAME_value
    - X509_get_subject_name
    - free
    - openssl_verify_peer_name_matches_certificate_name
    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:703,1
    - Dst: umask
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:708,1
    - Dst: open
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:709,1
    - Dst: umask
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:710,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:714,1
    - Dst: pg_strerror
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:715,1
    - Dst: write
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:720,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:720,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:722,1
    - Dst: pg_strerror
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:723,1
    - Dst: write
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:725,1
    - Dst: close
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:727,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - ssl
    - line
    argTypes:
    - SSL*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 697
    functionDepth: 2
    functionLinenumber: 697
    functionLinenumberEnd: 728
    functionName: SSL_CTX_keylog_cb
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - write
    - umask
    - close
    - open
    - SSL_get_app_data
    - libpq_append_conn_error
    - pg_strerror
    - strlen
    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:754,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:755,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:756,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:757,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:758,1
    - Dst: pqGetHomeDirectory
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:759,1
    - Dst: SSL_CTX_new
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:770,1
    - Dst: SSLv23_method
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:770,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:773,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:773,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:775,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:776,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:793,1
    - Dst: SSL_CTX_set_default_passwd_cb
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:795,1
    - Dst: SSL_CTX_set_default_passwd_cb_userdata
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:796,1
    - Dst: SSL_CTX_set_cert_cb
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:801,1
    - Dst: SSL_CTX_set_options
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:805,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:809,1
    - Dst: ssl_protocol_version_to_openssl
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:813,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:817,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:819,1
    - Dst: SSL_CTX_set_min_proto_version
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:823,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:825,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:825,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:827,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:828,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:829,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:835,1
    - Dst: ssl_protocol_version_to_openssl
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:839,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:843,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:845,1
    - Dst: SSL_CTX_set_max_proto_version
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:849,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:851,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:851,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:853,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:854,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:855,1
    - Dst: SSL_CTX_set_mode
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:864,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:871,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:872,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:874,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:878,1
    - Dst: SSL_CTX_set_default_verify_paths
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:887,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:889,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:889,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:891,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:893,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:894,1
    - Dst: stat
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:900,1
    - Dst: SSL_CTX_load_verify_locations
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:904,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:906,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:906,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:908,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:910,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:911,1
    - Dst: SSL_CTX_get_cert_store
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:915,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:920,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:922,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:928,1
    - Dst: X509_STORE_load_locations
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:934,1
    - Dst: X509_STORE_set_flags
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:936,1
    - Dst: ERR_clear_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:941,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:960,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:963,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:965,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:972,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:973,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:975,1
    - Dst: stat
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:989,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:998,1
    - Dst: strerror_r
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:999,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1000,1
    - Dst: SSL_CTX_use_certificate_chain_file
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1012,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1014,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1014,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1016,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1018,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1019,1
    - Dst: SSL_new
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1034,1
    - Dst: SSL_set_app_data
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1035,1
    - Dst: ssl_set_pgconn_bio
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1036,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1038,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1038,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1040,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1041,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1042,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1047,1
    - Dst: SSL_CTX_set_keylog_callback
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1050,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1053,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1053,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1055,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1055,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1066,1
    - Dst: strspn
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1079,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1079,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1080,1
    - Dst: SSL_set_tlsext_host_name
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1082,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1084,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1084,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1086,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1087,1
    - Dst: SSL_set_alpn_protos
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1097,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1101,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1101,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1103,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1104,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1115,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1118,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1125,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1131,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1136,1
    - Dst: ENGINE_by_id
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1141,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1144,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1144,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1146,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1148,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1149,1
    - Dst: ENGINE_init
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1153,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1155,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1155,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1157,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1159,1
    - Dst: ENGINE_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1160,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1162,1
    - Dst: ENGINE_load_private_key
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1166,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1170,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1170,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1172,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1174,1
    - Dst: ENGINE_finish
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1175,1
    - Dst: ENGINE_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1176,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1178,1
    - Dst: SSL_use_PrivateKey
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1181,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1183,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1183,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1185,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1187,1
    - Dst: ENGINE_finish
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1188,1
    - Dst: ENGINE_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1189,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1191,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1195,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1204,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1210,1
    - Dst: stat
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1219,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1222,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1225,1
    - Dst: S_ISREG
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1231,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1233,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1265,1
    - Dst: SSL_use_PrivateKey_file
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1272,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1274,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1274,1
    - Dst: SSL_use_PrivateKey_file
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1288,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1290,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1292,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1296,1
    - Dst: SSL_check_private_key
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1302,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1304,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1304,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1306,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1308,1
    - Dst: SSL_set_verify
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1317,1
    - Dst: SSL_set_options
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1323,1
    - Dst: SSL_clear_options
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1325,1
    CyclomaticComplexity: 90
    EdgeCount: 90
    ICount: 236
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1328
      start: 737
    functionDepth: 1
    functionLinenumber: 737
    functionLinenumberEnd: 1328
    functionName: initialize_SSL
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 1
    functionsReached:
    - strspn
    - SSL_CTX_set_default_verify_paths
    - SSL_CTX_use_certificate_chain_file
    - ssl_set_pgconn_bio
    - SSL_CTX_load_verify_locations
    - snprintf
    - ENGINE_finish
    - fprintf
    - ERR_clear_error
    - SSL_use_PrivateKey
    - ERR_get_error
    - libpq_append_conn_error
    - SSL_CTX_set_default_passwd_cb_userdata
    - SSL_CTX_set_cert_cb
    - SSL_set_app_data
    - strlen
    - SSL_CTX_set_default_passwd_cb
    - pqGetHomeDirectory
    - SSLv23_method
    - X509_STORE_set_flags
    - SSLerrmessage
    - SSL_use_PrivateKey_file
    - strdup
    - SSL_CTX_set_options
    - strcmp
    - SSL_CTX_set_keylog_callback
    - SSL_check_private_key
    - SSL_CTX_new
    - SSL_set_tlsext_host_name
    - ENGINE_load_private_key
    - SSL_clear_options
    - stat
    - ssl_protocol_version_to_openssl
    - strlcpy
    - libpq_gettext
    - SSL_set_verify
    - SSL_set_options
    - ENGINE_init
    - SSL_set_alpn_protos
    - X509_STORE_load_locations
    - SSLerrfree
    - SSL_new
    - SSL_CTX_free
    - SSL_CTX_get_cert_store
    - S_ISREG
    - strerror_r
    - ENGINE_by_id
    - ENGINE_free
    - SSL_CTX_set_max_proto_version
    - SSL_CTX_set_min_proto_version
    - SSL_CTX_set_mode
    - free
    - strchr
    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:1338,1
    - Dst: ERR_clear_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1339,1
    - Dst: SSL_connect
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1340,1
    - Dst: SSL_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1344,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1347,1
    - Dst: SSL_get_verify_result
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1361,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1374,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1375,1
    - Dst: X509_verify_cert_error_string
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1376,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1378,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1379,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1381,1
    - Dst: pgtls_close
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1382,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1387,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1389,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1390,1
    - Dst: ERR_GET_REASON
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1391,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1420,1
    - Dst: pgtls_close
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1431,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1436,1
    - Dst: pgtls_close
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1437,1
    - Dst: SSL_get0_alpn_selected
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1448,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1452,1
    - Dst: pgtls_close
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1453,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1461,1
    - Dst: memcmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1462,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1462,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1464,1
    - Dst: pgtls_close
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1465,1
    - Dst: SSL_get_peer_certificate
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1476,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1479,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1479,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1481,1
    - Dst: SSLerrfree
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1482,1
    - Dst: pgtls_close
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1483,1
    - Dst: pq_verify_peer_name_matches_certificate
      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:1489,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 75
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1495
      start: 1333
    functionDepth: 5
    functionLinenumber: 1333
    functionLinenumberEnd: 1495
    functionName: open_client_SSL
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 1
    functionsReached:
    - ERR_clear_error
    - ERR_get_error
    - libpq_append_conn_error
    - strlen
    - SSL_get_peer_certificate
    - SSLerrmessage
    - memcmp
    - ERR_GET_REASON
    - pq_verify_peer_name_matches_certificate
    - strcmp
    - SSL_get0_alpn_selected
    - SSL_get_error
    - SSLerrfree
    - X509_verify_cert_error_string
    - SSL_get_verify_result
    - SOCK_ERRNO_SET
    - SSL_connect
    - SOCK_STRERROR
    - pgtls_close
    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:1510,1
    - Dst: SSL_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1511,1
    - Dst: X509_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1519,1
    - Dst: ENGINE_finish
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1526,1
    - Dst: ENGINE_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1527,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1532
      start: 1497
    functionDepth: 0
    functionLinenumber: 1497
    functionLinenumberEnd: 1532
    functionName: pgtls_close
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 2
    functionsReached:
    - X509_free
    - ENGINE_free
    - ENGINE_finish
    - SSL_shutdown
    - SSL_free
    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:1555,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1560,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1560,1
    - Dst: ERR_reason_error_string
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1563,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1566,1
    - Dst: ERR_GET_LIB
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1579,1
    - Dst: ERR_GET_REASON
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1580,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1582,1
    - Dst: ERR_SYSTEM_ERROR
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1595,1
    - Dst: strerror_r
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1597,1
    - Dst: ERR_GET_REASON
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1597,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1603,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1603,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - ecode
    argTypes:
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1605
      start: 1549
    functionDepth: 1
    functionLinenumber: 1549
    functionLinenumberEnd: 1605
    functionName: SSLerrmessage
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 10
    functionsReached:
    - malloc
    - snprintf
    - strerror_r
    - ERR_reason_error_string
    - ERR_SYSTEM_ERROR
    - strlcpy
    - libpq_gettext
    - ERR_GET_REASON
    - ERR_GET_LIB
    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:1611,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - buf
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1612
      start: 1607
    functionDepth: 1
    functionLinenumber: 1607
    functionLinenumberEnd: 1612
    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: 1627
      start: 1621
    functionDepth: 0
    functionLinenumber: 1621
    functionLinenumberEnd: 1627
    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:1634,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - struct_name
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1637
      start: 1629
    functionDepth: 0
    functionLinenumber: 1629
    functionLinenumberEnd: 1637
    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: 1664
      start: 1639
    functionDepth: 0
    functionLinenumber: 1639
    functionLinenumberEnd: 1664
    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:1672,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1681,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1684,1
    - Dst: SSL_get_cipher_bits
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1689,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1690,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1694,1
    - Dst: SSL_get_cipher
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1695,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1697,1
    - Dst: SSL_get_current_compression
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1698,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1700,1
    - Dst: SSL_get_version
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1701,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1703,1
    - Dst: SSL_get0_alpn_selected
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1710,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1713,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 2
    argNames:
    - conn
    - attribute_name
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1719
      start: 1666
    functionDepth: 0
    functionLinenumber: 1666
    functionLinenumberEnd: 1719
    functionName: PQsslAttribute
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 2
    functionsReached:
    - SSL_get_current_compression
    - SSL_get_version
    - SSL_get0_alpn_selected
    - SSL_get_cipher_bits
    - snprintf
    - SSL_get_cipher
    - memcpy
    - strcmp
    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:1736,1
    - Dst: pqsecure_raw_read
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1739,1
    - Dst: BIO_clear_retry_flags
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1740,1
    - Dst: BIO_set_retry_read
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1754,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 3
    argNames:
    - h
    - buf
    - size
    argTypes:
    - BIO*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1766
      start: 1733
    functionDepth: 1
    functionLinenumber: 1733
    functionLinenumberEnd: 1766
    functionName: pgconn_bio_read
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - BIO_set_retry_read
    - BIO_get_data
    - BIO_clear_retry_flags
    - pqsecure_raw_read
    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:1773,1
    - Dst: BIO_get_data
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1773,1
    - Dst: BIO_clear_retry_flags
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1774,1
    - Dst: BIO_set_retry_write
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1787,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 3
    argNames:
    - h
    - buf
    - size
    argTypes:
    - BIO*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1796
      start: 1768
    functionDepth: 1
    functionLinenumber: 1768
    functionLinenumberEnd: 1796
    functionName: pgconn_bio_write
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - BIO_get_data
    - BIO_clear_retry_flags
    - pqsecure_raw_write
    - BIO_set_retry_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:1802,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 4
    argNames:
    - h
    - cmd
    - num
    - ptr
    argTypes:
    - BIO*
    - int
    - long
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1826
      start: 1798
    functionDepth: 0
    functionLinenumber: 1798
    functionLinenumberEnd: 1826
    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:1833,1
    - Dst: BIO_get_new_index
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1842,1
    - Dst: BIO_meth_new
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1846,1
    - Dst: BIO_meth_set_write
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1854,1
    - Dst: BIO_meth_set_read
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1855,1
    - Dst: BIO_meth_set_ctrl
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1856,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1863,1
    - Dst: BIO_meth_free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1868,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1869,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1871
      start: 1828
    functionDepth: 0
    functionLinenumber: 1828
    functionLinenumberEnd: 1871
    functionName: pgconn_bio_method
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - BIO_meth_set_ctrl
    - BIO_get_new_index
    - pthread_mutex_lock
    - BIO_meth_set_write
    - BIO_meth_free
    - BIO_meth_new
    - pthread_mutex_unlock
    - BIO_meth_set_read
    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:1879,1
    - Dst: BIO_new
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1883,1
    - Dst: BIO_set_data
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1887,1
    - Dst: BIO_set_init
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1888,1
    - Dst: SSL_set_bio
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1890,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1892
      start: 1873
    functionDepth: 1
    functionLinenumber: 1873
    functionLinenumberEnd: 1892
    functionName: ssl_set_pgconn_bio
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 1
    functionsReached:
    - pgconn_bio_method
    - SSL_set_bio
    - BIO_new
    - BIO_set_data
    - BIO_set_init
    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:1904,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1905,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1905,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1906,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1908,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - buf
    - size
    - conn
    argTypes:
    - char*
    - int
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1915
      start: 1899
    functionDepth: 0
    functionLinenumber: 1899
    functionLinenumberEnd: 1915
    functionName: PQdefaultSSLKeyPassHook_OpenSSL
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c
    functionUses: 0
    functionsReached:
    - strncpy
    - libpq_gettext
    - strlen
    - 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: 1921
      start: 1917
    functionDepth: 0
    functionLinenumber: 1917
    functionLinenumberEnd: 1921
    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: 1927
      start: 1923
    functionDepth: 0
    functionLinenumber: 1923
    functionLinenumberEnd: 1927
    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:1940,1
    - Dst: PQdefaultSSLKeyPassHook_OpenSSL
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1942,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - buf
    - size
    - rwflag
    - userdata
    argTypes:
    - char*
    - int
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1943
      start: 1934
    functionDepth: 0
    functionLinenumber: 1934
    functionLinenumberEnd: 1943
    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:1958,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1962,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1967,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-secure-openssl.c:1972,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - protocol
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1977
      start: 1955
    functionDepth: 2
    functionLinenumber: 1955
    functionLinenumberEnd: 1977
    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
    - malloc
    - strdup
    - proc
    - free
    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:
    - pqsecure_raw_read
    - pg_GSS_read
    - pgtls_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:
    - recv
    - SOCK_ERRNO_SET
    - libpq_append_conn_error
    - SOCK_STRERROR
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t pqsecure_raw_read(PGconn *conn, void *ptr, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pgtls_write
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:274,1
    - Dst: pg_GSS_write
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:281,1
    - Dst: pqsecure_raw_write
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:286,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - conn
    - ptr
    - len
    argTypes:
    - PGconn*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 266
    functionDepth: 3
    functionLinenumber: 266
    functionLinenumberEnd: 290
    functionName: pqsecure_write
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 0
    functionsReached:
    - pqsecure_raw_write
    - pgtls_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:324,1
    - Dst: DISABLE_SIGPIPE
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:343,1
    - Dst: send
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:345,1
    - Dst: REMEMBER_EPIPE
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:380,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:388,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:389,1
    - Dst: strlcat
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:393,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:394,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:403,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:404,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:405,1
    - Dst: strlcat
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:408,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:409,1
    - Dst: RESTORE_SIGPIPE
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:416,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:419,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 3
    argNames:
    - conn
    - ptr
    - len
    argTypes:
    - PGconn*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 315
    functionDepth: 1
    functionLinenumber: 315
    functionLinenumberEnd: 422
    functionName: pqsecure_raw_write
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 2
    functionsReached:
    - send
    - DECLARE_SIGPIPE_INFO
    - DISABLE_SIGPIPE
    - snprintf
    - RESTORE_SIGPIPE
    - SOCK_ERRNO_SET
    - strdup
    - libpq_gettext
    - strlcat
    - SOCK_STRERROR
    - REMEMBER_EPIPE
    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: 431
      start: 427
    functionDepth: 0
    functionLinenumber: 427
    functionLinenumberEnd: 431
    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: 437
      start: 433
    functionDepth: 0
    functionLinenumber: 433
    functionLinenumberEnd: 437
    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: 443
      start: 439
    functionDepth: 0
    functionLinenumber: 439
    functionLinenumberEnd: 443
    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: 451
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 451
    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: 464
      start: 460
    functionDepth: 0
    functionLinenumber: 460
    functionLinenumberEnd: 464
    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: 470
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 470
    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: 476
      start: 472
    functionDepth: 0
    functionLinenumber: 472
    functionLinenumberEnd: 476
    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: 486
      start: 482
    functionDepth: 0
    functionLinenumber: 482
    functionLinenumberEnd: 486
    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: 492
      start: 488
    functionDepth: 0
    functionLinenumber: 488
    functionLinenumberEnd: 492
    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:509,1
    - Dst: sigaddset
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:510,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:513,1
    - Dst: pthread_sigmask
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:513,1
    - Dst: sigismember
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:518,1
    - Dst: sigpending
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:521,1
    - Dst: sigismember
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:524,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - osigset
    - sigpipe_pending
    argTypes:
    - sigset_t*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 503
    functionDepth: 1
    functionLinenumber: 503
    functionLinenumberEnd: 533
    functionName: pq_block_sigpipe
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 0
    functionsReached:
    - sigemptyset
    - sigismember
    - pthread_sigmask
    - SOCK_ERRNO_SET
    - sigpending
    - 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:563,1
    - Dst: sigismember
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:564,1
    - Dst: sigemptyset
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:568,1
    - Dst: sigaddset
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:569,1
    - Dst: sigwait
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:571,1
    - Dst: pthread_sigmask
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:576,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq/fe-secure.c:578,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: 579
      start: 553
    functionDepth: 1
    functionLinenumber: 553
    functionLinenumberEnd: 579
    functionName: pq_reset_sigpipe
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure.c
    functionUses: 0
    functionsReached:
    - sigemptyset
    - sigismember
    - pthread_sigmask
    - SOCK_ERRNO_SET
    - sigpending
    - sigaddset
    - sigwait
    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:
    - snprintf
    - gettimeofday
    - localtime_r
    - strftime
    - strlen
    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:
    - memcpy
    - pg_ntoh16
    - 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:
    - memcpy
    - pg_ntoh32
    - fprintf
    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:
    - fwrite
    - isprint
    - 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:
    - pqTraceOutputInt32
    - pqTraceOutputNchar
    - fprintf
    - pqTraceOutputInt16
    - pqTraceOutputString
    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:
    - pqTraceOutputInt32
    - pqTraceOutputInt16
    - pqTraceOutputNchar
    - 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:
    - pqTraceOutputString
    - pqTraceOutputInt32
    - pqTraceOutputNchar
    - 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:
    - pqTraceOutputInt32
    - pqTraceOutputInt16
    - pqTraceOutputNchar
    - 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:
    - pqTraceOutputByte1
    - pqTraceOutputInt16
    - 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:
    - pqTraceOutputByte1
    - pqTraceOutputInt16
    - 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:457,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:458,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:459,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - f
    - message
    - cursor
    - regress
    argTypes:
    - FILE*
    - char*
    - int*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 454
    functionDepth: 2
    functionLinenumber: 454
    functionLinenumberEnd: 460
    functionName: pqTraceOutput_BackendKeyData
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputInt32
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pqTraceOutput_BackendKeyData(FILE *f, const char *message, int
      *cursor, bool regress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:467,1
    - Dst: pqTraceOutputString
      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: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:470,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:473,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - f
    - message
    - cursor
    - regress
    argTypes:
    - FILE*
    - char*
    - int*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 462
    functionDepth: 2
    functionLinenumber: 462
    functionLinenumberEnd: 474
    functionName: pqTraceOutput_Parse
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputString
    - pqTraceOutputInt32
    - pqTraceOutputInt16
    - 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:479,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:480,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - f
    - message
    - cursor
    argTypes:
    - FILE*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 476
    functionDepth: 1
    functionLinenumber: 476
    functionLinenumberEnd: 481
    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:489,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:490,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:495,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:500,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:504,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:507,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:510,1
    - Dst: pqTraceOutputNchar
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:511,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:515,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:518,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:520,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:521,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:524,1
    - Dst: pqTraceOutputNchar
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:525,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:529,1
    - Dst: pqTraceOutputNchar
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:530,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:534,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: 536
      start: 483
    functionDepth: 1
    functionLinenumber: 483
    functionLinenumberEnd: 536
    functionName: pqTraceOutput_Authentication
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pg_ntoh32
    - pqTraceOutputNchar
    - fprintf
    - pqTraceOutputString
    - memcpy
    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:541,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:542,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:543,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - f
    - message
    - cursor
    argTypes:
    - FILE*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 538
    functionDepth: 1
    functionLinenumber: 538
    functionLinenumberEnd: 544
    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:551,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:552,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:555,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - f
    - message
    - cursor
    - regress
    argTypes:
    - FILE*
    - char*
    - int*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 546
    functionDepth: 2
    functionLinenumber: 546
    functionLinenumberEnd: 556
    functionName: pqTraceOutput_ParameterDescription
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputInt32
    - pqTraceOutputInt16
    - 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:563,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:564,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:568,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:569,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:570,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:571,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:572,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:573,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:574,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 4
    argNames:
    - f
    - message
    - cursor
    - regress
    argTypes:
    - FILE*
    - char*
    - int*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 558
    functionDepth: 2
    functionLinenumber: 558
    functionLinenumberEnd: 576
    functionName: pqTraceOutput_RowDescription
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputString
    - pqTraceOutputInt32
    - pqTraceOutputInt16
    - 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:583,1
    - Dst: pqTraceOutputInt32
      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: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:588,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - f
    - message
    - cursor
    argTypes:
    - FILE*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 578
    functionDepth: 2
    functionLinenumber: 578
    functionLinenumberEnd: 590
    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:597,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:598,1
    - Dst: pqTraceOutputNchar
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:600,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - f
    - message
    - cursor
    argTypes:
    - FILE*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 592
    functionDepth: 2
    functionLinenumber: 592
    functionLinenumberEnd: 601
    functionName: pqTraceOutput_FunctionCallResponse
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputInt32
    - pqTraceOutputNchar
    - 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:606,1
    - Dst: pqTraceOutputByte1
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:607,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:610,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - f
    - message
    - cursor
    - length
    argTypes:
    - FILE*
    - char*
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 603
    functionDepth: 2
    functionLinenumber: 603
    functionLinenumberEnd: 611
    functionName: pqTraceOutput_CopyBothResponse
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceOutputByte1
    - pqTraceOutputInt16
    - 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:616,1
    - Dst: pqTraceOutputByte1
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:617,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - f
    - message
    - cursor
    argTypes:
    - FILE*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 613
    functionDepth: 1
    functionLinenumber: 613
    functionLinenumberEnd: 618
    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:636,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:637,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:643,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:644,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:654,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:656,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:661,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:665,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:669,1
    - Dst: pqTraceOutput_NotificationResponse
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:673,1
    - Dst: pqTraceOutput_Bind
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:676,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:679,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:684,1
    - Dst: pqTraceOutput_Close
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:686,1
    - Dst: pqTraceOutput_CommandComplete
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:688,1
    - Dst: pqTraceOutput_CopyData
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:691,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:696,1
    - Dst: pqTraceOutput_Describe
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:698,1
    - Dst: pqTraceOutput_DataRow
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:700,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:704,1
    - Dst: pqTraceOutput_Execute
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:706,1
    - Dst: pqTraceOutput_ErrorResponse
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:708,1
    - Dst: pqTraceOutput_CopyFail
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:711,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:714,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: pqTraceOutput_GSSResponse
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:725,1
    - Dst: pqTraceOutput_PasswordMessage
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:729,1
    - Dst: pqTraceOutput_SASLInitialResponse
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:733,1
    - Dst: pqTraceOutput_SASLResponse
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:737,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:741,1
    - Dst: pqTraceOutput_FunctionCall
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:747,1
    - Dst: pqTraceOutput_CopyInResponse
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:750,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:754,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:756,1
    - Dst: pqTraceOutput_CopyOutResponse
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:758,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:761,1
    - Dst: pqTraceOutput_BackendKeyData
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:765,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:768,1
    - Dst: pqTraceOutput_NoticeResponse
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:772,1
    - Dst: pqTraceOutput_Parse
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:775,1
    - Dst: pqTraceOutput_Query
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:778,1
    - Dst: pqTraceOutput_Authentication
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:781,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:785,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:790,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:792,1
    - Dst: pqTraceOutput_ParameterStatus
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:794,1
    - Dst: pqTraceOutput_ParameterDescription
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:797,1
    - Dst: pqTraceOutput_RowDescription
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:800,1
    - Dst: pqTraceOutput_NegotiateProtocolVersion
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:803,1
    - Dst: pqTraceOutput_FunctionCallResponse
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:806,1
    - Dst: pqTraceOutput_CopyBothResponse
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:809,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:812,1
    - Dst: pqTraceOutput_ReadyForQuery
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:816,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:819,1
    - Dst: fputc
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:823,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:831,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 149
    argCount: 3
    argNames:
    - conn
    - message
    - toServer
    argTypes:
    - PGconn*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 834
      start: 623
    functionDepth: 3
    functionLinenumber: 623
    functionLinenumberEnd: 834
    functionName: pqTraceOutputMessage
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 5
    functionsReached:
    - pqTraceOutput_Authentication
    - pqTraceOutput_Close
    - pqTraceOutput_Bind
    - pqTraceOutput_CopyOutResponse
    - pqTraceOutput_NegotiateProtocolVersion
    - pqTraceOutput_Query
    - pqTraceOutput_BackendKeyData
    - fprintf
    - pqTraceOutput_FunctionCallResponse
    - pqTraceOutput_GSSResponse
    - pqTraceOutput_PasswordMessage
    - pqTraceOutput_CopyData
    - pqTraceOutput_ErrorResponse
    - pqTraceOutput_ReadyForQuery
    - pqTraceOutput_CopyInResponse
    - pg_ntoh32
    - pqTraceOutput_ParameterDescription
    - fputc
    - pqTraceOutput_CopyFail
    - memcpy
    - pqTraceFormatTimestamp
    - pqTraceOutput_FunctionCall
    - pqTraceOutput_ParameterStatus
    - pqTraceOutput_NotificationResponse
    - pqTraceOutput_NoticeResponse
    - pqTraceOutput_CommandComplete
    - pqTraceOutput_CopyBothResponse
    - pqTraceOutput_Execute
    - pqTraceOutput_DataRow
    - pqTraceOutput_Describe
    - Assert
    - pqTraceOutput_Parse
    - pqTraceOutput_SASLResponse
    - pqTraceOutput_RowDescription
    - pqTraceOutput_SASLInitialResponse
    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:854,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:855,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:858,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:859,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:862,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:866,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:870,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:871,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:875,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:876,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:877,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:878,1
    - Dst: pqTraceOutputInt32
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:879,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:883,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:884,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:885,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:889,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:890,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:891,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:895,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:896,1
    - Dst: pqTraceOutputInt16
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:897,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:901,1
    - Dst: pqTraceOutputString
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:902,1
    - Dst: fputc
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:906,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 42
    argCount: 2
    argNames:
    - conn
    - message
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 840
    functionDepth: 3
    functionLinenumber: 840
    functionLinenumberEnd: 907
    functionName: pqTraceOutputNoTypeByteMessage
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-trace.c
    functionUses: 0
    functionsReached:
    - pqTraceFormatTimestamp
    - pg_ntoh32
    - pqTraceOutputInt32
    - fputc
    - fprintf
    - pqTraceOutputString
    - pqTraceOutputInt16
    - memcpy
    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:922,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:923,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-trace.c:926,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - conn
    - responseType
    - response
    argTypes:
    - PGconn*
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 914
    functionDepth: 3
    functionLinenumber: 914
    functionLinenumberEnd: 927
    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:62,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:63,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:63,1
    - Dst: calloc
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - conn
    - password
    - sasl_mechanism
    argTypes:
    - PGconn*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 73
    functionName: oauth_init
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - strcmp
    - Assert
    - calloc
    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:89,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - opaq
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 92
    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:131,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:132,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:138,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:139,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:141,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:142,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:143,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:146,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - conn
    - discover
    argTypes:
    - PGconn*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 105
    functionDepth: 2
    functionLinenumber: 105
    functionLinenumberEnd: 149
    functionName: client_initial_response
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - Assert
    - PQExpBufferDataBroken
    - termPQExpBuffer
    - appendPQExpBuffer
    - libpq_append_conn_error
    - strdup
    - initPQExpBuffer
    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: 185
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 185
    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: 5
    argNames:
    - (
    - ctx
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 191
    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, ...)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:199,1
    - Dst: oauth_json_set_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:201,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:202,1
    - Dst: oauth_json_set_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:208,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:208,1
    - Dst: oauth_json_has_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:210,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 211
    functionName: oauth_json_object_start
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - oauth_json_set_error
    - Assert
    - libpq_gettext
    - oauth_json_has_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: 220
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 220
    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:230,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:235,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:240,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - state
    - name
    - isnull
    argTypes:
    - void*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 248
    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: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:257,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:261,1
    - Dst: oauth_json_set_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:263,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:264,1
    - Dst: oauth_json_set_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:270,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:270,1
    - Dst: oauth_json_has_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:272,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 273
    functionName: oauth_json_array_start
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - oauth_json_set_error
    - Assert
    - libpq_gettext
    - oauth_json_has_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: 282
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 282
    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: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:291,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:303,1
    - Dst: oauth_json_set_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:304,1
    - Dst: oauth_json_set_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:316,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:317,1
    - Dst: oauth_json_set_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:325,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:326,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:331,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 3
    argNames:
    - state
    - token
    - type
    argTypes:
    - void*
    - char*
    - JsonTokenType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 344
    functionName: oauth_json_scalar
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - oauth_json_set_error
    - Assert
    - strdup
    - libpq_gettext
    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:375,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:375,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:376,1
    - Dst: oauth_unsafe_debugging_enabled
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:379,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:380,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:380,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:383,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:388,1
    - Dst: strpbrk
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:403,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:405,1
    - Dst: strstr
      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:420,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:430,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:432,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:432,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:433,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:434,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:434,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:435,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:446,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:466,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:467,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:471,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:479,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:482,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:493,1
    - Dst: memmove
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:495,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 47
    argCount: 2
    argNames:
    - conn
    - wkuri
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 358
    functionDepth: 2
    functionLinenumber: 358
    functionLinenumberEnd: 498
    functionName: issuer_from_well_known_uri
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - strpbrk
    - Assert
    - strstr
    - oauth_unsafe_debugging_enabled
    - memmove
    - libpq_append_conn_error
    - strdup
    - pg_strncasecmp
    - strncmp
    - strlen
    - strchr
    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:515,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:518,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:520,1
    - Dst: pg_encoding_verifymbstr
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:529,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:531,1
    - Dst: makeJsonLexContextCstringLen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:536,1
    - Dst: setJsonLexContextOwnsTokens
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:537,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:539,1
    - Dst: pg_parse_json
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:549,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:553,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:554,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:563,1
    - Dst: oauth_json_has_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:563,1
    - Dst: json_errdetail
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:568,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:571,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:576,1
    - Dst: freeJsonLexContext
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:577,1
    - Dst: issuer_from_well_known_uri
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:596,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:600,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:602,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:607,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:611,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:621,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:623,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:644,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:649,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:655,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:664,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:665,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:666,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 85
    argCount: 3
    argNames:
    - conn
    - msg
    - msglen
    argTypes:
    - PGconn*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 505
    functionDepth: 3
    functionLinenumber: 505
    functionLinenumberEnd: 669
    functionName: handle_oauth_sasl_error
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - Assert
    - freeJsonLexContext
    - json_errdetail
    - PQExpBufferDataBroken
    - initPQExpBuffer
    - setJsonLexContextOwnsTokens
    - termPQExpBuffer
    - issuer_from_well_known_uri
    - pg_parse_json
    - libpq_append_conn_error
    - libpq_gettext
    - free
    - oauth_json_has_error
    - pg_encoding_verifymbstr
    - strcmp
    - strlen
    - makeJsonLexContextCstringLen
    linkageType: ''
    returnType: bool
    signature: bool handle_oauth_sasl_error(PGconn *conn, const char *msg, int msglen)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:688,1
    - Dst: PGoauthBearerRequest*::async
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:693,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:696,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:708,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:713,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:716,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:726,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 679
    functionDepth: 0
    functionLinenumber: 679
    functionLinenumberEnd: 732
    functionName: run_user_oauth_flow
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - libpq_append_conn_error
    - PGoauthBearerRequest*::async
    - strdup
    linkageType: ''
    returnType: PostgresPollingStatusType
    signature: PostgresPollingStatusType run_user_oauth_flow(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:744,1
    - Dst: PGoauthBearerRequest*::cleanup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:747,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:750,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 738
    functionDepth: 1
    functionLinenumber: 738
    functionLinenumberEnd: 752
    functionName: cleanup_user_oauth_flow
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - Assert
    - PGoauthBearerRequest*::cleanup
    - free
    linkageType: ''
    returnType: void
    signature: void cleanup_user_oauth_flow(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - state
    argTypes:
    - PGconn*
    - fe_oauth_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 773
    functionDepth: 0
    functionLinenumber: 773
    functionLinenumberEnd: 777
    functionName: use_builtin_flow
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool use_builtin_flow(PGconn *conn, fe_oauth_state *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - TYPE
    - ','
    - MEMBER
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 796
      start: 793
    functionDepth: 0
    functionLinenumber: 793
    functionLinenumberEnd: 796
    functionName: DEFINE_GETTER
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFINE_GETTER(TYPE, MEMBER)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - TYPE
    - ','
    - MEMBER
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 798
    functionDepth: 0
    functionLinenumber: 798
    functionLinenumberEnd: 801
    functionName: DEFINE_GETTER_P
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFINE_GETTER_P(TYPE, MEMBER)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - TYPE
    - ','
    - MEMBER
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 802
    functionDepth: 0
    functionLinenumber: 802
    functionLinenumberEnd: 805
    functionName: DEFINE_SETTER
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFINE_SETTER(TYPE, MEMBER)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PostgresPollingStatusType
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:844,1
    - Dst: dlopen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:863,1
    - Dst: oauth_unsafe_debugging_enabled
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:873,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:874,1
    - Dst: dlerror
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:874,1
    - Dst: dlsym
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:879,1
    - Dst: dlsym
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:880,1
    - Dst: dlsym
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:881,1
    - Dst: oauth_unsafe_debugging_enabled
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:887,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:888,1
    - Dst: dlerror
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:888,1
    - Dst: dlclose
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:890,1
    - Dst: pthread_mutex_lock
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:905,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:908,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:910,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:935,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 2
    argNames:
    - conn
    - state
    argTypes:
    - PGconn*
    - fe_oauth_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 942
      start: 826
    functionDepth: 2
    functionLinenumber: 826
    functionLinenumberEnd: 942
    functionName: use_builtin_flow
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - PostgresPollingStatusType
    - Assert
    - dlerror
    - pthread_mutex_lock
    - oauth_unsafe_debugging_enabled
    - fprintf
    - libpq_append_conn_error
    - dlsym
    - pthread_mutex_unlock
    - dlopen
    - dlclose
    linkageType: ''
    returnType: bool
    signature: bool use_builtin_flow(PGconn *conn, fe_oauth_state *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - conn
    - state
    argTypes:
    - PGconn*
    - fe_oauth_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 953
    functionDepth: 0
    functionLinenumber: 953
    functionLinenumberEnd: 961
    functionName: use_builtin_flow
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool use_builtin_flow(PGconn *conn, fe_oauth_state *state)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:991,1
    - Dst: PQauthDataHook
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:994,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1006,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1009,1
    - Dst: PGoauthBearerRequest::cleanup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1015,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1019,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1022,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1034,1
    - Dst: use_builtin_flow
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1037,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1039,1
    - Dst: PGoauthBearerRequest::cleanup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1047,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 42
    argCount: 2
    argNames:
    - conn
    - state
    argTypes:
    - PGconn*
    - fe_oauth_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 982
    functionDepth: 1
    functionLinenumber: 982
    functionLinenumberEnd: 1049
    functionName: setup_token_request
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - Assert
    - malloc
    - use_builtin_flow
    - libpq_append_conn_error
    - strdup
    - PGoauthBearerRequest::cleanup
    - 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:1087,1
    - Dst: strstr
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1096,1
    - Dst: issuer_from_well_known_uri
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1102,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1107,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1110,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1120,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1123,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1129
      start: 1056
    functionDepth: 3
    functionLinenumber: 1056
    functionLinenumberEnd: 1129
    functionName: setup_oauth_parameters
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - issuer_from_well_known_uri
    - libpq_append_conn_error
    - strdup
    - strstr
    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:1157,1
    - Dst: setup_oauth_parameters
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1159,1
    - Dst: setup_token_request
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1176,1
    - Dst: client_initial_response
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1218,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1222,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1247,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1256,1
    - Dst: unlikely
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1257,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1259,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1262,1
    - Dst: handle_oauth_sasl_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1265,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1287,1
    - Dst: setup_token_request
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1293,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1312,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1324,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1325,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1343,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1348,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1352,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1361,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: 1364
      start: 1141
    functionDepth: 4
    functionLinenumber: 1141
    functionLinenumberEnd: 1364
    functionName: oauth_exchange
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 0
    functionsReached:
    - client_initial_response
    - Assert
    - setup_token_request
    - unlikely
    - libpq_append_conn_error
    - strdup
    - handle_oauth_sasl_error
    - setup_oauth_parameters
    - strlen
    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: 1371
      start: 1366
    functionDepth: 0
    functionLinenumber: 1366
    functionLinenumberEnd: 1371
    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:1383,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1383,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1384,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1386
      start: 1377
    functionDepth: 1
    functionLinenumber: 1377
    functionLinenumberEnd: 1386
    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:
    - Dst: getenv
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1394,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c:1396,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1397
      start: 1391
    functionDepth: 0
    functionLinenumber: 1391
    functionLinenumberEnd: 1397
    functionName: oauth_unsafe_debugging_enabled
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-auth-oauth.c
    functionUses: 2
    functionsReached:
    - getenv
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool oauth_unsafe_debugging_enabled(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - id
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 44
    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: 68
    BranchProfiles: []
    Callsites:
    - Dst: pqGetc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:83,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:85,1
    - Dst: handleSyncLoss
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:95,1
    - Dst: VALID_LONG_MESSAGE_TYPE
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:98,1
    - Dst: handleSyncLoss
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:100,1
    - Dst: pqCheckInBufferSpace
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:119,1
    - Dst: handleSyncLoss
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:128,1
    - Dst: getNotify
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:151,1
    - Dst: pqGetErrorNotice3
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:156,1
    - Dst: pqGetErrorNotice3
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:176,1
    - Dst: getParameterStatus
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:181,1
    - Dst: pqInternalNotice
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:187,1
    - Dst: pqGets
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:202,1
    - Dst: pgHavePendingResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:204,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:206,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:210,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:211,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:215,1
    - Dst: pqGetErrorNotice3
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:220,1
    - Dst: getReadyForQuery
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:225,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:229,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:233,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:234,1
    - Dst: pqCommandQueueAdvance
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:245,1
    - Dst: pgHavePendingResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:250,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:252,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:256,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:257,1
    - Dst: pgHavePendingResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:267,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:269,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:273,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:274,1
    - Dst: pgHavePendingResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:288,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:290,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:294,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:295,1
    - Dst: getParameterStatus
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:302,1
    - Dst: getBackendKeyData
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:312,1
    - Dst: getRowDescriptions
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:331,1
    - Dst: pgHavePendingResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:362,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:364,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:368,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:369,1
    - Dst: getParamDescriptions
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:376,1
    - Dst: getAnotherTuple
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:385,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:401,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:402,1
    - Dst: getCopyStart
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:408,1
    - Dst: getCopyStart
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:413,1
    - Dst: getCopyStart
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:419,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:443,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:445,1
    - Dst: pqParseDone
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:457,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:462,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:464,1
    CyclomaticComplexity: 81
    EdgeCount: 81
    ICount: 207
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 66
    functionDepth: 4
    functionLinenumber: 66
    functionLinenumberEnd: 470
    functionName: pqParseInput3
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - pqGetErrorNotice3
    - getParamDescriptions
    - libpq_append_conn_error
    - getRowDescriptions
    - pqParseDone
    - getBackendKeyData
    - pqInternalNotice
    - pqGets
    - pqCheckInBufferSpace
    - getAnotherTuple
    - getReadyForQuery
    - getNotify
    - getParameterStatus
    - getCopyStart
    - pgHavePendingResult
    - strlcpy
    - VALID_LONG_MESSAGE_TYPE
    - pqGetc
    - pqGetInt
    - pqSaveErrorResult
    - pqCommandQueueAdvance
    - handleSyncLoss
    - PQmakeEmptyPGresult
    linkageType: ''
    returnType: void
    signature: void pqParseInput3(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:480,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:483,1
    - Dst: pqDropConnection
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - conn
    - id
    - msgLength
    argTypes:
    - PGconn*
    - char
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 477
    functionDepth: 4
    functionLinenumber: 477
    functionLinenumberEnd: 488
    functionName: handleSyncLoss
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - pqDropConnection
    - libpq_append_conn_error
    - pqSaveErrorResult
    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:517,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:520,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:529,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:532,1
    - Dst: pqResultAlloc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:541,1
    - Dst: MemSet
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:547,1
    - Dst: pqGets
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:563,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:564,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:565,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:566,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:567,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:568,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:569,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:572,1
    - Dst: pqResultStrdup
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:584,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:628,1
    - Dst: pqClearAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:634,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:643,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:645,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:646,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 69
    argCount: 2
    argNames:
    - conn
    - msgLength
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 497
    functionDepth: 4
    functionLinenumber: 497
    functionLinenumberEnd: 660
    functionName: getRowDescriptions
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - pqGetInt
    - pqClearAsyncResult
    - pqResultStrdup
    - pqSaveErrorResult
    - pqGets
    - pqResultAlloc
    - appendPQExpBuffer
    - MemSet
    - libpq_gettext
    - PQclear
    - PQmakeEmptyPGresult
    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:676,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:682,1
    - Dst: pqResultAlloc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:690,1
    - Dst: MemSet
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:693,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:701,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:712,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:717,1
    - Dst: pqClearAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:723,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:732,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:733,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:734,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 2
    argNames:
    - conn
    - msgLength
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 668
    functionDepth: 4
    functionLinenumber: 668
    functionLinenumberEnd: 748
    functionName: getParamDescriptions
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - pqGetInt
    - pqClearAsyncResult
    - pqSaveErrorResult
    - pqResultAlloc
    - appendPQExpBuffer
    - MemSet
    - libpq_gettext
    - PQclear
    - PQmakeEmptyPGresult
    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:768,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:771,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:777,1
    - Dst: realloc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:785,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:800,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:803,1
    - Dst: pqSkipnchar
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:818,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:821,1
    - Dst: pqRowProcessor
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:829,1
    - Dst: pqClearAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:840,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:849,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:851,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:852,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 50
    argCount: 2
    argNames:
    - conn
    - msgLength
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 756
    functionDepth: 4
    functionLinenumber: 756
    functionLinenumberEnd: 866
    functionName: getAnotherTuple
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - pqRowProcessor
    - realloc
    - pqGetInt
    - pqSaveErrorResult
    - appendPQExpBuffer
    - libpq_gettext
    - pqClearAsyncResult
    - pqSkipnchar
    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:895,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:903,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:914,1
    - Dst: pqGetc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:926,1
    - Dst: pqGets
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:930,1
    - Dst: pqSaveMessageField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:932,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:934,1
    - Dst: pqResultStrdup
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:946,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:951,1
    - Dst: pqBuildErrorMessage3
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:952,1
    - Dst: pqClearAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:959,1
    - Dst: pqSetResultError
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:962,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:971,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:972,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:974,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:986,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:987,1
    - Dst: PGresult*::noticeHooks::noticeRec
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:991,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:992,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:996,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1000,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1001,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 56
    argCount: 2
    argNames:
    - conn
    - isError
    argTypes:
    - PGconn*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 877
    functionDepth: 4
    functionLinenumber: 877
    functionLinenumberEnd: 1003
    functionName: pqGetErrorNotice3
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - pqResultStrdup
    - pqSetResultError
    - PQExpBufferDataBroken
    - pqGets
    - pqSaveMessageField
    - appendPQExpBufferStr
    - termPQExpBuffer
    - PGresult*::noticeHooks::noticeRec
    - resetPQExpBuffer
    - strlcpy
    - libpq_append_conn_error
    - pqClearAsyncResult
    - libpq_gettext
    - PQclear
    - pqBuildErrorMessage3
    - PQmakeEmptyPGresult
    - initPQExpBuffer
    - pqGetc
    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:1020,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1020,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1031,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1033,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1033,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1038,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1040,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1050,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1053,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1061,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1063,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1065,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1067,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1068,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1075,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1081,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1081,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1087,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1090,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1094,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1100,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1100,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1105,1
    - Dst: reportErrorPosition
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1109,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1111,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1113,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1113,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1114,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1116,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1116,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1117,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1119,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1119,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1124,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1126,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1126,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:1135,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1136,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1138,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1139,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1140,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1142,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1143,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1144,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1146,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:1148,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1150,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1151,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1158,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1159,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1160,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1163,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1163,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1165,1
    - Dst: libpq_gettext
      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:1167,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1169,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: 1172
      start: 1009
    functionDepth: 4
    functionLinenumber: 1009
    functionLinenumberEnd: 1172
    functionName: pqBuildErrorMessage3
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 2
    functionsReached:
    - appendPQExpBufferChar
    - atoi
    - appendPQExpBufferStr
    - PQresultErrorField
    - appendPQExpBuffer
    - reportErrorPosition
    - libpq_gettext
    linkageType: ''
    returnType: void
    signature: "void pqBuildErrorMessage3(PQExpBuffer msg, const PGresult *res,\n\t\t\t\t\t
      PGVerbosity verbosity, PGContextVisibility show_context)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1207,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1220,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1222,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1225,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1228,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1231,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1232,1
    - Dst: pg_encoding_max_length
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1237,1
    - Dst: pg_encoding_dsplen
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1298,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1303,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1362,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1362,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1364,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1371,1
    - Dst: pg_encoding_dsplen
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1373,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1381,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1383,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1384,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1389,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1390,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1391,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1395,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1396,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1397,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 99
    argCount: 4
    argNames:
    - msg
    - query
    - loc
    - encoding
    argTypes:
    - PQExpBuffer
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1398
      start: 1180
    functionDepth: 4
    functionLinenumber: 1180
    functionLinenumberEnd: 1398
    functionName: reportErrorPosition
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - appendPQExpBufferChar
    - malloc
    - pg_encoding_max_length
    - PQmblenBounded
    - appendPQExpBufferStr
    - appendPQExpBuffer
    - pg_encoding_dsplen
    - strdup
    - libpq_gettext
    - strlen
    - free
    linkageType: ''
    returnType: void
    signature: void reportErrorPosition(PQExpBuffer msg, const char *query, int loc,
      int encoding)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1415,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1418,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1424,1
    - Dst: PG_PROTOCOL
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1428,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1430,1
    - Dst: PG_PROTOCOL
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1435,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1437,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1443,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1449,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1455,1
    - Dst: PG_PROTOCOL_MAJOR
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1456,1
    - Dst: PG_PROTOCOL_MINOR
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1457,1
    - Dst: PG_PROTOCOL_MAJOR
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1459,1
    - Dst: PG_PROTOCOL_MINOR
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1460,1
    - Dst: pqGets
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1474,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1478,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1480,1
    - Dst: libpq_append_conn_error
      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:1490,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1493,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 61
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1495
      start: 1409
    functionDepth: 4
    functionLinenumber: 1409
    functionLinenumberEnd: 1495
    functionName: pqGetNegotiateProtocolVersion3
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 0
    functionsReached:
    - PG_PROTOCOL
    - pqGetInt
    - pqSaveErrorResult
    - pqGets
    - PG_PROTOCOL_MAJOR
    - libpq_append_conn_error
    - PG_PROTOCOL_MINOR
    - strncmp
    linkageType: ''
    returnType: int
    signature: int pqGetNegotiateProtocolVersion3(PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pqGets
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1512,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1515,1
    - Dst: pqGets
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1516,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1518,1
    - Dst: pqSaveParameterStatus
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1522,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1523,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1525
      start: 1506
    functionDepth: 3
    functionLinenumber: 1506
    functionLinenumberEnd: 1525
    functionName: getParameterStatus
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - pqSaveParameterStatus
    - pqGets
    - termPQExpBuffer
    - initPQExpBuffer
    linkageType: ''
    returnType: int
    signature: int getParameterStatus(PGconn *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1540,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1545,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1550,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1553,1
    - Dst: pqGetnchar
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1557,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1559,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - conn
    - msgLength
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1565
      start: 1533
    functionDepth: 1
    functionLinenumber: 1533
    functionLinenumberEnd: 1565
    functionName: getBackendKeyData
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - pqGetInt
    - malloc
    - pqGetnchar
    - libpq_append_conn_error
    - free
    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:1585,1
    - Dst: pqGets
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1587,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1590,1
    - Dst: pqGets
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1593,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1595,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1604,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1605,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1606,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1610,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1612,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1622,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1624
      start: 1576
    functionDepth: 1
    functionLinenumber: 1576
    functionLinenumberEnd: 1624
    functionName: getNotify
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - pqGetInt
    - malloc
    - pqGets
    - strdup
    - free
    - strlen
    - strcpy
    linkageType: ''
    returnType: int
    signature: int getNotify(PGconn *conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1639,1
    - Dst: pqGetc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1643,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1647,1
    - Dst: pqResultAlloc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1655,1
    - Dst: MemSet
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1658,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1665,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1681,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 2
    argNames:
    - conn
    - copytype
    argTypes:
    - PGconn*
    - ExecStatusType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1683
      start: 1632
    functionDepth: 2
    functionLinenumber: 1632
    functionLinenumberEnd: 1683
    functionName: getCopyStart
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - pqGetInt
    - pqResultAlloc
    - MemSet
    - PQclear
    - PQmakeEmptyPGresult
    - pqGetc
    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:1693,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1712
      start: 1688
    functionDepth: 1
    functionLinenumber: 1688
    functionLinenumberEnd: 1712
    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:1735,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1737,1
    - Dst: handleSyncLoss
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1741,1
    - Dst: pqCheckInBufferSpace
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1751,1
    - Dst: handleSyncLoss
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1760,1
    - Dst: getNotify
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1775,1
    - Dst: pqGetErrorNotice3
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1779,1
    - Dst: getParameterStatus
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1783,1
    - Dst: pqParseDone
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1811,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 45
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1813
      start: 1720
    functionDepth: 5
    functionLinenumber: 1720
    functionLinenumberEnd: 1813
    functionName: getCopyDataMessage
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 0
    functionsReached:
    - pqGetInt
    - getParameterStatus
    - pqGetErrorNotice3
    - pqCheckInBufferSpace
    - getNotify
    - pqParseDone
    - handleSyncLoss
    - pqGetc
    linkageType: ''
    returnType: int
    signature: int getCopyDataMessage(PGconn *conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getCopyDataMessage
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1837,1
    - Dst: pqWait
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1846,1
    - Dst: pqReadData
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1847,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1859,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1862,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1865,1
    - Dst: pqParseDone
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1869,1
    - Dst: pqParseDone
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1875,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 3
    argNames:
    - conn
    - buffer
    - async
    argTypes:
    - PGconn*
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1877
      start: 1825
    functionDepth: 6
    functionLinenumber: 1825
    functionLinenumberEnd: 1877
    functionName: pqGetCopyData3
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - getCopyDataMessage
    - malloc
    - pqWait
    - libpq_append_conn_error
    - pqParseDone
    - memcpy
    - 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:1894,1
    - Dst: PQgetlineAsync
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1899,1
    - Dst: pqWait
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1902,1
    - Dst: pqReadData
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1903,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1913,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 3
    argNames:
    - conn
    - s
    - maxlen
    argTypes:
    - PGconn*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1928
      start: 1884
    functionDepth: 2
    functionLinenumber: 1884
    functionLinenumberEnd: 1928
    functionName: pqGetline3
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - PQgetlineAsync
    - pqReadData
    - pqWait
    - libpq_append_conn_error
    - strcpy
    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:1951,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1968,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:1978,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - conn
    - buffer
    - bufsize
    argTypes:
    - PGconn*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1983
      start: 1935
    functionDepth: 6
    functionLinenumber: 1935
    functionLinenumberEnd: 1983
    functionName: pqGetlineAsync3
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - memcpy
    - getCopyDataMessage
    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:1999,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2007,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2008,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2018,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2019,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2028,1
    - Dst: pqIsnonblocking
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2028,1
    - Dst: pqIsnonblocking
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2041,1
    - Dst: PQisBusy
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2041,1
    - Dst: PQgetResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2045,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2050,1
    - Dst: pqInternalNotice
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2068,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2072,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 31
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2075
      start: 1990
    functionDepth: 6
    functionLinenumber: 1990
    functionLinenumberEnd: 2075
    functionName: pqEndcopy3
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - pqFlush
    - pqPutMsgEnd
    - pqInternalNotice
    - pqIsnonblocking
    - PQgetResult
    - libpq_append_conn_error
    - pqPutMsgStart
    - PQclear
    - PQisBusy
    linkageType: ''
    returnType: int
    signature: int pqEndcopy3(PGconn *conn)
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2097,1
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2101,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2102,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2103,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2104,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2105,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2113,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2120,1
    - Dst: pqPutnchar
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2125,1
    - Dst: pqPutInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2130,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2133,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2134,1
    - Dst: pqWait
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2142,1
    - Dst: pqReadData
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2143,1
    - Dst: pqGetc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2153,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2155,1
    - Dst: handleSyncLoss
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2165,1
    - Dst: VALID_LONG_MESSAGE_TYPE
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2168,1
    - Dst: handleSyncLoss
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2170,1
    - Dst: pqCheckInBufferSpace
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2185,1
    - Dst: handleSyncLoss
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2194,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2208,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2214,1
    - Dst: pqGetnchar
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2219,1
    - Dst: pqGetErrorNotice3
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2229,1
    - Dst: getNotify
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2235,1
    - Dst: pqGetErrorNotice3
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2240,1
    - Dst: getReadyForQuery
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2244,1
    - Dst: pqParseDone
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2248,1
    - Dst: pgHavePendingResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2256,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2260,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2263,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2264,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2269,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2270,1
    - Dst: pqPrepareAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2274,1
    - Dst: getParameterStatus
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2276,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2281,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2282,1
    - Dst: pqPrepareAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2290,1
    - Dst: pqParseDone
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2294,1
    - Dst: pqSaveErrorResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2303,1
    - Dst: pqPrepareAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2304,1
    CyclomaticComplexity: 60
    EdgeCount: 60
    ICount: 110
    argCount: 7
    argNames:
    - conn
    - fnid
    - result_buf
    - actual_result_len
    - result_is_int
    - args
    - nargs
    argTypes:
    - PGconn*
    - Oid
    - int*
    - int*
    - int
    - PQArgBlock*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2305
      start: 2083
    functionDepth: 5
    functionLinenumber: 2083
    functionLinenumberEnd: 2305
    functionName: pqFunctionCall3
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - pqGetErrorNotice3
    - libpq_append_conn_error
    - pqPutnchar
    - pqParseDone
    - pqFlush
    - pqCheckInBufferSpace
    - pqWait
    - getReadyForQuery
    - getNotify
    - pqPrepareAsyncResult
    - pqReadData
    - getParameterStatus
    - pqPutInt
    - pgHavePendingResult
    - pqPutMsgStart
    - VALID_LONG_MESSAGE_TYPE
    - pqGetc
    - Assert
    - pqPutMsgEnd
    - pqGetInt
    - pqSaveErrorResult
    - pqGetnchar
    - handleSyncLoss
    - PQmakeEmptyPGresult
    linkageType: ''
    returnType: PGresult
    signature: "PGresult *\npqFunctionCall3(PGconn *conn, Oid fnid,\n\t\t\t\tint *result_buf,
      int *actual_result_len,\n\t\t\t\tint result_is_int,\n\t\t\t\tconst PQArgBlock
      *args, int nargs)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: build_startup_packet
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2319,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2320,1
    - Dst: build_startup_packet
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2323,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - conn
    - packetlen
    - options
    argTypes:
    - PGconn*
    - int*
    - PQEnvironmentOption*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2325
      start: 2313
    functionDepth: 1
    functionLinenumber: 2313
    functionLinenumberEnd: 2325
    functionName: pqBuildStartupPacket3
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 0
    functionsReached:
    - build_startup_packet
    - malloc
    linkageType: ''
    returnType: char
    signature: "char *\npqBuildStartupPacket3(PGconn *conn, int *packetlen,\n\t\t\t\t\t
      \ const PQEnvironmentOption *options)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: pg_hton32
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2347,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2349,1
    - Dst: ADD_STARTUP_OPTION
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2366,1
    - Dst: ADD_STARTUP_OPTION
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2368,1
    - Dst: ADD_STARTUP_OPTION
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2370,1
    - Dst: ADD_STARTUP_OPTION
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2372,1
    - Dst: ADD_STARTUP_OPTION
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2378,1
    - Dst: ADD_STARTUP_OPTION
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2382,1
    - Dst: getenv
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2387,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2389,1
    - Dst: ADD_STARTUP_OPTION
      Src: /src/postgres/src/interfaces/libpq/fe-protocol3.c:2390,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 30
    argCount: 3
    argNames:
    - conn
    - packet
    - options
    argTypes:
    - PGconn*
    - char*
    - PQEnvironmentOption*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2400
      start: 2336
    functionDepth: 2
    functionLinenumber: 2336
    functionLinenumberEnd: 2400
    functionName: build_startup_packet
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-protocol3.c
    functionUses: 1
    functionsReached:
    - getenv
    - pg_hton32
    - memcpy
    - pg_strcasecmp
    - ADD_STARTUP_OPTION
    linkageType: ''
    returnType: int
    signature: "int 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: 2364
      start: 2355
    functionDepth: 0
    functionLinenumber: 2355
    functionLinenumberEnd: 2364
    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: 27
    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:
    - LookupWSErrorMessage
    - MAKELANGID
    - LoadLibraryEx
    - FormatMessage
    - libpq_gettext
    - sprintf
    - strlen
    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: 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: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:208,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:215,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:
    - gss_wrap
    - pg_GSS_error
    - Assert
    - appendPQExpBufferStr
    - gss_release_buffer
    - libpq_append_conn_error
    - pqsecure_raw_write
    - libpq_gettext
    - pg_hton32
    - memcpy
    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: 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: pqsecure_raw_read
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:365,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: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:402,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:
    - pg_GSS_error
    - Min
    - Assert
    - gss_unwrap
    - pg_ntoh32
    - pqsecure_raw_read
    - libpq_append_conn_error
    - libpq_gettext
    - gss_release_buffer
    - memcpy
    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:449,1
    - Dst: pqsecure_raw_read
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:457,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: 470
      start: 434
    functionDepth: 2
    functionLinenumber: 434
    functionLinenumberEnd: 470
    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: 25
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:501,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:502,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:503,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:506,1
    - Dst: pqsecure_raw_write
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:520,1
    - Dst: gss_read
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:551,1
    - Dst: gss_read
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:577,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:583,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:585,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:596,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:599,1
    - Dst: gss_read
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:609,1
    - Dst: pg_GSS_load_servicename
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:627,1
    - Dst: pg_GSS_have_cred_cache
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:635,1
    - Dst: gss_init_sec_context
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:652,1
    - Dst: GSS_ERROR
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:660,1
    - Dst: pg_GSS_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:662,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:662,1
    - Dst: gss_release_cred
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:677,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:679,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:688,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:689,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:690,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:691,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:692,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:693,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:696,1
    - Dst: gss_wrap_size_limit
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:706,1
    - Dst: GSS_ERROR
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:710,1
    - Dst: pg_GSS_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:712,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:712,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:723,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:726,1
    - Dst: pg_hton32
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:731,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:733,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:736,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c:742,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 109
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 478
    functionDepth: 3
    functionLinenumber: 478
    functionLinenumberEnd: 746
    functionName: pqsecure_open_gss
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-secure-gssapi.c
    functionUses: 0
    functionsReached:
    - pg_GSS_error
    - gss_release_cred
    - libpq_append_conn_error
    - gss_read
    - gss_init_sec_context
    - pg_ntoh32
    - pqsecure_raw_write
    - memcpy
    - GSS_ERROR
    - malloc
    - gss_wrap_size_limit
    - libpq_gettext
    - gss_release_buffer
    - pg_hton32
    - Assert
    - pg_GSS_have_cred_cache
    - pg_GSS_load_servicename
    - appendPQExpBuffer
    - free
    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: 762
      start: 755
    functionDepth: 0
    functionLinenumber: 755
    functionLinenumberEnd: 762
    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: 774
      start: 767
    functionDepth: 0
    functionLinenumber: 767
    functionLinenumberEnd: 774
    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
    - memset
    - pg_saslprep
    - strdup
    - free
    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:
    - verify_server_signature
    - build_client_final_message
    - build_client_first_message
    - libpq_append_conn_error
    - read_server_final_message
    - read_server_first_message
    - strlen
    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:
    - appendPQExpBufferChar
    - Assert
    - malloc
    - pg_b64_encode
    - initPQExpBuffer
    - pg_b64_enc_len
    - appendPQExpBufferStr
    - libpq_append_conn_error
    - strcmp
    - pg_strong_random
    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:
    - pgtls_get_peer_certificate_hash
    - calculate_client_proof
    - malloc
    - PQExpBufferDataBroken
    - pg_b64_encode
    - termPQExpBuffer
    - appendPQExpBufferStr
    - pg_b64_enc_len
    - appendPQExpBuffer
    - enlargePQExpBuffer
    - libpq_append_conn_error
    - strdup
    - free
    - memcpy
    - strcmp
    - strlen
    - initPQExpBuffer
    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: memcmp
      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:
    - malloc
    - memcmp
    - read_attr_value
    - pg_b64_decode
    - pg_b64_dec_len
    - strtol
    - libpq_append_conn_error
    - strdup
    - strlen
    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:
    - malloc
    - read_attr_value
    - pg_b64_decode
    - pg_b64_dec_len
    - libpq_append_conn_error
    - strdup
    - free
    - memcpy
    - strlen
    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:
    - scram_ClientKey
    - pg_hmac_free
    - pg_hmac_update
    - pg_hmac_error
    - pg_hmac_init
    - scram_SaltedPassword
    - pg_hmac_create
    - scram_H
    - memcpy
    - pg_hmac_final
    - strlen
    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: memcmp
      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_free
    - memcmp
    - pg_hmac_update
    - pg_hmac_error
    - pg_hmac_init
    - scram_ServerKey
    - pg_hmac_create
    - memcpy
    - pg_hmac_final
    - strlen
    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:
    - pg_saslprep
    - scram_build_secret
    - pg_strong_random
    - libpq_gettext
    - free
    linkageType: ''
    returnType: char
    signature: 'char *

      pg_fe_scram_build_secret(const char *password, int iterations, const char **errstr)'
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: PQnfields
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:72,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:86,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:107,1
    - Dst: calloc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:108,1
    - Dst: calloc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:109,1
    - Dst: calloc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:110,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:113,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:113,1
    - Dst: PQfname
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:124,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:127,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:135,1
    - Dst: isatty
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:139,1
    - Dst: fileno
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:139,1
    - Dst: isatty
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:140,1
    - Dst: fileno
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:140,1
    - Dst: ioctl
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:147,1
    - Dst: fileno
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:147,1
    - Dst: getenv
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:165,1
    - Dst: strspn
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:168,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:168,1
    - Dst: fflush
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:180,1
    - Dst: popen
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:181,1
    - Dst: pq_block_sigpipe
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:186,1
    - Dst: calloc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:197,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:201,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:201,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:210,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:210,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:211,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:213,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:213,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:213,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:223,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:224,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:226,1
    - Dst: fputc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:228,1
    - Dst: fputc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:229,1
    - Dst: fputc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:230,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:236,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:238,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:253,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:253,1
    - Dst: do_field
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:257,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:263,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:272,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:277,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:284,1
    - Dst: do_header
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:287,1
    - Dst: output_row
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:290,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:294,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:294,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:295,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:297,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:300,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:301,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:302,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:309,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:310,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:312,1
    - Dst: _pclose
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:316,1
    - Dst: pclose
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:318,1
    - Dst: pq_reset_sigpipe
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:322,1
    CyclomaticComplexity: 66
    EdgeCount: 66
    ICount: 126
    argCount: 3
    argNames:
    - fout
    - res
    - po
    argTypes:
    - FILE*
    - PGresult*
    - PQprintOpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 67
    functionDepth: 5
    functionLinenumber: 67
    functionLinenumberEnd: 326
    functionName: PQprint
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-print.c
    functionUses: 1
    functionsReached:
    - getenv
    - strspn
    - calloc
    - fprintf
    - output_row
    - strlen
    - pq_reset_sigpipe
    - ioctl
    - pq_block_sigpipe
    - PQnfields
    - do_field
    - fputc
    - fileno
    - do_header
    - fflush
    - pclose
    - PQntuples
    - fputs
    - isatty
    - popen
    - libpq_gettext
    - PQfname
    - _pclose
    - free
    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:342,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:343,1
    - Dst: PQmblenBounded
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:365,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:394,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:396,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:396,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:399,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:406,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:415,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:421,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:430,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:433,1
    - Dst: fputc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:435,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: 441
      start: 329
    functionDepth: 5
    functionLinenumber: 329
    functionLinenumberEnd: 441
    functionName: do_field
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-print.c
    functionUses: 1
    functionsReached:
    - malloc
    - fputs
    - fputc
    - PQgetvalue
    - fprintf
    - libpq_gettext
    - PQgetlength
    - PQmblenBounded
    - strcpy
    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: 13
    BranchProfiles: []
    Callsites:
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:453,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:464,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:467,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:467,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:493,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:496,1
    - Dst: PQfname
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:499,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:503,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:508,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:513,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:517,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:519,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:523,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:525,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 48
    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: 527
      start: 444
    functionDepth: 5
    functionLinenumber: 444
    functionLinenumberEnd: 527
    functionName: do_header
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-print.c
    functionUses: 1
    functionsReached:
    - malloc
    - fputs
    - fprintf
    - libpq_gettext
    - PQfname
    - strlen
    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:538,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:540,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:546,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:550,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:557,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:561,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:563,1
    - Dst: fputc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:564,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: 565
      start: 530
    functionDepth: 0
    functionLinenumber: 530
    functionLinenumberEnd: 565
    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:594,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:595,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:604,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:607,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:607,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:613,1
    - Dst: PQfname
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:613,1
    - Dst: PQgetlength
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:616,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:629,1
    - Dst: PQfname
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:629,1
    - Dst: fill
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:631,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:631,1
    - Dst: PQfname
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:631,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:632,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:634,1
    - Dst: fill
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:640,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:641,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:643,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:651,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:651,1
    - Dst: fill
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:653,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:653,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:653,1
    - Dst: fputs
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:654,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:656,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:660,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:660,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:661,1
    - Dst: fflush
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:663,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:665,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: 666
      start: 573
    functionDepth: 5
    functionLinenumber: 573
    functionLinenumberEnd: 666
    functionName: PQdisplayTuples
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-print.c
    functionUses: 0
    functionsReached:
    - malloc
    - fflush
    - PQntuples
    - fputs
    - PQnfields
    - PQgetvalue
    - fprintf
    - fill
    - libpq_gettext
    - PQfname
    - free
    - PQgetlength
    - strlen
    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:685,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:686,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:689,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:691,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:701,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:704,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:704,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:710,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:717,1
    - Dst: PQfname
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:719,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:726,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:728,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:735,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:737,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:742,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:744,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-print.c:748,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: 749
      start: 670
    functionDepth: 5
    functionLinenumber: 670
    functionLinenumberEnd: 749
    functionName: PQprintTuples
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-print.c
    functionUses: 0
    functionsReached:
    - malloc
    - PQntuples
    - PQnfields
    - PQgetvalue
    - fprintf
    - libpq_gettext
    - PQfname
    - sprintf
    - free
    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:761,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - length
    - max
    - filler
    - fp
    argTypes:
    - int
    - int
    - char
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 754
    functionDepth: 0
    functionLinenumber: 754
    functionLinenumberEnd: 762
    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:529,1
    - Dst: closesocket
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:533,1
    - Dst: pqFreeCommandQueue
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:544,1
    - Dst: pqFreeCommandQueue
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:546,1
    - Dst: PGconn*::cleanup_async_auth
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:557,1
    - Dst: gss_release_cred
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:569,1
    - Dst: gss_delete_sec_context
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:573,1
    - Dst: gss_release_name
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:575,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:578,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:583,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:588,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:597,1
    - Dst: FreeCredentialsHandle
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:602,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:603,1
    - Dst: DeleteSecurityContext
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:608,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:609,1
    - Dst: PGconn*::sasl::free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:616,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 59
    argCount: 2
    argNames:
    - conn
    - flushInput
    argTypes:
    - PGconn*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 525
    functionDepth: 2
    functionLinenumber: 525
    functionLinenumberEnd: 619
    functionName: pqDropConnection
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - DeleteSecurityContext
    - pqFreeCommandQueue
    - gss_release_name
    - PGconn*::cleanup_async_auth
    - FreeCredentialsHandle
    - gss_release_cred
    - PGconn*::sasl::free
    - gss_delete_sec_context
    - pqsecure_close
    - closesocket
    - free
    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:633,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:634,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - queue
    argTypes:
    - PGcmdQueueEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 625
    functionDepth: 1
    functionLinenumber: 625
    functionLinenumberEnd: 636
    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:664,1
    - 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:711,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 39
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 651
    functionDepth: 1
    functionLinenumber: 651
    functionLinenumberEnd: 716
    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:768,1
    - Dst: pqConnectDBComplete
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:771,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - keywords
    - values
    - expand_dbname
    argTypes:
    - char**
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 763
    functionDepth: 1
    functionLinenumber: 763
    functionLinenumberEnd: 774
    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:786,1
    - Dst: internal_ping
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:789,1
    - Dst: PQfinish
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:790,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - keywords
    - values
    - expand_dbname
    argTypes:
    - char**
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 781
    functionDepth: 1
    functionLinenumber: 781
    functionLinenumberEnd: 793
    functionName: PQpingParams
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 2
    functionsReached:
    - PQfinish
    - PQconnectStartParams
    - internal_ping
    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:821,1
    - Dst: pqConnectDBComplete
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:824,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - conninfo
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 827
      start: 818
    functionDepth: 1
    functionLinenumber: 818
    functionLinenumberEnd: 827
    functionName: PQconnectdb
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 10
    functionsReached:
    - PQconnectStart
    - pqConnectDBComplete
    linkageType: ''
    returnType: PGconn
    signature: 'PGconn *

      PQconnectdb(const char *conninfo)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQconnectStart
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:837,1
    - Dst: internal_ping
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:840,1
    - Dst: PQfinish
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:841,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conninfo
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 834
    functionDepth: 1
    functionLinenumber: 834
    functionLinenumberEnd: 844
    functionName: PQping
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - PQfinish
    - PQconnectStart
    - internal_ping
    linkageType: ''
    returnType: PGPing
    signature: PGPing PQping(const char *conninfo)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pqMakeEmptyPGconn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:878,1
    - Dst: conninfo_array_parse
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:885,1
    - Dst: fillPGconn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:898,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:900,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:907,1
    - Dst: pqConnectOptions2
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:912,1
    - Dst: pqConnectDBStart
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:918,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - keywords
    - values
    - expand_dbname
    argTypes:
    - char**
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 865
    functionDepth: 1
    functionLinenumber: 865
    functionLinenumberEnd: 925
    functionName: PQconnectStartParams
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 4
    functionsReached:
    - pqMakeEmptyPGconn
    - PQconninfoFree
    - pqConnectOptions2
    - fillPGconn
    - pqConnectDBStart
    - conninfo_array_parse
    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:956,1
    - Dst: connectOptions1
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:963,1
    - Dst: pqConnectOptions2
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:969,1
    - Dst: pqConnectDBStart
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:975,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - conninfo
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 946
    functionDepth: 1
    functionLinenumber: 946
    functionLinenumberEnd: 982
    functionName: PQconnectStart
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 5
    functionsReached:
    - pqMakeEmptyPGconn
    - pqConnectOptions2
    - connectOptions1
    - pqConnectDBStart
    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:1001,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1007,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1008,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1011,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - conn
    - connOptions
    argTypes:
    - PGconn*
    - PQconninfoOption*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1019
      start: 992
    functionDepth: 1
    functionLinenumber: 992
    functionLinenumberEnd: 1019
    functionName: fillPGconn
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - conninfo_getval
    - libpq_append_conn_error
    - strdup
    - free
    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:1047,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1048,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1051,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - srcConn
    - dstConn
    argTypes:
    - PGconn*
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1058
      start: 1030
    functionDepth: 1
    functionLinenumber: 1030
    functionLinenumberEnd: 1058
    functionName: pqCopyPGconn
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - libpq_append_conn_error
    - strdup
    - free
    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:1079,1
    - Dst: fillPGconn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1090,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1093,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - conn
    - conninfo
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 1071
    functionDepth: 2
    functionLinenumber: 1071
    functionLinenumberEnd: 1103
    functionName: connectOptions1
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - PQconninfoFree
    - fillPGconn
    - parse_connection_string
    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: 1121
      start: 1108
    functionDepth: 0
    functionLinenumber: 1108
    functionLinenumberEnd: 1121
    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:1150,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1153,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - startptr
    - more
    argTypes:
    - char**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1159
      start: 1132
    functionDepth: 1
    functionLinenumber: 1132
    functionLinenumberEnd: 1159
    functionName: parse_comma_separated_list
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - memcpy
    - malloc
    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:1173,1
    - Dst: gettimeofday
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1176,1
    - Dst: getpid
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1179,1
    - Dst: pg_prng_seed
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1184
      start: 1167
    functionDepth: 3
    functionLinenumber: 1167
    functionLinenumberEnd: 1184
    functionName: libpq_prng_init
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - pg_prng_seed
    - getpid
    - pg_prng_strong_seed
    - gettimeofday
    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:1204,1
    - Dst: lengthof
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1209
      start: 1190
    functionDepth: 1
    functionLinenumber: 1190
    functionLinenumberEnd: 1209
    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:1217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1219
      start: 1214
    functionDepth: 1
    functionLinenumber: 1214
    functionLinenumberEnd: 1219
    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:1228,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - mech
    argTypes:
    - PGconn*
    - pg_fe_sasl_mech*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1235
      start: 1225
    functionDepth: 1
    functionLinenumber: 1225
    functionLinenumberEnd: 1235
    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:1257,1
    - Dst: count_comma_separated_elems
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1259,1
    - Dst: calloc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1263,1
    - Dst: parse_comma_separated_list
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1278,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1288,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1289,1
    - Dst: parse_comma_separated_list
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1299,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1308,1
    - Dst: count_comma_separated_elems
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1309,1
    - Dst: is_unixsock_path
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1327,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1332,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1340,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1345,1
    - Dst: parse_comma_separated_list
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1367,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1380,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1388,1
    - Dst: count_comma_separated_elems
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1389,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1401,1
    - Dst: pg_fe_getauthname
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1402,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1415,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1416,1
    - Dst: pqGetHomeDirectory
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1432,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1434,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1435,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1438,1
    - Dst: passwordFromFile
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1458,1
    - Dst: clear_allowed_sasl_mechs
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1483,1
    - Dst: parse_comma_separated_list
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1492,1
    - Dst: fill_allowed_sasl_mechs
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1511,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1516,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1519,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1529,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1532,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1540,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1544,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1548,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1553,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1565,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1569,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1577,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1599,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1605,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1608,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1618,1
    - Dst: index_of_allowed_sasl_mech
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1623,1
    - Dst: index_of_allowed_sasl_mech
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1635,1
    - Dst: index_of_allowed_sasl_mech
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1639,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1643,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1646,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1648,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1658,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1676,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1686,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1689,1
    - Dst: lengthof
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1704,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1729,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1730,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1731,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1734,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1741,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1754,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1757,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1768,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1769,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1770,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1771,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1772,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1773,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1776,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1796,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1804,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1815,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1816,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1819,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1828,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1848,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1855,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1866,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1867,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1870,1
    - Dst: sslVerifyProtocolVersion
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1880,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1883,1
    - Dst: sslVerifyProtocolVersion
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1888,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1891,1
    - Dst: sslVerifyProtocolRange
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1904,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1908,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1917,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1918,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1919,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1922,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1927,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1930,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1942,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1945,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1953,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1963,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1964,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1965,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1968,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1972,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1975,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1983,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1993,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1995,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1997,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:1999,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2001,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2003,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2008,1
    - Dst: pg_b64_dec_len
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2021,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2021,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2022,1
    - Dst: pg_b64_decode
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2025,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2025,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2029,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2034,1
    - Dst: pg_b64_dec_len
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2044,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2044,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2045,1
    - Dst: pg_b64_decode
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2048,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2048,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2052,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2057,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2068,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2070,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2075,1
    - Dst: libpq_prng_init
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2086,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2098,1
    - Dst: pqParseProtocolVersion
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2108,1
    - Dst: pqParseProtocolVersion
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2121,1
    - Dst: PG_PROTOCOL
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2135,1
    - Dst: PG_PROTOCOL
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2138,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2144,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2152,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2154,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2155,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2155,1
    - Dst: pg_get_encoding_from_locale
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2155,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2171,1
    CyclomaticComplexity: 184
    EdgeCount: 184
    ICount: 467
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2173
      start: 1245
    functionDepth: 4
    functionLinenumber: 1245
    functionLinenumberEnd: 2173
    functionName: pqConnectOptions2
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 3
    functionsReached:
    - lengthof
    - libpq_prng_init
    - sslVerifyProtocolVersion
    - snprintf
    - calloc
    - pg_b64_dec_len
    - libpq_append_conn_error
    - passwordFromFile
    - pg_prng_uint64_range
    - strlen
    - pqGetHomeDirectory
    - pg_encoding_to_char
    - fill_allowed_sasl_mechs
    - pg_b64_decode
    - is_unixsock_path
    - strdup
    - clear_allowed_sasl_mechs
    - strcmp
    - pg_get_encoding_from_locale
    - count_comma_separated_elems
    - malloc
    - pqParseProtocolVersion
    - PG_PROTOCOL
    - Assert
    - sslVerifyProtocolRange
    - pg_fe_getauthname
    - parse_comma_separated_list
    - index_of_allowed_sasl_mech
    - free
    linkageType: ''
    returnType: bool
    signature: bool pqConnectOptions2(PGconn *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2198,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2199,1
    - Dst: conninfo_init
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2202,1
    - Dst: conninfo_add_defaults
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2206,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2208,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2213,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2215
      start: 2191
    functionDepth: 2
    functionLinenumber: 2191
    functionLinenumberEnd: 2215
    functionName: PQconndefaults
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 4
    functionsReached:
    - PQconninfoFree
    - conninfo_add_defaults
    - PQExpBufferDataBroken
    - termPQExpBuffer
    - conninfo_init
    - initPQExpBuffer
    linkageType: ''
    returnType: PQconninfoOption
    signature: 'PQconninfoOption *

      PQconndefaults(void)'
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: pqMakeEmptyPGconn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2241,1
    - Dst: recognized_connection_string
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2249,1
    - Dst: connectOptions1
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2251,1
    - Dst: connectOptions1
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2260,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2266,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2267,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2279,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2280,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2287,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2288,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2295,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2296,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2303,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2304,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2311,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2312,1
    - Dst: pqConnectOptions2
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2320,1
    - Dst: pqConnectDBStart
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2326,1
    - Dst: pqConnectDBComplete
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2327,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2333,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: 2335
      start: 2229
    functionDepth: 5
    functionLinenumber: 2229
    functionLinenumberEnd: 2335
    functionName: PQsetdbLogin
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - pqMakeEmptyPGconn
    - pqConnectOptions2
    - connectOptions1
    - recognized_connection_string
    - pqConnectDBStart
    - strdup
    - pqConnectDBComplete
    - libpq_append_conn_error
    - free
    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:2350,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2356,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2357,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2363
      start: 2344
    functionDepth: 0
    functionLinenumber: 2344
    functionLinenumberEnd: 2363
    functionName: connectNoDelay
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - libpq_append_conn_error
    - SOCK_STRERROR
    - 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:2377,1
    - Dst: pg_inet_net_ntop
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2385,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: 2393
      start: 2370
    functionDepth: 2
    functionLinenumber: 2370
    functionLinenumberEnd: 2393
    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:2410,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2414,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2415,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2439,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2440,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2441,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2445,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2446,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - conn
    - host_addr
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2450
      start: 2403
    functionDepth: 2
    functionLinenumber: 2403
    functionLinenumberEnd: 2450
    functionName: emitHostIdentityInfo
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pg_getnameinfo_all
    - libpq_gettext
    - appendPQExpBuffer
    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:2464,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2466,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2469,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2471,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - conn
    - errorno
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2472
      start: 2459
    functionDepth: 2
    functionLinenumber: 2459
    functionLinenumberEnd: 2472
    functionName: connectFailureMessage
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - libpq_append_conn_error
    - SOCK_STRERROR
    - 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:2487,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2491
      start: 2479
    functionDepth: 1
    functionLinenumber: 2479
    functionLinenumberEnd: 2491
    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:2505,1
    - Dst: setsockopt
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2512,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2517,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2520,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2526
      start: 2497
    functionDepth: 1
    functionLinenumber: 2497
    functionLinenumberEnd: 2526
    functionName: setKeepalivesIdle
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - SOCK_STRERROR
    - setsockopt
    - libpq_append_conn_error
    - pqParseIntParam
    linkageType: ''
    returnType: int
    signature: int setKeepalivesIdle(PGconn *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pqParseIntParam
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2539,1
    - Dst: setsockopt
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2546,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2551,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2554,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2560
      start: 2531
    functionDepth: 1
    functionLinenumber: 2531
    functionLinenumberEnd: 2560
    functionName: setKeepalivesInterval
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - SOCK_STRERROR
    - setsockopt
    - libpq_append_conn_error
    - pqParseIntParam
    linkageType: ''
    returnType: int
    signature: int setKeepalivesInterval(PGconn *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pqParseIntParam
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2574,1
    - Dst: setsockopt
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2581,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2586,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2589,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2595
      start: 2566
    functionDepth: 1
    functionLinenumber: 2566
    functionLinenumberEnd: 2595
    functionName: setKeepalivesCount
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - SOCK_STRERROR
    - setsockopt
    - libpq_append_conn_error
    - pqParseIntParam
    linkageType: ''
    returnType: int
    signature: int setKeepalivesCount(PGconn *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: WSAIoctl
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2619,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - sock
    - idle
    - interval
    argTypes:
    - pgsocket
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2631
      start: 2604
    functionDepth: 0
    functionLinenumber: 2604
    functionLinenumberEnd: 2631
    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:2640,1
    - Dst: pqParseIntParam
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2644,1
    - Dst: pqSetKeepalivesWin32
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2648,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2650,1
    - Dst: WSAGetLastError
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2652,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2656
      start: 2633
    functionDepth: 1
    functionLinenumber: 2633
    functionLinenumberEnd: 2656
    functionName: prepKeepalivesWin32
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - WSAGetLastError
    - libpq_append_conn_error
    - 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:2671,1
    - Dst: setsockopt
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2679,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2684,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2687,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2693
      start: 2663
    functionDepth: 1
    functionLinenumber: 2663
    functionLinenumberEnd: 2693
    functionName: setTCPUserTimeout
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - SOCK_STRERROR
    - setsockopt
    - libpq_append_conn_error
    - 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:2717,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2719,1
    - Dst: PQconnectPoll
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2757,1
    - Dst: pqDropConnection
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2767,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2770
      start: 2702
    functionDepth: 3
    functionLinenumber: 2702
    functionLinenumberEnd: 2770
    functionName: pqConnectDBStart
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 4
    functionsReached:
    - pg_link_canary_is_frontend
    - pqDropConnection
    - appendPQExpBufferStr
    - PQconnectPoll
    linkageType: ''
    returnType: int
    signature: int pqConnectDBStart(PGconn *conn)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: pqParseIntParam
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2797,1
    - Dst: PQgetCurrentTimeUSec
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2820,1
    - Dst: pqWaitTimed
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2835,1
    - Dst: pqWaitTimed
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2845,1
    - Dst: PQcancelPoll
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2873,1
    - Dst: PQconnectPoll
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2875,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 44
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2877
      start: 2780
    functionDepth: 4
    functionLinenumber: 2780
    functionLinenumberEnd: 2877
    functionName: pqConnectDBComplete
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 4
    functionsReached:
    - PQgetCurrentTimeUSec
    - pqParseIntParam
    - PQconnectPoll
    - pqWaitTimed
    - PQcancelPoll
    linkageType: ''
    returnType: int
    signature: int pqConnectDBComplete(PGconn *conn)
  - BBCount: 169
    BranchProfiles: []
    Callsites:
    - Dst: pqReadData
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2938,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:2962,1
    - Dst: release_conn_addrinfo
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3021,1
    - Dst: MemSet
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3031,1
    - Dst: pqParseIntParam
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3040,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3045,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3049,1
    - Dst: pg_getaddrinfo_all
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3055,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3059,1
    - Dst: gai_strerror
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3060,1
    - Dst: pg_getaddrinfo_all
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3067,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3071,1
    - Dst: gai_strerror
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3072,1
    - Dst: UNIXSOCK_PATH
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3079,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3080,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3082,1
    - Dst: pg_getaddrinfo_all
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3092,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3096,1
    - Dst: gai_strerror
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3097,1
    - Dst: store_conn_addrinfo
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3107,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3108,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3130,1
    - Dst: pqDropConnection
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3164,1
    - Dst: pqDropServerData
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3167,1
    - Dst: pqClearAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3173,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3248,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3261,1
    - Dst: pg_GSS_have_cred_cache
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3267,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3269,1
    - Dst: init_allowed_encryption_methods
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3284,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3293,1
    - Dst: getHostaddr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3296,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3298,1
    - Dst: socket
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3320,1
    - Dst: emitHostIdentityInfo
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3337,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3338,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3339,1
    - Dst: emitHostIdentityInfo
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3350,1
    - Dst: connectNoDelay
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3359,1
    - Dst: pg_set_noblock
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3367,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3369,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3370,1
    - Dst: fcntl
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3378,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3380,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3381,1
    - Dst: useKeepalives
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3393,1
    - Dst: setsockopt
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3406,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3410,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3413,1
    - Dst: setKeepalivesIdle
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3416,1
    - Dst: setKeepalivesInterval
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3417,1
    - Dst: setKeepalivesCount
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3418,1
    - Dst: prepKeepalivesWin32
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3422,1
    - Dst: setTCPUserTimeout
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3426,1
    - Dst: setsockopt
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3468,1
    - Dst: connect
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3480,1
    - Dst: connectFailureMessage
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3514,1
    - Dst: getsockopt
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3534,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3537,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3538,1
    - Dst: connectFailureMessage
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3548,1
    - Dst: getsockname
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3560,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3564,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3565,1
    - Dst: getpeereid
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3583,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3590,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3592,1
    - Dst: strerror_r
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3593,1
    - Dst: pg_fe_getusername
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3598,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3603,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3605,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3607,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3610,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3613,1
    - Dst: pg_hton32
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3639,1
    - Dst: pqPacketSend
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3641,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3643,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3644,1
    - Dst: pg_hton32
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3679,1
    - Dst: pqPacketSend
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3680,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3682,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3683,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3692,1
    - Dst: PQsendCancelRequest
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3706,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3708,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3709,1
    - Dst: pqBuildStartupPacket3
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3722,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3726,1
    - Dst: pqPacketSend
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3736,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3738,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3739,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3740,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3744,1
    - Dst: pqReadData
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3774,1
    - Dst: pqGetc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3785,1
    - Dst: pqTraceOutputCharResponse
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3793,1
    - Dst: pqTraceOutputCharResponse
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3801,1
    - Dst: ENCRYPTION_NEGOTIATION_FAILED
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3811,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3811,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3821,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3826,1
    - Dst: pqsecure_open_client
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3835,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3846,1
    - Dst: CONNECTION_FAILED
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3860,1
    - Dst: pqReadData
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3882,1
    - Dst: pqGetc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3890,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3909,1
    - Dst: CONNECTION_FAILED
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3910,1
    - Dst: pqTraceOutputCharResponse
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3919,1
    - Dst: ENCRYPTION_NEGOTIATION_FAILED
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3927,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3927,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3931,1
    - Dst: pqTraceOutputCharResponse
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3937,1
    - Dst: pqsecure_open_gss
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3942,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3953,1
    - Dst: CONNECTION_FAILED
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3967,1
    - Dst: pqGetc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:3998,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4014,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4020,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4042,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4048,1
    - Dst: pqGets_append
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4058,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4067,1
    - Dst: pqParseDone
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4075,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4085,1
    - Dst: pqCheckInBufferSpace
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4109,1
    - Dst: pqGetErrorNotice3
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4119,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4121,1
    - Dst: pqParseDone
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4125,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4134,1
    - Dst: pgpassfileWarning
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4142,1
    - Dst: CONNECTION_FAILED
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4144,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4151,1
    - Dst: pqGetNegotiateProtocolVersion3
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4154,1
    - Dst: pqParseDone
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4162,1
    - Dst: pqGetInt
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4171,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4174,1
    - Dst: pg_fe_sendauth
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4186,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4225,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4252,1
    - Dst: PGconn*::async_auth
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4258,1
    - Dst: PGconn*::cleanup_async_auth
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4266,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4276,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4277,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4299,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4300,1
    - Dst: PQisBusy
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4322,1
    - Dst: PQgetResult
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4325,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4334,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4350,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4352,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4354,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4369,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4370,1
    - Dst: PQsendQueryContinue
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4407,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4425,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4427,1
    - Dst: sendTerminateConn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4431,1
    - Dst: PQsendQueryContinue
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4465,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4480,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4482,1
    - Dst: sendTerminateConn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4486,1
    - Dst: pqClearOAuthToken
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4498,1
    - Dst: release_conn_addrinfo
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4507,1
    - Dst: pqClearConnErrorState
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4514,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4532,1
    - Dst: PQisBusy
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4535,1
    - Dst: PQgetResult
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4542,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4545,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4562,1
    - Dst: PQisBusy
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4565,1
    - Dst: PQgetResult
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4571,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4572,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4573,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4575,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4586,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4596,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4604,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4607,1
    - Dst: sendTerminateConn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4612,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4627,1
    - Dst: PQisBusy
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4630,1
    - Dst: PQgetResult
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4636,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4637,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4638,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4640,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4642,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4646,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4654,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4657,1
    - Dst: sendTerminateConn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4662,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4670,1
    CyclomaticComplexity: 269
    EdgeCount: 269
    ICount: 743
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4689
      start: 2906
    functionDepth: 6
    functionLinenumber: 2906
    functionLinenumberEnd: 4689
    functionName: PQconnectPoll
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 7
    functionsReached:
    - pqClearAsyncResult
    - connectFailureMessage
    - pqCheckInBufferSpace
    - pqClearConnErrorState
    - PGconn*::cleanup_async_auth
    - pqGets_append
    - pqReadData
    - MemSet
    - CONNECTION_FAILED
    - pqBuildStartupPacket3
    - pqGetc
    - pqGetInt
    - pg_GSS_have_cred_cache
    - connect
    - getpeereid
    - pg_getaddrinfo_all
    - strerror_r
    - prepKeepalivesWin32
    - connectNoDelay
    - appendPQExpBufferChar
    - PQresultStatus
    - pqParseDone
    - pqDropConnection
    - pgpassfileWarning
    - init_allowed_encryption_methods
    - strlen
    - pg_fe_getusername
    - PQclear
    - pg_set_noblock
    - socket
    - setTCPUserTimeout
    - pqPacketSend
    - setKeepalivesIdle
    - PQsendQueryContinue
    - pqDropServerData
    - getsockopt
    - PQgetvalue
    - release_conn_addrinfo
    - PQgetResult
    - libpq_append_conn_error
    - PQisBusy
    - pg_prng_uint64_range
    - emitHostIdentityInfo
    - UNIXSOCK_PATH
    - memcpy
    - getsockname
    - pqsecure_open_client
    - PQresultErrorField
    - ENCRYPTION_NEGOTIATION_FAILED
    - store_conn_addrinfo
    - pqTraceOutputCharResponse
    - strncmp
    - Assert
    - fcntl
    - pqParseIntParam
    - PQsendCancelRequest
    - getHostaddr
    - sendTerminateConn
    - pqGetErrorNotice3
    - snprintf
    - PGconn*::async_auth
    - gai_strerror
    - setKeepalivesCount
    - pqFlush
    - strdup
    - strcmp
    - pg_freeaddrinfo_all
    - setsockopt
    - pqGetNegotiateProtocolVersion3
    - PQntuples
    - setKeepalivesInterval
    - pg_fe_sendauth
    - libpq_gettext
    - pg_hton32
    - pqClearOAuthToken
    - pqsecure_open_gss
    - PQconsumeInput
    - SOCK_STRERROR
    - useKeepalives
    - free
    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: 3201
      start: 3186
    functionDepth: 0
    functionLinenumber: 3186
    functionLinenumberEnd: 3201
    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: 3217
      start: 3207
    functionDepth: 0
    functionLinenumber: 3207
    functionLinenumberEnd: 3217
    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:4708,1
    - Dst: select_next_encryption_method
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4742,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4743
      start: 4694
    functionDepth: 1
    functionLinenumber: 4694
    functionLinenumberEnd: 4743
    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:4762,1
    - Dst: select_next_encryption_method
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4765,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4775
      start: 4759
    functionDepth: 1
    functionLinenumber: 4759
    functionLinenumberEnd: 4775
    functionName: encryption_negotiation_failed
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - select_next_encryption_method
    - Assert
    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:4787,1
    - Dst: select_next_encryption_method
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4790,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4791
      start: 4784
    functionDepth: 1
    functionLinenumber: 4784
    functionLinenumberEnd: 4791
    functionName: connection_failed
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - select_next_encryption_method
    - Assert
    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:4830,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4837,1
    - Dst: SELECT_NEXT_METHOD
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4844,1
    - Dst: SELECT_NEXT_METHOD
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4855,1
    - Dst: SELECT_NEXT_METHOD
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4857,1
    - Dst: SELECT_NEXT_METHOD
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4860,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - conn
    - have_valid_connection
    argTypes:
    - PGconn*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4866
      start: 4799
    functionDepth: 1
    functionLinenumber: 4799
    functionLinenumberEnd: 4866
    functionName: select_next_encryption_method
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 3
    functionsReached:
    - SELECT_NEXT_METHOD
    - pg_GSS_have_cred_cache
    - 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: 4812
      start: 4804
    functionDepth: 0
    functionLinenumber: 4804
    functionLinenumberEnd: 4812
    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:4883,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4915,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4921,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4931
      start: 4874
    functionDepth: 5
    functionLinenumber: 4874
    functionLinenumberEnd: 4931
    functionName: internal_ping
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 2
    functionsReached:
    - strcmp
    - pqConnectDBComplete
    - strlen
    linkageType: ''
    returnType: PGPing
    signature: PGPing internal_ping(PGconn *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: WSAStartup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4958,1
    - Dst: MAKEWORD
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4958,1
    - Dst: WSASetLastError
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4964,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4967,1
    - Dst: MemSet
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:4972,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5007,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5009,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5011,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5012,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5013,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5018,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5019,1
    - Dst: freePGconn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5022,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5027
      start: 4938
    functionDepth: 2
    functionLinenumber: 4938
    functionLinenumberEnd: 5027
    functionName: pqMakeEmptyPGconn
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 4
    functionsReached:
    - MAKEWORD
    - malloc
    - freePGconn
    - MemSet
    - PQExpBufferBroken
    - WSAStartup
    - WSASetLastError
    - initPQExpBuffer
    linkageType: ''
    returnType: PGconn
    signature: 'PGconn *

      pqMakeEmptyPGconn(void)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: proc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5047,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5049,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5053,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5054,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5055,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5056,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5057,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5058,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5059,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5060,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5061,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5062,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5063,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5064,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5065,1
    - Dst: explicit_bzero
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5068,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5068,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5069,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5071,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5072,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5073,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5074,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5075,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5076,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5077,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5078,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5079,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5080,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5081,1
    - Dst: explicit_bzero
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5084,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5084,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5085,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5087,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5088,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5089,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5090,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5091,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5092,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5093,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5094,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5095,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5096,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5097,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5098,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5099,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5100,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:5102,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5103,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5104,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:5114,1
    - Dst: pqReleaseConnHosts
      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: release_conn_addrinfo
      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: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5119,1
    - Dst: free
      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:5123,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5124,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5125,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5126,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5128,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 77
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5129
      start: 5038
    functionDepth: 2
    functionLinenumber: 5038
    functionLinenumberEnd: 5129
    functionName: freePGconn
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - termPQExpBuffer
    - pqReleaseConnHosts
    - release_conn_addrinfo
    - explicit_bzero
    - free
    - proc
    - strlen
    linkageType: ''
    returnType: void
    signature: void freePGconn(PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - 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: explicit_bzero
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5147,1
    - Dst: strlen
      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:5152,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5155
      start: 5135
    functionDepth: 1
    functionLinenumber: 5135
    functionLinenumberEnd: 5155
    functionName: pqReleaseConnHosts
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 2
    functionsReached:
    - strlen
    - explicit_bzero
    - free
    linkageType: ''
    returnType: void
    signature: void pqReleaseConnHosts(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5179,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5182,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5191,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - conn
    - addrlist
    argTypes:
    - PGconn*
    - struct addrinfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5198
      start: 5165
    functionDepth: 1
    functionLinenumber: 5165
    functionLinenumberEnd: 5198
    functionName: store_conn_addrinfo
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - memcpy
    - calloc
    - libpq_append_conn_error
    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:5209,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5212
      start: 5204
    functionDepth: 1
    functionLinenumber: 5204
    functionLinenumberEnd: 5212
    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:5238,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5239,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5240,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5242
      start: 5218
    functionDepth: 1
    functionLinenumber: 5218
    functionLinenumberEnd: 5242
    functionName: sendTerminateConn
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - pqFlush
    - pqPutMsgEnd
    - pqPutMsgStart
    linkageType: ''
    returnType: void
    signature: void sendTerminateConn(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sendTerminateConn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5258,1
    - Dst: pqDropConnection
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5274,1
    - Dst: pqClearOAuthToken
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5279,1
    - Dst: pqClearAsyncResult
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5280,1
    - Dst: pqClearConnErrorState
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5281,1
    - Dst: release_conn_addrinfo
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5289,1
    - Dst: pqDropServerData
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5292,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5293
      start: 5252
    functionDepth: 3
    functionLinenumber: 5252
    functionLinenumberEnd: 5293
    functionName: pqClosePGconn
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - pqDropServerData
    - sendTerminateConn
    - pqClearConnErrorState
    - release_conn_addrinfo
    - pqClearAsyncResult
    - pqClearOAuthToken
    - pqDropConnection
    linkageType: ''
    returnType: void
    signature: void pqClosePGconn(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pqClosePGconn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5304,1
    - Dst: freePGconn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5305,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5307
      start: 5299
    functionDepth: 4
    functionLinenumber: 5299
    functionLinenumberEnd: 5307
    functionName: PQfinish
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 91
    functionsReached:
    - pqClosePGconn
    - freePGconn
    linkageType: ''
    returnType: void
    signature: void PQfinish(PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pqClosePGconn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5318,1
    - Dst: pqConnectDBStart
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5320,1
    - Dst: pqConnectDBComplete
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5320,1
    - Dst: proc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5332,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5337
      start: 5313
    functionDepth: 5
    functionLinenumber: 5313
    functionLinenumberEnd: 5337
    functionName: PQreset
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - pqClosePGconn
    - proc
    - pqConnectDBStart
    - pqConnectDBComplete
    linkageType: ''
    returnType: void
    signature: void PQreset(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pqClosePGconn
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5351,1
    - Dst: pqConnectDBStart
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5353,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5357
      start: 5346
    functionDepth: 4
    functionLinenumber: 5346
    functionLinenumberEnd: 5357
    functionName: PQresetStart
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - pqClosePGconn
    - pqConnectDBStart
    linkageType: ''
    returnType: int
    signature: int PQresetStart(PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQconnectPoll
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5370,1
    - Dst: proc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5384,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5393
      start: 5365
    functionDepth: 7
    functionLinenumber: 5365
    functionLinenumberEnd: 5393
    functionName: PQresetPoll
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - proc
    - PQconnectPoll
    linkageType: ''
    returnType: PostgresPollingStatusType
    signature: PostgresPollingStatusType PQresetPoll(PGconn *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pqPutMsgStart
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5412,1
    - Dst: pqPutnchar
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5416,1
    - Dst: pqPutMsgEnd
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5420,1
    - Dst: pqFlush
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5424,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: 5428
      start: 5407
    functionDepth: 1
    functionLinenumber: 5407
    functionLinenumberEnd: 5428
    functionName: pqPacketSend
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 5
    functionsReached:
    - pqFlush
    - pqPutMsgEnd
    - pqPutMsgStart
    - 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: 5437
      start: 5436
    functionDepth: 0
    functionLinenumber: 5436
    functionLinenumberEnd: 5437
    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: 5438
      start: 5437
    functionDepth: 0
    functionLinenumber: 5437
    functionLinenumberEnd: 5438
    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: 55
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5493,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5495,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5505,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5505,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5507,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5509,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5514,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5519,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5519,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5522,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5525,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5532,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5534,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5537,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5544,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5546,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5549,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5556,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5558,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5561,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5566,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5570,1
    - Dst: strtol
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5577,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5580,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5583,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5590,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5592,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5595,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5600,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5602,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5604,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5608,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5611,1
    - Dst: ldap_init
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5616,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5618,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5619,1
    - Dst: ldap_connect
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5637,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5640,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5641,1
    - Dst: ldap_set_option
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5646,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5648,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5649,1
    - Dst: ldap_simple_bind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5654,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5657,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5658,1
    - Dst: ldap_result
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5664,1
    - Dst: ldap_msgfree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5669,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5670,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5671,1
    - Dst: ldap_msgfree
      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: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5680,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5681,1
    - Dst: ldap_search_st
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5688,1
    - Dst: ldap_msgfree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5692,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5693,1
    - Dst: ldap_err2string
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5693,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5694,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5695,1
    - Dst: ldap_count_entries
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5700,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5703,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5705,1
    - Dst: ldap_msgfree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5706,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5707,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5708,1
    - Dst: ldap_first_entry
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5713,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5716,1
    - Dst: ldap_msgfree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5717,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5718,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5719,1
    - Dst: ldap_get_values_len
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5724,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5726,1
    - Dst: ldap_msgfree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5727,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5728,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5729,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: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5738,1
    - Dst: ldap_value_free_len
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5739,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5740,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5748,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5750,1
    - Dst: ldap_value_free_len
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5751,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5752,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5758,1
    - Dst: ldap_value_free_len
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5764,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5765,1
    - Dst: ld_is_sp_tab
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5774,1
    - Dst: ld_is_nl_cr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5774,1
    - Dst: ld_is_sp_tab
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5781,1
    - Dst: ld_is_nl_cr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5786,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5788,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5791,1
    - Dst: ld_is_sp_tab
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5805,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5807,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5810,1
    - Dst: ld_is_nl_cr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5821,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5823,1
    - Dst: ld_is_sp_tab
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5826,1
    - Dst: ld_is_sp_tab
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5833,1
    - Dst: ld_is_nl_cr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5833,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5861,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5865,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5868,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5869,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5879,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5880,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5889,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5893,1
    CyclomaticComplexity: 77
    EdgeCount: 77
    ICount: 265
    argCount: 3
    argNames:
    - purl
    - options
    - errorMessage
    argTypes:
    - char*
    - PQconninfoOption*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5899
      start: 5459
    functionDepth: 2
    functionLinenumber: 5459
    functionLinenumberEnd: 5899
    functionName: ldapServiceLookup
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - ldap_search_st
    - ldap_msgfree
    - strtol
    - pg_strncasecmp
    - ldap_value_free_len
    - strlen
    - ldap_err2string
    - ld_is_sp_tab
    - strdup
    - memcpy
    - libpq_append_error
    - strcmp
    - ld_is_nl_cr
    - malloc
    - ldap_connect
    - ldap_get_values_len
    - ldap_result
    - ldap_first_entry
    - pg_strcasecmp
    - ldap_count_entries
    - ldap_unbind
    - ldap_simple_bind
    - ldap_init
    - ldap_set_option
    - free
    - strchr
    linkageType: ''
    returnType: int
    signature: "int ldapServiceLookup(const char *purl, PQconninfoOption *options,\n\t\t\t\t
      \ PQExpBuffer errorMessage)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: conninfo_getval
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5916,1
    - Dst: getenv
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5929,1
    - Dst: getenv
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5939,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5940,1
    - Dst: pqGetHomeDirectory
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5945,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5947,1
    - Dst: stat
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5948,1
    - Dst: parseServiceFile
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5952,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5962,1
    - Dst: getenv
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5963,1
    - Dst: getenv
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5963,1
    - Dst: stat
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5964,1
    - Dst: parseServiceFile
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5967,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5974,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 34
    argCount: 2
    argNames:
    - options
    - errorMessage
    argTypes:
    - PQconninfoOption*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5979
      start: 5913
    functionDepth: 1
    functionLinenumber: 5913
    functionLinenumberEnd: 5979
    functionName: parseServiceInfo
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - getenv
    - pqGetHomeDirectory
    - parseServiceFile
    - stat
    - snprintf
    - conninfo_getval
    - strlcpy
    - libpq_append_error
    linkageType: ''
    returnType: int
    signature: int parseServiceInfo(PQconninfoOption *options, PQExpBuffer errorMessage)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:5997,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6000,1
    - Dst: fgets
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6004,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6010,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6012,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6021,1
    - Dst: isspace
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6022,1
    - Dst: isspace
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6026,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6042,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6042,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6043,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6060,1
    - Dst: ldapServiceLookup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6062,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6080,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6083,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6092,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6094,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6109,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6112,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6115,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6126,1
    - Dst: fclose
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6138,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 89
    argCount: 5
    argNames:
    - serviceFile
    - service
    - options
    - errorMessage
    - group_found
    argTypes:
    - char*
    - char*
    - PQconninfoOption*
    - PQExpBuffer
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6141
      start: 5981
    functionDepth: 3
    functionLinenumber: 5981
    functionLinenumberEnd: 6141
    functionName: parseServiceFile
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - strcmp
    - fclose
    - ldapServiceLookup
    - fopen
    - strdup
    - isspace
    - libpq_append_error
    - fgets
    - strncmp
    - strlen
    - strchr
    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:6167,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6168,1
    - Dst: parse_connection_string
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6170,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6174,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - conninfo
    - errmsg
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6176
      start: 6159
    functionDepth: 2
    functionLinenumber: 6159
    functionLinenumberEnd: 6176
    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:6192,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6195,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6203,1
    - Dst: MemSet
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6206,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - errorMessage
    argTypes:
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6209
      start: 6181
    functionDepth: 1
    functionLinenumber: 6181
    functionLinenumberEnd: 6209
    functionName: conninfo_init
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - memcpy
    - libpq_append_error
    - malloc
    - MemSet
    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:6225,1
    - Dst: conninfo_uri_parse
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6226,1
    - Dst: conninfo_parse
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - connstr
    - errorMessage
    - use_defaults
    argTypes:
    - char*
    - PQExpBuffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6230
      start: 6220
    functionDepth: 1
    functionLinenumber: 6220
    functionLinenumberEnd: 6230
    functionName: parse_connection_string
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 2
    functionsReached:
    - conninfo_parse
    - conninfo_uri_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:6243,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6247,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - connstr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6252
      start: 6240
    functionDepth: 0
    functionLinenumber: 6240
    functionLinenumberEnd: 6252
    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:6266,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - connstr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6267
      start: 6263
    functionDepth: 0
    functionLinenumber: 6263
    functionLinenumberEnd: 6267
    functionName: recognized_connection_string
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 3
    functionsReached:
    - uri_prefix_length
    - strchr
    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:6286,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6291,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6293,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6294,1
    - Dst: isspace
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6302,1
    - Dst: isspace
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6314,1
    - Dst: isspace
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6319,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6331,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6334,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6335,1
    - Dst: isspace
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6343,1
    - Dst: isspace
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6356,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6380,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6381,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6382,1
    - Dst: conninfo_storeval
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6405,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6407,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6408,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6414,1
    - Dst: conninfo_add_defaults
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6421,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6423,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 96
    argCount: 3
    argNames:
    - conninfo
    - errorMessage
    - use_defaults
    argTypes:
    - char*
    - PQExpBuffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6429
      start: 6274
    functionDepth: 2
    functionLinenumber: 6274
    functionLinenumberEnd: 6429
    functionName: conninfo_parse
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - PQconninfoFree
    - conninfo_add_defaults
    - conninfo_storeval
    - conninfo_init
    - strdup
    - isspace
    - libpq_append_error
    - free
    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:6470,1
    - Dst: recognized_connection_string
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6477,1
    - Dst: parse_connection_string
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6479,1
    - Dst: conninfo_init
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6489,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6492,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6508,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6515,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6516,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6517,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6526,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6538,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6540,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6541,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6544,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6545,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6546,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6559,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6567,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6568,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6571,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6572,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6573,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6580,1
    - Dst: conninfo_add_defaults
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6587,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6589,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: 6595
      start: 6450
    functionDepth: 2
    functionLinenumber: 6450
    functionLinenumberEnd: 6595
    functionName: conninfo_array_parse
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - PQconninfoFree
    - conninfo_add_defaults
    - parse_connection_string
    - libpq_append_error
    - recognized_connection_string
    - conninfo_init
    - strdup
    - strcmp
    - free
    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:6621,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6630,1
    - Dst: getenv
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6641,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6643,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6647,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6660,1
    - Dst: getenv
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6662,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6666,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6670,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6690,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6694,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6707,1
    - Dst: pg_fe_getauthname
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6709,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6721,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6723,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6725,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6729,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 57
    argCount: 2
    argNames:
    - options
    - errorMessage
    argTypes:
    - PQconninfoOption*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6736
      start: 6608
    functionDepth: 3
    functionLinenumber: 6608
    functionLinenumberEnd: 6736
    functionName: conninfo_add_defaults
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 3
    functionsReached:
    - getenv
    - libpq_append_error
    - pg_fe_getauthname
    - parseServiceInfo
    - strdup
    - strcmp
    - free
    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:6750,1
    - Dst: conninfo_uri_parse_options
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6754,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6756,1
    - Dst: conninfo_add_defaults
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6765,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6767,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - uri
    - errorMessage
    - use_defaults
    argTypes:
    - char*
    - PQExpBuffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6773
      start: 6743
    functionDepth: 4
    functionLinenumber: 6743
    functionLinenumberEnd: 6773
    functionName: conninfo_uri_parse
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - conninfo_init
    - conninfo_uri_parse_options
    - conninfo_add_defaults
    - PQconninfoFree
    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:6811,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6812,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6813,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6813,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6815,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6820,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6823,1
    - Dst: uri_prefix_length
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6829,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6833,1
    - Dst: conninfo_storeval
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6861,1
    - Dst: conninfo_storeval
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6874,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6910,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6917,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6932,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6955,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6967,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6973,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6974,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6978,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6978,1
    - Dst: conninfo_storeval
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6981,1
    - Dst: conninfo_storeval
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:6985,1
    - Dst: conninfo_storeval
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7006,1
    - Dst: conninfo_uri_parse_params
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7015,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7023,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7024,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7025,1
    CyclomaticComplexity: 66
    EdgeCount: 66
    ICount: 120
    argCount: 3
    argNames:
    - options
    - uri
    - errorMessage
    argTypes:
    - PQconninfoOption*
    - char*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7027
      start: 6796
    functionDepth: 4
    functionLinenumber: 6796
    functionLinenumberEnd: 7027
    functionName: conninfo_uri_parse_options
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - appendPQExpBufferChar
    - conninfo_storeval
    - PQExpBufferDataBroken
    - termPQExpBuffer
    - appendPQExpBufferStr
    - uri_prefix_length
    - conninfo_uri_parse_params
    - strdup
    - free
    - libpq_append_error
    - initPQExpBuffer
    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:7061,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7081,1
    - Dst: conninfo_uri_decode
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7093,1
    - Dst: conninfo_uri_decode
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7099,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7103,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7111,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7112,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7114,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7115,1
    - Dst: conninfo_storeval
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7128,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7133,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7139,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7140,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7147,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7148,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 56
    argCount: 3
    argNames:
    - params
    - connOptions
    - errorMessage
    argTypes:
    - char*
    - PQconninfoOption*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7156
      start: 7037
    functionDepth: 1
    functionLinenumber: 7037
    functionLinenumberEnd: 7156
    functionName: conninfo_uri_parse_params
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - conninfo_storeval
    - libpq_append_error
    - conninfo_uri_decode
    - strcmp
    - 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:7177,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7177,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7180,1
    - Dst: get_hexdigit
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7215,1
    - Dst: get_hexdigit
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7215,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7217,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7220,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7227,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7230,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7249,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7252,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 46
    argCount: 2
    argNames:
    - str
    - errorMessage
    argTypes:
    - char*
    - PQExpBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7260
      start: 7170
    functionDepth: 1
    functionLinenumber: 7170
    functionLinenumberEnd: 7260
    functionName: conninfo_uri_decode
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - malloc
    - get_hexdigit
    - libpq_append_error
    - strlen
    - 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: 7283
      start: 7270
    functionDepth: 0
    functionLinenumber: 7270
    functionLinenumberEnd: 7283
    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:7297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - connOptions
    - keyword
    argTypes:
    - PQconninfoOption*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7300
      start: 7291
    functionDepth: 1
    functionLinenumber: 7291
    functionLinenumberEnd: 7300
    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:7331,1
    - Dst: conninfo_find
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7340,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7344,1
    - Dst: conninfo_uri_decode
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7352,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7359,1
    - Dst: libpq_append_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7362,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7367,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: 7371
      start: 7317
    functionDepth: 2
    functionLinenumber: 7317
    functionLinenumberEnd: 7371
    functionName: conninfo_storeval
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 3
    functionsReached:
    - conninfo_find
    - libpq_append_error
    - strdup
    - conninfo_uri_decode
    - strcmp
    - free
    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:7388,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - connOptions
    - keyword
    argTypes:
    - PQconninfoOption*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7393
      start: 7381
    functionDepth: 0
    functionLinenumber: 7381
    functionLinenumberEnd: 7393
    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:7412,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7413,1
    - Dst: conninfo_init
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7416,1
    - Dst: conninfo_storeval
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7432,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7437,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7440
      start: 7399
    functionDepth: 3
    functionLinenumber: 7399
    functionLinenumberEnd: 7440
    functionName: PQconninfo
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 4
    functionsReached:
    - conninfo_storeval
    - PQExpBufferDataBroken
    - termPQExpBuffer
    - conninfo_init
    - initPQExpBuffer
    linkageType: ''
    returnType: PQconninfoOption
    signature: 'PQconninfoOption *

      PQconninfo(PGconn *conn)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7450,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7451,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - connOptions
    argTypes:
    - PQconninfoOption*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7452
      start: 7443
    functionDepth: 1
    functionLinenumber: 7443
    functionLinenumberEnd: 7452
    functionName: PQconninfoFree
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 13
    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: 7462
      start: 7456
    functionDepth: 0
    functionLinenumber: 7456
    functionLinenumberEnd: 7462
    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: 7470
      start: 7464
    functionDepth: 0
    functionLinenumber: 7464
    functionLinenumberEnd: 7470
    functionName: PQservice
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      PQservice(const PGconn *conn)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7478
      start: 7472
    functionDepth: 0
    functionLinenumber: 7472
    functionLinenumberEnd: 7478
    functionName: PQuser
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 7
    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: 7495
      start: 7480
    functionDepth: 0
    functionLinenumber: 7480
    functionLinenumberEnd: 7495
    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: 7518
      start: 7497
    functionDepth: 0
    functionLinenumber: 7497
    functionLinenumberEnd: 7518
    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: 7531
      start: 7520
    functionDepth: 0
    functionLinenumber: 7520
    functionLinenumberEnd: 7531
    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: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7543
      start: 7533
    functionDepth: 0
    functionLinenumber: 7533
    functionLinenumberEnd: 7543
    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: 7555
      start: 7549
    functionDepth: 0
    functionLinenumber: 7549
    functionLinenumberEnd: 7555
    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: 7563
      start: 7557
    functionDepth: 0
    functionLinenumber: 7557
    functionLinenumberEnd: 7563
    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: 7571
      start: 7565
    functionDepth: 0
    functionLinenumber: 7565
    functionLinenumberEnd: 7571
    functionName: PQstatus
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 30
    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: 7581
      start: 7573
    functionDepth: 0
    functionLinenumber: 7573
    functionLinenumberEnd: 7581
    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:7592,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - conn
    - paramName
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7596
      start: 7583
    functionDepth: 0
    functionLinenumber: 7583
    functionLinenumberEnd: 7596
    functionName: PQparameterStatus
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 15
    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:7605,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7606
      start: 7598
    functionDepth: 1
    functionLinenumber: 7598
    functionLinenumberEnd: 7606
    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:7615,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7616
      start: 7608
    functionDepth: 1
    functionLinenumber: 7608
    functionLinenumberEnd: 7616
    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: 7626
      start: 7618
    functionDepth: 0
    functionLinenumber: 7618
    functionLinenumberEnd: 7626
    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:7632,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7639,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7640,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7643
      start: 7628
    functionDepth: 1
    functionLinenumber: 7628
    functionLinenumberEnd: 7643
    functionName: PQerrorMessage
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 121
    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: 7662
      start: 7654
    functionDepth: 0
    functionLinenumber: 7654
    functionLinenumberEnd: 7662
    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: 7670
      start: 7664
    functionDepth: 0
    functionLinenumber: 7664
    functionLinenumberEnd: 7670
    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: 7679
      start: 7672
    functionDepth: 0
    functionLinenumber: 7672
    functionLinenumberEnd: 7679
    functionName: PQpipelineStatus
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 13
    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:7688,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7694
      start: 7681
    functionDepth: 1
    functionLinenumber: 7681
    functionLinenumberEnd: 7694
    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: 7705
      start: 7696
    functionDepth: 0
    functionLinenumber: 7696
    functionLinenumberEnd: 7705
    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: 7716
      start: 7707
    functionDepth: 0
    functionLinenumber: 7707
    functionLinenumberEnd: 7716
    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: 7724
      start: 7718
    functionDepth: 0
    functionLinenumber: 7718
    functionLinenumberEnd: 7724
    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:7741,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7742,1
    - Dst: pg_get_encoding_from_locale
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7742,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7745,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7749,1
    - Dst: PQexec
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7750,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7764,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - conn
    - encoding
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7766
      start: 7726
    functionDepth: 3
    functionLinenumber: 7726
    functionLinenumberEnd: 7766
    functionName: PQsetClientEncoding
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 5
    functionsReached:
    - strcmp
    - PQexec
    - sprintf
    - pg_encoding_to_char
    - PQclear
    - pg_get_encoding_from_locale
    - strlen
    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: 7778
      start: 7768
    functionDepth: 0
    functionLinenumber: 7768
    functionLinenumberEnd: 7778
    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: 7790
      start: 7780
    functionDepth: 0
    functionLinenumber: 7780
    functionLinenumberEnd: 7790
    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: 7807
      start: 7792
    functionDepth: 0
    functionLinenumber: 7792
    functionLinenumberEnd: 7807
    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: 7824
      start: 7809
    functionDepth: 0
    functionLinenumber: 7809
    functionLinenumberEnd: 7824
    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:7837,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7838,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - arg
    - res
    argTypes:
    - void*
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7839
      start: 7832
    functionDepth: 1
    functionLinenumber: 7832
    functionLinenumberEnd: 7839
    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:7852,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - arg
    - message
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7853
      start: 7847
    functionDepth: 0
    functionLinenumber: 7847
    functionLinenumberEnd: 7853
    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: 7893
      start: 7859
    functionDepth: 0
    functionLinenumber: 7859
    functionLinenumberEnd: 7893
    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:7915,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7921,1
    - Dst: fopen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7928,1
    - Dst: fstat
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7933,1
    - Dst: fileno
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7933,1
    - Dst: fclose
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7935,1
    - Dst: S_ISREG
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7939,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7941,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7942,1
    - Dst: fclose
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7944,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7951,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7952,1
    - Dst: fclose
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7954,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7966,1
    - Dst: feof
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7968,1
    - Dst: ferror
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7968,1
    - Dst: enlargePQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7971,1
    - Dst: fgets
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7975,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7977,1
    - Dst: feof
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7980,1
    - Dst: pg_strip_crlf
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7990,1
    - Dst: pwdfMatchesString
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7993,1
    - Dst: pwdfMatchesString
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7994,1
    - Dst: pwdfMatchesString
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7995,1
    - Dst: pwdfMatchesString
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:7996,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8003,1
    - Dst: fclose
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8005,1
    - Dst: explicit_bzero
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8006,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8007,1
    - Dst: fclose
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8032,1
    - Dst: explicit_bzero
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8033,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8034,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 63
    argCount: 5
    argNames:
    - hostname
    - port
    - dbname
    - username
    - pgpassfile
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8036
      start: 7896
    functionDepth: 3
    functionLinenumber: 7896
    functionLinenumberEnd: 8036
    functionName: passwordFromFile
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - feof
    - termPQExpBuffer
    - fstat
    - fprintf
    - enlargePQExpBuffer
    - strlen
    - fopen
    - is_unixsock_path
    - strdup
    - fileno
    - explicit_bzero
    - strcmp
    - fclose
    - ferror
    - pwdfMatchesString
    - libpq_gettext
    - fgets
    - S_ISREG
    - pg_strip_crlf
    - initPQExpBuffer
    linkageType: ''
    returnType: char
    signature: "char *\npasswordFromFile(const char *hostname, const char *port, const
      char *dbname,\n\t\t\t\t const char *username, const char *pgpassfile)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8052,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8055,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8056,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8059
      start: 8043
    functionDepth: 1
    functionLinenumber: 8043
    functionLinenumberEnd: 8059
    functionName: pgpassfileWarning
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - strcmp
    - libpq_append_conn_error
    - PQresultErrorField
    linkageType: ''
    returnType: void
    signature: void pgpassfileWarning(PGconn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8073,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8076,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8077,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8078,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8079,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 6
    argCount: 1
    argNames:
    - version
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8084
      start: 8066
    functionDepth: 2
    functionLinenumber: 8066
    functionLinenumberEnd: 8084
    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:8095,1
    - Dst: sslVerifyProtocolVersion
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8095,1
    - Dst: sslVerifyProtocolVersion
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8096,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8099,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8099,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8106,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8113,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8120,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 11
    argCount: 2
    argNames:
    - min
    - max
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8124
      start: 8092
    functionDepth: 3
    functionLinenumber: 8092
    functionLinenumberEnd: 8124
    functionName: sslVerifyProtocolRange
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - sslVerifyProtocolVersion
    - Assert
    - pg_strcasecmp
    - strlen
    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:8151,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8154,1
    - Dst: getpwuid_r
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8164,1
    - Dst: geteuid
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8164,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8167,1
    - Dst: ZeroMemory
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8173,1
    - Dst: SHGetFolderPath
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8174,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8176,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - buf
    - bufsize
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8179
      start: 8145
    functionDepth: 1
    functionLinenumber: 8145
    functionLinenumberEnd: 8179
    functionName: pqGetHomeDirectory
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 3
    functionsReached:
    - getenv
    - SHGetFolderPath
    - getpwuid_r
    - snprintf
    - ZeroMemory
    - strlcpy
    - geteuid
    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:8193,1
    - Dst: strtol
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8199,1
    - Dst: isspace
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8212,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8222,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 4
    argNames:
    - value
    - result
    - conn
    - context
    argTypes:
    - char*
    - int*
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8225
      start: 8186
    functionDepth: 1
    functionLinenumber: 8186
    functionLinenumberEnd: 8225
    functionName: pqParseIntParam
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 9
    functionsReached:
    - isspace
    - Assert
    - strtol
    - libpq_append_conn_error
    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:8235,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8240,1
    - Dst: PG_PROTOCOL
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8242,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8248,1
    - Dst: PG_PROTOCOL
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8250,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8254,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - value
    - result
    - conn
    - context
    argTypes:
    - char*
    - ProtocolVersion*
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8257
      start: 8231
    functionDepth: 1
    functionLinenumber: 8231
    functionLinenumberEnd: 8257
    functionName: pqParseProtocolVersion
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 1
    functionsReached:
    - PG_PROTOCOL
    - strcmp
    - libpq_append_conn_error
    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:8276,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8277,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8281,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-connect.c:8282,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - acquire
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8284
      start: 8269
    functionDepth: 1
    functionLinenumber: 8269
    functionLinenumberEnd: 8284
    functionName: default_threadlock
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-connect.c
    functionUses: 0
    functionsReached:
    - Assert
    - pthread_mutex_unlock
    - pthread_mutex_lock
    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: 8297
      start: 8286
    functionDepth: 0
    functionLinenumber: 8286
    functionLinenumberEnd: 8297
    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: []
    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: 196
    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: 94
    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:
    - PQresultStatus
    - lo_initialize
    - PQfn
    - PQclear
    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:
    - PQresultStatus
    - lo_initialize
    - PQfn
    - PQclear
    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:
    - PQfn
    - PQresultStatus
    - lo_initialize
    - libpq_append_conn_error
    - PQclear
    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_hton64
    - PQfn
    - PQresultStatus
    - lo_initialize
    - libpq_append_conn_error
    - PQclear
    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: PQfn
      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:
    - PQfn
    - PQresultStatus
    - lo_initialize
    - libpq_append_conn_error
    - PQclear
    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:
    - PQfn
    - PQresultStatus
    - lo_initialize
    - unconstify
    - libpq_append_conn_error
    - PQclear
    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:
    - PQresultStatus
    - lo_initialize
    - PQfn
    - PQclear
    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: PQfn
      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_hton64
    - PQfn
    - PQresultStatus
    - lo_initialize
    - lo_ntoh64
    - libpq_append_conn_error
    - PQclear
    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:
    - PQresultStatus
    - lo_initialize
    - PQfn
    - PQclear
    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:
    - PQfn
    - PQresultStatus
    - lo_initialize
    - libpq_append_conn_error
    - PQclear
    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:
    - PQresultStatus
    - lo_initialize
    - PQfn
    - PQclear
    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: PQfn
      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:
    - PQfn
    - PQresultStatus
    - lo_initialize
    - lo_ntoh64
    - libpq_append_conn_error
    - PQclear
    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:
    - PQresultStatus
    - lo_initialize
    - PQfn
    - PQclear
    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:
    - lo_open
    - lo_close
    - close
    - strerror_r
    - open
    - pqClearConnErrorState
    - lo_write
    - libpq_append_conn_error
    - read
    - lo_creat
    - lo_create
    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:
    - write
    - lo_open
    - lo_read
    - lo_close
    - close
    - open
    - strerror_r
    - pqClearConnErrorState
    - 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:
    - malloc
    - PQexec
    - PQntuples
    - atoi
    - pqClearConnErrorState
    - PQgetvalue
    - MemSet
    - libpq_append_conn_error
    - PQclear
    - strcmp
    - free
    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: 66
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 66
    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: 85
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 85
    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:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - c
    - conn
    argTypes:
    - char
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 98
    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:126,1
    - Dst: appendBinaryPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:128,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - buf
    - conn
    - resetbuffer
    argTypes:
    - PQExpBuffer
    - PGconn*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 108
    functionDepth: 4
    functionLinenumber: 108
    functionLinenumberEnd: 133
    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:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - conn
    argTypes:
    - PQExpBuffer
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 135
    functionDepth: 5
    functionLinenumber: 135
    functionLinenumberEnd: 139
    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:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - conn
    argTypes:
    - PQExpBuffer
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 141
    functionDepth: 5
    functionLinenumber: 141
    functionLinenumberEnd: 145
    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:154,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - s
    - conn
    argTypes:
    - char*
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 158
    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:170,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - s
    - len
    - conn
    argTypes:
    - void*
    - size_t
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 176
    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: 195
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 195
    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:204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - s
    - len
    - conn
    argTypes:
    - void*
    - size_t
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 208
    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:226,1
    - Dst: pg_ntoh16
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:228,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:233,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:235,1
    - Dst: pqInternalNotice
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:238,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - result
    - bytes
    - conn
    argTypes:
    - int*
    - size_t
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 215
    functionDepth: 3
    functionLinenumber: 215
    functionLinenumberEnd: 245
    functionName: pqGetInt
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 11
    functionsReached:
    - memcpy
    - pg_ntoh16
    - pg_ntoh32
    - pqInternalNotice
    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:261,1
    - Dst: pqPutMsgBytes
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:262,1
    - Dst: pg_hton32
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:266,1
    - Dst: pqPutMsgBytes
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:267,1
    - Dst: pqInternalNotice
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:271,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - value
    - bytes
    - conn
    argTypes:
    - int
    - size_t
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 252
    functionDepth: 3
    functionLinenumber: 252
    functionLinenumberEnd: 278
    functionName: pqPutInt
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 4
    functionsReached:
    - pg_hton16
    - pqInternalNotice
    - pqPutMsgBytes
    - pg_hton32
    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:310,1
    - Dst: realloc
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:328,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:339,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 2
    argNames:
    - bytes_needed
    - conn
    argTypes:
    - size_t
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 286
    functionDepth: 2
    functionLinenumber: 286
    functionLinenumberEnd: 342
    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:373,1
    - Dst: realloc
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:404,1
    - Dst: realloc
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:422,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:433,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 2
    argNames:
    - bytes_needed
    - conn
    argTypes:
    - size_t
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 350
    functionDepth: 2
    functionLinenumber: 350
    functionLinenumberEnd: 436
    functionName: pqCheckInBufferSpace
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 4
    functionsReached:
    - realloc
    - appendPQExpBufferStr
    - memmove
    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:447,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - conn
    - newInStart
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 442
    functionDepth: 4
    functionLinenumber: 442
    functionLinenumberEnd: 451
    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:490,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - msg_type
    - conn
    argTypes:
    - char
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 472
    functionDepth: 3
    functionLinenumber: 472
    functionLinenumberEnd: 501
    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:512,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:515,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - buf
    - len
    - conn
    argTypes:
    - void*
    - size_t
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 508
    functionDepth: 3
    functionLinenumber: 508
    functionLinenumberEnd: 519
    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:539,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:540,1
    - Dst: pqTraceOutputMessage
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:547,1
    - Dst: pqTraceOutputNoTypeByteMessage
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:549,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:578,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:581,1
    - Dst: pqSendSome
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:586,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 531
    functionDepth: 4
    functionLinenumber: 531
    functionLinenumberEnd: 592
    functionName: pqPutMsgEnd
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 14
    functionsReached:
    - Assert
    - pqTraceOutputMessage
    - pqTraceOutputNoTypeByteMessage
    - pg_hton32
    - memcpy
    - pqSendSome
    linkageType: ''
    returnType: int
    signature: int pqPutMsgEnd(PGconn *conn)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:613,1
    - Dst: memmove
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:622,1
    - Dst: pqCheckInBufferSpace
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:645,1
    - Dst: pqsecure_read
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:657,1
    - Dst: pqReadReady
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:734,1
    - Dst: pqsecure_read
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:752,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:791,1
    - Dst: pqDropConnection
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:798,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 93
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 605
    functionDepth: 4
    functionLinenumber: 605
    functionLinenumberEnd: 801
    functionName: pqReadData
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 7
    functionsReached:
    - pqReadReady
    - pqCheckInBufferSpace
    - memmove
    - libpq_append_conn_error
    - pqsecure_read
    - pqDropConnection
    linkageType: ''
    returnType: int
    signature: int pqReadData(PGconn *conn)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: pqReadData
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:847,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:858,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:858,1
    - Dst: pqsecure_write
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:870,1
    - Dst: pqsecure_write
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:878,1
    - Dst: Min
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:878,1
    - Dst: pqReadData
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:904,1
    - Dst: pqReadData
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:957,1
    - Dst: pqIsnonblocking
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:963,1
    - Dst: pqWait
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:969,1
    - Dst: memmove
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:979,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 60
    argCount: 2
    argNames:
    - conn
    - len
    argTypes:
    - PGconn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 824
    functionDepth: 5
    functionLinenumber: 824
    functionLinenumberEnd: 983
    functionName: pqSendSome
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 1
    functionsReached:
    - Min
    - pqsecure_write
    - pqIsnonblocking
    - memmove
    - pqWait
    - strdup
    - libpq_gettext
    - 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:999,1
    - Dst: pqSendSome
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1001,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1005
      start: 993
    functionDepth: 6
    functionLinenumber: 993
    functionLinenumberEnd: 1005
    functionName: pqFlush
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 17
    functionsReached:
    - fflush
    - pqSendSome
    linkageType: ''
    returnType: int
    signature: int pqFlush(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pqWaitTimed
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1021,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - forRead
    - forWrite
    - conn
    argTypes:
    - int
    - int
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1022
      start: 1018
    functionDepth: 1
    functionLinenumber: 1018
    functionLinenumberEnd: 1022
    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:1039,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1046,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: 1051
      start: 1034
    functionDepth: 1
    functionLinenumber: 1034
    functionLinenumberEnd: 1051
    functionName: pqWaitTimed
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 2
    functionsReached:
    - pqSocketCheck
    - libpq_append_conn_error
    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:1060,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 1057
    functionDepth: 1
    functionLinenumber: 1057
    functionLinenumberEnd: 1061
    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:1070,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1071
      start: 1067
    functionDepth: 1
    functionLinenumber: 1067
    functionLinenumberEnd: 1071
    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:1098,1
    - Dst: pgtls_read_pending
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1104,1
    - Dst: PQsocketPoll
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1114,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1121,1
    - Dst: SOCK_STRERROR
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1122,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 4
    argNames:
    - conn
    - forRead
    - forWrite
    - end_time
    argTypes:
    - PGconn*
    - int
    - int
    - pg_usec_time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1126
      start: 1082
    functionDepth: 1
    functionLinenumber: 1082
    functionLinenumberEnd: 1126
    functionName: pqSocketCheck
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 3
    functionsReached:
    - pgtls_read_pending
    - PQsocketPoll
    - libpq_append_conn_error
    - SOCK_STRERROR
    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:1167,1
    - Dst: poll
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1175,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1187,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1188,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1189,1
    - Dst: FD_SET
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1191,1
    - Dst: FD_SET
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1194,1
    - Dst: FD_SET
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1195,1
    - Dst: PQgetCurrentTimeUSec
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1208,1
    - Dst: select
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1223,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: 1226
      start: 1140
    functionDepth: 1
    functionLinenumber: 1140
    functionLinenumberEnd: 1226
    functionName: PQsocketPoll
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 2
    functionsReached:
    - PQgetCurrentTimeUSec
    - select
    - FD_SET
    - FD_ZERO
    - poll
    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:1239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1241
      start: 1234
    functionDepth: 2
    functionLinenumber: 1234
    functionLinenumberEnd: 1241
    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:1257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - encoding
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1258
      start: 1254
    functionDepth: 2
    functionLinenumber: 1254
    functionLinenumberEnd: 1258
    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:1268,1
    - Dst: pg_encoding_mblen
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - encoding
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1269
      start: 1265
    functionDepth: 2
    functionLinenumber: 1265
    functionLinenumberEnd: 1269
    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:1278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - encoding
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1279
      start: 1275
    functionDepth: 2
    functionLinenumber: 1275
    functionLinenumberEnd: 1279
    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:1290,1
    - Dst: pg_char_to_encoding
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1293,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1298
      start: 1284
    functionDepth: 2
    functionLinenumber: 1284
    functionLinenumberEnd: 1298
    functionName: PQenv2encoding
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 1
    functionsReached:
    - getenv
    - pg_char_to_encoding
    linkageType: ''
    returnType: int
    signature: int PQenv2encoding(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetLastError
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1320,1
    - Dst: pthread_mutex_lock
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1325,1
    - Dst: getenv
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1335,1
    - Dst: bindtextdomain
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1338,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1338,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1342,1
    - Dst: SetLastError
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1345,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1350
      start: 1303
    functionDepth: 1
    functionLinenumber: 1303
    functionLinenumberEnd: 1350
    functionName: libpq_binddomain
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 0
    functionsReached:
    - getenv
    - PG_TEXTDOMAIN
    - SetLastError
    - pthread_mutex_lock
    - bindtextdomain
    - GetLastError
    - pthread_mutex_unlock
    linkageType: ''
    returnType: void
    signature: void libpq_binddomain(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: libpq_binddomain
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1355,1
    - Dst: dgettext
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1356,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - msgid
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1357
      start: 1352
    functionDepth: 2
    functionLinenumber: 1352
    functionLinenumberEnd: 1357
    functionName: libpq_gettext
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 42
    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:1362,1
    - Dst: dngettext
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1363,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - msgid
    - msgid_plural
    - n
    argTypes:
    - char*
    - char*
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1364
      start: 1359
    functionDepth: 2
    functionLinenumber: 1359
    functionLinenumberEnd: 1364
    functionName: libpq_ngettext
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 1
    functionsReached:
    - PG_TEXTDOMAIN
    - libpq_binddomain
    - dngettext
    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:1381,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1381,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1383,1
    - Dst: va_start
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1390,1
    - Dst: appendPQExpBufferVA
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1391,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1391,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1392,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1395,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - errorMessage
    - fmt
    argTypes:
    - PQExpBuffer
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1396
      start: 1374
    functionDepth: 4
    functionLinenumber: 1374
    functionLinenumberEnd: 1396
    functionName: libpq_append_error
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 13
    functionsReached:
    - appendPQExpBufferChar
    - Assert
    - appendPQExpBufferVA
    - va_end
    - libpq_gettext
    - PQExpBufferBroken
    - va_start
    - strlen
    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:1410,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1410,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1412,1
    - Dst: va_start
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1419,1
    - Dst: appendPQExpBufferVA
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1420,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1420,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1421,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq/fe-misc.c:1424,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - conn
    - fmt
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1425
      start: 1403
    functionDepth: 4
    functionLinenumber: 1403
    functionLinenumberEnd: 1425
    functionName: libpq_append_conn_error
    functionSourceFile: /src/postgres/src/interfaces/libpq/fe-misc.c
    functionUses: 106
    functionsReached:
    - appendPQExpBufferChar
    - Assert
    - appendPQExpBufferVA
    - va_end
    - libpq_gettext
    - PQExpBufferBroken
    - va_start
    - strlen
    linkageType: ''
    returnType: void
    signature: void libpq_append_conn_error(PGconn *conn, const char *fmt,...)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sigemptyset
      Src: /src/postgres/src/interfaces/libpq/legacy-pqsignal.c:49,1
    - Dst: sigaction
      Src: /src/postgres/src/interfaces/libpq/legacy-pqsignal.c:57,1
    - Dst: signal
      Src: /src/postgres/src/interfaces/libpq/legacy-pqsignal.c:61,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - signo
    - func
    argTypes:
    - int
    - pqsigfunc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 63
    functionName: pqsignal
    functionSourceFile: /src/postgres/src/interfaces/libpq/legacy-pqsignal.c
    functionUses: 22
    functionsReached:
    - sigemptyset
    - sigaction
    - signal
    linkageType: ''
    returnType: pqsigfunc
    signature: pqsigfunc pqsignal(int signo, pqsigfunc func)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 732
    functionDepth: 0
    functionLinenumber: 732
    functionLinenumberEnd: 733
    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: 734
      start: 733
    functionDepth: 0
    functionLinenumber: 733
    functionLinenumberEnd: 734
    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: 914
      start: 911
    functionDepth: 0
    functionLinenumber: 911
    functionLinenumberEnd: 914
    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: 922
      start: 920
    functionDepth: 0
    functionLinenumber: 920
    functionLinenumberEnd: 922
    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: 928
      start: 927
    functionDepth: 0
    functionLinenumber: 927
    functionLinenumberEnd: 928
    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: 939
      start: 938
    functionDepth: 0
    functionLinenumber: 938
    functionLinenumberEnd: 939
    functionName: libpq_gettext
    functionSourceFile: /src/postgres/src/interfaces/libpq/libpq-int.h
    functionUses: 44
    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: 940
      start: 939
    functionDepth: 0
    functionLinenumber: 939
    functionLinenumberEnd: 940
    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: 958
      start: 957
    functionDepth: 0
    functionLinenumber: 957
    functionLinenumberEnd: 958
    functionName: SOCK_ERRNO_SET
    functionSourceFile: /src/postgres/src/interfaces/libpq/libpq-int.h
    functionUses: 8
    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: 962
      start: 961
    functionDepth: 0
    functionLinenumber: 961
    functionLinenumberEnd: 962
    functionName: SOCK_ERRNO_SET
    functionSourceFile: /src/postgres/src/interfaces/libpq/libpq-int.h
    functionUses: 8
    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: 15
    functionsReached:
    - printf
    - PQconninfoParse
    - fprintf
    - PQconndefaults
    - strcmp
    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()
  - 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: 15
    functionsReached:
    - print_ssl_library
    - printf
    - strcmp
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 11
    argNames:
    - threadlock_impl
    - gettext_impl
    - errmsg_impl
    - clientid_impl
    - clientsecret_impl
    - discoveryuri_impl
    - issuerid_impl
    - scope_impl
    - saslstate_impl
    - setaltsock_impl
    - settoken_impl
    argTypes:
    - pgthreadlock_t
    - libpq_gettext_func
    - conn_errorMessage_func
    - conn_oauth_client_id_func
    - conn_oauth_client_secret_func
    - conn_oauth_discovery_uri_func
    - conn_oauth_issuer_id_func
    - conn_oauth_scope_func
    - conn_sasl_state_func
    - set_conn_altsock_func
    - set_conn_oauth_token_func
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 88
    functionName: libpq_oauth_init
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void libpq_oauth_init(pgthreadlock_t threadlock_impl,\n\t\t\t\t libpq_gettext_func
      gettext_impl,\n\t\t\t\t conn_errorMessage_func errmsg_impl,\n\t\t\t\t conn_oauth_client_id_func
      clientid_impl,\n\t\t\t\t conn_oauth_client_secret_func clientsecret_impl,\n\t\t\t\t
      conn_oauth_discovery_uri_func discoveryuri_impl,\n\t\t\t\t conn_oauth_issuer_id_func
      issuerid_impl,\n\t\t\t\t conn_oauth_scope_func scope_impl,\n\t\t\t\t conn_sasl_state_func
      saslstate_impl,\n\t\t\t\t set_conn_altsock_func setaltsock_impl,\n\t\t\t\t set_conn_oauth_token_func
      settoken_impl)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: conn_errorMessage
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:100,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:102,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:102,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:104,1
    - Dst: va_start
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:111,1
    - Dst: appendPQExpBufferVA
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:112,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:112,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:113,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - conn
    - fmt
    argTypes:
    - PGconn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 94
    functionDepth: 4
    functionLinenumber: 94
    functionLinenumberEnd: 117
    functionName: libpq_append_conn_error
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c
    functionUses: 106
    functionsReached:
    - appendPQExpBufferChar
    - Assert
    - conn_errorMessage
    - appendPQExpBufferVA
    - va_end
    - libpq_gettext
    - PQExpBufferBroken
    - va_start
    - strlen
    linkageType: ''
    returnType: void
    signature: void libpq_append_conn_error(PGconn *conn, const char *fmt,...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unconstify
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:137,1
    - Dst: libpq_gettext_impl
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - msgid
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 141
    functionName: libpq_gettext
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c
    functionUses: 45
    functionsReached:
    - unconstify
    - libpq_gettext_impl
    linkageType: ''
    returnType: char
    signature: 'char *

      libpq_gettext(const char *msgid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:151,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:153,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 154
    functionName: oauth_unsafe_debugging_enabled
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c
    functionUses: 2
    functionsReached:
    - getenv
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool oauth_unsafe_debugging_enabled(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 163
    functionName: SOCK_ERRNO_SET
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c
    functionUses: 8
    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: 166
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 166
    functionName: SOCK_ERRNO_SET
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c
    functionUses: 8
    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:177,1
    - Dst: sigaddset
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:178,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:181,1
    - Dst: pthread_sigmask
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:181,1
    - Dst: sigismember
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:186,1
    - Dst: sigpending
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:189,1
    - Dst: sigismember
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:192,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - osigset
    - sigpipe_pending
    argTypes:
    - sigset_t*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 201
    functionName: pq_block_sigpipe
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c
    functionUses: 1
    functionsReached:
    - sigemptyset
    - sigismember
    - pthread_sigmask
    - SOCK_ERRNO_SET
    - sigpending
    - 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:217,1
    - Dst: sigismember
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:218,1
    - Dst: sigemptyset
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:222,1
    - Dst: sigaddset
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:223,1
    - Dst: sigwait
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:225,1
    - Dst: pthread_sigmask
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:230,1
    - Dst: SOCK_ERRNO_SET
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c:232,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: 233
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 233
    functionName: pq_reset_sigpipe
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.c
    functionUses: 1
    functionsReached:
    - sigemptyset
    - sigismember
    - pthread_sigmask
    - SOCK_ERRNO_SET
    - sigpending
    - sigaddset
    - sigwait
    linkageType: ''
    returnType: void
    signature: void pq_reset_sigpipe(sigset_t *osigset, bool sigpipe_pending, bool
      got_epipe)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - CONN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: conn_errorMessage
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: conn_errorMessage(CONN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - CONN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 55
    functionName: conn_oauth_client_id
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: conn_oauth_client_id(CONN)
  - 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: conn_oauth_client_secret
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: conn_oauth_client_secret(CONN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - CONN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: conn_oauth_discovery_uri
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: conn_oauth_discovery_uri(CONN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - CONN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 58
    functionName: conn_oauth_issuer_id
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: conn_oauth_issuer_id(CONN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - CONN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 59
    functionName: conn_oauth_scope
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: conn_oauth_scope(CONN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - CONN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 60
    functionName: conn_sasl_state
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: conn_sasl_state(CONN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - CONN
    - ','
    - VAL
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: set_conn_altsock
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: set_conn_altsock(CONN, VAL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - CONN
    - ','
    - VAL
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 63
    functionName: set_conn_oauth_token
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: set_conn_oauth_token(CONN, VAL)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:125,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:126,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:127,1
    - Dst: curl_slist_free_all
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - provider
    argTypes:
    - struct provider*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 129
    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:153,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:154,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:155,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:156,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:157,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - authz
    argTypes:
    - struct device_authz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 159
    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:178,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - err
    argTypes:
    - struct token_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 180
    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:204,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:205,1
    - Dst: free_token_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - tok
    argTypes:
    - struct token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 201
    functionDepth: 2
    functionLinenumber: 201
    functionLinenumberEnd: 207
    functionName: free_token
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - free
    - free_token_error
    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:302,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:305,1
    - Dst: curl_multi_strerror
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:307,1
    - Dst: curl_easy_cleanup
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:317,1
    - Dst: curl_multi_cleanup
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:322,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:325,1
    - Dst: curl_multi_strerror
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:327,1
    - Dst: free_provider
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:330,1
    - Dst: free_device_authz
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:331,1
    - Dst: curl_slist_free_all
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:333,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:334,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:335,1
    - Dst: close
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:338,1
    - Dst: close
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:340,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:342,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - conn
    - actx
    argTypes:
    - PGconn*
    - struct async_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 286
    functionDepth: 2
    functionLinenumber: 286
    functionLinenumberEnd: 343
    functionName: free_async_ctx
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - curl_multi_strerror
    - curl_easy_cleanup
    - free_device_authz
    - curl_slist_free_all
    - curl_multi_remove_handle
    - free_provider
    - termPQExpBuffer
    - close
    - libpq_append_conn_error
    - curl_multi_cleanup
    - free
    linkageType: ''
    returnType: void
    signature: void free_async_ctx(PGconn *conn, struct async_ctx *actx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: conn_sasl_state
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:356,1
    - Dst: free_async_ctx
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:360,1
    - Dst: set_conn_altsock
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:364,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 353
    functionDepth: 3
    functionLinenumber: 353
    functionLinenumberEnd: 365
    functionName: pg_fe_cleanup_oauth_flow
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - conn_sasl_state
    - free_async_ctx
    - set_conn_altsock
    linkageType: ''
    returnType: void
    signature: void pg_fe_cleanup_oauth_flow(PGconn *conn)
  - 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: 375
      start: 373
    functionDepth: 0
    functionLinenumber: 373
    functionLinenumberEnd: 375
    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: 5
    argNames:
    - (
    - ACTX
    - ','
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 376
    functionDepth: 0
    functionLinenumber: 376
    functionLinenumberEnd: 378
    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: 394
      start: 384
    functionDepth: 0
    functionLinenumber: 384
    functionLinenumberEnd: 394
    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: 405
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 405
    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: 416
      start: 406
    functionDepth: 0
    functionLinenumber: 406
    functionLinenumberEnd: 416
    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: 462
      start: 460
    functionDepth: 0
    functionLinenumber: 460
    functionLinenumberEnd: 462
    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: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:468,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:489,1
    - Dst: oauth_parse_set_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:493,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct oauth_parse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 463
    functionDepth: 1
    functionLinenumber: 463
    functionLinenumberEnd: 494
    functionName: report_type_mismatch
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - oauth_parse_set_error
    - Assert
    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:507,1
    - Dst: oauth_parse_set_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:514,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 496
    functionDepth: 2
    functionLinenumber: 496
    functionLinenumberEnd: 519
    functionName: oauth_json_object_start
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - oauth_parse_set_error
    - report_type_mismatch
    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:537,1
    - Dst: oauth_parse_set_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:538,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:546,1
    - Dst: oauth_parse_set_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:566,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 3
    argNames:
    - state
    - name
    - isnull
    argTypes:
    - void*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 521
    functionDepth: 1
    functionLinenumber: 521
    functionLinenumberEnd: 574
    functionName: oauth_json_object_field_start
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - strcmp
    - oauth_parse_set_error
    - Assert
    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:589,1
    - Dst: oauth_parse_set_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:590,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 576
    functionDepth: 1
    functionLinenumber: 576
    functionLinenumberEnd: 597
    functionName: oauth_json_object_end
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - oauth_parse_set_error
    - Assert
    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:606,1
    - Dst: report_type_mismatch
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:616,1
    - Dst: oauth_parse_set_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:624,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 599
    functionDepth: 2
    functionLinenumber: 599
    functionLinenumberEnd: 629
    functionName: oauth_json_array_start
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - oauth_parse_set_error
    - report_type_mismatch
    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:645,1
    - Dst: oauth_parse_set_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:646,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 631
    functionDepth: 1
    functionLinenumber: 631
    functionLinenumberEnd: 657
    functionName: oauth_json_array_end
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - oauth_parse_set_error
    - Assert
    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:666,1
    - Dst: report_type_mismatch
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:681,1
    - Dst: report_type_mismatch
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:691,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:700,1
    - Dst: oauth_parse_set_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:701,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:710,1
    - Dst: oauth_parse_set_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:711,1
    - Dst: strdup
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:717,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:732,1
    - Dst: oauth_parse_set_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:733,1
    - Dst: curl_slist_append
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:740,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 47
    argCount: 3
    argNames:
    - state
    - token
    - type
    argTypes:
    - void*
    - char*
    - JsonTokenType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 659
    functionDepth: 2
    functionLinenumber: 659
    functionLinenumberEnd: 753
    functionName: oauth_json_scalar
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - curl_slist_append
    - oauth_parse_set_error
    - Assert
    - 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:762,1
    - Dst: CHECK_GETINFO
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:765,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:769,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:777,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:781,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:781,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:808,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 2
    argNames:
    - actx
    - type
    argTypes:
    - struct async_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 759
    functionDepth: 2
    functionLinenumber: 759
    functionLinenumberEnd: 810
    functionName: check_content_type
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - Assert
    - actx_error
    - CHECK_GETINFO
    - pg_strncasecmp
    - strlen
    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:828,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:831,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:833,1
    - Dst: pg_encoding_verifymbstr
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:841,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:843,1
    - Dst: makeJsonLexContextCstringLen
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:847,1
    - Dst: setJsonLexContextOwnsTokens
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:848,1
    - Dst: pg_parse_json
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:861,1
    - Dst: actx_error_str
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:871,1
    - Dst: json_errdetail
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:871,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:883,1
    - Dst: freeJsonLexContext
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:893,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 2
    argNames:
    - actx
    - fields
    argTypes:
    - struct async_ctx*
    - struct json_field*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 818
    functionDepth: 3
    functionLinenumber: 818
    functionLinenumberEnd: 895
    functionName: parse_oauth_json
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - freeJsonLexContext
    - json_errdetail
    - check_content_type
    - actx_error
    - actx_error_str
    - setJsonLexContextOwnsTokens
    - pg_parse_json
    - pg_encoding_verifymbstr
    - strlen
    - 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:928,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - actx
    - provider
    argTypes:
    - struct async_ctx*
    - struct provider*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 905
    functionDepth: 4
    functionLinenumber: 905
    functionLinenumberEnd: 929
    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:946,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:954,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 936
    functionDepth: 1
    functionLinenumber: 936
    functionLinenumberEnd: 959
    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:976,1
    - Dst: ceil
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:977,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - actx
    - interval_str
    argTypes:
    - struct async_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 971
    functionDepth: 2
    functionLinenumber: 971
    functionLinenumberEnd: 986
    functionName: parse_interval
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - parse_json_number
    - ceil
    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:1002,1
    - Dst: floor
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1003,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - actx
    - expires_in_str
    argTypes:
    - struct async_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 997
    functionDepth: 2
    functionLinenumber: 997
    functionLinenumberEnd: 1011
    functionName: parse_expires_in
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - parse_json_number
    - floor
    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:1042,1
    - Dst: parse_interval
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1050,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1060,1
    - Dst: parse_expires_in
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1061,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - actx
    - authz
    argTypes:
    - struct async_ctx*
    - struct device_authz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1064
      start: 1016
    functionDepth: 4
    functionLinenumber: 1016
    functionLinenumberEnd: 1064
    functionName: parse_device_authz
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - parse_oauth_json
    - parse_expires_in
    - Assert
    - parse_interval
    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:1082,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - actx
    - err
    argTypes:
    - struct async_ctx*
    - struct token_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1092
      start: 1070
    functionDepth: 4
    functionLinenumber: 1070
    functionLinenumberEnd: 1092
    functionName: parse_token_error
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - 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:1102,1
    - Dst: CHECK_GETINFO
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1112,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1116,1
    - Dst: actx_error_str
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1119,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1123,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - actx
    - err
    argTypes:
    - struct async_ctx*
    - struct token_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1124
      start: 1098
    functionDepth: 2
    functionLinenumber: 1098
    functionLinenumberEnd: 1124
    functionName: record_token_error
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - CHECK_GETINFO
    - actx_error_str
    - actx_error
    - 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:1156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - actx
    - tok
    argTypes:
    - struct async_ctx*
    - struct token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1157
      start: 1130
    functionDepth: 4
    functionLinenumber: 1130
    functionLinenumberEnd: 1157
    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:1178,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1181,1
    - Dst: timerfd_create
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1185,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1188,1
    - Dst: epoll_ctl
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1192,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1194,1
    - Dst: kqueue
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1200,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1204,1
    - Dst: kqueue
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1214,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1217,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 1
    argNames:
    - actx
    argTypes:
    - struct async_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1225
      start: 1172
    functionDepth: 1
    functionLinenumber: 1172
    functionLinenumberEnd: 1225
    functionName: setup_multiplexer
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - actx_error
    - kqueue
    - epoll_ctl
    - timerfd_create
    - epoll_create1
    linkageType: ''
    returnType: bool
    signature: bool setup_multiplexer(struct async_ctx *actx)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1261,1
    - Dst: epoll_ctl
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1265,1
    - Dst: epoll_ctl
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1270,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1278,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1282,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1286,1
    - Dst: EV_SET
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1303,1
    - Dst: EV_SET
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1308,1
    - Dst: EV_SET
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1313,1
    - Dst: EV_SET
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1315,1
    - Dst: EV_SET
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1326,1
    - Dst: EV_SET
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1328,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1333,1
    - Dst: kevent
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1337,1
    - Dst: lengthof
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1337,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1340,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1356,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1364,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1367,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 82
    argCount: 5
    argNames:
    - curl
    - socket
    - what
    - ctx
    - socketp
    argTypes:
    - CURL*
    - curl_socket_t
    - int
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1377
      start: 1231
    functionDepth: 1
    functionLinenumber: 1231
    functionLinenumberEnd: 1377
    functionName: register_socket
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - Assert
    - lengthof
    - actx_error
    - epoll_ctl
    - EV_SET
    - kevent
    linkageType: ''
    returnType: int
    signature: "int register_socket(CURL *curl, curl_socket_t socket, int what, void
      *ctx,\n\t\t\t\tvoid *socketp)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: timerfd_settime
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1417,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1419,1
    - Dst: EV_SET
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1446,1
    - Dst: kevent
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1447,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1449,1
    - Dst: EV_SET
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1453,1
    - Dst: kevent
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1454,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1456,1
    - Dst: EV_SET
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1464,1
    - Dst: kevent
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1465,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1467,1
    - Dst: EV_SET
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1471,1
    - Dst: kevent
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1472,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1474,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 2
    argNames:
    - actx
    - timeout
    argTypes:
    - struct async_ctx*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1482
      start: 1392
    functionDepth: 1
    functionLinenumber: 1392
    functionLinenumberEnd: 1482
    functionName: set_timer
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - actx_error
    - EV_SET
    - timerfd_settime
    - kevent
    linkageType: ''
    returnType: bool
    signature: bool set_timer(struct async_ctx *actx, long timeout)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timerfd_gettime
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1495,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1497,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1506,1
    - Dst: PQsocketPoll
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1516,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1519,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - actx
    argTypes:
    - struct async_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1527
      start: 1489
    functionDepth: 2
    functionLinenumber: 1489
    functionLinenumberEnd: 1527
    functionName: timer_expired
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - timerfd_gettime
    - Assert
    - 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:1545,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - curlm
    - timeout
    - ctx
    argTypes:
    - CURLM*
    - long
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1549
      start: 1533
    functionDepth: 2
    functionLinenumber: 1533
    functionLinenumberEnd: 1549
    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: 12
    BranchProfiles: []
    Callsites:
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1586,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1599,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1604,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1616,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1620,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1626,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1628,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1629,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: 1631
      start: 1557
    functionDepth: 4
    functionLinenumber: 1557
    functionLinenumberEnd: 1631
    functionName: debug_callback
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - termPQExpBuffer
    - fprintf
    - appendPQExpBuffer
    - initPQExpBuffer
    linkageType: ''
    returnType: int
    signature: "int debug_callback(CURL *handle, curl_infotype type, char *data, size_t
      size,\n\t\t\t   void *clientp)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: curl_multi_init
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1647,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1651,1
    - Dst: curl_easy_init
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1668,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1671,1
    - Dst: CHECK_SETOPT
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1690,1
    - Dst: CHECK_SETOPT
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1700,1
    - Dst: CHECK_SETOPT
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1703,1
    - Dst: CURL_AT_LEAST_VERSION
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1714,1
    - Dst: getenv
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1742,1
    - Dst: CHECK_SETOPT
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1743,1
    - Dst: curl_slist_append
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1752,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1755,1
    - Dst: CHECK_SETOPT
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1758,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 36
    argCount: 1
    argNames:
    - actx
    argTypes:
    - struct async_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1761
      start: 1640
    functionDepth: 1
    functionLinenumber: 1640
    functionLinenumberEnd: 1761
    functionName: setup_curl_handles
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - getenv
    - curl_slist_append
    - actx_error
    - curl_easy_init
    - curl_multi_init
    - CURL_AT_LEAST_VERSION
    - CHECK_SETOPT
    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:1783,1
    - Dst: appendBinaryPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1788,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1794,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1796,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: 1801
      start: 1773
    functionDepth: 4
    functionLinenumber: 1773
    functionLinenumberEnd: 1801
    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:1818,1
    - Dst: curl_multi_add_handle
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1822,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1825,1
    - Dst: curl_multi_strerror
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1826,1
    - Dst: curl_multi_socket_action
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1839,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1842,1
    - Dst: curl_multi_strerror
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1843,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - actx
    argTypes:
    - struct async_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1848
      start: 1813
    functionDepth: 3
    functionLinenumber: 1813
    functionLinenumberEnd: 1848
    functionName: start_request
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - curl_multi_strerror
    - curl_multi_add_handle
    - actx_error
    - curl_multi_socket_action
    - resetPQExpBuffer
    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: 1856
      start: 1855
    functionDepth: 0
    functionLinenumber: 1855
    functionLinenumberEnd: 1856
    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: 9
    BranchProfiles: []
    Callsites:
    - Dst: CURL_IGNORE_DEPRECATION
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1889,1
    - Dst: curl_multi_socket_all
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1890,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1895,1
    - Dst: curl_multi_strerror
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1896,1
    - Dst: curl_multi_info_read
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1908,1
    - Dst: actx_error_str
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1927,1
    - Dst: curl_easy_strerror
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1927,1
    - Dst: curl_multi_remove_handle
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1933,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1936,1
    - Dst: curl_multi_strerror
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1937,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1947,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 1
    argNames:
    - actx
    argTypes:
    - struct async_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1952
      start: 1862
    functionDepth: 1
    functionLinenumber: 1862
    functionLinenumberEnd: 1952
    functionName: drive_request
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - curl_multi_strerror
    - curl_easy_strerror
    - actx_error
    - actx_error_str
    - curl_multi_remove_handle
    - curl_multi_info_read
    - CURL_IGNORE_DEPRECATION
    - 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:1970,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1973,1
    - Dst: strstr
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1985,1
    - Dst: appendBinaryPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1988,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1989,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1996,1
    - Dst: curl_free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:1998,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - buf
    - s
    argTypes:
    - PQExpBuffer
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1999
      start: 1962
    functionDepth: 4
    functionLinenumber: 1962
    functionLinenumberEnd: 1999
    functionName: append_urlencoded
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - curl_easy_escape
    - appendPQExpBufferChar
    - curl_free
    - strstr
    - termPQExpBuffer
    - appendPQExpBufferStr
    - appendBinaryPQExpBuffer
    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:2010,1
    - Dst: append_urlencoded
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2011,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2013,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2014
      start: 2005
    functionDepth: 5
    functionLinenumber: 2005
    functionLinenumberEnd: 2014
    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:2024,1
    - Dst: append_urlencoded
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2026,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2027,1
    - Dst: append_urlencoded
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2028,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - buf
    - key
    - value
    argTypes:
    - PQExpBuffer
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2029
      start: 2020
    functionDepth: 5
    functionLinenumber: 2020
    functionLinenumberEnd: 2029
    functionName: build_urlencoded
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - append_urlencoded
    - appendPQExpBufferChar
    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:2052,1
    - Dst: start_request
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2055,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - actx
    - discovery_uri
    argTypes:
    - struct async_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2056
      start: 2049
    functionDepth: 4
    functionLinenumber: 2049
    functionLinenumberEnd: 2056
    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:2076,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2080,1
    - Dst: parse_provider
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2088,1
    - Dst: curl_slist_append
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2101,1
    - Dst: curl_slist_append
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2104,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2109,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - actx
    argTypes:
    - struct async_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2117
      start: 2058
    functionDepth: 5
    functionLinenumber: 2058
    functionLinenumberEnd: 2117
    functionName: finish_discovery
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - CHECK_GETINFO
    - actx_error
    - curl_slist_append
    - parse_provider
    linkageType: ''
    returnType: bool
    signature: bool finish_discovery(struct async_ctx *actx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: conn_oauth_issuer_id
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2127,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2129,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2130,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2149,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2151,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - actx
    - conn
    argTypes:
    - struct async_ctx*
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2158
      start: 2123
    functionDepth: 1
    functionLinenumber: 2123
    functionLinenumberEnd: 2158
    functionName: check_issuer
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - strcmp
    - conn_oauth_issuer_id
    - actx_error
    - Assert
    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:2173,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2174,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2178,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2201,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2202,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2204,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2210,1
    - Dst: strlen
      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:2213,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - actx
    argTypes:
    - struct async_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2221
      start: 2168
    functionDepth: 2
    functionLinenumber: 2168
    functionLinenumberEnd: 2221
    functionName: check_for_device_flow
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - actx_error
    - Assert
    - strlen
    - pg_strncasecmp
    linkageType: ''
    returnType: bool
    signature: bool check_for_device_flow(struct async_ctx *actx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: conn_oauth_client_id
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2230,1
    - Dst: conn_oauth_client_secret
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2231,1
    - Dst: urlencode
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2265,1
    - Dst: urlencode
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2266,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2270,1
    - Dst: build_urlencoded
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2286,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2295,1
    - Dst: free
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2296,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 3
    argNames:
    - actx
    - reqbody
    - conn
    argTypes:
    - struct async_ctx*
    - PQExpBuffer
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2299
      start: 2227
    functionDepth: 6
    functionLinenumber: 2227
    functionLinenumberEnd: 2299
    functionName: add_client_identification
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - build_urlencoded
    - actx_error
    - urlencode
    - conn_oauth_client_secret
    - conn_oauth_client_id
    - free
    linkageType: ''
    returnType: bool
    signature: bool add_client_identification(struct async_ctx *actx, PQExpBuffer
      reqbody, PGconn *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: conn_oauth_scope
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2314,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2318,1
    - Dst: conn_oauth_client_id
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2318,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2319,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2322,1
    - Dst: build_urlencoded
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2324,1
    - Dst: add_client_identification
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2326,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2329,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2331,1
    - Dst: CHECK_SETOPT
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2337,1
    - Dst: start_request
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2339,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - actx
    - conn
    argTypes:
    - struct async_ctx*
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2340
      start: 2311
    functionDepth: 7
    functionLinenumber: 2311
    functionLinenumberEnd: 2340
    functionName: start_device_authz
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - build_urlencoded
    - Assert
    - start_request
    - actx_error
    - conn_oauth_scope
    - resetPQExpBuffer
    - CHECK_SETOPT
    - PQExpBufferBroken
    - conn_oauth_client_id
    - add_client_identification
    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:2347,1
    - Dst: parse_device_authz
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2356,1
    - Dst: parse_token_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2372,1
    - Dst: free_token_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2374,1
    - Dst: record_token_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2379,1
    - Dst: free_token_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2381,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2386,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - actx
    argTypes:
    - struct async_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2388
      start: 2342
    functionDepth: 5
    functionLinenumber: 2342
    functionLinenumberEnd: 2388
    functionName: finish_device_authz
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - actx_error
    - record_token_error
    - parse_token_error
    - CHECK_GETINFO
    - parse_device_authz
    - free_token_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:2406,1
    - Dst: conn_oauth_client_id
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2406,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2407,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2408,1
    - Dst: resetPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2411,1
    - Dst: build_urlencoded
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2412,1
    - Dst: build_urlencoded
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2413,1
    - Dst: add_client_identification
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2415,1
    - Dst: PQExpBufferBroken
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2418,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2420,1
    - Dst: CHECK_SETOPT
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2426,1
    - Dst: start_request
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2428,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - actx
    - conn
    argTypes:
    - struct async_ctx*
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2429
      start: 2399
    functionDepth: 7
    functionLinenumber: 2399
    functionLinenumberEnd: 2429
    functionName: start_token_request
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - build_urlencoded
    - Assert
    - start_request
    - actx_error
    - resetPQExpBuffer
    - CHECK_SETOPT
    - PQExpBufferBroken
    - conn_oauth_client_id
    - add_client_identification
    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:2436,1
    - Dst: parse_access_token
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2444,1
    - Dst: parse_token_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2458,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2465,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - actx
    - tok
    argTypes:
    - struct async_ctx*
    - struct token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2467
      start: 2431
    functionDepth: 5
    functionLinenumber: 2431
    functionLinenumberEnd: 2467
    functionName: finish_token_request
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - CHECK_GETINFO
    - parse_token_error
    - actx_error
    - parse_access_token
    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:2485,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2489,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2505,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2506,1
    - Dst: record_token_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2508,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2516,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2523,1
    - Dst: free_token
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2531,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 2
    argNames:
    - actx
    - token
    argTypes:
    - struct async_ctx*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2533
      start: 2478
    functionDepth: 6
    functionLinenumber: 2478
    functionLinenumberEnd: 2533
    functionName: handle_token_response
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - Assert
    - actx_error
    - record_token_error
    - free_token
    - strcmp
    - finish_token_request
    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:2549,1
    - Dst: hook
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2551,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2559,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2559,1
    - Dst: actx_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2564,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - actx
    - conn
    argTypes:
    - struct async_ctx*
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2569
      start: 2539
    functionDepth: 1
    functionLinenumber: 2539
    functionLinenumberEnd: 2569
    functionName: prompt_user
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - actx_error
    - hook
    - PQgetAuthDataHook
    - fprintf
    - libpq_gettext
    linkageType: ''
    returnType: bool
    signature: bool prompt_user(struct async_ctx *actx, PGconn *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pglock_thread
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2607,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2619,1
    - Dst: curl_global_init
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2636,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2638,1
    - Dst: curl_version_info
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2653,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2660,1
    - Dst: pgunlock_thread
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2674,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2677
      start: 2584
    functionDepth: 0
    functionLinenumber: 2584
    functionLinenumberEnd: 2677
    functionName: initialize_curl
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - pgunlock_thread
    - curl_version_info
    - libpq_append_conn_error
    - curl_global_init
    - pglock_thread
    linkageType: ''
    returnType: bool
    signature: bool initialize_curl(PGconn *conn)
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: conn_sasl_state
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2696,1
    - Dst: initialize_curl
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2701,1
    - Dst: calloc
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2711,1
    - Dst: libpq_append_conn_error
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2714,1
    - Dst: oauth_unsafe_debugging_enabled
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2722,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2726,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2727,1
    - Dst: setup_multiplexer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2729,1
    - Dst: setup_curl_handles
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2732,1
    - Dst: set_conn_altsock
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2741,1
    - Dst: drive_request
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2754,1
    - Dst: timer_expired
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2775,1
    - Dst: set_conn_altsock
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2777,1
    - Dst: set_timer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2782,1
    - Dst: start_discovery
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2797,1
    - Dst: conn_oauth_discovery_uri
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2797,1
    - Dst: finish_discovery
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2804,1
    - Dst: check_issuer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2807,1
    - Dst: check_for_device_flow
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2811,1
    - Dst: start_device_authz
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2815,1
    - Dst: finish_device_authz
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2822,1
    - Dst: start_token_request
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2826,1
    - Dst: handle_token_response
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2833,1
    - Dst: set_conn_oauth_token
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2840,1
    - Dst: prompt_user
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2848,1
    - Dst: set_timer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2861,1
    - Dst: set_conn_altsock
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2869,1
    - Dst: start_token_request
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2877,1
    - Dst: conn_errorMessage
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2895,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2902,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2902,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2904,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2905,1
    - Dst: libpq_gettext
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2905,1
    - Dst: appendPQExpBufferStr
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2907,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2911,1
    - Dst: appendPQExpBufferChar
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2922,1
    CyclomaticComplexity: 55
    EdgeCount: 55
    ICount: 133
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2925
      start: 2693
    functionDepth: 8
    functionLinenumber: 2693
    functionLinenumberEnd: 2925
    functionName: pg_fe_run_oauth_flow_impl
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - appendPQExpBufferChar
    - start_discovery
    - check_issuer
    - calloc
    - set_conn_altsock
    - setup_multiplexer
    - libpq_append_conn_error
    - set_timer
    - drive_request
    - PQExpBufferDataBroken
    - prompt_user
    - conn_sasl_state
    - appendPQExpBufferStr
    - conn_oauth_discovery_uri
    - check_for_device_flow
    - setup_curl_handles
    - set_conn_oauth_token
    - oauth_unsafe_debugging_enabled
    - start_device_authz
    - handle_token_response
    - finish_discovery
    - libpq_gettext
    - initialize_curl
    - timer_expired
    - conn_errorMessage
    - start_token_request
    - appendPQExpBuffer
    - finish_device_authz
    - initPQExpBuffer
    linkageType: ''
    returnType: PostgresPollingStatusType
    signature: PostgresPollingStatusType pg_fe_run_oauth_flow_impl(PGconn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pq_block_sigpipe
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2958,1
    - Dst: pg_fe_run_oauth_flow_impl
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2961,1
    - Dst: pq_reset_sigpipe
      Src: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c:2970,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - PGconn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2975
      start: 2931
    functionDepth: 9
    functionLinenumber: 2931
    functionLinenumberEnd: 2975
    functionName: pg_fe_run_oauth_flow
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-curl.c
    functionUses: 0
    functionsReached:
    - pq_block_sigpipe
    - pg_fe_run_oauth_flow_impl
    - pq_reset_sigpipe
    linkageType: ''
    returnType: PostgresPollingStatusType
    signature: PostgresPollingStatusType pg_fe_run_oauth_flow(PGconn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - TYPE
    - ','
    - MEMBER
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 32
    functionName: DECLARE_GETTER
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_GETTER(TYPE, MEMBER)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - TYPE
    - ','
    - MEMBER
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: DECLARE_SETTER
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_SETTER(TYPE, MEMBER)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 87
    functionName: libpq_gettext
    functionSourceFile: /src/postgres/src/interfaces/libpq-oauth/oauth-utils.h
    functionUses: 47
    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: 92
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 92
    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: 93
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 93
    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:
    - printf
    - sprintf
    - strlen
    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:
    - pfree
    - fputs
    - strstr
    - fclose
    - fprintf
    - memmove
    - fopen
    - exit
    - pg_get_line_buf
    - initStringInfo
    - strlen
    - strchr
    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:
    - pfree
    - rename
    - fputs
    - strstr
    - fclose
    - fprintf
    - memmove
    - fopen
    - exit
    - pg_get_line_buf
    - initStringInfo
    - strlen
    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: free
      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:
    - add_stringlist_item
    - spawn_process
    - ecpg_filter_source
    - appendStringInfoString
    - snprintf
    - setenv
    - fprintf
    - exit
    - free
    - _
    - initStringInfo
    - unsetenv
    - psprintf
    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:
    - pfree
    - ecpg_filter_stderr
    - strcmp
    - strlen
    - psprintf
    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: 16
    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: 19
    functionsReached:
    - ECPGconnect
    - ECPGdo
    - ECPGdisconnect
    - sqlprint
    - sprintf
    - ECPGsetcommit
    - free
    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: 16
    functionsReached:
    - pthread_join
    - WaitForMultipleObjects
    - _beginthreadex
    - pthread_create
    - CloseHandle
    linkageType: ''
    returnType: int
    signature: int main ()
  - 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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGdo
    - ECPGdebug
    - exit
    - 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: 16
    functionsReached:
    - printf
    - ECPGset_desc_header
    - ECPGconnect
    - ECPGset_desc
    - ECPGdo
    - ECPGdisconnect
    - ECPGget_desc
    - ECPGprepared_statement
    - ECPGdebug
    - sqlprint
    - ECPGdeallocate_all
    - ECPGprepare
    - ECPGdeallocate_desc
    - ECPGdeallocate
    - ECPGallocate_desc
    - strlen
    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: 16
    functionsReached:
    - ECPGconnect
    - ECPGdo
    - ECPGdisconnect
    - ECPGsetconn
    - ECPGdebug
    - 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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGdo
    - ECPGdisconnect
    - ECPGdebug
    - sqlprint
    linkageType: ''
    returnType: int
    signature: int main ()
  - 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: 16
    functionsReached:
    - ECPGconnect
    - ECPGdisconnect
    - ECPGdo
    - ECPGdebug
    - 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: 16
    functionsReached:
    - printf
    - dosqlprint
    - ECPGconnect
    - deccvint
    - decadd
    - risnull
    - ECPGdo
    - ECPGdisconnect
    - dectoint
    - ECPGdebug
    - exit
    - ECPGtrans
    - ECPGset_var
    - rsetnull
    - openit
    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:
    - ECPGget_var
    - dosqlprint
    - 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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGget_desc_header
    - ECPGdo
    - ECPGdisconnect
    - ECPGget_desc
    - ECPGdebug
    - exit
    - ECPGtrans
    - ECPGprepare
    - ECPGdeallocate_desc
    - ECPGdeallocate
    - ECPGdescribe
    - ECPGallocate_desc
    - 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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGdo
    - ECPGdisconnect
    - ECPGdebug
    - sqlprint
    linkageType: ''
    returnType: int
    signature: int main()
  - 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:
    - printf
    - PGTYPESnumeric_to_asc
    - PGTYPESchar_free
    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: 16
    functionsReached:
    - printf
    - malloc
    - ECPGconnect
    - memset
    - ECPGdo
    - ECPGdisconnect
    - ECPGprepared_statement
    - ECPGdebug
    - exit
    - ECPGtrans
    - ECPGprepare
    - ECPGdeallocate
    - dump_sqlda
    - free
    - 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: 16
    functionsReached:
    - PGTYPESinterval_copy
    - ECPGconnect
    - PGTYPESchar_free
    - PGTYPESdate_julmdy
    - ECPGdisconnect
    - PGTYPEStimestamp_fmt_asc
    - strlen
    - PGTYPESdate_to_asc
    - PGTYPESdate_from_asc
    - PGTYPESdate_from_timestamp
    - PGTYPESdate_defmt_asc
    - PGTYPESinterval_from_asc
    - PGTYPEStimestamp_to_asc
    - check_errno
    - malloc
    - PGTYPEStimestamp_current
    - ECPGdo
    - ECPGdebug
    - sqlprint
    - ECPGtrans
    - PGTYPEStimestamp_from_asc
    - PGTYPESdate_mdyjul
    - PGTYPESdate_fmt_asc
    - PGTYPESdate_dayofweek
    - printf
    - PGTYPESinterval_free
    - PGTYPEStimestamp_defmt_asc
    - PGTYPESinterval_to_asc
    - free
    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:
    - printf
    - strerror
    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: 16
    functionsReached:
    - ECPGdebug
    - ECPGconnect
    - ECPGdisconnect
    - exit
    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: 32
    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: ECPGdo
      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:118,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:123,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:126,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:129,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:132,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:135,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:138,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:142,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:145,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:148,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:152,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:155,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:158,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: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:181,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:191,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:194,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:197,1
    - Dst: ECPGtrans
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:200,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:203,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:206,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:209,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:212,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:215,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:219,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:222,1
    - Dst: exit
      Src: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c:225,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 104
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 230
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/sql-quote.c
    functionUses: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGdo
    - ECPGdisconnect
    - ECPGdebug
    - sqlprint
    - exit
    - ECPGtrans
    - ECPGsetcommit
    linkageType: ''
    returnType: int
    signature: int main()
  - 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: 16
    functionsReached:
    - ldchar
    - printf
    - rupshift
    - byleng
    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: 16
    functionsReached:
    - printf
    - malloc
    - intoasc
    linkageType: ''
    returnType: int
    signature: int main()
  - 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:
    - printf
    - dectoasc
    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: 16
    functionsReached:
    - printf
    - malloc
    - ECPGconnect
    - memset
    - ECPGdo
    - ECPGdisconnect
    - ECPGprepared_statement
    - ECPGdebug
    - exit
    - ECPGtrans
    - ECPGprepare
    - ECPGdeallocate
    - dump_sqlda
    - free
    - 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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGdo
    - ECPGdisconnect
    - ECPGprepared_statement
    - ECPGdebug
    - exit
    - ECPGtrans
    - ECPGprepare
    - ECPGset_var
    - ECPGdeallocate
    - strlen
    - 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:
    - printf
    - sprintf
    - strlen
    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: 16
    functionsReached:
    - ECPGconnect
    - PGTYPESnumeric_add
    - PGTYPESchar_free
    - ECPGdisconnect
    - PGTYPESnumeric_div
    - PGTYPESnumeric_mul
    - ECPGsetcommit
    - PGTYPESnumeric_copy
    - PGTYPESnumeric_free
    - PGTYPESnumeric_to_int
    - PGTYPESnumeric_from_int
    - PGTYPESnumeric_sub
    - PGTYPESnumeric_from_asc
    - PGTYPESnumeric_to_long
    - PGTYPESnumeric_to_asc
    - print_double
    - ECPGdo
    - ECPGdebug
    - sqlprint
    - ECPGtrans
    - printf
    - PGTYPESnumeric_to_double
    - PGTYPESnumeric_new
    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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGdo
    - ECPGdisconnect
    - ECPGdebug
    - exit
    - free
    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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - memset
    - ECPGdo
    - ECPGdisconnect
    - ECPGdebug
    - exit
    - ECPGset_var
    - free
    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: 16
    functionsReached:
    - ECPGconnect
    - ECPGdo
    - ECPGdisconnect
    - ECPGdebug
    - sqlprint
    - ECPGtrans
    - ECPGsetcommit
    - 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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGdo
    - ECPGdisconnect
    - ECPGdebug
    - sqlprint
    - ECPGsetcommit
    linkageType: ''
    returnType: int
    signature: int main()
  - 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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGdo
    - ECPGdisconnect
    - ECPGdebug
    - ECPGtrans
    linkageType: ''
    returnType: int
    signature: int main()
  - 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: 20
    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: 19
    functionsReached:
    - ECPGconnect
    - ECPGdo
    - ECPGdisconnect
    - sqlprint
    - ECPGprepare
    - ECPGdeallocate
    - sprintf
    - ECPGsetcommit
    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: 16
    functionsReached:
    - ECPGconnect
    - pthread_create
    - pthread_join
    - ECPGdisconnect
    - ECPGdo
    - _beginthreadex
    - WaitForMultipleObjects
    - sqlprint
    - CloseHandle
    - ECPGsetcommit
    linkageType: ''
    returnType: int
    signature: int main ()
  - 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: 20
    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: 16
    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: 21
    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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - calloc
    - pthread_join
    - ECPGdisconnect
    - ECPGdo
    - fprintf
    - CreateThread
    - WaitForMultipleObjects
    - ECPGtrans
    - pthread_create
    - free
    linkageType: ''
    returnType: int
    signature: int main()
  - 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:
    - _snprintf
    - printf
    - ECPGconnect
    - snprintf
    - ECPGdo
    - ECPGdisconnect
    - sqlprint
    - ECPGtrans
    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: 21
    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:40,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-strings.c:42,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-strings.c:46,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-strings.c:50,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-strings.c:66,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-strings.c:68,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-strings.c:76,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-strings.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 82
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-strings.c
    functionUses: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGdisconnect
    - ECPGdo
    - 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-pointer_to_struct.c
    functionUses: 22
    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:91,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:94,1
    - Dst: malloc
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:97,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: ECPGdebug
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:126,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:128,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:131,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:134,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:138,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:141,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:144,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:147,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:150,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:153,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:156,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:159,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:162,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:165,1
    - Dst: sqlprint
      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:172,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:179,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:182,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:185,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:188,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:191,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:192,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:195,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:202,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:205,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:208,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:211,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:214,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:215,1
    - Dst: ECPGdo
      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:225,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:228,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:231,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:234,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:237,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:238,1
    - Dst: ECPGdo
      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:248,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:251,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:254,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:257,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:258,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:259,1
    - Dst: ECPGdo
      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:266,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:269,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:272,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:275,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:278,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c:281,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
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 99
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 293
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-pointer_to_struct.c
    functionUses: 16
    functionsReached:
    - printf
    - malloc
    - ECPGconnect
    - ECPGdo
    - ECPGdisconnect
    - ECPGdebug
    - sqlprint
    linkageType: ''
    returnType: int
    signature: int main()
  - 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: 23
    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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGdo
    - ECPGdisconnect
    - ECPGdebug
    - sqlprint
    - ECPGsetcommit
    linkageType: ''
    returnType: int
    signature: int main ()
  - 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: 24
    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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGdo
    - strncpy
    - ECPGprepared_statement
    - ECPGdisconnect
    - ECPGdebug
    - sqlprint
    - ECPGtrans
    - ECPGprepare
    - sprintf
    - strlen
    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: 25
    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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGdo
    - strncpy
    - ECPGprepared_statement
    - ECPGdisconnect
    - ECPGdebug
    - sqlprint
    - ECPGtrans
    - ECPGprepare
    - ECPGdeallocate
    - sprintf
    - strlen
    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: 26
    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:
    - rdatestr
    - printf
    - rstrdate
    - check_return
    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:
    - rdatestr
    - printf
    - rdefmtdate
    - check_return
    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:
    - rfmtdate
    - printf
    - check_return
    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: 16
    functionsReached:
    - printf
    - date_test_defmt
    - date_test_fmt
    - rdatestr
    - date_test_strdate
    - ECPGdebug
    - rmdyjul
    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: 27
    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:122,1
    - Dst: ECPGconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:124,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:127,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:130,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:134,1
    - Dst: sqlprint
      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: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:143,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:146,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:149,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:152,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:155,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:158,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:161,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:164,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:168,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:175,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:178,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:181,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:184,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:187,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:188,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:191,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:198,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:201,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:204,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:207,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:210,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:211,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:214,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:221,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:224,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:227,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:230,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:233,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:234,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:237,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:244,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:247,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:250,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:253,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:254,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:255,1
    - Dst: ECPGdo
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:257,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:262,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:265,1
    - Dst: sqlprint
      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:271,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:274,1
    - Dst: ECPGdisconnect
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:277,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:280,1
    - Dst: sqlprint
      Src: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c:283,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 99
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 288
    functionName: main
    functionSourceFile: /src/postgres/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c
    functionUses: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGdo
    - ECPGdisconnect
    - ECPGdebug
    - sqlprint
    linkageType: ''
    returnType: int
    signature: int main()
  - 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: 28
    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: 16
    functionsReached:
    - ECPGconnect
    - ECPGdisconnect
    - sprintf
    - ECPGsetcommit
    - PGTYPESdate_to_asc
    - PGTYPESdate_from_asc
    - PGTYPESnumeric_from_int
    - PGTYPESinterval_from_asc
    - PGTYPESinterval_new
    - PGTYPEStimestamp_to_asc
    - free
    - strcpy
    - malloc
    - PGTYPESnumeric_to_asc
    - ECPGdo
    - ECPGdebug
    - sqlprint
    - ECPGtrans
    - PGTYPEStimestamp_from_asc
    - printf
    - setlocale
    - PGTYPESinterval_to_asc
    - PGTYPESnumeric_new
    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: 29
    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: 575
    functionsReached:
    - printf
    - exit
    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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGget_desc_header
    - ECPGdo
    - ECPGprepared_statement
    - ECPGget_desc
    - ECPGdebug
    - ECPGprepare
    - ECPGdeallocate_desc
    - error
    - ECPGallocate_desc
    linkageType: ''
    returnType: int
    signature: int main ()
  - 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: 30
    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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - calloc
    - pthread_join
    - ECPGdisconnect
    - ECPGdo
    - fprintf
    - CreateThread
    - WaitForMultipleObjects
    - ECPGtrans
    - pthread_create
    - free
    linkageType: ''
    returnType: int
    signature: int main()
  - 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:
    - _snprintf
    - printf
    - ECPGconnect
    - snprintf
    - ECPGdo
    - ECPGdisconnect
    - sqlprint
    - ECPGtrans
    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: 30
    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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - memset
    - putchar
    - ECPGdo
    - ECPGdisconnect
    - ECPGdebug
    - exit
    - ECPGtrans
    - free
    - 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: 31
    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:
    - ECPGget_var
    - exit
    - 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:
    - ECPGget_var
    - exit
    - 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: 16
    functionsReached:
    - printf
    - open_cur1
    - ECPGconnect
    - memset
    - close_cur1
    - ECPGdo
    - ECPGdisconnect
    - ECPGdebug
    - exit
    - ECPGtrans
    - get_record1
    - get_var1
    - free
    - 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-define.c
    functionUses: 32
    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: 32
    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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGdo
    - ECPGdisconnect
    - ECPGdebug
    - sqlprint
    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: 33
    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: 43
    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: 16
    functionsReached:
    - printf
    - warn
    - ECPGconnect
    - print
    - print2
    - ECPGdo
    - ECPGdebug
    - sqlprint
    - ECPGtrans
    - exit
    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: 34
    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: 16
    functionsReached:
    - isnan
    - printf
    - isinf
    - ECPGconnect
    - PGTYPESnumeric_free
    - ECPGdo
    - ECPGdisconnect
    - ECPGdebug
    - sqlprint
    - ECPGtrans
    - PGTYPESnumeric_new
    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: 35
    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:
    - printf
    - sprintf
    - strlen
    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: 16
    functionsReached:
    - PGTYPESnumeric_from_long
    - PGTYPESnumeric_add
    - calloc
    - PGTYPESchar_free
    - PGTYPESdecimal_new
    - PGTYPESnumeric_div
    - PGTYPESnumeric_mul
    - PGTYPESdecimal_free
    - PGTYPESnumeric_free
    - PGTYPESnumeric_to_int
    - PGTYPESnumeric_from_decimal
    - PGTYPESnumeric_from_int
    - free
    - PGTYPESnumeric_sub
    - PGTYPESnumeric_from_asc
    - PGTYPESnumeric_to_long
    - check_errno
    - PGTYPESnumeric_cmp
    - realloc
    - PGTYPESnumeric_to_asc
    - print_double
    - ECPGdebug
    - printf
    - PGTYPESnumeric_to_double
    - PGTYPESnumeric_to_decimal
    - PGTYPESnumeric_new
    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:
    - printf
    - strerror
    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: 36
    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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGget_desc_header
    - ECPGfree_auto_mem
    - ECPGdo
    - ECPGdisconnect
    - ECPGget_desc
    - ECPGdebug
    - sqlprint
    - ECPGtrans
    - ECPGdeallocate_desc
    - ECPGallocate_desc
    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: 37
    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: 16
    functionsReached:
    - ECPGconnect
    - setlocale
    - commitTable
    - ECPGdo
    - ECPGdisconnect
    - ECPGdebug
    - sqlprint
    - execute_test
    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:
    - printf
    - printResult
    - ECPGget_desc_header
    - ECPGdo
    - ECPGprepared_statement
    - ECPGget_desc
    - sqlprint
    - ECPGprepare
    - ECPGdeallocate_desc
    - ECPGdeallocate
    - ECPGdescribe
    - reset
    - ECPGallocate_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:
    - sqlprint
    - ECPGtrans
    linkageType: ''
    returnType: void
    signature: void commitTable()
  - 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: 11
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void reset()
  - 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: 38
    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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGget_desc_header
    - ECPGdo
    - ECPGdisconnect
    - ECPGget_desc
    - ECPGdebug
    - exit
    - ECPGtrans
    - ECPGprepare
    - ECPGdeallocate_desc
    - ECPGdeallocate
    - ECPGdescribe
    - ECPGallocate_desc
    - free
    - 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: 39
    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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGdo
    - ECPGdisconnect
    - test_null
    - ECPGdebug
    - sqlprint
    - ECPGtrans
    - rsetnull
    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: 40
    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: 16
    functionsReached:
    - init
    - ECPGconnect
    - ECPGset_desc
    - ECPGdo
    - ECPGdisconnect
    - ECPGget_desc
    - ECPGdebug
    - sqlprint
    - ECPGtrans
    - ECPGprepare
    - dump_binary
    - ECPGdeallocate
    - ECPGset_var
    - ECPGallocate_desc
    - free
    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: 41
    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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGdo
    - ECPGdisconnect
    - ECPGdebug
    - sqlprint
    - ECPGsetcommit
    linkageType: ''
    returnType: int
    signature: int main ()
  - 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: 42
    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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGdo
    - strncpy
    - ECPGdisconnect
    - ECPGdebug
    - sqlprint
    - ECPGtrans
    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: 43
    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:
    - printf
    - sprintf
    - strlen
    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: 16
    functionsReached:
    - deccvlong
    - calloc
    - deccmp
    - PGTYPESdecimal_new
    - deccvasc
    - strlen
    - risnull
    - PGTYPESdecimal_free
    - deccvint
    - decadd
    - dectoint
    - check_errno
    - realloc
    - dectodbl
    - print_double
    - ECPGdebug
    - dectoasc
    - printf
    - decdiv
    - decmul
    - dectolong
    - decsub
    - rsetnull
    - free
    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:
    - printf
    - strerror
    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: 44
    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:
    - printf
    - rfmtlong
    - check_return
    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: 16
    functionsReached:
    - ECPGdebug
    - fmtlong
    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: 45
    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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGget_desc_header
    - ECPGdo
    - ECPGdisconnect
    - ECPGget_desc
    - ECPGdebug
    - exit
    - ECPGtrans
    - ECPGprepare
    - ECPGdeallocate_desc
    - ECPGdeallocate
    - ECPGdescribe
    - ECPGallocate_desc
    - free
    - 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: 46
    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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGfree_auto_mem
    - ECPGdo
    - ECPGdisconnect
    - ECPGget_desc
    - ECPGdebug
    - sqlprint
    - ECPGdeallocate_desc
    - ECPGallocate_desc
    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: 47
    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: 19
    functionsReached:
    - sqlprint
    - ECPGallocate_desc
    - 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: 16
    functionsReached:
    - pthread_join
    - WaitForMultipleObjects
    - _beginthreadex
    - pthread_create
    - CloseHandle
    linkageType: ''
    returnType: int
    signature: int main ()
  - 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: 47
    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:
    - printf
    - fprintf
    - exit
    - ECPGtrans
    - sprintf
    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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGdo
    - PGTYPEStimestamp_add_interval
    - ECPGdisconnect
    - ECPGdebug
    - exit
    - PGTYPESinterval_from_asc
    - ECPGtrans
    - sql_check
    - free
    - 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: 48
    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: 16
    functionsReached:
    - ECPGconnect
    - ECPGdisconnect
    - ECPGdo
    - ECPGdebug
    - ECPGtrans
    - 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: 49
    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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGdo
    - ECPGdisconnect
    - ECPGdebug
    - ECPGtrans
    - ECPGsetcommit
    linkageType: ''
    returnType: int
    signature: int main()
  - 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: 50
    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: 16
    functionsReached:
    - PGTYPESinterval_copy
    - PGTYPESchar_free
    - sprintf
    - strlen
    - PGTYPESdate_to_asc
    - PGTYPESdate_from_asc
    - PGTYPEStimestamp_add_interval
    - PGTYPESdate_from_timestamp
    - PGTYPESinterval_from_asc
    - PGTYPESinterval_new
    - PGTYPEStimestamp_to_asc
    - PGTYPESdate_new
    - malloc
    - ECPGdebug
    - PGTYPEStimestamp_from_asc
    - PGTYPESdate_free
    - printf
    - PGTYPESinterval_free
    - PGTYPESinterval_to_asc
    - free
    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: 51
    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: 16
    functionsReached:
    - printf
    - PGTYPESnumeric_to_asc
    - warn
    - ECPGconnect
    - memset
    - ECPGdo
    - strncpy
    - ECPGprepared_statement
    - ECPGdisconnect
    - ECPGdebug
    - exit
    - ECPGtrans
    - sqlprint
    - ECPGprepare
    linkageType: ''
    returnType: int
    signature: int main()
  - 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: 52
    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:
    - printf
    - sqlprint
    - ECPGdo
    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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - check_result_of_insert
    - ECPGdo
    - sqlprint
    - ECPGtrans
    - ECPGprepare
    - ECPGdeallocate
    - strlen
    - 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: 52
    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:
    - printf
    - ECPGconnect
    - ECPGdo
    - ECPGdisconnect
    - ECPGprepared_statement
    - ECPGdebug
    - sqlprint
    - ECPGprepare
    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: 16
    functionsReached:
    - test
    linkageType: ''
    returnType: int
    signature: int main()
  - 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: 53
    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: 0
    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: 16
    functionsReached:
    - printf
    - fa
    - fd
    - ECPGdo
    - fe
    - ECPGdebug
    - sqlnotice
    - fc
    - fb
    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: 54
    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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGdo
    - ECPGdisconnect
    - ECPGdebug
    - sqlprint
    linkageType: ''
    returnType: int
    signature: int main()
  - 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: 55
    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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGdo
    - ECPGdisconnect
    - ECPGdebug
    - sqlprint
    - ECPGsetcommit
    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: 56
    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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGdo
    - ECPGdisconnect
    - ECPGdebug
    - sqlprint
    - exit
    - strlen
    linkageType: ''
    returnType: int
    signature: int main()
  - 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: 57
    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: 16
    functionsReached:
    - ECPGconnect
    - ECPGdisconnect
    - ECPGdo
    - ECPGdebug
    - 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: 58
    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: 16
    functionsReached:
    - printf
    - ECPGconnect
    - ECPGdo
    - ECPGdisconnect
    - ECPGdebug
    - sqlprint
    - ECPGsetcommit
    linkageType: ''
    returnType: int
    signature: int main()
  - 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_from_decimal
    - PGTYPESnumeric_new
    - PGTYPESnumeric_free
    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_free
    - PGTYPESnumeric_from_decimal
    - PGTYPESnumeric_to_decimal
    - rsetnull
    - PGTYPESnumeric_new
    - risnull
    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:
    - PGTYPESnumeric_free
    - ecpg_strndup
    - PGTYPESnumeric_to_decimal
    - PGTYPESnumeric_from_asc
    - rsetnull
    - free
    - risnull
    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_free
    - PGTYPESnumeric_from_double
    - PGTYPESnumeric_to_decimal
    - rsetnull
    - PGTYPESnumeric_new
    - risnull
    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_free
    - PGTYPESnumeric_from_int
    - PGTYPESnumeric_to_decimal
    - rsetnull
    - PGTYPESnumeric_new
    - risnull
    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:
    - PGTYPESnumeric_new
    - PGTYPESnumeric_free
    - PGTYPESnumeric_to_decimal
    - rsetnull
    - PGTYPESnumeric_from_long
    - risnull
    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_free
    - PGTYPESnumeric_from_decimal
    - strcpy
    - free
    - strlen
    - rsetnull
    - PGTYPESnumeric_new
    - risnull
    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_to_double
    - PGTYPESnumeric_from_decimal
    - PGTYPESnumeric_new
    - PGTYPESnumeric_free
    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_from_decimal
    - PGTYPESnumeric_new
    - PGTYPESnumeric_free
    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_from_decimal
    - PGTYPESnumeric_new
    - PGTYPESnumeric_free
    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:
    - PGTYPESdate_to_asc
    - free
    - 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:
    - PGTYPEStimestamp_to_asc
    - free
    - 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:
    - PGTYPESinterval_to_asc
    - free
    - strcpy
    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:812,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:848,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:937,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:945,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:950,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:955,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:956,1
    CyclomaticComplexity: 57
    EdgeCount: 57
    ICount: 126
    argCount: 3
    argNames:
    - lng_val
    - fmt
    - outbuf
    argTypes:
    - long
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 767
    functionDepth: 2
    functionLinenumber: 767
    functionLinenumberEnd: 959
    functionName: rfmtlong
    functionSourceFile: /src/postgres/src/interfaces/ecpg/compatlib/informix.c
    functionUses: 1
    functionsReached:
    - strcat
    - malloc
    - initValue
    - getRightMostDot
    - strlen
    - free
    - strchr
    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:965,1
    - Dst: toupper
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:966,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 961
    functionDepth: 0
    functionLinenumber: 961
    functionLinenumberEnd: 967
    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: 974
      start: 969
    functionDepth: 0
    functionLinenumber: 969
    functionLinenumberEnd: 974
    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:979,1
    - Dst: memmove
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:981,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - src
    - len
    - dest
    argTypes:
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 976
    functionDepth: 1
    functionLinenumber: 976
    functionLinenumberEnd: 983
    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: 992
      start: 985
    functionDepth: 0
    functionLinenumber: 985
    functionLinenumberEnd: 992
    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: 1000
      start: 994
    functionDepth: 0
    functionLinenumber: 994
    functionLinenumberEnd: 1000
    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: 1008
      start: 1002
    functionDepth: 0
    functionLinenumber: 1002
    functionLinenumberEnd: 1008
    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: 1016
      start: 1010
    functionDepth: 0
    functionLinenumber: 1010
    functionLinenumberEnd: 1016
    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:1021,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - number
    - pointer
    - lineno
    argTypes:
    - int
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1022
      start: 1018
    functionDepth: 1
    functionLinenumber: 1018
    functionLinenumberEnd: 1022
    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:1027,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - number
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 1024
    functionDepth: 1
    functionLinenumber: 1024
    functionLinenumberEnd: 1028
    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:1033,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/compatlib/informix.c:1038,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 1030
    functionDepth: 1
    functionLinenumber: 1030
    functionLinenumberEnd: 1039
    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:1044,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - t
    - ptr
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 1041
    functionDepth: 1
    functionLinenumber: 1041
    functionLinenumberEnd: 1046
    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:1051,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - t
    - ptr
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1052
      start: 1048
    functionDepth: 1
    functionLinenumber: 1048
    functionLinenumberEnd: 1052
    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:
    - PQnfields
    - ecpg_sqlda_align_add_size
    - strlen
    - PQfname
    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:
    - sqlda_dynamic_type
    - ecpg_sqlda_align_add_size
    - PGTYPESnumeric_free
    - PQnfields
    - PQgetvalue
    - PQgetisnull
    - PGTYPESnumeric_from_asc
    - PQftype
    - strlen
    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_common_total_size
    - sqlda_compat_empty_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:
    - PQnfields
    - ecpg_sqlda_align_add_size
    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_common_total_size
    - sqlda_native_empty_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:
    - sqlda_dynamic_type
    - PQfname
    - memset
    - PQnfields
    - sqlda_compat_total_size
    - ecpg_log
    - ecpg_alloc
    - PQfsize
    - PQftype
    - strlen
    - strcpy
    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:
    - ecpg_sqlda_align_add_size
    - PGTYPESnumeric_free
    - sqlda_compat_empty_size
    - PQgetvalue
    - ecpg_get_data
    - PQgetisnull
    - ecpg_log
    - memcpy
    - PGTYPESnumeric_from_asc
    - ECPGset_noind_null
    - strlen
    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:
    - sqlda_native_total_size
    - sqlda_dynamic_type
    - PQfname
    - memset
    - PQnfields
    - ecpg_alloc
    - ecpg_log
    - sprintf
    - PQftype
    - strlen
    - strcpy
    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:
    - ecpg_sqlda_align_add_size
    - PGTYPESnumeric_free
    - PQgetvalue
    - sqlda_native_empty_size
    - ecpg_get_data
    - PQgetisnull
    - ecpg_log
    - memcpy
    - PGTYPESnumeric_from_asc
    - ECPGset_noind_null
    - strlen
    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:
    - ecpg_gettext
    - ECPGget_sqlca
    - ECPGfree_auto_mem
    - snprintf
    - strncpy
    - ecpg_log
    - strlen
    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:
    - ecpg_gettext
    - PQerrorMessage
    - ECPGget_sqlca
    - ECPGfree_auto_mem
    - snprintf
    - PQresultErrorField
    - strncpy
    - ecpg_log
    - PQstatus
    - strcmp
    - strncmp
    - strlen
    - INFORMIX_MODE
    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
    - PQerrorMessage
    - PQresultStatus
    - ecpg_raise_backend
    - PQresultErrorMessage
    - ecpg_log
    - PQclear
    - PQendcopy
    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: 44
    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:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 31
    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:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 37
    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:42,1
    - Dst: pthread_getspecific
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 44
    functionName: get_descriptors
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 0
    functionsReached:
    - pthread_once
    - pthread_getspecific
    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:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - struct descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 50
    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:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - line
    - name
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 61
    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: 81
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 81
    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:87,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:91,1
    - Dst: ecpg_init_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:96,1
    - Dst: ecpg_result_by_descriptor
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:97,1
    - Dst: PQnfields
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:101,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:103,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - lineno
    - desc_name
    - count
    argTypes:
    - int
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 105
    functionName: ECPGget_desc_header
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 6
    functionsReached:
    - ecpg_raise
    - ECPGget_sqlca
    - PQnfields
    - ecpg_init_sqlca
    - ecpg_result_by_descriptor
    - ecpg_log
    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:143,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: 148
      start: 107
    functionDepth: 2
    functionLinenumber: 107
    functionLinenumberEnd: 148
    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:186,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: 191
      start: 150
    functionDepth: 2
    functionLinenumber: 150
    functionLinenumberEnd: 191
    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:201,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:209,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:209,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:211,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:213,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:219,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: 224
      start: 193
    functionDepth: 2
    functionLinenumber: 193
    functionLinenumberEnd: 224
    functionName: get_char_item
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 0
    functionsReached:
    - memcpy
    - ecpg_raise
    - strlen
    - strncpy
    linkageType: ''
    returnType: bool
    signature: bool get_char_item(int lineno, void *var, enum ECPGttype vartype, char
      *value, int varcharsize)
  - BBCount: 44
    BranchProfiles: []
    Callsites:
    - Dst: ECPGget_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:242,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:246,1
    - Dst: va_start
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:251,1
    - Dst: ecpg_init_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:252,1
    - Dst: ecpg_result_by_descriptor
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:253,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:256,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:260,1
    - Dst: PQnfields
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:262,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:264,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:265,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:269,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:272,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:274,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:287,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:288,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: get_char_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:322,1
    - Dst: PQfname
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:322,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:324,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:328,1
    - Dst: PQfname
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:328,1
    - Dst: get_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:332,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:334,1
    - Dst: get_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:341,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:343,1
    - Dst: get_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:350,1
    - Dst: PQfmod
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:350,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:352,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:356,1
    - Dst: PQfmod
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:356,1
    - Dst: get_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:360,1
    - Dst: PQfmod
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:360,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:362,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:366,1
    - Dst: PQfmod
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:366,1
    - Dst: get_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:370,1
    - Dst: PQfsize
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:370,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:372,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:376,1
    - Dst: PQfsize
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:376,1
    - Dst: get_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:380,1
    - Dst: PQfmod
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:380,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:382,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:386,1
    - Dst: PQfmod
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:386,1
    - Dst: get_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:390,1
    - Dst: ecpg_dynamic_type
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:390,1
    - Dst: PQftype
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:390,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:392,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:396,1
    - Dst: ecpg_dynamic_type
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:396,1
    - Dst: PQftype
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:396,1
    - Dst: get_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:400,1
    - Dst: ecpg_dynamic_type_DDT
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:400,1
    - Dst: PQftype
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:400,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:402,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:406,1
    - Dst: ecpg_dynamic_type_DDT
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:406,1
    - Dst: PQftype
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:406,1
    - Dst: get_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:410,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:410,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:412,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:416,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:416,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:429,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:431,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:432,1
    - Dst: ecpg_auto_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:438,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:442,1
    - Dst: get_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:451,1
    - Dst: PQgetlength
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:451,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:453,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:457,1
    - Dst: PQgetlength
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:457,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:462,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:463,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:464,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:468,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:475,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:490,1
    - Dst: uselocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:491,1
    - Dst: _configthreadlocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:494,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:496,1
    - Dst: setlocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:496,1
    - Dst: setlocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:497,1
    - Dst: ecpg_get_connection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:501,1
    - Dst: ecpg_store_result
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:502,1
    - Dst: uselocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:506,1
    - Dst: setlocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:510,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:511,1
    - Dst: _configthreadlocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:515,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:533,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:535,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:536,1
    - Dst: ecpg_auto_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:543,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:547,1
    - Dst: get_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:556,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:556,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:558,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:562,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:562,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:566,1
    CyclomaticComplexity: 53
    EdgeCount: 53
    ICount: 201
    argCount: 3
    argNames:
    - lineno
    - desc_name
    - index
    argTypes:
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 233
    functionDepth: 5
    functionLinenumber: 233
    functionLinenumberEnd: 568
    functionName: ECPGget_desc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 9
    functionsReached:
    - ECPGget_sqlca
    - snprintf
    - va_start
    - PQftype
    - ecpg_strdup
    - _configthreadlocale
    - PQnfields
    - va_arg
    - PQfmod
    - ecpg_dynamic_type_DDT
    - PQgetlength
    - get_int_item
    - PQntuples
    - va_end
    - ecpg_init_sqlca
    - ecpg_result_by_descriptor
    - ecpg_store_result
    - ecpg_log
    - PQfname
    - uselocale
    - ecpg_raise
    - Assert
    - ecpg_dynamic_type
    - setlocale
    - memset
    - ecpg_get_connection
    - ecpg_free
    - get_char_item
    - PQgetisnull
    - PQfsize
    - ecpg_auto_alloc
    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:575,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - lineno
    - desc_name
    - count
    argTypes:
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 572
    functionDepth: 1
    functionLinenumber: 572
    functionLinenumberEnd: 581
    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:599,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: 601
      start: 583
    functionDepth: 1
    functionLinenumber: 583
    functionLinenumberEnd: 601
    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:612,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:624,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:634,1
    - Dst: va_start
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:637,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:644,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:649,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:650,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:652,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:653,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:654,1
    - Dst: ecpg_store_input
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:676,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:678,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:679,1
    - Dst: set_desc_attr
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:683,1
    - Dst: set_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:689,1
    - Dst: set_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:693,1
    - Dst: set_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:697,1
    - Dst: set_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:701,1
    - Dst: set_int_item
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:705,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:712,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:713,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:714,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:715,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:720,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:721,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 76
    argCount: 3
    argNames:
    - lineno
    - desc_name
    - index
    argTypes:
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 604
    functionDepth: 3
    functionLinenumber: 604
    functionLinenumberEnd: 724
    functionName: ECPGset_desc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 2
    functionsReached:
    - ecpg_raise
    - set_desc_attr
    - va_arg
    - va_end
    - set_int_item
    - snprintf
    - ecpg_free
    - ecpg_alloc
    - ecpg_find_desc
    - ecpg_store_input
    - va_start
    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:736,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:739,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:742,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:743,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:744,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - desc
    argTypes:
    - struct descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 727
    functionDepth: 2
    functionLinenumber: 727
    functionLinenumberEnd: 745
    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:752,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:756,1
    - Dst: ecpg_init_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:761,1
    - Dst: get_descriptors
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:762,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:764,1
    - Dst: set_descriptors
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:769,1
    - Dst: descriptor_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:770,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:774,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - line
    - name
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 776
      start: 747
    functionDepth: 3
    functionLinenumber: 747
    functionLinenumberEnd: 776
    functionName: ECPGdeallocate_desc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 9
    functionsReached:
    - ecpg_raise
    - get_descriptors
    - ECPGget_sqlca
    - ecpg_init_sqlca
    - descriptor_free
    - strcmp
    - set_descriptors
    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:786,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 779
    functionDepth: 3
    functionLinenumber: 779
    functionLinenumberEnd: 789
    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:795,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:799,1
    - Dst: ecpg_init_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:804,1
    - Dst: ecpg_alloc::ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:805,1
    - Dst: get_descriptors
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:808,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:809,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:809,1
    - Dst: name::name
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:810,1
    - Dst: PQmakeEmptyPGresult
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:817,1
    - Dst: result::result
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:818,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:820,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:822,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:825,1
    - Dst: name::name
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:825,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 2
    argNames:
    - line
    - name
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 791
    functionDepth: 2
    functionLinenumber: 791
    functionLinenumberEnd: 828
    functionName: ECPGallocate_desc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 10
    functionsReached:
    - ecpg_raise
    - get_descriptors
    - ECPGget_sqlca
    - ecpg_alloc::ecpg_alloc
    - ecpg_init_sqlca
    - result::result
    - ecpg_free
    - name::name
    - ecpg_alloc
    - PQmakeEmptyPGresult
    - strlen
    - strcpy
    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:836,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:838,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:842,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - line
    - name
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 831
    functionDepth: 2
    functionLinenumber: 831
    functionLinenumberEnd: 844
    functionName: ecpg_find_desc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 3
    functionsReached:
    - ecpg_raise
    - strcmp
    - get_descriptors
    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:858,1
    - Dst: ecpg_get_connection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:862,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:865,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:866,1
    - Dst: ecpg_find_prepared_statement
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:869,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:872,1
    - Dst: va_start
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:876,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:884,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:890,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:891,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:892,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:893,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:896,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:897,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:898,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:899,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:900,1
    - Dst: ecpg_find_desc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:907,1
    - Dst: PQdescribePrepared
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:912,1
    - Dst: ecpg_check_PQresult
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:913,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:916,1
    - Dst: INFORMIX_MODE
      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: ecpg_build_compat_sqlda
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:933,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:942,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:950,1
    - Dst: PQdescribePrepared
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:957,1
    - Dst: ecpg_check_PQresult
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:958,1
    - Dst: ecpg_build_native_sqlda
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:961,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:970,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:978,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c:988,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: 991
      start: 846
    functionDepth: 8
    functionLinenumber: 846
    functionLinenumberEnd: 991
    functionName: ECPGdescribe
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/descriptor.c
    functionUses: 4
    functionsReached:
    - ecpg_find_prepared_statement
    - ecpg_raise
    - ecpg_gettext
    - PQdescribePrepared
    - ecpg_get_connection
    - va_arg
    - ecpg_build_native_sqlda
    - va_end
    - ecpg_build_compat_sqlda
    - free
    - ecpg_find_desc
    - PQclear
    - va_start
    - ecpg_check_PQresult
    - INFORMIX_MODE
    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: 5
    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_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:90,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 101
    functionName: ecpg_register_prepared_stmt
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 0
    functionsReached:
    - ecpg_find_prepared_statement
    - ecpg_strdup
    - memset
    - ecpg_free
    - ecpg_alloc
    - deallocate_one
    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:128,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:131,1
    - Dst: isvarchar
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:133,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:135,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:135,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:135,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:137,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:141,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:142,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:143,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:145,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:146,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 28
    argCount: 2
    argNames:
    - text
    - lineno
    argTypes:
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 156
    functionName: replace_variables
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 0
    functionsReached:
    - strcat
    - snprintf
    - ecpg_free
    - isvarchar
    - ecpg_alloc
    - memcpy
    - strlen
    - strcpy
    linkageType: ''
    returnType: bool
    signature: bool replace_variables(char **text, int lineno)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:166,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:170,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:173,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:180,1
    - Dst: replace_variables
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:184,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:187,1
    - Dst: PQprepare
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:191,1
    - Dst: ecpg_check_PQresult
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:192,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:194,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:195,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: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:201,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:202,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 4
    argNames:
    - lineno
    - con
    - name
    - variable
    argTypes:
    - int
    - struct connection*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 158
    functionDepth: 4
    functionLinenumber: 158
    functionLinenumberEnd: 212
    functionName: prepare_common
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 0
    functionsReached:
    - ecpg_strdup
    - PQprepare
    - ecpg_free
    - replace_variables
    - ecpg_alloc
    - ecpg_log
    - PQclear
    - ecpg_check_PQresult
    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:226,1
    - Dst: ecpg_init
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:227,1
    - Dst: ecpg_find_prepared_statement
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:231,1
    - Dst: deallocate_one
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:232,1
    - Dst: prepare_common
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:235,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: 236
      start: 216
    functionDepth: 5
    functionLinenumber: 216
    functionLinenumberEnd: 236
    functionName: ECPGprepare
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 16
    functionsReached:
    - ecpg_find_prepared_statement
    - ecpg_get_connection
    - ecpg_init
    - prepare_common
    - deallocate_one
    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:249,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: 257
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 257
    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:265,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:273,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:273,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:273,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:277,1
    - Dst: PQexec
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:278,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:279,1
    - Dst: ecpg_check_PQresult
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:280,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:284,1
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:294,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:296,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:301,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:302,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:303,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:309,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: 311
      start: 259
    functionDepth: 4
    functionLinenumber: 259
    functionLinenumberEnd: 311
    functionName: deallocate_one
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 2
    functionsReached:
    - ecpg_raise
    - PQexec
    - ecpg_free
    - INFORMIX_MODE
    - ecpg_alloc
    - ecpg_log
    - PQclear
    - sprintf
    - strlen
    - ecpg_check_PQresult
    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:321,1
    - Dst: ecpg_init
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:322,1
    - Dst: ecpg_find_prepared_statement
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:325,1
    - Dst: deallocate_one
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:327,1
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:330,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:332,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: 334
      start: 314
    functionDepth: 5
    functionLinenumber: 314
    functionLinenumberEnd: 334
    functionName: ECPGdeallocate
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 12
    functionsReached:
    - ecpg_find_prepared_statement
    - ecpg_raise
    - ecpg_get_connection
    - ecpg_init
    - deallocate_one
    - INFORMIX_MODE
    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:342,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: 347
      start: 336
    functionDepth: 5
    functionLinenumber: 336
    functionLinenumberEnd: 347
    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: 1
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_deallocate_all_conn
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:352,1
    - Dst: ecpg_get_connection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - lineno
    - compat
    - connection_name
    argTypes:
    - int
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 349
    functionDepth: 6
    functionLinenumber: 349
    functionLinenumberEnd: 354
    functionName: ECPGdeallocate_all
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 1
    functionsReached:
    - ecpg_get_connection
    - ecpg_deallocate_all_conn
    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:361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - name
    - con
    argTypes:
    - char*
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 363
    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: 1
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_prepared
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:372,1
    - Dst: ecpg_get_connection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - connection_name
    - name
    - lineno
    argTypes:
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 367
    functionDepth: 2
    functionLinenumber: 367
    functionLinenumberEnd: 373
    functionName: ECPGprepared_statement
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 10
    functionsReached:
    - ecpg_get_connection
    - ecpg_prepared
    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:388,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:399,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:400,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - ecpgQuery
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 407
    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:425,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:432,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - ecpgQuery
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 414
    functionDepth: 2
    functionLinenumber: 414
    functionLinenumberEnd: 443
    functionName: SearchStmtCache
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 0
    functionsReached:
    - HashStmt
    - strcmp
    linkageType: ''
    returnType: int
    signature: int SearchStmtCache(const char *ecpgQuery)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_get_connection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:467,1
    - Dst: ecpg_find_prepared_statement
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:470,1
    - Dst: deallocate_one
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:471,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:479,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - lineno
    - compat
    - entNo
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 450
    functionDepth: 5
    functionLinenumber: 450
    functionLinenumberEnd: 484
    functionName: ecpg_freeStmtCacheEntry
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 0
    functionsReached:
    - ecpg_get_connection
    - ecpg_free
    - ecpg_find_prepared_statement
    - deallocate_one
    linkageType: ''
    returnType: int
    signature: "int ecpg_freeStmtCacheEntry(int lineno, int compat,\n\t\t\t\t\t\tint
      entNo)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:507,1
    - Dst: HashStmt
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:513,1
    - Dst: ecpg_freeStmtCacheEntry
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:537,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:543,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:546,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 5
    argNames:
    - lineno
    - stmtID
    - connection
    - compat
    - ecpgQuery
    argTypes:
    - int
    - char*
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 490
    functionDepth: 6
    functionLinenumber: 490
    functionLinenumberEnd: 549
    functionName: AddStmtToCache
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 0
    functionsReached:
    - ecpg_strdup
    - HashStmt
    - ecpg_freeStmtCacheEntry
    - ecpg_alloc
    - memcpy
    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: 5
    BranchProfiles: []
    Callsites:
    - Dst: SearchStmtCache
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:558,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:567,1
    - Dst: ecpg_get_connection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:571,1
    - Dst: ecpg_find_prepared_statement
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:572,1
    - Dst: prepare_common
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:574,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:577,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:583,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:586,1
    - Dst: ECPGprepare
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:588,1
    - Dst: AddStmtToCache
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:591,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c:595,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 5
    argNames:
    - lineno
    - connection_name
    - compat
    - name
    - query
    argTypes:
    - int
    - char*
    - int
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 552
    functionDepth: 7
    functionLinenumber: 552
    functionLinenumberEnd: 602
    functionName: ecpg_auto_prepare
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/prepare.c
    functionUses: 0
    functionsReached:
    - ecpg_find_prepared_statement
    - ecpg_strdup
    - SearchStmtCache
    - ecpg_get_connection
    - prepare_common
    - AddStmtToCache
    - ecpg_log
    - ECPGprepare
    - 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
    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)
  - 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: 2
    functionsReached:
    - ecpg_raise
    - ecpg_gettext
    - ecpg_init_sqlca
    - 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
    - ecpg_init_sqlca
    - pthread_getspecific
    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: 34
    functionsReached:
    - PQexec
    - ecpg_get_connection
    - ecpg_init
    - ecpg_log
    - PQclear
    - PQtransactionStatus
    - strncmp
    - ecpg_check_PQresult
    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: 59
    functionsReached:
    - ecpg_log
    - pthread_mutex_unlock
    - pthread_mutex_lock
    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:
    - ecpg_gettext
    - malloc
    - fflush
    - ECPGget_sqlca
    - pthread_mutex_lock
    - va_end
    - snprintf
    - vfprintf
    - fprintf
    - getpid
    - pthread_mutex_unlock
    - free
    - va_start
    - strlen
    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
    - InitializeCriticalSection
    - InterlockedExchange
    - Sleep
    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:
    - pthread_mutex_unlock
    - pthread_mutex_lock
    - fn
    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: 6
    functionsReached:
    - getenv
    - PG_TEXTDOMAIN
    - SetLastError
    - pthread_mutex_lock
    - bindtextdomain
    - dgettext
    - GetLastError
    - pthread_mutex_unlock
    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:
    - ecpg_raise
    - ECPGget_sqlca
    - ECPGfree_auto_mem
    - snprintf
    - calloc
    - ecpg_init_sqlca
    - strncpy
    - strlen
    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:55,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:57,1
    - Dst: PQescapeString
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:60,1
    - Dst: memmove
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:72,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:77,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 3
    argNames:
    - arg
    - quote
    - lineno
    argTypes:
    - char*
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 39
    functionDepth: 5
    functionLinenumber: 39
    functionLinenumberEnd: 80
    functionName: quote_postgres
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - PQescapeString
    - ecpg_free
    - memmove
    - ecpg_alloc
    - strlen
    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:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - var
    argTypes:
    - struct variable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 93
    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:100,1
    - Dst: free_variable
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:101,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:102,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:103,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:107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 95
    functionDepth: 2
    functionLinenumber: 95
    functionLinenumberEnd: 108
    functionName: free_statement
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - free_variable
    - ecpg_free
    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:124,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:129,1
    - Dst: isalpha
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:131,1
    - Dst: isascii
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:132,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: 145
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 145
    functionName: next_insert
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - isdigit
    - isalpha
    - isascii
    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:151,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - cache
    - oid
    - isarray
    - lineno
    argTypes:
    - struct ECPGtype_information_cache**
    - int
    - enum ARRAY_TYPE
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 161
    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,
      int 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:180,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:182,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:184,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:186,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:188,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:190,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:192,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:194,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:196,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:198,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:200,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:202,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:204,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:206,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:208,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:210,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:212,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:214,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:216,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:218,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:220,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:222,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:224,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:226,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:228,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:230,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:232,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:234,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:236,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:238,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:240,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:242,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:244,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:246,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:248,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:250,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:252,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:254,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:256,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:266,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:266,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:270,1
    - Dst: PQexec
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:271,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:272,1
    - Dst: ecpg_check_PQresult
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:273,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:275,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:277,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:281,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:281,1
    - Dst: ecpg_dynamic_type
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:282,1
    - Dst: ecpg_dynamic_type
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:283,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:291,1
    - Dst: ecpg_type_infocache_push
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:296,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:297,1
    - Dst: ECPG_IS_ARRAY
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:297,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 107
    argCount: 3
    argNames:
    - type
    - stmt
    - var
    argTypes:
    - int
    - struct statement*
    - struct variable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 163
    functionDepth: 5
    functionLinenumber: 163
    functionLinenumberEnd: 299
    functionName: ecpg_is_type_an_array
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - ecpg_dynamic_type
    - PQexec
    - PQntuples
    - atoi
    - PQresultStatus
    - ECPG_IS_ARRAY
    - ecpg_free
    - PQgetvalue
    - ecpg_alloc
    - ecpg_type_infocache_push
    - ecpg_log
    - PQclear
    - sprintf
    - strlen
    - ecpg_check_PQresult
    linkageType: ''
    returnType: enum ARRAY_TYPE
    signature: enum ARRAY_TYPE ecpg_is_type_an_array(int type, const struct statement
      *stmt, const struct variable *var)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:308,1
    - Dst: ecpg_is_type_an_array
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:311,1
    - Dst: PQftype
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:311,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:313,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:324,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:326,1
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:326,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:337,1
    - Dst: PQfformat
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:349,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:360,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:360,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:370,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:370,1
    - Dst: PQgetlength
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:390,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:393,1
    - Dst: ecpg_auto_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:394,1
    - Dst: ecpg_auto_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:405,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:425,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:425,1
    - Dst: ecpg_get_data
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:427,1
    - Dst: ecpg_get_data
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:446,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: 453
      start: 302
    functionDepth: 6
    functionLinenumber: 302
    functionLinenumberEnd: 453
    functionName: ecpg_store_result
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 1
    functionsReached:
    - ecpg_raise
    - PQntuples
    - ecpg_auto_alloc
    - PQgetvalue
    - ecpg_get_data
    - ecpg_log
    - PQfformat
    - PQgetlength
    - ecpg_is_type_an_array
    - PQftype
    - strlen
    - INFORMIX_MODE
    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:458,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:459,1
    - Dst: isinf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:460,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:463,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:465,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:468,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - ptr
    - value
    - delim
    argTypes:
    - char*
    - double
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 455
    functionDepth: 1
    functionLinenumber: 455
    functionLinenumberEnd: 469
    functionName: sprintf_double_value
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - isnan
    - sprintf
    - isinf
    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:474,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:475,1
    - Dst: isinf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:476,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:479,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:481,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:484,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - ptr
    - value
    - delim
    argTypes:
    - char*
    - float
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 471
    functionDepth: 1
    functionLinenumber: 471
    functionLinenumberEnd: 485
    functionName: sprintf_float_value
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - isnan
    - sprintf
    - isinf
    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:491,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:494,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:498,1
    - Dst: ecpg_hex_encode
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:499,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:500,1
    - Dst: ecpg_hex_enc_len
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:500,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - from_data
    - from_len
    - lineno
    argTypes:
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 487
    functionDepth: 1
    functionLinenumber: 487
    functionLinenumberEnd: 503
    functionName: convert_bytea_to_string
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - ecpg_hex_enc_len
    - ecpg_hex_encode
    - ecpg_alloc
    - strcpy
    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:551,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:567,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:572,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:575,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:575,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:577,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:577,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:580,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:586,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:591,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:594,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:594,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:596,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:596,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:599,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:605,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:610,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:613,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:613,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:615,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:615,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:618,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:624,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:629,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:632,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:632,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:634,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:634,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:637,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:643,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:648,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:651,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:651,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:653,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:653,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:656,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:662,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:667,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:670,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:670,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:672,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:672,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:675,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:681,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:686,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:689,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:689,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:691,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:691,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:694,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:700,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:705,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:708,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:708,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:710,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:710,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:713,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:719,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:724,1
    - Dst: sprintf_float_value
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:727,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:727,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:729,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:729,1
    - Dst: sprintf_float_value
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:732,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:738,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:743,1
    - Dst: sprintf_double_value
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:746,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:746,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:748,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:748,1
    - Dst: sprintf_double_value
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:751,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:757,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:762,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:765,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:765,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:767,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:767,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:772,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:774,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:776,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:787,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:789,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:792,1
    - Dst: quote_postgres
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:795,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:798,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:808,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:810,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:813,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:825,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:828,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:838,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:841,1
    - Dst: quote_postgres
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:844,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:847,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:863,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:865,1
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:874,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:877,1
    - Dst: PGTYPESnumeric_copy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:882,1
    - Dst: PGTYPESnumeric_from_decimal
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:884,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:888,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:889,1
    - Dst: PGTYPESnumeric_to_asc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:893,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:894,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:895,1
    - Dst: ecpg_realloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:897,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:897,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:899,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:900,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:906,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:906,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:908,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:908,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:910,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:914,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:914,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:926,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:928,1
    - Dst: quote_postgres
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:935,1
    - Dst: PGTYPESinterval_to_asc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:935,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:938,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:942,1
    - Dst: ecpg_realloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:944,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:944,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:946,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:947,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:953,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:953,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:955,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:955,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:957,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:961,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:961,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:973,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:975,1
    - Dst: quote_postgres
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:982,1
    - Dst: PGTYPESdate_to_asc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:982,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:985,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:989,1
    - Dst: ecpg_realloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:991,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:991,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:993,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:994,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1000,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1000,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1002,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1002,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1004,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1008,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1008,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1020,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1022,1
    - Dst: quote_postgres
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1029,1
    - Dst: PGTYPEStimestamp_to_asc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1029,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1032,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1036,1
    - Dst: ecpg_realloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1038,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1038,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1040,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1041,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1047,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1047,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1049,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1049,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1051,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1055,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1055,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1067,1
    - Dst: ecpg_type_name
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1067,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: 1073
      start: 505
    functionDepth: 6
    functionLinenumber: 505
    functionLinenumberEnd: 1073
    functionName: ecpg_store_input
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 1
    functionsReached:
    - sprintf_double_value
    - sprintf
    - ecpg_type_name
    - strlen
    - ecpg_strdup
    - PGTYPESdate_to_asc
    - PGTYPESnumeric_copy
    - PGTYPESnumeric_free
    - PGTYPESnumeric_from_decimal
    - quote_postgres
    - sprintf_float_value
    - PGTYPEStimestamp_to_asc
    - memcpy
    - strcpy
    - PGTYPESnumeric_to_asc
    - ecpg_alloc
    - ecpg_raise
    - ecpg_realloc
    - ecpg_free
    - strncpy
    - ECPGis_noind_null
    - PGTYPESinterval_to_asc
    - PGTYPESnumeric_new
    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:1087,1
    - Dst: ecpg_hex_enc_len
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1087,1
    - Dst: ecpg_hex_encode
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1090,1
    - Dst: ecpg_hex_enc_len
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1091,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1098,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1102,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: 1103
      start: 1075
    functionDepth: 3
    functionLinenumber: 1075
    functionLinenumberEnd: 1103
    functionName: print_param_value
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - ecpg_hex_enc_len
    - ecpg_free
    - ecpg_hex_encode
    - ecpg_log
    - ecpg_alloc
    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:1113,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1115,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1117,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1118,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - stmt
    - print
    argTypes:
    - struct statement*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1124
      start: 1105
    functionDepth: 4
    functionLinenumber: 1105
    functionLinenumberEnd: 1124
    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:1131,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1131,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1132,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1135,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1139,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1140,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1146,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1151,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1154,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: 1156
      start: 1126
    functionDepth: 1
    functionLinenumber: 1126
    functionLinenumberEnd: 1156
    functionName: insert_tobeinserted
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - strcat
    - ecpg_free
    - ecpg_alloc
    - 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:1171,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1173,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1178,1
    - Dst: ecpg_store_input
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1199,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: 1203
      start: 1158
    functionDepth: 7
    functionLinenumber: 1158
    functionLinenumberEnd: 1203
    functionName: store_input_from_desc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - memcpy
    - strlen
    - ecpg_store_input
    - ecpg_alloc
    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:1222,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1223,1
    - Dst: ecpg_find_desc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1257,1
    - Dst: store_input_from_desc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1267,1
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1282,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1303,1
    - Dst: ecpg_store_input
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1328,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1358,1
    - Dst: ecpg_store_input
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1383,1
    - Dst: ecpg_store_input
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1395,1
    - Dst: next_insert
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1409,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1415,1
    - Dst: ecpg_free_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1418,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1419,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1430,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1430,1
    - Dst: insert_tobeinserted
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1432,1
    - Dst: ecpg_free_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1434,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1451,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1451,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1456,1
    - Dst: ecpg_free_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1457,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1460,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1461,1
    - Dst: insert_tobeinserted
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1465,1
    - Dst: ecpg_free_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1467,1
    - Dst: convert_bytea_to_string
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1476,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1480,1
    - Dst: ecpg_free_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1483,1
    - Dst: insert_tobeinserted
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1489,1
    - Dst: ecpg_free_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1491,1
    - Dst: ecpg_realloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1504,1
    - Dst: ecpg_realloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1509,1
    - Dst: ecpg_realloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1514,1
    - Dst: ecpg_free_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1521,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1522,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1539,1
    - Dst: ecpg_free_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1541,1
    - Dst: snprintf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1545,1
    - Dst: insert_tobeinserted
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1547,1
    - Dst: ecpg_free_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1549,1
    - Dst: next_insert
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1565,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1567,1
    - Dst: ecpg_free_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1569,1
    CyclomaticComplexity: 60
    EdgeCount: 60
    ICount: 203
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1574
      start: 1212
    functionDepth: 8
    functionLinenumber: 1212
    functionLinenumberEnd: 1574
    functionName: ecpg_build_params
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - ecpg_raise
    - ecpg_free_params
    - sprintf
    - ecpg_realloc
    - snprintf
    - store_input_from_desc
    - next_insert
    - ecpg_free
    - PQparameterStatus
    - insert_tobeinserted
    - ecpg_alloc
    - ecpg_find_desc
    - convert_bytea_to_string
    - ecpg_store_input
    - strcmp
    - strlen
    - INFORMIX_MODE
    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:1583,1
    - Dst: PQexec
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1585,1
    - Dst: ecpg_check_PQresult
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1586,1
    - Dst: ecpg_free_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1588,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1591,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1595
      start: 1580
    functionDepth: 5
    functionLinenumber: 1580
    functionLinenumberEnd: 1595
    functionName: ecpg_autostart_transaction
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - PQexec
    - ecpg_free_params
    - PQclear
    - PQtransactionStatus
    - 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:1604,1
    - Dst: PQexecPrepared
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1607,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1614,1
    - Dst: PQexec
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1620,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1621,1
    - Dst: PQexecParams
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1625,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1632,1
    - Dst: ecpg_register_prepared_stmt
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1637,1
    - Dst: ecpg_free_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1639,1
    - Dst: ecpg_free_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1645,1
    - Dst: ecpg_check_PQresult
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1647,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1651
      start: 1601
    functionDepth: 5
    functionLinenumber: 1601
    functionLinenumberEnd: 1651
    functionName: ecpg_execute
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - PQexec
    - ecpg_free_params
    - PQexecParams
    - PQexecPrepared
    - ecpg_log
    - ecpg_register_prepared_stmt
    - ecpg_check_PQresult
    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:1677,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1684,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1690,1
    - Dst: PQnfields
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1693,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1694,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1696,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1702,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1704,1
    - Dst: ecpg_find_desc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1711,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1717,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1720,1
    - Dst: PQntuples
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1721,1
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1727,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1741,1
    - Dst: ecpg_build_compat_sqlda
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1751,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1759,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1764,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1770,1
    - Dst: ecpg_set_compat_sqlda
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1774,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1775,1
    - Dst: PQnfields
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1776,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1797,1
    - Dst: ecpg_build_native_sqlda
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1807,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1815,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1820,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1826,1
    - Dst: ecpg_set_native_sqlda
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1830,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1831,1
    - Dst: PQnfields
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1832,1
    - Dst: ecpg_store_result
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1847,1
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1850,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1852,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1859,1
    - Dst: PQcmdStatus
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1866,1
    - Dst: PQoidValue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1867,1
    - Dst: atol
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1868,1
    - Dst: PQcmdTuples
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1868,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1869,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1872,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1873,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1874,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1875,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1882,1
    - Dst: PQgetCopyData
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1883,1
    - Dst: printf
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1886,1
    - Dst: PQfreemem
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1887,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1892,1
    - Dst: PQgetResult
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1893,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1894,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1895,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1897,1
    - Dst: PQresultErrorMessage
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1897,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1907,1
    - Dst: ecpg_raise_backend
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1909,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1916,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1921,1
    - Dst: PQnotifies
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1922,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1924,1
    - Dst: PQfreemem
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1926,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1927,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 145
    argCount: 2
    argNames:
    - stmt
    - clear_result
    argTypes:
    - struct statement*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1931
      start: 1670
    functionDepth: 8
    functionLinenumber: 1670
    functionLinenumberEnd: 1931
    functionName: ecpg_process_output
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - ECPGget_sqlca
    - PQresultStatus
    - PQfreemem
    - PQgetResult
    - ecpg_set_compat_sqlda
    - PQgetCopyData
    - PQnotifies
    - ecpg_build_native_sqlda
    - PQnfields
    - ecpg_find_desc
    - PQclear
    - INFORMIX_MODE
    - PQntuples
    - ecpg_set_native_sqlda
    - ecpg_raise_backend
    - PQresultErrorMessage
    - ecpg_build_compat_sqlda
    - ecpg_store_result
    - PQcmdTuples
    - ecpg_log
    - strncmp
    - ecpg_raise
    - printf
    - PQoidValue
    - PQcmdStatus
    - PQconsumeInput
    - free
    - atol
    linkageType: ''
    returnType: bool
    signature: bool ecpg_process_output(struct statement *stmt, bool clear_result)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1960,1
    - Dst: ecpg_pthreads_init
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1964,1
    - Dst: ecpg_get_connection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1966,1
    - Dst: ecpg_init
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1968,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1971,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1988,1
    - Dst: uselocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1989,1
    - Dst: ecpg_do_epilogue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1992,1
    - Dst: _configthreadlocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:1997,1
    - Dst: ecpg_do_epilogue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2000,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2004,1
    - Dst: setlocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2004,1
    - Dst: ecpg_do_epilogue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2007,1
    - Dst: setlocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2010,1
    - Dst: ecpg_auto_prepare
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2019,1
    - Dst: ecpg_do_epilogue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2021,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2033,1
    - Dst: ecpg_prepared
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2040,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2045,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2049,1
    - Dst: ecpg_do_epilogue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2050,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2089,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2100,1
    - Dst: ecpg_do_epilogue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2102,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2107,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2109,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2110,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2111,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2137,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2138,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2139,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2140,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2141,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2162,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2163,1
    - Dst: ecpg_do_epilogue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2164,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2178,1
    - Dst: va_arg
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2183,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2189,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2189,1
    - Dst: ecpg_do_epilogue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2190,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2196,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2196,1
    - Dst: ecpg_do_epilogue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2197,1
    - Dst: ecpg_clear_auto_mem
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2202,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 122
    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: 2207
      start: 1943
    functionDepth: 8
    functionLinenumber: 1943
    functionLinenumberEnd: 2207
    functionName: ecpg_do_prologue
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - ecpg_auto_prepare
    - ecpg_raise
    - ecpg_pthreads_init
    - Assert
    - _configthreadlocale
    - ecpg_strdup
    - ecpg_gettext
    - setlocale
    - ecpg_get_connection
    - va_arg
    - ecpg_init
    - ecpg_free
    - ecpg_prepared
    - ecpg_clear_auto_mem
    - ecpg_alloc
    - ecpg_do_epilogue
    - uselocale
    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:2221,1
    - Dst: setlocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2225,1
    - Dst: _configthreadlocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2227,1
    - Dst: free_statement
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2232,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2233
      start: 2213
    functionDepth: 3
    functionLinenumber: 2213
    functionLinenumberEnd: 2233
    functionName: ecpg_do_epilogue
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 1
    functionsReached:
    - _configthreadlocale
    - uselocale
    - free_statement
    - setlocale
    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:2245,1
    - Dst: ecpg_build_params
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2250,1
    - Dst: ecpg_autostart_transaction
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2253,1
    - Dst: ecpg_execute
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2256,1
    - Dst: ecpg_process_output
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2259,1
    - Dst: ecpg_do_epilogue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2262,1
    - Dst: ecpg_do_epilogue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2266,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: 2268
      start: 2240
    functionDepth: 9
    functionLinenumber: 2240
    functionLinenumberEnd: 2268
    functionName: ecpg_do
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 0
    functionsReached:
    - ecpg_do_prologue
    - ecpg_process_output
    - ecpg_autostart_transaction
    - ecpg_execute
    - ecpg_build_params
    - ecpg_do_epilogue
    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:2280,1
    - Dst: ecpg_do
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2281,1
    - Dst: va_end
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c:2283,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: 2286
      start: 2274
    functionDepth: 10
    functionLinenumber: 2274
    functionLinenumberEnd: 2286
    functionName: ECPGdo
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/execute.c
    functionUses: 66
    functionsReached:
    - va_end
    - ecpg_do
    - va_start
    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:2293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - line
    - connection
    - descriptor
    - query
    argTypes:
    - int
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2296
      start: 2289
    functionDepth: 11
    functionLinenumber: 2289
    functionLinenumberEnd: 2296
    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: 7
    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: 20
    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:
    - ecpg_raise
    - calloc
    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: 3
    BranchProfiles: []
    Callsites:
    - Dst: strdup::strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:54,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:57,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - string
    - lineno
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 46
    functionDepth: 2
    functionLinenumber: 46
    functionLinenumberEnd: 62
    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)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ECPGfree_auto_mem
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 79
    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:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 85
    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:90,1
    - Dst: pthread_getspecific
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 92
    functionName: get_auto_allocs
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c
    functionUses: 0
    functionsReached:
    - pthread_once
    - pthread_getspecific
    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:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - am
    argTypes:
    - struct auto_mem*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 98
    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:103,1
    - Dst: ecpg_add_mem
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:108,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:110,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - size
    - lineno
    argTypes:
    - long
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 100
    functionDepth: 3
    functionLinenumber: 100
    functionLinenumberEnd: 114
    functionName: ecpg_auto_alloc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c
    functionUses: 2
    functionsReached:
    - ecpg_free
    - ecpg_alloc
    - ecpg_add_mem
    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:119,1
    - Dst: get_auto_allocs
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:125,1
    - Dst: set_auto_allocs
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ptr
    - lineno
    argTypes:
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 116
    functionDepth: 3
    functionLinenumber: 116
    functionLinenumberEnd: 128
    functionName: ecpg_add_mem
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c
    functionUses: 1
    functionsReached:
    - get_auto_allocs
    - set_auto_allocs
    - ecpg_alloc
    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:133,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:143,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:144,1
    - Dst: set_auto_allocs
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 130
    functionDepth: 2
    functionLinenumber: 130
    functionLinenumberEnd: 148
    functionName: ECPGfree_auto_mem
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c
    functionUses: 6
    functionsReached:
    - get_auto_allocs
    - set_auto_allocs
    - ecpg_free
    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:153,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:163,1
    - Dst: set_auto_allocs
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c:165,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 150
    functionDepth: 2
    functionLinenumber: 150
    functionLinenumberEnd: 167
    functionName: ecpg_clear_auto_mem
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/memory.c
    functionUses: 1
    functionsReached:
    - get_auto_allocs
    - set_auto_allocs
    - ecpg_free
    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:61,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - connection_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 68
    functionName: ecpg_get_connection_nr
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c
    functionUses: 0
    functionsReached:
    - ecpg_pthreads_init
    - strcmp
    - pthread_getspecific
    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:75,1
    - Dst: ecpg_pthreads_init
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:77,1
    - Dst: pthread_getspecific
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:79,1
    - Dst: pthread_mutex_lock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:92,1
    - Dst: ecpg_get_connection_nr
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:94,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:96,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - connection_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 70
    functionDepth: 3
    functionLinenumber: 70
    functionLinenumberEnd: 100
    functionName: ecpg_get_connection
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c
    functionUses: 12
    functionsReached:
    - ecpg_pthreads_init
    - pthread_mutex_lock
    - ecpg_get_connection_nr
    - pthread_mutex_unlock
    - pthread_getspecific
    - strcmp
    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:110,1
    - Dst: PQfinish
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:111,1
    - Dst: pthread_getspecific
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:130,1
    - Dst: pthread_setspecific
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:131,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:135,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:137,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:138,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:139,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:145,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:149,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 1
    argNames:
    - act
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 102
    functionDepth: 6
    functionLinenumber: 102
    functionLinenumberEnd: 150
    functionName: ecpg_finish
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c
    functionUses: 0
    functionsReached:
    - pthread_setspecific
    - PQfinish
    - ecpg_free
    - ecpg_log
    - ecpg_deallocate_all_conn
    - pthread_getspecific
    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:155,1
    - Dst: ecpg_init
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:158,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:161,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:163,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:163,1
    - Dst: PQtransactionStatus
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:165,1
    - Dst: PQexec
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:167,1
    - Dst: ecpg_check_PQresult
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:168,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:170,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:174,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:174,1
    - Dst: PQtransactionStatus
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:176,1
    - Dst: PQexec
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:178,1
    - Dst: ecpg_check_PQresult
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:179,1
    - Dst: PQclear
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:181,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 3
    argNames:
    - lineno
    - mode
    - connection_name
    argTypes:
    - int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 152
    functionDepth: 4
    functionLinenumber: 152
    functionLinenumberEnd: 187
    functionName: ECPGsetcommit
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c
    functionUses: 13
    functionsReached:
    - PQexec
    - ecpg_get_connection
    - ecpg_init
    - ecpg_log
    - PQclear
    - PQtransactionStatus
    - strncmp
    - strlen
    - ecpg_check_PQresult
    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:192,1
    - Dst: ecpg_init
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:194,1
    - Dst: pthread_setspecific
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:197,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - lineno
    - connection_name
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 189
    functionDepth: 4
    functionLinenumber: 189
    functionLinenumberEnd: 199
    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:205,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:206,1
    - Dst: ECPGget_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:207,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:212,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:221,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:224,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:227,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:230,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:232,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:234,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:236,1
    - Dst: strncpy
      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: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:248,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:250,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 2
    argNames:
    - arg
    - result
    argTypes:
    - void*
    - PGresult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 202
    functionDepth: 3
    functionLinenumber: 202
    functionLinenumberEnd: 251
    functionName: ECPGnoticeReceiver
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c
    functionUses: 0
    functionsReached:
    - ecpg_gettext
    - ECPGget_sqlca
    - PQresultErrorField
    - strncpy
    - ecpg_log
    - strcmp
    - strncmp
    - strlen
    linkageType: ''
    returnType: void
    signature: void ECPGnoticeReceiver(void *arg, const PGresult *result)
  - BBCount: 65
    BranchProfiles: []
    Callsites:
    - Dst: ECPGget_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:257,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:262,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:273,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:275,1
    - Dst: ecpg_init_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:279,1
    - Dst: ecpg_clear_auto_mem
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:285,1
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:287,1
    - Dst: getenv
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:296,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:299,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:300,1
    - Dst: ecpg_pthreads_init
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:307,1
    - Dst: ecpg_get_connection
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:310,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:312,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:313,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:318,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:320,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:327,1
    - Dst: strncmp
      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:336,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:339,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:339,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:347,1
    - Dst: strrchr
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:349,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:352,1
    - Dst: last_dir_separator
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:356,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:361,1
    - Dst: strrchr
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:367,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:371,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:375,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:382,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:383,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:385,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:386,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:386,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:388,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:390,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:392,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:394,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:396,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:397,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:405,1
    - Dst: strrchr
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:414,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:417,1
    - Dst: strrchr
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:422,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:425,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:430,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:451,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:453,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:461,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:462,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:466,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:468,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:470,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:472,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:474,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:476,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:478,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:479,1
    - Dst: pthread_mutex_lock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:484,1
    - Dst: newlocale
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:493,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:496,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:497,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:500,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:502,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:504,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:506,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:508,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:510,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:512,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:513,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:520,1
    - Dst: ecpg_strdup
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:522,1
    - Dst: pthread_setspecific
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:533,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:536,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:541,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:562,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:568,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:629,1
    - Dst: PQconnectdbParams
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:632,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:635,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:637,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:639,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:641,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:642,1
    - Dst: ecpg_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:643,1
    - Dst: PQstatus
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:645,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:647,1
    - Dst: ecpg_gettext
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:648,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:651,1
    - Dst: ecpg_finish
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:653,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:654,1
    - Dst: ecpg_raise
      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:664,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:666,1
    - Dst: PQsetNoticeReceiver
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:670,1
    CyclomaticComplexity: 81
    EdgeCount: 81
    ICount: 242
    argCount: 7
    argNames:
    - lineno
    - c
    - name
    - user
    - passwd
    - connection_name
    - autocommit
    argTypes:
    - int
    - int
    - char*
    - char*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 254
    functionDepth: 7
    functionLinenumber: 254
    functionLinenumberEnd: 673
    functionName: ECPGconnect
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c
    functionUses: 61
    functionsReached:
    - getenv
    - ecpg_gettext
    - pthread_setspecific
    - PQsetNoticeReceiver
    - ECPGget_sqlca
    - last_dir_separator
    - ecpg_clear_auto_mem
    - newlocale
    - strlen
    - ecpg_strdup
    - ecpg_pthreads_init
    - strrchr
    - pthread_mutex_lock
    - PQstatus
    - strcmp
    - INFORMIX_MODE
    - PQconnectdbParams
    - PQerrorMessage
    - ecpg_init_sqlca
    - pthread_mutex_unlock
    - ecpg_log
    - ecpg_alloc
    - strncmp
    - ecpg_raise
    - Assert
    - ecpg_finish
    - ecpg_get_connection
    - ecpg_free
    - free
    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:678,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:683,1
    - Dst: pthread_mutex_lock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:688,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:690,1
    - Dst: ecpg_init_sqlca
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:692,1
    - Dst: ecpg_finish
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:698,1
    - Dst: ecpg_get_connection_nr
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:703,1
    - Dst: ecpg_init
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:705,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:707,1
    - Dst: ecpg_finish
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:711,1
    - Dst: pthread_mutex_unlock
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c:714,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - lineno
    - connection_name
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 717
      start: 675
    functionDepth: 7
    functionLinenumber: 675
    functionLinenumberEnd: 717
    functionName: ECPGdisconnect
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/connect.c
    functionUses: 57
    functionsReached:
    - ecpg_raise
    - pthread_mutex_lock
    - ECPGget_sqlca
    - ecpg_finish
    - ecpg_get_connection_nr
    - ecpg_init
    - ecpg_init_sqlca
    - pthread_mutex_unlock
    - strcmp
    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:724,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - connection_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 719
    functionDepth: 4
    functionLinenumber: 719
    functionLinenumberEnd: 729
    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_delimiter
    - ECPG_IS_ARRAY
    - array_boundary
    - isdigit
    - INFORMIX_MODE
    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: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 87
    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: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 98
    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:103,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:105,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:109,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:111,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:115,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:117,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - ptr
    - retval
    - endptr
    argTypes:
    - char*
    - double*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 100
    functionDepth: 2
    functionLinenumber: 100
    functionLinenumberEnd: 123
    functionName: check_special_value
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/data.c
    functionUses: 0
    functionsReached:
    - get_float8_infinity
    - get_float8_nan
    - pg_strncasecmp
    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: 131
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 131
    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: 137
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 137
    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: 158
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 158
    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:179,1
    - Dst: get_hex
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:183,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 3
    argNames:
    - src
    - len
    - dst
    argTypes:
    - char*
    - unsigned
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 188
    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: 203
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 203
    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:211,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:212,1
    - Dst: PQfformat
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:213,1
    - Dst: PQgetlength
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:214,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:220,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:234,1
    - Dst: ECPG_IS_ARRAY
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:234,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:243,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:253,1
    - Dst: ECPGset_noind_null
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:283,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:287,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:295,1
    - Dst: ecpg_type_name
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:297,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:310,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:334,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:337,1
    - Dst: strtol
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:386,1
    - Dst: garbage_left
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:387,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:389,1
    - Dst: strtoul
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:415,1
    - Dst: garbage_left
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:416,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:418,1
    - Dst: strtoll
      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: strtoull
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:453,1
    - Dst: garbage_left
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:454,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:456,1
    - Dst: check_special_value
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:468,1
    - Dst: strtod
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:469,1
    - Dst: garbage_left
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:475,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:477,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:510,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:516,1
    - Dst: ecpg_hex_enc_len
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:529,1
    - Dst: hex_decode
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:532,1
    - Dst: ecpg_hex_dec_len
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:536,1
    - Dst: ORACLE_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:587,1
    - Dst: memset
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:589,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:590,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:625,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:650,1
    - Dst: ORACLE_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:653,1
    - Dst: ORACLE_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:659,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:697,1
    - Dst: strncpy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:700,1
    - Dst: PGTYPESnumeric_from_asc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:740,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:746,1
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:749,1
    - Dst: PGTYPESnumeric_new
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:755,1
    - Dst: ECPGset_noind_null
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:757,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:760,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:767,1
    - Dst: garbage_left
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:774,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:776,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:777,1
    - Dst: PGTYPESnumeric_copy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:785,1
    - Dst: PGTYPESnumeric_to_decimal
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:787,1
    - Dst: PGTYPESnumeric_free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:789,1
    - Dst: PGTYPESinterval_from_asc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:799,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:805,1
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:808,1
    - Dst: ecpg_alloc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:814,1
    - Dst: ECPGset_noind_null
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:818,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:822,1
    - Dst: garbage_left
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:832,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:834,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:835,1
    - Dst: PGTYPESinterval_copy
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:842,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:843,1
    - Dst: PGTYPESdate_from_asc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:853,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:859,1
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:862,1
    - Dst: ECPGset_noind_null
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:868,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:872,1
    - Dst: garbage_left
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:882,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:884,1
    - Dst: PGTYPEStimestamp_from_asc
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:901,1
    - Dst: ecpg_log
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:907,1
    - Dst: INFORMIX_MODE
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:910,1
    - Dst: ECPGset_noind_null
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:916,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:920,1
    - Dst: garbage_left
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:930,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:932,1
    - Dst: ecpg_raise
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:943,1
    - Dst: ecpg_type_name
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:945,1
    - Dst: ECPG_IS_ARRAY
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:949,1
    - Dst: array_delimiter
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:962,1
    - Dst: array_boundary
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:962,1
    - Dst: array_delimiter
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:966,1
    - Dst: array_boundary
      Src: /src/postgres/src/interfaces/ecpg/ecpglib/data.c:970,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: 973
      start: 205
    functionDepth: 5
    functionLinenumber: 205
    functionLinenumberEnd: 973
    functionName: ecpg_get_data
    functionSourceFile: /src/postgres/src/interfaces/ecpg/ecpglib/data.c
    functionUses: 3
    functionsReached:
    - PGTYPESinterval_copy
    - garbage_left
    - ECPGget_sqlca
    - ecpg_hex_enc_len
    - array_boundary
    - strtoul
    - PQgetvalue
    - strtol
    - PQfformat
    - ORACLE_MODE
    - ecpg_type_name
    - PGTYPESnumeric_copy
    - ecpg_hex_dec_len
    - PGTYPESnumeric_free
    - ECPG_IS_ARRAY
    - PGTYPESdate_from_asc
    - array_delimiter
    - strtoll
    - check_special_value
    - strtoull
    - PGTYPESinterval_from_asc
    - free
    - memcpy
    - PGTYPESnumeric_from_asc
    - PQgetlength
    - INFORMIX_MODE
    - ecpg_log
    - strtod
    - ecpg_alloc
    - PGTYPEStimestamp_from_asc
    - ECPGset_noind_null
    - ecpg_raise
    - memset
    - strncpy
    - PGTYPESnumeric_to_decimal
    - PQgetisnull
    - hex_decode
    - PGTYPESnumeric_new
    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: mm_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:12,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:14,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - name
    - type
    - brace_level
    argTypes:
    - char*
    - struct ECPGtype*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 22
    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:27,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:39,1
    - Dst: new_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:47,1
    - Dst: ECPGmake_array_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:47,1
    - Dst: ECPGmake_simple_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:47,1
    - Dst: new_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:50,1
    - Dst: ECPGmake_struct_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:50,1
    - Dst: new_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:52,1
    - Dst: ECPGmake_simple_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:52,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:89,1
    - Dst: new_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:94,1
    - Dst: ECPGmake_array_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:94,1
    - Dst: ECPGmake_simple_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:94,1
    - Dst: new_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:97,1
    - Dst: ECPGmake_struct_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:97,1
    - Dst: new_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:99,1
    - Dst: ECPGmake_simple_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:99,1
    - Dst: find_struct_member
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:104,1
    - Dst: find_struct_member
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:106,1
    - Dst: find_struct_member
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:110,1
    - Dst: find_struct_member
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:112,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:115,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 66
    argCount: 4
    argNames:
    - name
    - str
    - members
    - brace_level
    argTypes:
    - char*
    - char*
    - struct ECPGstruct_member*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 24
    functionDepth: 2
    functionLinenumber: 24
    functionLinenumberEnd: 123
    functionName: find_struct_member
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/variable.c
    functionUses: 1
    functionsReached:
    - ECPGmake_array_type
    - strpbrk
    - mmfatal
    - ECPGmake_struct_type
    - find_struct_member
    - ECPGmake_simple_type
    - new_variable
    - strcmp
    linkageType: ''
    returnType: struct variable
    signature: 'struct variable *

      find_struct_member(const char *name, char *str, struct ECPGstruct_member *members,
      int brace_level)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: find_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:133,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:138,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:141,1
    - Dst: find_struct_member
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:146,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:153,1
    - Dst: find_struct_member
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:158,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:163,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:166,1
    - Dst: find_struct_member
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:171,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 3
    argNames:
    - name
    - next
    - end
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 125
    functionDepth: 3
    functionLinenumber: 125
    functionLinenumberEnd: 174
    functionName: find_struct
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/variable.c
    functionUses: 0
    functionsReached:
    - mmfatal
    - find_struct_member
    - find_variable
    linkageType: ''
    returnType: struct variable
    signature: 'struct variable *

      find_struct(const char *name, char *next, char *end)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:183,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 188
    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:200,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:220,1
    - Dst: find_struct
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:227,1
    - Dst: find_simple
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:233,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:235,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:237,1
    - Dst: new_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:242,1
    - Dst: ECPGmake_array_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:242,1
    - Dst: ECPGmake_simple_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:242,1
    - Dst: new_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:245,1
    - Dst: ECPGmake_struct_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:245,1
    - Dst: new_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:247,1
    - Dst: ECPGmake_simple_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:247,1
    - Dst: find_struct
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:252,1
    - Dst: find_simple
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:255,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:258,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 45
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 192
    functionDepth: 4
    functionLinenumber: 192
    functionLinenumberEnd: 261
    functionName: find_variable
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/variable.c
    functionUses: 1
    functionsReached:
    - ECPGmake_array_type
    - strpbrk
    - mmfatal
    - ECPGmake_struct_type
    - find_simple
    - new_variable
    - ECPGmake_simple_type
    - find_struct
    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:282,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:283,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:284,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:285,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:286,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:287,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:288,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:289,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:290,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - brace_level
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 295
    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:329,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:345,1
    - Dst: ECPGfree_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:358,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:359,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:360,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 1
    argNames:
    - brace_level
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 365
    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:386,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:392,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 377
    functionDepth: 1
    functionLinenumber: 377
    functionLinenumberEnd: 395
    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:403,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: 409
      start: 400
    functionDepth: 1
    functionLinenumber: 400
    functionLinenumberEnd: 409
    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:416,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: 428
      start: 412
    functionDepth: 1
    functionLinenumber: 412
    functionLinenumberEnd: 428
    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:452,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - list
    - var
    argTypes:
    - struct arguments**
    - struct variable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 430
    functionDepth: 1
    functionLinenumber: 430
    functionLinenumberEnd: 454
    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:468,1
    - Dst: dump_variables
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:475,1
    - Dst: ECPGdump_a_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:478,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:484,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:486,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - list
    - mode
    argTypes:
    - struct arguments*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 460
    functionDepth: 1
    functionLinenumber: 460
    functionLinenumberEnd: 487
    functionName: dump_variables
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/variable.c
    functionUses: 1
    functionsReached:
    - dump_variables
    - mm_strdup
    - ECPGdump_a_type
    - free
    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:510,1
    - Dst: check_indicator
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:514,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:517,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - var
    argTypes:
    - struct ECPGtype*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 489
    functionDepth: 1
    functionLinenumber: 489
    functionLinenumberEnd: 520
    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:529,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:534,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - name
    - noerror
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 522
    functionDepth: 1
    functionLinenumber: 522
    functionLinenumberEnd: 537
    functionName: get_typedef
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/variable.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mmfatal
    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:545,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:547,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:548,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:553,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:555,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:555,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:556,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:558,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:565,1
    - Dst: ngettext
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:565,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:570,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:572,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:572,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:573,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:575,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:575,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:576,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:589,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:590,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:600,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:622,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:628,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:635,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:651,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/variable.c:652,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: 656
      start: 539
    functionDepth: 1
    functionLinenumber: 539
    functionLinenumberEnd: 656
    functionName: adjust_array
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/variable.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mmfatal
    - ngettext
    - 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:
    - mm_alloc
    - mm_strdup
    - strchr
    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: 17
    functionsReached:
    - PG_TEXTDOMAIN
    - add_preprocessor_define
    - last_dir_separator
    - snprintf
    - get_include_path
    - set_pglocale_pgservice
    - fprintf
    - exit
    - strlen
    - strrchr
    - lex_init
    - fopen
    - ECPGfree_struct_member
    - _
    - help
    - strcmp
    - strcpy
    - base_yyparse
    - get_pkginclude_path
    - fclose
    - mm_alloc
    - mm_strdup
    - output_line_number
    - pg_strcasecmp
    - get_progname
    - printf
    - find_my_exec
    - getopt_long
    - mmerror
    - memset
    - add_include_path
    - unlink
    - free
    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
    - strcmp
    - GetScanKeyword
    - strlen
    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
    - fputs
    - find_variable
    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:
    - strcmp
    - mmerror
    - free
    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:
    - strcmp
    - mm_strdup
    - mmerror
    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:
    - mmerror
    - whenever_action
    - drop_assignments
    - ECPGnumeric_lvalue
    - 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:
    - mmerror
    - find_variable
    - fputs
    - get_dtype
    - ECPGdump_a_type
    - mm_strdup
    - drop_assignments
    - fprintf
    - whenever_action
    - free
    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:
    - mmerror
    - whenever_action
    - drop_assignments
    - ECPGnumeric_lvalue
    - 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:
    - mmfatal
    - find_variable
    - fputs
    - get_dtype
    - ECPGdump_a_type
    - mm_strdup
    - drop_assignments
    - fprintf
    - whenever_action
    - descriptor_item_name
    - free
    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:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - name
    - input
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 330
    functionDepth: 1
    functionLinenumber: 330
    functionLinenumberEnd: 342
    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:352,1
    - Dst: loc_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:354,1
    - Dst: loc_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/descriptor.c:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 344
    functionDepth: 1
    functionLinenumber: 344
    functionLinenumberEnd: 366
    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:
    - mmerror
    - check_uescapechar
    - base_yylex_location
    - make3_str
    - loc_strdup
    - strlen
    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:263,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 273
    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:284,1
    - Dst: ecpg_isspace
      Src: /src/postgres/src/interfaces/ecpg/preproc/parser.c:288,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 4
    argCount: 1
    argNames:
    - escape
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 292
    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: 307
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 307
    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:
    - fputc
    - print_action
    - output_line_number
    - 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
    - whenever_action
    - fprintf
    - dump_variables
    - output_escaped_str
    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:
    - whenever_action
    - output_escaped_str
    - 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:
    - fputs
    - whenever_action
    - fprintf
    - strcmp
    - output_escaped_str
    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
    - fputs
    - strlen
    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_end
    - vmmerror
    - va_start
    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:
    - vmmerror
    - fclose
    - va_end
    - fprintf
    - exit
    - _
    - unlink
    - strcmp
    - va_start
    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:
    - malloc
    - mmfatal
    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:
    - strdup
    - mmfatal
    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: 1
    functionsReached:
    - mm_alloc
    - Max
    - MAXALIGN
    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:
    - loc_alloc
    - strlen
    - strcpy
    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
    - loc_alloc
    - strlen
    - strcpy
    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_end
    - va_arg
    - va_start
    - cat2_str
    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
    - loc_alloc
    - strlen
    - strcpy
    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
    - loc_alloc
    - strlen
    - strcpy
    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_array_type
    - ECPGmake_struct_type
    - ECPGmake_simple_type
    - ECPGmake_struct_member
    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:
    - ECPGstruct_member_dup
    - mm_strdup
    - ECPGmake_simple_type
    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:232,1
    - Dst: find_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:233,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:234,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:239,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:240,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:242,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:246,1
    - Dst: find_variable
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:247,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:248,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:253,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:254,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:256,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:264,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:268,1
    - Dst: ECPGdump_a_struct
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:272,1
    - Dst: IS_SIMPLE_TYPE
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:280,1
    - Dst: base_yyerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:281,1
    - Dst: ECPGdump_a_simple
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:283,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:292,1
    - Dst: ECPGdump_a_simple
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:294,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:295,1
    - Dst: ECPGdump_a_simple
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:299,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:307,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:310,1
    - Dst: ECPGdump_a_struct
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:312,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:313,1
    - Dst: base_yyerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:317,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:325,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: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:330,1
    - Dst: ECPGdump_a_simple
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:332,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:332,1
    - Dst: ECPGdump_a_simple
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:334,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:334,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:336,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: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:347,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:348,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:351,1
    - Dst: ECPGdump_a_simple
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:353,1
    - Dst: ECPGdump_a_simple
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:355,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:357,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:358,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:367,1
    - Dst: mm_strdup
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:368,1
    - Dst: mmfatal
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:371,1
    - Dst: ECPGdump_a_simple
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:373,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:373,1
    - Dst: ECPGdump_a_simple
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:375,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:375,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:377,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:378,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: 382
      start: 217
    functionDepth: 5
    functionLinenumber: 217
    functionLinenumberEnd: 382
    functionName: ECPGdump_a_type
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/type.c
    functionUses: 3
    functionsReached:
    - base_yyerror
    - mmerror
    - find_variable
    - mmfatal
    - mm_strdup
    - ECPGdump_a_simple
    - IS_SIMPLE_TYPE
    - strcmp
    - ECPGdump_a_struct
    - free
    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:396,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:399,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:401,1
    - Dst: mm_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:404,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:404,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:404,1
    - Dst: mm_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:405,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:405,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:405,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:405,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:422,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:423,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:423,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:425,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:427,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:439,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:441,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:454,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:455,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:456,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:456,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:457,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:457,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:460,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:462,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:472,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:474,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:474,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:482,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:483,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:490,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:491,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:498,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:499,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:506,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:507,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:514,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:515,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:523,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:524,1
    - Dst: strcmp
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:524,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:526,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:528,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:530,1
    - Dst: ecpg_type_name
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:530,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:538,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:539,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:545,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:546,1
    - Dst: get_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:546,1
    - Dst: fprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:548,1
    - Dst: get_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:548,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:550,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:551,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: 553
      start: 387
    functionDepth: 3
    functionLinenumber: 387
    functionLinenumberEnd: 553
    functionName: ECPGdump_a_simple
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/type.c
    functionUses: 1
    functionsReached:
    - atoi
    - sprintf
    - mm_alloc
    - get_type
    - fprintf
    - free
    - strcmp
    - ecpg_type_name
    - strlen
    - strcpy
    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:566,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:566,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:566,1
    - Dst: mm_alloc
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:567,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:567,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:567,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:569,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:570,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:572,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:580,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:581,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:583,1
    - Dst: ECPGdump_a_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:591,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:602,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:610,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:613,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:614,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: 615
      start: 557
    functionDepth: 6
    functionLinenumber: 557
    functionLinenumberEnd: 615
    functionName: ECPGdump_a_struct
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/type.c
    functionUses: 1
    functionsReached:
    - mmerror
    - atoi
    - ECPGdump_a_type
    - mm_alloc
    - free
    - sprintf
    - strlen
    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:625,1
    - Dst: ECPGfree_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:626,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:627,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - rm
    argTypes:
    - struct ECPGstruct_member*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 617
    functionDepth: 1
    functionLinenumber: 617
    functionLinenumberEnd: 629
    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:634,1
    - Dst: base_yyerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:642,1
    - Dst: ECPGfree_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:647,1
    - Dst: IS_SIMPLE_TYPE
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:650,1
    - Dst: base_yyerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:651,1
    - Dst: ECPGfree_type
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:653,1
    - Dst: ECPGfree_struct_member
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:658,1
    - Dst: mmerror
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:661,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:665,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:666,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:667,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/preproc/type.c:668,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 1
    argNames:
    - type
    argTypes:
    - struct ECPGtype*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 631
    functionDepth: 2
    functionLinenumber: 631
    functionLinenumberEnd: 669
    functionName: ECPGfree_type
    functionSourceFile: /src/postgres/src/interfaces/ecpg/preproc/type.c
    functionUses: 3
    functionsReached:
    - base_yyerror
    - mmerror
    - ECPGfree_type
    - IS_SIMPLE_TYPE
    - ECPGfree_struct_member
    - free
    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:723,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 52
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum ECPGdtype
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 671
    functionDepth: 2
    functionLinenumber: 671
    functionLinenumberEnd: 727
    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: 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: 15
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 15
    functionName: Min
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/numeric.c
    functionUses: 37
    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_alloc
    - digitbuf_free
    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:
    - free
    - pgtypes_alloc
    - alloc_var
    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:
    - memset
    - pgtypes_alloc
    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:
    - isdigit
    - strtol
    - alloc_var
    - pg_strncasecmp
    - isspace
    - 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:
    - Max
    - Min
    - pgtypes_alloc
    - 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:
    - set_var_from_str
    - pgtypes_alloc
    - 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:
    - get_str_from_var
    - PGTYPESnumeric_copy
    - PGTYPESnumeric_new
    - PGTYPESnumeric_free
    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_alloc
    - Max
    - digitbuf_free
    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_alloc
    - Max
    - digitbuf_free
    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:
    - sub_abs
    - add_abs
    - Max
    - cmp_abs
    - zero_var
    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:
    - sub_abs
    - add_abs
    - Max
    - cmp_abs
    - zero_var
    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_alloc
    - digitbuf_free
    - memset
    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
    - sub_abs
    - init_var
    - digitbuf_free
    - cmp_abs
    - digitbuf_alloc
    - zero_var
    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:
    - sprintf
    - PGTYPESnumeric_from_asc
    - PGTYPESnumeric_copy
    - PGTYPESnumeric_free
    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_copy
    - PGTYPESnumeric_free
    - get_str_from_var
    - strtod
    - free
    - PGTYPESnumeric_new
    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
    - PGTYPESnumeric_to_asc
    - free
    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:
    - pgtypes_alloc
    - snprintf
    - memcpy
    - strlen
    - free
    - strcpy
    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: 24
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 24
    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: 31
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 31
    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:47,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:50,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:50,1
    - Dst: time2t
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:51,1
    - Dst: unlikely
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:52,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:52,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:53,1
    - Dst: dt2local
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:56,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:59,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: 63
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 63
    functionName: tm2timestamp
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c
    functionUses: 0
    functionsReached:
    - IS_VALID_JULIAN
    - IS_VALID_TIMESTAMP
    - dt2local
    - unlikely
    - pg_mul_s64_overflow
    - date2j
    - pg_add_s64_overflow
    - time2t
    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:73,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 78
    functionName: SetEpochTimestamp
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c
    functionUses: 0
    functionsReached:
    - GetEpochTime
    - tm2timestamp
    linkageType: ''
    returnType: timestamp
    signature: timestamp SetEpochTimestamp(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:102,1
    - Dst: TMODULO
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:105,1
    - Dst: INT64CONST
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:107,1
    - Dst: j2date
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:120,1
    - Dst: dt2time
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:121,1
    - Dst: IS_VALID_UTIME
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:129,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:135,1
    - Dst: INT64CONST
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:135,1
    - Dst: localtime_r
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:137,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c:182,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: 185
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 185
    functionName: timestamp2tm
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/timestamp.c
    functionUses: 0
    functionsReached:
    - dt2time
    - IS_VALID_UTIME
    - TMODULO
    - date2j
    - j2date
    - localtime_r
    - INT64CONST
    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_NOBEGIN
    - TIMESTAMP_IS_NOEND
    - abort
    - strcpy
    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:
    - TIMESTAMP_NOEND
    - TIMESTAMP_NOBEGIN
    - tm2timestamp
    - ParseDateTime
    - SetEpochTimestamp
    - DecodeDateTime
    - strlen
    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
    - timestamp2tm
    - TIMESTAMP_NOT_FINITE
    - EncodeSpecialTimestamp
    - EncodeDateTime
    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:
    - GetCurrentDateTime
    - tm2timestamp
    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:
    - dttofmtasc_replace
    - pgtypes_fmt_replace
    - strftime
    - SetEpochTimestamp
    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_from_timestamp
    - timestamp2tm
    - dttofmtasc_replace
    - PGTYPESdate_dayofweek
    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:
    - pgtypes_strdup
    - PGTYPEStimestamp_defmt_scan
    - 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
    - TIMESTAMP_NOT_FINITE
    - isleap
    - tm2timestamp
    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:543,1
    - Dst: datebsearch
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:546,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - field
    - lowtoken
    - val
    argTypes:
    - int
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 535
    functionDepth: 0
    functionLinenumber: 535
    functionLinenumberEnd: 560
    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: 603
      start: 580
    functionDepth: 0
    functionLinenumber: 580
    functionLinenumberEnd: 603
    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: 627
      start: 605
    functionDepth: 0
    functionLinenumber: 605
    functionLinenumberEnd: 627
    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:642,1
    - Dst: datebsearch
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:648,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - field
    - lowtoken
    - val
    argTypes:
    - int
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 634
    functionDepth: 0
    functionLinenumber: 634
    functionLinenumberEnd: 663
    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:671,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:678,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:688,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:690,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:692,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:694,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:699,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:701,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:703,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:710,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:712,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:714,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:716,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: 719
      start: 668
    functionDepth: 1
    functionLinenumber: 668
    functionLinenumberEnd: 719
    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:724,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 721
    functionDepth: 0
    functionLinenumber: 721
    functionLinenumberEnd: 732
    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:770,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:780,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:780,1
    - Dst: TrimTrailingZeros
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:781,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: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:787,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:787,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:792,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:794,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:794,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:796,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:796,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:804,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:806,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:818,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:818,1
    - Dst: TrimTrailingZeros
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:819,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: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:825,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:825,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:837,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:837,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:841,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:843,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:843,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:845,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:845,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:853,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:855,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:865,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:865,1
    - Dst: TrimTrailingZeros
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:866,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: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:872,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:872,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:877,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:877,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:881,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:883,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:883,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:885,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:885,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:894,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:895,1
    - Dst: memcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:897,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:898,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:901,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:903,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:913,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:913,1
    - Dst: TrimTrailingZeros
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:914,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: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:919,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:919,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:922,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:922,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:927,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:927,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:937,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:939,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:939,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:941,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:941,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: 946
      start: 752
    functionDepth: 1
    functionLinenumber: 752
    functionLinenumberEnd: 946
    functionName: EncodeDateTime
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 1
    functionsReached:
    - TrimTrailingZeros
    - date2j
    - abs
    - memcpy
    - sprintf
    - strlen
    - strcpy
    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:955,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 948
    functionDepth: 1
    functionLinenumber: 948
    functionLinenumberEnd: 970
    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:981,1
    - Dst: gmtime_r
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:983,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1020,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1021,1
    - Dst: strlcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1038,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1039,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: 1057
      start: 972
    functionDepth: 1
    functionLinenumber: 972
    functionLinenumberEnd: 1057
    functionName: abstime2tm
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 0
    functionsReached:
    - localtime_r
    - gmtime_r
    - strlcpy
    - strlen
    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:1064,1
    - Dst: time
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1064,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1065
      start: 1059
    functionDepth: 2
    functionLinenumber: 1059
    functionLinenumberEnd: 1065
    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: 1079
      start: 1067
    functionDepth: 0
    functionLinenumber: 1067
    functionLinenumberEnd: 1079
    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:1098,1
    - Dst: strtoint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1116,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1118,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1128,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1130,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1132,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1140,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1142,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1144,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1153,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1156,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1170,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1172,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1174,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1183,1
    - Dst: atoi
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1185,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: 1192
      start: 1088
    functionDepth: 1
    functionLinenumber: 1088
    functionLinenumberEnd: 1192
    functionName: DecodeNumberField
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 0
    functionsReached:
    - atoi
    - strtoint
    - strlen
    - 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:1207,1
    - Dst: DecodeNumberField
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1218,1
    - Dst: strtod
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1221,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1229,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1231,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1231,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1231,1
    - Dst: j2date
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1233,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1233,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1247,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1250,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1250,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1254,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1261,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1261,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1263,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:1268,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1268,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1271,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:1276,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1279,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1281,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1289,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1291,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: 1301
      start: 1198
    functionDepth: 1
    functionLinenumber: 1198
    functionLinenumberEnd: 1301
    functionName: DecodeNumber
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 0
    functionsReached:
    - DecodeNumberField
    - j2date
    - date2j
    - strtod
    - DTK_M
    - strtoint
    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:1326,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1330,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1332,1
    - Dst: isalpha
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1335,1
    - Dst: isalpha
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1337,1
    - Dst: isalpha
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1358,1
    - Dst: DecodeSpecial
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1360,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1364,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1395,1
    - Dst: DecodeNumber
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1398,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1408,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1408,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: 1428
      start: 1307
    functionDepth: 0
    functionLinenumber: 1307
    functionLinenumberEnd: 1428
    functionName: DecodeDate
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 0
    functionsReached:
    - DecodeSpecial
    - isalpha
    - isdigit
    - DecodeNumber
    - isalnum
    - 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:1443,1
    - Dst: strtoint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1447,1
    - Dst: strtoint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1458,1
    - Dst: strtoint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1479,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: 1493
      start: 1436
    functionDepth: 1
    functionLinenumber: 1436
    functionLinenumberEnd: 1493
    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:1511,1
    - Dst: strtoint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1515,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1517,1
    - Dst: strtoint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1519,1
    - Dst: strtoint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1524,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - str
    - tzp
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1537
      start: 1501
    functionDepth: 1
    functionLinenumber: 1501
    functionLinenumberEnd: 1537
    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:1556,1
    - Dst: DecodeTimezone
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1559,1
    - Dst: DecodeSpecial
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1564,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - str
    - tzp
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1579
      start: 1546
    functionDepth: 0
    functionLinenumber: 1546
    functionLinenumberEnd: 1579
    functionName: DecodePosixTimezone
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 0
    functionsReached:
    - DecodeSpecial
    - DecodeTimezone
    - 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:1616,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1619,1
    - 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:1639,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1642,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1653,1
    - Dst: isalnum
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1660,1
    - Dst: pg_tolower
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1661,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1676,1
    - Dst: isalpha
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1685,1
    - Dst: pg_tolower
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1688,1
    - Dst: isalpha
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1689,1
    - Dst: pg_tolower
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1690,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1702,1
    - Dst: isspace
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1707,1
    - Dst: isspace
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1717,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1720,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1724,1
    - Dst: isalpha
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1729,1
    - Dst: pg_tolower
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1732,1
    - Dst: isalpha
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1733,1
    - Dst: pg_tolower
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1734,1
    - Dst: ispunct
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1741,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: 1758
      start: 1599
    functionDepth: 2
    functionLinenumber: 1599
    functionLinenumberEnd: 1758
    functionName: ParseDateTime
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 1
    functionsReached:
    - isalpha
    - ispunct
    - isdigit
    - isalnum
    - pg_tolower
    - isspace
    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:1830,1
    - Dst: j2date
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1834,1
    - Dst: DecodeTimezone
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1836,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1839,1
    - Dst: isdigit
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1856,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1876,1
    - Dst: DecodeTimezone
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1880,1
    - Dst: DecodeNumberField
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1888,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1888,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1896,1
    - Dst: DecodePosixTimezone
      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:1904,1
    - Dst: DecodeDate
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1907,1
    - Dst: DecodeTime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1912,1
    - Dst: DecodeTimezone
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1932,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1939,1
    - Dst: isalpha
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1941,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1949,1
    - Dst: strtoint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1965,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1989,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1998,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:1999,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2002,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2007,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2013,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2018,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2023,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2028,1
    - Dst: strtod
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2033,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2041,1
    - Dst: DecodeTimezone
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2042,1
    - Dst: j2date
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2051,1
    - Dst: strtod
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2057,1
    - Dst: dt2time
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2062,1
    - Dst: DecodeNumberField
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2068,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2068,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2089,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2090,1
    - Dst: DecodeDate
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2095,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2099,1
    - Dst: DecodeNumberField
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2106,1
    - Dst: DecodeNumberField
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2112,1
    - Dst: DecodeNumber
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2117,1
    - Dst: DecodeSpecial
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2125,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2129,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2136,1
    - Dst: GetCurrentDateTime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2138,1
    - Dst: GetCurrentDateTime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2144,1
    - Dst: j2date
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2145,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2145,1
    - Dst: GetCurrentDateTime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2155,1
    - Dst: GetCurrentDateTime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2164,1
    - Dst: j2date
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2165,1
    - Dst: date2j
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2165,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2173,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2194,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2195,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2198,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:2223,1
    - Dst: isleap
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2333,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2341,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2341,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: 2346
      start: 1781
    functionDepth: 1
    functionLinenumber: 1781
    functionLinenumberEnd: 2346
    functionName: DecodeDateTime
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 1
    functionsReached:
    - DecodeSpecial
    - DecodeTimezone
    - date2j
    - DTK_M
    - strlen
    - DecodeTime
    - GetCurrentDateTime
    - dt2time
    - isdigit
    - DecodeNumber
    - DecodeNumberField
    - j2date
    - strtod
    - isalpha
    - DecodePosixTimezone
    - isleap
    - strtoint
    - DecodeDate
    - strchr
    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:2395,1
    - Dst: strstr
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2425,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2434,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2453,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 2
    argNames:
    - str
    - fmt
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2456
      start: 2353
    functionDepth: 0
    functionLinenumber: 2353
    functionLinenumberEnd: 2456
    functionName: find_end_token
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 0
    functionsReached:
    - strstr
    - strlen
    - 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:2473,1
    - Dst: strtol
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2493,1
    - Dst: strtol
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2501,1
    - Dst: pgtypes_strdup
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2506,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: 2517
      start: 2458
    functionDepth: 1
    functionLinenumber: 2458
    functionLinenumberEnd: 2517
    functionName: pgtypes_defmt_scan
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 0
    functionsReached:
    - strtol
    - find_end_token
    - pgtypes_strdup
    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:2576,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2577,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2581,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2594,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2594,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2598,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2611,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2611,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2615,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2629,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2629,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2633,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2646,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2653,1
    - Dst: pgtypes_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2663,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2663,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2663,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2666,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2667,1
    - Dst: PGTYPEStimestamp_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2668,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2669,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2674,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2681,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2696,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2705,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2711,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2722,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2735,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2741,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2747,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2753,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2763,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2769,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2775,1
    - Dst: strncmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2781,1
    - Dst: pgtypes_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2790,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2790,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2790,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2793,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2794,1
    - Dst: PGTYPEStimestamp_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2795,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2796,1
    - Dst: pgtypes_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2800,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2800,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2800,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2803,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2804,1
    - Dst: PGTYPEStimestamp_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2805,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2806,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2811,1
    - Dst: gmtime_r
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2818,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2836,1
    - Dst: pgtypes_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2848,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2848,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2848,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2851,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2852,1
    - Dst: PGTYPEStimestamp_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2853,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2854,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2859,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2866,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:2898,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2904,1
    - Dst: DecodeTimezone
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2907,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2908,1
    - Dst: pgtypes_defmt_scan
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2914,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2925,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2933,1
    - Dst: isleap
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2995,1
    - Dst: isleap
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:2997,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c:3008,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: 3011
      start: 2520
    functionDepth: 2
    functionLinenumber: 2520
    functionLinenumberEnd: 3011
    functionName: PGTYPEStimestamp_defmt_scan
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/dt_common.c
    functionUses: 2
    functionsReached:
    - pgtypes_alloc
    - strcat
    - PGTYPEStimestamp_defmt_scan
    - gmtime_r
    - tm2timestamp
    - DecodeTimezone
    - isleap
    - free
    - pgtypes_defmt_scan
    - pg_strcasecmp
    - strncmp
    - strlen
    - 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
    - DecodeDateTime
    - date2j
    - GetEpochTime
    - strlen
    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:
    - EncodeDateOnly
    - pgtypes_strdup
    - j2date
    - date2j
    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:
    - j2date
    - date2j
    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:
    - date2j
    - GetCurrentDateTime
    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:
    - pgtypes_alloc
    - strstr
    - snprintf
    - j2date
    - date2j
    - free
    - memcpy
    - strlen
    - PGTYPESdate_dayofweek
    - strcpy
    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:
    - pgtypes_alloc
    - pgtypes_strdup
    - strstr
    - isdigit
    - strncpy
    - strtol
    - date2j
    - pg_tolower
    - free
    - strlen
    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:33,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: 34
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 34
    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:51,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: 52
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 52
    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:60,1
    - Dst: strtod
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:63,1
    - Dst: floor
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:72,1
    - Dst: floor
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:74,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 4
    argNames:
    - str
    - endptr
    - ipart
    - fpart
    argTypes:
    - char*
    - char**
    - int*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 77
    functionName: ParseISO8601Number
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 0
    functionsReached:
    - isdigit
    - floor
    - strtod
    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:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - fieldstart
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 87
    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: 103
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 103
    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: 146
    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:
    - ParseISO8601Number
    - rint
    - ClearPgTm
    - AdjustFractSeconds
    - ISO8601IntegerWidth
    - AdjustFractDays
    - strlen
    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:343,1
    - Dst: DecodeTime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:351,1
    - Dst: Assert
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:365,1
    - Dst: strchr
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:372,1
    - Dst: DecodeTime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:373,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:391,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:403,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:406,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:407,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:410,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:413,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: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: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:416,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:419,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:420,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:423,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:424,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: strtoint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:435,1
    - Dst: strtoint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:444,1
    - Dst: strtod
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:458,1
    - Dst: rint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:475,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:476,1
    - Dst: rint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:480,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:481,1
    - Dst: rint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:486,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:493,1
    - Dst: AdjustFractSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:500,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:501,1
    - Dst: AdjustFractSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:506,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:507,1
    - Dst: AdjustFractSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:513,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:514,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:514,1
    - Dst: AdjustFractDays
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:519,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:520,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:520,1
    - Dst: AdjustFractDays
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:525,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:526,1
    - Dst: rint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:531,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:532,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:532,1
    - Dst: rint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:537,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:538,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:538,1
    - Dst: rint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:543,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:544,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:544,1
    - Dst: rint
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:549,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:550,1
    - Dst: DTK_M
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:550,1
    - Dst: DecodeUnits
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:560,1
    CyclomaticComplexity: 70
    EdgeCount: 70
    ICount: 223
    argCount: 6
    argNames:
    - field
    - ftype
    - nf
    - dtype
    - tm
    - fsec
    argTypes:
    - char**
    - int*
    - int
    - int*
    - struct /* pg_ */ tm*
    - fsec_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 325
    functionDepth: 1
    functionLinenumber: 325
    functionLinenumberEnd: 675
    functionName: DecodeInterval
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 0
    functionsReached:
    - Assert
    - INTERVAL_MASK
    - rint
    - DecodeTime
    - ClearPgTm
    - AdjustFractDays
    - AdjustFractSeconds
    - strtod
    - strtoint
    - DecodeUnits
    - DTK_M
    - strchr
    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:689,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:693,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:695,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: 696
      start: 679
    functionDepth: 0
    functionLinenumber: 679
    functionLinenumberEnd: 696
    functionName: AddVerboseIntPart
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 0
    functionsReached:
    - abs
    - strlen
    - 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:705,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:718,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: 719
      start: 699
    functionDepth: 0
    functionLinenumber: 699
    functionLinenumberEnd: 719
    functionName: AddPostgresIntPart
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 0
    functionsReached:
    - sprintf
    - strlen
    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:727,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:728,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - cp
    - value
    - units
    argTypes:
    - char*
    - int
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 722
    functionDepth: 0
    functionLinenumber: 722
    functionLinenumberEnd: 729
    functionName: AddISO8601IntPart
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 0
    functionsReached:
    - sprintf
    - strlen
    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:738,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:738,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:740,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:740,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:745,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:745,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:745,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:747,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:747,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:747,1
    - Dst: TrimTrailingZeros
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:748,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: 750
      start: 732
    functionDepth: 1
    functionLinenumber: 732
    functionLinenumberEnd: 750
    functionName: AppendSeconds
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 0
    functionsReached:
    - sprintf
    - TrimTrailingZeros
    - abs
    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:813,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:827,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:828,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:828,1
    - Dst: abs
      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: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:831,1
    - Dst: AppendSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:832,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:836,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:840,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:841,1
    - Dst: AppendSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:842,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:846,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:847,1
    - Dst: AppendSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:848,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:859,1
    - Dst: AddISO8601IntPart
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:863,1
    - Dst: AddISO8601IntPart
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:864,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:868,1
    - Dst: AddISO8601IntPart
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:869,1
    - Dst: AppendSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:874,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:875,1
    - Dst: AddPostgresIntPart
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:883,1
    - Dst: AddPostgresIntPart
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:884,1
    - Dst: AddPostgresIntPart
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:885,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:890,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:893,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:893,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:894,1
    - Dst: AppendSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:895,1
    - Dst: strcpy
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:902,1
    - Dst: AddVerboseIntPart
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:904,1
    - Dst: AddVerboseIntPart
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:905,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: AppendSeconds
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:921,1
    - Dst: strlen
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:922,1
    - Dst: sprintf
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:924,1
    - Dst: abs
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:925,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:930,1
    - Dst: strcat
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:932,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: 935
      start: 758
    functionDepth: 0
    functionLinenumber: 758
    functionLinenumberEnd: 935
    functionName: EncodeInterval
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 0
    functionsReached:
    - strcat
    - AddISO8601IntPart
    - AddPostgresIntPart
    - AddVerboseIntPart
    - AppendSeconds
    - abs
    - sprintf
    - strlen
    - 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: 969
      start: 941
    functionDepth: 0
    functionLinenumber: 941
    functionLinenumberEnd: 969
    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:978,1
    - Dst: INT64CONST
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:979,1
    - Dst: INT64CONST
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:980,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - tm
    - fsec
    - span
    argTypes:
    - struct tm*
    - fsec_t
    - interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 971
    functionDepth: 1
    functionLinenumber: 971
    functionLinenumberEnd: 984
    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:991,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 994
      start: 986
    functionDepth: 2
    functionLinenumber: 986
    functionLinenumberEnd: 994
    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:999,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - intvl
    argTypes:
    - interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 996
    functionDepth: 1
    functionLinenumber: 996
    functionLinenumberEnd: 1000
    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:1025,1
    - Dst: ParseDateTime
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:1031,1
    - Dst: DecodeInterval
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:1032,1
    - Dst: DecodeISO8601Interval
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:1033,1
    - Dst: pgtypes_alloc
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:1039,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:1046,1
    - Dst: tm2interval
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:1050,1
    - Dst: free
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:1053,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 2
    argNames:
    - str
    - endptr
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1002
    functionDepth: 2
    functionLinenumber: 1002
    functionLinenumberEnd: 1059
    functionName: PGTYPESinterval_from_asc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 5
    functionsReached:
    - tm2interval
    - pgtypes_alloc
    - DecodeISO8601Interval
    - ParseDateTime
    - free
    - strlen
    - DecodeInterval
    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:1070,1
    - Dst: EncodeInterval
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:1076,1
    - Dst: pgtypes_strdup
      Src: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c:1078,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - span
    argTypes:
    - interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1079
      start: 1061
    functionDepth: 1
    functionLinenumber: 1061
    functionLinenumberEnd: 1079
    functionName: PGTYPESinterval_to_asc
    functionSourceFile: /src/postgres/src/interfaces/ecpg/pgtypeslib/interval.c
    functionUses: 5
    functionsReached:
    - EncodeInterval
    - pgtypes_strdup
    - interval2tm
    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: 1088
      start: 1081
    functionDepth: 0
    functionLinenumber: 1081
    functionLinenumberEnd: 1088
    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: 222
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 222
    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: 233
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 233
    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: 268
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 268
    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: 285
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 285
    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: 290
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 290
    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: 304
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 304
    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: 309
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 309
    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: 310
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 310
    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: 311
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 311
    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: 312
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 312
    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: 313
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 313
    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: 43
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 43
    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:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - state
    argTypes:
    - ArchiveModuleState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 54
    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:66,1
    - Dst: make_native_path
      Src: /src/postgres/src/backend/archive/shell_archive.c:67,1
    - Dst: replace_percent_placeholders
      Src: /src/postgres/src/backend/archive/shell_archive.c:70,1
    - Dst: ereport
      Src: /src/postgres/src/backend/archive/shell_archive.c:74,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/archive/shell_archive.c:75,1
    - Dst: fflush
      Src: /src/postgres/src/backend/archive/shell_archive.c:78,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/archive/shell_archive.c:79,1
    - Dst: system
      Src: /src/postgres/src/backend/archive/shell_archive.c:80,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/archive/shell_archive.c:81,1
    - Dst: wait_result_is_any_signal
      Src: /src/postgres/src/backend/archive/shell_archive.c:93,1
    - Dst: WIFEXITED
      Src: /src/postgres/src/backend/archive/shell_archive.c:95,1
    - Dst: ereport
      Src: /src/postgres/src/backend/archive/shell_archive.c:97,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/archive/shell_archive.c:98,1
    - Dst: WEXITSTATUS
      Src: /src/postgres/src/backend/archive/shell_archive.c:99,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/archive/shell_archive.c:100,1
    - Dst: WIFSIGNALED
      Src: /src/postgres/src/backend/archive/shell_archive.c:103,1
    - Dst: ereport
      Src: /src/postgres/src/backend/archive/shell_archive.c:106,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/archive/shell_archive.c:107,1
    - Dst: WTERMSIG
      Src: /src/postgres/src/backend/archive/shell_archive.c:108,1
    - Dst: errhint
      Src: /src/postgres/src/backend/archive/shell_archive.c:109,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/archive/shell_archive.c:110,1
    - Dst: ereport
      Src: /src/postgres/src/backend/archive/shell_archive.c:113,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/archive/shell_archive.c:114,1
    - Dst: WTERMSIG
      Src: /src/postgres/src/backend/archive/shell_archive.c:115,1
    - Dst: pg_strsignal
      Src: /src/postgres/src/backend/archive/shell_archive.c:115,1
    - Dst: WTERMSIG
      Src: /src/postgres/src/backend/archive/shell_archive.c:115,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/archive/shell_archive.c:116,1
    - Dst: ereport
      Src: /src/postgres/src/backend/archive/shell_archive.c:122,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/archive/shell_archive.c:123,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/archive/shell_archive.c:125,1
    - Dst: pfree
      Src: /src/postgres/src/backend/archive/shell_archive.c:128,1
    - Dst: pfree
      Src: /src/postgres/src/backend/archive/shell_archive.c:132,1
    - Dst: elog
      Src: /src/postgres/src/backend/archive/shell_archive.c:134,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 3
    argNames:
    - state
    - file
    - path
    argTypes:
    - ArchiveModuleState*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 56
    functionDepth: 4
    functionLinenumber: 56
    functionLinenumberEnd: 136
    functionName: shell_archive_file
    functionSourceFile: /src/postgres/src/backend/archive/shell_archive.c
    functionUses: 0
    functionsReached:
    - WEXITSTATUS
    - pstrdup
    - errhint
    - pgstat_report_wait_end
    - pgstat_report_wait_start
    - errdetail
    - make_native_path
    - pfree
    - replace_percent_placeholders
    - WIFSIGNALED
    - system
    - errmsg
    - fflush
    - WIFEXITED
    - WTERMSIG
    - elog
    - pg_strsignal
    - wait_result_is_any_signal
    - errmsg_internal
    - ereport
    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:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - ArchiveModuleState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 142
    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
      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:
    - palloc
    - elog
    - lappend
    - GETSTRUCT
    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:
    - ReleaseSysCache
    - HeapTupleIsValid
    - va_arg
    - va_end
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - IsBinaryCoercible
    - va_start
    - ObjectIdGetDatum
    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:
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - 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:
    - ReleaseCatCacheList
    - SearchSysCacheList1
    - ObjectIdGetDatum
    - 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:
    - opclass_for_family_datatype
    - OidIsValid
    linkageType: ''
    returnType: bool
    signature: bool opfamily_can_sort_type(Oid opfamilyoid, Oid datatypeoid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/access/index/genam.c:84,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/index/genam.c:97,1
    - Dst: palloc
      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:
    - palloc
    - TransactionStartedDuringRecovery
    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:
    - IndexRelationGetNumberOfKeyAttributes
    - Assert
    - pg_get_indexdef_columns
    - RelationGetRelid
    - appendStringInfo
    - getTypeOutputInfo
    - appendStringInfoChar
    - appendStringInfoString
    - pg_class_aclcheck
    - pg_attribute_aclcheck
    - OidOutputFunctionCall
    - initStringInfo
    - check_enable_rls
    - GetUserId
    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
      Src: /src/postgres/src/backend/access/index/genam.c:313,1
    - Dst: palloc
      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:
    - pfree
    - Assert
    - PageGetItemId
    - ItemPointerCopy
    - BufferGetBlockNumber
    - table_index_delete_tuples
    - BufferGetPage
    - palloc
    - PageGetItem
    - ItemIdIsDead
    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
      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: palloc_array
      Src: /src/postgres/src/backend/access/index/genam.c:428,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/index/genam.c:435,1
    - Dst: IndexRelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/access/index/genam.c:437,1
    - Dst: IndexRelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/access/index/genam.c:445,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/genam.c:446,1
    - Dst: index_beginscan
      Src: /src/postgres/src/backend/access/index/genam.c:449,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/access/index/genam.c:451,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/index/genam.c:454,1
    - Dst: table_beginscan_strat
      Src: /src/postgres/src/backend/access/index/genam.c:465,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/index/genam.c:476,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: 480
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 480
    functionName: systable_beginscan
    functionSourceFile: /src/postgres/src/backend/access/index/genam.c
    functionUses: 0
    functionsReached:
    - pfree
    - table_slot_create
    - RelationGetRelid
    - RegisterSnapshot
    - TransactionIdIsValid
    - table_beginscan_strat
    - ReindexIsProcessingIndex
    - GetCatalogSnapshot
    - IndexRelationGetNumberOfAttributes
    - elog
    - index_rescan
    - memcpy
    - palloc
    - palloc_array
    - index_beginscan
    - index_open
    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:493,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/index/genam.c:494,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/index/genam.c:495,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/index/genam.c:496,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/index/genam.c:497,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/index/genam.c:498,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 490
    functionDepth: 1
    functionLinenumber: 490
    functionLinenumberEnd: 499
    functionName: HandleConcurrentAbort
    functionSourceFile: /src/postgres/src/backend/access/index/genam.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsInProgress
    - errmsg
    - TransactionIdIsValid
    - TransactionIdDidCommit
    - ereport
    - errcode
    linkageType: ''
    returnType: void
    signature: void HandleConcurrentAbort()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: index_getnext_slot
      Src: /src/postgres/src/backend/access/index/genam.c:520,1
    - Dst: ExecFetchSlotHeapTuple
      Src: /src/postgres/src/backend/access/index/genam.c:524,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/genam.c:525,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/genam.c:536,1
    - Dst: table_scan_getnextslot
      Src: /src/postgres/src/backend/access/index/genam.c:541,1
    - Dst: ExecFetchSlotHeapTuple
      Src: /src/postgres/src/backend/access/index/genam.c:545,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/genam.c:546,1
    - Dst: HandleConcurrentAbort
      Src: /src/postgres/src/backend/access/index/genam.c:554,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - sysscan
    argTypes:
    - SysScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 513
    functionDepth: 2
    functionLinenumber: 513
    functionLinenumberEnd: 557
    functionName: systable_getnext
    functionSourceFile: /src/postgres/src/backend/access/index/genam.c
    functionUses: 0
    functionsReached:
    - Assert
    - HandleConcurrentAbort
    - table_scan_getnextslot
    - index_getnext_slot
    - elog
    - 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:578,1
    - Dst: ExecFetchSlotHeapTuple
      Src: /src/postgres/src/backend/access/index/genam.c:578,1
    - Dst: GetCatalogSnapshot
      Src: /src/postgres/src/backend/access/index/genam.c:580,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/index/genam.c:580,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/access/index/genam.c:581,1
    - Dst: table_tuple_satisfies_snapshot
      Src: /src/postgres/src/backend/access/index/genam.c:583,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/access/index/genam.c:586,1
    - Dst: HandleConcurrentAbort
      Src: /src/postgres/src/backend/access/index/genam.c:592,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - sysscan
    - tup
    argTypes:
    - SysScanDesc
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 572
    functionDepth: 2
    functionLinenumber: 572
    functionLinenumberEnd: 595
    functionName: systable_recheck_tuple
    functionSourceFile: /src/postgres/src/backend/access/index/genam.c
    functionUses: 0
    functionsReached:
    - Assert
    - HandleConcurrentAbort
    - RelationGetRelid
    - RegisterSnapshot
    - GetCatalogSnapshot
    - table_tuple_satisfies_snapshot
    - ExecFetchSlotHeapTuple
    - 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:607,1
    - Dst: index_endscan
      Src: /src/postgres/src/backend/access/index/genam.c:613,1
    - Dst: index_close
      Src: /src/postgres/src/backend/access/index/genam.c:614,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/access/index/genam.c:617,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/access/index/genam.c:620,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/index/genam.c:626,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/index/genam.c:629,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - sysscan
    argTypes:
    - SysScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 602
    functionDepth: 1
    functionLinenumber: 602
    functionLinenumberEnd: 630
    functionName: systable_endscan
    functionSourceFile: /src/postgres/src/backend/access/index/genam.c
    functionUses: 0
    functionsReached:
    - pfree
    - ExecDropSingleTupleTableSlot
    - index_close
    - TransactionIdIsValid
    - index_endscan
    - UnregisterSnapshot
    - table_endscan
    linkageType: ''
    returnType: void
    signature: void systable_endscan(SysScanDesc sysscan)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ReindexIsProcessingIndex
      Src: /src/postgres/src/backend/access/index/genam.c:660,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/index/genam.c:660,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/index/genam.c:661,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/index/genam.c:662,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/index/genam.c:663,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/index/genam.c:664,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/genam.c:667,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/index/genam.c:668,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/index/genam.c:670,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/access/index/genam.c:674,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/index/genam.c:678,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/access/index/genam.c:680,1
    - Dst: GetCatalogSnapshot
      Src: /src/postgres/src/backend/access/index/genam.c:680,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/index/genam.c:689,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/index/genam.c:696,1
    - Dst: IndexRelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/access/index/genam.c:698,1
    - Dst: IndexRelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/access/index/genam.c:706,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/genam.c:707,1
    - Dst: index_beginscan
      Src: /src/postgres/src/backend/access/index/genam.c:710,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/access/index/genam.c:712,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/index/genam.c:715,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/index/genam.c:722,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: 726
      start: 649
    functionDepth: 1
    functionLinenumber: 649
    functionLinenumberEnd: 726
    functionName: systable_beginscan_ordered
    functionSourceFile: /src/postgres/src/backend/access/index/genam.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - table_slot_create
    - RelationGetRelid
    - RegisterSnapshot
    - TransactionIdIsValid
    - ereport
    - ReindexIsProcessingIndex
    - GetCatalogSnapshot
    - elog
    - palloc_array
    - IndexRelationGetNumberOfAttributes
    - index_rescan
    - memcpy
    - palloc
    - RelationGetRelationName
    - index_beginscan
    - errcode
    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:736,1
    - Dst: index_getnext_slot
      Src: /src/postgres/src/backend/access/index/genam.c:737,1
    - Dst: ExecFetchSlotHeapTuple
      Src: /src/postgres/src/backend/access/index/genam.c:738,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/genam.c:742,1
    - Dst: HandleConcurrentAbort
      Src: /src/postgres/src/backend/access/index/genam.c:748,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - sysscan
    - direction
    argTypes:
    - SysScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 731
    functionDepth: 2
    functionLinenumber: 731
    functionLinenumberEnd: 751
    functionName: systable_getnext_ordered
    functionSourceFile: /src/postgres/src/backend/access/index/genam.c
    functionUses: 0
    functionsReached:
    - Assert
    - HandleConcurrentAbort
    - index_getnext_slot
    - elog
    - 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:761,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/genam.c:765,1
    - Dst: index_endscan
      Src: /src/postgres/src/backend/access/index/genam.c:766,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/access/index/genam.c:768,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/index/genam.c:774,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/index/genam.c:777,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - sysscan
    argTypes:
    - SysScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 756
    functionDepth: 1
    functionLinenumber: 756
    functionLinenumberEnd: 778
    functionName: systable_endscan_ordered
    functionSourceFile: /src/postgres/src/backend/access/index/genam.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - ExecDropSingleTupleTableSlot
    - TransactionIdIsValid
    - index_endscan
    - 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:826,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/index/genam.c:827,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/index/genam.c:828,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/index/genam.c:829,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/genam.c:835,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/genam.c:837,1
    - Dst: IsInplaceUpdateRelation
      Src: /src/postgres/src/backend/access/index/genam.c:837,1
    - Dst: IsSystemRelation
      Src: /src/postgres/src/backend/access/index/genam.c:837,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/index/genam.c:844,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/genam.c:852,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/access/index/genam.c:854,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/access/index/genam.c:855,1
    - Dst: unconstify
      Src: /src/postgres/src/backend/access/index/genam.c:856,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/access/index/genam.c:857,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/access/index/genam.c:858,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/access/index/genam.c:860,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/genam.c:866,1
    - Dst: TTS_IS_BUFFERTUPLE
      Src: /src/postgres/src/backend/access/index/genam.c:866,1
    - Dst: heap_inplace_lock
      Src: /src/postgres/src/backend/access/index/genam.c:868,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/access/index/genam.c:872,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: 874
      start: 806
    functionDepth: 3
    functionLinenumber: 806
    functionLinenumberEnd: 874
    functionName: systable_inplace_update_begin
    functionSourceFile: /src/postgres/src/backend/access/index/genam.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - systable_beginscan
    - IsSystemRelation
    - CHECK_FOR_INTERRUPTS
    - IsInParallelMode
    - systable_getnext
    - HeapTupleIsValid
    - ereport
    - TTS_IS_BUFFERTUPLE
    - heap_inplace_lock
    - elog
    - unconstify
    - INJECTION_POINT
    - heap_copytuple
    - systable_endscan
    - errcode
    - IsInplaceUpdateRelation
    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:892,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/access/index/genam.c:893,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - tuple
    argTypes:
    - void*
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 882
    functionDepth: 2
    functionLinenumber: 882
    functionLinenumberEnd: 894
    functionName: systable_inplace_update_finish
    functionSourceFile: /src/postgres/src/backend/access/index/genam.c
    functionUses: 0
    functionsReached:
    - heap_inplace_update_and_unlock
    - systable_endscan
    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:911,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/access/index/genam.c:912,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 901
    functionDepth: 2
    functionLinenumber: 901
    functionLinenumberEnd: 913
    functionName: systable_inplace_update_cancel
    functionSourceFile: /src/postgres/src/backend/access/index/genam.c
    functionUses: 0
    functionsReached:
    - systable_endscan
    - heap_inplace_unlock
    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
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - amhandler
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 46
    functionName: GetIndexAmRoutine
    functionSourceFile: /src/postgres/src/backend/access/index/amapi.c
    functionUses: 0
    functionsReached:
    - OidFunctionCall0
    - elog
    - DatumGetPointer
    - IsA
    linkageType: ''
    returnType: IndexAmRoutine
    signature: 'IndexAmRoutine *

      GetIndexAmRoutine(Oid amhandler)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/access/index/amapi.c:63,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/index/amapi.c:63,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/access/index/amapi.c:64,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/amapi.c:68,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/index/amapi.c:71,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/access/index/amapi.c:78,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/index/amapi.c:81,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/index/amapi.c:82,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/index/amapi.c:83,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/index/amapi.c:84,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/index/amapi.c:90,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/access/index/amapi.c:94,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/index/amapi.c:97,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/index/amapi.c:98,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/index/amapi.c:99,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/index/amapi.c:100,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/access/index/amapi.c:103,1
    - Dst: GetIndexAmRoutine
      Src: /src/postgres/src/backend/access/index/amapi.c:106,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - amoid
    - noerror
    argTypes:
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 107
    functionName: GetIndexAmRoutineByAmId
    functionSourceFile: /src/postgres/src/backend/access/index/amapi.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - NameStr
    - ReleaseSysCache
    - HeapTupleIsValid
    - GetIndexAmRoutine
    - GETSTRUCT
    - ereport
    - RegProcedureIsValid
    - SearchSysCache1
    - elog
    - 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:128,1
    - Dst: IndexAmRoutine*::amtranslatestrategy
      Src: /src/postgres/src/backend/access/index/amapi.c:130,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/amapi.c:135,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: 138
      start: 117
    functionDepth: 3
    functionLinenumber: 117
    functionLinenumberEnd: 138
    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:158,1
    - Dst: IndexAmRoutine*::amtranslatecmptype
      Src: /src/postgres/src/backend/access/index/amapi.c:160,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/amapi.c:165,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: 168
      start: 147
    functionDepth: 3
    functionLinenumber: 147
    functionLinenumberEnd: 168
    functionName: IndexAmTranslateCompareType
    functionSourceFile: /src/postgres/src/backend/access/index/amapi.c
    functionUses: 0
    functionsReached:
    - IndexAmRoutine*::amtranslatecmptype
    - GetIndexAmRoutineByAmId
    - elog
    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:176,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/access/index/amapi.c:183,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/index/amapi.c:183,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/access/index/amapi.c:184,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/amapi.c:185,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/index/amapi.c:186,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/access/index/amapi.c:190,1
    - Dst: GetIndexAmRoutineByAmId
      Src: /src/postgres/src/backend/access/index/amapi.c:192,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/amapi.c:195,1
    - Dst: IndexAmRoutine*::amvalidate
      Src: /src/postgres/src/backend/access/index/amapi.c:198,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/index/amapi.c:200,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/index/amapi.c:202,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 173
    functionDepth: 3
    functionLinenumber: 173
    functionLinenumberEnd: 203
    functionName: amvalidate
    functionSourceFile: /src/postgres/src/backend/access/index/amapi.c
    functionUses: 1
    functionsReached:
    - pfree
    - GetIndexAmRoutineByAmId
    - ReleaseSysCache
    - HeapTupleIsValid
    - PG_RETURN_BOOL
    - GETSTRUCT
    - SearchSysCache1
    - PG_GETARG_OID
    - elog
    - IndexAmRoutine*::amvalidate
    - 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: 99
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 99
    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: 106
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 106
    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:137,1
    - Dst: validate_relation_kind
      Src: /src/postgres/src/backend/access/index/indexam.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - relationId
    - lockmode
    argTypes:
    - Oid
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 142
    functionName: index_open
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 1
    functionsReached:
    - validate_relation_kind
    - 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:156,1
    - Dst: validate_relation_kind
      Src: /src/postgres/src/backend/access/index/indexam.c:162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - relationId
    - lockmode
    argTypes:
    - Oid
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 165
    functionName: try_index_open
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - try_relation_open
    - validate_relation_kind
    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:181,1
    - Dst: RelationClose
      Src: /src/postgres/src/backend/access/index/indexam.c:184,1
    - Dst: UnlockRelationId
      Src: /src/postgres/src/backend/access/index/indexam.c:187,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - relation
    - lockmode
    argTypes:
    - Relation
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 188
    functionName: index_close
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 1
    functionsReached:
    - UnlockRelationId
    - Assert
    - 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:201,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/index/indexam.c:202,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/index/indexam.c:203,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/index/indexam.c:204,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - r
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 205
    functionName: validate_relation_kind
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 2
    functionsReached:
    - errmsg
    - RelationGetRelationName
    - errcode
    - ereport
    linkageType: ''
    returnType: void
    signature: void validate_relation_kind(Relation r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_REL_PROCEDURE
      Src: /src/postgres/src/backend/access/index/indexam.c:223,1
    - Dst: CheckForSerializableConflictIn
      Src: /src/postgres/src/backend/access/index/indexam.c:226,1
    - Dst: Relation::rd_indam::aminsert
      Src: /src/postgres/src/backend/access/index/indexam.c:230,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: 234
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 234
    functionName: index_insert
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - CHECK_REL_PROCEDURE
    - Relation::rd_indam::aminsert
    - 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:247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - indexRelation
    - indexInfo
    argTypes:
    - Relation
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 248
    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: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:264,1
    - Dst: index_beginscan_internal
      Src: /src/postgres/src/backend/access/index/indexam.c:266,1
    - Dst: table_index_fetch_begin
      Src: /src/postgres/src/backend/access/index/indexam.c:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 6
    argNames:
    - heapRelation
    - indexRelation
    - snapshot
    - instrument
    - nkeys
    - norderbys
    argTypes:
    - Relation
    - Relation
    - Snapshot
    - IndexScanInstrumentation*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 280
    functionName: index_beginscan
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 2
    functionsReached:
    - table_index_fetch_begin
    - Assert
    - 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)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:296,1
    - Dst: index_beginscan_internal
      Src: /src/postgres/src/backend/access/index/indexam.c:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - indexRelation
    - snapshot
    - instrument
    - nkeys
    argTypes:
    - Relation
    - Snapshot
    - IndexScanInstrumentation*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 308
    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:321,1
    - Dst: PredicateLockRelation
      Src: /src/postgres/src/backend/access/index/indexam.c:324,1
    - Dst: RelationIncrementReferenceCount
      Src: /src/postgres/src/backend/access/index/indexam.c:329,1
    - Dst: Relation::rd_indam::ambeginscan
      Src: /src/postgres/src/backend/access/index/indexam.c:334,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: 341
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 341
    functionName: index_beginscan_internal
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 2
    functionsReached:
    - CHECK_REL_PROCEDURE
    - RelationIncrementReferenceCount
    - PredicateLockRelation
    - Relation::rd_indam::ambeginscan
    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:361,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:363,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:364,1
    - Dst: table_index_fetch_reset
      Src: /src/postgres/src/backend/access/index/indexam.c:368,1
    - Dst: IndexScanDesc::indexRelation::rd_indam::amrescan
      Src: /src/postgres/src/backend/access/index/indexam.c:373,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: 375
      start: 355
    functionDepth: 1
    functionLinenumber: 355
    functionLinenumberEnd: 375
    functionName: index_rescan
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 2
    functionsReached:
    - Assert
    - CHECK_SCAN_PROCEDURE
    - IndexScanDesc::indexRelation::rd_indam::amrescan
    - table_index_fetch_reset
    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:385,1
    - Dst: table_index_fetch_end
      Src: /src/postgres/src/backend/access/index/indexam.c:390,1
    - Dst: IndexScanDesc::indexRelation::rd_indam::amendscan
      Src: /src/postgres/src/backend/access/index/indexam.c:395,1
    - Dst: RelationDecrementReferenceCount
      Src: /src/postgres/src/backend/access/index/indexam.c:398,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/access/index/indexam.c:401,1
    - Dst: IndexScanEnd
      Src: /src/postgres/src/backend/access/index/indexam.c:404,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 405
    functionName: index_endscan
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 2
    functionsReached:
    - table_index_fetch_end
    - IndexScanEnd
    - IndexScanDesc::indexRelation::rd_indam::amendscan
    - CHECK_SCAN_PROCEDURE
    - RelationDecrementReferenceCount
    - 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:415,1
    - Dst: IndexScanDesc::indexRelation::rd_indam::ammarkpos
      Src: /src/postgres/src/backend/access/index/indexam.c:417,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 411
    functionDepth: 1
    functionLinenumber: 411
    functionLinenumberEnd: 418
    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:438,1
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/access/index/indexam.c:438,1
    - Dst: CHECK_SCAN_PROCEDURE
      Src: /src/postgres/src/backend/access/index/indexam.c:441,1
    - Dst: table_index_fetch_reset
      Src: /src/postgres/src/backend/access/index/indexam.c:445,1
    - Dst: IndexScanDesc::indexRelation::rd_indam::amrestrpos
      Src: /src/postgres/src/backend/access/index/indexam.c:450,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 435
    functionDepth: 1
    functionLinenumber: 435
    functionLinenumberEnd: 451
    functionName: index_restrpos
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - IsMVCCSnapshot
    - Assert
    - CHECK_SCAN_PROCEDURE
    - table_index_fetch_reset
    - IndexScanDesc::indexRelation::rd_indam::amrestrpos
    linkageType: ''
    returnType: void
    signature: void index_restrpos(IndexScanDesc scan)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:467,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/index/indexam.c:472,1
    - Dst: EstimateSnapshotSpace
      Src: /src/postgres/src/backend/access/index/indexam.c:472,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/index/indexam.c:473,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/index/indexam.c:481,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/index/indexam.c:482,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/index/indexam.c:491,1
    - Dst: Relation::rd_indam::amestimateparallelscan
      Src: /src/postgres/src/backend/access/index/indexam.c:492,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 7
    argNames:
    - indexRelation
    - nkeys
    - norderbys
    - snapshot
    - instrument
    - parallel_aware
    - nworkers
    argTypes:
    - Relation
    - int
    - int
    - Snapshot
    - bool
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 460
    functionDepth: 1
    functionLinenumber: 460
    functionLinenumberEnd: 497
    functionName: index_parallelscan_estimate
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - Assert
    - EstimateSnapshotSpace
    - MAXALIGN
    - 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, bool instrument,\n\t\t\t\t\t\t\tbool
      parallel_aware, int nworkers)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:518,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/index/indexam.c:522,1
    - Dst: EstimateSnapshotSpace
      Src: /src/postgres/src/backend/access/index/indexam.c:523,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/index/indexam.c:524,1
    - Dst: SerializeSnapshot
      Src: /src/postgres/src/backend/access/index/indexam.c:530,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/index/indexam.c:539,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/index/indexam.c:540,1
    - Dst: OffsetToPointer
      Src: /src/postgres/src/backend/access/index/indexam.c:544,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/index/indexam.c:545,1
    - Dst: OffsetToPointer
      Src: /src/postgres/src/backend/access/index/indexam.c:555,1
    - Dst: Relation::rd_indam::aminitparallelscan
      Src: /src/postgres/src/backend/access/index/indexam.c:556,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 8
    argNames:
    - heapRelation
    - indexRelation
    - snapshot
    - instrument
    - parallel_aware
    - nworkers
    - sharedinfo
    - target
    argTypes:
    - Relation
    - Relation
    - Snapshot
    - bool
    - bool
    - int
    - SharedIndexScanInstrumentation**
    - ParallelIndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 509
    functionDepth: 1
    functionLinenumber: 509
    functionLinenumberEnd: 558
    functionName: index_parallelscan_initialize
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - Assert
    - memset
    - OffsetToPointer
    - EstimateSnapshotSpace
    - SerializeSnapshot
    - add_size
    - Relation::rd_indam::aminitparallelscan
    - MAXALIGN
    linkageType: ''
    returnType: void
    signature: "void index_parallelscan_initialize(Relation heapRelation, Relation
      indexRelation,\n\t\t\t\t\t\t\t  Snapshot snapshot, bool instrument,\n\t\t\t\t\t\t\t
      \ bool parallel_aware, int nworkers,\n\t\t\t\t\t\t\t  SharedIndexScanInstrumentation
      **sharedinfo,\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:570,1
    - Dst: IndexScanDesc::indexRelation::rd_indam::amparallelrescan
      Src: /src/postgres/src/backend/access/index/indexam.c:574,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 564
    functionDepth: 1
    functionLinenumber: 564
    functionLinenumberEnd: 575
    functionName: index_parallelrescan
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - IndexScanDesc::indexRelation::rd_indam::amparallelrescan
    - table_index_fetch_reset
    linkageType: ''
    returnType: void
    signature: void index_parallelrescan(IndexScanDesc scan)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:591,1
    - Dst: RelFileLocatorEquals
      Src: /src/postgres/src/backend/access/index/indexam.c:591,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:592,1
    - Dst: RelFileLocatorEquals
      Src: /src/postgres/src/backend/access/index/indexam.c:592,1
    - Dst: RestoreSnapshot
      Src: /src/postgres/src/backend/access/index/indexam.c:594,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/access/index/indexam.c:595,1
    - Dst: index_beginscan_internal
      Src: /src/postgres/src/backend/access/index/indexam.c:596,1
    - Dst: table_index_fetch_begin
      Src: /src/postgres/src/backend/access/index/indexam.c:608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 6
    argNames:
    - heaprel
    - indexrel
    - instrument
    - nkeys
    - norderbys
    - pscan
    argTypes:
    - Relation
    - Relation
    - IndexScanInstrumentation*
    - int
    - int
    - ParallelIndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 582
    functionDepth: 2
    functionLinenumber: 582
    functionLinenumberEnd: 611
    functionName: index_beginscan_parallel
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - Assert
    - RegisterSnapshot
    - RestoreSnapshot
    - RelFileLocatorEquals
    - table_index_fetch_begin
    - 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)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_SCAN_PROCEDURE
      Src: /src/postgres/src/backend/access/index/indexam.c:626,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:629,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/index/indexam.c:629,1
    - Dst: IndexScanDesc::indexRelation::rd_indam::amgettuple
      Src: /src/postgres/src/backend/access/index/indexam.c:637,1
    - Dst: table_index_fetch_reset
      Src: /src/postgres/src/backend/access/index/indexam.c:648,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:652,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/index/indexam.c:652,1
    - Dst: pgstat_count_index_tuples
      Src: /src/postgres/src/backend/access/index/indexam.c:654,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - scan
    - direction
    argTypes:
    - IndexScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 620
    functionDepth: 2
    functionLinenumber: 620
    functionLinenumberEnd: 658
    functionName: index_getnext_tid
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - Assert
    - TransactionIdIsValid
    - ItemPointerIsValid
    - pgstat_count_index_tuples
    - CHECK_SCAN_PROCEDURE
    - IndexScanDesc::indexRelation::rd_indam::amgettuple
    - table_index_fetch_reset
    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:684,1
    - Dst: pgstat_count_heap_fetch
      Src: /src/postgres/src/backend/access/index/indexam.c:689,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - scan
    - slot
    argTypes:
    - IndexScanDesc
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 678
    functionDepth: 2
    functionLinenumber: 678
    functionLinenumberEnd: 702
    functionName: index_fetch_heap
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - pgstat_count_heap_fetch
    - table_index_fetch_tuple
    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:729,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:735,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/index/indexam.c:735,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:743,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/index/indexam.c:743,1
    - Dst: index_fetch_heap
      Src: /src/postgres/src/backend/access/index/indexam.c:744,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - scan
    - direction
    - slot
    argTypes:
    - IndexScanDesc
    - ScanDirection
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 719
    functionDepth: 3
    functionLinenumber: 719
    functionLinenumberEnd: 749
    functionName: index_getnext_slot
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 2
    functionsReached:
    - Assert
    - index_getnext_tid
    - ItemPointerIsValid
    - ItemPointerEquals
    - index_fetch_heap
    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:770,1
    - Dst: IndexScanDesc::indexRelation::rd_indam::amgetbitmap
      Src: /src/postgres/src/backend/access/index/indexam.c:778,1
    - Dst: pgstat_count_index_tuples
      Src: /src/postgres/src/backend/access/index/indexam.c:780,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - scan
    - bitmap
    argTypes:
    - IndexScanDesc
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 764
    functionDepth: 1
    functionLinenumber: 764
    functionLinenumberEnd: 783
    functionName: index_getbitmap
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - pgstat_count_index_tuples
    - IndexScanDesc::indexRelation::rd_indam::amgetbitmap
    - CHECK_SCAN_PROCEDURE
    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:803,1
    - Dst: Relation::rd_indam::ambulkdelete
      Src: /src/postgres/src/backend/access/index/indexam.c:805,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: 807
      start: 794
    functionDepth: 1
    functionLinenumber: 794
    functionLinenumberEnd: 807
    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:822,1
    - Dst: Relation::rd_indam::amvacuumcleanup
      Src: /src/postgres/src/backend/access/index/indexam.c:824,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - info
    - istat
    argTypes:
    - IndexVacuumInfo*
    - IndexBulkDeleteResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 815
    functionDepth: 1
    functionLinenumber: 815
    functionLinenumberEnd: 825
    functionName: index_vacuum_cleanup
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - CHECK_REL_PROCEDURE
    - Relation::rd_indam::amvacuumcleanup
    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:843,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - indexRelation
    - attno
    argTypes:
    - Relation
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 834
    functionDepth: 0
    functionLinenumber: 834
    functionLinenumberEnd: 844
    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:883,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:889,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - irel
    - attnum
    - procnum
    argTypes:
    - Relation
    - AttrNumber
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 892
      start: 872
    functionDepth: 1
    functionLinenumber: 872
    functionLinenumberEnd: 892
    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:919,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:925,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:935,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/index/indexam.c:945,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/indexam.c:946,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/index/indexam.c:947,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/access/index/indexam.c:949,1
    - Dst: RelationGetIndexAttOptions
      Src: /src/postgres/src/backend/access/index/indexam.c:954,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/index/indexam.c:955,1
    - Dst: set_fn_opclass_options
      Src: /src/postgres/src/backend/access/index/indexam.c:957,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/index/indexam.c:959,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - irel
    - attnum
    - procnum
    argTypes:
    - Relation
    - AttrNumber
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 906
    functionDepth: 1
    functionLinenumber: 906
    functionLinenumberEnd: 964
    functionName: index_getprocinfo
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - set_fn_opclass_options
    - RegProcedureIsValid
    - elog
    - fmgr_info_cxt
    - RelationGetIndexAttOptions
    - RelationGetRelationName
    linkageType: ''
    returnType: FmgrInfo
    signature: "FmgrInfo *\nindex_getprocinfo(Relation irel,\n\t\t\t\t  AttrNumber
      attnum,\n\t\t\t\t  uint16 procnum)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/index/indexam.c:981,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/index/indexam.c:992,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/index/indexam.c:992,1
    - Dst: Float8GetDatum
      Src: /src/postgres/src/backend/access/index/indexam.c:996,1
    - Dst: Float4GetDatum
      Src: /src/postgres/src/backend/access/index/indexam.c:1010,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/index/indexam.c:1030,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 4
    argNames:
    - scan
    - orderByTypes
    - distances
    - recheckOrderBy
    argTypes:
    - IndexScanDesc
    - Oid*
    - IndexOrderByDistance*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1034
      start: 974
    functionDepth: 2
    functionLinenumber: 974
    functionLinenumberEnd: 1034
    functionName: index_store_float8_orderby_distances
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - Float4GetDatum
    - Float8GetDatum
    - elog
    - DatumGetPointer
    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:1053,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/index/indexam.c:1055,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/index/indexam.c:1061,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/access/index/indexam.c:1068,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/index/indexam.c:1070,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/index/indexam.c:1073,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/index/indexam.c:1074,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/index/indexam.c:1075,1
    - Dst: generate_opclass_name
      Src: /src/postgres/src/backend/access/index/indexam.c:1076,1
    - Dst: init_local_reloptions
      Src: /src/postgres/src/backend/access/index/indexam.c:1079,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/index/indexam.c:1081,1
    - Dst: FunctionCall1
      Src: /src/postgres/src/backend/access/index/indexam.c:1083,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/index/indexam.c:1083,1
    - Dst: build_local_reloptions
      Src: /src/postgres/src/backend/access/index/indexam.c:1085,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - indrel
    - attnum
    - attoptions
    - validate
    argTypes:
    - Relation
    - AttrNumber
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1086
      start: 1042
    functionDepth: 2
    functionLinenumber: 1042
    functionLinenumberEnd: 1086
    functionName: index_opclass_options
    functionSourceFile: /src/postgres/src/backend/access/index/indexam.c
    functionUses: 0
    functionsReached:
    - errmsg
    - build_local_reloptions
    - generate_opclass_name
    - index_getprocid
    - SysCacheGetAttrNotNull
    - FunctionCall1
    - ereport
    - PointerGetDatum
    - OidIsValid
    - index_getprocinfo
    - DatumGetPointer
    - errcode
    - init_local_reloptions
    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:57,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:60,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:61,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:71,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:72,1
    - Dst: HashMaxItemSize
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:81,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:82,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:83,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:84,1
    - Dst: HashMaxItemSize
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:85,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:86,1
    - Dst: _hash_getbucketbuf_from_hashkey
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:89,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:91,1
    - Dst: CheckForSerializableConflictIn
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:93,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:93,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:98,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:99,1
    - Dst: H_BUCKET_BEING_SPLIT
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:111,1
    - Dst: IsBufferCleanupOK
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:111,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:114,1
    - Dst: _hash_finish_split
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:116,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:122,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:123,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:128,1
    - Dst: H_HAS_DEAD_TUPLES
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:137,1
    - Dst: IsBufferCleanupOK
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:140,1
    - Dst: _hash_vacuum_one_page
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:142,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:144,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:154,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:164,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:166,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:167,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:168,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:178,1
    - Dst: _hash_addovflpage
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:181,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:182,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:185,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:185,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:187,1
    - Dst: Assert
      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: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:196,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:199,1
    - Dst: _hash_pgaddtup
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:202,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:203,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:206,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:213,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:216,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: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:233,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:233,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:234,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:234,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:237,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:240,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:246,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:248,1
    - Dst: _hash_expandtable
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:252,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:255,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 77
    argCount: 4
    argNames:
    - rel
    - itup
    - heapRel
    - sorted
    argTypes:
    - Relation
    - IndexTuple
    - Relation
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 37
    functionDepth: 4
    functionLinenumber: 37
    functionLinenumberEnd: 256
    functionName: _hash_doinsert
    functionSourceFile: /src/postgres/src/backend/access/hash/hashinsert.c
    functionUses: 0
    functionsReached:
    - errcode
    - MarkBufferDirty
    - PageSetLSN
    - LockBuffer
    - errhint
    - IsBufferCleanupOK
    - XLogRegisterData
    - _hash_get_indextuple_hashkey
    - IndexTupleSize
    - START_CRIT_SECTION
    - BufferGetBlockNumber
    - _hash_dropbuf
    - _hash_getbuf
    - END_CRIT_SECTION
    - PageGetFreeSpace
    - _hash_pgaddtup
    - BlockNumberIsValid
    - CheckForSerializableConflictIn
    - RelationNeedsWAL
    - errmsg
    - _hash_addovflpage
    - HashPageGetMeta
    - XLogRegisterBufData
    - HashMaxItemSize
    - H_HAS_DEAD_TUPLES
    - BufferGetPage
    - Assert
    - HashPageGetOpaque
    - _hash_relbuf
    - XLogBeginInsert
    - XLogInsert
    - _hash_expandtable
    - ereport
    - _hash_vacuum_one_page
    - XLogRegisterBuffer
    - _hash_getbucketbuf_from_hashkey
    - _hash_finish_split
    - H_BUCKET_BEING_SPLIT
    - MAXALIGN
    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:280,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:281,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:289,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:293,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:298,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:298,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:299,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:301,1
    - Dst: _hash_get_indextuple_hashkey
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:301,1
    - Dst: _hash_get_indextuple_hashkey
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:302,1
    - Dst: _hash_get_indextuple_hashkey
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:308,1
    - Dst: _hash_binsearch
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:310,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:313,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:315,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: 273
    functionDepth: 4
    functionLinenumber: 273
    functionLinenumberEnd: 319
    functionName: _hash_pgaddtup
    functionSourceFile: /src/postgres/src/backend/access/hash/hashinsert.c
    functionUses: 1
    functionsReached:
    - Assert
    - PageGetItemId
    - RelationGetRelationName
    - _hash_binsearch
    - PageAddItem
    - _hash_checkpage
    - elog
    - _hash_get_indextuple_hashkey
    - BufferGetPage
    - PageGetItem
    - PageGetMaxOffsetNumber
    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:357,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:358,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: 360
      start: 330
    functionDepth: 4
    functionLinenumber: 330
    functionLinenumberEnd: 360
    functionName: _hash_pgaddmultitup
    functionSourceFile: /src/postgres/src/backend/access/hash/hashinsert.c
    functionUses: 0
    functionsReached:
    - RelationGetRelationName
    - _hash_binsearch
    - PageAddItem
    - elog
    - _hash_get_indextuple_hashkey
    - BufferGetPage
    - IndexTupleSize
    - _hash_checkpage
    - MAXALIGN
    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:376,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:381,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:384,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:386,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:388,1
    - Dst: index_compute_xid_horizon_for_tuples
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:397,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:403,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:406,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:408,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:418,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:421,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:421,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:424,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:425,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:428,1
    - Dst: RelationIsAccessibleInLogicalDecoding
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:433,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:437,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:438,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:439,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:446,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:449,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:451,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:453,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashinsert.c:453,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: 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: 33
    argCount: 4
    argNames:
    - rel
    - hrel
    - metabuf
    - buf
    argTypes:
    - Relation
    - Relation
    - Buffer
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 369
    functionDepth: 5
    functionLinenumber: 369
    functionLinenumberEnd: 465
    functionName: _hash_vacuum_one_page
    functionSourceFile: /src/postgres/src/backend/access/hash/hashinsert.c
    functionUses: 1
    functionsReached:
    - MarkBufferDirty
    - PageSetLSN
    - LockBuffer
    - XLogRegisterData
    - START_CRIT_SECTION
    - OffsetNumberNext
    - ItemIdIsDead
    - RelationNeedsWAL
    - index_compute_xid_horizon_for_tuples
    - PageGetItemId
    - HashPageGetMeta
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - HashPageGetOpaque
    - XLogBeginInsert
    - XLogInsert
    - PageIndexMultiDelete
    - XLogRegisterBuffer
    - RelationIsAccessibleInLogicalDecoding
    - 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:49,1
    - Dst: PG_GETARG_CHAR
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 46
    functionDepth: 2
    functionLinenumber: 46
    functionLinenumberEnd: 50
    functionName: hashchar
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - hash_uint32
    - PG_GETARG_CHAR
    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:55,1
    - Dst: PG_GETARG_CHAR
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:55,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 52
    functionDepth: 2
    functionLinenumber: 52
    functionLinenumberEnd: 56
    functionName: hashcharextended
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - hash_uint32_extended
    - PG_GETARG_CHAR
    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:61,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 62
    functionName: hashint2
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - hash_uint32
    - PG_GETARG_INT16
    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:67,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:67,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 64
    functionDepth: 2
    functionLinenumber: 64
    functionLinenumberEnd: 68
    functionName: hashint2extended
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_GETARG_INT16
    - hash_uint32_extended
    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:73,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 70
    functionDepth: 2
    functionLinenumber: 70
    functionLinenumberEnd: 74
    functionName: hashint4
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - hash_uint32
    - PG_GETARG_INT32
    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:79,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:79,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 76
    functionDepth: 2
    functionLinenumber: 76
    functionLinenumberEnd: 80
    functionName: hashint4extended
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - hash_uint32_extended
    - PG_GETARG_INT32
    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:93,1
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 82
    functionDepth: 2
    functionLinenumber: 82
    functionLinenumberEnd: 100
    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:106,1
    - Dst: hash_uint32_extended
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:112,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 113
    functionName: hashint8extended
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - hash_uint32_extended
    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:118,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 115
    functionDepth: 2
    functionLinenumber: 115
    functionLinenumberEnd: 119
    functionName: hashoid
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - hash_uint32
    - PG_GETARG_OID
    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:124,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:124,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 121
    functionDepth: 2
    functionLinenumber: 121
    functionLinenumberEnd: 125
    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:130,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 127
    functionDepth: 2
    functionLinenumber: 127
    functionLinenumberEnd: 131
    functionName: hashenum
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - hash_uint32
    - PG_GETARG_OID
    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:136,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:136,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 133
    functionDepth: 2
    functionLinenumber: 133
    functionLinenumberEnd: 137
    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:142,1
    - Dst: PG_RETURN_UINT32
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:151,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:169,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:170,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:172,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 173
    functionName: hashfloat4
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - isnan
    - hash_any
    - PG_RETURN_UINT32
    - PG_GETARG_FLOAT4
    - 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:178,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:179,1
    - Dst: PG_RETURN_UINT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:184,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:186,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:187,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:189,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 175
    functionDepth: 2
    functionLinenumber: 175
    functionLinenumberEnd: 190
    functionName: hashfloat4extended
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - isnan
    - PG_RETURN_UINT64
    - PG_GETARG_INT64
    - PG_GETARG_FLOAT4
    - get_float8_nan
    - hash_any_extended
    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:195,1
    - Dst: PG_RETURN_UINT32
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:203,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:210,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:211,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:213,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 192
    functionDepth: 2
    functionLinenumber: 192
    functionLinenumberEnd: 214
    functionName: hashfloat8
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - isnan
    - hash_any
    - PG_RETURN_UINT32
    - PG_GETARG_FLOAT8
    - 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:219,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:220,1
    - Dst: PG_RETURN_UINT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:224,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:225,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:226,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:228,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 216
    functionDepth: 2
    functionLinenumber: 216
    functionLinenumberEnd: 229
    functionName: hashfloat8extended
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - isnan
    - PG_RETURN_UINT64
    - PG_GETARG_INT64
    - PG_GETARG_FLOAT8
    - get_float8_nan
    - hash_any_extended
    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:234,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 231
    functionDepth: 2
    functionLinenumber: 231
    functionLinenumberEnd: 237
    functionName: hashoidvector
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - hash_any
    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:242,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:244,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 239
    functionDepth: 2
    functionLinenumber: 239
    functionLinenumberEnd: 247
    functionName: hashoidvectorextended
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_GETARG_INT64
    - hash_any_extended
    linkageType: ''
    returnType: Datum
    signature: Datum hashoidvectorextended(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:252,1
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:252,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:254,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 249
    functionDepth: 2
    functionLinenumber: 249
    functionLinenumberEnd: 255
    functionName: hashname
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NAME
    - hash_any
    - NameStr
    - strlen
    linkageType: ''
    returnType: Datum
    signature: Datum hashname(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:260,1
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:260,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:262,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:262,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 257
    functionDepth: 2
    functionLinenumber: 257
    functionLinenumberEnd: 264
    functionName: hashnameextended
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - NameStr
    - hash_any_extended
    - PG_GETARG_INT64
    - PG_GETARG_NAME
    - strlen
    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:269,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:270,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:275,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:276,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:277,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:278,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:280,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:284,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:284,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:285,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:292,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:293,1
    - Dst: pg_strnxfrm
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:296,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:297,1
    - Dst: pg_strnxfrm
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:299,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:303,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:310,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:312,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:316,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 266
    functionDepth: 2
    functionLinenumber: 266
    functionLinenumberEnd: 319
    functionName: hashtext
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - errmsg
    - hash_any
    - pfree
    - PG_FREE_IF_COPY
    - PG_GETARG_TEXT_PP
    - ereport
    - errhint
    - elog
    - VARSIZE_ANY_EXHDR
    - PG_GET_COLLATION
    - VARDATA_ANY
    - palloc
    - pg_strnxfrm
    - errcode
    - pg_newlocale_from_collation
    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:324,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:325,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:330,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:331,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:332,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:333,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:335,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:339,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:339,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:340,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:341,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:348,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:349,1
    - Dst: pg_strnxfrm
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:351,1
    - Dst: palloc
      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: elog
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:358,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:365,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:366,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:368,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:371,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 321
    functionDepth: 2
    functionLinenumber: 321
    functionLinenumberEnd: 374
    functionName: hashtextextended
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - PG_FREE_IF_COPY
    - PG_GETARG_TEXT_PP
    - PG_GETARG_INT64
    - ereport
    - errhint
    - elog
    - VARSIZE_ANY_EXHDR
    - PG_GET_COLLATION
    - VARDATA_ANY
    - palloc
    - pg_strnxfrm
    - errcode
    - hash_any_extended
    - pg_newlocale_from_collation
    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:388,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:391,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:391,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:392,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 385
    functionDepth: 2
    functionLinenumber: 385
    functionLinenumberEnd: 398
    functionName: hashvarlena
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - hash_any
    - PG_FREE_IF_COPY
    - PG_GETARG_VARLENA_PP
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    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:403,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:406,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:406,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:407,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:408,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 400
    functionDepth: 2
    functionLinenumber: 400
    functionLinenumberEnd: 413
    functionName: hashvarlenaextended
    functionSourceFile: /src/postgres/src/backend/access/hash/hashfunc.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - PG_GETARG_INT64
    - PG_GETARG_VARLENA_PP
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - hash_any_extended
    linkageType: ''
    returnType: Datum
    signature: Datum hashvarlenaextended(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashvarlena
      Src: /src/postgres/src/backend/access/hash/hashfunc.c:418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 415
    functionDepth: 3
    functionLinenumber: 415
    functionLinenumberEnd: 419
    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:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 421
    functionDepth: 3
    functionLinenumber: 421
    functionLinenumberEnd: 425
    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:63,1
    - Dst: _hash_kill_items
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:68,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:71,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:73,1
    - Dst: _hash_readpage
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:74,1
    - Dst: _hash_kill_items
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:86,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:89,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:91,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:101,1
    - Dst: _hash_readpage
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:103,1
    - Dst: _hash_dropscanbuf
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:113,1
    - Dst: HashScanPosInvalidate
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:114,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - IndexScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 123
    functionName: _hash_next
    functionSourceFile: /src/postgres/src/backend/access/hash/hashsearch.c
    functionUses: 0
    functionsReached:
    - HashScanPosInvalidate
    - _hash_kill_items
    - _hash_readpage
    - _hash_dropbuf
    - _hash_getbuf
    - _hash_dropscanbuf
    - BlockNumberIsValid
    - ScanDirectionIsForward
    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:146,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:148,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:152,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:153,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:155,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:170,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:170,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:172,1
    - Dst: PredicateLockPage
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:173,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:173,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:186,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:187,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 4
    argNames:
    - scan
    - bufp
    - pagep
    - opaquep
    argTypes:
    - IndexScanDesc
    - Buffer*
    - Page*
    - HashPageOpaque*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 130
    functionDepth: 4
    functionLinenumber: 130
    functionLinenumberEnd: 189
    functionName: _hash_readnext
    functionSourceFile: /src/postgres/src/backend/access/hash/hashsearch.c
    functionUses: 0
    functionsReached:
    - Assert
    - BufferIsValid
    - HashPageGetOpaque
    - _hash_relbuf
    - CHECK_FOR_INTERRUPTS
    - BufferGetBlockNumber
    - PredicateLockPage
    - LockBuffer
    - _hash_getbuf
    - BufferGetPage
    - BlockNumberIsValid
    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:213,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:218,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:224,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:228,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:228,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:229,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:231,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:232,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:239,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:253,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:253,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:255,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:256,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:257,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:260,1
    - Dst: _hash_readnext
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:261,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 4
    argNames:
    - scan
    - bufp
    - pagep
    - opaquep
    argTypes:
    - IndexScanDesc
    - Buffer*
    - Page*
    - HashPageOpaque*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 196
    functionDepth: 5
    functionLinenumber: 196
    functionLinenumberEnd: 269
    functionName: _hash_readprev
    functionSourceFile: /src/postgres/src/backend/access/hash/hashsearch.c
    functionUses: 0
    functionsReached:
    - Assert
    - HashPageGetOpaque
    - BufferIsValid
    - _hash_relbuf
    - CHECK_FOR_INTERRUPTS
    - LockBuffer
    - _hash_dropbuf
    - _hash_getbuf
    - _hash_readnext
    - BufferGetPage
    - BlockNumberIsValid
    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:300,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:311,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:312,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:313,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:319,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:321,1
    - Dst: _hash_datum2hashkey
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:342,1
    - Dst: _hash_datum2hashkey_type
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:344,1
    - Dst: _hash_getbucketbuf_from_hashkey
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:349,1
    - Dst: PredicateLockPage
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:350,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:350,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:351,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:352,1
    - Dst: H_BUCKET_BEING_POPULATED
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:373,1
    - Dst: _hash_get_oldblock_from_newbucket
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:378,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:384,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:386,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:393,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:395,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:396,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:397,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:398,1
    - Dst: H_BUCKET_BEING_POPULATED
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:400,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:404,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:410,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:416,1
    - Dst: _hash_readnext
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:418,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:422,1
    - Dst: BufferIsInvalid
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:422,1
    - Dst: _hash_readpage
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:426,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 48
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - IndexScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 287
    functionDepth: 5
    functionLinenumber: 287
    functionLinenumberEnd: 435
    functionName: _hash_first
    functionSourceFile: /src/postgres/src/backend/access/hash/hashsearch.c
    functionUses: 0
    functionsReached:
    - LockBuffer
    - _hash_readnext
    - _hash_datum2hashkey
    - ScanDirectionIsBackward
    - BufferGetBlockNumber
    - _hash_dropbuf
    - _hash_getbuf
    - BufferIsInvalid
    - BlockNumberIsValid
    - _hash_get_oldblock_from_newbucket
    - errmsg
    - PredicateLockPage
    - _hash_readpage
    - H_BUCKET_BEING_POPULATED
    - BufferGetPage
    - _hash_datum2hashkey_type
    - Assert
    - HashPageGetOpaque
    - pgstat_count_index_scan
    - ereport
    - _hash_getbucketbuf_from_hashkey
    - errcode
    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:459,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:459,1
    - Dst: _hash_checkpage
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:460,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:461,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:462,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:465,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:467,1
    - Dst: _hash_binsearch
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:474,1
    - Dst: _hash_load_qualified_items
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:476,1
    - Dst: _hash_kill_items
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:487,1
    - Dst: _hash_readnext
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:499,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:500,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:503,1
    - Dst: _hash_binsearch_last
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:533,1
    - Dst: _hash_load_qualified_items
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:535,1
    - Dst: _hash_kill_items
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:546,1
    - Dst: _hash_readprev
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:552,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:553,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:556,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:585,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:591,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:595,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 70
    argCount: 3
    argNames:
    - scan
    - bufP
    - dir
    argTypes:
    - IndexScanDesc
    - Buffer*
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 447
    functionDepth: 6
    functionLinenumber: 447
    functionLinenumberEnd: 597
    functionName: _hash_readpage
    functionSourceFile: /src/postgres/src/backend/access/hash/hashsearch.c
    functionUses: 2
    functionsReached:
    - HashPageGetOpaque
    - Assert
    - BufferIsValid
    - BufferGetBlockNumber
    - _hash_kill_items
    - _hash_binsearch_last
    - _hash_relbuf
    - _hash_binsearch
    - LockBuffer
    - _hash_readprev
    - _hash_readnext
    - _hash_load_qualified_items
    - BufferGetPage
    - _hash_checkpage
    - ScanDirectionIsForward
    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:612,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:614,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:621,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:622,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:622,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:632,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:632,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:634,1
    - Dst: _hash_get_indextuple_hashkey
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:638,1
    - Dst: _hash_checkqual
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:639,1
    - Dst: _hash_saveitem
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:642,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:654,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:657,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:667,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:668,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:668,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:678,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:678,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:680,1
    - Dst: _hash_get_indextuple_hashkey
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:684,1
    - Dst: _hash_checkqual
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:685,1
    - Dst: _hash_saveitem
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:689,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:700,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashsearch.c:703,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 41
    argCount: 4
    argNames:
    - scan
    - page
    - offnum
    - dir
    argTypes:
    - IndexScanDesc
    - Page
    - OffsetNumber
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 603
    functionDepth: 2
    functionLinenumber: 603
    functionLinenumberEnd: 706
    functionName: _hash_load_qualified_items
    functionSourceFile: /src/postgres/src/backend/access/hash/hashsearch.c
    functionUses: 1
    functionsReached:
    - _hash_checkqual
    - Assert
    - PageGetItemId
    - OffsetNumberPrev
    - OffsetNumberNext
    - _hash_get_indextuple_hashkey
    - ItemIdIsDead
    - _hash_saveitem
    - PageGetItem
    - PageGetMaxOffsetNumber
    - ScanDirectionIsForward
    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: 717
      start: 709
    functionDepth: 0
    functionLinenumber: 709
    functionLinenumberEnd: 717
    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:
    - errmsg
    - _hash_get_totalbuckets
    - errcode
    - ereport
    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:151,1
    - Dst: _hash_checkpage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:154,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:161,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:162,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:165,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:172,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:173,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:176,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:180,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:184,1
    - Dst: _hash_checkpage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:186,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:187,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:187,1
    - Dst: BMPG_SHIFT
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:191,1
    - Dst: BMPG_MASK
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:192,1
    - Dst: BMPG_SHIFT
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:207,1
    - Dst: BMPG_MASK
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:208,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:213,1
    - Dst: BMPGSZ_BIT
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:219,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:222,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:224,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:225,1
    - Dst: HashPageGetBitmap
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:226,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:235,1
    - Dst: _hash_firstfreebit
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:238,1
    - Dst: BMPG_SHIFT
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:242,1
    - Dst: bitno_to_blkno
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:244,1
    - Dst: _hash_getinitbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:247,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:254,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:261,1
    - Dst: BMPGSZ_BIT
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:268,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:282,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:283,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:284,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:285,1
    - Dst: _hash_getnewbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:287,1
    - Dst: bitno_to_blkno
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:287,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:298,1
    - Dst: bitno_to_blkno
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:300,1
    - Dst: _hash_getnewbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:312,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:321,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:325,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:325,1
    - Dst: SETBIT
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:328,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:329,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:336,1
    - Dst: _hash_initbitmapbuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:338,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:339,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:342,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:347,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:362,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:366,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:367,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:368,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:374,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:377,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:379,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:382,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: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:412,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:412,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:413,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:413,1
    - Dst: BufferIsValid
      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: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:421,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:421,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:424,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:427,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:429,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:431,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:432,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:434,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:436,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:437,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 139
    argCount: 4
    argNames:
    - rel
    - metabuf
    - buf
    - retain_pin
    argTypes:
    - Relation
    - Buffer
    - Buffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 111
    functionDepth: 4
    functionLinenumber: 111
    functionLinenumberEnd: 440
    functionName: _hash_addovflpage
    functionSourceFile: /src/postgres/src/backend/access/hash/hashovfl.c
    functionUses: 1
    functionsReached:
    - BMPGSZ_BIT
    - MarkBufferDirty
    - PageSetLSN
    - _hash_getnewbuf
    - LockBuffer
    - bitno_to_blkno
    - XLogRegisterData
    - RelationGetRelationName
    - _hash_firstfreebit
    - BMPG_SHIFT
    - START_CRIT_SECTION
    - BufferGetBlockNumber
    - HashPageGetBitmap
    - SETBIT
    - _hash_getbuf
    - _hash_initbitmapbuffer
    - BMPG_MASK
    - BlockNumberIsValid
    - RelationNeedsWAL
    - errmsg
    - HashPageGetMeta
    - BufferIsValid
    - XLogRegisterBufData
    - BufferGetPage
    - _hash_checkpage
    - HashPageGetOpaque
    - Assert
    - _hash_relbuf
    - _hash_getinitbuf
    - XLogBeginInsert
    - XLogInsert
    - ereport
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    - errcode
    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:461,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - map
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 447
    functionDepth: 1
    functionLinenumber: 447
    functionLinenumberEnd: 464
    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:516,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:517,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:518,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:519,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:522,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:531,1
    - Dst: _hash_getbuf_with_strategy
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:536,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:542,1
    - Dst: _hash_getbuf_with_strategy
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:543,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:552,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:553,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:553,1
    - Dst: _hash_ovflblkno_to_bitno
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:556,1
    - Dst: BMPG_SHIFT
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:558,1
    - Dst: BMPG_MASK
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:559,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:562,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:566,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:569,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:570,1
    - Dst: HashPageGetBitmap
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:571,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:572,1
    - Dst: ISSET
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:572,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:575,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:578,1
    - Dst: XLogEnsureRecordSpace
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:579,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:581,1
    - Dst: _hash_pgaddmultitup
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:590,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:591,1
    - Dst: _hash_pageinit
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:601,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:601,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:603,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:611,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:613,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:615,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:616,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:618,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:620,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:622,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:624,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:625,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:627,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:629,1
    - Dst: CLRBIT
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:633,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:634,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:641,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:645,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:658,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:659,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:669,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:674,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:679,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:682,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:694,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:706,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:709,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:717,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:718,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:720,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:721,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:723,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:724,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:728,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:729,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:732,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:736,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:736,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: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:740,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:741,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:741,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: 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:748,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:748,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:751,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:754,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:755,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:757,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:758,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:760,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:761,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:763,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:764,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 123
    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: 767
      start: 489
    functionDepth: 5
    functionLinenumber: 489
    functionLinenumberEnd: 767
    functionName: _hash_freeovflpage
    functionSourceFile: /src/postgres/src/backend/access/hash/hashovfl.c
    functionUses: 0
    functionsReached:
    - MarkBufferDirty
    - PageSetLSN
    - CLRBIT
    - LockBuffer
    - ISSET
    - BufferGetPageSize
    - XLogRegisterData
    - _hash_pgaddmultitup
    - XLogEnsureRecordSpace
    - START_CRIT_SECTION
    - BMPG_SHIFT
    - BufferGetBlockNumber
    - HashPageGetBitmap
    - _hash_getbuf
    - _hash_ovflblkno_to_bitno
    - BMPG_MASK
    - BlockNumberIsValid
    - _hash_pageinit
    - RelationNeedsWAL
    - HashPageGetMeta
    - BufferIsValid
    - XLogRegisterBufData
    - elog
    - BufferGetPage
    - _hash_checkpage
    - _hash_getbuf_with_strategy
    - HashPageGetOpaque
    - Assert
    - _hash_relbuf
    - XLogBeginInsert
    - XLogInsert
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    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:783,1
    - Dst: _hash_pageinit
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:787,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:787,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:790,1
    - Dst: HashPageGetBitmap
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:798,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:799,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - buf
    - bmsize
    - initpage
    argTypes:
    - Buffer
    - uint16
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 776
    functionDepth: 4
    functionLinenumber: 776
    functionLinenumberEnd: 807
    functionName: _hash_initbitmapbuffer
    functionSourceFile: /src/postgres/src/backend/access/hash/hashovfl.c
    functionUses: 1
    functionsReached:
    - HashPageGetOpaque
    - memset
    - HashPageGetBitmap
    - BufferGetPageSize
    - BufferGetPage
    - _hash_pageinit
    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:862,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:863,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:869,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:871,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:887,1
    - Dst: _hash_getbuf_with_strategy
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:888,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:893,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:894,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:895,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:896,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:917,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:920,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:926,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:926,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:929,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:930,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:931,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:932,1
    - Dst: PageGetFreeSpaceForMultipleTuples
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:939,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:944,1
    - Dst: PageIsEmpty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:944,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:950,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:950,1
    - Dst: _hash_getbuf_with_strategy
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:954,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:962,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:968,1
    - Dst: XLogEnsureRecordSpace
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:969,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:971,1
    - Dst: _hash_pgaddmultitup
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:979,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:980,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:983,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:984,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:987,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:995,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:996,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1007,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1010,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1011,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1014,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1016,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1017,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1020,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1022,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1022,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1023,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1023,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1026,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1036,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1038,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1043,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1048,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1049,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1050,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1055,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1076,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1093,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1093,1
    - Dst: _hash_freeovflpage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1096,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1101,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1108,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1110,1
    - Dst: _hash_getbuf_with_strategy
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1114,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1119,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1120,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashovfl.c:1121,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 110
    argCount: 5
    argNames:
    - rel
    - bucket
    - bucket_blkno
    - bucket_buf
    - bstrategy
    argTypes:
    - Relation
    - Bucket
    - BlockNumber
    - Buffer
    - BufferAccessStrategy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1125
      start: 841
    functionDepth: 6
    functionLinenumber: 841
    functionLinenumberEnd: 1125
    functionName: _hash_squeezebucket
    functionSourceFile: /src/postgres/src/backend/access/hash/hashovfl.c
    functionUses: 0
    functionsReached:
    - MarkBufferDirty
    - PageSetLSN
    - LockBuffer
    - PageGetFreeSpaceForMultipleTuples
    - XLogRegisterData
    - _hash_pgaddmultitup
    - IndexTupleSize
    - XLogEnsureRecordSpace
    - pfree
    - START_CRIT_SECTION
    - OffsetNumberNext
    - PageIsEmpty
    - BlockNumberIsValid
    - PageGetItem
    - ItemIdIsDead
    - RelationNeedsWAL
    - PageGetItemId
    - XLogRegisterBufData
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - _hash_getbuf_with_strategy
    - HashPageGetOpaque
    - Assert
    - _hash_relbuf
    - XLogBeginInsert
    - XLogInsert
    - PageIndexMultiDelete
    - XLogRegisterBuffer
    - CopyIndexTuple
    - END_CRIT_SECTION
    - _hash_freeovflpage
    - MAXALIGN
    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: makeNode
      Src: /src/postgres/src/backend/access/hash/hash.c:60,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/hash/hash.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 116
    functionName: hashhandler
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 0
    functionsReached:
    - makeNode
    - 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:136,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hash.c:137,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/hash/hash.c:138,1
    - Dst: estimate_rel_size
      Src: /src/postgres/src/backend/access/hash/hash.c:141,1
    - Dst: _hash_init
      Src: /src/postgres/src/backend/access/hash/hash.c:144,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/hash/hash.c:166,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/hash/hash.c:168,1
    - Dst: _h_spoolinit
      Src: /src/postgres/src/backend/access/hash/hash.c:171,1
    - Dst: table_index_build_scan
      Src: /src/postgres/src/backend/access/hash/hash.c:180,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/hash/hash.c:183,1
    - Dst: _h_indexbuild
      Src: /src/postgres/src/backend/access/hash/hash.c:189,1
    - Dst: _h_spooldestroy
      Src: /src/postgres/src/backend/access/hash/hash.c:190,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/hash/hash.c:196,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 3
    argNames:
    - heap
    - index
    - indexInfo
    argTypes:
    - Relation
    - Relation
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 202
    functionName: hashbuild
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 0
    functionsReached:
    - Min
    - _h_spooldestroy
    - palloc
    - estimate_rel_size
    - _hash_init
    - table_index_build_scan
    - pgstat_progress_update_param
    - elog
    - _h_spoolinit
    - _h_indexbuild
    - RelationGetNumberOfBlocks
    - RelationGetRelationName
    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:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 211
    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:230,1
    - Dst: _h_spool
      Src: /src/postgres/src/backend/access/hash/hash.c:237,1
    - Dst: index_form_tuple
      Src: /src/postgres/src/backend/access/hash/hash.c:241,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/hash/hash.c:241,1
    - Dst: _hash_doinsert
      Src: /src/postgres/src/backend/access/hash/hash.c:244,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/hash/hash.c:245,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: 249
      start: 216
    functionDepth: 5
    functionLinenumber: 216
    functionLinenumberEnd: 249
    functionName: hashbuildCallback
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 0
    functionsReached:
    - pfree
    - RelationGetDescr
    - _h_spool
    - _hash_convert_tuple
    - index_form_tuple
    - _hash_doinsert
    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:269,1
    - Dst: index_form_tuple
      Src: /src/postgres/src/backend/access/hash/hash.c:275,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/hash/hash.c:275,1
    - Dst: _hash_doinsert
      Src: /src/postgres/src/backend/access/hash/hash.c:278,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/hash/hash.c:280,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: 283
      start: 257
    functionDepth: 5
    functionLinenumber: 257
    functionLinenumberEnd: 283
    functionName: hashinsert
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 0
    functionsReached:
    - pfree
    - RelationGetDescr
    - _hash_convert_tuple
    - index_form_tuple
    - _hash_doinsert
    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:303,1
    - Dst: _hash_first
      Src: /src/postgres/src/backend/access/hash/hash.c:304,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/hash/hash.c:322,1
    - Dst: _hash_next
      Src: /src/postgres/src/backend/access/hash/hash.c:331,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - IndexScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 289
    functionDepth: 6
    functionLinenumber: 289
    functionLinenumberEnd: 335
    functionName: hashgettuple
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 0
    functionsReached:
    - _hash_next
    - palloc
    - HashScanPosIsValid
    - _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:349,1
    - Dst: tbm_add_tuples
      Src: /src/postgres/src/backend/access/hash/hash.c:360,1
    - Dst: _hash_next
      Src: /src/postgres/src/backend/access/hash/hash.c:363,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - scan
    - tbm
    argTypes:
    - IndexScanDesc
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 341
    functionDepth: 6
    functionLinenumber: 341
    functionLinenumberEnd: 367
    functionName: hashgetbitmap
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 0
    functionsReached:
    - _hash_next
    - tbm_add_tuples
    - _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:380,1
    - Dst: RelationGetIndexScan
      Src: /src/postgres/src/backend/access/hash/hash.c:382,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/hash/hash.c:384,1
    - Dst: HashScanPosInvalidate
      Src: /src/postgres/src/backend/access/hash/hash.c:385,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 3
    argNames:
    - rel
    - nkeys
    - norderbys
    argTypes:
    - Relation
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 373
    functionDepth: 2
    functionLinenumber: 373
    functionLinenumberEnd: 398
    functionName: hashbeginscan
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 0
    functionsReached:
    - RelationGetIndexScan
    - Assert
    - palloc
    - HashScanPosInvalidate
    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:410,1
    - Dst: _hash_kill_items
      Src: /src/postgres/src/backend/access/hash/hash.c:414,1
    - Dst: _hash_dropscanbuf
      Src: /src/postgres/src/backend/access/hash/hash.c:417,1
    - Dst: HashScanPosInvalidate
      Src: /src/postgres/src/backend/access/hash/hash.c:420,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/hash/hash.c:424,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: 428
      start: 403
    functionDepth: 1
    functionLinenumber: 403
    functionLinenumberEnd: 428
    functionName: hashrescan
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 0
    functionsReached:
    - HashScanPosInvalidate
    - _hash_kill_items
    - HashScanPosIsValid
    - memcpy
    - _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:439,1
    - Dst: _hash_kill_items
      Src: /src/postgres/src/backend/access/hash/hash.c:443,1
    - Dst: _hash_dropscanbuf
      Src: /src/postgres/src/backend/access/hash/hash.c:446,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/hash/hash.c:449,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/hash/hash.c:450,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 433
    functionDepth: 1
    functionLinenumber: 433
    functionLinenumberEnd: 452
    functionName: hashendscan
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 0
    functionsReached:
    - _hash_dropscanbuf
    - HashScanPosIsValid
    - _hash_kill_items
    - pfree
    linkageType: ''
    returnType: void
    signature: void hashendscan(IndexScanDesc scan)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: _hash_getcachedmetap
      Src: /src/postgres/src/backend/access/hash/hash.c:488,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash.c:489,1
    - Dst: BUCKET_TO_BLKNO
      Src: /src/postgres/src/backend/access/hash/hash.c:510,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/hash/hash.c:518,1
    - Dst: LockBufferForCleanup
      Src: /src/postgres/src/backend/access/hash/hash.c:519,1
    - Dst: _hash_checkpage
      Src: /src/postgres/src/backend/access/hash/hash.c:520,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash.c:522,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash.c:523,1
    - Dst: H_BUCKET_BEING_SPLIT
      Src: /src/postgres/src/backend/access/hash/hash.c:530,1
    - Dst: H_NEEDS_SPLIT_CLEANUP
      Src: /src/postgres/src/backend/access/hash/hash.c:531,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash.c:544,1
    - Dst: _hash_getcachedmetap
      Src: /src/postgres/src/backend/access/hash/hash.c:547,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash.c:548,1
    - Dst: hashbucketcleanup
      Src: /src/postgres/src/backend/access/hash/hash.c:554,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hash.c:561,1
    - Dst: BufferIsInvalid
      Src: /src/postgres/src/backend/access/hash/hash.c:567,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hash.c:568,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hash.c:571,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hash.c:572,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash.c:572,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hash.c:577,1
    - Dst: _hash_getcachedmetap
      Src: /src/postgres/src/backend/access/hash/hash.c:578,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash.c:579,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hash.c:585,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash.c:611,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hash.c:614,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/hash/hash.c:621,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/hash/hash.c:622,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hash.c:624,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/hash/hash.c:626,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash.c:627,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash.c:627,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hash.c:630,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hash.c:632,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/hash/hash.c:636,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 70
    argCount: 4
    argNames:
    - info
    - stats
    - callback
    - callback_state
    argTypes:
    - IndexVacuumInfo*
    - IndexBulkDeleteResult*
    - IndexBulkDeleteCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 464
    functionDepth: 4
    functionLinenumber: 464
    functionLinenumberEnd: 643
    functionName: hashbulkdelete
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 0
    functionsReached:
    - MarkBufferDirty
    - PageSetLSN
    - hashbucketcleanup
    - LockBuffer
    - XLogRegisterData
    - START_CRIT_SECTION
    - H_NEEDS_SPLIT_CLEANUP
    - _hash_dropbuf
    - _hash_getbuf
    - BufferIsInvalid
    - RelationNeedsWAL
    - HashPageGetMeta
    - LockBufferForCleanup
    - BUCKET_TO_BLKNO
    - ReadBufferExtended
    - BufferGetPage
    - _hash_checkpage
    - Assert
    - HashPageGetOpaque
    - _hash_relbuf
    - XLogBeginInsert
    - XLogInsert
    - palloc0
    - _hash_getcachedmetap
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    - H_BUCKET_BEING_SPLIT
    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:662,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - info
    - stats
    argTypes:
    - IndexVacuumInfo*
    - IndexBulkDeleteResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 650
    functionDepth: 1
    functionLinenumber: 650
    functionLinenumberEnd: 666
    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:706,1
    - Dst: vacuum_delay_point
      Src: /src/postgres/src/backend/access/hash/hash.c:722,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash.c:724,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash.c:725,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/hash/hash.c:728,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/hash/hash.c:731,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/hash/hash.c:738,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hash.c:739,1
    - Dst: callback
      Src: /src/postgres/src/backend/access/hash/hash.c:746,1
    - Dst: _hash_hashkey2bucket
      Src: /src/postgres/src/backend/access/hash/hash.c:755,1
    - Dst: _hash_get_indextuple_hashkey
      Src: /src/postgres/src/backend/access/hash/hash.c:755,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash.c:768,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hash.c:800,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/hash/hash.c:802,1
    - Dst: H_HAS_DEAD_TUPLES
      Src: /src/postgres/src/backend/access/hash/hash.c:811,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash.c:817,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hash.c:820,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/hash/hash.c:828,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/hash/hash.c:829,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hash.c:840,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hash.c:843,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/hash/hash.c:844,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/hash/hash.c:847,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash.c:848,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash.c:848,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hash.c:851,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hash.c:855,1
    - Dst: _hash_getbuf_with_strategy
      Src: /src/postgres/src/backend/access/hash/hash.c:858,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hash.c:867,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hash.c:869,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hash.c:881,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hash.c:882,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash.c:896,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash.c:897,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hash.c:900,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash.c:903,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hash.c:906,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/hash/hash.c:910,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hash.c:911,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/hash/hash.c:913,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash.c:914,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hash.c:917,1
    - Dst: IsBufferCleanupOK
      Src: /src/postgres/src/backend/access/hash/hash.c:925,1
    - Dst: _hash_squeezebucket
      Src: /src/postgres/src/backend/access/hash/hash.c:926,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hash.c:929,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 89
    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: 930
      start: 689
    functionDepth: 7
    functionLinenumber: 689
    functionLinenumberEnd: 930
    functionName: hashbucketcleanup
    functionSourceFile: /src/postgres/src/backend/access/hash/hash.c
    functionUses: 1
    functionsReached:
    - MarkBufferDirty
    - PageSetLSN
    - LockBuffer
    - vacuum_delay_point
    - IsBufferCleanupOK
    - XLogRegisterData
    - _hash_get_indextuple_hashkey
    - START_CRIT_SECTION
    - _hash_hashkey2bucket
    - OffsetNumberNext
    - END_CRIT_SECTION
    - BlockNumberIsValid
    - PageGetItem
    - RelationNeedsWAL
    - PageGetItemId
    - XLogRegisterBufData
    - H_HAS_DEAD_TUPLES
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - _hash_getbuf_with_strategy
    - HashPageGetOpaque
    - Assert
    - _hash_relbuf
    - _hash_get_newbucket_from_oldbucket
    - XLogBeginInsert
    - XLogInsert
    - PageIndexMultiDelete
    - _hash_squeezebucket
    - XLogRegisterBuffer
    - callback
    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: 938
      start: 932
    functionDepth: 0
    functionLinenumber: 932
    functionLinenumberEnd: 938
    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: 946
      start: 940
    functionDepth: 0
    functionLinenumber: 940
    functionLinenumberEnd: 946
    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
      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:
    - tuplesort_begin_index_hash
    - pg_nextpower2_32
    - palloc0
    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*
    - ItemPointer
    - 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, ItemPointer 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:
    - Assert
    - CHECK_FOR_INTERRUPTS
    - _hash_hashkey2bucket
    - pgstat_progress_update_param
    - _hash_get_indextuple_hashkey
    - tuplesort_getindextuple
    - _hash_doinsert
    - tuplesort_performsort
    linkageType: ''
    returnType: void
    signature: void _h_indexbuild(HSpool *hspool, Relation heapRel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:34,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:37,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:38,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:38,1
    - Dst: _hash_init_metabuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:39,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:41,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:42,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:43,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:51,1
    - Dst: FlushOneBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:53,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 26
    functionDepth: 4
    functionLinenumber: 26
    functionLinenumberEnd: 57
    functionName: hash_xlog_init_meta_page
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - Assert
    - BufferIsValid
    - MarkBufferDirty
    - FlushOneBuffer
    - XLogRecGetData
    - XLogRecGetBlockTag
    - BufferGetPage
    - XLogInitBufferForRedo
    - _hash_init_metabuffer
    - UnlockReleaseBuffer
    linkageType: ''
    returnType: void
    signature: void hash_xlog_init_meta_page(XLogReaderState *record)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:73,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:78,1
    - Dst: _hash_initbitmapbuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:79,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:80,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:80,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:81,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:89,1
    - Dst: FlushOneBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:91,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:92,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:95,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:103,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:104,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:110,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:111,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:113,1
    - Dst: FlushOneBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:115,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:117,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:118,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 62
    functionDepth: 5
    functionLinenumber: 62
    functionLinenumberEnd: 119
    functionName: hash_xlog_init_bitmap_page
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - MarkBufferDirty
    - HashPageGetMeta
    - FlushOneBuffer
    - BufferIsValid
    - XLogRecGetData
    - XLogRecGetBlockTag
    - _hash_initbitmapbuffer
    - XLogReadBufferForRedo
    - BufferGetPage
    - XLogInitBufferForRedo
    - UnlockReleaseBuffer
    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:129,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:133,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:136,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:138,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:140,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:142,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:144,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:145,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:147,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:148,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:150,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:158,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:159,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:162,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:163,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:165,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:166,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 124
    functionDepth: 4
    functionLinenumber: 124
    functionLinenumberEnd: 167
    functionName: hash_xlog_insert
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - MarkBufferDirty
    - BufferIsValid
    - HashPageGetMeta
    - PageAddItem
    - XLogRecGetData
    - elog
    - XLogReadBufferForRedo
    - BufferGetPage
    - XLogRecGetBlockData
    - UnlockReleaseBuffer
    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:176,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:190,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:191,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:193,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:194,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:194,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:196,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:198,1
    - Dst: _hash_initbuf
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:199,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:202,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:203,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:206,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:207,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:209,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:214,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:215,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:218,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:219,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:222,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:223,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:224,1
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:232,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:236,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:238,1
    - Dst: HashPageGetBitmap
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:242,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:244,1
    - Dst: SETBIT
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:247,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:249,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:250,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:252,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:253,1
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:256,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:260,1
    - Dst: _hash_initbitmapbuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:262,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:265,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:267,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:268,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:268,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:270,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:273,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:279,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:282,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:283,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:292,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:292,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:300,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:301,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:303,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:304,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 65
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 172
    functionDepth: 5
    functionLinenumber: 172
    functionLinenumberEnd: 305
    functionName: hash_xlog_add_ovfl_page
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - MarkBufferDirty
    - XLogRecGetData
    - BufferGetBlockNumber
    - HashPageGetBitmap
    - SETBIT
    - XLogRecHasBlockRef
    - _hash_initbitmapbuffer
    - XLogInitBufferForRedo
    - XLogRecGetBlockData
    - BlockNumberIsValid
    - BufferIsValid
    - HashPageGetMeta
    - XLogRecGetBlockTag
    - BufferGetPage
    - UnlockReleaseBuffer
    - Assert
    - HashPageGetOpaque
    - _hash_initbuf
    - XLogReadBufferForRedo
    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:314,1
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:329,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:340,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:341,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:346,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:347,1
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:351,1
    - Dst: _hash_initbuf
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:353,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:355,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:356,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:356,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:362,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:363,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:364,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:365,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:375,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:380,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:381,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:384,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:392,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:408,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:416,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:417,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:417,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:420,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:421,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 41
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 310
    functionDepth: 4
    functionLinenumber: 310
    functionLinenumberEnd: 422
    functionName: hash_xlog_split_allocate_page
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - HashPageGetOpaque
    - MarkBufferDirty
    - BufferIsValid
    - HashPageGetMeta
    - memcpy
    - _hash_initbuf
    - XLogRecGetData
    - XLogReadBufferForRedo
    - BufferGetPage
    - XLogRecGetBlockData
    - XLogReadBufferForRedoExtended
    - UnlockReleaseBuffer
    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:432,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:433,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:435,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 427
    functionDepth: 1
    functionLinenumber: 427
    functionLinenumberEnd: 436
    functionName: hash_xlog_split_page
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - XLogReadBufferForRedo
    - elog
    - 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:445,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:451,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:462,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:463,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:467,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:468,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:470,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:471,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:474,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:485,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:486,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:490,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:491,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:493,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:494,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 441
    functionDepth: 4
    functionLinenumber: 441
    functionLinenumberEnd: 495
    functionName: hash_xlog_split_complete
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - HashPageGetOpaque
    - MarkBufferDirty
    - BufferIsValid
    - XLogRecGetData
    - XLogReadBufferForRedo
    - BufferGetPage
    - UnlockReleaseBuffer
    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:504,1
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:518,1
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:525,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:527,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:539,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:541,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:555,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:556,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:560,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:562,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:572,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:574,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:575,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:579,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:585,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:587,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:598,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:601,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:602,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:613,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:614,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:616,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:617,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:619,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:620,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 43
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 500
    functionDepth: 4
    functionLinenumber: 500
    functionLinenumberEnd: 621
    functionName: hash_xlog_move_page_contents
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - Assert
    - MarkBufferDirty
    - BufferIsValid
    - PageAddItem
    - PageIndexMultiDelete
    - IndexTupleSize
    - XLogRecGetData
    - elog
    - XLogReadBufferForRedo
    - BufferGetPage
    - XLogRecGetBlockData
    - XLogReadBufferForRedoExtended
    - UnlockReleaseBuffer
    - MAXALIGN
    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:630,1
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:646,1
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:653,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:656,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:671,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:673,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:687,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:688,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:692,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:694,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:708,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:715,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:723,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:732,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:733,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:738,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:743,1
    - Dst: _hash_pageinit
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:745,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:745,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:747,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:755,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:756,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:758,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:759,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:763,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:765,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:766,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:770,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:771,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:773,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:774,1
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:777,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: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:784,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:788,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:789,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:791,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:792,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:795,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:796,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:798,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:799,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:808,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:810,1
    - Dst: HashPageGetBitmap
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:816,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:818,1
    - Dst: CLRBIT
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:821,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:823,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:824,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:826,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:827,1
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:830,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:834,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:842,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:845,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:846,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:849,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:850,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:852,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:853,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 93
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 626
    functionDepth: 4
    functionLinenumber: 626
    functionLinenumberEnd: 855
    functionName: hash_xlog_squeeze_page
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - MarkBufferDirty
    - CLRBIT
    - PageAddItem
    - XLogRecGetData
    - BufferGetPageSize
    - IndexTupleSize
    - HashPageGetBitmap
    - XLogRecHasBlockRef
    - XLogRecGetBlockData
    - _hash_pageinit
    - BufferIsValid
    - HashPageGetMeta
    - elog
    - BufferGetPage
    - UnlockReleaseBuffer
    - Assert
    - HashPageGetOpaque
    - XLogReadBufferForRedo
    - XLogReadBufferForRedoExtended
    - MAXALIGN
    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:864,1
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:878,1
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:885,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:887,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:896,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:898,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:909,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:921,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:925,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:926,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:928,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:929,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:931,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:932,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 860
    functionDepth: 4
    functionLinenumber: 860
    functionLinenumberEnd: 933
    functionName: hash_xlog_delete
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - HashPageGetOpaque
    - MarkBufferDirty
    - BufferIsValid
    - PageIndexMultiDelete
    - XLogRecGetData
    - XLogReadBufferForRedo
    - BufferGetPage
    - XLogRecGetBlockData
    - XLogReadBufferForRedoExtended
    - UnlockReleaseBuffer
    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:945,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:949,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:951,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:953,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:954,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:956,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:957,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 938
    functionDepth: 4
    functionLinenumber: 938
    functionLinenumberEnd: 958
    functionName: hash_xlog_split_cleanup
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - MarkBufferDirty
    - HashPageGetOpaque
    - PageSetLSN
    - BufferIsValid
    - XLogReadBufferForRedo
    - BufferGetPage
    - UnlockReleaseBuffer
    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:968,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:972,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:974,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:975,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:979,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:980,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:982,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:983,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 963
    functionDepth: 4
    functionLinenumber: 963
    functionLinenumberEnd: 984
    functionName: hash_xlog_update_meta_page
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - MarkBufferDirty
    - HashPageGetMeta
    - BufferIsValid
    - XLogRecGetData
    - XLogReadBufferForRedo
    - BufferGetPage
    - UnlockReleaseBuffer
    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:1002,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1022,1
    - Dst: ResolveRecoveryConflictWithSnapshot
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1023,1
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1028,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1032,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1034,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1040,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1043,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1044,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1046,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1047,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1049,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1054,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1055,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1059,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1060,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1062,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1063,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1064
      start: 990
    functionDepth: 4
    functionLinenumber: 990
    functionLinenumberEnd: 1064
    functionName: hash_xlog_vacuum_one_page
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - HashPageGetOpaque
    - MarkBufferDirty
    - BufferIsValid
    - HashPageGetMeta
    - PageIndexMultiDelete
    - XLogReadBufferForRedoExtended
    - XLogRecGetBlockTag
    - XLogRecGetData
    - XLogReadBufferForRedo
    - BufferGetPage
    - ResolveRecoveryConflictWithSnapshot
    - UnlockReleaseBuffer
    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:1069,1
    - Dst: hash_xlog_init_meta_page
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1074,1
    - Dst: hash_xlog_init_bitmap_page
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1077,1
    - Dst: hash_xlog_insert
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1080,1
    - Dst: hash_xlog_add_ovfl_page
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1083,1
    - Dst: hash_xlog_split_allocate_page
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1086,1
    - Dst: hash_xlog_split_page
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1089,1
    - Dst: hash_xlog_split_complete
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1092,1
    - Dst: hash_xlog_move_page_contents
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1095,1
    - Dst: hash_xlog_squeeze_page
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1098,1
    - Dst: hash_xlog_delete
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1101,1
    - Dst: hash_xlog_split_cleanup
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1104,1
    - Dst: hash_xlog_update_meta_page
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1107,1
    - Dst: hash_xlog_vacuum_one_page
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1110,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1113,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 44
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1115
      start: 1066
    functionDepth: 6
    functionLinenumber: 1066
    functionLinenumberEnd: 1115
    functionName: hash_redo
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - hash_xlog_add_ovfl_page
    - hash_xlog_split_page
    - hash_xlog_move_page_contents
    - hash_xlog_squeeze_page
    - hash_xlog_update_meta_page
    - hash_xlog_split_allocate_page
    - hash_xlog_insert
    - XLogRecGetInfo
    - hash_xlog_init_meta_page
    - elog
    - hash_xlog_vacuum_one_page
    - hash_xlog_init_bitmap_page
    - hash_xlog_split_cleanup
    - hash_xlog_delete
    - hash_xlog_split_complete
    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:1127,1
    - Dst: mask_page_hint_bits
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1129,1
    - Dst: mask_unused_space
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1130,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1132,1
    - Dst: mask_page_content
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1140,1
    - Dst: mask_lp_flags
      Src: /src/postgres/src/backend/access/hash/hash_xlog.c:1150,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - pagedata
    - blkno
    argTypes:
    - char*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1158
      start: 1120
    functionDepth: 1
    functionLinenumber: 1120
    functionLinenumberEnd: 1158
    functionName: hash_mask
    functionSourceFile: /src/postgres/src/backend/access/hash/hash_xlog.c
    functionUses: 0
    functionsReached:
    - HashPageGetOpaque
    - mask_page_content
    - mask_page_lsn_and_checksum
    - mask_unused_space
    - mask_lp_flags
    - mask_page_hint_bits
    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:
    - DatumGetBool
    - RelationGetDescr
    - index_getattr
    - FunctionCall2Coll
    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:
    - FunctionCall1Coll
    - index_getprocinfo
    - DatumGetUInt32
    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:
    - RelationGetRelationName
    - RegProcedureIsValid
    - DatumGetUInt32
    - elog
    - get_opfamily_proc
    - OidFunctionCall1Coll
    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:
    - errmsg
    - HashPageGetOpaque
    - HashPageGetMeta
    - BufferGetBlockNumber
    - PageGetSpecialSize
    - ereport
    - errhint
    - BufferGetPage
    - RelationGetRelationName
    - PageIsNew
    - errcode
    - MAXALIGN
    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:
    - build_reloptions
    - lengthof
    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:
    - _hash_datum2hashkey
    - UInt32GetDatum
    linkageType: ''
    returnType: bool
    signature: "bool _hash_convert_tuple(Relation index,\n\t\t\t\t\tDatum *user_values,
      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:
    - Assert
    - PageGetItemId
    - OffsetNumberIsValid
    - _hash_get_indextuple_hashkey
    - PageGetItem
    - PageGetMaxOffsetNumber
    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:
    - Assert
    - PageGetItemId
    - OffsetNumberIsValid
    - _hash_get_indextuple_hashkey
    - PageGetItem
    - PageGetMaxOffsetNumber
    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:
    - HashPageGetMeta
    - _hash_relbuf
    - BUCKET_TO_BLKNO
    - _hash_getbuf
    - BufferGetPage
    - pg_leftmost_one_pos32
    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:
    - HashPageGetMeta
    - _hash_relbuf
    - _hash_get_newbucket_from_oldbucket
    - BUCKET_TO_BLKNO
    - _hash_getbuf
    - BufferGetPage
    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: 5
    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: ItemIdMarkDead
      Src: /src/postgres/src/backend/access/hash/hashutil.c:597,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/hash/hashutil.c:601,1
    - Dst: MarkBufferDirtyHint
      Src: /src/postgres/src/backend/access/hash/hashutil.c:613,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashutil.c:618,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashutil.c:620,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 535
    functionDepth: 4
    functionLinenumber: 535
    functionLinenumberEnd: 621
    functionName: _hash_kill_items
    functionSourceFile: /src/postgres/src/backend/access/hash/hashutil.c
    functionUses: 4
    functionsReached:
    - MarkBufferDirtyHint
    - Assert
    - HashPageGetOpaque
    - PageGetItemId
    - _hash_relbuf
    - LockBuffer
    - HashScanPosIsPinned
    - _hash_getbuf
    - ItemPointerEquals
    - HashScanPosIsValid
    - ItemIdMarkDead
    - OffsetNumberNext
    - BufferGetPage
    - PageGetItem
    - PageGetMaxOffsetNumber
    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:
    - format_operator
    - HeapTupleIsValid
    - list_length
    - get_opfamily_name
    - list_append_unique_oid
    - NameStr
    - ReleaseSysCache
    - identify_opfamily_groups
    - GETSTRUCT
    - check_amproc_signature
    - format_procedure
    - errmsg
    - format_type_be
    - elog
    - check_amoptsproc_signature
    - OidIsValid
    - list_member_oid
    - check_amop_signature
    - ObjectIdGetDatum
    - lfirst
    - ereport
    - SearchSysCache1
    - SearchSysCacheList1
    - ReleaseCatCacheList
    - errcode
    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:
    - errmsg
    - lfirst
    - format_type_be
    - ereport
    - errcode
    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:
    - CommandCounterIncrement
    - OidIsValid
    - get_opclass_input_type
    - opclass_for_family_datatype
    - lfirst
    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:
    - OidIsValid
    - opclass_for_family_datatype
    - 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:
    - ReadBuffer
    - LockBuffer
    - elog
    - _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:
    - ReadBuffer
    - ReleaseBuffer
    - ConditionalLockBufferForCleanup
    - elog
    - _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
    - BufferGetPageSize
    - ReadBufferExtended
    - BufferGetPage
    - _hash_pageinit
    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
    - BufferGetPage
    - BufferGetPageSize
    - _hash_pageinit
    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:
    - BMR_REL
    - BufferGetBlockNumber
    - elog
    - BufferGetPageSize
    - ReadBufferExtended
    - BufferGetPage
    - ExtendBufferedRel
    - RelationGetRelationName
    - RelationGetNumberOfBlocksInFork
    - _hash_pageinit
    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:
    - LockBuffer
    - elog
    - _hash_checkpage
    - ReadBufferExtended
    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:
    - BufferIsValid
    - _hash_dropbuf
    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:
    - MarkBufferDirty
    - PageSetLSN
    - CHECK_FOR_INTERRUPTS
    - _hash_getnewbuf
    - LockBuffer
    - XLogRegisterData
    - RelationGetRelationName
    - _hash_init_metabuffer
    - _hash_initbitmapbuffer
    - RelationNeedsWAL
    - errmsg
    - log_newpage
    - HashPageGetMeta
    - HashGetTargetPageUsage
    - index_getprocid
    - BUCKET_TO_BLKNO
    - elog
    - BufferGetPage
    - _hash_relbuf
    - XLogBeginInsert
    - XLogInsert
    - _hash_initbuf
    - ereport
    - XLogRegisterBuffer
    - RelationGetNumberOfBlocksInFork
    - errcode
    - MAXALIGN
    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:
    - _hash_get_totalbuckets
    - Assert
    - HashPageGetOpaque
    - HashPageGetMeta
    - BMPG_SHIFT
    - pg_nextpower2_32
    - MemSet
    - BufferGetPageSize
    - BMPG_MASK
    - BufferGetPage
    - pg_leftmost_one_pos32
    - _hash_pageinit
    - HashGetMaxBitmapSize
    - _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:640,1
    - Dst: _hash_checkpage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:642,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hashpage.c:643,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:643,1
    - Dst: BUCKET_TO_BLKNO
      Src: /src/postgres/src/backend/access/hash/hashpage.c:689,1
    - Dst: _hash_getbuf_with_condlock_cleanup
      Src: /src/postgres/src/backend/access/hash/hashpage.c:691,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:695,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:696,1
    - Dst: H_BUCKET_BEING_SPLIT
      Src: /src/postgres/src/backend/access/hash/hashpage.c:706,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:721,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:722,1
    - Dst: _hash_finish_split
      Src: /src/postgres/src/backend/access/hash/hashpage.c:724,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:728,1
    - Dst: H_NEEDS_SPLIT_CLEANUP
      Src: /src/postgres/src/backend/access/hash/hashpage.c:746,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:758,1
    - Dst: hashbucketcleanup
      Src: /src/postgres/src/backend/access/hash/hashpage.c:760,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:764,1
    - Dst: BUCKET_TO_BLKNO
      Src: /src/postgres/src/backend/access/hash/hashpage.c:777,1
    - Dst: _hash_spareindex
      Src: /src/postgres/src/backend/access/hash/hashpage.c:783,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:788,1
    - Dst: _hash_get_totalbuckets
      Src: /src/postgres/src/backend/access/hash/hashpage.c:796,1
    - Dst: _hash_alloc_buckets
      Src: /src/postgres/src/backend/access/hash/hashpage.c:797,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:800,1
    - Dst: _hash_getnewbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:816,1
    - Dst: IsBufferCleanupOK
      Src: /src/postgres/src/backend/access/hash/hashpage.c:817,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:819,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:820,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashpage.c:830,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashpage.c:857,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:870,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:871,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashpage.c:882,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:884,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:890,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashpage.c:897,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hashpage.c:900,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: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashpage.c:937,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:937,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashpage.c:938,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:938,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashpage.c:939,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:939,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashpage.c:942,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:945,1
    - Dst: _hash_splitbucket
      Src: /src/postgres/src/backend/access/hash/hashpage.c:948,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:954,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:955,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:963,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 123
    argCount: 2
    argNames:
    - rel
    - metabuf
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 613
    functionDepth: 8
    functionLinenumber: 613
    functionLinenumberEnd: 964
    functionName: _hash_expandtable
    functionSourceFile: /src/postgres/src/backend/access/hash/hashpage.c
    functionUses: 1
    functionsReached:
    - MarkBufferDirty
    - PageSetLSN
    - hashbucketcleanup
    - _hash_getnewbuf
    - LockBuffer
    - _hash_getbuf_with_condlock_cleanup
    - IsBufferCleanupOK
    - XLogRegisterData
    - _hash_splitbucket
    - _hash_get_totalbuckets
    - START_CRIT_SECTION
    - H_NEEDS_SPLIT_CLEANUP
    - _hash_dropbuf
    - END_CRIT_SECTION
    - RelationNeedsWAL
    - HashPageGetMeta
    - XLogRegisterBufData
    - BUCKET_TO_BLKNO
    - BufferGetPage
    - _hash_alloc_buckets
    - _hash_checkpage
    - _hash_spareindex
    - HashPageGetOpaque
    - Assert
    - _hash_relbuf
    - XLogBeginInsert
    - XLogInsert
    - XLogRegisterBuffer
    - _hash_finish_split
    - H_BUCKET_BEING_SPLIT
    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:1015,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1017,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1025,1
    - Dst: log_newpage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1026,1
    - Dst: PageSetChecksumInplace
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1032,1
    - Dst: smgrextend
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1033,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1033,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - rel
    - firstblock
    - nblocks
    argTypes:
    - Relation
    - BlockNumber
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1037
      start: 991
    functionDepth: 2
    functionLinenumber: 991
    functionLinenumberEnd: 1037
    functionName: _hash_alloc_buckets
    functionSourceFile: /src/postgres/src/backend/access/hash/hashpage.c
    functionUses: 1
    functionsReached:
    - log_newpage
    - HashPageGetOpaque
    - PageSetChecksumInplace
    - RelationGetSmgr
    - smgrextend
    - _hash_pageinit
    - RelationNeedsWAL
    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:1097,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1098,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1101,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1102,1
    - Dst: PredicateLockPageSplit
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1105,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1106,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1107,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1122,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1125,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1133,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1133,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1143,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1144,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1147,1
    - Dst: _hash_hashkey2bucket
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1152,1
    - Dst: _hash_get_indextuple_hashkey
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1152,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1162,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1175,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1176,1
    - Dst: PageGetFreeSpaceForMultipleTuples
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1178,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1184,1
    - Dst: _hash_pgaddmultitup
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1186,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1187,1
    - Dst: log_split_page
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1189,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1191,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1194,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1198,1
    - Dst: _hash_addovflpage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1203,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1204,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1205,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1216,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1224,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1226,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1229,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1235,1
    - Dst: _hash_pgaddmultitup
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1237,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1238,1
    - Dst: log_split_page
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1240,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1242,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1245,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1247,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1251,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1256,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1257,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1258,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1269,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1270,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1271,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1273,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1274,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1275,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1277,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1294,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1295,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1297,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1305,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1307,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1309,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1310,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1312,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1314,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1314,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1315,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1315,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1318,1
    - Dst: IsBufferCleanupOK
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1328,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1330,1
    - Dst: hashbucketcleanup
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1331,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1332,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1338,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1339,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 97
    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: 1341
      start: 1072
    functionDepth: 8
    functionLinenumber: 1072
    functionLinenumberEnd: 1341
    functionName: _hash_splitbucket
    functionSourceFile: /src/postgres/src/backend/access/hash/hashpage.c
    functionUses: 1
    functionsReached:
    - MarkBufferDirty
    - PageSetLSN
    - hashbucketcleanup
    - LockBuffer
    - PageGetFreeSpaceForMultipleTuples
    - IsBufferCleanupOK
    - XLogRegisterData
    - _hash_get_indextuple_hashkey
    - _hash_pgaddmultitup
    - IndexTupleSize
    - pfree
    - START_CRIT_SECTION
    - BufferGetBlockNumber
    - _hash_hashkey2bucket
    - _hash_getbuf
    - log_split_page
    - OffsetNumberNext
    - BlockNumberIsValid
    - PageGetItem
    - ItemIdIsDead
    - RelationNeedsWAL
    - PageGetItemId
    - _hash_addovflpage
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - HashPageGetOpaque
    - Assert
    - _hash_relbuf
    - XLogBeginInsert
    - XLogInsert
    - PredicateLockPageSplit
    - hash_search
    - XLogRegisterBuffer
    - CopyIndexTuple
    - END_CRIT_SECTION
    - MAXALIGN
    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:1376,1
    - Dst: _hash_get_newblock_from_oldbucket
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1381,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1391,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1398,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1399,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1402,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1405,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1410,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1411,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1413,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1415,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1425,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1427,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1430,1
    - Dst: ConditionalLockBufferForCleanup
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1440,1
    - Dst: hash_destroy
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1442,1
    - Dst: ConditionalLockBufferForCleanup
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1445,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1447,1
    - Dst: hash_destroy
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1448,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1452,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1453,1
    - Dst: _hash_splitbucket
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1456,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1460,1
    - Dst: hash_destroy
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1461,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: 1462
      start: 1355
    functionDepth: 9
    functionLinenumber: 1355
    functionLinenumberEnd: 1462
    functionName: _hash_finish_split
    functionSourceFile: /src/postgres/src/backend/access/hash/hashpage.c
    functionUses: 2
    functionsReached:
    - HashPageGetOpaque
    - PageGetItemId
    - Assert
    - _hash_relbuf
    - LockBuffer
    - hash_create
    - _hash_get_newblock_from_oldbucket
    - hash_destroy
    - ConditionalLockBufferForCleanup
    - _hash_getbuf
    - hash_search
    - _hash_dropbuf
    - OffsetNumberNext
    - BufferGetPage
    - BlockNumberIsValid
    - PageGetItem
    - _hash_splitbucket
    - PageGetMaxOffsetNumber
    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:1476,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1480,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1482,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1484,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1486,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1486,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - rel
    - buf
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1488
      start: 1473
    functionDepth: 4
    functionLinenumber: 1473
    functionLinenumberEnd: 1488
    functionName: log_split_page
    functionSourceFile: /src/postgres/src/backend/access/hash/hashpage.c
    functionUses: 2
    functionsReached:
    - PageSetLSN
    - XLogBeginInsert
    - XLogInsert
    - XLogRegisterBuffer
    - BufferGetPage
    - RelationNeedsWAL
    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:1505,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1517,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1521,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1522,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1524,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1526,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1531,1
    - Dst: HashPageGetMeta
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1531,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1535,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - rel
    - metabuf
    - force_refresh
    argTypes:
    - Relation
    - Buffer*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1539
      start: 1500
    functionDepth: 6
    functionLinenumber: 1500
    functionLinenumberEnd: 1539
    functionName: _hash_getcachedmetap
    functionSourceFile: /src/postgres/src/backend/access/hash/hashpage.c
    functionUses: 1
    functionsReached:
    - Assert
    - BufferIsValid
    - HashPageGetMeta
    - memcpy
    - LockBuffer
    - _hash_getbuf
    - BufferGetPage
    - MemoryContextAlloc
    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:1571,1
    - Dst: _hash_getcachedmetap
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1573,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1574,1
    - Dst: _hash_hashkey2bucket
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1584,1
    - Dst: BUCKET_TO_BLKNO
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1589,1
    - Dst: _hash_getbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1592,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1593,1
    - Dst: HashPageGetOpaque
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1594,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1595,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1596,1
    - Dst: _hash_relbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1605,1
    - Dst: _hash_getcachedmetap
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1606,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1607,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1610,1
    - Dst: _hash_dropbuf
      Src: /src/postgres/src/backend/access/hash/hashpage.c:1611,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 4
    argNames:
    - rel
    - hashkey
    - access
    - cachedmetap
    argTypes:
    - Relation
    - uint32
    - int
    - HashMetaPage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1617
      start: 1558
    functionDepth: 7
    functionLinenumber: 1558
    functionLinenumberEnd: 1617
    functionName: _hash_getbucketbuf_from_hashkey
    functionSourceFile: /src/postgres/src/backend/access/hash/hashpage.c
    functionUses: 2
    functionsReached:
    - Assert
    - HashPageGetOpaque
    - BufferIsValid
    - _hash_relbuf
    - _hash_hashkey2bucket
    - BUCKET_TO_BLKNO
    - _hash_dropbuf
    - _hash_getbuf
    - _hash_getcachedmetap
    - BufferGetPage
    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:154,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:155,1
    - Dst: PageGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:159,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:160,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:163,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:165,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:166,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:166,1
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:171,1
    - Dst: BTGetFillFactor
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:172,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:180,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:181,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:189,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:189,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:199,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:208,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:210,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:214,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:215,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:215,1
    - Dst: _bt_recsplitloc
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:225,1
    - Dst: _bt_recsplitloc
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:227,1
    - Dst: _bt_recsplitloc
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:234,1
    - Dst: _bt_recsplitloc
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:240,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:251,1
    - Dst: _bt_recsplitloc
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:253,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:260,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:261,1
    - Dst: _bt_afternewitemoff
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:292,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:315,1
    - Dst: _bt_deltasortsplits
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:345,1
    - Dst: _bt_defaultinterval
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:348,1
    - Dst: _bt_strategy
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:364,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:399,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:401,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:402,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:408,1
    - Dst: _bt_deltasortsplits
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:413,1
    - Dst: _bt_bestsplitloc
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:423,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:425,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: 428
      start: 128
    functionDepth: 2
    functionLinenumber: 128
    functionLinenumberEnd: 428
    functionName: _bt_findsplitloc
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c
    functionUses: 0
    functionsReached:
    - PageGetPageSize
    - P_RIGHTMOST
    - _bt_bestsplitloc
    - BTreeTupleIsPosting
    - _bt_defaultinterval
    - RelationGetRelationName
    - BTGetFillFactor
    - pfree
    - OffsetNumberNext
    - P_FIRSTDATAKEY
    - IndexRelationGetNumberOfKeyAttributes
    - PageGetItemId
    - _bt_recsplitloc
    - _bt_afternewitemoff
    - elog
    - P_ISLEAF
    - _bt_deltasortsplits
    - palloc
    - PageGetExactFreeSpace
    - PageGetMaxOffsetNumber
    - Assert
    - BTPageGetOpaque
    - ItemIdGetLength
    - _bt_strategy
    - MAXALIGN
    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:486,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:487,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:489,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:490,1
    - Dst: BTreeTupleGetPostingOffset
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:491,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:525,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:542,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:547,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:550,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: 559
      start: 448
    functionDepth: 3
    functionLinenumber: 448
    functionLinenumberEnd: 559
    functionName: _bt_recsplitloc
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c
    functionUses: 1
    functionsReached:
    - Min
    - Assert
    - PageGetItemId
    - PageGetItem
    - BTreeTupleGetPostingOffset
    - BTreeTupleIsPosting
    - IndexTupleSize
    - MAXALIGN
    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:587,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - state
    - fillfactormult
    - usemult
    argTypes:
    - FindSplitData*
    - double
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 565
    functionDepth: 1
    functionLinenumber: 565
    functionLinenumberEnd: 588
    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:599,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 593
    functionDepth: 1
    functionLinenumber: 593
    functionLinenumberEnd: 600
    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:638,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:640,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:673,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:688,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:689,1
    - Dst: _bt_keep_natts_fast
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:690,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:714,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:714,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:715,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:717,1
    - Dst: _bt_adjacenthtid
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:718,1
    - Dst: _bt_keep_natts_fast
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:721,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 4
    argNames:
    - state
    - maxoff
    - leaffillfactor
    - usemult
    argTypes:
    - FindSplitData*
    - OffsetNumber
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 629
    functionDepth: 2
    functionLinenumber: 629
    functionLinenumberEnd: 739
    functionName: _bt_afternewitemoff
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c
    functionUses: 1
    functionsReached:
    - IndexRelationGetNumberOfKeyAttributes
    - _bt_adjacenthtid
    - Assert
    - PageGetItemId
    - OffsetNumberPrev
    - BTreeTupleIsPosting
    - _bt_keep_natts_fast
    - PageGetItem
    - MAXALIGN
    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:754,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:755,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:763,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - lowhtid
    - highhtid
    argTypes:
    - ItemPointer
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 748
    functionDepth: 3
    functionLinenumber: 748
    functionLinenumberEnd: 767
    functionName: _bt_adjacenthtid
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c
    functionUses: 1
    functionsReached:
    - ItemPointerGetOffsetNumber
    - ItemPointerGetBlockNumber
    linkageType: ''
    returnType: bool
    signature: bool _bt_adjacenthtid(ItemPointer lowhtid, ItemPointer highhtid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:793,1
    - Dst: _bt_split_penalty
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:802,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 4
    argNames:
    - state
    - perfectpenalty
    - newitemonleft
    - strategy
    argTypes:
    - FindSplitData*
    - int
    - bool*
    - FindSplitStrat
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 787
    functionDepth: 1
    functionLinenumber: 787
    functionLinenumberEnd: 847
    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: 920
      start: 875
    functionDepth: 0
    functionLinenumber: 875
    functionLinenumberEnd: 920
    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:942,1
    - Dst: _bt_interval_edges
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:961,1
    - Dst: _bt_split_lastleft
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:962,1
    - Dst: _bt_split_firstright
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:963,1
    - Dst: _bt_keep_natts_fast
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:970,1
    - Dst: _bt_split_lastleft
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:982,1
    - Dst: _bt_split_firstright
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:983,1
    - Dst: _bt_keep_natts_fast
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:991,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1027,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1028,1
    - Dst: _bt_keep_natts_fast
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1029,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 4
    argNames:
    - state
    - leftpage
    - rightpage
    - strategy
    argTypes:
    - FindSplitData*
    - SplitPoint*
    - SplitPoint*
    - FindSplitStrat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 933
    functionDepth: 2
    functionLinenumber: 933
    functionLinenumberEnd: 1044
    functionName: _bt_strategy
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c
    functionUses: 1
    functionsReached:
    - IndexRelationGetNumberOfKeyAttributes
    - _bt_split_lastleft
    - PageGetItemId
    - _bt_split_firstright
    - _bt_interval_edges
    - _bt_keep_natts_fast
    - PageGetItem
    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:1055,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1087,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1097,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1104,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1115,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 33
    argCount: 3
    argNames:
    - state
    - leftinterval
    - rightinterval
    argTypes:
    - FindSplitData*
    - SplitPoint**
    - SplitPoint**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1051
    functionDepth: 1
    functionLinenumber: 1051
    functionLinenumberEnd: 1116
    functionName: _bt_interval_edges
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c
    functionUses: 1
    functionsReached:
    - Min
    - Assert
    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:1144,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1146,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1146,1
    - Dst: _bt_split_lastleft
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1149,1
    - Dst: _bt_split_firstright
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1150,1
    - Dst: _bt_keep_natts_fast
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1152,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - state
    - split
    argTypes:
    - FindSplitData*
    - SplitPoint*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1153
      start: 1130
    functionDepth: 1
    functionLinenumber: 1130
    functionLinenumberEnd: 1153
    functionName: _bt_split_penalty
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c
    functionUses: 1
    functionsReached:
    - _bt_split_lastleft
    - PageGetItemId
    - _bt_split_firstright
    - ItemIdGetLength
    - _bt_keep_natts_fast
    - MAXALIGN
    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:1166,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1167,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1168,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - state
    - split
    argTypes:
    - FindSplitData*
    - SplitPoint*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1169
      start: 1158
    functionDepth: 2
    functionLinenumber: 1158
    functionLinenumberEnd: 1169
    functionName: _bt_split_lastleft
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c
    functionUses: 2
    functionsReached:
    - PageGetItem
    - PageGetItemId
    - OffsetNumberPrev
    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:1182,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsplitloc.c:1183,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - state
    - split
    argTypes:
    - FindSplitData*
    - SplitPoint*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1184
      start: 1174
    functionDepth: 2
    functionLinenumber: 1174
    functionLinenumberEnd: 1184
    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:
    - format_operator
    - HeapTupleIsValid
    - list_length
    - get_opfamily_name
    - list_append_unique_oid
    - NameStr
    - ReleaseSysCache
    - identify_opfamily_groups
    - GETSTRUCT
    - check_amproc_signature
    - format_procedure
    - errmsg
    - format_type_be
    - elog
    - check_amoptsproc_signature
    - OidIsValid
    - check_amop_signature
    - lfirst
    - ObjectIdGetDatum
    - ereport
    - SearchSysCache1
    - SearchSysCacheList1
    - ReleaseCatCacheList
    - errcode
    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:
    - errmsg
    - lfirst
    - list_append_unique_oid
    - format_type_be
    - ereport
    - errcode
    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:
    - CommandCounterIncrement
    - OidIsValid
    - get_opclass_input_type
    - opclass_for_family_datatype
    - lfirst
    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:
    - OidIsValid
    - opclass_for_family_datatype
    - 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:73,1
    - Dst: BTPageGetMeta
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:75,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 4
    argNames:
    - page
    - rootbknum
    - level
    - allequalimage
    argTypes:
    - Page
    - BlockNumber
    - uint32
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 96
    functionName: _bt_initmetapage
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - BTPageGetOpaque
    - BTPageGetMeta
    - _bt_pageinit
    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:112,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:113,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:116,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:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 131
    functionName: _bt_upgrademetapage
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - BTPageGetOpaque
    - BTPageGetMeta
    - Assert
    linkageType: ''
    returnType: void
    signature: void _bt_upgrademetapage(Page page)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:148,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:149,1
    - Dst: BTPageGetMeta
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:150,1
    - Dst: P_ISMETA
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:153,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:155,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:156,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:157,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:158,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:162,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:163,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:164,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:166,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - rel
    - metabuf
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 141
    functionDepth: 4
    functionLinenumber: 141
    functionLinenumberEnd: 170
    functionName: _bt_getmeta
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - P_ISMETA
    - BTPageGetOpaque
    - ereport
    - BufferGetPage
    - RelationGetRelationName
    - BTPageGetMeta
    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:192,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:193,1
    - Dst: BTPageGetMeta
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:194,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:203,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:208,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:219,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 178
    functionDepth: 4
    functionLinenumber: 178
    functionLinenumberEnd: 223
    functionName: _bt_vacuum_needs_cleanup
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - _bt_relbuf
    - BufferGetPage
    - RelationGetNumberOfBlocks
    - _bt_getbuf
    - BTPageGetMeta
    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:256,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:257,1
    - Dst: BTPageGetMeta
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:258,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:265,1
    - Dst: _bt_unlockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:270,1
    - Dst: _bt_lockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:271,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:273,1
    - Dst: _bt_upgrademetapage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:277,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:282,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:285,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:290,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:291,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:293,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:302,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:304,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:306,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:309,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:311,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 2
    argNames:
    - rel
    - num_delpages
    argTypes:
    - Relation
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 231
    functionDepth: 4
    functionLinenumber: 231
    functionLinenumberEnd: 312
    functionName: _bt_set_cleanup_info
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - _bt_unlockbuf
    - MarkBufferDirty
    - START_CRIT_SECTION
    - Assert
    - PageSetLSN
    - _bt_upgrademetapage
    - XLogBeginInsert
    - _bt_relbuf
    - XLogRegisterBufData
    - XLogInsert
    - _bt_lockbuf
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    - BufferGetPage
    - _bt_getbuf
    - BTPageGetMeta
    - RelationNeedsWAL
    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:354,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:365,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:366,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:367,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:368,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:373,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:376,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:377,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:378,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:387,1
    - Dst: P_LEFTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:389,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:390,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:395,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:398,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:402,1
    - Dst: _bt_getmeta
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:403,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:413,1
    - Dst: _bt_unlockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:418,1
    - Dst: _bt_lockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:419,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:434,1
    - Dst: _bt_getroot
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:435,1
    - Dst: _bt_allocbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:443,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:444,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:445,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:446,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:452,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:455,1
    - Dst: _bt_upgrademetapage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:459,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:468,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:469,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:472,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:478,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:479,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:480,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:482,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:491,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:496,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:498,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:500,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:501,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:504,1
    - Dst: _bt_unlockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:511,1
    - Dst: _bt_lockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:512,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:515,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:520,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:526,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:528,1
    - Dst: _bt_relandgetbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:538,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:539,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:540,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:542,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:546,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:547,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:548,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:553,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:554,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 101
    argCount: 3
    argNames:
    - rel
    - heaprel
    - access
    argTypes:
    - Relation
    - Relation
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 343
    functionDepth: 5
    functionLinenumber: 343
    functionLinenumberEnd: 563
    functionName: _bt_getroot
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 1
    functionsReached:
    - _bt_unlockbuf
    - MarkBufferDirty
    - PageSetLSN
    - P_RIGHTMOST
    - XLogRegisterData
    - P_LEFTMOST
    - _bt_getbuf
    - RelationGetRelationName
    - pfree
    - _bt_getroot
    - START_CRIT_SECTION
    - BufferGetBlockNumber
    - _bt_relandgetbuf
    - memcpy
    - P_IGNORE
    - RelationNeedsWAL
    - _bt_upgrademetapage
    - XLogRegisterBufData
    - _bt_allocbuf
    - elog
    - _bt_getmeta
    - _bt_lockbuf
    - BufferGetPage
    - Assert
    - XLogBeginInsert
    - _bt_relbuf
    - XLogInsert
    - BTPageGetOpaque
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    - MemoryContextAlloc
    linkageType: ''
    returnType: Buffer
    signature: Buffer _bt_getroot(Relation rel, Relation heaprel, int access)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:599,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:602,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:603,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:604,1
    - Dst: BTPageGetMeta
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:605,1
    - Dst: P_ISMETA
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:607,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:609,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:610,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:611,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:612,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:616,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:617,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:618,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:620,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:626,1
    - Dst: _bt_relandgetbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:641,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:642,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:643,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:645,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:649,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:650,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:651,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:656,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:657,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 579
    functionDepth: 4
    functionLinenumber: 579
    functionLinenumberEnd: 661
    functionName: _bt_gettrueroot
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - errcode
    - P_IGNORE
    - P_ISMETA
    - _bt_relbuf
    - BTPageGetOpaque
    - ereport
    - P_RIGHTMOST
    - _bt_relandgetbuf
    - elog
    - BufferGetPage
    - RelationGetRelationName
    - _bt_getbuf
    - BTPageGetMeta
    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:683,1
    - Dst: _bt_getmeta
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:684,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:693,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:700,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:702,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:703,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:709,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:710,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:711,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:712,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:714,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 717
      start: 674
    functionDepth: 5
    functionLinenumber: 674
    functionLinenumberEnd: 717
    functionName: _bt_getrootheight
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - Assert
    - memcpy
    - _bt_relbuf
    - _bt_getmeta
    - _bt_getbuf
    - MemoryContextAlloc
    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:747,1
    - Dst: _bt_getmeta
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:748,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:760,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:773,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:775,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:776,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:782,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:783,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:784,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:785,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:787,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 3
    argNames:
    - rel
    - heapkeyspace
    - allequalimage
    argTypes:
    - Relation
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 738
    functionDepth: 5
    functionLinenumber: 738
    functionLinenumberEnd: 791
    functionName: _bt_metaversion
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - Assert
    - memcpy
    - _bt_relbuf
    - _bt_getmeta
    - _bt_getbuf
    - MemoryContextAlloc
    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:799,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:807,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:808,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:809,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:810,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:811,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:812,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:813,1
    - Dst: PageGetSpecialSize
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:818,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:818,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:819,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:820,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:821,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:822,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:823,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:824,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - rel
    - buf
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 796
    functionDepth: 4
    functionLinenumber: 796
    functionLinenumberEnd: 825
    functionName: _bt_checkpage
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - errmsg
    - BufferGetBlockNumber
    - PageGetSpecialSize
    - ereport
    - errhint
    - BufferGetPage
    - RelationGetRelationName
    - PageIsNew
    - errcode
    - 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:849,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:849,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:852,1
    - Dst: _bt_lockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:853,1
    - Dst: _bt_checkpage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:854,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - rel
    - blkno
    - access
    argTypes:
    - Relation
    - BlockNumber
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 844
    functionDepth: 5
    functionLinenumber: 844
    functionLinenumberEnd: 857
    functionName: _bt_getbuf
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 6
    functionsReached:
    - ReadBuffer
    - Assert
    - _bt_checkpage
    - _bt_lockbuf
    - BlockNumberIsValid
    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:875,1
    - Dst: GetFreeIndexPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:903,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:906,1
    - Dst: _bt_conditionallockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:907,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:909,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:918,1
    - Dst: _bt_pageinit
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:921,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:921,1
    - Dst: BTPageIsRecyclable
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:925,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:933,1
    - Dst: XLogStandbyInfoActive
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:933,1
    - Dst: BTPageGetDeleteXid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:946,1
    - Dst: RelationIsAccessibleInLogicalDecoding
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:948,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:950,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:951,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:953,1
    - Dst: _bt_pageinit
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:957,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:957,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:960,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:961,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:965,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:967,1
    - Dst: ExtendBufferedRel
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:978,1
    - Dst: BMR_REL
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:978,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:979,1
    - Dst: VALGRIND_MAKE_MEM_DEFINED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:980,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:980,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:983,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:984,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:984,1
    - Dst: _bt_pageinit
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:985,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:985,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 2
    argNames:
    - rel
    - heaprel
    argTypes:
    - Relation
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 988
      start: 868
    functionDepth: 4
    functionLinenumber: 868
    functionLinenumberEnd: 988
    functionName: _bt_allocbuf
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 1
    functionsReached:
    - ReleaseBuffer
    - RelationUsesLocalBuffers
    - BufferGetPageSize
    - XLogRegisterData
    - VALGRIND_MAKE_MEM_DEFINED
    - BTPageGetDeleteXid
    - _bt_pageinit
    - PageIsNew
    - RelationNeedsWAL
    - ReadBuffer
    - GetFreeIndexPage
    - elog
    - BTPageIsRecyclable
    - BufferGetPage
    - XLogStandbyInfoActive
    - _bt_conditionallockbuf
    - BMR_REL
    - Assert
    - XLogBeginInsert
    - _bt_relbuf
    - XLogInsert
    - RelationIsAccessibleInLogicalDecoding
    - ExtendBufferedRel
    linkageType: ''
    returnType: Buffer
    signature: Buffer _bt_allocbuf(Relation rel, Relation heaprel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1007,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1007,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1008,1
    - Dst: _bt_unlockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1009,1
    - Dst: ReleaseAndReadBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1010,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:1013,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - rel
    - obuf
    - blkno
    - access
    argTypes:
    - Relation
    - Buffer
    - BlockNumber
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 1002
    functionDepth: 5
    functionLinenumber: 1002
    functionLinenumberEnd: 1015
    functionName: _bt_relandgetbuf
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 2
    functionsReached:
    - _bt_unlockbuf
    - Assert
    - BufferIsValid
    - _bt_checkpage
    - ReleaseAndReadBuffer
    - _bt_lockbuf
    - BlockNumberIsValid
    linkageType: ''
    returnType: Buffer
    signature: Buffer _bt_relandgetbuf(Relation rel, Buffer obuf, BlockNumber blkno,
      int access)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _bt_unlockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1025,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1026,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - rel
    - buf
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1027
      start: 1022
    functionDepth: 1
    functionLinenumber: 1022
    functionLinenumberEnd: 1027
    functionName: _bt_relbuf
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 7
    functionsReached:
    - _bt_unlockbuf
    - ReleaseBuffer
    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:1042,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1062,1
    - Dst: VALGRIND_MAKE_MEM_DEFINED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1063,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1063,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - rel
    - buf
    - access
    argTypes:
    - Relation
    - Buffer
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1064
      start: 1038
    functionDepth: 4
    functionLinenumber: 1038
    functionLinenumberEnd: 1064
    functionName: _bt_lockbuf
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 4
    functionsReached:
    - BufferGetPage
    - LockBuffer
    - RelationUsesLocalBuffers
    - VALGRIND_MAKE_MEM_DEFINED
    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:1076,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1076,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1079,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1081,1
    - Dst: VALGRIND_MAKE_MEM_NOACCESS
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1082,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1082,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - rel
    - buf
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1069
    functionDepth: 4
    functionLinenumber: 1069
    functionLinenumberEnd: 1083
    functionName: _bt_unlockbuf
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 4
    functionsReached:
    - VALGRIND_MAKE_MEM_NOACCESS
    - LockBuffer
    - RelationUsesLocalBuffers
    - VALGRIND_CHECK_MEM_IS_DEFINED
    - BufferGetPage
    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:1096,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1099,1
    - Dst: VALGRIND_MAKE_MEM_DEFINED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1100,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - rel
    - buf
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 1092
    functionDepth: 4
    functionLinenumber: 1092
    functionLinenumberEnd: 1103
    functionName: _bt_conditionallockbuf
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 1
    functionsReached:
    - BufferGetPage
    - RelationUsesLocalBuffers
    - ConditionalLockBuffer
    - 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:1115,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1115,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1118,1
    - Dst: LockBufferForCleanup
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - rel
    - buf
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1120
      start: 1108
    functionDepth: 4
    functionLinenumber: 1108
    functionLinenumberEnd: 1120
    functionName: _bt_upgradelockbufcleanup
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - BufferGetPage
    - LockBuffer
    - VALGRIND_CHECK_MEM_IS_DEFINED
    - LockBufferForCleanup
    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:1131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - page
    - size
    argTypes:
    - Page
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1132
      start: 1128
    functionDepth: 1
    functionLinenumber: 1128
    functionLinenumberEnd: 1132
    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:1158,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1160,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1166,1
    - Dst: _bt_delitems_update
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1170,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1175,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1196,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1196,1
    - Dst: PageIndexTupleOverwrite
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1197,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1199,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1200,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1200,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1205,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1211,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1224,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1235,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1236,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1237,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1240,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1245,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1247,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1250,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1252,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1255,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1259,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1262,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 6
    argNames:
    - rel
    - buf
    - deletable
    - ndeletable
    - updatable
    - nupdatable
    argTypes:
    - Relation
    - Buffer
    - OffsetNumber*
    - int
    - BTVacuumPosting*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1263
      start: 1153
    functionDepth: 4
    functionLinenumber: 1153
    functionLinenumberEnd: 1263
    functionName: _bt_delitems_vacuum
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - MarkBufferDirty
    - PageSetLSN
    - XLogRegisterData
    - RelationGetRelationName
    - IndexTupleSize
    - pfree
    - START_CRIT_SECTION
    - BufferGetBlockNumber
    - RelationNeedsWAL
    - XLogRegisterBufData
    - elog
    - BufferGetPage
    - Assert
    - XLogBeginInsert
    - XLogInsert
    - PageIndexMultiDelete
    - BTPageGetOpaque
    - _bt_delitems_update
    - PageIndexTupleOverwrite
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    - MAXALIGN
    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:1289,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1291,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1297,1
    - Dst: _bt_delitems_update
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1301,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1306,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1316,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1316,1
    - Dst: PageIndexTupleOverwrite
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1317,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1319,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1320,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1320,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1324,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1330,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1341,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1354,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1355,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1356,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1359,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1364,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1366,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1369,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1371,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1374,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1378,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1381,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    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: 1382
      start: 1283
    functionDepth: 4
    functionLinenumber: 1283
    functionLinenumberEnd: 1382
    functionName: _bt_delitems_delete
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - MarkBufferDirty
    - PageSetLSN
    - XLogRegisterData
    - RelationGetRelationName
    - IndexTupleSize
    - pfree
    - START_CRIT_SECTION
    - BufferGetBlockNumber
    - RelationNeedsWAL
    - XLogRegisterBufData
    - elog
    - BufferGetPage
    - Assert
    - XLogBeginInsert
    - XLogInsert
    - PageIndexMultiDelete
    - BTPageGetOpaque
    - _bt_delitems_update
    - PageIndexTupleOverwrite
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    - MAXALIGN
    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:1413,1
    - Dst: _bt_update_posting
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1421,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1437,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1446,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1451,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: 1457
      start: 1404
    functionDepth: 1
    functionLinenumber: 1404
    functionLinenumberEnd: 1457
    functionName: _bt_delitems_update
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 2
    functionsReached:
    - memcpy
    - Assert
    - palloc
    - _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:1469,1
    - Dst: pg_cmp_s16
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1471,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1472
      start: 1463
    functionDepth: 1
    functionLinenumber: 1463
    functionLinenumberEnd: 1472
    functionName: _bt_delitems_cmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - pg_cmp_s16
    - Assert
    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:1516,1
    - Dst: table_index_delete_tuples
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1526,1
    - Dst: RelationIsAccessibleInLogicalDecoding
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1527,1
    - Dst: XLogStandbyInfoActive
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1530,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1544,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1548,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1557,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1558,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1563,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1563,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1571,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1571,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1572,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1572,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1572,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1574,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1574,1
    - Dst: BTreeTupleGetMaxHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1574,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1579,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1582,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1582,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1599,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1602,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1617,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1626,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1641,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1661,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1666,1
    - Dst: _bt_delitems_delete
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1673,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1678,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: 1679
      start: 1512
    functionDepth: 6
    functionLinenumber: 1512
    functionLinenumberEnd: 1679
    functionName: _bt_delitems_delete_check
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - BTreeTupleGetPostingN
    - BTreeTupleIsPosting
    - BTreeTupleGetMaxHeapTID
    - pfree
    - OffsetNumberIsValid
    - _bt_delitems_delete
    - BTreeTupleGetNPosting
    - PageGetItem
    - qsort
    - PageGetItemId
    - ItemPointerEquals
    - BufferGetPage
    - palloc
    - XLogStandbyInfoActive
    - Assert
    - table_index_delete_tuples
    - RelationIsAccessibleInLogicalDecoding
    - ItemPointerCompare
    - BTreeTupleGetHeapTID
    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:1706,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1707,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1708,1
    - Dst: P_INCOMPLETE_SPLIT
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1718,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1719,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - rel
    - leftsib
    - target
    argTypes:
    - Relation
    - BlockNumber
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1722
      start: 1694
    functionDepth: 6
    functionLinenumber: 1694
    functionLinenumberEnd: 1722
    functionName: _bt_leftsib_splitflag
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - _bt_relbuf
    - BTPageGetOpaque
    - P_INCOMPLETE_SPLIT
    - BufferGetPage
    - _bt_getbuf
    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:1759,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1761,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1762,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1763,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1765,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1765,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1765,1
    - Dst: P_ISHALFDEAD
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1766,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1767,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - rel
    - leafrightsib
    argTypes:
    - Relation
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1770
      start: 1751
    functionDepth: 6
    functionLinenumber: 1751
    functionLinenumberEnd: 1770
    functionName: _bt_rightsib_halfdeadflag
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - P_ISHALFDEAD
    - Assert
    - _bt_relbuf
    - BTPageGetOpaque
    - P_ISDELETED
    - P_ISLEAF
    - BufferGetPage
    - _bt_getbuf
    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:1814,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1831,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1832,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1844,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1844,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1845,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1845,1
    - Dst: P_ISHALFDEAD
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1858,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1859,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1860,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1861,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1862,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1863,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1865,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1866,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1867,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1868,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1869,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1871,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1873,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1896,1
    - Dst: P_ISROOT
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1896,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1897,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1897,1
    - Dst: P_INCOMPLETE_SPLIT
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1898,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1901,1
    - Dst: P_ISHALFDEAD
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1901,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1903,1
    - Dst: P_ISHALFDEAD
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1912,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1933,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1934,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1934,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1937,1
    - Dst: _bt_unlockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1943,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1949,1
    - Dst: _bt_leftsib_splitflag
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1950,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1952,1
    - Dst: _bt_mkscankey
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1965,1
    - Dst: _bt_search
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1970,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1972,1
    - Dst: _bt_lockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:1989,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2000,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2000,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2000,1
    - Dst: _bt_mark_page_halfdead
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2001,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2004,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2015,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2015,1
    - Dst: P_ISHALFDEAD
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2015,1
    - Dst: P_ISHALFDEAD
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2016,1
    - Dst: _bt_unlink_halfdead_page
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2019,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2030,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2035,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2035,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2035,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2039,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2045,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2065,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 60
    argCount: 3
    argNames:
    - rel
    - leafbuf
    - vstate
    argTypes:
    - Relation
    - Buffer
    - BTVacState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2067
      start: 1801
    functionDepth: 7
    functionLinenumber: 1801
    functionLinenumberEnd: 2067
    functionName: _bt_pagedel
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - P_ISHALFDEAD
    - _bt_unlockbuf
    - _bt_search
    - CHECK_FOR_INTERRUPTS
    - ReleaseBuffer
    - P_RIGHTMOST
    - errhint
    - RelationGetRelationName
    - _bt_getbuf
    - _bt_leftsib_splitflag
    - _bt_mark_page_halfdead
    - BufferGetBlockNumber
    - P_ISDELETED
    - PageGetItem
    - P_IGNORE
    - P_FIRSTDATAKEY
    - errmsg
    - PageGetItemId
    - _bt_unlink_halfdead_page
    - P_ISROOT
    - P_INCOMPLETE_SPLIT
    - P_ISLEAF
    - BufferGetPage
    - _bt_lockbuf
    - PageGetMaxOffsetNumber
    - Assert
    - _bt_relbuf
    - BTPageGetOpaque
    - ereport
    - errmsg_internal
    - _bt_mkscankey
    - CopyIndexTuple
    - errcode
    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:2104,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2105,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2107,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2107,1
    - Dst: P_ISROOT
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2107,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2108,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2108,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2109,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2109,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2110,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2115,1
    - Dst: _bt_rightsib_halfdeadflag
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2125,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2127,1
    - Dst: _bt_lock_subtree_parent
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2149,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2154,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2155,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2163,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2164,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2165,1
    - Dst: BTreeTupleGetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2165,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2168,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2169,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2170,1
    - Dst: BTreeTupleGetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2179,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2181,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2182,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2183,1
    - Dst: BTreeTupleGetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2185,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2186,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2187,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2189,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2190,1
    - Dst: PredicateLockPageCombine
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2198,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2201,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2215,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2216,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2218,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2219,1
    - Dst: BTreeTupleSetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2220,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2222,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2223,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: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2234,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2234,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2235,1
    - Dst: BTreeTupleSetTopParent
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2238,1
    - Dst: BTreeTupleSetTopParent
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2240,1
    - Dst: PageIndexTupleOverwrite
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2242,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2243,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2244,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2247,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2248,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2251,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2263,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2264,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2265,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2267,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2268,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2272,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2274,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2276,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2277,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2278,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2279,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2282,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2284,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 74
    argCount: 4
    argNames:
    - rel
    - heaprel
    - leafbuf
    - stack
    argTypes:
    - Relation
    - Relation
    - Buffer
    - BTStack
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2286
      start: 2087
    functionDepth: 7
    functionLinenumber: 2087
    functionLinenumberEnd: 2286
    functionName: _bt_mark_page_halfdead
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 1
    functionsReached:
    - MarkBufferDirty
    - PageIndexTupleDelete
    - PageSetLSN
    - BTreeTupleSetTopParent
    - P_RIGHTMOST
    - BTreeTupleGetDownLink
    - XLogRegisterData
    - RelationGetRelationName
    - IndexTupleSize
    - _bt_rightsib_halfdeadflag
    - START_CRIT_SECTION
    - BufferGetBlockNumber
    - OffsetNumberNext
    - BTreeTupleSetDownLink
    - PageGetItem
    - P_IGNORE
    - P_FIRSTDATAKEY
    - RelationNeedsWAL
    - PageGetItemId
    - PredicateLockPageCombine
    - P_ISROOT
    - elog
    - MemSet
    - P_ISLEAF
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - Assert
    - _bt_lock_subtree_parent
    - XLogBeginInsert
    - _bt_relbuf
    - XLogInsert
    - BTPageGetOpaque
    - ereport
    - errmsg_internal
    - PageIndexTupleOverwrite
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    - errcode
    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:2317,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2339,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2340,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2342,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2342,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2342,1
    - Dst: P_ISHALFDEAD
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2342,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2347,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2348,1
    - Dst: BTreeTupleGetTopParent
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2349,1
    - Dst: _bt_unlockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2353,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2359,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2362,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2374,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2377,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2378,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2379,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2382,1
    - Dst: _bt_unlockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2388,1
    - Dst: _bt_lockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2401,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2404,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2405,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2406,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2407,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2420,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2420,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2425,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2434,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2435,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2436,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2439,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2442,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2444,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2449,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2452,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2453,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2454,1
    - Dst: _bt_lockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2461,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2462,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2463,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2470,1
    - Dst: P_ISROOT
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2470,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2470,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2471,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2472,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2475,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2476,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2477,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2479,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2483,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2483,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2484,1
    - Dst: P_ISHALFDEAD
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2484,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2485,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2486,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2495,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2495,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2496,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2497,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2498,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2501,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2501,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2502,1
    - Dst: BTreeTupleGetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2503,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2510,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2510,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2516,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2517,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2518,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2532,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2533,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2534,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2540,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2543,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2544,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2545,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2546,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2548,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2553,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2554,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2554,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2567,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2568,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2569,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2572,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2573,1
    - Dst: BTPageGetMeta
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2574,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2584,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2595,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2602,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2604,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2605,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2606,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2609,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2610,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2611,1
    - Dst: BTreeTupleSetTopParent
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2626,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2638,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2639,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2640,1
    - Dst: P_ISHALFDEAD
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2640,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2640,1
    - Dst: ReadNextFullTransactionId
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2646,1
    - Dst: BTPageSetDeleted
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2647,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2651,1
    - Dst: _bt_upgrademetapage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2655,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2658,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2662,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2663,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2664,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2665,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2667,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2670,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2677,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2679,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2680,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2681,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2682,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2684,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2697,1
    - Dst: BufferIsValid
      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: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2703,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2712,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2718,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2720,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2722,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2724,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2725,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2726,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2727,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2728,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2730,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2731,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2735,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2736,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2740,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2743,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2744,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2747,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2748,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2749,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2753,1
    - Dst: _bt_pendingfsm_add
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2774,1
    CyclomaticComplexity: 49
    EdgeCount: 49
    ICount: 193
    argCount: 5
    argNames:
    - rel
    - leafbuf
    - scanblkno
    - rightsib_empty
    - vstate
    argTypes:
    - Relation
    - Buffer
    - BlockNumber
    - bool*
    - BTVacState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2778
      start: 2313
    functionDepth: 6
    functionLinenumber: 2313
    functionLinenumberEnd: 2778
    functionName: _bt_unlink_halfdead_page
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 1
    functionsReached:
    - P_ISHALFDEAD
    - _bt_unlockbuf
    - MarkBufferDirty
    - PageSetLSN
    - CHECK_FOR_INTERRUPTS
    - BTreeTupleGetTopParent
    - ReleaseBuffer
    - BTreeTupleSetTopParent
    - P_RIGHTMOST
    - BTreeTupleGetDownLink
    - XLogRegisterData
    - BTPageSetDeleted
    - RelationGetRelationName
    - _bt_getbuf
    - BTPageGetMeta
    - START_CRIT_SECTION
    - BufferGetBlockNumber
    - P_ISDELETED
    - BlockNumberIsValid
    - PageGetItem
    - _bt_pendingfsm_add
    - P_FIRSTDATAKEY
    - RelationNeedsWAL
    - PageGetItemId
    - BufferIsValid
    - _bt_upgrademetapage
    - XLogRegisterBufData
    - P_ISROOT
    - elog
    - ReadNextFullTransactionId
    - P_ISLEAF
    - _bt_lockbuf
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - Assert
    - XLogBeginInsert
    - _bt_relbuf
    - XLogInsert
    - BTPageGetOpaque
    - ereport
    - errmsg_internal
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    - errcode
    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:2830,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2845,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2846,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2847,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2848,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2849,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2856,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2857,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2858,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2873,1
    - Dst: P_INCOMPLETE_SPLIT
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2873,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2893,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2894,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2894,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2900,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2922,1
    - Dst: _bt_leftsib_splitflag
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2931,1
    - Dst: _bt_lock_subtree_parent
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2935,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: 2938
      start: 2812
    functionDepth: 7
    functionLinenumber: 2812
    functionLinenumberEnd: 2938
    functionName: _bt_lock_subtree_parent
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 2
    functionsReached:
    - _bt_leftsib_splitflag
    - Assert
    - PageGetMaxOffsetNumber
    - _bt_lock_subtree_parent
    - _bt_relbuf
    - errmsg_internal
    - ereport
    - _bt_getstackbuf
    - BTPageGetOpaque
    - P_RIGHTMOST
    - P_INCOMPLETE_SPLIT
    - BufferGetPage
    - RelationGetRelationName
    - errcode
    - P_FIRSTDATAKEY
    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:2973,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2975,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2977,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:2981,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - rel
    - vstate
    - cleanuponly
    argTypes:
    - Relation
    - BTVacState*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2983
      start: 2953
    functionDepth: 0
    functionLinenumber: 2953
    functionLinenumberEnd: 2983
    functionName: _bt_pendingfsm_init
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - Min
    - Max
    - palloc
    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:3001,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:3002,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:3008,1
    - Dst: pg_usleep
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:3021,1
    - Dst: GetOldestNonRemovableTransactionId
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:3033,1
    - Dst: GlobalVisCheckRemovableFullXid
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:3048,1
    - Dst: RecordFreeIndexPage
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:3051,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:3055,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - rel
    - vstate
    argTypes:
    - Relation
    - BTVacState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3056
      start: 2995
    functionDepth: 1
    functionLinenumber: 2995
    functionLinenumberEnd: 3056
    functionName: _bt_pendingfsm_finalize
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - GlobalVisCheckRemovableFullXid
    - pg_usleep
    - GetOldestNonRemovableTransactionId
    - RecordFreeIndexPage
    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:3067,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:3068,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:3082,1
    - Dst: FullTransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:3082,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpage.c:3107,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - vstate
    - target
    - safexid
    argTypes:
    - BTVacState*
    - BlockNumber
    - FullTransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3115
      start: 3062
    functionDepth: 1
    functionLinenumber: 3062
    functionLinenumberEnd: 3115
    functionName: _bt_pendingfsm_add
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpage.c
    functionUses: 1
    functionsReached:
    - repalloc
    - Assert
    - FullTransactionIdFollowsOrEquals
    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: 12
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:64,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:65,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:70,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:84,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:87,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:93,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:101,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:102,1
    - Dst: _bt_do_singleval
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:109,1
    - Dst: PageGetTempPageCopySpecial
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:118,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:119,1
    - Dst: PageGetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:119,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:122,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:124,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:125,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:126,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:128,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:130,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:135,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:137,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:138,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:140,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:140,1
    - Dst: _bt_dedup_start_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:148,1
    - Dst: _bt_keep_natts_fast
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:151,1
    - Dst: _bt_dedup_save_htid
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:152,1
    - Dst: _bt_dedup_finish_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:172,1
    - Dst: _bt_singleval_fillfactor
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:191,1
    - Dst: _bt_dedup_start_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:200,1
    - Dst: _bt_dedup_finish_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:205,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:220,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: P_HAS_GARBAGE
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:233,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:235,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:240,1
    - Dst: PageRestoreTempPage
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:242,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:243,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:246,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: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:267,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:270,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:273,1
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:273,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:276,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:277,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 69
    argCount: 5
    argNames:
    - rel
    - buf
    - newitem
    - newitemsz
    - bottomupdedup
    argTypes:
    - Relation
    - Buffer
    - IndexTuple
    - Size
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 57
    functionDepth: 4
    functionLinenumber: 57
    functionLinenumberEnd: 278
    functionName: _bt_dedup_pass
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtdedup.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - MarkBufferDirty
    - PageAddItem
    - P_RIGHTMOST
    - XLogRegisterData
    - Min
    - pfree
    - START_CRIT_SECTION
    - PageGetTempPageCopySpecial
    - PageGetLSN
    - _bt_singleval_fillfactor
    - OffsetNumberNext
    - PageGetItem
    - ItemIdIsDead
    - P_FIRSTDATAKEY
    - IndexRelationGetNumberOfKeyAttributes
    - _bt_do_singleval
    - RelationNeedsWAL
    - PageGetItemId
    - XLogRegisterBufData
    - PageRestoreTempPage
    - elog
    - BufferGetPage
    - palloc
    - PageGetMaxOffsetNumber
    - PageGetExactFreeSpace
    - _bt_dedup_finish_pending
    - Assert
    - XLogBeginInsert
    - XLogInsert
    - _bt_dedup_save_htid
    - BTPageGetOpaque
    - _bt_dedup_start_pending
    - ItemIdGetLength
    - P_HAS_GARBAGE
    - XLogRegisterBuffer
    - _bt_keep_natts_fast
    - 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:313,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:314,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:318,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:324,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:331,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:354,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:356,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:358,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:359,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:361,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:362,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:365,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:367,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:368,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:370,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:370,1
    - Dst: _bt_dedup_start_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:375,1
    - Dst: _bt_keep_natts_fast
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:377,1
    - Dst: _bt_dedup_save_htid
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:378,1
    - Dst: _bt_bottomupdel_finish_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:385,1
    - Dst: _bt_dedup_start_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:388,1
    - Dst: _bt_bottomupdel_finish_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:392,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:406,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:407,1
    - Dst: _bt_delitems_delete_check
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:410,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:412,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:413,1
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:420,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:420,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 46
    argCount: 4
    argNames:
    - rel
    - buf
    - heapRel
    - newitemsz
    argTypes:
    - Relation
    - Buffer
    - Relation
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 306
    functionDepth: 7
    functionLinenumber: 306
    functionLinenumberEnd: 421
    functionName: _bt_bottomupdel_pass
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtdedup.c
    functionUses: 0
    functionsReached:
    - _bt_bottomupdel_finish_pending
    - pfree
    - BufferGetBlockNumber
    - Max
    - OffsetNumberNext
    - PageGetItem
    - ItemIdIsDead
    - P_FIRSTDATAKEY
    - IndexRelationGetNumberOfKeyAttributes
    - _bt_delitems_delete_check
    - PageGetItemId
    - BufferGetPage
    - palloc
    - PageGetMaxOffsetNumber
    - PageGetExactFreeSpace
    - Assert
    - _bt_dedup_save_htid
    - BTPageGetOpaque
    - _bt_dedup_start_pending
    - _bt_keep_natts_fast
    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:436,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:437,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:438,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:438,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:444,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:446,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:448,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:454,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:455,1
    - Dst: BTreeTupleGetPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:455,1
    - Dst: BTreeTupleGetPostingOffset
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:459,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:472,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:472,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 3
    argNames:
    - state
    - base
    - baseoff
    argTypes:
    - BTDedupState
    - IndexTuple
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 432
    functionDepth: 4
    functionLinenumber: 432
    functionLinenumberEnd: 475
    functionName: _bt_dedup_start_pending
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtdedup.c
    functionUses: 2
    functionsReached:
    - Assert
    - BTreeTupleGetPostingOffset
    - BTreeTupleGetPosting
    - BTreeTupleIsPivot
    - BTreeTupleIsPosting
    - BTreeTupleGetNPosting
    - memcpy
    - IndexTupleSize
    - MAXALIGN
    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:490,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:490,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:492,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:499,1
    - Dst: BTreeTupleGetPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:500,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:510,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:538,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:541,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:541,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - state
    - itup
    argTypes:
    - BTDedupState
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 483
    functionDepth: 4
    functionLinenumber: 483
    functionLinenumberEnd: 544
    functionName: _bt_dedup_save_htid
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtdedup.c
    functionUses: 2
    functionsReached:
    - Assert
    - BTreeTupleGetPosting
    - BTreeTupleIsPivot
    - BTreeTupleIsPosting
    - BTreeTupleGetNPosting
    - memcpy
    - IndexTupleSize
    - MAXALIGN
    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:561,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:562,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:563,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:565,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:565,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:569,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:570,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:570,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:570,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:571,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:572,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:574,1
    - Dst: _bt_form_posting
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:583,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:584,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:585,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:590,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:590,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:590,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:591,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtdedup.c:592,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: 554
    functionDepth: 1
    functionLinenumber: 554
    functionLinenumberEnd: 609
    functionName: _bt_dedup_finish_pending
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtdedup.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - PageAddItem
    - _bt_form_posting
    - elog
    - OffsetNumberNext
    - IndexTupleSize
    - PageGetMaxOffsetNumber
    - MAXALIGN
    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:
    - Assert
    - PageGetItemId
    - BTreeTupleGetPostingN
    - BTreeTupleGetMaxHeapTID
    - ItemIdGetLength
    - BTreeTupleIsPosting
    - BTreeTupleGetNPosting
    - ItemPointerGetBlockNumber
    - _bt_posting_valid
    - PageGetItem
    - BTreeTupleGetHeapTID
    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:
    - IndexRelationGetNumberOfKeyAttributes
    - PageGetItemId
    - _bt_keep_natts_fast
    - PageGetItem
    - PageGetMaxOffsetNumber
    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:
    - PageGetPageSize
    - MAXALIGN
    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
    - ItemPointer
    - 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:
    - Assert
    - ItemPointerCopy
    - BTreeTupleGetPostingOffset
    - BTreeTupleGetPosting
    - palloc0
    - ItemPointerIsValid
    - BTreeTupleIsPivot
    - BTreeTupleIsPosting
    - _bt_posting_valid
    - memcpy
    - IndexTupleSize
    - BTreeTupleSetPosting
    - MAXALIGN
    linkageType: ''
    returnType: IndexTuple
    signature: IndexTuple _bt_form_posting(IndexTuple base, ItemPointer 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:
    - Assert
    - BTreeTupleGetPostingN
    - memcpy
    - BTreeTupleGetPostingOffset
    - BTreeTupleGetPosting
    - palloc0
    - ItemPointerIsValid
    - BTreeTupleGetNPosting
    - _bt_posting_valid
    - BTreeTupleSetPosting
    - MAXALIGN
    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:
    - Assert
    - ItemPointerCopy
    - BTreeTupleGetPostingN
    - memmove
    - elog
    - BTreeTupleIsPivot
    - BTreeTupleGetNPosting
    - CopyIndexTuple
    - BTreeTupleIsPosting
    - BTreeTupleGetHeapTID
    - _bt_posting_valid
    - ItemPointerCompare
    - BTreeTupleGetMaxHeapTID
    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:
    - ItemPointerCopy
    - BTreeTupleGetPostingN
    - ItemPointerIsValid
    - BTreeTupleIsPosting
    - BTreeTupleGetNPosting
    - ItemPointerCompare
    - BTreeTupleGetHeapTID
    linkageType: ''
    returnType: bool
    signature: bool _bt_posting_valid(IndexTuple posting)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:117,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 173
    functionName: bthandler
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - makeNode
    - 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:181,1
    - Dst: smgr_bulk_start_rel
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:185,1
    - Dst: smgr_bulk_get_buf
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:188,1
    - Dst: _bt_initmetapage
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:189,1
    - Dst: smgr_bulk_write
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:190,1
    - Dst: smgr_bulk_finish
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 178
    functionDepth: 2
    functionLinenumber: 178
    functionLinenumberEnd: 193
    functionName: btbuildempty
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - _bt_allequalimage
    - smgr_bulk_start_rel
    - smgr_bulk_get_buf
    - smgr_bulk_write
    - smgr_bulk_finish
    - _bt_initmetapage
    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:212,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:212,1
    - Dst: _bt_doinsert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:215,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:217,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: 220
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 220
    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:231,1
    - Dst: BTScanPosIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:244,1
    - Dst: _bt_first
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:245,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:264,1
    - Dst: _bt_next
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:272,1
    - Dst: _bt_start_prim_scan
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:279,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - IndexScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 282
    functionName: btgettuple
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - Assert
    - _bt_next
    - _bt_first
    - BTScanPosIsValid
    - _bt_start_prim_scan
    - palloc
    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:294,1
    - Dst: _bt_first
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:300,1
    - Dst: tbm_add_tuples
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:304,1
    - Dst: _bt_next
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:316,1
    - Dst: tbm_add_tuples
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:322,1
    - Dst: _bt_start_prim_scan
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:327,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - scan
    - tbm
    argTypes:
    - IndexScanDesc
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 330
    functionName: btgetbitmap
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - Assert
    - _bt_next
    - _bt_first
    - _bt_start_prim_scan
    - tbm_add_tuples
    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:342,1
    - Dst: RelationGetIndexScan
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:345,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:348,1
    - Dst: BTScanPosInvalidate
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:349,1
    - Dst: BTScanPosInvalidate
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:350,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:352,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 3
    argNames:
    - rel
    - nkeys
    - norderbys
    argTypes:
    - Relation
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 335
    functionDepth: 2
    functionLinenumber: 335
    functionLinenumberEnd: 379
    functionName: btbeginscan
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - RelationGetIndexScan
    - Assert
    - BTScanPosInvalidate
    - RelationGetDescr
    - 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:391,1
    - Dst: _bt_killitems
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:395,1
    - Dst: BTScanPosUnpinIfPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:396,1
    - Dst: BTScanPosInvalidate
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:397,1
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:424,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:425,1
    - Dst: BTScanPosUnpinIfPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:432,1
    - Dst: BTScanPosInvalidate
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:433,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:453,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:461,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 5
    argNames:
    - scan
    - scankey
    - nscankeys
    - orderbys
    - norderbys
    argTypes:
    - IndexScanDesc
    - ScanKey
    - int
    - ScanKey
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 384
    functionDepth: 1
    functionLinenumber: 384
    functionLinenumberEnd: 464
    functionName: btrescan
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - IsMVCCSnapshot
    - BTScanPosInvalidate
    - BTScanPosIsValid
    - BTScanPosUnpinIfPinned
    - memcpy
    - palloc
    - _bt_killitems
    - RelationNeedsWAL
    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:475,1
    - Dst: _bt_killitems
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:479,1
    - Dst: BTScanPosUnpinIfPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:480,1
    - Dst: BTScanPosUnpinIfPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:484,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:490,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:493,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:495,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:497,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:499,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 469
    functionDepth: 1
    functionLinenumber: 469
    functionLinenumberEnd: 500
    functionName: btendscan
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - pfree
    - MemoryContextDelete
    - BTScanPosIsValid
    - BTScanPosUnpinIfPinned
    - _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:511,1
    - Dst: BTScanPosIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:519,1
    - Dst: BTScanPosInvalidate
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:523,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 505
    functionDepth: 1
    functionLinenumber: 505
    functionLinenumberEnd: 526
    functionName: btmarkpos
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - BTScanPosInvalidate
    - BTScanPosIsValid
    - BTScanPosUnpinIfPinned
    linkageType: ''
    returnType: void
    signature: void btmarkpos(IndexScanDesc scan)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: BTScanPosIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:555,1
    - Dst: _bt_killitems
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:559,1
    - Dst: BTScanPosUnpinIfPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:560,1
    - Dst: BTScanPosIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:563,1
    - Dst: BTScanPosIsPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:566,1
    - Dst: IncrBufferRefCount
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:567,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:568,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:572,1
    - Dst: _bt_start_array_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:577,1
    - Dst: BTScanPosInvalidate
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:582,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 531
    functionDepth: 1
    functionLinenumber: 531
    functionLinenumberEnd: 584
    functionName: btrestrpos
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - _bt_start_array_keys
    - BTScanPosInvalidate
    - IncrBufferRefCount
    - BTScanPosIsPinned
    - BTScanPosIsValid
    - BTScanPosUnpinIfPinned
    - memcpy
    - _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:592,1
    - Dst: datumEstimateSpace
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:611,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:623,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:626,1
    - Dst: datumEstimateSpace
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:630,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:633,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:650,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:651,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - rel
    - nkeys
    - norderbys
    argTypes:
    - Relation
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 589
    functionDepth: 2
    functionLinenumber: 589
    functionLinenumberEnd: 655
    functionName: btestimateparallelscan
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - IndexRelationGetNumberOfKeyAttributes
    - datumEstimateSpace
    - 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:678,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:684,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:685,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:691,1
    - Dst: datumSerialize
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:695,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - rel
    - btscan
    - so
    argTypes:
    - Relation
    - BTParallelScanDesc
    - BTScanOpaque
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 662
    functionDepth: 1
    functionLinenumber: 662
    functionLinenumberEnd: 698
    functionName: _bt_parallel_serialize_arrays
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - memcpy
    - Assert
    - 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:722,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:730,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:730,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:732,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:735,1
    - Dst: datumRestore
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:743,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:746,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:747,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:748,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 3
    argNames:
    - rel
    - btscan
    - so
    argTypes:
    - Relation
    - BTParallelScanDesc
    - BTScanOpaque
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 705
    functionDepth: 1
    functionLinenumber: 705
    functionLinenumberEnd: 751
    functionName: _bt_parallel_restore_arrays
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - datumRestore
    - memcpy
    - DatumGetPointer
    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:761,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:766,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - target
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 756
    functionDepth: 1
    functionLinenumber: 756
    functionLinenumberEnd: 767
    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:778,1
    - Dst: OffsetToPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:780,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:788,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:792,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 772
    functionDepth: 1
    functionLinenumber: 772
    functionLinenumberEnd: 793
    functionName: btparallelrescan
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - LWLockRelease
    - Assert
    - OffsetToPointer
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void btparallelrescan(IndexScanDesc scan)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: BTScanPosInvalidate
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:836,1
    - Dst: OffsetToPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:859,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:864,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:880,1
    - Dst: _bt_parallel_restore_arrays
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:888,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:916,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:921,1
    - Dst: ConditionVariableSleep
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:924,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:926,1
    - Dst: _bt_parallel_done
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:930,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: 933
      start: 815
    functionDepth: 2
    functionLinenumber: 815
    functionLinenumberEnd: 933
    functionName: _bt_parallel_seize
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - _bt_parallel_done
    - Assert
    - BTScanPosInvalidate
    - ConditionVariableCancelSleep
    - OffsetToPointer
    - ConditionVariableSleep
    - LWLockRelease
    - LWLockAcquire
    - _bt_parallel_restore_arrays
    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:960,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:960,1
    - Dst: OffsetToPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:962,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:965,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:969,1
    - Dst: ConditionVariableSignal
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:970,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: 971
      start: 953
    functionDepth: 1
    functionLinenumber: 953
    functionLinenumberEnd: 971
    functionName: _bt_parallel_release
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - Assert
    - ConditionVariableSignal
    - OffsetToPointer
    - BlockNumberIsValid
    - LWLockRelease
    - LWLockAcquire
    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:988,1
    - Dst: BTScanPosIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:988,1
    - Dst: OffsetToPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1001,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1008,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1009,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1015,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1019,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1020
      start: 980
    functionDepth: 1
    functionLinenumber: 980
    functionLinenumberEnd: 1020
    functionName: _bt_parallel_done
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 1
    functionsReached:
    - Assert
    - OffsetToPointer
    - BTScanPosIsValid
    - ConditionVariableBroadcast
    - LWLockRelease
    - LWLockAcquire
    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:1038,1
    - Dst: OffsetToPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1040,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1043,1
    - Dst: _bt_parallel_serialize_arrays
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1052,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1054,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - scan
    - curr_page
    argTypes:
    - IndexScanDesc
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1055
      start: 1030
    functionDepth: 2
    functionLinenumber: 1030
    functionLinenumberEnd: 1055
    functionName: _bt_parallel_primscan_schedule
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - Assert
    - OffsetToPointer
    - _bt_parallel_serialize_arrays
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void _bt_parallel_primscan_schedule(IndexScanDesc scan, BlockNumber
      curr_page)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1073,1
    - Dst: PG_ENSURE_ERROR_CLEANUP
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1077,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1077,1
    - Dst: _bt_start_vacuum
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1079,1
    - Dst: btvacuumscan
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1081,1
    - Dst: PG_END_ENSURE_ERROR_CLEANUP
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1083,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1083,1
    - Dst: _bt_end_vacuum
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1084,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: 1087
      start: 1064
    functionDepth: 1
    functionLinenumber: 1064
    functionLinenumberEnd: 1087
    functionName: btbulkdelete
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - palloc0
    - _bt_start_vacuum
    - PointerGetDatum
    - _bt_end_vacuum
    - PG_END_ENSURE_ERROR_CLEANUP
    - PG_ENSURE_ERROR_CLEANUP
    - btvacuumscan
    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:1117,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1134,1
    - Dst: btvacuumscan
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1135,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1151,1
    - Dst: _bt_set_cleanup_info
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1153,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - info
    - stats
    argTypes:
    - IndexVacuumInfo*
    - IndexBulkDeleteResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1168
      start: 1094
    functionDepth: 5
    functionLinenumber: 1094
    functionLinenumberEnd: 1168
    functionName: btvacuumcleanup
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 0
    functionsReached:
    - Assert
    - palloc0
    - _bt_vacuum_needs_cleanup
    - _bt_set_cleanup_info
    - 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:1222,1
    - Dst: _bt_pendingfsm_init
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1232,1
    - Dst: RELATION_IS_LOCAL
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1259,1
    - Dst: read_stream_begin_relation
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1267,1
    - Dst: LockRelationForExtension
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1280,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1281,1
    - Dst: UnlockRelationForExtension
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1283,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1286,1
    - Dst: vacuum_delay_point
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1302,1
    - Dst: read_stream_next_buffer
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1304,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1306,1
    - Dst: btvacuumpage
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1309,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1312,1
    - Dst: read_stream_reset
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1321,1
    - Dst: read_stream_end
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1324,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1329,1
    - Dst: _bt_pendingfsm_finalize
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1340,1
    - Dst: IndexFreeSpaceMapVacuum
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1342,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: 1343
      start: 1182
    functionDepth: 2
    functionLinenumber: 1182
    functionLinenumberEnd: 1343
    functionName: btvacuumscan
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 2
    functionsReached:
    - RELATION_IS_LOCAL
    - LockRelationForExtension
    - read_stream_begin_relation
    - BufferIsValid
    - MemoryContextDelete
    - read_stream_end
    - IndexFreeSpaceMapVacuum
    - pgstat_progress_update_param
    - _bt_pendingfsm_finalize
    - vacuum_delay_point
    - btvacuumpage
    - read_stream_reset
    - AllocSetContextCreate
    - UnlockRelationForExtension
    - RelationGetNumberOfBlocks
    - _bt_pendingfsm_init
    - read_stream_next_buffer
    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:1369,1
    - Dst: _bt_lockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1380,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1381,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1383,1
    - Dst: _bt_checkpage
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1385,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1386,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1389,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1407,1
    - Dst: P_ISHALFDEAD
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1407,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1409,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1410,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1411,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1412,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1413,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1414,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1431,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1434,1
    - Dst: BTPageIsRecyclable
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1439,1
    - Dst: RecordFreeIndexPage
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1442,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1446,1
    - Dst: P_ISHALFDEAD
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1454,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1464,1
    - Dst: _bt_upgradelockbufcleanup
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1482,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1496,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1502,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1503,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1511,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1515,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1516,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1518,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1518,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1519,1
    - Dst: callback
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1522,1
    - Dst: btreevacuumposting
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1536,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1544,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1544,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1555,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1555,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1557,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1566,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1568,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1569,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1583,1
    - Dst: _bt_delitems_vacuum
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1584,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1589,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1593,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1607,1
    - Dst: MarkBufferDirtyHint
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1612,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1638,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1646,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1647,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1654,1
    - Dst: _bt_pagedel
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1655,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1657,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1661,1
    - Dst: vacuum_delay_point
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1668,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1676,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 113
    argCount: 2
    argNames:
    - vstate
    - buf
    argTypes:
    - BTVacState*
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1682
      start: 1357
    functionDepth: 8
    functionLinenumber: 1357
    functionLinenumberEnd: 1682
    functionName: btvacuumpage
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 1
    functionsReached:
    - P_ISHALFDEAD
    - MemoryContextSwitchTo
    - MemoryContextReset
    - _bt_delitems_vacuum
    - P_RIGHTMOST
    - vacuum_delay_point
    - BTreeTupleIsPosting
    - RelationGetRelationName
    - pfree
    - BufferGetBlockNumber
    - P_ISDELETED
    - OffsetNumberNext
    - BTreeTupleIsPivot
    - BTreeTupleGetNPosting
    - PageGetItem
    - PageIsNew
    - P_FIRSTDATAKEY
    - MarkBufferDirtyHint
    - PageGetItemId
    - _bt_checkpage
    - P_ISLEAF
    - ReadBufferExtended
    - _bt_lockbuf
    - BTPageIsRecyclable
    - BufferGetPage
    - _bt_pagedel
    - PageGetMaxOffsetNumber
    - RecordFreeIndexPage
    - Assert
    - _bt_upgradelockbufcleanup
    - _bt_relbuf
    - BTPageGetOpaque
    - ereport
    - errmsg_internal
    - callback
    - btreevacuumposting
    - errcode
    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:1700,1
    - Dst: BTreeTupleGetPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1701,1
    - Dst: BTVacState*::callback
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1706,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtree.c:1720,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 4
    argNames:
    - vstate
    - posting
    - updatedoffset
    - nremaining
    argTypes:
    - BTVacState*
    - IndexTuple
    - OffsetNumber
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1737
      start: 1695
    functionDepth: 4
    functionLinenumber: 1695
    functionLinenumberEnd: 1737
    functionName: btreevacuumposting
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtree.c
    functionUses: 1
    functionsReached:
    - palloc
    - BTreeTupleGetNPosting
    - BTVacState*::callback
    - BTreeTupleGetPosting
    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: 1748
      start: 1744
    functionDepth: 0
    functionLinenumber: 1744
    functionLinenumberEnd: 1748
    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:1756,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1757
      start: 1753
    functionDepth: 6
    functionLinenumber: 1753
    functionLinenumberEnd: 1757
    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: 1777
      start: 1759
    functionDepth: 0
    functionLinenumber: 1759
    functionLinenumberEnd: 1777
    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: 1797
      start: 1779
    functionDepth: 0
    functionLinenumber: 1779
    functionLinenumberEnd: 1797
    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: 163
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 163
    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:303,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:319,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:320,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:321,1
    - Dst: _bt_spools_heapscan
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:323,1
    - Dst: _bt_leafbuild
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:330,1
    - Dst: _bt_spooldestroy
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:331,1
    - Dst: _bt_spooldestroy
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:333,1
    - Dst: _bt_end_parallel
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:335,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:337,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:345,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:346,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 3
    argNames:
    - heap
    - index
    - indexInfo
    argTypes:
    - Relation
    - Relation
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 294
    functionDepth: 1
    functionLinenumber: 294
    functionLinenumberEnd: 351
    functionName: btbuild
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 0
    functionsReached:
    - ResetUsage
    - _bt_leafbuild
    - palloc
    - _bt_spooldestroy
    - _bt_spools_heapscan
    - _bt_end_parallel
    - elog
    - RelationGetNumberOfBlocks
    - RelationGetRelationName
    - ShowUsage
    linkageType: ''
    returnType: IndexBuildResult
    signature: 'IndexBuildResult *

      btbuild(Relation heap, Relation index, IndexInfo *indexInfo)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:368,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:387,1
    - Dst: _bt_begin_parallel
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:392,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:401,1
    - Dst: tuplesort_begin_index_btree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:430,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:442,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:459,1
    - Dst: tuplesort_begin_index_btree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:471,1
    - Dst: table_index_build_scan
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:477,1
    - Dst: _bt_parallel_heapscan
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:481,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:499,1
    - Dst: _bt_spooldestroy
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:506,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 39
    argCount: 4
    argNames:
    - heap
    - index
    - buildstate
    - indexInfo
    argTypes:
    - Relation
    - Relation
    - BTBuildState*
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 364
    functionDepth: 1
    functionLinenumber: 364
    functionLinenumberEnd: 511
    functionName: _bt_spools_heapscan
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 1
    functionsReached:
    - _bt_parallel_heapscan
    - pgstat_progress_update_multi_param
    - table_index_build_scan
    - pgstat_progress_update_param
    - _bt_spooldestroy
    - _bt_begin_parallel
    - palloc0
    - tuplesort_begin_index_btree
    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:519,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:520,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - btspool
    argTypes:
    - BTSpool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 516
    functionDepth: 1
    functionLinenumber: 516
    functionLinenumberEnd: 521
    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:529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - btspool
    - self
    - values
    - isnull
    argTypes:
    - BTSpool*
    - ItemPointer
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 526
    functionDepth: 1
    functionLinenumber: 526
    functionLinenumberEnd: 531
    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, ItemPointer self, Datum *values, bool
      *isnull)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:545,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:546,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:551,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:553,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:556,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:558,1
    - Dst: _bt_mkscankey
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:563,1
    - Dst: _bt_allequalimage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:565,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:570,1
    - Dst: _bt_load
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:572,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - btspool
    - btspool2
    argTypes:
    - BTSpool*
    - BTSpool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 537
    functionDepth: 1
    functionLinenumber: 537
    functionLinenumberEnd: 573
    functionName: _bt_leafbuild
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 1
    functionsReached:
    - ResetUsage
    - _bt_allequalimage
    - _bt_load
    - pgstat_progress_update_param
    - _bt_mkscankey
    - tuplesort_performsort
    - 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:593,1
    - Dst: _bt_spool
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:598,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: 602
      start: 578
    functionDepth: 2
    functionLinenumber: 578
    functionLinenumberEnd: 602
    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:614,1
    - Dst: _bt_pageinit
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:618,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:621,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - wstate
    - level
    argTypes:
    - BTWriteState*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 607
    functionDepth: 2
    functionLinenumber: 607
    functionLinenumberEnd: 631
    functionName: _bt_blnewpage
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 0
    functionsReached:
    - BTPageGetOpaque
    - smgr_bulk_get_buf
    - _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:639,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - wstate
    - buf
    - blkno
    argTypes:
    - BTWriteState*
    - BulkWriteBuffer
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 636
    functionDepth: 1
    functionLinenumber: 636
    functionLinenumberEnd: 641
    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
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:650,1
    - Dst: _bt_blnewpage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:653,1
    - Dst: BTGetTargetPageFreeSpace
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:667,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - wstate
    - level
    argTypes:
    - BTWriteState*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 647
    functionDepth: 3
    functionLinenumber: 647
    functionLinenumberEnd: 673
    functionName: _bt_pagestate
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 0
    functionsReached:
    - _bt_blnewpage
    - palloc0
    - 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:691,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:692,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:693,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:694,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:696,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - rightmostpage
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 684
    functionDepth: 1
    functionLinenumber: 684
    functionLinenumberEnd: 702
    functionName: _bt_slideleft
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 0
    functionsReached:
    - OffsetNumberNext
    - Assert
    - PageGetItemId
    - PageGetMaxOffsetNumber
    linkageType: ''
    returnType: void
    signature: void _bt_slideleft(Page rightmostpage)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BTreeTupleSetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:728,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:733,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:735,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 5
    argNames:
    - page
    - itemsize
    - itup
    - itup_off
    - newfirstdataitem
    argTypes:
    - Page
    - Size
    - IndexTuple
    - OffsetNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 715
    functionDepth: 3
    functionLinenumber: 715
    functionLinenumberEnd: 736
    functionName: _bt_sortaddtup
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 0
    functionsReached:
    - BTreeTupleSetNAtts
    - PageAddItem
    - elog
    linkageType: ''
    returnType: void
    signature: "void _bt_sortaddtup(Page page,\n\t\t\t   Size itemsize,\n\t\t\t   IndexTuple
      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:802,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:811,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:812,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:813,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:832,1
    - Dst: _bt_check_third_page
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:833,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:854,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:855,1
    - Dst: _bt_blnewpage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:869,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:882,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:883,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:884,1
    - Dst: _bt_sortaddtup
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:885,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:885,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:897,1
    - Dst: ItemIdSetUnused
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:899,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:930,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:930,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:931,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:933,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:933,1
    - Dst: _bt_truncate
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:934,1
    - Dst: PageIndexTupleOverwrite
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:936,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:937,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:938,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:939,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:942,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:943,1
    - Dst: _bt_pagestate
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:951,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:953,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:953,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:954,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:955,1
    - Dst: P_LEFTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:956,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:956,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:957,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: BTreeTupleSetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:959,1
    - Dst: _bt_buildadd
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:960,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:961,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:967,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:973,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:974,1
    - Dst: _bt_blwritepage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:985,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1005,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1006,1
    - Dst: BTreeTupleSetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1008,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1014,1
    - Dst: _bt_sortaddtup
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1015,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 64
    argCount: 4
    argNames:
    - wstate
    - state
    - itup
    - truncextra
    argTypes:
    - BTWriteState*
    - BTPageState*
    - IndexTuple
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1021
      start: 785
    functionDepth: 4
    functionLinenumber: 785
    functionLinenumberEnd: 1021
    functionName: _bt_buildadd
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 1
    functionsReached:
    - CHECK_FOR_INTERRUPTS
    - _bt_blwritepage
    - OffsetNumberPrev
    - _bt_buildadd
    - _bt_blnewpage
    - IndexTupleSize
    - P_LEFTMOST
    - pfree
    - OffsetNumberNext
    - BTreeTupleSetDownLink
    - PageGetFreeSpace
    - PageGetItem
    - IndexRelationGetNumberOfKeyAttributes
    - BTreeTupleSetNAtts
    - PageGetItemId
    - _bt_sortaddtup
    - ItemIdSetUnused
    - elog
    - _bt_truncate
    - Assert
    - BTreeTupleGetNAtts
    - BTPageGetOpaque
    - palloc0
    - _bt_check_third_page
    - unlikely
    - ItemIdGetLength
    - PageIndexTupleOverwrite
    - CopyIndexTuple
    - _bt_pagestate
    - MAXALIGN
    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:1034,1
    - Dst: _bt_buildadd
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1037,1
    - Dst: _bt_form_posting
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1044,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1048,1
    - Dst: BTreeTupleGetPostingOffset
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1049,1
    - Dst: _bt_buildadd
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1051,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1052,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - wstate
    - state
    - dstate
    argTypes:
    - BTWriteState*
    - BTPageState*
    - BTDedupState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1030
    functionDepth: 5
    functionLinenumber: 1030
    functionLinenumberEnd: 1059
    functionName: _bt_sort_dedup_finish_pending
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - BTreeTupleGetPostingOffset
    - _bt_form_posting
    - _bt_buildadd
    - 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:1081,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1099,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1099,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1100,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1101,1
    - Dst: P_LEFTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1102,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1103,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: BTreeTupleSetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1105,1
    - Dst: _bt_buildadd
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1106,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1107,1
    - Dst: _bt_slideleft
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1115,1
    - Dst: _bt_blwritepage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1116,1
    - Dst: smgr_bulk_get_buf
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1126,1
    - Dst: _bt_initmetapage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1127,1
    - Dst: _bt_blwritepage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1129,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - wstate
    - state
    argTypes:
    - BTWriteState*
    - BTPageState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1130
      start: 1064
    functionDepth: 5
    functionLinenumber: 1064
    functionLinenumberEnd: 1130
    functionName: _bt_uppershutdown
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 0
    functionsReached:
    - IndexRelationGetNumberOfKeyAttributes
    - pfree
    - Assert
    - smgr_bulk_get_buf
    - BTreeTupleGetNAtts
    - _bt_blwritepage
    - BTPageGetOpaque
    - _bt_buildadd
    - BTreeTupleSetDownLink
    - _bt_initmetapage
    - P_LEFTMOST
    - _bt_slideleft
    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:1144,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1146,1
    - Dst: smgr_bulk_start_rel
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1151,1
    - Dst: BTGetDeduplicateItems
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1154,1
    - Dst: tuplesort_getindextuple
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1164,1
    - Dst: tuplesort_getindextuple
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1165,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1168,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1184,1
    - Dst: PrepareSortSupportFromIndexRel
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1188,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1212,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1213,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1215,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1235,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1236,1
    - Dst: _bt_pagestate
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1246,1
    - Dst: _bt_buildadd
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1250,1
    - Dst: tuplesort_getindextuple
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1251,1
    - Dst: _bt_buildadd
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1255,1
    - Dst: tuplesort_getindextuple
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1256,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1260,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1263,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1270,1
    - Dst: tuplesort_getindextuple
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1285,1
    - Dst: _bt_pagestate
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1291,1
    - Dst: MAXALIGN_DOWN
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1305,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1307,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1309,1
    - Dst: _bt_dedup_start_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1312,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1312,1
    - Dst: _bt_keep_natts_fast
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1315,1
    - Dst: _bt_dedup_save_htid
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1317,1
    - Dst: _bt_sort_dedup_finish_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1331,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1332,1
    - Dst: _bt_dedup_start_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1335,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1335,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1340,1
    - Dst: _bt_sort_dedup_finish_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1350,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1351,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1352,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1355,1
    - Dst: tuplesort_getindextuple
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1360,1
    - Dst: _bt_pagestate
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1365,1
    - Dst: _bt_buildadd
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1367,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1370,1
    - Dst: _bt_uppershutdown
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1376,1
    - Dst: smgr_bulk_finish
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1377,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 102
    argCount: 3
    argNames:
    - wstate
    - btspool
    - btspool2
    argTypes:
    - BTWriteState*
    - BTSpool*
    - BTSpool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1378
      start: 1136
    functionDepth: 6
    functionLinenumber: 1136
    functionLinenumberEnd: 1378
    functionName: _bt_load
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 1
    functionsReached:
    - PrepareSortSupportFromIndexRel
    - _bt_uppershutdown
    - smgr_bulk_finish
    - _bt_buildadd
    - tuplesort_getindextuple
    - ApplySortComparator
    - pfree
    - BTGetDeduplicateItems
    - _bt_sort_dedup_finish_pending
    - IndexRelationGetNumberOfKeyAttributes
    - smgr_bulk_start_rel
    - palloc
    - _bt_pagestate
    - Assert
    - MAXALIGN_DOWN
    - pgstat_progress_update_param
    - RelationGetDescr
    - _bt_dedup_save_htid
    - palloc0
    - _bt_dedup_start_pending
    - index_getattr
    - CopyIndexTuple
    - _bt_keep_natts_fast
    - ItemPointerCompare
    linkageType: ''
    returnType: void
    signature: void _bt_load(BTWriteState *wstate, BTSpool *btspool, BTSpool *btspool2)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1408,1
    - Dst: EnterParallelMode
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1422,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1423,1
    - Dst: CreateParallelContext
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1424,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1439,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1439,1
    - Dst: _bt_parallel_estimate_shared
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1445,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1446,1
    - Dst: tuplesort_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: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1455,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1458,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1459,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1470,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1471,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1472,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1473,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1474,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1475,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1480,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1481,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1482,1
    - Dst: InitializeParallelDSM
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1488,1
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1493,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1494,1
    - Dst: DestroyParallelContext
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1495,1
    - Dst: ExitParallelMode
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1496,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1501,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1503,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1504,1
    - Dst: pgstat_get_my_query_id
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1509,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1510,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1511,1
    - Dst: table_parallelscan_initialize
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1518,1
    - Dst: ParallelTableScanFromBTShared
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1519,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1526,1
    - Dst: tuplesort_initialize_shared
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1527,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1530,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1531,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1543,1
    - Dst: tuplesort_initialize_shared
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1544,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1547,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1555,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1556,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1557,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1564,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1565,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1566,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1567,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1568,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1569,1
    - Dst: LaunchParallelWorkers
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1572,1
    - Dst: _bt_end_parallel
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1587,1
    - Dst: _bt_leader_participate_as_worker
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1596,1
    - Dst: WaitForParallelWorkersToAttach
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1602,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 90
    argCount: 3
    argNames:
    - buildstate
    - isconcurrent
    - request
    argTypes:
    - BTBuildState*
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1603
      start: 1396
    functionDepth: 1
    functionLinenumber: 1396
    functionLinenumberEnd: 1603
    functionName: _bt_begin_parallel
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 1
    functionsReached:
    - CreateParallelContext
    - _bt_leader_participate_as_worker
    - table_parallelscan_initialize
    - WaitForParallelWorkersToAttach
    - pgstat_get_my_query_id
    - ConditionVariableInit
    - shm_toc_allocate
    - strlen
    - RelationGetRelid
    - RegisterSnapshot
    - GetTransactionSnapshot
    - ExitParallelMode
    - ParallelTableScanFromBTShared
    - shm_toc_estimate_keys
    - tuplesort_estimate_shared
    - memcpy
    - _bt_parallel_estimate_shared
    - mul_size
    - tuplesort_initialize_shared
    - DestroyParallelContext
    - SpinLockInit
    - _bt_end_parallel
    - LaunchParallelWorkers
    - IsMVCCSnapshot
    - Assert
    - EnterParallelMode
    - InitializeParallelDSM
    - shm_toc_estimate_chunk
    - shm_toc_insert
    - palloc0
    - UnregisterSnapshot
    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:1614,1
    - Dst: InstrAccumParallelQuery
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1621,1
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1624,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1625,1
    - Dst: DestroyParallelContext
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1626,1
    - Dst: ExitParallelMode
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1627,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - btleader
    argTypes:
    - BTLeader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1628
      start: 1608
    functionDepth: 1
    functionLinenumber: 1608
    functionLinenumberEnd: 1628
    functionName: _bt_end_parallel
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 2
    functionsReached:
    - InstrAccumParallelQuery
    - IsMVCCSnapshot
    - DestroyParallelContext
    - ExitParallelMode
    - WaitForParallelWorkersToFinish
    - 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:1638,1
    - Dst: BUFFERALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1638,1
    - Dst: table_parallelscan_estimate
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1639,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - heap
    - snapshot
    argTypes:
    - Relation
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1640
      start: 1634
    functionDepth: 1
    functionLinenumber: 1634
    functionLinenumberEnd: 1640
    functionName: _bt_parallel_estimate_shared
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 1
    functionsReached:
    - BUFFERALIGN
    - table_parallelscan_estimate
    - add_size
    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:1664,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1671,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1674,1
    - Dst: ConditionVariableSleep
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1676,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1680,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - buildstate
    - brokenhotchain
    argTypes:
    - BTBuildState*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1683
      start: 1654
    functionDepth: 1
    functionLinenumber: 1654
    functionLinenumberEnd: 1683
    functionName: _bt_parallel_heapscan
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 1
    functionsReached:
    - ConditionVariableSleep
    - SpinLockRelease
    - ConditionVariableCancelSleep
    - SpinLockAcquire
    linkageType: ''
    returnType: double
    signature: double _bt_parallel_heapscan(BTBuildState *buildstate, bool *brokenhotchain)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1697,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1709,1
    - Dst: _bt_parallel_scan_and_sort
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1725,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1732,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1733,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - buildstate
    argTypes:
    - BTBuildState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1736
      start: 1688
    functionDepth: 1
    functionLinenumber: 1688
    functionLinenumberEnd: 1736
    functionName: _bt_leader_participate_as_worker
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 1
    functionsReached:
    - ResetUsage
    - _bt_parallel_scan_and_sort
    - palloc0
    - 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:1760,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1767,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1771,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1775,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1778,1
    - Dst: pgstat_report_query_id
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1793,1
    - Dst: table_open
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1796,1
    - Dst: index_open
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1797,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1800,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1807,1
    - Dst: tuplesort_attach_shared
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1808,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1817,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1824,1
    - Dst: tuplesort_attach_shared
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1825,1
    - Dst: InstrStartParallelQuery
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1829,1
    - Dst: _bt_parallel_scan_and_sort
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1833,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1837,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1838,1
    - Dst: InstrEndParallelQuery
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1839,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1845,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1846,1
    - Dst: index_close
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1850,1
    - Dst: table_close
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1851,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 48
    argCount: 2
    argNames:
    - seg
    - toc
    argTypes:
    - dsm_segment*
    - shm_toc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1852
      start: 1741
    functionDepth: 2
    functionLinenumber: 1741
    functionLinenumberEnd: 1852
    functionName: _bt_parallel_build_main
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 0
    functionsReached:
    - ResetUsage
    - Assert
    - _bt_parallel_scan_and_sort
    - index_close
    - table_open
    - InstrEndParallelQuery
    - pgstat_report_query_id
    - InstrStartParallelQuery
    - shm_toc_lookup
    - pgstat_report_activity
    - palloc0
    - table_close
    - tuplesort_attach_shared
    - index_open
    - ShowUsage
    linkageType: ''
    returnType: void
    signature: void _bt_parallel_build_main(dsm_segment *seg, shm_toc *toc)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1878,1
    - Dst: tuplesort_begin_index_btree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1884,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1905,1
    - Dst: tuplesort_begin_index_btree
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1910,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1911,1
    - Dst: BuildIndexInfo
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1926,1
    - Dst: table_beginscan_parallel
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1928,1
    - Dst: ParallelTableScanFromBTShared
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1929,1
    - Dst: table_index_build_scan
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1930,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1936,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1938,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1942,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1944,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1951,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1959,1
    - Dst: ConditionVariableSignal
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1962,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1965,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/access/nbtree/nbtsort.c:1967,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: 1968
      start: 1866
    functionDepth: 1
    functionLinenumber: 1866
    functionLinenumberEnd: 1968
    functionName: _bt_parallel_scan_and_sort
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsort.c
    functionUses: 2
    functionsReached:
    - Min
    - ConditionVariableSignal
    - table_index_build_scan
    - pgstat_progress_update_param
    - SpinLockAcquire
    - tuplesort_end
    - palloc0
    - ParallelTableScanFromBTShared
    - SpinLockRelease
    - tuplesort_begin_index_btree
    - table_beginscan_parallel
    - tuplesort_performsort
    - BuildIndexInfo
    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:113,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:135,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:154,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:154,1
    - Dst: _bt_search_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:167,1
    - Dst: _bt_check_unique
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:210,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:213,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:213,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:216,1
    - Dst: SpeculativeInsertionWait
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:225,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:227,1
    - Dst: _bt_freestack
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:231,1
    - Dst: CheckForSerializableConflictIn
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:251,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:251,1
    - Dst: _bt_findinsertloc
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:258,1
    - Dst: _bt_insertonpg
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:260,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:267,1
    - Dst: _bt_freestack
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:272,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:273,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: 276
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 276
    functionName: _bt_doinsert
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - _bt_findinsertloc
    - BufferGetBlockNumber
    - XactLockTableWait
    - TransactionIdIsValid
    - _bt_relbuf
    - CheckForSerializableConflictIn
    - _bt_mkscankey
    - SpeculativeInsertionWait
    - _bt_freestack
    - unlikely
    - _bt_check_unique
    - _bt_insertonpg
    - _bt_search_insert
    - IndexTupleSize
    - MAXALIGN
    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:319,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:320,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:321,1
    - Dst: RelationGetTargetBlock
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:323,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:326,1
    - Dst: RelationGetTargetBlock
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:326,1
    - Dst: _bt_conditionallockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:327,1
    - Dst: _bt_checkpage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:332,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:333,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:334,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:344,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:345,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:346,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:347,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:348,1
    - Dst: _bt_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:349,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:367,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:372,1
    - Dst: RelationSetTargetBlock
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:376,1
    - Dst: _bt_search
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:380,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 3
    argNames:
    - rel
    - heaprel
    - insertstate
    argTypes:
    - Relation
    - Relation
    - BTInsertState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 316
    functionDepth: 5
    functionLinenumber: 316
    functionLinenumberEnd: 382
    functionName: _bt_search_insert
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - ReadBuffer
    - Assert
    - RelationGetTargetBlock
    - _bt_search
    - _bt_checkpage
    - _bt_relbuf
    - ReleaseBuffer
    - BTPageGetOpaque
    - P_RIGHTMOST
    - RelationSetTargetBlock
    - _bt_compare
    - P_ISLEAF
    - PageGetFreeSpace
    - BufferGetPage
    - P_IGNORE
    - _bt_conditionallockbuf
    - PageGetMaxOffsetNumber
    linkageType: ''
    returnType: BTStack
    signature: BTStack _bt_search_insert(Relation rel, Relation heaprel, BTInsertState
      insertstate)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: InitDirtySnapshot
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:430,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:432,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:433,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:434,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:442,1
    - Dst: _bt_binsrch_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:443,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:448,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:449,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:450,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:485,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:486,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:486,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:487,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:488,1
    - Dst: _bt_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:488,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:504,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:505,1
    - Dst: _bt_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:513,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:517,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:518,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:518,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:522,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:525,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:534,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:539,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:540,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:549,1
    - Dst: table_index_fetch_tuple_check
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:560,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:577,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:586,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:589,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:592,1
    - Dst: table_index_fetch_tuple_check
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:618,1
    - Dst: CheckForSerializableConflictIn
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:639,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:639,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:650,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:651,1
    - Dst: index_deform_tuple
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:660,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:660,1
    - Dst: BuildIndexValueDescription
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:663,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:666,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:667,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:668,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:669,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:670,1
    - Dst: errtableconstraint
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:672,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:673,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:678,1
    - Dst: ItemIdMarkDead
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:685,1
    - Dst: MarkBufferDirtyHint
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:693,1
    - Dst: MarkBufferDirtyHint
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:695,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:707,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:718,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:725,1
    - Dst: _bt_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:727,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:728,1
    - Dst: _bt_relandgetbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:736,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:737,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:738,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:739,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:741,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:742,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:743,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:748,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:749,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:760,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:761,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:762,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:763,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:764,1
    - Dst: errtableconstraint
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:765,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:766,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:769,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 122
    argCount: 6
    argNames:
    - rel
    - insertstate
    - heapRel
    - checkUnique
    - is_unique
    - speculativeToken
    argTypes:
    - Relation
    - BTInsertState
    - Relation
    - IndexUniqueCheck
    - bool*
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 407
    functionDepth: 6
    functionLinenumber: 407
    functionLinenumberEnd: 772
    functionName: _bt_check_unique
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - errtableconstraint
    - BTreeTupleGetPostingN
    - P_RIGHTMOST
    - errhint
    - BTreeTupleIsPosting
    - RelationGetRelationName
    - errdetail
    - BufferGetBlockNumber
    - index_deform_tuple
    - InitDirtySnapshot
    - _bt_relandgetbuf
    - BTreeTupleIsPivot
    - BTreeTupleGetNPosting
    - OffsetNumberNext
    - CheckForSerializableConflictIn
    - PageGetItem
    - ItemIdIsDead
    - P_IGNORE
    - P_FIRSTDATAKEY
    - errmsg
    - MarkBufferDirtyHint
    - PageGetItemId
    - TransactionIdIsValid
    - _bt_compare
    - elog
    - ItemIdMarkDead
    - table_index_fetch_tuple_check
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - Assert
    - _bt_relbuf
    - RelationGetDescr
    - BTPageGetOpaque
    - ereport
    - _bt_binsrch_insert
    - BuildIndexValueDescription
    - ItemPointerCompare
    - errcode
    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:823,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:827,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:830,1
    - Dst: _bt_check_third_page
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:831,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:834,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:834,1
    - Dst: P_INCOMPLETE_SPLIT
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:834,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:835,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:836,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:837,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:838,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:864,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:882,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:886,1
    - Dst: _bt_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:887,1
    - Dst: _bt_stepright
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:890,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:892,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:893,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:903,1
    - Dst: _bt_delete_or_dedup_one_page
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:904,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:938,1
    - Dst: P_HAS_GARBAGE
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:944,1
    - Dst: _bt_delete_or_dedup_one_page
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:947,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:950,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:966,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:969,1
    - Dst: _bt_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:970,1
    - Dst: pg_prng_uint32
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:971,1
    - Dst: _bt_stepright
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:974,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:976,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:977,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:985,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:985,1
    - Dst: _bt_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:986,1
    - Dst: _bt_binsrch_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:988,1
    - Dst: _bt_delete_or_dedup_one_page
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:998,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1005,1
    - Dst: _bt_binsrch_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1007,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1008,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: 1012
      start: 814
    functionDepth: 4
    functionLinenumber: 814
    functionLinenumberEnd: 1012
    functionName: _bt_findinsertloc
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - Assert
    - BTPageGetOpaque
    - P_RIGHTMOST
    - _bt_delete_or_dedup_one_page
    - _bt_check_third_page
    - unlikely
    - P_INCOMPLETE_SPLIT
    - _bt_compare
    - P_HAS_GARBAGE
    - P_ISLEAF
    - PageGetFreeSpace
    - _bt_binsrch_insert
    - BufferGetPage
    - _bt_stepright
    - PageGetMaxOffsetNumber
    - pg_prng_uint32
    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:1035,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1036,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1037,1
    - Dst: _bt_relandgetbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1043,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1044,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1045,1
    - Dst: P_INCOMPLETE_SPLIT
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1053,1
    - Dst: _bt_finish_split
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1055,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1060,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1062,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1063,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1064,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1069,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 4
    argNames:
    - rel
    - heaprel
    - insertstate
    - stack
    argTypes:
    - Relation
    - Relation
    - BTInsertState
    - BTStack
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1026
    functionDepth: 6
    functionLinenumber: 1026
    functionLinenumberEnd: 1072
    functionName: _bt_stepright
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - Assert
    - RelationGetRelationName
    - _bt_relbuf
    - BTPageGetOpaque
    - P_RIGHTMOST
    - _bt_relandgetbuf
    - _bt_finish_split
    - P_INCOMPLETE_SPLIT
    - elog
    - BufferGetPage
    - P_IGNORE
    linkageType: ''
    returnType: void
    signature: "void _bt_stepright(Relation rel, Relation heaprel, BTInsertState insertstate,\n\t\t\t
      \ BTStack stack)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1127,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1128,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1129,1
    - Dst: P_ISROOT
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1130,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1131,1
    - Dst: P_LEFTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1132,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1132,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1135,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1135,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1137,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1138,1
    - Dst: IndexRelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1139,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1140,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1141,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1142,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1143,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1143,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1144,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1144,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1144,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1146,1
    - Dst: P_INCOMPLETE_SPLIT
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1146,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1154,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1154,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1161,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1170,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1171,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1184,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1184,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1185,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1186,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1187,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1188,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1189,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1190,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1191,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1195,1
    - Dst: _bt_swap_posting
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1196,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1200,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1210,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1214,1
    - Dst: _bt_split
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1217,1
    - Dst: PredicateLockPageSplit
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1219,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1220,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1221,1
    - Dst: _bt_insert_parent
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1241,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1257,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1259,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1260,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1260,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1262,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1263,1
    - Dst: BTPageGetMeta
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1264,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1269,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1275,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1278,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1278,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1278,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1280,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1282,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1283,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1283,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1285,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1287,1
    - Dst: _bt_upgrademetapage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1291,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1292,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1294,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1303,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1304,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1306,1
    - Dst: P_INCOMPLETE_SPLIT
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1306,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1308,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1312,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1322,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1323,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1336,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1343,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1345,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1350,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1359,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1361,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1366,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1370,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1370,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1384,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1385,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1386,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1389,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1391,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1392,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1394,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1394,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1396,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1399,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1402,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1403,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1405,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1413,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1416,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1425,1
    - Dst: _bt_getrootheight
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1426,1
    - Dst: RelationSetTargetBlock
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1427,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1434,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1435,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 117
    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: 1437
      start: 1104
    functionDepth: 7
    functionLinenumber: 1104
    functionLinenumberEnd: 1437
    functionName: _bt_insertonpg
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - MarkBufferDirty
    - PageSetLSN
    - _bt_insert_parent
    - PageAddItem
    - _bt_split
    - P_RIGHTMOST
    - BTreeTupleIsPosting
    - XLogRegisterData
    - _bt_getrootheight
    - IndexTupleSize
    - P_LEFTMOST
    - RelationGetRelationName
    - _bt_getbuf
    - BTPageGetMeta
    - pfree
    - START_CRIT_SECTION
    - BufferGetBlockNumber
    - ItemPointerGetOffsetNumber
    - RelationSetTargetBlock
    - IndexRelationGetNumberOfAttributes
    - _bt_swap_posting
    - OffsetNumberNext
    - PageGetFreeSpace
    - memcpy
    - BlockNumberIsValid
    - PageGetItem
    - ItemIdIsDead
    - P_FIRSTDATAKEY
    - IndexRelationGetNumberOfKeyAttributes
    - RelationNeedsWAL
    - BufferIsValid
    - PageGetItemId
    - _bt_upgrademetapage
    - XLogRegisterBufData
    - P_ISROOT
    - P_INCOMPLETE_SPLIT
    - elog
    - P_ISLEAF
    - BufferGetPage
    - Assert
    - XLogBeginInsert
    - _bt_relbuf
    - XLogInsert
    - BTreeTupleGetNAtts
    - PredicateLockPageSplit
    - BTPageGetOpaque
    - ereport
    - errmsg_internal
    - unlikely
    - XLogRegisterBuffer
    - CopyIndexTuple
    - END_CRIT_SECTION
    - ItemPointerGetBlockNumber
    - errcode
    - MAXALIGN
    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:1511,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1512,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1513,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1514,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1515,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1516,1
    - Dst: _bt_findsplitloc
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1542,1
    - Dst: PageGetTempPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1546,1
    - Dst: _bt_pageinit
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1547,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1547,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1548,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1568,1
    - Dst: PageGetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1568,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1591,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1592,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1592,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1594,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1594,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1595,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1627,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1628,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1629,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1649,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1650,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1650,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1651,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1652,1
    - Dst: _bt_truncate
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1657,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1658,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1696,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1696,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1697,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1697,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1698,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1699,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1699,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1699,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1700,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1702,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1704,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1705,1
    - Dst: _bt_allocbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1720,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1721,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1722,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1724,1
    - Dst: _bt_vacuum_cycleid
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1735,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1761,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1762,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1763,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1764,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1764,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1765,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1765,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1766,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1767,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1770,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1770,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1771,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1773,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1775,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1793,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1793,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1797,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1798,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1799,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1804,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1804,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1805,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1805,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1805,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1814,1
    - Dst: _bt_pgaddtup
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1815,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1818,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1818,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1819,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1821,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1823,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1827,1
    - Dst: _bt_pgaddtup
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1828,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1831,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1831,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1832,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1834,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1836,1
    - Dst: _bt_pgaddtup
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1843,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1845,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1845,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1846,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1848,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1850,1
    - Dst: _bt_pgaddtup
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1854,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1857,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1857,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1858,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1860,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1862,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1874,1
    - Dst: _bt_pgaddtup
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1875,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1878,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1878,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1879,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1881,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1883,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1893,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1894,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1895,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1898,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1898,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1899,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1900,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1901,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1904,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1932,1
    - Dst: PageRestoreTempPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1941,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1944,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1945,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1950,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1959,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1960,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1963,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1967,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1981,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1982,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1984,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1985,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1988,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:1990,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2020,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2023,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2024,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2025,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2025,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2026,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2033,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2034,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2036,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2037,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2037,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2049,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2054,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2056,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2057,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2059,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2061,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2061,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2064,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2068,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2072,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2076,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 202
    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: 2080
      start: 1466
    functionDepth: 6
    functionLinenumber: 1466
    functionLinenumberEnd: 2080
    functionName: _bt_split
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - PageSetLSN
    - _bt_vacuum_cycleid
    - MarkBufferDirty
    - PageAddItem
    - P_RIGHTMOST
    - OffsetNumberPrev
    - BTreeTupleIsPosting
    - BufferGetPageSize
    - XLogRegisterData
    - PageGetTempPage
    - IndexTupleSize
    - RelationGetRelationName
    - _bt_getbuf
    - pfree
    - START_CRIT_SECTION
    - BufferGetBlockNumber
    - PageGetLSN
    - _bt_pgaddtup
    - OffsetNumberNext
    - _bt_pageinit
    - PageGetItem
    - P_FIRSTDATAKEY
    - IndexRelationGetNumberOfKeyAttributes
    - RelationNeedsWAL
    - PageGetItemId
    - XLogRegisterBufData
    - PageRestoreTempPage
    - _bt_allocbuf
    - elog
    - P_ISLEAF
    - _bt_truncate
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - Assert
    - _bt_findsplitloc
    - XLogBeginInsert
    - memset
    - XLogInsert
    - BTreeTupleGetNAtts
    - _bt_relbuf
    - BTPageGetOpaque
    - ereport
    - errmsg_internal
    - ItemIdGetLength
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    - ItemPointerCompare
    - errcode
    - MAXALIGN
    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:2107,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2126,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2127,1
    - Dst: _bt_newlevel
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2129,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2131,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2132,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2133,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2137,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2138,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2139,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2149,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2150,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2164,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2164,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2165,1
    - Dst: RelationGetTargetBlock
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2165,1
    - Dst: _bt_get_endpoint
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2168,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2171,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2174,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2178,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2179,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2182,1
    - Dst: BTreeTupleSetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2183,1
    - Dst: _bt_getstackbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2194,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2209,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2212,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2213,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2214,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2215,1
    - Dst: _bt_insertonpg
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2218,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2219,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2219,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2223,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: 2225
      start: 2098
    functionDepth: 8
    functionLinenumber: 2098
    functionLinenumberEnd: 2225
    functionName: _bt_insert_parent
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - _bt_newlevel
    - _bt_getstackbuf
    - RelationGetRelationName
    - IndexTupleSize
    - pfree
    - RelationGetTargetBlock
    - BufferGetBlockNumber
    - BTreeTupleSetDownLink
    - BlockNumberIsValid
    - PageGetItem
    - PageGetItemId
    - elog
    - P_ISLEAF
    - _bt_insertonpg
    - BufferGetPage
    - Assert
    - _bt_relbuf
    - BTPageGetOpaque
    - ereport
    - errmsg_internal
    - CopyIndexTuple
    - errcode
    - _bt_get_endpoint
    - MAXALIGN
    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:2243,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2244,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2251,1
    - Dst: P_INCOMPLETE_SPLIT
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2251,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2252,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2255,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2256,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2257,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2267,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2268,1
    - Dst: BTPageGetMeta
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2269,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2271,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2273,1
    - Dst: P_LEFTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2279,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2279,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2281,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2282,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2282,1
    - Dst: _bt_insert_parent
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2284,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 4
    argNames:
    - rel
    - heaprel
    - lbuf
    - stack
    argTypes:
    - Relation
    - Relation
    - Buffer
    - BTStack
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2285
      start: 2240
    functionDepth: 9
    functionLinenumber: 2240
    functionLinenumberEnd: 2285
    functionName: _bt_finish_split
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - Assert
    - BufferGetBlockNumber
    - _bt_insert_parent
    - _bt_relbuf
    - BTPageGetOpaque
    - P_RIGHTMOST
    - P_INCOMPLETE_SPLIT
    - elog
    - BufferGetPage
    - P_LEFTMOST
    - _bt_getbuf
    - BTPageGetMeta
    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:2333,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2334,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2335,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2337,1
    - Dst: P_INCOMPLETE_SPLIT
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2338,1
    - Dst: _bt_finish_split
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2340,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2344,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2352,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2353,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2368,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2377,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2379,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2380,1
    - Dst: BTreeTupleGetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2382,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2391,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2393,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2395,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2396,1
    - Dst: BTreeTupleGetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2398,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2414,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2416,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2421,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 46
    argCount: 4
    argNames:
    - rel
    - heaprel
    - stack
    - child
    argTypes:
    - Relation
    - Relation
    - BTStack
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2423
      start: 2318
    functionDepth: 10
    functionLinenumber: 2318
    functionLinenumberEnd: 2423
    functionName: _bt_getstackbuf
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 2
    functionsReached:
    - Assert
    - PageGetItemId
    - _bt_relbuf
    - PageGetItem
    - BTPageGetOpaque
    - OffsetNumberPrev
    - P_RIGHTMOST
    - BTreeTupleGetDownLink
    - _bt_finish_split
    - P_INCOMPLETE_SPLIT
    - OffsetNumberNext
    - BufferGetPage
    - P_IGNORE
    - _bt_getbuf
    - PageGetMaxOffsetNumber
    - P_FIRSTDATAKEY
    linkageType: ''
    returnType: Buffer
    signature: Buffer _bt_getstackbuf(Relation rel, Relation heaprel, BTStack stack,
      BlockNumber child)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2464,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2465,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2466,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2467,1
    - Dst: _bt_allocbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2470,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2471,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2472,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2475,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2476,1
    - Dst: BTPageGetMeta
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2477,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2485,1
    - Dst: BTreeTupleSetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2487,1
    - Dst: BTreeTupleSetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2488,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2494,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2495,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2496,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2497,1
    - Dst: BTreeTupleSetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2498,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2501,1
    - Dst: _bt_upgrademetapage
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2505,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2508,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2512,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2529,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2529,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2530,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2532,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2534,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2534,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2539,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2539,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2540,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2540,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2541,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2542,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2544,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2546,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2546,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2549,1
    - Dst: P_INCOMPLETE_SPLIT
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2549,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2551,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2553,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2554,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2557,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2566,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2567,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2569,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2570,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2571,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2573,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2582,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2588,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2593,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2595,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2596,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2597,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2600,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2603,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2605,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2606,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 73
    argCount: 4
    argNames:
    - rel
    - heaprel
    - lbuf
    - rbuf
    argTypes:
    - Relation
    - Relation
    - Buffer
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2609
      start: 2443
    functionDepth: 6
    functionLinenumber: 2443
    functionLinenumberEnd: 2609
    functionName: _bt_newlevel
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - MarkBufferDirty
    - PageSetLSN
    - PageAddItem
    - XLogRegisterData
    - RelationGetRelationName
    - _bt_getbuf
    - BTPageGetMeta
    - pfree
    - START_CRIT_SECTION
    - BufferGetBlockNumber
    - BTreeTupleSetDownLink
    - PageGetItem
    - RelationNeedsWAL
    - BTreeTupleSetNAtts
    - IndexRelationGetNumberOfKeyAttributes
    - PageGetItemId
    - _bt_upgrademetapage
    - XLogRegisterBufData
    - _bt_allocbuf
    - elog
    - P_INCOMPLETE_SPLIT
    - BufferGetPage
    - palloc
    - Assert
    - XLogBeginInsert
    - _bt_relbuf
    - XLogInsert
    - BTreeTupleGetNAtts
    - BTPageGetOpaque
    - ItemIdGetLength
    - XLogRegisterBuffer
    - CopyIndexTuple
    - END_CRIT_SECTION
    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:2642,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2647,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2647,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 5
    argNames:
    - page
    - itemsize
    - itup
    - itup_off
    - newfirstdataitem
    argTypes:
    - Page
    - Size
    - IndexTuple
    - OffsetNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2652
      start: 2629
    functionDepth: 3
    functionLinenumber: 2629
    functionLinenumberEnd: 2652
    functionName: _bt_pgaddtup
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - BTreeTupleSetNAtts
    - PageAddItem
    - unlikely
    linkageType: ''
    returnType: bool
    signature: "bool _bt_pgaddtup(Page page,\n\t\t\t Size itemsize,\n\t\t\t IndexTuple
      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:2695,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2696,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2698,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2698,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2699,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2700,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2709,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2710,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2713,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2715,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2717,1
    - Dst: _bt_simpledel_pass
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2723,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2728,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2750,1
    - Dst: _bt_bottomupdel_pass
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2775,1
    - Dst: BTGetDeduplicateItems
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2779,1
    - Dst: _bt_dedup_pass
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2780,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: 2782
      start: 2682
    functionDepth: 8
    functionLinenumber: 2682
    functionLinenumberEnd: 2782
    functionName: _bt_delete_or_dedup_one_page
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - Assert
    - PageGetItemId
    - BTGetDeduplicateItems
    - BTPageGetOpaque
    - _bt_simpledel_pass
    - PageGetFreeSpace
    - OffsetNumberNext
    - P_ISLEAF
    - ItemIdIsDead
    - _bt_bottomupdel_pass
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - _bt_dedup_pass
    - P_FIRSTDATAKEY
    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:2816,1
    - Dst: _bt_deadblocks
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2823,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2828,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2832,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2833,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2837,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2839,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2840,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2846,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2848,1
    - Dst: bsearch
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2849,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2854,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2854,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2865,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2873,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2877,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2879,1
    - Dst: bsearch
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2880,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2885,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2885,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2896,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2907,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2909,1
    - Dst: _bt_delitems_delete_check
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2912,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2914,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2915,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: 2916
      start: 2811
    functionDepth: 7
    functionLinenumber: 2811
    functionLinenumberEnd: 2916
    functionName: _bt_simpledel_pass
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - PageGetItemId
    - BTreeTupleGetPostingN
    - BufferGetBlockNumber
    - _bt_delitems_delete_check
    - _bt_deadblocks
    - OffsetNumberNext
    - BTreeTupleIsPosting
    - ItemPointerGetBlockNumber
    - bsearch
    - BTreeTupleGetNPosting
    - BufferGetPage
    - palloc
    - PageGetItem
    - ItemIdIsDead
    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
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2953,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2960,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2960,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2960,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2961,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2965,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2966,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2968,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2968,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2970,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2976,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2979,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2983,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2987,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2989,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2994,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:2996,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:3001,1
    - Dst: qunique
      Src: /src/postgres/src/backend/access/nbtree/nbtinsert.c:3002,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: 3005
      start: 2937
    functionDepth: 5
    functionLinenumber: 2937
    functionLinenumberEnd: 3005
    functionName: _bt_deadblocks
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtinsert.c
    functionUses: 1
    functionsReached:
    - Assert
    - PageGetItemId
    - BTreeTupleGetPostingN
    - qsort
    - qunique
    - Max
    - BTreeTupleIsPivot
    - BTreeTupleIsPosting
    - BTreeTupleGetNPosting
    - repalloc
    - ItemPointerGetBlockNumber
    - palloc
    - PageGetItem
    - ItemIdIsDead
    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:3016,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3017
      start: 3010
    functionDepth: 1
    functionLinenumber: 3010
    functionLinenumberEnd: 3017
    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:103,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:104,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:106,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:108,1
    - Dst: IndexRelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:108,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:115,1
    - Dst: _bt_metaversion
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:118,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:128,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:130,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:143,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:151,1
    - Dst: ScanKeyEntryInitializeWithInfo
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:158,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 2
    argNames:
    - rel
    - itup
    argTypes:
    - Relation
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 92
    functionDepth: 6
    functionLinenumber: 92
    functionLinenumberEnd: 179
    functionName: _bt_mkscankey
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 3
    functionsReached:
    - IndexRelationGetNumberOfKeyAttributes
    - Min
    - Assert
    - ScanKeyEntryInitializeWithInfo
    - BTreeTupleGetNAtts
    - RelationGetDescr
    - _bt_metaversion
    - IndexRelationGetNumberOfAttributes
    - index_getattr
    - index_getprocinfo
    - palloc
    - BTreeTupleGetHeapTID
    linkageType: ''
    returnType: BTScanInsert
    signature: BTScanInsert _bt_mkscankey(Relation rel, IndexTuple itup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:193,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - stack
    argTypes:
    - BTStack
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 195
    functionName: _bt_freestack
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 1
    functionsReached:
    - pfree
    linkageType: ''
    returnType: void
    signature: void _bt_freestack(BTStack stack)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:220,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:221,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:245,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:245,1
    - Dst: INVERT_COMPARE_RESULT
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:258,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: 262
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 262
    functionName: _bt_compare_array_skey
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 0
    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/nbtutils.c:297,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:298,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:299,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:300,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:304,1
    - Dst: ScanDirectionIsNoMovement
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:304,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:305,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:326,1
    - Dst: _bt_compare_array_skey
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:334,1
    - Dst: _bt_compare_array_skey
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:362,1
    - Dst: _bt_compare_array_skey
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:389,1
    - Dst: _bt_compare_array_skey
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:414,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: 420
      start: 284
    functionDepth: 2
    functionLinenumber: 284
    functionLinenumberEnd: 420
    functionName: _bt_binsrch_array_skey
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 0
    functionsReached:
    - Assert
    - _bt_compare_array_skey
    - ScanDirectionIsNoMovement
    - ScanDirectionIsForward
    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/nbtutils.c:446,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:447,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:448,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:449,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:450,1
    - Dst: ScanDirectionIsNoMovement
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:450,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:454,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:474,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:481,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:481,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:487,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:487,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:500,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:500,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:506,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:506,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:520,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:521,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:521,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:521,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:526,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:527,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:527,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:527,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: 533
      start: 440
    functionDepth: 1
    functionLinenumber: 440
    functionLinenumberEnd: 533
    functionName: _bt_binsrch_skiparray_skey
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 0
    functionsReached:
    - Assert
    - FunctionCall2Coll
    - ScanDirectionIsForward
    - ScanDirectionIsBackward
    - DatumGetBool
    - ScanDirectionIsNoMovement
    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: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:551,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:552,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:557,1
    - Dst: _bt_array_set_low_or_high
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:559,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:564,1
    - Dst: _bt_skiparray_set_isnull
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:566,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:572,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:572,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:578,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: 579
      start: 547
    functionDepth: 1
    functionLinenumber: 547
    functionLinenumberEnd: 579
    functionName: _bt_skiparray_set_element
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 0
    functionsReached:
    - _bt_skiparray_set_isnull
    - pfree
    - Assert
    - datumCopy
    - unlikely
    - _bt_array_set_low_or_high
    - 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/nbtutils.c:587,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:588,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:589,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:593,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:593,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - rel
    - skey
    - array
    argTypes:
    - Relation
    - ScanKey
    - BTArrayKeyInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 584
    functionDepth: 1
    functionLinenumber: 584
    functionLinenumberEnd: 600
    functionName: _bt_skiparray_set_isnull
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void _bt_skiparray_set_isnull(Relation rel, ScanKey skey, BTArrayKeyInfo
      *array)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:614,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:615,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:622,1
    - Dst: _bt_array_set_low_or_high
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:624,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:625,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - IndexScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 608
    functionDepth: 1
    functionLinenumber: 608
    functionLinenumberEnd: 628
    functionName: _bt_start_array_keys
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 1
    functionsReached:
    - Assert
    - _bt_array_set_low_or_high
    - ScanDirectionIsForward
    linkageType: ''
    returnType: void
    signature: void _bt_start_array_keys(IndexScanDesc scan, ScanDirection dir)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:640,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:647,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:663,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:664,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:668,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:668,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: 692
      start: 636
    functionDepth: 1
    functionLinenumber: 636
    functionLinenumberEnd: 692
    functionName: _bt_array_set_low_or_high
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 2
    functionsReached:
    - pfree
    - Assert
    - 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: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:706,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:707,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:712,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:731,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:766,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:775,1
    - Dst: BTArrayKeyInfo*::sksup::decrement
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:784,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:785,1
    - Dst: _bt_skiparray_set_isnull
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:790,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:805,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:805,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:812,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:812,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:820,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:820,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 44
    argCount: 3
    argNames:
    - rel
    - skey
    - array
    argTypes:
    - Relation
    - ScanKey
    - BTArrayKeyInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 700
    functionDepth: 2
    functionLinenumber: 700
    functionLinenumberEnd: 825
    functionName: _bt_array_decrement
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 0
    functionsReached:
    - _bt_skiparray_set_isnull
    - pfree
    - Assert
    - FunctionCall2Coll
    - BTArrayKeyInfo*::sksup::decrement
    - datumCopy
    - unlikely
    - DatumGetBool
    - DatumGetPointer
    linkageType: ''
    returnType: bool
    signature: bool _bt_array_decrement(Relation rel, ScanKey skey, BTArrayKeyInfo
      *array)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:839,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:840,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:845,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:864,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:899,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:908,1
    - Dst: BTArrayKeyInfo*::sksup::increment
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:917,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:918,1
    - Dst: _bt_skiparray_set_isnull
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:923,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:938,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:938,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:945,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:945,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:953,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:953,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 44
    argCount: 3
    argNames:
    - rel
    - skey
    - array
    argTypes:
    - Relation
    - ScanKey
    - BTArrayKeyInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 833
    functionDepth: 2
    functionLinenumber: 833
    functionLinenumberEnd: 958
    functionName: _bt_array_increment
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 0
    functionsReached:
    - _bt_skiparray_set_isnull
    - pfree
    - Assert
    - FunctionCall2Coll
    - BTArrayKeyInfo*::sksup::increment
    - datumCopy
    - unlikely
    - DatumGetBool
    - DatumGetPointer
    linkageType: ''
    returnType: bool
    signature: bool _bt_array_increment(Relation rel, ScanKey skey, BTArrayKeyInfo
      *array)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:992,1
    - Dst: _bt_array_increment
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:994,1
    - Dst: _bt_array_decrement
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:999,1
    - Dst: _bt_array_set_low_or_high
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1009,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1010,1
    - Dst: _bt_start_array_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1030,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - scan
    - dir
    - skip_array_set
    argTypes:
    - IndexScanDesc
    - ScanDirection
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 972
    functionDepth: 3
    functionLinenumber: 972
    functionLinenumberEnd: 1033
    functionName: _bt_advance_array_keys_increment
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 0
    functionsReached:
    - _bt_array_increment
    - _bt_start_array_keys
    - _bt_array_decrement
    - _bt_array_set_low_or_high
    - ScanDirectionIsForward
    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: 15
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1084,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1085,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1086,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1087,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1100,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1111,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1112,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1118,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1154,1
    - Dst: likely
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1156,1
    - Dst: _bt_compare_array_skey
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1159,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1174,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1193,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1193,1
    - Dst: _bt_binsrch_skiparray_skey
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1208,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1232,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1233,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1242,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1251,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1254,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: 1257
      start: 1077
    functionDepth: 3
    functionLinenumber: 1077
    functionLinenumberEnd: 1257
    functionName: _bt_tuple_before_array_skeys
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 0
    functionsReached:
    - Assert
    - likely
    - _bt_compare_array_skey
    - _bt_binsrch_skiparray_skey
    - ScanDirectionIsBackward
    - index_getattr
    - ScanDirectionIsForward
    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: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1274,1
    - Dst: _bt_parallel_done
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1323,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - IndexScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1326
      start: 1269
    functionDepth: 2
    functionLinenumber: 1269
    functionLinenumberEnd: 1326
    functionName: _bt_start_prim_scan
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 2
    functionsReached:
    - _bt_parallel_done
    - Assert
    linkageType: ''
    returnType: bool
    signature: bool _bt_start_prim_scan(IndexScanDesc scan, ScanDirection dir)
  - BBCount: 40
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1403,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1404,1
    - Dst: _bt_verify_keys_with_arraykeys
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1404,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1411,1
    - Dst: _bt_tuple_before_array_skeys
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1411,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1435,1
    - Dst: _bt_check_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1436,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1459,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1468,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1470,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1487,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1515,1
    - Dst: _bt_array_set_low_or_high
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1552,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1553,1
    - Dst: _bt_array_set_low_or_high
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1579,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1580,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1589,1
    - Dst: _bt_binsrch_skiparray_skey
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1600,1
    - Dst: _bt_binsrch_array_skey
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1608,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1615,1
    - Dst: _bt_compare_array_skey
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1626,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1658,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1659,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1662,1
    - Dst: _bt_skiparray_set_element
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1693,1
    - Dst: _bt_advance_array_keys_increment
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1713,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1716,1
    - Dst: _bt_verify_keys_with_arraykeys
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1716,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1754,1
    - Dst: _bt_check_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1757,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1763,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1786,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1790,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1791,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1798,1
    - Dst: _bt_advance_array_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1801,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1805,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1842,1
    - Dst: _bt_tuple_before_array_skeys
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1842,1
    - Dst: _bt_tuple_before_array_skeys
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1866,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1867,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1938,1
    - Dst: _bt_oppodir_checkkeys
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1938,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1974,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:1983,1
    - Dst: _bt_parallel_primscan_schedule
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2040,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: 2062
      start: 1388
    functionDepth: 4
    functionLinenumber: 1388
    functionLinenumberEnd: 2062
    functionName: _bt_advance_array_keys
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 1
    functionsReached:
    - _bt_verify_keys_with_arraykeys
    - _bt_tuple_before_array_skeys
    - Assert
    - _bt_advance_array_keys_increment
    - _bt_binsrch_array_skey
    - _bt_compare_array_skey
    - _bt_binsrch_skiparray_skey
    - BTreeTupleGetNAtts
    - _bt_oppodir_checkkeys
    - _bt_advance_array_keys
    - unlikely
    - ScanDirectionIsBackward
    - index_getattr
    - _bt_check_compare
    - _bt_array_set_low_or_high
    - _bt_skiparray_set_element
    - ScanDirectionIsForward
    - _bt_parallel_primscan_schedule
    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: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 25
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2116
      start: 2069
    functionDepth: 0
    functionLinenumber: 2069
    functionLinenumberEnd: 2116
    functionName: _bt_verify_keys_with_arraykeys
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool _bt_verify_keys_with_arraykeys(IndexScanDesc scan)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2151,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2157,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2157,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2158,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2159,1
    - Dst: _bt_check_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2161,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2172,1
    - Dst: _bt_check_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2181,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2184,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2185,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2192,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2193,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2214,1
    - Dst: _bt_tuple_before_array_skeys
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2215,1
    - Dst: _bt_checkkeys_look_ahead
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2240,1
    - Dst: _bt_advance_array_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2260,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: 2262
      start: 2147
    functionDepth: 5
    functionLinenumber: 2147
    functionLinenumberEnd: 2262
    functionName: _bt_checkkeys
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 0
    functionsReached:
    - _bt_tuple_before_array_skeys
    - Assert
    - BTreeTupleGetNAtts
    - RelationGetDescr
    - _bt_advance_array_keys
    - _bt_check_compare
    - _bt_checkkeys_look_ahead
    linkageType: ''
    returnType: bool
    signature: "bool _bt_checkkeys(IndexScanDesc scan, BTReadPageState *pstate, bool
      arrayKeys,\n\t\t\t  IndexTuple tuple, int tupnatts)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2280,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2282,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2285,1
    - Dst: _bt_tuple_before_array_skeys
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2287,1
    - Dst: _bt_oppodir_checkkeys
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2309,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - scan
    - dir
    - finaltup
    argTypes:
    - IndexScanDesc
    - ScanDirection
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2310
      start: 2275
    functionDepth: 4
    functionLinenumber: 2275
    functionLinenumberEnd: 2310
    functionName: _bt_scanbehind_checkkeys
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 0
    functionsReached:
    - _bt_tuple_before_array_skeys
    - Assert
    - BTreeTupleGetNAtts
    - _bt_oppodir_checkkeys
    - RelationGetDescr
    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/nbtutils.c:2335,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2337,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2342,1
    - Dst: _bt_check_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2344,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - scan
    - dir
    - finaltup
    argTypes:
    - IndexScanDesc
    - ScanDirection
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2352
      start: 2330
    functionDepth: 1
    functionLinenumber: 2330
    functionLinenumberEnd: 2352
    functionName: _bt_oppodir_checkkeys
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 2
    functionsReached:
    - BTreeTupleGetNAtts
    - RelationGetDescr
    - _bt_check_compare
    - Assert
    linkageType: ''
    returnType: bool
    signature: "bool _bt_oppodir_checkkeys(IndexScanDesc scan, ScanDirection dir,\n\t\t\t\t\t
      \ IndexTuple finaltup)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2393,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2402,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2403,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2404,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2405,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2406,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2407,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2407,1
    - Dst: P_LEFTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2408,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2408,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2414,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2415,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2418,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2419,1
    - Dst: _bt_keep_natts_fast
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2422,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2467,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2468,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2473,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2484,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2484,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2491,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2491,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2501,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2516,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2521,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2530,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2530,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2541,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2553,1
    - Dst: _bt_binsrch_array_skey
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2555,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2570,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2592,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2593,1
    - Dst: _bt_binsrch_skiparray_skey
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2596,1
    - Dst: _bt_binsrch_skiparray_skey
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2603,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2640,1
    CyclomaticComplexity: 53
    EdgeCount: 53
    ICount: 86
    argCount: 2
    argNames:
    - scan
    - pstate
    argTypes:
    - IndexScanDesc
    - BTReadPageState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2646
      start: 2388
    functionDepth: 3
    functionLinenumber: 2388
    functionLinenumberEnd: 2646
    functionName: _bt_set_startikey
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 0
    functionsReached:
    - Assert
    - PageGetItemId
    - FunctionCall2Coll
    - _bt_binsrch_skiparray_skey
    - PageGetItem
    - RelationGetDescr
    - P_RIGHTMOST
    - BTPageGetOpaque
    - index_getattr
    - _bt_keep_natts_fast
    - _bt_binsrch_array_skey
    - DatumGetBool
    - P_LEFTMOST
    linkageType: ''
    returnType: void
    signature: void _bt_set_startikey(IndexScanDesc scan, BTReadPageState *pstate)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2721,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2722,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2724,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2725,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2736,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2736,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2747,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2748,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2749,1
    - Dst: _bt_advance_array_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2757,1
    - Dst: _bt_check_rowcompare
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2767,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2773,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2788,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2789,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2801,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2809,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2828,1
    - Dst: _bt_advance_array_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2829,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2847,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2865,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2875,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2875,1
    - Dst: _bt_advance_array_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2900,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: 2912
      start: 2694
    functionDepth: 5
    functionLinenumber: 2694
    functionLinenumberEnd: 2912
    functionName: _bt_check_compare
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 3
    functionsReached:
    - Assert
    - FunctionCall2Coll
    - _bt_advance_array_keys
    - unlikely
    - ScanDirectionIsBackward
    - BTreeTupleIsPivot
    - index_getattr
    - _bt_check_rowcompare
    - DatumGetBool
    - ScanDirectionIsForward
    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: 24
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2928,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2933,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2941,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2953,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2953,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2960,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2963,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2976,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2976,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:2980,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3024,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3028,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3062,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3066,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3077,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3077,1
    - Dst: INVERT_COMPARE_RESULT
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3083,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3115,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3129,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3132,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 72
    argCount: 7
    argNames:
    - skey
    - tuple
    - tupnatts
    - tupdesc
    - dir
    - forcenonrequired
    - continuescan
    argTypes:
    - ScanKey
    - IndexTuple
    - int
    - TupleDesc
    - ScanDirection
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3137
      start: 2923
    functionDepth: 3
    functionLinenumber: 2923
    functionLinenumberEnd: 3137
    functionName: _bt_check_rowcompare
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 1
    functionsReached:
    - Assert
    - INVERT_COMPARE_RESULT
    - FunctionCall2Coll
    - DatumGetInt32
    - elog
    - ScanDirectionIsBackward
    - BTreeTupleIsPivot
    - index_getattr
    - DatumGetPointer
    - ScanDirectionIsForward
    linkageType: ''
    returnType: bool
    signature: "bool _bt_check_rowcompare(ScanKey skey, 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: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3164,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3174,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3177,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3191,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3192,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3195,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3198,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3199,1
    - Dst: _bt_tuple_before_array_skeys
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3200,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3207,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3222,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 4
    argNames:
    - scan
    - pstate
    - tupnatts
    - tupdesc
    argTypes:
    - IndexScanDesc
    - BTReadPageState*
    - int
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3224
      start: 3155
    functionDepth: 4
    functionLinenumber: 3155
    functionLinenumberEnd: 3224
    functionName: _bt_checkkeys_look_ahead
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 1
    functionsReached:
    - _bt_tuple_before_array_skeys
    - Min
    - Assert
    - PageGetItemId
    - Max
    - ScanDirectionIsBackward
    - PageGetItem
    - ScanDirectionIsForward
    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: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3268,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3269,1
    - Dst: BTScanPosIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3269,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3270,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3282,1
    - Dst: BTScanPosIsPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3282,1
    - Dst: _bt_lockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3284,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3290,1
    - Dst: BTScanPosIsPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3290,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3291,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3291,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3292,1
    - Dst: BufferGetLSNAtomic
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3294,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3295,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3295,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3296,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3300,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3307,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3308,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3309,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3310,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3318,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3324,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3325,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3328,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3331,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3350,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3352,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3360,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3392,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3403,1
    - Dst: ItemIdMarkDead
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3406,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3410,1
    - Dst: MarkBufferDirtyHint
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3424,1
    - Dst: _bt_unlockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3428,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3430,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 58
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3431
      start: 3255
    functionDepth: 6
    functionLinenumber: 3255
    functionLinenumberEnd: 3431
    functionName: _bt_killitems
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 3
    functionsReached:
    - _bt_unlockbuf
    - BTreeTupleGetPostingN
    - BTreeTupleIsPosting
    - _bt_getbuf
    - OffsetNumberNext
    - BTreeTupleGetNPosting
    - PageGetItem
    - ItemIdIsDead
    - P_FIRSTDATAKEY
    - RelationNeedsWAL
    - MarkBufferDirtyHint
    - PageGetItemId
    - BufferGetLSNAtomic
    - BTScanPosIsPinned
    - ItemPointerEquals
    - ItemIdMarkDead
    - BufferGetPage
    - _bt_lockbuf
    - XLogRecPtrIsInvalid
    - PageGetMaxOffsetNumber
    - Assert
    - _bt_relbuf
    - BTPageGetOpaque
    - BTScanPosIsValid
    linkageType: ''
    returnType: void
    signature: void _bt_killitems(IndexScanDesc scan)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3482,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3496,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3498
      start: 3475
    functionDepth: 1
    functionLinenumber: 3475
    functionLinenumberEnd: 3498
    functionName: _bt_vacuum_cycleid
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 1
    functionsReached:
    - LWLockRelease
    - LWLockAcquire
    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:3516,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3539,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3540,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3541,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3548,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3549,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3556,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3558
      start: 3509
    functionDepth: 1
    functionLinenumber: 3509
    functionLinenumberEnd: 3558
    functionName: _bt_start_vacuum
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 1
    functionsReached:
    - elog
    - LWLockRelease
    - LWLockAcquire
    - 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:3571,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3588,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3589
      start: 3566
    functionDepth: 1
    functionLinenumber: 3566
    functionLinenumberEnd: 3589
    functionName: _bt_end_vacuum
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 1
    functionsReached:
    - LWLockRelease
    - LWLockAcquire
    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:3597,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3597,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3598
      start: 3594
    functionDepth: 2
    functionLinenumber: 3594
    functionLinenumberEnd: 3598
    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:3609,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3609,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3611
      start: 3603
    functionDepth: 1
    functionLinenumber: 3603
    functionLinenumberEnd: 3611
    functionName: BTreeShmemSize
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 0
    functionsReached:
    - add_size
    - mul_size
    linkageType: ''
    returnType: Size
    signature: Size BTreeShmemSize(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ShmemInitStruct
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3621,1
    - Dst: BTreeShmemSize
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3622,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3628,1
    - Dst: time
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3635,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3641,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3642
      start: 3616
    functionDepth: 2
    functionLinenumber: 3616
    functionLinenumberEnd: 3642
    functionName: BTreeShmemInit
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 0
    functionsReached:
    - Assert
    - ShmemInitStruct
    - time
    - BTreeShmemSize
    linkageType: ''
    returnType: void
    signature: void BTreeShmemInit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: build_reloptions
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3655,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3658,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - reloptions
    - validate
    argTypes:
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3659
      start: 3644
    functionDepth: 1
    functionLinenumber: 3644
    functionLinenumberEnd: 3659
    functionName: btoptions
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 0
    functionsReached:
    - build_reloptions
    - lengthof
    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: 3685
      start: 3667
    functionDepth: 0
    functionLinenumber: 3667
    functionLinenumberEnd: 3685
    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: 3708
      start: 3690
    functionDepth: 0
    functionLinenumber: 3690
    functionLinenumberEnd: 3708
    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:3742,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3743,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3754,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3754,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3754,1
    - Dst: _bt_keep_natts
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3757,1
    - Dst: index_truncate_tuple
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3764,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3765,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3767,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3774,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3775,1
    - Dst: IndexRelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3775,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3777,1
    - Dst: BTreeTupleGetPostingOffset
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3777,1
    - Dst: BTreeTupleSetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3786,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3803,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3803,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3803,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3804,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3805,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3805,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3805,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3807,1
    - Dst: BTreeTupleSetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3815,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3816,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3825,1
    - Dst: BTreeTupleGetMaxHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3825,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3838,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3838,1
    - Dst: BTreeTupleGetMaxHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3838,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3839,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3840,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3840,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3841,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3842,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3842,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3843,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3856,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3856,1
    - Dst: ItemPointerSetOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3863,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3864,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3864,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3865,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3865,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3866,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: 3870
      start: 3738
    functionDepth: 6
    functionLinenumber: 3738
    functionLinenumberEnd: 3870
    functionName: _bt_truncate
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 2
    functionsReached:
    - ItemPointerSetOffsetNumber
    - OffsetNumberPrev
    - BTreeTupleIsPosting
    - IndexTupleSize
    - _bt_keep_natts
    - BTreeTupleGetMaxHeapTID
    - Min
    - pfree
    - ItemPointerGetOffsetNumber
    - index_truncate_tuple
    - IndexRelationGetNumberOfAttributes
    - BTreeTupleIsPivot
    - memcpy
    - IndexRelationGetNumberOfKeyAttributes
    - BTreeTupleSetNAtts
    - MAXALIGN
    - Assert
    - ItemPointerCopy
    - RelationGetDescr
    - BTreeTupleGetPostingOffset
    - palloc0
    - ItemPointerCompare
    - BTreeTupleGetHeapTID
    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:3887,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3888,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3909,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3910,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3916,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3916,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3929,1
    - Dst: _bt_keep_natts_fast
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3930,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: 3933
      start: 3883
    functionDepth: 3
    functionLinenumber: 3883
    functionLinenumberEnd: 3933
    functionName: _bt_keep_natts
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 1
    functionsReached:
    - IndexRelationGetNumberOfKeyAttributes
    - Assert
    - FunctionCall2Coll
    - RelationGetDescr
    - DatumGetInt32
    - index_getattr
    - _bt_keep_natts_fast
    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:3960,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3961,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3973,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3974,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3975,1
    - Dst: datum_image_eq
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:3981,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 3
    argNames:
    - rel
    - lastleft
    - firstright
    argTypes:
    - Relation
    - IndexTuple
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3988
      start: 3957
    functionDepth: 3
    functionLinenumber: 3957
    functionLinenumberEnd: 3988
    functionName: _bt_keep_natts_fast
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 9
    functionsReached:
    - IndexRelationGetNumberOfKeyAttributes
    - datum_image_eq
    - RelationGetDescr
    - index_getattr
    - 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:4007,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4008,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4009,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4017,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4020,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4021,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4023,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4023,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4024,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4027,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4031,1
    - Dst: ItemPointerGetOffsetNumberNoCheck
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4032,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4037,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4040,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4042,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4048,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4065,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4065,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4080,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4104,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4122,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4129,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4133,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4140,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 40
    argCount: 4
    argNames:
    - rel
    - heapkeyspace
    - page
    - offnum
    argTypes:
    - Relation
    - bool
    - Page
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4150
      start: 4004
    functionDepth: 5
    functionLinenumber: 4004
    functionLinenumberEnd: 4150
    functionName: _bt_check_natts
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 0
    functionsReached:
    - IndexRelationGetNumberOfKeyAttributes
    - Assert
    - PageGetItemId
    - ItemPointerGetOffsetNumber
    - PageGetItem
    - BTreeTupleGetNAtts
    - BTPageGetOpaque
    - P_RIGHTMOST
    - ItemPointerGetOffsetNumberNoCheck
    - IndexRelationGetNumberOfAttributes
    - BTreeTupleIsPivot
    - BTreeTupleIsPosting
    - P_ISLEAF
    - BTreeTupleGetHeapTID
    - P_IGNORE
    - PageGetMaxOffsetNumber
    - P_FIRSTDATAKEY
    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:4171,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4171,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4189,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4190,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4191,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4192,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4194,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4195,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4196,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4200,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4201,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4202,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4202,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4203,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4203,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4204,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4205,1
    - Dst: errtableconstraint
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4208,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4208,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: 4209
      start: 4164
    functionDepth: 5
    functionLinenumber: 4164
    functionLinenumberEnd: 4209
    functionName: _bt_check_third_page
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 2
    functionsReached:
    - errmsg
    - errtableconstraint
    - RelationGetRelationName
    - ItemPointerGetOffsetNumber
    - BTPageGetOpaque
    - ereport
    - elog
    - errhint
    - P_ISLEAF
    - BTreeTupleGetHeapTID
    - ItemPointerGetBlockNumber
    - IndexTupleSize
    - errdetail
    - errcode
    - MAXALIGN
    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:4227,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4228,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4231,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4238,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4245,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4246,1
    - Dst: OidFunctionCall1Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4246,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4247,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4257,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4258,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4260,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtutils.c:4261,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - rel
    - debugmessage
    argTypes:
    - Relation
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4265
      start: 4221
    functionDepth: 1
    functionLinenumber: 4221
    functionLinenumberEnd: 4265
    functionName: _bt_allequalimage
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtutils.c
    functionUses: 2
    functionsReached:
    - IndexRelationGetNumberOfKeyAttributes
    - RelationGetRelationName
    - ObjectIdGetDatum
    - IndexRelationGetNumberOfAttributes
    - elog
    - OidIsValid
    - DatumGetBool
    - get_opfamily_proc
    - OidFunctionCall1Coll
    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:69,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:79,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:79,1
    - Dst: BufferGetLSNAtomic
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:80,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:81,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - rel
    - so
    argTypes:
    - Relation
    - BTScanOpaque
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 63
    functionDepth: 5
    functionLinenumber: 63
    functionLinenumberEnd: 83
    functionName: _bt_drop_lock_and_maybe_pin
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 0
    functionsReached:
    - _bt_unlockbuf
    - Assert
    - BufferGetLSNAtomic
    - _bt_relbuf
    - RelationNeedsWAL
    linkageType: ''
    returnType: void
    signature: void _bt_drop_lock_and_maybe_pin(Relation rel, BTScanOpaque so)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:114,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:115,1
    - Dst: _bt_getroot
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:118,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:121,1
    - Dst: _bt_moveright
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:147,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:151,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:152,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:153,1
    - Dst: _bt_binsrch
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:160,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:161,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:162,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:163,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:163,1
    - Dst: BTreeTupleGetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:164,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:172,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:173,1
    - Dst: _bt_relandgetbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:186,1
    - Dst: _bt_unlockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:200,1
    - Dst: _bt_lockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:201,1
    - Dst: _bt_moveright
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:208,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 5
    argNames:
    - rel
    - heaprel
    - key
    - bufP
    - access
    argTypes:
    - Relation
    - Relation
    - BTScanInsert
    - Buffer*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 106
    functionDepth: 6
    functionLinenumber: 106
    functionLinenumberEnd: 212
    functionName: _bt_search
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 2
    functionsReached:
    - _bt_getroot
    - Assert
    - BufferIsValid
    - PageGetItemId
    - BufferGetBlockNumber
    - _bt_binsrch
    - _bt_unlockbuf
    - _bt_moveright
    - BTPageGetOpaque
    - BTreeTupleGetDownLink
    - _bt_relandgetbuf
    - _bt_lockbuf
    - BTreeTupleIsPivot
    - P_ISLEAF
    - BufferGetPage
    - palloc
    - PageGetItem
    linkageType: ''
    returnType: BTStack
    signature: "BTStack _bt_search(Relation rel, Relation heaprel, BTScanInsert key,
      Buffer *bufP,\n\t\t   int access)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:258,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:281,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:282,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:284,1
    - Dst: P_INCOMPLETE_SPLIT
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:290,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:292,1
    - Dst: _bt_unlockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:297,1
    - Dst: _bt_lockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:298,1
    - Dst: P_INCOMPLETE_SPLIT
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:301,1
    - Dst: _bt_finish_split
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:302,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:304,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:307,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:311,1
    - Dst: _bt_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:311,1
    - Dst: _bt_relandgetbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:314,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:321,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:322,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:323,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: 326
      start: 245
    functionDepth: 10
    functionLinenumber: 245
    functionLinenumberEnd: 326
    functionName: _bt_moveright
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 1
    functionsReached:
    - _bt_unlockbuf
    - Assert
    - RelationGetRelationName
    - BufferGetBlockNumber
    - _bt_relbuf
    - BTPageGetOpaque
    - P_RIGHTMOST
    - _bt_lockbuf
    - _bt_finish_split
    - P_INCOMPLETE_SPLIT
    - _bt_compare
    - _bt_relandgetbuf
    - elog
    - BufferGetPage
    - P_IGNORE
    - _bt_getbuf
    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:359,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:360,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:363,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:365,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:365,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:367,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:368,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:377,1
    - Dst: _bt_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:402,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:417,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:429,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:451,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:451,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:453,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 3
    argNames:
    - rel
    - key
    - buf
    argTypes:
    - Relation
    - BTScanInsert
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 347
    functionDepth: 4
    functionLinenumber: 347
    functionLinenumberEnd: 454
    functionName: _bt_binsrch
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 1
    functionsReached:
    - Assert
    - BTPageGetOpaque
    - OffsetNumberPrev
    - unlikely
    - _bt_compare
    - P_ISLEAF
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - P_FIRSTDATAKEY
    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:490,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:491,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:493,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:493,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:494,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:495,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:500,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:501,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:511,1
    - Dst: _bt_compare
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:542,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:560,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:568,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:569,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:570,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:571,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:572,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:574,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:575,1
    - Dst: _bt_binsrch_posting
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:577,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 2
    argNames:
    - rel
    - insertstate
    argTypes:
    - Relation
    - BTInsertState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 478
    functionDepth: 4
    functionLinenumber: 478
    functionLinenumberEnd: 596
    functionName: _bt_binsrch_insert
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 2
    functionsReached:
    - errcode
    - Assert
    - BufferGetBlockNumber
    - ItemPointerGetOffsetNumber
    - _bt_binsrch_posting
    - BTPageGetOpaque
    - ereport
    - errmsg_internal
    - unlikely
    - _bt_compare
    - ItemPointerGetBlockNumber
    - P_ISLEAF
    - BufferGetPage
    - RelationGetRelationName
    - PageGetMaxOffsetNumber
    - P_FIRSTDATAKEY
    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:626,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:627,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:628,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:631,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:639,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:644,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:645,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:650,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:651,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - key
    - page
    - offnum
    argTypes:
    - BTScanInsert
    - Page
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 606
    functionDepth: 5
    functionLinenumber: 606
    functionLinenumberEnd: 663
    functionName: _bt_binsrch_posting
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 1
    functionsReached:
    - Assert
    - PageGetItemId
    - BTreeTupleGetPostingN
    - BTreeTupleIsPosting
    - BTreeTupleGetNPosting
    - PageGetItem
    - ItemPointerCompare
    - ItemIdIsDead
    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:698,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:699,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:707,1
    - Dst: _bt_check_natts
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:707,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:708,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:708,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:709,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:715,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:715,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:718,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:718,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:719,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:733,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:734,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:735,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:735,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:742,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:770,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:770,1
    - Dst: INVERT_COMPARE_RESULT
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:776,1
    - Dst: BTreeTupleGetHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:803,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:841,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:841,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:851,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:851,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:852,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:853,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:857,1
    - Dst: BTreeTupleGetMaxHeapTID
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:858,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 54
    argCount: 4
    argNames:
    - rel
    - key
    - page
    - offnum
    argTypes:
    - Relation
    - BTScanInsert
    - Page
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 692
    functionDepth: 6
    functionLinenumber: 692
    functionLinenumberEnd: 864
    functionName: _bt_compare
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 6
    functionsReached:
    - BTreeTupleIsPosting
    - BTreeTupleGetMaxHeapTID
    - Min
    - PageGetItem
    - P_FIRSTDATAKEY
    - IndexRelationGetNumberOfKeyAttributes
    - PageGetItemId
    - FunctionCall2Coll
    - DatumGetInt32
    - P_ISLEAF
    - INVERT_COMPARE_RESULT
    - Assert
    - BTreeTupleGetNAtts
    - RelationGetDescr
    - BTPageGetOpaque
    - _bt_check_natts
    - index_getattr
    - ItemPointerCompare
    - BTreeTupleGetHeapTID
    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:901,1
    - Dst: BTScanPosIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:901,1
    - Dst: _bt_preprocess_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:907,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:915,1
    - Dst: _bt_parallel_done
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:916,1
    - Dst: _bt_parallel_seize
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:925,1
    - Dst: _bt_start_array_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:934,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:942,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:943,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:944,1
    - Dst: _bt_readnextpage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:946,1
    - Dst: _bt_returnitem
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:949,1
    - Dst: pgstat_count_index_scan
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:957,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1065,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1068,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1096,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1098,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1103,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1107,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1113,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1122,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1123,1
    - Dst: ScanKeyEntryInitialize
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1127,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1168,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1169,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1171,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1173,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1178,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1201,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1225,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1235,1
    - Dst: _bt_endpoint
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1252,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1261,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1266,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1273,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1282,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1283,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1284,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1292,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1293,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1299,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1319,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1323,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1345,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1346,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1347,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1349,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1355,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1408,1
    - Dst: ScanKeyEntryInitializeWithInfo
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1409,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1422,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1425,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1426,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1428,1
    - Dst: ScanKeyEntryInitialize
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1429,1
    - Dst: _bt_metaversion
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1447,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1471,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1509,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1517,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1517,1
    - Dst: _bt_search
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1518,1
    - Dst: _bt_freestack
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1521,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1523,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1525,1
    - Dst: IsolationIsSerializable
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1536,1
    - Dst: PredicateLockRelation
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1538,1
    - Dst: _bt_search
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1539,1
    - Dst: _bt_freestack
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1540,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1543,1
    - Dst: _bt_parallel_done
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1545,1
    - Dst: _bt_binsrch
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1551,1
    - Dst: _bt_readfirstpage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1573,1
    - Dst: _bt_returnitem
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1576,1
    CyclomaticComplexity: 83
    EdgeCount: 83
    ICount: 223
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - IndexScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1578
      start: 886
    functionDepth: 7
    functionLinenumber: 886
    functionLinenumberEnd: 1578
    functionName: _bt_first
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 2
    functionsReached:
    - _bt_parallel_done
    - _bt_search
    - IsolationIsSerializable
    - ScanDirectionIsBackward
    - RelationGetRelationName
    - _bt_readnextpage
    - ScanDirectionIsForward
    - _bt_binsrch
    - RegProcedureIsValid
    - _bt_freestack
    - PredicateLockRelation
    - index_getprocinfo
    - memcpy
    - DatumGetPointer
    - _bt_returnitem
    - BufferIsValid
    - _bt_start_array_keys
    - ScanKeyEntryInitializeWithInfo
    - ScanKeyEntryInitialize
    - elog
    - _bt_endpoint
    - get_opfamily_proc
    - _bt_preprocess_keys
    - _bt_parallel_seize
    - Assert
    - pgstat_count_index_scan
    - _bt_metaversion
    - BTScanPosIsValid
    - _bt_readfirstpage
    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:1599,1
    - Dst: BTScanPosIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1599,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1605,1
    - Dst: _bt_steppage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1609,1
    - Dst: _bt_steppage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1617,1
    - Dst: _bt_returnitem
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1622,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - IndexScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1624
      start: 1594
    functionDepth: 1
    functionLinenumber: 1594
    functionLinenumberEnd: 1624
    functionName: _bt_next
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 2
    functionsReached:
    - Assert
    - _bt_steppage
    - BTScanPosIsValid
    - ScanDirectionIsForward
    - _bt_returnitem
    linkageType: ''
    returnType: bool
    signature: bool _bt_next(IndexScanDesc scan, ScanDirection dir)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1662,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1663,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1664,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1672,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1672,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1674,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1674,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1675,1
    - Dst: BTScanPosIsPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1675,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1676,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1681,1
    - Dst: _bt_parallel_release
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1682,1
    - Dst: _bt_parallel_release
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1685,1
    - Dst: PredicateLockPage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1689,1
    - Dst: IndexRelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1692,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1694,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1695,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1712,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1717,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1719,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1721,1
    - Dst: _bt_scanbehind_checkkeys
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1724,1
    - Dst: _bt_parallel_primscan_schedule
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1730,1
    - Dst: _bt_set_startikey
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1744,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1749,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1753,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1761,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1763,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1767,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1768,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1768,1
    - Dst: _bt_checkkeys
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1771,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1778,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1780,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1781,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1782,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1792,1
    - Dst: _bt_saveitem
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1795,1
    - Dst: _bt_setuppostingitems
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1807,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1808,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1812,1
    - Dst: _bt_savepostingitem
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1814,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1815,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1825,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1839,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1841,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1842,1
    - Dst: _bt_start_array_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1847,1
    - Dst: BTreeTupleGetNAtts
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1851,1
    - Dst: _bt_checkkeys
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1852,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1858,1
    - Dst: P_LEFTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1868,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1870,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1872,1
    - Dst: _bt_scanbehind_checkkeys
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1875,1
    - Dst: _bt_parallel_primscan_schedule
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1881,1
    - Dst: _bt_set_startikey
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1895,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1900,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1904,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1919,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1923,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1932,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1933,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1933,1
    - Dst: _bt_start_array_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1941,1
    - Dst: _bt_checkkeys
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1943,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1955,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1956,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1965,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1967,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1968,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1969,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1979,1
    - Dst: _bt_saveitem
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:1983,1
    - Dst: _bt_setuppostingitems
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2001,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2002,1
    - Dst: BTreeTupleGetNPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2005,1
    - Dst: _bt_savepostingitem
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2008,1
    - Dst: BTreeTupleGetPostingN
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2009,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2018,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2028,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2046,1
    CyclomaticComplexity: 59
    EdgeCount: 59
    ICount: 176
    argCount: 4
    argNames:
    - scan
    - dir
    - offnum
    - firstpage
    argTypes:
    - IndexScanDesc
    - ScanDirection
    - OffsetNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2049
      start: 1646
    functionDepth: 6
    functionLinenumber: 1646
    functionLinenumberEnd: 2049
    functionName: _bt_readpage
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 0
    functionsReached:
    - BTreeTupleGetPostingN
    - P_RIGHTMOST
    - OffsetNumberPrev
    - _bt_setuppostingitems
    - BTreeTupleIsPosting
    - _bt_saveitem
    - P_LEFTMOST
    - _bt_parallel_primscan_schedule
    - ScanDirectionIsForward
    - Min
    - BufferGetBlockNumber
    - OffsetNumberIsValid
    - _bt_set_startikey
    - IndexRelationGetNumberOfAttributes
    - Max
    - OffsetNumberNext
    - BTreeTupleIsPivot
    - BTreeTupleGetNPosting
    - PageGetItem
    - P_IGNORE
    - ItemIdIsDead
    - _bt_checkkeys
    - P_FIRSTDATAKEY
    - PageGetItemId
    - _bt_start_array_keys
    - PredicateLockPage
    - BTScanPosIsPinned
    - _bt_savepostingitem
    - BufferGetPage
    - _bt_scanbehind_checkkeys
    - PageGetMaxOffsetNumber
    - Assert
    - BTreeTupleGetNAtts
    - BTPageGetOpaque
    - _bt_parallel_release
    linkageType: ''
    returnType: bool
    signature: "bool _bt_readpage(IndexScanDesc scan, ScanDirection dir, OffsetNumber
      offnum,\n\t\t\t bool firstpage)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2058,1
    - Dst: BTreeTupleIsPivot
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2058,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2058,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2064,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2067,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2068,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - so
    - itemIndex
    - offnum
    - itup
    argTypes:
    - BTScanOpaque
    - int
    - OffsetNumber
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2070
      start: 2052
    functionDepth: 2
    functionLinenumber: 2052
    functionLinenumberEnd: 2070
    functionName: _bt_saveitem
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 1
    functionsReached:
    - Assert
    - BTreeTupleIsPivot
    - BTreeTupleIsPosting
    - memcpy
    - IndexTupleSize
    - MAXALIGN
    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/nbtsearch.c:2088,1
    - Dst: BTreeTupleIsPosting
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2088,1
    - Dst: BTreeTupleGetPostingOffset
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2096,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2098,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 5
    argNames:
    - so
    - itemIndex
    - offnum
    - heapTid
    - itup
    argTypes:
    - BTScanOpaque
    - int
    - OffsetNumber
    - ItemPointer
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2111
      start: 2082
    functionDepth: 3
    functionLinenumber: 2082
    functionLinenumberEnd: 2111
    functionName: _bt_setuppostingitems
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 1
    functionsReached:
    - Assert
    - BTreeTupleGetPostingOffset
    - BTreeTupleIsPosting
    - memcpy
    - MAXALIGN
    linkageType: ''
    returnType: int
    signature: "int _bt_setuppostingitems(BTScanOpaque so, int itemIndex, OffsetNumber
      offnum,\n\t\t\t\t\t  ItemPointer 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: 2135
      start: 2120
    functionDepth: 0
    functionLinenumber: 2120
    functionLinenumberEnd: 2135
    functionName: _bt_savepostingitem
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.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: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2147,1
    - Dst: BTScanPosIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2147,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2148,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - scan
    - so
    argTypes:
    - IndexScanDesc
    - BTScanOpaque
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2155
      start: 2141
    functionDepth: 1
    functionLinenumber: 2141
    functionLinenumberEnd: 2155
    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:2173,1
    - Dst: BTScanPosIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2173,1
    - Dst: _bt_killitems
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2177,1
    - Dst: BTScanPosIsPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2186,1
    - Dst: IncrBufferRefCount
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2187,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2188,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2192,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2215,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2222,1
    - Dst: BTScanPosUnpinIfPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2225,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2228,1
    - Dst: _bt_readnextpage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2243,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - IndexScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2244
      start: 2166
    functionDepth: 7
    functionLinenumber: 2166
    functionLinenumberEnd: 2244
    functionName: _bt_steppage
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 1
    functionsReached:
    - Assert
    - IncrBufferRefCount
    - BTScanPosIsPinned
    - BTScanPosIsValid
    - BTScanPosUnpinIfPinned
    - memcpy
    - _bt_killitems
    - _bt_readnextpage
    - ScanDirectionIsForward
    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:2280,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2286,1
    - Dst: _bt_readpage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2303,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2311,1
    - Dst: BTScanPosIsPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2311,1
    - Dst: _bt_drop_lock_and_maybe_pin
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2312,1
    - Dst: _bt_unlockbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2317,1
    - Dst: _bt_steppage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2320,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 3
    argNames:
    - scan
    - offnum
    - dir
    argTypes:
    - IndexScanDesc
    - OffsetNumber
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2325
      start: 2269
    functionDepth: 8
    functionLinenumber: 2269
    functionLinenumberEnd: 2325
    functionName: _bt_readfirstpage
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 1
    functionsReached:
    - _bt_unlockbuf
    - Assert
    - _bt_drop_lock_and_maybe_pin
    - BTScanPosIsPinned
    - _bt_steppage
    - _bt_readpage
    - ScanDirectionIsForward
    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:2369,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2370,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2371,1
    - Dst: BTScanPosIsPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2371,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2377,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2388,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2392,1
    - Dst: BTScanPosInvalidate
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2393,1
    - Dst: _bt_parallel_done
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2394,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2398,1
    - Dst: _bt_parallel_seize
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2402,1
    - Dst: BTScanPosInvalidate
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2405,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2409,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2412,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2413,1
    - Dst: _bt_lock_and_validate_left
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2418,1
    - Dst: BTScanPosInvalidate
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2423,1
    - Dst: _bt_parallel_done
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2424,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2429,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2430,1
    - Dst: likely
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2432,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2432,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2435,1
    - Dst: _bt_readpage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2438,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2438,1
    - Dst: _bt_readpage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2445,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2445,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2453,1
    - Dst: _bt_parallel_release
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2458,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2462,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2470,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2471,1
    - Dst: BTScanPosIsPinned
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2471,1
    - Dst: _bt_drop_lock_and_maybe_pin
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2472,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: 2475
      start: 2362
    functionDepth: 7
    functionLinenumber: 2362
    functionLinenumberEnd: 2475
    functionName: _bt_readnextpage
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 2
    functionsReached:
    - _bt_parallel_done
    - _bt_drop_lock_and_maybe_pin
    - CHECK_FOR_INTERRUPTS
    - _bt_getbuf
    - ScanDirectionIsForward
    - BTScanPosInvalidate
    - P_IGNORE
    - P_FIRSTDATAKEY
    - likely
    - BTScanPosIsPinned
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - _bt_parallel_seize
    - Assert
    - _bt_relbuf
    - BTPageGetOpaque
    - _bt_lock_and_validate_left
    - _bt_readpage
    - _bt_parallel_release
    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:2511,1
    - Dst: _bt_getbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2512,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2513,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2514,1
    - Dst: likely
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2529,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2529,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2535,1
    - Dst: _bt_relandgetbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2539,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2540,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2541,1
    - Dst: _bt_relandgetbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2549,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2550,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2551,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2552,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2562,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2563,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2564,1
    - Dst: _bt_relandgetbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2566,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2567,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2568,1
    - Dst: P_ISDELETED
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2569,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2581,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2582,1
    - Dst: P_LEFTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2591,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2594,1
    - Dst: _bt_relbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2600,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 44
    argCount: 3
    argNames:
    - rel
    - blkno
    - lastcurrblkno
    argTypes:
    - Relation
    - BlockNumber*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2604
      start: 2497
    functionDepth: 6
    functionLinenumber: 2497
    functionLinenumberEnd: 2604
    functionName: _bt_lock_and_validate_left
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 1
    functionsReached:
    - likely
    - CHECK_FOR_INTERRUPTS
    - P_LEFTMOST
    - _bt_relbuf
    - BTPageGetOpaque
    - P_ISDELETED
    - P_RIGHTMOST
    - _bt_relandgetbuf
    - elog
    - BufferGetPage
    - RelationGetRelationName
    - _bt_getbuf
    linkageType: ''
    returnType: Buffer
    signature: "Buffer _bt_lock_and_validate_left(Relation rel, BlockNumber *blkno,\n\t\t\t\t\t\t
      \  BlockNumber lastcurrblkno)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: _bt_getroot
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2630,1
    - Dst: _bt_gettrueroot
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2632,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2634,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2637,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2638,1
    - Dst: P_IGNORE
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2648,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2649,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2653,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2654,1
    - Dst: _bt_relandgetbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2655,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2656,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2657,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2664,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2665,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2666,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2667,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2671,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2673,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2675,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2675,1
    - Dst: BTreeTupleGetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2676,1
    - Dst: _bt_relandgetbuf
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2678,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2679,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2680,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 3
    argNames:
    - rel
    - level
    - rightmost
    argTypes:
    - Relation
    - uint32
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2684
      start: 2614
    functionDepth: 6
    functionLinenumber: 2614
    functionLinenumberEnd: 2684
    functionName: _bt_get_endpoint
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 1
    functionsReached:
    - _bt_getroot
    - _bt_gettrueroot
    - BufferIsValid
    - RelationGetRelationName
    - PageGetMaxOffsetNumber
    - PageGetItemId
    - PageGetItem
    - BTPageGetOpaque
    - P_RIGHTMOST
    - ereport
    - _bt_relandgetbuf
    - errmsg_internal
    - elog
    - BTreeTupleGetDownLink
    - BufferGetPage
    - P_IGNORE
    - errcode
    - P_FIRSTDATAKEY
    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:2706,1
    - Dst: BTScanPosIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2706,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2707,1
    - Dst: _bt_get_endpoint
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2713,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2713,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2715,1
    - Dst: PredicateLockRelation
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2721,1
    - Dst: _bt_parallel_done
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2722,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2726,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2727,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2728,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2728,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2730,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2735,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2737,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2739,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2739,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2741,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2745,1
    - Dst: _bt_readfirstpage
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2752,1
    - Dst: _bt_returnitem
      Src: /src/postgres/src/backend/access/nbtree/nbtsearch.c:2755,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - IndexScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2757
      start: 2697
    functionDepth: 9
    functionLinenumber: 2697
    functionLinenumberEnd: 2757
    functionName: _bt_endpoint
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtsearch.c
    functionUses: 1
    functionsReached:
    - _bt_parallel_done
    - Assert
    - BufferIsValid
    - _bt_returnitem
    - BTPageGetOpaque
    - P_RIGHTMOST
    - ScanDirectionIsForward
    - PredicateLockRelation
    - ScanDirectionIsBackward
    - elog
    - BTScanPosIsValid
    - P_ISLEAF
    - BufferGetPage
    - _bt_readfirstpage
    - PageGetMaxOffsetNumber
    - _bt_get_endpoint
    - P_FIRSTDATAKEY
    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:225,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:242,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:250,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:258,1
    - Dst: _bt_fix_scankey_strategy
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:264,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:266,1
    - Dst: _bt_mark_scankey_required
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:270,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:278,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:279,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:282,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:301,1
    - Dst: _bt_fix_scankey_strategy
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:316,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:334,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:370,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:371,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:371,1
    - Dst: _bt_compare_scankey_args
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:388,1
    - Dst: _bt_compare_scankey_args
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:416,1
    - Dst: _bt_compare_scankey_args
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:435,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:463,1
    - Dst: _bt_mark_scankey_required
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:467,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:479,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:489,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:523,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:524,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:524,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:525,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:532,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:533,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:533,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:534,1
    - Dst: _bt_compare_scankey_args
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:548,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:574,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:598,1
    - Dst: _bt_mark_scankey_required
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:602,1
    - Dst: _bt_preprocess_array_keys_final
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:620,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:628,1
    - Dst: _bt_unmark_keys
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:629,1
    CyclomaticComplexity: 61
    EdgeCount: 61
    ICount: 164
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 632
    functionName: _bt_preprocess_keys
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - Assert
    - _bt_unmark_keys
    - memcpy
    - memset
    - _bt_preprocess_array_keys_final
    - elog
    - _bt_compare_scankey_args
    - unlikely
    - OidIsValid
    - _bt_fix_scankey_strategy
    - repalloc
    - _bt_preprocess_array_keys
    - _bt_mark_scankey_required
    - MemoryContextAlloc
    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:686,1
    - Dst: BTCommuteStrategyNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:719,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:725,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:730,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:736,1
    - Dst: BTCommuteStrategyNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:739,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 41
    argCount: 2
    argNames:
    - skey
    - indoption
    argTypes:
    - ScanKey
    - int16*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 656
    functionDepth: 1
    functionLinenumber: 656
    functionLinenumberEnd: 748
    functionName: _bt_fix_scankey_strategy
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - BTCommuteStrategyNumber
    - Assert
    - 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:787,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:797,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:801,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:802,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:806,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 1
    argNames:
    - skey
    argTypes:
    - ScanKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 768
    functionDepth: 1
    functionLinenumber: 768
    functionLinenumberEnd: 818
    functionName: _bt_mark_scankey_required
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - elog
    - DatumGetPointer
    - Assert
    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:872,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:887,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:888,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:891,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:901,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:908,1
    - Dst: BTCommuteStrategyNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:921,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:941,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:954,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:982,1
    - Dst: _bt_compare_array_scankey_args
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:992,1
    - Dst: _bt_compare_array_scankey_args
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:995,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1004,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1029,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1029,1
    - Dst: BTCommuteStrategyNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1047,1
    - Dst: get_opfamily_member
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1049,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1053,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1055,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1057,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1059,1
    - Dst: OidFunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1059,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: 1070
      start: 858
    functionDepth: 1
    functionLinenumber: 858
    functionLinenumberEnd: 1070
    functionName: _bt_compare_scankey_args
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - BTCommuteStrategyNumber
    - Assert
    - FunctionCall2Coll
    - _bt_compare_array_scankey_args
    - RegProcedureIsValid
    - get_opcode
    - elog
    - OidFunctionCall2Coll
    - OidIsValid
    - DatumGetBool
    - get_opfamily_member
    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:1090,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1091,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1092,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1095,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1096,1
    - Dst: _bt_saoparray_shrink
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1104,1
    - Dst: _bt_skiparray_shrink
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1107,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: 1108
      start: 1085
    functionDepth: 1
    functionLinenumber: 1085
    functionLinenumberEnd: 1108
    functionName: _bt_compare_array_scankey_args
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - _bt_skiparray_shrink
    - Assert
    - _bt_saoparray_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:1136,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1137,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1166,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1169,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1178,1
    - Dst: _bt_binsrch_array_skey
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1181,1
    - Dst: memmove
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1218,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1222,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1227,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1228,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 49
    argCount: 6
    argNames:
    - scan
    - arraysk
    - skey
    - orderproc
    - array
    - qual_ok
    argTypes:
    - IndexScanDesc
    - ScanKey
    - ScanKey
    - FmgrInfo*
    - BTArrayKeyInfo*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1234
      start: 1123
    functionDepth: 3
    functionLinenumber: 1123
    functionLinenumberEnd: 1234
    functionName: _bt_saoparray_shrink
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - Assert
    - fmgr_info
    - RegProcedureIsValid
    - memmove
    - elog
    - _bt_binsrch_array_skey
    - get_opfamily_proc
    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:1254,1
    - Dst: _bt_compare_scankey_args
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1293,1
    - Dst: _bt_compare_scankey_args
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1312,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1328,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: 1334
      start: 1248
    functionDepth: 2
    functionLinenumber: 1248
    functionLinenumberEnd: 1334
    functionName: _bt_skiparray_shrink
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - Assert
    - _bt_compare_scankey_args
    - elog
    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:1381,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1382,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1384,1
    - Dst: _bt_skiparray_strat_decrement
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1388,1
    - Dst: _bt_skiparray_strat_increment
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1392,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1394,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 3
    argNames:
    - scan
    - arraysk
    - array
    argTypes:
    - IndexScanDesc
    - ScanKey
    - BTArrayKeyInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1395
      start: 1370
    functionDepth: 1
    functionLinenumber: 1370
    functionLinenumberEnd: 1395
    functionName: _bt_skiparray_strat_adjust
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - _bt_skiparray_strat_decrement
    - _bt_skiparray_strat_increment
    linkageType: ''
    returnType: void
    signature: "void _bt_skiparray_strat_adjust(IndexScanDesc scan, ScanKey arraysk,\n\t\t\t\t\t\t
      \  BTArrayKeyInfo *array)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1414,1
    - Dst: BTArrayKeyInfo*::sksup::decrement
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1425,1
    - Dst: get_opfamily_member
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1435,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1437,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1439,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1440,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1443,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - scan
    - arraysk
    - array
    argTypes:
    - IndexScanDesc
    - ScanKey
    - BTArrayKeyInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1447
      start: 1400
    functionDepth: 1
    functionLinenumber: 1400
    functionLinenumberEnd: 1447
    functionName: _bt_skiparray_strat_decrement
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - Assert
    - BTArrayKeyInfo*::sksup::decrement
    - fmgr_info
    - RegProcedureIsValid
    - get_opcode
    - OidIsValid
    - get_opfamily_member
    linkageType: ''
    returnType: void
    signature: "void _bt_skiparray_strat_decrement(IndexScanDesc scan, ScanKey arraysk,\n\t\t\t\t\t\t\t
      \ BTArrayKeyInfo *array)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1466,1
    - Dst: BTArrayKeyInfo*::sksup::increment
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1477,1
    - Dst: get_opfamily_member
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1487,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1489,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1491,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1492,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1495,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - scan
    - arraysk
    - array
    argTypes:
    - IndexScanDesc
    - ScanKey
    - BTArrayKeyInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1499
      start: 1452
    functionDepth: 1
    functionLinenumber: 1452
    functionLinenumberEnd: 1499
    functionName: _bt_skiparray_strat_increment
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - Assert
    - BTArrayKeyInfo*::sksup::increment
    - fmgr_info
    - RegProcedureIsValid
    - get_opcode
    - OidIsValid
    - get_opfamily_member
    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:1548,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1579,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1591,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1627,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1633,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1634,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1639,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1640,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1664,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1669,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1682,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1687,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1695,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1701,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1708,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1710,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1713,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1725,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1726,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1727,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1728,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1731,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1732,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1733,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1741,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1742,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1757,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1761,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1762,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 101
    argCount: 2
    argNames:
    - scan
    - keyDataMap
    argTypes:
    - IndexScanDesc
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1764
      start: 1519
    functionDepth: 1
    functionLinenumber: 1519
    functionLinenumberEnd: 1764
    functionName: _bt_unmark_keys
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - qsort
    - palloc0
    - memcpy
    - 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:1775,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1776
      start: 1769
    functionDepth: 1
    functionLinenumber: 1769
    functionLinenumberEnd: 1776
    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:1842,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1860,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1864,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1866,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1869,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1873,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1876,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1910,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1921,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1923,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1926,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1934,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1935,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1936,1
    - Dst: ScanKeyEntryInitialize
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1938,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1952,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1952,1
    - Dst: PrepareSkipSupportFromOpclass
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1958,1
    - Dst: _bt_setup_array_cmp
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1965,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:1994,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2006,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2008,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2008,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2010,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2011,1
    - Dst: _bt_find_extreme_element
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2055,1
    - Dst: _bt_find_extreme_element
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2066,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2072,1
    - Dst: _bt_setup_array_cmp
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2085,1
    - Dst: _bt_sort_array_elements
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2095,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2109,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2110,1
    - Dst: _bt_merge_arrays
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2112,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2118,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2167,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2174,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 119
    argCount: 2
    argNames:
    - scan
    - new_numberOfKeys
    argTypes:
    - IndexScanDesc
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2177
      start: 1821
    functionDepth: 2
    functionLinenumber: 1821
    functionLinenumberEnd: 2177
    functionName: _bt_preprocess_array_keys
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - get_typlenbyvalalign
    - MemoryContextReset
    - _bt_merge_arrays
    - _bt_sort_array_elements
    - _bt_setup_array_cmp
    - deconstruct_array
    - pfree
    - DatumGetArrayTypeP
    - RegProcedureIsValid
    - _bt_find_extreme_element
    - PrepareSkipSupportFromOpclass
    - ScanKeyEntryInitialize
    - get_opcode
    - elog
    - OidIsValid
    - palloc
    - ARR_ELEMTYPE
    - Assert
    - RelationGetDescr
    - AllocSetContextCreate
    - TupleDescCompactAttr
    - _bt_num_array_keys
    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:2209,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2224,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2231,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2232,1
    - Dst: _bt_setup_array_cmp
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2258,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2282,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2283,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2284,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2285,1
    - Dst: memmove
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2309,1
    - Dst: _bt_skiparray_strat_adjust
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2328,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2338,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2349,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2350,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2351,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 50
    argCount: 2
    argNames:
    - scan
    - keyDataMap
    argTypes:
    - IndexScanDesc
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2353
      start: 2201
    functionDepth: 2
    functionLinenumber: 2201
    functionLinenumberEnd: 2353
    functionName: _bt_preprocess_array_keys_final
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - IndexRelationGetNumberOfKeyAttributes
    - Assert
    - errmsg_internal
    - ereport
    - memmove
    - _bt_skiparray_strat_adjust
    - errcode
    - _bt_setup_array_cmp
    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:2402,1
    - Dst: get_opfamily_member
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2435,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2437,1
    - Dst: get_opfamily_member
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2510,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2513,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: 2546
      start: 2389
    functionDepth: 1
    functionLinenumber: 2389
    functionLinenumberEnd: 2546
    functionName: _bt_num_array_keys
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - OidIsValid
    - Assert
    - 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:2575,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2576,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2576,1
    - Dst: get_opfamily_member
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2577,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2581,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2582,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2585,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2586,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2587,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2589,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2591,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2595,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2595,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: 2603
      start: 2555
    functionDepth: 1
    functionLinenumber: 2555
    functionLinenumberEnd: 2603
    functionName: _bt_find_extreme_element
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - Assert
    - FunctionCall2Coll
    - fmgr_info
    - RegProcedureIsValid
    - get_opcode
    - elog
    - OidIsValid
    - DatumGetBool
    - get_opfamily_member
    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 Datum *elems, int
      nelems)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2637,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2638,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2638,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2647,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2665,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2667,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2668,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2670,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2673,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2687,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2689,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2690,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2692,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2695,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: 2696
      start: 2628
    functionDepth: 2
    functionLinenumber: 2628
    functionLinenumberEnd: 2696
    functionName: _bt_setup_array_cmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 2
    functionsReached:
    - Assert
    - RelationGetRelationName
    - RegProcedureIsValid
    - elog
    - fmgr_info_cxt
    - OidIsValid
    - index_getprocinfo
    - get_opfamily_proc
    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:2721,1
    - Dst: qunique_arg
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2725,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: 2727
      start: 2708
    functionDepth: 2
    functionLinenumber: 2708
    functionLinenumberEnd: 2727
    functionName: _bt_sort_array_elements
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - qsort_arg
    - qunique_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:2766,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2767,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2767,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2767,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2777,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2779,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2787,1
    - Dst: _bt_compare_array_elements
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2798,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: 2815
      start: 2752
    functionDepth: 1
    functionLinenumber: 2752
    functionLinenumberEnd: 2815
    functionName: _bt_merge_arrays
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - Assert
    - RegProcedureIsValid
    - fmgr_info_cxt
    - OidIsValid
    - get_opfamily_proc
    - _bt_compare_array_elements
    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:2828,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2828,1
    - Dst: INVERT_COMPARE_RESULT
      Src: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c:2832,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2834
      start: 2820
    functionDepth: 1
    functionLinenumber: 2820
    functionLinenumberEnd: 2834
    functionName: _bt_compare_array_elements
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtpreprocesskeys.c
    functionUses: 1
    functionsReached:
    - DatumGetInt32
    - INVERT_COMPARE_RESULT
    - FunctionCall2Coll
    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:61,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:62,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:63,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:75,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:77,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - page
    - from
    - len
    argTypes:
    - Page
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 79
    functionName: _bt_restore_page
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - PageAddItem
    - elog
    - memcpy
    - IndexTupleSize
    - MAXALIGN
    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:93,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:94,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:96,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:97,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:97,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:99,1
    - Dst: _bt_pageinit
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:101,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:101,1
    - Dst: BTPageGetMeta
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:103,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:111,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:116,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:127,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:128,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 2
    argNames:
    - record
    - block_id
    argTypes:
    - XLogReaderState*
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 81
    functionDepth: 4
    functionLinenumber: 81
    functionLinenumberEnd: 130
    functionName: _bt_restore_meta
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - Assert
    - MarkBufferDirty
    - UnlockReleaseBuffer
    - BufferGetBlockNumber
    - BTPageGetOpaque
    - BufferGetPageSize
    - _bt_pageinit
    - BufferGetPage
    - XLogInitBufferForRedo
    - XLogRecGetBlockData
    - BTPageGetMeta
    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:144,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:146,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:147,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:149,1
    - Dst: P_INCOMPLETE_SPLIT
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:149,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:152,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:153,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:155,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:156,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - record
    - block_id
    argTypes:
    - XLogReaderState*
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 138
    functionDepth: 4
    functionLinenumber: 138
    functionLinenumberEnd: 157
    functionName: _bt_clear_incomplete_split
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - Assert
    - MarkBufferDirty
    - BufferIsValid
    - BTPageGetOpaque
    - P_INCOMPLETE_SPLIT
    - XLogReadBufferForRedo
    - BufferGetPage
    - UnlockReleaseBuffer
    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:164,1
    - Dst: _bt_clear_incomplete_split
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:178,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:179,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:182,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:184,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:189,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:191,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:215,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:215,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:216,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:219,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:220,1
    - Dst: _bt_swap_posting
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:221,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:224,1
    - Dst: MAXALIGN
      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: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:227,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:227,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:228,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:230,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:233,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:234,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:236,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:237,1
    - Dst: _bt_restore_meta
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:247,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 4
    argNames:
    - isleaf
    - ismeta
    - posting
    - record
    argTypes:
    - bool
    - bool
    - bool
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 159
    functionDepth: 7
    functionLinenumber: 159
    functionLinenumberEnd: 248
    functionName: btree_xlog_insert
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - MarkBufferDirty
    - PageAddItem
    - OffsetNumberPrev
    - XLogRecGetData
    - IndexTupleSize
    - _bt_restore_meta
    - _bt_swap_posting
    - memcpy
    - PageGetItem
    - XLogRecGetBlockData
    - PageGetItemId
    - BufferIsValid
    - elog
    - BufferGetPage
    - UnlockReleaseBuffer
    - Assert
    - _bt_clear_incomplete_split
    - CopyIndexTuple
    - XLogReadBufferForRedo
    - MAXALIGN
    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:254,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:266,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:267,1
    - Dst: XLogRecGetBlockTagExtended
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:268,1
    - Dst: _bt_clear_incomplete_split
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:285,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:288,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:289,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:290,1
    - Dst: _bt_pageinit
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:292,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:292,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:293,1
    - Dst: _bt_restore_page
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:301,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:303,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:304,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:307,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:317,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:318,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:329,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:334,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:334,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:344,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:347,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:348,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:349,1
    - Dst: _bt_swap_posting
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:350,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:361,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:361,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:365,1
    - Dst: PageGetTempPageCopySpecial
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:367,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:371,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:373,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:374,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:376,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:385,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:387,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:388,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:388,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:390,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:391,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:398,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: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:404,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:405,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:406,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:409,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:410,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:416,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:418,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:419,1
    - Dst: PageRestoreTempPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:422,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:431,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:432,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:440,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:442,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:443,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:447,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:448,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:450,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:451,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:458,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:459,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:460,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 91
    argCount: 2
    argNames:
    - newitemonleft
    - record
    argTypes:
    - bool
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 250
    functionDepth: 7
    functionLinenumber: 250
    functionLinenumberEnd: 461
    functionName: btree_xlog_split
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - MarkBufferDirty
    - PageAddItem
    - OffsetNumberPrev
    - XLogRecGetData
    - BufferGetPageSize
    - IndexTupleSize
    - XLogRecGetBlockTagExtended
    - PageGetTempPageCopySpecial
    - _bt_swap_posting
    - OffsetNumberNext
    - _bt_pageinit
    - XLogInitBufferForRedo
    - XLogRecGetBlockData
    - PageGetItem
    - P_FIRSTDATAKEY
    - PageGetItemId
    - BufferIsValid
    - PageRestoreTempPage
    - XLogRecGetBlockTag
    - _bt_restore_page
    - elog
    - BufferGetPage
    - UnlockReleaseBuffer
    - Assert
    - BTPageGetOpaque
    - ItemIdGetLength
    - _bt_clear_incomplete_split
    - CopyIndexTuple
    - XLogReadBufferForRedo
    - MAXALIGN
    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:467,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:470,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:472,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:473,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:474,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:482,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:490,1
    - Dst: P_FIRSTDATAKEY
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:496,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:497,1
    - Dst: PageGetTempPageCopySpecial
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:498,1
    - Dst: P_RIGHTMOST
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:500,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:502,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:503,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:504,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:506,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:508,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:514,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:516,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:517,1
    - Dst: _bt_dedup_start_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:520,1
    - Dst: _bt_dedup_save_htid
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:525,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:526,1
    - Dst: _bt_dedup_finish_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:530,1
    - Dst: _bt_dedup_start_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:531,1
    - Dst: _bt_dedup_finish_pending
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:535,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:536,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:537,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:537,1
    - Dst: P_HAS_GARBAGE
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:540,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:542,1
    - Dst: PageRestoreTempPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:547,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:548,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:549,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:552,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:553,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 45
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 463
    functionDepth: 5
    functionLinenumber: 463
    functionLinenumberEnd: 554
    functionName: btree_xlog_dedup
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - MarkBufferDirty
    - PageAddItem
    - P_RIGHTMOST
    - XLogRecGetData
    - PageGetTempPageCopySpecial
    - memcmp
    - OffsetNumberNext
    - PageGetItem
    - XLogRecGetBlockData
    - P_FIRSTDATAKEY
    - PageGetItemId
    - BufferIsValid
    - PageRestoreTempPage
    - elog
    - BufferGetPage
    - palloc
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - _bt_dedup_finish_pending
    - Assert
    - _bt_dedup_save_htid
    - BTPageGetOpaque
    - _bt_dedup_start_pending
    - ItemIdGetLength
    - P_HAS_GARBAGE
    - XLogReadBufferForRedo
    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:567,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:568,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:570,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:575,1
    - Dst: _bt_update_posting
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:579,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:582,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:582,1
    - Dst: PageIndexTupleOverwrite
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:583,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:585,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:587,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:588,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: 595
      start: 556
    functionDepth: 6
    functionLinenumber: 556
    functionLinenumberEnd: 595
    functionName: btree_xlog_updates
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - pfree
    - PageGetItemId
    - _bt_update_posting
    - IndexTupleSize
    - PageIndexTupleOverwrite
    - elog
    - memcpy
    - palloc
    - PageGetItem
    - MAXALIGN
    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:601,1
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:612,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:615,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:617,1
    - Dst: btree_xlog_updates
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:630,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:634,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:640,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:644,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:645,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:647,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:648,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 597
    functionDepth: 7
    functionLinenumber: 597
    functionLinenumberEnd: 649
    functionName: btree_xlog_vacuum
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - MarkBufferDirty
    - BufferIsValid
    - PageIndexMultiDelete
    - BTPageGetOpaque
    - btree_xlog_updates
    - XLogRecGetData
    - BufferGetPage
    - XLogRecGetBlockData
    - XLogReadBufferForRedoExtended
    - UnlockReleaseBuffer
    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:655,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:668,1
    - Dst: ResolveRecoveryConflictWithSnapshot
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:670,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:679,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:681,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:683,1
    - Dst: btree_xlog_updates
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:696,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:700,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:706,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:709,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:710,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:712,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:713,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 651
    functionDepth: 7
    functionLinenumber: 651
    functionLinenumberEnd: 714
    functionName: btree_xlog_delete
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - MarkBufferDirty
    - BufferIsValid
    - PageIndexMultiDelete
    - BTPageGetOpaque
    - XLogRecGetBlockTag
    - XLogRecGetData
    - btree_xlog_updates
    - XLogReadBufferForRedo
    - BufferGetPage
    - XLogRecGetBlockData
    - ResolveRecoveryConflictWithSnapshot
    - UnlockReleaseBuffer
    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:720,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:735,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:743,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:744,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:748,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:749,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:750,1
    - Dst: BTreeTupleGetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:751,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:753,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:754,1
    - Dst: BTreeTupleSetDownLink
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:755,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:756,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:757,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:759,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:760,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:767,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:768,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:771,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:772,1
    - Dst: _bt_pageinit
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:774,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:774,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:775,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:787,1
    - Dst: BTreeTupleSetTopParent
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:789,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:791,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:793,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:795,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:796,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:797,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 36
    argCount: 2
    argNames:
    - info
    - record
    argTypes:
    - uint8
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 716
    functionDepth: 4
    functionLinenumber: 716
    functionLinenumberEnd: 798
    functionName: btree_xlog_mark_page_halfdead
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - PageIndexTupleDelete
    - MarkBufferDirty
    - PageAddItem
    - BTreeTupleSetTopParent
    - BTreeTupleGetDownLink
    - XLogRecGetData
    - BufferGetPageSize
    - OffsetNumberNext
    - BTreeTupleSetDownLink
    - _bt_pageinit
    - XLogInitBufferForRedo
    - PageGetItem
    - PageGetItemId
    - BufferIsValid
    - elog
    - MemSet
    - BufferGetPage
    - UnlockReleaseBuffer
    - BTPageGetOpaque
    - XLogReadBufferForRedo
    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:805,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:824,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:824,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:837,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:839,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:840,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:843,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:844,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:851,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:852,1
    - Dst: _bt_pageinit
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:854,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:854,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:855,1
    - Dst: BTPageSetDeleted
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:860,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:865,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:866,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:869,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:871,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:872,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:875,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:876,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:880,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:881,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:882,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:883,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:886,1
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:893,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:907,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:909,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:910,1
    - Dst: _bt_pageinit
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:912,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:912,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:913,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:922,1
    - Dst: BTreeTupleSetTopParent
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:924,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:926,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:928,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:930,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:931,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:932,1
    - Dst: _bt_restore_meta
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:937,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 64
    argCount: 2
    argNames:
    - info
    - record
    argTypes:
    - uint8
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 801
    functionDepth: 5
    functionLinenumber: 801
    functionLinenumberEnd: 938
    functionName: btree_xlog_unlink_page
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - MarkBufferDirty
    - PageAddItem
    - BTreeTupleSetTopParent
    - XLogRecGetData
    - BufferGetPageSize
    - BTPageSetDeleted
    - _bt_restore_meta
    - XLogRecHasBlockRef
    - _bt_pageinit
    - XLogInitBufferForRedo
    - BlockNumberIsValid
    - BufferIsValid
    - elog
    - MemSet
    - BufferGetPage
    - UnlockReleaseBuffer
    - Assert
    - BTPageGetOpaque
    - XLogReadBufferForRedo
    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:944,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:951,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:952,1
    - Dst: _bt_pageinit
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:954,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:954,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:955,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:966,1
    - Dst: _bt_restore_page
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:967,1
    - Dst: _bt_clear_incomplete_split
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:970,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:973,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:974,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:975,1
    - Dst: _bt_restore_meta
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:977,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 940
    functionDepth: 5
    functionLinenumber: 940
    functionLinenumberEnd: 978
    functionName: btree_xlog_newroot
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - MarkBufferDirty
    - _bt_restore_meta
    - BTPageGetOpaque
    - XLogRecGetData
    - _bt_restore_page
    - _bt_clear_incomplete_split
    - BufferGetPageSize
    - _bt_pageinit
    - BufferGetPage
    - XLogInitBufferForRedo
    - XLogRecGetBlockData
    - UnlockReleaseBuffer
    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:1009,1
    - Dst: ResolveRecoveryConflictWithSnapshotFullXid
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1012,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 1006
    functionDepth: 1
    functionLinenumber: 1006
    functionLinenumberEnd: 1015
    functionName: btree_xlog_reuse_page
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - XLogRecGetData
    - ResolveRecoveryConflictWithSnapshotFullXid
    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:1020,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1023,1
    - Dst: btree_xlog_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1027,1
    - Dst: btree_xlog_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1030,1
    - Dst: btree_xlog_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1033,1
    - Dst: btree_xlog_split
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1036,1
    - Dst: btree_xlog_split
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1039,1
    - Dst: btree_xlog_insert
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1042,1
    - Dst: btree_xlog_dedup
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1045,1
    - Dst: btree_xlog_vacuum
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1048,1
    - Dst: btree_xlog_delete
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1051,1
    - Dst: btree_xlog_mark_page_halfdead
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1054,1
    - Dst: btree_xlog_unlink_page
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1058,1
    - Dst: btree_xlog_newroot
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1061,1
    - Dst: btree_xlog_reuse_page
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1064,1
    - Dst: _bt_restore_meta
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1067,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1070,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1072,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1073,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 51
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 1017
    functionDepth: 8
    functionLinenumber: 1017
    functionLinenumberEnd: 1074
    functionName: btree_redo
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - btree_xlog_split
    - btree_xlog_vacuum
    - MemoryContextSwitchTo
    - btree_xlog_reuse_page
    - MemoryContextReset
    - _bt_restore_meta
    - btree_xlog_unlink_page
    - XLogRecGetInfo
    - btree_xlog_dedup
    - btree_xlog_newroot
    - elog
    - btree_xlog_mark_page_halfdead
    - btree_xlog_insert
    - btree_xlog_delete
    linkageType: ''
    returnType: void
    signature: void btree_redo(XLogReaderState *record)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1079,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1082
      start: 1076
    functionDepth: 1
    functionLinenumber: 1076
    functionLinenumberEnd: 1082
    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:1087,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 1084
    functionDepth: 1
    functionLinenumber: 1084
    functionLinenumberEnd: 1089
    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:1100,1
    - Dst: mask_page_hint_bits
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1102,1
    - Dst: mask_unused_space
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1103,1
    - Dst: BTPageGetOpaque
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1105,1
    - Dst: P_ISLEAF
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1107,1
    - Dst: mask_lp_flags
      Src: /src/postgres/src/backend/access/nbtree/nbtxlog.c:1114,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - pagedata
    - blkno
    argTypes:
    - char*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1131
      start: 1094
    functionDepth: 1
    functionLinenumber: 1094
    functionLinenumberEnd: 1131
    functionName: btree_mask
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtxlog.c
    functionUses: 0
    functionsReached:
    - BTPageGetOpaque
    - mask_page_lsn_and_checksum
    - P_ISLEAF
    - mask_unused_space
    - mask_lp_flags
    - mask_page_hint_bits
    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:76,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:77,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 80
    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:85,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - underflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 96
    functionName: bool_decrement
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - DatumGetBool
    - BoolGetDatum
    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:101,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:111,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - overflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 112
    functionName: bool_increment
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - DatumGetBool
    - BoolGetDatum
    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:117,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:121,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:122,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 125
    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:130,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:131,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 134
    functionName: btint2cmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_INT16
    linkageType: ''
    returnType: Datum
    signature: Datum btint2cmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt16
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:139,1
    - Dst: DatumGetInt16
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - x
    - y
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 143
    functionName: btint2fastcmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - DatumGetInt16
    linkageType: ''
    returnType: int
    signature: int btint2fastcmp(Datum x, Datum y, SortSupport ssup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:148,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 152
    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:157,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - underflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 168
    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:173,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - overflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 184
    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:189,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:193,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:194,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 197
    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:202,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:203,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:206,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:208,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:210,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 211
    functionName: btint4cmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_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:216,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 220
    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:225,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:235,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - underflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 236
    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:241,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - overflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 252
    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:257,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:261,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:262,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 265
    functionName: btint4skipsupport
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - Int32GetDatum
    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:270,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:271,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:274,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:276,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:278,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 279
    functionName: btint8cmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum btint8cmp(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:285,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:286,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - x
    - y
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 282
    functionDepth: 2
    functionLinenumber: 282
    functionLinenumberEnd: 294
    functionName: btint8fastcmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - DatumGetInt64
    linkageType: ''
    returnType: int
    signature: int btint8fastcmp(Datum x, Datum y, SortSupport ssup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:300,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 308
    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:313,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:323,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - underflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 310
    functionDepth: 2
    functionLinenumber: 310
    functionLinenumberEnd: 324
    functionName: int8_decrement
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - DatumGetInt64
    - Int64GetDatum
    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:329,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:339,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - overflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 326
    functionDepth: 2
    functionLinenumber: 326
    functionLinenumberEnd: 340
    functionName: int8_increment
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - DatumGetInt64
    - Int64GetDatum
    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:345,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:349,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:350,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 342
    functionDepth: 1
    functionLinenumber: 342
    functionLinenumberEnd: 353
    functionName: btint8skipsupport
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - Int64GetDatum
    - PG_RETURN_VOID
    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:358,1
    - Dst: PG_GETARG_INT64
      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: btint48cmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_INT64
    - PG_GETARG_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:372,1
    - Dst: PG_GETARG_INT32
      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: btint84cmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_INT64
    - PG_GETARG_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:386,1
    - Dst: PG_GETARG_INT32
      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: btint24cmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_INT16
    - PG_GETARG_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: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: btint42cmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_INT16
    - PG_GETARG_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:414,1
    - Dst: PG_GETARG_INT64
      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: btint28cmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_INT64
    - PG_GETARG_INT16
    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:428,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:429,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:432,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:434,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:436,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 425
    functionDepth: 1
    functionLinenumber: 425
    functionLinenumberEnd: 437
    functionName: btint82cmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_INT64
    - PG_GETARG_INT16
    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:442,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:443,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:446,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:448,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:450,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 439
    functionDepth: 1
    functionLinenumber: 439
    functionLinenumberEnd: 451
    functionName: btoidcmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_OID
    linkageType: ''
    returnType: Datum
    signature: Datum btoidcmp(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:456,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:457,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - x
    - y
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 453
    functionDepth: 1
    functionLinenumber: 453
    functionLinenumberEnd: 465
    functionName: btoidfastcmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - DatumGetObjectId
    linkageType: ''
    returnType: int
    signature: int btoidfastcmp(Datum x, Datum y, SortSupport ssup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:470,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:473,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 467
    functionDepth: 1
    functionLinenumber: 467
    functionLinenumberEnd: 474
    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:479,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:489,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - underflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 476
    functionDepth: 1
    functionLinenumber: 476
    functionLinenumberEnd: 490
    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:495,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:505,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - overflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 506
    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:511,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:515,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:516,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:518,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 508
    functionDepth: 1
    functionLinenumber: 508
    functionLinenumberEnd: 519
    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: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:524,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:525,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:530,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:537,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:539,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:542,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 521
    functionDepth: 1
    functionLinenumber: 521
    functionLinenumberEnd: 543
    functionName: btoidvectorcmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - 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:548,1
    - Dst: PG_GETARG_CHAR
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:549,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:552,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 545
    functionDepth: 1
    functionLinenumber: 545
    functionLinenumberEnd: 553
    functionName: btcharcmp
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_CHAR
    linkageType: ''
    returnType: Datum
    signature: Datum btcharcmp(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UInt8GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:558,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:568,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - underflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 555
    functionDepth: 1
    functionLinenumber: 555
    functionLinenumberEnd: 569
    functionName: char_decrement
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - CharGetDatum
    - UInt8GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum char_decrement(Relation rel, Datum existing, bool *underflow)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UInt8GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:574,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:584,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - overflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 571
    functionDepth: 1
    functionLinenumber: 571
    functionLinenumberEnd: 585
    functionName: char_increment
    functionSourceFile: /src/postgres/src/backend/access/nbtree/nbtcompare.c
    functionUses: 0
    functionsReached:
    - CharGetDatum
    - UInt8GetDatum
    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:590,1
    - Dst: UInt8GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:596,1
    - Dst: UInt8GetDatum
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:597,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/nbtree/nbtcompare.c:599,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 587
    functionDepth: 1
    functionLinenumber: 587
    functionLinenumberEnd: 600
    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:
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 99
    functionName: itemptr_to_uint64
    functionSourceFile: /src/postgres/src/backend/access/gin/ginpostinglist.c
    functionUses: 0
    functionsReached:
    - GinItemPointerGetOffsetNumber
    - Assert
    - GinItemPointerGetBlockNumber
    - ItemPointerIsValid
    linkageType: ''
    returnType: uint64
    signature: uint64 itemptr_to_uint64(const ItemPointer 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: 2
    functionLinenumber: 101
    functionLinenumberEnd: 109
    functionName: uint64_to_itemptr
    functionSourceFile: /src/postgres/src/backend/access/gin/ginpostinglist.c
    functionUses: 0
    functionsReached:
    - GinItemPointerSetOffsetNumber
    - Assert
    - GinItemPointerSetBlockNumber
    - ItemPointerIsValid
    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:
    - ItemPointer
    - int
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 196
    functionDepth: 3
    functionLinenumber: 196
    functionLinenumberEnd: 277
    functionName: ginCompressPostingList
    functionSourceFile: /src/postgres/src/backend/access/gin/ginpostinglist.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - ginPostingListDecode
    - itemptr_to_uint64
    - memcmp
    - SHORTALIGN_DOWN
    - SizeOfGinPostingList
    - encode_varbyte
    - SHORTALIGN
    - memcpy
    - palloc
    linkageType: ''
    returnType: GinPostingList
    signature: "GinPostingList *\nginCompressPostingList(const ItemPointer 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: 3
    functionLinenumber: 296
    functionLinenumberEnd: 352
    functionName: ginPostingListDecodeAllSegments
    functionSourceFile: /src/postgres/src/backend/access/gin/ginpostinglist.c
    functionUses: 1
    functionsReached:
    - Assert
    - uint64_to_itemptr
    - GinNextPostingListSegment
    - ItemPointerGetOffsetNumber
    - itemptr_to_uint64
    - OffsetNumberIsValid
    - repalloc
    - decode_varbyte
    - palloc
    - ginCompareItemPointers
    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: 4
    functionLinenumber: 357
    functionLinenumberEnd: 369
    functionName: ginPostingListDecodeAllSegmentsToTbm
    functionSourceFile: /src/postgres/src/backend/access/gin/ginpostinglist.c
    functionUses: 0
    functionsReached:
    - tbm_add_tuples
    - ginPostingListDecodeAllSegments
    - pfree
    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:
    - memcpy
    - palloc
    - ginCompareItemPointers
    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: makeNode
      Src: /src/postgres/src/backend/access/gin/ginutil.c:40,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/gin/ginutil.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 94
    functionName: ginhandler
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached:
    - makeNode
    - 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:104,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/gin/ginutil.c:107,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/gin/ginutil.c:115,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/access/gin/ginutil.c:121,1
    - Dst: TupleDescInitEntry
      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: TupleDescInitEntryCollation
      Src: /src/postgres/src/backend/access/gin/ginutil.c:129,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/gin/ginutil.c:137,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/gin/ginutil.c:139,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/gin/ginutil.c:140,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/access/gin/ginutil.c:147,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gin/ginutil.c:149,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gin/ginutil.c:150,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gin/ginutil.c:151,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gin/ginutil.c:152,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/gin/ginutil.c:153,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/gin/ginutil.c:154,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/gin/ginutil.c:160,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/gin/ginutil.c:161,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: index_getprocid
      Src: /src/postgres/src/backend/access/gin/ginutil.c:171,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/gin/ginutil.c:173,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/gin/ginutil.c:174,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/gin/ginutil.c:178,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/gin/ginutil.c:180,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/gin/ginutil.c:181,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginutil.c:188,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gin/ginutil.c:190,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/gin/ginutil.c:196,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/gin/ginutil.c:198,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/gin/ginutil.c:199,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gin/ginutil.c:220,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 42
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - GinState*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 225
    functionName: initGinState
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached:
    - errmsg
    - RelationGetDescr
    - TupleDescAttr
    - index_getprocid
    - ereport
    - lookup_type_cache
    - TupleDescInitEntryCollation
    - TupleDescInitEntry
    - format_type_be
    - MemSet
    - index_getprocinfo
    - OidIsValid
    - elog
    - fmgr_info_copy
    - RelationGetRelationName
    - CreateTemplateTupleDesc
    - errcode
    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:249,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginutil.c:251,1
    - Dst: DatumGetUInt16
      Src: /src/postgres/src/backend/access/gin/ginutil.c:253,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginutil.c:254,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ginstate
    - tuple
    argTypes:
    - GinState*
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 230
    functionDepth: 3
    functionLinenumber: 230
    functionLinenumberEnd: 258
    functionName: gintuple_get_attrnum
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached:
    - DatumGetUInt16
    - Assert
    - index_getattr
    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:275,1
    - Dst: gintuple_get_attrnum
      Src: /src/postgres/src/backend/access/gin/ginutil.c:284,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/gin/ginutil.c:286,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gin/ginutil.c:286,1
    - Dst: GinGetNullCategory
      Src: /src/postgres/src/backend/access/gin/ginutil.c:292,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - ginstate
    - tuple
    - category
    argTypes:
    - GinState*
    - IndexTuple
    - GinNullCategory*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 263
    functionDepth: 4
    functionLinenumber: 263
    functionLinenumberEnd: 297
    functionName: gintuple_get_key
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached:
    - gintuple_get_attrnum
    - OffsetNumberNext
    - index_getattr
    - GinGetNullCategory
    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:312,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gin/ginutil.c:317,1
    - Dst: ConditionalLockBuffer
      Src: /src/postgres/src/backend/access/gin/ginutil.c:323,1
    - Dst: GinPageIsRecyclable
      Src: /src/postgres/src/backend/access/gin/ginutil.c:325,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginutil.c:325,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginutil.c:328,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginutil.c:332,1
    - Dst: ExtendBufferedRel
      Src: /src/postgres/src/backend/access/gin/ginutil.c:336,1
    - Dst: BMR_REL
      Src: /src/postgres/src/backend/access/gin/ginutil.c:336,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 304
    functionDepth: 4
    functionLinenumber: 304
    functionLinenumberEnd: 340
    functionName: GinNewBuffer
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached:
    - ReadBuffer
    - BMR_REL
    - ReleaseBuffer
    - LockBuffer
    - ConditionalLockBuffer
    - GetFreeIndexPage
    - GinPageIsRecyclable
    - BufferGetPage
    - ExtendBufferedRel
    linkageType: ''
    returnType: Buffer
    signature: Buffer GinNewBuffer(Relation index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PageInit
      Src: /src/postgres/src/backend/access/gin/ginutil.c:347,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginutil.c:349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - page
    - f
    - pageSize
    argTypes:
    - Page
    - uint32
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 342
    functionDepth: 1
    functionLinenumber: 342
    functionLinenumberEnd: 352
    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:357,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginutil.c:357,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/gin/ginutil.c:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - b
    - f
    argTypes:
    - Buffer
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 354
    functionDepth: 4
    functionLinenumber: 354
    functionLinenumberEnd: 358
    functionName: GinInitBuffer
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached:
    - GinInitPage
    - BufferGetPage
    - BufferGetPageSize
    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:364,1
    - Dst: GinInitPage
      Src: /src/postgres/src/backend/access/gin/ginutil.c:366,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/gin/ginutil.c:366,1
    - Dst: GinPageGetMeta
      Src: /src/postgres/src/backend/access/gin/ginutil.c:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - b
    argTypes:
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 360
    functionDepth: 4
    functionLinenumber: 360
    functionLinenumberEnd: 387
    functionName: GinInitMetabuffer
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached:
    - GinInitPage
    - BufferGetPage
    - BufferGetPageSize
    - GinPageGetMeta
    linkageType: ''
    returnType: void
    signature: void GinInitMetabuffer(Buffer b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/access/gin/ginutil.c:406,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/gin/ginutil.c:406,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: 409
      start: 392
    functionDepth: 1
    functionLinenumber: 392
    functionLinenumberEnd: 409
    functionName: ginCompareEntries
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached:
    - DatumGetInt32
    - FunctionCall2Coll
    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/backend/access/gin/ginutil.c:423,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: 424
      start: 414
    functionDepth: 2
    functionLinenumber: 414
    functionLinenumberEnd: 424
    functionName: ginCompareAttEntries
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    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: 5
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/access/gin/ginutil.c:465,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/gin/ginutil.c:465,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 447
    functionDepth: 1
    functionLinenumber: 447
    functionLinenumberEnd: 478
    functionName: cmpEntries
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached:
    - DatumGetInt32
    - FunctionCall2Coll
    linkageType: ''
    returnType: int
    signature: int cmpEntries(const void *a, const void *b, void *arg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/ginutil.c:503,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/ginutil.c:505,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/gin/ginutil.c:513,1
    - Dst: FunctionCall3Coll
      Src: /src/postgres/src/backend/access/gin/ginutil.c:513,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginutil.c:516,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginutil.c:517,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/ginutil.c:525,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/ginutil.c:527,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/gin/ginutil.c:537,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/ginutil.c:551,1
    - Dst: qsort_arg
      Src: /src/postgres/src/backend/access/gin/ginutil.c:561,1
    - Dst: cmpEntries
      Src: /src/postgres/src/backend/access/gin/ginutil.c:574,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginutil.c:593,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/gin/ginutil.c:599,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 55
    argCount: 6
    argNames:
    - ginstate
    - attnum
    - value
    - isNull
    - nentries
    - categories
    argTypes:
    - GinState*
    - OffsetNumber
    - Datum
    - bool
    - int32*
    - GinNullCategory**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 487
    functionDepth: 2
    functionLinenumber: 487
    functionLinenumberEnd: 604
    functionName: ginExtractEntries
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached:
    - pfree
    - cmpEntries
    - palloc0
    - FunctionCall3Coll
    - PointerGetDatum
    - qsort_arg
    - palloc
    - DatumGetPointer
    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, GinNullCategory **categories)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: build_reloptions
      Src: /src/postgres/src/backend/access/gin/ginutil.c:615,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/gin/ginutil.c:618,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - reloptions
    - validate
    argTypes:
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 606
    functionDepth: 1
    functionLinenumber: 606
    functionLinenumberEnd: 619
    functionName: ginoptions
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached:
    - build_reloptions
    - lengthof
    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:634,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginutil.c:635,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginutil.c:636,1
    - Dst: GinPageGetMeta
      Src: /src/postgres/src/backend/access/gin/ginutil.c:637,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginutil.c:646,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - index
    - stats
    argTypes:
    - Relation
    - GinStatsData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 627
    functionDepth: 4
    functionLinenumber: 627
    functionLinenumberEnd: 647
    functionName: ginGetStats
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached:
    - ReadBuffer
    - LockBuffer
    - BufferGetPage
    - UnlockReleaseBuffer
    - GinPageGetMeta
    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:661,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginutil.c:662,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginutil.c:663,1
    - Dst: GinPageGetMeta
      Src: /src/postgres/src/backend/access/gin/ginutil.c:664,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/ginutil.c:666,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginutil.c:683,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gin/ginutil.c:685,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginutil.c:693,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/gin/ginutil.c:695,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/gin/ginutil.c:696,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/ginutil.c:697,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/gin/ginutil.c:699,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginutil.c:700,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginutil.c:703,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/ginutil.c:705,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 3
    argNames:
    - index
    - stats
    - is_build
    argTypes:
    - Relation
    - GinStatsData*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 654
    functionDepth: 4
    functionLinenumber: 654
    functionLinenumberEnd: 706
    functionName: ginUpdateStats
    functionSourceFile: /src/postgres/src/backend/access/gin/ginutil.c
    functionUses: 0
    functionsReached:
    - ReadBuffer
    - MarkBufferDirty
    - PageSetLSN
    - START_CRIT_SECTION
    - memcpy
    - XLogBeginInsert
    - LockBuffer
    - XLogInsert
    - RelationNeedsWAL
    - XLogRegisterBuffer
    - XLogRegisterData
    - END_CRIT_SECTION
    - BufferGetPage
    - UnlockReleaseBuffer
    - GinPageGetMeta
    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: 731
      start: 711
    functionDepth: 0
    functionLinenumber: 711
    functionLinenumberEnd: 731
    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
    - ginStepRight
    - PredicateLockPage
    - GinPageRightMost
    - BufferGetPage
    - PageGetMaxOffsetNumber
    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:
    - ginStepRight
    - ginScanBeginPostingTree
    - freeGinBtreeStack
    - IncrBufferRefCount
    - GinPageGetOpaque
    - GinDataLeafPageGetItemsToTbm
    - GinPageRightMost
    - BufferGetPage
    - UnlockReleaseBuffer
    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:
    - UInt16GetDatum
    - LockBuffer
    - datumCopy
    - GinGetPostingTree
    - RelationGetRelationName
    - moveRightIfItNeeded
    - pfree
    - gintuple_get_key
    - BufferGetBlockNumber
    - ginCompareEntries
    - FunctionCall4Coll
    - GinIsPostingTree
    - PageGetItem
    - scanPostingTree
    - DatumGetPointer
    - ginReadTuple
    - errmsg
    - PageGetItemId
    - tbm_create
    - PredicateLockPage
    - DatumGetInt32
    - gintuple_get_attrnum
    - BufferGetPage
    - GinGetNPosting
    - ereport
    - PointerGetDatum
    - GinPageIsLeaf
    - TupleDescCompactAttr
    - tbm_add_tuples
    - errcode
    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:
    - LockBuffer
    - GinGetPostingTree
    - tbm_begin_private_iterate
    - pfree
    - GinDataLeafPageGetItems
    - GinBtreeData::findItem
    - collectMatchBitmap
    - ginScanBeginPostingTree
    - BufferGetBlockNumber
    - ginFindLeafPage
    - tbm_is_empty
    - ginPrepareEntryScan
    - GinIsPostingTree
    - PageGetItem
    - ginReadTuple
    - tbm_end_private_iterate
    - PageGetItemId
    - PredicateLockPage
    - freeGinBtreeStack
    - tbm_free
    - BufferGetPage
    - ItemPointerSetMin
    - IncrBufferRefCount
    - GinGetNPosting
    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
      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
    - MemoryContextSwitchTo
    - CHECK_FOR_INTERRUPTS
    - MemoryContextReset
    - GinScanKey::triConsistentFn
    - 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:
    - startScanEntry
    - startScanKey
    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:
    - ItemPointerSet
    - GinDataPageGetRightBound
    - ReleaseBuffer
    - LockBuffer
    - GinPageGetOpaque
    - pfree
    - GinDataLeafPageGetItems
    - ginStepRight
    - GinItemPointerGetOffsetNumber
    - GinItemPointerGetBlockNumber
    - OffsetNumberNext
    - ginFindLeafPage
    - BufferIsValid
    - freeGinBtreeStack
    - elog
    - BufferGetPage
    - UnlockReleaseBuffer
    - ItemPointerIsLossyPage
    - IncrBufferRefCount
    - GinPageRightMost
    - ginCompareItemPointers
    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:
    - tbm_private_iterate
    - Assert
    - tbm_end_private_iterate
    - tbm_extract_page_tuple
    - ItemPointerSet
    - BufferIsValid
    - ItemPointerIsLossyPage
    - GinItemPointerGetOffsetNumber
    - ItemPointerSetInvalid
    - GinItemPointerGetBlockNumber
    - ItemPointerIsValid
    - dropItem
    - entryLoadMoreItems
    - ItemPointerSetLossyPage
    - BlockNumberIsValid
    - ginCompareItemPointers
    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:
    - ItemPointerSetMax
    - Assert
    - ItemPointerSet
    - MemoryContextSwitchTo
    - ItemPointerIsLossyPage
    - MemoryContextReset
    - GinItemPointerGetOffsetNumber
    - entryGetItem
    - GinItemPointerGetBlockNumber
    - OffsetNumberPrev
    - OffsetNumberNext
    - ItemPointerSetLossyPage
    - GinScanKey::triConsistentFn
    - ginCompareItemPointers
    linkageType: ''
    returnType: void
    signature: "void keyGetItem(GinState *ginstate, MemoryContext tempCtx, GinScanKey
      key,\n\t\t   ItemPointerData advancePast)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerSetMin
      Src: /src/postgres/src/backend/access/gin/ginget.c:1330,1
    - Dst: ItemPointerIsLossyPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:1340,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginget.c:1346,1
    - Dst: keyGetItem
      Src: /src/postgres/src/backend/access/gin/ginget.c:1351,1
    - Dst: ItemPointerIsLossyPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:1374,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1376,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1377,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/gin/ginget.c:1379,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1380,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginget.c:1386,1
    - Dst: GinItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1386,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/gin/ginget.c:1387,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1388,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/gin/ginget.c:1389,1
    - Dst: GinItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1389,1
    - Dst: ItemPointerIsLossyPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:1408,1
    - Dst: ItemPointerIsLossyPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:1409,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginget.c:1411,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1411,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1411,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1412,1
    - Dst: GinItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1413,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginget.c:1417,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/ginget.c:1417,1
    - Dst: ginCompareItemPointers
      Src: /src/postgres/src/backend/access/gin/ginget.c:1418,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginget.c:1424,1
    - Dst: ItemPointerIsMin
      Src: /src/postgres/src/backend/access/gin/ginget.c:1424,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 47
    argCount: 4
    argNames:
    - scan
    - advancePast
    - item
    - recheck
    argTypes:
    - IndexScanDesc
    - ItemPointerData
    - ItemPointerData*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1446
      start: 1299
    functionDepth: 7
    functionLinenumber: 1299
    functionLinenumberEnd: 1446
    functionName: scanGetItem
    functionSourceFile: /src/postgres/src/backend/access/gin/ginget.c
    functionUses: 0
    functionsReached:
    - ItemPointerSetMin
    - Assert
    - keyGetItem
    - ItemPointerSet
    - ItemPointerIsMin
    - ItemPointerIsLossyPage
    - GinItemPointerGetOffsetNumber
    - GinItemPointerGetBlockNumber
    - OffsetNumberPrev
    - ginCompareItemPointers
    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:1471,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:1474,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginget.c:1476,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginget.c:1479,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:1483,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:1496,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:1498,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:1499,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginget.c:1507,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginget.c:1507,1
    - Dst: GinPageHasFullRow
      Src: /src/postgres/src/backend/access/gin/ginget.c:1509,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginget.c:1516,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginget.c:1516,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/gin/ginget.c:1517,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 2
    argNames:
    - scan
    - pos
    argTypes:
    - IndexScanDesc
    - pendingPosition*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1539
      start: 1464
    functionDepth: 4
    functionLinenumber: 1464
    functionLinenumberEnd: 1539
    functionName: scanGetCandidate
    functionSourceFile: /src/postgres/src/backend/access/gin/ginget.c
    functionUses: 0
    functionsReached:
    - ReadBuffer
    - PageGetItemId
    - PageGetMaxOffsetNumber
    - GinPageHasFullRow
    - LockBuffer
    - ItemPointerSetInvalid
    - GinPageGetOpaque
    - ItemPointerEquals
    - BufferGetPage
    - PageGetItem
    - 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:1567,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginget.c:1567,1
    - Dst: gintuple_get_attrnum
      Src: /src/postgres/src/backend/access/gin/ginget.c:1569,1
    - Dst: gintuple_get_key
      Src: /src/postgres/src/backend/access/gin/ginget.c:1574,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/access/gin/ginget.c:1590,1
    - Dst: FunctionCall4Coll
      Src: /src/postgres/src/backend/access/gin/ginget.c:1590,1
    - Dst: UInt16GetDatum
      Src: /src/postgres/src/backend/access/gin/ginget.c:1594,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginget.c:1595,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: 1605
      start: 1551
    functionDepth: 5
    functionLinenumber: 1551
    functionLinenumberEnd: 1605
    functionName: matchPartialInPendingList
    functionSourceFile: /src/postgres/src/backend/access/gin/ginget.c
    functionUses: 0
    functionsReached:
    - UInt16GetDatum
    - gintuple_get_key
    - PageGetItemId
    - DatumGetInt32
    - PointerGetDatum
    - gintuple_get_attrnum
    - FunctionCall4Coll
    - PageGetItem
    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:1636,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gin/ginget.c:1638,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginget.c:1650,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gin/ginget.c:1651,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:1654,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginget.c:1683,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginget.c:1683,1
    - Dst: gintuple_get_attrnum
      Src: /src/postgres/src/backend/access/gin/ginget.c:1685,1
    - Dst: gintuple_get_key
      Src: /src/postgres/src/backend/access/gin/ginget.c:1701,1
    - Dst: ginCompareEntries
      Src: /src/postgres/src/backend/access/gin/ginget.c:1725,1
    - Dst: matchPartialInPendingList
      Src: /src/postgres/src/backend/access/gin/ginget.c:1746,1
    - Dst: matchPartialInPendingList
      Src: /src/postgres/src/backend/access/gin/ginget.c:1777,1
    - Dst: GinPageHasFullRow
      Src: /src/postgres/src/backend/access/gin/ginget.c:1794,1
    - Dst: scanGetCandidate
      Src: /src/postgres/src/backend/access/gin/ginget.c:1810,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/gin/ginget.c:1811,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginget.c:1812,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 69
    argCount: 2
    argNames:
    - scan
    - pos
    argTypes:
    - IndexScanDesc
    - pendingPosition*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1829
      start: 1619
    functionDepth: 6
    functionLinenumber: 1619
    functionLinenumberEnd: 1829
    functionName: collectMatchesForHeapRow
    functionSourceFile: /src/postgres/src/backend/access/gin/ginget.c
    functionUses: 0
    functionsReached:
    - Assert
    - PageGetItemId
    - gintuple_get_key
    - scanGetCandidate
    - memset
    - GinPageHasFullRow
    - ginCompareEntries
    - gintuple_get_attrnum
    - elog
    - ItemPointerEquals
    - matchPartialInPendingList
    - BufferGetPage
    - PageGetItem
    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:1843,1
    - Dst: PredicateLockPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:1853,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:1855,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginget.c:1856,1
    - Dst: GinPageGetMeta
      Src: /src/postgres/src/backend/access/gin/ginget.c:1857,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:1866,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:1870,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:1871,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginget.c:1873,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/ginget.c:1874,1
    - Dst: scanGetCandidate
      Src: /src/postgres/src/backend/access/gin/ginget.c:1880,1
    - Dst: collectMatchesForHeapRow
      Src: /src/postgres/src/backend/access/gin/ginget.c:1889,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginget.c:1896,1
    - Dst: GinScanKey::boolConsistentFn
      Src: /src/postgres/src/backend/access/gin/ginget.c:1904,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginget.c:1912,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gin/ginget.c:1913,1
    - Dst: tbm_add_tuples
      Src: /src/postgres/src/backend/access/gin/ginget.c:1917,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginget.c:1922,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 3
    argNames:
    - scan
    - tbm
    - ntids
    argTypes:
    - IndexScanDesc
    - TIDBitmap*
    - int64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1923
      start: 1834
    functionDepth: 7
    functionLinenumber: 1834
    functionLinenumberEnd: 1923
    functionName: scanPendingInsert
    functionSourceFile: /src/postgres/src/backend/access/gin/ginget.c
    functionUses: 0
    functionsReached:
    - ReadBuffer
    - pfree
    - MemoryContextSwitchTo
    - scanGetCandidate
    - collectMatchesForHeapRow
    - PredicateLockPage
    - LockBuffer
    - MemoryContextReset
    - tbm_add_tuples
    - BufferGetPage
    - palloc
    - UnlockReleaseBuffer
    - GinScanKey::boolConsistentFn
    - GinPageGetMeta
    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: 1927
      start: 1926
    functionDepth: 0
    functionLinenumber: 1926
    functionLinenumberEnd: 1927
    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:1939,1
    - Dst: ginNewScanKey
      Src: /src/postgres/src/backend/access/gin/ginget.c:1941,1
    - Dst: GinIsVoidRes
      Src: /src/postgres/src/backend/access/gin/ginget.c:1943,1
    - Dst: scanPendingInsert
      Src: /src/postgres/src/backend/access/gin/ginget.c:1958,1
    - Dst: startScan
      Src: /src/postgres/src/backend/access/gin/ginget.c:1963,1
    - Dst: ItemPointerSetMin
      Src: /src/postgres/src/backend/access/gin/ginget.c:1965,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/gin/ginget.c:1969,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: 19
    argCount: 2
    argNames:
    - scan
    - tbm
    argTypes:
    - IndexScanDesc
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1982
      start: 1928
    functionDepth: 8
    functionLinenumber: 1928
    functionLinenumberEnd: 1982
    functionName: gingetbitmap
    functionSourceFile: /src/postgres/src/backend/access/gin/ginget.c
    functionUses: 0
    functionsReached:
    - ItemPointerSetMin
    - scanGetItem
    - tbm_add_page
    - scanPendingInsert
    - ginFreeScanKeys
    - CHECK_FOR_INTERRUPTS
    - ItemPointerIsLossyPage
    - ginNewScanKey
    - startScan
    - tbm_add_tuples
    - ItemPointerGetBlockNumber
    - GinIsVoidRes
    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: UInt32GetDatum
      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
    - FunctionCall8Coll
    - UInt32GetDatum
    - 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: UInt32GetDatum
      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
    - FunctionCall7Coll
    - UInt32GetDatum
    - PointerGetDatum
    - DatumGetGinTernaryValue
    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: UInt32GetDatum
      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
    - FunctionCall7Coll
    - UInt32GetDatum
    - PointerGetDatum
    - DatumGetGinTernaryValue
    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:
    - BufferGetPage
    - LockBuffer
    - GinPageIsLeaf
    linkageType: ''
    returnType: int
    signature: int ginTraverseLock(Buffer buffer, bool searchMode)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      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
      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:
    - ReadBuffer
    - Assert
    - ginStepRight
    - GinBtree::isMoveRight
    - LockBuffer
    - GinBtree::findChildPage
    - ginFinishOldSplit
    - GinPageGetOpaque
    - GinPageIsLeaf
    - ginTraverseLock
    - GinPageIsIncompleteSplit
    - ReleaseAndReadBuffer
    - BufferGetPage
    - palloc
    - 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:
    - ReadBuffer
    - UnlockReleaseBuffer
    - LockBuffer
    - GinPageGetOpaque
    - GinPageIsLeaf
    - elog
    - BufferGetPage
    - 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
      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:
    - ReadBuffer
    - Assert
    - BufferGetBlockNumber
    - ginStepRight
    - ReleaseBuffer
    - LockBuffer
    - GinBtree::findChildPtr
    - GinBtree::getLeftMostChild
    - ginFinishOldSplit
    - GinPageGetOpaque
    - GinPageIsLeaf
    - elog
    - GinPageIsIncompleteSplit
    - BufferGetPage
    - palloc
    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:
    - MarkBufferDirty
    - PageSetLSN
    - MemoryContextSwitchTo
    - GinPageGetOpaque
    - GinNewBuffer
    - XLogRegisterData
    - PageGetTempPage
    - START_CRIT_SECTION
    - MemoryContextDelete
    - BufferGetBlockNumber
    - GinPageIsData
    - GinBtree::beginPlaceToPage
    - memcpy
    - RelationNeedsWAL
    - BufferIsValid
    - BlockIdSet
    - elog
    - GinInitPage
    - BufferGetPage
    - UnlockReleaseBuffer
    - Assert
    - XLogBeginInsert
    - XLogInsert
    - PredicateLockPageSplit
    - GinBtree::fillRoot
    - GinPageIsLeaf
    - XLogRegisterBuffer
    - AllocSetContextCreate
    - END_CRIT_SECTION
    - GinBtree::execPlaceToPage
    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:
    - pfree
    - Assert
    - ginStepRight
    - BufferGetBlockNumber
    - ReleaseBuffer
    - LockBuffer
    - freeGinBtreeStack
    - GinBtree::findChildPtr
    - ginPlaceToPage
    - ginFinishOldSplit
    - GinPageRightMost
    - GinPageGetOpaque
    - GinPageIsLeaf
    - GinPageIsIncompleteSplit
    - INJECTION_POINT
    - GinBtree::prepareDownlink
    - ginFindParents
    - BufferGetPage
    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:
    - LockBuffer
    - ginFinishSplit
    - elog
    - GinPageIsIncompleteSplit
    - INJECTION_POINT
    - BufferGetPage
    - 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:
    - LockBuffer
    - freeGinBtreeStack
    - ginFinishSplit
    - ginPlaceToPage
    - ginFinishOldSplit
    - GinPageIsIncompleteSplit
    - BufferGetPage
    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:59,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:68,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:69,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - gvs
    - items
    - nitem
    - nremaining
    argTypes:
    - GinVacuumState*
    - ItemPointerData*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 46
    functionDepth: 2
    functionLinenumber: 46
    functionLinenumberEnd: 83
    functionName: ginVacuumItemPointers
    functionSourceFile: /src/postgres/src/backend/access/gin/ginvacuum.c
    functionUses: 0
    functionsReached:
    - memcpy
    - palloc
    - GinVacuumState*::callback
    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:91,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:95,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:95,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:96,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:96,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:98,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:105,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:106,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:108,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - index
    - buffer
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 88
    functionDepth: 4
    functionLinenumber: 88
    functionLinenumberEnd: 110
    functionName: xlogVacuumPage
    functionSourceFile: /src/postgres/src/backend/access/gin/ginvacuum.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - Assert
    - XLogBeginInsert
    - XLogInsert
    - GinPageIsLeaf
    - XLogRegisterBuffer
    - BufferGetPage
    - GinPageIsData
    - RelationNeedsWAL
    linkageType: ''
    returnType: void
    signature: void xlogVacuumPage(Relation index, Buffer buffer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:145,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:147,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:149,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:152,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:153,1
    - Dst: PredicateLockPageCombine
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:159,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:161,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:164,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:165,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:168,1
    - Dst: GinDataPageGetPostingItem
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:172,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:174,1
    - Dst: PostingItemGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:174,1
    - Dst: GinPageDeletePostingItem
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:177,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:179,1
    - Dst: GinPageSetDeleted
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:190,1
    - Dst: GinPageSetDeleteXid
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:191,1
    - Dst: ReadNextTransactionId
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:191,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:193,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:194,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:195,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:197,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:210,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:211,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:212,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:213,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:216,1
    - Dst: GinPageGetDeleteXid
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:217,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:219,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:221,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:222,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:223,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:224,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:224,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:227,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:228,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:229,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:231,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 41
    argCount: 6
    argNames:
    - gvs
    - deleteBlkno
    - leftBlkno
    - parentBlkno
    - myoff
    - isParentRoot
    argTypes:
    - GinVacuumState*
    - BlockNumber
    - BlockNumber
    - BlockNumber
    - OffsetNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 128
    functionDepth: 4
    functionLinenumber: 128
    functionLinenumberEnd: 235
    functionName: ginDeletePage
    functionSourceFile: /src/postgres/src/backend/access/gin/ginvacuum.c
    functionUses: 0
    functionsReached:
    - MarkBufferDirty
    - PageSetLSN
    - ReleaseBuffer
    - GinPageGetOpaque
    - GinPageGetDeleteXid
    - GinPageSetDeleted
    - XLogRegisterData
    - GinPageDeletePostingItem
    - START_CRIT_SECTION
    - GinPageSetDeleteXid
    - PostingItemGetBlockNumber
    - RelationNeedsWAL
    - PredicateLockPageCombine
    - ReadBufferExtended
    - BufferGetPage
    - Assert
    - XLogBeginInsert
    - XLogInsert
    - XLogRegisterBuffer
    - GinDataPageGetPostingItem
    - END_CRIT_SECTION
    - ReadNextTransactionId
    linkageType: ''
    returnType: void
    signature: "void ginDeletePage(GinVacuumState *gvs, BlockNumber deleteBlkno, BlockNumber
      leftBlkno,\n\t\t\t  BlockNumber parentBlkno, OffsetNumber myoff, bool isParentRoot)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:263,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:272,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:276,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:278,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:280,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:280,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:282,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:287,1
    - Dst: GinDataPageGetPostingItem
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:289,1
    - Dst: ginScanToDelete
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:291,1
    - Dst: PostingItemGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:291,1
    - Dst: GinPageRightMost
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:295,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:295,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:297,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:302,1
    - Dst: GinDataLeafPageIsEmpty
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:303,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:305,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:310,1
    - Dst: GinPageRightMost
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:310,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:312,1
    - Dst: ginDeletePage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:313,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:313,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:321,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:322,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:328,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:330,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:334,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 50
    argCount: 5
    argNames:
    - gvs
    - blkno
    - isRoot
    - parent
    - myoff
    argTypes:
    - GinVacuumState*
    - BlockNumber
    - bool
    - DataPageDeleteStack*
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 245
    functionDepth: 5
    functionLinenumber: 245
    functionLinenumberEnd: 337
    functionName: ginScanToDelete
    functionSourceFile: /src/postgres/src/backend/access/gin/ginvacuum.c
    functionUses: 1
    functionsReached:
    - Assert
    - BufferIsValid
    - UnlockReleaseBuffer
    - BufferGetBlockNumber
    - ReleaseBuffer
    - LockBuffer
    - ginDeletePage
    - palloc0
    - GinPageGetOpaque
    - GinPageRightMost
    - GinPageIsLeaf
    - PostingItemGetBlockNumber
    - ReadBufferExtended
    - GinDataLeafPageIsEmpty
    - GinDataPageGetPostingItem
    - BufferGetPage
    - ginScanToDelete
    - GinPageIsData
    linkageType: ''
    returnType: bool
    signature: "bool ginScanToDelete(GinVacuumState *gvs, BlockNumber blkno, bool
      isRoot,\n\t\t\t\tDataPageDeleteStack *parent, OffsetNumber myoff)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:357,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:359,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:360,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:362,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:362,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:364,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:366,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:367,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:371,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:371,1
    - Dst: GinDataPageGetPostingItem
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:373,1
    - Dst: PostingItemGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:374,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:375,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:377,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:383,1
    - Dst: ginVacuumPostingTreeLeaf
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:384,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:385,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:386,1
    - Dst: GinDataLeafPageIsEmpty
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:388,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:391,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:393,1
    - Dst: ReadBufferExtended
      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: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:401,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 2
    argNames:
    - gvs
    - blkno
    argTypes:
    - GinVacuumState*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 344
    functionDepth: 4
    functionLinenumber: 344
    functionLinenumberEnd: 405
    functionName: ginVacuumPostingTreeLeaves
    functionSourceFile: /src/postgres/src/backend/access/gin/ginvacuum.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - MemoryContextReset
    - LockBuffer
    - ginVacuumPostingTreeLeaf
    - GinPageGetOpaque
    - GinPageIsLeaf
    - PostingItemGetBlockNumber
    - ReadBufferExtended
    - GinDataLeafPageIsEmpty
    - GinDataPageGetPostingItem
    - BufferGetPage
    - GinPageIsData
    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:410,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:421,1
    - Dst: LockBufferForCleanup
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:428,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:430,1
    - Dst: ginScanToDelete
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:434,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:441,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:445,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - gvs
    - rootBlkno
    argTypes:
    - GinVacuumState*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 407
    functionDepth: 6
    functionLinenumber: 407
    functionLinenumberEnd: 447
    functionName: ginVacuumPostingTree
    functionSourceFile: /src/postgres/src/backend/access/gin/ginvacuum.c
    functionUses: 0
    functionsReached:
    - pfree
    - LockBufferForCleanup
    - memset
    - ReadBufferExtended
    - ginVacuumPostingTreeLeaves
    - ginScanToDelete
    - UnlockReleaseBuffer
    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:457,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:460,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:468,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:468,1
    - Dst: GinIsPostingTree
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:470,1
    - Dst: GinGetDownlink
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:476,1
    - Dst: GinGetNPosting
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:479,1
    - Dst: GinItupIsCompressed
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:487,1
    - Dst: ginPostingListDecode
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:489,1
    - Dst: GinGetPosting
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:489,1
    - Dst: GinGetPosting
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:494,1
    - Dst: GinGetNPosting
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:495,1
    - Dst: ginVacuumItemPointers
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:500,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:503,1
    - Dst: ginCompressPostingList
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:516,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:517,1
    - Dst: PageGetTempPageCopy
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:535,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:538,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:538,1
    - Dst: gintuple_get_attrnum
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:541,1
    - Dst: gintuple_get_key
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:542,1
    - Dst: GinFormTuple
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:543,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:547,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:548,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:550,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:550,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:551,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:552,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:554,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:555,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 46
    argCount: 4
    argNames:
    - gvs
    - buffer
    - roots
    - nroot
    argTypes:
    - GinVacuumState*
    - Buffer
    - BlockNumber*
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 454
    functionDepth: 5
    functionLinenumber: 454
    functionLinenumberEnd: 561
    functionName: ginVacuumEntryPage
    functionSourceFile: /src/postgres/src/backend/access/gin/ginvacuum.c
    functionUses: 0
    functionsReached:
    - GinGetPosting
    - PageIndexTupleDelete
    - PageAddItem
    - SizeOfGinPostingList
    - IndexTupleSize
    - RelationGetRelationName
    - pfree
    - gintuple_get_key
    - PageGetTempPageCopy
    - GinFormTuple
    - GinIsPostingTree
    - PageGetItem
    - ginVacuumItemPointers
    - PageGetItemId
    - gintuple_get_attrnum
    - elog
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - GinGetDownlink
    - ginPostingListDecode
    - GinItupIsCompressed
    - GinGetNPosting
    - ginCompressPostingList
    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:574,1
    - Dst: initGinState
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:581,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:587,1
    - Dst: ginInsertCleanup
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:592,1
    - Dst: AmAutoVacuumWorkerProcess
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:592,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:600,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:606,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:609,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:611,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:611,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:613,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:615,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:616,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:618,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:620,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:626,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:626,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:628,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:628,1
    - Dst: GinGetDownlink
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:629,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:630,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:632,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:633,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:641,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:645,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:645,1
    - Dst: ginVacuumEntryPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:647,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:649,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:653,1
    - Dst: PageRestoreTempPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:654,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:655,1
    - Dst: xlogVacuumPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:656,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:657,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:658,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:662,1
    - Dst: vacuum_delay_point
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:665,1
    - Dst: ginVacuumPostingTree
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:669,1
    - Dst: vacuum_delay_point
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:670,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:676,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:678,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:681,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: 684
      start: 563
    functionDepth: 7
    functionLinenumber: 563
    functionLinenumberEnd: 684
    functionName: ginbulkdelete
    functionSourceFile: /src/postgres/src/backend/access/gin/ginvacuum.c
    functionUses: 0
    functionsReached:
    - ginVacuumEntryPage
    - MarkBufferDirty
    - LockBuffer
    - vacuum_delay_point
    - GinPageGetOpaque
    - ginInsertCleanup
    - initGinState
    - START_CRIT_SECTION
    - MemoryContextDelete
    - PageGetItem
    - PageGetItemId
    - PageRestoreTempPage
    - ReadBufferExtended
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - Assert
    - GinGetDownlink
    - ginVacuumPostingTree
    - xlogVacuumPage
    - palloc0
    - GinPageIsLeaf
    - AmAutoVacuumWorkerProcess
    - AllocSetContextCreate
    - END_CRIT_SECTION
    - GinPageIsData
    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:703,1
    - Dst: initGinState
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:705,1
    - Dst: ginInsertCleanup
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:706,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:717,1
    - Dst: initGinState
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:718,1
    - Dst: ginInsertCleanup
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:719,1
    - Dst: AmAutoVacuumWorkerProcess
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:719,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:723,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:730,1
    - Dst: RELATION_IS_LOCAL
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:736,1
    - Dst: LockRelationForExtension
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:739,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:740,1
    - Dst: UnlockRelationForExtension
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:742,1
    - Dst: vacuum_delay_point
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:751,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:753,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:755,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:756,1
    - Dst: GinPageIsRecyclable
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:758,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:760,1
    - Dst: RecordFreeIndexPage
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:761,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:764,1
    - Dst: GinPageIsList
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:768,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:772,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:773,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:776,1
    - Dst: ginUpdateStats
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:781,1
    - Dst: IndexFreeSpaceMapVacuum
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:784,1
    - Dst: LockRelationForExtension
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:789,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:790,1
    - Dst: UnlockRelationForExtension
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:792,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 53
    argCount: 2
    argNames:
    - info
    - stats
    argTypes:
    - IndexVacuumInfo*
    - IndexBulkDeleteResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 686
    functionDepth: 5
    functionLinenumber: 686
    functionLinenumberEnd: 795
    functionName: ginvacuumcleanup
    functionSourceFile: /src/postgres/src/backend/access/gin/ginvacuum.c
    functionUses: 0
    functionsReached:
    - RELATION_IS_LOCAL
    - LockBuffer
    - vacuum_delay_point
    - ginInsertCleanup
    - GinPageIsList
    - initGinState
    - IndexFreeSpaceMapVacuum
    - Max
    - RelationGetNumberOfBlocks
    - LockRelationForExtension
    - ginUpdateStats
    - ReadBufferExtended
    - UnlockRelationForExtension
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - RecordFreeIndexPage
    - Assert
    - memset
    - palloc0
    - GinPageIsLeaf
    - AmAutoVacuumWorkerProcess
    - GinPageIsRecyclable
    - GinPageIsData
    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:805,1
    - Dst: GinPageIsDeleted
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:808,1
    - Dst: GinPageGetDeleteXid
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:811,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:813,1
    - Dst: GlobalVisCheckRemovableXid
      Src: /src/postgres/src/backend/access/gin/ginvacuum.c:820,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 800
    functionDepth: 1
    functionLinenumber: 800
    functionLinenumberEnd: 821
    functionName: GinPageIsRecyclable
    functionSourceFile: /src/postgres/src/backend/access/gin/ginvacuum.c
    functionUses: 2
    functionsReached:
    - TransactionIdIsValid
    - GinPageIsDeleted
    - GinPageGetDeleteXid
    - GlobalVisCheckRemovableXid
    - PageIsNew
    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:
    - ARR_ELEMTYPE
    - deconstruct_array
    - get_typlenbyvalalign
    - PG_GETARG_POINTER
    - PG_GETARG_ARRAYTYPE_P_COPY
    - PG_RETURN_POINTER
    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
    - elog
    - ginarrayextract
    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:88,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:89,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:97,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:97,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:100,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:101,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:130,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:135,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 136
    functionName: ginqueryarrayextract
    functionSourceFile: /src/postgres/src/backend/access/gin/ginarrayproc.c
    functionUses: 0
    functionsReached:
    - ARR_ELEMTYPE
    - deconstruct_array
    - get_typlenbyvalalign
    - PG_GETARG_POINTER
    - PG_GETARG_ARRAYTYPE_P_COPY
    - PG_GETARG_UINT16
    - elog
    - PG_RETURN_POINTER
    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:144,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:145,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:148,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:151,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:154,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:214,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:219,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 220
    functionName: ginarrayconsistent
    functionSourceFile: /src/postgres/src/backend/access/gin/ginarrayproc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_BOOL
    - PG_GETARG_UINT16
    - elog
    - 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:228,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:229,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:232,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:236,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:299,1
    - Dst: PG_RETURN_GIN_TERNARY_VALUE
      Src: /src/postgres/src/backend/access/gin/ginarrayproc.c:304,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 305
    functionName: ginarraytriconsistent
    functionSourceFile: /src/postgres/src/backend/access/gin/ginarrayproc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_GIN_TERNARY_VALUE
    - PG_GETARG_UINT16
    - elog
    - 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: 106
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 106
    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:224,1
    - Dst: GinIsPostingTree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:224,1
    - Dst: gintuple_get_attrnum
      Src: /src/postgres/src/backend/access/gin/gininsert.c:226,1
    - Dst: gintuple_get_key
      Src: /src/postgres/src/backend/access/gin/gininsert.c:227,1
    - Dst: ginReadTuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:230,1
    - Dst: ginMergeItemPointers
      Src: /src/postgres/src/backend/access/gin/gininsert.c:232,1
    - Dst: ginCompressPostingList
      Src: /src/postgres/src/backend/access/gin/gininsert.c:238,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:240,1
    - Dst: GinFormTuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:243,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/gininsert.c:245,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:248,1
    - Dst: createPostingTree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:260,1
    - Dst: ginInsertItemPointers
      Src: /src/postgres/src/backend/access/gin/gininsert.c:267,1
    - Dst: GinFormTuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:272,1
    - Dst: GinSetPostingTree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:273,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:275,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: 278
      start: 208
    functionDepth: 5
    functionLinenumber: 208
    functionLinenumberEnd: 278
    functionName: addItemPointersToLeafTuple
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - gintuple_get_key
    - createPostingTree
    - GinFormTuple
    - ginCompressPostingList
    - gintuple_get_attrnum
    - SizeOfGinPostingList
    - ginMergeItemPointers
    - ginInsertItemPointers
    - GinSetPostingTree
    - GinIsPostingTree
    - ginReadTuple
    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:298,1
    - Dst: GinFormTuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:301,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/gininsert.c:303,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:305,1
    - Dst: GinFormTuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:316,1
    - Dst: createPostingTree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:321,1
    - Dst: GinSetPostingTree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:325,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: 329
      start: 288
    functionDepth: 4
    functionLinenumber: 288
    functionLinenumberEnd: 329
    functionName: buildFreshLeafTuple
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - pfree
    - createPostingTree
    - GinFormTuple
    - ginCompressPostingList
    - SizeOfGinPostingList
    - GinSetPostingTree
    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:352,1
    - Dst: ginFindLeafPage
      Src: /src/postgres/src/backend/access/gin/gininsert.c:355,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/gininsert.c:356,1
    - Dst: GinBtreeData::findItem
      Src: /src/postgres/src/backend/access/gin/gininsert.c:358,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gin/gininsert.c:361,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gin/gininsert.c:361,1
    - Dst: GinIsPostingTree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:363,1
    - Dst: GinGetPostingTree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:366,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:369,1
    - Dst: freeGinBtreeStack
      Src: /src/postgres/src/backend/access/gin/gininsert.c:370,1
    - Dst: ginInsertItemPointers
      Src: /src/postgres/src/backend/access/gin/gininsert.c:373,1
    - Dst: CheckForSerializableConflictIn
      Src: /src/postgres/src/backend/access/gin/gininsert.c:379,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/gininsert.c:380,1
    - Dst: addItemPointersToLeafTuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:382,1
    - Dst: CheckForSerializableConflictIn
      Src: /src/postgres/src/backend/access/gin/gininsert.c:389,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/gininsert.c:390,1
    - Dst: buildFreshLeafTuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:392,1
    - Dst: ginInsertValue
      Src: /src/postgres/src/backend/access/gin/gininsert.c:405,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:406,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: 407
      start: 338
    functionDepth: 9
    functionLinenumber: 338
    functionLinenumberEnd: 407
    functionName: ginEntryInsert
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - GinIsPostingTree
    - pfree
    - PageGetItemId
    - GinBtreeData::findItem
    - BufferGetBlockNumber
    - LockBuffer
    - freeGinBtreeStack
    - ginPrepareEntryScan
    - CheckForSerializableConflictIn
    - addItemPointersToLeafTuple
    - buildFreshLeafTuple
    - ginFindLeafPage
    - ginInsertValue
    - GinGetPostingTree
    - BufferGetPage
    - PageGetItem
    - ginInsertItemPointers
    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:425,1
    - Dst: ginExtractEntries
      Src: /src/postgres/src/backend/access/gin/gininsert.c:426,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:429,1
    - Dst: ginInsertBAEntries
      Src: /src/postgres/src/backend/access/gin/gininsert.c:431,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:436,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: 437
      start: 415
    functionDepth: 3
    functionLinenumber: 415
    functionLinenumberEnd: 437
    functionName: ginHeapTupleBulkInsert
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - MemoryContextReset
    - MemoryContextSwitchTo
    - ginExtractEntries
    - ginInsertBAEntries
    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:447,1
    - Dst: ginHeapTupleBulkInsert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:450,1
    - Dst: ginBeginBAScan
      Src: /src/postgres/src/backend/access/gin/gininsert.c:462,1
    - Dst: ginGetBAEntry
      Src: /src/postgres/src/backend/access/gin/gininsert.c:463,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/gin/gininsert.c:467,1
    - Dst: ginEntryInsert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:468,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:472,1
    - Dst: ginInitBA
      Src: /src/postgres/src/backend/access/gin/gininsert.c:473,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:476,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: 477
      start: 439
    functionDepth: 10
    functionLinenumber: 439
    functionLinenumberEnd: 477
    functionName: ginBuildCallback
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - ginInitBA
    - MemoryContextSwitchTo
    - CHECK_FOR_INTERRUPTS
    - ginGetBAEntry
    - MemoryContextReset
    - ginHeapTupleBulkInsert
    - ginBeginBAScan
    - ginEntryInsert
    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:491,1
    - Dst: ginBeginBAScan
      Src: /src/postgres/src/backend/access/gin/gininsert.c:493,1
    - Dst: ginGetBAEntry
      Src: /src/postgres/src/backend/access/gin/gininsert.c:494,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/gin/gininsert.c:498,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/gin/gininsert.c:505,1
    - Dst: _gin_build_tuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:507,1
    - Dst: tuplesort_putgintuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:511,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:513,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:516,1
    - Dst: ginInitBA
      Src: /src/postgres/src/backend/access/gin/gininsert.c:517,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - buildstate
    - index
    argTypes:
    - GinBuildState*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 483
    functionDepth: 2
    functionLinenumber: 483
    functionLinenumberEnd: 518
    functionName: ginFlushBuildState
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - ginInitBA
    - pfree
    - CHECK_FOR_INTERRUPTS
    - ginGetBAEntry
    - MemoryContextReset
    - RelationGetDescr
    - TupleDescAttr
    - ginBeginBAScan
    - _gin_build_tuple
    - tuplesort_putgintuple
    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:540,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/gin/gininsert.c:559,1
    - Dst: ginFlushBuildState
      Src: /src/postgres/src/backend/access/gin/gininsert.c:560,1
    - Dst: ginHeapTupleBulkInsert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:566,1
    - Dst: ginFlushBuildState
      Src: /src/postgres/src/backend/access/gin/gininsert.c:575,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:577,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: 578
      start: 532
    functionDepth: 4
    functionLinenumber: 532
    functionLinenumberEnd: 578
    functionName: ginBuildCallbackParallel
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - ginFlushBuildState
    - MemoryContextSwitchTo
    - ItemPointerCompare
    - ginHeapTupleBulkInsert
    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:596,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/gininsert.c:597,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gin/gininsert.c:598,1
    - Dst: initGinState
      Src: /src/postgres/src/backend/access/gin/gininsert.c:600,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:602,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:608,1
    - Dst: GinNewBuffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:611,1
    - Dst: GinNewBuffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:614,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/gininsert.c:616,1
    - Dst: GinInitMetabuffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:617,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/gininsert.c:618,1
    - Dst: GinInitBuffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:619,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/gininsert.c:620,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:623,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:624,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/gininsert.c:625,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/gin/gininsert.c:634,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/gin/gininsert.c:642,1
    - Dst: ginInitBA
      Src: /src/postgres/src/backend/access/gin/gininsert.c:647,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/gin/gininsert.c:650,1
    - Dst: _gin_begin_parallel
      Src: /src/postgres/src/backend/access/gin/gininsert.c:663,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/gin/gininsert.c:679,1
    - Dst: tuplesort_begin_index_gin
      Src: /src/postgres/src/backend/access/gin/gininsert.c:708,1
    - Dst: _gin_parallel_merge
      Src: /src/postgres/src/backend/access/gin/gininsert.c:713,1
    - Dst: _gin_end_parallel
      Src: /src/postgres/src/backend/access/gin/gininsert.c:715,1
    - Dst: table_index_build_scan
      Src: /src/postgres/src/backend/access/gin/gininsert.c:723,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:727,1
    - Dst: ginBeginBAScan
      Src: /src/postgres/src/backend/access/gin/gininsert.c:728,1
    - Dst: ginGetBAEntry
      Src: /src/postgres/src/backend/access/gin/gininsert.c:729,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/gin/gininsert.c:733,1
    - Dst: ginEntryInsert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:734,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:737,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/gin/gininsert.c:740,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/gin/gininsert.c:741,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/gin/gininsert.c:746,1
    - Dst: ginUpdateStats
      Src: /src/postgres/src/backend/access/gin/gininsert.c:747,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gin/gininsert.c:753,1
    - Dst: log_newpage_range
      Src: /src/postgres/src/backend/access/gin/gininsert.c:755,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/gin/gininsert.c:756,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/gininsert.c:763,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 57
    argCount: 3
    argNames:
    - heap
    - index
    - indexInfo
    argTypes:
    - Relation
    - Relation
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 580
    functionDepth: 10
    functionLinenumber: 580
    functionLinenumberEnd: 769
    functionName: ginbuild
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - MarkBufferDirty
    - tuplesort_begin_index_gin
    - MemoryContextSwitchTo
    - CHECK_FOR_INTERRUPTS
    - GinInitBuffer
    - GinNewBuffer
    - RelationGetRelationName
    - initGinState
    - START_CRIT_SECTION
    - MemoryContextDelete
    - ginEntryInsert
    - _gin_parallel_merge
    - RelationGetNumberOfBlocks
    - _gin_begin_parallel
    - ginInitBA
    - RelationNeedsWAL
    - ginUpdateStats
    - table_index_build_scan
    - ginBeginBAScan
    - elog
    - palloc
    - UnlockReleaseBuffer
    - log_newpage_range
    - ginGetBAEntry
    - memset
    - pgstat_progress_update_param
    - palloc0
    - GinInitMetabuffer
    - AllocSetContextCreate
    - END_CRIT_SECTION
    - _gin_end_parallel
    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:781,1
    - Dst: BMR_REL
      Src: /src/postgres/src/backend/access/gin/gininsert.c:781,1
    - Dst: ExtendBufferedRel
      Src: /src/postgres/src/backend/access/gin/gininsert.c:783,1
    - Dst: BMR_REL
      Src: /src/postgres/src/backend/access/gin/gininsert.c:783,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/gininsert.c:787,1
    - Dst: GinInitMetabuffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:788,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/gininsert.c:789,1
    - Dst: log_newpage_buffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:790,1
    - Dst: GinInitBuffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:791,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/gininsert.c:792,1
    - Dst: log_newpage_buffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:793,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gin/gininsert.c:794,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:797,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:798,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 774
    functionDepth: 5
    functionLinenumber: 774
    functionLinenumberEnd: 799
    functionName: ginbuildempty
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - BMR_REL
    - MarkBufferDirty
    - START_CRIT_SECTION
    - GinInitBuffer
    - log_newpage_buffer
    - GinInitMetabuffer
    - END_CRIT_SECTION
    - ExtendBufferedRel
    - UnlockReleaseBuffer
    linkageType: ''
    returnType: void
    signature: void ginbuildempty(Relation index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ginExtractEntries
      Src: /src/postgres/src/backend/access/gin/gininsert.c:815,1
    - Dst: ginEntryInsert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:819,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - ginstate
    - attnum
    - value
    - isNull
    - item
    argTypes:
    - GinState*
    - OffsetNumber
    - Datum
    - bool
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 805
    functionDepth: 10
    functionLinenumber: 805
    functionLinenumberEnd: 821
    functionName: ginHeapTupleInsert
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - ginEntryInsert
    - ginExtractEntries
    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:838,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/gininsert.c:839,1
    - Dst: initGinState
      Src: /src/postgres/src/backend/access/gin/gininsert.c:840,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:842,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/gin/gininsert.c:845,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:849,1
    - Dst: GinGetUseFastUpdate
      Src: /src/postgres/src/backend/access/gin/gininsert.c:851,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:855,1
    - Dst: ginHeapTupleFastCollect
      Src: /src/postgres/src/backend/access/gin/gininsert.c:858,1
    - Dst: ginHeapTupleFastInsert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:863,1
    - Dst: ginHeapTupleInsert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:868,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:873,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/gin/gininsert.c:874,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: 877
      start: 823
    functionDepth: 11
    functionLinenumber: 823
    functionLinenumberEnd: 877
    functionName: gininsert
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - GinGetUseFastUpdate
    - ginHeapTupleFastInsert
    - MemoryContextDelete
    - memset
    - ginHeapTupleFastCollect
    - ginHeapTupleInsert
    - AllocSetContextCreate
    - palloc
    - initGinState
    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
      Src: /src/postgres/src/backend/access/gin/gininsert.c:906,1
    - Dst: EnterParallelMode
      Src: /src/postgres/src/backend/access/gin/gininsert.c:919,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:920,1
    - Dst: CreateParallelContext
      Src: /src/postgres/src/backend/access/gin/gininsert.c:921,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/access/gin/gininsert.c:936,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/access/gin/gininsert.c:936,1
    - Dst: _gin_parallel_estimate_shared
      Src: /src/postgres/src/backend/access/gin/gininsert.c:941,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/gin/gininsert.c:942,1
    - Dst: tuplesort_estimate_shared
      Src: /src/postgres/src/backend/access/gin/gininsert.c:943,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/gin/gininsert.c:944,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/gin/gininsert.c:946,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/gin/gininsert.c:956,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/gin/gininsert.c:957,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/gin/gininsert.c:958,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/gin/gininsert.c:959,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/gin/gininsert.c:960,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/gin/gininsert.c:961,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/gin/gininsert.c:966,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/gin/gininsert.c:967,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/gin/gininsert.c:968,1
    - Dst: InitializeParallelDSM
      Src: /src/postgres/src/backend/access/gin/gininsert.c:974,1
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/access/gin/gininsert.c:979,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/access/gin/gininsert.c:980,1
    - Dst: DestroyParallelContext
      Src: /src/postgres/src/backend/access/gin/gininsert.c:981,1
    - Dst: ExitParallelMode
      Src: /src/postgres/src/backend/access/gin/gininsert.c:982,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/gin/gininsert.c:987,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/gin/gininsert.c:989,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/gin/gininsert.c:990,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/backend/access/gin/gininsert.c:994,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/access/gin/gininsert.c:995,1
    - Dst: table_parallelscan_initialize
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1002,1
    - Dst: ParallelTableScanFromGinBuildShared
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1003,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1010,1
    - Dst: tuplesort_initialize_shared
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1011,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1014,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1015,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1022,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1023,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1024,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1031,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1032,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1033,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1034,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1035,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1036,1
    - Dst: LaunchParallelWorkers
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1039,1
    - Dst: _gin_end_parallel
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1053,1
    - Dst: _gin_leader_participate_as_worker
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1062,1
    - Dst: WaitForParallelWorkersToAttach
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1068,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: 1069
      start: 895
    functionDepth: 1
    functionLinenumber: 895
    functionLinenumberEnd: 1069
    functionName: _gin_begin_parallel
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 1
    functionsReached:
    - CreateParallelContext
    - table_parallelscan_initialize
    - WaitForParallelWorkersToAttach
    - ConditionVariableInit
    - shm_toc_allocate
    - strlen
    - RelationGetRelid
    - RegisterSnapshot
    - _gin_parallel_estimate_shared
    - GetTransactionSnapshot
    - ExitParallelMode
    - shm_toc_estimate_keys
    - tuplesort_estimate_shared
    - memcpy
    - mul_size
    - ParallelTableScanFromGinBuildShared
    - tuplesort_initialize_shared
    - DestroyParallelContext
    - SpinLockInit
    - LaunchParallelWorkers
    - _gin_leader_participate_as_worker
    - IsMVCCSnapshot
    - Assert
    - EnterParallelMode
    - InitializeParallelDSM
    - shm_toc_estimate_chunk
    - shm_toc_insert
    - palloc0
    - _gin_end_parallel
    - UnregisterSnapshot
    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:1080,1
    - Dst: InstrAccumParallelQuery
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1087,1
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1090,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1091,1
    - Dst: DestroyParallelContext
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1092,1
    - Dst: ExitParallelMode
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1093,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ginleader
    - state
    argTypes:
    - GinLeader*
    - GinBuildState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1094
      start: 1074
    functionDepth: 1
    functionLinenumber: 1074
    functionLinenumberEnd: 1094
    functionName: _gin_end_parallel
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 2
    functionsReached:
    - InstrAccumParallelQuery
    - IsMVCCSnapshot
    - DestroyParallelContext
    - ExitParallelMode
    - WaitForParallelWorkersToFinish
    - 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:1114,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1121,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1124,1
    - Dst: ConditionVariableSleep
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1126,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1130,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - GinBuildState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1133
      start: 1105
    functionDepth: 1
    functionLinenumber: 1105
    functionLinenumberEnd: 1133
    functionName: _gin_parallel_heapscan
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - ConditionVariableSleep
    - SpinLockRelease
    - ConditionVariableCancelSleep
    - SpinLockAcquire
    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:1177,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1178,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1182,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1182,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1188,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1188,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - GinBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1191
      start: 1172
    functionDepth: 2
    functionLinenumber: 1172
    functionLinenumberEnd: 1191
    functionName: AssertCheckItemPointers
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - Assert
    - ItemPointerCompare
    - ItemPointerIsValid
    linkageType: ''
    returnType: void
    signature: void AssertCheckItemPointers(GinBuffer *buffer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1204,1
    - Dst: AssertCheckItemPointers
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1214,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - GinBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1216
      start: 1199
    functionDepth: 3
    functionLinenumber: 1199
    functionLinenumberEnd: 1216
    functionName: AssertCheckGinBuffer
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - AssertCheckItemPointers
    - Assert
    linkageType: ''
    returnType: void
    signature: void AssertCheckGinBuffer(GinBuffer *buffer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1231,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1234,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1243,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1245,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1255,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1260,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1267,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1273,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1278,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1280,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1281,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1282,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1283,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1284,1
    - Dst: PrepareSortSupportComparisonShim
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1289,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1293
      start: 1228
    functionDepth: 2
    functionLinenumber: 1228
    functionLinenumberEnd: 1293
    functionName: GinBufferInit
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - IndexRelationGetNumberOfKeyAttributes
    - errmsg
    - Assert
    - PrepareSortSupportComparisonShim
    - RelationGetDescr
    - TupleDescAttr
    - index_getprocid
    - palloc0
    - lookup_type_cache
    - ereport
    - format_type_be
    - OidIsValid
    - errcode
    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: 1300
      start: 1296
    functionDepth: 0
    functionLinenumber: 1296
    functionLinenumberEnd: 1300
    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:1318,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1324,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1325,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1341,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1343,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - buffer
    - tup
    argTypes:
    - GinBuffer*
    - GinTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1348
      start: 1312
    functionDepth: 4
    functionLinenumber: 1312
    functionLinenumberEnd: 1348
    functionName: GinBufferKeyEquals
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - AssertCheckGinBuffer
    - ApplySortComparator
    - Assert
    - PointerGetDatum
    linkageType: ''
    returnType: bool
    signature: bool GinBufferKeyEquals(GinBuffer *buffer, GinTuple *tup)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - buffer
    - tup
    argTypes:
    - GinBuffer*
    - GinTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1390
      start: 1374
    functionDepth: 0
    functionLinenumber: 1374
    functionLinenumberEnd: 1390
    functionName: GinBufferShouldTrim
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GinBufferShouldTrim(GinBuffer *buffer, GinTuple *tup)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: AssertCheckGinBuffer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1421,1
    - Dst: _gin_parse_tuple_key
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1423,1
    - Dst: _gin_parse_tuple_items
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1424,1
    - Dst: GinBufferIsEmpty
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1427,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1437,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1457,1
    - Dst: GinTupleGetFirst
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1458,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1477,1
    - Dst: GinTupleGetFirst
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1478,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1495,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1497,1
    - Dst: ginMergeItemPointers::ginMergeItemPointers
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1500,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1504,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1506,1
    - Dst: nnew::nnew
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1506,1
    - Dst: AssertCheckItemPointers
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1513,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1517,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 2
    argNames:
    - buffer
    - tup
    argTypes:
    - GinBuffer*
    - GinTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1518
      start: 1415
    functionDepth: 4
    functionLinenumber: 1415
    functionLinenumberEnd: 1518
    functionName: GinBufferStoreTuple
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - AssertCheckItemPointers
    - Assert
    - pfree
    - _gin_parse_tuple_items
    - palloc
    - GinTupleGetFirst
    - nnew::nnew
    - datumCopy
    - _gin_parse_tuple_key
    - repalloc
    - memcpy
    - AssertCheckGinBuffer
    - ginMergeItemPointers::ginMergeItemPointers
    - ItemPointerCompare
    - GinBufferIsEmpty
    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:1527,1
    - Dst: GinBufferIsEmpty
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1527,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1531,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1531,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - GinBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1547
      start: 1524
    functionDepth: 1
    functionLinenumber: 1524
    functionLinenumberEnd: 1547
    functionName: GinBufferReset
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - DatumGetPointer
    - GinBufferIsEmpty
    linkageType: ''
    returnType: void
    signature: void GinBufferReset(GinBuffer *buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1557,1
    - Dst: memmove
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1559,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - GinBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1564
      start: 1554
    functionDepth: 1
    functionLinenumber: 1554
    functionLinenumberEnd: 1564
    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:1574,1
    - Dst: GinBufferIsEmpty
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1577,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1579,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1579,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1581,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - GinBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1582
      start: 1570
    functionDepth: 1
    functionLinenumber: 1570
    functionLinenumberEnd: 1582
    functionName: GinBufferFree
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - pfree
    - DatumGetPointer
    - GinBufferIsEmpty
    linkageType: ''
    returnType: void
    signature: void GinBufferFree(GinBuffer *buffer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GinBufferIsEmpty
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1594,1
    - Dst: GinBufferKeyEquals
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1598,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - buffer
    - tup
    argTypes:
    - GinBuffer*
    - GinTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1599
      start: 1590
    functionDepth: 5
    functionLinenumber: 1590
    functionLinenumberEnd: 1599
    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:1624,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1627,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1631,1
    - Dst: GinBufferInit
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1639,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1658,1
    - Dst: tuplesort_getgintuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1670,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1674,1
    - Dst: GinBufferCanAddKey
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1681,1
    - Dst: AssertCheckItemPointers
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1688,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1690,1
    - Dst: ginEntryInsert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1692,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1696,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1697,1
    - Dst: GinBufferReset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1700,1
    - Dst: GinBufferShouldTrim
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1710,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1712,1
    - Dst: AssertCheckItemPointers
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1719,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1721,1
    - Dst: ginEntryInsert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1723,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1727,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1728,1
    - Dst: GinBufferTrim
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1731,1
    - Dst: GinBufferStoreTuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1738,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1741,1
    - Dst: GinBufferIsEmpty
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1746,1
    - Dst: AssertCheckItemPointers
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1748,1
    - Dst: ginEntryInsert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1750,1
    - Dst: GinBufferReset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1755,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1758,1
    - Dst: GinBufferFree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1763,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1765,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 38
    argCount: 1
    argNames:
    - state
    argTypes:
    - GinBuildState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1768
      start: 1612
    functionDepth: 10
    functionLinenumber: 1612
    functionLinenumberEnd: 1768
    functionName: _gin_parallel_merge
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 1
    functionsReached:
    - GinBufferTrim
    - MemoryContextSwitchTo
    - CHECK_FOR_INTERRUPTS
    - GinBufferShouldTrim
    - MemoryContextReset
    - AssertCheckItemPointers
    - GinBufferFree
    - GinBufferInit
    - ginEntryInsert
    - GinBufferCanAddKey
    - GinBufferReset
    - tuplesort_end
    - pgstat_progress_update_multi_param
    - tuplesort_getgintuple
    - _gin_parallel_heapscan
    - Assert
    - pgstat_progress_update_param
    - GinBufferStoreTuple
    - tuplesort_performsort
    - GinBufferIsEmpty
    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:1778,1
    - Dst: BUFFERALIGN
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1778,1
    - Dst: table_parallelscan_estimate
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1779,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - heap
    - snapshot
    argTypes:
    - Relation
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1780
      start: 1774
    functionDepth: 1
    functionLinenumber: 1774
    functionLinenumberEnd: 1780
    functionName: _gin_parallel_estimate_shared
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 1
    functionsReached:
    - BUFFERALIGN
    - table_parallelscan_estimate
    - add_size
    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:1799,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - buildstate
    - heap
    - index
    argTypes:
    - GinBuildState*
    - Relation
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1802
      start: 1785
    functionDepth: 1
    functionLinenumber: 1785
    functionLinenumberEnd: 1802
    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:1834,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1838,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1841,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1847,1
    - Dst: tuplesort_getgintuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1854,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1857,1
    - Dst: GinBufferCanAddKey
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1864,1
    - Dst: AssertCheckItemPointers
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1874,1
    - Dst: _gin_build_tuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1876,1
    - Dst: tuplesort_putgintuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1880,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1883,1
    - Dst: GinBufferReset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1886,1
    - Dst: GinBufferShouldTrim
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1896,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1901,1
    - Dst: AssertCheckItemPointers
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1908,1
    - Dst: _gin_build_tuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1910,1
    - Dst: tuplesort_putgintuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1914,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1916,1
    - Dst: GinBufferTrim
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1919,1
    - Dst: GinBufferStoreTuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1926,1
    - Dst: GinBufferIsEmpty
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1930,1
    - Dst: AssertCheckItemPointers
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1935,1
    - Dst: _gin_build_tuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1937,1
    - Dst: tuplesort_putgintuple
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1941,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1944,1
    - Dst: GinBufferReset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1947,1
    - Dst: GinBufferFree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1951,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/access/gin/gininsert.c:1953,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 3
    argNames:
    - state
    - worker_sort
    - progress
    argTypes:
    - GinBuildState*
    - Tuplesortstate*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1954
      start: 1818
    functionDepth: 6
    functionLinenumber: 1818
    functionLinenumberEnd: 1954
    functionName: _gin_process_worker_data
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - GinBufferTrim
    - AssertCheckItemPointers
    - pfree
    - Assert
    - GinBufferFree
    - CHECK_FOR_INTERRUPTS
    - GinBufferShouldTrim
    - GinBufferInit
    - GinBufferIsEmpty
    - pgstat_progress_update_param
    - _gin_build_tuple
    - tuplesort_putgintuple
    - GinBufferCanAddKey
    - GinBufferStoreTuple
    - tuplesort_performsort
    - GinBufferReset
    - tuplesort_getgintuple
    - tuplesort_end
    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
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2008,1
    - Dst: tuplesort_begin_index_gin
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2017,1
    - Dst: tuplesort_begin_index_gin
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2023,1
    - Dst: BuildIndexInfo
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2029,1
    - Dst: table_beginscan_parallel
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2032,1
    - Dst: ParallelTableScanFromGinBuildShared
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2033,1
    - Dst: table_index_build_scan
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2035,1
    - Dst: ginFlushBuildState
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2039,1
    - Dst: _gin_process_worker_data
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2046,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2049,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2056,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2060,1
    - Dst: ConditionVariableSignal
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2063,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2065,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 7
    argNames:
    - state
    - ginshared
    - sharedsort
    - heap
    - index
    - sortmem
    - progress
    argTypes:
    - GinBuildState*
    - GinBuildShared*
    - Sharedsort*
    - Relation
    - Relation
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2066
      start: 1996
    functionDepth: 7
    functionLinenumber: 1996
    functionLinenumberEnd: 2066
    functionName: _gin_parallel_scan_and_build
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 1
    functionsReached:
    - ParallelTableScanFromGinBuildShared
    - tuplesort_begin_index_gin
    - ConditionVariableSignal
    - table_index_build_scan
    - SpinLockAcquire
    - ginFlushBuildState
    - tuplesort_end
    - palloc0
    - SpinLockRelease
    - _gin_process_worker_data
    - table_beginscan_parallel
    - tuplesort_performsort
    - BuildIndexInfo
    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:2090,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2094,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2098,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2101,1
    - Dst: table_open
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2116,1
    - Dst: index_open
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2117,1
    - Dst: initGinState
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2120,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2122,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2123,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2129,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2137,1
    - Dst: ginInitBA
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2142,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2146,1
    - Dst: tuplesort_attach_shared
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2147,1
    - Dst: InstrStartParallelQuery
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2150,1
    - Dst: _gin_parallel_scan_and_build
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2159,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2163,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2164,1
    - Dst: InstrEndParallelQuery
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2165,1
    - Dst: index_close
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2168,1
    - Dst: table_close
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2169,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 33
    argCount: 2
    argNames:
    - seg
    - toc
    argTypes:
    - dsm_segment*
    - shm_toc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2170
      start: 2071
    functionDepth: 8
    functionLinenumber: 2071
    functionLinenumberEnd: 2170
    functionName: _gin_parallel_build_main
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - ginInitBA
    - Assert
    - initGinState
    - index_close
    - table_open
    - memset
    - InstrEndParallelQuery
    - InstrStartParallelQuery
    - shm_toc_lookup
    - pgstat_report_activity
    - AllocSetContextCreate
    - _gin_parallel_scan_and_build
    - table_close
    - tuplesort_attach_shared
    - index_open
    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:2236,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2238,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2238,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2240,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2245,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2251,1
    - Dst: ginCompressPostingList
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2253,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2259,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2261,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2269,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2280,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2300,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2304,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2304,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2308,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2308,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2312,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2312,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2317,1
    - Dst: dlist_foreach_modify
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2320,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2322,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2324,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2324,1
    - Dst: SizeOfGinPostingList
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2326,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2328,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2330,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2331,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: 2335
      start: 2199
    functionDepth: 4
    functionLinenumber: 2199
    functionLinenumberEnd: 2335
    functionName: _gin_build_tuple
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 2
    functionsReached:
    - pfree
    - VARSIZE_ANY
    - dlist_foreach_modify
    - ginCompressPostingList
    - dlist_push_tail
    - palloc0
    - elog
    - SizeOfGinPostingList
    - dlist_delete
    - SHORTALIGN
    - memcpy
    - palloc
    - strlen
    - DatumGetPointer
    - dlist_container
    - dlist_init
    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:2358,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2362,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - a
    argTypes:
    - GinTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2363
      start: 2348
    functionDepth: 1
    functionLinenumber: 2348
    functionLinenumberEnd: 2363
    functionName: _gin_parse_tuple_key
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 1
    functionsReached:
    - memcpy
    - PointerGetDatum
    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:2377,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2378,1
    - Dst: ginPostingListDecodeAllSegments
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2380,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - a
    argTypes:
    - GinTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2385
      start: 2369
    functionDepth: 4
    functionLinenumber: 2369
    functionLinenumberEnd: 2385
    functionName: _gin_parse_tuple_items
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 1
    functionsReached:
    - SHORTALIGN
    - Assert
    - ginPostingListDecodeAllSegments
    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:2422,1
    - Dst: _gin_parse_tuple_key
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2423,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2425,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2430,1
    - Dst: GinTupleGetFirst
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2430,1
    - Dst: GinTupleGetFirst
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2431,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2434,1
    - Dst: GinTupleGetFirst
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2434,1
    - Dst: GinTupleGetFirst
      Src: /src/postgres/src/backend/access/gin/gininsert.c:2435,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - a
    - b
    - ssup
    argTypes:
    - GinTuple*
    - GinTuple*
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2436
      start: 2401
    functionDepth: 2
    functionLinenumber: 2401
    functionLinenumberEnd: 2436
    functionName: _gin_compare_tuples
    functionSourceFile: /src/postgres/src/backend/access/gin/gininsert.c
    functionUses: 0
    functionsReached:
    - GinTupleGetFirst
    - _gin_parse_tuple_key
    - ItemPointerCompare
    - ApplySortComparator
    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: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:137,1
    - Dst: END_CRIT_SECTION
      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:
    - MarkBufferDirty
    - PageSetLSN
    - GinInitBuffer
    - PageAddItem
    - GinPageGetOpaque
    - XLogRegisterData
    - RelationGetRelationName
    - IndexTupleSize
    - START_CRIT_SECTION
    - memcpy
    - RelationNeedsWAL
    - XLogRegisterBufData
    - elog
    - BufferGetPage
    - PageGetExactFreeSpace
    - UnlockReleaseBuffer
    - Assert
    - XLogBeginInsert
    - XLogInsert
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    - GinPageSetFullRow
    linkageType: ''
    returnType: int32
    signature: "int32 writeListPage(Relation index, Buffer buffer,\n\t\t\t  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
    - IndexTupleSize
    - MAXALIGN
    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: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:462,1
    - Dst: END_CRIT_SECTION
      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:
    - MarkBufferDirty
    - PageSetLSN
    - GinGetPendingListCleanupSize
    - LockBuffer
    - PageAddItem
    - GinPageGetOpaque
    - XLogRegisterData
    - ginInsertCleanup
    - IndexTupleSize
    - RelationGetRelationName
    - GinPageGetMeta
    - START_CRIT_SECTION
    - OffsetNumberNext
    - PageIsEmpty
    - memcpy
    - CheckForSerializableConflictIn
    - RelationNeedsWAL
    - ReadBuffer
    - XLogRegisterBufData
    - elog
    - BufferGetPage
    - palloc
    - PageGetMaxOffsetNumber
    - PageGetExactFreeSpace
    - UnlockReleaseBuffer
    - Assert
    - makeSublist
    - XLogBeginInsert
    - memset
    - XLogInsert
    - XLogRegisterBuffer
    - 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:
    - GinFormTuple
    - repalloc_array
    - Max
    - elog
    - ginExtractEntries
    - palloc_array
    - IndexTupleSize
    - pg_nextpower2_32
    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: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginfast.c:663,1
    - Dst: END_CRIT_SECTION
      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:
    - MarkBufferDirty
    - PageSetLSN
    - LockBuffer
    - GinPageGetOpaque
    - XLogRegisterData
    - XLogEnsureRecordSpace
    - GinPageGetMeta
    - START_CRIT_SECTION
    - GinPageIsDeleted
    - memcpy
    - RelationNeedsWAL
    - ReadBuffer
    - BufferGetPage
    - UnlockReleaseBuffer
    - RecordFreeIndexPage
    - Assert
    - XLogBeginInsert
    - XLogInsert
    - XLogRegisterBuffer
    - 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:
    - Assert
    - PageGetItemId
    - gintuple_get_key
    - ginInsertBAEntries
    - ItemPointerSetInvalid
    - ItemPointerIsValid
    - gintuple_get_attrnum
    - OffsetNumberNext
    - ItemPointerEquals
    - addDatum
    - PageGetItem
    - PageGetMaxOffsetNumber
    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:
    - MemoryContextSwitchTo
    - ReleaseBuffer
    - MemoryContextReset
    - LockBuffer
    - vacuum_delay_point
    - GinPageGetOpaque
    - LockPage
    - GinPageGetMeta
    - shiftList
    - MemoryContextDelete
    - IndexFreeSpaceMapVacuum
    - GinPageHasFullRow
    - GinPageIsDeleted
    - ginEntryInsert
    - ReadBuffer
    - ginInitBA
    - processPendingPage
    - ConditionalLockPage
    - ginBeginBAScan
    - UnlockPage
    - BufferGetPage
    - UnlockReleaseBuffer
    - PageGetMaxOffsetNumber
    - initKeyArray
    - Assert
    - ginGetBAEntry
    - AmAutoVacuumWorkerProcess
    - AllocSetContextCreate
    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:
    - errmsg
    - RELATION_IS_OTHER_TEMP
    - GetUserId
    - initGinState
    - RecoveryInProgress
    - aclcheck_error
    - memset
    - index_close
    - ereport
    - PG_GETARG_OID
    - errhint
    - object_ownercheck
    - ginInsertCleanup
    - PG_RETURN_INT64
    - RelationGetRelationName
    - errcode
    - index_open
    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:31,1
    - Dst: RelationGetIndexScan
      Src: /src/postgres/src/backend/access/gin/ginscan.c:33,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/ginscan.c:36,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/gin/ginscan.c:39,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/gin/ginscan.c:42,1
    - Dst: initGinState
      Src: /src/postgres/src/backend/access/gin/ginscan.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - rel
    - nkeys
    - norderbys
    argTypes:
    - Relation
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 24
    functionDepth: 3
    functionLinenumber: 24
    functionLinenumberEnd: 50
    functionName: ginbeginscan
    functionSourceFile: /src/postgres/src/backend/access/gin/ginscan.c
    functionUses: 0
    functionsReached:
    - RelationGetIndexScan
    - Assert
    - AllocSetContextCreate
    - palloc
    - initGinState
    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:88,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/ginscan.c:101,1
    - Dst: ItemPointerSetMin
      Src: /src/postgres/src/backend/access/gin/ginscan.c:111,1
    - Dst: repalloc
      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: 56
    functionDepth: 2
    functionLinenumber: 56
    functionLinenumberEnd: 132
    functionName: ginFillScanEntry
    functionSourceFile: /src/postgres/src/backend/access/gin/ginscan.c
    functionUses: 0
    functionsReached:
    - ItemPointerSetMin
    - palloc
    - ginCompareEntries
    - repalloc
    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
      Src: /src/postgres/src/backend/access/gin/ginscan.c:173,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/gin/ginscan.c:175,1
    - Dst: ItemPointerSetMin
      Src: /src/postgres/src/backend/access/gin/ginscan.c:192,1
    - Dst: ginInitConsistentFunction
      Src: /src/postgres/src/backend/access/gin/ginscan.c:201,1
    - Dst: ginFillScanEntry
      Src: /src/postgres/src/backend/access/gin/ginscan.c:218,1
    - Dst: ginScanKeyAddHiddenEntry
      Src: /src/postgres/src/backend/access/gin/ginscan.c:230,1
    - Dst: ginScanKeyAddHiddenEntry
      Src: /src/postgres/src/backend/access/gin/ginscan.c:232,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: 233
      start: 158
    functionDepth: 4
    functionLinenumber: 158
    functionLinenumberEnd: 233
    functionName: ginFillScanKey
    functionSourceFile: /src/postgres/src/backend/access/gin/ginscan.c
    functionUses: 0
    functionsReached:
    - ItemPointerSetMin
    - palloc0
    - ginFillScanEntry
    - ginScanKeyAddHiddenEntry
    - palloc
    - ginInitConsistentFunction
    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:251,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginscan.c:253,1
    - Dst: tbm_end_private_iterate
      Src: /src/postgres/src/backend/access/gin/ginscan.c:255,1
    - Dst: tbm_free
      Src: /src/postgres/src/backend/access/gin/ginscan.c:257,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gin/ginscan.c:260,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - so
    argTypes:
    - GinScanOpaque
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 266
    functionName: ginFreeScanKeys
    functionSourceFile: /src/postgres/src/backend/access/gin/ginscan.c
    functionUses: 1
    functionsReached:
    - pfree
    - tbm_end_private_iterate
    - ReleaseBuffer
    - MemoryContextReset
    - tbm_free
    linkageType: ''
    returnType: void
    signature: void ginFreeScanKeys(GinScanOpaque so)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginscan.c:283,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/ginscan.c:287,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/gin/ginscan.c:287,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gin/ginscan.c:294,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/gin/ginscan.c:321,1
    - Dst: FunctionCall7Coll
      Src: /src/postgres/src/backend/access/gin/ginscan.c:321,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginscan.c:324,1
    - Dst: UInt16GetDatum
      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: PointerGetDatum
      Src: /src/postgres/src/backend/access/gin/ginscan.c:329,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/gin/ginscan.c:362,1
    - Dst: ginFillScanKey
      Src: /src/postgres/src/backend/access/gin/ginscan.c:377,1
    - Dst: ginScanKeyAddHiddenEntry
      Src: /src/postgres/src/backend/access/gin/ginscan.c:406,1
    - Dst: ginFillScanKey
      Src: /src/postgres/src/backend/access/gin/ginscan.c:418,1
    - Dst: ginGetStats
      Src: /src/postgres/src/backend/access/gin/ginscan.c:433,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/gin/ginscan.c:435,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/gin/ginscan.c:436,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/gin/ginscan.c:437,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/gin/ginscan.c:438,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gin/ginscan.c:439,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginscan.c:442,1
    - Dst: pgstat_count_index_scan
      Src: /src/postgres/src/backend/access/gin/ginscan.c:444,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 60
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 268
    functionDepth: 5
    functionLinenumber: 268
    functionLinenumberEnd: 447
    functionName: ginNewScanKey
    functionSourceFile: /src/postgres/src/backend/access/gin/ginscan.c
    functionUses: 1
    functionsReached:
    - UInt16GetDatum
    - errmsg
    - FunctionCall7Coll
    - MemoryContextSwitchTo
    - pgstat_count_index_scan
    - ginGetStats
    - palloc0
    - PointerGetDatum
    - ereport
    - Max
    - ginFillScanKey
    - errhint
    - ginScanKeyAddHiddenEntry
    - palloc
    - RelationGetRelationName
    - DatumGetPointer
    - errcode
    linkageType: ''
    returnType: void
    signature: void ginNewScanKey(IndexScanDesc scan)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ginFreeScanKeys
      Src: /src/postgres/src/backend/access/gin/ginscan.c:455,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginscan.c:458,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: 459
      start: 449
    functionDepth: 2
    functionLinenumber: 449
    functionLinenumberEnd: 459
    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:467,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/gin/ginscan.c:469,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/gin/ginscan.c:470,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gin/ginscan.c:472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 462
    functionDepth: 2
    functionLinenumber: 462
    functionLinenumberEnd: 473
    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:
    - format_operator
    - HeapTupleIsValid
    - get_opfamily_name
    - NameStr
    - ReleaseSysCache
    - identify_opfamily_groups
    - GETSTRUCT
    - check_amproc_signature
    - format_procedure
    - errmsg
    - elog
    - check_amoptsproc_signature
    - OidIsValid
    - check_amop_signature
    - lfirst
    - ObjectIdGetDatum
    - ereport
    - SearchSysCache1
    - SearchSysCacheList1
    - ReleaseCatCacheList
    - errcode
    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:
    - errmsg
    - errcode
    - lfirst
    - ereport
    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:
    - errmsg
    - errcode
    - lfirst
    - ereport
    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: 4
    functionLinenumber: 134
    functionLinenumberEnd: 176
    functionName: GinDataLeafPageGetItems
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 2
    functionsReached:
    - ginPostingListDecodeAllSegments
    - GinDataLeafPageGetPostingList
    - GinNextPostingListSegment
    - memcpy
    - GinPageIsCompressed
    - ItemPointerIsValid
    - GinDataLeafPageGetPostingListSize
    - dataLeafPageGetUncompressed
    - palloc
    - ginCompareItemPointers
    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: 5
    functionLinenumber: 181
    functionLinenumberEnd: 203
    functionName: GinDataLeafPageGetItemsToTbm
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 1
    functionsReached:
    - GinDataLeafPageGetPostingList
    - GinPageIsCompressed
    - ginPostingListDecodeAllSegmentsToTbm
    - GinDataLeafPageGetPostingListSize
    - tbm_add_tuples
    - dataLeafPageGetUncompressed
    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:
    - GinDataPageGetData
    - Assert
    - 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:
    - GinPageIsDeleted
    - GinDataPageGetRightBound
    - ginCompareItemPointers
    - GinPageRightMost
    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:
    - Assert
    - GinBtree::getLeftMostChild
    - GinPageGetOpaque
    - GinPageIsLeaf
    - ginCompareItemPointers
    - PostingItemGetBlockNumber
    - GinDataPageGetPostingItem
    - BufferGetPage
    - GinPageIsData
    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
    - GinPageGetOpaque
    - GinPageIsLeaf
    - PostingItemGetBlockNumber
    - GinDataPageGetPostingItem
    - GinPageIsData
    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
    - GinPageGetOpaque
    - GinPageIsLeaf
    - PostingItemGetBlockNumber
    - GinDataPageGetPostingItem
    - GinPageIsData
    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:
    - Assert
    - GinDataPageSetDataSize
    - GinPageGetOpaque
    - memmove
    - PostingItemGetBlockNumber
    - GinPageIsLeaf
    - GinDataPageGetPostingItem
    - memcpy
    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
    - GinDataPageSetDataSize
    - memmove
    - GinPageGetOpaque
    - GinPageIsLeaf
    - 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:
    - leafRepackItems
    - GinDataPageGetRightBound
    - SizeOfGinPostingList
    - Min
    - BufferGetBlockNumber
    - dlist_tail_node
    - disassembleLeaf
    - ginCompareItemPointers
    - GinDataLeafPageGetFreeSpace
    - dlist_prev_node
    - addItemsToLeaf
    - RelationNeedsWAL
    - ItemPointerIsValid
    - elog
    - BufferGetPage
    - palloc
    - computeLeafRecompressWALData
    - ItemPointerSetMin
    - Assert
    - ginPostingListDecode
    - dlist_has_prev
    - GinPageIsCompressed
    - dlist_is_empty
    - GinPageRightMost
    - dataPlaceToPageLeafSplit
    - ItemPointerCompare
    - dlist_container
    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:
    - MarkBufferDirty
    - dataPlaceToPageLeafRecompress
    - XLogRegisterBufData
    - XLogRegisterBuffer
    - RelationNeedsWAL
    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:
    - MarkBufferDirty
    - PageSetLSN
    - dlist_foreach
    - SizeOfGinPostingList
    - pfree
    - START_CRIT_SECTION
    - dataPlaceToPageLeafRecompress
    - disassembleLeaf
    - memcpy
    - RelationNeedsWAL
    - ginVacuumItemPointers
    - XLogRegisterBufData
    - elog
    - BufferGetPage
    - palloc
    - computeLeafRecompressWALData
    - ginPostingListDecode
    - XLogBeginInsert
    - XLogInsert
    - ginCompressPostingList
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    - dlist_container
    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:
    - dlist_foreach
    - SizeOfGinPostingList
    - elog
    - SHORTALIGN
    - memcpy
    - palloc
    - dlist_container
    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:
    - GinPageSetCompressed
    - Assert
    - GinDataLeafPageGetPostingList
    - memcpy
    - GinDataPageSetDataSize
    - GinPageIsCompressed
    - GinPageGetOpaque
    - dlist_foreach
    - SizeOfGinPostingList
    - BufferGetPage
    - dlist_container
    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:
    - Assert
    - GinDataLeafPageGetPostingList
    - GinDataPageGetRightBound
    - GinDataPageSetDataSize
    - SizeOfGinPostingList
    - dlist_has_next
    - dlist_head_node
    - dlist_next_node
    - GinInitPage
    - memcpy
    - dlist_container
    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
    - BufferGetPage
    - dataSplitPageInternal
    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:
    - MarkBufferDirty
    - GinDataPageAddPostingItem
    - XLogRegisterBufData
    - PostingItemSetBlockNumber
    - XLogRegisterBuffer
    - GinDataPageGetPostingItem
    - BufferGetPage
    - RelationNeedsWAL
    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:
    - Assert
    - dataBeginPlaceToPageLeaf
    - dataBeginPlaceToPageInternal
    - GinPageIsLeaf
    - BufferGetPage
    - 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
    - BufferGetPage
    - GinPageIsLeaf
    - dataExecPlaceToPageLeaf
    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:
    - GinDataPageGetRightBound
    - memcpy
    - GinNonLeafDataPageGetFreeSpace
    - GinDataPageSetDataSize
    - PageGetPageSize
    - GinPageGetOpaque
    - PostingItemSetBlockNumber
    - GinPageRightMost
    - GinDataPageGetPostingItem
    - GinInitPage
    - BufferGetPage
    - PageGetTempPage
    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
      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:
    - GinDataPageGetRightBound
    - BufferGetBlockNumber
    - PostingItemSetBlockNumber
    - BufferGetPage
    - palloc
    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
      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
      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
      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:
    - GinDataLeafPageGetPostingList
    - GinNextPostingListSegment
    - memcpy
    - GinPageIsCompressed
    - dlist_push_tail
    - palloc0
    - GinDataLeafPageGetPostingListSize
    - dataLeafPageGetUncompressed
    - palloc
    - dlist_init
    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
      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
      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:
    - Assert
    - ginPostingListDecode
    - dlist_push_tail
    - dlist_is_empty
    - dlist_foreach
    - ginCompareItemPointers
    - SizeOfGinPostingList
    - dlist_has_next
    - dlist_next_node
    - ginMergeItemPointers
    - palloc
    - dlist_container
    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
      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: 4
    functionLinenumber: 1570
    functionLinenumberEnd: 1763
    functionName: leafRepackItems
    functionSourceFile: /src/postgres/src/backend/access/gin/gindatapage.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - ginPostingListDecode
    - dlist_insert_after
    - ItemPointerSetInvalid
    - ginCompressPostingList
    - dlist_foreach
    - SizeOfGinPostingList
    - dlist_prev_node
    - dlist_has_next
    - dlist_next_node
    - dlist_head_node
    - ginMergeItemPointers
    - dlist_delete
    - memcpy
    - palloc
    - dlist_container
    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: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/gindatapage.c:1857,1
    - Dst: END_CRIT_SECTION
      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:
    - MarkBufferDirty
    - PageSetLSN
    - GinPageGetOpaque
    - SizeOfGinPostingList
    - GinNewBuffer
    - XLogRegisterData
    - pfree
    - START_CRIT_SECTION
    - GinDataLeafPageGetPostingList
    - BufferGetBlockNumber
    - GinDataPageSetDataSize
    - memcpy
    - ginInsertItemPointers
    - RelationNeedsWAL
    - PageRestoreTempPage
    - elog
    - GinInitPage
    - BufferGetPage
    - palloc
    - UnlockReleaseBuffer
    - XLogBeginInsert
    - XLogInsert
    - PredicateLockPageSplit
    - ginCompressPostingList
    - XLogRegisterBuffer
    - 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:
    - errmsg
    - Assert
    - ereport
    - ginCompareItemPointers
    - errhint
    - GetMemoryChunkSpace
    - errcode
    - repalloc_huge
    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
      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:
    - palloc
    - GetMemoryChunkSpace
    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:
    - TupleDescCompactAttr
    - GetMemoryChunkSpace
    - DatumGetPointer
    - datumCopy
    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
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:181,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:183,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: 191
      start: 147
    functionDepth: 3
    functionLinenumber: 147
    functionLinenumberEnd: 191
    functionName: ginInsertBAEntry
    functionSourceFile: /src/postgres/src/backend/access/gin/ginbulk.c
    functionUses: 0
    functionsReached:
    - getDatumCopy
    - palloc
    - GetMemoryChunkSpace
    - rbt_insert
    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:220,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:220,1
    - Dst: ginInsertBAEntry
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:238,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: 243
      start: 209
    functionDepth: 4
    functionLinenumber: 209
    functionLinenumberEnd: 243
    functionName: ginInsertBAEntries
    functionSourceFile: /src/postgres/src/backend/access/gin/ginbulk.c
    functionUses: 2
    functionsReached:
    - ginInsertBAEntry
    - Assert
    - 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:248,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 245
    functionDepth: 2
    functionLinenumber: 245
    functionLinenumberEnd: 253
    functionName: qsortCompareItemPointers
    functionSourceFile: /src/postgres/src/backend/access/gin/ginbulk.c
    functionUses: 0
    functionsReached:
    - Assert
    - ginCompareItemPointers
    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:259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - accum
    argTypes:
    - BuildAccumulator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 260
    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:275,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:286,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/gin/ginbulk.c:289,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: 293
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 293
    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:
    - MarkBufferDirty
    - PageSetLSN
    - BufferIsValid
    - GinPageGetOpaque
    - XLogReadBufferForRedo
    - BufferGetPage
    - UnlockReleaseBuffer
    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:
    - PageSetLSN
    - MarkBufferDirty
    - GinDataLeafPageGetPostingList
    - memcpy
    - GinInitBuffer
    - GinDataPageSetDataSize
    - XLogRecGetData
    - BufferGetPage
    - XLogInitBufferForRedo
    - UnlockReleaseBuffer
    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:
    - Assert
    - PageGetItemId
    - PageIndexTupleDelete
    - GinSetDownlink
    - PageAddItem
    - BufferGetTag
    - IndexTupleSize
    - GinPageIsLeaf
    - elog
    - BufferGetPage
    - PageGetItem
    - PageGetMaxOffsetNumber
    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: 4
    functionLinenumber: 116
    functionLinenumberEnd: 316
    functionName: ginRedoRecompress
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - GinPageSetCompressed
    - Assert
    - PageGetSpecialPointer
    - GinDataLeafPageGetPostingList
    - GinNextPostingListSegment
    - ginPostingListDecode
    - GinDataPageSetDataSize
    - GinPageIsCompressed
    - ginCompressPostingList
    - GinPageGetOpaque
    - GinDataPageGetData
    - SizeOfGinPostingList
    - GinDataLeafPageGetPostingListSize
    - elog
    - ginMergeItemPointers
    - SHORTALIGN
    - memcpy
    - palloc
    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: 5
    functionLinenumber: 318
    functionLinenumberEnd: 344
    functionName: ginRedoInsertData
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - Assert
    - GinDataPageAddPostingItem
    - PostingItemSetBlockNumber
    - GinPageIsLeaf
    - GinDataPageGetPostingItem
    - BufferGetPage
    - ginRedoRecompress
    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:373,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:376,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:378,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:380,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:385,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:385,1
    - Dst: ginRedoInsertData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:386,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:390,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:390,1
    - Dst: ginRedoInsertEntry
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:391,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:394,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:395,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:397,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:398,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 346
    functionDepth: 6
    functionLinenumber: 346
    functionLinenumberEnd: 399
    functionName: ginRedoInsert
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - Assert
    - MarkBufferDirty
    - ginRedoInsertEntry
    - BufferIsValid
    - UnlockReleaseBuffer
    - BlockIdGetBlockNumber
    - XLogRecGetData
    - ginRedoClearIncompleteSplit
    - ginRedoInsertData
    - XLogReadBufferForRedo
    - BufferGetPage
    - XLogRecGetBlockData
    - GinPageIsData
    linkageType: ''
    returnType: void
    signature: void ginRedoInsert(XLogReaderState *record)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:404,1
    - Dst: ginRedoClearIncompleteSplit
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:416,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:418,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:419,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:421,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:422,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:426,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:427,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:428,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:431,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:432,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 401
    functionDepth: 5
    functionLinenumber: 401
    functionLinenumberEnd: 433
    functionName: ginRedoSplit
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - XLogRecGetData
    - ginRedoClearIncompleteSplit
    - elog
    - XLogReadBufferForRedo
    - UnlockReleaseBuffer
    linkageType: ''
    returnType: void
    signature: void ginRedoSplit(XLogReaderState *record)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:444,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:446,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:448,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 439
    functionDepth: 1
    functionLinenumber: 439
    functionLinenumberEnd: 449
    functionName: ginRedoVacuumPage
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - XLogReadBufferForRedo
    - elog
    - UnlockReleaseBuffer
    linkageType: ''
    returnType: void
    signature: void ginRedoVacuumPage(XLogReaderState *record)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:457,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:459,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:463,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:465,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:465,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:466,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:466,1
    - Dst: ginRedoRecompress
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:468,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:469,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:470,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:472,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:473,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 451
    functionDepth: 5
    functionLinenumber: 451
    functionLinenumberEnd: 474
    functionName: ginRedoVacuumDataLeafPage
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - Assert
    - MarkBufferDirty
    - BufferIsValid
    - UnlockReleaseBuffer
    - GinPageIsLeaf
    - XLogReadBufferForRedo
    - BufferGetPage
    - ginRedoRecompress
    - XLogRecGetBlockData
    - GinPageIsData
    linkageType: ''
    returnType: void
    signature: void ginRedoVacuumDataLeafPage(XLogReaderState *record)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:480,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:490,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:492,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:493,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:493,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:494,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:495,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:496,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:499,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:501,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:502,1
    - Dst: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:502,1
    - Dst: GinPageSetDeleted
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:503,1
    - Dst: GinPageSetDeleteXid
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:504,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:505,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:506,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:509,1
    - Dst: BufferGetPage
      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: GinPageIsData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:512,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:513,1
    - Dst: GinPageIsLeaf
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:513,1
    - Dst: GinPageDeletePostingItem
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:514,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:515,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:516,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:519,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:520,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:521,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:522,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:523,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:524,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 476
    functionDepth: 4
    functionLinenumber: 476
    functionLinenumberEnd: 525
    functionName: ginRedoDeletePage
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - GinPageDeletePostingItem
    - PageSetLSN
    - Assert
    - MarkBufferDirty
    - BufferIsValid
    - UnlockReleaseBuffer
    - GinPageSetDeleteXid
    - GinPageGetOpaque
    - GinPageSetDeleted
    - XLogRecGetData
    - GinPageIsLeaf
    - XLogReadBufferForRedo
    - BufferGetPage
    - GinPageIsData
    linkageType: ''
    returnType: void
    signature: void ginRedoDeletePage(XLogReaderState *record)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:531,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:541,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:542,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:542,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:543,1
    - Dst: GinInitMetabuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:545,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:546,1
    - Dst: GinPageGetMeta
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:546,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:547,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:548,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:555,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:557,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:565,1
    - Dst: PageIsEmpty
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:568,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:571,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:571,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:575,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:577,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:579,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:585,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:590,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:592,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:593,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:595,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:596,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:603,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:605,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:607,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:609,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:610,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:612,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:613,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:616,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 527
    functionDepth: 5
    functionLinenumber: 527
    functionLinenumberEnd: 617
    functionName: ginRedoUpdateMetapage
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - MarkBufferDirty
    - PageAddItem
    - GinPageGetOpaque
    - XLogRecGetData
    - IndexTupleSize
    - GinPageGetMeta
    - BufferGetBlockNumber
    - OffsetNumberNext
    - PageIsEmpty
    - memcpy
    - XLogInitBufferForRedo
    - XLogRecGetBlockData
    - BufferIsValid
    - elog
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - Assert
    - GinInitMetabuffer
    - XLogReadBufferForRedo
    linkageType: ''
    returnType: void
    signature: void ginRedoUpdateMetapage(XLogReaderState *record)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:623,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:635,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:636,1
    - Dst: GinInitBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:638,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:639,1
    - Dst: GinPageSetFullRow
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:643,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:644,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:648,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:651,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:656,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:658,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:661,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:666,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:668,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:669,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:671,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 619
    functionDepth: 5
    functionLinenumber: 619
    functionLinenumberEnd: 672
    functionName: ginRedoInsertListPage
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - Assert
    - MarkBufferDirty
    - GinPageSetFullRow
    - GinInitBuffer
    - PageAddItem
    - GinPageGetOpaque
    - IndexTupleSize
    - XLogRecGetData
    - elog
    - BufferGetPage
    - XLogInitBufferForRedo
    - XLogRecGetBlockData
    - UnlockReleaseBuffer
    linkageType: ''
    returnType: void
    signature: void ginRedoInsertListPage(XLogReaderState *record)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:678,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:683,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:684,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:684,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:685,1
    - Dst: GinInitMetabuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:687,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:689,1
    - Dst: GinPageGetMeta
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:689,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:690,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:691,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:713,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:714,1
    - Dst: GinInitBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:715,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:717,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:718,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:720,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:722,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 723
      start: 674
    functionDepth: 5
    functionLinenumber: 674
    functionLinenumberEnd: 723
    functionName: ginRedoDeleteListPages
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - Assert
    - MarkBufferDirty
    - BufferGetBlockNumber
    - memcpy
    - GinInitBuffer
    - GinInitMetabuffer
    - XLogRecGetData
    - BufferGetPage
    - XLogInitBufferForRedo
    - UnlockReleaseBuffer
    - GinPageGetMeta
    linkageType: ''
    returnType: void
    signature: void ginRedoDeleteListPages(XLogReaderState *record)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:728,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:737,1
    - Dst: ginRedoCreatePTree
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:741,1
    - Dst: ginRedoInsert
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:744,1
    - Dst: ginRedoSplit
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:747,1
    - Dst: ginRedoVacuumPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:750,1
    - Dst: ginRedoVacuumDataLeafPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:753,1
    - Dst: ginRedoDeletePage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:756,1
    - Dst: ginRedoUpdateMetapage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:759,1
    - Dst: ginRedoInsertListPage
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:762,1
    - Dst: ginRedoDeleteListPages
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:765,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:768,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:770,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:771,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 725
    functionDepth: 7
    functionLinenumber: 725
    functionLinenumberEnd: 772
    functionName: gin_redo
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - ginRedoCreatePTree
    - ginRedoInsert
    - ginRedoUpdateMetapage
    - MemoryContextReset
    - ginRedoSplit
    - ginRedoVacuumDataLeafPage
    - XLogRecGetInfo
    - ginRedoDeletePage
    - ginRedoDeleteListPages
    - elog
    - ginRedoVacuumPage
    - 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:777,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 774
    functionDepth: 1
    functionLinenumber: 774
    functionLinenumberEnd: 780
    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:785,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 782
    functionDepth: 1
    functionLinenumber: 782
    functionLinenumberEnd: 787
    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:799,1
    - Dst: GinPageGetOpaque
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:800,1
    - Dst: mask_page_hint_bits
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:802,1
    - Dst: mask_page_content
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:810,1
    - Dst: mask_unused_space
      Src: /src/postgres/src/backend/access/gin/ginxlog.c:812,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - pagedata
    - blkno
    argTypes:
    - char*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 813
      start: 792
    functionDepth: 1
    functionLinenumber: 792
    functionLinenumberEnd: 813
    functionName: gin_mask
    functionSourceFile: /src/postgres/src/backend/access/gin/ginxlog.c
    functionUses: 0
    functionsReached:
    - GinPageGetOpaque
    - mask_page_content
    - mask_page_lsn_and_checksum
    - mask_unused_space
    - mask_page_hint_bits
    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:
    - UInt16GetDatum
    - GinGetPosting
    - IndexTupleHasNulls
    - RelationGetRelationName
    - IndexTupleSize
    - pfree
    - Max
    - memcpy
    - errmsg
    - GinSetNullCategory
    - index_form_tuple
    - repalloc
    - SHORTALIGN
    - GinCategoryOffset
    - Assert
    - memset
    - GinSetNPosting
    - GinSetPostingOffset
    - ereport
    - errcode
    - MAXALIGN
    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
      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:
    - GinGetPosting
    - ginPostingListDecode
    - GinItupIsCompressed
    - GinGetNPosting
    - elog
    - memcpy
    - palloc
    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:
    - GinSetDownlink
    - IndexTupleSize
    - GinPageIsLeaf
    - memcpy
    - palloc
    - GinIsPostingTree
    - GinGetPostingOffset
    - MAXALIGN
    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:
    - PageGetItem
    - PageGetMaxOffsetNumber
    - 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:
    - ginCompareAttEntries
    - gintuple_get_key
    - getRightMostTuple
    - GinPageRightMost
    - gintuple_get_attrnum
    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:
    - ginCompareAttEntries
    - Assert
    - PageGetItemId
    - gintuple_get_key
    - GinGetDownlink
    - GinBtree::getLeftMostChild
    - GinPageRightMost
    - gintuple_get_attrnum
    - GinPageIsLeaf
    - GinPageIsData
    - BufferGetPage
    - PageGetItem
    - PageGetMaxOffsetNumber
    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:
    - ginCompareAttEntries
    - Assert
    - PageGetItemId
    - gintuple_get_key
    - gintuple_get_attrnum
    - GinPageIsLeaf
    - GinPageIsData
    - BufferGetPage
    - PageGetItem
    - PageGetMaxOffsetNumber
    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
    - PageGetItemId
    - GinGetDownlink
    - GinPageIsLeaf
    - GinPageIsData
    - PageGetItem
    - PageGetMaxOffsetNumber
    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
    - PageGetItemId
    - GinGetDownlink
    - GinPageIsLeaf
    - GinPageIsData
    - PageGetItem
    - PageGetMaxOffsetNumber
    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
    - IndexTupleSize
    - PageGetFreeSpace
    - BufferGetPage
    - PageGetItem
    - GinPageIsData
    - MAXALIGN
    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
    - PageIndexTupleDelete
    - PageGetItemId
    - GinSetDownlink
    - GinPageIsLeaf
    - 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:
    - MarkBufferDirty
    - RelationGetRelationName
    - XLogRegisterBufData
    - PageAddItem
    - entryPreparePage
    - elog
    - XLogRegisterBuffer
    - BufferGetPage
    - IndexTupleSize
    - RelationNeedsWAL
    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:
    - PageGetItemId
    - RelationGetRelationName
    - PageGetTempPageCopy
    - memcpy
    - PageGetItem
    - PageGetPageSize
    - PageAddItem
    - entryPreparePage
    - GinPageGetOpaque
    - elog
    - GinInitPage
    - BufferGetPage
    - IndexTupleSize
    - PageGetMaxOffsetNumber
    - MAXALIGN
    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
      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:
    - BufferGetBlockNumber
    - getRightMostTuple
    - GinFormInteriorTuple
    - BufferGetPage
    - palloc
    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:
    - pfree
    - PageAddItem
    - getRightMostTuple
    - GinFormInteriorTuple
    - elog
    - 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_kind
      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_kind
    - 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
    - Dst: errdetail_relkind_not_supported
      Src: /src/postgres/src/backend/access/sequence/sequence.c:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - r
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 78
    functionName: validate_relation_kind
    functionSourceFile: /src/postgres/src/backend/access/sequence/sequence.c
    functionUses: 3
    functionsReached:
    - errmsg
    - errdetail_relkind_not_supported
    - ereport
    - RelationGetRelationName
    - errcode
    linkageType: ''
    returnType: void
    signature: void validate_relation_kind(Relation r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - relation
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 73
    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: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 90
    functionName: heapam_index_fetch_begin
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - palloc0
    linkageType: ''
    returnType: IndexFetchTableData
    signature: 'IndexFetchTableData *

      heapam_index_fetch_begin(Relation rel)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:97,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:99,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexFetchTableData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 102
    functionName: heapam_index_fetch_reset
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - BufferIsValid
    - ReleaseBuffer
    linkageType: ''
    returnType: void
    signature: void heapam_index_fetch_reset(IndexFetchTableData *scan)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: heapam_index_fetch_reset
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:109,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexFetchTableData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 104
    functionDepth: 3
    functionLinenumber: 104
    functionLinenumberEnd: 112
    functionName: heapam_index_fetch_end
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - pfree
    - heapam_index_fetch_reset
    linkageType: ''
    returnType: void
    signature: void heapam_index_fetch_end(IndexFetchTableData *scan)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:125,1
    - Dst: TTS_IS_BUFFERTUPLE
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:125,1
    - Dst: ReleaseAndReadBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:133,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:135,1
    - Dst: heap_page_prune_opt
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:141,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:145,1
    - Dst: heap_hot_search_buffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:146,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:154,1
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:162,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:164,1
    - Dst: ExecStoreBufferHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:165,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 6
    argNames:
    - scan
    - tid
    - snapshot
    - slot
    - call_again
    - all_dead
    argTypes:
    - struct IndexFetchTableData*
    - ItemPointer
    - Snapshot
    - TupleTableSlot*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 114
    functionDepth: 3
    functionLinenumber: 114
    functionLinenumberEnd: 174
    functionName: heapam_index_fetch_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - IsMVCCSnapshot
    - Assert
    - RelationGetRelid
    - LockBuffer
    - heap_page_prune_opt
    - ExecStoreBufferHeapTuple
    - TTS_IS_BUFFERTUPLE
    - heap_hot_search_buffer
    - ReleaseAndReadBuffer
    - ItemPointerGetBlockNumber
    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 *call_again, bool *all_dead)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:191,1
    - Dst: TTS_IS_BUFFERTUPLE
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:191,1
    - Dst: heap_fetch
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:194,1
    - Dst: ExecStorePinnedBufferHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:197,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - relation
    - tid
    - snapshot
    - slot
    argTypes:
    - Relation
    - ItemPointer
    - Snapshot
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 204
    functionName: heapam_fetch_row_version
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExecStorePinnedBufferHeapTuple
    - RelationGetRelid
    - heap_fetch
    - TTS_IS_BUFFERTUPLE
    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:211,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:212,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - scan
    - tid
    argTypes:
    - TableScanDesc
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 206
    functionDepth: 3
    functionLinenumber: 206
    functionLinenumberEnd: 213
    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:222,1
    - Dst: TTS_IS_BUFFERTUPLE
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:222,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:223,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:223,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:229,1
    - Dst: HeapTupleSatisfiesVisibility
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:230,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - slot
    - snapshot
    argTypes:
    - Relation
    - TupleTableSlot*
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 215
    functionDepth: 2
    functionLinenumber: 215
    functionLinenumberEnd: 235
    functionName: heapam_tuple_satisfies_snapshot
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - Assert
    - BufferIsValid
    - LockBuffer
    - TTS_IS_BUFFERTUPLE
    - HeapTupleSatisfiesVisibility
    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:248,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:251,1
    - Dst: heap_insert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:255,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:256,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:259,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - relation
    - slot
    - cid
    - options
    - bistate
    argTypes:
    - Relation
    - TupleTableSlot*
    - CommandId
    - int
    - BulkInsertState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 243
    functionDepth: 2
    functionLinenumber: 243
    functionLinenumberEnd: 260
    functionName: heapam_tuple_insert
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - pfree
    - ItemPointerCopy
    - RelationGetRelid
    - heap_insert
    - ExecFetchSlotHeapTuple
    linkageType: ''
    returnType: void
    signature: "void heapam_tuple_insert(Relation relation, TupleTableSlot *slot,
      CommandId cid,\n\t\t\t\t\tint options, BulkInsertState bistate)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecFetchSlotHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:268,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:271,1
    - Dst: HeapTupleHeaderSetSpeculativeToken
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:274,1
    - Dst: heap_insert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:278,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:279,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 6
    argNames:
    - relation
    - slot
    - cid
    - options
    - bistate
    - specToken
    argTypes:
    - Relation
    - TupleTableSlot*
    - CommandId
    - int
    - BulkInsertState
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 262
    functionDepth: 2
    functionLinenumber: 262
    functionLinenumberEnd: 283
    functionName: heapam_tuple_insert_speculative
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - pfree
    - ItemPointerCopy
    - RelationGetRelid
    - HeapTupleHeaderSetSpeculativeToken
    - heap_insert
    - ExecFetchSlotHeapTuple
    linkageType: ''
    returnType: void
    signature: "void heapam_tuple_insert_speculative(Relation relation, TupleTableSlot
      *slot,\n\t\t\t\t\t\t\t\tCommandId cid, int options,\n\t\t\t\t\t\t\t\tBulkInsertState
      bistate, uint32 specToken)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ExecFetchSlotHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:290,1
    - Dst: heap_finish_speculative
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:294,1
    - Dst: heap_abort_speculative
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:296,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:299,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - relation
    - slot
    - specToken
    - succeeded
    argTypes:
    - Relation
    - TupleTableSlot*
    - uint32
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 285
    functionDepth: 1
    functionLinenumber: 285
    functionLinenumberEnd: 300
    functionName: heapam_tuple_complete_speculative
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - pfree
    - heap_finish_speculative
    - heap_abort_speculative
    - ExecFetchSlotHeapTuple
    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:312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 8
    argNames:
    - relation
    - tid
    - cid
    - snapshot
    - crosscheck
    - wait
    - tmfd
    - changingPart
    argTypes:
    - Relation
    - ItemPointer
    - CommandId
    - Snapshot
    - Snapshot
    - bool
    - TM_FailureData*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 313
    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\tSnapshot snapshot, Snapshot crosscheck, bool wait,\n\t\t\t\t\tTM_FailureData
      *tmfd, bool changingPart)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ExecFetchSlotHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:323,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:327,1
    - Dst: heap_update
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:330,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:332,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:346,1
    - Dst: HeapTupleIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:349,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:350,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:352,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:356,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 10
    argNames:
    - relation
    - otid
    - slot
    - cid
    - snapshot
    - crosscheck
    - wait
    - tmfd
    - lockmode
    - update_indexes
    argTypes:
    - Relation
    - ItemPointer
    - TupleTableSlot*
    - CommandId
    - Snapshot
    - Snapshot
    - bool
    - TM_FailureData*
    - LockTupleMode*
    - TU_UpdateIndexes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 316
    functionDepth: 2
    functionLinenumber: 316
    functionLinenumberEnd: 359
    functionName: heapam_tuple_update
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - ItemPointerCopy
    - RelationGetRelid
    - heap_update
    - ExecFetchSlotHeapTuple
    - HeapTupleIsHeapOnly
    linkageType: ''
    returnType: TM_Result
    signature: "TM_Result heapam_tuple_update(Relation relation, ItemPointer otid,
      TupleTableSlot *slot,\n\t\t\t\t\tCommandId cid, Snapshot 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:376,1
    - Dst: TTS_IS_BUFFERTUPLE
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:376,1
    - Dst: heap_lock_tuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:380,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:387,1
    - Dst: HeapTupleHeaderIsSpeculative
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:387,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:389,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:391,1
    - Dst: InitDirtySnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:409,1
    - Dst: ItemPointerIndicatesMovedPartitions
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:412,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:413,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:414,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:415,1
    - Dst: heap_fetch
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:418,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:430,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:430,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:433,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:438,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:439,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:440,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:441,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:443,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:444,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:445,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:451,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:453,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:457,1
    - Dst: ConditionalXactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:462,1
    - Dst: ConditionalXactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:467,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:468,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:469,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:470,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:471,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:489,1
    - Dst: HeapTupleHeaderGetCmin
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:490,1
    - Dst: HeapTupleHeaderGetCmin
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:498,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:499,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:506,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:517,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:517,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:524,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:524,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:527,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:545,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:548,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:555,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:556,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:567,1
    - Dst: ExecStorePinnedBufferHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:571,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: 574
      start: 361
    functionDepth: 4
    functionLinenumber: 361
    functionLinenumberEnd: 574
    functionName: heapam_tuple_lock
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - ConditionalXactLockTableWait
    - ExecStorePinnedBufferHeapTuple
    - ReleaseBuffer
    - XactLockTableWait
    - heap_lock_tuple
    - HeapTupleHeaderIsSpeculative
    - ItemPointerIndicatesMovedPartitions
    - RelationGetRelationName
    - RelationGetRelid
    - ItemPointerGetOffsetNumber
    - InitDirtySnapshot
    - HeapTupleHeaderGetXmin
    - HeapTupleHeaderGetCmin
    - errmsg
    - BufferIsValid
    - TransactionIdIsValid
    - heap_fetch
    - TTS_IS_BUFFERTUPLE
    - ItemPointerEquals
    - TransactionIdIsCurrentTransactionId
    - TransactionIdEquals
    - Assert
    - HeapTupleHeaderGetUpdateXid
    - errmsg_internal
    - ereport
    - ItemPointerGetBlockNumber
    - errcode
    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:606,1
    - Dst: RelationCreateStorage
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:608,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:616,1
    - Dst: smgrcreate
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:618,1
    - Dst: log_smgrcreate
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:619,1
    - Dst: smgrclose
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:622,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: 623
      start: 582
    functionDepth: 1
    functionLinenumber: 582
    functionLinenumberEnd: 623
    functionName: heapam_relation_set_new_filelocator
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - smgrcreate
    - Assert
    - log_smgrcreate
    - GetOldestMultiXactId
    - smgrclose
    - RelationCreateStorage
    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:628,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 625
    functionDepth: 1
    functionLinenumber: 625
    functionLinenumberEnd: 629
    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:642,1
    - Dst: RelationCreateStorage
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:651,1
    - Dst: RelationCopyStorage
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:654,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:654,1
    - Dst: smgrexists
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:661,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:661,1
    - Dst: smgrcreate
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:663,1
    - Dst: RelationIsPermanent
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:669,1
    - Dst: log_smgrcreate
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:672,1
    - Dst: RelationCopyStorage
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:673,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:673,1
    - Dst: RelationDropStorage
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:680,1
    - Dst: smgrclose
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:681,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - rel
    - newrlocator
    argTypes:
    - Relation
    - RelFileLocator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 631
    functionDepth: 2
    functionLinenumber: 631
    functionLinenumberEnd: 682
    functionName: heapam_relation_copy_data
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - FlushRelationBuffers
    - smgrcreate
    - RelationCopyStorage
    - RelationIsPermanent
    - RelationDropStorage
    - RelationGetSmgr
    - log_smgrcreate
    - smgrexists
    - smgrclose
    - RelationCreateStorage
    linkageType: ''
    returnType: void
    signature: void heapam_relation_copy_data(Relation rel, const RelFileLocator *newrlocator)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:700,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:701,1
    - Dst: IsSystemRelation
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:710,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:716,1
    - Dst: RelationGetTargetBlock
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:716,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:720,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:721,1
    - Dst: begin_heap_rewrite
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:724,1
    - Dst: tuplesort_begin_cluster
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:730,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:751,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:752,1
    - Dst: index_beginscan
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:756,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:757,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:762,1
    - Dst: table_beginscan
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:765,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:770,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:774,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:789,1
    - Dst: index_getnext_slot
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:793,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:798,1
    - Dst: table_scan_getnextslot
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:802,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:812,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:828,1
    - Dst: ExecFetchSlotHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:837,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:840,1
    - Dst: HeapTupleSatisfiesVacuum
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:842,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:866,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:866,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:867,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:868,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:878,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:878,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:879,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:880,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:886,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:891,1
    - Dst: rewrite_heap_dead_tuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:897,1
    - Dst: tuplesort_putheaptuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:909,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:915,1
    - Dst: reform_and_rewrite_tuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:926,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:935,1
    - Dst: index_endscan
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:940,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:942,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:944,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:955,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:958,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:961,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:968,1
    - Dst: tuplesort_getheaptuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:970,1
    - Dst: reform_and_rewrite_tuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:975,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:980,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:984,1
    - Dst: end_heap_rewrite
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:988,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:991,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:992,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 116
    argCount: 10
    argNames:
    - OldHeap
    - NewHeap
    - OldIndex
    - use_sort
    - OldestXmin
    - xid_cutoff
    - multi_cutoff
    - num_tuples
    - tups_vacuumed
    - tups_recently_dead
    argTypes:
    - Relation
    - Relation
    - Relation
    - bool
    - TransactionId
    - TransactionId*
    - MultiXactId*
    - double*
    - double*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 684
    functionDepth: 4
    functionLinenumber: 684
    functionLinenumberEnd: 993
    functionName: heapam_relation_copy_for_cluster
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - end_heap_rewrite
    - table_slot_create
    - CHECK_FOR_INTERRUPTS
    - table_scan_getnextslot
    - LockBuffer
    - RelationGetRelationName
    - reform_and_rewrite_tuple
    - table_endscan
    - pfree
    - RelationGetTargetBlock
    - RelationGetRelid
    - index_getnext_slot
    - HeapTupleHeaderGetXmin
    - tuplesort_end
    - tuplesort_begin_cluster
    - ExecDropSingleTupleTableSlot
    - pgstat_progress_update_multi_param
    - rewrite_heap_dead_tuple
    - index_endscan
    - index_rescan
    - elog
    - ExecFetchSlotHeapTuple
    - palloc
    - index_beginscan
    - TransactionIdIsCurrentTransactionId
    - tuplesort_putheaptuple
    - Assert
    - table_beginscan
    - HeapTupleHeaderGetUpdateXid
    - IsSystemRelation
    - pgstat_progress_update_param
    - RelationGetDescr
    - HeapTupleSatisfiesVacuum
    - begin_heap_rewrite
    - tuplesort_performsort
    - tuplesort_getheaptuple
    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
      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:1017,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1018,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1021,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1023,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - scan
    - stream
    argTypes:
    - TableScanDesc
    - ReadStream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 1004
    functionDepth: 2
    functionLinenumber: 1004
    functionLinenumberEnd: 1026
    functionName: heapam_scan_analyze_next_block
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - LockBuffer
    - BufferIsValid
    - read_stream_next_buffer
    - BufferGetBlockNumber
    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:1038,1
    - Dst: TTS_IS_BUFFERTUPLE
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1038,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1041,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1042,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1051,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1059,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1061,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1066,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1068,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1069,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1070,1
    - Dst: HeapTupleSatisfiesVacuum
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1072,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1106,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1106,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1137,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1137,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1147,1
    - Dst: ExecStoreBufferHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1153,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1162,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1166,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 52
    argCount: 5
    argNames:
    - scan
    - OldestXmin
    - liverows
    - deadrows
    - slot
    argTypes:
    - TableScanDesc
    - TransactionId
    - double*
    - double*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1169
      start: 1028
    functionDepth: 4
    functionLinenumber: 1028
    functionLinenumberEnd: 1169
    functionName: heapam_scan_analyze_next_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - ItemPointerSet
    - ItemIdIsNormal
    - RelationGetRelid
    - ExecClearTuple
    - HeapTupleHeaderGetXmin
    - PageGetItem
    - ItemIdIsDead
    - PageGetItemId
    - TTS_IS_BUFFERTUPLE
    - elog
    - BufferGetPage
    - TransactionIdIsCurrentTransactionId
    - UnlockReleaseBuffer
    - PageGetMaxOffsetNumber
    - Assert
    - HeapTupleHeaderGetUpdateXid
    - ExecStoreBufferHeapTuple
    - HeapTupleSatisfiesVacuum
    - ItemIdGetLength
    linkageType: ''
    returnType: bool
    signature: "bool heapam_scan_analyze_next_tuple(TableScanDesc scan, TransactionId
      OldestXmin,\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:1205,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1205,1
    - Dst: IsSystemRelation
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1208,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1218,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1224,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1225,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1226,1
    - Dst: ExecPrepareQual
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1232,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1244,1
    - Dst: GetOldestNonRemovableTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1245,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1255,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1257,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1257,1
    - Dst: table_beginscan_strat
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1263,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1279,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1279,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1280,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1292,1
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1292,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1293,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1293,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1294,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1295,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1312,1
    - Dst: heap_setscanlimits
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1318,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1322,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1323,1
    - Dst: heap_getnext
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1331,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1335,1
    - Dst: heapam_scan_get_blocks_done
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1340,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1344,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1383,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1385,1
    - Dst: heap_get_root_tuples
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1386,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1387,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1406,1
    - Dst: HeapTupleSatisfiesVacuum
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1415,1
    - Dst: HeapTupleIsHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1446,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1479,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1480,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1483,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1484,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1497,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1498,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1501,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1538,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1539,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1542,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1543,1
    - Dst: HeapTupleIsHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1560,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1565,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1566,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1569,1
    - Dst: HeapTupleIsHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1588,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1613,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1618,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1630,1
    - Dst: ExecStoreBufferHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1633,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1641,1
    - Dst: FormIndexDatum
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1650,1
    - Dst: HeapTupleIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1662,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1671,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1680,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1682,1
    - Dst: heap_get_root_tuples
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1683,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1684,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1687,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1688,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1689,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1690,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1691,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1693,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1695,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1695,1
    - Dst: callback
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1699,1
    - Dst: callback
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1705,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1725,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1729,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1733,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1735,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1737,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: 1744
      start: 1171
    functionDepth: 4
    functionLinenumber: 1171
    functionLinenumberEnd: 1744
    functionName: heapam_index_build_range_scan
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - ItemPointerSet
    - table_slot_create
    - CHECK_FOR_INTERRUPTS
    - HeapTupleIsHotUpdated
    - XactLockTableWait
    - LockBuffer
    - MemoryContextReset
    - heap_getnext
    - GetPerTupleExprContext
    - CreateExecutorState
    - GetOldestNonRemovableTransactionId
    - heap_setscanlimits
    - RelationGetRelationName
    - table_endscan
    - ExecPrepareQual
    - RegisterSnapshot
    - ItemPointerGetOffsetNumber
    - FormIndexDatum
    - GetTransactionSnapshot
    - OffsetNumberIsValid
    - heapam_scan_get_blocks_done
    - heap_get_root_tuples
    - ExecQual
    - HeapTupleIsHeapOnly
    - HeapTupleHeaderGetXmin
    - FreeExecutorState
    - ExecDropSingleTupleTableSlot
    - TransactionIdIsValid
    - UnregisterSnapshot
    - elog
    - OidIsValid
    - BufferGetPage
    - TransactionIdIsCurrentTransactionId
    - IsMVCCSnapshot
    - Assert
    - HeapTupleHeaderGetUpdateXid
    - IsSystemRelation
    - pgstat_progress_update_param
    - ExecStoreBufferHeapTuple
    - IsBootstrapProcessingMode
    - ereport
    - table_beginscan_strat
    - errmsg_internal
    - HeapTupleSatisfiesVacuum
    - callback
    - ItemPointerGetBlockNumber
    - errcode
    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:1775,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1775,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1781,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1782,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1783,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1783,1
    - Dst: ExecPrepareQual
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1790,1
    - Dst: table_beginscan_strat
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1798,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1806,1
    - Dst: heap_getnext
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1812,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1818,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1825,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1846,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1848,1
    - Dst: heap_get_root_tuples
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1849,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1850,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1852,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1859,1
    - Dst: HeapTupleIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1861,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1864,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1865,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1866,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1867,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1868,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1869,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1870,1
    - Dst: ItemPointerSetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1871,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1880,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1890,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1891,1
    - Dst: tuplesort_getdatum
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1894,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1897,1
    - Dst: itemptr_decode
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1900,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1900,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1915,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1918,1
    - Dst: ExecStoreHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1921,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1929,1
    - Dst: FormIndexDatum
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1938,1
    - Dst: index_insert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1962,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1976,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1978,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:1980,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: 1985
      start: 1746
    functionDepth: 4
    functionLinenumber: 1746
    functionLinenumberEnd: 1985
    functionName: heapam_index_validate_scan
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - ItemPointerSetOffsetNumber
    - CHECK_FOR_INTERRUPTS
    - MemoryContextReset
    - LockBuffer
    - heap_getnext
    - GetPerTupleExprContext
    - CreateExecutorState
    - RelationGetRelationName
    - itemptr_decode
    - table_endscan
    - ExecPrepareQual
    - ItemPointerGetOffsetNumber
    - FormIndexDatum
    - OffsetNumberIsValid
    - DatumGetInt64
    - heap_get_root_tuples
    - HeapTupleIsHeapOnly
    - ExecQual
    - ExecStoreHeapTuple
    - FreeExecutorState
    - ExecDropSingleTupleTableSlot
    - tuplesort_getdatum
    - OidIsValid
    - BufferGetPage
    - Assert
    - memset
    - pgstat_progress_update_param
    - RelationGetDescr
    - errmsg_internal
    - ereport
    - table_beginscan_strat
    - MakeSingleTupleTableSlot
    - index_insert
    - ItemPointerGetBlockNumber
    - ItemPointerCompare
    - errcode
    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: 2024
      start: 1993
    functionDepth: 0
    functionLinenumber: 1993
    functionLinenumberEnd: 2024
    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:2050,1
    - Dst: att_align_nominal
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2056,1
    - Dst: type_maximum_size
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2064,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2079,1
    - Dst: BITMAPLEN
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2080,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2081,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2083
      start: 2038
    functionDepth: 2
    functionLinenumber: 2038
    functionLinenumberEnd: 2083
    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
    - BITMAPLEN
    - MAXALIGN
    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: 2092
      start: 2088
    functionDepth: 0
    functionLinenumber: 2088
    functionLinenumberEnd: 2092
    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:2110,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: 2114
      start: 2105
    functionDepth: 1
    functionLinenumber: 2105
    functionLinenumberEnd: 2114
    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:2144,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2149,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2150,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2151,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2151,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2153,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2154,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2156,1
    - Dst: pgstat_count_heap_fetch
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2158,1
    - Dst: ExecStoreBufferHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2164,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: 2171
      start: 2122
    functionDepth: 4
    functionLinenumber: 2122
    functionLinenumberEnd: 2171
    functionName: heapam_scan_bitmap_next_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - Assert
    - PageGetItemId
    - ItemPointerSet
    - pgstat_count_heap_fetch
    - ExecStoreBufferHeapTuple
    - ItemIdGetLength
    - ItemIdIsNormal
    - BufferGetPage
    - PageGetItem
    - BitmapHeapScanNextBlock
    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:2185,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2187,1
    - Dst: TsmRoutine*::NextSampleBlock
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2192,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2199,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2204,1
    - Dst: ss_report_location
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2225,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2236,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2242,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2249,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2252,1
    - Dst: heap_prepare_pagescan
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2257,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 2
    argNames:
    - scan
    - scanstate
    argTypes:
    - TableScanDesc
    - SampleScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2261
      start: 2173
    functionDepth: 2
    functionLinenumber: 2173
    functionLinenumberEnd: 2261
    functionName: heapam_scan_sample_next_block
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - Assert
    - BufferIsValid
    - CHECK_FOR_INTERRUPTS
    - ReleaseBuffer
    - TsmRoutine*::NextSampleBlock
    - ss_report_location
    - ReadBufferExtended
    - BlockNumberIsValid
    - 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:2281,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2283,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2284,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2286,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2292,1
    - Dst: TsmRoutine*::NextSampleTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2295,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2299,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2306,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2307,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2310,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2311,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2312,1
    - Dst: SampleHeapTupleVisible
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2318,1
    - Dst: HeapCheckForSerializableConflictOut
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2323,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2332,1
    - Dst: ExecStoreBufferHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2334,1
    - Dst: pgstat_count_heap_getnext
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2337,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2348,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2350,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2355,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 3
    argNames:
    - scan
    - scanstate
    - slot
    argTypes:
    - TableScanDesc
    - SampleScanState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2356
      start: 2263
    functionDepth: 4
    functionLinenumber: 2263
    functionLinenumberEnd: 2356
    functionName: heapam_scan_sample_next_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 0
    functionsReached:
    - PageIsAllVisible
    - Assert
    - PageGetItemId
    - ItemPointerSet
    - CHECK_FOR_INTERRUPTS
    - pgstat_count_heap_getnext
    - LockBuffer
    - ExecStoreBufferHeapTuple
    - OffsetNumberIsValid
    - TsmRoutine*::NextSampleTuple
    - ItemIdGetLength
    - ItemIdIsNormal
    - SampleHeapTupleVisible
    - HeapCheckForSerializableConflictOut
    - ExecClearTuple
    - BufferGetPage
    - PageGetItem
    - PageGetMaxOffsetNumber
    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: 2
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2385,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2386,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2390,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2395,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2399,1
    - Dst: rewrite_heap_tuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2402,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2404,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 6
    argNames:
    - tuple
    - OldHeap
    - NewHeap
    - values
    - isnull
    - rwstate
    argTypes:
    - HeapTuple
    - Relation
    - Relation
    - Datum*
    - bool*
    - RewriteState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2405
      start: 2380
    functionDepth: 2
    functionLinenumber: 2380
    functionLinenumberEnd: 2405
    functionName: reform_and_rewrite_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 1
    functionsReached:
    - heap_form_tuple
    - heap_freetuple
    - heap_deform_tuple
    - RelationGetDescr
    - rewrite_heap_tuple
    - TupleDescCompactAttr
    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: 4
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleSatisfiesVisibility
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2449,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 4
    argNames:
    - scan
    - buffer
    - tuple
    - tupoffset
    argTypes:
    - TableScanDesc
    - Buffer
    - HeapTuple
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2452
      start: 2410
    functionDepth: 1
    functionLinenumber: 2410
    functionLinenumberEnd: 2452
    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:2475,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2476,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2482,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2484,1
    - Dst: read_stream_next_buffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2488,1
    - Dst: BufferIsInvalid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2491,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2497,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2501,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2501,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2502,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2502,1
    - Dst: tbm_extract_page_tuple
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2506,1
    - Dst: heap_page_prune_opt
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2520,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2527,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2542,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2550,1
    - Dst: heap_hot_search_buffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2551,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2553,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2562,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2563,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2566,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2572,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2573,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2575,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2576,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2578,1
    - Dst: HeapTupleSatisfiesVisibility
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2579,1
    - Dst: PredicateLockTID
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2583,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2584,1
    - Dst: HeapCheckForSerializableConflictOut
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2586,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2591,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_handler.c:2593,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: 2609
      start: 2459
    functionDepth: 4
    functionLinenumber: 2459
    functionLinenumberEnd: 2609
    functionName: BitmapHeapScanNextBlock
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_handler.c
    functionUses: 1
    functionsReached:
    - ItemPointerSet
    - ReleaseBuffer
    - LockBuffer
    - heap_page_prune_opt
    - PredicateLockTID
    - ItemIdIsNormal
    - HeapCheckForSerializableConflictOut
    - read_stream_next_buffer
    - BufferGetBlockNumber
    - ItemPointerGetOffsetNumber
    - OffsetNumberNext
    - BufferIsInvalid
    - tbm_extract_page_tuple
    - BlockNumberIsValid
    - PageGetItem
    - HeapTupleHeaderGetXmin
    - BufferIsValid
    - PageGetItemId
    - heap_hot_search_buffer
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - Assert
    - HeapTupleSatisfiesVisibility
    - 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: 2679
      start: 2675
    functionDepth: 0
    functionLinenumber: 2675
    functionLinenumberEnd: 2679
    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:2684,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2685
      start: 2681
    functionDepth: 1
    functionLinenumber: 2681
    functionLinenumberEnd: 2685
    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: 156
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 156
    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: 164
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 164
    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: 166
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 166
    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: 168
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 168
    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: 215
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 215
    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:225,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:229,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:232,1
    - Dst: HaveRegisteredOrActiveSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam.c:232,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 235
    functionName: AssertHasSnapshotForToast
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - Assert
    - IsNormalProcessingMode
    - OidIsValid
    - HaveRegisteredOrActiveSnapshot
    linkageType: ''
    returnType: void
    signature: void AssertHasSnapshotForToast(Relation rel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:253,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/heap/heapam.c:253,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:254,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/heap/heapam.c:256,1
    - Dst: table_block_parallelscan_startblock_init
      Src: /src/postgres/src/backend/access/heap/heapam.c:259,1
    - Dst: table_block_parallelscan_nextpage
      Src: /src/postgres/src/backend/access/heap/heapam.c:264,1
    - Dst: table_block_parallelscan_nextpage
      Src: /src/postgres/src/backend/access/heap/heapam.c:271,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: 277
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 277
    functionName: heap_scan_stream_read_next_parallel
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - Assert
    - table_block_parallelscan_startblock_init
    - table_block_parallelscan_nextpage
    - 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:291,1
    - Dst: heapgettup_initial_block
      Src: /src/postgres/src/backend/access/heap/heapam.c:293,1
    - Dst: heapgettup_advance_block
      Src: /src/postgres/src/backend/access/heap/heapam.c:297,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: 302
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 302
    functionName: heap_scan_stream_read_next_serial
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - heapgettup_advance_block
    - unlikely
    - heapgettup_initial_block
    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:320,1
    - Dst: tbm_iterate
      Src: /src/postgres/src/backend/access/heap/heapam.c:323,1
    - Dst: IsolationIsSerializable
      Src: /src/postgres/src/backend/access/heap/heapam.c:334,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:342,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: 343
      start: 309
    functionDepth: 1
    functionLinenumber: 309
    functionLinenumberEnd: 343
    functionName: bitmapheap_stream_read_next
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - IsolationIsSerializable
    - Assert
    - tbm_iterate
    - CHECK_FOR_INTERRUPTS
    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: 13
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/heap/heapam.c:373,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/backend/access/heap/heapam.c:387,1
    - Dst: GetAccessStrategy
      Src: /src/postgres/src/backend/access/heap/heapam.c:400,1
    - Dst: FreeAccessStrategy
      Src: /src/postgres/src/backend/access/heap/heapam.c:405,1
    - Dst: ss_get_location
      Src: /src/postgres/src/backend/access/heap/heapam.c:432,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/heap/heapam.c:443,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam.c:462,1
    - Dst: pgstat_count_heap_scan
      Src: /src/postgres/src/backend/access/heap/heapam.c:470,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 50
    argCount: 3
    argNames:
    - scan
    - key
    - keep_startblock
    argTypes:
    - HeapScanDesc
    - ScanKey
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 349
    functionDepth: 2
    functionLinenumber: 349
    functionLinenumberEnd: 471
    functionName: initscan
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - FreeAccessStrategy
    - GetAccessStrategy
    - ss_get_location
    - RelationUsesLocalBuffers
    - pgstat_count_heap_scan
    - ItemPointerSetInvalid
    - memcpy
    - RelationGetNumberOfBlocks
    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:484,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:486,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:489,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - sscan
    - startBlk
    - numBlks
    argTypes:
    - TableScanDesc
    - BlockNumber
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 479
    functionDepth: 1
    functionLinenumber: 479
    functionLinenumberEnd: 493
    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: 5
    BranchProfiles: []
    Callsites:
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:512,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:516,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:519,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam.c:520,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:521,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam.c:522,1
    - Dst: HeapTupleSatisfiesVisibility
      Src: /src/postgres/src/backend/access/heap/heapam.c:527,1
    - Dst: HeapCheckForSerializableConflictOut
      Src: /src/postgres/src/backend/access/heap/heapam.c:530,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:540,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    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: 543
      start: 500
    functionDepth: 2
    functionLinenumber: 500
    functionLinenumberEnd: 543
    functionName: page_collect_tuples
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - Assert
    - PageGetItemId
    - ItemPointerSet
    - RelationGetRelid
    - HeapTupleSatisfiesVisibility
    - ItemIdGetLength
    - ItemIdIsNormal
    - HeapCheckForSerializableConflictOut
    - PageGetItem
    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:563,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:563,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:566,1
    - Dst: heap_page_prune_opt
      Src: /src/postgres/src/backend/access/heap/heapam.c:572,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:579,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:581,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:582,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:604,1
    - Dst: CheckForSerializableConflictOutNeeded
      Src: /src/postgres/src/backend/access/heap/heapam.c:606,1
    - Dst: likely
      Src: /src/postgres/src/backend/access/heap/heapam.c:614,1
    - Dst: likely
      Src: /src/postgres/src/backend/access/heap/heapam.c:616,1
    - Dst: page_collect_tuples
      Src: /src/postgres/src/backend/access/heap/heapam.c:617,1
    - Dst: page_collect_tuples
      Src: /src/postgres/src/backend/access/heap/heapam.c:620,1
    - Dst: likely
      Src: /src/postgres/src/backend/access/heap/heapam.c:625,1
    - Dst: page_collect_tuples
      Src: /src/postgres/src/backend/access/heap/heapam.c:626,1
    - Dst: page_collect_tuples
      Src: /src/postgres/src/backend/access/heap/heapam.c:629,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:633,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - sscan
    argTypes:
    - TableScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 551
    functionDepth: 4
    functionLinenumber: 551
    functionLinenumberEnd: 634
    functionName: heap_prepare_pagescan
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - PageIsAllVisible
    - Assert
    - BufferGetBlockNumber
    - likely
    - LockBuffer
    - heap_page_prune_opt
    - page_collect_tuples
    - CheckForSerializableConflictOutNeeded
    - BufferGetPage
    - PageGetMaxOffsetNumber
    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:645,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:648,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:650,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/heapam.c:659,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/heap/heapam.c:667,1
    - Dst: read_stream_reset
      Src: /src/postgres/src/backend/access/heap/heapam.c:670,1
    - Dst: read_stream_next_buffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:675,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:676,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:677,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - HeapScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 642
    functionDepth: 2
    functionLinenumber: 642
    functionLinenumberEnd: 678
    functionName: heap_fetch_next_buffer
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - Assert
    - BufferIsValid
    - CHECK_FOR_INTERRUPTS
    - BufferGetBlockNumber
    - ReleaseBuffer
    - unlikely
    - read_stream_reset
    - read_stream_next_buffer
    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:690,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:691,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/heap/heapam.c:697,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - HeapScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 723
      start: 687
    functionDepth: 1
    functionLinenumber: 687
    functionLinenumberEnd: 723
    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:740,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:741,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:741,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:744,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:746,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/heap/heapam.c:748,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - scan
    - dir
    - linesleft
    - lineoff
    argTypes:
    - HeapScanDesc
    - ScanDirection
    - int*
    - OffsetNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 734
    functionDepth: 4
    functionLinenumber: 734
    functionLinenumberEnd: 755
    functionName: heapgettup_start_page
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - Assert
    - BufferIsValid
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - ScanDirectionIsForward
    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:771,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:772,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:772,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:775,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/heap/heapam.c:777,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/heap/heapam.c:779,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:780,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/heap/heapam.c:789,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:789,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/heap/heapam.c:789,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 4
    argNames:
    - scan
    - dir
    - linesleft
    - lineoff
    argTypes:
    - HeapScanDesc
    - ScanDirection
    - int*
    - OffsetNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 765
    functionDepth: 4
    functionLinenumber: 765
    functionLinenumberEnd: 795
    functionName: heapgettup_continue_page
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - Min
    - Assert
    - BufferIsValid
    - OffsetNumberPrev
    - OffsetNumberNext
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - ScanDirectionIsForward
    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:814,1
    - Dst: likely
      Src: /src/postgres/src/backend/access/heap/heapam.c:816,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/heap/heapam.c:816,1
    - Dst: ss_report_location
      Src: /src/postgres/src/backend/access/heap/heapam.c:837,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 3
    argNames:
    - scan
    - block
    - dir
    argTypes:
    - HeapScanDesc
    - BlockNumber
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 873
      start: 811
    functionDepth: 1
    functionLinenumber: 811
    functionLinenumberEnd: 873
    functionName: heapgettup_advance_block
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - ss_report_location
    - Assert
    - 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:906,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:909,1
    - Dst: heapgettup_continue_page
      Src: /src/postgres/src/backend/access/heap/heapam.c:910,1
    - Dst: heap_fetch_next_buffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:920,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:923,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:926,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:926,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:928,1
    - Dst: heapgettup_start_page
      Src: /src/postgres/src/backend/access/heap/heapam.c:929,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:942,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:944,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:947,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam.c:948,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam.c:949,1
    - Dst: HeapTupleSatisfiesVisibility
      Src: /src/postgres/src/backend/access/heap/heapam.c:951,1
    - Dst: HeapCheckForSerializableConflictOut
      Src: /src/postgres/src/backend/access/heap/heapam.c:955,1
    - Dst: HeapKeyTest
      Src: /src/postgres/src/backend/access/heap/heapam.c:965,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/heap/heapam.c:965,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:969,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:978,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:982,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:983,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 4
    argNames:
    - scan
    - dir
    - nkeys
    - key
    argTypes:
    - HeapScanDesc
    - ScanDirection
    - int
    - ScanKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 990
      start: 895
    functionDepth: 5
    functionLinenumber: 895
    functionLinenumberEnd: 990
    functionName: heapgettup
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - Assert
    - BufferIsValid
    - PageGetItemId
    - likely
    - BufferGetBlockNumber
    - ItemPointerSet
    - ReleaseBuffer
    - LockBuffer
    - RelationGetDescr
    - heapgettup_continue_page
    - HeapKeyTest
    - HeapTupleSatisfiesVisibility
    - ItemIdGetLength
    - heapgettup_start_page
    - ItemIdIsNormal
    - HeapCheckForSerializableConflictOut
    - heap_fetch_next_buffer
    - PageGetItem
    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:1016,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:1019,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/heap/heapam.c:1022,1
    - Dst: heap_fetch_next_buffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1037,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1040,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:1043,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:1043,1
    - Dst: heap_prepare_pagescan
      Src: /src/postgres/src/backend/access/heap/heapam.c:1046,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:1047,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/heap/heapam.c:1049,1
    - Dst: ItemPointerSetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:1052,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:1062,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:1064,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:1065,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:1065,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:1067,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam.c:1068,1
    - Dst: ItemPointerSetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:1069,1
    - Dst: HeapKeyTest
      Src: /src/postgres/src/backend/access/heap/heapam.c:1073,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/heap/heapam.c:1073,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1083,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1084,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 43
    argCount: 4
    argNames:
    - scan
    - dir
    - nkeys
    - key
    argTypes:
    - HeapScanDesc
    - ScanDirection
    - int
    - ScanKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 1005
    functionDepth: 5
    functionLinenumber: 1005
    functionLinenumberEnd: 1090
    functionName: heapgettup_pagemode
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - Assert
    - BufferIsValid
    - PageGetItemId
    - likely
    - BufferGetBlockNumber
    - ItemPointerSetOffsetNumber
    - heap_prepare_pagescan
    - ReleaseBuffer
    - RelationGetDescr
    - HeapKeyTest
    - ItemIdGetLength
    - ItemIdIsNormal
    - ItemPointerSetBlockNumber
    - heap_fetch_next_buffer
    - BufferGetPage
    - PageGetItem
    - ScanDirectionIsForward
    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: 9
    BranchProfiles: []
    Callsites:
    - Dst: RelationIncrementReferenceCount
      Src: /src/postgres/src/backend/access/heap/heapam.c:1114,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/heap/heapam.c:1121,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/heap/heapam.c:1130,1
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam.c:1143,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:1166,1
    - Dst: PredicateLockRelation
      Src: /src/postgres/src/backend/access/heap/heapam.c:1167,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1171,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/heap/heapam.c:1178,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/heap/heapam.c:1187,1
    - Dst: initscan
      Src: /src/postgres/src/backend/access/heap/heapam.c:1191,1
    - Dst: read_stream_begin_relation
      Src: /src/postgres/src/backend/access/heap/heapam.c:1217,1
    - Dst: read_stream_begin_relation
      Src: /src/postgres/src/backend/access/heap/heapam.c:1228,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 6
    argNames:
    - relation
    - snapshot
    - nkeys
    - key
    - parallel_scan
    - flags
    argTypes:
    - Relation
    - Snapshot
    - int
    - ScanKey
    - ParallelTableScanDesc
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1240
      start: 1099
    functionDepth: 3
    functionLinenumber: 1099
    functionLinenumberEnd: 1240
    functionName: heap_beginscan
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - read_stream_begin_relation
    - IsMVCCSnapshot
    - Assert
    - RelationGetRelid
    - initscan
    - RelationIncrementReferenceCount
    - PredicateLockRelation
    - palloc
    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: 7
    BranchProfiles: []
    Callsites:
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam.c:1261,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1270,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1272,1
    - Dst: read_stream_reset
      Src: /src/postgres/src/backend/access/heap/heapam.c:1287,1
    - Dst: initscan
      Src: /src/postgres/src/backend/access/heap/heapam.c:1292,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    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: 1293
      start: 1242
    functionDepth: 3
    functionLinenumber: 1242
    functionLinenumberEnd: 1293
    functionName: heap_rescan
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - IsMVCCSnapshot
    - BufferIsValid
    - initscan
    - ReleaseBuffer
    - 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: 7
    BranchProfiles: []
    Callsites:
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1305,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1306,1
    - Dst: read_stream_end
      Src: /src/postgres/src/backend/access/heap/heapam.c:1312,1
    - Dst: RelationDecrementReferenceCount
      Src: /src/postgres/src/backend/access/heap/heapam.c:1317,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:1320,1
    - Dst: FreeAccessStrategy
      Src: /src/postgres/src/backend/access/heap/heapam.c:1323,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:1326,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam.c:1329,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:1331,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - sscan
    argTypes:
    - TableScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1332
      start: 1295
    functionDepth: 2
    functionLinenumber: 1295
    functionLinenumberEnd: 1332
    functionName: heap_endscan
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - pfree
    - FreeAccessStrategy
    - BufferIsValid
    - read_stream_end
    - ReleaseBuffer
    - RelationDecrementReferenceCount
    - UnregisterSnapshot
    linkageType: ''
    returnType: void
    signature: void heap_endscan(TableScanDesc sscan)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/heap/heapam.c:1346,1
    - Dst: GetHeapamTableAmRoutine
      Src: /src/postgres/src/backend/access/heap/heapam.c:1346,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:1347,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:1348,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:1349,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/heap/heapam.c:1358,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1358,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:1359,1
    - Dst: heapgettup_pagemode
      Src: /src/postgres/src/backend/access/heap/heapam.c:1364,1
    - Dst: heapgettup
      Src: /src/postgres/src/backend/access/heap/heapam.c:1367,1
    - Dst: pgstat_count_heap_getnext
      Src: /src/postgres/src/backend/access/heap/heapam.c:1378,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - sscan
    - direction
    argTypes:
    - TableScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1381
      start: 1334
    functionDepth: 6
    functionLinenumber: 1334
    functionLinenumberEnd: 1381
    functionName: heap_getnext
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 4
    functionsReached:
    - pgstat_count_heap_getnext
    - TransactionIdIsValid
    - errmsg_internal
    - ereport
    - heapgettup_pagemode
    - heapgettup
    - unlikely
    - elog
    - errcode
    - 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:1391,1
    - Dst: heapgettup
      Src: /src/postgres/src/backend/access/heap/heapam.c:1393,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:1397,1
    - Dst: pgstat_count_heap_getnext
      Src: /src/postgres/src/backend/access/heap/heapam.c:1406,1
    - Dst: ExecStoreBufferHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:1408,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - sscan
    - direction
    - slot
    argTypes:
    - TableScanDesc
    - ScanDirection
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1411
      start: 1383
    functionDepth: 6
    functionLinenumber: 1383
    functionLinenumberEnd: 1411
    functionName: heap_getnextslot
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - pgstat_count_heap_getnext
    - ExecStoreBufferHeapTuple
    - heapgettup_pagemode
    - heapgettup
    - ExecClearTuple
    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:1435,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam.c:1436,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/heap/heapam.c:1443,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/heap/heapam.c:1444,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/heap/heapam.c:1450,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/heap/heapam.c:1451,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/heap/heapam.c:1457,1
    - Dst: heap_setscanlimits
      Src: /src/postgres/src/backend/access/heap/heapam.c:1460,1
    - Dst: ItemPointerGetBlockNumberNoCheck
      Src: /src/postgres/src/backend/access/heap/heapam.c:1473,1
    - Dst: ItemPointerGetBlockNumberNoCheck
      Src: /src/postgres/src/backend/access/heap/heapam.c:1475,1
    - Dst: ItemPointerGetBlockNumberNoCheck
      Src: /src/postgres/src/backend/access/heap/heapam.c:1476,1
    - Dst: heap_setscanlimits
      Src: /src/postgres/src/backend/access/heap/heapam.c:1479,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/heap/heapam.c:1482,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/heap/heapam.c:1483,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - sscan
    - mintid
    - maxtid
    argTypes:
    - TableScanDesc
    - ItemPointer
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1484
      start: 1413
    functionDepth: 2
    functionLinenumber: 1413
    functionLinenumberEnd: 1484
    functionName: heap_set_tidrange
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - ItemPointerCopy
    - ItemPointerSet
    - 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:1498,1
    - Dst: heapgettup
      Src: /src/postgres/src/backend/access/heap/heapam.c:1500,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:1504,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/heap/heapam.c:1514,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:1516,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/access/heap/heapam.c:1523,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/heap/heapam.c:1533,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:1535,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/access/heap/heapam.c:1542,1
    - Dst: pgstat_count_heap_getnext
      Src: /src/postgres/src/backend/access/heap/heapam.c:1554,1
    - Dst: ExecStoreBufferHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:1556,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 3
    argNames:
    - sscan
    - direction
    - slot
    argTypes:
    - TableScanDesc
    - ScanDirection
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1558
      start: 1486
    functionDepth: 6
    functionLinenumber: 1486
    functionLinenumberEnd: 1558
    functionName: heap_getnextslot_tidrange
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - pgstat_count_heap_getnext
    - ExecStoreBufferHeapTuple
    - heapgettup_pagemode
    - heapgettup
    - ScanDirectionIsBackward
    - ExecClearTuple
    - ItemPointerCompare
    - ScanDirectionIsForward
    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:1610,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:1610,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1615,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:1616,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:1622,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:1623,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1625,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1626,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:1635,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:1640,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1642,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1643,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:1652,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam.c:1653,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1654,1
    - Dst: HeapTupleSatisfiesVisibility
      Src: /src/postgres/src/backend/access/heap/heapam.c:1659,1
    - Dst: PredicateLockTID
      Src: /src/postgres/src/backend/access/heap/heapam.c:1662,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:1663,1
    - Dst: HeapCheckForSerializableConflictOut
      Src: /src/postgres/src/backend/access/heap/heapam.c:1665,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1667,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1685,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 39
    argCount: 5
    argNames:
    - relation
    - snapshot
    - tuple
    - userbuf
    - keep_buf
    argTypes:
    - Relation
    - Snapshot
    - HeapTuple
    - Buffer*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1691
      start: 1593
    functionDepth: 4
    functionLinenumber: 1593
    functionLinenumberEnd: 1691
    functionName: heap_fetch
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 4
    functionsReached:
    - ReadBuffer
    - PageGetItemId
    - RelationGetRelid
    - ReleaseBuffer
    - ItemPointerGetOffsetNumber
    - LockBuffer
    - BufferGetPage
    - HeapTupleSatisfiesVisibility
    - ItemIdGetLength
    - PredicateLockTID
    - ItemIdIsNormal
    - HeapCheckForSerializableConflictOut
    - ItemPointerGetBlockNumber
    - PageGetItem
    - HeapTupleHeaderGetXmin
    - PageGetMaxOffsetNumber
    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: 14
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:1718,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:1731,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:1732,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:1737,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1737,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:1738,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:1738,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:1746,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:1749,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:1752,1
    - Dst: ItemIdIsRedirected
      Src: /src/postgres/src/backend/access/heap/heapam.c:1755,1
    - Dst: ItemIdGetRedirect
      Src: /src/postgres/src/backend/access/heap/heapam.c:1758,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:1772,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam.c:1773,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1774,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam.c:1775,1
    - Dst: HeapTupleIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/heapam.c:1780,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1787,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:1788,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:1789,1
    - Dst: HeapTupleSatisfiesVisibility
      Src: /src/postgres/src/backend/access/heap/heapam.c:1802,1
    - Dst: HeapCheckForSerializableConflictOut
      Src: /src/postgres/src/backend/access/heap/heapam.c:1803,1
    - Dst: ItemPointerSetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:1808,1
    - Dst: PredicateLockTID
      Src: /src/postgres/src/backend/access/heap/heapam.c:1809,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:1810,1
    - Dst: GlobalVisTestFor
      Src: /src/postgres/src/backend/access/heap/heapam.c:1829,1
    - Dst: HeapTupleIsSurelyDead
      Src: /src/postgres/src/backend/access/heap/heapam.c:1831,1
    - Dst: HeapTupleIsHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam.c:1839,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:1841,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:1841,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:1843,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1845,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: 1852
      start: 1713
    functionDepth: 4
    functionLinenumber: 1713
    functionLinenumberEnd: 1852
    functionName: heap_hot_search_buffer
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 2
    functionsReached:
    - ItemPointerSet
    - ItemPointerSetOffsetNumber
    - HeapTupleIsHotUpdated
    - GlobalVisTestFor
    - PredicateLockTID
    - ItemIdIsNormal
    - HeapCheckForSerializableConflictOut
    - BufferGetBlockNumber
    - RelationGetRelid
    - ItemPointerGetOffsetNumber
    - ItemIdGetRedirect
    - HeapTupleIsHeapOnly
    - HeapTupleIsSurelyDead
    - PageGetItem
    - HeapTupleHeaderGetXmin
    - PageGetItemId
    - ItemIdIsRedirected
    - TransactionIdIsValid
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - TransactionIdEquals
    - Assert
    - HeapTupleHeaderGetUpdateXid
    - HeapTupleSatisfiesVisibility
    - ItemIdGetLength
    - ItemPointerGetBlockNumber
    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: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:1879,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1879,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1904,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:1904,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1905,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:1906,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:1913,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:1914,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1916,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:1919,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:1920,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1922,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:1928,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam.c:1929,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1930,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1936,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:1937,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:1937,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1939,1
    - Dst: HeapTupleSatisfiesVisibility
      Src: /src/postgres/src/backend/access/heap/heapam.c:1947,1
    - Dst: HeapCheckForSerializableConflictOut
      Src: /src/postgres/src/backend/access/heap/heapam.c:1948,1
    - Dst: HeapTupleHeaderIsOnlyLocked
      Src: /src/postgres/src/backend/access/heap/heapam.c:1956,1
    - Dst: HeapTupleHeaderIndicatesMovedPartitions
      Src: /src/postgres/src/backend/access/heap/heapam.c:1957,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:1958,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1960,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam.c:1965,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:1966,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 38
    argCount: 2
    argNames:
    - sscan
    - tid
    argTypes:
    - TableScanDesc
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1968
      start: 1865
    functionDepth: 4
    functionLinenumber: 1865
    functionLinenumberEnd: 1968
    functionName: heap_get_latest_tid
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - LockBuffer
    - ItemIdIsNormal
    - HeapCheckForSerializableConflictOut
    - RelationGetRelid
    - ItemPointerGetOffsetNumber
    - HeapTupleHeaderIndicatesMovedPartitions
    - PageGetItem
    - HeapTupleHeaderGetXmin
    - ReadBuffer
    - PageGetItemId
    - TransactionIdIsValid
    - ItemPointerIsValid
    - ItemPointerEquals
    - BufferGetPage
    - UnlockReleaseBuffer
    - PageGetMaxOffsetNumber
    - TransactionIdEquals
    - Assert
    - HeapTupleHeaderGetUpdateXid
    - HeapTupleSatisfiesVisibility
    - ItemIdGetLength
    - ItemPointerGetBlockNumber
    - HeapTupleHeaderIsOnlyLocked
    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:1990,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:1990,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:1990,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:1991,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:1995,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam.c:1996,1
    - Dst: HeapTupleSetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam.c:1997,1
    - Dst: HeapTupleSetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam.c:2000,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - tuple
    - buffer
    - xid
    argTypes:
    - HeapTupleHeader
    - Buffer
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2003
      start: 1987
    functionDepth: 1
    functionLinenumber: 1987
    functionLinenumberEnd: 2003
    functionName: UpdateXmaxHintBits
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - TransactionIdEquals
    - Assert
    - HeapTupleSetHintBits
    - TransactionIdDidCommit
    - HeapTupleHeaderGetRawXmax
    - HEAP_XMAX_IS_LOCKED_ONLY
    linkageType: ''
    returnType: void
    signature: void UpdateXmaxHintBits(HeapTupleHeader tuple, Buffer buffer, TransactionId
      xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/access/heap/heapam.c:2014,1
    - Dst: GetAccessStrategy
      Src: /src/postgres/src/backend/access/heap/heapam.c:2015,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2021
      start: 2009
    functionDepth: 1
    functionLinenumber: 2009
    functionLinenumberEnd: 2021
    functionName: GetBulkInsertState
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - palloc
    - GetAccessStrategy
    linkageType: ''
    returnType: BulkInsertState
    signature: BulkInsertState GetBulkInsertState(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2030,1
    - Dst: FreeAccessStrategy
      Src: /src/postgres/src/backend/access/heap/heapam.c:2031,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:2032,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - bistate
    argTypes:
    - BulkInsertState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2033
      start: 2026
    functionDepth: 1
    functionLinenumber: 2026
    functionLinenumberEnd: 2033
    functionName: FreeBulkInsertState
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - FreeAccessStrategy
    - pfree
    - ReleaseBuffer
    linkageType: ''
    returnType: void
    signature: void FreeBulkInsertState(BulkInsertState bistate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2042,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - bistate
    argTypes:
    - BulkInsertState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2055
      start: 2038
    functionDepth: 1
    functionLinenumber: 2038
    functionLinenumberEnd: 2055
    functionName: ReleaseBulkInsertStatePin
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - ReleaseBuffer
    linkageType: ''
    returnType: void
    signature: void ReleaseBulkInsertStatePin(BulkInsertState bistate)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:2080,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2087,1
    - Dst: HeapTupleHeaderGetNatts
      Src: /src/postgres/src/backend/access/heap/heapam.c:2087,1
    - Dst: RelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/access/heap/heapam.c:2088,1
    - Dst: AssertHasSnapshotForToast
      Src: /src/postgres/src/backend/access/heap/heapam.c:2090,1
    - Dst: heap_prepare_insert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2098,1
    - Dst: RelationGetBufferForTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:2104,1
    - Dst: CheckForSerializableConflictIn
      Src: /src/postgres/src/backend/access/heap/heapam.c:2124,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:2127,1
    - Dst: RelationPutHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:2129,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:2132,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:2132,1
    - Dst: PageClearAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:2135,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:2135,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam.c:2136,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:2137,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam.c:2152,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/heapam.c:2155,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:2160,1
    - Dst: RelationIsAccessibleInLogicalDecoding
      Src: /src/postgres/src/backend/access/heap/heapam.c:2168,1
    - Dst: log_heap_new_cid
      Src: /src/postgres/src/backend/access/heap/heapam.c:2169,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:2176,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:2177,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:2183,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2189,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:2189,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:2189,1
    - Dst: RelationIsLogicallyLogged
      Src: /src/postgres/src/backend/access/heap/heapam.c:2196,1
    - Dst: IsToastRelation
      Src: /src/postgres/src/backend/access/heap/heapam.c:2202,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2206,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:2207,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2218,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/heapam.c:2219,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/heapam.c:2221,1
    - Dst: XLogSetRecordFlags
      Src: /src/postgres/src/backend/access/heap/heapam.c:2226,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2228,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam.c:2230,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:2233,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2235,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2237,1
    - Dst: CacheInvalidateHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:2245,1
    - Dst: pgstat_count_heap_insert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2248,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:2257,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 56
    argCount: 5
    argNames:
    - relation
    - tup
    - cid
    - options
    - bistate
    argTypes:
    - Relation
    - HeapTuple
    - CommandId
    - int
    - BulkInsertState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2259
      start: 2076
    functionDepth: 4
    functionLinenumber: 2076
    functionLinenumberEnd: 2259
    functionName: heap_insert
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 3
    functionsReached:
    - MarkBufferDirty
    - PageSetLSN
    - ReleaseBuffer
    - HeapTupleHeaderGetNatts
    - XLogRegisterData
    - heap_prepare_insert
    - START_CRIT_SECTION
    - RelationGetNumberOfAttributes
    - BufferGetBlockNumber
    - CacheInvalidateHeapTuple
    - ItemPointerGetOffsetNumber
    - heap_freetuple
    - GetCurrentTransactionId
    - RelationIsLogicallyLogged
    - PageClearAllVisible
    - log_heap_new_cid
    - pgstat_count_heap_insert
    - CheckForSerializableConflictIn
    - RelationNeedsWAL
    - PageIsAllVisible
    - visibilitymap_clear
    - XLogRegisterBufData
    - RelationGetBufferForTuple
    - IsToastRelation
    - RelationPutHeapTuple
    - XLogSetRecordFlags
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - Assert
    - AssertHasSnapshotForToast
    - XLogBeginInsert
    - XLogInsert
    - XLogRegisterBuffer
    - RelationIsAccessibleInLogicalDecoding
    - END_CRIT_SECTION
    - ItemPointerGetBlockNumber
    linkageType: ''
    returnType: void
    signature: "void heap_insert(Relation relation, HeapTuple tup, CommandId cid,\n\t\t\tint
      options, BulkInsertState bistate)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/access/heap/heapam.c:2277,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:2278,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:2279,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/heapam.c:2280,1
    - Dst: HeapTupleHeaderSetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:2285,1
    - Dst: HeapTupleHeaderSetXminFrozen
      Src: /src/postgres/src/backend/access/heap/heapam.c:2287,1
    - Dst: HeapTupleHeaderSetCmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:2289,1
    - Dst: HeapTupleHeaderSetXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:2290,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:2291,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2301,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/heap/heapam.c:2301,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/heap/heapam.c:2304,1
    - Dst: heap_toast_insert_or_update
      Src: /src/postgres/src/backend/access/heap/heapam.c:2305,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 5
    argNames:
    - relation
    - tup
    - xid
    - cid
    - options
    argTypes:
    - Relation
    - HeapTuple
    - TransactionId
    - CommandId
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2308
      start: 2267
    functionDepth: 2
    functionLinenumber: 2267
    functionLinenumberEnd: 2308
    functionName: heap_prepare_insert
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - errmsg
    - Assert
    - HeapTupleHeaderSetXmin
    - HeapTupleHeaderSetCmin
    - RelationGetRelid
    - heap_toast_insert_or_update
    - ereport
    - IsParallelWorker
    - HeapTupleHeaderSetXmax
    - errcode
    - HeapTupleHeaderSetXminFrozen
    - HeapTupleHasExternal
    linkageType: ''
    returnType: HeapTuple
    signature: "HeapTuple heap_prepare_insert(Relation relation, HeapTuple tup, TransactionId
      xid,\n\t\t\t\t\tCommandId cid, int options)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/heap/heapam.c:2323,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - heaptuples
    - done
    - ntuples
    - saveFreeSpace
    argTypes:
    - HeapTuple*
    - int
    - int
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2334
      start: 2315
    functionDepth: 1
    functionLinenumber: 2315
    functionLinenumberEnd: 2334
    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: 20
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:2351,1
    - Dst: RelationIsLogicallyLogged
      Src: /src/postgres/src/backend/access/heap/heapam.c:2360,1
    - Dst: RelationIsAccessibleInLogicalDecoding
      Src: /src/postgres/src/backend/access/heap/heapam.c:2361,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2367,1
    - Dst: AssertHasSnapshotForToast
      Src: /src/postgres/src/backend/access/heap/heapam.c:2369,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/heapam.c:2371,1
    - Dst: RelationGetTargetPageFreeSpace
      Src: /src/postgres/src/backend/access/heap/heapam.c:2372,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/heap/heapam.c:2376,1
    - Dst: ExecFetchSlotHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:2381,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:2382,1
    - Dst: heap_prepare_insert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2384,1
    - Dst: CheckForSerializableConflictIn
      Src: /src/postgres/src/backend/access/heap/heapam.c:2411,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/heapam.c:2421,1
    - Dst: heap_multi_insert_pages
      Src: /src/postgres/src/backend/access/heap/heapam.c:2435,1
    - Dst: RelationGetBufferForTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:2449,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:2453,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:2455,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:2461,1
    - Dst: RelationPutHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:2467,1
    - Dst: log_heap_new_cid
      Src: /src/postgres/src/backend/access/heap/heapam.c:2474,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/heapam.c:2480,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/heap/heapam.c:2480,1
    - Dst: RelationPutHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:2483,1
    - Dst: log_heap_new_cid
      Src: /src/postgres/src/backend/access/heap/heapam.c:2490,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:2500,1
    - Dst: PageClearAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:2503,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam.c:2504,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:2505,1
    - Dst: PageSetAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:2509,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam.c:2515,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2552,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:2573,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/access/heap/heapam.c:2575,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam.c:2584,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2591,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2617,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:2618,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2619,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/heapam.c:2621,1
    - Dst: XLogSetRecordFlags
      Src: /src/postgres/src/backend/access/heap/heapam.c:2624,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2626,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam.c:2628,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:2631,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2639,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:2639,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2640,1
    - Dst: visibilitymap_pin_ok
      Src: /src/postgres/src/backend/access/heap/heapam.c:2640,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:2640,1
    - Dst: visibilitymap_set
      Src: /src/postgres/src/backend/access/heap/heapam.c:2647,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:2647,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2653,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2665,1
    - Dst: CheckForSerializableConflictIn
      Src: /src/postgres/src/backend/access/heap/heapam.c:2681,1
    - Dst: IsCatalogRelation
      Src: /src/postgres/src/backend/access/heap/heapam.c:2689,1
    - Dst: CacheInvalidateHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:2692,1
    - Dst: pgstat_count_heap_insert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2699,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 111
    argCount: 6
    argNames:
    - relation
    - slots
    - ntuples
    - cid
    - options
    - bistate
    argTypes:
    - Relation
    - TupleTableSlot**
    - int
    - CommandId
    - int
    - BulkInsertState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2700
      start: 2347
    functionDepth: 4
    functionLinenumber: 2347
    functionLinenumberEnd: 2700
    functionName: heap_multi_insert
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - MarkBufferDirty
    - PageSetLSN
    - CHECK_FOR_INTERRUPTS
    - ReleaseBuffer
    - RelationGetTargetPageFreeSpace
    - XLogRegisterData
    - heap_prepare_insert
    - PageSetAllVisible
    - START_CRIT_SECTION
    - BufferGetBlockNumber
    - RelationGetRelid
    - CacheInvalidateHeapTuple
    - ItemPointerGetOffsetNumber
    - GetCurrentTransactionId
    - visibilitymap_set
    - RelationIsLogicallyLogged
    - PageClearAllVisible
    - log_heap_new_cid
    - memcpy
    - CheckForSerializableConflictIn
    - pgstat_count_heap_insert
    - RelationNeedsWAL
    - PageIsAllVisible
    - PageGetHeapFreeSpace
    - visibilitymap_pin_ok
    - visibilitymap_clear
    - XLogRegisterBufData
    - RelationGetBufferForTuple
    - RelationPutHeapTuple
    - IsCatalogRelation
    - ExecFetchSlotHeapTuple
    - SHORTALIGN
    - BufferGetPage
    - palloc
    - XLogSetRecordFlags
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - Assert
    - AssertHasSnapshotForToast
    - heap_multi_insert_pages
    - XLogBeginInsert
    - XLogInsert
    - XLogRegisterBuffer
    - RelationIsAccessibleInLogicalDecoding
    - END_CRIT_SECTION
    - MAXALIGN
    linkageType: ''
    returnType: void
    signature: "void heap_multi_insert(Relation relation, TupleTableSlot **slots,
      int ntuples,\n\t\t\t\t  CommandId cid, int options, BulkInsertState bistate)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: heap_insert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2714,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/access/heap/heapam.c:2714,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - relation
    - tup
    argTypes:
    - Relation
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2715
      start: 2711
    functionDepth: 5
    functionLinenumber: 2711
    functionLinenumberEnd: 2715
    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: 2735
      start: 2724
    functionDepth: 0
    functionLinenumber: 2724
    functionLinenumberEnd: 2735
    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: 2756
      start: 2746
    functionDepth: 0
    functionLinenumber: 2746
    functionLinenumberEnd: 2756
    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: 35
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:2775,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2791,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:2791,1
    - Dst: AssertHasSnapshotForToast
      Src: /src/postgres/src/backend/access/heap/heapam.c:2793,1
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/access/heap/heapam.c:2800,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:2801,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:2802,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/heapam.c:2803,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:2805,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2806,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:2807,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:2815,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam.c:2816,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2818,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:2820,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:2820,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2821,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:2821,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:2823,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:2824,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam.c:2825,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:2836,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2838,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam.c:2839,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2840,1
    - Dst: HeapTupleSatisfiesUpdate
      Src: /src/postgres/src/backend/access/heap/heapam.c:2843,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2847,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:2848,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:2849,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/heapam.c:2850,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:2858,1
    - Dst: DoesMultiXactIdConflict
      Src: /src/postgres/src/backend/access/heap/heapam.c:2878,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2881,1
    - Dst: heap_acquire_tuplock
      Src: /src/postgres/src/backend/access/heap/heapam.c:2888,1
    - Dst: MultiXactIdWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:2892,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2895,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:2905,1
    - Dst: xmax_infomask_changed
      Src: /src/postgres/src/backend/access/heap/heapam.c:2906,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:2907,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:2907,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:2922,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2928,1
    - Dst: heap_acquire_tuplock
      Src: /src/postgres/src/backend/access/heap/heapam.c:2929,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:2931,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2932,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:2942,1
    - Dst: xmax_infomask_changed
      Src: /src/postgres/src/backend/access/heap/heapam.c:2943,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:2944,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:2944,1
    - Dst: UpdateXmaxHintBits
      Src: /src/postgres/src/backend/access/heap/heapam.c:2949,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:2957,1
    - Dst: HeapTupleHeaderIsOnlyLocked
      Src: /src/postgres/src/backend/access/heap/heapam.c:2958,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:2960,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2969,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2973,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:2974,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:2975,1
    - Dst: HeapTupleSatisfiesVisibility
      Src: /src/postgres/src/backend/access/heap/heapam.c:2981,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam.c:2988,1
    - Dst: HeapTupleHeaderGetCmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:2990,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2993,1
    - Dst: UnlockTupleTuplock
      Src: /src/postgres/src/backend/access/heap/heapam.c:2995,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:2997,1
    - Dst: CheckForSerializableConflictIn
      Src: /src/postgres/src/backend/access/heap/heapam.c:3010,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:3010,1
    - Dst: HeapTupleHeaderAdjustCmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3013,1
    - Dst: ExtractReplicaIdentity
      Src: /src/postgres/src/backend/access/heap/heapam.c:3019,1
    - Dst: MultiXactIdSetOldestMember
      Src: /src/postgres/src/backend/access/heap/heapam.c:3029,1
    - Dst: compute_new_xmax_infomask
      Src: /src/postgres/src/backend/access/heap/heapam.c:3031,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3031,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:3036,1
    - Dst: PageSetPrunable
      Src: /src/postgres/src/backend/access/heap/heapam.c:3045,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:3047,1
    - Dst: PageClearAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:3050,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam.c:3051,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:3051,1
    - Dst: HeapTupleHeaderClearHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam.c:3060,1
    - Dst: HeapTupleHeaderSetXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3061,1
    - Dst: HeapTupleHeaderSetCmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3062,1
    - Dst: HeapTupleHeaderSetMovedPartitions
      Src: /src/postgres/src/backend/access/heap/heapam.c:3068,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam.c:3070,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/heapam.c:3078,1
    - Dst: RelationIsAccessibleInLogicalDecoding
      Src: /src/postgres/src/backend/access/heap/heapam.c:3088,1
    - Dst: log_heap_new_cid
      Src: /src/postgres/src/backend/access/heap/heapam.c:3089,1
    - Dst: compute_infobits
      Src: /src/postgres/src/backend/access/heap/heapam.c:3096,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:3098,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3109,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:3110,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3112,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:3123,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:3124,1
    - Dst: XLogSetRecordFlags
      Src: /src/postgres/src/backend/access/heap/heapam.c:3131,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3133,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam.c:3135,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:3138,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3140,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3143,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3155,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/heap/heapam.c:3155,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/heap/heapam.c:3157,1
    - Dst: heap_toast_delete
      Src: /src/postgres/src/backend/access/heap/heapam.c:3158,1
    - Dst: CacheInvalidateHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:3165,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3168,1
    - Dst: UnlockTupleTuplock
      Src: /src/postgres/src/backend/access/heap/heapam.c:3174,1
    - Dst: pgstat_count_heap_delete
      Src: /src/postgres/src/backend/access/heap/heapam.c:3176,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:3179,1
    CyclomaticComplexity: 53
    EdgeCount: 53
    ICount: 152
    argCount: 7
    argNames:
    - relation
    - tid
    - cid
    - crosscheck
    - wait
    - tmfd
    - changingPart
    argTypes:
    - Relation
    - ItemPointer
    - CommandId
    - Snapshot
    - bool
    - TM_FailureData*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3182
      start: 2769
    functionDepth: 4
    functionLinenumber: 2769
    functionLinenumberEnd: 3182
    functionName: heap_delete
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 2
    functionsReached:
    - MarkBufferDirty
    - PageSetLSN
    - HeapTupleHeaderSetMovedPartitions
    - compute_infobits
    - XactLockTableWait
    - ReleaseBuffer
    - LockBuffer
    - HeapTupleSatisfiesUpdate
    - UnlockTupleTuplock
    - HeapTupleHeaderSetXmax
    - ItemIdIsNormal
    - HeapTupleHeaderGetRawXmax
    - xmax_infomask_changed
    - XLogRegisterData
    - heap_toast_delete
    - START_CRIT_SECTION
    - HeapTupleHeaderClearHotUpdated
    - BufferGetBlockNumber
    - RelationGetRelid
    - IsInParallelMode
    - ItemPointerGetOffsetNumber
    - ExtractReplicaIdentity
    - GetCurrentTransactionId
    - HeapTupleHeaderAdjustCmax
    - CacheInvalidateHeapTuple
    - UpdateXmaxHintBits
    - heap_freetuple
    - heap_acquire_tuplock
    - END_CRIT_SECTION
    - PageClearAllVisible
    - PageSetPrunable
    - log_heap_new_cid
    - PageGetItem
    - CheckForSerializableConflictIn
    - HeapTupleHeaderIsOnlyLocked
    - RelationNeedsWAL
    - errmsg
    - ReadBuffer
    - PageIsAllVisible
    - PageGetItemId
    - HeapTupleHasExternal
    - visibilitymap_clear
    - ItemPointerIsValid
    - ItemPointerEquals
    - XLogSetRecordFlags
    - BufferGetPage
    - TransactionIdIsCurrentTransactionId
    - UnlockReleaseBuffer
    - pgstat_count_heap_delete
    - TransactionIdEquals
    - Assert
    - HeapTupleHeaderGetUpdateXid
    - compute_new_xmax_infomask
    - AssertHasSnapshotForToast
    - XLogBeginInsert
    - XLogInsert
    - MultiXactIdWait
    - visibilitymap_pin
    - ereport
    - HeapTupleHeaderSetCmax
    - HeapTupleSatisfiesVisibility
    - ItemIdGetLength
    - XLogRegisterBuffer
    - DoesMultiXactIdConflict
    - MultiXactIdSetOldestMember
    - RelationIsAccessibleInLogicalDecoding
    - HeapTupleHeaderGetCmax
    - ItemPointerGetBlockNumber
    - errcode
    - HEAP_XMAX_IS_LOCKED_ONLY
    linkageType: ''
    returnType: TM_Result
    signature: "TM_Result heap_delete(Relation relation, ItemPointer tid,\n\t\t\tCommandId
      cid, Snapshot crosscheck, bool wait,\n\t\t\tTM_FailureData *tmfd, bool changingPart)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: heap_delete
      Src: /src/postgres/src/backend/access/heap/heapam.c:3198,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/access/heap/heapam.c:3199,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:3206,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:3214,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:3218,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:3222,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - relation
    - tid
    argTypes:
    - Relation
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3225
      start: 3192
    functionDepth: 5
    functionLinenumber: 3192
    functionLinenumberEnd: 3225
    functionName: simple_heap_delete
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - GetCurrentCommandId
    - elog
    - heap_delete
    linkageType: ''
    returnType: void
    signature: void simple_heap_delete(Relation relation, ItemPointer tid)
  - BBCount: 58
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:3245,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3284,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:3284,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3287,1
    - Dst: HeapTupleHeaderGetNatts
      Src: /src/postgres/src/backend/access/heap/heapam.c:3287,1
    - Dst: RelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/access/heap/heapam.c:3288,1
    - Dst: AssertHasSnapshotForToast
      Src: /src/postgres/src/backend/access/heap/heapam.c:3290,1
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/access/heap/heapam.c:3297,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:3298,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:3299,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/heapam.c:3300,1
    - Dst: check_lock_if_inplace_updateable_rel
      Src: /src/postgres/src/backend/access/heap/heapam.c:3303,1
    - Dst: RelationGetIndexAttrBitmap
      Src: /src/postgres/src/backend/access/heap/heapam.c:3322,1
    - Dst: RelationGetIndexAttrBitmap
      Src: /src/postgres/src/backend/access/heap/heapam.c:3324,1
    - Dst: RelationGetIndexAttrBitmap
      Src: /src/postgres/src/backend/access/heap/heapam.c:3326,1
    - Dst: RelationGetIndexAttrBitmap
      Src: /src/postgres/src/backend/access/heap/heapam.c:3327,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/access/heap/heapam.c:3330,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/access/heap/heapam.c:3331,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/access/heap/heapam.c:3332,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/access/heap/heapam.c:3333,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:3335,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/access/heap/heapam.c:3336,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3337,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:3338,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:3346,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam.c:3347,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3349,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:3351,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:3351,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:3376,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3378,1
    - Dst: RelationSupportsSysCache
      Src: /src/postgres/src/backend/access/heap/heapam.c:3378,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:3378,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3380,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3381,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3383,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:3389,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:3390,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:3391,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:3392,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:3394,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:3402,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:3403,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam.c:3404,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:3408,1
    - Dst: HeapDetermineColumnsInfo
      Src: /src/postgres/src/backend/access/heap/heapam.c:3418,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/access/heap/heapam.c:3433,1
    - Dst: MultiXactIdSetOldestMember
      Src: /src/postgres/src/backend/access/heap/heapam.c:3448,1
    - Dst: HeapTupleSatisfiesUpdate
      Src: /src/postgres/src/backend/access/heap/heapam.c:3467,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3470,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3474,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:3475,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:3476,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/heapam.c:3477,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3499,1
    - Dst: DoesMultiXactIdConflict
      Src: /src/postgres/src/backend/access/heap/heapam.c:3530,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3533,1
    - Dst: heap_acquire_tuplock
      Src: /src/postgres/src/backend/access/heap/heapam.c:3540,1
    - Dst: MultiXactIdWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:3544,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3549,1
    - Dst: xmax_infomask_changed
      Src: /src/postgres/src/backend/access/heap/heapam.c:3556,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:3558,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3558,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:3583,1
    - Dst: HeapTupleGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam.c:3584,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:3593,1
    - Dst: TransactionIdDidAbort
      Src: /src/postgres/src/backend/access/heap/heapam.c:3594,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:3597,1
    - Dst: HEAP_XMAX_IS_KEYSHR_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:3607,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3624,1
    - Dst: heap_acquire_tuplock
      Src: /src/postgres/src/backend/access/heap/heapam.c:3625,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:3627,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3630,1
    - Dst: xmax_infomask_changed
      Src: /src/postgres/src/backend/access/heap/heapam.c:3637,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:3638,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3639,1
    - Dst: UpdateXmaxHintBits
      Src: /src/postgres/src/backend/access/heap/heapam.c:3643,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:3650,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3659,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3663,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3664,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:3665,1
    - Dst: HeapTupleSatisfiesVisibility
      Src: /src/postgres/src/backend/access/heap/heapam.c:3671,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam.c:3678,1
    - Dst: HeapTupleHeaderGetCmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3680,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3683,1
    - Dst: UnlockTupleTuplock
      Src: /src/postgres/src/backend/access/heap/heapam.c:3685,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3687,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:3690,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:3691,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:3692,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:3693,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:3694,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:3695,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:3708,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3710,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam.c:3711,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3712,1
    - Dst: compute_new_xmax_infomask
      Src: /src/postgres/src/backend/access/heap/heapam.c:3722,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3722,1
    - Dst: HEAP_LOCKED_UPGRADED
      Src: /src/postgres/src/backend/access/heap/heapam.c:3737,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3741,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:3743,1
    - Dst: GetMultiXactIdHintBits
      Src: /src/postgres/src/backend/access/heap/heapam.c:3758,1
    - Dst: HeapTupleHeaderSetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:3774,1
    - Dst: HeapTupleHeaderSetCmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:3775,1
    - Dst: HeapTupleHeaderSetXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3778,1
    - Dst: HeapTupleHeaderAdjustCmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3784,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3801,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/heap/heapam.c:3801,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3802,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/heap/heapam.c:3802,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/heap/heapam.c:3806,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/heap/heapam.c:3807,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/heapam.c:3810,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/heap/heapam.c:3812,1
    - Dst: compute_new_xmax_infomask
      Src: /src/postgres/src/backend/access/heap/heapam.c:3839,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3839,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3846,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:3846,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:3848,1
    - Dst: HeapTupleClearHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam.c:3853,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3855,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:3855,1
    - Dst: HeapTupleHeaderSetXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3856,1
    - Dst: HeapTupleHeaderSetCmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:3859,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:3870,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam.c:3871,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam.c:3875,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/heapam.c:3877,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3882,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3883,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:3885,1
    - Dst: compute_infobits
      Src: /src/postgres/src/backend/access/heap/heapam.c:3887,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:3891,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:3892,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam.c:3893,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:3896,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3898,1
    - Dst: heap_toast_insert_or_update
      Src: /src/postgres/src/backend/access/heap/heapam.c:3910,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/heap/heapam.c:3911,1
    - Dst: RelationGetBufferForTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:3944,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:3952,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam.c:3953,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3955,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/heapam.c:3957,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:3959,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:3966,1
    - Dst: CheckForSerializableConflictIn
      Src: /src/postgres/src/backend/access/heap/heapam.c:3997,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:3998,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/access/heap/heapam.c:4013,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/access/heap/heapam.c:4024,1
    - Dst: PageSetFull
      Src: /src/postgres/src/backend/access/heap/heapam.c:4031,1
    - Dst: ExtractReplicaIdentity
      Src: /src/postgres/src/backend/access/heap/heapam.c:4041,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/access/heap/heapam.c:4042,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:4047,1
    - Dst: PageSetPrunable
      Src: /src/postgres/src/backend/access/heap/heapam.c:4061,1
    - Dst: HeapTupleSetHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam.c:4066,1
    - Dst: HeapTupleSetHeapOnly
      Src: /src/postgres/src/backend/access/heap/heapam.c:4068,1
    - Dst: HeapTupleSetHeapOnly
      Src: /src/postgres/src/backend/access/heap/heapam.c:4070,1
    - Dst: HeapTupleClearHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam.c:4075,1
    - Dst: HeapTupleClearHeapOnly
      Src: /src/postgres/src/backend/access/heap/heapam.c:4076,1
    - Dst: HeapTupleClearHeapOnly
      Src: /src/postgres/src/backend/access/heap/heapam.c:4077,1
    - Dst: RelationPutHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:4080,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:4087,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:4087,1
    - Dst: HeapTupleHeaderSetXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:4088,1
    - Dst: HeapTupleHeaderSetCmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:4091,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:4097,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:4097,1
    - Dst: PageClearAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:4100,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:4100,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam.c:4101,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:4101,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:4104,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:4104,1
    - Dst: PageClearAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:4107,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:4107,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam.c:4108,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:4108,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam.c:4113,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam.c:4114,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/heapam.c:4117,1
    - Dst: RelationIsAccessibleInLogicalDecoding
      Src: /src/postgres/src/backend/access/heap/heapam.c:4125,1
    - Dst: log_heap_new_cid
      Src: /src/postgres/src/backend/access/heap/heapam.c:4127,1
    - Dst: log_heap_new_cid
      Src: /src/postgres/src/backend/access/heap/heapam.c:4128,1
    - Dst: log_heap_update
      Src: /src/postgres/src/backend/access/heap/heapam.c:4131,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam.c:4138,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:4138,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam.c:4140,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:4140,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:4143,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4146,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4147,1
    - Dst: CacheInvalidateHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:4157,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4161,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4162,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:4163,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4164,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:4165,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4166,1
    - Dst: UnlockTupleTuplock
      Src: /src/postgres/src/backend/access/heap/heapam.c:4172,1
    - Dst: pgstat_count_heap_update
      Src: /src/postgres/src/backend/access/heap/heapam.c:4174,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:4183,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:4203,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:4205,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:4206,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:4207,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:4208,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:4209,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:4210,1
    CyclomaticComplexity: 89
    EdgeCount: 89
    ICount: 327
    argCount: 9
    argNames:
    - relation
    - otid
    - newtup
    - cid
    - crosscheck
    - wait
    - tmfd
    - lockmode
    - update_indexes
    argTypes:
    - Relation
    - ItemPointer
    - HeapTuple
    - CommandId
    - Snapshot
    - bool
    - TM_FailureData*
    - LockTupleMode*
    - TU_UpdateIndexes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4213
      start: 3238
    functionDepth: 4
    functionLinenumber: 3238
    functionLinenumberEnd: 4213
    functionName: heap_update
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 2
    functionsReached:
    - ReleaseBuffer
    - XactLockTableWait
    - ItemIdIsNormal
    - check_lock_if_inplace_updateable_rel
    - RelationSupportsSysCache
    - START_CRIT_SECTION
    - PageSetPrunable
    - PageGetItem
    - CheckForSerializableConflictIn
    - pgstat_count_heap_update
    - RelationNeedsWAL
    - BufferIsValid
    - visibilitymap_clear
    - RelationGetBufferForTuple
    - ItemPointerIsValid
    - RelationPutHeapTuple
    - BufferGetPage
    - UnlockReleaseBuffer
    - HeapTupleHeaderSetCmin
    - visibilitymap_pin
    - HeapTupleGetUpdateXid
    - bms_overlap
    - LockBuffer
    - XLogRegisterData
    - TransactionIdDidAbort
    - BufferGetBlockNumber
    - IsInParallelMode
    - HeapTupleSetHotUpdated
    - heap_freetuple
    - GetCurrentTransactionId
    - UpdateXmaxHintBits
    - heap_acquire_tuplock
    - RelationGetIndexAttrBitmap
    - bms_free
    - errmsg
    - HeapTupleSetHeapOnly
    - PageGetItemId
    - log_heap_update
    - HeapTupleHeaderGetUpdateXid
    - bms_add_members
    - HeapTupleHeaderSetXmin
    - MultiXactIdWait
    - heap_toast_insert_or_update
    - HeapTupleHeaderSetCmax
    - HeapDetermineColumnsInfo
    - ItemIdGetLength
    - DoesMultiXactIdConflict
    - ItemPointerGetBlockNumber
    - MarkBufferDirty
    - PageSetLSN
    - compute_infobits
    - HeapTupleSatisfiesUpdate
    - HeapTupleHeaderSetXmax
    - HeapTupleHeaderGetNatts
    - HeapTupleHeaderGetRawXmax
    - HeapTupleClearHeapOnly
    - ItemPointerGetOffsetNumber
    - ExtractReplicaIdentity
    - HeapTupleHeaderAdjustCmax
    - ReadBuffer
    - PageIsAllVisible
    - TransactionIdIsValid
    - TransactionIdIsCurrentTransactionId
    - TransactionIdEquals
    - Assert
    - AssertHasSnapshotForToast
    - XLogBeginInsert
    - XLogInsert
    - ereport
    - INJECTION_POINT
    - MultiXactIdSetOldestMember
    - HeapTupleClearHotUpdated
    - MAXALIGN
    - PageSetFull
    - GetMultiXactIdHintBits
    - UnlockTupleTuplock
    - xmax_infomask_changed
    - HEAP_LOCKED_UPGRADED
    - RelationGetNumberOfAttributes
    - RelationGetRelid
    - CacheInvalidateHeapTuple
    - PageClearAllVisible
    - log_heap_new_cid
    - HeapTupleHasExternal
    - PageGetHeapFreeSpace
    - ItemPointerEquals
    - compute_new_xmax_infomask
    - HeapTupleSatisfiesVisibility
    - XLogRegisterBuffer
    - RelationIsAccessibleInLogicalDecoding
    - END_CRIT_SECTION
    - HeapTupleHeaderGetCmax
    - HEAP_XMAX_IS_KEYSHR_LOCKED
    - errcode
    - HEAP_XMAX_IS_LOCKED_ONLY
    linkageType: ''
    returnType: TM_Result
    signature: "TM_Result heap_update(Relation relation, ItemPointer otid, HeapTuple
      newtup,\n\t\t\tCommandId cid, 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:4226,1
    - Dst: SET_LOCKTAG_TUPLE
      Src: /src/postgres/src/backend/access/heap/heapam.c:4233,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:4236,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:4237,1
    - Dst: LockHeldByMe
      Src: /src/postgres/src/backend/access/heap/heapam.c:4238,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:4243,1
    - Dst: IsInplaceUpdateRelation
      Src: /src/postgres/src/backend/access/heap/heapam.c:4243,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:4247,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/heap/heapam.c:4252,1
    - Dst: IsSharedRelation
      Src: /src/postgres/src/backend/access/heap/heapam.c:4257,1
    - Dst: index_open
      Src: /src/postgres/src/backend/access/heap/heapam.c:4264,1
    - Dst: SET_LOCKTAG_RELATION
      Src: /src/postgres/src/backend/access/heap/heapam.c:4266,1
    - Dst: index_close
      Src: /src/postgres/src/backend/access/heap/heapam.c:4267,1
    - Dst: SET_LOCKTAG_RELATION
      Src: /src/postgres/src/backend/access/heap/heapam.c:4270,1
    - Dst: LockHeldByMe
      Src: /src/postgres/src/backend/access/heap/heapam.c:4272,1
    - Dst: LockHeldByMe
      Src: /src/postgres/src/backend/access/heap/heapam.c:4273,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:4274,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/heap/heapam.c:4276,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:4279,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:4280,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/heap/heapam.c:4286,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:4288,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/heap/heapam.c:4290,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:4292,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:4293,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 3
    argNames:
    - relation
    - otid
    - newtup
    argTypes:
    - Relation
    - ItemPointer
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4297
      start: 4220
    functionDepth: 3
    functionLinenumber: 4220
    functionLinenumberEnd: 4297
    functionName: check_lock_if_inplace_updateable_rel
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - SET_LOCKTAG_RELATION
    - Assert
    - NameStr
    - RelationGetRelid
    - index_close
    - ItemPointerGetOffsetNumber
    - LockHeldByMe
    - GETSTRUCT
    - IsSharedRelation
    - elog
    - SET_LOCKTAG_TUPLE
    - ItemPointerGetBlockNumber
    - index_open
    - IsInplaceUpdateRelation
    linkageType: ''
    returnType: void
    signature: "void check_lock_if_inplace_updateable_rel(Relation relation,\n\t\t\t\t\t\t\t\t\t
      ItemPointer 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:4306,1
    - Dst: IsSharedRelation
      Src: /src/postgres/src/backend/access/heap/heapam.c:4311,1
    - Dst: index_open
      Src: /src/postgres/src/backend/access/heap/heapam.c:4318,1
    - Dst: SET_LOCKTAG_RELATION
      Src: /src/postgres/src/backend/access/heap/heapam.c:4320,1
    - Dst: index_close
      Src: /src/postgres/src/backend/access/heap/heapam.c:4321,1
    - Dst: SET_LOCKTAG_RELATION
      Src: /src/postgres/src/backend/access/heap/heapam.c:4324,1
    - Dst: LockHeldByMe
      Src: /src/postgres/src/backend/access/heap/heapam.c:4326,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:4327,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/heap/heapam.c:4329,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:4332,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:4333,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - oldtup
    argTypes:
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4334
      start: 4303
    functionDepth: 3
    functionLinenumber: 4303
    functionLinenumberEnd: 4334
    functionName: check_inplace_rel_lock
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_RELATION
    - NameStr
    - index_close
    - ItemPointerGetOffsetNumber
    - LockHeldByMe
    - GETSTRUCT
    - IsSharedRelation
    - elog
    - ItemPointerGetBlockNumber
    - index_open
    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:4370,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/access/heap/heapam.c:4370,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:4376,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/heap/heapam.c:4377,1
    - Dst: datumIsEqual
      Src: /src/postgres/src/backend/access/heap/heapam.c:4378,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: 4380
      start: 4341
    functionDepth: 2
    functionLinenumber: 4341
    functionLinenumberEnd: 4380
    functionName: heap_attr_equals
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - TupleDescCompactAttr
    - datumIsEqual
    - DatumGetObjectId
    - Assert
    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:4401,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/access/heap/heapam.c:4404,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/access/heap/heapam.c:4420,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/access/heap/heapam.c:4433,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/access/heap/heapam.c:4444,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/access/heap/heapam.c:4445,1
    - Dst: heap_attr_equals
      Src: /src/postgres/src/backend/access/heap/heapam.c:4447,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/access/heap/heapam.c:4450,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/heap/heapam.c:4459,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/access/heap/heapam.c:4466,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4466,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/access/heap/heapam.c:4467,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: 4472
      start: 4392
    functionDepth: 4
    functionLinenumber: 4392
    functionLinenumberEnd: 4472
    functionName: HeapDetermineColumnsInfo
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - heap_getattr
    - VARATT_IS_EXTERNAL
    - heap_attr_equals
    - RelationGetDescr
    - bms_is_member
    - TupleDescCompactAttr
    - DatumGetPointer
    - bms_next_member
    - bms_add_member
    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:4490,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/access/heap/heapam.c:4491,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:4498,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:4506,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:4510,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:4514,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 4
    argNames:
    - relation
    - otid
    - tup
    - update_indexes
    argTypes:
    - Relation
    - ItemPointer
    - HeapTuple
    - TU_UpdateIndexes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4517
      start: 4482
    functionDepth: 5
    functionLinenumber: 4482
    functionLinenumberEnd: 4517
    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, ItemPointer 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:4534,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - mode
    - is_update
    argTypes:
    - LockTupleMode
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4538
      start: 4523
    functionDepth: 1
    functionLinenumber: 4523
    functionLinenumberEnd: 4538
    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:4593,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:4593,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:4594,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:4602,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:4602,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam.c:4603,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4605,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:4607,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:4608,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:4608,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:4609,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:4609,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:4611,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam.c:4612,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:4613,1
    - Dst: HeapTupleSatisfiesUpdate
      Src: /src/postgres/src/backend/access/heap/heapam.c:4616,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:4640,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/heap/heapam.c:4643,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4645,1
    - Dst: GetMultiXactIdMembers
      Src: /src/postgres/src/backend/access/heap/heapam.c:4675,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:4676,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:4681,1
    - Dst: TUPLOCK_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:4684,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:4686,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:4708,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:4710,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:4715,1
    - Dst: HEAP_XMAX_IS_KEYSHR_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:4715,1
    - Dst: HEAP_XMAX_IS_SHR_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:4716,1
    - Dst: HEAP_XMAX_IS_EXCL_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:4717,1
    - Dst: HEAP_XMAX_IS_SHR_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:4721,1
    - Dst: HEAP_XMAX_IS_EXCL_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:4722,1
    - Dst: HEAP_XMAX_IS_EXCL_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:4729,1
    - Dst: HEAP_XMAX_IS_EXCL_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:4736,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:4780,1
    - Dst: heap_lock_updated_tuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:4790,1
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:4791,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4797,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4802,1
    - Dst: HeapTupleHeaderIsOnlyLocked
      Src: /src/postgres/src/backend/access/heap/heapam.c:4811,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:4834,1
    - Dst: HEAP_XMAX_IS_EXCL_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:4835,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4837,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:4843,1
    - Dst: HEAP_XMAX_IS_EXCL_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:4844,1
    - Dst: DoesMultiXactIdConflict
      Src: /src/postgres/src/backend/access/heap/heapam.c:4858,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4865,1
    - Dst: xmax_infomask_changed
      Src: /src/postgres/src/backend/access/heap/heapam.c:4866,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:4867,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:4867,1
    - Dst: HEAP_XMAX_IS_KEYSHR_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:4875,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4877,1
    - Dst: xmax_infomask_changed
      Src: /src/postgres/src/backend/access/heap/heapam.c:4880,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:4881,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:4881,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:4902,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4905,1
    - Dst: xmax_infomask_changed
      Src: /src/postgres/src/backend/access/heap/heapam.c:4906,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:4907,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:4907,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:4910,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:4910,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4927,1
    - Dst: heap_acquire_tuplock
      Src: /src/postgres/src/backend/access/heap/heapam.c:4943,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4952,1
    - Dst: get_mxact_status_for_lock
      Src: /src/postgres/src/backend/access/heap/heapam.c:4958,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:4962,1
    - Dst: MultiXactIdWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:4968,1
    - Dst: ConditionalMultiXactIdWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:4972,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:4978,1
    - Dst: ConditionalMultiXactIdWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:4983,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:4986,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:4987,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/heapam.c:4988,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam.c:4989,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:5010,1
    - Dst: ConditionalXactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:5014,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5018,1
    - Dst: ConditionalXactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:5023,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:5024,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:5025,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/heapam.c:5026,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam.c:5027,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:5033,1
    - Dst: heap_lock_updated_tuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:5037,1
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:5038,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5044,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5049,1
    - Dst: xmax_infomask_changed
      Src: /src/postgres/src/backend/access/heap/heapam.c:5056,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:5057,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:5057,1
    - Dst: UpdateXmaxHintBits
      Src: /src/postgres/src/backend/access/heap/heapam.c:5071,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:5084,1
    - Dst: HeapTupleHeaderIsOnlyLocked
      Src: /src/postgres/src/backend/access/heap/heapam.c:5085,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:5087,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:5096,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:5106,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:5108,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:5109,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam.c:5111,1
    - Dst: HeapTupleHeaderGetCmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:5113,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:5128,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5130,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam.c:5131,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5132,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:5136,1
    - Dst: MultiXactIdSetOldestMember
      Src: /src/postgres/src/backend/access/heap/heapam.c:5147,1
    - Dst: compute_new_xmax_infomask
      Src: /src/postgres/src/backend/access/heap/heapam.c:5154,1
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:5155,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:5158,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:5174,1
    - Dst: HeapTupleHeaderClearHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam.c:5175,1
    - Dst: HeapTupleHeaderSetXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:5176,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:5185,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:5189,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam.c:5190,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam.c:5195,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/heapam.c:5209,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:5214,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5215,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:5217,1
    - Dst: compute_infobits
      Src: /src/postgres/src/backend/access/heap/heapam.c:5219,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:5222,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:5226,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam.c:5228,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:5231,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5236,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:5239,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5240,1
    - Dst: UnlockTupleTuplock
      Src: /src/postgres/src/backend/access/heap/heapam.c:5252,1
    CyclomaticComplexity: 117
    EdgeCount: 117
    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: 5255
      start: 4571
    functionDepth: 4
    functionLinenumber: 4571
    functionLinenumberEnd: 5255
    functionName: heap_lock_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - heap_lock_updated_tuple
    - TUPLOCK_from_mxstatus
    - ConditionalXactLockTableWait
    - MarkBufferDirty
    - compute_infobits
    - PageSetLSN
    - XactLockTableWait
    - ReleaseBuffer
    - LockBuffer
    - HeapTupleSatisfiesUpdate
    - UnlockTupleTuplock
    - HeapTupleHeaderSetXmax
    - ItemIdIsNormal
    - HeapTupleHeaderGetRawXmax
    - xmax_infomask_changed
    - HEAP_XMAX_IS_SHR_LOCKED
    - XLogRegisterData
    - RelationGetRelationName
    - get_mxact_status_for_lock
    - HEAP_XMAX_IS_EXCL_LOCKED
    - pfree
    - START_CRIT_SECTION
    - HeapTupleHeaderClearHotUpdated
    - RelationGetRelid
    - ItemPointerGetOffsetNumber
    - GetCurrentTransactionId
    - UpdateXmaxHintBits
    - heap_acquire_tuplock
    - PageGetItem
    - HeapTupleHeaderIsOnlyLocked
    - RelationNeedsWAL
    - ReadBuffer
    - PageIsAllVisible
    - errmsg
    - PageGetItemId
    - BufferIsValid
    - visibilitymap_clear
    - GetMultiXactIdMembers
    - elog
    - ItemPointerEquals
    - BufferGetPage
    - TransactionIdIsCurrentTransactionId
    - TransactionIdEquals
    - Assert
    - ItemPointerCopy
    - ConditionalMultiXactIdWait
    - HeapTupleHeaderGetUpdateXid
    - compute_new_xmax_infomask
    - XLogBeginInsert
    - XLogInsert
    - MultiXactIdWait
    - visibilitymap_pin
    - HEAP_XMAX_IS_KEYSHR_LOCKED
    - ereport
    - ItemIdGetLength
    - XLogRegisterBuffer
    - DoesMultiXactIdConflict
    - MultiXactIdSetOldestMember
    - END_CRIT_SECTION
    - HeapTupleHeaderGetCmax
    - ItemPointerGetBlockNumber
    - errcode
    - HEAP_XMAX_IS_LOCKED_ONLY
    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:5279,1
    - Dst: ConditionalLockTupleTuplock
      Src: /src/postgres/src/backend/access/heap/heapam.c:5283,1
    - Dst: ConditionalLockTupleTuplock
      Src: /src/postgres/src/backend/access/heap/heapam.c:5288,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:5289,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:5290,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/heapam.c:5291,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam.c:5292,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 5
    argNames:
    - relation
    - tid
    - mode
    - wait_policy
    - have_tuple_lock
    argTypes:
    - Relation
    - ItemPointer
    - LockTupleMode
    - LockWaitPolicy
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5298
      start: 5269
    functionDepth: 1
    functionLinenumber: 5269
    functionLinenumberEnd: 5298
    functionName: heap_acquire_tuplock
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 3
    functionsReached:
    - errmsg
    - ConditionalLockTupleTuplock
    - ereport
    - LockTupleTuplock
    - RelationGetRelationName
    - errcode
    linkageType: ''
    returnType: bool
    signature: "bool heap_acquire_tuplock(Relation relation, ItemPointer 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:5329,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:5329,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:5374,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:5386,1
    - Dst: HEAP_LOCKED_UPGRADED
      Src: /src/postgres/src/backend/access/heap/heapam.c:5395,1
    - Dst: MultiXactIdIsRunning
      Src: /src/postgres/src/backend/access/heap/heapam.c:5414,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:5414,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:5416,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam.c:5417,1
    - Dst: MultiXactIdGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam.c:5417,1
    - Dst: get_mxact_status_for_lock
      Src: /src/postgres/src/backend/access/heap/heapam.c:5430,1
    - Dst: MultiXactIdExpand
      Src: /src/postgres/src/backend/access/heap/heapam.c:5432,1
    - Dst: GetMultiXactIdHintBits
      Src: /src/postgres/src/backend/access/heap/heapam.c:5434,1
    - Dst: get_mxact_status_for_lock
      Src: /src/postgres/src/backend/access/heap/heapam.c:5450,1
    - Dst: MultiXactIdCreate
      Src: /src/postgres/src/backend/access/heap/heapam.c:5457,1
    - Dst: GetMultiXactIdHintBits
      Src: /src/postgres/src/backend/access/heap/heapam.c:5458,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam.c:5460,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:5471,1
    - Dst: HEAP_XMAX_IS_KEYSHR_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:5473,1
    - Dst: HEAP_XMAX_IS_SHR_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:5475,1
    - Dst: HEAP_XMAX_IS_EXCL_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:5477,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:5492,1
    - Dst: TUPLOCK_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:5507,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:5525,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:5525,1
    - Dst: get_mxact_status_for_lock
      Src: /src/postgres/src/backend/access/heap/heapam.c:5537,1
    - Dst: MultiXactIdCreate
      Src: /src/postgres/src/backend/access/heap/heapam.c:5538,1
    - Dst: GetMultiXactIdHintBits
      Src: /src/postgres/src/backend/access/heap/heapam.c:5540,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:5542,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam.c:5543,1
    - Dst: get_mxact_status_for_lock
      Src: /src/postgres/src/backend/access/heap/heapam.c:5557,1
    - Dst: MultiXactIdCreate
      Src: /src/postgres/src/backend/access/heap/heapam.c:5564,1
    - Dst: GetMultiXactIdHintBits
      Src: /src/postgres/src/backend/access/heap/heapam.c:5565,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: 5582
      start: 5318
    functionDepth: 2
    functionLinenumber: 5318
    functionLinenumberEnd: 5582
    functionName: compute_new_xmax_infomask
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 3
    functionsReached:
    - TransactionIdIsInProgress
    - GetMultiXactIdHintBits
    - Assert
    - HEAP_XMAX_IS_EXCL_LOCKED
    - TUPLOCK_from_mxstatus
    - TransactionIdDidCommit
    - MultiXactIdGetUpdateXid
    - elog
    - HEAP_XMAX_IS_LOCKED_ONLY
    - HEAP_XMAX_IS_SHR_LOCKED
    - HEAP_XMAX_IS_KEYSHR_LOCKED
    - MultiXactIdExpand
    - HEAP_LOCKED_UPGRADED
    - TransactionIdIsCurrentTransactionId
    - get_mxact_status_for_lock
    - MultiXactIdIsRunning
    - MultiXactIdCreate
    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:5607,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:5614,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam.c:5623,1
    - Dst: DoLockModesConflict
      Src: /src/postgres/src/backend/access/heap/heapam.c:5631,1
    - Dst: LOCKMODE_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:5631,1
    - Dst: LOCKMODE_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:5632,1
    - Dst: TransactionIdDidAbort
      Src: /src/postgres/src/backend/access/heap/heapam.c:5643,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam.c:5645,1
    - Dst: ISUPDATE_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:5662,1
    - Dst: DoLockModesConflict
      Src: /src/postgres/src/backend/access/heap/heapam.c:5665,1
    - Dst: LOCKMODE_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:5665,1
    - Dst: LOCKMODE_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:5666,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:5669,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: 5680
      start: 5599
    functionDepth: 2
    functionLinenumber: 5599
    functionLinenumberEnd: 5680
    functionName: test_lockmode_for_conflict
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsInProgress
    - LOCKMODE_from_mxstatus
    - TransactionIdDidCommit
    - ISUPDATE_from_mxstatus
    - TransactionIdDidAbort
    - ItemPointerEquals
    - DoLockModesConflict
    - TransactionIdIsCurrentTransactionId
    - get_mxact_status_for_lock
    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:5710,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:5716,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/heap/heapam.c:5717,1
    - Dst: heap_fetch
      Src: /src/postgres/src/backend/access/heap/heapam.c:5719,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/heapam.c:5733,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:5741,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:5741,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam.c:5743,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5749,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:5762,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:5762,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5764,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam.c:5765,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5766,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:5773,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:5774,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:5774,1
    - Dst: TransactionIdDidAbort
      Src: /src/postgres/src/backend/access/heap/heapam.c:5786,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:5786,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:5794,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:5807,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:5823,1
    - Dst: HEAP_LOCKED_UPGRADED
      Src: /src/postgres/src/backend/access/heap/heapam.c:5823,1
    - Dst: GetMultiXactIdMembers
      Src: /src/postgres/src/backend/access/heap/heapam.c:5825,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:5826,1
    - Dst: test_lockmode_for_conflict
      Src: /src/postgres/src/backend/access/heap/heapam.c:5829,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:5847,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5853,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:5854,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:5857,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:5862,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:5867,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:5877,1
    - Dst: HEAP_XMAX_IS_KEYSHR_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:5879,1
    - Dst: HEAP_XMAX_IS_SHR_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:5881,1
    - Dst: HEAP_XMAX_IS_EXCL_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:5883,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:5897,1
    - Dst: test_lockmode_for_conflict
      Src: /src/postgres/src/backend/access/heap/heapam.c:5909,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5926,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:5927,1
    - Dst: compute_new_xmax_infomask
      Src: /src/postgres/src/backend/access/heap/heapam.c:5939,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:5943,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:5943,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam.c:5944,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:5948,1
    - Dst: HeapTupleHeaderSetXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:5951,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam.c:5957,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/heapam.c:5960,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:5964,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:5966,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5967,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:5969,1
    - Dst: compute_infobits
      Src: /src/postgres/src/backend/access/heap/heapam.c:5971,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:5975,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:5977,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam.c:5979,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:5982,1
    - Dst: HeapTupleHeaderIndicatesMovedPartitions
      Src: /src/postgres/src/backend/access/heap/heapam.c:5987,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:5988,1
    - Dst: HeapTupleHeaderIsOnlyLocked
      Src: /src/postgres/src/backend/access/heap/heapam.c:5989,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam.c:5996,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/access/heap/heapam.c:5997,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:5998,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6004,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6008,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 142
    argCount: 4
    argNames:
    - rel
    - tid
    - xid
    - mode
    argTypes:
    - Relation
    - ItemPointer
    - TransactionId
    - LockTupleMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6011
      start: 5690
    functionDepth: 5
    functionLinenumber: 5690
    functionLinenumberEnd: 6011
    functionName: heap_lock_updated_tuple_rec
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - MarkBufferDirty
    - PageSetLSN
    - CHECK_FOR_INTERRUPTS
    - compute_infobits
    - XactLockTableWait
    - ReleaseBuffer
    - LockBuffer
    - HeapTupleHeaderSetXmax
    - HeapTupleHeaderGetRawXmax
    - XLogRegisterData
    - HEAP_XMAX_IS_SHR_LOCKED
    - HEAP_LOCKED_UPGRADED
    - TransactionIdDidAbort
    - HEAP_XMAX_IS_EXCL_LOCKED
    - pfree
    - START_CRIT_SECTION
    - ItemPointerGetOffsetNumber
    - HeapTupleHeaderIndicatesMovedPartitions
    - HeapTupleHeaderGetXmin
    - test_lockmode_for_conflict
    - HeapTupleHeaderIsOnlyLocked
    - RelationNeedsWAL
    - PageIsAllVisible
    - visibilitymap_clear
    - TransactionIdIsValid
    - GetMultiXactIdMembers
    - heap_fetch
    - elog
    - ItemPointerEquals
    - BufferGetPage
    - UnlockReleaseBuffer
    - TransactionIdEquals
    - ItemPointerCopy
    - Assert
    - compute_new_xmax_infomask
    - HeapTupleHeaderGetUpdateXid
    - XLogBeginInsert
    - XLogInsert
    - visibilitymap_pin
    - HEAP_XMAX_IS_KEYSHR_LOCKED
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    - ItemPointerGetBlockNumber
    - HEAP_XMAX_IS_LOCKED_ONLY
    linkageType: ''
    returnType: TM_Result
    signature: "TM_Result heap_lock_updated_tuple_rec(Relation rel, ItemPointer tid,
      TransactionId xid,\n\t\t\t\t\t\t\tLockTupleMode mode)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderIndicatesMovedPartitions
      Src: /src/postgres/src/backend/access/heap/heapam.c:6043,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:6044,1
    - Dst: MultiXactIdSetOldestMember
      Src: /src/postgres/src/backend/access/heap/heapam.c:6055,1
    - Dst: heap_lock_updated_tuple_rec
      Src: /src/postgres/src/backend/access/heap/heapam.c:6057,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 5
    argNames:
    - rel
    - tuple
    - ctid
    - xid
    - mode
    argTypes:
    - Relation
    - HeapTuple
    - ItemPointer
    - TransactionId
    - LockTupleMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6062
      start: 6035
    functionDepth: 6
    functionLinenumber: 6035
    functionLinenumberEnd: 6062
    functionName: heap_lock_updated_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - HeapTupleHeaderIndicatesMovedPartitions
    - ItemPointerEquals
    - heap_lock_updated_tuple_rec
    - MultiXactIdSetOldestMember
    linkageType: ''
    returnType: TM_Result
    signature: "TM_Result heap_lock_updated_tuple(Relation rel, HeapTuple tuple, ItemPointer
      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:6089,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:6089,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6090,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:6091,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:6093,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:6094,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:6095,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:6097,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:6097,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:6098,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:6100,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:6103,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6105,1
    - Dst: HeapTupleHeaderIsSpeculative
      Src: /src/postgres/src/backend/access/heap/heapam.c:6105,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam.c:6107,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/heapam.c:6116,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:6121,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6123,1
    - Dst: XLogSetRecordFlags
      Src: /src/postgres/src/backend/access/heap/heapam.c:6126,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:6128,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6129,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6131,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam.c:6133,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:6136,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6138,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 2
    argNames:
    - relation
    - tid
    argTypes:
    - Relation
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6139
      start: 6080
    functionDepth: 4
    functionLinenumber: 6080
    functionLinenumberEnd: 6139
    functionName: heap_finish_speculative
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - MarkBufferDirty
    - PageSetLSN
    - LockBuffer
    - HeapTupleHeaderIsSpeculative
    - ItemIdIsNormal
    - XLogRegisterData
    - START_CRIT_SECTION
    - ItemPointerGetOffsetNumber
    - PageGetItem
    - RelationNeedsWAL
    - ReadBuffer
    - PageGetItemId
    - elog
    - XLogSetRecordFlags
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - Assert
    - XLogBeginInsert
    - XLogInsert
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    - ItemPointerGetBlockNumber
    linkageType: ''
    returnType: void
    signature: void heap_finish_speculative(Relation relation, ItemPointer tid)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:6170,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6177,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:6177,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:6179,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6180,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:6181,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6183,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6189,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam.c:6189,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:6191,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:6191,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6192,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:6192,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:6194,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:6195,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam.c:6196,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:6204,1
    - Dst: IsToastRelation
      Src: /src/postgres/src/backend/access/heap/heapam.c:6205,1
    - Dst: HeapTupleHeaderIsSpeculative
      Src: /src/postgres/src/backend/access/heap/heapam.c:6205,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:6206,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6207,1
    - Dst: HeapTupleHeaderIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/heapam.c:6207,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:6215,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6227,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:6227,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:6232,1
    - Dst: PageSetPrunable
      Src: /src/postgres/src/backend/access/heap/heapam.c:6236,1
    - Dst: HeapTupleHeaderSetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:6248,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam.c:6253,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/heapam.c:6261,1
    - Dst: compute_infobits
      Src: /src/postgres/src/backend/access/heap/heapam.c:6267,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:6269,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6272,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:6273,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6274,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6278,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam.c:6280,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:6283,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6285,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/heap/heapam.c:6287,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6289,1
    - Dst: IsToastRelation
      Src: /src/postgres/src/backend/access/heap/heapam.c:6289,1
    - Dst: heap_toast_delete
      Src: /src/postgres/src/backend/access/heap/heapam.c:6290,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6299,1
    - Dst: pgstat_count_heap_delete
      Src: /src/postgres/src/backend/access/heap/heapam.c:6302,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 49
    argCount: 2
    argNames:
    - relation
    - tid
    argTypes:
    - Relation
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6303
      start: 6167
    functionDepth: 4
    functionLinenumber: 6167
    functionLinenumberEnd: 6303
    functionName: heap_abort_speculative
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - MarkBufferDirty
    - PageSetLSN
    - compute_infobits
    - ReleaseBuffer
    - LockBuffer
    - HeapTupleHeaderIsSpeculative
    - ItemIdIsNormal
    - XLogRegisterData
    - heap_toast_delete
    - START_CRIT_SECTION
    - RelationGetRelid
    - ItemPointerGetOffsetNumber
    - GetCurrentTransactionId
    - PageSetPrunable
    - PageGetItem
    - TransactionIdPrecedes
    - RelationNeedsWAL
    - ReadBuffer
    - PageIsAllVisible
    - HeapTupleHasExternal
    - PageGetItemId
    - TransactionIdIsValid
    - ItemPointerIsValid
    - elog
    - IsToastRelation
    - BufferGetPage
    - pgstat_count_heap_delete
    - Assert
    - HeapTupleHeaderSetXmin
    - XLogBeginInsert
    - XLogInsert
    - HeapTupleHeaderIsHeapOnly
    - ItemIdGetLength
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    - ItemPointerGetBlockNumber
    linkageType: ''
    returnType: void
    signature: void heap_abort_speculative(Relation relation, ItemPointer tid)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/heapam.c:6356,1
    - Dst: check_inplace_rel_lock
      Src: /src/postgres/src/backend/access/heap/heapam.c:6357,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6360,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:6360,1
    - Dst: CacheInvalidateHeapTupleInplace
      Src: /src/postgres/src/backend/access/heap/heapam.c:6371,1
    - Dst: LockTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:6373,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6374,1
    - Dst: HeapTupleSatisfiesUpdate
      Src: /src/postgres/src/backend/access/heap/heapam.c:6385,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/access/heap/heapam.c:6385,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:6391,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:6392,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:6393,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:6403,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:6404,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/heapam.c:6405,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:6412,1
    - Dst: DoesMultiXactIdConflict
      Src: /src/postgres/src/backend/access/heap/heapam.c:6421,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6424,1
    - Dst: release_callback
      Src: /src/postgres/src/backend/access/heap/heapam.c:6425,1
    - Dst: MultiXactIdWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:6427,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:6434,1
    - Dst: HEAP_XMAX_IS_KEYSHR_LOCKED
      Src: /src/postgres/src/backend/access/heap/heapam.c:6436,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6440,1
    - Dst: release_callback
      Src: /src/postgres/src/backend/access/heap/heapam.c:6441,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:6443,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6452,1
    - Dst: release_callback
      Src: /src/postgres/src/backend/access/heap/heapam.c:6453,1
    - Dst: UnlockTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:6467,1
    - Dst: ForgetInplace_Inval
      Src: /src/postgres/src/backend/access/heap/heapam.c:6468,1
    - Dst: InvalidateCatalogSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam.c:6469,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: 6472
      start: 6346
    functionDepth: 4
    functionLinenumber: 6346
    functionLinenumberEnd: 6472
    functionName: heap_inplace_lock
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - release_callback
    - XactLockTableWait
    - LockBuffer
    - HeapTupleSatisfiesUpdate
    - HeapTupleHeaderGetRawXmax
    - check_inplace_rel_lock
    - InvalidateCatalogSnapshot
    - RelationGetRelid
    - LockTuple
    - errmsg
    - BufferIsValid
    - UnlockTuple
    - TransactionIdIsCurrentTransactionId
    - GetCurrentCommandId
    - ForgetInplace_Inval
    - Assert
    - CacheInvalidateHeapTupleInplace
    - MultiXactIdWait
    - errmsg_internal
    - ereport
    - DoesMultiXactIdConflict
    - HEAP_XMAX_IS_KEYSHR_LOCKED
    - errcode
    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:6496,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:6496,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:6500,1
    - Dst: XLogStandbyInfoActive
      Src: /src/postgres/src/backend/access/heap/heapam.c:6506,1
    - Dst: inplaceGetInvalidationMessages
      Src: /src/postgres/src/backend/access/heap/heapam.c:6507,1
    - Dst: PreInplace_Inval
      Src: /src/postgres/src/backend/access/heap/heapam.c:6518,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6551,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:6552,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/heapam.c:6556,1
    - Dst: BufferGetBlock
      Src: /src/postgres/src/backend/access/heap/heapam.c:6560,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:6561,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:6570,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6576,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:6577,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:6579,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam.c:6583,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam.c:6584,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam.c:6586,1
    - Dst: BufferGetTag
      Src: /src/postgres/src/backend/access/heap/heapam.c:6587,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6588,1
    - Dst: XLogRegisterBlock
      Src: /src/postgres/src/backend/access/heap/heapam.c:6589,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/heapam.c:6591,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6595,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam.c:6597,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam.c:6600,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam.c:6602,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:6604,1
    - Dst: AtInplace_Inval
      Src: /src/postgres/src/backend/access/heap/heapam.c:6614,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/heapam.c:6617,1
    - Dst: UnlockTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:6618,1
    - Dst: AcceptInvalidationMessages
      Src: /src/postgres/src/backend/access/heap/heapam.c:6620,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/access/heap/heapam.c:6628,1
    - Dst: CacheInvalidateHeapTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:6629,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 45
    argCount: 4
    argNames:
    - relation
    - oldtup
    - tuple
    - buffer
    argTypes:
    - Relation
    - HeapTuple
    - HeapTuple
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6630
      start: 6482
    functionDepth: 4
    functionLinenumber: 6482
    functionLinenumberEnd: 6630
    functionName: heap_inplace_update_and_unlock
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - PageSetLSN
    - XLogRegisterBlock
    - MarkBufferDirty
    - BufferGetBlock
    - LockBuffer
    - XLogRegisterData
    - AtInplace_Inval
    - START_CRIT_SECTION
    - CacheInvalidateHeapTuple
    - ItemPointerGetOffsetNumber
    - BufferGetTag
    - inplaceGetInvalidationMessages
    - memcpy
    - RelationNeedsWAL
    - PreInplace_Inval
    - XLogRegisterBufData
    - UnlockTuple
    - elog
    - ItemPointerEquals
    - BufferGetPage
    - XLogStandbyInfoActive
    - Assert
    - XLogBeginInsert
    - XLogInsert
    - IsBootstrapProcessingMode
    - AcceptInvalidationMessages
    - 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:6639,1
    - Dst: UnlockTuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:6640,1
    - Dst: ForgetInplace_Inval
      Src: /src/postgres/src/backend/access/heap/heapam.c:6641,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - relation
    - oldtup
    - buffer
    argTypes:
    - Relation
    - HeapTuple
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6642
      start: 6635
    functionDepth: 1
    functionLinenumber: 6635
    functionLinenumberEnd: 6642
    functionName: heap_inplace_unlock
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - ForgetInplace_Inval
    - LockBuffer
    - UnlockTuple
    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:6715,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:6717,1
    - Dst: HEAP_LOCKED_UPGRADED
      Src: /src/postgres/src/backend/access/heap/heapam.c:6718,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:6724,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:6725,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:6726,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:6727,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:6729,1
    - Dst: MultiXactIdIsRunning
      Src: /src/postgres/src/backend/access/heap/heapam.c:6739,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:6740,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:6741,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:6742,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:6743,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:6746,1
    - Dst: MultiXactIdGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam.c:6754,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:6755,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:6756,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:6757,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:6758,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:6761,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam.c:6768,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:6769,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:6770,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:6771,1
    - Dst: GetMultiXactIdMembers
      Src: /src/postgres/src/backend/access/heap/heapam.c:6791,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:6792,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6825,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:6825,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:6827,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:6833,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:6839,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:6850,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:6852,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/heap/heapam.c:6865,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6878,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:6878,1
    - Dst: ISUPDATE_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:6880,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:6886,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam.c:6887,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:6889,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:6890,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:6891,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:6892,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:6913,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:6914,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:6915,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:6916,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:6918,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:6926,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam.c:6927,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam.c:6929,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:6952,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:6953,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:6954,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:6955,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:6960,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:6972,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:6981,1
    - Dst: MultiXactIdCreateFromMembers
      Src: /src/postgres/src/backend/access/heap/heapam.c:6993,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:6997,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: 7001
      start: 6696
    functionDepth: 1
    functionLinenumber: 6696
    functionLinenumberEnd: 7001
    functionName: FreezeMultiXactId
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - TransactionIdDidCommit
    - MultiXactIdIsValid
    - ISUPDATE_from_mxstatus
    - MultiXactIdIsRunning
    - MultiXactIdPrecedes
    - HEAP_LOCKED_UPGRADED
    - pfree
    - errdetail_internal
    - TransactionIdPrecedes
    - TransactionIdIsInProgress
    - GetMultiXactIdMembers
    - TransactionIdIsValid
    - MultiXactIdGetUpdateXid
    - palloc
    - TransactionIdIsCurrentTransactionId
    - Assert
    - MultiXactIdCreateFromMembers
    - errmsg_internal
    - ereport
    - errcode
    - HEAP_XMAX_IS_LOCKED_ONLY
    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: 20
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:7060,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:7071,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7072,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7076,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:7077,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:7078,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7079,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7083,1
    - Dst: HeapTupleHeaderGetXvac
      Src: /src/postgres/src/backend/access/heap/heapam.c:7094,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7095,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7097,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:7097,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7098,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7098,1
    - Dst: FreezeMultiXactId
      Src: /src/postgres/src/backend/access/heap/heapam.c:7123,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7147,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7147,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7148,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:7148,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7156,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7156,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7180,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7180,1
    - Dst: GetMultiXactIdHintBits
      Src: /src/postgres/src/backend/access/heap/heapam.c:7190,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7202,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7203,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:7203,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7210,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7212,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7215,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:7216,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:7217,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7218,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7222,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:7229,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:7232,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7235,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:7239,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:7240,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7241,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7246,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7257,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7265,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7266,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7272,1
    - Dst: heap_tuple_should_freeze
      Src: /src/postgres/src/backend/access/heap/heapam.c:7302,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 91
    argCount: 5
    argNames:
    - tuple
    - cutoffs
    - pagefrz
    - frz
    - totally_frozen
    argTypes:
    - HeapTupleHeader
    - struct VacuumCutoffs*
    - HeapPageFreeze*
    - HeapTupleFreeze*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7309
      start: 7046
    functionDepth: 2
    functionLinenumber: 7046
    functionLinenumberEnd: 7309
    functionName: heap_prepare_freeze_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - errcode
    - Assert
    - GetMultiXactIdHintBits
    - TransactionIdIsValid
    - errmsg_internal
    - ereport
    - MultiXactIdIsValid
    - TransactionIdIsNormal
    - MultiXactIdPrecedes
    - HeapTupleHeaderGetRawXmax
    - HeapTupleHeaderGetXvac
    - TransactionIdPrecedesOrEquals
    - FreezeMultiXactId
    - heap_tuple_should_freeze
    - HeapTupleHeaderGetXmin
    - TransactionIdPrecedes
    - HEAP_XMAX_IS_LOCKED_ONLY
    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:7323,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:7328,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:7331,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:7336,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7338,1
    - Dst: HeapTupleHeaderXminFrozen
      Src: /src/postgres/src/backend/access/heap/heapam.c:7338,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/heap/heapam.c:7339,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam.c:7339,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:7340,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:7341,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7342,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:7353,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7355,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7355,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/heap/heapam.c:7356,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam.c:7356,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:7357,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:7358,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7359,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - buffer
    - tuples
    - ntuples
    argTypes:
    - Buffer
    - HeapTupleFreeze*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7363
      start: 7319
    functionDepth: 4
    functionLinenumber: 7319
    functionLinenumberEnd: 7363
    functionName: heap_pre_freeze_checks
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderXminFrozen
    - Assert
    - PageGetItemId
    - TransactionIdDidCommit
    - errmsg_internal
    - ereport
    - unlikely
    - TransactionIdIsNormal
    - HeapTupleHeaderGetRawXmin
    - HeapTupleHeaderGetRawXmax
    - BufferGetPage
    - PageGetItem
    - errcode
    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:7375,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:7380,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:7383,1
    - Dst: heap_execute_freeze_tuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:7384,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - buffer
    - tuples
    - ntuples
    argTypes:
    - Buffer
    - HeapTupleFreeze*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7386
      start: 7372
    functionDepth: 4
    functionLinenumber: 7372
    functionLinenumberEnd: 7386
    functionName: heap_freeze_prepared_tuples
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - BufferGetPage
    - PageGetItem
    - PageGetItemId
    - heap_execute_freeze_tuple
    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:7418,1
    - Dst: heap_execute_freeze_tuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:7427,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 5
    argNames:
    - tuple
    - relfrozenxid
    - relminmxid
    - FreezeLimit
    - MultiXactCutoff
    argTypes:
    - HeapTupleHeader
    - TransactionId
    - TransactionId
    - TransactionId
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7429
      start: 7394
    functionDepth: 3
    functionLinenumber: 7394
    functionLinenumberEnd: 7429
    functionName: heap_freeze_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - heap_execute_freeze_tuple
    - heap_prepare_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:7454,1
    - Dst: TUPLOCK_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:7464,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:7503,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 3
    argNames:
    - multi
    - new_infomask
    - new_infomask2
    argTypes:
    - MultiXactId
    - uint16*
    - uint16*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7507
      start: 7438
    functionDepth: 1
    functionLinenumber: 7438
    functionLinenumberEnd: 7507
    functionName: GetMultiXactIdHintBits
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 3
    functionsReached:
    - GetMultiXactIdMembers
    - pfree
    - 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:7526,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7527,1
    - Dst: GetMultiXactIdMembers
      Src: /src/postgres/src/backend/access/heap/heapam.c:7533,1
    - Dst: ISUPDATE_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:7542,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7546,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:7558,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - xmax
    - t_infomask
    argTypes:
    - TransactionId
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7562
      start: 7519
    functionDepth: 1
    functionLinenumber: 7519
    functionLinenumberEnd: 7562
    functionName: MultiXactIdGetUpdateXid
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 2
    functionsReached:
    - GetMultiXactIdMembers
    - pfree
    - Assert
    - 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:7574,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:7574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tup
    argTypes:
    - HeapTupleHeaderData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7576
      start: 7571
    functionDepth: 2
    functionLinenumber: 7571
    functionLinenumberEnd: 7576
    functionName: HeapTupleGetUpdateXid
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 2
    functionsReached:
    - MultiXactIdGetUpdateXid
    - HeapTupleHeaderGetRawXmax
    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:7596,1
    - Dst: GetMultiXactIdMembers
      Src: /src/postgres/src/backend/access/heap/heapam.c:7599,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:7600,1
    - Dst: LOCKMODE_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:7613,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:7617,1
    - Dst: DoLockModesConflict
      Src: /src/postgres/src/backend/access/heap/heapam.c:7627,1
    - Dst: ISUPDATE_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:7630,1
    - Dst: TransactionIdDidAbort
      Src: /src/postgres/src/backend/access/heap/heapam.c:7633,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam.c:7639,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:7652,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: 7656
      start: 7587
    functionDepth: 1
    functionLinenumber: 7587
    functionLinenumberEnd: 7656
    functionName: DoesMultiXactIdConflict
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 4
    functionsReached:
    - TransactionIdIsInProgress
    - pfree
    - LOCKMODE_from_mxstatus
    - DoLockModesConflict
    - GetMultiXactIdMembers
    - ISUPDATE_from_mxstatus
    - TransactionIdDidAbort
    - HEAP_LOCKED_UPGRADED
    - TransactionIdIsCurrentTransactionId
    - HEAP_XMAX_IS_LOCKED_ONLY
    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:7699,1
    - Dst: GetMultiXactIdMembers
      Src: /src/postgres/src/backend/access/heap/heapam.c:7700,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:7701,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:7712,1
    - Dst: DoLockModesConflict
      Src: /src/postgres/src/backend/access/heap/heapam.c:7718,1
    - Dst: LOCKMODE_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:7718,1
    - Dst: LOCKMODE_from_mxstatus
      Src: /src/postgres/src/backend/access/heap/heapam.c:7719,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam.c:7721,1
    - Dst: ConditionalXactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:7738,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/access/heap/heapam.c:7743,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:7746,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
    - ItemPointer
    - XLTW_Oper
    - int*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7753
      start: 7687
    functionDepth: 1
    functionLinenumber: 7687
    functionLinenumberEnd: 7753
    functionName: Do_MultiXactIdWait
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsInProgress
    - ConditionalXactLockTableWait
    - LOCKMODE_from_mxstatus
    - pfree
    - DoLockModesConflict
    - GetMultiXactIdMembers
    - XactLockTableWait
    - HEAP_LOCKED_UPGRADED
    - TransactionIdIsCurrentTransactionId
    - HEAP_XMAX_IS_LOCKED_ONLY
    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, ItemPointer 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:7770,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - multi
    - status
    - infomask
    - rel
    - ctid
    - oper
    - remaining
    argTypes:
    - MultiXactId
    - MultiXactStatus
    - uint16
    - Relation
    - ItemPointer
    - XLTW_Oper
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7772
      start: 7765
    functionDepth: 2
    functionLinenumber: 7765
    functionLinenumberEnd: 7772
    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, ItemPointer 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:7792,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: 7794
      start: 7787
    functionDepth: 2
    functionLinenumber: 7787
    functionLinenumberEnd: 7794
    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:7811,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7812,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:7822,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:7823,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:7828,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7829,1
    - Dst: HeapTupleHeaderGetXvac
      Src: /src/postgres/src/backend/access/heap/heapam.c:7835,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7836,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleHeader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7841
      start: 7802
    functionDepth: 2
    functionLinenumber: 7802
    functionLinenumberEnd: 7841
    functionName: heap_tuple_needs_eventual_freeze
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - MultiXactIdIsValid
    - TransactionIdIsNormal
    - HeapTupleHeaderGetXvac
    - HeapTupleHeaderGetRawXmax
    - HeapTupleHeaderGetXmin
    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:7868,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7869,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7871,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:7871,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7872,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7874,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:7882,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:7884,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7886,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7888,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:7888,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7890,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7892,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:7895,1
    - Dst: HEAP_LOCKED_UPGRADED
      Src: /src/postgres/src/backend/access/heap/heapam.c:7899,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7902,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7913,1
    - Dst: MultiXactIdPrecedesOrEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:7913,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7914,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7916,1
    - Dst: GetMultiXactIdMembers
      Src: /src/postgres/src/backend/access/heap/heapam.c:7920,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:7921,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7926,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:7926,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7927,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7929,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:7933,1
    - Dst: HeapTupleHeaderGetXvac
      Src: /src/postgres/src/backend/access/heap/heapam.c:7938,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:7939,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:7941,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:7941,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7942,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: 7950
      start: 7857
    functionDepth: 2
    functionLinenumber: 7857
    functionLinenumberEnd: 7950
    functionName: heap_tuple_should_freeze
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - HEAP_LOCKED_UPGRADED
    - GetMultiXactIdMembers
    - MultiXactIdPrecedesOrEquals
    - MultiXactIdIsValid
    - TransactionIdIsNormal
    - MultiXactIdPrecedes
    - HeapTupleHeaderGetRawXmax
    - HeapTupleHeaderGetXvac
    - TransactionIdPrecedesOrEquals
    - HeapTupleHeaderGetXmin
    - TransactionIdPrecedes
    - HEAP_XMAX_IS_LOCKED_ONLY
    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:7969,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam.c:7970,1
    - Dst: HeapTupleHeaderGetXvac
      Src: /src/postgres/src/backend/access/heap/heapam.c:7971,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:7975,1
    - Dst: HeapTupleHeaderXminCommitted
      Src: /src/postgres/src/backend/access/heap/heapam.c:7985,1
    - Dst: HeapTupleHeaderXminInvalid
      Src: /src/postgres/src/backend/access/heap/heapam.c:7986,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam.c:7986,1
    - Dst: TransactionIdFollows
      Src: /src/postgres/src/backend/access/heap/heapam.c:7989,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 2
    argNames:
    - tuple
    - snapshotConflictHorizon
    argTypes:
    - HeapTupleHeader
    - TransactionId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7992
      start: 7965
    functionDepth: 2
    functionLinenumber: 7965
    functionLinenumberEnd: 7992
    functionName: HeapTupleHeaderAdvanceConflictHorizon
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - TransactionIdFollows
    - HeapTupleHeaderGetUpdateXid
    - HeapTupleHeaderXminCommitted
    - TransactionIdDidCommit
    - HeapTupleHeaderGetXvac
    - HeapTupleHeaderXminInvalid
    - HeapTupleHeaderGetXmin
    - TransactionIdPrecedes
    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:8023,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8025,1
    - Dst: PrefetchBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:8026,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - rel
    - prefetch_state
    - prefetch_count
    argTypes:
    - Relation
    - IndexDeletePrefetchState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8037
      start: 8005
    functionDepth: 3
    functionLinenumber: 8005
    functionLinenumberEnd: 8037
    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:8055,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8058,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:8058,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/heap/heapam.c:8060,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:8061,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:8062,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:8063,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8064,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam.c:8067,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:8069,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/heap/heapam.c:8070,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/heap/heapam.c:8070,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:8071,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:8072,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:8073,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8074,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam.c:8077,1
    - Dst: ItemIdHasStorage
      Src: /src/postgres/src/backend/access/heap/heapam.c:8079,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8083,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:8083,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:8084,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/heap/heapam.c:8086,1
    - Dst: HeapTupleHeaderIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/heapam.c:8086,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/heapam.c:8087,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/heapam.c:8088,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/heapam.c:8089,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8090,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/heapam.c:8093,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 5
    argNames:
    - delstate
    - page
    - maxoff
    - htid
    - istatus
    argTypes:
    - TM_IndexDeleteOp*
    - Page
    - OffsetNumber
    - ItemPointer
    - TM_IndexStatus*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8095
      start: 8050
    functionDepth: 3
    functionLinenumber: 8050
    functionLinenumberEnd: 8095
    functionName: index_delete_check_htid
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - Assert
    - PageGetItemId
    - ItemPointerGetOffsetNumber
    - PageGetItem
    - ItemIdIsUsed
    - HeapTupleHeaderIsHeapOnly
    - OffsetNumberIsValid
    - ereport
    - errmsg_internal
    - ItemIdHasStorage
    - unlikely
    - ItemIdIsNormal
    - ItemPointerGetBlockNumber
    - RelationGetRelationName
    - errcode
    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\tItemPointer htid, TM_IndexStatus *istatus)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: InitNonVacuumableSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam.c:8135,1
    - Dst: GlobalVisTestFor
      Src: /src/postgres/src/backend/access/heap/heapam.c:8135,1
    - Dst: index_delete_sort
      Src: /src/postgres/src/backend/access/heap/heapam.c:8138,1
    - Dst: bottomup_sort_and_shrink
      Src: /src/postgres/src/backend/access/heap/heapam.c:8148,1
    - Dst: IsCatalogRelation
      Src: /src/postgres/src/backend/access/heap/heapam.c:8164,1
    - Dst: get_tablespace_maintenance_io_concurrency
      Src: /src/postgres/src/backend/access/heap/heapam.c:8168,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8173,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8174,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/heap/heapam.c:8175,1
    - Dst: index_delete_prefetch_buffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:8179,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8183,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8197,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8259,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:8267,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:8268,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8270,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:8271,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8273,1
    - Dst: index_delete_prefetch_buffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:8282,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:8285,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:8287,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8288,1
    - Dst: index_delete_check_htid
      Src: /src/postgres/src/backend/access/heap/heapam.c:8297,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8300,1
    - Dst: heap_hot_search_buffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:8307,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8317,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8329,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam.c:8347,1
    - Dst: ItemIdIsRedirected
      Src: /src/postgres/src/backend/access/heap/heapam.c:8348,1
    - Dst: ItemIdGetRedirect
      Src: /src/postgres/src/backend/access/heap/heapam.c:8350,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam.c:8368,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam.c:8371,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:8376,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:8377,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:8377,1
    - Dst: HeapTupleHeaderAdvanceConflictHorizon
      Src: /src/postgres/src/backend/access/heap/heapam.c:8380,1
    - Dst: HeapTupleHeaderIsHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam.c:8389,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8393,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8393,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8394,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam.c:8395,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:8402,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8410,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 86
    argCount: 2
    argNames:
    - rel
    - delstate
    argTypes:
    - Relation
    - TM_IndexDeleteOp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8414
      start: 8110
    functionDepth: 5
    functionLinenumber: 8110
    functionLinenumberEnd: 8414
    functionName: heap_index_delete_tuples
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - InitNonVacuumableSnapshot
    - LockBuffer
    - GlobalVisTestFor
    - HeapTupleHeaderAdvanceConflictHorizon
    - ItemIdIsNormal
    - Min
    - index_delete_check_htid
    - ItemPointerGetOffsetNumber
    - bottomup_sort_and_shrink
    - get_tablespace_maintenance_io_concurrency
    - ItemIdGetRedirect
    - PageGetItem
    - HeapTupleHeaderGetXmin
    - ReadBuffer
    - BufferIsValid
    - PageGetItemId
    - HeapTupleHeaderIsHotUpdated
    - ItemIdIsRedirected
    - TransactionIdIsValid
    - index_delete_prefetch_buffer
    - heap_hot_search_buffer
    - IsCatalogRelation
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - TransactionIdEquals
    - Assert
    - HeapTupleHeaderGetUpdateXid
    - index_delete_sort
    - ItemPointerGetBlockNumber
    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:8426,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8427,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8433,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8434,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8440,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - deltid1
    - deltid2
    argTypes:
    - TM_IndexDelete*
    - TM_IndexDelete*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8443
      start: 8419
    functionDepth: 3
    functionLinenumber: 8419
    functionLinenumberEnd: 8443
    functionName: index_delete_sort_cmp
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - ItemPointerGetOffsetNumber
    - ItemPointerGetBlockNumber
    - Assert
    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:8470,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/heap/heapam.c:8473,1
    - Dst: index_delete_sort_cmp
      Src: /src/postgres/src/backend/access/heap/heapam.c:8480,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - delstate
    argTypes:
    - TM_IndexDeleteOp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8488
      start: 8455
    functionDepth: 4
    functionLinenumber: 8455
    functionLinenumberEnd: 8488
    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:8558,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8559,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8574,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8586,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - blockgroups
    - nblockgroups
    - deltids
    argTypes:
    - IndexDeleteCounts*
    - int
    - TM_IndexDelete*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8589
      start: 8551
    functionDepth: 3
    functionLinenumber: 8551
    functionLinenumberEnd: 8589
    functionName: bottomup_nblocksfavorable
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - ItemPointerGetBlockNumber
    - Assert
    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:8620,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/access/heap/heapam.c:8621,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/backend/access/heap/heapam.c:8644,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8647
      start: 8594
    functionDepth: 3
    functionLinenumber: 8594
    functionLinenumberEnd: 8647
    functionName: bottomup_sort_and_shrink_cmp
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - pg_nextpower2_32
    - pg_unreachable
    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:8677,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8678,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/heap/heapam.c:8681,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8689,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8694,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8694,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:8695,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8697,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/access/heap/heapam.c:8748,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/heap/heapam.c:8752,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/heap/heapam.c:8754,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/heap/heapam.c:8756,1
    - Dst: bottomup_nblocksfavorable
      Src: /src/postgres/src/backend/access/heap/heapam.c:8758,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam.c:8766,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam.c:8772,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:8776,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/heapam.c:8777,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 36
    argCount: 1
    argNames:
    - delstate
    argTypes:
    - TM_IndexDeleteOp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8780
      start: 8667
    functionDepth: 4
    functionLinenumber: 8667
    functionLinenumberEnd: 8780
    functionName: bottomup_sort_and_shrink
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - Min
    - Assert
    - qsort
    - pfree
    - palloc
    - memcpy
    - bottomup_nblocksfavorable
    - ItemPointerGetBlockNumber
    - BlockNumberIsValid
    - pg_nextpower2_32
    linkageType: ''
    returnType: int
    signature: int bottomup_sort_and_shrink(TM_IndexDeleteOp *delstate)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8804,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:8804,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8805,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:8805,1
    - Dst: RelationIsAccessibleInLogicalDecoding
      Src: /src/postgres/src/backend/access/heap/heapam.c:8809,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8811,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:8812,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:8814,1
    - Dst: XLogHintBitIsNeeded
      Src: /src/postgres/src/backend/access/heap/heapam.c:8817,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:8819,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8821,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 5
    argNames:
    - rel
    - heap_buffer
    - vm_buffer
    - snapshotConflictHorizon
    - vmflags
    argTypes:
    - Relation
    - Buffer
    - Buffer
    - TransactionId
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8824
      start: 8796
    functionDepth: 2
    functionLinenumber: 8796
    functionLinenumberEnd: 8824
    functionName: log_heap_visible
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 0
    functionsReached:
    - Assert
    - BufferIsValid
    - XLogBeginInsert
    - XLogInsert
    - XLogRegisterBuffer
    - XLogRegisterData
    - RelationIsAccessibleInLogicalDecoding
    - XLogHintBitIsNeeded
    linkageType: ''
    returnType: XLogRecPtr
    signature: "XLogRecPtr log_heap_visible(Relation rel, Buffer heap_buffer, Buffer
      vm_buffer,\n\t\t\t\t TransactionId snapshotConflictHorizon, uint8 vmflags)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam.c:8844,1
    - Dst: RelationIsLogicallyLogged
      Src: /src/postgres/src/backend/access/heap/heapam.c:8845,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8850,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/heapam.c:8850,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8852,1
    - Dst: HeapTupleIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/heapam.c:8854,1
    - Dst: XLogCheckBufferNeedsBackup
      Src: /src/postgres/src/backend/access/heap/heapam.c:8880,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/heap/heapam.c:8888,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/heap/heapam.c:8902,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8934,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8935,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8944,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:8945,1
    - Dst: compute_infobits
      Src: /src/postgres/src/backend/access/heap/heapam.c:8946,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam.c:8950,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:8951,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:8959,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/heap/heapam.c:8961,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:8963,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/heapam.c:8974,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/heapam.c:8978,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/heapam.c:8982,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:8989,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/heapam.c:8996,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/heapam.c:8999,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/heapam.c:9012,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/heapam.c:9018,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:9031,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:9034,1
    - Dst: XLogSetRecordFlags
      Src: /src/postgres/src/backend/access/heap/heapam.c:9039,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:9041,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 91
    argCount: 8
    argNames:
    - reln
    - oldbuf
    - newbuf
    - oldtup
    - newtup
    - old_key_tuple
    - all_visible_cleared
    - new_all_visible_cleared
    argTypes:
    - Relation
    - Buffer
    - Buffer
    - HeapTuple
    - HeapTuple
    - HeapTuple
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9044
      start: 8830
    functionDepth: 4
    functionLinenumber: 8830
    functionLinenumberEnd: 9044
    functionName: log_heap_update
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 1
    functionsReached:
    - Min
    - Assert
    - XLogCheckBufferNeedsBackup
    - compute_infobits
    - XLogBeginInsert
    - ItemPointerGetOffsetNumber
    - XLogRegisterBufData
    - XLogInsert
    - RelationIsLogicallyLogged
    - XLogRegisterBuffer
    - HeapTupleHeaderGetRawXmax
    - XLogRegisterData
    - HeapTupleIsHeapOnly
    - XLogSetRecordFlags
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - RelationNeedsWAL
    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)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:9060,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:9060,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:9061,1
    - Dst: GetTopTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam.c:9063,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:9073,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:9074,1
    - Dst: HeapTupleHeaderXminInvalid
      Src: /src/postgres/src/backend/access/heap/heapam.c:9074,1
    - Dst: HeapTupleHeaderGetCmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:9075,1
    - Dst: HeapTupleHeaderGetCmax
      Src: /src/postgres/src/backend/access/heap/heapam.c:9076,1
    - Dst: HeapTupleHeaderGetRawCommandId
      Src: /src/postgres/src/backend/access/heap/heapam.c:9077,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam.c:9091,1
    - Dst: HeapTupleHeaderGetRawCommandId
      Src: /src/postgres/src/backend/access/heap/heapam.c:9093,1
    - Dst: HeapTupleHeaderGetRawCommandId
      Src: /src/postgres/src/backend/access/heap/heapam.c:9100,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:9110,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/heapam.c:9111,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/heapam.c:9115,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 2
    argNames:
    - relation
    - tup
    argTypes:
    - Relation
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9118
      start: 9052
    functionDepth: 2
    functionLinenumber: 9052
    functionLinenumberEnd: 9118
    functionName: log_heap_new_cid
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 4
    functionsReached:
    - Assert
    - HeapTupleHeaderGetCmax
    - XLogBeginInsert
    - XLogInsert
    - HeapTupleHeaderGetRawCommandId
    - ItemPointerIsValid
    - XLogRegisterData
    - HeapTupleHeaderXminInvalid
    - GetTopTransactionId
    - HeapTupleHeaderGetCmin
    - HEAP_XMAX_IS_LOCKED_ONLY
    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:9137,1
    - Dst: RelationIsLogicallyLogged
      Src: /src/postgres/src/backend/access/heap/heapam.c:9146,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/heap/heapam.c:9158,1
    - Dst: toast_flatten_tuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:9161,1
    - Dst: RelationGetIndexAttrBitmap
      Src: /src/postgres/src/backend/access/heap/heapam.c:9171,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/access/heap/heapam.c:9180,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:9188,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/access/heap/heapam.c:9192,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:9194,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:9199,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/access/heap/heapam.c:9202,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/heap/heapam.c:9211,1
    - Dst: toast_flatten_tuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:9215,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/access/heap/heapam.c:9216,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: 9220
      start: 9133
    functionDepth: 1
    functionLinenumber: 9133
    functionLinenumberEnd: 9220
    functionName: ExtractReplicaIdentity
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 2
    functionsReached:
    - heap_form_tuple
    - Assert
    - heap_freetuple
    - bms_is_empty
    - heap_deform_tuple
    - RelationGetDescr
    - RelationIsLogicallyLogged
    - toast_flatten_tuple
    - bms_is_member
    - RelationGetIndexAttrBitmap
    - bms_free
    - HeapTupleHasExternal
    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:9245,1
    - Dst: HeapTupleSatisfiesVacuum
      Src: /src/postgres/src/backend/access/heap/heapam.c:9259,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:9265,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam.c:9270,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:9272,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:9274,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:9277,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam.c:9282,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:9285,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam.c:9294,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:9305,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam.c:9305,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam.c:9306,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:9306,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/heapam.c:9312,1
    - Dst: GetTopTransactionIdIfAny
      Src: /src/postgres/src/backend/access/heap/heapam.c:9312,1
    - Dst: SubTransGetTopmostTransaction
      Src: /src/postgres/src/backend/access/heap/heapam.c:9314,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam.c:9315,1
    - Dst: CheckForSerializableConflictOut
      Src: /src/postgres/src/backend/access/heap/heapam.c:9318,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: 9319
      start: 9237
    functionDepth: 2
    functionLinenumber: 9237
    functionLinenumberEnd: 9319
    functionName: HeapCheckForSerializableConflictOut
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam.c
    functionUses: 7
    functionsReached:
    - TransactionIdEquals
    - HeapTupleHeaderGetUpdateXid
    - Assert
    - GetTopTransactionIdIfAny
    - TransactionIdIsValid
    - HeapTupleSatisfiesVacuum
    - elog
    - CheckForSerializableConflictOutNeeded
    - TransactionIdFollowsOrEquals
    - SubTransGetTopmostTransaction
    - CheckForSerializableConflictOut
    - HeapTupleHeaderGetXmin
    - TransactionIdPrecedes
    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:
    - toast_delete_external
    - heap_deform_tuple
    - Assert
    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
    - int
    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:
    - heap_compute_data_size
    - Assert
    - toast_tuple_find_biggest_attribute
    - HeapTupleHeaderSetNatts
    - heap_fill_tuple
    - heap_deform_tuple
    - toast_tuple_cleanup
    - RelationGetToastTupleTarget
    - TupleDescAttr
    - toast_tuple_init
    - palloc0
    - BITMAPLEN
    - toast_tuple_externalize
    - memcpy
    - toast_tuple_try_compression
    - MAXALIGN
    linkageType: ''
    returnType: HeapTuple
    signature: "HeapTuple heap_toast_insert_or_update(Relation rel, HeapTuple newtup,
      HeapTuple oldtup,\n\t\t\t\t\t\t\tint 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:
    - heap_form_tuple
    - Assert
    - pfree
    - memset
    - heap_deform_tuple
    - VARATT_IS_EXTERNAL
    - PointerGetDatum
    - TupleDescCompactAttr
    - detoast_external_attr
    - 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: 2
    functionLinenumber: 448
    functionLinenumberEnd: 546
    functionName: toast_flatten_tuple_to_datum
    functionSourceFile: /src/postgres/src/backend/access/heap/heaptoast.c
    functionUses: 0
    functionsReached:
    - heap_deform_tuple
    - VARATT_IS_EXTERNAL
    - HeapTupleHeaderSetDatumLength
    - HeapTupleHeaderSetTypMod
    - heap_compute_data_size
    - pfree
    - heap_fill_tuple
    - ItemPointerSetInvalid
    - BITMAPLEN
    - memcpy
    - DatumGetPointer
    - VARATT_IS_COMPRESSED
    - Assert
    - HeapTupleHeaderSetTypeId
    - HeapTupleHeaderSetNatts
    - memset
    - palloc0
    - PointerGetDatum
    - detoast_attr
    - TupleDescCompactAttr
    - MAXALIGN
    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:
    - heap_form_tuple
    - Assert
    - pfree
    - VARATT_IS_EXTERNAL
    - PointerGetDatum
    - detoast_external_attr
    - TupleDescCompactAttr
    - memcpy
    - DatumGetPointer
    linkageType: ''
    returnType: HeapTuple
    signature: "HeapTuple toast_build_flattened_tuple(TupleDesc tupleDesc,\n\t\t\t\t\t\t\tDatum
      *values,\n\t\t\t\t\t\t\tbool *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
    - struct 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_endscan_ordered
    - VARATT_IS_SHORT
    - RelationGetRelationName
    - VARATT_IS_EXTENDED
    - Int32GetDatum
    - ScanKeyInit
    - memcpy
    - toast_close_indexes
    - DatumGetPointer
    - toast_open_indexes
    - VARSIZE_SHORT
    - DatumGetInt32
    - VARSIZE
    - VARDATA
    - elog
    - systable_beginscan_ordered
    - get_toast_snapshot
    - systable_getnext_ordered
    - ObjectIdGetDatum
    - Assert
    - fastgetattr
    - errmsg_internal
    - ereport
    - VARDATA_SHORT
    - errcode
    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   struct
      varlena *result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:246,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:249,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:252,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:258,1
    - Dst: smgr_bulk_start_rel
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:263,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:271,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:279,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:284,1
    - Dst: logical_begin_heap_rewrite
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:286,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: 289
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 289
    functionName: begin_heap_rewrite
    functionSourceFile: /src/postgres/src/backend/access/heap/rewriteheap.c
    functionUses: 2
    functionsReached:
    - smgr_bulk_start_rel
    - MemoryContextSwitchTo
    - hash_create
    - palloc0
    - AllocSetContextCreate
    - RelationGetNumberOfBlocks
    - logical_begin_heap_rewrite
    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:306,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:308,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:310,1
    - Dst: raw_heap_insert
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:311,1
    - Dst: smgr_bulk_write
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:317,1
    - Dst: smgr_bulk_finish
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:321,1
    - Dst: logical_end_heap_rewrite
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:323,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:326,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - RewriteState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 296
    functionDepth: 2
    functionLinenumber: 296
    functionLinenumberEnd: 327
    functionName: end_heap_rewrite
    functionSourceFile: /src/postgres/src/backend/access/heap/rewriteheap.c
    functionUses: 2
    functionsReached:
    - MemoryContextDelete
    - hash_seq_search
    - smgr_bulk_write
    - hash_seq_init
    - logical_end_heap_rewrite
    - raw_heap_insert
    - ItemPointerSetInvalid
    - smgr_bulk_finish
    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:350,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:358,1
    - Dst: heap_freeze_tuple
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:371,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:381,1
    - Dst: HeapTupleHeaderIsOnlyLocked
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:387,1
    - Dst: HeapTupleHeaderIndicatesMovedPartitions
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:388,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:389,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:394,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:395,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:399,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:412,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:414,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:424,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:426,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:429,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:435,1
    - Dst: raw_heap_insert
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:454,1
    - Dst: logical_rewrite_heap_tuple
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:457,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:468,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:468,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:476,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:477,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:480,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:491,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:501,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:503,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:516,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:518,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:526,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:530,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 58
    argCount: 3
    argNames:
    - state
    - old_tuple
    - new_tuple
    argTypes:
    - RewriteState
    - HeapTuple
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 340
    functionDepth: 4
    functionLinenumber: 340
    functionLinenumberEnd: 531
    functionName: rewrite_heap_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/rewriteheap.c
    functionUses: 2
    functionsReached:
    - HeapTupleHeaderGetUpdateXid
    - MemoryContextSwitchTo
    - Assert
    - heap_freetuple
    - memset
    - logical_rewrite_heap_tuple
    - ItemPointerSetInvalid
    - raw_heap_insert
    - hash_search
    - HeapTupleHeaderIndicatesMovedPartitions
    - ItemPointerEquals
    - heap_freeze_tuple
    - heap_copytuple
    - memcpy
    - HeapTupleHeaderGetXmin
    - TransactionIdPrecedes
    - HeapTupleHeaderIsOnlyLocked
    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:564,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:565,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:568,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:574,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:575,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:577,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - state
    - old_tuple
    argTypes:
    - RewriteState
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 542
    functionDepth: 2
    functionLinenumber: 542
    functionLinenumberEnd: 582
    functionName: rewrite_heap_dead_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/rewriteheap.c
    functionUses: 1
    functionsReached:
    - Assert
    - heap_freetuple
    - memset
    - hash_search
    - HeapTupleHeaderGetXmin
    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:612,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:612,1
    - Dst: HeapTupleHasExternal
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:615,1
    - Dst: heap_toast_insert_or_update
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:626,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:632,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:638,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:639,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:640,1
    - Dst: RelationGetTargetPageFreeSpace
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:644,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:651,1
    - Dst: smgr_bulk_write
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:660,1
    - Dst: smgr_bulk_get_buf
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:670,1
    - Dst: PageInit
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:672,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:676,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:679,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:682,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:688,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:693,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:694,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:701,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 2
    argNames:
    - state
    - tup
    argTypes:
    - RewriteState
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 592
    functionDepth: 3
    functionLinenumber: 592
    functionLinenumberEnd: 702
    functionName: raw_heap_insert
    functionSourceFile: /src/postgres/src/backend/access/heap/rewriteheap.c
    functionUses: 2
    functionsReached:
    - ItemPointerSet
    - PageAddItem
    - RelationGetTargetPageFreeSpace
    - heap_freetuple
    - PageInit
    - PageGetItem
    - HeapTupleHasExternal
    - errmsg
    - PageGetHeapFreeSpace
    - PageGetItemId
    - smgr_bulk_get_buf
    - smgr_bulk_write
    - ItemPointerIsValid
    - elog
    - Assert
    - heap_toast_insert_or_update
    - ereport
    - errcode
    - MAXALIGN
    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:770,1
    - Dst: ProcArrayGetReplicationSlotXmin
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:775,1
    - Dst: GetXLogInsertRecPtr
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:789,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:797,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - state
    argTypes:
    - RewriteState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 758
    functionDepth: 1
    functionLinenumber: 758
    functionLinenumberEnd: 801
    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:813,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:819,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:822,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:823,1
    - Dst: dclist_count
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:831,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:843,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:851,1
    - Dst: dclist_foreach_modify
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:856,1
    - Dst: dclist_container
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:860,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:862,1
    - Dst: dclist_delete_from
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:866,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:867,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:873,1
    - Dst: dclist_count
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:873,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:874,1
    - Dst: FileWrite
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:880,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:883,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:884,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:885,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:889,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:890,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:891,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:894,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:896,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:898,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 41
    argCount: 1
    argNames:
    - state
    argTypes:
    - RewriteState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 806
    functionDepth: 3
    functionLinenumber: 806
    functionLinenumberEnd: 899
    functionName: logical_heap_rewrite_flush_mappings
    functionSourceFile: /src/postgres/src/backend/access/heap/rewriteheap.c
    functionUses: 0
    functionsReached:
    - XLogRegisterData
    - errcode_for_file_access
    - pfree
    - RelationGetRelid
    - dclist_foreach_modify
    - dclist_count
    - memcpy
    - errmsg
    - hash_seq_search
    - hash_seq_init
    - elog
    - palloc
    - Assert
    - dclist_container
    - dclist_delete_from
    - FileWrite
    - XLogBeginInsert
    - XLogInsert
    - ereport
    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:916,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:919,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:920,1
    - Dst: FileSync
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:922,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:923,1
    - Dst: data_sync_elevel
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:923,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:924,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:925,1
    - Dst: FileClose
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:926,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - state
    argTypes:
    - RewriteState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 904
    functionDepth: 4
    functionLinenumber: 904
    functionLinenumberEnd: 929
    functionName: logical_end_heap_rewrite
    functionSourceFile: /src/postgres/src/backend/access/heap/rewriteheap.c
    functionUses: 1
    functionsReached:
    - errmsg
    - FileSync
    - hash_seq_search
    - FileClose
    - hash_seq_init
    - ereport
    - logical_heap_rewrite_flush_mappings
    - data_sync_elevel
    - 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:943,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:946,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:963,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:966,1
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:967,1
    - Dst: dclist_init
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:969,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:971,1
    - Dst: PathNameOpenFile
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:972,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:975,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:976,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:977,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:980,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:982,1
    - Dst: dclist_push_tail
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:983,1
    - Dst: logical_heap_rewrite_flush_mappings
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:991,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - state
    - xid
    - map
    argTypes:
    - RewriteState
    - TransactionId
    - LogicalRewriteMappingData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 934
    functionDepth: 4
    functionLinenumber: 934
    functionLinenumberEnd: 992
    functionName: logical_rewrite_log_mapping
    functionSourceFile: /src/postgres/src/backend/access/heap/rewriteheap.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - errmsg
    - RelationGetRelid
    - dclist_init
    - GetCurrentTransactionId
    - snprintf
    - PathNameOpenFile
    - ereport
    - hash_search
    - dclist_push_tail
    - logical_heap_rewrite_flush_mappings
    - memcpy
    - MemoryContextAlloc
    - errcode_for_file_access
    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:1014,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1016,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1021,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1021,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1024,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1031,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1035,1
    - Dst: logical_rewrite_log_mapping
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1063,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1065,1
    - Dst: logical_rewrite_log_mapping
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1066,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 3
    argNames:
    - state
    - old_tid
    - new_tuple
    argTypes:
    - RewriteState
    - ItemPointerData
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1067
      start: 998
    functionDepth: 5
    functionLinenumber: 998
    functionLinenumberEnd: 1067
    functionName: logical_rewrite_heap_tuple
    functionSourceFile: /src/postgres/src/backend/access/heap/rewriteheap.c
    functionUses: 1
    functionsReached:
    - TransactionIdEquals
    - HeapTupleHeaderGetUpdateXid
    - TransactionIdIsNormal
    - HeapTupleHeaderGetXmin
    - logical_rewrite_log_mapping
    - TransactionIdPrecedes
    - HEAP_XMAX_IS_LOCKED_ONLY
    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:1081,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1083,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1086,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1087,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1089,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1092,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1093,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1094,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1100,1
    - Dst: ftruncate
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1101,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1102,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1103,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1104,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1106,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1108,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1114,1
    - Dst: pg_pwrite
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1115,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1120,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1121,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1122,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1124,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1131,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1132,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1133,1
    - Dst: data_sync_elevel
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1133,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1134,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1135,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1136,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1138,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1139,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1140,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1141,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 1
    argNames:
    - r
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1142
      start: 1072
    functionDepth: 3
    functionLinenumber: 1072
    functionLinenumberEnd: 1142
    functionName: heap_xlog_logical_rewrite
    functionSourceFile: /src/postgres/src/backend/access/heap/rewriteheap.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - errmsg
    - pgstat_report_wait_start
    - ftruncate
    - pg_pwrite
    - CloseTransientFile
    - snprintf
    - ereport
    - OpenTransientFile
    - XLogRecGetData
    - pgstat_report_wait_end
    - data_sync_elevel
    - XLogRecGetXid
    - pg_fsync
    - errcode_for_file_access
    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:1167,1
    - Dst: ReplicationSlotsComputeLogicalRestartLSN
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1170,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1176,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1177,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1188,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1189,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1192,1
    - Dst: get_dirent_type
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1193,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1199,1
    - Dst: sscanf
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1202,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1204,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1210,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1211,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1212,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1213,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1214,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1219,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1227,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1228,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1229,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1236,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1237,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1238,1
    - Dst: data_sync_elevel
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1238,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1239,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1240,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1241,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1243,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1244,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1245,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1246,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1249,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/access/heap/rewriteheap.c:1252,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1253
      start: 1154
    functionDepth: 3
    functionLinenumber: 1154
    functionLinenumberEnd: 1253
    functionName: CheckPointLogicalRewriteHeap
    functionSourceFile: /src/postgres/src/backend/access/heap/rewriteheap.c
    functionUses: 0
    functionsReached:
    - snprintf
    - pgstat_report_wait_end
    - data_sync_elevel
    - pgstat_report_wait_start
    - errcode_for_file_access
    - FreeDir
    - strcmp
    - pg_fsync
    - errmsg
    - CloseTransientFile
    - GetRedoRecPtr
    - elog
    - ReplicationSlotsComputeLogicalRestartLSN
    - strncmp
    - ReadDir
    - AllocateDir
    - sscanf
    - ereport
    - get_dirent_type
    - OpenTransientFile
    - unlink
    - fsync_fname
    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: 118
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 118
    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: 119
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 119
    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: 120
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 120
    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:140,1
    - Dst: HEAPBLK_TO_MAPBYTE
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:141,1
    - Dst: HEAPBLK_TO_OFFSET
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:142,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:148,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:149,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:152,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:152,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:155,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:155,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:156,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:158,1
    - Dst: PageGetContents
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:159,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:159,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:165,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:169,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - rel
    - heapBlk
    - vmbuf
    - flags
    argTypes:
    - Relation
    - BlockNumber
    - Buffer
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 137
    functionDepth: 4
    functionLinenumber: 137
    functionLinenumberEnd: 172
    functionName: visibilitymap_clear
    functionSourceFile: /src/postgres/src/backend/access/heap/visibilitymap.c
    functionUses: 6
    functionsReached:
    - MarkBufferDirty
    - Assert
    - BufferIsValid
    - BufferGetBlockNumber
    - PageGetContents
    - LockBuffer
    - HEAPBLK_TO_MAPBLOCK
    - HEAPBLK_TO_MAPBYTE
    - elog
    - HEAPBLK_TO_OFFSET
    - BufferGetPage
    - RelationGetRelationName
    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:193,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:196,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:198,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:201,1
    - Dst: vm_readbuf
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:203,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - heapBlk
    - vmbuf
    argTypes:
    - Relation
    - BlockNumber
    - Buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 190
    functionDepth: 2
    functionLinenumber: 190
    functionLinenumberEnd: 204
    functionName: visibilitymap_pin
    functionSourceFile: /src/postgres/src/backend/access/heap/visibilitymap.c
    functionUses: 4
    functionsReached:
    - BufferIsValid
    - BufferGetBlockNumber
    - ReleaseBuffer
    - HEAPBLK_TO_MAPBLOCK
    - vm_readbuf
    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:217,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:219,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - heapBlk
    - vmbuf
    argTypes:
    - BlockNumber
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 214
    functionDepth: 2
    functionLinenumber: 214
    functionLinenumberEnd: 220
    functionName: visibilitymap_pin_ok
    functionSourceFile: /src/postgres/src/backend/access/heap/visibilitymap.c
    functionUses: 1
    functionsReached:
    - HEAPBLK_TO_MAPBLOCK
    - BufferIsValid
    - BufferGetBlockNumber
    linkageType: ''
    returnType: bool
    signature: bool visibilitymap_pin_ok(BlockNumber heapBlk, Buffer vmbuf)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: HEAPBLK_TO_MAPBLOCK
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:250,1
    - Dst: HEAPBLK_TO_MAPBYTE
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:251,1
    - Dst: HEAPBLK_TO_OFFSET
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:252,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:258,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:258,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:261,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:261,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:262,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:262,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:262,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:263,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:266,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:269,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:269,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:270,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:273,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:273,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:274,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:276,1
    - Dst: PageGetContents
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:277,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:278,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:283,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:286,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:288,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:290,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:292,1
    - Dst: log_heap_visible
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:293,1
    - Dst: XLogHintBitIsNeeded
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:304,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:306,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:308,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:311,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:314,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:317,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 7
    argNames:
    - rel
    - heapBlk
    - heapBuf
    - recptr
    - vmBuf
    - cutoff_xid
    - flags
    argTypes:
    - Relation
    - BlockNumber
    - Buffer
    - XLogRecPtr
    - Buffer
    - TransactionId
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 245
    functionDepth: 4
    functionLinenumber: 245
    functionLinenumberEnd: 319
    functionName: visibilitymap_set
    functionSourceFile: /src/postgres/src/backend/access/heap/visibilitymap.c
    functionUses: 1
    functionsReached:
    - MarkBufferDirty
    - PageSetLSN
    - LockBuffer
    - HEAPBLK_TO_MAPBLOCK
    - RelationGetRelationName
    - START_CRIT_SECTION
    - BufferGetBlockNumber
    - HEAPBLK_TO_OFFSET
    - RelationNeedsWAL
    - PageIsAllVisible
    - BufferIsValid
    - PageGetContents
    - log_heap_visible
    - HEAPBLK_TO_MAPBYTE
    - elog
    - BufferGetPage
    - XLogRecPtrIsInvalid
    - XLogHintBitIsNeeded
    - Assert
    - END_CRIT_SECTION
    linkageType: ''
    returnType: uint8
    signature: "uint8 visibilitymap_set(Relation rel, BlockNumber heapBlk, Buffer
      heapBuf,\n\t\t\t\t  XLogRecPtr recptr, Buffer vmBuf, TransactionId cutoff_xid,\n\t\t\t\t
      \ uint8 flags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: HEAPBLK_TO_MAPBLOCK
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:343,1
    - Dst: HEAPBLK_TO_MAPBYTE
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:344,1
    - Dst: HEAPBLK_TO_OFFSET
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:345,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:350,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:350,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:354,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:356,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:358,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:363,1
    - Dst: vm_readbuf
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:365,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:366,1
    - Dst: PageGetContents
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:370,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:370,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - rel
    - heapBlk
    - vmbuf
    argTypes:
    - Relation
    - BlockNumber
    - Buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 340
    functionDepth: 4
    functionLinenumber: 340
    functionLinenumberEnd: 379
    functionName: visibilitymap_get_status
    functionSourceFile: /src/postgres/src/backend/access/heap/visibilitymap.c
    functionUses: 0
    functionsReached:
    - BufferIsValid
    - BufferGetBlockNumber
    - PageGetContents
    - ReleaseBuffer
    - HEAPBLK_TO_MAPBLOCK
    - HEAPBLK_TO_MAPBYTE
    - elog
    - vm_readbuf
    - HEAPBLK_TO_OFFSET
    - BufferGetPage
    - 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:396,1
    - Dst: vm_readbuf
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:408,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:409,1
    - Dst: PageGetContents
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:417,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:417,1
    - Dst: pg_popcount_masked
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:419,1
    - Dst: pg_popcount_masked
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:421,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:423,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - rel
    - all_visible
    - all_frozen
    argTypes:
    - Relation
    - BlockNumber*
    - BlockNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 388
    functionDepth: 4
    functionLinenumber: 388
    functionLinenumberEnd: 429
    functionName: visibilitymap_count
    functionSourceFile: /src/postgres/src/backend/access/heap/visibilitymap.c
    functionUses: 0
    functionsReached:
    - Assert
    - BufferIsValid
    - PageGetContents
    - ReleaseBuffer
    - pg_popcount_masked
    - vm_readbuf
    - BufferGetPage
    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:448,1
    - Dst: HEAPBLK_TO_MAPBYTE
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:449,1
    - Dst: HEAPBLK_TO_OFFSET
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:450,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:453,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:453,1
    - Dst: smgrexists
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:460,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:460,1
    - Dst: vm_readbuf
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:478,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:479,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:485,1
    - Dst: PageGetContents
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:486,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:488,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:491,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:494,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:516,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:517,1
    - Dst: XLogHintBitIsNeeded
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:517,1
    - Dst: log_newpage_buffer
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:518,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:520,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:522,1
    - Dst: smgrnblocks
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:527,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:527,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 2
    argNames:
    - rel
    - nheapblocks
    argTypes:
    - Relation
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 442
    functionDepth: 4
    functionLinenumber: 442
    functionLinenumberEnd: 534
    functionName: visibilitymap_prepare_truncate
    functionSourceFile: /src/postgres/src/backend/access/heap/visibilitymap.c
    functionUses: 0
    functionsReached:
    - MarkBufferDirty
    - LockBuffer
    - HEAPBLK_TO_MAPBLOCK
    - RelationGetRelationName
    - START_CRIT_SECTION
    - log_newpage_buffer
    - HEAPBLK_TO_OFFSET
    - RelationNeedsWAL
    - BufferIsValid
    - PageGetContents
    - HEAPBLK_TO_MAPBYTE
    - RelationGetSmgr
    - elog
    - smgrexists
    - MemSet
    - vm_readbuf
    - BufferGetPage
    - XLogHintBitIsNeeded
    - UnlockReleaseBuffer
    - smgrnblocks
    - END_CRIT_SECTION
    linkageType: ''
    returnType: BlockNumber
    signature: BlockNumber visibilitymap_prepare_truncate(Relation rel, BlockNumber
      nheapblocks)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:553,1
    - Dst: smgrexists
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:561,1
    - Dst: smgrnblocks
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:562,1
    - Dst: vm_extend
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:579,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:584,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:602,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:602,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:604,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:605,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:605,1
    - Dst: PageInit
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:606,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:606,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:607,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - rel
    - blkno
    - extend
    argTypes:
    - Relation
    - BlockNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 542
    functionDepth: 4
    functionLinenumber: 542
    functionLinenumberEnd: 610
    functionName: vm_readbuf
    functionSourceFile: /src/postgres/src/backend/access/heap/visibilitymap.c
    functionUses: 4
    functionsReached:
    - LockBuffer
    - RelationGetSmgr
    - PageInit
    - smgrexists
    - ReadBufferExtended
    - PageIsNew
    - BufferGetPage
    - vm_extend
    - 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:621,1
    - Dst: BMR_REL
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:621,1
    - Dst: CacheInvalidateSmgr
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:634,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/access/heap/visibilitymap.c:634,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - rel
    - vm_nblocks
    argTypes:
    - Relation
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 616
    functionDepth: 2
    functionLinenumber: 616
    functionLinenumberEnd: 637
    functionName: vm_extend
    functionSourceFile: /src/postgres/src/backend/access/heap/visibilitymap.c
    functionUses: 1
    functionsReached:
    - BMR_REL
    - CacheInvalidateSmgr
    - ExtendBufferedRelTo
    - RelationGetSmgr
    linkageType: ''
    returnType: Buffer
    signature: Buffer vm_extend(Relation rel, BlockNumber vm_nblocks)
  - BBCount: 7
    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:40,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:41,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:50,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:64,1
    - Dst: ResolveRecoveryConflictWithSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:68,1
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:76,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:81,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:92,1
    - Dst: heap_xlog_deserialize_prune_and_freeze
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:94,1
    - Dst: heap_page_prune_execute
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:105,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:132,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:133,1
    - Dst: heap_execute_freeze_tuple
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:134,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:139,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:146,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:147,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:156,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:162,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:162,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:164,1
    - Dst: XLogRecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:166,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:169,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 29
    functionDepth: 4
    functionLinenumber: 29
    functionLinenumberEnd: 171
    functionName: heap_xlog_prune_freeze
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_xlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - MarkBufferDirty
    - XLogRecGetData
    - XLogRecordPageWithFreeSpace
    - heap_page_prune_execute
    - ResolveRecoveryConflictWithSnapshot
    - heap_execute_freeze_tuple
    - heap_xlog_deserialize_prune_and_freeze
    - memcpy
    - PageGetItem
    - XLogRecGetBlockData
    - PageGetHeapFreeSpace
    - PageGetItemId
    - BufferIsValid
    - XLogRecGetBlockTag
    - BufferGetPage
    - UnlockReleaseBuffer
    - Assert
    - XLogReadBufferForRedoExtended
    linkageType: ''
    returnType: void
    signature: void heap_xlog_prune_freeze(XLogReaderState *record)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:185,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:193,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:195,1
    - Dst: ResolveRecoveryConflictWithSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:207,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:216,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:226,1
    - Dst: PageSetAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:228,1
    - Dst: XLogHintBitIsNeeded
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:230,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:231,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:233,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:244,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:246,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:246,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:248,1
    - Dst: XLogRecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:268,1
    - Dst: XLogReadBufferForRedoExtended
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:277,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:280,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:285,1
    - Dst: PageInit
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:286,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:295,1
    - Dst: CreateFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:297,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:298,1
    - Dst: visibilitymap_set
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:300,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:303,1
    - Dst: FreeFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:304,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:306,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:307,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 181
    functionDepth: 5
    functionLinenumber: 181
    functionLinenumberEnd: 308
    functionName: heap_xlog_visible
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_xlog.c
    functionUses: 0
    functionsReached:
    - CreateFakeRelcacheEntry
    - PageSetLSN
    - MarkBufferDirty
    - ReleaseBuffer
    - LockBuffer
    - XLogRecGetData
    - XLogRecordPageWithFreeSpace
    - PageSetAllVisible
    - ResolveRecoveryConflictWithSnapshot
    - PageInit
    - visibilitymap_set
    - PageGetFreeSpace
    - FreeFakeRelcacheEntry
    - PageIsNew
    - BufferIsValid
    - XLogRecGetBlockTag
    - BufferGetPage
    - UnlockReleaseBuffer
    - XLogHintBitIsNeeded
    - Assert
    - visibilitymap_pin
    - XLogReadBufferForRedo
    - XLogReadBufferForRedoExtended
    linkageType: ''
    returnType: void
    signature: void heap_xlog_visible(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: 335
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 335
    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:344,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:353,1
    - Dst: ItemPointerSetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:354,1
    - Dst: ItemPointerSetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:355,1
    - Dst: CreateFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:363,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:366,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:367,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:368,1
    - Dst: FreeFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:369,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:372,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:374,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:376,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:377,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:379,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:379,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:380,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:382,1
    - Dst: HeapTupleHeaderClearHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:386,1
    - Dst: fix_infomask_from_infobits
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:387,1
    - Dst: HeapTupleHeaderSetXmax
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:390,1
    - Dst: HeapTupleHeaderSetXmin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:392,1
    - Dst: HeapTupleHeaderSetCmax
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:393,1
    - Dst: PageSetPrunable
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:396,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:396,1
    - Dst: PageClearAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:399,1
    - Dst: HeapTupleHeaderSetMovedPartitions
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:403,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:406,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:407,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:409,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:410,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 340
    functionDepth: 5
    functionLinenumber: 340
    functionLinenumberEnd: 411
    functionName: heap_xlog_delete
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_xlog.c
    functionUses: 0
    functionsReached:
    - CreateFakeRelcacheEntry
    - PageSetLSN
    - MarkBufferDirty
    - ItemPointerSetOffsetNumber
    - HeapTupleHeaderSetMovedPartitions
    - ReleaseBuffer
    - HeapTupleHeaderSetXmax
    - XLogRecGetData
    - ItemIdIsNormal
    - HeapTupleHeaderClearHotUpdated
    - PageClearAllVisible
    - PageSetPrunable
    - FreeFakeRelcacheEntry
    - PageGetItem
    - XLogRecGetXid
    - PageGetItemId
    - BufferIsValid
    - visibilitymap_clear
    - fix_infomask_from_infobits
    - XLogRecGetBlockTag
    - elog
    - ItemPointerSetBlockNumber
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - HeapTupleHeaderSetXmin
    - visibilitymap_pin
    - HeapTupleHeaderSetCmax
    - XLogReadBufferForRedo
    linkageType: ''
    returnType: void
    signature: void heap_xlog_delete(XLogReaderState *record)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:420,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:437,1
    - Dst: ItemPointerSetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:438,1
    - Dst: ItemPointerSetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:439,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:442,1
    - Dst: CreateFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:450,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:453,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:454,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:455,1
    - Dst: FreeFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:456,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:463,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:465,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:466,1
    - Dst: PageInit
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:467,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:467,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:471,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:477,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:479,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:480,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:482,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:485,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:486,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:490,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:492,1
    - Dst: HeapTupleHeaderSetXmin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:499,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:499,1
    - Dst: HeapTupleHeaderSetCmin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:500,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:503,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:505,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:507,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:509,1
    - Dst: PageClearAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:512,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:514,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:516,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:517,1
    - Dst: XLogRecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:529,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 49
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 416
    functionDepth: 5
    functionLinenumber: 416
    functionLinenumberEnd: 530
    functionName: heap_xlog_insert
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_xlog.c
    functionUses: 0
    functionsReached:
    - CreateFakeRelcacheEntry
    - PageSetLSN
    - MarkBufferDirty
    - ItemPointerSetOffsetNumber
    - ReleaseBuffer
    - PageAddItem
    - XLogRecGetData
    - XLogRecordPageWithFreeSpace
    - BufferGetPageSize
    - PageInit
    - XLogRecGetInfo
    - PageClearAllVisible
    - memcpy
    - XLogInitBufferForRedo
    - FreeFakeRelcacheEntry
    - XLogRecGetBlockData
    - XLogRecGetXid
    - PageGetHeapFreeSpace
    - BufferIsValid
    - visibilitymap_clear
    - XLogRecGetBlockTag
    - elog
    - MemSet
    - ItemPointerSetBlockNumber
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - Assert
    - HeapTupleHeaderSetXmin
    - HeapTupleHeaderSetCmin
    - visibilitymap_pin
    - XLogReadBufferForRedo
    linkageType: ''
    returnType: void
    signature: void heap_xlog_insert(XLogReaderState *record)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:553,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:560,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:562,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:565,1
    - Dst: CreateFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:574,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:577,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:578,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:579,1
    - Dst: FreeFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:580,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:585,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:586,1
    - Dst: PageInit
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:587,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:587,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:591,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:599,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:602,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:618,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:619,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:621,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:625,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:627,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:629,1
    - Dst: HeapTupleHeaderSetXmin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:638,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:638,1
    - Dst: HeapTupleHeaderSetCmin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:639,1
    - Dst: ItemPointerSetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:640,1
    - Dst: ItemPointerSetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:641,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:643,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:645,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:648,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:650,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:652,1
    - Dst: PageClearAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:655,1
    - Dst: PageSetAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:659,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:661,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:663,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:664,1
    - Dst: XLogRecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:676,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 61
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 535
    functionDepth: 5
    functionLinenumber: 535
    functionLinenumberEnd: 677
    functionName: heap_xlog_multi_insert
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_xlog.c
    functionUses: 0
    functionsReached:
    - CreateFakeRelcacheEntry
    - PageSetLSN
    - MarkBufferDirty
    - ItemPointerSetOffsetNumber
    - ReleaseBuffer
    - PageAddItem
    - XLogRecGetData
    - XLogRecordPageWithFreeSpace
    - BufferGetPageSize
    - PageSetAllVisible
    - PageInit
    - XLogRecGetInfo
    - PageClearAllVisible
    - memcpy
    - XLogInitBufferForRedo
    - FreeFakeRelcacheEntry
    - XLogRecGetBlockData
    - XLogRecGetXid
    - PageGetHeapFreeSpace
    - BufferIsValid
    - visibilitymap_clear
    - XLogRecGetBlockTag
    - elog
    - MemSet
    - ItemPointerSetBlockNumber
    - SHORTALIGN
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - Assert
    - HeapTupleHeaderSetXmin
    - HeapTupleHeaderSetCmin
    - visibilitymap_pin
    - XLogReadBufferForRedo
    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:686,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:716,1
    - Dst: XLogRecGetBlockTagExtended
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:717,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:720,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:725,1
    - Dst: CreateFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:733,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:736,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:737,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:738,1
    - Dst: FreeFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:739,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:753,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:757,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:759,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:760,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:762,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:762,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:763,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:765,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:768,1
    - Dst: HeapTupleHeaderSetHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:773,1
    - Dst: HeapTupleHeaderClearHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:775,1
    - Dst: fix_infomask_from_infobits
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:776,1
    - Dst: HeapTupleHeaderSetXmax
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:778,1
    - Dst: HeapTupleHeaderSetCmax
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:779,1
    - Dst: PageSetPrunable
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:784,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:784,1
    - Dst: PageClearAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:787,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:789,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:790,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:801,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:803,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:804,1
    - Dst: PageInit
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:805,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:805,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:809,1
    - Dst: CreateFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:817,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:820,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:821,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:822,1
    - Dst: FreeFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:823,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:834,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:837,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:840,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:841,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:845,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:846,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:851,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:852,1
    - Dst: memcpy
      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: MemSet
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:863,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:876,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:881,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:886,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:896,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:900,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:904,1
    - Dst: HeapTupleHeaderSetXmin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:911,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:911,1
    - Dst: HeapTupleHeaderSetCmin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:912,1
    - Dst: HeapTupleHeaderSetXmax
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:913,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:917,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:919,1
    - Dst: PageClearAllVisible
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:922,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:924,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:926,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:927,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:930,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:931,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:932,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:933,1
    - Dst: XLogRecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:951,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 124
    argCount: 2
    argNames:
    - record
    - hot_update
    argTypes:
    - XLogReaderState*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 682
    functionDepth: 5
    functionLinenumber: 682
    functionLinenumberEnd: 952
    functionName: heap_xlog_update
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_xlog.c
    functionUses: 0
    functionsReached:
    - CreateFakeRelcacheEntry
    - PageSetLSN
    - MarkBufferDirty
    - ItemPointerSet
    - ReleaseBuffer
    - PageAddItem
    - HeapTupleHeaderSetXmax
    - XLogRecGetData
    - XLogRecordPageWithFreeSpace
    - ItemIdIsNormal
    - BufferGetPageSize
    - XLogRecGetBlockTagExtended
    - HeapTupleHeaderSetHotUpdated
    - HeapTupleHeaderClearHotUpdated
    - PageInit
    - XLogRecGetInfo
    - PageClearAllVisible
    - PageSetPrunable
    - FreeFakeRelcacheEntry
    - PageGetItem
    - XLogRecGetXid
    - XLogInitBufferForRedo
    - XLogRecGetBlockData
    - memcpy
    - PageGetHeapFreeSpace
    - PageGetItemId
    - BufferIsValid
    - visibilitymap_clear
    - fix_infomask_from_infobits
    - XLogRecGetBlockTag
    - elog
    - MemSet
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - Assert
    - HeapTupleHeaderSetXmin
    - HeapTupleHeaderSetCmin
    - visibilitymap_pin
    - HeapTupleHeaderSetCmax
    - ItemIdGetLength
    - XLogReadBufferForRedo
    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:961,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:968,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:970,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:973,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:974,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:976,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:976,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:977,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:979,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:984,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:984,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:986,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:987,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:989,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:990,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 957
    functionDepth: 4
    functionLinenumber: 957
    functionLinenumberEnd: 991
    functionName: heap_xlog_confirm
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_xlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - MarkBufferDirty
    - PageGetItemId
    - ItemPointerSet
    - BufferGetBlockNumber
    - BufferIsValid
    - UnlockReleaseBuffer
    - XLogRecGetData
    - elog
    - ItemIdIsNormal
    - XLogReadBufferForRedo
    - BufferGetPage
    - PageGetItem
    - PageGetMaxOffsetNumber
    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:1000,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1018,1
    - Dst: CreateFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1019,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1021,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1022,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1024,1
    - Dst: FreeFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1025,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1028,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1030,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1033,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1034,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1036,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1036,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1037,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1039,1
    - Dst: fix_infomask_from_infobits
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1043,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1050,1
    - Dst: HeapTupleHeaderClearHotUpdated
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1052,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1054,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1055,1
    - Dst: HeapTupleHeaderSetXmax
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1058,1
    - Dst: HeapTupleHeaderSetCmax
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1059,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1060,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1061,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1063,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1064,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1065
      start: 996
    functionDepth: 5
    functionLinenumber: 996
    functionLinenumberEnd: 1065
    functionName: heap_xlog_lock
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_xlog.c
    functionUses: 0
    functionsReached:
    - CreateFakeRelcacheEntry
    - PageSetLSN
    - MarkBufferDirty
    - ItemPointerSet
    - ReleaseBuffer
    - HeapTupleHeaderSetXmax
    - XLogRecGetData
    - ItemIdIsNormal
    - HeapTupleHeaderClearHotUpdated
    - BufferGetBlockNumber
    - FreeFakeRelcacheEntry
    - PageGetItem
    - PageGetItemId
    - BufferIsValid
    - visibilitymap_clear
    - fix_infomask_from_infobits
    - XLogRecGetBlockTag
    - elog
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - visibilitymap_pin
    - HeapTupleHeaderSetCmax
    - XLogReadBufferForRedo
    - HEAP_XMAX_IS_LOCKED_ONLY
    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:1081,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1094,1
    - Dst: CreateFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1095,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1097,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1098,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1100,1
    - Dst: FreeFakeRelcacheEntry
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1101,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1104,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1106,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1109,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1110,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1112,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1112,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1113,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1115,1
    - Dst: fix_infomask_from_infobits
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1119,1
    - Dst: HeapTupleHeaderSetXmax
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1121,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1123,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1124,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1126,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1127,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1128
      start: 1070
    functionDepth: 5
    functionLinenumber: 1070
    functionLinenumberEnd: 1128
    functionName: heap_xlog_lock_updated
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_xlog.c
    functionUses: 0
    functionsReached:
    - CreateFakeRelcacheEntry
    - PageSetLSN
    - MarkBufferDirty
    - ReleaseBuffer
    - HeapTupleHeaderSetXmax
    - XLogRecGetData
    - ItemIdIsNormal
    - FreeFakeRelcacheEntry
    - PageGetItem
    - PageGetItemId
    - BufferIsValid
    - visibilitymap_clear
    - fix_infomask_from_infobits
    - XLogRecGetBlockTag
    - elog
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - visibilitymap_pin
    - XLogReadBufferForRedo
    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:1137,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1146,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1148,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1150,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1153,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1154,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1156,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1156,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1157,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1159,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1161,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1163,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1165,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1167,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1168,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1170,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1171,1
    - Dst: ProcessCommittedInvalidationMessages
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1173,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1178
      start: 1133
    functionDepth: 4
    functionLinenumber: 1133
    functionLinenumberEnd: 1178
    functionName: heap_xlog_inplace
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_xlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - MarkBufferDirty
    - PageGetItemId
    - BufferIsValid
    - UnlockReleaseBuffer
    - memcpy
    - PageGetItem
    - ProcessCommittedInvalidationMessages
    - XLogRecGetData
    - elog
    - ItemIdGetLength
    - ItemIdIsNormal
    - XLogReadBufferForRedo
    - BufferGetPage
    - XLogRecGetBlockData
    - PageGetMaxOffsetNumber
    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:1183,1
    - Dst: heap_xlog_insert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1193,1
    - Dst: heap_xlog_delete
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1196,1
    - Dst: heap_xlog_update
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1199,1
    - Dst: heap_xlog_update
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1210,1
    - Dst: heap_xlog_confirm
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1213,1
    - Dst: heap_xlog_lock
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1216,1
    - Dst: heap_xlog_inplace
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1219,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1222,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1224
      start: 1180
    functionDepth: 6
    functionLinenumber: 1180
    functionLinenumberEnd: 1224
    functionName: heap_redo
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_xlog.c
    functionUses: 0
    functionsReached:
    - heap_xlog_inplace
    - heap_xlog_insert
    - heap_xlog_lock
    - heap_xlog_confirm
    - XLogRecGetInfo
    - heap_xlog_update
    - elog
    - heap_xlog_delete
    linkageType: ''
    returnType: void
    signature: void heap_redo(XLogReaderState *record)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1229,1
    - Dst: heap_xlog_prune_freeze
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1236,1
    - Dst: heap_xlog_visible
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1239,1
    - Dst: heap_xlog_multi_insert
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1242,1
    - Dst: heap_xlog_lock_updated
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1245,1
    - Dst: heap_xlog_logical_rewrite
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1255,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1258,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1260
      start: 1226
    functionDepth: 6
    functionLinenumber: 1226
    functionLinenumberEnd: 1260
    functionName: heap2_redo
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_xlog.c
    functionUses: 0
    functionsReached:
    - heap_xlog_lock_updated
    - heap_xlog_prune_freeze
    - heap_xlog_multi_insert
    - heap_xlog_logical_rewrite
    - XLogRecGetInfo
    - elog
    - heap_xlog_visible
    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:1271,1
    - Dst: mask_page_hint_bits
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1273,1
    - Dst: mask_unused_space
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1274,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1276,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1278,1
    - Dst: ItemIdGetOffset
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1281,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1283,1
    - Dst: HeapTupleHeaderXminFrozen
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1292,1
    - Dst: HeapTupleHeaderIsSpeculative
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1320,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1321,1
    - Dst: ItemIdHasStorage
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1335,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1337,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1338,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/heap/heapam_xlog.c:1341,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - pagedata
    - blkno
    argTypes:
    - char*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1344
      start: 1265
    functionDepth: 2
    functionLinenumber: 1265
    functionLinenumberEnd: 1344
    functionName: heap_mask
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_xlog.c
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderXminFrozen
    - PageGetItemId
    - ItemPointerSet
    - memset
    - HeapTupleHeaderIsSpeculative
    - ItemIdHasStorage
    - ItemIdGetOffset
    - ItemIdGetLength
    - mask_page_lsn_and_checksum
    - ItemIdIsNormal
    - MAXALIGN
    - mask_unused_space
    - PageGetMaxOffsetNumber
    - mask_page_hint_bits
    linkageType: ''
    returnType: void
    signature: void heap_mask(char *pagedata, BlockNumber blkno)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:117,1
    - Dst: TransactionIdGetCommitLSN
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:120,1
    - Dst: BufferIsPermanent
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:122,1
    - Dst: XLogNeedsFlush
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:122,1
    - Dst: BufferGetLSNAtomic
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:123,1
    - Dst: MarkBufferDirtyHint
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:131,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 4
    argNames:
    - tuple
    - buffer
    - infomask
    - xid
    argTypes:
    - HeapTupleHeader
    - Buffer
    - uint16
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 132
    functionName: SetHintBits
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 1
    functionsReached:
    - MarkBufferDirtyHint
    - BufferGetLSNAtomic
    - TransactionIdIsValid
    - TransactionIdGetCommitLSN
    - BufferIsPermanent
    - XLogNeedsFlush
    linkageType: ''
    returnType: void
    signature: "void SetHintBits(HeapTupleHeader tuple, Buffer buffer,\n\t\t\tuint16
      infomask, TransactionId xid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - tuple
    - buffer
    - infomask
    - xid
    argTypes:
    - HeapTupleHeader
    - Buffer
    - uint16
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 140
    functionDepth: 2
    functionLinenumber: 140
    functionLinenumberEnd: 145
    functionName: HeapTupleSetHintBits
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 1
    functionsReached:
    - SetHintBits
    linkageType: ''
    returnType: void
    signature: "void HeapTupleSetHintBits(HeapTupleHeader tuple, Buffer buffer,\n\t\t\t\t\t
      uint16 infomask, TransactionId xid)"
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:174,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:174,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:175,1
    - Dst: HeapTupleHeaderXminCommitted
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:177,1
    - Dst: HeapTupleHeaderXminInvalid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:179,1
    - Dst: HeapTupleHeaderGetXvac
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:185,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:187,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:189,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:191,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:193,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:197,1
    - Dst: HeapTupleHeaderGetXvac
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:204,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:206,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:208,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:210,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:211,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:215,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:221,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:221,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:226,1
    - Dst: HeapTupleGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:233,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:236,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:236,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:239,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:245,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:245,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:248,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:255,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:255,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:257,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:257,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:258,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:259,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:263,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:276,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:285,1
    - Dst: HeapTupleGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:288,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:291,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:291,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:293,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:295,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:297,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:303,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:303,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:305,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:310,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:310,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:313,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:313,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:316,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:323,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:325,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:330,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:331,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 91
    argCount: 3
    argNames:
    - htup
    - snapshot
    - buffer
    argTypes:
    - HeapTuple
    - Snapshot
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 169
    functionDepth: 3
    functionLinenumber: 169
    functionLinenumberEnd: 333
    functionName: HeapTupleSatisfiesSelf
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsInProgress
    - Assert
    - HeapTupleHeaderXminCommitted
    - TransactionIdIsValid
    - TransactionIdDidCommit
    - SetHintBits
    - ItemPointerIsValid
    - HeapTupleGetUpdateXid
    - HeapTupleHeaderGetRawXmin
    - HeapTupleHeaderGetXvac
    - HeapTupleHeaderGetRawXmax
    - HeapTupleHeaderXminInvalid
    - TransactionIdIsCurrentTransactionId
    - HEAP_XMAX_IS_LOCKED_ONLY
    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: 343
      start: 339
    functionDepth: 0
    functionLinenumber: 339
    functionLinenumberEnd: 343
    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: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:367,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:367,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:368,1
    - Dst: HeapTupleHeaderXminCommitted
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:370,1
    - Dst: HeapTupleHeaderXminInvalid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:372,1
    - Dst: HeapTupleHeaderGetXvac
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:378,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:380,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:382,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:384,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:386,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:390,1
    - Dst: HeapTupleHeaderGetXvac
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:397,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:399,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:401,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:403,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:404,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:408,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:420,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:420,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 3
    argNames:
    - htup
    - snapshot
    - buffer
    argTypes:
    - HeapTuple
    - Snapshot
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 361
    functionDepth: 2
    functionLinenumber: 361
    functionLinenumberEnd: 426
    functionName: HeapTupleSatisfiesToast
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsInProgress
    - Assert
    - HeapTupleHeaderXminCommitted
    - TransactionIdIsValid
    - TransactionIdDidCommit
    - SetHintBits
    - ItemPointerIsValid
    - HeapTupleHeaderGetXvac
    - HeapTupleHeaderXminInvalid
    - TransactionIdIsCurrentTransactionId
    - HeapTupleHeaderGetXmin
    linkageType: ''
    returnType: bool
    signature: "bool HeapTupleSatisfiesToast(HeapTuple htup, Snapshot snapshot,\n\t\t\t\t\t\tBuffer
      buffer)"
  - BBCount: 49
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:463,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:463,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:464,1
    - Dst: HeapTupleHeaderXminCommitted
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:466,1
    - Dst: HeapTupleHeaderXminInvalid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:468,1
    - Dst: HeapTupleHeaderGetXvac
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:474,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:476,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:478,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:480,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:482,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:486,1
    - Dst: HeapTupleHeaderGetXvac
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:493,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:495,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:497,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:499,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:500,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:504,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:510,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:510,1
    - Dst: HeapTupleHeaderGetCmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:512,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:518,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:522,1
    - Dst: MultiXactIdIsRunning
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:533,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:544,1
    - Dst: HeapTupleGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:553,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:556,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:556,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:559,1
    - Dst: MultiXactIdIsRunning
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:561,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:561,1
    - Dst: HeapTupleHeaderGetCmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:568,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:575,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:575,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:578,1
    - Dst: HeapTupleHeaderGetCmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:583,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:588,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:588,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:590,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:590,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:591,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:592,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:596,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:609,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:611,1
    - Dst: HEAP_LOCKED_UPGRADED
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:621,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:624,1
    - Dst: MultiXactIdIsRunning
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:626,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:626,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:629,1
    - Dst: HeapTupleGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:633,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:634,1
    - Dst: MultiXactIdIsRunning
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:636,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:636,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:641,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:641,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:643,1
    - Dst: HeapTupleHeaderGetCmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:645,1
    - Dst: MultiXactIdIsRunning
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:651,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:651,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:654,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:656,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: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:673,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:684,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:684,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:686,1
    - Dst: HeapTupleHeaderGetCmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:688,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:694,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:694,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:697,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:697,1
    - Dst: SetHintBits
      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:707,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:709,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:714,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:715,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:716,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 137
    argCount: 3
    argNames:
    - htup
    - curcid
    - buffer
    argTypes:
    - HeapTuple
    - CommandId
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 457
    functionDepth: 3
    functionLinenumber: 457
    functionLinenumberEnd: 720
    functionName: HeapTupleSatisfiesUpdate
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 4
    functionsReached:
    - TransactionIdDidCommit
    - HeapTupleHeaderGetRawXmax
    - HEAP_LOCKED_UPGRADED
    - HeapTupleHeaderXminInvalid
    - SetHintBits
    - HeapTupleHeaderGetCmin
    - TransactionIdIsInProgress
    - HeapTupleHeaderXminCommitted
    - TransactionIdIsValid
    - ItemPointerIsValid
    - ItemPointerEquals
    - HeapTupleHeaderGetRawXmin
    - HEAP_XMAX_IS_LOCKED_ONLY
    - TransactionIdIsCurrentTransactionId
    - Assert
    - HeapTupleGetUpdateXid
    - HeapTupleHeaderGetXvac
    - HeapTupleHeaderGetCmax
    - MultiXactIdIsRunning
    linkageType: ''
    returnType: TM_Result
    signature: "TM_Result HeapTupleSatisfiesUpdate(HeapTuple htup, CommandId curcid,\n\t\t\t\t\t\t
      Buffer buffer)"
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:748,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:748,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:749,1
    - Dst: HeapTupleHeaderXminCommitted
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:754,1
    - Dst: HeapTupleHeaderXminInvalid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:756,1
    - Dst: HeapTupleHeaderGetXvac
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:762,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:764,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:766,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:768,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:770,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:774,1
    - Dst: HeapTupleHeaderGetXvac
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:781,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:783,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:785,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:787,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:788,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:792,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:798,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:798,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:803,1
    - Dst: HeapTupleGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:810,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:813,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:813,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:816,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:822,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:822,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:825,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:832,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:832,1
    - Dst: HeapTupleHeaderIsSpeculative
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:840,1
    - Dst: HeapTupleHeaderGetSpeculativeToken
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:843,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:845,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:848,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:852,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:852,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:853,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:854,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:858,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:871,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:880,1
    - Dst: HeapTupleGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:883,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:886,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:886,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:888,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:890,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:895,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:901,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:901,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:903,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:908,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:908,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:910,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:911,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:915,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:915,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:918,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:925,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:927,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:932,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:933,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 104
    argCount: 3
    argNames:
    - htup
    - snapshot
    - buffer
    argTypes:
    - HeapTuple
    - Snapshot
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 935
      start: 742
    functionDepth: 3
    functionLinenumber: 742
    functionLinenumberEnd: 935
    functionName: HeapTupleSatisfiesDirty
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsInProgress
    - Assert
    - HeapTupleHeaderXminCommitted
    - TransactionIdIsValid
    - TransactionIdDidCommit
    - SetHintBits
    - ItemPointerIsValid
    - HeapTupleHeaderIsSpeculative
    - HeapTupleGetUpdateXid
    - HeapTupleHeaderGetRawXmin
    - HeapTupleHeaderGetXvac
    - HeapTupleHeaderGetRawXmax
    - HeapTupleHeaderXminInvalid
    - TransactionIdIsCurrentTransactionId
    - HeapTupleHeaderGetSpeculativeToken
    - HEAP_XMAX_IS_LOCKED_ONLY
    linkageType: ''
    returnType: bool
    signature: "bool HeapTupleSatisfiesDirty(HeapTuple htup, Snapshot snapshot,\n\t\t\t\t\t\tBuffer
      buffer)"
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:972,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:974,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:974,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:975,1
    - Dst: HeapTupleHeaderXminCommitted
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:977,1
    - Dst: HeapTupleHeaderXminInvalid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:979,1
    - Dst: HeapTupleHeaderGetXvac
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:985,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:987,1
    - Dst: XidInMVCCSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:989,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:991,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:993,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:997,1
    - Dst: HeapTupleHeaderGetXvac
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1004,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1006,1
    - Dst: XidInMVCCSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1008,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1010,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1011,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1015,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1021,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1021,1
    - Dst: HeapTupleHeaderGetCmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1023,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1029,1
    - Dst: HeapTupleGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1036,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1039,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1039,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1042,1
    - Dst: HeapTupleHeaderGetCmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1044,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1050,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1050,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1053,1
    - Dst: HeapTupleHeaderGetCmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1058,1
    - Dst: XidInMVCCSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1063,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1063,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1065,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1065,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1066,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1067,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1071,1
    - Dst: HeapTupleHeaderXminFrozen
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1079,1
    - Dst: XidInMVCCSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1080,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1080,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1089,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1097,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1097,1
    - Dst: HeapTupleGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1099,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1102,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1102,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1104,1
    - Dst: HeapTupleHeaderGetCmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1106,1
    - Dst: XidInMVCCSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1111,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1113,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1121,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1121,1
    - Dst: HeapTupleHeaderGetCmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1123,1
    - Dst: XidInMVCCSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1129,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1129,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1132,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1132,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1135,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1141,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1142,1
    - Dst: XidInMVCCSnapshot
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1147,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1147,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 101
    argCount: 3
    argNames:
    - htup
    - snapshot
    - buffer
    argTypes:
    - HeapTuple
    - Snapshot
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1154
      start: 959
    functionDepth: 3
    functionLinenumber: 959
    functionLinenumberEnd: 1154
    functionName: HeapTupleSatisfiesMVCC
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderXminFrozen
    - Assert
    - HeapTupleHeaderXminCommitted
    - XidInMVCCSnapshot
    - TransactionIdIsValid
    - TransactionIdDidCommit
    - SetHintBits
    - ItemPointerIsValid
    - HeapTupleHeaderGetCmin
    - HeapTupleGetUpdateXid
    - HeapTupleHeaderGetRawXmin
    - HeapTupleHeaderGetXvac
    - HeapTupleHeaderGetRawXmax
    - HeapTupleHeaderGetCmax
    - HeapTupleHeaderXminInvalid
    - TransactionIdIsCurrentTransactionId
    - HEAP_XMAX_IS_LOCKED_ONLY
    linkageType: ''
    returnType: bool
    signature: "bool HeapTupleSatisfiesMVCC(HeapTuple htup, Snapshot snapshot,\n\t\t\t\t\t
      \  Buffer buffer)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleSatisfiesVacuumHorizon
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1177,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1181,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1181,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1183,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1187,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1187,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - htup
    - OldestXmin
    - buffer
    argTypes:
    - HeapTuple
    - TransactionId
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1190
      start: 1170
    functionDepth: 1
    functionLinenumber: 1170
    functionLinenumberEnd: 1190
    functionName: HeapTupleSatisfiesVacuum
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 4
    functionsReached:
    - TransactionIdIsValid
    - Assert
    - TransactionIdPrecedes
    - HeapTupleSatisfiesVacuumHorizon
    linkageType: ''
    returnType: HTSV_Result
    signature: "HTSV_Result HeapTupleSatisfiesVacuum(HeapTuple htup, TransactionId
      OldestXmin,\n\t\t\t\t\t\t Buffer buffer)"
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1209,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1209,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1210,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1211,1
    - Dst: HeapTupleHeaderXminCommitted
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1221,1
    - Dst: HeapTupleHeaderXminInvalid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1223,1
    - Dst: HeapTupleHeaderGetXvac
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1228,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1230,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1232,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1234,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1236,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1240,1
    - Dst: HeapTupleHeaderGetXvac
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1246,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1248,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1250,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1252,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1253,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1257,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1262,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1262,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1267,1
    - Dst: HeapTupleHeaderIsOnlyLocked
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1268,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1271,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1271,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1276,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1276,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1288,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1288,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1289,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1290,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1296,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1315,1
    - Dst: HEAP_LOCKED_UPGRADED
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1331,1
    - Dst: MultiXactIdIsRunning
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1332,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1332,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1335,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1339,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1339,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1341,1
    - Dst: HeapTupleGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1357,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1360,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1360,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1363,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1363,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1365,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1367,1
    - Dst: MultiXactIdIsRunning
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1380,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1380,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1386,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1394,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1394,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1396,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1396,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1397,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1398,1
    - Dst: SetHintBits
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1404,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1420,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 89
    argCount: 3
    argNames:
    - htup
    - buffer
    - dead_after
    argTypes:
    - HeapTuple
    - Buffer
    - TransactionId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1422
      start: 1204
    functionDepth: 3
    functionLinenumber: 1204
    functionLinenumberEnd: 1422
    functionName: HeapTupleSatisfiesVacuumHorizon
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 1
    functionsReached:
    - TransactionIdIsInProgress
    - Assert
    - HeapTupleHeaderGetUpdateXid
    - HEAP_LOCKED_UPGRADED
    - HeapTupleHeaderXminCommitted
    - TransactionIdIsValid
    - TransactionIdDidCommit
    - SetHintBits
    - HeapTupleHeaderIsOnlyLocked
    - ItemPointerIsValid
    - HeapTupleGetUpdateXid
    - MultiXactIdIsRunning
    - HeapTupleHeaderGetRawXmin
    - HeapTupleHeaderGetXvac
    - HeapTupleHeaderGetRawXmax
    - HeapTupleHeaderXminInvalid
    - TransactionIdIsCurrentTransactionId
    - HEAP_XMAX_IS_LOCKED_ONLY
    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:1444,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1448,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1448,1
    - Dst: GlobalVisTestIsRemovableXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1450,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1454,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1454,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - htup
    - snapshot
    - buffer
    argTypes:
    - HeapTuple
    - Snapshot
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1457
      start: 1437
    functionDepth: 4
    functionLinenumber: 1437
    functionLinenumberEnd: 1457
    functionName: HeapTupleSatisfiesNonVacuumable
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsValid
    - Assert
    - HeapTupleSatisfiesVacuumHorizon
    - GlobalVisTestIsRemovableXid
    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:1478,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1478,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1479,1
    - Dst: HeapTupleHeaderXminCommitted
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1487,1
    - Dst: HeapTupleHeaderXminInvalid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1488,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1500,1
    - Dst: GlobalVisTestIsRemovableXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1515,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1516,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - htup
    - vistest
    argTypes:
    - HeapTuple
    - GlobalVisState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1517
      start: 1473
    functionDepth: 2
    functionLinenumber: 1473
    functionLinenumberEnd: 1517
    functionName: HeapTupleIsSurelyDead
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 1
    functionsReached:
    - Assert
    - HeapTupleHeaderXminCommitted
    - GlobalVisTestIsRemovableXid
    - ItemPointerIsValid
    - HeapTupleHeaderGetRawXmax
    - HeapTupleHeaderXminInvalid
    - HEAP_XMAX_IS_LOCKED_ONLY
    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:1541,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1541,1
    - Dst: HeapTupleGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1552,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1555,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1555,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1557,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1559,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1561,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleHeader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1569
      start: 1528
    functionDepth: 3
    functionLinenumber: 1528
    functionLinenumberEnd: 1569
    functionName: HeapTupleHeaderIsOnlyLocked
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 6
    functionsReached:
    - TransactionIdIsInProgress
    - Assert
    - TransactionIdIsValid
    - TransactionIdDidCommit
    - HeapTupleGetUpdateXid
    - HeapTupleHeaderGetRawXmax
    - TransactionIdIsCurrentTransactionId
    linkageType: ''
    returnType: bool
    signature: bool HeapTupleHeaderIsOnlyLocked(HeapTupleHeader tuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bsearch
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1578,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - xid
    - xip
    - num
    argTypes:
    - TransactionId
    - TransactionId*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1579
      start: 1574
    functionDepth: 0
    functionLinenumber: 1574
    functionLinenumberEnd: 1579
    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:1600,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1601,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1603,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1603,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1604,1
    - Dst: HeapTupleHeaderXminInvalid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1607,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1609,1
    - Dst: TransactionIdDidCommit
      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:1616,1
    - Dst: ResolveCminCmaxDuringDecoding
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1624,1
    - Dst: HistoricSnapshotGetTupleCids
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1624,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1648,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1655,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1657,1
    - Dst: HeapTupleHeaderXminCommitted
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1657,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1658,1
    - Dst: HeapTupleHeaderXminCommitted
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1661,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1662,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1667,1
    - Dst: TransactionIdInArray
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1672,1
    - Dst: HEAP_XMAX_IS_LOCKED_ONLY
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1692,1
    - Dst: HeapTupleGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1701,1
    - Dst: TransactionIdInArray
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1705,1
    - Dst: HeapTupleHeaderGetRawCommandId
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1709,1
    - Dst: ResolveCminCmaxDuringDecoding
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1712,1
    - Dst: HistoricSnapshotGetTupleCids
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1712,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1742,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1744,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1745,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1752,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1755,1
    - Dst: TransactionIdInArray
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1758,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 53
    argCount: 3
    argNames:
    - htup
    - snapshot
    - buffer
    argTypes:
    - HeapTuple
    - Snapshot
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1763
      start: 1595
    functionDepth: 3
    functionLinenumber: 1595
    functionLinenumberEnd: 1763
    functionName: HeapTupleSatisfiesHistoricMVCC
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 0
    functionsReached:
    - Assert
    - HeapTupleHeaderXminCommitted
    - TransactionIdDidCommit
    - TransactionIdInArray
    - HeapTupleHeaderGetRawCommandId
    - ItemPointerIsValid
    - HeapTupleGetUpdateXid
    - TransactionIdPrecedes
    - HeapTupleHeaderGetRawXmax
    - TransactionIdFollowsOrEquals
    - ResolveCminCmaxDuringDecoding
    - HeapTupleHeaderXminInvalid
    - HistoricSnapshotGetTupleCids
    - HeapTupleHeaderGetXmin
    - HEAP_XMAX_IS_LOCKED_ONLY
    linkageType: ''
    returnType: bool
    signature: "bool HeapTupleSatisfiesHistoricMVCC(HeapTuple htup, Snapshot snapshot,\n\t\t\t\t\t\t\t
      \  Buffer buffer)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleSatisfiesMVCC
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1781,1
    - Dst: HeapTupleSatisfiesSelf
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1783,1
    - Dst: HeapTupleSatisfiesAny
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1785,1
    - Dst: HeapTupleSatisfiesToast
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1787,1
    - Dst: HeapTupleSatisfiesDirty
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1789,1
    - Dst: HeapTupleSatisfiesHistoricMVCC
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1791,1
    - Dst: HeapTupleSatisfiesNonVacuumable
      Src: /src/postgres/src/backend/access/heap/heapam_visibility.c:1793,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - htup
    - snapshot
    - buffer
    argTypes:
    - HeapTuple
    - Snapshot
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1797
      start: 1775
    functionDepth: 5
    functionLinenumber: 1775
    functionLinenumberEnd: 1797
    functionName: HeapTupleSatisfiesVisibility
    functionSourceFile: /src/postgres/src/backend/access/heap/heapam_visibility.c
    functionUses: 10
    functionsReached:
    - HeapTupleSatisfiesAny
    - HeapTupleSatisfiesDirty
    - HeapTupleSatisfiesMVCC
    - HeapTupleSatisfiesToast
    - HeapTupleSatisfiesSelf
    - HeapTupleSatisfiesHistoricMVCC
    - HeapTupleSatisfiesNonVacuumable
    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:543,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:544,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:549,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:550,1
    - Dst: visibilitymap_count
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:563,1
    - Dst: pg_prng_uint32
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:580,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:584,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 2
    argNames:
    - vacrel
    - params
    argTypes:
    - LVRelState*
    - VacuumParams
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 487
    functionDepth: 5
    functionLinenumber: 487
    functionLinenumberEnd: 601
    functionName: heap_vacuum_eager_scan_setup
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 0
    functionsReached:
    - Assert
    - MultiXactIdIsValid
    - TransactionIdIsNormal
    - MultiXactIdPrecedes
    - visibilitymap_count
    - TransactionIdPrecedes
    - pg_prng_uint32
    linkageType: ''
    returnType: void
    signature: void heap_vacuum_eager_scan_setup(LVRelState *vacrel, const VacuumParams
      params)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: AmAutoVacuumWorkerProcess
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:638,1
    - Dst: pg_rusage_init
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:642,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:651,1
    - Dst: pgstat_progress_start_command
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:653,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:654,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:668,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:669,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:670,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:670,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:671,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:671,1
    - Dst: vac_open_indexes
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:682,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:688,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:690,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:690,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:702,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:703,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:729,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:746,1
    - Dst: vacuum_get_cutoffs
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:777,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:778,1
    - Dst: GlobalVisTestFor
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:779,1
    - Dst: heap_vacuum_eager_scan_setup
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:809,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:814,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:815,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:819,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:820,1
    - Dst: lazy_check_wraparound_failsafe
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:832,1
    - Dst: dead_items_alloc
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:833,1
    - Dst: lazy_scan_heap
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:839,1
    - Dst: dead_items_cleanup
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:845,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:846,1
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:846,1
    - Dst: update_relstats_all_indexes
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:855,1
    - Dst: vac_close_indexes
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:858,1
    - Dst: should_attempt_truncation
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:861,1
    - Dst: lazy_truncate_heap
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:862,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:868,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:878,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:879,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:882,1
    - Dst: MultiXactIdPrecedesOrEquals
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:883,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:893,1
    - Dst: visibilitymap_count
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:903,1
    - Dst: vac_update_relstats
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:922,1
    - Dst: pgstat_report_vacuum
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:938,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:938,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:940,1
    - Dst: pgstat_progress_end_command
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:944,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:948,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:951,1
    - Dst: TimestampDifference
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:967,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:968,1
    - Dst: WalUsageAccumDiff
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:969,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:970,1
    - Dst: BufferUsageAccumDiff
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:971,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:980,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:987,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:988,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:999,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1001,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1006,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1008,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1010,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1015,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1015,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1023,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1024,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1029,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1030,1
    - Dst: ReadNextTransactionId
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1033,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1035,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1036,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1042,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1043,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1050,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1051,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1054,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1054,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1061,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1062,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1070,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1070,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1072,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1072,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1074,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1079,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1079,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1081,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1081,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1083,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1085,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1097,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1098,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1113,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1113,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1121,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1121,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1131,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1131,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1133,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1134,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1138,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1139,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1144,1
    - Dst: _
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1144,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1144,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1146,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1147,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1148,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1156,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1159,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 195
    argCount: 3
    argNames:
    - rel
    - params
    - bstrategy
    argTypes:
    - Relation
    - VacuumParams
    - BufferAccessStrategy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1161
      start: 614
    functionDepth: 6
    functionLinenumber: 614
    functionLinenumberEnd: 1161
    functionName: heap_vacuum_rel
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 0
    functionsReached:
    - GlobalVisTestFor
    - lazy_check_wraparound_failsafe
    - pstrdup
    - pgstat_progress_start_command
    - pg_rusage_show
    - visibilitymap_count
    - BufferUsageAccumDiff
    - RelationGetRelationName
    - dead_items_cleanup
    - pgstat_progress_end_command
    - pfree
    - TimestampDifference
    - RelationGetRelid
    - IsInParallelMode
    - vacuum_get_cutoffs
    - lazy_scan_heap
    - Max
    - _
    - TransactionIdPrecedesOrEquals
    - TimestampDifferenceExceeds
    - ReadNextTransactionId
    - RelationGetNumberOfBlocks
    - update_relstats_all_indexes
    - WalUsageAccumDiff
    - errmsg
    - lazy_truncate_heap
    - MultiXactIdPrecedesOrEquals
    - appendStringInfoString
    - get_namespace_name
    - vac_open_indexes
    - GetCurrentTimestamp
    - RelationGetNamespace
    - vac_close_indexes
    - palloc
    - Assert
    - pg_rusage_init
    - appendStringInfo
    - memset
    - dead_items_alloc
    - pgstat_progress_update_param
    - pgstat_report_vacuum
    - errmsg_internal
    - palloc0
    - ereport
    - AmAutoVacuumWorkerProcess
    - vac_update_relstats
    - get_database_name
    - initStringInfo
    - should_attempt_truncation
    - heap_vacuum_eager_scan_setup
    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:1220,1
    - Dst: read_stream_begin_relation
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1235,1
    - Dst: vacuum_delay_point
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1254,1
    - Dst: lazy_check_wraparound_failsafe
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1267,1
    - Dst: TidStoreMemoryUsage
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1278,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1286,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1288,1
    - Dst: lazy_vacuum
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1294,1
    - Dst: FreeSpaceMapVacuumRange
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1301,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1306,1
    - Dst: read_stream_next_buffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1310,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1313,1
    - Dst: CheckBufferIsPinnedOnce
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1317,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1318,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1319,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1326,1
    - Dst: update_vacuum_error_info
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1327,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1335,1
    - Dst: ConditionalLockBufferForCleanup
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1343,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1346,1
    - Dst: lazy_scan_new_or_empty
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1349,1
    - Dst: lazy_scan_noprune
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1365,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1371,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1372,1
    - Dst: LockBufferForCleanup
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1373,1
    - Dst: lazy_scan_prune
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1391,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1414,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1431,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1432,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1474,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1476,1
    - Dst: RecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1477,1
    - Dst: FreeSpaceMapVacuumRange
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1488,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1494,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1498,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1499,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1505,1
    - Dst: vac_estimate_reltuples
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1509,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1518,1
    - Dst: read_stream_end
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1521,1
    - Dst: lazy_vacuum
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1528,1
    - Dst: FreeSpaceMapVacuumRange
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1537,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1540,1
    - Dst: lazy_cleanup_all_indexes
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1544,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 93
    argCount: 1
    argNames:
    - vacrel
    argTypes:
    - LVRelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1545
      start: 1199
    functionDepth: 4
    functionLinenumber: 1199
    functionLinenumberEnd: 1545
    functionName: lazy_scan_heap
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - TidStoreMemoryUsage
    - ReleaseBuffer
    - LockBuffer
    - lazy_check_wraparound_failsafe
    - lazy_vacuum
    - vacuum_delay_point
    - ConditionalLockBufferForCleanup
    - lazy_cleanup_all_indexes
    - lazy_scan_new_or_empty
    - read_stream_next_buffer
    - read_stream_begin_relation
    - lazy_scan_noprune
    - BufferGetBlockNumber
    - vac_estimate_reltuples
    - Max
    - errmsg
    - PageGetHeapFreeSpace
    - BufferIsValid
    - LockBufferForCleanup
    - pgstat_progress_update_multi_param
    - FreeSpaceMapVacuumRange
    - lazy_scan_prune
    - BufferGetPage
    - UnlockReleaseBuffer
    - update_vacuum_error_info
    - Assert
    - read_stream_end
    - pgstat_progress_update_param
    - CheckBufferIsPinnedOnce
    - visibilitymap_pin
    - RecordPageWithFreeSpace
    - ereport
    linkageType: ''
    returnType: void
    signature: void lazy_scan_heap(LVRelState *vacrel)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1586,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1588,1
    - Dst: find_next_unskippable_block
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1607,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1651,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 3
    argNames:
    - stream
    - callback_private_data
    - per_buffer_data
    argTypes:
    - ReadStream*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1661
      start: 1571
    functionDepth: 2
    functionLinenumber: 1571
    functionLinenumberEnd: 1661
    functionName: heap_vac_scan_next_block
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 0
    functionsReached:
    - Assert
    - BufferIsValid
    - find_next_unskippable_block
    - ReleaseBuffer
    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:1689,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1714,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 30
    argCount: 2
    argNames:
    - vacrel
    - skipsallvis
    argTypes:
    - LVRelState*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1772
      start: 1676
    functionDepth: 5
    functionLinenumber: 1676
    functionLinenumberEnd: 1772
    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:1814,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1835,1
    - Dst: GetRecordedFreeSpace
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1837,1
    - Dst: RecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1841,1
    - Dst: PageIsEmpty
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1847,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1856,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1857,1
    - Dst: PageIsEmpty
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1859,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1874,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1876,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1879,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1890,1
    - Dst: PageGetLSN
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1891,1
    - Dst: log_newpage_buffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1892,1
    - Dst: PageSetAllVisible
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1894,1
    - Dst: visibilitymap_set
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1895,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1900,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1907,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1908,1
    - Dst: RecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1909,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 6
    argNames:
    - vacrel
    - buf
    - blkno
    - page
    - sharelock
    - vmbuffer
    argTypes:
    - LVRelState*
    - Buffer
    - BlockNumber
    - Page
    - bool
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1915
      start: 1808
    functionDepth: 5
    functionLinenumber: 1808
    functionLinenumberEnd: 1915
    functionName: lazy_scan_new_or_empty
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - PageIsAllVisible
    - MarkBufferDirty
    - PageGetHeapFreeSpace
    - START_CRIT_SECTION
    - LockBuffer
    - GetRecordedFreeSpace
    - PageGetLSN
    - RecordPageWithFreeSpace
    - log_newpage_buffer
    - visibilitymap_set
    - PageIsEmpty
    - END_CRIT_SECTION
    - PageSetAllVisible
    - PageIsNew
    - UnlockReleaseBuffer
    - RelationNeedsWAL
    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:1921,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1922
      start: 1918
    functionDepth: 1
    functionLinenumber: 1918
    functionLinenumberEnd: 1922
    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: 17
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1957,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1957,1
    - Dst: heap_page_prune_and_freeze
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1978,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1983,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1983,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1984,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:1984,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2011,1
    - Dst: heap_page_is_all_visible
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2013,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2015,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2017,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2019,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2019,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2037,1
    - Dst: dead_items_add
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2040,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2057,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2071,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2071,1
    - Dst: PageSetAllVisible
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2088,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2089,1
    - Dst: visibilitymap_set
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2090,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2122,1
    - Dst: visibilitymap_get_status
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2123,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2125,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2127,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2145,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2147,1
    - Dst: PageClearAllVisible
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2149,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2150,1
    - Dst: visibilitymap_clear
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2151,1
    - Dst: VM_ALL_FROZEN
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2161,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2170,1
    - Dst: PageSetAllVisible
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2172,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2173,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2183,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2183,1
    - Dst: visibilitymap_set
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2184,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 79
    argCount: 8
    argNames:
    - vacrel
    - buf
    - blkno
    - page
    - vmbuffer
    - all_visible_according_to_vm
    - has_lpdead_items
    - vm_page_frozen
    argTypes:
    - LVRelState*
    - Buffer
    - BlockNumber
    - Page
    - Buffer
    - bool
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2216
      start: 1943
    functionDepth: 5
    functionLinenumber: 1943
    functionLinenumberEnd: 2216
    functionName: lazy_scan_prune
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - PageIsAllVisible
    - MarkBufferDirty
    - Assert
    - qsort
    - VM_ALL_FROZEN
    - BufferGetBlockNumber
    - visibilitymap_clear
    - TransactionIdIsValid
    - visibilitymap_get_status
    - MultiXactIdIsValid
    - visibilitymap_set
    - heap_page_is_all_visible
    - elog
    - PageClearAllVisible
    - dead_items_add
    - PageSetAllVisible
    - heap_page_prune_and_freeze
    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 all_visible_according_to_vm,\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:2257,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2257,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2266,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2269,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2275,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2277,1
    - Dst: ItemIdIsRedirected
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2280,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2286,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2297,1
    - Dst: heap_tuple_should_freeze
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2298,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2330,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2331,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2332,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2333,1
    - Dst: HeapTupleSatisfiesVacuum
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2335,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2369,1
    - Dst: dead_items_add
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2411,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: 2434
      start: 2238
    functionDepth: 3
    functionLinenumber: 2238
    functionLinenumberEnd: 2434
    functionName: lazy_scan_noprune
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - Assert
    - PageGetItemId
    - ItemPointerSet
    - BufferGetBlockNumber
    - ItemIdIsRedirected
    - RelationGetRelid
    - ItemIdIsUsed
    - HeapTupleSatisfiesVacuum
    - ItemIdGetLength
    - OffsetNumberNext
    - elog
    - ItemIdIsDead
    - dead_items_add
    - heap_tuple_should_freeze
    - PageGetItem
    - PageGetMaxOffsetNumber
    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:2455,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2456,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2460,1
    - Dst: dead_items_reset
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2461,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2489,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2490,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2491,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2492,1
    - Dst: TidStoreMemoryUsage
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2518,1
    - Dst: lazy_vacuum_all_indexes
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2535,1
    - Dst: lazy_vacuum_heap_rel
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2541,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2556,1
    - Dst: dead_items_reset
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2563,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 1
    argNames:
    - vacrel
    argTypes:
    - LVRelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2564
      start: 2449
    functionDepth: 1
    functionLinenumber: 2449
    functionLinenumberEnd: 2564
    functionName: lazy_vacuum
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - TidStoreMemoryUsage
    - dead_items_reset
    - Assert
    - lazy_vacuum_heap_rel
    - lazy_vacuum_all_indexes
    linkageType: ''
    returnType: void
    signature: void lazy_vacuum(LVRelState *vacrel)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2591,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2592,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2593,1
    - Dst: lazy_check_wraparound_failsafe
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2596,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2608,1
    - Dst: ParallelVacuumIsActive
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2610,1
    - Dst: lazy_vacuum_one_index
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2617,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2622,1
    - Dst: lazy_check_wraparound_failsafe
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2625,1
    - Dst: parallel_vacuum_bulkdel_all_indexes
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2636,1
    - Dst: lazy_check_wraparound_failsafe
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2643,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2654,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2656,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2669,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 1
    argNames:
    - vacrel
    argTypes:
    - LVRelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2672
      start: 2574
    functionDepth: 1
    functionLinenumber: 2574
    functionLinenumberEnd: 2672
    functionName: lazy_vacuum_all_indexes
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - Assert
    - pgstat_progress_update_multi_param
    - pgstat_progress_update_param
    - lazy_check_wraparound_failsafe
    - parallel_vacuum_bulkdel_all_indexes
    - lazy_vacuum_one_index
    - ParallelVacuumIsActive
    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:2689,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2697,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: 2700
      start: 2681
    functionDepth: 1
    functionLinenumber: 2681
    functionLinenumberEnd: 2700
    functionName: vacuum_reap_lp_read_stream_next
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 0
    functionsReached:
    - memcpy
    - TidStoreIterateNext
    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:2728,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2729,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2730,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2733,1
    - Dst: update_vacuum_error_info
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2737,1
    - Dst: TidStoreBeginIterate
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2741,1
    - Dst: read_stream_begin_relation
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2751,1
    - Dst: vacuum_delay_point
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2770,1
    - Dst: read_stream_next_buffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2772,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2775,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2778,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2780,1
    - Dst: TidStoreGetBlockOffsets
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2781,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2781,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2782,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2782,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2789,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2792,1
    - Dst: lazy_vacuum_heap_page
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2793,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2797,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2798,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2800,1
    - Dst: RecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2801,1
    - Dst: read_stream_end
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2805,1
    - Dst: TidStoreEndIterate
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2806,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2809,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2810,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2816,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2820,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2821,1
    - Dst: restore_vacuum_error_info
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2826,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 1
    argNames:
    - vacrel
    argTypes:
    - LVRelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2827
      start: 2719
    functionDepth: 4
    functionLinenumber: 2719
    functionLinenumberEnd: 2827
    functionName: lazy_vacuum_heap_rel
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - lengthof
    - ReleaseBuffer
    - LockBuffer
    - vacuum_delay_point
    - read_stream_next_buffer
    - read_stream_begin_relation
    - BufferGetBlockNumber
    - TidStoreEndIterate
    - restore_vacuum_error_info
    - errmsg
    - PageGetHeapFreeSpace
    - BufferIsValid
    - BufferGetPage
    - TidStoreBeginIterate
    - UnlockReleaseBuffer
    - update_vacuum_error_info
    - Assert
    - read_stream_end
    - lazy_vacuum_heap_page
    - pgstat_progress_update_param
    - visibilitymap_pin
    - TidStoreGetBlockOffsets
    - RecordPageWithFreeSpace
    - ereport
    linkageType: ''
    returnType: void
    signature: void lazy_vacuum_heap_rel(LVRelState *vacrel)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2842,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2849,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2851,1
    - Dst: update_vacuum_error_info
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2854,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2858,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2865,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2867,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2867,1
    - Dst: ItemIdHasStorage
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2867,1
    - Dst: ItemIdSetUnused
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2868,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2872,1
    - Dst: PageTruncateLinePointerArray
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2875,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2880,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2883,1
    - Dst: log_heap_prune_and_freeze
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2885,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2901,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2909,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2909,1
    - Dst: heap_page_is_all_visible
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2910,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2917,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2917,1
    - Dst: PageSetAllVisible
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2921,1
    - Dst: visibilitymap_set
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2922,1
    - Dst: restore_vacuum_error_info
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2934,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 6
    argNames:
    - vacrel
    - blkno
    - buffer
    - deadoffsets
    - num_offsets
    - vmbuffer
    argTypes:
    - LVRelState*
    - BlockNumber
    - Buffer
    - OffsetNumber*
    - int
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2935
      start: 2837
    functionDepth: 5
    functionLinenumber: 2837
    functionLinenumberEnd: 2935
    functionName: lazy_vacuum_heap_page
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - MarkBufferDirty
    - ItemIdHasStorage
    - PageSetAllVisible
    - START_CRIT_SECTION
    - visibilitymap_set
    - heap_page_is_all_visible
    - restore_vacuum_error_info
    - ItemIdIsDead
    - RelationNeedsWAL
    - PageIsAllVisible
    - PageGetItemId
    - ItemIdSetUnused
    - TransactionIdIsValid
    - PageTruncateLinePointerArray
    - BufferGetPage
    - update_vacuum_error_info
    - Assert
    - pgstat_progress_update_param
    - log_heap_prune_and_freeze
    - END_CRIT_SECTION
    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:2956,1
    - Dst: vacuum_xid_failsafe_check
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2956,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2979,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2981,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2982,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2985,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:2986,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - vacrel
    argTypes:
    - LVRelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2997
      start: 2949
    functionDepth: 1
    functionLinenumber: 2949
    functionLinenumberEnd: 2997
    functionName: lazy_check_wraparound_failsafe
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 3
    functionsReached:
    - errmsg
    - pgstat_progress_update_multi_param
    - vacuum_xid_failsafe_check
    - ereport
    - unlikely
    - errhint
    - 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:3018,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3019,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3027,1
    - Dst: ParallelVacuumIsActive
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3029,1
    - Dst: lazy_cleanup_one_index
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3037,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3041,1
    - Dst: parallel_vacuum_cleanup_all_indexes
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3048,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3054,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - vacrel
    argTypes:
    - LVRelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3055
      start: 3002
    functionDepth: 1
    functionLinenumber: 3002
    functionLinenumberEnd: 3055
    functionName: lazy_cleanup_all_indexes
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - lazy_cleanup_one_index
    - Assert
    - parallel_vacuum_cleanup_all_indexes
    - pgstat_progress_update_multi_param
    - pgstat_progress_update_param
    - ParallelVacuumIsActive
    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:3092,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3093,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3093,1
    - Dst: update_vacuum_error_info
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3094,1
    - Dst: vac_bulkdel_one_index
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3099,1
    - Dst: restore_vacuum_error_info
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3103,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 4
    argNames:
    - indrel
    - istat
    - reltuples
    - vacrel
    argTypes:
    - Relation
    - IndexBulkDeleteResult*
    - double
    - LVRelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3108
      start: 3070
    functionDepth: 1
    functionLinenumber: 3070
    functionLinenumberEnd: 3108
    functionName: lazy_vacuum_one_index
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - update_vacuum_error_info
    - Assert
    - pfree
    - pstrdup
    - restore_vacuum_error_info
    - vac_bulkdel_one_index
    - 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:3143,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3144,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3144,1
    - Dst: update_vacuum_error_info
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3145,1
    - Dst: vac_cleanup_one_index
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3149,1
    - Dst: restore_vacuum_error_info
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3152,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3153,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: 3157
      start: 3119
    functionDepth: 1
    functionLinenumber: 3119
    functionLinenumberEnd: 3157
    functionName: lazy_cleanup_one_index
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - update_vacuum_error_info
    - Assert
    - pfree
    - pstrdup
    - restore_vacuum_error_info
    - vac_cleanup_one_index
    - 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: 3194
      start: 3179
    functionDepth: 0
    functionLinenumber: 3179
    functionLinenumberEnd: 3194
    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:3208,1
    - Dst: update_vacuum_error_info
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3212,1
    - Dst: ConditionalLockRelation
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3231,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3238,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3247,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3248,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3253,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3257,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3265,1
    - Dst: UnlockRelation
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3275,1
    - Dst: count_nondeletable_pages
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3285,1
    - Dst: UnlockRelation
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3291,1
    - Dst: RelationTruncate
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3298,1
    - Dst: UnlockRelation
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3307,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3317,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3318,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 1
    argNames:
    - vacrel
    argTypes:
    - LVRelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3323
      start: 3199
    functionDepth: 1
    functionLinenumber: 3199
    functionLinenumberEnd: 3323
    functionName: lazy_truncate_heap
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - errmsg
    - update_vacuum_error_info
    - ConditionalLockRelation
    - ResetLatch
    - count_nondeletable_pages
    - CHECK_FOR_INTERRUPTS
    - RelationTruncate
    - pgstat_progress_update_param
    - ereport
    - RelationGetNumberOfBlocks
    - WaitLatch
    - UnlockRelation
    linkageType: ''
    returnType: void
    signature: void lazy_truncate_heap(LVRelState *vacrel)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3338,1
    - Dst: StaticAssertStmt
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3347,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3371,1
    - Dst: INSTR_TIME_SUBTRACT
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3373,1
    - Dst: INSTR_TIME_GET_MICROSEC
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3374,1
    - Dst: LockHasWaitersRelation
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3377,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3379,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3380,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3395,1
    - Dst: PrefetchBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3408,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3409,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3414,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3418,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3420,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3422,1
    - Dst: PageIsEmpty
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3422,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3424,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3429,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3432,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3436,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3443,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3450,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 50
    argCount: 2
    argNames:
    - vacrel
    - lock_waiter_detected
    argTypes:
    - LVRelState*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3463
      start: 3330
    functionDepth: 4
    functionLinenumber: 3330
    functionLinenumberEnd: 3463
    functionName: count_nondeletable_pages
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - CHECK_FOR_INTERRUPTS
    - LockBuffer
    - INSTR_TIME_SUBTRACT
    - ItemIdIsUsed
    - OffsetNumberNext
    - PageIsEmpty
    - INSTR_TIME_SET_CURRENT
    - PageIsNew
    - errmsg
    - PageGetItemId
    - LockHasWaitersRelation
    - PrefetchBuffer
    - ReadBufferExtended
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - INSTR_TIME_GET_MICROSEC
    - ereport
    - StaticAssertStmt
    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:3476,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3491,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3498,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3499,1
    - Dst: parallel_vacuum_init
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3503,1
    - Dst: ParallelVacuumIsActive
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3513,1
    - Dst: parallel_vacuum_get_dead_items
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3515,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3526,1
    - Dst: TidStoreCreateLocal
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3531,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - vacrel
    - nworkers
    argTypes:
    - LVRelState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3532
      start: 3472
    functionDepth: 1
    functionLinenumber: 3472
    functionLinenumberEnd: 3532
    functionName: dead_items_alloc
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - errmsg
    - parallel_vacuum_init
    - RelationUsesLocalBuffers
    - ereport
    - TidStoreCreateLocal
    - ParallelVacuumIsActive
    - AmAutoVacuumWorkerProcess
    - palloc
    - parallel_vacuum_get_dead_items
    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:3547,1
    - Dst: TidStoreMemoryUsage
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3552,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3553,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: 3554
      start: 3537
    functionDepth: 1
    functionLinenumber: 3537
    functionLinenumberEnd: 3554
    functionName: dead_items_add
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 2
    functionsReached:
    - TidStoreMemoryUsage
    - TidStoreSetBlockOffsets
    - pgstat_progress_update_multi_param
    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: ParallelVacuumIsActive
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3562,1
    - Dst: parallel_vacuum_reset_dead_items
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3564,1
    - Dst: TidStoreDestroy
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3569,1
    - Dst: TidStoreCreateLocal
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3570,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - vacrel
    argTypes:
    - LVRelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3574
      start: 3559
    functionDepth: 1
    functionLinenumber: 3559
    functionLinenumberEnd: 3574
    functionName: dead_items_reset
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - TidStoreCreateLocal
    - ParallelVacuumIsActive
    - TidStoreDestroy
    - parallel_vacuum_reset_dead_items
    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:3582,1
    - Dst: parallel_vacuum_end
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3589,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - vacrel
    argTypes:
    - LVRelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3591
      start: 3579
    functionDepth: 1
    functionLinenumber: 3579
    functionLinenumberEnd: 3591
    functionName: dead_items_cleanup
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 1
    functionsReached:
    - parallel_vacuum_end
    - ParallelVacuumIsActive
    linkageType: ''
    returnType: void
    signature: void dead_items_cleanup(LVRelState *vacrel)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3609,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3610,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3618,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3621,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3631,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3634,1
    - Dst: ItemIdIsRedirected
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3634,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3637,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3643,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3650,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3650,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3652,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3653,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3654,1
    - Dst: HeapTupleSatisfiesVacuum
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3656,1
    - Dst: HeapTupleHeaderXminCommitted
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3664,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3675,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3676,1
    - Dst: TransactionIdFollows
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3685,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3686,1
    - Dst: heap_tuple_needs_eventual_freeze
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3691,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3706,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 53
    argCount: 4
    argNames:
    - vacrel
    - buf
    - visibility_cutoff_xid
    - all_frozen
    argTypes:
    - LVRelState*
    - Buffer
    - TransactionId*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3715
      start: 3604
    functionDepth: 4
    functionLinenumber: 3604
    functionLinenumberEnd: 3715
    functionName: heap_page_is_all_visible
    functionSourceFile: /src/postgres/src/backend/access/heap/vacuumlazy.c
    functionUses: 2
    functionsReached:
    - ItemPointerSet
    - heap_tuple_needs_eventual_freeze
    - ItemIdIsNormal
    - TransactionIdFollows
    - BufferGetBlockNumber
    - RelationGetRelid
    - ItemIdIsUsed
    - OffsetNumberNext
    - PageGetItem
    - HeapTupleHeaderGetXmin
    - TransactionIdPrecedes
    - ItemIdIsDead
    - PageGetItemId
    - HeapTupleHeaderXminCommitted
    - ItemIdIsRedirected
    - TransactionIdIsNormal
    - elog
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - Assert
    - HeapTupleSatisfiesVacuum
    - ItemIdGetLength
    linkageType: ''
    returnType: bool
    signature: "bool heap_page_is_all_visible(LVRelState *vacrel, Buffer buf,\n\t\t\t\t\t\t
      TransactionId *visibility_cutoff_xid,\n\t\t\t\t\t\t bool *all_frozen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3727,1
    - Dst: vac_update_relstats
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3738,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - vacrel
    argTypes:
    - LVRelState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3747
      start: 3720
    functionDepth: 1
    functionLinenumber: 3720
    functionLinenumberEnd: 3747
    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:3763,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3765,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3766,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3769,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3773,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3778,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3780,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3781,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3784,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3788,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3793,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3798,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3803,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/access/heap/vacuumlazy.c:3804,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3813
      start: 3755
    functionDepth: 1
    functionLinenumber: 3755
    functionLinenumberEnd: 3813
    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: 3833
      start: 3819
    functionDepth: 0
    functionLinenumber: 3819
    functionLinenumberEnd: 3833
    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: 3845
      start: 3838
    functionDepth: 0
    functionLinenumber: 3838
    functionLinenumberEnd: 3845
    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:65,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/hio.c:68,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/hio.c:68,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/hio.c:77,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/hio.c:78,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 4
    argNames:
    - relation
    - buffer
    - tuple
    - token
    argTypes:
    - Relation
    - Buffer
    - HeapTuple
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 34
    functionDepth: 4
    functionLinenumber: 34
    functionLinenumberEnd: 82
    functionName: RelationPutHeapTuple
    functionSourceFile: /src/postgres/src/backend/access/heap/hio.c
    functionUses: 3
    functionsReached:
    - Assert
    - ItemPointerSet
    - PageGetItemId
    - BufferGetBlockNumber
    - PageAddItem
    - HeapTupleHeaderIsSpeculative
    - elog
    - BufferGetPage
    - PageGetItem
    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:95,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/hio.c:101,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/hio.c:107,1
    - Dst: IncrBufferRefCount
      Src: /src/postgres/src/backend/access/heap/hio.c:110,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:114,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/heap/hio.c:119,1
    - Dst: IncrBufferRefCount
      Src: /src/postgres/src/backend/access/heap/hio.c:123,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - relation
    - targetBlock
    - mode
    - bistate
    argTypes:
    - Relation
    - BlockNumber
    - ReadBufferMode
    - BulkInsertState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 127
    functionName: ReadBufferBI
    functionSourceFile: /src/postgres/src/backend/access/heap/hio.c
    functionUses: 0
    functionsReached:
    - Assert
    - BufferGetBlockNumber
    - ReleaseBuffer
    - IncrBufferRefCount
    - ReadBufferExtended
    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:152,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/hio.c:153,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/hio.c:168,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/heap/hio.c:168,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/hio.c:169,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/hio.c:174,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/hio.c:174,1
    - Dst: visibilitymap_pin_ok
      Src: /src/postgres/src/backend/access/heap/hio.c:175,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/hio.c:177,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/hio.c:177,1
    - Dst: visibilitymap_pin_ok
      Src: /src/postgres/src/backend/access/heap/hio.c:178,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:184,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:186,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/hio.c:190,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/hio.c:192,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:195,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:197,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: 211
      start: 139
    functionDepth: 4
    functionLinenumber: 139
    functionLinenumberEnd: 211
    functionName: GetVisibilityMapPins
    functionSourceFile: /src/postgres/src/backend/access/heap/hio.c
    functionUses: 0
    functionsReached:
    - PageIsAllVisible
    - Assert
    - BufferIsValid
    - visibilitymap_pin_ok
    - LockBuffer
    - visibilitymap_pin
    - BufferGetPage
    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:271,1
    - Dst: RelationExtensionLockWaiterCount
      Src: /src/postgres/src/backend/access/heap/hio.c:272,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/heap/hio.c:301,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/heap/hio.c:307,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:328,1
    - Dst: ExtendBufferedRelBy
      Src: /src/postgres/src/backend/access/heap/hio.c:341,1
    - Dst: BMR_REL
      Src: /src/postgres/src/backend/access/heap/hio.c:341,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/hio.c:349,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/hio.c:349,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/hio.c:357,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/heap/hio.c:358,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/hio.c:359,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/heap/hio.c:361,1
    - Dst: PageInit
      Src: /src/postgres/src/backend/access/heap/hio.c:363,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/heap/hio.c:363,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/hio.c:364,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:373,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/hio.c:388,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/hio.c:388,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/hio.c:389,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/heap/hio.c:389,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:391,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/heap/hio.c:395,1
    - Dst: RecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/heap/hio.c:398,1
    - Dst: FreeSpaceMapVacuumRange
      Src: /src/postgres/src/backend/access/heap/hio.c:406,1
    - Dst: IncrBufferRefCount
      Src: /src/postgres/src/backend/access/heap/hio.c:427,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: 434
      start: 237
    functionDepth: 4
    functionLinenumber: 237
    functionLinenumberEnd: 434
    functionName: RelationAddBlocks
    functionSourceFile: /src/postgres/src/backend/access/heap/hio.c
    functionUses: 0
    functionsReached:
    - RELATION_IS_LOCAL
    - MarkBufferDirty
    - ReleaseBuffer
    - LockBuffer
    - BufferGetPageSize
    - RelationGetRelationName
    - Min
    - BufferGetBlockNumber
    - PageInit
    - Max
    - BlockNumberIsValid
    - PageIsNew
    - elog
    - FreeSpaceMapVacuumRange
    - BufferGetPage
    - BMR_REL
    - Assert
    - RelationExtensionLockWaiterCount
    - IncrBufferRefCount
    - RecordPageWithFreeSpace
    - ExtendBufferedRelBy
    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:520,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/hio.c:527,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/heap/hio.c:533,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/heap/hio.c:534,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/heap/hio.c:535,1
    - Dst: RelationGetTargetPageFreeSpace
      Src: /src/postgres/src/backend/access/heap/hio.c:539,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/heap/hio.c:551,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/hio.c:556,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/hio.c:574,1
    - Dst: RelationGetTargetBlock
      Src: /src/postgres/src/backend/access/heap/hio.c:576,1
    - Dst: GetPageWithFreeSpace
      Src: /src/postgres/src/backend/access/heap/hio.c:584,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/heap/hio.c:594,1
    - Dst: ReadBufferBI
      Src: /src/postgres/src/backend/access/heap/hio.c:619,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/hio.c:620,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/hio.c:620,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/hio.c:621,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/hio.c:627,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/hio.c:627,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/hio.c:628,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:630,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/hio.c:636,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/hio.c:636,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/hio.c:637,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:638,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:643,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/hio.c:644,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/hio.c:644,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/hio.c:645,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:646,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:647,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:652,1
    - Dst: PageIsAllVisible
      Src: /src/postgres/src/backend/access/heap/hio.c:653,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/hio.c:653,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/hio.c:654,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:655,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:656,1
    - Dst: GetVisibilityMapPins
      Src: /src/postgres/src/backend/access/heap/hio.c:680,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/hio.c:688,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/heap/hio.c:696,1
    - Dst: PageInit
      Src: /src/postgres/src/backend/access/heap/hio.c:698,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/heap/hio.c:698,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/hio.c:699,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/hio.c:702,1
    - Dst: RelationSetTargetBlock
      Src: /src/postgres/src/backend/access/heap/hio.c:706,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:716,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:718,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:721,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:722,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/hio.c:728,1
    - Dst: RecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/heap/hio.c:737,1
    - Dst: RecordAndGetPageWithFreeSpace
      Src: /src/postgres/src/backend/access/heap/hio.c:759,1
    - Dst: RelationAddBlocks
      Src: /src/postgres/src/backend/access/heap/hio.c:767,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/hio.c:770,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/hio.c:771,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/hio.c:780,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/hio.c:780,1
    - Dst: visibilitymap_pin_ok
      Src: /src/postgres/src/backend/access/heap/hio.c:782,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:785,1
    - Dst: visibilitymap_pin
      Src: /src/postgres/src/backend/access/heap/hio.c:787,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:804,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:805,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/hio.c:823,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/hio.c:824,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/heap/hio.c:826,1
    - Dst: ConditionalLockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:826,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: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:831,1
    - Dst: GetVisibilityMapPins
      Src: /src/postgres/src/backend/access/heap/hio.c:846,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/hio.c:859,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:865,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/heap/hio.c:866,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/hio.c:870,1
    - Dst: RelationSetTargetBlock
      Src: /src/postgres/src/backend/access/heap/hio.c:882,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 137
    argCount: 8
    argNames:
    - relation
    - len
    - otherBuffer
    - options
    - bistate
    - vmbuffer
    - vmbuffer_other
    - num_pages
    argTypes:
    - Relation
    - Size
    - Buffer
    - int
    - BulkInsertState
    - Buffer*
    - Buffer*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 501
    functionDepth: 5
    functionLinenumber: 501
    functionLinenumberEnd: 885
    functionName: RelationGetBufferForTuple
    functionSourceFile: /src/postgres/src/backend/access/heap/hio.c
    functionUses: 3
    functionsReached:
    - MarkBufferDirty
    - ReleaseBuffer
    - LockBuffer
    - RelationGetTargetPageFreeSpace
    - BufferGetPageSize
    - RelationAddBlocks
    - GetVisibilityMapPins
    - RelationGetTargetBlock
    - BufferGetBlockNumber
    - RelationSetTargetBlock
    - PageInit
    - Max
    - RelationGetNumberOfBlocks
    - PageIsNew
    - errmsg
    - GetPageWithFreeSpace
    - PageIsAllVisible
    - ReadBuffer
    - PageGetHeapFreeSpace
    - visibilitymap_pin_ok
    - RecordAndGetPageWithFreeSpace
    - elog
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - Assert
    - ConditionalLockBuffer
    - visibilitymap_pin
    - RecordPageWithFreeSpace
    - ereport
    - unlikely
    - ReadBufferBI
    - errcode
    - MAXALIGN
    linkageType: ''
    returnType: Buffer
    signature: "Buffer RelationGetBufferForTuple(Relation relation, Size len,\n\t\t\t\t\t\t
      \ Buffer otherBuffer, int 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: 8
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:195,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:205,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:214,1
    - Dst: GlobalVisTestFor
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:221,1
    - Dst: GlobalVisTestIsRemovableXid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:223,1
    - Dst: RelationGetTargetPageFreeSpace
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:238,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:240,1
    - Dst: PageIsFull
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:242,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:242,1
    - Dst: ConditionalLockBufferForCleanup
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:245,1
    - Dst: PageIsFull
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:253,1
    - Dst: PageGetHeapFreeSpace
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:253,1
    - Dst: heap_page_prune_and_freeze
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:263,1
    - Dst: pgstat_update_heap_dead_tuples
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:281,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:286,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 2
    argNames:
    - relation
    - buffer
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 192
    functionDepth: 4
    functionLinenumber: 192
    functionLinenumberEnd: 294
    functionName: heap_page_prune_opt
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 3
    functionsReached:
    - PageGetHeapFreeSpace
    - PageIsFull
    - GlobalVisTestIsRemovableXid
    - TransactionIdIsValid
    - LockBuffer
    - RelationGetTargetPageFreeSpace
    - GlobalVisTestFor
    - ConditionalLockBufferForCleanup
    - pgstat_update_heap_dead_tuples
    - Max
    - BufferGetPage
    - RecoveryInProgress
    - heap_page_prune_and_freeze
    linkageType: ''
    returnType: void
    signature: void heap_page_prune_opt(Relation relation, Buffer buffer)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:360,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:361,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:399,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:407,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:469,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:470,1
    - Dst: OffsetNumberPrev
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:494,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:496,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:509,1
    - Dst: heap_prune_record_unchanged_lp_unused
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:511,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:515,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:521,1
    - Dst: heap_prune_record_unused
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:522,1
    - Dst: heap_prune_record_unchanged_lp_dead
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:524,1
    - Dst: ItemIdIsRedirected
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:528,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:535,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:535,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:540,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:542,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:543,1
    - Dst: heap_prune_satisfies_vacuum
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:545,1
    - Dst: HeapTupleHeaderIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:548,1
    - Dst: heap_prune_chain
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:583,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:615,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:616,1
    - Dst: likely
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:618,1
    - Dst: HeapTupleHeaderIsHotUpdated
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:618,1
    - Dst: HeapTupleHeaderAdvanceConflictHorizon
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:620,1
    - Dst: heap_prune_record_unused
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:622,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:634,1
    - Dst: heap_prune_record_unchanged_lp_normal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:639,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:646,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:650,1
    - Dst: PageIsFull
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:667,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:705,1
    - Dst: XLogCheckBufferNeedsBackup
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:711,1
    - Dst: XLogHintBitIsNeeded
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:716,1
    - Dst: XLogCheckBufferNeedsBackup
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:716,1
    - Dst: heap_pre_freeze_checks
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:730,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:738,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:754,1
    - Dst: PageClearFull
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:769,1
    - Dst: MarkBufferDirtyHint
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:777,1
    - Dst: heap_page_prune_execute
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:785,1
    - Dst: heap_freeze_prepared_tuples
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:792,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:794,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:799,1
    - Dst: TransactionIdRetreat
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:828,1
    - Dst: TransactionIdFollows
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:832,1
    - Dst: log_heap_prune_and_freeze
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:837,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:847,1
    CyclomaticComplexity: 56
    EdgeCount: 56
    ICount: 183
    argCount: 10
    argNames:
    - relation
    - buffer
    - vistest
    - options
    - cutoffs
    - presult
    - reason
    - off_loc
    - new_relfrozen_xid
    - new_relmin_mxid
    argTypes:
    - Relation
    - Buffer
    - GlobalVisState*
    - int
    - struct VacuumCutoffs*
    - PruneFreezeResult*
    - PruneReason
    - OffsetNumber*
    - TransactionId*
    - MultiXactId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 910
      start: 349
    functionDepth: 5
    functionLinenumber: 349
    functionLinenumberEnd: 910
    functionName: heap_page_prune_and_freeze
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 2
    functionsReached:
    - MarkBufferDirty
    - ItemPointerSet
    - OffsetNumberPrev
    - HeapTupleHeaderAdvanceConflictHorizon
    - ItemIdIsNormal
    - heap_page_prune_execute
    - heap_freeze_prepared_tuples
    - heap_pre_freeze_checks
    - TransactionIdFollows
    - START_CRIT_SECTION
    - heap_prune_record_unchanged_lp_normal
    - BufferGetBlockNumber
    - RelationGetRelid
    - ItemIdIsUsed
    - heap_prune_chain
    - OffsetNumberNext
    - PageGetItem
    - ItemIdIsDead
    - RelationNeedsWAL
    - MarkBufferDirtyHint
    - XLogCheckBufferNeedsBackup
    - PageGetItemId
    - HeapTupleHeaderIsHotUpdated
    - likely
    - ItemIdIsRedirected
    - PageIsFull
    - TransactionIdRetreat
    - elog
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - heap_prune_satisfies_vacuum
    - XLogHintBitIsNeeded
    - Assert
    - heap_prune_record_unchanged_lp_dead
    - HeapTupleHeaderIsHeapOnly
    - PageClearFull
    - log_heap_prune_and_freeze
    - unlikely
    - heap_prune_record_unused
    - ItemIdGetLength
    - END_CRIT_SECTION
    - heap_prune_record_unchanged_lp_unused
    linkageType: ''
    returnType: void
    signature: "void heap_page_prune_and_freeze(Relation relation, Buffer buffer,\n\t\t\t\t\t\t
      \  GlobalVisState *vistest,\n\t\t\t\t\t\t   int options,\n\t\t\t\t\t\t   struct
      VacuumCutoffs *cutoffs,\n\t\t\t\t\t\t   PruneFreezeResult *presult,\n\t\t\t\t\t\t
      \  PruneReason reason,\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:922,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:934,1
    - Dst: NormalTransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:935,1
    - Dst: GlobalVisTestIsRemovableXid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:946,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 3
    argNames:
    - prstate
    - tup
    - buffer
    argTypes:
    - PruneState*
    - HeapTuple
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 916
    functionDepth: 4
    functionLinenumber: 916
    functionLinenumberEnd: 950
    functionName: heap_prune_satisfies_vacuum
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 1
    functionsReached:
    - TransactionIdIsValid
    - NormalTransactionIdPrecedes
    - HeapTupleSatisfiesVacuumHorizon
    - GlobalVisTestIsRemovableXid
    linkageType: ''
    returnType: HTSV_Result
    signature: HTSV_Result heap_prune_satisfies_vacuum(PruneState *prstate, HeapTuple
      tup, Buffer buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:962,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - status
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 959
    functionDepth: 1
    functionLinenumber: 959
    functionLinenumberEnd: 965
    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:1014,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1040,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1047,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1047,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1048,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1048,1
    - Dst: ItemIdIsRedirected
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1055,1
    - Dst: ItemIdGetRedirect
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1060,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1064,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1064,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1066,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1071,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1072,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1072,1
    - Dst: htsv_get_valid_status
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1080,1
    - Dst: HeapTupleHeaderAdvanceConflictHorizon
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1086,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1117,1
    - Dst: HeapTupleHeaderIsHotUpdated
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1125,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1129,1
    - Dst: HeapTupleHeaderIndicatesMovedPartitions
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1129,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1134,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1134,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1135,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1136,1
    - Dst: ItemIdIsRedirected
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1139,1
    - Dst: heap_prune_record_dead_or_unused
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1149,1
    - Dst: ItemIdIsRedirected
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1163,1
    - Dst: heap_prune_record_unchanged_lp_redirect
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1165,1
    - Dst: heap_prune_record_unchanged_lp_normal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1169,1
    - Dst: heap_prune_record_dead_or_unused
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1177,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1177,1
    - Dst: heap_prune_record_unused
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1179,1
    - Dst: heap_prune_record_redirect
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1188,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1189,1
    - Dst: heap_prune_record_unused
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1191,1
    - Dst: heap_prune_record_unchanged_lp_normal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1195,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 75
    argCount: 5
    argNames:
    - page
    - blockno
    - maxoff
    - rootoffnum
    - prstate
    argTypes:
    - Page
    - BlockNumber
    - OffsetNumber
    - OffsetNumber
    - PruneState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1197
      start: 998
    functionDepth: 3
    functionLinenumber: 998
    functionLinenumberEnd: 1197
    functionName: heap_prune_chain
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 1
    functionsReached:
    - HeapTupleHeaderAdvanceConflictHorizon
    - ItemIdIsNormal
    - heap_prune_record_redirect
    - heap_prune_record_unchanged_lp_redirect
    - heap_prune_record_unchanged_lp_normal
    - ItemPointerGetOffsetNumber
    - ItemIdIsUsed
    - HeapTupleHeaderIndicatesMovedPartitions
    - ItemIdGetRedirect
    - PageGetItem
    - HeapTupleHeaderGetXmin
    - ItemIdIsDead
    - htsv_get_valid_status
    - heap_prune_record_dead_or_unused
    - PageGetItemId
    - HeapTupleHeaderIsHotUpdated
    - ItemIdIsRedirected
    - TransactionIdIsValid
    - elog
    - TransactionIdEquals
    - Assert
    - HeapTupleHeaderGetUpdateXid
    - heap_prune_record_unused
    - ItemPointerGetBlockNumber
    linkageType: ''
    returnType: void
    signature: "void heap_prune_chain(Page page, BlockNumber blockno, OffsetNumber
      maxoff,\n\t\t\t\t OffsetNumber rootoffnum, PruneState *prstate)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1207,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1207,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1208,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - prstate
    - xid
    argTypes:
    - PruneState*
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1211
      start: 1200
    functionDepth: 1
    functionLinenumber: 1200
    functionLinenumberEnd: 1211
    functionName: heap_prune_record_prunable
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsValid
    - TransactionIdIsNormal
    - Assert
    - TransactionIdPrecedes
    linkageType: ''
    returnType: void
    signature: void heap_prune_record_prunable(PruneState *prstate, TransactionId
      xid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1219,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1227,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: 1242
      start: 1214
    functionDepth: 1
    functionLinenumber: 1214
    functionLinenumberEnd: 1242
    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:1249,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1252,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - prstate
    - offnum
    - was_normal
    argTypes:
    - PruneState*
    - OffsetNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1271
      start: 1245
    functionDepth: 1
    functionLinenumber: 1245
    functionLinenumberEnd: 1271
    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: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1289,1
    - Dst: heap_prune_record_unused
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1290,1
    - Dst: heap_prune_record_dead
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1292,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - prstate
    - offnum
    - was_normal
    argTypes:
    - PruneState*
    - OffsetNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1293
      start: 1279
    functionDepth: 2
    functionLinenumber: 1279
    functionLinenumberEnd: 1293
    functionName: heap_prune_record_dead_or_unused
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 1
    functionsReached:
    - 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:1299,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1302,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - prstate
    - offnum
    - was_normal
    argTypes:
    - PruneState*
    - OffsetNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1313
      start: 1296
    functionDepth: 1
    functionLinenumber: 1296
    functionLinenumberEnd: 1313
    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:1321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - page
    - prstate
    - offnum
    argTypes:
    - Page
    - PruneState*
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1323
      start: 1318
    functionDepth: 1
    functionLinenumber: 1318
    functionLinenumberEnd: 1323
    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(Page page, PruneState *prstate,
      OffsetNumber offnum)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1334,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1359,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1359,1
    - Dst: HeapTupleHeaderXminCommitted
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1383,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1396,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1404,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1405,1
    - Dst: TransactionIdFollows
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1412,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1413,1
    - Dst: heap_prune_record_prunable
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1426,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1427,1
    - Dst: heap_prune_record_prunable
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1463,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1464,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1473,1
    - Dst: heap_prepare_freeze_tuple
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1483,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 47
    argCount: 3
    argNames:
    - page
    - prstate
    - offnum
    argTypes:
    - Page
    - PruneState*
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1501
      start: 1329
    functionDepth: 3
    functionLinenumber: 1329
    functionLinenumberEnd: 1501
    functionName: heap_prune_record_unchanged_lp_normal
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 2
    functionsReached:
    - TransactionIdFollows
    - Assert
    - PageGetItemId
    - HeapTupleHeaderGetUpdateXid
    - HeapTupleHeaderXminCommitted
    - heap_prepare_freeze_tuple
    - TransactionIdIsNormal
    - TransactionIdPrecedes
    - elog
    - PageGetItem
    - HeapTupleHeaderGetXmin
    - heap_prune_record_prunable
    linkageType: ''
    returnType: void
    signature: void heap_prune_record_unchanged_lp_normal(Page page, PruneState *prstate,
      OffsetNumber offnum)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1510,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - page
    - prstate
    - offnum
    argTypes:
    - Page
    - PruneState*
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1530
      start: 1507
    functionDepth: 1
    functionLinenumber: 1507
    functionLinenumberEnd: 1530
    functionName: heap_prune_record_unchanged_lp_dead
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void heap_prune_record_unchanged_lp_dead(Page page, PruneState *prstate,
      OffsetNumber offnum)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - prstate
    - offnum
    argTypes:
    - PruneState*
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1548
      start: 1535
    functionDepth: 1
    functionLinenumber: 1535
    functionLinenumberEnd: 1548
    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:1566,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1571,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1574,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1582,1
    - Dst: ItemIdIsRedirected
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1594,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1596,1
    - Dst: ItemIdHasStorage
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1596,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1596,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1598,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1599,1
    - Dst: HeapTupleHeaderIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1599,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1604,1
    - Dst: ItemIdGetRedirect
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1604,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1624,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1625,1
    - Dst: ItemIdHasStorage
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1625,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1625,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1626,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1627,1
    - Dst: HeapTupleHeaderIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1627,1
    - Dst: ItemIdSetRedirect
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1630,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1638,1
    - Dst: ItemIdHasStorage
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1649,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1651,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1651,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1652,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1653,1
    - Dst: HeapTupleHeaderIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1653,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1658,1
    - Dst: ItemIdIsRedirected
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1658,1
    - Dst: ItemIdSetDead
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1662,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1670,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1677,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1677,1
    - Dst: ItemIdHasStorage
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1677,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1691,1
    - Dst: ItemIdHasStorage
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1691,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1691,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1692,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1693,1
    - Dst: HeapTupleHeaderIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1693,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1696,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1696,1
    - Dst: ItemIdSetUnused
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1701,1
    - Dst: PageTruncateLinePointerArray
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1705,1
    - Dst: PageRepairFragmentation
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1712,1
    - Dst: page_verify_redirects
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1718,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: 1720
      start: 1560
    functionDepth: 4
    functionLinenumber: 1560
    functionLinenumberEnd: 1720
    functionName: heap_page_prune_execute
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 2
    functionsReached:
    - Assert
    - PageGetItemId
    - ItemIdSetUnused
    - PageRepairFragmentation
    - ItemIdIsRedirected
    - ItemIdSetRedirect
    - ItemIdSetDead
    - HeapTupleHeaderIsHeapOnly
    - ItemIdIsUsed
    - PageTruncateLinePointerArray
    - ItemIdHasStorage
    - ItemIdIsNormal
    - ItemIdGetRedirect
    - BufferGetPage
    - page_verify_redirects
    - PageGetItem
    - ItemIdIsDead
    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:1743,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1746,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1748,1
    - Dst: ItemIdIsRedirected
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1753,1
    - Dst: ItemIdGetRedirect
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1756,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1757,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1759,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1759,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1760,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1760,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1761,1
    - Dst: ItemIdHasStorage
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1761,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1762,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1763,1
    - Dst: HeapTupleHeaderIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1763,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1766
      start: 1736
    functionDepth: 2
    functionLinenumber: 1736
    functionLinenumberEnd: 1766
    functionName: page_verify_redirects
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 1
    functionsReached:
    - Assert
    - PageGetItemId
    - ItemIdIsRedirected
    - ItemIdIsUsed
    - HeapTupleHeaderIsHeapOnly
    - ItemIdHasStorage
    - OffsetNumberNext
    - ItemIdGetRedirect
    - ItemIdIsNormal
    - PageGetItem
    - PageGetMaxOffsetNumber
    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:1790,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1793,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1794,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1796,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1802,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1802,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1805,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1807,1
    - Dst: HeapTupleHeaderIsHeapOnly
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1814,1
    - Dst: HeapTupleHeaderIsHotUpdated
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1824,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1828,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1829,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1834,1
    - Dst: ItemIdIsRedirected
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1834,1
    - Dst: ItemIdGetRedirect
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1836,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1861,1
    - Dst: ItemIdIsNormal
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1864,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1867,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1869,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1870,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1870,1
    - Dst: HeapTupleHeaderIsHotUpdated
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1877,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1881,1
    - Dst: HeapTupleHeaderIndicatesMovedPartitions
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1881,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1883,1
    - Dst: HeapTupleHeaderGetUpdateXid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1884,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 39
    argCount: 2
    argNames:
    - page
    - root_offsets
    argTypes:
    - Page
    - OffsetNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1887
      start: 1784
    functionDepth: 3
    functionLinenumber: 1784
    functionLinenumberEnd: 1887
    functionName: heap_get_root_tuples
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 2
    functionsReached:
    - ItemIdIsNormal
    - ItemPointerGetOffsetNumber
    - ItemIdIsUsed
    - HeapTupleHeaderIndicatesMovedPartitions
    - OffsetNumberNext
    - ItemIdGetRedirect
    - PageGetItem
    - HeapTupleHeaderGetXmin
    - ItemIdIsDead
    - PageGetItemId
    - HeapTupleHeaderIsHotUpdated
    - ItemIdIsRedirected
    - TransactionIdIsValid
    - MemSet
    - PageGetMaxOffsetNumber
    - TransactionIdEquals
    - HeapTupleHeaderGetUpdateXid
    - Assert
    - HeapTupleHeaderIsHeapOnly
    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: 1906
      start: 1895
    functionDepth: 0
    functionLinenumber: 1895
    functionLinenumberEnd: 1906
    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:1949,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1951
      start: 1911
    functionDepth: 1
    functionLinenumber: 1911
    functionLinenumberEnd: 1951
    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: 1965
      start: 1957
    functionDepth: 0
    functionLinenumber: 1957
    functionLinenumberEnd: 1965
    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:1985,1
    - Dst: heap_log_freeze_new_plan
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1994,1
    - Dst: heap_log_freeze_eq
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:1997,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2000,1
    - Dst: heap_log_freeze_new_plan
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2009,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2023,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: 2026
      start: 1977
    functionDepth: 1
    functionLinenumber: 1977
    functionLinenumberEnd: 2026
    functionName: heap_log_freeze_plan
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 0
    functionsReached:
    - heap_log_freeze_eq
    - heap_log_freeze_new_plan
    - Assert
    - qsort
    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: 14
    BranchProfiles: []
    Callsites:
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2081,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2082,1
    - Dst: heap_log_freeze_plan
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2093,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2096,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2098,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2106,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2108,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2116,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2118,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2126,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2128,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2132,1
    - Dst: RelationIsAccessibleInLogicalDecoding
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2139,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2141,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2147,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2150,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2151,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2152,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2166,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2169,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2171,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/heap/pruneheap.c:2171,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 58
    argCount: 13
    argNames:
    - relation
    - buffer
    - conflict_xid
    - cleanup_lock
    - reason
    - frozen
    - nfrozen
    - redirected
    - nredirected
    - dead
    - ndead
    - unused
    - nunused
    argTypes:
    - Relation
    - Buffer
    - TransactionId
    - bool
    - PruneReason
    - HeapTupleFreeze*
    - int
    - OffsetNumber*
    - int
    - OffsetNumber*
    - int
    - OffsetNumber*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2172
      start: 2052
    functionDepth: 4
    functionLinenumber: 2052
    functionLinenumberEnd: 2172
    functionName: log_heap_prune_and_freeze
    functionSourceFile: /src/postgres/src/backend/access/heap/pruneheap.c
    functionUses: 2
    functionsReached:
    - PageSetLSN
    - Assert
    - XLogBeginInsert
    - XLogRegisterBufData
    - TransactionIdIsValid
    - XLogInsert
    - elog
    - XLogRegisterBuffer
    - heap_log_freeze_plan
    - XLogRegisterData
    - RelationIsAccessibleInLogicalDecoding
    - BufferGetPage
    linkageType: ''
    returnType: void
    signature: "void log_heap_prune_and_freeze(Relation relation, Buffer buffer,\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: 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: 6
    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: elog
      Src: /src/postgres/src/backend/access/common/tupdesc.c:105,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - src
    - dst
    argTypes:
    - Form_pg_attribute
    - CompactAttribute*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 108
    functionName: populate_compact_attribute_internal
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - memset
    - elog
    - IsCatalogRelationOid
    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:119,1
    - Dst: populate_compact_attribute_internal
      Src: /src/postgres/src/backend/access/common/tupdesc.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tupdesc
    - attnum
    argTypes:
    - TupleDesc
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 116
    functionDepth: 2
    functionLinenumber: 116
    functionLinenumberEnd: 129
    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:146,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/tupdesc.c:154,1
    - Dst: populate_compact_attribute_internal
      Src: /src/postgres/src/backend/access/common/tupdesc.c:160,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:170,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/access/common/tupdesc.c:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - tupdesc
    - attnum
    argTypes:
    - TupleDesc
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 172
    functionName: verify_compact_attribute
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 1
    functionsReached:
    - Assert
    - memcmp
    - TupleDescAttr
    - populate_compact_attribute_internal
    - memcpy
    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:189,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/tupdesc.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - natts
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 218
    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:234,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/tupdesc.c:238,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:238,1
    - Dst: populate_compact_attribute
      Src: /src/postgres/src/backend/access/common/tupdesc.c:239,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - natts
    - attrs
    argTypes:
    - int
    - Form_pg_attribute*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 228
    functionDepth: 3
    functionLinenumber: 228
    functionLinenumberEnd: 242
    functionName: CreateTupleDesc
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - memcpy
    - TupleDescAttr
    - CreateTemplateTupleDesc
    - populate_compact_attribute
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc CreateTupleDesc(int natts, Form_pg_attribute *attrs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/access/common/tupdesc.c:257,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/tupdesc.c:260,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:260,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:261,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:270,1
    - Dst: populate_compact_attribute
      Src: /src/postgres/src/backend/access/common/tupdesc.c:278,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - tupdesc
    argTypes:
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 251
    functionDepth: 3
    functionLinenumber: 251
    functionLinenumberEnd: 286
    functionName: CreateTupleDescCopy
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 4
    functionsReached:
    - memcpy
    - TupleDescAttr
    - CreateTemplateTupleDesc
    - populate_compact_attribute
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc CreateTupleDescCopy(TupleDesc tupdesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:301,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/access/common/tupdesc.c:303,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/tupdesc.c:306,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:306,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:307,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:316,1
    - Dst: populate_compact_attribute
      Src: /src/postgres/src/backend/access/common/tupdesc.c:324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - tupdesc
    - natts
    argTypes:
    - TupleDesc
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 295
    functionDepth: 3
    functionLinenumber: 295
    functionLinenumberEnd: 332
    functionName: CreateTupleDescTruncatedCopy
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - Assert
    - TupleDescAttr
    - memcpy
    - CreateTemplateTupleDesc
    - populate_compact_attribute
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc CreateTupleDescTruncatedCopy(TupleDesc tupdesc, int natts)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/access/common/tupdesc.c:346,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/tupdesc.c:349,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:349,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:350,1
    - Dst: populate_compact_attribute
      Src: /src/postgres/src/backend/access/common/tupdesc.c:355,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:357,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:358,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/common/tupdesc.c:364,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/tupdesc.c:372,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/tupdesc.c:373,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/common/tupdesc.c:375,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/tupdesc.c:380,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/tupdesc.c:381,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:386,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/common/tupdesc.c:388,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/tupdesc.c:397,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/tupdesc.c:398,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/common/tupdesc.c:401,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/common/tupdesc.c:402,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 1
    argNames:
    - tupdesc
    argTypes:
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 339
    functionDepth: 3
    functionLinenumber: 339
    functionLinenumberEnd: 417
    functionName: CreateTupleDescCopyConstr
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - TupleDescAttr
    - datumCopy
    - palloc0
    - pstrdup
    - TupleDescCompactAttr
    - memcpy
    - palloc
    - CreateTemplateTupleDesc
    - populate_compact_attribute
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc CreateTupleDescCopyConstr(TupleDesc tupdesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/tupdesc.c:433,1
    - Dst: TupleDescSize
      Src: /src/postgres/src/backend/access/common/tupdesc.c:433,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:441,1
    - Dst: populate_compact_attribute
      Src: /src/postgres/src/backend/access/common/tupdesc.c:449,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - dst
    - src
    argTypes:
    - TupleDesc
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 427
    functionDepth: 3
    functionLinenumber: 427
    functionLinenumberEnd: 458
    functionName: TupleDescCopy
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 4
    functionsReached:
    - memcpy
    - TupleDescAttr
    - TupleDescSize
    - populate_compact_attribute
    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:471,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:472,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:477,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/access/common/tupdesc.c:477,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:478,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/access/common/tupdesc.c:478,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:479,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:480,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: memcpy
      Src: /src/postgres/src/backend/access/common/tupdesc.c:484,1
    - Dst: populate_compact_attribute
      Src: /src/postgres/src/backend/access/common/tupdesc.c:495,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 4
    argNames:
    - dst
    - dstAttno
    - src
    - srcAttno
    argTypes:
    - TupleDesc
    - AttrNumber
    - TupleDesc
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 467
    functionDepth: 3
    functionLinenumber: 467
    functionLinenumberEnd: 496
    functionName: TupleDescCopyEntry
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - Assert
    - TupleDescAttr
    - memcpy
    - PointerIsValid
    - populate_compact_attribute
    linkageType: ''
    returnType: void
    signature: "void TupleDescCopyEntry(TupleDesc dst, AttrNumber dstAttno,\n\t\t\t\t
      \  TupleDesc src, AttrNumber srcAttno)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:510,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/tupdesc.c:519,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/tupdesc.c:520,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:529,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/tupdesc.c:530,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/tupdesc.c:530,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/tupdesc.c:532,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/tupdesc.c:540,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/tupdesc.c:541,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/tupdesc.c:543,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/tupdesc.c:545,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/tupdesc.c:548,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 1
    argNames:
    - tupdesc
    argTypes:
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 501
    functionDepth: 2
    functionLinenumber: 501
    functionLinenumberEnd: 549
    functionName: FreeTupleDesc
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 2
    functionsReached:
    - pfree
    - Assert
    - TupleDescAttr
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void FreeTupleDesc(TupleDesc tupdesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:561,1
    - Dst: ResourceOwnerEnlarge
      Src: /src/postgres/src/backend/access/common/tupdesc.c:563,1
    - Dst: ResourceOwnerRememberTupleDesc
      Src: /src/postgres/src/backend/access/common/tupdesc.c:565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - tupdesc
    argTypes:
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 558
    functionDepth: 2
    functionLinenumber: 558
    functionLinenumberEnd: 566
    functionName: IncrTupleDescRefCount
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - ResourceOwnerRememberTupleDesc
    - Assert
    - ResourceOwnerEnlarge
    linkageType: ''
    returnType: void
    signature: void IncrTupleDescRefCount(TupleDesc tupdesc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:579,1
    - Dst: ResourceOwnerForgetTupleDesc
      Src: /src/postgres/src/backend/access/common/tupdesc.c:581,1
    - Dst: FreeTupleDesc
      Src: /src/postgres/src/backend/access/common/tupdesc.c:583,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - tupdesc
    argTypes:
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 576
    functionDepth: 3
    functionLinenumber: 576
    functionLinenumberEnd: 584
    functionName: DecrTupleDescRefCount
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - ResourceOwnerForgetTupleDesc
    - Assert
    - FreeTupleDesc
    linkageType: ''
    returnType: void
    signature: void DecrTupleDescRefCount(TupleDesc tupdesc)
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:604,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:605,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/tupdesc.c:619,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:619,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:619,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:647,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:648,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:650,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:651,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/tupdesc.c:698,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:714,1
    - Dst: datumIsEqual
      Src: /src/postgres/src/backend/access/common/tupdesc.c:716,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/tupdesc.c:738,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/tupdesc.c:739,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 90
    argCount: 2
    argNames:
    - tupdesc1
    - tupdesc2
    argTypes:
    - TupleDesc
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 589
    functionDepth: 2
    functionLinenumber: 589
    functionLinenumberEnd: 749
    functionName: equalTupleDescs
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - datumIsEqual
    - Assert
    - NameStr
    - TupleDescAttr
    - TupleDescCompactAttr
    - strcmp
    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:786,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:787,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/tupdesc.c:789,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:789,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:789,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - tupdesc1
    - tupdesc2
    argTypes:
    - TupleDesc
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 776
    functionDepth: 2
    functionLinenumber: 776
    functionLinenumberEnd: 804
    functionName: equalRowTypes
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - strcmp
    - TupleDescAttr
    - NameStr
    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:818,1
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/access/common/tupdesc.c:818,1
    - Dst: hash_combine
      Src: /src/postgres/src/backend/access/common/tupdesc.c:819,1
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/access/common/tupdesc.c:819,1
    - Dst: hash_combine
      Src: /src/postgres/src/backend/access/common/tupdesc.c:821,1
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/access/common/tupdesc.c:821,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:821,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - desc
    argTypes:
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 812
    functionDepth: 2
    functionLinenumber: 812
    functionLinenumberEnd: 824
    functionName: hashRowType
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - hash_combine
    - hash_uint32
    - TupleDescAttr
    linkageType: ''
    returnType: uint32
    signature: uint32 hashRowType(TupleDesc desc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:856,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/access/common/tupdesc.c:856,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:857,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:858,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:859,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:860,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:865,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/common/tupdesc.c:875,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:875,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:876,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/access/common/tupdesc.c:877,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/access/common/tupdesc.c:894,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/common/tupdesc.c:894,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/access/common/tupdesc.c:895,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/tupdesc.c:896,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/common/tupdesc.c:897,1
    - Dst: populate_compact_attribute
      Src: /src/postgres/src/backend/access/common/tupdesc.c:907,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/access/common/tupdesc.c:909,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: 910
      start: 841
    functionDepth: 3
    functionLinenumber: 841
    functionLinenumberEnd: 910
    functionName: TupleDescInitEntry
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 4
    functionsReached:
    - Assert
    - NameStr
    - namestrcpy
    - ReleaseSysCache
    - HeapTupleIsValid
    - TupleDescAttr
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - MemSet
    - PointerIsValid
    - ObjectIdGetDatum
    - populate_compact_attribute
    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:928,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/access/common/tupdesc.c:928,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:929,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:930,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:931,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:932,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:935,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:939,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/access/common/tupdesc.c:940,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1013,1
    - Dst: populate_compact_attribute
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1016,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: 1017
      start: 917
    functionDepth: 3
    functionLinenumber: 917
    functionLinenumberEnd: 1017
    functionName: TupleDescInitBuiltinEntry
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - Assert
    - namestrcpy
    - TupleDescAttr
    - elog
    - PointerIsValid
    - populate_compact_attribute
    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:1033,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1033,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1034,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1035,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1037,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - desc
    - attributeNumber
    - collationid
    argTypes:
    - TupleDesc
    - AttrNumber
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 1025
    functionDepth: 2
    functionLinenumber: 1025
    functionLinenumberEnd: 1038
    functionName: TupleDescInitEntryCollation
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 2
    functionsReached:
    - Assert
    - PointerIsValid
    - 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:1061,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1062,1
    - Dst: list_length
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1062,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1063,1
    - Dst: list_length
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1063,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1064,1
    - Dst: list_length
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1064,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1069,1
    - Dst: strVal
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1074,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1074,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1075,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1076,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1077,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1081,1
    - Dst: TupleDescInitEntryCollation
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1082,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 4
    argNames:
    - names
    - types
    - typmods
    - collations
    argTypes:
    - List*
    - List*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1086
      start: 1050
    functionDepth: 4
    functionLinenumber: 1050
    functionLinenumberEnd: 1086
    functionName: BuildDescFromLists
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - Assert
    - lfirst_int
    - list_length
    - TupleDescInitEntryCollation
    - TupleDescInitEntry
    - strVal
    - lfirst_oid
    - CreateTemplateTupleDesc
    - lfirst
    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:1074,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1074,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1075,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1076,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1077,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1081,1
    - Dst: TupleDescInitEntryCollation
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1082,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1072
    functionDepth: 4
    functionLinenumber: 1072
    functionLinenumberEnd: 1083
    functionName: forfour
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - lfirst_int
    - TupleDescInitEntryCollation
    - TupleDescInitEntry
    - strVal
    - lfirst_oid
    - lfirst
    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:1104,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - tupdesc
    - attnum
    argTypes:
    - TupleDesc
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1111
      start: 1091
    functionDepth: 1
    functionLinenumber: 1091
    functionLinenumberEnd: 1111
    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:1118,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1121,1
    - Dst: FreeTupleDesc
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - res
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1124
      start: 1115
    functionDepth: 3
    functionLinenumber: 1115
    functionLinenumberEnd: 1124
    functionName: ResOwnerReleaseTupleDesc
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - Assert
    - DatumGetPointer
    - FreeTupleDesc
    linkageType: ''
    returnType: void
    signature: void ResOwnerReleaseTupleDesc(Datum res)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1129,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/access/common/tupdesc.c:1131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - res
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1133
      start: 1126
    functionDepth: 2
    functionLinenumber: 1126
    functionLinenumberEnd: 1133
    functionName: ResOwnerPrintTupleDesc
    functionSourceFile: /src/postgres/src/backend/access/common/tupdesc.c
    functionUses: 0
    functionsReached:
    - DatumGetPointer
    - psprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      ResOwnerPrintTupleDesc(Datum res)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/access/common/printsimple.c:36,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/access/common/printsimple.c:37,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/printsimple.c:41,1
    - Dst: pq_sendstring
      Src: /src/postgres/src/backend/access/common/printsimple.c:43,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/common/printsimple.c:43,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/access/common/printsimple.c:44,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/access/common/printsimple.c:45,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/access/common/printsimple.c:46,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/access/common/printsimple.c:47,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/access/common/printsimple.c:48,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/access/common/printsimple.c:49,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/access/common/printsimple.c:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - self
    - operation
    - tupdesc
    argTypes:
    - DestReceiver*
    - int
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 30
    functionDepth: 2
    functionLinenumber: 30
    functionLinenumberEnd: 53
    functionName: printsimple_startup
    functionSourceFile: /src/postgres/src/backend/access/common/printsimple.c
    functionUses: 0
    functionsReached:
    - NameStr
    - TupleDescAttr
    - pq_sendint16
    - pq_beginmessage
    - pq_sendint32
    - pq_sendstring
    - pq_endmessage
    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:66,1
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/access/common/printsimple.c:69,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/access/common/printsimple.c:70,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/printsimple.c:74,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/access/common/printsimple.c:79,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/access/common/printsimple.c:94,1
    - Dst: pq_sendcountedtext
      Src: /src/postgres/src/backend/access/common/printsimple.c:96,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/common/printsimple.c:97,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/common/printsimple.c:98,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/access/common/printsimple.c:104,1
    - Dst: pg_ltoa
      Src: /src/postgres/src/backend/access/common/printsimple.c:108,1
    - Dst: pq_sendcountedtext
      Src: /src/postgres/src/backend/access/common/printsimple.c:109,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/access/common/printsimple.c:115,1
    - Dst: pg_lltoa
      Src: /src/postgres/src/backend/access/common/printsimple.c:119,1
    - Dst: pq_sendcountedtext
      Src: /src/postgres/src/backend/access/common/printsimple.c:120,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/common/printsimple.c:126,1
    - Dst: pg_ultoa_n
      Src: /src/postgres/src/backend/access/common/printsimple.c:130,1
    - Dst: pq_sendcountedtext
      Src: /src/postgres/src/backend/access/common/printsimple.c:131,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/printsimple.c:136,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/access/common/printsimple.c:140,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 2
    argNames:
    - slot
    - self
    argTypes:
    - TupleTableSlot*
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 58
    functionDepth: 3
    functionLinenumber: 58
    functionLinenumberEnd: 143
    functionName: printsimple
    functionSourceFile: /src/postgres/src/backend/access/common/printsimple.c
    functionUses: 0
    functionsReached:
    - pg_ltoa
    - slot_getallattrs
    - TupleDescAttr
    - DatumGetInt32
    - pq_sendcountedtext
    - DatumGetTextPP
    - pg_ultoa_n
    - VARDATA_ANY
    - pq_sendint16
    - DatumGetInt64
    - pg_lltoa
    - pq_beginmessage
    - elog
    - VARSIZE_ANY_EXHDR
    - pq_sendint32
    - pq_endmessage
    - ObjectIdGetDatum
    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:51,1
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/access/common/relation.c:55,1
    - Dst: RelationIdGetRelation
      Src: /src/postgres/src/backend/access/common/relation.c:58,1
    - Dst: RelationIsValid
      Src: /src/postgres/src/backend/access/common/relation.c:60,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/relation.c:61,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/relation.c:67,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/access/common/relation.c:68,1
    - Dst: CheckRelationLockedByMe
      Src: /src/postgres/src/backend/access/common/relation.c:69,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/backend/access/common/relation.c:72,1
    - Dst: pgstat_init_relation
      Src: /src/postgres/src/backend/access/common/relation.c:75,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - relationId
    - lockmode
    argTypes:
    - Oid
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 78
    functionName: relation_open
    functionSourceFile: /src/postgres/src/backend/access/common/relation.c
    functionUses: 8
    functionsReached:
    - LockRelationOid
    - Assert
    - CheckRelationLockedByMe
    - RelationIsValid
    - RelationUsesLocalBuffers
    - IsBootstrapProcessingMode
    - pgstat_init_relation
    - elog
    - RelationIdGetRelation
    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:92,1
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/access/common/relation.c:96,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/access/common/relation.c:102,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/common/relation.c:102,1
    - Dst: UnlockRelationOid
      Src: /src/postgres/src/backend/access/common/relation.c:106,1
    - Dst: RelationIdGetRelation
      Src: /src/postgres/src/backend/access/common/relation.c:112,1
    - Dst: RelationIsValid
      Src: /src/postgres/src/backend/access/common/relation.c:114,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/relation.c:115,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/relation.c:118,1
    - Dst: CheckRelationLockedByMe
      Src: /src/postgres/src/backend/access/common/relation.c:119,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/backend/access/common/relation.c:122,1
    - Dst: pgstat_init_relation
      Src: /src/postgres/src/backend/access/common/relation.c:125,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - relationId
    - lockmode
    argTypes:
    - Oid
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 128
    functionName: try_relation_open
    functionSourceFile: /src/postgres/src/backend/access/common/relation.c
    functionUses: 1
    functionsReached:
    - LockRelationOid
    - Assert
    - CheckRelationLockedByMe
    - RelationIsValid
    - UnlockRelationOid
    - RelationUsesLocalBuffers
    - pgstat_init_relation
    - elog
    - SearchSysCacheExists1
    - ObjectIdGetDatum
    - RelationIdGetRelation
    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:153,1
    - Dst: RangeVarGetRelid
      Src: /src/postgres/src/backend/access/common/relation.c:156,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/access/common/relation.c:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - relation
    - lockmode
    argTypes:
    - RangeVar*
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 136
    functionDepth: 2
    functionLinenumber: 136
    functionLinenumberEnd: 160
    functionName: relation_openrv
    functionSourceFile: /src/postgres/src/backend/access/common/relation.c
    functionUses: 0
    functionsReached:
    - AcceptInvalidationMessages
    - relation_open
    - 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:182,1
    - Dst: RangeVarGetRelid
      Src: /src/postgres/src/backend/access/common/relation.c:185,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/common/relation.c:188,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/access/common/relation.c:192,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - relation
    - lockmode
    - missing_ok
    argTypes:
    - RangeVar*
    - LOCKMODE
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 171
    functionDepth: 2
    functionLinenumber: 171
    functionLinenumberEnd: 193
    functionName: relation_openrv_extended
    functionSourceFile: /src/postgres/src/backend/access/common/relation.c
    functionUses: 0
    functionsReached:
    - relation_open
    - AcceptInvalidationMessages
    - OidIsValid
    - 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:209,1
    - Dst: RelationClose
      Src: /src/postgres/src/backend/access/common/relation.c:212,1
    - Dst: UnlockRelationId
      Src: /src/postgres/src/backend/access/common/relation.c:215,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - relation
    - lockmode
    argTypes:
    - Relation
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 216
    functionName: relation_close
    functionSourceFile: /src/postgres/src/backend/access/common/relation.c
    functionUses: 6
    functionsReached:
    - UnlockRelationId
    - Assert
    - 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
    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
    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()
  - 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: 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: 2
    functionLinenumber: 150
    functionLinenumberEnd: 212
    functionName: getmissingattr
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 1
    functionsReached:
    - Assert
    - VARSIZE_ANY
    - MemoryContextSwitchTo
    - init_missing_cache
    - datumCopy
    - hash_search
    - PointerGetDatum
    - TupleDescCompactAttr
    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: 2
    functionLinenumber: 218
    functionLinenumberEnd: 267
    functionName: heap_compute_data_size
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 2
    functionsReached:
    - att_addlength_datum
    - EOH_get_flat_size
    - COMPACT_ATTR_IS_PACKABLE
    - DatumGetEOHP
    - att_datum_alignby
    - VARATT_IS_EXTERNAL_EXPANDED
    - TupleDescCompactAttr
    - VARATT_CONVERTED_SHORT_SIZE
    - DatumGetPointer
    - VARATT_CAN_MAKE_SHORT
    - att_nominal_alignby
    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*
    - bits8**
    - int*
    - char**
    - uint16*
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 274
    functionDepth: 2
    functionLinenumber: 274
    functionLinenumberEnd: 389
    functionName: fill_val
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 0
    functionsReached:
    - VARATT_IS_SHORT
    - VARATT_IS_EXTERNAL
    - VARATT_IS_EXTERNAL_EXPANDED
    - VARATT_CONVERTED_SHORT_SIZE
    - EOH_flatten_into
    - strlen
    - DatumGetCString
    - VARSIZE_EXTERNAL
    - SET_VARSIZE_SHORT
    - att_nominal_alignby
    - memcpy
    - DatumGetPointer
    - VARSIZE_SHORT
    - VARSIZE
    - VARDATA
    - VARATT_CAN_MAKE_SHORT
    - Assert
    - store_att_byval
    - EOH_get_flat_size
    - DatumGetEOHP
    linkageType: ''
    returnType: void
    signature: "void fill_val(CompactAttribute *att,\n\t\t bits8 **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*
    - bits8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 400
    functionDepth: 3
    functionLinenumber: 400
    functionLinenumberEnd: 443
    functionName: heap_fill_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 2
    functionsReached:
    - TupleDescCompactAttr
    - fill_val
    - Assert
    - PointerGetDatum
    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,
      bits8 *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: 0
    functionsReached:
    - Assert
    - HeapTupleNoNulls
    - att_isnull
    - elog
    - HeapTupleHeaderGetNatts
    - TupleDescCompactAttr
    linkageType: ''
    returnType: bool
    signature: bool heap_attisnull(HeapTuple tup, int attnum, TupleDesc tupleDesc)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleNoNulls
      Src: /src/postgres/src/backend/access/common/heaptuple.c:542,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:581,1
    - Dst: fetchatt
      Src: /src/postgres/src/backend/access/common/heaptuple.c:583,1
    - Dst: HeapTupleHasVarWidth
      Src: /src/postgres/src/backend/access/common/heaptuple.c:590,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:596,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:619,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:622,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:625,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:626,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:630,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/access/common/heaptuple.c:635,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/heaptuple.c:642,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:644,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:664,1
    - Dst: HeapTupleHasNulls
      Src: /src/postgres/src/backend/access/common/heaptuple.c:666,1
    - Dst: att_isnull
      Src: /src/postgres/src/backend/access/common/heaptuple.c:666,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/access/common/heaptuple.c:684,1
    - Dst: att_pointer_alignby
      Src: /src/postgres/src/backend/access/common/heaptuple.c:688,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/access/common/heaptuple.c:696,1
    - Dst: att_addlength_pointer
      Src: /src/postgres/src/backend/access/common/heaptuple.c:705,1
    - Dst: fetchatt
      Src: /src/postgres/src/backend/access/common/heaptuple.c:712,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:712,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 69
    argCount: 3
    argNames:
    - tup
    - attnum
    - tupleDesc
    argTypes:
    - HeapTuple
    - int
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 520
    functionDepth: 2
    functionLinenumber: 520
    functionLinenumberEnd: 713
    functionName: nocachegetattr
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 1
    functionsReached:
    - Assert
    - HeapTupleNoNulls
    - att_isnull
    - att_addlength_pointer
    - HeapTupleHasVarWidth
    - att_pointer_alignby
    - TupleDescCompactAttr
    - fetchatt
    - att_nominal_alignby
    - HeapTupleHasNulls
    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:729,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/common/heaptuple.c:738,1
    - Dst: TransactionIdGetDatum
      Src: /src/postgres/src/backend/access/common/heaptuple.c:741,1
    - Dst: HeapTupleHeaderGetRawXmin
      Src: /src/postgres/src/backend/access/common/heaptuple.c:741,1
    - Dst: TransactionIdGetDatum
      Src: /src/postgres/src/backend/access/common/heaptuple.c:744,1
    - Dst: HeapTupleHeaderGetRawXmax
      Src: /src/postgres/src/backend/access/common/heaptuple.c:744,1
    - Dst: CommandIdGetDatum
      Src: /src/postgres/src/backend/access/common/heaptuple.c:755,1
    - Dst: HeapTupleHeaderGetRawCommandId
      Src: /src/postgres/src/backend/access/common/heaptuple.c:755,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/common/heaptuple.c:758,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/heaptuple.c:761,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 4
    argNames:
    - tup
    - attnum
    - tupleDesc
    - isnull
    argTypes:
    - HeapTuple
    - int
    - TupleDesc
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 724
    functionDepth: 1
    functionLinenumber: 724
    functionLinenumberEnd: 766
    functionName: heap_getsysattr
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 1
    functionsReached:
    - Assert
    - HeapTupleHeaderGetRawCommandId
    - PointerGetDatum
    - elog
    - CommandIdGetDatum
    - HeapTupleHeaderGetRawXmin
    - HeapTupleHeaderGetRawXmax
    - TransactionIdGetDatum
    - ObjectIdGetDatum
    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:782,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/heaptuple.c:785,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/heaptuple.c:790,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 777
    functionDepth: 1
    functionLinenumber: 777
    functionLinenumberEnd: 792
    functionName: heap_copytuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 2
    functionsReached:
    - HeapTupleIsValid
    - palloc
    - memcpy
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple heap_copytuple(HeapTuple tuple)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/access/common/heaptuple.c:806,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/heaptuple.c:815,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/heaptuple.c:816,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - src
    - dest
    argTypes:
    - HeapTuple
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 817
      start: 803
    functionDepth: 1
    functionLinenumber: 803
    functionLinenumberEnd: 817
    functionName: heap_copytuple_with_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 0
    functionsReached:
    - HeapTupleIsValid
    - palloc
    - memcpy
    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:838,1
    - Dst: HeapTupleHeaderGetNatts
      Src: /src/postgres/src/backend/access/common/heaptuple.c:841,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/heaptuple.c:854,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/heaptuple.c:857,1
    - Dst: BITMAPLEN
      Src: /src/postgres/src/backend/access/common/heaptuple.c:859,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:897,1
    - Dst: att_datum_alignby
      Src: /src/postgres/src/backend/access/common/heaptuple.c:899,1
    - Dst: att_addlength_pointer
      Src: /src/postgres/src/backend/access/common/heaptuple.c:904,1
    - Dst: BITMAPLEN
      Src: /src/postgres/src/backend/access/common/heaptuple.c:928,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/common/heaptuple.c:941,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/common/heaptuple.c:944,1
    - Dst: HeapTupleHeaderSetNatts
      Src: /src/postgres/src/backend/access/common/heaptuple.c:954,1
    - Dst: HeapTupleHeaderSetDatumLength
      Src: /src/postgres/src/backend/access/common/heaptuple.c:955,1
    - Dst: HeapTupleHeaderSetTypeId
      Src: /src/postgres/src/backend/access/common/heaptuple.c:956,1
    - Dst: HeapTupleHeaderSetTypMod
      Src: /src/postgres/src/backend/access/common/heaptuple.c:957,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/common/heaptuple.c:959,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/common/heaptuple.c:969,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/common/heaptuple.c:972,1
    - Dst: HeapTupleHeaderSetNatts
      Src: /src/postgres/src/backend/access/common/heaptuple.c:977,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/heaptuple.c:990,1
    - Dst: BITMAPLEN
      Src: /src/postgres/src/backend/access/common/heaptuple.c:998,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1000,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1016,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1025,1
    - Dst: fill_val
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1029,1
    - Dst: fill_val
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1039,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 87
    argCount: 4
    argNames:
    - targetHeapTuple
    - targetMinimalTuple
    - sourceTuple
    - tupleDesc
    argTypes:
    - HeapTuple*
    - MinimalTuple*
    - HeapTuple
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 829
    functionDepth: 3
    functionLinenumber: 829
    functionLinenumberEnd: 1048
    functionName: expand_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 0
    functionsReached:
    - Assert
    - HeapTupleHeaderSetTypeId
    - att_datum_alignby
    - HeapTupleHeaderSetNatts
    - memset
    - ItemPointerSetInvalid
    - palloc0
    - HeapTupleHeaderSetDatumLength
    - HeapTupleHeaderGetNatts
    - BITMAPLEN
    - HeapTupleHeaderSetTypMod
    - MAXALIGN
    - TupleDescCompactAttr
    - memcpy
    - fill_val
    - att_addlength_pointer
    - HeapTupleHasNulls
    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:1058,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sourceTuple
    - tupleDesc
    argTypes:
    - HeapTuple
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 1053
    functionDepth: 4
    functionLinenumber: 1053
    functionLinenumberEnd: 1060
    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:1070,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sourceTuple
    - tupleDesc
    argTypes:
    - HeapTuple
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1065
    functionDepth: 4
    functionLinenumber: 1065
    functionLinenumberEnd: 1072
    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:1089,1
    - Dst: toast_flatten_tuple_to_datum
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1090,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1099,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1100,1
    - Dst: HeapTupleHeaderSetDatumLength
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1102,1
    - Dst: HeapTupleHeaderSetTypeId
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1103,1
    - Dst: HeapTupleHeaderSetTypMod
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1104,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - tuple
    - tupleDesc
    argTypes:
    - HeapTuple
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1080
    functionDepth: 3
    functionLinenumber: 1080
    functionLinenumberEnd: 1107
    functionName: heap_copy_tuple_as_datum
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 3
    functionsReached:
    - toast_flatten_tuple_to_datum
    - HeapTupleHeaderSetTypeId
    - PointerGetDatum
    - HeapTupleHeaderSetDatumLength
    - HeapTupleHeaderSetTypMod
    - memcpy
    - palloc
    - HeapTupleHasExternal
    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:1131,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1132,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1133,1
    - Dst: BITMAPLEN
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1154,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1156,1
    - Dst: heap_compute_data_size
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1158,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1166,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1175,1
    - Dst: HeapTupleHeaderSetDatumLength
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1178,1
    - Dst: HeapTupleHeaderSetTypeId
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1179,1
    - Dst: HeapTupleHeaderSetTypMod
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1180,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1182,1
    - Dst: HeapTupleHeaderSetNatts
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1184,1
    - Dst: heap_fill_tuple
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1187,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 3
    argNames:
    - tupleDescriptor
    - values
    - isnull
    argTypes:
    - TupleDesc
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1196
      start: 1116
    functionDepth: 4
    functionLinenumber: 1116
    functionLinenumberEnd: 1196
    functionName: heap_form_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 13
    functionsReached:
    - errmsg
    - heap_compute_data_size
    - HeapTupleHeaderSetTypeId
    - HeapTupleHeaderSetNatts
    - heap_fill_tuple
    - ItemPointerSetInvalid
    - ereport
    - palloc0
    - HeapTupleHeaderSetDatumLength
    - HeapTupleHeaderSetTypMod
    - BITMAPLEN
    - errcode
    - MAXALIGN
    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
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1233,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1234,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1236,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1250,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1252,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1253,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: 1263
      start: 1209
    functionDepth: 5
    functionLinenumber: 1209
    functionLinenumberEnd: 1263
    functionName: heap_modify_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 2
    functionsReached:
    - heap_form_tuple
    - heap_deform_tuple
    - palloc
    - pfree
    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
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1295,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1296,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1298,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1305,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1313,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1315,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1316,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: 1326
      start: 1277
    functionDepth: 5
    functionLinenumber: 1277
    functionLinenumberEnd: 1326
    functionName: heap_modify_tuple_by_cols
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 0
    functionsReached:
    - heap_form_tuple
    - pfree
    - heap_deform_tuple
    - elog
    - palloc
    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: 7
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHasNulls
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1350,1
    - Dst: HeapTupleHeaderGetNatts
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1359,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1366,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1374,1
    - Dst: att_isnull
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1376,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1397,1
    - Dst: att_pointer_alignby
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1401,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1409,1
    - Dst: fetchatt
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1415,1
    - Dst: att_addlength_pointer
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1417,1
    - Dst: getmissingattr
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1428,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 4
    argNames:
    - tuple
    - tupleDesc
    - values
    - isnull
    argTypes:
    - HeapTuple
    - TupleDesc
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1429
      start: 1345
    functionDepth: 3
    functionLinenumber: 1345
    functionLinenumberEnd: 1429
    functionName: heap_deform_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 10
    functionsReached:
    - Min
    - att_isnull
    - att_addlength_pointer
    - att_pointer_alignby
    - HeapTupleHeaderGetNatts
    - TupleDescCompactAttr
    - fetchatt
    - getmissingattr
    - att_nominal_alignby
    - HeapTupleHasNulls
    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:1437,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - htup
    argTypes:
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1438
      start: 1434
    functionDepth: 0
    functionLinenumber: 1434
    functionLinenumberEnd: 1438
    functionName: heap_freetuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 11
    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:1467,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1467,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1470,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1471,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1472,1
    - Dst: BITMAPLEN
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1493,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1495,1
    - Dst: heap_compute_data_size
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1497,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1504,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1505,1
    - Dst: HeapTupleHeaderSetNatts
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1512,1
    - Dst: heap_fill_tuple
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1515,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 4
    argNames:
    - tupleDescriptor
    - values
    - isnull
    - extra
    argTypes:
    - TupleDesc
    - Datum*
    - bool*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1524
      start: 1452
    functionDepth: 4
    functionLinenumber: 1452
    functionLinenumberEnd: 1524
    functionName: heap_form_minimal_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 0
    functionsReached:
    - errmsg
    - heap_compute_data_size
    - Assert
    - HeapTupleHeaderSetNatts
    - memset
    - heap_fill_tuple
    - ereport
    - palloc0
    - BITMAPLEN
    - errcode
    - MAXALIGN
    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:1532,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mtup
    argTypes:
    - MinimalTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1533
      start: 1529
    functionDepth: 0
    functionLinenumber: 1529
    functionLinenumberEnd: 1533
    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:1547,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1547,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1548,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1549,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - mtup
    - extra
    argTypes:
    - MinimalTuple
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1553
      start: 1541
    functionDepth: 1
    functionLinenumber: 1541
    functionLinenumberEnd: 1553
    functionName: heap_copy_minimal_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 0
    functionsReached:
    - Assert
    - memset
    - memcpy
    - 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:1570,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1572,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1575,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1576,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - mtup
    argTypes:
    - MinimalTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1578
      start: 1564
    functionDepth: 2
    functionLinenumber: 1564
    functionLinenumberEnd: 1578
    functionName: heap_tuple_from_minimal_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 0
    functionsReached:
    - memset
    - memcpy
    - palloc
    - ItemPointerSetInvalid
    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:1593,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1593,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1594,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1596,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1597,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/heaptuple.c:1599,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - htup
    - extra
    argTypes:
    - HeapTuple
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1603
      start: 1586
    functionDepth: 1
    functionLinenumber: 1586
    functionLinenumberEnd: 1603
    functionName: minimal_tuple_from_heap_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/heaptuple.c
    functionUses: 0
    functionsReached:
    - Assert
    - memset
    - memcpy
    - 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:1612,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1613
      start: 1609
    functionDepth: 1
    functionLinenumber: 1609
    functionLinenumberEnd: 1613
    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:
    - struct varlena*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 102
    functionName: detoast_external_attr
    functionSourceFile: /src/postgres/src/backend/access/common/detoast.c
    functionUses: 5
    functionsReached:
    - VARATT_EXTERNAL_GET_POINTER
    - toast_fetch_datum
    - Assert
    - VARSIZE_ANY
    - EOH_flatten_into
    - memcpy
    - VARATT_IS_EXTERNAL
    - VARATT_IS_EXTERNAL_ONDISK
    - PointerGetDatum
    - VARATT_IS_EXTERNAL_INDIRECT
    - VARATT_IS_EXTERNAL_EXPANDED
    - detoast_external_attr
    - palloc
    - EOH_get_flat_size
    - DatumGetEOHP
    linkageType: ''
    returnType: struct varlena
    signature: 'struct varlena *

      detoast_external_attr(struct 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:
    - struct varlena*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 115
    functionDepth: 2
    functionLinenumber: 115
    functionLinenumberEnd: 191
    functionName: detoast_attr
    functionSourceFile: /src/postgres/src/backend/access/common/detoast.c
    functionUses: 2
    functionsReached:
    - toast_fetch_datum
    - toast_decompress_datum
    - VARSIZE_ANY
    - VARATT_IS_SHORT
    - VARATT_IS_EXTERNAL_EXPANDED
    - pfree
    - VARATT_IS_EXTENDED
    - VARATT_IS_EXTERNAL_ONDISK
    - memcpy
    - VARATT_EXTERNAL_GET_POINTER
    - VARSIZE_SHORT
    - VARATT_IS_COMPRESSED
    - VARDATA
    - VARATT_IS_EXTERNAL_INDIRECT
    - detoast_external_attr
    - palloc
    - SET_VARSIZE
    - Assert
    - detoast_attr
    - VARDATA_SHORT
    linkageType: ''
    returnType: struct varlena
    signature: 'struct varlena *

      detoast_attr(struct 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:
    - struct varlena*
    - int32
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 204
    functionDepth: 2
    functionLinenumber: 204
    functionLinenumberEnd: 333
    functionName: detoast_attr_slice
    functionSourceFile: /src/postgres/src/backend/access/common/detoast.c
    functionUses: 1
    functionsReached:
    - toast_fetch_datum
    - toast_decompress_datum
    - VARATT_IS_SHORT
    - VARATT_IS_EXTERNAL
    - VARATT_IS_EXTERNAL_EXPANDED
    - toast_decompress_datum_slice
    - pfree
    - VARATT_EXTERNAL_GET_COMPRESS_METHOD
    - VARATT_IS_EXTERNAL_ONDISK
    - VARATT_EXTERNAL_GET_EXTSIZE
    - memcpy
    - VARATT_EXTERNAL_GET_POINTER
    - VARSIZE_SHORT
    - VARATT_IS_COMPRESSED
    - VARSIZE
    - VARDATA
    - elog
    - VARATT_IS_EXTERNAL_INDIRECT
    - detoast_external_attr
    - palloc
    - SET_VARSIZE
    - Assert
    - detoast_attr_slice
    - VARATT_EXTERNAL_IS_COMPRESSED
    - pglz_maximum_compressed_size
    - pg_add_s32_overflow
    - VARDATA_SHORT
    - toast_fetch_datum_slice
    linkageType: ''
    returnType: struct varlena
    signature: "struct varlena *\ndetoast_attr_slice(struct 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:
    - struct varlena*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 342
    functionDepth: 1
    functionLinenumber: 342
    functionLinenumberEnd: 382
    functionName: toast_fetch_datum
    functionSourceFile: /src/postgres/src/backend/access/common/detoast.c
    functionUses: 3
    functionsReached:
    - VARATT_EXTERNAL_GET_POINTER
    - VARATT_EXTERNAL_IS_COMPRESSED
    - table_open
    - SET_VARSIZE_COMPRESSED
    - table_close
    - VARATT_IS_EXTERNAL_ONDISK
    - elog
    - VARATT_EXTERNAL_GET_EXTSIZE
    - table_relation_fetch_toast_slice
    - palloc
    - SET_VARSIZE
    linkageType: ''
    returnType: struct varlena
    signature: 'struct varlena *

      toast_fetch_datum(struct 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:
    - struct varlena*
    - int32
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 395
    functionDepth: 1
    functionLinenumber: 395
    functionLinenumberEnd: 463
    functionName: toast_fetch_datum_slice
    functionSourceFile: /src/postgres/src/backend/access/common/detoast.c
    functionUses: 1
    functionsReached:
    - VARATT_EXTERNAL_GET_POINTER
    - Assert
    - VARATT_EXTERNAL_IS_COMPRESSED
    - table_open
    - SET_VARSIZE_COMPRESSED
    - table_close
    - VARATT_IS_EXTERNAL_ONDISK
    - elog
    - VARATT_EXTERNAL_GET_EXTSIZE
    - table_relation_fetch_toast_slice
    - palloc
    - SET_VARSIZE
    linkageType: ''
    returnType: struct varlena
    signature: "struct varlena *\ntoast_fetch_datum_slice(struct 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:
    - struct varlena*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 470
    functionDepth: 1
    functionLinenumber: 470
    functionLinenumberEnd: 492
    functionName: toast_decompress_datum
    functionSourceFile: /src/postgres/src/backend/access/common/detoast.c
    functionUses: 2
    functionsReached:
    - pglz_decompress_datum
    - Assert
    - VARATT_IS_COMPRESSED
    - lz4_decompress_datum
    - TOAST_COMPRESS_METHOD
    - elog
    linkageType: ''
    returnType: struct varlena
    signature: 'struct varlena *

      toast_decompress_datum(struct 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:
    - struct varlena*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 502
    functionDepth: 2
    functionLinenumber: 502
    functionLinenumberEnd: 535
    functionName: toast_decompress_datum_slice
    functionSourceFile: /src/postgres/src/backend/access/common/detoast.c
    functionUses: 1
    functionsReached:
    - Assert
    - toast_decompress_datum
    - TOAST_COMPRESS_EXTSIZE
    - VARATT_IS_COMPRESSED
    - TOAST_COMPRESS_METHOD
    - pglz_decompress_datum_slice
    - lz4_decompress_datum_slice
    - elog
    linkageType: ''
    returnType: struct varlena
    signature: 'struct varlena *

      toast_decompress_datum_slice(struct 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: 1
    functionLinenumber: 544
    functionLinenumberEnd: 592
    functionName: toast_raw_datum_size
    functionSourceFile: /src/postgres/src/backend/access/common/detoast.c
    functionUses: 1
    functionsReached:
    - VARATT_EXTERNAL_GET_POINTER
    - toast_raw_datum_size
    - Assert
    - EOH_get_flat_size
    - VARSIZE_SHORT
    - VARATT_IS_SHORT
    - VARATT_IS_COMPRESSED
    - VARSIZE
    - VARATT_IS_EXTERNAL_ONDISK
    - PointerGetDatum
    - VARDATA_COMPRESSED_GET_EXTSIZE
    - VARATT_IS_EXTERNAL_INDIRECT
    - VARATT_IS_EXTERNAL_EXPANDED
    - DatumGetPointer
    - DatumGetEOHP
    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: 1
    functionLinenumber: 600
    functionLinenumberEnd: 646
    functionName: toast_datum_size
    functionSourceFile: /src/postgres/src/backend/access/common/detoast.c
    functionUses: 1
    functionsReached:
    - VARATT_EXTERNAL_GET_POINTER
    - VARSIZE_SHORT
    - Assert
    - EOH_get_flat_size
    - VARATT_IS_SHORT
    - VARSIZE
    - VARATT_IS_EXTERNAL_ONDISK
    - PointerGetDatum
    - VARATT_EXTERNAL_GET_EXTSIZE
    - VARATT_IS_EXTERNAL_INDIRECT
    - toast_datum_size
    - VARATT_IS_EXTERNAL_EXPANDED
    - DatumGetPointer
    - DatumGetEOHP
    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:
    - SharedRecordTypmodRegistryEstimate
    - MemoryContextSwitchTo
    - dsm_segment_handle
    - shm_toc_initialize_estimator
    - shm_toc_create
    - SharedRecordTypmodRegistryInit
    - dsm_pin_mapping
    - shm_toc_estimate
    - dsa_pin_mapping
    - shm_toc_estimate_chunk
    - shm_toc_insert
    - shm_toc_estimate_keys
    - dsm_segment_address
    - dsa_create_in_place
    - shm_toc_allocate
    - dsm_create
    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:
    - shm_toc_attach
    - MemoryContextSwitchTo
    - dsa_pin_mapping
    - dsm_pin_mapping
    - dsa_attach_in_place
    - shm_toc_lookup
    - SharedRecordTypmodRegistryAttach
    - elog
    - dsm_attach
    - dsm_segment_address
    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:
    - dsa_detach
    - dsm_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: 113
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 113
    functionName: SizeOfScanLocations
    functionSourceFile: /src/postgres/src/backend/access/common/syncscan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SizeOfScanLocations(N)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SizeOfScanLocations
      Src: /src/postgres/src/backend/access/common/syncscan.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 129
    functionName: SyncScanShmemSize
    functionSourceFile: /src/postgres/src/backend/access/common/syncscan.c
    functionUses: 0
    functionsReached:
    - SizeOfScanLocations
    linkageType: ''
    returnType: Size
    signature: Size SyncScanShmemSize(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ShmemInitStruct
      Src: /src/postgres/src/backend/access/common/syncscan.c:141,1
    - Dst: SizeOfScanLocations
      Src: /src/postgres/src/backend/access/common/syncscan.c:142,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/syncscan.c:148,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/syncscan.c:174,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 175
    functionName: SyncScanShmemInit
    functionSourceFile: /src/postgres/src/backend/access/common/syncscan.c
    functionUses: 0
    functionsReached:
    - SizeOfScanLocations
    - ShmemInitStruct
    - Assert
    linkageType: ''
    returnType: void
    signature: void SyncScanShmemInit(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: RelFileLocatorEquals
      Src: /src/postgres/src/backend/access/common/syncscan.c:200,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 3
    argNames:
    - relfilelocator
    - location
    - set
    argTypes:
    - RelFileLocator
    - BlockNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 241
    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:258,1
    - Dst: ss_search
      Src: /src/postgres/src/backend/access/common/syncscan.c:259,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/common/syncscan.c:260,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/syncscan.c:273,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/common/syncscan.c:275,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - rel
    - relnblocks
    argTypes:
    - Relation
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 253
    functionDepth: 2
    functionLinenumber: 253
    functionLinenumberEnd: 279
    functionName: ss_get_location
    functionSourceFile: /src/postgres/src/backend/access/common/syncscan.c
    functionUses: 1
    functionsReached:
    - RelationGetRelationName
    - ss_search
    - elog
    - LWLockRelease
    - LWLockAcquire
    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:295,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/common/syncscan.c:297,1
    - Dst: LWLockConditionalAcquire
      Src: /src/postgres/src/backend/access/common/syncscan.c:311,1
    - Dst: ss_search
      Src: /src/postgres/src/backend/access/common/syncscan.c:313,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/common/syncscan.c:314,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/syncscan.c:318,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/common/syncscan.c:320,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - rel
    - location
    argTypes:
    - Relation
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 288
    functionDepth: 2
    functionLinenumber: 288
    functionLinenumberEnd: 323
    functionName: ss_report_location
    functionSourceFile: /src/postgres/src/backend/access/common/syncscan.c
    functionUses: 2
    functionsReached:
    - RelationGetRelationName
    - LWLockConditionalAcquire
    - ss_search
    - elog
    - LWLockRelease
    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:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 63
    functionName: mask_page_hint_bits
    functionSourceFile: /src/postgres/src/backend/access/common/bufmask.c
    functionUses: 4
    functionsReached:
    - PageClearAllVisible
    - PageClearHasFreeLinePointers
    - PageClearFull
    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:81,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/common/bufmask.c:85,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 86
    functionName: mask_unused_space
    functionSourceFile: /src/postgres/src/backend/access/common/bufmask.c
    functionUses: 4
    functionsReached:
    - memset
    - elog
    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:100,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/common/bufmask.c:103,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/common/bufmask.c:105,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/common/bufmask.c:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 110
    functionName: mask_lp_flags
    functionSourceFile: /src/postgres/src/backend/access/common/bufmask.c
    functionUses: 2
    functionsReached:
    - ItemIdIsUsed
    - OffsetNumberNext
    - PageGetMaxOffsetNumber
    - 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:122,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/common/bufmask.c:126,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/common/bufmask.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 130
    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:
    - Assert
    - MemSet
    - fmgr_info
    - RegProcedureIsValid
    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
      Src: /src/postgres/src/backend/access/common/printtup.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - dest
    argTypes:
    - CommandDest
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 94
    functionName: printtup_create_DR
    functionSourceFile: /src/postgres/src/backend/access/common/printtup.c
    functionUses: 0
    functionsReached:
    - palloc0
    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:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - self
    - portal
    argTypes:
    - DestReceiver*
    - Portal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 108
    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:120,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/common/printtup.c:128,1
    - Dst: SendRowDescriptionMessage
      Src: /src/postgres/src/backend/access/common/printtup.c:137,1
    - Dst: FetchPortalTargetList
      Src: /src/postgres/src/backend/access/common/printtup.c:139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - self
    - operation
    - typeinfo
    argTypes:
    - DestReceiver*
    - int
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 110
    functionDepth: 3
    functionLinenumber: 110
    functionLinenumberEnd: 152
    functionName: printtup_startup
    functionSourceFile: /src/postgres/src/backend/access/common/printtup.c
    functionUses: 0
    functionsReached:
    - SendRowDescriptionMessage
    - initStringInfo
    - 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:171,1
    - Dst: pq_beginmessage_reuse
      Src: /src/postgres/src/backend/access/common/printtup.c:174,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/access/common/printtup.c:176,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/backend/access/common/printtup.c:186,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/printtup.c:197,1
    - Dst: getBaseTypeAndTypmod
      Src: /src/postgres/src/backend/access/common/printtup.c:208,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/common/printtup.c:212,1
    - Dst: lnext
      Src: /src/postgres/src/backend/access/common/printtup.c:213,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/common/printtup.c:216,1
    - Dst: lnext
      Src: /src/postgres/src/backend/access/common/printtup.c:220,1
    - Dst: pq_writestring
      Src: /src/postgres/src/backend/access/common/printtup.c:234,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/common/printtup.c:234,1
    - Dst: pq_writeint32
      Src: /src/postgres/src/backend/access/common/printtup.c:235,1
    - Dst: pq_writeint16
      Src: /src/postgres/src/backend/access/common/printtup.c:236,1
    - Dst: pq_writeint32
      Src: /src/postgres/src/backend/access/common/printtup.c:237,1
    - Dst: pq_writeint16
      Src: /src/postgres/src/backend/access/common/printtup.c:238,1
    - Dst: pq_writeint32
      Src: /src/postgres/src/backend/access/common/printtup.c:239,1
    - Dst: pq_writeint16
      Src: /src/postgres/src/backend/access/common/printtup.c:240,1
    - Dst: pq_endmessage_reuse
      Src: /src/postgres/src/backend/access/common/printtup.c:243,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 4
    argNames:
    - buf
    - typeinfo
    - targetlist
    - formats
    argTypes:
    - StringInfo
    - TupleDesc
    - List*
    - int16*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 165
    functionDepth: 2
    functionLinenumber: 165
    functionLinenumberEnd: 244
    functionName: SendRowDescriptionMessage
    functionSourceFile: /src/postgres/src/backend/access/common/printtup.c
    functionUses: 1
    functionsReached:
    - pq_endmessage_reuse
    - enlargeStringInfo
    - NameStr
    - TupleDescAttr
    - list_head
    - lnext
    - getBaseTypeAndTypmod
    - pq_sendint16
    - pq_writeint32
    - pq_writeint16
    - pq_writestring
    - pq_beginmessage_reuse
    - lfirst
    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:257,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/common/printtup.c:266,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/printtup.c:272,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/access/common/printtup.c:277,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/access/common/printtup.c:280,1
    - Dst: getTypeBinaryOutputInfo
      Src: /src/postgres/src/backend/access/common/printtup.c:284,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/access/common/printtup.c:287,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/printtup.c:290,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/printtup.c:291,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/printtup.c:292,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - myState
    - typeinfo
    - numAttrs
    argTypes:
    - DR_printtup*
    - TupleDesc
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 249
    functionDepth: 2
    functionLinenumber: 249
    functionLinenumberEnd: 294
    functionName: printtup_prepare_info
    functionSourceFile: /src/postgres/src/backend/access/common/printtup.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - getTypeOutputInfo
    - TupleDescAttr
    - fmgr_info
    - palloc0
    - ereport
    - getTypeBinaryOutputInfo
    - errcode
    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:315,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/access/common/printtup.c:318,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/common/printtup.c:321,1
    - Dst: pq_beginmessage_reuse
      Src: /src/postgres/src/backend/access/common/printtup.c:326,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/access/common/printtup.c:328,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/access/common/printtup.c:340,1
    - Dst: VALGRIND_CHECK_MEM_IS_DEFINED
      Src: /src/postgres/src/backend/access/common/printtup.c:352,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/printtup.c:352,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/common/printtup.c:353,1
    - Dst: OutputFunctionCall
      Src: /src/postgres/src/backend/access/common/printtup.c:360,1
    - Dst: pq_sendcountedtext
      Src: /src/postgres/src/backend/access/common/printtup.c:361,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/printtup.c:361,1
    - Dst: SendFunctionCall
      Src: /src/postgres/src/backend/access/common/printtup.c:368,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/access/common/printtup.c:369,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/common/printtup.c:369,1
    - Dst: pq_sendbytes
      Src: /src/postgres/src/backend/access/common/printtup.c:370,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/common/printtup.c:370,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/common/printtup.c:371,1
    - Dst: pq_endmessage_reuse
      Src: /src/postgres/src/backend/access/common/printtup.c:375,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/common/printtup.c:378,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/common/printtup.c:379,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 2
    argNames:
    - slot
    - self
    argTypes:
    - TupleTableSlot*
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 303
    functionDepth: 3
    functionLinenumber: 303
    functionLinenumberEnd: 382
    functionName: printtup
    functionSourceFile: /src/postgres/src/backend/access/common/printtup.c
    functionUses: 0
    functionsReached:
    - pq_endmessage_reuse
    - VARSIZE_ANY
    - MemoryContextSwitchTo
    - pq_sendbytes
    - slot_getallattrs
    - MemoryContextReset
    - OutputFunctionCall
    - pq_sendcountedtext
    - SendFunctionCall
    - VARSIZE
    - VARDATA
    - printtup_prepare_info
    - pq_sendint16
    - VALGRIND_CHECK_MEM_IS_DEFINED
    - pq_sendint32
    - DatumGetPointer
    - pq_beginmessage_reuse
    - strlen
    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:394,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/printtup.c:400,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/common/printtup.c:404,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - self
    argTypes:
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 406
    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:415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - self
    argTypes:
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 416
    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:427,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/access/common/printtup.c:429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - attributeId
    - attributeP
    - value
    argTypes:
    - unsigned
    - Form_pg_attribute
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 422
    functionDepth: 1
    functionLinenumber: 422
    functionLinenumberEnd: 437
    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:453,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/printtup.c:453,1
    - Dst: printf
      Src: /src/postgres/src/backend/access/common/printtup.c:454,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - self
    - operation
    - typeinfo
    argTypes:
    - DestReceiver*
    - int
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 443
    functionDepth: 2
    functionLinenumber: 443
    functionLinenumberEnd: 455
    functionName: debugStartup
    functionSourceFile: /src/postgres/src/backend/access/common/printtup.c
    functionUses: 0
    functionsReached:
    - printf
    - TupleDescAttr
    - printatt
    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:475,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/access/common/printtup.c:478,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/printtup.c:478,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/access/common/printtup.c:481,1
    - Dst: printatt
      Src: /src/postgres/src/backend/access/common/printtup.c:483,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/common/printtup.c:483,1
    - Dst: printf
      Src: /src/postgres/src/backend/access/common/printtup.c:485,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - slot
    - self
    argTypes:
    - TupleTableSlot*
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 461
    functionDepth: 3
    functionLinenumber: 461
    functionLinenumberEnd: 488
    functionName: debugtup
    functionSourceFile: /src/postgres/src/backend/access/common/printtup.c
    functionUses: 0
    functionsReached:
    - printf
    - getTypeOutputInfo
    - TupleDescAttr
    - printatt
    - OidOutputFunctionCall
    - slot_getattr
    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: lz4_compress_datum
      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: 1
    functionLinenumber: 45
    functionLinenumberEnd: 104
    functionName: toast_compress_datum
    functionSourceFile: /src/postgres/src/backend/access/common/toast_internals.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - VARATT_IS_COMPRESSED
    - VARATT_IS_EXTERNAL
    - lz4_compress_datum
    - TOAST_COMPRESS_SET_SIZE_AND_COMPRESS_METHOD
    - VARSIZE
    - PointerGetDatum
    - pglz_compress_datum
    - elog
    - CompressionMethodIsValid
    - VARSIZE_ANY_EXHDR
    - 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:128,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/toast_internals.c:143,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/toast_internals.c:147,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/access/common/toast_internals.c:147,1
    - Dst: table_open
      Src: /src/postgres/src/backend/access/common/toast_internals.c:154,1
    - Dst: toast_open_indexes
      Src: /src/postgres/src/backend/access/common/toast_internals.c:158,1
    - Dst: VARATT_IS_SHORT
      Src: /src/postgres/src/backend/access/common/toast_internals.c:173,1
    - Dst: VARDATA_SHORT
      Src: /src/postgres/src/backend/access/common/toast_internals.c:175,1
    - Dst: VARSIZE_SHORT
      Src: /src/postgres/src/backend/access/common/toast_internals.c:176,1
    - Dst: VARATT_IS_COMPRESSED
      Src: /src/postgres/src/backend/access/common/toast_internals.c:180,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/common/toast_internals.c:182,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/common/toast_internals.c:183,1
    - Dst: VARDATA_COMPRESSED_GET_EXTSIZE
      Src: /src/postgres/src/backend/access/common/toast_internals.c:185,1
    - Dst: VARATT_EXTERNAL_SET_SIZE_AND_COMPRESS_METHOD
      Src: /src/postgres/src/backend/access/common/toast_internals.c:188,1
    - Dst: VARDATA_COMPRESSED_GET_COMPRESS_METHOD
      Src: /src/postgres/src/backend/access/common/toast_internals.c:189,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/toast_internals.c:191,1
    - Dst: VARATT_EXTERNAL_IS_COMPRESSED
      Src: /src/postgres/src/backend/access/common/toast_internals.c:191,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/common/toast_internals.c:195,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/common/toast_internals.c:196,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/common/toast_internals.c:197,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/common/toast_internals.c:209,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/common/toast_internals.c:212,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/common/toast_internals.c:226,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/access/common/toast_internals.c:230,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/common/toast_internals.c:231,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/toast_internals.c:242,1
    - Dst: VARATT_IS_EXTERNAL_ONDISK
      Src: /src/postgres/src/backend/access/common/toast_internals.c:242,1
    - Dst: VARATT_EXTERNAL_GET_POINTER
      Src: /src/postgres/src/backend/access/common/toast_internals.c:244,1
    - Dst: toastrel_valueid_exists
      Src: /src/postgres/src/backend/access/common/toast_internals.c:267,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/access/common/toast_internals.c:284,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/common/toast_internals.c:285,1
    - Dst: toastid_valueid_exists
      Src: /src/postgres/src/backend/access/common/toast_internals.c:287,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/common/toast_internals.c:295,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/common/toast_internals.c:296,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/common/toast_internals.c:308,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/common/toast_internals.c:313,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/common/toast_internals.c:318,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/common/toast_internals.c:319,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/toast_internals.c:320,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/common/toast_internals.c:320,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/common/toast_internals.c:321,1
    - Dst: heap_insert
      Src: /src/postgres/src/backend/access/common/toast_internals.c:323,1
    - Dst: index_insert
      Src: /src/postgres/src/backend/access/common/toast_internals.c:340,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/access/common/toast_internals.c:351,1
    - Dst: toast_close_indexes
      Src: /src/postgres/src/backend/access/common/toast_internals.c:365,1
    - Dst: table_close
      Src: /src/postgres/src/backend/access/common/toast_internals.c:366,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/toast_internals.c:371,1
    - Dst: SET_VARTAG_EXTERNAL
      Src: /src/postgres/src/backend/access/common/toast_internals.c:372,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/toast_internals.c:373,1
    - Dst: VARDATA_EXTERNAL
      Src: /src/postgres/src/backend/access/common/toast_internals.c:373,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/common/toast_internals.c:375,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 73
    argCount: 4
    argNames:
    - rel
    - value
    - oldexternal
    - options
    argTypes:
    - Relation
    - Datum
    - struct varlena*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 118
    functionDepth: 5
    functionLinenumber: 118
    functionLinenumberEnd: 376
    functionName: toast_save_datum
    functionSourceFile: /src/postgres/src/backend/access/common/toast_internals.c
    functionUses: 0
    functionsReached:
    - CHECK_FOR_INTERRUPTS
    - VARATT_EXTERNAL_SET_SIZE_AND_COMPRESS_METHOD
    - VARATT_IS_SHORT
    - toastid_valueid_exists
    - VARATT_IS_EXTERNAL
    - Min
    - RelationGetRelid
    - table_open
    - Int32GetDatum
    - heap_freetuple
    - VARDATA_COMPRESSED_GET_EXTSIZE
    - VARATT_IS_EXTERNAL_ONDISK
    - memcpy
    - toast_close_indexes
    - DatumGetPointer
    - toast_open_indexes
    - VARATT_EXTERNAL_GET_POINTER
    - VARSIZE_SHORT
    - heap_form_tuple
    - VARATT_IS_COMPRESSED
    - VARSIZE
    - VARDATA
    - VARDATA_COMPRESSED_GET_COMPRESS_METHOD
    - OidIsValid
    - table_close
    - palloc
    - ObjectIdGetDatum
    - GetCurrentCommandId
    - SET_VARSIZE
    - Assert
    - VARDATA_EXTERNAL
    - VARATT_EXTERNAL_IS_COMPRESSED
    - index_insert
    - SET_VARTAG_EXTERNAL
    - PointerGetDatum
    - heap_insert
    - VARDATA_SHORT
    - GetNewOidWithIndex
    - toastrel_valueid_exists
    linkageType: ''
    returnType: Datum
    signature: "Datum toast_save_datum(Relation rel, Datum value,\n\t\t\t\t struct
      varlena *oldexternal, int options)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/toast_internals.c:387,1
    - Dst: VARATT_IS_EXTERNAL_ONDISK
      Src: /src/postgres/src/backend/access/common/toast_internals.c:397,1
    - Dst: VARATT_EXTERNAL_GET_POINTER
      Src: /src/postgres/src/backend/access/common/toast_internals.c:401,1
    - Dst: table_open
      Src: /src/postgres/src/backend/access/common/toast_internals.c:406,1
    - Dst: toast_open_indexes
      Src: /src/postgres/src/backend/access/common/toast_internals.c:409,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/access/common/toast_internals.c:417,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/common/toast_internals.c:420,1
    - Dst: systable_beginscan_ordered
      Src: /src/postgres/src/backend/access/common/toast_internals.c:427,1
    - Dst: get_toast_snapshot
      Src: /src/postgres/src/backend/access/common/toast_internals.c:428,1
    - Dst: systable_getnext_ordered
      Src: /src/postgres/src/backend/access/common/toast_internals.c:429,1
    - Dst: heap_abort_speculative
      Src: /src/postgres/src/backend/access/common/toast_internals.c:435,1
    - Dst: simple_heap_delete
      Src: /src/postgres/src/backend/access/common/toast_internals.c:437,1
    - Dst: systable_endscan_ordered
      Src: /src/postgres/src/backend/access/common/toast_internals.c:445,1
    - Dst: toast_close_indexes
      Src: /src/postgres/src/backend/access/common/toast_internals.c:446,1
    - Dst: table_close
      Src: /src/postgres/src/backend/access/common/toast_internals.c:447,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - rel
    - value
    - is_speculative
    argTypes:
    - Relation
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 384
    functionDepth: 6
    functionLinenumber: 384
    functionLinenumberEnd: 448
    functionName: toast_delete_datum
    functionSourceFile: /src/postgres/src/backend/access/common/toast_internals.c
    functionUses: 0
    functionsReached:
    - VARATT_EXTERNAL_GET_POINTER
    - systable_getnext_ordered
    - systable_endscan_ordered
    - simple_heap_delete
    - table_open
    - toast_close_indexes
    - table_close
    - ScanKeyInit
    - VARATT_IS_EXTERNAL_ONDISK
    - heap_abort_speculative
    - systable_beginscan_ordered
    - get_toast_snapshot
    - DatumGetPointer
    - ObjectIdGetDatum
    - toast_open_indexes
    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:469,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/access/common/toast_internals.c:477,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/common/toast_internals.c:480,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/access/common/toast_internals.c:485,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/common/toast_internals.c:486,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/access/common/toast_internals.c:489,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/access/common/toast_internals.c:492,1
    - Dst: toast_close_indexes
      Src: /src/postgres/src/backend/access/common/toast_internals.c:495,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - toastrel
    - valueid
    argTypes:
    - Relation
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 458
    functionDepth: 3
    functionLinenumber: 458
    functionLinenumberEnd: 498
    functionName: toastrel_valueid_exists
    functionSourceFile: /src/postgres/src/backend/access/common/toast_internals.c
    functionUses: 1
    functionsReached:
    - systable_beginscan
    - RelationGetRelid
    - systable_getnext
    - ScanKeyInit
    - toast_close_indexes
    - systable_endscan
    - ObjectIdGetDatum
    - toast_open_indexes
    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:512,1
    - Dst: toastrel_valueid_exists
      Src: /src/postgres/src/backend/access/common/toast_internals.c:514,1
    - Dst: table_close
      Src: /src/postgres/src/backend/access/common/toast_internals.c:516,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - toastrelid
    - valueid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 506
    functionDepth: 4
    functionLinenumber: 506
    functionLinenumberEnd: 519
    functionName: toastid_valueid_exists
    functionSourceFile: /src/postgres/src/backend/access/common/toast_internals.c
    functionUses: 1
    functionsReached:
    - table_close
    - toastrel_valueid_exists
    - table_open
    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:537,1
    - Dst: toast_open_indexes
      Src: /src/postgres/src/backend/access/common/toast_internals.c:540,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/common/toast_internals.c:544,1
    - Dst: toast_close_indexes
      Src: /src/postgres/src/backend/access/common/toast_internals.c:547,1
    - Dst: table_close
      Src: /src/postgres/src/backend/access/common/toast_internals.c:548,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - toastoid
    - lock
    argTypes:
    - Oid
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 527
    functionDepth: 1
    functionLinenumber: 527
    functionLinenumberEnd: 551
    functionName: toast_get_valid_index
    functionSourceFile: /src/postgres/src/backend/access/common/toast_internals.c
    functionUses: 0
    functionsReached:
    - RelationGetRelid
    - table_open
    - table_close
    - toast_close_indexes
    - toast_open_indexes
    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:574,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/toast_internals.c:575,1
    - Dst: list_length
      Src: /src/postgres/src/backend/access/common/toast_internals.c:577,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/toast_internals.c:580,1
    - Dst: foreach
      Src: /src/postgres/src/backend/access/common/toast_internals.c:581,1
    - Dst: index_open
      Src: /src/postgres/src/backend/access/common/toast_internals.c:582,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/access/common/toast_internals.c:582,1
    - Dst: list_free
      Src: /src/postgres/src/backend/access/common/toast_internals.c:601,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/toast_internals.c:608,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/common/toast_internals.c:609,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: 612
      start: 561
    functionDepth: 2
    functionLinenumber: 561
    functionLinenumberEnd: 612
    functionName: toast_open_indexes
    functionSourceFile: /src/postgres/src/backend/access/common/toast_internals.c
    functionUses: 5
    functionsReached:
    - Assert
    - RelationGetRelid
    - RelationGetIndexList
    - list_length
    - foreach
    - elog
    - palloc
    - lfirst_oid
    - list_free
    - index_open
    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:627,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/toast_internals.c:628,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - toastidxs
    - num_indexes
    - lock
    argTypes:
    - Relation*
    - int
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 620
    functionDepth: 2
    functionLinenumber: 620
    functionLinenumberEnd: 629
    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:652,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/toast_internals.c:653,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 637
    functionDepth: 1
    functionLinenumber: 637
    functionLinenumberEnd: 656
    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: 583
      start: 580
    functionDepth: 0
    functionLinenumber: 580
    functionLinenumberEnd: 583
    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:599,1
    - Dst: DoLockModesConflict
      Src: /src/postgres/src/backend/access/common/reloptions.c:599,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/reloptions.c:605,1
    - Dst: DoLockModesConflict
      Src: /src/postgres/src/backend/access/common/reloptions.c:605,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/reloptions.c:611,1
    - Dst: DoLockModesConflict
      Src: /src/postgres/src/backend/access/common/reloptions.c:611,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/reloptions.c:617,1
    - Dst: DoLockModesConflict
      Src: /src/postgres/src/backend/access/common/reloptions.c:617,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/reloptions.c:623,1
    - Dst: DoLockModesConflict
      Src: /src/postgres/src/backend/access/common/reloptions.c:623,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/reloptions.c:630,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/access/common/reloptions.c:631,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:639,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:647,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:655,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:663,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:671,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 63
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 590
    functionDepth: 1
    functionLinenumber: 590
    functionLinenumberEnd: 686
    functionName: initialize_reloptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - MemoryContextAlloc
    - 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:698,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:699,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:700,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 693
    functionDepth: 1
    functionLinenumber: 693
    functionLinenumberEnd: 703
    functionName: add_reloption_kind
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - ereport
    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:719,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/reloptions.c:724,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/common/reloptions.c:729,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/common/reloptions.c:732,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - newoption
    argTypes:
    - relopt_gen*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 737
      start: 710
    functionDepth: 1
    functionLinenumber: 710
    functionLinenumberEnd: 737
    functionName: add_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - repalloc
    - palloc
    - 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: 750
      start: 744
    functionDepth: 0
    functionLinenumber: 744
    functionLinenumberEnd: 750
    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:760,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - relopts
    - validator
    argTypes:
    - local_relopts*
    - relopts_validator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 757
    functionDepth: 1
    functionLinenumber: 757
    functionLinenumberEnd: 761
    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
      Src: /src/postgres/src/backend/access/common/reloptions.c:770,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/reloptions.c:772,1
    - Dst: lappend
      Src: /src/postgres/src/backend/access/common/reloptions.c:777,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - relopts
    - newoption
    - offset
    argTypes:
    - local_relopts*
    - relopt_gen*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 767
    functionDepth: 1
    functionLinenumber: 767
    functionLinenumberEnd: 778
    functionName: add_local_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - palloc
    - lappend
    - Assert
    linkageType: ''
    returnType: void
    signature: void add_local_reloption(local_relopts *relopts, relopt_gen *newoption,
      int offset)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/common/reloptions.c:794,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/reloptions.c:816,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/reloptions.c:820,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/common/reloptions.c:822,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/common/reloptions.c:824,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:828,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/common/reloptions.c:833,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 5
    argNames:
    - kinds
    - type
    - name
    - desc
    - lockmode
    argTypes:
    - bits32
    - int
    - char*
    - char*
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 785
    functionDepth: 1
    functionLinenumber: 785
    functionLinenumberEnd: 836
    functionName: allocate_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - pstrdup
    - elog
    - palloc
    - strlen
    linkageType: ''
    returnType: relopt_gen
    signature: "relopt_gen *\nallocate_reloption(bits32 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:848,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 5
    argNames:
    - kinds
    - name
    - desc
    - default_val
    - lockmode
    argTypes:
    - bits32
    - char*
    - char*
    - bool
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 842
    functionDepth: 2
    functionLinenumber: 842
    functionLinenumberEnd: 853
    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(bits32 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:863,1
    - Dst: add_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:866,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - kinds
    - name
    - desc
    - default_val
    - lockmode
    argTypes:
    - bits32
    - char*
    - char*
    - bool
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 867
      start: 859
    functionDepth: 3
    functionLinenumber: 859
    functionLinenumberEnd: 867
    functionName: add_bool_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 1
    functionsReached:
    - add_reloption
    - init_bool_reloption
    linkageType: ''
    returnType: void
    signature: "void add_bool_reloption(bits32 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:879,1
    - Dst: add_local_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:883,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: 884
      start: 875
    functionDepth: 3
    functionLinenumber: 875
    functionLinenumberEnd: 884
    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:898,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 7
    argNames:
    - kinds
    - name
    - desc
    - default_val
    - min_val
    - max_val
    - lockmode
    argTypes:
    - bits32
    - char*
    - char*
    - int
    - int
    - int
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 905
      start: 891
    functionDepth: 2
    functionLinenumber: 891
    functionLinenumberEnd: 905
    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(bits32 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:915,1
    - Dst: add_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:919,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - kinds
    - name
    - desc
    - default_val
    - min_val
    - max_val
    - lockmode
    argTypes:
    - bits32
    - char*
    - char*
    - int
    - int
    - int
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 911
    functionDepth: 3
    functionLinenumber: 911
    functionLinenumberEnd: 920
    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(bits32 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:933,1
    - Dst: add_local_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:937,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: 938
      start: 928
    functionDepth: 3
    functionLinenumber: 928
    functionLinenumberEnd: 938
    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:951,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 7
    argNames:
    - kinds
    - name
    - desc
    - default_val
    - min_val
    - max_val
    - lockmode
    argTypes:
    - bits32
    - char*
    - char*
    - double
    - double
    - double
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 944
    functionDepth: 2
    functionLinenumber: 944
    functionLinenumberEnd: 958
    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(bits32 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:969,1
    - Dst: add_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:973,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - kinds
    - name
    - desc
    - default_val
    - min_val
    - max_val
    - lockmode
    argTypes:
    - bits32
    - char*
    - char*
    - double
    - double
    - double
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 974
      start: 964
    functionDepth: 3
    functionLinenumber: 964
    functionLinenumberEnd: 974
    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(bits32 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:987,1
    - Dst: add_local_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:992,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: 993
      start: 982
    functionDepth: 3
    functionLinenumber: 982
    functionLinenumberEnd: 993
    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:1006,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 7
    argNames:
    - kinds
    - name
    - desc
    - members
    - default_val
    - detailmsg
    - lockmode
    argTypes:
    - bits32
    - char*
    - char*
    - relopt_enum_elt_def*
    - int
    - char*
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 999
    functionDepth: 2
    functionLinenumber: 999
    functionLinenumberEnd: 1013
    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(bits32 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:1033,1
    - Dst: add_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:1037,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - kinds
    - name
    - desc
    - members
    - default_val
    - detailmsg
    - lockmode
    argTypes:
    - bits32
    - char*
    - char*
    - relopt_enum_elt_def*
    - int
    - char*
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 1028
    functionDepth: 3
    functionLinenumber: 1028
    functionLinenumberEnd: 1038
    functionName: add_enum_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 1
    functionsReached:
    - add_reloption
    - init_enum_reloption
    linkageType: ''
    returnType: void
    signature: "void add_enum_reloption(bits32 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:1051,1
    - Dst: add_local_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:1056,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: 1057
      start: 1046
    functionDepth: 3
    functionLinenumber: 1046
    functionLinenumberEnd: 1057
    functionName: add_local_enum_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - add_local_reloption
    - init_enum_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:1076,1
    - Dst: strdup
      Src: /src/postgres/src/backend/access/common/reloptions.c:1083,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/access/common/reloptions.c:1085,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:1086,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 7
    argNames:
    - kinds
    - name
    - desc
    - default_val
    - validator
    - filler
    - lockmode
    argTypes:
    - bits32
    - char*
    - char*
    - char*
    - validate_string_relopt
    - fill_string_relopt
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1097
      start: 1063
    functionDepth: 2
    functionLinenumber: 1063
    functionLinenumberEnd: 1097
    functionName: init_string_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - allocate_reloption
    - MemoryContextStrdup
    - strdup
    - strlen
    linkageType: ''
    returnType: relopt_string
    signature: "relopt_string *\ninit_string_reloption(bits32 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:1113,1
    - Dst: add_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:1118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - kinds
    - name
    - desc
    - default_val
    - validator
    - lockmode
    argTypes:
    - bits32
    - char*
    - char*
    - char*
    - validate_string_relopt
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1119
      start: 1108
    functionDepth: 3
    functionLinenumber: 1108
    functionLinenumberEnd: 1119
    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(bits32 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:1134,1
    - Dst: add_local_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:1140,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: 1141
      start: 1128
    functionDepth: 3
    functionLinenumber: 1128
    functionLinenumberEnd: 1141
    functionName: add_local_string_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - init_string_reloption
    - add_local_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: PointerIsValid
      Src: /src/postgres/src/backend/access/common/reloptions.c:1182,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/reloptions.c:1182,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/access/common/reloptions.c:1184,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/access/common/reloptions.c:1189,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/common/reloptions.c:1193,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/common/reloptions.c:1194,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/common/reloptions.c:1199,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:1210,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:1213,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:1215,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/access/common/reloptions.c:1221,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/common/reloptions.c:1235,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1240,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1241,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1242,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:1264,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1273,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1274,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1275,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:1287,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/access/common/reloptions.c:1297,1
    - Dst: strchr
      Src: /src/postgres/src/backend/access/common/reloptions.c:1302,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1303,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1304,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1305,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:1315,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/access/common/reloptions.c:1317,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1318,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1319,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1320,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:1325,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:1325,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/reloptions.c:1327,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/common/reloptions.c:1328,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/access/common/reloptions.c:1329,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/common/reloptions.c:1329,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/access/common/reloptions.c:1331,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/common/reloptions.c:1331,1
    - Dst: makeArrayResult
      Src: /src/postgres/src/backend/access/common/reloptions.c:1338,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 70
    argCount: 6
    argNames:
    - oldOptions
    - defList
    - namspace
    - validnsps
    - acceptOidsOff
    - isReset
    argTypes:
    - Datum
    - List*
    - char*
    - char*[]
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1343
      start: 1166
    functionDepth: 1
    functionLinenumber: 1166
    functionLinenumberEnd: 1343
    functionName: transformRelOptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - makeArrayResult
    - sprintf
    - strlen
    - DatumGetArrayTypeP
    - deconstruct_array_builtin
    - strcmp
    - PointerIsValid
    - DatumGetPointer
    - errmsg
    - defGetString
    - VARSIZE
    - VARDATA
    - palloc
    - strncmp
    - SET_VARSIZE
    - lfirst
    - ereport
    - accumArrayResult
    - PointerGetDatum
    - defGetBoolean
    - errcode
    - strchr
    linkageType: ''
    returnType: Datum
    signature: "Datum transformRelOptions(Datum oldOptions, List *defList, const char
      *namspace,\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:1199,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:1210,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:1213,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:1215,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1197
    functionDepth: 1
    functionLinenumber: 1197
    functionLinenumberEnd: 1217
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 23
    functionsReached:
    - strcmp
    - strncmp
    - lfirst
    - strlen
    linkageType: ''
    returnType: void
    signature: void foreach(cell, defList)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/common/reloptions.c:1235,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1240,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1241,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1242,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:1264,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1273,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1274,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1275,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:1287,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/access/common/reloptions.c:1297,1
    - Dst: strchr
      Src: /src/postgres/src/backend/access/common/reloptions.c:1302,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1303,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1304,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1305,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:1315,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/access/common/reloptions.c:1317,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1318,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1319,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1320,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:1325,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:1325,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/reloptions.c:1327,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/common/reloptions.c:1328,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/access/common/reloptions.c:1329,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/common/reloptions.c:1329,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/access/common/reloptions.c:1331,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/common/reloptions.c:1331,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1335
      start: 1233
    functionDepth: 1
    functionLinenumber: 1233
    functionLinenumberEnd: 1335
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 23
    functionsReached:
    - errmsg
    - lfirst
    - palloc
    - sprintf
    - defGetString
    - ereport
    - VARDATA
    - accumArrayResult
    - PointerGetDatum
    - defGetBoolean
    - SET_VARSIZE
    - strcmp
    - errcode
    - strlen
    - strchr
    linkageType: ''
    returnType: void
    signature: void foreach(cell, defList)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/access/common/reloptions.c:1360,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/reloptions.c:1360,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/access/common/reloptions.c:1363,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/access/common/reloptions.c:1365,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/access/common/reloptions.c:1373,1
    - Dst: strchr
      Src: /src/postgres/src/backend/access/common/reloptions.c:1374,1
    - Dst: makeString
      Src: /src/postgres/src/backend/access/common/reloptions.c:1378,1
    - Dst: lappend
      Src: /src/postgres/src/backend/access/common/reloptions.c:1380,1
    - Dst: makeDefElem
      Src: /src/postgres/src/backend/access/common/reloptions.c:1380,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - options
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1384
      start: 1350
    functionDepth: 1
    functionLinenumber: 1350
    functionLinenumberEnd: 1384
    functionName: untransformRelOptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - makeString
    - DatumGetArrayTypeP
    - deconstruct_array_builtin
    - TextDatumGetCString
    - lappend
    - PointerIsValid
    - DatumGetPointer
    - makeDefElem
    - strchr
    linkageType: ''
    returnType: List
    signature: 'List *

      untransformRelOptions(Datum options)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: fastgetattr
      Src: /src/postgres/src/backend/access/common/reloptions.c:1407,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/common/reloptions.c:1414,1
    - Dst: heap_reloptions
      Src: /src/postgres/src/backend/access/common/reloptions.c:1422,1
    - Dst: partitioned_table_reloptions
      Src: /src/postgres/src/backend/access/common/reloptions.c:1425,1
    - Dst: view_reloptions
      Src: /src/postgres/src/backend/access/common/reloptions.c:1428,1
    - Dst: index_reloptions
      Src: /src/postgres/src/backend/access/common/reloptions.c:1432,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/reloptions.c:1438,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 3
    argNames:
    - tuple
    - tupdesc
    - amoptions
    argTypes:
    - HeapTuple
    - TupleDesc
    - amoptions_function
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1444
      start: 1398
    functionDepth: 3
    functionLinenumber: 1398
    functionLinenumberEnd: 1444
    functionName: extractRelOptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - Assert
    - heap_reloptions
    - fastgetattr
    - partitioned_table_reloptions
    - GETSTRUCT
    - view_reloptions
    - index_reloptions
    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:1450,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/access/common/reloptions.c:1455,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/common/reloptions.c:1459,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/access/common/reloptions.c:1460,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:1469,1
    - Dst: parse_one_reloption
      Src: /src/postgres/src/backend/access/common/reloptions.c:1471,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/access/common/reloptions.c:1482,1
    - Dst: strchr
      Src: /src/postgres/src/backend/access/common/reloptions.c:1483,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1486,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1487,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1488,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/reloptions.c:1493,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/reloptions.c:1495,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/reloptions.c:1496,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: 1497
      start: 1446
    functionDepth: 1
    functionLinenumber: 1446
    functionLinenumberEnd: 1497
    functionName: parseRelOptionsInternal
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - DatumGetArrayTypeP
    - deconstruct_array_builtin
    - parse_one_reloption
    - TextDatumGetCString
    - VARSIZE
    - ereport
    - VARDATA
    - DatumGetPointer
    - strncmp
    - errcode
    - strchr
    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:1528,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/reloptions.c:1538,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/access/common/reloptions.c:1552,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/reloptions.c:1552,1
    - Dst: parseRelOptionsInternal
      Src: /src/postgres/src/backend/access/common/reloptions.c:1553,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: 1557
      start: 1518
    functionDepth: 2
    functionLinenumber: 1518
    functionLinenumberEnd: 1557
    functionName: parseRelOptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - parseRelOptionsInternal
    - palloc
    - PointerIsValid
    - 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:1563,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/reloptions.c:1564,1
    - Dst: foreach
      Src: /src/postgres/src/backend/access/common/reloptions.c:1568,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/common/reloptions.c:1570,1
    - Dst: parseRelOptionsInternal
      Src: /src/postgres/src/backend/access/common/reloptions.c:1579,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - relopts
    - options
    - validate
    argTypes:
    - local_relopts*
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1582
      start: 1560
    functionDepth: 2
    functionLinenumber: 1560
    functionLinenumberEnd: 1582
    functionName: parseLocalRelOptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - foreach
    - list_length
    - parseRelOptionsInternal
    - palloc
    - lfirst
    linkageType: ''
    returnType: relopt_value
    signature: 'relopt_value *

      parseLocalRelOptions(local_relopts *relopts, Datum options, bool validate)'
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1598,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1599,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1600,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/reloptions.c:1604,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/reloptions.c:1605,1
    - Dst: parse_bool
      Src: /src/postgres/src/backend/access/common/reloptions.c:1612,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1614,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1615,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1616,1
    - Dst: parse_int
      Src: /src/postgres/src/backend/access/common/reloptions.c:1624,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1626,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1627,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1628,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1632,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1633,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1634,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/common/reloptions.c:1636,1
    - Dst: parse_real
      Src: /src/postgres/src/backend/access/common/reloptions.c:1644,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1646,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1647,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1648,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1652,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1653,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1654,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/common/reloptions.c:1656,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:1668,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/common/reloptions.c:1676,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:1677,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:1678,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/access/common/reloptions.c:1681,1
    - Dst: _
      Src: /src/postgres/src/backend/access/common/reloptions.c:1681,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/reloptions.c:1703,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/reloptions.c:1711,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 62
    argCount: 4
    argNames:
    - option
    - text_str
    - text_len
    - validate
    argTypes:
    - relopt_value*
    - char*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1712
      start: 1588
    functionDepth: 2
    functionLinenumber: 1588
    functionLinenumberEnd: 1712
    functionName: parse_one_reloption
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 1
    functionsReached:
    - errmsg
    - pfree
    - errdetail_internal
    - parse_int
    - ereport
    - elog
    - _
    - parse_bool
    - memcpy
    - palloc
    - pg_strcasecmp
    - errdetail
    - errcode
    - parse_real
    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:1740,1
    - Dst: GET_STRING_RELOPTION_LEN
      Src: /src/postgres/src/backend/access/common/reloptions.c:1743,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/common/reloptions.c:1747,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - base
    - options
    - numoptions
    argTypes:
    - Size
    - relopt_value*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1748
      start: 1721
    functionDepth: 1
    functionLinenumber: 1721
    functionLinenumberEnd: 1748
    functionName: allocateReloptStruct
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - relopt_string*::fill_cb
    - GET_STRING_RELOPTION_LEN
    - 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:1777,1
    - Dst: relopt_string*::fill_cb
      Src: /src/postgres/src/backend/access/common/reloptions.c:1828,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/access/common/reloptions.c:1843,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/common/reloptions.c:1845,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/reloptions.c:1849,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/common/reloptions.c:1858,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/common/reloptions.c:1861,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: 1862
      start: 1761
    functionDepth: 1
    functionLinenumber: 1761
    functionLinenumberEnd: 1862
    functionName: fillRelOptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - relopt_string*::fill_cb
    - elog
    - strcmp
    - SET_VARSIZE
    - strlen
    - 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:1921,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/common/reloptions.c:1923,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - reloptions
    - validate
    - kind
    argTypes:
    - Datum
    - bool
    - relopt_kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1924
      start: 1868
    functionDepth: 1
    functionLinenumber: 1868
    functionLinenumberEnd: 1924
    functionName: default_reloptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - build_reloptions
    - lengthof
    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:1954,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/reloptions.c:1955,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/reloptions.c:1960,1
    - Dst: allocateReloptStruct
      Src: /src/postgres/src/backend/access/common/reloptions.c:1965,1
    - Dst: fillRelOptions
      Src: /src/postgres/src/backend/access/common/reloptions.c:1966,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/reloptions.c:1969,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: 1972
      start: 1942
    functionDepth: 3
    functionLinenumber: 1942
    functionLinenumberEnd: 1972
    functionName: build_reloptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 5
    functionsReached:
    - pfree
    - Assert
    - fillRelOptions
    - allocateReloptStruct
    - 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:1982,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/reloptions.c:1983,1
    - Dst: foreach
      Src: /src/postgres/src/backend/access/common/reloptions.c:1989,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/common/reloptions.c:1991,1
    - Dst: parseLocalRelOptions
      Src: /src/postgres/src/backend/access/common/reloptions.c:2001,1
    - Dst: allocateReloptStruct
      Src: /src/postgres/src/backend/access/common/reloptions.c:2002,1
    - Dst: fillRelOptions
      Src: /src/postgres/src/backend/access/common/reloptions.c:2003,1
    - Dst: foreach
      Src: /src/postgres/src/backend/access/common/reloptions.c:2007,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/common/reloptions.c:2008,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/reloptions.c:2011,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - relopts
    - options
    - validate
    argTypes:
    - local_relopts*
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2014
      start: 1979
    functionDepth: 3
    functionLinenumber: 1979
    functionLinenumberEnd: 2014
    functionName: build_local_reloptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 1
    functionsReached:
    - pfree
    - fillRelOptions
    - foreach
    - list_length
    - allocateReloptStruct
    - parseLocalRelOptions
    - palloc
    - lfirst
    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:2023,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/common/reloptions.c:2024,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/common/reloptions.c:2025,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/common/reloptions.c:2026,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - reloptions
    - validate
    argTypes:
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2028
      start: 2019
    functionDepth: 1
    functionLinenumber: 2019
    functionLinenumberEnd: 2028
    functionName: partitioned_table_reloptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errhint
    - errcode
    - ereport
    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:2045,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/common/reloptions.c:2048,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - reloptions
    - validate
    argTypes:
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2049
      start: 2033
    functionDepth: 4
    functionLinenumber: 2033
    functionLinenumberEnd: 2049
    functionName: view_reloptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 1
    functionsReached:
    - build_reloptions
    - lengthof
    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:2063,1
    - Dst: default_reloptions
      Src: /src/postgres/src/backend/access/common/reloptions.c:2074,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - relkind
    - reloptions
    - validate
    argTypes:
    - char
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2079
      start: 2054
    functionDepth: 2
    functionLinenumber: 2054
    functionLinenumberEnd: 2079
    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:2092,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/access/common/reloptions.c:2095,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/common/reloptions.c:2095,1
    - Dst: amoptions
      Src: /src/postgres/src/backend/access/common/reloptions.c:2098,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - amoptions
    - reloptions
    - validate
    argTypes:
    - amoptions_function
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2099
      start: 2089
    functionDepth: 1
    functionLinenumber: 2089
    functionLinenumberEnd: 2099
    functionName: index_reloptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 1
    functionsReached:
    - Assert
    - PointerIsValid
    - DatumGetPointer
    - amoptions
    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:2112,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/common/reloptions.c:2115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - reloptions
    - validate
    argTypes:
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2116
      start: 2104
    functionDepth: 4
    functionLinenumber: 2104
    functionLinenumberEnd: 2116
    functionName: attribute_reloptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - build_reloptions
    - lengthof
    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:2131,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/common/reloptions.c:2134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - reloptions
    - validate
    argTypes:
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2135
      start: 2121
    functionDepth: 4
    functionLinenumber: 2121
    functionLinenumberEnd: 2135
    functionName: tablespace_reloptions
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 0
    functionsReached:
    - build_reloptions
    - lengthof
    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:2153,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/common/reloptions.c:2157,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:2162,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - defList
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2173
      start: 2143
    functionDepth: 2
    functionLinenumber: 2143
    functionLinenumberEnd: 2173
    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:2157,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/access/common/reloptions.c:2162,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2170
      start: 2155
    functionDepth: 1
    functionLinenumber: 2155
    functionLinenumberEnd: 2170
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/common/reloptions.c
    functionUses: 25
    functionsReached:
    - strncmp
    - lfirst
    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: 3
    functionLinenumber: 64
    functionLinenumberEnd: 219
    functionName: index_form_tuple_context
    functionSourceFile: /src/postgres/src/backend/access/common/indextuple.c
    functionUses: 1
    functionsReached:
    - errmsg
    - toast_compress_datum
    - pfree
    - heap_compute_data_size
    - Assert
    - VARATT_IS_EXTENDED
    - VARATT_IS_EXTERNAL
    - TupleDescAttr
    - MemoryContextAllocZero
    - VARSIZE
    - ereport
    - PointerGetDatum
    - detoast_external_attr
    - IndexInfoFindDataOffset
    - DatumGetPointer
    - errcode
    - MAXALIGN
    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: 17
    BranchProfiles: []
    Callsites:
    - Dst: IndexInfoFindDataOffset
      Src: /src/postgres/src/backend/access/common/indextuple.c:260,1
    - Dst: IndexTupleHasNulls
      Src: /src/postgres/src/backend/access/common/indextuple.c:264,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/indextuple.c:312,1
    - Dst: fetchatt
      Src: /src/postgres/src/backend/access/common/indextuple.c:314,1
    - Dst: IndexTupleHasVarwidths
      Src: /src/postgres/src/backend/access/common/indextuple.c:321,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/indextuple.c:327,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/indextuple.c:350,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/indextuple.c:353,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/indextuple.c:356,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/indextuple.c:357,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/indextuple.c:361,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/access/common/indextuple.c:366,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/indextuple.c:373,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/indextuple.c:375,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/indextuple.c:395,1
    - Dst: IndexTupleHasNulls
      Src: /src/postgres/src/backend/access/common/indextuple.c:397,1
    - Dst: att_isnull
      Src: /src/postgres/src/backend/access/common/indextuple.c:397,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/access/common/indextuple.c:415,1
    - Dst: att_pointer_alignby
      Src: /src/postgres/src/backend/access/common/indextuple.c:419,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/access/common/indextuple.c:427,1
    - Dst: att_addlength_pointer
      Src: /src/postgres/src/backend/access/common/indextuple.c:436,1
    - Dst: fetchatt
      Src: /src/postgres/src/backend/access/common/indextuple.c:443,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/indextuple.c:443,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 72
    argCount: 3
    argNames:
    - tup
    - attnum
    - tupleDesc
    argTypes:
    - IndexTuple
    - int
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 240
    functionDepth: 2
    functionLinenumber: 240
    functionLinenumberEnd: 444
    functionName: nocache_index_getattr
    functionSourceFile: /src/postgres/src/backend/access/common/indextuple.c
    functionUses: 1
    functionsReached:
    - Assert
    - IndexTupleHasNulls
    - att_isnull
    - att_addlength_pointer
    - IndexTupleHasVarwidths
    - att_pointer_alignby
    - TupleDescCompactAttr
    - IndexInfoFindDataOffset
    - fetchatt
    - att_nominal_alignby
    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:465,1
    - Dst: index_deform_tuple_internal
      Src: /src/postgres/src/backend/access/common/indextuple.c:467,1
    - Dst: IndexTupleHasNulls
      Src: /src/postgres/src/backend/access/common/indextuple.c:468,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - tup
    - tupleDescriptor
    - values
    - isnull
    argTypes:
    - IndexTuple
    - TupleDesc
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 455
    functionDepth: 2
    functionLinenumber: 455
    functionLinenumberEnd: 469
    functionName: index_deform_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/indextuple.c
    functionUses: 1
    functionsReached:
    - index_deform_tuple_internal
    - IndexInfoFindDataOffset
    - IndexTupleHasNulls
    linkageType: ''
    returnType: void
    signature: "void index_deform_tuple(IndexTuple tup, TupleDesc tupleDescriptor,\n\t\t\t\t
      \  Datum *values, bool *isnull)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/indextuple.c:489,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/common/indextuple.c:493,1
    - Dst: att_isnull
      Src: /src/postgres/src/backend/access/common/indextuple.c:495,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/access/common/indextuple.c:516,1
    - Dst: att_pointer_alignby
      Src: /src/postgres/src/backend/access/common/indextuple.c:520,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/access/common/indextuple.c:528,1
    - Dst: fetchatt
      Src: /src/postgres/src/backend/access/common/indextuple.c:534,1
    - Dst: att_addlength_pointer
      Src: /src/postgres/src/backend/access/common/indextuple.c:536,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 6
    argNames:
    - tupleDescriptor
    - values
    - isnull
    - tp
    - bp
    - hasnulls
    argTypes:
    - TupleDesc
    - Datum*
    - bool*
    - char*
    - bits8*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 478
    functionDepth: 2
    functionLinenumber: 478
    functionLinenumberEnd: 541
    functionName: index_deform_tuple_internal
    functionSourceFile: /src/postgres/src/backend/access/common/indextuple.c
    functionUses: 1
    functionsReached:
    - Assert
    - att_isnull
    - att_addlength_pointer
    - att_pointer_alignby
    - TupleDescCompactAttr
    - fetchatt
    - att_nominal_alignby
    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, bits8 *bp, int hasnulls)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/common/indextuple.c:552,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/indextuple.c:553,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/common/indextuple.c:554,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - source
    argTypes:
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 556
    functionName: CopyIndexTuple
    functionSourceFile: /src/postgres/src/backend/access/common/indextuple.c
    functionUses: 11
    functionsReached:
    - memcpy
    - palloc
    - IndexTupleSize
    linkageType: ''
    returnType: IndexTuple
    signature: IndexTuple CopyIndexTuple(IndexTuple source)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/indextuple.c:584,1
    - Dst: CopyIndexTuple
      Src: /src/postgres/src/backend/access/common/indextuple.c:588,1
    - Dst: CreateTupleDescTruncatedCopy
      Src: /src/postgres/src/backend/access/common/indextuple.c:591,1
    - Dst: index_deform_tuple
      Src: /src/postgres/src/backend/access/common/indextuple.c:594,1
    - Dst: index_form_tuple
      Src: /src/postgres/src/backend/access/common/indextuple.c:595,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/indextuple.c:597,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/common/indextuple.c:597,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/common/indextuple.c:597,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/common/indextuple.c:603,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - sourceDescriptor
    - source
    - leavenatts
    argTypes:
    - TupleDesc
    - IndexTuple
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 575
    functionDepth: 4
    functionLinenumber: 575
    functionLinenumberEnd: 606
    functionName: index_truncate_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/indextuple.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - index_deform_tuple
    - CreateTupleDescTruncatedCopy
    - 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
      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:
    - AllocSetContextCreate
    - local_ts_create
    - BumpContextCreate
    - palloc0
    linkageType: ''
    returnType: TidStore
    signature: 'TidStore *

      TidStoreCreateLocal(size_t max_bytes, bool insert_only)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      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:
    - dsa_create_ext
    - shared_ts_create
    - palloc0
    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
      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:
    - Assert
    - dsa_attach
    - shared_ts_attach
    - palloc0
    - DsaPointerIsValid
    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:
    - pfree
    - Assert
    - shared_ts_detach
    - dsa_detach
    - TidStoreIsShared
    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:
    - shared_ts_lock_share
    - TidStoreIsShared
    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:
    - local_ts_free
    - pfree
    - MemoryContextDelete
    - shared_ts_free
    - dsa_detach
    - TidStoreIsShared
    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:
    - Assert
    - WORDS_PER_PAGE
    - BITNUM
    - WORDNUM
    - memset
    - local_ts_set
    - shared_ts_set
    - elog
    - TidStoreIsShared
    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*
    - ItemPointer
    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:
    - BITNUM
    - WORDNUM
    - ItemPointerGetOffsetNumber
    - local_ts_find
    - shared_ts_find
    - ItemPointerGetBlockNumber
    - TidStoreIsShared
    linkageType: ''
    returnType: bool
    signature: bool TidStoreIsMember(TidStore *ts, ItemPointer tid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      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:
    - shared_ts_begin_iterate
    - local_ts_begin_iterate
    - palloc0
    - TidStoreIsShared
    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:
    - local_ts_iterate_next
    - shared_ts_iterate_next
    - TidStoreIsShared
    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:
    - shared_ts_end_iterate
    - pfree
    - local_ts_end_iterate
    - TidStoreIsShared
    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: 5
    functionsReached:
    - local_ts_memory_usage
    - shared_ts_memory_usage
    - TidStoreIsShared
    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
      Src: /src/postgres/src/backend/access/common/attmap.c:44,1
    - Dst: palloc0
      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
    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:
    - check_attrmap_match
    - NameStr
    - TupleDescAttr
    - errmsg_internal
    - ereport
    - free_attrmap
    - _
    - TupleDescCompactAttr
    - format_type_with_typemod
    - errdetail
    - errcode
    - make_attrmap
    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:
    - errmsg
    - NameStr
    - TupleDescAttr
    - format_type_be
    - ereport
    - strcmp
    - errdetail
    - errcode
    - make_attrmap
    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:
    - free_attrmap
    - check_attrmap_match
    - build_attrmap_by_name
    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: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 33
    functionName: NO_LZ4_SUPPORT
    functionSourceFile: /src/postgres/src/backend/access/common/toast_compression.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NO_LZ4_SUPPORT()
  - 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:
    - struct varlena*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 39
    functionDepth: 3
    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
    - pglz_compress
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - palloc
    - PGLZ_MAX_OUTPUT
    linkageType: ''
    returnType: struct varlena
    signature: 'struct varlena *

      pglz_compress_datum(const struct 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:
    - struct 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
    - ereport
    - pglz_decompress
    - VARDATA
    - VARDATA_COMPRESSED_GET_EXTSIZE
    - errmsg_internal
    - SET_VARSIZE
    - palloc
    - errcode
    linkageType: ''
    returnType: struct varlena
    signature: 'struct varlena *

      pglz_decompress_datum(const struct 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:
    - struct 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
    - ereport
    - VARDATA
    - pglz_decompress
    - errmsg_internal
    - SET_VARSIZE
    - palloc
    - errcode
    linkageType: ''
    returnType: struct varlena
    signature: "struct varlena *\npglz_decompress_datum_slice(const struct varlena
      *value,\n\t\t\t\t\t\t\tint32 slicelength)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: NO_LZ4_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:
    - struct varlena*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 176
    functionName: lz4_compress_datum
    functionSourceFile: /src/postgres/src/backend/access/common/toast_compression.c
    functionUses: 1
    functionsReached:
    - LZ4_compressBound
    - pfree
    - palloc
    - SET_VARSIZE_COMPRESSED
    - elog
    - LZ4_compress_default
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - NO_LZ4_SUPPORT
    linkageType: ''
    returnType: struct varlena
    signature: 'struct varlena *

      lz4_compress_datum(const struct varlena *value)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NO_LZ4_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:
    - struct varlena*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 209
    functionName: lz4_decompress_datum
    functionSourceFile: /src/postgres/src/backend/access/common/toast_compression.c
    functionUses: 1
    functionsReached:
    - errcode
    - palloc
    - VARSIZE
    - ereport
    - VARDATA
    - VARDATA_COMPRESSED_GET_EXTSIZE
    - errmsg_internal
    - SET_VARSIZE
    - NO_LZ4_SUPPORT
    - LZ4_decompress_safe
    linkageType: ''
    returnType: struct varlena
    signature: 'struct varlena *

      lz4_decompress_datum(const struct varlena *value)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: NO_LZ4_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:
    - struct varlena*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 214
    functionDepth: 2
    functionLinenumber: 214
    functionLinenumberEnd: 246
    functionName: lz4_decompress_datum_slice
    functionSourceFile: /src/postgres/src/backend/access/common/toast_compression.c
    functionUses: 1
    functionsReached:
    - LZ4_versionNumber
    - palloc
    - LZ4_decompress_safe_partial
    - lz4_decompress_datum
    - VARSIZE
    - ereport
    - VARDATA
    - errmsg_internal
    - SET_VARSIZE
    - NO_LZ4_SUPPORT
    - errcode
    linkageType: ''
    returnType: struct varlena
    signature: 'struct varlena *

      lz4_decompress_datum_slice(const struct 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:
    - struct varlena*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 276
    functionName: toast_get_compression_id
    functionSourceFile: /src/postgres/src/backend/access/common/toast_compression.c
    functionUses: 0
    functionsReached:
    - VARATT_EXTERNAL_GET_POINTER
    - VARATT_EXTERNAL_IS_COMPRESSED
    - VARATT_EXTERNAL_GET_COMPRESS_METHOD
    - VARATT_IS_COMPRESSED
    - VARATT_IS_EXTERNAL_ONDISK
    - VARDATA_COMPRESSED_GET_COMPRESS_METHOD
    linkageType: ''
    returnType: ToastCompressionId
    signature: ToastCompressionId toast_get_compression_id(struct 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_LZ4_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:
    - strcmp
    - NO_LZ4_SUPPORT
    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:68,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/tupconvert.c:77,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/tupconvert.c:83,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/tupconvert.c:84,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/tupconvert.c:86,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/tupconvert.c:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - indesc
    - outdesc
    - msg
    argTypes:
    - TupleDesc
    - TupleDesc
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 58
    functionDepth: 3
    functionLinenumber: 58
    functionLinenumberEnd: 92
    functionName: convert_tuples_by_position
    functionSourceFile: /src/postgres/src/backend/access/common/tupconvert.c
    functionUses: 3
    functionsReached:
    - palloc
    - build_attrmap_by_position
    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:108,1
    - Dst: convert_tuples_by_name_attrmap
      Src: /src/postgres/src/backend/access/common/tupconvert.c:116,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - indesc
    - outdesc
    argTypes:
    - TupleDesc
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 101
    functionDepth: 4
    functionLinenumber: 101
    functionLinenumberEnd: 117
    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:131,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/tupconvert.c:134,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/tupconvert.c:139,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/tupconvert.c:140,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/tupconvert.c:142,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/common/tupconvert.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 3
    argNames:
    - indesc
    - outdesc
    - attrMap
    argTypes:
    - TupleDesc
    - TupleDesc
    - AttrMap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 148
    functionName: convert_tuples_by_name_attrmap
    functionSourceFile: /src/postgres/src/backend/access/common/tupconvert.c
    functionUses: 1
    functionsReached:
    - Assert
    - palloc
    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:168,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupconvert.c:173,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/common/tupconvert.c:185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - tuple
    - map
    argTypes:
    - HeapTuple
    - TupleConversionMap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 153
    functionDepth: 5
    functionLinenumber: 153
    functionLinenumberEnd: 186
    functionName: execute_attr_map_tuple
    functionSourceFile: /src/postgres/src/backend/access/common/tupconvert.c
    functionUses: 3
    functionsReached:
    - heap_form_tuple
    - heap_deform_tuple
    - Assert
    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:204,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/common/tupconvert.c:206,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/access/common/tupconvert.c:211,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/access/common/tupconvert.c:214,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/access/common/tupconvert.c:239,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - attrMap
    - in_slot
    - out_slot
    argTypes:
    - AttrMap*
    - TupleTableSlot*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 191
    functionDepth: 3
    functionLinenumber: 191
    functionLinenumberEnd: 242
    functionName: execute_attr_map_slot
    functionSourceFile: /src/postgres/src/backend/access/common/tupconvert.c
    functionUses: 0
    functionsReached:
    - slot_getallattrs
    - Assert
    - ExecStoreVirtualTuple
    - 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:288,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/access/common/tupconvert.c:289,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - attrMap
    - in_cols
    argTypes:
    - AttrMap*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 293
    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:302,1
    - Dst: pfree
      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
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - map
    argTypes:
    - TupleConversionMap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 308
    functionName: free_conversion_map
    functionSourceFile: /src/postgres/src/backend/access/common/tupconvert.c
    functionUses: 0
    functionsReached:
    - free_attrmap
    - pfree
    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:
    - SHORTALIGN
    - memcpy
    - SizeOfGinPostingList
    - appendStringInfo
    linkageType: ''
    returnType: void
    signature: void desc_recompress_leaf(StringInfo buf, ginxlogRecompressDataLeaf
      *insertData)
  - BBCount: 17
    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: XLogRecBlockImageApply
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:104,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:105,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:107,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:111,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:114,1
    - Dst: desc_recompress_leaf
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:117,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:123,1
    - Dst: PostingItemGetBlockNumber
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:124,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:125,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:126,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:135,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:137,1
    - Dst: XLogRecHasBlockImage
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:147,1
    - Dst: XLogRecBlockImageApply
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:149,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:150,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:152,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:157,1
    - Dst: desc_recompress_leaf
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:159,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/gindesc.c:173,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 54
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 71
    functionDepth: 3
    functionLinenumber: 71
    functionLinenumberEnd: 177
    functionName: gin_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/gindesc.c
    functionUses: 0
    functionsReached:
    - XLogRecBlockImageApply
    - desc_recompress_leaf
    - appendStringInfo
    - ItemPointerGetOffsetNumber
    - appendStringInfoString
    - BlockIdGetBlockNumber
    - XLogRecGetData
    - XLogRecGetInfo
    - PostingItemGetBlockNumber
    - ItemPointerGetBlockNumber
    - XLogRecGetBlockData
    - XLogRecHasBlockImage
    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: 216
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 216
    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:
    - XLogRecGetData
    - XLogRecGetInfo
    - appendStringInfo
    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:
    - XLogRecGetData
    - XLogRecGetInfo
    - appendStringInfo
    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:
    - memcpy
    - XLogRecGetData
    - XLogRecGetInfo
    - appendStringInfo
    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
    - XLogRecGetData
    - XLogRecGetInfo
    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:
    - EpochFromFullTransactionId
    - XidFromFullTransactionId
    - appendStringInfo
    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:
    - EpochFromFullTransactionId
    - XidFromFullTransactionId
    - appendStringInfo
    linkageType: ''
    returnType: void
    signature: void out_gistxlogPageDelete(StringInfo buf, gistxlogPageDelete *xlrec)
  - BBCount: 7
    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: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 60
    functionDepth: 3
    functionLinenumber: 60
    functionLinenumberEnd: 87
    functionName: gist_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/gistdesc.c
    functionUses: 0
    functionsReached:
    - out_gistxlogDelete
    - out_gistxlogPageDelete
    - out_gistxlogPageReuse
    - out_gistxlogPageSplit
    - XLogRecGetData
    - XLogRecGetInfo
    - out_gistxlogPageUpdate
    linkageType: ''
    returnType: void
    signature: void gist_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 117
    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:
    - XLogRecGetData
    - XLogRecGetInfo
    - Assert
    - appendStringInfo
    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:
    - memset
    - memcpy
    - strlcpy
    - strlen
    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:
    - memset
    - memcpy
    - strlcpy
    - strlen
    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:
    - memset
    - strncpy
    - MAXALIGN
    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:
    - relpathperm
    - appendStringInfo
    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:
    - appendStringInfoString
    - appendStringInfo
    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*
    - RepOriginId
    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:
    - LSN_FORMAT_ARGS
    - xact_desc_relations
    - appendStringInfo
    - TransactionIdIsValid
    - ParseCommitRecord
    - appendStringInfoString
    - xact_desc_stats
    - standby_desc_invalidations
    - XactCompletionRelcacheInitFileInval
    - XactCompletionApplyFeedback
    - xact_desc_subxacts
    - timestamptz_to_str
    - XactCompletionForceSyncCommit
    linkageType: ''
    returnType: void
    signature: void xact_desc_commit(StringInfo buf, uint8 info, xl_xact_commit *xlrec,
      RepOriginId 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*
    - RepOriginId
    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:
    - LSN_FORMAT_ARGS
    - xact_desc_relations
    - appendStringInfo
    - TransactionIdIsValid
    - appendStringInfoString
    - xact_desc_stats
    - xact_desc_subxacts
    - timestamptz_to_str
    - ParseAbortRecord
    linkageType: ''
    returnType: void
    signature: void xact_desc_abort(StringInfo buf, uint8 info, xl_xact_abort *xlrec,
      RepOriginId 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*
    - RepOriginId
    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:
    - LSN_FORMAT_ARGS
    - xact_desc_relations
    - appendStringInfo
    - appendStringInfoString
    - xact_desc_stats
    - standby_desc_invalidations
    - ParsePrepareRecord
    - xact_desc_subxacts
    - timestamptz_to_str
    linkageType: ''
    returnType: void
    signature: void xact_desc_prepare(StringInfo buf, uint8 info, xl_xact_prepare
      *xlrec, RepOriginId 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:
    - appendStringInfoString
    - appendStringInfo
    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:
    - xact_desc_assignment
    - xact_desc_prepare
    - appendStringInfo
    - XLogRecGetOrigin
    - xact_desc_commit
    - xact_desc_abort
    - standby_desc_invalidations
    - XLogRecGetData
    - XLogRecGetInfo
    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:39,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/hashdesc.c:46,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/hashdesc.c:53,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/hashdesc.c:61,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/hashdesc.c:71,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/hashdesc.c:79,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/hashdesc.c:88,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/hashdesc.c:99,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/hashdesc.c:108,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/hashdesc.c:116,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 47
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 19
    functionDepth: 2
    functionLinenumber: 19
    functionLinenumberEnd: 123
    functionName: hash_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/hashdesc.c
    functionUses: 0
    functionsReached:
    - XLogRecGetData
    - XLogRecGetInfo
    - appendStringInfo
    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: 173
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 173
    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:
    - EpochFromFullTransactionId
    - XLogRecHasBlockData
    - delvacuum_desc
    - appendStringInfo
    - XidFromFullTransactionId
    - XLogRecGetData
    - XLogRecGetInfo
    - XLogRecGetBlockData
    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:
    - Assert
    - appendStringInfo
    - appendStringInfoChar
    - appendStringInfoString
    - OffsetNumberIsValid
    - array_desc
    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:
    - memcpy
    - XLogRecGetData
    - appendStringInfo
    - XLogRecGetDataLen
    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:
    - XLogRecGetData
    - XLogRecGetInfo
    - appendStringInfoString
    - appendStringInfo
    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:
    - appendStringInfoString
    - appendStringInfo
    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: 81
      start: 49
    functionDepth: 3
    functionLinenumber: 49
    functionLinenumberEnd: 81
    functionName: multixact_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/mxactdesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - out_member
    - XLogRecGetData
    - XLogRecGetInfo
    - memcpy
    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: 105
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 105
    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: 55
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 55
    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: 11
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:60,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:61,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:68,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:73,1
    - Dst: get_wal_level_string
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:77,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:78,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:79,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:96,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:97,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:103,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:113,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:114,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:114,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:121,1
    - Dst: get_wal_level_string
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:122,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:124,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:141,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:142,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:148,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:149,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:151,1
    - Dst: get_wal_level_string
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:152,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:158,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:159,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:160,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:161,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:167,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:168,1
    - Dst: get_wal_level_string
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:168,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 170
    functionName: xlog_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - get_wal_level_string
    - EpochFromFullTransactionId
    - appendStringInfo
    - XidFromFullTransactionId
    - appendStringInfoString
    - XLogRecGetData
    - XLogRecGetInfo
    - timestamptz_to_str
    - memcpy
    linkageType: ''
    returnType: void
    signature: void xlog_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 15
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 46
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 224
    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: 18
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:237,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:240,1
    - Dst: XLogRecMaxBlockId
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:242,1
    - Dst: XLogRecGetBlockTagExtended
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:248,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:257,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:259,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:261,1
    - Dst: XLogRecHasBlockImage
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:268,1
    - Dst: XLogRecGetBlock
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:270,1
    - Dst: XLogRecGetBlock
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:274,1
    - Dst: BKPIMAGE_COMPRESSED
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:276,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:289,1
    - Dst: XLogRecBlockImageApply
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:292,1
    - Dst: XLogRecGetBlock
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:294,1
    - Dst: XLogRecGetBlock
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:295,1
    - Dst: XLogRecGetBlock
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:297,1
    - Dst: XLogRecGetBlock
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:298,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:303,1
    - Dst: XLogRecBlockImageApply
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:305,1
    - Dst: XLogRecGetBlock
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:307,1
    - Dst: XLogRecGetBlock
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:308,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:313,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:321,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:330,1
    - Dst: XLogRecHasBlockImage
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:337,1
    - Dst: XLogRecGetBlock
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:341,1
    - Dst: XLogRecBlockImageApply
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:343,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:344,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:346,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c:352,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: 353
      start: 230
    functionDepth: 2
    functionLinenumber: 230
    functionLinenumberEnd: 353
    functionName: XLogRecGetBlockRefInfo
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/xlogdesc.c
    functionUses: 1
    functionsReached:
    - Assert
    - XLogRecBlockImageApply
    - appendStringInfo
    - appendStringInfoChar
    - appendStringInfoString
    - BKPIMAGE_COMPRESSED
    - XLogRecGetBlock
    - XLogRecMaxBlockId
    - XLogRecGetBlockTagExtended
    - XLogRecHasBlockImage
    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:
    - memcpy
    - XLogRecGetData
    - XLogRecGetInfo
    - appendStringInfo
    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:
    - XLogRecGetData
    - XLogRecGetInfo
    - appendStringInfo
    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:
    - appendStringInfoString
    - appendStringInfo
    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:
    - appendStringInfo
    - standby_desc_invalidations
    - XLogRecGetData
    - XLogRecGetInfo
    - standby_desc_running_xacts
    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:
    - appendStringInfoString
    - appendStringInfo
    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:28,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:30,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:33,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:35,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:37,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:39,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:41,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:46,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:51,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - buf
    - infobits
    - keyname
    argTypes:
    - StringInfo
    - uint8
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 25
    functionDepth: 2
    functionLinenumber: 25
    functionLinenumberEnd: 52
    functionName: infobits_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfoChar
    - Assert
    - appendStringInfoString
    - appendStringInfo
    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:57,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:60,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:62,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:67,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:72,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - buf
    - flags
    argTypes:
    - StringInfo
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 54
    functionDepth: 2
    functionLinenumber: 54
    functionLinenumberEnd: 73
    functionName: truncate_flags_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfoChar
    - appendStringInfoString
    - Assert
    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:81,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:86,1
    - Dst: array_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:87,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - buf
    - plan
    - data
    argTypes:
    - StringInfo
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 75
    functionDepth: 2
    functionLinenumber: 75
    functionLinenumberEnd: 93
    functionName: plan_elem_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c
    functionUses: 0
    functionsReached:
    - array_desc
    - appendStringInfoString
    - appendStringInfo
    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:117,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:134,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:151,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:168,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 42
    argCount: 11
    argNames:
    - cursor
    - flags
    - nplans
    - plans
    - frz_offsets
    - nredirected
    - redirected
    - ndead
    - nowdead
    - nunused
    - nowunused
    argTypes:
    - char*
    - uint8
    - int*
    - xlhp_freeze_plan**
    - OffsetNumber**
    - int*
    - OffsetNumber**
    - int*
    - OffsetNumber**
    - int*
    - OffsetNumber**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 181
    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, uint8 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:186,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:187,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:194,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:202,1
    - Dst: infobits_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:204,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:205,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:211,1
    - Dst: infobits_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:213,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:214,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:221,1
    - Dst: infobits_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:223,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:224,1
    - Dst: truncate_flags_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:231,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:232,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:233,1
    - Dst: array_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:234,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:241,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:247,1
    - Dst: infobits_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:249,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:250,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:256,1
    - Dst: standby_desc_invalidations
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:257,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 183
    functionDepth: 3
    functionLinenumber: 183
    functionLinenumberEnd: 261
    functionName: heap_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - appendStringInfoString
    - standby_desc_invalidations
    - truncate_flags_desc
    - XLogRecGetData
    - XLogRecGetInfo
    - array_desc
    - infobits_desc
    linkageType: ''
    returnType: void
    signature: void heap_desc(StringInfo buf, XLogReaderState *record)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:266,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:267,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:280,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:282,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:286,1
    - Dst: XLogRecHasBlockData
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:289,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:302,1
    - Dst: heap_xlog_deserialize_prune_and_freeze
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:304,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:310,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:315,1
    - Dst: array_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:316,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:322,1
    - Dst: array_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:323,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:329,1
    - Dst: array_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:330,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:336,1
    - Dst: array_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:337,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:346,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:352,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:354,1
    - Dst: XLogRecHasBlockData
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:357,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:359,1
    - Dst: array_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:360,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:368,1
    - Dst: infobits_desc
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:370,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:371,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:377,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:381,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:382,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c:383,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 48
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 263
    functionDepth: 3
    functionLinenumber: 263
    functionLinenumberEnd: 386
    functionName: heap2_desc
    functionSourceFile: /src/postgres/src/backend/access/rmgrdesc/heapdesc.c
    functionUses: 0
    functionsReached:
    - XLogRecHasBlockData
    - appendStringInfo
    - ItemPointerGetOffsetNumber
    - appendStringInfoString
    - heap_xlog_deserialize_prune_and_freeze
    - XLogRecGetData
    - XLogRecGetInfo
    - ItemPointerGetBlockNumber
    - array_desc
    - memcpy
    - infobits_desc
    - XLogRecGetBlockData
    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: 431
      start: 388
    functionDepth: 0
    functionLinenumber: 388
    functionLinenumberEnd: 431
    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: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 1
    argNames:
    - info
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 433
    functionDepth: 0
    functionLinenumber: 433
    functionLinenumberEnd: 470
    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:
    - XLogRecGetData
    - XLogRecGetInfo
    - appendStringInfoString
    - appendStringInfo
    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:
    - appendStringInfoChar
    - elem_desc
    - appendStringInfoString
    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:
    - XLogRecGetData
    - XLogRecGetInfo
    - appendStringInfo
    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:
    - LSN_FORMAT_ARGS
    - XLogRecGetData
    - XLogRecGetInfo
    - appendStringInfo
    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:
    - makeNode
    - PG_RETURN_POINTER
    - 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:
    - isnan
    - estimate_expression_value
    - linitial
    - IsA
    - clamp_row_est
    - DatumGetFloat4
    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:
    - isnan
    - errmsg
    - ereport
    - rint
    - errcode
    - DatumGetFloat4
    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:
    - makeNode
    - PG_RETURN_POINTER
    - 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:
    - isnan
    - estimate_expression_value
    - linitial
    - IsA
    - clamp_row_est
    - DatumGetFloat4
    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
      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
    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:
    - isnan
    - errmsg
    - ereport
    - rint
    - errcode
    - DatumGetFloat4
    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:
    - OidFunctionCall1
    - IsA
    - PointerGetDatum
    - elog
    - 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: 199
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 199
    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: 204
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 204
    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:278,1
    - Dst: log
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:278,1
    - Dst: pow
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:278,1
    - Dst: log
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:278,1
    - Dst: log
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:288,1
    - Dst: floor
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:289,1
    - Dst: ceil
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:289,1
    - Dst: floor
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:289,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: 299
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 299
    functionName: bloom_filter_size
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached:
    - pow
    - log
    - ceil
    - floor
    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:318,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:319,1
    - Dst: bloom_filter_size
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:322,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:343,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:352,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:358,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - ndistinct
    - false_positive_rate
    argTypes:
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 308
    functionDepth: 1
    functionLinenumber: 308
    functionLinenumberEnd: 361
    functionName: bloom_init
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached:
    - Assert
    - bloom_filter_size
    - palloc0
    - elog
    - SET_VARSIZE
    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:376,1
    - Dst: hash_bytes_uint32_extended
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:377,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - filter
    - value
    - updated
    argTypes:
    - BloomFilter*
    - uint32
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 368
    functionDepth: 2
    functionLinenumber: 368
    functionLinenumberEnd: 398
    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:413,1
    - Dst: hash_bytes_uint32_extended
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:414,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - filter
    - value
    argTypes:
    - BloomFilter*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 405
    functionDepth: 2
    functionLinenumber: 405
    functionLinenumberEnd: 431
    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:459,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:459,1
    - Dst: SizeofBrinOpcInfo
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:459,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:464,1
    - Dst: SizeofBrinOpcInfo
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:464,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:465,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 447
    functionDepth: 1
    functionLinenumber: 447
    functionLinenumberEnd: 468
    functionName: brin_bloom_opcinfo
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached:
    - palloc0
    - lookup_type_cache
    - SizeofBrinOpcInfo
    - PG_RETURN_POINTER
    - MAXALIGN
    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:501,1
    - Dst: BloomGetNDistinctPerRange
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:502,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:504,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:504,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:519,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:525,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - bdesc
    - opts
    argTypes:
    - BrinDesc*
    - BloomOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 494
    functionDepth: 1
    functionLinenumber: 494
    functionLinenumberEnd: 528
    functionName: brin_bloom_get_ndistinct
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached:
    - Min
    - Assert
    - BloomGetNDistinctPerRange
    - Max
    - BlockNumberIsValid
    - BrinGetPagesPerRange
    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:540,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:541,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:542,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:543,1
    - Dst: PG_GET_OPCLASS_OPTIONS
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:544,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:545,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:552,1
    - Dst: bloom_init
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:563,1
    - Dst: brin_bloom_get_ndistinct
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:563,1
    - Dst: BloomGetFalsePositiveRate
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:564,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:565,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:570,1
    - Dst: bloom_get_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:576,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:578,1
    - Dst: FunctionCall1Coll
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:578,1
    - Dst: bloom_add_value
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:580,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:582,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:584,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 537
    functionDepth: 3
    functionLinenumber: 537
    functionLinenumberEnd: 585
    functionName: brin_bloom_add_value
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached:
    - Assert
    - PG_GETARG_POINTER
    - PG_RETURN_BOOL
    - PG_DETOAST_DATUM
    - FunctionCall1Coll
    - bloom_init
    - PointerGetDatum
    - BloomGetFalsePositiveRate
    - bloom_get_procinfo
    - brin_bloom_get_ndistinct
    - DatumGetUInt32
    - PG_GETARG_DATUM
    - PG_GET_COLLATION
    - PG_GET_OPCLASS_OPTIONS
    - bloom_add_value
    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:595,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:596,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:597,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:598,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:599,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:608,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:610,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:623,1
    - Dst: bloom_get_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:636,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:638,1
    - Dst: FunctionCall1Coll
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:638,1
    - Dst: bloom_contains_value
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:639,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:644,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:653,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 592
    functionDepth: 3
    functionLinenumber: 592
    functionLinenumberEnd: 654
    functionName: brin_bloom_consistent
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached:
    - Assert
    - PG_GETARG_POINTER
    - bloom_contains_value
    - PG_RETURN_BOOL
    - FunctionCall1Coll
    - DatumGetUInt32
    - elog
    - PG_GETARG_INT32
    - bloom_get_procinfo
    - PG_GET_COLLATION
    - PG_DETOAST_DATUM
    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:669,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:670,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:674,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:675,1
    - Dst: PG_DETOAST_DATUM
      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:678,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:681,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:682,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: pg_popcount
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:693,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:696,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:698,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:698,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:699,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:703,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:704,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:706,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 664
    functionDepth: 1
    functionLinenumber: 664
    functionLinenumberEnd: 707
    functionName: brin_bloom_union
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - pg_popcount
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - PointerGetDatum
    - PG_DETOAST_DATUM
    - 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:729,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:729,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:731,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:732,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:735,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:736,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:737,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:738,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - bdesc
    - attno
    - procnum
    argTypes:
    - BrinDesc*
    - uint16
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 715
    functionDepth: 2
    functionLinenumber: 715
    functionLinenumberEnd: 743
    functionName: bloom_get_procinfo
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 2
    functionsReached:
    - errdetail_internal
    - index_getprocid
    - RegProcedureIsValid
    - ereport
    - errmsg_internal
    - index_getprocinfo
    - fmgr_info_copy
    - errcode
    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:748,1
    - Dst: init_local_reloptions
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:750,1
    - Dst: add_local_real_reloption
      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:757,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:764,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 745
    functionDepth: 4
    functionLinenumber: 745
    functionLinenumberEnd: 765
    functionName: brin_bloom_options
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - add_local_real_reloption
    - 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:782,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:783,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:784,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:786,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 775
    functionDepth: 1
    functionLinenumber: 775
    functionLinenumberEnd: 787
    functionName: brin_bloom_summary_in
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_VOID
    - errcode
    - ereport
    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:804,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:804,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:806,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:807,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:809,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:812,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:814,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 797
    functionDepth: 3
    functionLinenumber: 797
    functionLinenumberEnd: 815
    functionName: brin_bloom_summary_out
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - appendStringInfoChar
    - PG_RETURN_CSTRING
    - PG_GETARG_DATUM
    - initStringInfo
    - PG_DETOAST_DATUM
    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:824,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:825,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:826,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/brin/brin_bloom.c:828,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 821
    functionDepth: 1
    functionLinenumber: 821
    functionLinenumberEnd: 829
    functionName: brin_bloom_summary_recv
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_bloom.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_VOID
    - errcode
    - ereport
    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:841,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 838
    functionDepth: 1
    functionLinenumber: 838
    functionLinenumberEnd: 842
    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:
    - palloc0
    - lookup_type_cache
    - PG_GETARG_OID
    - SizeofBrinOpcInfo
    - PG_RETURN_POINTER
    - MAXALIGN
    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:
    - pfree
    - Assert
    - TupleDescCompactAttr
    - FunctionCall2Coll
    - PG_GETARG_POINTER
    - BoolGetDatum
    - PG_RETURN_BOOL
    - datumCopy
    - FunctionCall1Coll
    - PG_GETARG_BOOL
    - PG_GETARG_DATUM
    - PG_GET_COLLATION
    - inclusion_get_procinfo
    - DatumGetPointer
    - DatumGetBool
    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:
    - inclusion_get_strategy_procinfo
    - Assert
    - PG_GET_COLLATION
    - FunctionCall2Coll
    - PG_GETARG_POINTER
    - PG_RETURN_DATUM
    - PG_RETURN_BOOL
    - elog
    - DatumGetBool
    - PG_NARGS
    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:
    - pfree
    - Assert
    - TupleDescCompactAttr
    - FunctionCall2Coll
    - PG_GETARG_POINTER
    - BoolGetDatum
    - PG_RETURN_VOID
    - datumCopy
    - PG_GET_COLLATION
    - inclusion_get_procinfo
    - DatumGetPointer
    - DatumGetBool
    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:
    - errdetail_internal
    - index_getprocid
    - RegProcedureIsValid
    - ereport
    - errmsg_internal
    - index_getprocinfo
    - fmgr_info_copy
    - errcode
    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: Int16GetDatum
      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:
    - Assert
    - SearchSysCache4
    - ReleaseSysCache
    - HeapTupleIsValid
    - TupleDescAttr
    - SysCacheGetAttrNotNull
    - RegProcedureIsValid
    - get_opcode
    - elog
    - DatumGetObjectId
    - fmgr_info_cxt
    - Int16GetDatum
    - ObjectIdGetDatum
    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:
    - format_operator
    - HeapTupleIsValid
    - get_opfamily_name
    - NameStr
    - ReleaseSysCache
    - identify_opfamily_groups
    - GETSTRUCT
    - check_amproc_signature
    - format_procedure
    - errmsg
    - format_type_be
    - elog
    - check_amoptsproc_signature
    - OidIsValid
    - check_amop_signature
    - lfirst
    - ObjectIdGetDatum
    - ereport
    - SearchSysCache1
    - SearchSysCacheList1
    - ReleaseCatCacheList
    - errcode
    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:
    - errmsg
    - lfirst
    - format_type_be
    - ereport
    - errcode
    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:
    - palloc0
    - lookup_type_cache
    - PG_GETARG_OID
    - SizeofBrinOpcInfo
    - PG_RETURN_POINTER
    - MAXALIGN
    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_DATUM
      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:
    - pfree
    - Assert
    - FunctionCall2Coll
    - PG_GETARG_POINTER
    - minmax_get_strategy_procinfo
    - TupleDescAttr
    - PG_RETURN_BOOL
    - datumCopy
    - PG_GETARG_DATUM
    - PG_GET_COLLATION
    - DatumGetPointer
    - DatumGetBool
    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:
    - Assert
    - FunctionCall2Coll
    - PG_GETARG_POINTER
    - minmax_get_strategy_procinfo
    - PG_RETURN_DATUM
    - elog
    - PG_GET_COLLATION
    - DatumGetBool
    - PG_NARGS
    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: 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: 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:
    - pfree
    - Assert
    - FunctionCall2Coll
    - PG_GETARG_POINTER
    - minmax_get_strategy_procinfo
    - PG_RETURN_VOID
    - TupleDescAttr
    - datumCopy
    - PG_GET_COLLATION
    - 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: Int16GetDatum
      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:
    - Assert
    - SearchSysCache4
    - ReleaseSysCache
    - HeapTupleIsValid
    - TupleDescAttr
    - SysCacheGetAttrNotNull
    - RegProcedureIsValid
    - get_opcode
    - elog
    - DatumGetObjectId
    - fmgr_info_cxt
    - Int16GetDatum
    - ObjectIdGetDatum
    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
      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:
    - ReadBuffer
    - PageGetContents
    - LockBuffer
    - BufferGetPage
    - palloc
    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: 1
    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
    - ItemPointerGetOffsetNumber
    - ItemPointerSetInvalid
    - ItemPointerIsValid
    - ItemPointerGetBlockNumber
    - BufferGetPage
    - 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:
    - CHECK_FOR_INTERRUPTS
    - ReleaseBuffer
    - LockBuffer
    - BRIN_IS_REGULAR_PAGE
    - BufferGetBlockNumber
    - ItemPointerGetOffsetNumber
    - ItemIdIsUsed
    - ItemPointerSetInvalid
    - PageGetItem
    - ReadBuffer
    - BufferIsValid
    - PageGetItemId
    - PageGetContents
    - ItemPointerIsValid
    - ItemPointerEquals
    - revmap_get_blkno
    - BufferGetPage
    - HEAPBLK_TO_REVMAP_INDEX
    - PageGetMaxOffsetNumber
    - Assert
    - errmsg_internal
    - ereport
    - ItemIdGetLength
    - ItemPointerGetBlockNumber
    - errcode
    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:
    - MarkBufferDirty
    - PageSetLSN
    - LockBuffer
    - BRIN_IS_REGULAR_PAGE
    - brinRevmapTerminate
    - XLogRegisterData
    - START_CRIT_SECTION
    - ItemPointerGetOffsetNumber
    - ItemIdIsUsed
    - ItemPointerSetInvalid
    - PageIndexTupleDeleteNoCompact
    - BlockNumberIsValid
    - RelationNeedsWAL
    - ReadBuffer
    - errmsg
    - PageGetItemId
    - PageGetContents
    - ItemPointerIsValid
    - brinSetHeapBlockItemptr
    - revmap_get_blkno
    - BufferGetPage
    - HEAPBLK_TO_REVMAP_INDEX
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - brinLockRevmapPageForUpdate
    - brinRevmapInitialize
    - XLogBeginInsert
    - XLogInsert
    - ereport
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    - ItemPointerGetBlockNumber
    - errcode
    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:
    - ReadBuffer
    - Assert
    - BufferGetBlockNumber
    - ReleaseBuffer
    - elog
    - revmap_get_blkno
    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:
    - revmap_physical_extend
    - HEAPBLK_TO_REVMAP_BLK
    - 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:
    - MarkBufferDirty
    - PageSetLSN
    - LockBuffer
    - BRIN_IS_REGULAR_PAGE
    - brin_page_init
    - XLogRegisterData
    - RelationGetRelationName
    - START_CRIT_SECTION
    - BufferGetBlockNumber
    - RelationGetNumberOfBlocks
    - PageIsNew
    - RelationNeedsWAL
    - ReadBuffer
    - errmsg
    - brin_evacuate_page
    - PageGetContents
    - BrinPageType
    - brin_start_evacuating_page
    - BufferGetPage
    - UnlockReleaseBuffer
    - BMR_REL
    - XLogBeginInsert
    - XLogInsert
    - ereport
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    - ExtendBufferedRel
    - errcode
    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: 118
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 118
    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: makeNode
      Src: /src/postgres/src/backend/access/brin/brin.c:252,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/brin/brin.c:307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 308
    functionName: brinhandler
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - makeNode
    - 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:320,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/brin/brin.c:321,1
    - Dst: brin_build_desc
      Src: /src/postgres/src/backend/access/brin/brin.c:322,1
    - Dst: brinRevmapInitialize
      Src: /src/postgres/src/backend/access/brin/brin.c:323,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - idxRel
    - indexInfo
    argTypes:
    - Relation
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 314
    functionDepth: 5
    functionLinenumber: 314
    functionLinenumberEnd: 329
    functionName: initialize_brin_insertstate
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - brin_build_desc
    - brinRevmapInitialize
    - MemoryContextSwitchTo
    - palloc0
    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:359,1
    - Dst: initialize_brin_insertstate
      Src: /src/postgres/src/backend/access/brin/brin.c:366,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin.c:376,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/brin/brin.c:386,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/brin/brin.c:396,1
    - Dst: brinGetTupleForHeapBlock
      Src: /src/postgres/src/backend/access/brin/brin.c:402,1
    - Dst: AutoVacuumRequestWork
      Src: /src/postgres/src/backend/access/brin/brin.c:408,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/brin/brin.c:409,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin.c:412,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin.c:413,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin.c:414,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/brin/brin.c:415,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:419,1
    - Dst: brinGetTupleForHeapBlock
      Src: /src/postgres/src/backend/access/brin/brin.c:422,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/brin/brin.c:432,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:435,1
    - Dst: brin_deform_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:438,1
    - Dst: add_values_to_range
      Src: /src/postgres/src/backend/access/brin/brin.c:440,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:448,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin.c:452,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/brin/brin.c:453,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/brin/brin.c:464,1
    - Dst: brin_copy_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:465,1
    - Dst: brin_form_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:473,1
    - Dst: brin_can_do_samepage_update
      Src: /src/postgres/src/backend/access/brin/brin.c:474,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:475,1
    - Dst: brin_doupdate
      Src: /src/postgres/src/backend/access/brin/brin.c:485,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/brin/brin.c:490,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin.c:499,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:500,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:501,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/brin/brin.c:503,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: 506
      start: 343
    functionDepth: 6
    functionLinenumber: 343
    functionLinenumberEnd: 506
    functionName: brininsert
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - CHECK_FOR_INTERRUPTS
    - ReleaseBuffer
    - MemoryContextReset
    - LockBuffer
    - brin_copy_tuple
    - RelationGetRelationName
    - brin_form_tuple
    - MemoryContextDelete
    - RelationGetRelid
    - ItemPointerGetOffsetNumber
    - brin_doupdate
    - errmsg
    - add_values_to_range
    - PageGetItemId
    - BufferIsValid
    - brin_can_do_samepage_update
    - AutoVacuumRequestWork
    - BufferGetPage
    - brinGetTupleForHeapBlock
    - ereport
    - ItemIdGetLength
    - AllocSetContextCreate
    - initialize_brin_insertstate
    - brin_deform_tuple
    - BrinGetAutoSummarize
    - ItemPointerGetBlockNumber
    - errcode
    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:527,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin.c:528,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - index
    - indexInfo
    argTypes:
    - Relation
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 511
    functionDepth: 2
    functionLinenumber: 511
    functionLinenumberEnd: 529
    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:544,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/brin/brin.c:546,1
    - Dst: brinRevmapInitialize
      Src: /src/postgres/src/backend/access/brin/brin.c:547,1
    - Dst: brin_build_desc
      Src: /src/postgres/src/backend/access/brin/brin.c:548,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - r
    - nkeys
    - norderbys
    argTypes:
    - Relation
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 538
    functionDepth: 5
    functionLinenumber: 538
    functionLinenumberEnd: 552
    functionName: brinbeginscan
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - brin_build_desc
    - RelationGetIndexScan
    - brinRevmapInitialize
    - 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:594,1
    - Dst: IndexGetRelation
      Src: /src/postgres/src/backend/access/brin/brin.c:602,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/brin/brin.c:602,1
    - Dst: table_open
      Src: /src/postgres/src/backend/access/brin/brin.c:603,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/brin/brin.c:604,1
    - Dst: table_close
      Src: /src/postgres/src/backend/access/brin/brin.c:605,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/access/brin/brin.c:612,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin.c:633,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin.c:634,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin.c:635,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin.c:636,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: palloc
      Src: /src/postgres/src/backend/access/brin/brin.c:640,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin.c:644,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin.c:647,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin.c:650,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin.c:653,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin.c:658,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin.c:661,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:664,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/brin/brin.c:667,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/brin/brin.c:668,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:681,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/brin/brin.c:683,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:701,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:702,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/brin/brin.c:704,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/brin/brin.c:706,1
    - Dst: brin_new_memtuple
      Src: /src/postgres/src/backend/access/brin/brin.c:724,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/brin/brin.c:730,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:733,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/brin/brin.c:748,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/brin/brin.c:750,1
    - Dst: brinGetTupleForHeapBlock
      Src: /src/postgres/src/backend/access/brin/brin.c:752,1
    - Dst: brin_copy_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:757,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:758,1
    - Dst: brin_deform_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:771,1
    - Dst: check_null_keys
      Src: /src/postgres/src/backend/access/brin/brin.c:827,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:851,1
    - Dst: FunctionCall4Coll
      Src: /src/postgres/src/backend/access/brin/brin.c:881,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:883,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:884,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:885,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:886,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin.c:887,1
    - Dst: FunctionCall3Coll
      Src: /src/postgres/src/backend/access/brin/brin.c:903,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:905,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:906,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:907,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin.c:908,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/brin/brin.c:930,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:933,1
    - Dst: tbm_add_page
      Src: /src/postgres/src/backend/access/brin/brin.c:934,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:936,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:941,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/brin/brin.c:942,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:945,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 117
    argCount: 2
    argNames:
    - scan
    - tbm
    argTypes:
    - IndexScanDesc
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 566
    functionDepth: 5
    functionLinenumber: 566
    functionLinenumberEnd: 953
    functionName: bringetbitmap
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - IndexGetRelation
    - MemoryContextSwitchTo
    - CHECK_FOR_INTERRUPTS
    - tbm_add_page
    - ReleaseBuffer
    - MemoryContextReset
    - LockBuffer
    - brin_new_memtuple
    - brin_copy_tuple
    - palloc0_array
    - Min
    - MemoryContextDelete
    - RelationGetRelid
    - table_open
    - Int32GetDatum
    - FunctionCall4Coll
    - index_getprocinfo
    - RelationGetNumberOfBlocks
    - TupleDescAttr
    - palloc
    - table_close
    - brinGetTupleForHeapBlock
    - check_null_keys
    - Assert
    - pgstat_count_index_scan
    - memset
    - FunctionCall3Coll
    - PointerGetDatum
    - AllocSetContextCreate
    - brin_deform_tuple
    - DatumGetBool
    - fmgr_info_copy
    - MAXALIGN
    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:971,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: 972
      start: 958
    functionDepth: 0
    functionLinenumber: 958
    functionLinenumberEnd: 972
    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:982,1
    - Dst: brin_free_desc
      Src: /src/postgres/src/backend/access/brin/brin.c:983,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin.c:984,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 977
    functionDepth: 2
    functionLinenumber: 977
    functionLinenumberEnd: 985
    functionName: brinendscan
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - pfree
    - brin_free_desc
    - brinRevmapTerminate
    linkageType: ''
    returnType: void
    signature: void brinendscan(IndexScanDesc scan)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin.c:1005,1
    - Dst: BRIN_elog
      Src: /src/postgres/src/backend/access/brin/brin.c:1016,1
    - Dst: form_and_insert_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:1022,1
    - Dst: brin_memtuple_initialize
      Src: /src/postgres/src/backend/access/brin/brin.c:1028,1
    - Dst: add_values_to_range
      Src: /src/postgres/src/backend/access/brin/brin.c:1032,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: 1034
      start: 994
    functionDepth: 3
    functionLinenumber: 994
    functionLinenumberEnd: 1034
    functionName: brinbuildCallback
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - add_values_to_range
    - form_and_insert_tuple
    - brin_memtuple_initialize
    - ItemPointerGetBlockNumber
    - BRIN_elog
    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:1056,1
    - Dst: BRIN_elog
      Src: /src/postgres/src/backend/access/brin/brin.c:1073,1
    - Dst: form_and_spill_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:1079,1
    - Dst: brin_memtuple_initialize
      Src: /src/postgres/src/backend/access/brin/brin.c:1093,1
    - Dst: add_values_to_range
      Src: /src/postgres/src/backend/access/brin/brin.c:1097,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: 1099
      start: 1045
    functionDepth: 3
    functionLinenumber: 1045
    functionLinenumberEnd: 1099
    functionName: brinbuildCallbackParallel
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - add_values_to_range
    - brin_memtuple_initialize
    - form_and_spill_tuple
    - ItemPointerGetBlockNumber
    - BRIN_elog
    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:1118,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin.c:1119,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/brin/brin.c:1120,1
    - Dst: ExtendBufferedRel
      Src: /src/postgres/src/backend/access/brin/brin.c:1127,1
    - Dst: BMR_REL
      Src: /src/postgres/src/backend/access/brin/brin.c:1127,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:1129,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin.c:1129,1
    - Dst: brin_metapage_init
      Src: /src/postgres/src/backend/access/brin/brin.c:1131,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin.c:1131,1
    - Dst: BrinGetPagesPerRange
      Src: /src/postgres/src/backend/access/brin/brin.c:1131,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin.c:1133,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/brin/brin.c:1135,1
    - Dst: BrinGetPagesPerRange
      Src: /src/postgres/src/backend/access/brin/brin.c:1142,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/brin/brin.c:1144,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/brin/brin.c:1145,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:1146,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/brin/brin.c:1148,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin.c:1150,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/brin/brin.c:1151,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:1154,1
    - Dst: brinRevmapInitialize
      Src: /src/postgres/src/backend/access/brin/brin.c:1159,1
    - Dst: initialize_brin_buildstate
      Src: /src/postgres/src/backend/access/brin/brin.c:1160,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/brin/brin.c:1161,1
    - Dst: _brin_begin_parallel
      Src: /src/postgres/src/backend/access/brin/brin.c:1172,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/brin/brin.c:1188,1
    - Dst: tuplesort_begin_index_brin
      Src: /src/postgres/src/backend/access/brin/brin.c:1217,1
    - Dst: _brin_parallel_merge
      Src: /src/postgres/src/backend/access/brin/brin.c:1221,1
    - Dst: _brin_end_parallel
      Src: /src/postgres/src/backend/access/brin/brin.c:1223,1
    - Dst: table_index_build_scan
      Src: /src/postgres/src/backend/access/brin/brin.c:1233,1
    - Dst: form_and_insert_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:1243,1
    - Dst: brin_fill_empty_ranges
      Src: /src/postgres/src/backend/access/brin/brin.c:1252,1
    - Dst: brinRevmapTerminate
      Src: /src/postgres/src/backend/access/brin/brin.c:1259,1
    - Dst: terminate_brin_buildstate
      Src: /src/postgres/src/backend/access/brin/brin.c:1260,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/access/brin/brin.c:1265,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 42
    argCount: 3
    argNames:
    - heap
    - index
    - indexInfo
    argTypes:
    - Relation
    - Relation
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1271
      start: 1104
    functionDepth: 5
    functionLinenumber: 1104
    functionLinenumberEnd: 1271
    functionName: brinbuild
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - MarkBufferDirty
    - PageSetLSN
    - initialize_brin_buildstate
    - brinRevmapTerminate
    - terminate_brin_buildstate
    - XLogRegisterData
    - RelationGetRelationName
    - BrinGetPagesPerRange
    - _brin_parallel_merge
    - BufferGetBlockNumber
    - RelationGetNumberOfBlocks
    - RelationNeedsWAL
    - brin_metapage_init
    - form_and_insert_tuple
    - brin_fill_empty_ranges
    - table_index_build_scan
    - tuplesort_begin_index_brin
    - elog
    - _brin_end_parallel
    - palloc_object
    - BufferGetPage
    - UnlockReleaseBuffer
    - BMR_REL
    - Assert
    - brinRevmapInitialize
    - XLogBeginInsert
    - XLogInsert
    - palloc0
    - XLogRegisterBuffer
    - ExtendBufferedRel
    - _brin_begin_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:1279,1
    - Dst: BMR_REL
      Src: /src/postgres/src/backend/access/brin/brin.c:1279,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/brin/brin.c:1283,1
    - Dst: brin_metapage_init
      Src: /src/postgres/src/backend/access/brin/brin.c:1284,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin.c:1284,1
    - Dst: BrinGetPagesPerRange
      Src: /src/postgres/src/backend/access/brin/brin.c:1284,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin.c:1286,1
    - Dst: log_newpage_buffer
      Src: /src/postgres/src/backend/access/brin/brin.c:1287,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/brin/brin.c:1288,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:1290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1291
      start: 1273
    functionDepth: 4
    functionLinenumber: 1273
    functionLinenumberEnd: 1291
    functionName: brinbuildempty
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - BMR_REL
    - MarkBufferDirty
    - START_CRIT_SECTION
    - log_newpage_buffer
    - END_CRIT_SECTION
    - BufferGetPage
    - ExtendBufferedRel
    - UnlockReleaseBuffer
    - BrinGetPagesPerRange
    - brin_metapage_init
    linkageType: ''
    returnType: void
    signature: void brinbuildempty(Relation index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/access/brin/brin.c:1308,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: 1311
      start: 1302
    functionDepth: 0
    functionLinenumber: 1302
    functionLinenumberEnd: 1311
    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:1327,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/brin/brin.c:1328,1
    - Dst: table_open
      Src: /src/postgres/src/backend/access/brin/brin.c:1331,1
    - Dst: IndexGetRelation
      Src: /src/postgres/src/backend/access/brin/brin.c:1331,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/brin/brin.c:1331,1
    - Dst: brin_vacuum_scan
      Src: /src/postgres/src/backend/access/brin/brin.c:1334,1
    - Dst: brinsummarize
      Src: /src/postgres/src/backend/access/brin/brin.c:1336,1
    - Dst: table_close
      Src: /src/postgres/src/backend/access/brin/brin.c:1339,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - info
    - stats
    argTypes:
    - IndexVacuumInfo*
    - IndexBulkDeleteResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1342
      start: 1317
    functionDepth: 1
    functionLinenumber: 1317
    functionLinenumberEnd: 1342
    functionName: brinvacuumcleanup
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - brin_vacuum_scan
    - palloc0_object
    - IndexGetRelation
    - RelationGetRelid
    - table_open
    - table_close
    - brinsummarize
    - RelationGetNumberOfBlocks
    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:1355,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/brin/brin.c:1358,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - reloptions
    - validate
    argTypes:
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1359
      start: 1347
    functionDepth: 4
    functionLinenumber: 1347
    functionLinenumberEnd: 1359
    functionName: brinoptions
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - build_reloptions
    - lengthof
    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:1368,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/brin/brin.c:1370,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:1372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1373
      start: 1365
    functionDepth: 1
    functionLinenumber: 1365
    functionLinenumberEnd: 1373
    functionName: brin_summarize_new_values
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - Int64GetDatum
    - DirectFunctionCall2
    - PG_GETARG_DATUM
    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:1383,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/brin/brin.c:1384,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/brin/brin.c:1394,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin.c:1395,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin.c:1396,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin.c:1397,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/brin/brin.c:1398,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin.c:1401,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin.c:1402,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin.c:1403,1
    - Dst: IndexGetRelation
      Src: /src/postgres/src/backend/access/brin/brin.c:1412,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/brin/brin.c:1413,1
    - Dst: table_open
      Src: /src/postgres/src/backend/access/brin/brin.c:1415,1
    - Dst: GetUserIdAndSecContext
      Src: /src/postgres/src/backend/access/brin/brin.c:1425,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/access/brin/brin.c:1426,1
    - Dst: NewGUCNestLevel
      Src: /src/postgres/src/backend/access/brin/brin.c:1428,1
    - Dst: RestrictSearchPath
      Src: /src/postgres/src/backend/access/brin/brin.c:1429,1
    - Dst: index_open
      Src: /src/postgres/src/backend/access/brin/brin.c:1440,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin.c:1445,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin.c:1446,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin.c:1447,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/brin/brin.c:1448,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/access/brin/brin.c:1451,1
    - Dst: aclcheck_error
      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: IndexGetRelation
      Src: /src/postgres/src/backend/access/brin/brin.c:1460,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin.c:1461,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin.c:1462,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin.c:1463,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/brin/brin.c:1464,1
    - Dst: brinsummarize
      Src: /src/postgres/src/backend/access/brin/brin.c:1468,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin.c:1470,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin.c:1471,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin.c:1472,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/brin/brin.c:1473,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/backend/access/brin/brin.c:1476,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/access/brin/brin.c:1479,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/access/brin/brin.c:1481,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/access/brin/brin.c:1482,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/access/brin/brin.c:1484,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1485
      start: 1380
    functionDepth: 2
    functionLinenumber: 1380
    functionLinenumberEnd: 1485
    functionName: brin_summarize_range
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - IndexGetRelation
    - relation_close
    - errhint
    - NewGUCNestLevel
    - RelationGetRelationName
    - RecoveryInProgress
    - GetUserIdAndSecContext
    - SetUserIdAndSecContext
    - table_open
    - PG_GETARG_OID
    - errmsg
    - PG_RETURN_INT32
    - RestrictSearchPath
    - aclcheck_error
    - AtEOXact_GUC
    - brinsummarize
    - OidIsValid
    - object_ownercheck
    - PG_GETARG_INT64
    - ereport
    - errcode
    - index_open
    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:1493,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/brin/brin.c:1494,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/brin/brin.c:1501,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin.c:1502,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin.c:1503,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin.c:1504,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/brin/brin.c:1505,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin.c:1508,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin.c:1509,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin.c:1510,1
    - Dst: IndexGetRelation
      Src: /src/postgres/src/backend/access/brin/brin.c:1523,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/brin/brin.c:1524,1
    - Dst: table_open
      Src: /src/postgres/src/backend/access/brin/brin.c:1525,1
    - Dst: index_open
      Src: /src/postgres/src/backend/access/brin/brin.c:1529,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin.c:1534,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin.c:1535,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin.c:1536,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/brin/brin.c:1537,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/access/brin/brin.c:1540,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/access/brin/brin.c:1540,1
    - Dst: aclcheck_error
      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: IndexGetRelation
      Src: /src/postgres/src/backend/access/brin/brin.c:1549,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin.c:1550,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin.c:1551,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin.c:1552,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/brin/brin.c:1553,1
    - Dst: brinRevmapDesummarizeRange
      Src: /src/postgres/src/backend/access/brin/brin.c:1561,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin.c:1566,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin.c:1567,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin.c:1568,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/brin/brin.c:1569,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/access/brin/brin.c:1571,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/access/brin/brin.c:1572,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/brin/brin.c:1574,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1575
      start: 1490
    functionDepth: 6
    functionLinenumber: 1490
    functionLinenumberEnd: 1575
    functionName: brin_desummarize_range
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - errmsg
    - GetUserId
    - IndexGetRelation
    - RecoveryInProgress
    - table_open
    - aclcheck_error
    - brinRevmapDesummarizeRange
    - PG_GETARG_INT64
    - PG_RETURN_VOID
    - ereport
    - relation_close
    - PG_GETARG_OID
    - errhint
    - object_ownercheck
    - OidIsValid
    - RelationGetRelationName
    - errcode
    - index_open
    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:1592,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:1595,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/brin/brin.c:1596,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/access/brin/brin.c:1602,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/brin/brin.c:1606,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/brin/brin.c:1608,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin.c:1611,1
    - Dst: FunctionCall1
      Src: /src/postgres/src/backend/access/brin/brin.c:1611,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/brin/brin.c:1619,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin.c:1628,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:1630,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1633
      start: 1580
    functionDepth: 2
    functionLinenumber: 1580
    functionLinenumberEnd: 1633
    functionName: brin_build_desc
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 2
    functionsReached:
    - pfree
    - MemoryContextSwitchTo
    - palloc
    - TupleDescAttr
    - RelationGetDescr
    - FunctionCall1
    - AllocSetContextCreate
    - index_getprocinfo
    - palloc_array
    - DatumGetPointer
    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:1639,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/brin/brin.c:1641,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - bdesc
    argTypes:
    - BrinDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1642
      start: 1635
    functionDepth: 1
    functionLinenumber: 1635
    functionLinenumberEnd: 1642
    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:1654,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:1655,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin.c:1656,1
    - Dst: PageGetContents
      Src: /src/postgres/src/backend/access/brin/brin.c:1657,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:1662,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - index
    - stats
    argTypes:
    - Relation
    - BrinStatsData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1663
      start: 1647
    functionDepth: 4
    functionLinenumber: 1647
    functionLinenumberEnd: 1663
    functionName: brinGetStats
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - ReadBuffer
    - PageGetContents
    - LockBuffer
    - BufferGetPage
    - 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:1675,1
    - Dst: brin_build_desc
      Src: /src/postgres/src/backend/access/brin/brin.c:1684,1
    - Dst: brin_new_memtuple
      Src: /src/postgres/src/backend/access/brin/brin.c:1685,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 24
    argCount: 4
    argNames:
    - idxRel
    - revmap
    - pagesPerRange
    - tablePages
    argTypes:
    - Relation
    - BrinRevmap*
    - BlockNumber
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1710
      start: 1668
    functionDepth: 3
    functionLinenumber: 1668
    functionLinenumberEnd: 1710
    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:1722,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin.c:1728,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/brin/brin.c:1729,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin.c:1730,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:1731,1
    - Dst: RecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/brin/brin.c:1732,1
    - Dst: FreeSpaceMapVacuumRange
      Src: /src/postgres/src/backend/access/brin/brin.c:1733,1
    - Dst: brin_free_desc
      Src: /src/postgres/src/backend/access/brin/brin.c:1736,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin.c:1737,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin.c:1738,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - BrinBuildState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1739
      start: 1715
    functionDepth: 4
    functionLinenumber: 1715
    functionLinenumberEnd: 1739
    functionName: terminate_brin_buildstate
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 1
    functionsReached:
    - pfree
    - BufferGetBlockNumber
    - ReleaseBuffer
    - brin_free_desc
    - RecordPageWithFreeSpace
    - FreeSpaceMapVacuumRange
    - PageGetFreeSpace
    - BufferIsInvalid
    - BufferGetPage
    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:1774,1
    - Dst: brin_doinsert
      Src: /src/postgres/src/backend/access/brin/brin.c:1775,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:1783,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/brin/brin.c:1797,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/brin/brin.c:1797,1
    - Dst: table_index_build_range_scan
      Src: /src/postgres/src/backend/access/brin/brin.c:1817,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/brin/brin.c:1834,1
    - Dst: brin_form_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:1839,1
    - Dst: brin_can_do_samepage_update
      Src: /src/postgres/src/backend/access/brin/brin.c:1841,1
    - Dst: brin_doupdate
      Src: /src/postgres/src/backend/access/brin/brin.c:1843,1
    - Dst: brin_free_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:1846,1
    - Dst: brin_free_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:1847,1
    - Dst: brinGetTupleForHeapBlock
      Src: /src/postgres/src/backend/access/brin/brin.c:1860,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin.c:1864,1
    - Dst: brin_copy_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:1865,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:1866,1
    - Dst: union_tuples
      Src: /src/postgres/src/backend/access/brin/brin.c:1869,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:1872,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: 1873
      start: 1760
    functionDepth: 5
    functionLinenumber: 1760
    functionLinenumberEnd: 1873
    functionName: summarize_range
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - Min
    - Assert
    - CHECK_FOR_INTERRUPTS
    - ReleaseBuffer
    - brinGetTupleForHeapBlock
    - LockBuffer
    - brin_can_do_samepage_update
    - brin_doupdate
    - brin_copy_tuple
    - brin_form_placeholder_tuple
    - brin_doinsert
    - table_index_build_range_scan
    - brin_free_tuple
    - elog
    - union_tuples
    - brin_form_tuple
    - RelationGetNumberOfBlocks
    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:1898,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/access/brin/brin.c:1901,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/brin/brin.c:1907,1
    - Dst: brinRevmapTerminate
      Src: /src/postgres/src/backend/access/brin/brin.c:1912,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/brin/brin.c:1936,1
    - Dst: brinGetTupleForHeapBlock
      Src: /src/postgres/src/backend/access/brin/brin.c:1938,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:1946,1
    - Dst: initialize_brin_buildstate
      Src: /src/postgres/src/backend/access/brin/brin.c:1947,1
    - Dst: BuildIndexInfo
      Src: /src/postgres/src/backend/access/brin/brin.c:1950,1
    - Dst: summarize_range
      Src: /src/postgres/src/backend/access/brin/brin.c:1952,1
    - Dst: brin_memtuple_initialize
      Src: /src/postgres/src/backend/access/brin/brin.c:1955,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:1964,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin.c:1968,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:1969,1
    - Dst: brinRevmapTerminate
      Src: /src/postgres/src/backend/access/brin/brin.c:1972,1
    - Dst: terminate_brin_buildstate
      Src: /src/postgres/src/backend/access/brin/brin.c:1975,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin.c:1976,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: 1978
      start: 1886
    functionDepth: 6
    functionLinenumber: 1886
    functionLinenumberEnd: 1978
    functionName: brinsummarize
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 2
    functionsReached:
    - Min
    - Assert
    - BufferIsValid
    - pfree
    - CHECK_FOR_INTERRUPTS
    - brinRevmapInitialize
    - initialize_brin_buildstate
    - ReleaseBuffer
    - brinGetTupleForHeapBlock
    - LockBuffer
    - brinRevmapTerminate
    - summarize_range
    - brin_memtuple_initialize
    - terminate_brin_buildstate
    - RelationGetNumberOfBlocks
    - BuildIndexInfo
    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:1990,1
    - Dst: brin_doinsert
      Src: /src/postgres/src/backend/access/brin/brin.c:1992,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin.c:1997,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - state
    argTypes:
    - BrinBuildState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1998
      start: 1984
    functionDepth: 1
    functionLinenumber: 1984
    functionLinenumberEnd: 1998
    functionName: form_and_insert_tuple
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 2
    functionsReached:
    - brin_form_tuple
    - pfree
    - brin_doinsert
    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:2015,1
    - Dst: tuplesort_putbrintuple
      Src: /src/postgres/src/backend/access/brin/brin.c:2019,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin.c:2023,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - state
    argTypes:
    - BrinBuildState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2024
      start: 2005
    functionDepth: 1
    functionLinenumber: 2005
    functionLinenumberEnd: 2024
    functionName: form_and_spill_tuple
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 1
    functionsReached:
    - brin_form_tuple
    - pfree
    - tuplesort_putbrintuple
    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:2039,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:2042,1
    - Dst: brin_deform_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:2043,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:2044,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/brin/brin.c:2061,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/brin/brin.c:2090,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/brin/brin.c:2099,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/brin/brin.c:2143,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/brin/brin.c:2151,1
    - Dst: FunctionCall3Coll
      Src: /src/postgres/src/backend/access/brin/brin.c:2153,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:2155,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:2156,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:2157,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/brin/brin.c:2160,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 40
    argCount: 3
    argNames:
    - bdesc
    - a
    - b
    argTypes:
    - BrinDesc*
    - BrinMemTuple*
    - BrinTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2161
      start: 2030
    functionDepth: 2
    functionLinenumber: 2030
    functionLinenumberEnd: 2161
    functionName: union_tuples
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - datumCopy
    - FunctionCall3Coll
    - PointerGetDatum
    - AllocSetContextCreate
    - 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: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/brin/brin.c:2186,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/brin/brin.c:2188,1
    - Dst: brin_page_cleanup
      Src: /src/postgres/src/backend/access/brin/brin.c:2191,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin.c:2193,1
    - Dst: FreeSpaceMapVacuum
      Src: /src/postgres/src/backend/access/brin/brin.c:2201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - idxrel
    - strategy
    argTypes:
    - Relation
    - BufferAccessStrategy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2202
      start: 2171
    functionDepth: 1
    functionLinenumber: 2171
    functionLinenumberEnd: 2202
    functionName: brin_vacuum_scan
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 1
    functionsReached:
    - FreeSpaceMapVacuum
    - CHECK_FOR_INTERRUPTS
    - ReleaseBuffer
    - brin_page_cleanup
    - ReadBufferExtended
    - RelationGetNumberOfBlocks
    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:2258,1
    - Dst: FunctionCall4Coll
      Src: /src/postgres/src/backend/access/brin/brin.c:2260,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:2262,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin.c:2263,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin.c:2267,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:2280,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:2292,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: 2296
      start: 2204
    functionDepth: 2
    functionLinenumber: 2204
    functionLinenumberEnd: 2296
    functionName: add_values_to_range
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 3
    functionsReached:
    - Assert
    - PointerGetDatum
    - FunctionCall4Coll
    - 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:2311,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 3
    argNames:
    - bval
    - nullkeys
    - nnullkeys
    argTypes:
    - BrinValues*
    - ScanKey*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2344
      start: 2298
    functionDepth: 1
    functionLinenumber: 2298
    functionLinenumberEnd: 2344
    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
      Src: /src/postgres/src/backend/access/brin/brin.c:2373,1
    - Dst: EnterParallelMode
      Src: /src/postgres/src/backend/access/brin/brin.c:2387,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:2388,1
    - Dst: CreateParallelContext
      Src: /src/postgres/src/backend/access/brin/brin.c:2389,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/access/brin/brin.c:2404,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/access/brin/brin.c:2404,1
    - Dst: _brin_parallel_estimate_shared
      Src: /src/postgres/src/backend/access/brin/brin.c:2409,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/brin/brin.c:2410,1
    - Dst: tuplesort_estimate_shared
      Src: /src/postgres/src/backend/access/brin/brin.c:2411,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/brin/brin.c:2412,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/brin/brin.c:2414,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/brin/brin.c:2424,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/brin/brin.c:2425,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/brin/brin.c:2426,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/brin/brin.c:2427,1
    - Dst: mul_size
      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:2429,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/brin/brin.c:2434,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/brin/brin.c:2435,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/brin/brin.c:2436,1
    - Dst: InitializeParallelDSM
      Src: /src/postgres/src/backend/access/brin/brin.c:2442,1
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/access/brin/brin.c:2447,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/access/brin/brin.c:2448,1
    - Dst: DestroyParallelContext
      Src: /src/postgres/src/backend/access/brin/brin.c:2449,1
    - Dst: ExitParallelMode
      Src: /src/postgres/src/backend/access/brin/brin.c:2450,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/brin/brin.c:2455,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/brin/brin.c:2457,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/access/brin/brin.c:2458,1
    - Dst: pgstat_get_my_query_id
      Src: /src/postgres/src/backend/access/brin/brin.c:2462,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/backend/access/brin/brin.c:2463,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/access/brin/brin.c:2464,1
    - Dst: table_parallelscan_initialize
      Src: /src/postgres/src/backend/access/brin/brin.c:2471,1
    - Dst: ParallelTableScanFromBrinShared
      Src: /src/postgres/src/backend/access/brin/brin.c:2472,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/brin/brin.c:2479,1
    - Dst: tuplesort_initialize_shared
      Src: /src/postgres/src/backend/access/brin/brin.c:2480,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/brin/brin.c:2487,1
    - Dst: shm_toc_insert
      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: memcpy
      Src: /src/postgres/src/backend/access/brin/brin.c:2496,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/brin/brin.c:2497,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/brin/brin.c:2504,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/brin/brin.c:2505,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/brin/brin.c:2506,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/brin/brin.c:2507,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/brin/brin.c:2508,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/brin/brin.c:2509,1
    - Dst: LaunchParallelWorkers
      Src: /src/postgres/src/backend/access/brin/brin.c:2512,1
    - Dst: _brin_end_parallel
      Src: /src/postgres/src/backend/access/brin/brin.c:2526,1
    - Dst: _brin_leader_participate_as_worker
      Src: /src/postgres/src/backend/access/brin/brin.c:2535,1
    - Dst: WaitForParallelWorkersToAttach
      Src: /src/postgres/src/backend/access/brin/brin.c:2541,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: 2542
      start: 2362
    functionDepth: 1
    functionLinenumber: 2362
    functionLinenumberEnd: 2542
    functionName: _brin_begin_parallel
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 1
    functionsReached:
    - CreateParallelContext
    - table_parallelscan_initialize
    - WaitForParallelWorkersToAttach
    - pgstat_get_my_query_id
    - ConditionVariableInit
    - shm_toc_allocate
    - strlen
    - _brin_parallel_estimate_shared
    - RelationGetRelid
    - RegisterSnapshot
    - GetTransactionSnapshot
    - ExitParallelMode
    - shm_toc_estimate_keys
    - _brin_leader_participate_as_worker
    - tuplesort_estimate_shared
    - ParallelTableScanFromBrinShared
    - mul_size
    - memcpy
    - tuplesort_initialize_shared
    - DestroyParallelContext
    - SpinLockInit
    - _brin_end_parallel
    - LaunchParallelWorkers
    - IsMVCCSnapshot
    - Assert
    - EnterParallelMode
    - InitializeParallelDSM
    - shm_toc_estimate_chunk
    - shm_toc_insert
    - palloc0
    - UnregisterSnapshot
    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:2553,1
    - Dst: InstrAccumParallelQuery
      Src: /src/postgres/src/backend/access/brin/brin.c:2560,1
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/access/brin/brin.c:2563,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/access/brin/brin.c:2564,1
    - Dst: DestroyParallelContext
      Src: /src/postgres/src/backend/access/brin/brin.c:2565,1
    - Dst: ExitParallelMode
      Src: /src/postgres/src/backend/access/brin/brin.c:2566,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - brinleader
    - state
    argTypes:
    - BrinLeader*
    - BrinBuildState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2567
      start: 2547
    functionDepth: 1
    functionLinenumber: 2547
    functionLinenumberEnd: 2567
    functionName: _brin_end_parallel
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 2
    functionsReached:
    - InstrAccumParallelQuery
    - IsMVCCSnapshot
    - DestroyParallelContext
    - ExitParallelMode
    - WaitForParallelWorkersToFinish
    - 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:2587,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/brin/brin.c:2594,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/brin/brin.c:2597,1
    - Dst: ConditionVariableSleep
      Src: /src/postgres/src/backend/access/brin/brin.c:2599,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/access/brin/brin.c:2603,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - BrinBuildState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2606
      start: 2578
    functionDepth: 1
    functionLinenumber: 2578
    functionLinenumberEnd: 2606
    functionName: _brin_parallel_heapscan
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - ConditionVariableSleep
    - SpinLockRelease
    - ConditionVariableCancelSleep
    - SpinLockAcquire
    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:2631,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/access/brin/brin.c:2634,1
    - Dst: brin_new_memtuple
      Src: /src/postgres/src/backend/access/brin/brin.c:2640,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/brin/brin.c:2650,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:2653,1
    - Dst: tuplesort_getbrintuple
      Src: /src/postgres/src/backend/access/brin/brin.c:2660,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin.c:2663,1
    - Dst: brin_deform_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:2685,1
    - Dst: union_tuples
      Src: /src/postgres/src/backend/access/brin/brin.c:2695,1
    - Dst: brin_form_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:2708,1
    - Dst: brin_doinsert
      Src: /src/postgres/src/backend/access/brin/brin.c:2711,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/brin/brin.c:2719,1
    - Dst: brin_deform_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:2721,1
    - Dst: brin_fill_empty_ranges
      Src: /src/postgres/src/backend/access/brin/brin.c:2727,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/access/brin/brin.c:2732,1
    - Dst: brin_form_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:2740,1
    - Dst: brin_doinsert
      Src: /src/postgres/src/backend/access/brin/brin.c:2743,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin.c:2746,1
    - Dst: brin_fill_empty_ranges
      Src: /src/postgres/src/backend/access/brin/brin.c:2750,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:2756,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/brin/brin.c:2757,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 1
    argNames:
    - state
    argTypes:
    - BrinBuildState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2760
      start: 2619
    functionDepth: 3
    functionLinenumber: 2619
    functionLinenumberEnd: 2760
    functionName: _brin_parallel_merge
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 1
    functionsReached:
    - _brin_parallel_heapscan
    - Assert
    - MemoryContextSwitchTo
    - brin_fill_empty_ranges
    - pfree
    - MemoryContextDelete
    - MemoryContextReset
    - brin_new_memtuple
    - tuplesort_getbrintuple
    - brin_doinsert
    - AllocSetContextCreate
    - union_tuples
    - brin_deform_tuple
    - brin_form_tuple
    - tuplesort_performsort
    - tuplesort_end
    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:2770,1
    - Dst: BUFFERALIGN
      Src: /src/postgres/src/backend/access/brin/brin.c:2770,1
    - Dst: table_parallelscan_estimate
      Src: /src/postgres/src/backend/access/brin/brin.c:2771,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - heap
    - snapshot
    argTypes:
    - Relation
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2772
      start: 2766
    functionDepth: 1
    functionLinenumber: 2766
    functionLinenumberEnd: 2772
    functionName: _brin_parallel_estimate_shared
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 1
    functionsReached:
    - BUFFERALIGN
    - table_parallelscan_estimate
    - add_size
    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:2791,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - buildstate
    - heap
    - index
    argTypes:
    - BrinBuildState*
    - Relation
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2793
      start: 2777
    functionDepth: 1
    functionLinenumber: 2777
    functionLinenumberEnd: 2793
    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
      Src: /src/postgres/src/backend/access/brin/brin.c:2817,1
    - Dst: tuplesort_begin_index_brin
      Src: /src/postgres/src/backend/access/brin/brin.c:2823,1
    - Dst: BuildIndexInfo
      Src: /src/postgres/src/backend/access/brin/brin.c:2827,1
    - Dst: table_beginscan_parallel
      Src: /src/postgres/src/backend/access/brin/brin.c:2830,1
    - Dst: ParallelTableScanFromBrinShared
      Src: /src/postgres/src/backend/access/brin/brin.c:2831,1
    - Dst: table_index_build_scan
      Src: /src/postgres/src/backend/access/brin/brin.c:2833,1
    - Dst: form_and_spill_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:2837,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/access/brin/brin.c:2840,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/brin/brin.c:2847,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/brin/brin.c:2851,1
    - Dst: ConditionVariableSignal
      Src: /src/postgres/src/backend/access/brin/brin.c:2854,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/access/brin/brin.c:2856,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: 2857
      start: 2805
    functionDepth: 2
    functionLinenumber: 2805
    functionLinenumberEnd: 2857
    functionName: _brin_parallel_scan_and_build
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 1
    functionsReached:
    - ConditionVariableSignal
    - table_index_build_scan
    - SpinLockAcquire
    - tuplesort_begin_index_brin
    - tuplesort_end
    - palloc0
    - SpinLockRelease
    - form_and_spill_tuple
    - ParallelTableScanFromBrinShared
    - table_beginscan_parallel
    - tuplesort_performsort
    - BuildIndexInfo
    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:2881,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/brin/brin.c:2885,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/access/brin/brin.c:2889,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/brin/brin.c:2892,1
    - Dst: pgstat_report_query_id
      Src: /src/postgres/src/backend/access/brin/brin.c:2907,1
    - Dst: table_open
      Src: /src/postgres/src/backend/access/brin/brin.c:2910,1
    - Dst: index_open
      Src: /src/postgres/src/backend/access/brin/brin.c:2911,1
    - Dst: initialize_brin_buildstate
      Src: /src/postgres/src/backend/access/brin/brin.c:2913,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/brin/brin.c:2918,1
    - Dst: tuplesort_attach_shared
      Src: /src/postgres/src/backend/access/brin/brin.c:2919,1
    - Dst: InstrStartParallelQuery
      Src: /src/postgres/src/backend/access/brin/brin.c:2922,1
    - Dst: _brin_parallel_scan_and_build
      Src: /src/postgres/src/backend/access/brin/brin.c:2931,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/brin/brin.c:2935,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/brin/brin.c:2936,1
    - Dst: InstrEndParallelQuery
      Src: /src/postgres/src/backend/access/brin/brin.c:2937,1
    - Dst: index_close
      Src: /src/postgres/src/backend/access/brin/brin.c:2940,1
    - Dst: table_close
      Src: /src/postgres/src/backend/access/brin/brin.c:2941,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 2
    argNames:
    - seg
    - toc
    argTypes:
    - dsm_segment*
    - shm_toc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2942
      start: 2862
    functionDepth: 4
    functionLinenumber: 2862
    functionLinenumberEnd: 2942
    functionName: _brin_parallel_build_main
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - Assert
    - initialize_brin_buildstate
    - index_close
    - table_open
    - InstrEndParallelQuery
    - pgstat_report_query_id
    - InstrStartParallelQuery
    - shm_toc_lookup
    - pgstat_report_activity
    - _brin_parallel_scan_and_build
    - table_close
    - tuplesort_attach_shared
    - index_open
    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:2962,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:2965,1
    - Dst: brin_form_tuple
      Src: /src/postgres/src/backend/access/brin/brin.c:2967,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin.c:2970,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - state
    - blkno
    argTypes:
    - BrinBuildState*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2977
      start: 2955
    functionDepth: 1
    functionLinenumber: 2955
    functionLinenumberEnd: 2977
    functionName: brin_build_empty_tuple
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 0
    functionsReached:
    - brin_form_tuple
    - brin_new_memtuple
    - 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:3008,1
    - Dst: brin_doinsert
      Src: /src/postgres/src/backend/access/brin/brin.c:3010,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - state
    - prevRange
    - nextRange
    argTypes:
    - BrinBuildState*
    - BlockNumber
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3017
      start: 2992
    functionDepth: 2
    functionLinenumber: 2992
    functionLinenumberEnd: 3017
    functionName: brin_fill_empty_ranges
    functionSourceFile: /src/postgres/src/backend/access/brin/brin.c
    functionUses: 2
    functionsReached:
    - brin_doinsert
    - brin_build_empty_tuple
    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
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - brdesc
    argTypes:
    - BrinDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 60
    functionDepth: 4
    functionLinenumber: 60
    functionLinenumberEnd: 91
    functionName: brtuple_disk_tupdesc
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_tuple.c
    functionUses: 0
    functionsReached:
    - TupleDescInitEntry
    - MemoryContextSwitchTo
    - CreateTemplateTupleDesc
    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:120,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:122,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:123,1
    - Dst: palloc
      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
      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: 98
    functionDepth: 5
    functionLinenumber: 98
    functionLinenumberEnd: 380
    functionName: brin_form_tuple
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_tuple.c
    functionUses: 6
    functionsReached:
    - toast_compress_datum
    - Assert
    - pfree
    - heap_compute_data_size
    - VARATT_IS_EXTENDED
    - heap_fill_tuple
    - VARATT_IS_EXTERNAL
    - TupleDescAttr
    - brtuple_disk_tupdesc
    - VARSIZE
    - palloc0
    - PointerGetDatum
    - BITMAPLEN
    - MAXALIGN
    - detoast_external_attr
    - palloc
    - DatumGetPointer
    - bv_serialize
    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:
    - BITMAPLEN
    - palloc0
    - MAXALIGN
    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
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:491,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/brin/brin_tuple.c:492,1
    - Dst: palloc
      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:
    - palloc0
    - brin_memtuple_initialize
    - AllocSetContextCreate
    - palloc
    - 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:
    - MemoryContextReset
    - PointerGetDatum
    - MAXALIGN
    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:
    - MemoryContextSwitchTo
    - BrinTupleIsPlaceholder
    - BrinTupleIsEmptyRange
    - brin_new_memtuple
    - BrinTupleHasNulls
    - brin_deconstruct_tuple
    - datumCopy
    - PointerGetDatum
    - brin_memtuple_initialize
    - BrinTupleDataOffset
    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*
    - bits8*
    - bool
    - Datum*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 644
    functionDepth: 5
    functionLinenumber: 644
    functionLinenumberEnd: 722
    functionName: brin_deconstruct_tuple
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_tuple.c
    functionUses: 1
    functionsReached:
    - brtuple_disk_tupdesc
    - att_isnull
    - att_addlength_pointer
    - att_pointer_alignby
    - TupleDescCompactAttr
    - fetchatt
    - att_nominal_alignby
    linkageType: ''
    returnType: void
    signature: "void brin_deconstruct_tuple(BrinDesc *brdesc,\n\t\t\t\t\t   char *tp,
      bits8 *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:
    - PageSetLSN
    - Assert
    - BufferIsValid
    - MarkBufferDirty
    - XLogRecGetData
    - BufferGetPage
    - XLogInitBufferForRedo
    - UnlockReleaseBuffer
    - brin_metapage_init
    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:
    - PageSetLSN
    - Assert
    - MarkBufferDirty
    - BufferIsValid
    - BufferGetBlockNumber
    - UnlockReleaseBuffer
    - ItemPointerSet
    - PageAddItem
    - XLogRecGetInfo
    - brin_page_init
    - elog
    - brinSetHeapBlockItemptr
    - XLogReadBufferForRedo
    - BufferGetPage
    - XLogInitBufferForRedo
    - XLogRecGetBlockData
    - PageGetMaxOffsetNumber
    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:
    - PageSetLSN
    - MarkBufferDirty
    - BufferIsValid
    - brin_xlog_insert_update
    - XLogRecGetData
    - PageIndexTupleDeleteNoCompact
    - XLogReadBufferForRedo
    - BufferGetPage
    - UnlockReleaseBuffer
    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:
    - PageSetLSN
    - MarkBufferDirty
    - BufferIsValid
    - PageIndexTupleOverwrite
    - XLogRecGetData
    - elog
    - XLogReadBufferForRedo
    - BufferGetPage
    - XLogRecGetBlockData
    - UnlockReleaseBuffer
    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:
    - PageSetLSN
    - Assert
    - MarkBufferDirty
    - BufferIsValid
    - PageGetContents
    - XLogRecGetBlockTag
    - XLogRecGetData
    - brin_page_init
    - XLogReadBufferForRedo
    - BufferGetPage
    - XLogInitBufferForRedo
    - UnlockReleaseBuffer
    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:
    - PageSetLSN
    - MarkBufferDirty
    - BufferIsValid
    - ItemPointerSetInvalid
    - XLogRecGetData
    - brinSetHeapBlockItemptr
    - PageIndexTupleDeleteNoCompact
    - XLogReadBufferForRedo
    - BufferGetPage
    - UnlockReleaseBuffer
    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:
    - brin_xlog_desummarize_page
    - brin_xlog_insert
    - XLogRecGetInfo
    - brin_xlog_revmap_extend
    - elog
    - brin_xlog_update
    - brin_xlog_createidx
    - brin_xlog_samepage_update
    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:
    - BrinPageFlags
    - BRIN_IS_REGULAR_PAGE
    - mask_page_lsn_and_checksum
    - BRIN_IS_META_PAGE
    - mask_unused_space
    - mask_page_hint_bits
    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: unconstify
      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: unconstify
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:253,1
    - Dst: elog
      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: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:258,1
    - Dst: br_page_get_freespace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:262,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:264,1
    - Dst: brinSetHeapBlockItemptr
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:265,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:266,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:269,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:282,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:285,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:287,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:288,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:291,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:294,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:296,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: PageSetLSN
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:300,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:300,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:303,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:305,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:306,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:307,1
    - Dst: RecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:311,1
    - Dst: FreeSpaceMapVacuumRange
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:312,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: 317
      start: 52
    functionDepth: 5
    functionLinenumber: 52
    functionLinenumberEnd: 317
    functionName: brin_doupdate
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_pageops.c
    functionUses: 2
    functionsReached:
    - MarkBufferDirty
    - PageSetLSN
    - ItemPointerSet
    - BrinPageFlags
    - LockBuffer
    - PageAddItem
    - BRIN_IS_REGULAR_PAGE
    - unconstify
    - brin_page_init
    - ItemIdIsNormal
    - XLogRegisterData
    - RelationGetRelationName
    - brin_initialize_empty_new_buffer
    - br_page_get_freespace
    - START_CRIT_SECTION
    - BufferGetBlockNumber
    - brinRevmapExtend
    - PageIndexTupleDeleteNoCompact
    - brin_tuples_equal
    - PageGetItem
    - RelationNeedsWAL
    - errmsg
    - BufferIsValid
    - PageGetItemId
    - XLogRegisterBufData
    - brin_can_do_samepage_update
    - FreeSpaceMapVacuumRange
    - elog
    - brinSetHeapBlockItemptr
    - brin_getinsertbuffer
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - brinLockRevmapPageForUpdate
    - Assert
    - XLogBeginInsert
    - XLogInsert
    - RecordPageWithFreeSpace
    - ereport
    - PageIndexTupleOverwrite
    - ItemIdGetLength
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    - errcode
    - MAXALIGN
    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:327,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:327,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - buffer
    - origsz
    - newsz
    argTypes:
    - Buffer
    - Size
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 322
    functionDepth: 4
    functionLinenumber: 322
    functionLinenumberEnd: 328
    functionName: brin_can_do_samepage_update
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_pageops.c
    functionUses: 3
    functionsReached:
    - BufferGetPage
    - PageGetExactFreeSpace
    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:354,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:354,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:359,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:360,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:361,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:362,1
    - Dst: brinRevmapExtend
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:367,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:373,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:380,1
    - Dst: br_page_get_freespace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:381,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:381,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:383,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:392,1
    - Dst: brin_getinsertbuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:395,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:396,1
    - Dst: brinLockRevmapPageForUpdate
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:402,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:404,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:405,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:408,1
    - Dst: brin_page_init
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:410,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:411,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:414,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:415,1
    - Dst: br_page_get_freespace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:419,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:421,1
    - Dst: brinSetHeapBlockItemptr
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:422,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:423,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:426,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:437,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:438,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:440,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:441,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:443,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:445,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:447,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:448,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:448,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:451,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:454,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:455,1
    - Dst: BRIN_elog
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:457,1
    - Dst: RecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:462,1
    - Dst: FreeSpaceMapVacuumRange
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:463,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: 467
      start: 341
    functionDepth: 5
    functionLinenumber: 341
    functionLinenumberEnd: 467
    functionName: brin_doinsert
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_pageops.c
    functionUses: 4
    functionsReached:
    - MarkBufferDirty
    - PageSetLSN
    - ItemPointerSet
    - LockBuffer
    - PageAddItem
    - brin_page_init
    - XLogRegisterData
    - RelationGetRelationName
    - br_page_get_freespace
    - START_CRIT_SECTION
    - BufferGetBlockNumber
    - brinRevmapExtend
    - RelationNeedsWAL
    - errmsg
    - BufferIsValid
    - XLogRegisterBufData
    - elog
    - FreeSpaceMapVacuumRange
    - brinSetHeapBlockItemptr
    - brin_getinsertbuffer
    - BufferGetPage
    - UnlockReleaseBuffer
    - BRIN_elog
    - brinLockRevmapPageForUpdate
    - Assert
    - XLogBeginInsert
    - XLogInsert
    - RecordPageWithFreeSpace
    - ereport
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    - errcode
    - MAXALIGN
    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  BrinTuple
      *tup, Size itemsz)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PageInit
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:477,1
    - Dst: BrinPageType
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:479,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - page
    - type
    argTypes:
    - Page
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 474
    functionDepth: 1
    functionLinenumber: 474
    functionLinenumberEnd: 480
    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:490,1
    - Dst: PageGetContents
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:492,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - page
    - pagesPerRange
    - version
    argTypes:
    - Page
    - BlockNumber
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 485
    functionDepth: 2
    functionLinenumber: 485
    functionLinenumberEnd: 512
    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:530,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:532,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:535,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:540,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:541,1
    - Dst: BrinPageFlags
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:549,1
    - Dst: MarkBufferDirtyHint
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:550,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - idxRel
    - buf
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 523
    functionDepth: 4
    functionLinenumber: 523
    functionLinenumberEnd: 556
    functionName: brin_start_evacuating_page
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_pageops.c
    functionUses: 1
    functionsReached:
    - MarkBufferDirtyHint
    - PageGetItemId
    - BrinPageFlags
    - ItemIdIsUsed
    - BufferGetPage
    - PageIsNew
    - 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:573,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:575,1
    - Dst: BrinPageFlags
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:575,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:577,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:584,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:586,1
    - Dst: ItemIdIsUsed
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:587,1
    - Dst: ItemIdGetLength
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:589,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:590,1
    - Dst: brin_copy_tuple
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:591,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:593,1
    - Dst: brin_doupdate
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:595,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:599,1
    - Dst: BRIN_IS_REGULAR_PAGE
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:602,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:607,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - idxRel
    - pagesPerRange
    - revmap
    - buf
    argTypes:
    - Relation
    - BlockNumber
    - BrinRevmap*
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 608
      start: 563
    functionDepth: 6
    functionLinenumber: 563
    functionLinenumberEnd: 608
    functionName: brin_evacuate_page
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_pageops.c
    functionUses: 1
    functionsReached:
    - Assert
    - PageGetItemId
    - UnlockReleaseBuffer
    - CHECK_FOR_INTERRUPTS
    - BrinPageFlags
    - LockBuffer
    - ItemIdIsUsed
    - brin_doupdate
    - brin_copy_tuple
    - BRIN_IS_REGULAR_PAGE
    - ItemIdGetLength
    - BufferGetPage
    - PageGetItem
    - PageGetMaxOffsetNumber
    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:626,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:638,1
    - Dst: LockRelationForExtension
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:640,1
    - Dst: UnlockRelationForExtension
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:641,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:643,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:644,1
    - Dst: brin_initialize_empty_new_buffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:646,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:647,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:650,1
    - Dst: BRIN_IS_META_PAGE
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:654,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:654,1
    - Dst: BRIN_IS_REVMAP_PAGE
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:655,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:655,1
    - Dst: RecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:659,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:659,1
    - Dst: br_page_get_freespace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:660,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - idxrel
    - buf
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 623
    functionDepth: 4
    functionLinenumber: 623
    functionLinenumberEnd: 661
    functionName: brin_page_cleanup
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_pageops.c
    functionUses: 1
    functionsReached:
    - LockRelationForExtension
    - BufferGetBlockNumber
    - LockBuffer
    - brin_initialize_empty_new_buffer
    - RecordPageWithFreeSpace
    - BRIN_IS_META_PAGE
    - UnlockRelationForExtension
    - BufferGetPage
    - BRIN_IS_REVMAP_PAGE
    - PageIsNew
    - br_page_get_freespace
    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:699,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:701,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:702,1
    - Dst: RelationGetTargetBlock
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:707,1
    - Dst: GetPageWithFreeSpace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:709,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:722,1
    - Dst: RELATION_IS_LOCAL
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:737,1
    - Dst: LockRelationForExtension
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:739,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:742,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:743,1
    - Dst: BRIN_elog
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:746,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:747,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:759,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:768,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:770,1
    - Dst: BRIN_IS_REGULAR_PAGE
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:771,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:771,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:773,1
    - Dst: brin_initialize_empty_new_buffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:784,1
    - Dst: UnlockRelationForExtension
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:787,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:789,1
    - Dst: FreeSpaceMapVacuumRange
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:793,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:802,1
    - Dst: UnlockRelationForExtension
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:805,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:807,1
    - Dst: br_page_get_freespace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:816,1
    - Dst: RelationSetTargetBlock
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:819,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:827,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:829,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:830,1
    - Dst: BRIN_IS_REGULAR_PAGE
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:830,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:830,1
    - Dst: brin_initialize_empty_new_buffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:846,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:849,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:850,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:851,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:852,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:857,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:858,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:859,1
    - Dst: RecordAndGetPageWithFreeSpace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:865,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 66
    argCount: 4
    argNames:
    - irel
    - oldbuf
    - itemsz
    - extended
    argTypes:
    - Relation
    - Buffer
    - Size
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 867
      start: 689
    functionDepth: 4
    functionLinenumber: 689
    functionLinenumberEnd: 867
    functionName: brin_getinsertbuffer
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_pageops.c
    functionUses: 2
    functionsReached:
    - RELATION_IS_LOCAL
    - CHECK_FOR_INTERRUPTS
    - ReleaseBuffer
    - LockBuffer
    - BRIN_IS_REGULAR_PAGE
    - RelationGetRelationName
    - brin_initialize_empty_new_buffer
    - br_page_get_freespace
    - RelationGetTargetBlock
    - BufferGetBlockNumber
    - RelationSetTargetBlock
    - ReadBuffer
    - GetPageWithFreeSpace
    - LockRelationForExtension
    - BufferIsValid
    - errmsg
    - RecordAndGetPageWithFreeSpace
    - FreeSpaceMapVacuumRange
    - UnlockRelationForExtension
    - BufferGetPage
    - UnlockReleaseBuffer
    - BRIN_elog
    - Assert
    - ereport
    - errcode
    linkageType: ''
    returnType: Buffer
    signature: "Buffer brin_getinsertbuffer(Relation irel, Buffer oldbuf, Size itemsz,\n\t\t\t\t\t
      bool *extended)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BRIN_elog
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:888,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:890,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:892,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:893,1
    - Dst: brin_page_init
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:894,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:895,1
    - Dst: log_newpage_buffer
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:896,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:897,1
    - Dst: RecordPageWithFreeSpace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:904,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:904,1
    - Dst: br_page_get_freespace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:905,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - idxrel
    - buffer
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 883
    functionDepth: 4
    functionLinenumber: 883
    functionLinenumberEnd: 906
    functionName: brin_initialize_empty_new_buffer
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_pageops.c
    functionUses: 3
    functionsReached:
    - MarkBufferDirty
    - START_CRIT_SECTION
    - BufferGetBlockNumber
    - RecordPageWithFreeSpace
    - log_newpage_buffer
    - brin_page_init
    - END_CRIT_SECTION
    - BufferGetPage
    - br_page_get_freespace
    - BRIN_elog
    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:918,1
    - Dst: BrinPageFlags
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:919,1
    - Dst: PageGetFreeSpace
      Src: /src/postgres/src/backend/access/brin/brin_pageops.c:922,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 915
    functionDepth: 1
    functionLinenumber: 915
    functionLinenumberEnd: 923
    functionName: br_page_get_freespace
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_pageops.c
    functionUses: 5
    functionsReached:
    - BRIN_IS_REGULAR_PAGE
    - BrinPageFlags
    - 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: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 135
    functionName: SAMESIGN
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SAMESIGN(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:286,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:287,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:287,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - cmp
    - colloid
    - values
    - nvalues
    argTypes:
    - FmgrInfo*
    - Oid
    - Datum*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 278
    functionDepth: 1
    functionLinenumber: 278
    functionLinenumberEnd: 289
    functionName: AssertArrayOrder
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - DatumGetBool
    - Assert
    - FunctionCall2Coll
    linkageType: ''
    returnType: void
    signature: void AssertArrayOrder(FmgrInfo *cmp, Oid colloid, Datum *values, int
      nvalues)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - 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: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:305,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:306,1
    - Dst: AssertArrayOrder
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:314,1
    - Dst: AssertArrayOrder
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:317,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:335,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:341,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:344,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:351,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:373,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:376,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:386,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:389,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:396,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:413,1
    - Dst: bsearch_arg
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:413,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 44
    argCount: 3
    argNames:
    - ranges
    - cmpFn
    - colloid
    argTypes:
    - Ranges*
    - FmgrInfo*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 295
    functionDepth: 2
    functionLinenumber: 295
    functionLinenumberEnd: 419
    functionName: AssertCheckRanges
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - FunctionCall2Coll
    - AssertArrayOrder
    - bsearch_arg
    - 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:435,1
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:438,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:452,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:454,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:456,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:456,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:469,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:471,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:471,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: 474
      start: 425
    functionDepth: 1
    functionLinenumber: 425
    functionLinenumberEnd: 474
    functionName: AssertCheckExpandedRanges
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - DatumGetBool
    - FunctionCall2Coll
    - Assert
    - minmax_multi_get_strategy_procinfo
    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:491,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - maxvalues
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 501
    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:542,1
    - Dst: compare_values
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:550,1
    - Dst: AssertCheckRanges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:564,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - range
    argTypes:
    - Ranges*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 515
    functionDepth: 3
    functionLinenumber: 515
    functionLinenumberEnd: 565
    functionName: range_deduplicate_values
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - qsort_arg
    - compare_values
    - AssertCheckRanges
    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: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:591,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:592,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:597,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:600,1
    - Dst: range_deduplicate_values
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:603,1
    - Dst: get_typbyval
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:609,1
    - Dst: get_typlen
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:610,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:627,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:637,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:637,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:642,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:650,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:651,1
    - Dst: store_att_byval
      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:680,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:685,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:685,1
    - Dst: VARSIZE_ANY
      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: memcpy
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:692,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:692,1
    - Dst: strlen
      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: memcpy
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:699,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:699,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:704,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:708,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 57
    argCount: 1
    argNames:
    - range
    argTypes:
    - Ranges*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 575
    functionDepth: 4
    functionLinenumber: 575
    functionLinenumberEnd: 711
    functionName: brin_range_serialize
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - range_deduplicate_values
    - get_typbyval
    - VARSIZE_ANY
    - DatumGetCString
    - palloc0
    - store_att_byval
    - memcpy
    - DatumGetPointer
    - SET_VARSIZE
    - strlen
    - get_typlen
    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:733,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:734,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:735,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:739,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:740,1
    - Dst: minmax_multi_init
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:742,1
    - Dst: get_typbyval
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:753,1
    - Dst: get_typlen
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:754,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:774,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:777,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:777,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:778,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:782,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:784,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:790,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:804,1
    - Dst: fetch_att
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:806,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:811,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:813,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:814,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:820,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:822,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:822,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:823,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:823,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:824,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:828,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:830,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:832,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:833,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:838,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:838,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:842,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:842,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 62
    argCount: 2
    argNames:
    - maxvalues
    - serialized
    argTypes:
    - int
    - SerializedRanges*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 846
      start: 720
    functionDepth: 2
    functionLinenumber: 720
    functionLinenumberEnd: 846
    functionName: brin_range_deserialize
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - minmax_multi_init
    - get_typbyval
    - get_typlen
    - VARSIZE_ANY
    - PointerGetDatum
    - memcpy
    - palloc
    - fetch_att
    - strlen
    - 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:867,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:869,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:872,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:874,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:878,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:880,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:883,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:885,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 889
      start: 857
    functionDepth: 1
    functionLinenumber: 857
    functionLinenumberEnd: 889
    functionName: compare_expanded_ranges
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - DatumGetBool
    - FunctionCall2Coll
    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:904,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:906,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:909,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:911,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 895
    functionDepth: 1
    functionLinenumber: 895
    functionLinenumberEnd: 915
    functionName: compare_values
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 1
    functionsReached:
    - DatumGetBool
    - FunctionCall2Coll
    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:947,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:949,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:952,1
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:960,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:962,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:964,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:992,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:995,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1005,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1008,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: 1019
      start: 920
    functionDepth: 1
    functionLinenumber: 920
    functionLinenumberEnd: 1019
    functionName: has_matching_range
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - DatumGetBool
    - FunctionCall2Coll
    - minmax_multi_get_strategy_procinfo
    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:1058,1
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1061,1
    - Dst: bsearch_arg
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1085,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1096,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1099,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1113,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1116,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: 1122
      start: 1044
    functionDepth: 2
    functionLinenumber: 1044
    functionLinenumberEnd: 1122
    functionName: range_contains_value
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - has_matching_range
    - FunctionCall2Coll
    - minmax_multi_get_strategy_procinfo
    - bsearch_arg
    - 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:1140,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1150,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1160,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1164,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - eranges
    - neranges
    - ranges
    argTypes:
    - ExpandedRange*
    - int
    - Ranges*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1167
      start: 1133
    functionDepth: 1
    functionLinenumber: 1133
    functionLinenumberEnd: 1167
    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:1186,1
    - Dst: qsort_arg
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1197,1
    - Dst: compare_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1208,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1213,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1218,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 4
    argNames:
    - cmp
    - colloid
    - eranges
    - neranges
    argTypes:
    - FmgrInfo*
    - Oid
    - ExpandedRange*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1221
      start: 1178
    functionDepth: 2
    functionLinenumber: 1178
    functionLinenumberEnd: 1221
    functionName: sort_expanded_ranges
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - qsort_arg
    - Assert
    - memcpy
    - compare_expanded_ranges
    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:1246,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1255,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1267,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1271,1
    - Dst: memmove
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1286,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - cmp
    - colloid
    - eranges
    - neranges
    argTypes:
    - FmgrInfo*
    - Oid
    - ExpandedRange*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1297
      start: 1230
    functionDepth: 1
    functionLinenumber: 1230
    functionLinenumberEnd: 1297
    functionName: merge_overlapping_ranges
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - DatumGetBool
    - memmove
    - FunctionCall2Coll
    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: 1316
      start: 1304
    functionDepth: 0
    functionLinenumber: 1304
    functionLinenumberEnd: 1316
    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:1336,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1343,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1359,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1363,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1370,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 4
    argNames:
    - distanceFn
    - colloid
    - eranges
    - neranges
    argTypes:
    - FmgrInfo*
    - Oid
    - ExpandedRange*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1373
      start: 1328
    functionDepth: 3
    functionLinenumber: 1328
    functionLinenumberEnd: 1373
    functionName: build_distances
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - qsort
    - DatumGetFloat8
    - FunctionCall2Coll
    - palloc0
    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:1395,1
    - Dst: fill_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1398,1
    - Dst: sort_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - cmp
    - colloid
    - ranges
    - nranges
    argTypes:
    - FmgrInfo*
    - Oid
    - Ranges*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1407
      start: 1385
    functionDepth: 3
    functionLinenumber: 1385
    functionLinenumberEnd: 1407
    functionName: build_expanded_ranges
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - sort_expanded_ranges
    - fill_expanded_ranges
    - palloc0
    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: 1430
      start: 1414
    functionDepth: 0
    functionLinenumber: 1414
    functionLinenumberEnd: 1430
    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
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1507,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1519,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1525,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1529,1
    - Dst: qsort_arg
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1535,1
    - Dst: compare_values
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1545,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: 1551
      start: 1475
    functionDepth: 2
    functionLinenumber: 1475
    functionLinenumberEnd: 1551
    functionName: reduce_expanded_ranges
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - qsort_arg
    - palloc
    - compare_values
    - Assert
    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:1589,1
    - Dst: count_values
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1589,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1590,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - ranges
    - eranges
    - neranges
    argTypes:
    - Ranges*
    - ExpandedRange*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1591
      start: 1557
    functionDepth: 1
    functionLinenumber: 1557
    functionLinenumberEnd: 1591
    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:1624,1
    - Dst: range_deduplicate_values
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1628,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1652,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1656,1
    - Dst: build_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1659,1
    - Dst: AssertCheckExpandedRanges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1662,1
    - Dst: minmax_multi_get_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1665,1
    - Dst: build_distances
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1668,1
    - Dst: reduce_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1675,1
    - Dst: AssertCheckExpandedRanges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1680,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1683,1
    - Dst: count_values
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1683,1
    - Dst: store_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1686,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1688,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1689,1
    - Dst: AssertCheckRanges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1692,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: 1695
      start: 1600
    functionDepth: 4
    functionLinenumber: 1600
    functionLinenumberEnd: 1695
    functionName: ensure_free_space_in_buffer
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - AssertCheckExpandedRanges
    - build_expanded_ranges
    - range_deduplicate_values
    - MemoryContextSwitchTo
    - Assert
    - MemoryContextDelete
    - minmax_multi_get_strategy_procinfo
    - build_distances
    - store_expanded_ranges
    - AssertCheckRanges
    - count_values
    - AllocSetContextCreate
    - reduce_expanded_ranges
    - minmax_multi_get_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:1710,1
    - Dst: AssertCheckRanges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1714,1
    - Dst: ensure_free_space_in_buffer
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1731,1
    - Dst: range_contains_value
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1748,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1752,1
    - Dst: AssertCheckRanges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1773,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1776,1
    - Dst: range_contains_value
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1776,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: 1780
      start: 1701
    functionDepth: 5
    functionLinenumber: 1701
    functionLinenumberEnd: 1780
    functionName: range_add_value
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - minmax_multi_get_strategy_procinfo
    - datumCopy
    - AssertCheckRanges
    - ensure_free_space_in_buffer
    - range_contains_value
    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:1812,1
    - Dst: minmax_multi_get_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1816,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1825,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1829,1
    - Dst: build_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1832,1
    - Dst: build_distances
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1835,1
    - Dst: reduce_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1843,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1846,1
    - Dst: count_values
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1846,1
    - Dst: store_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1849,1
    - Dst: AssertCheckRanges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1852,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1854,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1855,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - bdesc
    - ranges
    - max_values
    argTypes:
    - BrinDesc*
    - Ranges*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1856
      start: 1787
    functionDepth: 4
    functionLinenumber: 1787
    functionLinenumberEnd: 1856
    functionName: compactify_ranges
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - build_expanded_ranges
    - Assert
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - minmax_multi_get_strategy_procinfo
    - build_distances
    - store_expanded_ranges
    - AssertCheckRanges
    - count_values
    - AllocSetContextCreate
    - reduce_expanded_ranges
    - minmax_multi_get_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:1868,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1868,1
    - Dst: SizeofBrinOpcInfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1868,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1873,1
    - Dst: SizeofBrinOpcInfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1873,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1874,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1876,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1877
      start: 1858
    functionDepth: 1
    functionLinenumber: 1858
    functionLinenumberEnd: 1877
    functionName: brin_minmax_multi_opcinfo
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - palloc0
    - lookup_type_cache
    - SizeofBrinOpcInfo
    - PG_RETURN_POINTER
    - MAXALIGN
    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:1885,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1886,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1889,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1889,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1890,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1893,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1893,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1894,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1894,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1900,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1902,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1903
      start: 1882
    functionDepth: 1
    functionLinenumber: 1882
    functionLinenumberEnd: 1903
    functionName: brin_minmax_multi_distance_float4
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - isnan
    - Assert
    - PG_GETARG_FLOAT4
    - PG_RETURN_FLOAT8
    - 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:1911,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1912,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1915,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1915,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1916,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1919,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1919,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1920,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1920,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1926,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1928,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1929
      start: 1908
    functionDepth: 1
    functionLinenumber: 1908
    functionLinenumberEnd: 1929
    functionName: brin_minmax_multi_distance_float8
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - isnan
    - Assert
    - PG_GETARG_FLOAT8
    - PG_RETURN_FLOAT8
    - 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:1937,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1938,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1944,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1946,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1947
      start: 1934
    functionDepth: 1
    functionLinenumber: 1934
    functionLinenumberEnd: 1947
    functionName: brin_minmax_multi_distance_int2
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - PG_GETARG_INT16
    - PG_RETURN_FLOAT8
    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:1955,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1956,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1962,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1964,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1965
      start: 1952
    functionDepth: 1
    functionLinenumber: 1952
    functionLinenumberEnd: 1965
    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:1973,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1974,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1980,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1982,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1983
      start: 1970
    functionDepth: 1
    functionLinenumber: 1970
    functionLinenumberEnd: 1983
    functionName: brin_minmax_multi_distance_int8
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_FLOAT8
    - Assert
    linkageType: ''
    returnType: Datum
    signature: Datum brin_minmax_multi_distance_int8(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1995,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:1996,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2002,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2002,1
    - Dst: ItemPointerGetBlockNumberNoCheck
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2008,1
    - Dst: ItemPointerGetOffsetNumberNoCheck
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2009,1
    - Dst: ItemPointerGetBlockNumberNoCheck
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2011,1
    - Dst: ItemPointerGetOffsetNumberNoCheck
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2012,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2014,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2015
      start: 1989
    functionDepth: 2
    functionLinenumber: 1989
    functionLinenumberEnd: 2015
    functionName: brin_minmax_multi_distance_tid
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - ItemPointerGetOffsetNumberNoCheck
    - ItemPointerGetBlockNumberNoCheck
    - PG_GETARG_DATUM
    - PG_RETURN_FLOAT8
    - ItemPointerCompare
    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:2024,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2025,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2031,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2031,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2031,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2033,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2035,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2035,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2036
      start: 2020
    functionDepth: 1
    functionLinenumber: 2020
    functionLinenumberEnd: 2036
    functionName: brin_minmax_multi_distance_numeric
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - DirectFunctionCall1
    - DirectFunctionCall2
    - PG_GETARG_DATUM
    - DatumGetBool
    - PG_RETURN_FLOAT8
    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:2052,1
    - Dst: PG_GETARG_DATUM
      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:2055,1
    - Dst: DatumGetUUIDP
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2056,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2062,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2062,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2062,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2071,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2073,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2074
      start: 2046
    functionDepth: 2
    functionLinenumber: 2046
    functionLinenumberEnd: 2074
    functionName: brin_minmax_multi_distance_uuid
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - DatumGetUUIDP
    - DirectFunctionCall2
    - PG_GETARG_DATUM
    - DatumGetBool
    - PG_RETURN_FLOAT8
    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:2083,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2084,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2088,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2090,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2091
      start: 2079
    functionDepth: 1
    functionLinenumber: 2079
    functionLinenumberEnd: 2091
    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:2103,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2104,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2108,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2111
      start: 2098
    functionDepth: 1
    functionLinenumber: 2098
    functionLinenumberEnd: 2111
    functionName: brin_minmax_multi_distance_time
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMEADT
    - Assert
    - PG_RETURN_FLOAT8
    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:2123,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2124,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2128,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2131
      start: 2118
    functionDepth: 1
    functionLinenumber: 2118
    functionLinenumberEnd: 2131
    functionName: brin_minmax_multi_distance_timetz
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - Assert
    - PG_RETURN_FLOAT8
    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:2141,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2142,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2146,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2149
      start: 2136
    functionDepth: 1
    functionLinenumber: 2136
    functionLinenumberEnd: 2149
    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:2159,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2160,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2174,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2179,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2182
      start: 2154
    functionDepth: 1
    functionLinenumber: 2154
    functionLinenumberEnd: 2182
    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:2195,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2196,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2200,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2203
      start: 2190
    functionDepth: 1
    functionLinenumber: 2190
    functionLinenumberEnd: 2203
    functionName: brin_minmax_multi_distance_pg_lsn
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - PG_RETURN_FLOAT8
    - PG_GETARG_LSN
    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:2216,1
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2217,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2237,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2240
      start: 2211
    functionDepth: 1
    functionLinenumber: 2211
    functionLinenumberEnd: 2240
    functionName: brin_minmax_multi_distance_macaddr
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - PG_RETURN_FLOAT8
    - PG_GETARG_MACADDR_P
    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:2253,1
    - Dst: PG_GETARG_MACADDR8_P
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2254,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2280,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2283
      start: 2248
    functionDepth: 1
    functionLinenumber: 2248
    functionLinenumberEnd: 2283
    functionName: brin_minmax_multi_distance_macaddr8
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - PG_RETURN_FLOAT8
    - PG_GETARG_MACADDR8_P
    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:2305,1
    - Dst: PG_GETARG_INET_PP
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2306,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2315,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2315,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2316,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2318,1
    - Dst: ip_addrsize
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2318,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2319,1
    - Dst: ip_addr
      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: palloc
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2321,1
    - Dst: ip_addrsize
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2321,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2322,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2322,1
    - Dst: ip_addrsize
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2322,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2334,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2335,1
    - Dst: ip_addrsize
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2337,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2345,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2352,1
    - Dst: Assert
      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:2373,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2374,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2376,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2377
      start: 2296
    functionDepth: 1
    functionLinenumber: 2296
    functionLinenumberEnd: 2377
    functionName: brin_minmax_multi_distance_inet
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - ip_addrsize
    - ip_bits
    - Max
    - ip_family
    - memcpy
    - palloc
    - PG_RETURN_FLOAT8
    - ip_addr
    - PG_GETARG_INET_PP
    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:2382,1
    - Dst: compactify_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2389,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2392,1
    - Dst: brin_range_serialize
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2394,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - bdesc
    - src
    - dst
    argTypes:
    - BrinDesc*
    - Datum
    - Datum*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2396
      start: 2379
    functionDepth: 5
    functionLinenumber: 2379
    functionLinenumberEnd: 2396
    functionName: brin_minmax_multi_serialize
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - Assert
    - PointerGetDatum
    - compactify_ranges
    - DatumGetPointer
    - brin_range_serialize
    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:2401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bdesc
    - opts
    argTypes:
    - BrinDesc*
    - MinMaxMultiOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2402
      start: 2398
    functionDepth: 1
    functionLinenumber: 2398
    functionLinenumberEnd: 2402
    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:2414,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2415,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2416,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2417,1
    - Dst: PG_GET_OPCLASS_OPTIONS
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2418,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2419,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2426,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2429,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2432,1
    - Dst: BrinGetPagesPerRange
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2450,1
    - Dst: brin_minmax_multi_get_values
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2453,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2461,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2465,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2468,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2469,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2471,1
    - Dst: minmax_multi_init
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2472,1
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2479,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2482,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2487,1
    - Dst: BrinGetPagesPerRange
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2495,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2497,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2499,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2507,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2511,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2514,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2515,1
    - Dst: brin_range_deserialize
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2517,1
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2524,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2527,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2530,1
    - Dst: range_add_value
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2537,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2540,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2541
      start: 2411
    functionDepth: 6
    functionLinenumber: 2411
    functionLinenumberEnd: 2541
    functionName: brin_minmax_multi_add_value
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - range_add_value
    - MemoryContextSwitchTo
    - PG_GETARG_DATUM
    - BrinGetPagesPerRange
    - Min
    - brin_minmax_multi_get_values
    - Max
    - DatumGetPointer
    - PG_GETARG_POINTER
    - TupleDescAttr
    - PG_DETOAST_DATUM
    - brin_range_deserialize
    - Assert
    - minmax_multi_init
    - minmax_multi_get_strategy_procinfo
    - PG_RETURN_BOOL
    - PointerGetDatum
    - PG_GET_COLLATION
    - PG_GET_OPCLASS_OPTIONS
    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:2551,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2552,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2553,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2554,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2556,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2569,1
    - Dst: brin_range_deserialize
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2570,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2587,1
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2596,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2599,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2599,1
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2616,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2618,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2621,1
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2624,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2626,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2629,1
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2642,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2645,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2645,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2650,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2667,1
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2702,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2704,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2704,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2709,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2724,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2727,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 75
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2728
      start: 2548
    functionDepth: 3
    functionLinenumber: 2548
    functionLinenumberEnd: 2728
    functionName: brin_minmax_multi_consistent
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - brin_range_deserialize
    - Assert
    - minmax_multi_get_strategy_procinfo
    - PG_GETARG_POINTER
    - FunctionCall2Coll
    - PG_RETURN_BOOL
    - elog
    - PG_GETARG_INT32
    - PG_GET_COLLATION
    - PG_DETOAST_DATUM
    - 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:2737,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2738,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2739,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2741,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2756,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2757,1
    - Dst: TupleDescAttr
      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:2762,1
    - Dst: PG_DETOAST_DATUM
      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:2765,1
    - Dst: brin_range_deserialize
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2766,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2769,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2781,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2785,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2788,1
    - Dst: fill_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2791,1
    - Dst: fill_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2795,1
    - Dst: minmax_multi_get_strategy_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2799,1
    - Dst: sort_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2803,1
    - Dst: merge_overlapping_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2809,1
    - Dst: AssertCheckExpandedRanges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2812,1
    - Dst: minmax_multi_get_procinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2822,1
    - Dst: build_distances
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2823,1
    - Dst: reduce_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2836,1
    - Dst: AssertCheckExpandedRanges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2841,1
    - Dst: store_expanded_ranges
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2844,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2846,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2847,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2850,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2851,1
    - Dst: brin_range_serialize
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2851,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2853,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2854
      start: 2734
    functionDepth: 5
    functionLinenumber: 2734
    functionLinenumberEnd: 2854
    functionName: brin_minmax_multi_union
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - AssertCheckExpandedRanges
    - MemoryContextSwitchTo
    - merge_overlapping_ranges
    - brin_range_serialize
    - pfree
    - MemoryContextDelete
    - build_distances
    - minmax_multi_get_procinfo
    - sort_expanded_ranges
    - PG_GETARG_POINTER
    - store_expanded_ranges
    - PG_RETURN_VOID
    - TupleDescAttr
    - PG_DETOAST_DATUM
    - brin_range_deserialize
    - Assert
    - fill_expanded_ranges
    - minmax_multi_get_strategy_procinfo
    - palloc0
    - PointerGetDatum
    - AllocSetContextCreate
    - reduce_expanded_ranges
    - PG_GET_COLLATION
    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:2876,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2876,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2878,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2879,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2882,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2883,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2884,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2885,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - bdesc
    - attno
    - procnum
    argTypes:
    - BrinDesc*
    - uint16
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2890
      start: 2862
    functionDepth: 2
    functionLinenumber: 2862
    functionLinenumberEnd: 2890
    functionName: minmax_multi_get_procinfo
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 3
    functionsReached:
    - errdetail_internal
    - index_getprocid
    - RegProcedureIsValid
    - ereport
    - errmsg_internal
    - index_getprocinfo
    - fmgr_info_copy
    - errcode
    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:2904,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2931,1
    - Dst: SearchSysCache4
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2932,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2932,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2933,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2934,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2935,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2936,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2937,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2940,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2940,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2942,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2943,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2943,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2945,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2945,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - bdesc
    - attno
    - subtype
    - strategynum
    argTypes:
    - BrinDesc*
    - uint16
    - Oid
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2951
      start: 2898
    functionDepth: 2
    functionLinenumber: 2898
    functionLinenumberEnd: 2951
    functionName: minmax_multi_get_strategy_procinfo
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 9
    functionsReached:
    - Assert
    - SearchSysCache4
    - ReleaseSysCache
    - HeapTupleIsValid
    - TupleDescAttr
    - SysCacheGetAttrNotNull
    - RegProcedureIsValid
    - get_opcode
    - elog
    - DatumGetObjectId
    - fmgr_info_cxt
    - Int16GetDatum
    - ObjectIdGetDatum
    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:2956,1
    - Dst: init_local_reloptions
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2958,1
    - Dst: add_local_int_reloption
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2960,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2964,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2965
      start: 2953
    functionDepth: 4
    functionLinenumber: 2953
    functionLinenumberEnd: 2965
    functionName: brin_minmax_multi_options
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - add_local_int_reloption
    - init_local_reloptions
    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:2982,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2983,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2984,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:2986,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2987
      start: 2975
    functionDepth: 1
    functionLinenumber: 2975
    functionLinenumberEnd: 2987
    functionName: brin_minmax_multi_summary_in
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_VOID
    - errcode
    - ereport
    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:3010,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3011,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3017,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3017,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3020,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3021,1
    - Dst: brin_range_deserialize
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3024,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3026,1
    - Dst: initStringInfo
      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:3042,1
    - Dst: OutputFunctionCall
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3043,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3045,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3047,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3049,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3050,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3063,1
    - Dst: makeArrayResult
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3065,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3067,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3069,1
    - Dst: FunctionCall1
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3080,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3081,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3081,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3083,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3084,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3097,1
    - Dst: makeArrayResult
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3099,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3101,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3103,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3107,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3109,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3110
      start: 2997
    functionDepth: 3
    functionLinenumber: 2997
    functionLinenumberEnd: 3110
    functionName: brin_minmax_multi_summary_out
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - brin_range_deserialize
    - getTypeOutputInfo
    - appendStringInfoChar
    - appendStringInfo
    - DatumGetCString
    - FunctionCall1
    - fmgr_info
    - OutputFunctionCall
    - makeArrayResult
    - accumArrayResult
    - PointerGetDatum
    - OidOutputFunctionCall
    - PG_RETURN_CSTRING
    - PG_GETARG_DATUM
    - initStringInfo
    - PG_DETOAST_DATUM
    - cstring_to_text
    - cstring_to_text_with_len
    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:3119,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3120,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3121,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/brin/brin_minmax_multi.c:3123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3124
      start: 3116
    functionDepth: 1
    functionLinenumber: 3116
    functionLinenumberEnd: 3124
    functionName: brin_minmax_multi_summary_recv
    functionSourceFile: /src/postgres/src/backend/access/brin/brin_minmax_multi.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_VOID
    - errcode
    - ereport
    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:3136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3137
      start: 3133
    functionDepth: 1
    functionLinenumber: 3133
    functionLinenumberEnd: 3137
    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:61,1
    - Dst: RestoreArchivedFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:62,1
    - Dst: KeepFileRestoredFromArchive
      Src: /src/postgres/src/backend/access/transam/timeline.c:63,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - begin
    - end
    argTypes:
    - TimeLineID
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 65
    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
      Src: /src/postgres/src/backend/access/transam/timeline.c:90,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/access/transam/timeline.c:93,1
    - Dst: TLHistoryFileName
      Src: /src/postgres/src/backend/access/transam/timeline.c:98,1
    - Dst: RestoreArchivedFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:100,1
    - Dst: TLHistoryFilePath
      Src: /src/postgres/src/backend/access/transam/timeline.c:103,1
    - Dst: AllocateFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:105,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:109,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:110,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:111,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/timeline.c:113,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/access/transam/timeline.c:116,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/timeline.c:135,1
    - Dst: fgets
      Src: /src/postgres/src/backend/access/transam/timeline.c:136,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/timeline.c:137,1
    - Dst: ferror
      Src: /src/postgres/src/backend/access/transam/timeline.c:140,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:141,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:142,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:143,1
    - Dst: isspace
      Src: /src/postgres/src/backend/access/transam/timeline.c:151,1
    - Dst: sscanf
      Src: /src/postgres/src/backend/access/transam/timeline.c:157,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:162,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:163,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/timeline.c:164,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:167,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:168,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/timeline.c:169,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:172,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:173,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/timeline.c:174,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/timeline.c:178,1
    - Dst: lcons
      Src: /src/postgres/src/backend/access/transam/timeline.c:185,1
    - Dst: FreeFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:190,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:193,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:194,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/timeline.c:195,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/timeline.c:201,1
    - Dst: lcons
      Src: /src/postgres/src/backend/access/transam/timeline.c:206,1
    - Dst: KeepFileRestoredFromArchive
      Src: /src/postgres/src/backend/access/transam/timeline.c:213,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 65
    argCount: 1
    argNames:
    - targetTLI
    argTypes:
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 216
    functionName: readTimeLineHistory
    functionSourceFile: /src/postgres/src/backend/access/transam/timeline.c
    functionUses: 0
    functionsReached:
    - lcons
    - errhint
    - pgstat_report_wait_end
    - pgstat_report_wait_start
    - AllocateFile
    - errcode_for_file_access
    - KeepFileRestoredFromArchive
    - errmsg
    - FreeFile
    - ferror
    - TLHistoryFilePath
    - RestoreArchivedFile
    - isspace
    - palloc
    - fgets
    - sscanf
    - list_make1
    - ereport
    - TLHistoryFileName
    linkageType: ''
    returnType: List
    signature: 'List *

      readTimeLineHistory(TimeLineID targetTLI)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TLHistoryFileName
      Src: /src/postgres/src/backend/access/transam/timeline.c:234,1
    - Dst: RestoreArchivedFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:235,1
    - Dst: TLHistoryFilePath
      Src: /src/postgres/src/backend/access/transam/timeline.c:238,1
    - Dst: AllocateFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:240,1
    - Dst: FreeFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:243,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:249,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:250,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:251,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - probeTLI
    argTypes:
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 254
    functionName: existsTimeLineHistory
    functionSourceFile: /src/postgres/src/backend/access/transam/timeline.c
    functionUses: 0
    functionsReached:
    - errmsg
    - FreeFile
    - ereport
    - TLHistoryFileName
    - TLHistoryFilePath
    - RestoreArchivedFile
    - AllocateFile
    - 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:277,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - startTLI
    argTypes:
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 263
    functionDepth: 2
    functionLinenumber: 263
    functionLinenumberEnd: 289
    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:315,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/timeline.c:320,1
    - Dst: getpid
      Src: /src/postgres/src/backend/access/transam/timeline.c:320,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/timeline.c:322,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:325,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:327,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:328,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:329,1
    - Dst: TLHistoryFileName
      Src: /src/postgres/src/backend/access/transam/timeline.c:336,1
    - Dst: RestoreArchivedFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:337,1
    - Dst: TLHistoryFilePath
      Src: /src/postgres/src/backend/access/transam/timeline.c:340,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:342,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:346,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:347,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:348,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/timeline.c:356,1
    - Dst: read
      Src: /src/postgres/src/backend/access/transam/timeline.c:357,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/timeline.c:358,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:360,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:361,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:362,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/timeline.c:366,1
    - Dst: write
      Src: /src/postgres/src/backend/access/transam/timeline.c:367,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/timeline.c:375,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:382,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:383,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:384,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/timeline.c:386,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:389,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:390,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:391,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:392,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/timeline.c:401,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/timeline.c:405,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/timeline.c:408,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/timeline.c:410,1
    - Dst: write
      Src: /src/postgres/src/backend/access/transam/timeline.c:411,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/timeline.c:418,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:422,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:423,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:424,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/timeline.c:426,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/timeline.c:428,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/transam/timeline.c:429,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:430,1
    - Dst: data_sync_elevel
      Src: /src/postgres/src/backend/access/transam/timeline.c:430,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:431,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:432,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/timeline.c:433,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:435,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:436,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:437,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:438,1
    - Dst: TLHistoryFilePath
      Src: /src/postgres/src/backend/access/transam/timeline.c:443,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/timeline.c:444,1
    - Dst: access
      Src: /src/postgres/src/backend/access/transam/timeline.c:444,1
    - Dst: durable_rename
      Src: /src/postgres/src/backend/access/transam/timeline.c:445,1
    - Dst: XLogArchivingActive
      Src: /src/postgres/src/backend/access/transam/timeline.c:448,1
    - Dst: TLHistoryFileName
      Src: /src/postgres/src/backend/access/transam/timeline.c:450,1
    - Dst: XLogArchiveNotify
      Src: /src/postgres/src/backend/access/transam/timeline.c:451,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 61
    argCount: 4
    argNames:
    - newTLI
    - parentTLI
    - switchpoint
    - reason
    argTypes:
    - TimeLineID
    - TimeLineID
    - XLogRecPtr
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 303
    functionDepth: 1
    functionLinenumber: 303
    functionLinenumberEnd: 453
    functionName: writeTimeLineHistory
    functionSourceFile: /src/postgres/src/backend/access/transam/timeline.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - XLogArchivingActive
    - snprintf
    - pgstat_report_wait_end
    - data_sync_elevel
    - pgstat_report_wait_start
    - durable_rename
    - strlen
    - errcode_for_file_access
    - read
    - pg_fsync
    - errmsg
    - write
    - CloseTransientFile
    - XLogArchiveNotify
    - getpid
    - access
    - TLHistoryFilePath
    - RestoreArchivedFile
    - Assert
    - ereport
    - OpenTransientFile
    - TLHistoryFileName
    - unlink
    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:472,1
    - Dst: getpid
      Src: /src/postgres/src/backend/access/transam/timeline.c:472,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/timeline.c:474,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:477,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:479,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:480,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:481,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/timeline.c:484,1
    - Dst: write
      Src: /src/postgres/src/backend/access/transam/timeline.c:485,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/timeline.c:492,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:496,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:497,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:498,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/timeline.c:500,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/timeline.c:502,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/transam/timeline.c:503,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:504,1
    - Dst: data_sync_elevel
      Src: /src/postgres/src/backend/access/transam/timeline.c:504,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:505,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:506,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/timeline.c:507,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/timeline.c:509,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:510,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/timeline.c:511,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:512,1
    - Dst: TLHistoryFilePath
      Src: /src/postgres/src/backend/access/transam/timeline.c:518,1
    - Dst: durable_rename
      Src: /src/postgres/src/backend/access/transam/timeline.c:519,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - tli
    - content
    - size
    argTypes:
    - TimeLineID
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 462
    functionDepth: 1
    functionLinenumber: 462
    functionLinenumberEnd: 520
    functionName: writeTimeLineHistoryFile
    functionSourceFile: /src/postgres/src/backend/access/transam/timeline.c
    functionUses: 1
    functionsReached:
    - errmsg
    - write
    - durable_rename
    - CloseTransientFile
    - snprintf
    - ereport
    - OpenTransientFile
    - getpid
    - pgstat_report_wait_end
    - data_sync_elevel
    - TLHistoryFilePath
    - unlink
    - pgstat_report_wait_start
    - pg_fsync
    - errcode_for_file_access
    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:532,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - tli
    - expectedTLEs
    argTypes:
    - TimeLineID
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 525
    functionDepth: 1
    functionLinenumber: 525
    functionLinenumberEnd: 537
    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:532,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 530
    functionDepth: 1
    functionLinenumber: 530
    functionLinenumberEnd: 534
    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:550,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/timeline.c:552,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/timeline.c:553,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/timeline.c:561,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - ptr
    - history
    argTypes:
    - XLogRecPtr
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 543
    functionDepth: 1
    functionLinenumber: 543
    functionLinenumberEnd: 563
    functionName: tliOfPointInHistory
    functionSourceFile: /src/postgres/src/backend/access/transam/timeline.c
    functionUses: 0
    functionsReached:
    - elog
    - XLogRecPtrIsInvalid
    - 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:550,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/timeline.c:552,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/timeline.c:553,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 548
    functionDepth: 1
    functionLinenumber: 548
    functionLinenumberEnd: 558
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/transam/timeline.c
    functionUses: 25
    functionsReached:
    - XLogRecPtrIsInvalid
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(cell, history)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/transam/timeline.c:580,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/timeline.c:588,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/timeline.c:589,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - tli
    - history
    - nextTLI
    argTypes:
    - TimeLineID
    - List*
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 571
    functionDepth: 1
    functionLinenumber: 571
    functionLinenumberEnd: 592
    functionName: tliSwitchPoint
    functionSourceFile: /src/postgres/src/backend/access/transam/timeline.c
    functionUses: 0
    functionsReached:
    - errmsg
    - lfirst
    - ereport
    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:580,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 578
    functionDepth: 1
    functionLinenumber: 578
    functionLinenumberEnd: 586
    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:180,1
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/access/transam/parallel.c:180,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/parallel.c:183,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/parallel.c:186,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/transam/parallel.c:189,1
    - Dst: GetCurrentSubTransactionId
      Src: /src/postgres/src/backend/access/transam/parallel.c:190,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/transam/parallel.c:193,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/transam/parallel.c:194,1
    - Dst: shm_toc_initialize_estimator
      Src: /src/postgres/src/backend/access/transam/parallel.c:196,1
    - Dst: dlist_push_head
      Src: /src/postgres/src/backend/access/transam/parallel.c:197,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/parallel.c:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 3
    argNames:
    - library_name
    - function_name
    - nworkers
    argTypes:
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 172
    functionDepth: 2
    functionLinenumber: 172
    functionLinenumberEnd: 203
    functionName: CreateParallelContext
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 3
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - shm_toc_initialize_estimator
    - IsInParallelMode
    - dlist_push_head
    - GetCurrentSubTransactionId
    - palloc0
    - pstrdup
    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:229,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/access/transam/parallel.c:230,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/parallel.c:233,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/transam/parallel.c:236,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/transam/parallel.c:237,1
    - Dst: INTERRUPTS_CAN_BE_PROCESSED
      Src: /src/postgres/src/backend/access/transam/parallel.c:245,1
    - Dst: GetSessionDsmHandle
      Src: /src/postgres/src/backend/access/transam/parallel.c:255,1
    - Dst: EstimateLibraryStateSpace
      Src: /src/postgres/src/backend/access/transam/parallel.c:270,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/transam/parallel.c:271,1
    - Dst: EstimateGUCStateSpace
      Src: /src/postgres/src/backend/access/transam/parallel.c:272,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/transam/parallel.c:273,1
    - Dst: EstimateComboCIDStateSpace
      Src: /src/postgres/src/backend/access/transam/parallel.c:274,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/transam/parallel.c:275,1
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/access/transam/parallel.c:276,1
    - Dst: EstimateSnapshotSpace
      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: EstimateSnapshotSpace
      Src: /src/postgres/src/backend/access/transam/parallel.c:281,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/transam/parallel.c:282,1
    - Dst: EstimateTransactionStateSpace
      Src: /src/postgres/src/backend/access/transam/parallel.c:283,1
    - Dst: shm_toc_estimate_chunk
      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: EstimatePendingSyncsSpace
      Src: /src/postgres/src/backend/access/transam/parallel.c:286,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/transam/parallel.c:287,1
    - Dst: EstimateReindexStateSpace
      Src: /src/postgres/src/backend/access/transam/parallel.c:288,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/transam/parallel.c:289,1
    - Dst: EstimateRelationMapSpace
      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: EstimateUncommittedEnumsSpace
      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: EstimateClientConnectionInfoSpace
      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: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/transam/parallel.c:297,1
    - Dst: StaticAssertStmt
      Src: /src/postgres/src/backend/access/transam/parallel.c:300,1
    - Dst: BUFFERALIGN
      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:303,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/transam/parallel.c:304,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/transam/parallel.c:306,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/access/transam/parallel.c:309,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/parallel.c:309,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/parallel.c:310,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/access/transam/parallel.c:311,1
    - Dst: shm_toc_estimate
      Src: /src/postgres/src/backend/access/transam/parallel.c:325,1
    - Dst: dsm_create
      Src: /src/postgres/src/backend/access/transam/parallel.c:327,1
    - Dst: shm_toc_create
      Src: /src/postgres/src/backend/access/transam/parallel.c:329,1
    - Dst: dsm_segment_address
      Src: /src/postgres/src/backend/access/transam/parallel.c:330,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/access/transam/parallel.c:335,1
    - Dst: shm_toc_create
      Src: /src/postgres/src/backend/access/transam/parallel.c:336,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:342,1
    - Dst: GetAuthenticatedUserId
      Src: /src/postgres/src/backend/access/transam/parallel.c:344,1
    - Dst: GetSessionUserId
      Src: /src/postgres/src/backend/access/transam/parallel.c:345,1
    - Dst: GetCurrentRoleId
      Src: /src/postgres/src/backend/access/transam/parallel.c:346,1
    - Dst: GetUserIdAndSecContext
      Src: /src/postgres/src/backend/access/transam/parallel.c:347,1
    - Dst: GetSessionUserIsSuperuser
      Src: /src/postgres/src/backend/access/transam/parallel.c:348,1
    - Dst: GetTempNamespaceState
      Src: /src/postgres/src/backend/access/transam/parallel.c:350,1
    - Dst: GetCurrentTransactionStartTimestamp
      Src: /src/postgres/src/backend/access/transam/parallel.c:355,1
    - Dst: GetCurrentStatementStartTimestamp
      Src: /src/postgres/src/backend/access/transam/parallel.c:356,1
    - Dst: ShareSerializableXact
      Src: /src/postgres/src/backend/access/transam/parallel.c:357,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/access/transam/parallel.c:358,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:360,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:382,1
    - Dst: SerializeLibraryState
      Src: /src/postgres/src/backend/access/transam/parallel.c:383,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:384,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:387,1
    - Dst: SerializeGUCState
      Src: /src/postgres/src/backend/access/transam/parallel.c:388,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:389,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:392,1
    - Dst: SerializeComboCIDState
      Src: /src/postgres/src/backend/access/transam/parallel.c:393,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:394,1
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/access/transam/parallel.c:400,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:402,1
    - Dst: SerializeSnapshot
      Src: /src/postgres/src/backend/access/transam/parallel.c:403,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:404,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:409,1
    - Dst: SerializeSnapshot
      Src: /src/postgres/src/backend/access/transam/parallel.c:410,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:411,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:414,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:417,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:421,1
    - Dst: SerializeTransactionState
      Src: /src/postgres/src/backend/access/transam/parallel.c:422,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:423,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:426,1
    - Dst: SerializePendingSyncs
      Src: /src/postgres/src/backend/access/transam/parallel.c:427,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:428,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:432,1
    - Dst: SerializeReindexState
      Src: /src/postgres/src/backend/access/transam/parallel.c:433,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:434,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:437,1
    - Dst: SerializeRelationMap
      Src: /src/postgres/src/backend/access/transam/parallel.c:438,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:439,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:443,1
    - Dst: SerializeUncommittedEnums
      Src: /src/postgres/src/backend/access/transam/parallel.c:445,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:446,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:450,1
    - Dst: SerializeClientConnectionInfo
      Src: /src/postgres/src/backend/access/transam/parallel.c:451,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:452,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/transam/parallel.c:456,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:466,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/transam/parallel.c:467,1
    - Dst: shm_mq_create
      Src: /src/postgres/src/backend/access/transam/parallel.c:475,1
    - Dst: shm_mq_set_receiver
      Src: /src/postgres/src/backend/access/transam/parallel.c:476,1
    - Dst: shm_mq_attach
      Src: /src/postgres/src/backend/access/transam/parallel.c:477,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:479,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/parallel.c:488,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/access/transam/parallel.c:489,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/parallel.c:490,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/access/transam/parallel.c:491,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/access/transam/parallel.c:492,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/access/transam/parallel.c:493,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/parallel.c:500,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 127
    argCount: 1
    argNames:
    - pcxt
    argTypes:
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 210
    functionDepth: 2
    functionLinenumber: 210
    functionLinenumberEnd: 501
    functionName: InitializeParallelDSM
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 3
    functionsReached:
    - ShareSerializableXact
    - SerializePendingSyncs
    - MemoryContextSwitchTo
    - EstimateLibraryStateSpace
    - SerializeUncommittedEnums
    - SerializeGUCState
    - shm_mq_attach
    - EstimateRelationMapSpace
    - INTERRUPTS_CAN_BE_PROCESSED
    - IsolationUsesXactSnapshot
    - GetCurrentTransactionStartTimestamp
    - SerializeRelationMap
    - shm_toc_allocate
    - EstimateClientConnectionInfoSpace
    - MemoryContextAlloc
    - strlen
    - EstimateUncommittedEnumsSpace
    - GetUserIdAndSecContext
    - BUFFERALIGN
    - EstimateGUCStateSpace
    - EstimateComboCIDStateSpace
    - shm_mq_create
    - GetSessionDsmHandle
    - GetTransactionSnapshot
    - GetCurrentRoleId
    - SerializeReindexState
    - shm_toc_estimate_keys
    - dsm_segment_address
    - mul_size
    - GetCurrentStatementStartTimestamp
    - strcpy
    - shm_toc_create
    - SerializeComboCIDState
    - SpinLockInit
    - SerializeClientConnectionInfo
    - GetAuthenticatedUserId
    - EstimatePendingSyncsSpace
    - dsm_create
    - GetSessionUserId
    - GetActiveSnapshot
    - shm_toc_estimate
    - SerializeLibraryState
    - shm_toc_estimate_chunk
    - EstimateSnapshotSpace
    - GetSessionUserIsSuperuser
    - GetTempNamespaceState
    - shm_toc_insert
    - SerializeSnapshot
    - SerializeTransactionState
    - palloc0
    - shm_mq_set_receiver
    - EstimateReindexStateSpace
    - EstimateTransactionStateSpace
    - StaticAssertStmt
    linkageType: ''
    returnType: void
    signature: void InitializeParallelDSM(ParallelContext *pcxt)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: WaitForParallelWorkersToFinish
      Src: /src/postgres/src/backend/access/transam/parallel.c:515,1
    - Dst: WaitForParallelWorkersToExit
      Src: /src/postgres/src/backend/access/transam/parallel.c:516,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/parallel.c:520,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:527,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:537,1
    - Dst: shm_mq_create
      Src: /src/postgres/src/backend/access/transam/parallel.c:544,1
    - Dst: shm_mq_set_receiver
      Src: /src/postgres/src/backend/access/transam/parallel.c:545,1
    - Dst: shm_mq_attach
      Src: /src/postgres/src/backend/access/transam/parallel.c:546,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - pcxt
    argTypes:
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 507
    functionDepth: 1
    functionLinenumber: 507
    functionLinenumberEnd: 549
    functionName: ReinitializeParallelDSM
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 0
    functionsReached:
    - pfree
    - WaitForParallelWorkersToExit
    - shm_mq_create
    - shm_toc_lookup
    - shm_mq_set_receiver
    - shm_mq_attach
    - WaitForParallelWorkersToFinish
    linkageType: ''
    returnType: void
    signature: void ReinitializeParallelDSM(ParallelContext *pcxt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/parallel.c:566,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pcxt
    - nworkers_to_launch
    argTypes:
    - ParallelContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 557
    functionDepth: 0
    functionLinenumber: 557
    functionLinenumberEnd: 567
    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:585,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/parallel.c:588,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/parallel.c:591,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/parallel.c:594,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/parallel.c:595,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/parallel.c:597,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/access/transam/parallel.c:603,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/access/transam/parallel.c:604,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/access/transam/parallel.c:605,1
    - Dst: dsm_segment_handle
      Src: /src/postgres/src/backend/access/transam/parallel.c:605,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/parallel.c:618,1
    - Dst: RegisterDynamicBackgroundWorker
      Src: /src/postgres/src/backend/access/transam/parallel.c:620,1
    - Dst: shm_mq_set_handle
      Src: /src/postgres/src/backend/access/transam/parallel.c:623,1
    - Dst: shm_mq_detach
      Src: /src/postgres/src/backend/access/transam/parallel.c:640,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/transam/parallel.c:652,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/parallel.c:657,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 1
    argNames:
    - pcxt
    argTypes:
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 572
    functionDepth: 1
    functionLinenumber: 572
    functionLinenumberEnd: 658
    functionName: LaunchParallelWorkers
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 3
    functionsReached:
    - shm_mq_set_handle
    - Assert
    - MemoryContextSwitchTo
    - dsm_segment_handle
    - BecomeLockGroupLeader
    - RegisterDynamicBackgroundWorker
    - memset
    - UInt32GetDatum
    - snprintf
    - palloc0
    - shm_mq_detach
    - memcpy
    - sprintf
    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:707,1
    - Dst: GetBackgroundWorkerPid
      Src: /src/postgres/src/backend/access/transam/parallel.c:730,1
    - Dst: shm_mq_get_queue
      Src: /src/postgres/src/backend/access/transam/parallel.c:734,1
    - Dst: shm_mq_get_sender
      Src: /src/postgres/src/backend/access/transam/parallel.c:735,1
    - Dst: shm_mq_get_queue
      Src: /src/postgres/src/backend/access/transam/parallel.c:748,1
    - Dst: shm_mq_get_sender
      Src: /src/postgres/src/backend/access/transam/parallel.c:749,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/parallel.c:750,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/parallel.c:751,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/parallel.c:752,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/parallel.c:753,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/access/transam/parallel.c:766,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/access/transam/parallel.c:771,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/parallel.c:778,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 38
    argCount: 1
    argNames:
    - pcxt
    argTypes:
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 692
    functionDepth: 1
    functionLinenumber: 692
    functionLinenumberEnd: 782
    functionName: WaitForParallelWorkersToAttach
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 3
    functionsReached:
    - errmsg
    - ResetLatch
    - Assert
    - CHECK_FOR_INTERRUPTS
    - shm_mq_get_queue
    - ereport
    - shm_mq_get_sender
    - errhint
    - GetBackgroundWorkerPid
    - WaitLatch
    - errcode
    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:809,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/parallel.c:833,1
    - Dst: GetBackgroundWorkerPid
      Src: /src/postgres/src/backend/access/transam/parallel.c:855,1
    - Dst: shm_mq_get_queue
      Src: /src/postgres/src/backend/access/transam/parallel.c:867,1
    - Dst: shm_mq_get_sender
      Src: /src/postgres/src/backend/access/transam/parallel.c:868,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/parallel.c:869,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/parallel.c:870,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/parallel.c:871,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/parallel.c:872,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/access/transam/parallel.c:886,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/access/transam/parallel.c:888,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:895,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 32
    argCount: 1
    argNames:
    - pcxt
    argTypes:
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 795
    functionDepth: 1
    functionLinenumber: 795
    functionLinenumberEnd: 899
    functionName: WaitForParallelWorkersToFinish
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 4
    functionsReached:
    - errmsg
    - ResetLatch
    - Assert
    - CHECK_FOR_INTERRUPTS
    - shm_mq_get_queue
    - ereport
    - shm_toc_lookup
    - shm_mq_get_sender
    - errhint
    - GetBackgroundWorkerPid
    - WaitLatch
    - errcode
    linkageType: ''
    returnType: void
    signature: void WaitForParallelWorkersToFinish(ParallelContext *pcxt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: WaitForBackgroundWorkerShutdown
      Src: /src/postgres/src/backend/access/transam/parallel.c:922,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/parallel.c:931,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/parallel.c:932,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/parallel.c:933,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/parallel.c:936,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - pcxt
    argTypes:
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 909
    functionDepth: 1
    functionLinenumber: 909
    functionLinenumberEnd: 939
    functionName: WaitForParallelWorkersToExit
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 1
    functionsReached:
    - errmsg
    - pfree
    - ereport
    - WaitForBackgroundWorkerShutdown
    - errcode
    linkageType: ''
    returnType: void
    signature: void WaitForParallelWorkersToExit(ParallelContext *pcxt)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/access/transam/parallel.c:960,1
    - Dst: TerminateBackgroundWorker
      Src: /src/postgres/src/backend/access/transam/parallel.c:969,1
    - Dst: shm_mq_detach
      Src: /src/postgres/src/backend/access/transam/parallel.c:971,1
    - Dst: dsm_detach
      Src: /src/postgres/src/backend/access/transam/parallel.c:984,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/parallel.c:994,1
    - Dst: HOLD_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/parallel.c:1003,1
    - Dst: WaitForParallelWorkersToExit
      Src: /src/postgres/src/backend/access/transam/parallel.c:1004,1
    - Dst: RESUME_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/parallel.c:1005,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/parallel.c:1010,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/parallel.c:1015,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/parallel.c:1016,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/parallel.c:1017,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 1
    argNames:
    - pcxt
    argTypes:
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 949
    functionDepth: 2
    functionLinenumber: 949
    functionLinenumberEnd: 1018
    functionName: DestroyParallelContext
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 6
    functionsReached:
    - pfree
    - WaitForParallelWorkersToExit
    - TerminateBackgroundWorker
    - dsm_detach
    - dlist_delete
    - shm_mq_detach
    - HOLD_INTERRUPTS
    - RESUME_INTERRUPTS
    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:1026,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1027
      start: 1023
    functionDepth: 1
    functionLinenumber: 1023
    functionLinenumberEnd: 1027
    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:
    - Dst: SetLatch
      Src: /src/postgres/src/backend/access/transam/parallel.c:1041,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 1036
    functionDepth: 1
    functionLinenumber: 1036
    functionLinenumberEnd: 1042
    functionName: HandleParallelMessageInterrupt
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 0
    functionsReached:
    - SetLatch
    linkageType: ''
    returnType: void
    signature: void HandleParallelMessageInterrupt(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: HOLD_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/parallel.c:1062,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/transam/parallel.c:1070,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/transam/parallel.c:1074,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/parallel.c:1076,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/access/transam/parallel.c:1081,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/access/transam/parallel.c:1086,1
    - Dst: shm_mq_receive
      Src: /src/postgres/src/backend/access/transam/parallel.c:1104,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/access/transam/parallel.c:1112,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/access/transam/parallel.c:1113,1
    - Dst: ProcessParallelMessage
      Src: /src/postgres/src/backend/access/transam/parallel.c:1114,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/parallel.c:1115,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/parallel.c:1118,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/parallel.c:1119,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/parallel.c:1120,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/parallel.c:1125,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/transam/parallel.c:1128,1
    - Dst: RESUME_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/parallel.c:1130,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1131
      start: 1047
    functionDepth: 3
    functionLinenumber: 1047
    functionLinenumberEnd: 1131
    functionName: ProcessParallelMessages
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - errcode
    - MemoryContextSwitchTo
    - appendBinaryStringInfo
    - MemoryContextReset
    - shm_mq_receive
    - ereport
    - dlist_foreach
    - AllocSetContextCreate
    - initStringInfo
    - HOLD_INTERRUPTS
    - dlist_container
    - ProcessParallelMessage
    - RESUME_INTERRUPTS
    linkageType: ''
    returnType: void
    signature: void ProcessParallelMessages(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/access/transam/parallel.c:1148,1
    - Dst: pq_parse_errornotice
      Src: /src/postgres/src/backend/access/transam/parallel.c:1159,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/parallel.c:1162,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/access/transam/parallel.c:1175,1
    - Dst: _
      Src: /src/postgres/src/backend/access/transam/parallel.c:1176,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1178,1
    - Dst: _
      Src: /src/postgres/src/backend/access/transam/parallel.c:1178,1
    - Dst: ThrowErrorData
      Src: /src/postgres/src/backend/access/transam/parallel.c:1190,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/access/transam/parallel.c:1205,1
    - Dst: pq_getmsgrawstring
      Src: /src/postgres/src/backend/access/transam/parallel.c:1206,1
    - Dst: pq_getmsgrawstring
      Src: /src/postgres/src/backend/access/transam/parallel.c:1207,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/access/transam/parallel.c:1208,1
    - Dst: NotifyMyFrontEnd
      Src: /src/postgres/src/backend/access/transam/parallel.c:1210,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/access/transam/parallel.c:1222,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/access/transam/parallel.c:1223,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/access/transam/parallel.c:1225,1
    - Dst: pgstat_progress_incr_param
      Src: /src/postgres/src/backend/access/transam/parallel.c:1227,1
    - Dst: shm_mq_detach
      Src: /src/postgres/src/backend/access/transam/parallel.c:1234,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/parallel.c:1241,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 44
    argCount: 3
    argNames:
    - pcxt
    - i
    - msg
    argTypes:
    - ParallelContext*
    - int
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1245
      start: 1136
    functionDepth: 2
    functionLinenumber: 1136
    functionLinenumberEnd: 1245
    functionName: ProcessParallelMessage
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 1
    functionsReached:
    - pq_getmsgbyte
    - Min
    - pq_getmsgend
    - pq_getmsgrawstring
    - pstrdup
    - NotifyMyFrontEnd
    - elog
    - ThrowErrorData
    - pq_getmsgint64
    - _
    - shm_mq_detach
    - pq_endmessage
    - pgstat_progress_incr_param
    - pq_getmsgint
    - pq_parse_errornotice
    - psprintf
    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:1256,1
    - Dst: dlist_head_element
      Src: /src/postgres/src/backend/access/transam/parallel.c:1260,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/parallel.c:1264,1
    - Dst: DestroyParallelContext
      Src: /src/postgres/src/backend/access/transam/parallel.c:1265,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - isCommit
    - mySubId
    argTypes:
    - bool
    - SubTransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1267
      start: 1253
    functionDepth: 3
    functionLinenumber: 1253
    functionLinenumberEnd: 1267
    functionName: AtEOSubXact_Parallel
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 0
    functionsReached:
    - dlist_head_element
    - elog
    - DestroyParallelContext
    - dlist_is_empty
    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:1277,1
    - Dst: dlist_head_element
      Src: /src/postgres/src/backend/access/transam/parallel.c:1281,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/parallel.c:1283,1
    - Dst: DestroyParallelContext
      Src: /src/postgres/src/backend/access/transam/parallel.c:1284,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - isCommit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1286
      start: 1274
    functionDepth: 3
    functionLinenumber: 1274
    functionLinenumberEnd: 1286
    functionName: AtEOXact_Parallel
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 0
    functionsReached:
    - dlist_head_element
    - elog
    - DestroyParallelContext
    - dlist_is_empty
    linkageType: ''
    returnType: void
    signature: void AtEOXact_Parallel(bool isCommit)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pqsignal
      Src: /src/postgres/src/backend/access/transam/parallel.c:1323,1
    - Dst: BackgroundWorkerUnblockSignals
      Src: /src/postgres/src/backend/access/transam/parallel.c:1324,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/parallel.c:1327,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/parallel.c:1328,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/transam/parallel.c:1331,1
    - Dst: dsm_attach
      Src: /src/postgres/src/backend/access/transam/parallel.c:1344,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/access/transam/parallel.c:1344,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/parallel.c:1346,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/parallel.c:1347,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/parallel.c:1348,1
    - Dst: shm_toc_attach
      Src: /src/postgres/src/backend/access/transam/parallel.c:1349,1
    - Dst: dsm_segment_address
      Src: /src/postgres/src/backend/access/transam/parallel.c:1349,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/parallel.c:1351,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/parallel.c:1352,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/parallel.c:1353,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1356,1
    - Dst: before_shmem_exit
      Src: /src/postgres/src/backend/access/transam/parallel.c:1362,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/transam/parallel.c:1362,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1370,1
    - Dst: shm_mq_set_sender
      Src: /src/postgres/src/backend/access/transam/parallel.c:1373,1
    - Dst: shm_mq_attach
      Src: /src/postgres/src/backend/access/transam/parallel.c:1374,1
    - Dst: pq_redirect_to_shm_mq
      Src: /src/postgres/src/backend/access/transam/parallel.c:1375,1
    - Dst: pq_set_parallel_leader
      Src: /src/postgres/src/backend/access/transam/parallel.c:1376,1
    - Dst: BecomeLockGroupMember
      Src: /src/postgres/src/backend/access/transam/parallel.c:1393,1
    - Dst: SetParallelStartTimestamps
      Src: /src/postgres/src/backend/access/transam/parallel.c:1402,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1409,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/parallel.c:1411,1
    - Dst: LookupParallelWorkerFunction
      Src: /src/postgres/src/backend/access/transam/parallel.c:1413,1
    - Dst: SetAuthenticatedUserId
      Src: /src/postgres/src/backend/access/transam/parallel.c:1421,1
    - Dst: SetSessionAuthorization
      Src: /src/postgres/src/backend/access/transam/parallel.c:1422,1
    - Dst: SetCurrentRoleId
      Src: /src/postgres/src/backend/access/transam/parallel.c:1424,1
    - Dst: BackgroundWorkerInitializeConnectionByOid
      Src: /src/postgres/src/backend/access/transam/parallel.c:1432,1
    - Dst: SetClientEncoding
      Src: /src/postgres/src/backend/access/transam/parallel.c:1444,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/access/transam/parallel.c:1444,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/parallel.c:1445,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/access/transam/parallel.c:1445,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1452,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/access/transam/parallel.c:1453,1
    - Dst: RestoreLibraryState
      Src: /src/postgres/src/backend/access/transam/parallel.c:1454,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/access/transam/parallel.c:1455,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1458,1
    - Dst: StartParallelWorkerTransaction
      Src: /src/postgres/src/backend/access/transam/parallel.c:1459,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1467,1
    - Dst: RestorePendingSyncs
      Src: /src/postgres/src/backend/access/transam/parallel.c:1469,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1470,1
    - Dst: RestoreRelationMap
      Src: /src/postgres/src/backend/access/transam/parallel.c:1471,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1472,1
    - Dst: RestoreReindexState
      Src: /src/postgres/src/backend/access/transam/parallel.c:1473,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1474,1
    - Dst: RestoreComboCIDState
      Src: /src/postgres/src/backend/access/transam/parallel.c:1475,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1479,1
    - Dst: AttachSession
      Src: /src/postgres/src/backend/access/transam/parallel.c:1480,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1494,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1495,1
    - Dst: RestoreSnapshot
      Src: /src/postgres/src/backend/access/transam/parallel.c:1496,1
    - Dst: RestoreSnapshot
      Src: /src/postgres/src/backend/access/transam/parallel.c:1497,1
    - Dst: RestoreTransactionSnapshot
      Src: /src/postgres/src/backend/access/transam/parallel.c:1498,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/access/transam/parallel.c:1500,1
    - Dst: InvalidateSystemCaches
      Src: /src/postgres/src/backend/access/transam/parallel.c:1506,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1515,1
    - Dst: RestoreGUCState
      Src: /src/postgres/src/backend/access/transam/parallel.c:1516,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/access/transam/parallel.c:1526,1
    - Dst: SetTempNamespaceState
      Src: /src/postgres/src/backend/access/transam/parallel.c:1529,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1533,1
    - Dst: RestoreUncommittedEnums
      Src: /src/postgres/src/backend/access/transam/parallel.c:1535,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/access/transam/parallel.c:1538,1
    - Dst: RestoreClientConnectionInfo
      Src: /src/postgres/src/backend/access/transam/parallel.c:1540,1
    - Dst: InitializeSystemUser
      Src: /src/postgres/src/backend/access/transam/parallel.c:1547,1
    - Dst: hba_authname
      Src: /src/postgres/src/backend/access/transam/parallel.c:1548,1
    - Dst: AttachSerializableXact
      Src: /src/postgres/src/backend/access/transam/parallel.c:1551,1
    - Dst: EnterParallelMode
      Src: /src/postgres/src/backend/access/transam/parallel.c:1558,1
    - Dst: entrypt
      Src: /src/postgres/src/backend/access/transam/parallel.c:1563,1
    - Dst: ExitParallelMode
      Src: /src/postgres/src/backend/access/transam/parallel.c:1566,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/access/transam/parallel.c:1569,1
    - Dst: EndParallelWorkerTransaction
      Src: /src/postgres/src/backend/access/transam/parallel.c:1572,1
    - Dst: DetachSession
      Src: /src/postgres/src/backend/access/transam/parallel.c:1575,1
    - Dst: pq_putmessage
      Src: /src/postgres/src/backend/access/transam/parallel.c:1578,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 79
    argCount: 1
    argNames:
    - main_arg
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1579
      start: 1291
    functionDepth: 2
    functionLinenumber: 1291
    functionLinenumberEnd: 1579
    functionName: ParallelWorkerMain
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 0
    functionsReached:
    - InitializeSystemUser
    - pq_set_parallel_leader
    - shm_mq_attach
    - SetCurrentRoleId
    - strlen
    - PopActiveSnapshot
    - SetUserIdAndSecContext
    - SetClientEncoding
    - GetDatabaseEncoding
    - hba_authname
    - BecomeLockGroupMember
    - ExitParallelMode
    - shm_toc_lookup
    - SetAuthenticatedUserId
    - SetParallelStartTimestamps
    - DatumGetUInt32
    - PushActiveSnapshot
    - SetTempNamespaceState
    - RestorePendingSyncs
    - dsm_segment_address
    - memcpy
    - RestoreTransactionSnapshot
    - EndParallelWorkerTransaction
    - StartTransactionCommand
    - errmsg
    - shm_toc_attach
    - DetachSession
    - RestoreSnapshot
    - RestoreClientConnectionInfo
    - BackgroundWorkerInitializeConnectionByOid
    - elog
    - RestoreUncommittedEnums
    - entrypt
    - BackgroundWorkerUnblockSignals
    - StartParallelWorkerTransaction
    - AttachSerializableXact
    - RestoreLibraryState
    - Assert
    - pq_redirect_to_shm_mq
    - RestoreRelationMap
    - LookupParallelWorkerFunction
    - CommitTransactionCommand
    - EnterParallelMode
    - shm_mq_set_sender
    - before_shmem_exit
    - SetSessionAuthorization
    - ereport
    - PointerGetDatum
    - pq_putmessage
    - pqsignal
    - AllocSetContextCreate
    - dsm_attach
    - RestoreComboCIDState
    - AttachSession
    - RestoreReindexState
    - InvalidateSystemCaches
    - RestoreGUCState
    - errcode
    linkageType: ''
    returnType: void
    signature: void ParallelWorkerMain(Datum main_arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/parallel.c:1590,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/parallel.c:1591,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/parallel.c:1594,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - last_xlog_end
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1595
      start: 1585
    functionDepth: 1
    functionLinenumber: 1585
    functionLinenumberEnd: 1595
    functionName: ParallelWorkerReportLastRecEnd
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 0
    functionsReached:
    - Assert
    - SpinLockRelease
    - SpinLockAcquire
    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:1616,1
    - Dst: dsm_detach
      Src: /src/postgres/src/backend/access/transam/parallel.c:1620,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/transam/parallel.c:1620,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1621
      start: 1613
    functionDepth: 1
    functionLinenumber: 1613
    functionLinenumberEnd: 1621
    functionName: ParallelWorkerShutdown
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 0
    functionsReached:
    - DatumGetPointer
    - SendProcSignal
    - dsm_detach
    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:1648,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/transam/parallel.c:1652,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/parallel.c:1654,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/parallel.c:1659,1
    - Dst: load_external_function
      Src: /src/postgres/src/backend/access/transam/parallel.c:1664,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - libraryname
    - funcname
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1665
      start: 1641
    functionDepth: 1
    functionLinenumber: 1641
    functionLinenumberEnd: 1665
    functionName: LookupParallelWorkerFunction
    functionSourceFile: /src/postgres/src/backend/access/transam/parallel.c
    functionUses: 1
    functionsReached:
    - elog
    - strcmp
    - lengthof
    - load_external_function
    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: 116
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 116
    functionName: MultiXactIdToOffsetPage
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.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: 122
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 122
    functionName: MultiXactIdToOffsetEntry
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int MultiXactIdToOffsetEntry(MultiXactId multi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MultiXactIdToOffsetPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - multi
    argTypes:
    - MultiXactId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 128
    functionName: MultiXactIdToOffsetSegment
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    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: 176
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 176
    functionName: MXOffsetToMemberPage
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int64
    signature: int64 MXOffsetToMemberPage(MultiXactOffset offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MXOffsetToMemberPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - offset
    argTypes:
    - MultiXactOffset
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 182
    functionName: MXOffsetToMemberSegment
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    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: 193
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 193
    functionName: MXOffsetToFlagsOffset
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    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: 202
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 202
    functionName: MXOffsetToFlagsBitShift
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int MXOffsetToFlagsBitShift(MultiXactOffset offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MXOffsetToFlagsOffset
      Src: /src/postgres/src/backend/access/transam/multixact.c:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - offset
    argTypes:
    - MultiXactOffset
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 213
    functionName: MXOffsetToMemberOffset
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - MXOffsetToFlagsOffset
    linkageType: ''
    returnType: int
    signature: int MXOffsetToMemberOffset(MultiXactOffset offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - multi
    argTypes:
    - MultiXactId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 224
    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: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 375
    functionDepth: 0
    functionLinenumber: 375
    functionLinenumberEnd: 376
    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: 377
      start: 376
    functionDepth: 0
    functionLinenumber: 376
    functionLinenumberEnd: 377
    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: 378
      start: 377
    functionDepth: 0
    functionLinenumber: 377
    functionLinenumberEnd: 378
    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: 379
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 379
    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: 380
      start: 379
    functionDepth: 0
    functionLinenumber: 379
    functionLinenumberEnd: 380
    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:440,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:440,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:441,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:441,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:443,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/multixact.c:443,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:446,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:446,1
    - Dst: MultiXactIdCreateFromMembers
      Src: /src/postgres/src/backend/access/transam/multixact.c:459,1
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:461,1
    - Dst: mxid_to_string
      Src: /src/postgres/src/backend/access/transam/multixact.c:462,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 4
    argNames:
    - xid1
    - status1
    - xid2
    - status2
    argTypes:
    - TransactionId
    - MultiXactStatus
    - TransactionId
    - MultiXactStatus
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 433
    functionDepth: 1
    functionLinenumber: 433
    functionLinenumberEnd: 465
    functionName: MultiXactIdCreate
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 2
    functionsReached:
    - TransactionIdEquals
    - Assert
    - TransactionIdIsValid
    - mxid_to_string
    - debug_elog3
    - MultiXactIdCreateFromMembers
    - MultiXactIdIsValid
    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:496,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:496,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:497,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:497,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:500,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:500,1
    - Dst: debug_elog5
      Src: /src/postgres/src/backend/access/transam/multixact.c:502,1
    - Dst: mxstatus_to_string
      Src: /src/postgres/src/backend/access/transam/multixact.c:503,1
    - Dst: GetMultiXactIdMembers
      Src: /src/postgres/src/backend/access/transam/multixact.c:510,1
    - Dst: MultiXactIdCreateFromMembers
      Src: /src/postgres/src/backend/access/transam/multixact.c:525,1
    - Dst: debug_elog4
      Src: /src/postgres/src/backend/access/transam/multixact.c:527,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/multixact.c:538,1
    - Dst: debug_elog4
      Src: /src/postgres/src/backend/access/transam/multixact.c:541,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/multixact.c:543,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/multixact.c:562,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/transam/multixact.c:566,1
    - Dst: ISUPDATE_from_mxstatus
      Src: /src/postgres/src/backend/access/transam/multixact.c:567,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/transam/multixact.c:568,1
    - Dst: MultiXactIdCreateFromMembers
      Src: /src/postgres/src/backend/access/transam/multixact.c:577,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/multixact.c:579,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/multixact.c:580,1
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:582,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 3
    argNames:
    - multi
    - xid
    - status
    argTypes:
    - MultiXactId
    - TransactionId
    - MultiXactStatus
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 486
    functionDepth: 1
    functionLinenumber: 486
    functionLinenumberEnd: 585
    functionName: MultiXactIdExpand
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - TransactionIdIsInProgress
    - TransactionIdEquals
    - Assert
    - pfree
    - debug_elog4
    - TransactionIdIsValid
    - mxstatus_to_string
    - GetMultiXactIdMembers
    - TransactionIdDidCommit
    - MultiXactIdCreateFromMembers
    - debug_elog3
    - debug_elog5
    - MultiXactIdIsValid
    - ISUPDATE_from_mxstatus
    - palloc
    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:605,1
    - Dst: GetMultiXactIdMembers
      Src: /src/postgres/src/backend/access/transam/multixact.c:611,1
    - Dst: debug_elog2
      Src: /src/postgres/src/backend/access/transam/multixact.c:615,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/access/transam/multixact.c:628,1
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:630,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/multixact.c:631,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/access/transam/multixact.c:643,1
    - Dst: debug_elog4
      Src: /src/postgres/src/backend/access/transam/multixact.c:645,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/multixact.c:647,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/multixact.c:652,1
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:654,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - multi
    - isLockOnly
    argTypes:
    - MultiXactId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 598
    functionDepth: 1
    functionLinenumber: 598
    functionLinenumberEnd: 657
    functionName: MultiXactIdIsRunning
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 4
    functionsReached:
    - TransactionIdIsInProgress
    - pfree
    - debug_elog4
    - GetMultiXactIdMembers
    - debug_elog3
    - debug_elog2
    - TransactionIdIsCurrentTransactionId
    linkageType: ''
    returnType: bool
    signature: bool MultiXactIdIsRunning(MultiXactId multi, bool isLockOnly)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:675,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:693,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:706,1
    - Dst: debug_elog4
      Src: /src/postgres/src/backend/access/transam/multixact.c:708,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 672
    functionDepth: 1
    functionLinenumber: 672
    functionLinenumberEnd: 711
    functionName: MultiXactIdSetOldestMember
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 5
    functionsReached:
    - debug_elog4
    - LWLockRelease
    - LWLockAcquire
    - MultiXactIdIsValid
    linkageType: ''
    returnType: void
    signature: void MultiXactIdSetOldestMember(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:732,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:737,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:752,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:753,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:759,1
    - Dst: debug_elog4
      Src: /src/postgres/src/backend/access/transam/multixact.c:761,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 729
    functionDepth: 1
    functionLinenumber: 729
    functionLinenumberEnd: 764
    functionName: MultiXactIdSetOldestVisible
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - debug_elog4
    - MultiXactIdIsValid
    - MultiXactIdPrecedes
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void MultiXactIdSetOldestVisible(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:776,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:778,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 770
    functionDepth: 1
    functionLinenumber: 770
    functionLinenumberEnd: 784
    functionName: ReadNextMultiXactId
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: MultiXactId
    signature: MultiXactId ReadNextMultiXactId(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:793,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:796,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - oldest
    - next
    argTypes:
    - MultiXactId*
    - MultiXactId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 790
    functionDepth: 1
    functionLinenumber: 790
    functionLinenumberEnd: 802
    functionName: ReadMultiXactIdRange
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - LWLockRelease
    - LWLockAcquire
    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:821,1
    - Dst: mxid_to_string
      Src: /src/postgres/src/backend/access/transam/multixact.c:822,1
    - Dst: mXactCacheGetBySet
      Src: /src/postgres/src/backend/access/transam/multixact.c:834,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:835,1
    - Dst: debug_elog2
      Src: /src/postgres/src/backend/access/transam/multixact.c:837,1
    - Dst: ISUPDATE_from_mxstatus
      Src: /src/postgres/src/backend/access/transam/multixact.c:848,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/multixact.c:851,1
    - Dst: mxid_to_string
      Src: /src/postgres/src/backend/access/transam/multixact.c:852,1
    - Dst: INJECTION_POINT_LOAD
      Src: /src/postgres/src/backend/access/transam/multixact.c:859,1
    - Dst: GetNewMultiXactId
      Src: /src/postgres/src/backend/access/transam/multixact.c:873,1
    - Dst: INJECTION_POINT_CACHED
      Src: /src/postgres/src/backend/access/transam/multixact.c:875,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/multixact.c:888,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/multixact.c:889,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/multixact.c:890,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/multixact.c:892,1
    - Dst: RecordNewMultiXact
      Src: /src/postgres/src/backend/access/transam/multixact.c:895,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/multixact.c:898,1
    - Dst: mXactCachePut
      Src: /src/postgres/src/backend/access/transam/multixact.c:901,1
    - Dst: debug_elog2
      Src: /src/postgres/src/backend/access/transam/multixact.c:903,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 2
    argNames:
    - nmembers
    - members
    argTypes:
    - int
    - MultiXactMember*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 814
    functionDepth: 1
    functionLinenumber: 814
    functionLinenumberEnd: 906
    functionName: MultiXactIdCreateFromMembers
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 3
    functionsReached:
    - RecordNewMultiXact
    - INJECTION_POINT_CACHED
    - GetNewMultiXactId
    - INJECTION_POINT_LOAD
    - XLogBeginInsert
    - mxid_to_string
    - debug_elog3
    - XLogInsert
    - mXactCachePut
    - MultiXactIdIsValid
    - ISUPDATE_from_mxstatus
    - elog
    - debug_elog2
    - XLogRegisterData
    - END_CRIT_SECTION
    - mXactCacheGetBySet
    linkageType: ''
    returnType: MultiXactId
    signature: MultiXactId MultiXactIdCreateFromMembers(int nmembers, MultiXactMember
      *members)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MultiXactIdToOffsetPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:928,1
    - Dst: MultiXactIdToOffsetEntry
      Src: /src/postgres/src/backend/access/transam/multixact.c:929,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/multixact.c:931,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:932,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:941,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:950,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/access/transam/multixact.c:956,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:969,1
    - Dst: MXOffsetToMemberPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:971,1
    - Dst: MXOffsetToMemberOffset
      Src: /src/postgres/src/backend/access/transam/multixact.c:972,1
    - Dst: MXOffsetToFlagsOffset
      Src: /src/postgres/src/backend/access/transam/multixact.c:973,1
    - Dst: MXOffsetToFlagsBitShift
      Src: /src/postgres/src/backend/access/transam/multixact.c:974,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/multixact.c:983,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:987,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:989,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:992,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:1013,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 41
    argCount: 4
    argNames:
    - multi
    - offset
    - nmembers
    - members
    argTypes:
    - MultiXactId
    - MultiXactOffset
    - int
    - MultiXactMember*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1014
      start: 915
    functionDepth: 2
    functionLinenumber: 915
    functionLinenumberEnd: 1014
    functionName: RecordNewMultiXact
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - MultiXactIdToOffsetPage
    - Assert
    - MXOffsetToMemberOffset
    - LWLockRelease
    - MXOffsetToFlagsOffset
    - SimpleLruGetBankLock
    - MXOffsetToMemberPage
    - MXOffsetToFlagsBitShift
    - ConditionVariableBroadcast
    - MultiXactIdToOffsetEntry
    - LWLockAcquire
    - SimpleLruReadPage
    linkageType: ''
    returnType: void
    signature: "void RecordNewMultiXact(MultiXactId multi, MultiXactOffset offset,\n\t\t\t\t
      \  int nmembers, MultiXactMember *members)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:1037,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/multixact.c:1040,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/multixact.c:1041,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:1043,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:1066,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:1080,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:1083,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/access/transam/multixact.c:1085,1
    - Dst: SendPostmasterSignal
      Src: /src/postgres/src/backend/access/transam/multixact.c:1091,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:1095,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/multixact.c:1096,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/multixact.c:1097,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/multixact.c:1099,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:1102,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/multixact.c:1103,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/multixact.c:1104,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/multixact.c:1106,1
    - Dst: SendPostmasterSignal
      Src: /src/postgres/src/backend/access/transam/multixact.c:1116,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:1118,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/access/transam/multixact.c:1120,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:1124,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/access/transam/multixact.c:1125,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/multixact.c:1130,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:1133,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/access/transam/multixact.c:1134,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/multixact.c:1139,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:1144,1
    - Dst: ExtendMultiXactOffset
      Src: /src/postgres/src/backend/access/transam/multixact.c:1151,1
    - Dst: MultiXactOffsetWouldWrap
      Src: /src/postgres/src/backend/access/transam/multixact.c:1187,1
    - Dst: SendPostmasterSignal
      Src: /src/postgres/src/backend/access/transam/multixact.c:1191,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:1193,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/multixact.c:1194,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/multixact.c:1195,1
    - Dst: errdetail_plural
      Src: /src/postgres/src/backend/access/transam/multixact.c:1196,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/multixact.c:1201,1
    - Dst: MXOffsetToMemberPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:1221,1
    - Dst: MXOffsetToMemberPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:1222,1
    - Dst: SendPostmasterSignal
      Src: /src/postgres/src/backend/access/transam/multixact.c:1223,1
    - Dst: MultiXactOffsetWouldWrap
      Src: /src/postgres/src/backend/access/transam/multixact.c:1227,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:1230,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/multixact.c:1231,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/access/transam/multixact.c:1232,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/multixact.c:1237,1
    - Dst: ExtendMultiXactMember
      Src: /src/postgres/src/backend/access/transam/multixact.c:1239,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/multixact.c:1248,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:1265,1
    - Dst: debug_elog4
      Src: /src/postgres/src/backend/access/transam/multixact.c:1267,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 52
    argCount: 2
    argNames:
    - nmembers
    - offset
    argTypes:
    - int
    - MultiXactOffset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1269
      start: 1031
    functionDepth: 1
    functionLinenumber: 1031
    functionLinenumberEnd: 1269
    functionName: GetNewMultiXactId
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - errhint
    - MultiXactIdPrecedes
    - LWLockRelease
    - RecoveryInProgress
    - START_CRIT_SECTION
    - debug_elog4
    - MultiXactOffsetWouldWrap
    - SendPostmasterSignal
    - errmsg
    - ExtendMultiXactOffset
    - errdetail_plural
    - ExtendMultiXactMember
    - elog
    - errmsg_plural
    - MXOffsetToMemberPage
    - debug_elog3
    - ereport
    - get_database_name
    - LWLockAcquire
    - errcode
    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:1318,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:1320,1
    - Dst: mXactCacheGetById
      Src: /src/postgres/src/backend/access/transam/multixact.c:1327,1
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:1330,1
    - Dst: mxid_to_string
      Src: /src/postgres/src/backend/access/transam/multixact.c:1331,1
    - Dst: MultiXactIdSetOldestVisible
      Src: /src/postgres/src/backend/access/transam/multixact.c:1336,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:1344,1
    - Dst: debug_elog2
      Src: /src/postgres/src/backend/access/transam/multixact.c:1346,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:1366,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:1372,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:1374,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:1375,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/multixact.c:1376,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/multixact.c:1377,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:1380,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:1381,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/multixact.c:1382,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/multixact.c:1383,1
    - Dst: MultiXactIdToOffsetPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:1422,1
    - Dst: MultiXactIdToOffsetEntry
      Src: /src/postgres/src/backend/access/transam/multixact.c:1423,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/multixact.c:1426,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:1427,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:1429,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:1434,1
    - Dst: MultiXactIdToOffsetPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:1457,1
    - Dst: MultiXactIdToOffsetEntry
      Src: /src/postgres/src/backend/access/transam/multixact.c:1458,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/multixact.c:1469,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:1472,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:1473,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:1476,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:1486,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/multixact.c:1487,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/access/transam/multixact.c:1489,1
    - Dst: ConditionVariableSleep
      Src: /src/postgres/src/backend/access/transam/multixact.c:1491,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:1500,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/access/transam/multixact.c:1507,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/multixact.c:1509,1
    - Dst: MXOffsetToMemberPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:1521,1
    - Dst: MXOffsetToMemberOffset
      Src: /src/postgres/src/backend/access/transam/multixact.c:1522,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/multixact.c:1533,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:1537,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:1538,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:1542,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:1549,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:1552,1
    - Dst: MXOffsetToFlagsOffset
      Src: /src/postgres/src/backend/access/transam/multixact.c:1556,1
    - Dst: MXOffsetToFlagsBitShift
      Src: /src/postgres/src/backend/access/transam/multixact.c:1557,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:1565,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:1568,1
    - Dst: mXactCachePut
      Src: /src/postgres/src/backend/access/transam/multixact.c:1573,1
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:1575,1
    - Dst: mxid_to_string
      Src: /src/postgres/src/backend/access/transam/multixact.c:1576,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 108
    argCount: 4
    argNames:
    - multi
    - members
    - from_pgupgrade
    - isLockOnly
    argTypes:
    - MultiXactId
    - MultiXactMember**
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1579
      start: 1298
    functionDepth: 2
    functionLinenumber: 1298
    functionLinenumberEnd: 1579
    functionName: GetMultiXactIdMembers
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 11
    functionsReached:
    - CHECK_FOR_INTERRUPTS
    - MultiXactIdIsValid
    - MultiXactIdPrecedes
    - ConditionVariableSleep
    - LWLockRelease
    - MultiXactIdToOffsetEntry
    - MXOffsetToMemberOffset
    - ConditionVariableCancelSleep
    - mXactCachePut
    - SimpleLruReadPage
    - errmsg
    - MultiXactIdToOffsetPage
    - TransactionIdIsValid
    - MXOffsetToFlagsOffset
    - SimpleLruGetBankLock
    - MultiXactIdSetOldestVisible
    - palloc
    - mXactCacheGetById
    - MXOffsetToMemberPage
    - Assert
    - mxid_to_string
    - debug_elog3
    - ereport
    - MXOffsetToFlagsBitShift
    - debug_elog2
    - INJECTION_POINT
    - LWLockAcquire
    - errcode
    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: 1603
      start: 1588
    functionDepth: 0
    functionLinenumber: 1588
    functionLinenumberEnd: 1603
    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:1623,1
    - Dst: mxid_to_string
      Src: /src/postgres/src/backend/access/transam/multixact.c:1624,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/transam/multixact.c:1627,1
    - Dst: dclist_foreach
      Src: /src/postgres/src/backend/access/transam/multixact.c:1629,1
    - Dst: dclist_container
      Src: /src/postgres/src/backend/access/transam/multixact.c:1631,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/access/transam/multixact.c:1641,1
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:1643,1
    - Dst: dclist_move_head
      Src: /src/postgres/src/backend/access/transam/multixact.c:1644,1
    - Dst: debug_elog2
      Src: /src/postgres/src/backend/access/transam/multixact.c:1649,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - nmembers
    - members
    argTypes:
    - int
    - MultiXactMember*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1651
      start: 1618
    functionDepth: 4
    functionLinenumber: 1618
    functionLinenumberEnd: 1651
    functionName: mXactCacheGetBySet
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - dclist_foreach
    - qsort
    - dclist_container
    - mxid_to_string
    - debug_elog3
    - memcmp
    - debug_elog2
    - dclist_move_head
    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:1666,1
    - Dst: dclist_foreach
      Src: /src/postgres/src/backend/access/transam/multixact.c:1668,1
    - Dst: dclist_container
      Src: /src/postgres/src/backend/access/transam/multixact.c:1670,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/multixact.c:1679,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/multixact.c:1681,1
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:1683,1
    - Dst: mxid_to_string
      Src: /src/postgres/src/backend/access/transam/multixact.c:1684,1
    - Dst: dclist_move_head
      Src: /src/postgres/src/backend/access/transam/multixact.c:1693,1
    - Dst: debug_elog2
      Src: /src/postgres/src/backend/access/transam/multixact.c:1700,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - multi
    - members
    argTypes:
    - MultiXactId
    - MultiXactMember**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1702
      start: 1661
    functionDepth: 4
    functionLinenumber: 1661
    functionLinenumberEnd: 1702
    functionName: mXactCacheGetById
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - dclist_foreach
    - dclist_container
    - mxid_to_string
    - debug_elog3
    - dclist_move_head
    - debug_elog2
    - memcpy
    - 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:1713,1
    - Dst: mxid_to_string
      Src: /src/postgres/src/backend/access/transam/multixact.c:1714,1
    - Dst: debug_elog2
      Src: /src/postgres/src/backend/access/transam/multixact.c:1719,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/transam/multixact.c:1720,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/access/transam/multixact.c:1726,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/multixact.c:1732,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/transam/multixact.c:1735,1
    - Dst: dclist_push_head
      Src: /src/postgres/src/backend/access/transam/multixact.c:1737,1
    - Dst: dclist_count
      Src: /src/postgres/src/backend/access/transam/multixact.c:1738,1
    - Dst: dclist_tail_node
      Src: /src/postgres/src/backend/access/transam/multixact.c:1742,1
    - Dst: dclist_delete_from
      Src: /src/postgres/src/backend/access/transam/multixact.c:1743,1
    - Dst: dclist_container
      Src: /src/postgres/src/backend/access/transam/multixact.c:1745,1
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:1746,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/multixact.c:1749,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - multi
    - nmembers
    - members
    argTypes:
    - MultiXactId
    - int
    - MultiXactMember*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1751
      start: 1708
    functionDepth: 3
    functionLinenumber: 1708
    functionLinenumberEnd: 1751
    functionName: mXactCachePut
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 2
    functionsReached:
    - pfree
    - qsort
    - dclist_delete_from
    - dclist_tail_node
    - dclist_container
    - memcpy
    - mxid_to_string
    - debug_elog3
    - dclist_count
    - dclist_push_head
    - debug_elog2
    - AllocSetContextCreate
    - MemoryContextAlloc
    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:1771,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 1
    argNames:
    - status
    argTypes:
    - MultiXactStatus
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1774
      start: 1753
    functionDepth: 1
    functionLinenumber: 1753
    functionLinenumberEnd: 1774
    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:1784,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/access/transam/multixact.c:1786,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/multixact.c:1788,1
    - Dst: mxstatus_to_string
      Src: /src/postgres/src/backend/access/transam/multixact.c:1789,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/multixact.c:1792,1
    - Dst: mxstatus_to_string
      Src: /src/postgres/src/backend/access/transam/multixact.c:1793,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/transam/multixact.c:1795,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/access/transam/multixact.c:1796,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/multixact.c:1797,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - multi
    - nmembers
    - members
    argTypes:
    - MultiXactId
    - int
    - MultiXactMember*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1799
      start: 1776
    functionDepth: 3
    functionLinenumber: 1776
    functionLinenumberEnd: 1799
    functionName: mxid_to_string
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 6
    functionsReached:
    - pfree
    - MemoryContextStrdup
    - appendStringInfo
    - mxstatus_to_string
    - appendStringInfoChar
    - initStringInfo
    linkageType: ''
    returnType: char
    signature: 'char *

      mxid_to_string(MultiXactId multi, int nmembers, MultiXactMember *members)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dclist_init
      Src: /src/postgres/src/backend/access/transam/multixact.c:1825,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1826
      start: 1807
    functionDepth: 2
    functionLinenumber: 1807
    functionLinenumberEnd: 1826
    functionName: AtEOXact_MultiXact
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - dclist_init
    linkageType: ''
    returnType: void
    signature: void AtEOXact_MultiXact(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:1840,1
    - Dst: RegisterTwoPhaseRecord
      Src: /src/postgres/src/backend/access/transam/multixact.c:1841,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1843
      start: 1835
    functionDepth: 1
    functionLinenumber: 1835
    functionLinenumberEnd: 1843
    functionName: AtPrepare_MultiXact
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - RegisterTwoPhaseRecord
    - MultiXactIdIsValid
    linkageType: ''
    returnType: void
    signature: void AtPrepare_MultiXact(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:1859,1
    - Dst: TwoPhaseGetDummyProcNumber
      Src: /src/postgres/src/backend/access/transam/multixact.c:1861,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:1869,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:1874,1
    - Dst: dclist_init
      Src: /src/postgres/src/backend/access/transam/multixact.c:1891,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1892
      start: 1849
    functionDepth: 2
    functionLinenumber: 1849
    functionLinenumberEnd: 1892
    functionName: PostPrepare_MultiXact
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - dclist_init
    - MultiXactIdIsValid
    - TwoPhaseGetDummyProcNumber
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void PostPrepare_MultiXact(TransactionId xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TwoPhaseGetDummyProcNumber
      Src: /src/postgres/src/backend/access/transam/multixact.c:1902,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:1909,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - xid
    - info
    - recdata
    - len
    argTypes:
    - TransactionId
    - uint16
    - void*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1913
      start: 1898
    functionDepth: 1
    functionLinenumber: 1898
    functionLinenumberEnd: 1913
    functionName: multixact_twophase_recover
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - TwoPhaseGetDummyProcNumber
    - Assert
    linkageType: ''
    returnType: void
    signature: "void multixact_twophase_recover(TransactionId xid, 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:1923,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:1925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - xid
    - info
    - recdata
    - len
    argTypes:
    - TransactionId
    - uint16
    - void*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1928
      start: 1919
    functionDepth: 1
    functionLinenumber: 1919
    functionLinenumberEnd: 1928
    functionName: multixact_twophase_postcommit
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - TwoPhaseGetDummyProcNumber
    - Assert
    linkageType: ''
    returnType: void
    signature: "void multixact_twophase_postcommit(TransactionId xid, 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:1938,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - xid
    - info
    - recdata
    - len
    argTypes:
    - TransactionId
    - uint16
    - void*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1939
      start: 1934
    functionDepth: 2
    functionLinenumber: 1934
    functionLinenumberEnd: 1939
    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(TransactionId xid, 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:1957,1
    - Dst: SimpleLruShmemSize
      Src: /src/postgres/src/backend/access/transam/multixact.c:1957,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/transam/multixact.c:1958,1
    - Dst: SimpleLruShmemSize
      Src: /src/postgres/src/backend/access/transam/multixact.c:1958,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1961
      start: 1946
    functionDepth: 1
    functionLinenumber: 1946
    functionLinenumberEnd: 1961
    functionName: MultiXactShmemSize
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - add_size
    - SimpleLruShmemSize
    linkageType: ''
    returnType: Size
    signature: Size MultiXactShmemSize(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: debug_elog2
      Src: /src/postgres/src/backend/access/transam/multixact.c:1968,1
    - Dst: SimpleLruInit
      Src: /src/postgres/src/backend/access/transam/multixact.c:1973,1
    - Dst: SlruPagePrecedesUnitTests
      Src: /src/postgres/src/backend/access/transam/multixact.c:1979,1
    - Dst: SimpleLruInit
      Src: /src/postgres/src/backend/access/transam/multixact.c:1980,1
    - Dst: ShmemInitStruct
      Src: /src/postgres/src/backend/access/transam/multixact.c:1989,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:1994,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/multixact.c:1997,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/backend/access/transam/multixact.c:1998,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:2001,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2008
      start: 1963
    functionDepth: 1
    functionLinenumber: 1963
    functionLinenumberEnd: 2008
    functionName: MultiXactShmemInit
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - Assert
    - SimpleLruInit
    - MemSet
    - debug_elog2
    - ConditionVariableInit
    - SlruPagePrecedesUnitTests
    - ShmemInitStruct
    linkageType: ''
    returnType: void
    signature: void MultiXactShmemInit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_slru_buffers
      Src: /src/postgres/src/backend/access/transam/multixact.c:2016,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - int*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2017
      start: 2013
    functionDepth: 1
    functionLinenumber: 2013
    functionLinenumberEnd: 2017
    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:2025,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - int*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2026
      start: 2022
    functionDepth: 1
    functionLinenumber: 2022
    functionLinenumberEnd: 2026
    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: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/multixact.c:2039,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2040,1
    - Dst: ZeroMultiXactOffsetPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2043,1
    - Dst: SimpleLruWritePage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2046,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:2047,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2049,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/multixact.c:2051,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2052,1
    - Dst: ZeroMultiXactMemberPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2055,1
    - Dst: SimpleLruWritePage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2058,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:2059,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2061,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2062
      start: 2033
    functionDepth: 1
    functionLinenumber: 2033
    functionLinenumberEnd: 2062
    functionName: BootStrapMultiXact
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - SimpleLruWritePage
    - Assert
    - ZeroMultiXactOffsetPage
    - SimpleLruGetBankLock
    - ZeroMultiXactMemberPage
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void BootStrapMultiXact(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruZeroPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2078,1
    - Dst: WriteMZeroPageXlogRec
      Src: /src/postgres/src/backend/access/transam/multixact.c:2081,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - pageno
    - writeXlog
    argTypes:
    - int64
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2084
      start: 2073
    functionDepth: 1
    functionLinenumber: 2073
    functionLinenumberEnd: 2084
    functionName: ZeroMultiXactOffsetPage
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - WriteMZeroPageXlogRec
    - SimpleLruZeroPage
    linkageType: ''
    returnType: int
    signature: int ZeroMultiXactOffsetPage(int64 pageno, bool writeXlog)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruZeroPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2094,1
    - Dst: WriteMZeroPageXlogRec
      Src: /src/postgres/src/backend/access/transam/multixact.c:2097,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - pageno
    - writeXlog
    argTypes:
    - int64
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2100
      start: 2089
    functionDepth: 1
    functionLinenumber: 2089
    functionLinenumberEnd: 2100
    functionName: ZeroMultiXactMemberPage
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - WriteMZeroPageXlogRec
    - SimpleLruZeroPage
    linkageType: ''
    returnType: int
    signature: int ZeroMultiXactMemberPage(int64 pageno, bool writeXlog)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MultiXactIdToOffsetPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2123,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/multixact.c:2124,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2126,1
    - Dst: SimpleLruDoesPhysicalPageExist
      Src: /src/postgres/src/backend/access/transam/multixact.c:2128,1
    - Dst: ZeroMultiXactOffsetPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2137,1
    - Dst: SimpleLruWritePage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2138,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2142
      start: 2117
    functionDepth: 2
    functionLinenumber: 2117
    functionLinenumberEnd: 2142
    functionName: MaybeExtendOffsetSlru
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - SimpleLruWritePage
    - MultiXactIdToOffsetPage
    - ZeroMultiXactOffsetPage
    - SimpleLruGetBankLock
    - SimpleLruDoesPhysicalPageExist
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void MaybeExtendOffsetSlru(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MultiXactIdToOffsetPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2162,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/multixact.c:2163,1
    - Dst: MXOffsetToMemberPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2169,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/multixact.c:2170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2172
      start: 2152
    functionDepth: 2
    functionLinenumber: 2152
    functionLinenumberEnd: 2172
    functionName: StartupMultiXact
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - pg_atomic_write_u64
    - MultiXactIdToOffsetPage
    - MXOffsetToMemberPage
    linkageType: ''
    returnType: void
    signature: void StartupMultiXact(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2188,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2193,1
    - Dst: MultiXactIdToOffsetPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2200,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/multixact.c:2201,1
    - Dst: MultiXactIdToOffsetEntry
      Src: /src/postgres/src/backend/access/transam/multixact.c:2212,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/multixact.c:2217,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2219,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2220,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/multixact.c:2224,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2227,1
    - Dst: MXOffsetToMemberPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2235,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/multixact.c:2236,1
    - Dst: MXOffsetToFlagsOffset
      Src: /src/postgres/src/backend/access/transam/multixact.c:2243,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/multixact.c:2249,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2251,1
    - Dst: MXOffsetToMemberOffset
      Src: /src/postgres/src/backend/access/transam/multixact.c:2252,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2253,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/multixact.c:2257,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2266,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2270,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2272,1
    - Dst: SetMultiXactIdLimit
      Src: /src/postgres/src/backend/access/transam/multixact.c:2275,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2276
      start: 2177
    functionDepth: 2
    functionLinenumber: 2177
    functionLinenumberEnd: 2276
    functionName: TrimMultiXact
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - MultiXactIdToOffsetPage
    - MXOffsetToMemberOffset
    - LWLockRelease
    - MXOffsetToFlagsOffset
    - SetMultiXactIdLimit
    - SimpleLruGetBankLock
    - MXOffsetToMemberPage
    - MemSet
    - pg_atomic_write_u64
    - MultiXactIdToOffsetEntry
    - LWLockAcquire
    - SimpleLruReadPage
    linkageType: ''
    returnType: void
    signature: void TrimMultiXact(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2288,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2293,1
    - Dst: debug_elog6
      Src: /src/postgres/src/backend/access/transam/multixact.c:2295,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: 2298
      start: 2281
    functionDepth: 1
    functionLinenumber: 2281
    functionLinenumberEnd: 2298
    functionName: MultiXactGetCheckptMulti
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - LWLockRelease
    - LWLockAcquire
    - 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:2306,1
    - Dst: SimpleLruWriteAll
      Src: /src/postgres/src/backend/access/transam/multixact.c:2313,1
    - Dst: SimpleLruWriteAll
      Src: /src/postgres/src/backend/access/transam/multixact.c:2314,1
    - Dst: TRACE_POSTGRESQL_MULTIXACT_CHECKPOINT_DONE
      Src: /src/postgres/src/backend/access/transam/multixact.c:2316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2317
      start: 2303
    functionDepth: 1
    functionLinenumber: 2303
    functionLinenumberEnd: 2317
    functionName: CheckPointMultiXact
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - TRACE_POSTGRESQL_MULTIXACT_CHECKPOINT_START
    - TRACE_POSTGRESQL_MULTIXACT_CHECKPOINT_DONE
    - SimpleLruWriteAll
    linkageType: ''
    returnType: void
    signature: void CheckPointMultiXact(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: debug_elog4
      Src: /src/postgres/src/backend/access/transam/multixact.c:2331,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2333,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2336,1
    - Dst: MaybeExtendOffsetSlru
      Src: /src/postgres/src/backend/access/transam/multixact.c:2350,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - nextMulti
    - nextMultiOffset
    argTypes:
    - MultiXactId
    - MultiXactOffset
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2351
      start: 2327
    functionDepth: 3
    functionLinenumber: 2327
    functionLinenumberEnd: 2351
    functionName: MultiXactSetNextMXact
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - LWLockAcquire
    - LWLockRelease
    - debug_elog4
    - MaybeExtendOffsetSlru
    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:2372,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:2372,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2420,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2428,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:2431,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/multixact.c:2432,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:2445,1
    - Dst: SetOffsetVacuumLimit
      Src: /src/postgres/src/backend/access/transam/multixact.c:2448,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:2457,1
    - Dst: SendPostmasterSignal
      Src: /src/postgres/src/backend/access/transam/multixact.c:2459,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:2462,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/access/transam/multixact.c:2475,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/access/transam/multixact.c:2476,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:2481,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/access/transam/multixact.c:2482,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/multixact.c:2487,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:2490,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/access/transam/multixact.c:2491,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/multixact.c:2496,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 3
    argNames:
    - oldest_datminmxid
    - oldest_datoid
    - is_startup
    argTypes:
    - MultiXactId
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2499
      start: 2361
    functionDepth: 1
    functionLinenumber: 2361
    functionLinenumberEnd: 2499
    functionName: SetMultiXactIdLimit
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - Assert
    - errmsg_internal
    - ereport
    - MultiXactIdIsValid
    - errhint
    - SetOffsetVacuumLimit
    - MultiXactIdPrecedes
    - IsTransactionState
    - errmsg_plural
    - get_database_name
    - LWLockRelease
    - LWLockAcquire
    - SendPostmasterSignal
    linkageType: ''
    returnType: void
    signature: "void SetMultiXactIdLimit(MultiXactId oldest_datminmxid, Oid oldest_datoid,\n\t\t\t\t\tbool
      is_startup)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2514,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:2515,1
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:2517,1
    - Dst: MultiXactOffsetPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:2520,1
    - Dst: debug_elog3
      Src: /src/postgres/src/backend/access/transam/multixact.c:2522,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2526,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - minMulti
    - minMultiOffset
    argTypes:
    - MultiXactId
    - MultiXactOffset
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2527
      start: 2510
    functionDepth: 1
    functionLinenumber: 2510
    functionLinenumberEnd: 2527
    functionName: MultiXactAdvanceNextMXact
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - debug_elog3
    - MultiXactIdPrecedes
    - MultiXactOffsetPrecedes
    - LWLockRelease
    - LWLockAcquire
    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:2538,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:2540,1
    - Dst: SetMultiXactIdLimit
      Src: /src/postgres/src/backend/access/transam/multixact.c:2541,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - oldestMulti
    - oldestMultiDB
    argTypes:
    - MultiXactId
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2542
      start: 2535
    functionDepth: 2
    functionLinenumber: 2535
    functionLinenumberEnd: 2542
    functionName: MultiXactAdvanceOldest
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - SetMultiXactIdLimit
    - Assert
    - 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:2562,1
    - Dst: MultiXactIdToOffsetPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2566,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/multixact.c:2567,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2569,1
    - Dst: ZeroMultiXactOffsetPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2572,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2574,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - multi
    argTypes:
    - MultiXactId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2575
      start: 2552
    functionDepth: 2
    functionLinenumber: 2552
    functionLinenumberEnd: 2575
    functionName: ExtendMultiXactOffset
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - MultiXactIdToOffsetPage
    - ZeroMultiXactOffsetPage
    - LWLockRelease
    - SimpleLruGetBankLock
    - MultiXactIdToOffsetEntry
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void ExtendMultiXactOffset(MultiXactId multi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MXOffsetToFlagsOffset
      Src: /src/postgres/src/backend/access/transam/multixact.c:2602,1
    - Dst: MXOffsetToFlagsBitShift
      Src: /src/postgres/src/backend/access/transam/multixact.c:2603,1
    - Dst: MXOffsetToMemberPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2609,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/multixact.c:2610,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2612,1
    - Dst: ZeroMultiXactMemberPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2615,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2617,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - offset
    - nmembers
    argTypes:
    - MultiXactOffset
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2645
      start: 2584
    functionDepth: 2
    functionLinenumber: 2584
    functionLinenumberEnd: 2645
    functionName: ExtendMultiXactMember
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - MXOffsetToFlagsOffset
    - SimpleLruGetBankLock
    - MXOffsetToMemberPage
    - MXOffsetToFlagsBitShift
    - ZeroMultiXactMemberPage
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void ExtendMultiXactMember(MultiXactOffset offset, int nmembers)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2670,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:2687,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:2688,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:2691,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:2692,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2696,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2699
      start: 2659
    functionDepth: 1
    functionLinenumber: 2659
    functionLinenumberEnd: 2699
    functionName: GetOldestMultiXactId
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - LWLockRelease
    - MultiXactIdPrecedes
    - LWLockAcquire
    - MultiXactIdIsValid
    linkageType: ''
    returnType: MultiXactId
    signature: MultiXactId GetOldestMultiXactId(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2729,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2732,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:2739,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2740,1
    - Dst: find_multixact_start
      Src: /src/postgres/src/backend/access/transam/multixact.c:2767,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:2770,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/multixact.c:2771,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:2774,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/multixact.c:2775,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2779,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:2796,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/multixact.c:2797,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:2799,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/multixact.c:2800,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2817,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2821,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 39
    argCount: 1
    argNames:
    - is_startup
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2828
      start: 2712
    functionDepth: 1
    functionLinenumber: 2712
    functionLinenumberEnd: 2828
    functionName: SetOffsetVacuumLimit
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - errmsg
    - Assert
    - find_multixact_start
    - errmsg_internal
    - ereport
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: bool
    signature: bool SetOffsetVacuumLimit(bool is_startup)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 3
    argNames:
    - boundary
    - start
    - distance
    argTypes:
    - MultiXactOffset
    - MultiXactOffset
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2876
      start: 2839
    functionDepth: 0
    functionLinenumber: 2839
    functionLinenumberEnd: 2876
    functionName: MultiXactOffsetWouldWrap
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool MultiXactOffsetWouldWrap(MultiXactOffset boundary, MultiXactOffset
      start,\n\t\t\t\t\t\t uint32 distance)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:2896,1
    - Dst: MultiXactIdToOffsetPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:2898,1
    - Dst: MultiXactIdToOffsetEntry
      Src: /src/postgres/src/backend/access/transam/multixact.c:2899,1
    - Dst: SimpleLruWriteAll
      Src: /src/postgres/src/backend/access/transam/multixact.c:2904,1
    - Dst: SimpleLruWriteAll
      Src: /src/postgres/src/backend/access/transam/multixact.c:2905,1
    - Dst: SimpleLruDoesPhysicalPageExist
      Src: /src/postgres/src/backend/access/transam/multixact.c:2907,1
    - Dst: SimpleLruReadPage_ReadOnly
      Src: /src/postgres/src/backend/access/transam/multixact.c:2911,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2915,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/multixact.c:2915,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - multi
    - result
    argTypes:
    - MultiXactId
    - MultiXactOffset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2919
      start: 2887
    functionDepth: 1
    functionLinenumber: 2887
    functionLinenumberEnd: 2919
    functionName: find_multixact_start
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - Assert
    - MultiXactIdToOffsetPage
    - SimpleLruReadPage_ReadOnly
    - SimpleLruWriteAll
    - LWLockRelease
    - SimpleLruGetBankLock
    - SimpleLruDoesPhysicalPageExist
    - MultiXactIdToOffsetEntry
    linkageType: ''
    returnType: bool
    signature: bool find_multixact_start(MultiXactId multi, MultiXactOffset *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:2934,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:2940,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - multixacts
    - members
    argTypes:
    - uint32*
    - MultiXactOffset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2948
      start: 2925
    functionDepth: 1
    functionLinenumber: 2925
    functionLinenumberEnd: 2948
    functionName: ReadMultiXactCounts
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: bool
    signature: bool ReadMultiXactCounts(uint32 *multixacts, MultiXactOffset *members)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ReadMultiXactCounts
      Src: /src/postgres/src/backend/access/transam/multixact.c:2987,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/multixact.c:3012,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3013
      start: 2977
    functionDepth: 2
    functionLinenumber: 2977
    functionLinenumberEnd: 3013
    functionName: MultiXactMemberFreezeThreshold
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - Min
    - ReadMultiXactCounts
    linkageType: ''
    returnType: int
    signature: int MultiXactMemberFreezeThreshold(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SlruCtl::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:3030,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 4
    argNames:
    - ctl
    - filename
    - segpage
    - data
    argTypes:
    - SlruCtl
    - char*
    - int64
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3036
      start: 3024
    functionDepth: 0
    functionLinenumber: 3024
    functionLinenumberEnd: 3036
    functionName: SlruScanDirCbFindEarliest
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - SlruCtl::PagePrecedes
    linkageType: ''
    returnType: bool
    signature: bool SlruScanDirCbFindEarliest(SlruCtl ctl, char *filename, int64 segpage,
      void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MXOffsetToMemberSegment
      Src: /src/postgres/src/backend/access/transam/multixact.c:3050,1
    - Dst: MXOffsetToMemberSegment
      Src: /src/postgres/src/backend/access/transam/multixact.c:3051,1
    - Dst: MXOffsetToMemberSegment
      Src: /src/postgres/src/backend/access/transam/multixact.c:3052,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/multixact.c:3061,1
    - Dst: SlruDeleteSegment
      Src: /src/postgres/src/backend/access/transam/multixact.c:3063,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - oldestOffset
    - newOldestOffset
    argTypes:
    - MultiXactOffset
    - MultiXactOffset
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3071
      start: 3047
    functionDepth: 2
    functionLinenumber: 3047
    functionLinenumberEnd: 3071
    functionName: PerformMembersTruncation
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - MXOffsetToMemberSegment
    - SlruDeleteSegment
    - elog
    linkageType: ''
    returnType: void
    signature: void PerformMembersTruncation(MultiXactOffset oldestOffset, MultiXactOffset
      newOldestOffset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruTruncate
      Src: /src/postgres/src/backend/access/transam/multixact.c:3086,1
    - Dst: MultiXactIdToOffsetPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:3087,1
    - Dst: PreviousMultiXactId
      Src: /src/postgres/src/backend/access/transam/multixact.c:3087,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - oldestMulti
    - newOldestMulti
    argTypes:
    - MultiXactId
    - MultiXactId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3088
      start: 3076
    functionDepth: 1
    functionLinenumber: 3076
    functionLinenumberEnd: 3088
    functionName: PerformOffsetsTruncation
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - MultiXactIdToOffsetPage
    - PreviousMultiXactId
    - SimpleLruTruncate
    linkageType: ''
    returnType: void
    signature: void PerformOffsetsTruncation(MultiXactId oldestMulti, MultiXactId
      newOldestMulti)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:3112,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/multixact.c:3112,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:3113,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:3121,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:3123,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:3127,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:3128,1
    - Dst: MultiXactIdIsValid
      Src: /src/postgres/src/backend/access/transam/multixact.c:3128,1
    - Dst: MultiXactIdPrecedesOrEquals
      Src: /src/postgres/src/backend/access/transam/multixact.c:3135,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:3137,1
    - Dst: SlruScanDirectory
      Src: /src/postgres/src/backend/access/transam/multixact.c:3160,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:3166,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:3168,1
    - Dst: find_multixact_start
      Src: /src/postgres/src/backend/access/transam/multixact.c:3185,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:3187,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/multixact.c:3188,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:3190,1
    - Dst: find_multixact_start
      Src: /src/postgres/src/backend/access/transam/multixact.c:3203,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:3205,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/multixact.c:3206,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:3208,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/multixact.c:3212,1
    - Dst: MultiXactIdToOffsetSegment
      Src: /src/postgres/src/backend/access/transam/multixact.c:3216,1
    - Dst: MultiXactIdToOffsetSegment
      Src: /src/postgres/src/backend/access/transam/multixact.c:3217,1
    - Dst: MXOffsetToMemberSegment
      Src: /src/postgres/src/backend/access/transam/multixact.c:3219,1
    - Dst: MXOffsetToMemberSegment
      Src: /src/postgres/src/backend/access/transam/multixact.c:3220,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/multixact.c:3228,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:3236,1
    - Dst: WriteMTruncateXlogRec
      Src: /src/postgres/src/backend/access/transam/multixact.c:3240,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:3252,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:3255,1
    - Dst: PerformMembersTruncation
      Src: /src/postgres/src/backend/access/transam/multixact.c:3258,1
    - Dst: PerformOffsetsTruncation
      Src: /src/postgres/src/backend/access/transam/multixact.c:3261,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/multixact.c:3265,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:3266,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 53
    argCount: 2
    argNames:
    - newOldestMulti
    - newOldestMultiDB
    argTypes:
    - MultiXactId
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3267
      start: 3101
    functionDepth: 3
    functionLinenumber: 3101
    functionLinenumberEnd: 3267
    functionName: TruncateMultiXact
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - MultiXactIdIsValid
    - MultiXactIdPrecedes
    - PerformOffsetsTruncation
    - LWLockRelease
    - RecoveryInProgress
    - START_CRIT_SECTION
    - errmsg
    - MultiXactIdToOffsetSegment
    - MultiXactIdPrecedesOrEquals
    - elog
    - PerformMembersTruncation
    - WriteMTruncateXlogRec
    - SlruScanDirectory
    - MXOffsetToMemberSegment
    - Assert
    - find_multixact_start
    - ereport
    - END_CRIT_SECTION
    - LWLockAcquire
    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:3287,1
    - Dst: MultiXactIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:3288,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - page1
    - page2
    argTypes:
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3290
      start: 3276
    functionDepth: 1
    functionLinenumber: 3276
    functionLinenumberEnd: 3290
    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:
    - Dst: MultiXactOffsetPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:3305,1
    - Dst: MultiXactOffsetPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:3306,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - page1
    - page2
    argTypes:
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3308
      start: 3296
    functionDepth: 1
    functionLinenumber: 3296
    functionLinenumberEnd: 3308
    functionName: MultiXactMemberPagePrecedes
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - MultiXactOffsetPrecedes
    linkageType: ''
    returnType: bool
    signature: bool MultiXactMemberPagePrecedes(int64 page1, int64 page2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - multi1
    - multi2
    argTypes:
    - MultiXactId
    - MultiXactId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3322
      start: 3316
    functionDepth: 0
    functionLinenumber: 3316
    functionLinenumberEnd: 3322
    functionName: MultiXactIdPrecedes
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 13
    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: 3336
      start: 3330
    functionDepth: 0
    functionLinenumber: 3330
    functionLinenumberEnd: 3336
    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: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - offset1
    - offset2
    argTypes:
    - MultiXactOffset
    - MultiXactOffset
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3348
      start: 3342
    functionDepth: 0
    functionLinenumber: 3342
    functionLinenumberEnd: 3348
    functionName: MultiXactOffsetPrecedes
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool MultiXactOffsetPrecedes(MultiXactOffset offset1, MultiXactOffset
      offset2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/multixact.c:3357,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/multixact.c:3358,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/multixact.c:3359,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - pageno
    - info
    argTypes:
    - int64
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3360
      start: 3354
    functionDepth: 1
    functionLinenumber: 3354
    functionLinenumberEnd: 3360
    functionName: WriteMZeroPageXlogRec
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 2
    functionsReached:
    - XLogInsert
    - XLogRegisterData
    - XLogBeginInsert
    linkageType: ''
    returnType: void
    signature: void WriteMZeroPageXlogRec(int64 pageno, uint8 info)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/multixact.c:3384,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/multixact.c:3385,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/multixact.c:3386,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/multixact.c:3387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 5
    argNames:
    - oldestMultiDB
    - startTruncOff
    - endTruncOff
    - startTruncMemb
    - endTruncMemb
    argTypes:
    - Oid
    - MultiXactId
    - MultiXactId
    - MultiXactOffset
    - MultiXactOffset
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3388
      start: 3368
    functionDepth: 1
    functionLinenumber: 3368
    functionLinenumberEnd: 3388
    functionName: WriteMTruncateXlogRec
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 1
    functionsReached:
    - XLogInsert
    - XLogRegisterData
    - XLogFlush
    - XLogBeginInsert
    linkageType: ''
    returnType: void
    signature: "void WriteMTruncateXlogRec(Oid oldestMultiDB,\n\t\t\t\t\t  MultiXactId
      startTruncOff, MultiXactId endTruncOff,\n\t\t\t\t\t  MultiXactOffset startTruncMemb,
      MultiXactOffset endTruncMemb)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/multixact.c:3396,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:3399,1
    - Dst: XLogRecHasAnyBlockRefs
      Src: /src/postgres/src/backend/access/transam/multixact.c:3399,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/multixact.c:3407,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/multixact.c:3407,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/multixact.c:3409,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:3410,1
    - Dst: ZeroMultiXactOffsetPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:3412,1
    - Dst: SimpleLruWritePage
      Src: /src/postgres/src/backend/access/transam/multixact.c:3413,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:3414,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:3416,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/multixact.c:3424,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/multixact.c:3424,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/multixact.c:3426,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:3427,1
    - Dst: ZeroMultiXactMemberPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:3429,1
    - Dst: SimpleLruWritePage
      Src: /src/postgres/src/backend/access/transam/multixact.c:3430,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/multixact.c:3431,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:3433,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/multixact.c:3438,1
    - Dst: RecordNewMultiXact
      Src: /src/postgres/src/backend/access/transam/multixact.c:3443,1
    - Dst: MultiXactAdvanceNextMXact
      Src: /src/postgres/src/backend/access/transam/multixact.c:3447,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/transam/multixact.c:3455,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/multixact.c:3458,1
    - Dst: AdvanceNextFullTransactionIdPastXid
      Src: /src/postgres/src/backend/access/transam/multixact.c:3462,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/multixact.c:3469,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/multixact.c:3469,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/multixact.c:3472,1
    - Dst: MultiXactIdToOffsetSegment
      Src: /src/postgres/src/backend/access/transam/multixact.c:3476,1
    - Dst: MultiXactIdToOffsetSegment
      Src: /src/postgres/src/backend/access/transam/multixact.c:3477,1
    - Dst: MXOffsetToMemberSegment
      Src: /src/postgres/src/backend/access/transam/multixact.c:3479,1
    - Dst: MXOffsetToMemberSegment
      Src: /src/postgres/src/backend/access/transam/multixact.c:3480,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/multixact.c:3483,1
    - Dst: SetMultiXactIdLimit
      Src: /src/postgres/src/backend/access/transam/multixact.c:3489,1
    - Dst: PerformMembersTruncation
      Src: /src/postgres/src/backend/access/transam/multixact.c:3491,1
    - Dst: MultiXactIdToOffsetPage
      Src: /src/postgres/src/backend/access/transam/multixact.c:3498,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/multixact.c:3499,1
    - Dst: PerformOffsetsTruncation
      Src: /src/postgres/src/backend/access/transam/multixact.c:3501,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/multixact.c:3503,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/multixact.c:3506,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3507
      start: 3393
    functionDepth: 3
    functionLinenumber: 3393
    functionLinenumberEnd: 3507
    functionName: multixact_redo
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - RecordNewMultiXact
    - XLogRecGetData
    - PerformOffsetsTruncation
    - LWLockRelease
    - MultiXactAdvanceNextMXact
    - XLogRecHasAnyBlockRefs
    - XLogRecGetInfo
    - ZeroMultiXactMemberPage
    - memcpy
    - XLogRecGetXid
    - TransactionIdPrecedes
    - SimpleLruWritePage
    - MultiXactIdToOffsetSegment
    - MultiXactIdToOffsetPage
    - SimpleLruGetBankLock
    - elog
    - PerformMembersTruncation
    - MXOffsetToMemberSegment
    - Assert
    - ZeroMultiXactOffsetPage
    - SetMultiXactIdLimit
    - AdvanceNextFullTransactionIdPastXid
    - pg_atomic_write_u64
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void multixact_redo(XLogReaderState *record)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TRANSACTIONID
      Src: /src/postgres/src/backend/access/transam/multixact.c:3518,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/multixact.c:3523,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/multixact.c:3524,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/multixact.c:3525,1
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/access/transam/multixact.c:3527,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/access/transam/multixact.c:3532,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/multixact.c:3533,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/multixact.c:3535,1
    - Dst: GetMultiXactIdMembers
      Src: /src/postgres/src/backend/access/transam/multixact.c:3537,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/access/transam/multixact.c:3541,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/multixact.c:3542,1
    - Dst: TupleDescGetAttInMetadata
      Src: /src/postgres/src/backend/access/transam/multixact.c:3544,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/multixact.c:3547,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/access/transam/multixact.c:3550,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/access/transam/multixact.c:3558,1
    - Dst: mxstatus_to_string
      Src: /src/postgres/src/backend/access/transam/multixact.c:3559,1
    - Dst: BuildTupleFromCStrings
      Src: /src/postgres/src/backend/access/transam/multixact.c:3561,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/multixact.c:3564,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/access/transam/multixact.c:3565,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/access/transam/multixact.c:3565,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/access/transam/multixact.c:3568,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3569
      start: 3509
    functionDepth: 3
    functionLinenumber: 3509
    functionLinenumberEnd: 3569
    functionName: pg_get_multixact_members
    functionSourceFile: /src/postgres/src/backend/access/transam/multixact.c
    functionUses: 0
    functionsReached:
    - HeapTupleGetDatum
    - MemoryContextSwitchTo
    - SRF_FIRSTCALL_INIT
    - SRF_RETURN_DONE
    - SRF_RETURN_NEXT
    - psprintf
    - pfree
    - PG_GETARG_TRANSACTIONID
    - get_call_result_type
    - errmsg
    - TupleDescGetAttInMetadata
    - SRF_PERCALL_SETUP
    - GetMultiXactIdMembers
    - mxstatus_to_string
    - elog
    - SRF_IS_FIRSTCALL
    - palloc
    - BuildTupleFromCStrings
    - ereport
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum pg_get_multixact_members(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SlruSyncFileTag
      Src: /src/postgres/src/backend/access/transam/multixact.c:3577,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ftag
    - path
    argTypes:
    - FileTag*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3578
      start: 3574
    functionDepth: 1
    functionLinenumber: 3574
    functionLinenumberEnd: 3578
    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:3586,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ftag
    - path
    argTypes:
    - FileTag*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3587
      start: 3583
    functionDepth: 1
    functionLinenumber: 3583
    functionLinenumberEnd: 3587
    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:
    - TransactionIdEquals
    - TransactionIdIsNormal
    - TransactionIdGetStatus
    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:
    - TransactionIdIsValid
    - SubTransGetParent
    - TransactionIdDidCommit
    - elog
    - TransactionLogFetch
    - TransactionIdPrecedes
    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:
    - TransactionIdIsValid
    - SubTransGetParent
    - elog
    - TransactionLogFetch
    - TransactionIdDidAbort
    - TransactionIdPrecedes
    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: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/transam.c:288,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/transam.c:288,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - id1
    - id2
    argTypes:
    - TransactionId
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 293
    functionName: TransactionIdPrecedes
    functionSourceFile: /src/postgres/src/backend/access/transam/transam.c
    functionUses: 22
    functionsReached:
    - TransactionIdIsNormal
    linkageType: ''
    returnType: bool
    signature: bool TransactionIdPrecedes(TransactionId id1, TransactionId id2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/transam.c:303,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/transam.c:303,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - id1
    - id2
    argTypes:
    - TransactionId
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 308
    functionName: TransactionIdPrecedesOrEquals
    functionSourceFile: /src/postgres/src/backend/access/transam/transam.c
    functionUses: 4
    functionsReached:
    - TransactionIdIsNormal
    linkageType: ''
    returnType: bool
    signature: bool TransactionIdPrecedesOrEquals(TransactionId id1, TransactionId
      id2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/transam.c:318,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/transam.c:318,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - id1
    - id2
    argTypes:
    - TransactionId
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 323
    functionName: TransactionIdFollows
    functionSourceFile: /src/postgres/src/backend/access/transam/transam.c
    functionUses: 5
    functionsReached:
    - TransactionIdIsNormal
    linkageType: ''
    returnType: bool
    signature: bool TransactionIdFollows(TransactionId id1, TransactionId id2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/transam.c:333,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/transam.c:333,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - id1
    - id2
    argTypes:
    - TransactionId
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 328
    functionDepth: 1
    functionLinenumber: 328
    functionLinenumberEnd: 338
    functionName: TransactionIdFollowsOrEquals
    functionSourceFile: /src/postgres/src/backend/access/transam/transam.c
    functionUses: 4
    functionsReached:
    - TransactionIdIsNormal
    linkageType: ''
    returnType: bool
    signature: bool TransactionIdFollowsOrEquals(TransactionId id1, TransactionId
      id2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/transam.c:360,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - mainxid
    - nxids
    - xids
    argTypes:
    - TransactionId
    - int
    - TransactionId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 344
    functionDepth: 2
    functionLinenumber: 344
    functionLinenumberEnd: 364
    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:392,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/transam.c:396,1
    - Dst: TransactionIdGetStatus
      Src: /src/postgres/src/backend/access/transam/transam.c:402,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 405
    functionName: TransactionIdGetCommitLSN
    functionSourceFile: /src/postgres/src/backend/access/transam/transam.c
    functionUses: 1
    functionsReached:
    - TransactionIdEquals
    - TransactionIdIsNormal
    - TransactionIdGetStatus
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr TransactionIdGetCommitLSN(TransactionId xid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:102,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/access/transam/slru.c:102,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/slru.c:103,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:111,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/access/transam/slru.c:111,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/slru.c:112,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - ctl
    - path
    - segno
    argTypes:
    - SlruCtl
    - char*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 115
    functionName: SlruFileName
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 0
    functionsReached:
    - Assert
    - snprintf
    - INT64CONST
    linkageType: ''
    returnType: int
    signature: int SlruFileName(SlruCtl 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: 149
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 149
    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: 162
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 162
    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:203,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:204,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:207,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:208,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:209,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:210,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:218,1
    - Dst: BUFFERALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - nslots
    - nlsns
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 221
    functionName: SimpleLruShmemSize
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 2
    functionsReached:
    - BUFFERALIGN
    - Assert
    - MAXALIGN
    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:233,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/transam/slru.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - divisor
    - max
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 236
    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: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:259,1
    - Dst: ShmemInitStruct
      Src: /src/postgres/src/backend/access/transam/slru.c:261,1
    - Dst: SimpleLruShmemSize
      Src: /src/postgres/src/backend/access/transam/slru.c:262,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:271,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/slru.c:273,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/slru.c:278,1
    - Dst: pgstat_get_slru_index
      Src: /src/postgres/src/backend/access/transam/slru.c:280,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:283,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:285,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:287,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:289,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:291,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:293,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:297,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:299,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:301,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:306,1
    - Dst: BUFFERALIGN
      Src: /src/postgres/src/backend/access/transam/slru.c:309,1
    - Dst: LWLockInitialize
      Src: /src/postgres/src/backend/access/transam/slru.c:312,1
    - Dst: LWLockInitialize
      Src: /src/postgres/src/backend/access/transam/slru.c:325,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:330,1
    - Dst: SimpleLruShmemSize
      Src: /src/postgres/src/backend/access/transam/slru.c:330,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:334,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:335,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/access/transam/slru.c:346,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 55
    argCount: 9
    argNames:
    - ctl
    - name
    - nslots
    - nlsns
    - subdir
    - buffer_tranche_id
    - bank_tranche_id
    - sync_handler
    - long_segment_names
    argTypes:
    - SlruCtl
    - char*
    - int
    - int
    - char*
    - int
    - int
    - SyncRequestHandler
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 250
    functionDepth: 2
    functionLinenumber: 250
    functionLinenumberEnd: 347
    functionName: SimpleLruInit
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 2
    functionsReached:
    - BUFFERALIGN
    - Assert
    - LWLockInitialize
    - SimpleLruShmemSize
    - memset
    - strlcpy
    - MAXALIGN
    - pg_atomic_init_u64
    - ShmemInitStruct
    - pgstat_get_slru_index
    linkageType: ''
    returnType: void
    signature: "void SimpleLruInit(SlruCtl ctl, const char *name, int nslots, int
      nlsns,\n\t\t\t  const char *subdir, int buffer_tranche_id, int bank_tranche_id,\n\t\t\t
      \ SyncRequestHandler sync_handler, bool long_segment_names)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/transam/slru.c:360,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - name
    - newval
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 353
    functionDepth: 0
    functionLinenumber: 353
    functionLinenumberEnd: 363
    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:379,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/access/transam/slru.c:379,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/slru.c:379,1
    - Dst: SlruSelectLRUPage
      Src: /src/postgres/src/backend/access/transam/slru.c:382,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:383,1
    - Dst: SlruRecentlyUsed
      Src: /src/postgres/src/backend/access/transam/slru.c:392,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/slru.c:395,1
    - Dst: SimpleLruZeroLSNs
      Src: /src/postgres/src/backend/access/transam/slru.c:398,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/slru.c:408,1
    - Dst: pgstat_count_slru_page_zeroed
      Src: /src/postgres/src/backend/access/transam/slru.c:411,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ctl
    - pageno
    argTypes:
    - SlruCtl
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 373
    functionDepth: 2
    functionLinenumber: 373
    functionLinenumberEnd: 414
    functionName: SimpleLruZeroPage
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 3
    functionsReached:
    - Assert
    - SlruRecentlyUsed
    - SlruSelectLRUPage
    - pgstat_count_slru_page_zeroed
    - SimpleLruGetBankLock
    - SimpleLruZeroLSNs
    - MemSet
    - LWLockHeldByMeInMode
    - pg_atomic_write_u64
    linkageType: ''
    returnType: int
    signature: int SimpleLruZeroPage(SlruCtl ctl, int64 pageno)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/slru.c:432,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ctl
    - slotno
    argTypes:
    - SlruCtl
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 426
    functionDepth: 1
    functionLinenumber: 426
    functionLinenumberEnd: 434
    functionName: SimpleLruZeroLSNs
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 1
    functionsReached:
    - MemSet
    linkageType: ''
    returnType: void
    signature: void SimpleLruZeroLSNs(SlruCtl ctl, int slotno)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SlotGetBankNumber
      Src: /src/postgres/src/backend/access/transam/slru.c:447,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:449,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:452,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:453,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:454,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:455,1
    - Dst: LWLockConditionalAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:468,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:478,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - ctl
    - slotno
    argTypes:
    - SlruCtl
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 443
    functionDepth: 1
    functionLinenumber: 443
    functionLinenumberEnd: 481
    functionName: SimpleLruWaitIO
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 0
    functionsReached:
    - Assert
    - LWLockConditionalAcquire
    - SlotGetBankNumber
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void SimpleLruWaitIO(SlruCtl ctl, int slotno)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/slru.c:505,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:507,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/access/transam/slru.c:507,1
    - Dst: SlruSelectLRUPage
      Src: /src/postgres/src/backend/access/transam/slru.c:516,1
    - Dst: SimpleLruWaitIO
      Src: /src/postgres/src/backend/access/transam/slru.c:530,1
    - Dst: SlruRecentlyUsed
      Src: /src/postgres/src/backend/access/transam/slru.c:535,1
    - Dst: pgstat_count_slru_page_hit
      Src: /src/postgres/src/backend/access/transam/slru.c:538,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:544,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:554,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:557,1
    - Dst: SlruPhysicalReadPage
      Src: /src/postgres/src/backend/access/transam/slru.c:560,1
    - Dst: SimpleLruZeroLSNs
      Src: /src/postgres/src/backend/access/transam/slru.c:563,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:566,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:568,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:574,1
    - Dst: SlruReportIOError
      Src: /src/postgres/src/backend/access/transam/slru.c:578,1
    - Dst: SlruRecentlyUsed
      Src: /src/postgres/src/backend/access/transam/slru.c:580,1
    - Dst: pgstat_count_slru_page_read
      Src: /src/postgres/src/backend/access/transam/slru.c:583,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 4
    argNames:
    - ctl
    - pageno
    - write_ok
    - xid
    argTypes:
    - SlruCtl
    - int64
    - bool
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 500
    functionDepth: 2
    functionLinenumber: 500
    functionLinenumberEnd: 587
    functionName: SimpleLruReadPage
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 4
    functionsReached:
    - Assert
    - SlruRecentlyUsed
    - SlruSelectLRUPage
    - pgstat_count_slru_page_read
    - SlruPhysicalReadPage
    - SimpleLruGetBankLock
    - SimpleLruZeroLSNs
    - LWLockHeldByMeInMode
    - SlruReportIOError
    - LWLockRelease
    - LWLockAcquire
    - pgstat_count_slru_page_hit
    - SimpleLruWaitIO
    linkageType: ''
    returnType: int
    signature: "int SimpleLruReadPage(SlruCtl ctl, int64 pageno, bool write_ok,\n\t\t\t\t
      \ TransactionId xid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/slru.c:607,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:613,1
    - Dst: SlruRecentlyUsed
      Src: /src/postgres/src/backend/access/transam/slru.c:623,1
    - Dst: pgstat_count_slru_page_hit
      Src: /src/postgres/src/backend/access/transam/slru.c:626,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:633,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:634,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/backend/access/transam/slru.c:636,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - ctl
    - pageno
    - xid
    argTypes:
    - SlruCtl
    - int64
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 603
    functionDepth: 3
    functionLinenumber: 603
    functionLinenumberEnd: 637
    functionName: SimpleLruReadPage_ReadOnly
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 2
    functionsReached:
    - SlruRecentlyUsed
    - SimpleLruGetBankLock
    - SimpleLruReadPage
    - LWLockRelease
    - LWLockAcquire
    - pgstat_count_slru_page_hit
    linkageType: ''
    returnType: int
    signature: int SimpleLruReadPage_ReadOnly(SlruCtl ctl, int64 pageno, TransactionId
      xid)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SlotGetBankNumber
      Src: /src/postgres/src/backend/access/transam/slru.c:655,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:658,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:659,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/access/transam/slru.c:659,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/slru.c:659,1
    - Dst: SimpleLruWaitIO
      Src: /src/postgres/src/backend/access/transam/slru.c:665,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:685,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:688,1
    - Dst: SlruPhysicalWritePage
      Src: /src/postgres/src/backend/access/transam/slru.c:691,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/slru.c:697,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:701,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:703,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:712,1
    - Dst: SlruReportIOError
      Src: /src/postgres/src/backend/access/transam/slru.c:716,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 29
    argCount: 3
    argNames:
    - ctl
    - slotno
    - fdata
    argTypes:
    - SlruCtl
    - int
    - SlruWriteAll
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 650
    functionDepth: 2
    functionLinenumber: 650
    functionLinenumberEnd: 724
    functionName: SlruInternalWritePage
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 0
    functionsReached:
    - Assert
    - CloseTransientFile
    - SlotGetBankNumber
    - SimpleLruGetBankLock
    - SlruPhysicalWritePage
    - LWLockHeldByMeInMode
    - SlruReportIOError
    - LWLockRelease
    - LWLockAcquire
    - SimpleLruWaitIO
    linkageType: ''
    returnType: void
    signature: void SlruInternalWritePage(SlruCtl ctl, int slotno, SlruWriteAll fdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:733,1
    - Dst: SlruInternalWritePage
      Src: /src/postgres/src/backend/access/transam/slru.c:735,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctl
    - slotno
    argTypes:
    - SlruCtl
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 730
    functionDepth: 3
    functionLinenumber: 730
    functionLinenumberEnd: 736
    functionName: SimpleLruWritePage
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 4
    functionsReached:
    - SlruInternalWritePage
    - Assert
    linkageType: ''
    returnType: void
    signature: void SimpleLruWritePage(SlruCtl ctl, int slotno)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_count_slru_page_exists
      Src: /src/postgres/src/backend/access/transam/slru.c:756,1
    - Dst: SlruFileName
      Src: /src/postgres/src/backend/access/transam/slru.c:758,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/access/transam/slru.c:760,1
    - Dst: SlruReportIOError
      Src: /src/postgres/src/backend/access/transam/slru.c:770,1
    - Dst: lseek
      Src: /src/postgres/src/backend/access/transam/slru.c:773,1
    - Dst: SlruReportIOError
      Src: /src/postgres/src/backend/access/transam/slru.c:777,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/slru.c:782,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - ctl
    - pageno
    argTypes:
    - SlruCtl
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 744
    functionDepth: 2
    functionLinenumber: 744
    functionLinenumberEnd: 790
    functionName: SimpleLruDoesPhysicalPageExist
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 3
    functionsReached:
    - CloseTransientFile
    - lseek
    - SlruFileName
    - OpenTransientFile
    - SlruReportIOError
    - pgstat_count_slru_page_exists
    linkageType: ''
    returnType: bool
    signature: bool SimpleLruDoesPhysicalPageExist(SlruCtl ctl, int64 pageno)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SlruFileName
      Src: /src/postgres/src/backend/access/transam/slru.c:812,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/access/transam/slru.c:821,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/slru.c:831,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/slru.c:832,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/slru.c:834,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/slru.c:839,1
    - Dst: pg_pread
      Src: /src/postgres/src/backend/access/transam/slru.c:840,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/slru.c:842,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/slru.c:845,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/slru.c:848,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/slru.c:850,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 3
    argNames:
    - ctl
    - pageno
    - slotno
    argTypes:
    - SlruCtl
    - int64
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 802
    functionDepth: 3
    functionLinenumber: 802
    functionLinenumberEnd: 858
    functionName: SlruPhysicalReadPage
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 1
    functionsReached:
    - errmsg
    - CloseTransientFile
    - ereport
    - SlruFileName
    - OpenTransientFile
    - MemSet
    - pgstat_report_wait_end
    - pg_pread
    - pgstat_report_wait_start
    linkageType: ''
    returnType: bool
    signature: bool SlruPhysicalReadPage(SlruCtl ctl, int64 pageno, int slotno)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_count_slru_page_written
      Src: /src/postgres/src/backend/access/transam/slru.c:885,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/slru.c:914,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/slru.c:922,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/slru.c:923,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/slru.c:924,1
    - Dst: SlruFileName
      Src: /src/postgres/src/backend/access/transam/slru.c:962,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/access/transam/slru.c:963,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/slru.c:991,1
    - Dst: pg_pwrite
      Src: /src/postgres/src/backend/access/transam/slru.c:992,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/slru.c:994,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/slru.c:1001,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/slru.c:1004,1
    - Dst: INIT_SLRUFILETAG
      Src: /src/postgres/src/backend/access/transam/slru.c:1011,1
    - Dst: RegisterSyncRequest
      Src: /src/postgres/src/backend/access/transam/slru.c:1012,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/slru.c:1015,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/transam/slru.c:1016,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/slru.c:1018,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/slru.c:1021,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/slru.c:1024,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/slru.c:1031,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 76
    argCount: 4
    argNames:
    - ctl
    - pageno
    - slotno
    - fdata
    argTypes:
    - SlruCtl
    - int64
    - int
    - SlruWriteAll
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1040
      start: 874
    functionDepth: 3
    functionLinenumber: 874
    functionLinenumberEnd: 1040
    functionName: SlruPhysicalWritePage
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 1
    functionsReached:
    - START_CRIT_SECTION
    - pg_pwrite
    - pgstat_count_slru_page_written
    - CloseTransientFile
    - RegisterSyncRequest
    - XLogFlush
    - SlruFileName
    - OpenTransientFile
    - pgstat_report_wait_end
    - END_CRIT_SECTION
    - XLogRecPtrIsInvalid
    - pgstat_report_wait_start
    - pg_fsync
    - INIT_SLRUFILETAG
    linkageType: ''
    returnType: bool
    signature: bool SlruPhysicalWritePage(SlruCtl ctl, int64 pageno, int slotno, SlruWriteAll
      fdata)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: SlruFileName
      Src: /src/postgres/src/backend/access/transam/slru.c:1054,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/slru.c:1059,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/slru.c:1060,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/slru.c:1061,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/slru.c:1062,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/slru.c:1065,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/slru.c:1066,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/slru.c:1067,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/slru.c:1068,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/slru.c:1073,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/slru.c:1074,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/slru.c:1075,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/slru.c:1076,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/slru.c:1079,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/slru.c:1080,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/slru.c:1081,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/slru.c:1085,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/slru.c:1086,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/slru.c:1087,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/slru.c:1088,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/slru.c:1091,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/slru.c:1092,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/slru.c:1093,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/slru.c:1097,1
    - Dst: data_sync_elevel
      Src: /src/postgres/src/backend/access/transam/slru.c:1097,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/slru.c:1098,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/slru.c:1099,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/slru.c:1100,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/slru.c:1104,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/slru.c:1105,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/slru.c:1106,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/slru.c:1107,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/slru.c:1112,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 3
    argNames:
    - ctl
    - pageno
    - xid
    argTypes:
    - SlruCtl
    - int64
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1046
    functionDepth: 2
    functionLinenumber: 1046
    functionLinenumberEnd: 1116
    functionName: SlruReportIOError
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 3
    functionsReached:
    - errmsg
    - ereport
    - SlruFileName
    - elog
    - data_sync_elevel
    - errdetail
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void SlruReportIOError(SlruCtl ctl, int64 pageno, TransactionId xid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SlotGetBankNumber
      Src: /src/postgres/src/backend/access/transam/slru.c:1124,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - shared
    - slotno
    argTypes:
    - SlruShared
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1152
      start: 1121
    functionDepth: 1
    functionLinenumber: 1121
    functionLinenumberEnd: 1152
    functionName: SlruRecentlyUsed
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 3
    functionsReached:
    - SlotGetBankNumber
    - Assert
    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:1186,1
    - Dst: LWLockHeldByMe
      Src: /src/postgres/src/backend/access/transam/slru.c:1186,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/slru.c:1186,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/slru.c:1253,1
    - Dst: SlruCtl::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1260,1
    - Dst: SlruCtl::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1272,1
    - Dst: SimpleLruWaitIO
      Src: /src/postgres/src/backend/access/transam/slru.c:1291,1
    - Dst: SlruInternalWritePage
      Src: /src/postgres/src/backend/access/transam/slru.c:1304,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 41
    argCount: 2
    argNames:
    - ctl
    - pageno
    argTypes:
    - SlruCtl
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1312
      start: 1167
    functionDepth: 3
    functionLinenumber: 1167
    functionLinenumberEnd: 1312
    functionName: SlruSelectLRUPage
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 2
    functionsReached:
    - SlruInternalWritePage
    - Assert
    - SlruCtl::PagePrecedes
    - LWLockHeldByMe
    - SimpleLruGetBankLock
    - pg_atomic_read_u64
    - SimpleLruWaitIO
    linkageType: ''
    returnType: int
    signature: int SlruSelectLRUPage(SlruCtl ctl, int64 pageno)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SlotGetBankNumber
      Src: /src/postgres/src/backend/access/transam/slru.c:1326,1
    - Dst: pgstat_count_slru_flush
      Src: /src/postgres/src/backend/access/transam/slru.c:1330,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:1337,1
    - Dst: SlotGetBankNumber
      Src: /src/postgres/src/backend/access/transam/slru.c:1341,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:1349,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:1350,1
    - Dst: SlruInternalWritePage
      Src: /src/postgres/src/backend/access/transam/slru.c:1358,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1365,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:1371,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/slru.c:1379,1
    - Dst: SlruReportIOError
      Src: /src/postgres/src/backend/access/transam/slru.c:1388,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/access/transam/slru.c:1392,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 2
    argNames:
    - ctl
    - allow_redirtied
    argTypes:
    - SlruCtl
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1393
      start: 1320
    functionDepth: 3
    functionLinenumber: 1320
    functionLinenumberEnd: 1393
    functionName: SimpleLruWriteAll
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 3
    functionsReached:
    - SlruInternalWritePage
    - Assert
    - CloseTransientFile
    - SlotGetBankNumber
    - pgstat_count_slru_flush
    - SlruReportIOError
    - LWLockRelease
    - LWLockAcquire
    - fsync_fname
    linkageType: ''
    returnType: void
    signature: void SimpleLruWriteAll(SlruCtl ctl, bool allow_redirtied)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_count_slru_truncate
      Src: /src/postgres/src/backend/access/transam/slru.c:1413,1
    - Dst: SlruCtl::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1429,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/slru.c:1429,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/slru.c:1432,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/slru.c:1433,1
    - Dst: SlotGetBankNumber
      Src: /src/postgres/src/backend/access/transam/slru.c:1438,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:1439,1
    - Dst: SlotGetBankNumber
      Src: /src/postgres/src/backend/access/transam/slru.c:1442,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:1450,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:1451,1
    - Dst: SlruCtl::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1457,1
    - Dst: SlruInternalWritePage
      Src: /src/postgres/src/backend/access/transam/slru.c:1481,1
    - Dst: SimpleLruWaitIO
      Src: /src/postgres/src/backend/access/transam/slru.c:1483,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:1485,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:1489,1
    - Dst: SlruScanDirectory
      Src: /src/postgres/src/backend/access/transam/slru.c:1492,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 2
    argNames:
    - ctl
    - cutoffPage
    argTypes:
    - SlruCtl
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1493
      start: 1406
    functionDepth: 3
    functionLinenumber: 1406
    functionLinenumberEnd: 1493
    functionName: SimpleLruTruncate
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 2
    functionsReached:
    - errmsg
    - SlruInternalWritePage
    - SlruCtl::PagePrecedes
    - SlotGetBankNumber
    - ereport
    - pg_atomic_read_u64
    - pgstat_count_slru_truncate
    - LWLockRelease
    - LWLockAcquire
    - SimpleLruWaitIO
    - SlruScanDirectory
    linkageType: ''
    returnType: void
    signature: void SimpleLruTruncate(SlruCtl ctl, int64 cutoffPage)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INIT_SLRUFILETAG
      Src: /src/postgres/src/backend/access/transam/slru.c:1511,1
    - Dst: RegisterSyncRequest
      Src: /src/postgres/src/backend/access/transam/slru.c:1512,1
    - Dst: SlruFileName
      Src: /src/postgres/src/backend/access/transam/slru.c:1516,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/slru.c:1517,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/slru.c:1517,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/slru.c:1518,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ctl
    - segno
    argTypes:
    - SlruCtl
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1519
      start: 1501
    functionDepth: 2
    functionLinenumber: 1501
    functionLinenumberEnd: 1519
    functionName: SlruInternalDeleteSegment
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 0
    functionsReached:
    - errmsg_internal
    - ereport
    - SlruFileName
    - RegisterSyncRequest
    - unlink
    - INIT_SLRUFILETAG
    linkageType: ''
    returnType: void
    signature: void SlruInternalDeleteSegment(SlruCtl ctl, int64 segno)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: SlotGetBankNumber
      Src: /src/postgres/src/backend/access/transam/slru.c:1528,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:1532,1
    - Dst: SlotGetBankNumber
      Src: /src/postgres/src/backend/access/transam/slru.c:1538,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:1546,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/slru.c:1547,1
    - Dst: SlruInternalWritePage
      Src: /src/postgres/src/backend/access/transam/slru.c:1569,1
    - Dst: SimpleLruWaitIO
      Src: /src/postgres/src/backend/access/transam/slru.c:1571,1
    - Dst: SlruInternalDeleteSegment
      Src: /src/postgres/src/backend/access/transam/slru.c:1583,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/slru.c:1585,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 2
    argNames:
    - ctl
    - segno
    argTypes:
    - SlruCtl
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1586
      start: 1524
    functionDepth: 3
    functionLinenumber: 1524
    functionLinenumberEnd: 1586
    functionName: SlruDeleteSegment
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 2
    functionsReached:
    - SlruInternalWritePage
    - SlotGetBankNumber
    - LWLockRelease
    - LWLockAcquire
    - SimpleLruWaitIO
    - SlruInternalDeleteSegment
    linkageType: ''
    returnType: void
    signature: void SlruDeleteSegment(SlruCtl ctl, int64 segno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1606,1
    - Dst: SlruCtl::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1608,1
    - Dst: SlruCtl::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1609,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - ctl
    - segpage
    - cutoffPage
    argTypes:
    - SlruCtl
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1610
      start: 1601
    functionDepth: 1
    functionLinenumber: 1601
    functionLinenumberEnd: 1610
    functionName: SlruMayDeleteSegment
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 0
    functionsReached:
    - Assert
    - SlruCtl::PagePrecedes
    linkageType: ''
    returnType: bool
    signature: bool SlruMayDeleteSegment(SlruCtl ctl, int64 segpage, int64 cutoffPage)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1631,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1631,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1632,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1632,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1633,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1633,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1634,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1634,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1635,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1635,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1636,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1636,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1637,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/transam/slru.c:1637,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1638,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/transam/slru.c:1638,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1639,1
    - Dst: SlruCtl::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1639,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1640,1
    - Dst: SlruCtl::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1640,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1641,1
    - Dst: SlruCtl::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1641,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1642,1
    - Dst: SlruCtl::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1642,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1643,1
    - Dst: SlruCtl::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1643,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1644,1
    - Dst: SlruCtl::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1644,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1645,1
    - Dst: SlruCtl::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1645,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1647,1
    - Dst: SlruCtl::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1647,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1649,1
    - Dst: SlruCtl::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1649,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1650,1
    - Dst: SlruCtl::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1650,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1651,1
    - Dst: SlruCtl::PagePrecedes
      Src: /src/postgres/src/backend/access/transam/slru.c:1651,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1660,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1664,1
    - Dst: SlruMayDeleteSegment
      Src: /src/postgres/src/backend/access/transam/slru.c:1664,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1676,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/slru.c:1680,1
    - Dst: SlruMayDeleteSegment
      Src: /src/postgres/src/backend/access/transam/slru.c:1680,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 36
    argCount: 3
    argNames:
    - ctl
    - per_page
    - offset
    argTypes:
    - SlruCtl
    - int
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1684
      start: 1613
    functionDepth: 2
    functionLinenumber: 1613
    functionLinenumberEnd: 1684
    functionName: SlruPagePrecedesTestOffset
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 0
    functionsReached:
    - Assert
    - SlruCtl::PagePrecedes
    - SlruMayDeleteSegment
    - TransactionIdFollowsOrEquals
    - TransactionIdPrecedes
    linkageType: ''
    returnType: void
    signature: void SlruPagePrecedesTestOffset(SlruCtl ctl, int per_page, uint32 offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SlruPagePrecedesTestOffset
      Src: /src/postgres/src/backend/access/transam/slru.c:1699,1
    - Dst: SlruPagePrecedesTestOffset
      Src: /src/postgres/src/backend/access/transam/slru.c:1700,1
    - Dst: SlruPagePrecedesTestOffset
      Src: /src/postgres/src/backend/access/transam/slru.c:1701,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctl
    - per_page
    argTypes:
    - SlruCtl
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1702
      start: 1695
    functionDepth: 3
    functionLinenumber: 1695
    functionLinenumberEnd: 1702
    functionName: SlruPagePrecedesUnitTests
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 1
    functionsReached:
    - SlruPagePrecedesTestOffset
    linkageType: ''
    returnType: void
    signature: void SlruPagePrecedesUnitTests(SlruCtl ctl, int per_page)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SlruMayDeleteSegment
      Src: /src/postgres/src/backend/access/transam/slru.c:1716,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - ctl
    - filename
    - segpage
    - data
    argTypes:
    - SlruCtl
    - char*
    - int64
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1720
      start: 1710
    functionDepth: 2
    functionLinenumber: 1710
    functionLinenumberEnd: 1720
    functionName: SlruScanDirCbReportPresence
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 0
    functionsReached:
    - SlruMayDeleteSegment
    linkageType: ''
    returnType: bool
    signature: "bool SlruScanDirCbReportPresence(SlruCtl 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:1732,1
    - Dst: SlruInternalDeleteSegment
      Src: /src/postgres/src/backend/access/transam/slru.c:1733,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - ctl
    - filename
    - segpage
    - data
    argTypes:
    - SlruCtl
    - char*
    - int64
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1736
      start: 1726
    functionDepth: 3
    functionLinenumber: 1726
    functionLinenumberEnd: 1736
    functionName: SlruScanDirCbDeleteCutoff
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 0
    functionsReached:
    - SlruMayDeleteSegment
    - SlruInternalDeleteSegment
    linkageType: ''
    returnType: bool
    signature: "bool SlruScanDirCbDeleteCutoff(SlruCtl 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:1745,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ctl
    - filename
    - segpage
    - data
    argTypes:
    - SlruCtl
    - char*
    - int64
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1748
      start: 1742
    functionDepth: 3
    functionLinenumber: 1742
    functionLinenumberEnd: 1748
    functionName: SlruScanDirCbDeleteAll
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 1
    functionsReached:
    - SlruInternalDeleteSegment
    linkageType: ''
    returnType: bool
    signature: bool SlruScanDirCbDeleteAll(SlruCtl ctl, char *filename, int64 segpage,
      void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - ctl
    - len
    argTypes:
    - SlruCtl
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1772
      start: 1756
    functionDepth: 0
    functionLinenumber: 1756
    functionLinenumberEnd: 1772
    functionName: SlruCorrectSegmentFilenameLength
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool SlruCorrectSegmentFilenameLength(SlruCtl ctl, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/access/transam/slru.c:1798,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/access/transam/slru.c:1799,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/slru.c:1803,1
    - Dst: SlruCorrectSegmentFilenameLength
      Src: /src/postgres/src/backend/access/transam/slru.c:1805,1
    - Dst: strspn
      Src: /src/postgres/src/backend/access/transam/slru.c:1806,1
    - Dst: strtoi64
      Src: /src/postgres/src/backend/access/transam/slru.c:1808,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/slru.c:1811,1
    - Dst: callback
      Src: /src/postgres/src/backend/access/transam/slru.c:1813,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/access/transam/slru.c:1818,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - ctl
    - callback
    - data
    argTypes:
    - SlruCtl
    - SlruScanCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1821
      start: 1789
    functionDepth: 2
    functionLinenumber: 1789
    functionLinenumberEnd: 1821
    functionName: SlruScanDirectory
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 3
    functionsReached:
    - strspn
    - ReadDir
    - AllocateDir
    - FreeDir
    - elog
    - strtoi64
    - callback
    - SlruCorrectSegmentFilenameLength
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool SlruScanDirectory(SlruCtl ctl, SlruScanCallback callback, void
      *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SlruFileName
      Src: /src/postgres/src/backend/access/transam/slru.c:1836,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/access/transam/slru.c:1838,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/slru.c:1842,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/transam/slru.c:1843,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/slru.c:1844,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/slru.c:1847,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - ctl
    - ftag
    - path
    argTypes:
    - SlruCtl
    - FileTag*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1851
      start: 1829
    functionDepth: 2
    functionLinenumber: 1829
    functionLinenumberEnd: 1851
    functionName: SlruSyncFileTag
    functionSourceFile: /src/postgres/src/backend/access/transam/slru.c
    functionUses: 3
    functionsReached:
    - CloseTransientFile
    - SlruFileName
    - OpenTransientFile
    - pgstat_report_wait_end
    - pgstat_report_wait_start
    - pg_fsync
    linkageType: ''
    returnType: int
    signature: int SlruSyncFileTag(SlruCtl ctl, const FileTag *ftag, char *path)
  - 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: VarsupShmemSize
    functionSourceFile: /src/postgres/src/backend/access/transam/varsup.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Size
    signature: Size VarsupShmemSize(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ShmemInitStruct
      Src: /src/postgres/src/backend/access/transam/varsup.c:52,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/varsup.c:57,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/varsup.c:58,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/varsup.c:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 62
    functionName: VarsupShmemInit
    functionSourceFile: /src/postgres/src/backend/access/transam/varsup.c
    functionUses: 0
    functionsReached:
    - memset
    - Assert
    - ShmemInitStruct
    linkageType: ''
    returnType: void
    signature: void VarsupShmemInit(void)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/access/transam/varsup.c:86,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/varsup.c:87,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/access/transam/varsup.c:93,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/varsup.c:95,1
    - Dst: FullTransactionIdFromEpochAndXid
      Src: /src/postgres/src/backend/access/transam/varsup.c:98,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/varsup.c:102,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/varsup.c:103,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/varsup.c:105,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/varsup.c:108,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/transam/varsup.c:123,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/varsup.c:137,1
    - Dst: SendPostmasterSignal
      Src: /src/postgres/src/backend/access/transam/varsup.c:145,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/transam/varsup.c:148,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/access/transam/varsup.c:150,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/varsup.c:154,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/varsup.c:155,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/varsup.c:156,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/varsup.c:158,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/varsup.c:161,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/varsup.c:162,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/varsup.c:163,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/varsup.c:165,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/transam/varsup.c:168,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/access/transam/varsup.c:170,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: errhint
      Src: /src/postgres/src/backend/access/transam/varsup.c:178,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/varsup.c:181,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/varsup.c:182,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/varsup.c:185,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/varsup.c:190,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/varsup.c:192,1
    - Dst: ExtendCLOG
      Src: /src/postgres/src/backend/access/transam/varsup.c:204,1
    - Dst: ExtendCommitTs
      Src: /src/postgres/src/backend/access/transam/varsup.c:205,1
    - Dst: ExtendSUBTRANS
      Src: /src/postgres/src/backend/access/transam/varsup.c:206,1
    - Dst: FullTransactionIdAdvance
      Src: /src/postgres/src/backend/access/transam/varsup.c:214,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/varsup.c:252,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/varsup.c:253,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/varsup.c:254,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/varsup.c:255,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/varsup.c:266,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/varsup.c:267,1
    - Dst: pg_write_barrier
      Src: /src/postgres/src/backend/access/transam/varsup.c:272,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/varsup.c:279,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 55
    argCount: 1
    argNames:
    - isSubXact
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 76
    functionDepth: 2
    functionLinenumber: 76
    functionLinenumberEnd: 282
    functionName: GetNewTransactionId
    functionSourceFile: /src/postgres/src/backend/access/transam/varsup.c
    functionUses: 1
    functionsReached:
    - XidFromFullTransactionId
    - errhint
    - LWLockRelease
    - RecoveryInProgress
    - FullTransactionIdAdvance
    - IsInParallelMode
    - ExtendCLOG
    - ExtendCommitTs
    - SendPostmasterSignal
    - errmsg
    - FullTransactionIdFromEpochAndXid
    - elog
    - Assert
    - IsBootstrapProcessingMode
    - ereport
    - TransactionIdFollowsOrEquals
    - pg_write_barrier
    - get_database_name
    - ExtendSUBTRANS
    - LWLockAcquire
    - errcode
    linkageType: ''
    returnType: FullTransactionId
    signature: FullTransactionId GetNewTransactionId(bool isSubXact)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/varsup.c:292,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/varsup.c:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 297
    functionName: ReadNextFullTransactionId
    functionSourceFile: /src/postgres/src/backend/access/transam/varsup.c
    functionUses: 5
    functionsReached:
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: FullTransactionId
    signature: FullTransactionId ReadNextFullTransactionId(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/varsup.c:315,1
    - Dst: AmStartupProcess
      Src: /src/postgres/src/backend/access/transam/varsup.c:315,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/varsup.c:318,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/transam/varsup.c:319,1
    - Dst: TransactionIdAdvance
      Src: /src/postgres/src/backend/access/transam/varsup.c:330,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/varsup.c:331,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/transam/varsup.c:332,1
    - Dst: FullTransactionIdFromEpochAndXid
      Src: /src/postgres/src/backend/access/transam/varsup.c:334,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/varsup.c:340,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/varsup.c:342,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 303
    functionDepth: 2
    functionLinenumber: 303
    functionLinenumberEnd: 343
    functionName: AdvanceNextFullTransactionIdPastXid
    functionSourceFile: /src/postgres/src/backend/access/transam/varsup.c
    functionUses: 1
    functionsReached:
    - EpochFromFullTransactionId
    - Assert
    - FullTransactionIdFromEpochAndXid
    - XidFromFullTransactionId
    - AmStartupProcess
    - unlikely
    - TransactionIdFollowsOrEquals
    - LWLockRelease
    - LWLockAcquire
    - TransactionIdAdvance
    linkageType: ''
    returnType: void
    signature: void AdvanceNextFullTransactionIdPastXid(TransactionId xid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/varsup.c:357,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/varsup.c:358,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/varsup.c:363,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - oldest_datfrozenxid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 354
    functionDepth: 2
    functionLinenumber: 354
    functionLinenumberEnd: 364
    functionName: AdvanceOldestClogXid
    functionSourceFile: /src/postgres/src/backend/access/transam/varsup.c
    functionUses: 0
    functionsReached:
    - LWLockRelease
    - LWLockAcquire
    - TransactionIdPrecedes
    linkageType: ''
    returnType: void
    signature: void AdvanceOldestClogXid(TransactionId oldest_datfrozenxid)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/varsup.c:380,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/varsup.c:380,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/varsup.c:443,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/varsup.c:450,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/varsup.c:451,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/varsup.c:454,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/varsup.c:455,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/transam/varsup.c:465,1
    - Dst: SendPostmasterSignal
      Src: /src/postgres/src/backend/access/transam/varsup.c:467,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/transam/varsup.c:470,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/access/transam/varsup.c:483,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/access/transam/varsup.c:484,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/varsup.c:489,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/varsup.c:490,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/varsup.c:493,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/varsup.c:496,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/varsup.c:497,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/varsup.c:500,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 2
    argNames:
    - oldest_datfrozenxid
    - oldest_datoid
    argTypes:
    - TransactionId
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 371
    functionDepth: 2
    functionLinenumber: 371
    functionLinenumberEnd: 503
    functionName: SetTransactionIdLimit
    functionSourceFile: /src/postgres/src/backend/access/transam/varsup.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - XidFromFullTransactionId
    - errmsg_internal
    - ereport
    - TransactionIdIsNormal
    - errhint
    - IsTransactionState
    - TransactionIdFollowsOrEquals
    - get_database_name
    - LWLockRelease
    - LWLockAcquire
    - SendPostmasterSignal
    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:525,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/varsup.c:526,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/varsup.c:530,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/varsup.c:532,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/varsup.c:534,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/transam/varsup.c:536,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/access/transam/varsup.c:538,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/transam/varsup.c:538,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 516
    functionDepth: 2
    functionLinenumber: 516
    functionLinenumberEnd: 541
    functionName: ForceTransactionIdLimitUpdate
    functionSourceFile: /src/postgres/src/backend/access/transam/varsup.c
    functionUses: 0
    functionsReached:
    - XidFromFullTransactionId
    - TransactionIdIsValid
    - SearchSysCacheExists1
    - TransactionIdIsNormal
    - TransactionIdFollowsOrEquals
    - LWLockRelease
    - LWLockAcquire
    - ObjectIdGetDatum
    linkageType: ''
    returnType: bool
    signature: bool ForceTransactionIdLimitUpdate(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/varsup.c:560,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/varsup.c:561,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/varsup.c:563,1
    - Dst: XLogPutNextOid
      Src: /src/postgres/src/backend/access/transam/varsup.c:602,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/varsup.c:611,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 554
    functionDepth: 1
    functionLinenumber: 554
    functionLinenumberEnd: 614
    functionName: GetNewObjectId
    functionSourceFile: /src/postgres/src/backend/access/transam/varsup.c
    functionUses: 0
    functionsReached:
    - elog
    - XLogPutNextOid
    - LWLockRelease
    - LWLockAcquire
    - RecoveryInProgress
    linkageType: ''
    returnType: Oid
    signature: Oid GetNewObjectId(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/varsup.c:627,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/varsup.c:630,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/varsup.c:633,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/varsup.c:639,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - nextOid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 622
    functionDepth: 1
    functionLinenumber: 622
    functionLinenumberEnd: 640
    functionName: SetNextObjectId
    functionSourceFile: /src/postgres/src/backend/access/transam/varsup.c
    functionUses: 0
    functionsReached:
    - elog
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void SetNextObjectId(Oid nextOid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SetNextObjectId
      Src: /src/postgres/src/backend/access/transam/varsup.c:654,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 651
    functionDepth: 2
    functionLinenumber: 651
    functionLinenumberEnd: 655
    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:678,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/varsup.c:678,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/varsup.c:681,1
    - Dst: pg_memory_barrier
      Src: /src/postgres/src/backend/access/transam/varsup.c:698,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/varsup.c:700,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/varsup.c:702,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/transam/varsup.c:702,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/access/transam/varsup.c:703,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 672
    functionDepth: 2
    functionLinenumber: 672
    functionLinenumberEnd: 704
    functionName: AssertTransactionIdInAllowableRange
    functionSourceFile: /src/postgres/src/backend/access/transam/varsup.c
    functionUses: 0
    functionsReached:
    - Assert
    - TransactionIdIsValid
    - XidFromFullTransactionId
    - TransactionIdIsNormal
    - TransactionIdFollowsOrEquals
    - TransactionIdPrecedesOrEquals
    - pg_memory_barrier
    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:
    - RmgrIdExists
    - rm_startup
    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:
    - RmgrIdExists
    - rm_cleanup
    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:
    - errmsg
    - errhint
    - ereport
    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:
    - errmsg
    - ereport
    - errhint
    - RmgrIdIsCustom
    - RmgrIdExists
    - pg_strcasecmp
    - errdetail
    - strlen
    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:
    - tuplestore_putvalues
    - Int32GetDatum
    - CStringGetTextDatum
    - BoolGetDatum
    - GetRmgr
    - InitMaterializedSRF
    - RmgrIdExists
    - RmgrIdIsBuiltin
    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: 399
      start: 386
    functionDepth: 0
    functionLinenumber: 386
    functionLinenumberEnd: 399
    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: 416
      start: 406
    functionDepth: 0
    functionLinenumber: 406
    functionLinenumberEnd: 416
    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:428,1
    - Dst: AssignTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:429,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:430,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 425
    functionDepth: 1
    functionLinenumber: 425
    functionLinenumberEnd: 431
    functionName: GetTopTransactionId
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 2
    functionsReached:
    - FullTransactionIdIsValid
    - AssignTransactionId
    - XidFromFullTransactionId
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId GetTopTransactionId(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:443,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 440
    functionDepth: 1
    functionLinenumber: 440
    functionLinenumberEnd: 444
    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:458,1
    - Dst: AssignTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:459,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:460,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 453
    functionDepth: 1
    functionLinenumber: 453
    functionLinenumberEnd: 461
    functionName: GetCurrentTransactionId
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 8
    functionsReached:
    - FullTransactionIdIsValid
    - AssignTransactionId
    - XidFromFullTransactionId
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId GetCurrentTransactionId(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:473,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 470
    functionDepth: 1
    functionLinenumber: 470
    functionLinenumberEnd: 474
    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:485,1
    - Dst: AssignTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:486,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 482
    functionDepth: 1
    functionLinenumber: 482
    functionLinenumberEnd: 488
    functionName: GetTopFullTransactionId
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - FullTransactionIdIsValid
    - AssignTransactionId
    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: 502
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 502
    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:516,1
    - Dst: AssignTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:517,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 511
    functionDepth: 1
    functionLinenumber: 511
    functionLinenumberEnd: 519
    functionName: GetCurrentFullTransactionId
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - FullTransactionIdIsValid
    - AssignTransactionId
    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: 533
      start: 529
    functionDepth: 0
    functionLinenumber: 529
    functionLinenumberEnd: 533
    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:543,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 540
    functionDepth: 1
    functionLinenumber: 540
    functionLinenumberEnd: 545
    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:566,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/access/transam/xact.c:570,1
    - Dst: IsSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:574,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:578,1
    - Dst: GetCurrentTransactionIdIfAny
      Src: /src/postgres/src/backend/access/transam/xact.c:578,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 558
    functionDepth: 2
    functionLinenumber: 558
    functionLinenumberEnd: 582
    functionName: IsSubxactTopXidLogPending
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsValid
    - XLogLogicalInfoActive
    - IsSubTransaction
    - IsTransactionState
    - GetCurrentTransactionIdIfAny
    linkageType: ''
    returnType: bool
    signature: bool IsSubxactTopXidLogPending(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:593,1
    - Dst: IsSubxactTopXidLogPending
      Src: /src/postgres/src/backend/access/transam/xact.c:593,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 590
    functionDepth: 3
    functionLinenumber: 590
    functionLinenumberEnd: 596
    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:615,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:616,1
    - Dst: ReadNextTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:617,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:620,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:620,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 606
    functionDepth: 2
    functionLinenumber: 606
    functionLinenumberEnd: 623
    functionName: GetStableLatestTransactionId
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsValid
    - GetTopTransactionIdIfAny
    - Assert
    - ReadNextTransactionId
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId GetStableLatestTransactionId(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:642,1
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:642,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:643,1
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/access/transam/xact.c:649,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/access/transam/xact.c:649,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:650,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:651,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:652,1
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:660,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/xact.c:666,1
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:667,1
    - Dst: AssignTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:678,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xact.c:680,1
    - Dst: XLogLogicalInfoActive
      Src: /src/postgres/src/backend/access/transam/xact.c:693,1
    - Dst: GetNewTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:706,1
    - Dst: SubTransSetParent
      Src: /src/postgres/src/backend/access/transam/xact.c:711,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:711,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:712,1
    - Dst: RegisterPredicateLockingXid
      Src: /src/postgres/src/backend/access/transam/xact.c:719,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:719,1
    - Dst: XactLockTableInsert
      Src: /src/postgres/src/backend/access/transam/xact.c:729,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:729,1
    - Dst: XLogStandbyInfoActive
      Src: /src/postgres/src/backend/access/transam/xact.c:751,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:753,1
    - Dst: GetTopTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:769,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:770,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:770,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xact.c:773,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:774,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:775,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xact.c:778,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 43
    argCount: 1
    argNames:
    - s
    argTypes:
    - TransactionState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 634
    functionDepth: 3
    functionLinenumber: 634
    functionLinenumberEnd: 785
    functionName: AssignTransactionId
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 5
    functionsReached:
    - XidFromFullTransactionId
    - AssignTransactionId
    - XLogRegisterData
    - XactLockTableInsert
    - pfree
    - IsInParallelMode
    - RegisterPredicateLockingXid
    - IsParallelWorker
    - errmsg
    - SubTransSetParent
    - GetNewTransactionId
    - TransactionIdIsValid
    - XLogLogicalInfoActive
    - GetTopTransactionId
    - palloc
    - XLogStandbyInfoActive
    - FullTransactionIdIsValid
    - Assert
    - XLogBeginInsert
    - XLogInsert
    - ereport
    - errcode
    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: 796
      start: 790
    functionDepth: 0
    functionLinenumber: 790
    functionLinenumberEnd: 796
    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: 817
      start: 804
    functionDepth: 0
    functionLinenumber: 804
    functionLinenumberEnd: 817
    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:840,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:841,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:842,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:843,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - used
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 828
    functionDepth: 1
    functionLinenumber: 828
    functionLinenumberEnd: 848
    functionName: GetCurrentCommandId
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 5
    functionsReached:
    - errmsg
    - IsParallelWorker
    - errcode
    - ereport
    linkageType: ''
    returnType: CommandId
    signature: CommandId GetCurrentCommandId(bool used)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:861,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/access/transam/xact.c:861,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - xact_ts
    - stmt_ts
    argTypes:
    - TimestampTz
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 858
    functionDepth: 1
    functionLinenumber: 858
    functionLinenumberEnd: 864
    functionName: SetParallelStartTimestamps
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - IsParallelWorker
    - Assert
    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: 873
      start: 869
    functionDepth: 0
    functionLinenumber: 869
    functionLinenumberEnd: 873
    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: 882
      start: 878
    functionDepth: 0
    functionLinenumber: 878
    functionLinenumberEnd: 882
    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:896,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xact.c:902,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 905
      start: 890
    functionDepth: 1
    functionLinenumber: 890
    functionLinenumberEnd: 905
    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:916,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xact.c:917,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:919,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 913
    functionDepth: 1
    functionLinenumber: 913
    functionLinenumberEnd: 920
    functionName: SetCurrentStatementStartTimestamp
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 3
    functionsReached:
    - IsParallelWorker
    - Assert
    - GetCurrentTimestamp
    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: 934
      start: 928
    functionDepth: 0
    functionLinenumber: 928
    functionLinenumberEnd: 934
    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:958,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/xact.c:961,1
    - Dst: GetTopTransactionIdIfAny
      Src: /src/postgres/src/backend/access/transam/xact.c:961,1
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:1008,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/xact.c:1010,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:1010,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/xact.c:1022,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/xact.c:1024,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 39
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1032
      start: 940
    functionDepth: 2
    functionLinenumber: 940
    functionLinenumberEnd: 1032
    functionName: TransactionIdIsCurrentTransactionId
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 21
    functionsReached:
    - FullTransactionIdIsValid
    - TransactionIdEquals
    - GetTopTransactionIdIfAny
    - XidFromFullTransactionId
    - TransactionIdIsNormal
    - TransactionIdPrecedes
    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: 1045
      start: 1041
    functionDepth: 0
    functionLinenumber: 1041
    functionLinenumberEnd: 1045
    functionName: TransactionStartedDuringRecovery
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool TransactionStartedDuringRecovery(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:1055,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1058
      start: 1050
    functionDepth: 1
    functionLinenumber: 1050
    functionLinenumberEnd: 1058
    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:1068,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:1069,1
    - Dst: ParallelContextActive
      Src: /src/postgres/src/backend/access/transam/xact.c:1070,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1073
      start: 1063
    functionDepth: 2
    functionLinenumber: 1063
    functionLinenumberEnd: 1073
    functionName: ExitParallelMode
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 7
    functionsReached:
    - ParallelContextActive
    - Assert
    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: 1094
      start: 1088
    functionDepth: 0
    functionLinenumber: 1088
    functionLinenumberEnd: 1094
    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:1115,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/access/transam/xact.c:1115,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:1116,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:1117,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:1118,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:1124,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:1125,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:1126,1
    - Dst: SnapshotSetCommandId
      Src: /src/postgres/src/backend/access/transam/xact.c:1131,1
    - Dst: AtCCI_LocalCache
      Src: /src/postgres/src/backend/access/transam/xact.c:1139,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1141
      start: 1099
    functionDepth: 1
    functionLinenumber: 1099
    functionLinenumberEnd: 1141
    functionName: CommandCounterIncrement
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 3
    functionsReached:
    - errmsg
    - IsInParallelMode
    - ereport
    - IsParallelWorker
    - SnapshotSetCommandId
    - AtCCI_LocalCache
    - errcode
    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: 1155
      start: 1151
    functionDepth: 0
    functionLinenumber: 1151
    functionLinenumberEnd: 1155
    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:1169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1170
      start: 1166
    functionDepth: 1
    functionLinenumber: 1166
    functionLinenumberEnd: 1170
    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:1194,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/transam/xact.c:1207,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xact.c:1219,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1175
    functionDepth: 1
    functionLinenumber: 1175
    functionLinenumberEnd: 1220
    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:1233,1
    - Dst: ResourceOwnerCreate
      Src: /src/postgres/src/backend/access/transam/xact.c:1238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1243
      start: 1225
    functionDepth: 1
    functionLinenumber: 1225
    functionLinenumberEnd: 1243
    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:1258,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/transam/xact.c:1270,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xact.c:1276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1277
      start: 1253
    functionDepth: 1
    functionLinenumber: 1253
    functionLinenumberEnd: 1277
    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:1287,1
    - Dst: ResourceOwnerCreate
      Src: /src/postgres/src/backend/access/transam/xact.c:1294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1299
      start: 1282
    functionDepth: 1
    functionLinenumber: 1282
    functionLinenumberEnd: 1299
    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:1317,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:1318,1
    - Dst: XLogLogicalInfoActive
      Src: /src/postgres/src/backend/access/transam/xact.c:1338,1
    - Dst: LogLogicalInvalidations
      Src: /src/postgres/src/backend/access/transam/xact.c:1339,1
    - Dst: smgrGetPendingDeletes
      Src: /src/postgres/src/backend/access/transam/xact.c:1342,1
    - Dst: xactGetCommittedChildren
      Src: /src/postgres/src/backend/access/transam/xact.c:1343,1
    - Dst: pgstat_get_transactional_drops
      Src: /src/postgres/src/backend/access/transam/xact.c:1344,1
    - Dst: XLogStandbyInfoActive
      Src: /src/postgres/src/backend/access/transam/xact.c:1345,1
    - Dst: xactGetCommittedInvalidationMessages
      Src: /src/postgres/src/backend/access/transam/xact.c:1346,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:1365,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:1368,1
    - Dst: LogStandbyInvalidations
      Src: /src/postgres/src/backend/access/transam/xact.c:1393,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:1435,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xact.c:1436,1
    - Dst: XactLogCommitRecord
      Src: /src/postgres/src/backend/access/transam/xact.c:1442,1
    - Dst: GetCurrentTransactionStopTimestamp
      Src: /src/postgres/src/backend/access/transam/xact.c:1442,1
    - Dst: replorigin_session_advance
      Src: /src/postgres/src/backend/access/transam/xact.c:1452,1
    - Dst: GetCurrentTransactionStopTimestamp
      Src: /src/postgres/src/backend/access/transam/xact.c:1466,1
    - Dst: TransactionTreeSetCommitTsData
      Src: /src/postgres/src/backend/access/transam/xact.c:1468,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/xact.c:1502,1
    - Dst: TransactionIdCommitTree
      Src: /src/postgres/src/backend/access/transam/xact.c:1508,1
    - Dst: XLogSetAsyncXactLSN
      Src: /src/postgres/src/backend/access/transam/xact.c:1523,1
    - Dst: TransactionIdAsyncCommitTree
      Src: /src/postgres/src/backend/access/transam/xact.c:1531,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xact.c:1541,1
    - Dst: TransactionIdLatest
      Src: /src/postgres/src/backend/access/transam/xact.c:1545,1
    - Dst: SyncRepWaitForLSN
      Src: /src/postgres/src/backend/access/transam/xact.c:1557,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xact.c:1567,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xact.c:1569,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 57
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1572
      start: 1314
    functionDepth: 3
    functionLinenumber: 1314
    functionLinenumberEnd: 1572
    functionName: RecordTransactionCommit
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - GetTopTransactionIdIfAny
    - TransactionIdLatest
    - LogLogicalInvalidations
    - XLogSetAsyncXactLSN
    - pfree
    - START_CRIT_SECTION
    - LogStandbyInvalidations
    - replorigin_session_advance
    - XactLogCommitRecord
    - SyncRepWaitForLSN
    - smgrGetPendingDeletes
    - pgstat_get_transactional_drops
    - TransactionTreeSetCommitTsData
    - TransactionIdIsValid
    - TransactionIdCommitTree
    - GetCurrentTransactionStopTimestamp
    - XLogLogicalInfoActive
    - XLogFlush
    - elog
    - XLogStandbyInfoActive
    - Assert
    - END_CRIT_SECTION
    - xactGetCommittedChildren
    - xactGetCommittedInvalidationMessages
    - TransactionIdAsyncCommitTree
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId RecordTransactionCommit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AtCCI_RelationMap
      Src: /src/postgres/src/backend/access/transam/xact.c:1586,1
    - Dst: CommandEndInvalidationMessages
      Src: /src/postgres/src/backend/access/transam/xact.c:1591,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1592
      start: 1578
    functionDepth: 1
    functionLinenumber: 1578
    functionLinenumberEnd: 1592
    functionName: AtCCI_LocalCache
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - CommandEndInvalidationMessages
    - AtCCI_RelationMap
    linkageType: ''
    returnType: void
    signature: void AtCCI_LocalCache(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xact.c:1608,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:1614,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/transam/xact.c:1615,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1624
      start: 1597
    functionDepth: 1
    functionLinenumber: 1597
    functionLinenumberEnd: 1624
    functionName: AtCommit_Memory
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - MemoryContextReset
    - Assert
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void AtCommit_Memory(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:1639,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xact.c:1643,1
    - Dst: MemoryContextIsEmpty
      Src: /src/postgres/src/backend/access/transam/xact.c:1651,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/transam/xact.c:1653,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1656
      start: 1634
    functionDepth: 1
    functionLinenumber: 1634
    functionLinenumberEnd: 1656
    functionName: AtSubCommit_Memory
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - MemoryContextIsEmpty
    linkageType: ''
    returnType: void
    signature: void AtSubCommit_Memory(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:1669,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/xact.c:1689,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:1693,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:1694,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:1695,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/access/transam/xact.c:1705,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/transam/xact.c:1708,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:1724,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xact.c:1727,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xact.c:1735,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1740
      start: 1663
    functionDepth: 1
    functionLinenumber: 1663
    functionLinenumberEnd: 1740
    functionName: AtSubCommit_childXids
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Min
    - Assert
    - pfree
    - memcpy
    - XidFromFullTransactionId
    - ereport
    - repalloc
    - MemoryContextAlloc
    - errcode
    linkageType: ''
    returnType: void
    signature: void AtSubCommit_childXids(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTransactionIdIfAny
      Src: /src/postgres/src/backend/access/transam/xact.c:1756,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:1773,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/transam/xact.c:1792,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:1793,1
    - Dst: smgrGetPendingDeletes
      Src: /src/postgres/src/backend/access/transam/xact.c:1804,1
    - Dst: xactGetCommittedChildren
      Src: /src/postgres/src/backend/access/transam/xact.c:1805,1
    - Dst: pgstat_get_transactional_drops
      Src: /src/postgres/src/backend/access/transam/xact.c:1806,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xact.c:1809,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xact.c:1813,1
    - Dst: GetCurrentTransactionStopTimestamp
      Src: /src/postgres/src/backend/access/transam/xact.c:1816,1
    - Dst: XactLogAbortRecord
      Src: /src/postgres/src/backend/access/transam/xact.c:1819,1
    - Dst: replorigin_session_advance
      Src: /src/postgres/src/backend/access/transam/xact.c:1828,1
    - Dst: XLogSetAsyncXactLSN
      Src: /src/postgres/src/backend/access/transam/xact.c:1841,1
    - Dst: TransactionIdAbortTree
      Src: /src/postgres/src/backend/access/transam/xact.c:1851,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xact.c:1853,1
    - Dst: TransactionIdLatest
      Src: /src/postgres/src/backend/access/transam/xact.c:1856,1
    - Dst: XidCacheRemoveRunningXids
      Src: /src/postgres/src/backend/access/transam/xact.c:1865,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xact.c:1873,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xact.c:1875,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 1
    argNames:
    - isSubXact
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1878
      start: 1753
    functionDepth: 3
    functionLinenumber: 1753
    functionLinenumberEnd: 1878
    functionName: RecordTransactionAbort
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - pfree
    - XidCacheRemoveRunningXids
    - START_CRIT_SECTION
    - TransactionIdLatest
    - TransactionIdIsValid
    - TransactionIdDidCommit
    - replorigin_session_advance
    - GetCurrentTransactionStopTimestamp
    - XLogSetAsyncXactLSN
    - pgstat_get_transactional_drops
    - elog
    - smgrGetPendingDeletes
    - GetCurrentTimestamp
    - TransactionIdAbortTree
    - END_CRIT_SECTION
    - xactGetCommittedChildren
    - XactLogAbortRecord
    - GetCurrentTransactionIdIfAny
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId RecordTransactionAbort(bool isSubXact)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xact.c:1895,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xact.c:1897,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1898
      start: 1883
    functionDepth: 1
    functionLinenumber: 1883
    functionLinenumberEnd: 1898
    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:1906,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xact.c:1908,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1909
      start: 1903
    functionDepth: 1
    functionLinenumber: 1903
    functionLinenumberEnd: 1909
    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: 1923
      start: 1915
    functionDepth: 0
    functionLinenumber: 1915
    functionLinenumberEnd: 1923
    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: 1935
      start: 1928
    functionDepth: 0
    functionLinenumber: 1928
    functionLinenumberEnd: 1935
    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:1952,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1963
      start: 1941
    functionDepth: 0
    functionLinenumber: 1941
    functionLinenumberEnd: 1963
    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:1979,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xact.c:1987,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/transam/xact.c:1993,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/transam/xact.c:2001,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2010
      start: 1973
    functionDepth: 1
    functionLinenumber: 1973
    functionLinenumberEnd: 2010
    functionName: AtCleanup_Memory
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - MemoryContextReset
    - Assert
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void AtCleanup_Memory(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:2026,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xact.c:2034,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/transam/xact.c:2043,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/transam/xact.c:2051,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2053
      start: 2021
    functionDepth: 1
    functionLinenumber: 2021
    functionLinenumberEnd: 2053
    functionName: AtSubCleanup_Memory
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - MemoryContextReset
    - Assert
    - MemoryContextSwitchTo
    - MemoryContextDelete
    linkageType: ''
    returnType: void
    signature: void AtSubCleanup_Memory(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:2075,1
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:2075,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:2078,1
    - Dst: pg_prng_double
      Src: /src/postgres/src/backend/access/transam/xact.c:2092,1
    - Dst: GetUserIdAndSecContext
      Src: /src/postgres/src/backend/access/transam/xact.c:2109,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:2112,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xact.c:2122,1
    - Dst: AtStart_Memory
      Src: /src/postgres/src/backend/access/transam/xact.c:2154,1
    - Dst: AtStart_ResourceOwner
      Src: /src/postgres/src/backend/access/transam/xact.c:2155,1
    - Dst: GetNextLocalTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:2162,1
    - Dst: VirtualXactLockTableInsert
      Src: /src/postgres/src/backend/access/transam/xact.c:2167,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:2174,1
    - Dst: TRACE_POSTGRESQL_TRANSACTION_START
      Src: /src/postgres/src/backend/access/transam/xact.c:2177,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/access/transam/xact.c:2188,1
    - Dst: SPI_inside_nonatomic_context
      Src: /src/postgres/src/backend/access/transam/xact.c:2190,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xact.c:2193,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:2196,1
    - Dst: pgstat_report_xact_timestamp
      Src: /src/postgres/src/backend/access/transam/xact.c:2197,1
    - Dst: AtStart_GUC
      Src: /src/postgres/src/backend/access/transam/xact.c:2204,1
    - Dst: AtStart_Cache
      Src: /src/postgres/src/backend/access/transam/xact.c:2205,1
    - Dst: AfterTriggerBeginXact
      Src: /src/postgres/src/backend/access/transam/xact.c:2206,1
    - Dst: enable_timeout_after
      Src: /src/postgres/src/backend/access/transam/xact.c:2216,1
    - Dst: ShowTransactionState
      Src: /src/postgres/src/backend/access/transam/xact.c:2218,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2219
      start: 2063
    functionDepth: 3
    functionLinenumber: 2063
    functionLinenumberEnd: 2219
    functionName: StartTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 5
    functionsReached:
    - pgstat_report_xact_timestamp
    - AtStart_Cache
    - pg_prng_double
    - RecoveryInProgress
    - GetUserIdAndSecContext
    - ShowTransactionState
    - IsParallelWorker
    - AtStart_ResourceOwner
    - AtStart_Memory
    - GetNextLocalTransactionId
    - AtStart_GUC
    - AfterTriggerBeginXact
    - GetCurrentTimestamp
    - FullTransactionIdIsValid
    - Assert
    - VirtualXactLockTableInsert
    - SPI_inside_nonatomic_context
    - enable_timeout_after
    - TRACE_POSTGRESQL_TRANSACTION_START
    linkageType: ''
    returnType: void
    signature: void StartTransaction(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: EnterParallelMode
      Src: /src/postgres/src/backend/access/transam/xact.c:2238,1
    - Dst: ShowTransactionState
      Src: /src/postgres/src/backend/access/transam/xact.c:2240,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:2246,1
    - Dst: TransStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:2247,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:2248,1
    - Dst: AfterTriggerFireDeferred
      Src: /src/postgres/src/backend/access/transam/xact.c:2262,1
    - Dst: PreCommit_Portals
      Src: /src/postgres/src/backend/access/transam/xact.c:2269,1
    - Dst: CallXactCallbacks
      Src: /src/postgres/src/backend/access/transam/xact.c:2280,1
    - Dst: AtEOXact_Parallel
      Src: /src/postgres/src/backend/access/transam/xact.c:2290,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:2294,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:2300,1
    - Dst: AfterTriggerEndXact
      Src: /src/postgres/src/backend/access/transam/xact.c:2305,1
    - Dst: PreCommit_on_commit_actions
      Src: /src/postgres/src/backend/access/transam/xact.c:2311,1
    - Dst: smgrDoPendingSyncs
      Src: /src/postgres/src/backend/access/transam/xact.c:2318,1
    - Dst: AtEOXact_LargeObject
      Src: /src/postgres/src/backend/access/transam/xact.c:2321,1
    - Dst: PreCommit_Notify
      Src: /src/postgres/src/backend/access/transam/xact.c:2329,1
    - Dst: PreCommit_CheckForSerializationFailure
      Src: /src/postgres/src/backend/access/transam/xact.c:2339,1
    - Dst: HOLD_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/xact.c:2342,1
    - Dst: AtEOXact_RelationMap
      Src: /src/postgres/src/backend/access/transam/xact.c:2345,1
    - Dst: disable_timeout
      Src: /src/postgres/src/backend/access/transam/xact.c:2357,1
    - Dst: RecordTransactionCommit
      Src: /src/postgres/src/backend/access/transam/xact.c:2365,1
    - Dst: ParallelWorkerReportLastRecEnd
      Src: /src/postgres/src/backend/access/transam/xact.c:2379,1
    - Dst: TRACE_POSTGRESQL_TRANSACTION_COMMIT
      Src: /src/postgres/src/backend/access/transam/xact.c:2382,1
    - Dst: ProcArrayEndTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:2389,1
    - Dst: CallXactCallbacks
      Src: /src/postgres/src/backend/access/transam/xact.c:2407,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:2411,1
    - Dst: AtEOXact_Aio
      Src: /src/postgres/src/backend/access/transam/xact.c:2415,1
    - Dst: AtEOXact_Buffers
      Src: /src/postgres/src/backend/access/transam/xact.c:2418,1
    - Dst: AtEOXact_RelationCache
      Src: /src/postgres/src/backend/access/transam/xact.c:2421,1
    - Dst: AtEOXact_TypeCache
      Src: /src/postgres/src/backend/access/transam/xact.c:2424,1
    - Dst: AtEOXact_Inval
      Src: /src/postgres/src/backend/access/transam/xact.c:2433,1
    - Dst: AtEOXact_MultiXact
      Src: /src/postgres/src/backend/access/transam/xact.c:2435,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:2437,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:2440,1
    - Dst: smgrDoPendingDeletes
      Src: /src/postgres/src/backend/access/transam/xact.c:2453,1
    - Dst: AtCommit_Notify
      Src: /src/postgres/src/backend/access/transam/xact.c:2460,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/backend/access/transam/xact.c:2466,1
    - Dst: AtEOXact_SPI
      Src: /src/postgres/src/backend/access/transam/xact.c:2467,1
    - Dst: AtEOXact_Enum
      Src: /src/postgres/src/backend/access/transam/xact.c:2468,1
    - Dst: AtEOXact_on_commit_actions
      Src: /src/postgres/src/backend/access/transam/xact.c:2469,1
    - Dst: AtEOXact_Namespace
      Src: /src/postgres/src/backend/access/transam/xact.c:2470,1
    - Dst: AtEOXact_SMgr
      Src: /src/postgres/src/backend/access/transam/xact.c:2471,1
    - Dst: AtEOXact_Files
      Src: /src/postgres/src/backend/access/transam/xact.c:2472,1
    - Dst: AtEOXact_ComboCid
      Src: /src/postgres/src/backend/access/transam/xact.c:2473,1
    - Dst: AtEOXact_HashTables
      Src: /src/postgres/src/backend/access/transam/xact.c:2474,1
    - Dst: AtEOXact_PgStat
      Src: /src/postgres/src/backend/access/transam/xact.c:2475,1
    - Dst: AtEOXact_Snapshot
      Src: /src/postgres/src/backend/access/transam/xact.c:2476,1
    - Dst: AtEOXact_ApplyLauncher
      Src: /src/postgres/src/backend/access/transam/xact.c:2477,1
    - Dst: AtEOXact_LogicalRepWorkers
      Src: /src/postgres/src/backend/access/transam/xact.c:2478,1
    - Dst: pgstat_report_xact_timestamp
      Src: /src/postgres/src/backend/access/transam/xact.c:2479,1
    - Dst: ResourceOwnerDelete
      Src: /src/postgres/src/backend/access/transam/xact.c:2481,1
    - Dst: AtCommit_Memory
      Src: /src/postgres/src/backend/access/transam/xact.c:2486,1
    - Dst: RESUME_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/xact.c:2505,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 87
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2506
      start: 2227
    functionDepth: 4
    functionLinenumber: 2227
    functionLinenumberEnd: 2506
    functionName: CommitTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 5
    functionsReached:
    - pgstat_report_xact_timestamp
    - AtEOXact_PgStat
    - AtEOXact_HashTables
    - AfterTriggerEndXact
    - AtEOXact_SPI
    - PreCommit_on_commit_actions
    - AtEOXact_ComboCid
    - AtEOXact_ApplyLauncher
    - HOLD_INTERRUPTS
    - AfterTriggerFireDeferred
    - RecordTransactionCommit
    - ParallelWorkerReportLastRecEnd
    - AtEOXact_MultiXact
    - AtEOXact_Enum
    - ShowTransactionState
    - PreCommit_Notify
    - AtEOXact_RelationCache
    - ResourceOwnerRelease
    - TRACE_POSTGRESQL_TRANSACTION_COMMIT
    - PreCommit_Portals
    - AtEOXact_LargeObject
    - AtCommit_Notify
    - AtEOXact_Buffers
    - AtEOXact_Namespace
    - ResourceOwnerDelete
    - smgrDoPendingDeletes
    - AtEOXact_GUC
    - AtCommit_Memory
    - AtEOXact_Snapshot
    - AtEOXact_Aio
    - elog
    - AtEOXact_RelationMap
    - AtEOXact_LogicalRepWorkers
    - AtEOXact_Inval
    - disable_timeout
    - CallXactCallbacks
    - PreCommit_CheckForSerializationFailure
    - Assert
    - AtEOXact_SMgr
    - EnterParallelMode
    - AtEOXact_on_commit_actions
    - smgrDoPendingSyncs
    - ProcArrayEndTransaction
    - AtEOXact_Files
    - AtEOXact_Parallel
    - AtEOXact_TypeCache
    - TransStateAsString
    - RESUME_INTERRUPTS
    linkageType: ''
    returnType: void
    signature: void CommitTransaction(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:2518,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:2522,1
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/access/transam/xact.c:2522,1
    - Dst: ShowTransactionState
      Src: /src/postgres/src/backend/access/transam/xact.c:2524,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:2530,1
    - Dst: TransStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:2531,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:2532,1
    - Dst: AfterTriggerFireDeferred
      Src: /src/postgres/src/backend/access/transam/xact.c:2545,1
    - Dst: PreCommit_Portals
      Src: /src/postgres/src/backend/access/transam/xact.c:2552,1
    - Dst: CallXactCallbacks
      Src: /src/postgres/src/backend/access/transam/xact.c:2556,1
    - Dst: AfterTriggerEndXact
      Src: /src/postgres/src/backend/access/transam/xact.c:2566,1
    - Dst: PreCommit_on_commit_actions
      Src: /src/postgres/src/backend/access/transam/xact.c:2572,1
    - Dst: smgrDoPendingSyncs
      Src: /src/postgres/src/backend/access/transam/xact.c:2579,1
    - Dst: AtEOXact_LargeObject
      Src: /src/postgres/src/backend/access/transam/xact.c:2582,1
    - Dst: PreCommit_CheckForSerializationFailure
      Src: /src/postgres/src/backend/access/transam/xact.c:2591,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:2614,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:2615,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:2616,1
    - Dst: XactHasExportedSnapshots
      Src: /src/postgres/src/backend/access/transam/xact.c:2623,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:2624,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:2625,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:2626,1
    - Dst: HOLD_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/xact.c:2629,1
    - Dst: disable_timeout
      Src: /src/postgres/src/backend/access/transam/xact.c:2639,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xact.c:2641,1
    - Dst: MarkAsPreparing
      Src: /src/postgres/src/backend/access/transam/xact.c:2647,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/access/transam/xact.c:2648,1
    - Dst: StartPrepare
      Src: /src/postgres/src/backend/access/transam/xact.c:2667,1
    - Dst: AtPrepare_Notify
      Src: /src/postgres/src/backend/access/transam/xact.c:2669,1
    - Dst: AtPrepare_Locks
      Src: /src/postgres/src/backend/access/transam/xact.c:2670,1
    - Dst: AtPrepare_PredicateLocks
      Src: /src/postgres/src/backend/access/transam/xact.c:2671,1
    - Dst: AtPrepare_PgStat
      Src: /src/postgres/src/backend/access/transam/xact.c:2672,1
    - Dst: AtPrepare_MultiXact
      Src: /src/postgres/src/backend/access/transam/xact.c:2673,1
    - Dst: AtPrepare_RelationMap
      Src: /src/postgres/src/backend/access/transam/xact.c:2674,1
    - Dst: EndPrepare
      Src: /src/postgres/src/backend/access/transam/xact.c:2683,1
    - Dst: PostPrepare_Locks
      Src: /src/postgres/src/backend/access/transam/xact.c:2697,1
    - Dst: ProcArrayClearTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:2704,1
    - Dst: CallXactCallbacks
      Src: /src/postgres/src/backend/access/transam/xact.c:2716,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:2718,1
    - Dst: AtEOXact_Aio
      Src: /src/postgres/src/backend/access/transam/xact.c:2722,1
    - Dst: AtEOXact_Buffers
      Src: /src/postgres/src/backend/access/transam/xact.c:2725,1
    - Dst: AtEOXact_RelationCache
      Src: /src/postgres/src/backend/access/transam/xact.c:2728,1
    - Dst: AtEOXact_TypeCache
      Src: /src/postgres/src/backend/access/transam/xact.c:2731,1
    - Dst: PostPrepare_PgStat
      Src: /src/postgres/src/backend/access/transam/xact.c:2735,1
    - Dst: PostPrepare_Inval
      Src: /src/postgres/src/backend/access/transam/xact.c:2737,1
    - Dst: PostPrepare_smgr
      Src: /src/postgres/src/backend/access/transam/xact.c:2739,1
    - Dst: PostPrepare_MultiXact
      Src: /src/postgres/src/backend/access/transam/xact.c:2741,1
    - Dst: PostPrepare_PredicateLocks
      Src: /src/postgres/src/backend/access/transam/xact.c:2743,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:2745,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:2748,1
    - Dst: PostPrepare_Twophase
      Src: /src/postgres/src/backend/access/transam/xact.c:2757,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/backend/access/transam/xact.c:2760,1
    - Dst: AtEOXact_SPI
      Src: /src/postgres/src/backend/access/transam/xact.c:2761,1
    - Dst: AtEOXact_Enum
      Src: /src/postgres/src/backend/access/transam/xact.c:2762,1
    - Dst: AtEOXact_on_commit_actions
      Src: /src/postgres/src/backend/access/transam/xact.c:2763,1
    - Dst: AtEOXact_Namespace
      Src: /src/postgres/src/backend/access/transam/xact.c:2764,1
    - Dst: AtEOXact_SMgr
      Src: /src/postgres/src/backend/access/transam/xact.c:2765,1
    - Dst: AtEOXact_Files
      Src: /src/postgres/src/backend/access/transam/xact.c:2766,1
    - Dst: AtEOXact_ComboCid
      Src: /src/postgres/src/backend/access/transam/xact.c:2767,1
    - Dst: AtEOXact_HashTables
      Src: /src/postgres/src/backend/access/transam/xact.c:2768,1
    - Dst: AtEOXact_Snapshot
      Src: /src/postgres/src/backend/access/transam/xact.c:2770,1
    - Dst: AtEOXact_ApplyLauncher
      Src: /src/postgres/src/backend/access/transam/xact.c:2772,1
    - Dst: AtEOXact_LogicalRepWorkers
      Src: /src/postgres/src/backend/access/transam/xact.c:2773,1
    - Dst: pgstat_report_xact_timestamp
      Src: /src/postgres/src/backend/access/transam/xact.c:2774,1
    - Dst: ResourceOwnerDelete
      Src: /src/postgres/src/backend/access/transam/xact.c:2777,1
    - Dst: AtCommit_Memory
      Src: /src/postgres/src/backend/access/transam/xact.c:2782,1
    - Dst: RESUME_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/xact.c:2801,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 83
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2802
      start: 2514
    functionDepth: 3
    functionLinenumber: 2514
    functionLinenumberEnd: 2802
    functionName: PrepareTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - pgstat_report_xact_timestamp
    - AtPrepare_MultiXact
    - AtEOXact_HashTables
    - PostPrepare_smgr
    - AfterTriggerEndXact
    - AtEOXact_SPI
    - PreCommit_on_commit_actions
    - AtEOXact_ComboCid
    - EndPrepare
    - AtEOXact_ApplyLauncher
    - HOLD_INTERRUPTS
    - AtPrepare_Locks
    - AfterTriggerFireDeferred
    - GetUserId
    - AtEOXact_Enum
    - PostPrepare_MultiXact
    - ShowTransactionState
    - IsInParallelMode
    - GetCurrentTransactionId
    - AtEOXact_RelationCache
    - ResourceOwnerRelease
    - PreCommit_Portals
    - AtEOXact_LargeObject
    - PostPrepare_Twophase
    - AtEOXact_Buffers
    - errmsg
    - AtEOXact_Namespace
    - ResourceOwnerDelete
    - AtEOXact_GUC
    - AtCommit_Memory
    - ProcArrayClearTransaction
    - StartPrepare
    - AtEOXact_Snapshot
    - AtEOXact_Aio
    - elog
    - PostPrepare_Locks
    - AtPrepare_RelationMap
    - GetCurrentTimestamp
    - XactHasExportedSnapshots
    - AtPrepare_Notify
    - PostPrepare_Inval
    - AtEOXact_LogicalRepWorkers
    - disable_timeout
    - CallXactCallbacks
    - PreCommit_CheckForSerializationFailure
    - Assert
    - MarkAsPreparing
    - PostPrepare_PgStat
    - AtEOXact_SMgr
    - AtPrepare_PgStat
    - AtEOXact_on_commit_actions
    - smgrDoPendingSyncs
    - ereport
    - AtEOXact_Files
    - AtEOXact_TypeCache
    - TransStateAsString
    - AtPrepare_PredicateLocks
    - errcode
    - PostPrepare_PredicateLocks
    - RESUME_INTERRUPTS
    linkageType: ''
    returnType: void
    signature: void PrepareTransaction(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: HOLD_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/xact.c:2816,1
    - Dst: disable_timeout
      Src: /src/postgres/src/backend/access/transam/xact.c:2820,1
    - Dst: AtAbort_Memory
      Src: /src/postgres/src/backend/access/transam/xact.c:2823,1
    - Dst: AtAbort_ResourceOwner
      Src: /src/postgres/src/backend/access/transam/xact.c:2824,1
    - Dst: LWLockReleaseAll
      Src: /src/postgres/src/backend/access/transam/xact.c:2832,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xact.c:2835,1
    - Dst: pgstat_progress_end_command
      Src: /src/postgres/src/backend/access/transam/xact.c:2836,1
    - Dst: pgaio_error_cleanup
      Src: /src/postgres/src/backend/access/transam/xact.c:2838,1
    - Dst: UnlockBuffers
      Src: /src/postgres/src/backend/access/transam/xact.c:2841,1
    - Dst: XLogResetInsertion
      Src: /src/postgres/src/backend/access/transam/xact.c:2844,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/access/transam/xact.c:2847,1
    - Dst: LockErrorCleanup
      Src: /src/postgres/src/backend/access/transam/xact.c:2853,1
    - Dst: reschedule_timeouts
      Src: /src/postgres/src/backend/access/transam/xact.c:2862,1
    - Dst: sigprocmask
      Src: /src/postgres/src/backend/access/transam/xact.c:2869,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:2876,1
    - Dst: TransStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:2877,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:2878,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/access/transam/xact.c:2896,1
    - Dst: ResetReindexState
      Src: /src/postgres/src/backend/access/transam/xact.c:2899,1
    - Dst: ResetLogicalStreamingState
      Src: /src/postgres/src/backend/access/transam/xact.c:2902,1
    - Dst: SnapBuildResetExportedSnapshotState
      Src: /src/postgres/src/backend/access/transam/xact.c:2905,1
    - Dst: AtEOXact_Parallel
      Src: /src/postgres/src/backend/access/transam/xact.c:2911,1
    - Dst: AfterTriggerEndXact
      Src: /src/postgres/src/backend/access/transam/xact.c:2918,1
    - Dst: AtAbort_Portals
      Src: /src/postgres/src/backend/access/transam/xact.c:2919,1
    - Dst: smgrDoPendingSyncs
      Src: /src/postgres/src/backend/access/transam/xact.c:2920,1
    - Dst: AtEOXact_LargeObject
      Src: /src/postgres/src/backend/access/transam/xact.c:2921,1
    - Dst: AtAbort_Notify
      Src: /src/postgres/src/backend/access/transam/xact.c:2922,1
    - Dst: AtEOXact_RelationMap
      Src: /src/postgres/src/backend/access/transam/xact.c:2923,1
    - Dst: AtAbort_Twophase
      Src: /src/postgres/src/backend/access/transam/xact.c:2924,1
    - Dst: RecordTransactionAbort
      Src: /src/postgres/src/backend/access/transam/xact.c:2933,1
    - Dst: XLogSetAsyncXactLSN
      Src: /src/postgres/src/backend/access/transam/xact.c:2943,1
    - Dst: TRACE_POSTGRESQL_TRANSACTION_ABORT
      Src: /src/postgres/src/backend/access/transam/xact.c:2946,1
    - Dst: ProcArrayEndTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:2953,1
    - Dst: CallXactCallbacks
      Src: /src/postgres/src/backend/access/transam/xact.c:2963,1
    - Dst: CallXactCallbacks
      Src: /src/postgres/src/backend/access/transam/xact.c:2965,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:2967,1
    - Dst: AtEOXact_Aio
      Src: /src/postgres/src/backend/access/transam/xact.c:2970,1
    - Dst: AtEOXact_Buffers
      Src: /src/postgres/src/backend/access/transam/xact.c:2971,1
    - Dst: AtEOXact_RelationCache
      Src: /src/postgres/src/backend/access/transam/xact.c:2972,1
    - Dst: AtEOXact_TypeCache
      Src: /src/postgres/src/backend/access/transam/xact.c:2973,1
    - Dst: AtEOXact_Inval
      Src: /src/postgres/src/backend/access/transam/xact.c:2974,1
    - Dst: AtEOXact_MultiXact
      Src: /src/postgres/src/backend/access/transam/xact.c:2975,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:2976,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:2979,1
    - Dst: smgrDoPendingDeletes
      Src: /src/postgres/src/backend/access/transam/xact.c:2982,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/backend/access/transam/xact.c:2984,1
    - Dst: AtEOXact_SPI
      Src: /src/postgres/src/backend/access/transam/xact.c:2985,1
    - Dst: AtEOXact_Enum
      Src: /src/postgres/src/backend/access/transam/xact.c:2986,1
    - Dst: AtEOXact_on_commit_actions
      Src: /src/postgres/src/backend/access/transam/xact.c:2987,1
    - Dst: AtEOXact_Namespace
      Src: /src/postgres/src/backend/access/transam/xact.c:2988,1
    - Dst: AtEOXact_SMgr
      Src: /src/postgres/src/backend/access/transam/xact.c:2989,1
    - Dst: AtEOXact_Files
      Src: /src/postgres/src/backend/access/transam/xact.c:2990,1
    - Dst: AtEOXact_ComboCid
      Src: /src/postgres/src/backend/access/transam/xact.c:2991,1
    - Dst: AtEOXact_HashTables
      Src: /src/postgres/src/backend/access/transam/xact.c:2992,1
    - Dst: AtEOXact_PgStat
      Src: /src/postgres/src/backend/access/transam/xact.c:2993,1
    - Dst: AtEOXact_ApplyLauncher
      Src: /src/postgres/src/backend/access/transam/xact.c:2994,1
    - Dst: AtEOXact_LogicalRepWorkers
      Src: /src/postgres/src/backend/access/transam/xact.c:2995,1
    - Dst: pgstat_report_xact_timestamp
      Src: /src/postgres/src/backend/access/transam/xact.c:2996,1
    - Dst: RESUME_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/xact.c:3002,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 71
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3003
      start: 2808
    functionDepth: 4
    functionLinenumber: 2808
    functionLinenumberEnd: 3003
    functionName: AbortTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - pgstat_report_xact_timestamp
    - XLogResetInsertion
    - AtEOXact_PgStat
    - AtEOXact_HashTables
    - AtAbort_ResourceOwner
    - AtAbort_Portals
    - AfterTriggerEndXact
    - AtEOXact_SPI
    - pgstat_report_wait_end
    - reschedule_timeouts
    - AtEOXact_ComboCid
    - AtAbort_Notify
    - AtEOXact_ApplyLauncher
    - sigprocmask
    - LWLockReleaseAll
    - HOLD_INTERRUPTS
    - XLogSetAsyncXactLSN
    - pgstat_progress_end_command
    - SetUserIdAndSecContext
    - AtEOXact_MultiXact
    - AtEOXact_Enum
    - ConditionVariableCancelSleep
    - TRACE_POSTGRESQL_TRANSACTION_ABORT
    - ResourceOwnerRelease
    - AtEOXact_RelationCache
    - AtEOXact_LargeObject
    - AtAbort_Twophase
    - LockErrorCleanup
    - AtEOXact_Buffers
    - AtEOXact_Namespace
    - smgrDoPendingDeletes
    - AtEOXact_GUC
    - AtEOXact_Aio
    - SnapBuildResetExportedSnapshotState
    - elog
    - AtEOXact_RelationMap
    - AtAbort_Memory
    - ResetLogicalStreamingState
    - AtEOXact_LogicalRepWorkers
    - AtEOXact_Inval
    - disable_timeout
    - RecordTransactionAbort
    - CallXactCallbacks
    - Assert
    - AtEOXact_SMgr
    - AtEOXact_on_commit_actions
    - pgaio_error_cleanup
    - smgrDoPendingSyncs
    - ProcArrayEndTransaction
    - ResetReindexState
    - AtEOXact_Parallel
    - AtEOXact_TypeCache
    - UnlockBuffers
    - AtEOXact_Files
    - TransStateAsString
    - RESUME_INTERRUPTS
    linkageType: ''
    returnType: void
    signature: void AbortTransaction(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:3017,1
    - Dst: TransStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:3018,1
    - Dst: AtCleanup_Portals
      Src: /src/postgres/src/backend/access/transam/xact.c:3023,1
    - Dst: AtEOXact_Snapshot
      Src: /src/postgres/src/backend/access/transam/xact.c:3024,1
    - Dst: ResourceOwnerDelete
      Src: /src/postgres/src/backend/access/transam/xact.c:3028,1
    - Dst: AtCleanup_Memory
      Src: /src/postgres/src/backend/access/transam/xact.c:3033,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3053
      start: 3008
    functionDepth: 2
    functionLinenumber: 3008
    functionLinenumberEnd: 3053
    functionName: CleanupTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - ResourceOwnerDelete
    - AtEOXact_Snapshot
    - elog
    - AtCleanup_Memory
    - AtCleanup_Portals
    - TransStateAsString
    linkageType: ''
    returnType: void
    signature: void CleanupTransaction(void)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: StartTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3070,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:3113,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:3114,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:3122,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xact.c:3123,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3124
      start: 3058
    functionDepth: 1
    functionLinenumber: 3058
    functionLinenumberEnd: 3124
    functionName: StartTransactionCommand
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 3
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - StartTransaction
    - BlockStateAsString
    - elog
    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: 3141
      start: 3135
    functionDepth: 0
    functionLinenumber: 3135
    functionLinenumberEnd: 3141
    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: 3149
      start: 3143
    functionDepth: 0
    functionLinenumber: 3143
    functionLinenumberEnd: 3149
    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:3163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3166
      start: 3156
    functionDepth: 1
    functionLinenumber: 3156
    functionLinenumberEnd: 3166
    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:3181,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:3193,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:3194,1
    - Dst: CommitTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3202,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/access/transam/xact.c:3224,1
    - Dst: CommitTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3232,1
    - Dst: StartTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3236,1
    - Dst: RestoreTransactionCharacteristics
      Src: /src/postgres/src/backend/access/transam/xact.c:3239,1
    - Dst: CleanupTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3258,1
    - Dst: StartTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3262,1
    - Dst: RestoreTransactionCharacteristics
      Src: /src/postgres/src/backend/access/transam/xact.c:3265,1
    - Dst: AbortTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3275,1
    - Dst: CleanupTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3276,1
    - Dst: StartTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3280,1
    - Dst: RestoreTransactionCharacteristics
      Src: /src/postgres/src/backend/access/transam/xact.c:3283,1
    - Dst: PrepareTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3292,1
    - Dst: StartSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3302,1
    - Dst: CommitSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3315,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:3319,1
    - Dst: CommitSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3335,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:3341,1
    - Dst: CommitTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3342,1
    - Dst: StartTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3346,1
    - Dst: RestoreTransactionCharacteristics
      Src: /src/postgres/src/backend/access/transam/xact.c:3349,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:3354,1
    - Dst: PrepareTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3355,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:3359,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:3360,1
    - Dst: CleanupSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3371,1
    - Dst: AbortSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3378,1
    - Dst: CleanupSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3379,1
    - Dst: AbortSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3397,1
    - Dst: CleanupSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3398,1
    - Dst: DefineSavepoint
      Src: /src/postgres/src/backend/access/transam/xact.c:3400,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:3406,1
    - Dst: StartSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3407,1
    - Dst: CleanupSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3426,1
    - Dst: DefineSavepoint
      Src: /src/postgres/src/backend/access/transam/xact.c:3428,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:3434,1
    - Dst: StartSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3435,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 129
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3443
      start: 3174
    functionDepth: 5
    functionLinenumber: 3174
    functionLinenumberEnd: 3443
    functionName: CommitTransactionCommandInternal
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - Assert
    - CommitTransaction
    - RestoreTransactionCharacteristics
    - StartTransaction
    - CleanupTransaction
    - CleanupSubTransaction
    - CommandCounterIncrement
    - AbortTransaction
    - DefineSavepoint
    - BlockStateAsString
    - elog
    - AbortSubTransaction
    - SaveTransactionCharacteristics
    - StartSubTransaction
    - PrepareTransaction
    - CommitSubTransaction
    linkageType: ''
    returnType: bool
    signature: bool CommitTransactionCommandInternal(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AbortCurrentTransactionInternal
      Src: /src/postgres/src/backend/access/transam/xact.c:3457,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3460
      start: 3450
    functionDepth: 1
    functionLinenumber: 3450
    functionLinenumberEnd: 3460
    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:3491,1
    - Dst: CleanupTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3492,1
    - Dst: AbortTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3503,1
    - Dst: CleanupTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3504,1
    - Dst: AbortTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3516,1
    - Dst: CleanupTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3517,1
    - Dst: AbortTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3528,1
    - Dst: AbortTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3539,1
    - Dst: CleanupTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3540,1
    - Dst: CleanupTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3559,1
    - Dst: AbortTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3568,1
    - Dst: CleanupTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3569,1
    - Dst: AbortTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3579,1
    - Dst: CleanupTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3580,1
    - Dst: AbortSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3590,1
    - Dst: AbortSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3606,1
    - Dst: CleanupSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3607,1
    - Dst: CleanupSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3615,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 67
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3621
      start: 3468
    functionDepth: 5
    functionLinenumber: 3468
    functionLinenumberEnd: 3621
    functionName: AbortCurrentTransactionInternal
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - AbortTransaction
    - AbortSubTransaction
    - CleanupSubTransaction
    - CleanupTransaction
    linkageType: ''
    returnType: bool
    signature: bool AbortCurrentTransactionInternal(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsTransactionBlock
      Src: /src/postgres/src/backend/access/transam/xact.c:3653,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:3654,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:3655,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:3657,1
    - Dst: IsSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3663,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:3664,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:3665,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:3667,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:3674,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:3675,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:3677,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:3682,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - isTopLevel
    - stmtType
    argTypes:
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3686
      start: 3647
    functionDepth: 1
    functionLinenumber: 3647
    functionLinenumberEnd: 3686
    functionName: PreventInTransactionBlock
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - IsSubTransaction
    - IsTransactionBlock
    - elog
    - errcode
    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:3712,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - isTopLevel
    - stmtType
    argTypes:
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3713
      start: 3709
    functionDepth: 1
    functionLinenumber: 3709
    functionLinenumberEnd: 3713
    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:3718,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - isTopLevel
    - stmtType
    argTypes:
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3719
      start: 3715
    functionDepth: 1
    functionLinenumber: 3715
    functionLinenumberEnd: 3719
    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:3730,1
    - Dst: IsSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3736,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:3745,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:3746,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:3748,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - isTopLevel
    - throwError
    - stmtType
    argTypes:
    - bool
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3750
      start: 3724
    functionDepth: 1
    functionLinenumber: 3724
    functionLinenumberEnd: 3750
    functionName: CheckTransactionBlock
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 2
    functionsReached:
    - errmsg
    - ereport
    - IsSubTransaction
    - IsTransactionBlock
    - errcode
    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:3775,1
    - Dst: IsSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:3778,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - isTopLevel
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3789
      start: 3768
    functionDepth: 1
    functionLinenumber: 3768
    functionLinenumberEnd: 3789
    functionName: IsInTransactionBlock
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - IsTransactionBlock
    - IsSubTransaction
    linkageType: ''
    returnType: bool
    signature: bool IsInTransactionBlock(bool isTopLevel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/access/transam/xact.c:3809,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - callback
    - arg
    argTypes:
    - XactCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3814
      start: 3803
    functionDepth: 1
    functionLinenumber: 3803
    functionLinenumberEnd: 3814
    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:3831,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - callback
    - arg
    argTypes:
    - XactCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3835
      start: 3816
    functionDepth: 0
    functionLinenumber: 3816
    functionLinenumberEnd: 3835
    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:3847,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - event
    argTypes:
    - XactEvent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3849
      start: 3837
    functionDepth: 2
    functionLinenumber: 3837
    functionLinenumberEnd: 3849
    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:3869,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - callback
    - arg
    argTypes:
    - SubXactCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3874
      start: 3863
    functionDepth: 1
    functionLinenumber: 3863
    functionLinenumberEnd: 3874
    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:3891,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - callback
    - arg
    argTypes:
    - SubXactCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3895
      start: 3876
    functionDepth: 0
    functionLinenumber: 3876
    functionLinenumberEnd: 3895
    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:3909,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - event
    - mySubid
    - parentSubid
    argTypes:
    - SubXactEvent
    - SubTransactionId
    - SubTransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3911
      start: 3897
    functionDepth: 2
    functionLinenumber: 3897
    functionLinenumberEnd: 3911
    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:3954,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:3955,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:3956,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:3973,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:3974,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3977
      start: 3923
    functionDepth: 1
    functionLinenumber: 3923
    functionLinenumberEnd: 3977
    functionName: BeginTransactionBlock
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - BlockStateAsString
    - elog
    - errcode
    linkageType: ''
    returnType: void
    signature: void BeginTransactionBlock(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EndTransactionBlock
      Src: /src/postgres/src/backend/access/transam/xact.c:3998,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/access/transam/xact.c:4011,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:4021,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - gid
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4029
      start: 3991
    functionDepth: 1
    functionLinenumber: 3991
    functionLinenumberEnd: 4029
    functionName: PrepareTransactionBlock
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - MemoryContextStrdup
    - Assert
    - 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:4067,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4068,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4070,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4073,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4074,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4075,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4098,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4099,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4105,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4106,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4123,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4124,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4132,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4133,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4146,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4147,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4149,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4152,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4153,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4154,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4163,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4164,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4165,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4182,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4183,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:4187,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 71
    argCount: 1
    argNames:
    - chain
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4195
      start: 4043
    functionDepth: 1
    functionLinenumber: 4043
    functionLinenumberEnd: 4195
    functionName: EndTransactionBlock
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - errmsg
    - Assert
    - ereport
    - BlockStateAsString
    - elog
    - errcode
    linkageType: ''
    returnType: bool
    signature: bool EndTransactionBlock(bool chain)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4242,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4243,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4251,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4252,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4269,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4270,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4272,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4275,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4276,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4277,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4286,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4287,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4288,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: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:4310,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 52
    argCount: 1
    argNames:
    - chain
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4314
      start: 4203
    functionDepth: 1
    functionLinenumber: 4203
    functionLinenumberEnd: 4314
    functionName: UserAbortTransactionBlock
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - ereport
    - BlockStateAsString
    - elog
    - errcode
    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: 4341
      start: 4325
    functionDepth: 0
    functionLinenumber: 4325
    functionLinenumberEnd: 4341
    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: 4366
      start: 4350
    functionDepth: 0
    functionLinenumber: 4350
    functionLinenumberEnd: 4366
    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:4384,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/access/transam/xact.c:4384,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4385,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4386,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4387,1
    - Dst: PushTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:4394,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/access/transam/xact.c:4402,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4420,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4421,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4423,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4445,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4446,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4449
      start: 4372
    functionDepth: 1
    functionLinenumber: 4372
    functionLinenumberEnd: 4449
    functionName: DefineSavepoint
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - errmsg
    - MemoryContextStrdup
    - PushTransaction
    - IsInParallelMode
    - ereport
    - IsParallelWorker
    - elog
    - BlockStateAsString
    - errcode
    linkageType: ''
    returnType: void
    signature: void DefineSavepoint(const char *name)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/access/transam/xact.c:4471,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/access/transam/xact.c:4471,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4472,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4473,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4474,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4482,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4483,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4484,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4489,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4490,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4492,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4521,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4522,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:4526,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:4528,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xact.c:4528,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:4532,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4533,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4534,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4535,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4539,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4540,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4541,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:4551,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:4556,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:4556,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 49
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4558
      start: 4457
    functionDepth: 1
    functionLinenumber: 4457
    functionLinenumberEnd: 4558
    functionName: ReleaseSavepoint
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - IsInParallelMode
    - ereport
    - IsParallelWorker
    - elog
    - BlockStateAsString
    - strcmp
    - PointerIsValid
    - errcode
    linkageType: ''
    returnType: void
    signature: void ReleaseSavepoint(const char *name)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/access/transam/xact.c:4580,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/access/transam/xact.c:4580,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4581,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4582,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4583,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: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4600,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4601,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4603,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4630,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4631,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:4635,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:4637,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xact.c:4637,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:4641,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4642,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4643,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4644,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:4648,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:4649,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:4650,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4667,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4668,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:4670,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:4670,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4679,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4680,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 57
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4681
      start: 4566
    functionDepth: 1
    functionLinenumber: 4566
    functionLinenumberEnd: 4681
    functionName: RollbackToSavepoint
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - IsInParallelMode
    - ereport
    - IsParallelWorker
    - elog
    - BlockStateAsString
    - strcmp
    - PointerIsValid
    - errcode
    linkageType: ''
    returnType: void
    signature: void RollbackToSavepoint(const char *name)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: PushTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:4724,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/access/transam/xact.c:4732,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4749,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4750,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/access/transam/xact.c:4754,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/access/transam/xact.c:4755,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4758
      start: 4693
    functionDepth: 2
    functionLinenumber: 4693
    functionLinenumberEnd: 4758
    functionName: BeginInternalSubTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 12
    functionsReached:
    - MemoryContextStrdup
    - PushTransaction
    - CommitTransactionCommand
    - BlockStateAsString
    - elog
    - StartTransactionCommand
    linkageType: ''
    returnType: void
    signature: void BeginInternalSubTransaction(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4779,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4780,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:4781,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xact.c:4782,1
    - Dst: CommitSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:4783,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:4785,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4786
      start: 4767
    functionDepth: 1
    functionLinenumber: 4767
    functionLinenumberEnd: 4786
    functionName: ReleaseCurrentSubTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 14
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - BlockStateAsString
    - elog
    - CommitSubTransaction
    linkageType: ''
    returnType: void
    signature: void ReleaseCurrentSubTransaction(void)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:4832,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:4833,1
    - Dst: AbortSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:4841,1
    - Dst: CleanupSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:4844,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:4847,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4852
      start: 4795
    functionDepth: 1
    functionLinenumber: 4795
    functionLinenumberEnd: 4852
    functionName: RollbackAndReleaseCurrentSubTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 12
    functionsReached:
    - Assert
    - CleanupSubTransaction
    - BlockStateAsString
    - elog
    - AbortSubTransaction
    linkageType: ''
    returnType: void
    signature: void RollbackAndReleaseCurrentSubTransaction(void)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: AtAbort_Memory
      Src: /src/postgres/src/backend/access/transam/xact.c:4867,1
    - Dst: AbortTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:4892,1
    - Dst: CleanupTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:4893,1
    - Dst: AbortTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:4905,1
    - Dst: CleanupTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:4906,1
    - Dst: AtAbort_Portals
      Src: /src/postgres/src/backend/access/transam/xact.c:4918,1
    - Dst: CleanupTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:4919,1
    - Dst: AbortSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:4932,1
    - Dst: CleanupSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:4933,1
    - Dst: AtSubAbort_Portals
      Src: /src/postgres/src/backend/access/transam/xact.c:4944,1
    - Dst: CleanupSubTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:4949,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:4956,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xact.c:4964,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 54
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4965
      start: 4861
    functionDepth: 5
    functionLinenumber: 4861
    functionLinenumberEnd: 4965
    functionName: AbortOutOfAnyTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - CleanupSubTransaction
    - CleanupTransaction
    - AbortTransaction
    - AtAbort_Portals
    - AbortSubTransaction
    - AtAbort_Memory
    - AtSubAbort_Portals
    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: 4979
      start: 4970
    functionDepth: 0
    functionLinenumber: 4970
    functionLinenumberEnd: 4979
    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: 4997
      start: 4988
    functionDepth: 0
    functionLinenumber: 4988
    functionLinenumberEnd: 4997
    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:5035,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:5036,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5038
      start: 5002
    functionDepth: 1
    functionLinenumber: 5002
    functionLinenumberEnd: 5038
    functionName: TransactionBlockStatusCode
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - BlockStateAsString
    - elog
    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: 5052
      start: 5043
    functionDepth: 0
    functionLinenumber: 5043
    functionLinenumberEnd: 5052
    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:5072,1
    - Dst: TransStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:5073,1
    - Dst: AtSubStart_Memory
      Src: /src/postgres/src/backend/access/transam/xact.c:5082,1
    - Dst: AtSubStart_ResourceOwner
      Src: /src/postgres/src/backend/access/transam/xact.c:5083,1
    - Dst: AfterTriggerBeginSubXact
      Src: /src/postgres/src/backend/access/transam/xact.c:5084,1
    - Dst: CallSubXactCallbacks
      Src: /src/postgres/src/backend/access/transam/xact.c:5091,1
    - Dst: ShowTransactionState
      Src: /src/postgres/src/backend/access/transam/xact.c:5094,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5095
      start: 5066
    functionDepth: 3
    functionLinenumber: 5066
    functionLinenumberEnd: 5095
    functionName: StartSubTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - AfterTriggerBeginSubXact
    - ShowTransactionState
    - AtSubStart_ResourceOwner
    - AtSubStart_Memory
    - elog
    - TransStateAsString
    - CallSubXactCallbacks
    linkageType: ''
    returnType: void
    signature: void StartSubTransaction(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ShowTransactionState
      Src: /src/postgres/src/backend/access/transam/xact.c:5108,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:5111,1
    - Dst: TransStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:5112,1
    - Dst: CallSubXactCallbacks
      Src: /src/postgres/src/backend/access/transam/xact.c:5116,1
    - Dst: AtEOSubXact_Parallel
      Src: /src/postgres/src/backend/access/transam/xact.c:5123,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:5126,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/access/transam/xact.c:5135,1
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:5144,1
    - Dst: AtSubCommit_childXids
      Src: /src/postgres/src/backend/access/transam/xact.c:5145,1
    - Dst: AfterTriggerEndSubXact
      Src: /src/postgres/src/backend/access/transam/xact.c:5146,1
    - Dst: AtSubCommit_Portals
      Src: /src/postgres/src/backend/access/transam/xact.c:5147,1
    - Dst: AtEOSubXact_LargeObject
      Src: /src/postgres/src/backend/access/transam/xact.c:5151,1
    - Dst: AtSubCommit_Notify
      Src: /src/postgres/src/backend/access/transam/xact.c:5153,1
    - Dst: CallSubXactCallbacks
      Src: /src/postgres/src/backend/access/transam/xact.c:5155,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:5158,1
    - Dst: AtEOSubXact_RelationCache
      Src: /src/postgres/src/backend/access/transam/xact.c:5161,1
    - Dst: AtEOSubXact_TypeCache
      Src: /src/postgres/src/backend/access/transam/xact.c:5163,1
    - Dst: AtEOSubXact_Inval
      Src: /src/postgres/src/backend/access/transam/xact.c:5164,1
    - Dst: AtSubCommit_smgr
      Src: /src/postgres/src/backend/access/transam/xact.c:5165,1
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:5171,1
    - Dst: XactLockTableDelete
      Src: /src/postgres/src/backend/access/transam/xact.c:5172,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:5172,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:5177,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:5180,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/backend/access/transam/xact.c:5184,1
    - Dst: AtEOSubXact_SPI
      Src: /src/postgres/src/backend/access/transam/xact.c:5185,1
    - Dst: AtEOSubXact_on_commit_actions
      Src: /src/postgres/src/backend/access/transam/xact.c:5186,1
    - Dst: AtEOSubXact_Namespace
      Src: /src/postgres/src/backend/access/transam/xact.c:5188,1
    - Dst: AtEOSubXact_Files
      Src: /src/postgres/src/backend/access/transam/xact.c:5190,1
    - Dst: AtEOSubXact_HashTables
      Src: /src/postgres/src/backend/access/transam/xact.c:5192,1
    - Dst: AtEOSubXact_PgStat
      Src: /src/postgres/src/backend/access/transam/xact.c:5193,1
    - Dst: AtSubCommit_Snapshot
      Src: /src/postgres/src/backend/access/transam/xact.c:5194,1
    - Dst: ResourceOwnerDelete
      Src: /src/postgres/src/backend/access/transam/xact.c:5205,1
    - Dst: AtSubCommit_Memory
      Src: /src/postgres/src/backend/access/transam/xact.c:5208,1
    - Dst: PopTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:5212,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5213
      start: 5103
    functionDepth: 4
    functionLinenumber: 5103
    functionLinenumberEnd: 5213
    functionName: CommitSubTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 2
    functionsReached:
    - TransStateAsString
    - XidFromFullTransactionId
    - AtEOSubXact_Inval
    - AtEOSubXact_TypeCache
    - AtSubCommit_Snapshot
    - AtEOSubXact_RelationCache
    - AtEOSubXact_SPI
    - ShowTransactionState
    - ResourceOwnerRelease
    - AtSubCommit_smgr
    - AtSubCommit_Notify
    - ResourceOwnerDelete
    - CommandCounterIncrement
    - AtEOXact_GUC
    - AtEOSubXact_HashTables
    - AtEOSubXact_Namespace
    - AtEOSubXact_LargeObject
    - elog
    - XactLockTableDelete
    - AtEOSubXact_Files
    - AfterTriggerEndSubXact
    - AtSubCommit_childXids
    - FullTransactionIdIsValid
    - AtEOSubXact_on_commit_actions
    - AtSubCommit_Memory
    - PopTransaction
    - AtSubCommit_Portals
    - CallSubXactCallbacks
    - AtEOSubXact_PgStat
    - AtEOSubXact_Parallel
    linkageType: ''
    returnType: void
    signature: void CommitSubTransaction(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: HOLD_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/xact.c:5224,1
    - Dst: AtSubAbort_Memory
      Src: /src/postgres/src/backend/access/transam/xact.c:5227,1
    - Dst: AtSubAbort_ResourceOwner
      Src: /src/postgres/src/backend/access/transam/xact.c:5228,1
    - Dst: LWLockReleaseAll
      Src: /src/postgres/src/backend/access/transam/xact.c:5239,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xact.c:5241,1
    - Dst: pgstat_progress_end_command
      Src: /src/postgres/src/backend/access/transam/xact.c:5242,1
    - Dst: pgaio_error_cleanup
      Src: /src/postgres/src/backend/access/transam/xact.c:5244,1
    - Dst: UnlockBuffers
      Src: /src/postgres/src/backend/access/transam/xact.c:5246,1
    - Dst: XLogResetInsertion
      Src: /src/postgres/src/backend/access/transam/xact.c:5249,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/access/transam/xact.c:5252,1
    - Dst: LockErrorCleanup
      Src: /src/postgres/src/backend/access/transam/xact.c:5258,1
    - Dst: reschedule_timeouts
      Src: /src/postgres/src/backend/access/transam/xact.c:5267,1
    - Dst: sigprocmask
      Src: /src/postgres/src/backend/access/transam/xact.c:5274,1
    - Dst: ShowTransactionState
      Src: /src/postgres/src/backend/access/transam/xact.c:5279,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:5282,1
    - Dst: TransStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:5283,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/access/transam/xact.c:5291,1
    - Dst: ResetReindexState
      Src: /src/postgres/src/backend/access/transam/xact.c:5294,1
    - Dst: ResetLogicalStreamingState
      Src: /src/postgres/src/backend/access/transam/xact.c:5297,1
    - Dst: AtEOSubXact_Parallel
      Src: /src/postgres/src/backend/access/transam/xact.c:5308,1
    - Dst: AfterTriggerEndSubXact
      Src: /src/postgres/src/backend/access/transam/xact.c:5317,1
    - Dst: AtSubAbort_Portals
      Src: /src/postgres/src/backend/access/transam/xact.c:5318,1
    - Dst: AtEOSubXact_LargeObject
      Src: /src/postgres/src/backend/access/transam/xact.c:5322,1
    - Dst: AtSubAbort_Notify
      Src: /src/postgres/src/backend/access/transam/xact.c:5324,1
    - Dst: RecordTransactionAbort
      Src: /src/postgres/src/backend/access/transam/xact.c:5327,1
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:5330,1
    - Dst: AtSubAbort_childXids
      Src: /src/postgres/src/backend/access/transam/xact.c:5331,1
    - Dst: CallSubXactCallbacks
      Src: /src/postgres/src/backend/access/transam/xact.c:5333,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:5336,1
    - Dst: AtEOXact_Aio
      Src: /src/postgres/src/backend/access/transam/xact.c:5340,1
    - Dst: AtEOSubXact_RelationCache
      Src: /src/postgres/src/backend/access/transam/xact.c:5341,1
    - Dst: AtEOSubXact_TypeCache
      Src: /src/postgres/src/backend/access/transam/xact.c:5343,1
    - Dst: AtEOSubXact_Inval
      Src: /src/postgres/src/backend/access/transam/xact.c:5344,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:5345,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:5348,1
    - Dst: AtSubAbort_smgr
      Src: /src/postgres/src/backend/access/transam/xact.c:5351,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/backend/access/transam/xact.c:5353,1
    - Dst: AtEOSubXact_SPI
      Src: /src/postgres/src/backend/access/transam/xact.c:5354,1
    - Dst: AtEOSubXact_on_commit_actions
      Src: /src/postgres/src/backend/access/transam/xact.c:5355,1
    - Dst: AtEOSubXact_Namespace
      Src: /src/postgres/src/backend/access/transam/xact.c:5357,1
    - Dst: AtEOSubXact_Files
      Src: /src/postgres/src/backend/access/transam/xact.c:5359,1
    - Dst: AtEOSubXact_HashTables
      Src: /src/postgres/src/backend/access/transam/xact.c:5361,1
    - Dst: AtEOSubXact_PgStat
      Src: /src/postgres/src/backend/access/transam/xact.c:5362,1
    - Dst: AtSubAbort_Snapshot
      Src: /src/postgres/src/backend/access/transam/xact.c:5363,1
    - Dst: RESUME_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/xact.c:5373,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 51
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5374
      start: 5218
    functionDepth: 4
    functionLinenumber: 5218
    functionLinenumberEnd: 5374
    functionName: AbortSubTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 4
    functionsReached:
    - XLogResetInsertion
    - AtEOSubXact_Inval
    - AtEOSubXact_TypeCache
    - AtSubAbort_Snapshot
    - AtSubAbort_Notify
    - pgstat_report_wait_end
    - reschedule_timeouts
    - AtEOSubXact_RelationCache
    - sigprocmask
    - LWLockReleaseAll
    - HOLD_INTERRUPTS
    - AtEOSubXact_SPI
    - pgstat_progress_end_command
    - SetUserIdAndSecContext
    - ShowTransactionState
    - AtSubAbort_childXids
    - ConditionVariableCancelSleep
    - ResourceOwnerRelease
    - AtSubAbort_smgr
    - LockErrorCleanup
    - AtSubAbort_Memory
    - CallSubXactCallbacks
    - AtEOXact_GUC
    - RESUME_INTERRUPTS
    - AtEOSubXact_HashTables
    - AtEOXact_Aio
    - AtEOSubXact_Namespace
    - AtEOSubXact_LargeObject
    - elog
    - AtEOSubXact_Files
    - ResetLogicalStreamingState
    - AtSubAbort_Portals
    - AfterTriggerEndSubXact
    - RecordTransactionAbort
    - FullTransactionIdIsValid
    - pgaio_error_cleanup
    - AtEOSubXact_on_commit_actions
    - ResetReindexState
    - UnlockBuffers
    - TransStateAsString
    - AtSubAbort_ResourceOwner
    - AtEOSubXact_PgStat
    - AtEOSubXact_Parallel
    linkageType: ''
    returnType: void
    signature: void AbortSubTransaction(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ShowTransactionState
      Src: /src/postgres/src/backend/access/transam/xact.c:5387,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:5390,1
    - Dst: TransStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:5391,1
    - Dst: AtSubCleanup_Portals
      Src: /src/postgres/src/backend/access/transam/xact.c:5393,1
    - Dst: ResourceOwnerDelete
      Src: /src/postgres/src/backend/access/transam/xact.c:5398,1
    - Dst: AtSubCleanup_Memory
      Src: /src/postgres/src/backend/access/transam/xact.c:5401,1
    - Dst: PopTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:5405,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5406
      start: 5382
    functionDepth: 2
    functionLinenumber: 5382
    functionLinenumberEnd: 5406
    functionName: CleanupSubTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 4
    functionsReached:
    - AtSubCleanup_Memory
    - ShowTransactionState
    - ResourceOwnerDelete
    - PopTransaction
    - elog
    - TransStateAsString
    - AtSubCleanup_Portals
    linkageType: ''
    returnType: void
    signature: void CleanupSubTransaction(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/access/transam/xact.c:5425,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xact.c:5435,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:5436,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xact.c:5437,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xact.c:5438,1
    - Dst: NewGUCNestLevel
      Src: /src/postgres/src/backend/access/transam/xact.c:5449,1
    - Dst: GetUserIdAndSecContext
      Src: /src/postgres/src/backend/access/transam/xact.c:5453,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5468
      start: 5415
    functionDepth: 1
    functionLinenumber: 5415
    functionLinenumberEnd: 5468
    functionName: PushTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 2
    functionsReached:
    - errmsg
    - pfree
    - GetUserIdAndSecContext
    - MemoryContextAllocZero
    - ereport
    - NewGUCNestLevel
    - errcode
    linkageType: ''
    returnType: void
    signature: void PushTransaction(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:5483,1
    - Dst: TransStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:5484,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:5487,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xact.c:5493,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xact.c:5501,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xact.c:5502,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5503
      start: 5477
    functionDepth: 1
    functionLinenumber: 5477
    functionLinenumberEnd: 5503
    functionName: PopTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 2
    functionsReached:
    - TransStateAsString
    - pfree
    - elog
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void PopTransaction(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:5520,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/transam/xact.c:5521,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/transam/xact.c:5522,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/transam/xact.c:5525,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/transam/xact.c:5525,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5526
      start: 5511
    functionDepth: 1
    functionLinenumber: 5511
    functionLinenumberEnd: 5526
    functionName: EstimateTransactionStateSpace
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - FullTransactionIdIsValid
    - add_size
    - mul_size
    linkageType: ''
    returnType: Size
    signature: Size EstimateTransactionStateSpace(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xact.c:5565,1
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:5576,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/transam/xact.c:5577,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/transam/xact.c:5578,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:5580,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/xact.c:5584,1
    - Dst: FullTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:5587,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:5588,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xact.c:5590,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:5594,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/transam/xact.c:5597,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xact.c:5601,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 2
    argNames:
    - maxsize
    - start_address
    argTypes:
    - Size
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5603
      start: 5539
    functionDepth: 1
    functionLinenumber: 5539
    functionLinenumberEnd: 5603
    functionName: SerializeTransactionState
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - FullTransactionIdIsValid
    - Assert
    - qsort
    - XidFromFullTransactionId
    - memcpy
    - palloc
    - add_size
    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:5615,1
    - Dst: StartTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:5616,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - tstatespace
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5629
      start: 5610
    functionDepth: 1
    functionLinenumber: 5610
    functionLinenumberEnd: 5629
    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:5638,1
    - Dst: CommitTransaction
      Src: /src/postgres/src/backend/access/transam/xact.c:5639,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5641
      start: 5635
    functionDepth: 1
    functionLinenumber: 5635
    functionLinenumberEnd: 5641
    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:5651,1
    - Dst: ShowTransactionStateRec
      Src: /src/postgres/src/backend/access/transam/xact.c:5652,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5653
      start: 5647
    functionDepth: 1
    functionLinenumber: 5647
    functionLinenumberEnd: 5653
    functionName: ShowTransactionState
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 7
    functionsReached:
    - ShowTransactionStateRec
    - message_level_is_interesting
    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:5671,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:5672,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xact.c:5673,1
    - Dst: ShowTransactionStateRec
      Src: /src/postgres/src/backend/access/transam/xact.c:5676,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/access/transam/xact.c:5679,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xact.c:5684,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xact.c:5686,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xact.c:5688,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xact.c:5689,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:5691,1
    - Dst: BlockStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:5692,1
    - Dst: TransStateAsString
      Src: /src/postgres/src/backend/access/transam/xact.c:5693,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xact.c:5694,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xact.c:5699,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - str
    - s
    argTypes:
    - char*
    - TransactionState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5700
      start: 5659
    functionDepth: 3
    functionLinenumber: 5659
    functionLinenumberEnd: 5700
    functionName: ShowTransactionStateRec
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 2
    functionsReached:
    - stack_is_too_deep
    - pfree
    - appendStringInfo
    - XidFromFullTransactionId
    - ShowTransactionStateRec
    - errmsg_internal
    - ereport
    - BlockStateAsString
    - TransStateAsString
    - initStringInfo
    - PointerIsValid
    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: 5753
      start: 5706
    functionDepth: 0
    functionLinenumber: 5706
    functionLinenumberEnd: 5753
    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: 5778
      start: 5759
    functionDepth: 0
    functionLinenumber: 5759
    functionLinenumberEnd: 5778
    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: 5800
      start: 5789
    functionDepth: 0
    functionLinenumber: 5789
    functionLinenumberEnd: 5800
    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:5834,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:5839,1
    - Dst: XLogLogicalInfoActive
      Src: /src/postgres/src/backend/access/transam/xact.c:5866,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:5898,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:5902,1
    - Dst: XLogLogicalInfoActive
      Src: /src/postgres/src/backend/access/transam/xact.c:5904,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xact.c:5922,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:5924,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:5927,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:5930,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:5934,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:5936,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:5942,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:5944,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:5950,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:5952,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:5958,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:5959,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:5965,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:5967,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/xact.c:5967,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:5971,1
    - Dst: XLogSetRecordFlags
      Src: /src/postgres/src/backend/access/transam/xact.c:5974,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xact.c:5976,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: 5977
      start: 5813
    functionDepth: 1
    functionLinenumber: 5813
    functionLinenumberEnd: 5977
    functionName: XactLogCommitRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - Assert
    - XLogBeginInsert
    - TransactionIdIsValid
    - XLogInsert
    - XLogLogicalInfoActive
    - XLogRegisterData
    - XLogSetRecordFlags
    - strlen
    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:6004,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:6009,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:6041,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:6045,1
    - Dst: XLogLogicalInfoActive
      Src: /src/postgres/src/backend/access/transam/xact.c:6047,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:6051,1
    - Dst: XLogLogicalInfoActive
      Src: /src/postgres/src/backend/access/transam/xact.c:6051,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xact.c:6075,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6077,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6080,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6083,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6087,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6089,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6095,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6097,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6103,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6105,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6111,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6113,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/xact.c:6113,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xact.c:6117,1
    - Dst: XLogSetRecordFlags
      Src: /src/postgres/src/backend/access/transam/xact.c:6120,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xact.c:6122,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: 6123
      start: 5985
    functionDepth: 1
    functionLinenumber: 5985
    functionLinenumberEnd: 6123
    functionName: XactLogAbortRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 1
    functionsReached:
    - Assert
    - XLogBeginInsert
    - TransactionIdIsValid
    - XLogInsert
    - XLogLogicalInfoActive
    - XLogRegisterData
    - XLogSetRecordFlags
    - strlen
    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:6138,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:6138,1
    - Dst: TransactionIdLatest
      Src: /src/postgres/src/backend/access/transam/xact.c:6140,1
    - Dst: AdvanceNextFullTransactionIdPastXid
      Src: /src/postgres/src/backend/access/transam/xact.c:6143,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:6145,1
    - Dst: TransactionTreeSetCommitTsData
      Src: /src/postgres/src/backend/access/transam/xact.c:6154,1
    - Dst: TransactionIdCommitTree
      Src: /src/postgres/src/backend/access/transam/xact.c:6162,1
    - Dst: RecordKnownAssignedTransactionIds
      Src: /src/postgres/src/backend/access/transam/xact.c:6175,1
    - Dst: TransactionIdAsyncCommitTree
      Src: /src/postgres/src/backend/access/transam/xact.c:6186,1
    - Dst: ExpireTreeKnownAssignedTransactionIds
      Src: /src/postgres/src/backend/access/transam/xact.c:6191,1
    - Dst: ProcessCommittedInvalidationMessages
      Src: /src/postgres/src/backend/access/transam/xact.c:6198,1
    - Dst: XactCompletionRelcacheInitFileInval
      Src: /src/postgres/src/backend/access/transam/xact.c:6199,1
    - Dst: StandbyReleaseLockTree
      Src: /src/postgres/src/backend/access/transam/xact.c:6208,1
    - Dst: replorigin_advance
      Src: /src/postgres/src/backend/access/transam/xact.c:6214,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/xact.c:6236,1
    - Dst: DropRelationFiles
      Src: /src/postgres/src/backend/access/transam/xact.c:6239,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/xact.c:6245,1
    - Dst: pgstat_execute_transactional_drops
      Src: /src/postgres/src/backend/access/transam/xact.c:6247,1
    - Dst: XactCompletionForceSyncCommit
      Src: /src/postgres/src/backend/access/transam/xact.c:6262,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/xact.c:6263,1
    - Dst: XactCompletionApplyFeedback
      Src: /src/postgres/src/backend/access/transam/xact.c:6270,1
    - Dst: XLogRequestWalReceiverReply
      Src: /src/postgres/src/backend/access/transam/xact.c:6271,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 4
    argNames:
    - parsed
    - xid
    - lsn
    - origin_id
    argTypes:
    - xl_xact_parsed_commit*
    - TransactionId
    - XLogRecPtr
    - RepOriginId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6272
      start: 6129
    functionDepth: 3
    functionLinenumber: 6129
    functionLinenumberEnd: 6272
    functionName: xact_redo_commit
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - RecordKnownAssignedTransactionIds
    - TransactionIdLatest
    - XactCompletionRelcacheInitFileInval
    - ExpireTreeKnownAssignedTransactionIds
    - replorigin_advance
    - XactCompletionForceSyncCommit
    - TransactionTreeSetCommitTsData
    - StandbyReleaseLockTree
    - TransactionIdIsValid
    - pgstat_execute_transactional_drops
    - ProcessCommittedInvalidationMessages
    - XactCompletionApplyFeedback
    - TransactionIdCommitTree
    - XLogFlush
    - Assert
    - XLogRequestWalReceiverReply
    - AdvanceNextFullTransactionIdPastXid
    - DropRelationFiles
    - TransactionIdAsyncCommitTree
    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 RepOriginId origin_id)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:6289,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xact.c:6289,1
    - Dst: TransactionIdLatest
      Src: /src/postgres/src/backend/access/transam/xact.c:6292,1
    - Dst: AdvanceNextFullTransactionIdPastXid
      Src: /src/postgres/src/backend/access/transam/xact.c:6295,1
    - Dst: TransactionIdAbortTree
      Src: /src/postgres/src/backend/access/transam/xact.c:6300,1
    - Dst: RecordKnownAssignedTransactionIds
      Src: /src/postgres/src/backend/access/transam/xact.c:6313,1
    - Dst: TransactionIdAbortTree
      Src: /src/postgres/src/backend/access/transam/xact.c:6316,1
    - Dst: ExpireTreeKnownAssignedTransactionIds
      Src: /src/postgres/src/backend/access/transam/xact.c:6321,1
    - Dst: StandbyReleaseLockTree
      Src: /src/postgres/src/backend/access/transam/xact.c:6331,1
    - Dst: replorigin_advance
      Src: /src/postgres/src/backend/access/transam/xact.c:6337,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/xact.c:6348,1
    - Dst: DropRelationFiles
      Src: /src/postgres/src/backend/access/transam/xact.c:6350,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/xact.c:6356,1
    - Dst: pgstat_execute_transactional_drops
      Src: /src/postgres/src/backend/access/transam/xact.c:6358,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 4
    argNames:
    - parsed
    - xid
    - lsn
    - origin_id
    argTypes:
    - xl_xact_parsed_abort*
    - TransactionId
    - XLogRecPtr
    - RepOriginId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6360
      start: 6283
    functionDepth: 3
    functionLinenumber: 6283
    functionLinenumberEnd: 6360
    functionName: xact_redo_abort
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - RecordKnownAssignedTransactionIds
    - Assert
    - TransactionIdLatest
    - TransactionIdIsValid
    - pgstat_execute_transactional_drops
    - ExpireTreeKnownAssignedTransactionIds
    - XLogFlush
    - AdvanceNextFullTransactionIdPastXid
    - TransactionIdAbortTree
    - replorigin_advance
    - DropRelationFiles
    - StandbyReleaseLockTree
    linkageType: ''
    returnType: void
    signature: "void xact_redo_abort(xl_xact_parsed_abort *parsed, TransactionId xid,\n\t\t\t\tXLogRecPtr
      lsn, RepOriginId origin_id)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xact.c:6365,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xact.c:6368,1
    - Dst: XLogRecHasAnyBlockRefs
      Src: /src/postgres/src/backend/access/transam/xact.c:6368,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xact.c:6372,1
    - Dst: ParseCommitRecord
      Src: /src/postgres/src/backend/access/transam/xact.c:6375,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xact.c:6375,1
    - Dst: xact_redo_commit
      Src: /src/postgres/src/backend/access/transam/xact.c:6376,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/transam/xact.c:6376,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/access/transam/xact.c:6377,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xact.c:6381,1
    - Dst: ParseCommitRecord
      Src: /src/postgres/src/backend/access/transam/xact.c:6384,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xact.c:6384,1
    - Dst: xact_redo_commit
      Src: /src/postgres/src/backend/access/transam/xact.c:6385,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/access/transam/xact.c:6386,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xact.c:6389,1
    - Dst: PrepareRedoRemove
      Src: /src/postgres/src/backend/access/transam/xact.c:6390,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:6391,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xact.c:6395,1
    - Dst: ParseAbortRecord
      Src: /src/postgres/src/backend/access/transam/xact.c:6398,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xact.c:6398,1
    - Dst: xact_redo_abort
      Src: /src/postgres/src/backend/access/transam/xact.c:6399,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/transam/xact.c:6399,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/access/transam/xact.c:6400,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xact.c:6404,1
    - Dst: ParseAbortRecord
      Src: /src/postgres/src/backend/access/transam/xact.c:6407,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xact.c:6407,1
    - Dst: xact_redo_abort
      Src: /src/postgres/src/backend/access/transam/xact.c:6408,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/access/transam/xact.c:6409,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xact.c:6412,1
    - Dst: PrepareRedoRemove
      Src: /src/postgres/src/backend/access/transam/xact.c:6413,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xact.c:6414,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xact.c:6422,1
    - Dst: PrepareRedoAdd
      Src: /src/postgres/src/backend/access/transam/xact.c:6423,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xact.c:6423,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/access/transam/xact.c:6426,1
    - Dst: LWLockRelease
      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: ProcArrayApplyXidAssignment
      Src: /src/postgres/src/backend/access/transam/xact.c:6434,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xact.c:6445,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6446
      start: 6362
    functionDepth: 4
    functionLinenumber: 6362
    functionLinenumberEnd: 6446
    functionName: xact_redo
    functionSourceFile: /src/postgres/src/backend/access/transam/xact.c
    functionUses: 0
    functionsReached:
    - Assert
    - ParseCommitRecord
    - XLogRecGetOrigin
    - LWLockRelease
    - xact_redo_commit
    - ProcArrayApplyXidAssignment
    - XLogRecHasAnyBlockRefs
    - XLogRecGetInfo
    - XLogRecGetData
    - elog
    - xact_redo_abort
    - PrepareRedoRemove
    - PrepareRedoAdd
    - XLogRecGetXid
    - LWLockAcquire
    - ParseAbortRecord
    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: 74
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 74
    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: 76
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 76
    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:210,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:213,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: 224
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 224
    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:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lrq
    argTypes:
    - LsnReadQueue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 230
    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: 236
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 236
    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: 242
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 242
    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:251,1
    - Dst: LsnReadQueue*::next
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:252,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - lrq
    argTypes:
    - LsnReadQueue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 244
    functionDepth: 1
    functionLinenumber: 244
    functionLinenumberEnd: 269
    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:289,1
    - Dst: lrq_prefetch
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:290,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - lrq
    - lsn
    argTypes:
    - LsnReadQueue*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 271
    functionDepth: 2
    functionLinenumber: 271
    functionLinenumberEnd: 291
    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: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 297
    functionName: XLogPrefetchShmemSize
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t XLogPrefetchShmemSize(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:305,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:305,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:306,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:307,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:308,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:309,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:310,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 302
    functionDepth: 2
    functionLinenumber: 302
    functionLinenumberEnd: 312
    functionName: XLogPrefetchResetStats
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached:
    - pg_atomic_write_u64
    - GetCurrentTimestamp
    linkageType: ''
    returnType: void
    signature: void XLogPrefetchResetStats(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ShmemInitStruct
      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:326,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:326,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:327,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:328,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:329,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:330,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:331,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:332,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 314
    functionDepth: 2
    functionLinenumber: 314
    functionLinenumberEnd: 334
    functionName: XLogPrefetchShmemInit
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached:
    - pg_atomic_init_u64
    - ShmemInitStruct
    - GetCurrentTimestamp
    linkageType: ''
    returnType: void
    signature: void XLogPrefetchShmemInit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 339
    functionDepth: 0
    functionLinenumber: 339
    functionLinenumberEnd: 343
    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:353,1
    - Dst: AmStartupProcess
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:353,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:354,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:354,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - counter
    argTypes:
    - pg_atomic_uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 350
    functionDepth: 2
    functionLinenumber: 350
    functionLinenumberEnd: 355
    functionName: XLogPrefetchIncrement
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached:
    - pg_atomic_write_u64
    - Assert
    - pg_atomic_read_u64
    - AmStartupProcess
    linkageType: ''
    returnType: void
    signature: void XLogPrefetchIncrement(pg_atomic_uint64 *counter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:367,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:372,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - reader
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 361
    functionDepth: 1
    functionLinenumber: 361
    functionLinenumberEnd: 384
    functionName: XLogPrefetcherAllocate
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached:
    - hash_create
    - dlist_init
    - palloc0
    linkageType: ''
    returnType: XLogPrefetcher
    signature: 'XLogPrefetcher *

      XLogPrefetcherAllocate(XLogReaderState *reader)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lrq_free
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:392,1
    - Dst: hash_destroy
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:393,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - prefetcher
    argTypes:
    - XLogPrefetcher*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 389
    functionDepth: 1
    functionLinenumber: 389
    functionLinenumberEnd: 395
    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: 404
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 404
    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:430,1
    - Dst: lrq_completed
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:431,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - prefetcher
    argTypes:
    - XLogPrefetcher*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 409
    functionDepth: 1
    functionLinenumber: 409
    functionLinenumberEnd: 440
    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:484,1
    - Dst: XLogReadAhead
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:490,1
    - Dst: RecoveryPrefetchEnabled
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:510,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:548,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:550,1
    - Dst: XLogPrefetcherAddFilter
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:578,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:581,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:584,1
    - Dst: XLogPrefetcherAddFilter
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:605,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:609,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:614,1
    - Dst: XLogPrefetcherAddFilter
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:627,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:632,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:638,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:655,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:655,1
    - Dst: XLogPrefetchIncrement
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:676,1
    - Dst: XLogPrefetchIncrement
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:683,1
    - Dst: XLogPrefetcherIsFiltered
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:688,1
    - Dst: XLogPrefetchIncrement
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:690,1
    - Dst: RelFileLocatorEquals
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:698,1
    - Dst: XLogPrefetchIncrement
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:705,1
    - Dst: smgropen
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:719,1
    - Dst: smgrexists
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:728,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:731,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:736,1
    - Dst: XLogPrefetcherAddFilter
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:738,1
    - Dst: XLogPrefetchIncrement
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:740,1
    - Dst: smgrnblocks
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:749,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:752,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:758,1
    - Dst: XLogPrefetcherAddFilter
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:760,1
    - Dst: XLogPrefetchIncrement
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:762,1
    - Dst: PrefetchSharedBuffer
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:767,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:768,1
    - Dst: XLogPrefetchIncrement
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:771,1
    - Dst: XLogPrefetchIncrement
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:778,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:791,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:817,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 109
    argCount: 2
    argNames:
    - pgsr_private
    - lsn
    argTypes:
    - uintptr_t
    - XLogRecPtr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 458
    functionDepth: 3
    functionLinenumber: 458
    functionLinenumberEnd: 818
    functionName: XLogPrefetcherNextBlock
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached:
    - RecoveryPrefetchEnabled
    - LSN_FORMAT_ARGS
    - Assert
    - XLogReaderHasQueuedRecordOrError
    - BufferIsValid
    - smgropen
    - pg_unreachable
    - XLogPrefetcherAddFilter
    - XLogPrefetchIncrement
    - RelFileLocatorEquals
    - XLogReadAhead
    - elog
    - smgrexists
    - PrefetchSharedBuffer
    - smgrnblocks
    - XLogPrefetcherIsFiltered
    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:831,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:836,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:836,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:837,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:837,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:838,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:838,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:839,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:839,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:840,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:840,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:841,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:841,1
    - Dst: Int64GetDatum
      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: Int32GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:843,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:844,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:845,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:846,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 823
    functionDepth: 2
    functionLinenumber: 823
    functionLinenumberEnd: 849
    functionName: pg_stat_get_recovery_prefetch
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached:
    - tuplestore_putvalues
    - Int32GetDatum
    - Int64GetDatum
    - InitMaterializedSRF
    - TimestampTzGetDatum
    - pg_atomic_read_u64
    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:862,1
    - Dst: dlist_push_head
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:870,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:881,1
    - Dst: dlist_push_head
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:882,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:883,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 4
    argNames:
    - prefetcher
    - rlocator
    - blockno
    - lsn
    argTypes:
    - XLogPrefetcher*
    - RelFileLocator
    - BlockNumber
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 855
    functionDepth: 2
    functionLinenumber: 855
    functionLinenumberEnd: 885
    functionName: XLogPrefetcherAddFilter
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 1
    functionsReached:
    - dlist_push_head
    - dlist_delete
    - Min
    - hash_search
    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:896,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:896,1
    - Dst: dlist_tail_element
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:898,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:905,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:906,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - prefetcher
    - replaying_lsn
    argTypes:
    - XLogPrefetcher*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 908
      start: 893
    functionDepth: 1
    functionLinenumber: 893
    functionLinenumberEnd: 908
    functionName: XLogPrefetcherCompleteFilters
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached:
    - dlist_tail_element
    - hash_search
    - dlist_is_empty
    - unlikely
    - dlist_delete
    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:921,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:921,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:926,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:930,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:933,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:942,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:946,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:949,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - prefetcher
    - rlocator
    - blockno
    argTypes:
    - XLogPrefetcher*
    - RelFileLocator
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 913
    functionDepth: 1
    functionLinenumber: 913
    functionLinenumberEnd: 956
    functionName: XLogPrefetcherIsFiltered
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 1
    functionsReached:
    - LSN_FORMAT_ARGS
    - dlist_is_empty
    - hash_search
    - unlikely
    - elog
    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:973,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - prefetcher
    - recPtr
    argTypes:
    - XLogPrefetcher*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 974
      start: 961
    functionDepth: 1
    functionLinenumber: 961
    functionLinenumberEnd: 974
    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:990,1
    - Dst: lrq_free
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:996,1
    - Dst: RecoveryPrefetchEnabled
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:998,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1000,1
    - Dst: lrq_alloc
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1010,1
    - Dst: XLogReleasePreviousRecord
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1022,1
    - Dst: XLogPrefetcherCompleteFilters
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1029,1
    - Dst: lrq_complete_lsn
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1035,1
    - Dst: XLogReaderHasQueuedRecordOrError
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1041,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1043,1
    - Dst: lrq_inflight
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1043,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1044,1
    - Dst: lrq_completed
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1044,1
    - Dst: lrq_prefetch
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1045,1
    - Dst: XLogNextRecord
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1049,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1057,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1072,1
    - Dst: XLogPrefetcherComputeStats
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1073,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1075,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 2
    argNames:
    - prefetcher
    - errmsg
    argTypes:
    - XLogPrefetcher*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1078
      start: 980
    functionDepth: 3
    functionLinenumber: 980
    functionLinenumberEnd: 1078
    functionName: XLogPrefetcherReadRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogprefetcher.c
    functionUses: 0
    functionsReached:
    - RecoveryPrefetchEnabled
    - Assert
    - XLogReaderHasQueuedRecordOrError
    - lrq_inflight
    - lrq_completed
    - lrq_free
    - lrq_alloc
    - XLogPrefetcherCompleteFilters
    - lrq_complete_lsn
    - unlikely
    - XLogReleasePreviousRecord
    - lrq_prefetch
    - XLogPrefetcherComputeStats
    - XLogNextRecord
    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:1086,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - new_value
    - extra
    - source
    argTypes:
    - int*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1092
      start: 1080
    functionDepth: 0
    functionLinenumber: 1080
    functionLinenumberEnd: 1092
    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:1099,1
    - Dst: XLogPrefetchReconfigure
      Src: /src/postgres/src/backend/access/transam/xlogprefetcher.c:1100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - new_value
    - extra
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1101
      start: 1094
    functionDepth: 1
    functionLinenumber: 1094
    functionLinenumberEnd: 1101
    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:
    - memcpy
    - Assert
    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:
    - writeFragment
    - Min
    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:
    - memcmp
    - elog
    - computeRegionDelta
    - memcpy
    - applyPageRedo
    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:
    - BufferIsInvalid
    - memcpy
    - elog
    - BufferGetPage
    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:
    - MarkBufferDirty
    - PageSetLSN
    - START_CRIT_SECTION
    - pfree
    - computeDelta
    - XLogBeginInsert
    - memcpy
    - memset
    - XLogRegisterBufData
    - XLogInsert
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    - BufferIsInvalid
    - BufferGetPage
    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:
    - PageSetLSN
    - Assert
    - MarkBufferDirty
    - BufferIsValid
    - memset
    - XLogRecHasBlockRef
    - XLogRecMaxBlockId
    - XLogReadBufferForRedo
    - BufferGetPage
    - applyPageRedo
    - XLogRecGetBlockData
    - UnlockReleaseBuffer
    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_unused_space
    - mask_page_lsn_and_checksum
    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: 593
      start: 591
    functionDepth: 0
    functionLinenumber: 591
    functionLinenumberEnd: 593
    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: 597
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 597
    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: 604
      start: 602
    functionDepth: 0
    functionLinenumber: 602
    functionLinenumberEnd: 604
    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: 615
      start: 614
    functionDepth: 0
    functionLinenumber: 614
    functionLinenumberEnd: 615
    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: 637
      start: 631
    functionDepth: 0
    functionLinenumber: 631
    functionLinenumberEnd: 637
    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:777,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:786,1
    - Dst: XLogInsertAllowed
      Src: /src/postgres/src/backend/access/transam/xlog.c:789,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:790,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:830,1
    - Dst: likely
      Src: /src/postgres/src/backend/access/transam/xlog.c:832,1
    - Dst: WALInsertLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:834,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:854,1
    - Dst: WALInsertLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:867,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:868,1
    - Dst: ReserveXLogInsertLocation
      Src: /src/postgres/src/backend/access/transam/xlog.c:876,1
    - Dst: ReserveXLogSwitch
      Src: /src/postgres/src/backend/access/transam/xlog.c:897,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:901,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:910,1
    - Dst: WALInsertLockAcquireExclusive
      Src: /src/postgres/src/backend/access/transam/xlog.c:911,1
    - Dst: ReserveXLogInsertLocation
      Src: /src/postgres/src/backend/access/transam/xlog.c:912,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 5
    argNames:
    - rdata
    - fpw_lsn
    - flags
    - num_fpi
    - topxid_included
    argTypes:
    - XLogRecData*
    - XLogRecPtr
    - uint8
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 916
      start: 758
    functionDepth: 1
    functionLinenumber: 758
    functionLinenumberEnd: 916
    functionName: XLogInsertRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - Assert
    - START_CRIT_SECTION
    - ReserveXLogSwitch
    - likely
    - WALInsertLockAcquireExclusive
    - ReserveXLogInsertLocation
    - XLogInsertAllowed
    - WALInsertLockRelease
    - unlikely
    - elog
    - END_CRIT_SECTION
    - WALInsertLockAcquire
    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 bool topxid_included)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:1007,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1014
      start: 1002
    functionDepth: 1
    functionLinenumber: 1002
    functionLinenumberEnd: 1014
    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:1127,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1130,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:1142,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:1150,1
    - Dst: XLogBytePosToRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:1152,1
    - Dst: XLogBytePosToEndRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:1153,1
    - Dst: XLogBytePosToRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:1154,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1160,1
    - Dst: XLogRecPtrToBytePos
      Src: /src/postgres/src/backend/access/transam/xlog.c:1160,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1161,1
    - Dst: XLogRecPtrToBytePos
      Src: /src/postgres/src/backend/access/transam/xlog.c:1161,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1162,1
    - Dst: XLogRecPtrToBytePos
      Src: /src/postgres/src/backend/access/transam/xlog.c:1162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 4
    argNames:
    - size
    - StartPos
    - EndPos
    - PrevPtr
    argTypes:
    - int
    - XLogRecPtr*
    - XLogRecPtr*
    - XLogRecPtr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1163
      start: 1118
    functionDepth: 1
    functionLinenumber: 1118
    functionLinenumberEnd: 1163
    functionName: ReserveXLogInsertLocation
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - Assert
    - MAXALIGN
    - XLogBytePosToEndRecPtr
    - XLogRecPtrToBytePos
    - SpinLockRelease
    - XLogBytePosToRecPtr
    - SpinLockAcquire
    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:1181,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:1191,1
    - Dst: XLogBytePosToEndRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:1195,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:1196,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:1198,1
    - Dst: XLogBytePosToRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:1206,1
    - Dst: XLogBytePosToEndRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:1207,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:1209,1
    - Dst: XLogRecPtrToBytePos
      Src: /src/postgres/src/backend/access/transam/xlog.c:1214,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:1219,1
    - Dst: XLogBytePosToRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:1221,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1223,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:1223,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1224,1
    - Dst: XLogRecPtrToBytePos
      Src: /src/postgres/src/backend/access/transam/xlog.c:1224,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1225,1
    - Dst: XLogRecPtrToBytePos
      Src: /src/postgres/src/backend/access/transam/xlog.c:1225,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1226,1
    - Dst: XLogRecPtrToBytePos
      Src: /src/postgres/src/backend/access/transam/xlog.c:1226,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 3
    argNames:
    - StartPos
    - EndPos
    - PrevPtr
    argTypes:
    - XLogRecPtr*
    - XLogRecPtr*
    - XLogRecPtr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1229
      start: 1174
    functionDepth: 1
    functionLinenumber: 1174
    functionLinenumberEnd: 1229
    functionName: ReserveXLogSwitch
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - XLogSegmentOffset
    - Assert
    - MAXALIGN
    - XLogBytePosToRecPtr
    - XLogRecPtrToBytePos
    - SpinLockRelease
    - XLogBytePosToEndRecPtr
    - SpinLockAcquire
    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:1250,1
    - Dst: INSERT_FREESPACE
      Src: /src/postgres/src/backend/access/transam/xlog.c:1251,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1257,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1271,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:1272,1
    - Dst: GetXLogBuffer
      Src: /src/postgres/src/backend/access/transam/xlog.c:1287,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:1293,1
    - Dst: INSERT_FREESPACE
      Src: /src/postgres/src/backend/access/transam/xlog.c:1303,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1306,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:1307,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1315,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:1322,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1325,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1328,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:1328,1
    - Dst: GetXLogBuffer
      Src: /src/postgres/src/backend/access/transam/xlog.c:1360,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/xlog.c:1361,1
    - Dst: MAXALIGN64
      Src: /src/postgres/src/backend/access/transam/xlog.c:1369,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:1373,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:1374,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlog.c:1375,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: 1376
      start: 1235
    functionDepth: 1
    functionLinenumber: 1235
    functionLinenumberEnd: 1376
    functionName: CopyXLogRecordToWAL
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - XLogSegmentOffset
    - Assert
    - MAXALIGN64
    - errmsg_internal
    - ereport
    - MemSet
    - memcpy
    - GetXLogBuffer
    - errcode
    - 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:1407,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1420
      start: 1381
    functionDepth: 1
    functionLinenumber: 1381
    functionLinenumberEnd: 1420
    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:1438,1
    - Dst: LWLockUpdateVar
      Src: /src/postgres/src/backend/access/transam/xlog.c:1439,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:1444,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1447
      start: 1426
    functionDepth: 1
    functionLinenumber: 1426
    functionLinenumberEnd: 1447
    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:1463,1
    - Dst: LWLockReleaseClearVar
      Src: /src/postgres/src/backend/access/transam/xlog.c:1471,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1475
      start: 1455
    functionDepth: 1
    functionLinenumber: 1455
    functionLinenumberEnd: 1475
    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:1490,1
    - Dst: LWLockUpdateVar
      Src: /src/postgres/src/backend/access/transam/xlog.c:1495,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - insertingAt
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1498
      start: 1481
    functionDepth: 1
    functionLinenumber: 1481
    functionLinenumberEnd: 1498
    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:1525,1
    - Dst: pg_atomic_read_membarrier_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:1531,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:1536,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:1538,1
    - Dst: XLogBytePosToEndRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:1539,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:1551,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:1552,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:1553,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:1553,1
    - Dst: LWLockWaitForVar
      Src: /src/postgres/src/backend/access/transam/xlog.c:1596,1
    - Dst: pg_atomic_monotonic_advance_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:1620,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 1
    argNames:
    - upto
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1624
      start: 1514
    functionDepth: 3
    functionLinenumber: 1514
    functionLinenumberEnd: 1624
    functionName: WaitXLogInsertionsToFinish
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - errmsg
    - LSN_FORMAT_ARGS
    - pg_atomic_read_membarrier_u64
    - pg_atomic_monotonic_advance_u64
    - LWLockWaitForVar
    - ereport
    - SpinLockRelease
    - elog
    - XLogBytePosToEndRecPtr
    - SpinLockAcquire
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr WaitXLogInsertionsToFinish(XLogRecPtr upto)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1657,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1658,1
    - Dst: XLogRecPtrToBufIdx
      Src: /src/postgres/src/backend/access/transam/xlog.c:1667,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:1685,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:1705,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:1708,1
    - Dst: WALInsertLockUpdateInsertingAt
      Src: /src/postgres/src/backend/access/transam/xlog.c:1713,1
    - Dst: AdvanceXLInsertBuffer
      Src: /src/postgres/src/backend/access/transam/xlog.c:1715,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:1716,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:1719,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:1720,1
    - Dst: pg_memory_barrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:1728,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1738,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1739,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 2
    argNames:
    - ptr
    - tli
    argTypes:
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1742
      start: 1642
    functionDepth: 2
    functionLinenumber: 1642
    functionLinenumberEnd: 1742
    functionName: GetXLogBuffer
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - XLogSegmentOffset
    - LSN_FORMAT_ARGS
    - Assert
    - WALInsertLockUpdateInsertingAt
    - AdvanceXLInsertBuffer
    - elog
    - XLogRecPtrToBufIdx
    - pg_atomic_read_u64
    - pg_memory_barrier
    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:1767,1
    - Dst: GetWALInsertionTimeLine
      Src: /src/postgres/src/backend/access/transam/xlog.c:1767,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1770,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/xlog.c:1770,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:1776,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:1778,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:1779,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:1780,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:1781,1
    - Dst: XLogRecPtrToBufIdx
      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:1817,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/xlog.c:1828,1
    - Dst: pg_read_barrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:1834,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:1837,1
    - Dst: pg_read_barrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:1843,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:1849,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1858,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 4
    argNames:
    - dstbuf
    - startptr
    - count
    - tli
    argTypes:
    - char*
    - XLogRecPtr
    - Size
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1861
      start: 1758
    functionDepth: 2
    functionLinenumber: 1758
    functionLinenumberEnd: 1861
    functionName: WALReadFromBuffers
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - errmsg
    - LSN_FORMAT_ARGS
    - Assert
    - Min
    - pg_read_barrier
    - ereport
    - GetWALInsertionTimeLine
    - pg_atomic_read_u64
    - XLogRecPtrToBufIdx
    - memcpy
    - XLogRecPtrIsInvalid
    - RecoveryInProgress
    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:1897,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - bytepos
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1900
      start: 1868
    functionDepth: 1
    functionLinenumber: 1868
    functionLinenumberEnd: 1900
    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:1943,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - bytepos
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1946
      start: 1908
    functionDepth: 1
    functionLinenumber: 1908
    functionLinenumberEnd: 1946
    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:1959,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:1961,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1969,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:1980,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1986
      start: 1951
    functionDepth: 1
    functionLinenumber: 1951
    functionLinenumberEnd: 1986
    functionName: XLogRecPtrToBytePos
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 2
    functionsReached:
    - XLogSegmentOffset
    - XLByteToSeg
    - Assert
    linkageType: ''
    returnType: uint64
    signature: uint64 XLogRecPtrToBytePos(XLogRecPtr ptr)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:2017,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:2018,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:2029,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:2032,1
    - Dst: pg_atomic_compare_exchange_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:2060,1
    - Dst: XLogRecPtrToBufIdx
      Src: /src/postgres/src/backend/access/transam/xlog.c:2068,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:2069,1
    - Dst: ConditionVariableSleep
      Src: /src/postgres/src/backend/access/transam/xlog.c:2070,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/access/transam/xlog.c:2071,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:2072,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:2072,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:2080,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:2083,1
    - Dst: RefreshXLogWriteResult
      Src: /src/postgres/src/backend/access/transam/xlog.c:2089,1
    - Dst: WaitXLogInsertionsToFinish
      Src: /src/postgres/src/backend/access/transam/xlog.c:2092,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:2094,1
    - Dst: RefreshXLogWriteResult
      Src: /src/postgres/src/backend/access/transam/xlog.c:2096,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:2100,1
    - Dst: TRACE_POSTGRESQL_WAL_BUFFER_WRITE_DIRTY_START
      Src: /src/postgres/src/backend/access/transam/xlog.c:2105,1
    - Dst: XLogWrite
      Src: /src/postgres/src/backend/access/transam/xlog.c:2108,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:2109,1
    - Dst: TRACE_POSTGRESQL_WAL_BUFFER_WRITE_DIRTY_DONE
      Src: /src/postgres/src/backend/access/transam/xlog.c:2111,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:2130,1
    - Dst: pg_write_barrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:2131,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/xlog.c:2137,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:2169,1
    - Dst: pg_write_barrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:2184,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:2241,1
    - Dst: pg_write_barrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:2243,1
    - Dst: pg_atomic_compare_exchange_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:2245,1
    - Dst: XLogRecPtrToBufIdx
      Src: /src/postgres/src/backend/access/transam/xlog.c:2249,1
    - Dst: pg_read_barrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:2251,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:2253,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/access/transam/xlog.c:2260,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:2268,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:2275,1
    - Dst: ConditionVariableSleep
      Src: /src/postgres/src/backend/access/transam/xlog.c:2276,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/access/transam/xlog.c:2277,1
    - Dst: pg_read_barrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:2279,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:2284,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:2285,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 83
    argCount: 3
    argNames:
    - upto
    - tli
    - opportunistic
    argTypes:
    - XLogRecPtr
    - TimeLineID
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2288
      start: 1995
    functionDepth: 4
    functionLinenumber: 1995
    functionLinenumberEnd: 2288
    functionName: AdvanceXLInsertBuffer
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - LSN_FORMAT_ARGS
    - SpinLockRelease
    - XLogRecPtrToBufIdx
    - ConditionVariableSleep
    - LWLockRelease
    - XLogWrite
    - START_CRIT_SECTION
    - ConditionVariableCancelSleep
    - END_CRIT_SECTION
    - TRACE_POSTGRESQL_WAL_BUFFER_WRITE_DIRTY_START
    - pg_atomic_compare_exchange_u64
    - XLogSegmentOffset
    - WaitXLogInsertionsToFinish
    - RefreshXLogWriteResult
    - pg_read_barrier
    - elog
    - MemSet
    - TRACE_POSTGRESQL_WAL_BUFFER_WRITE_DIRTY_DONE
    - SpinLockAcquire
    - Assert
    - ConditionVariableBroadcast
    - pg_atomic_read_u64
    - pg_write_barrier
    - pg_atomic_write_u64
    - LWLockAcquire
    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:2313,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2321
      start: 2294
    functionDepth: 1
    functionLinenumber: 2294
    functionLinenumberEnd: 2321
    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:2327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2328
      start: 2323
    functionDepth: 2
    functionLinenumber: 2323
    functionLinenumberEnd: 2328
    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:2334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - double
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2335
      start: 2330
    functionDepth: 2
    functionLinenumber: 2330
    functionLinenumberEnd: 2335
    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:2340,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:2342,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - int*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2347
      start: 2337
    functionDepth: 1
    functionLinenumber: 2337
    functionLinenumberEnd: 2347
    functionName: check_wal_segment_size
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - GUC_check_errdetail
    - IsValidWalSegSize
    linkageType: ''
    returnType: bool
    signature: bool check_wal_segment_size(int *newval, void **extra, GucSource source)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:2360,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - int*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2366
      start: 2355
    functionDepth: 0
    functionLinenumber: 2355
    functionLinenumberEnd: 2366
    functionName: check_max_slot_wal_keep_size
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool check_max_slot_wal_keep_size(int *newval, void **extra, GucSource
      source)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ConvertToXSegs
      Src: /src/postgres/src/backend/access/transam/xlog.c:2386,1
    - Dst: ConvertToXSegs
      Src: /src/postgres/src/backend/access/transam/xlog.c:2388,1
    - Dst: ceil
      Src: /src/postgres/src/backend/access/transam/xlog.c:2402,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - lastredoptr
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2411
      start: 2372
    functionDepth: 1
    functionLinenumber: 2372
    functionLinenumberEnd: 2411
    functionName: XLOGfileslop
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - ceil
    - ConvertToXSegs
    linkageType: ''
    returnType: XLogSegNo
    signature: XLogSegNo XLOGfileslop(XLogRecPtr lastredoptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:2427,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - new_segno
    argTypes:
    - XLogSegNo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2432
      start: 2422
    functionDepth: 1
    functionLinenumber: 2422
    functionLinenumberEnd: 2432
    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:2458,1
    - Dst: RefreshXLogWriteResult
      Src: /src/postgres/src/backend/access/transam/xlog.c:2463,1
    - Dst: XLogRecPtrToBufIdx
      Src: /src/postgres/src/backend/access/transam/xlog.c:2483,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:2492,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:2495,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:2496,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:2497,1
    - Dst: XLByteInPrevSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:2503,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:2510,1
    - Dst: XLogFileClose
      Src: /src/postgres/src/backend/access/transam/xlog.c:2512,1
    - Dst: XLByteToPrevSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:2513,1
    - Dst: XLogFileInit
      Src: /src/postgres/src/backend/access/transam/xlog.c:2518,1
    - Dst: ReserveExternalFD
      Src: /src/postgres/src/backend/access/transam/xlog.c:2519,1
    - Dst: XLByteToPrevSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:2525,1
    - Dst: XLogFileOpen
      Src: /src/postgres/src/backend/access/transam/xlog.c:2528,1
    - Dst: ReserveExternalFD
      Src: /src/postgres/src/backend/access/transam/xlog.c:2529,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:2537,1
    - Dst: pgstat_prepare_io_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:2574,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:2576,1
    - Dst: pg_pwrite
      Src: /src/postgres/src/backend/access/transam/xlog.c:2577,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:2578,1
    - Dst: pgstat_count_io_op_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:2580,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:2592,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:2595,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:2596,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:2597,1
    - Dst: issue_xlog_fsync
      Src: /src/postgres/src/backend/access/transam/xlog.c:2622,1
    - Dst: WalSndWakeupRequest
      Src: /src/postgres/src/backend/access/transam/xlog.c:2625,1
    - Dst: XLogArchivingActive
      Src: /src/postgres/src/backend/access/transam/xlog.c:2629,1
    - Dst: XLogArchiveNotifySeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:2630,1
    - Dst: time
      Src: /src/postgres/src/backend/access/transam/xlog.c:2632,1
    - Dst: XLogCheckpointNeeded
      Src: /src/postgres/src/backend/access/transam/xlog.c:2642,1
    - Dst: GetRedoRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:2644,1
    - Dst: XLogCheckpointNeeded
      Src: /src/postgres/src/backend/access/transam/xlog.c:2645,1
    - Dst: RequestCheckpoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:2646,1
    - Dst: NextBufIdx
      Src: /src/postgres/src/backend/access/transam/xlog.c:2657,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:2664,1
    - Dst: XLByteInPrevSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:2681,1
    - Dst: XLogFileClose
      Src: /src/postgres/src/backend/access/transam/xlog.c:2683,1
    - Dst: XLByteToPrevSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:2686,1
    - Dst: XLogFileOpen
      Src: /src/postgres/src/backend/access/transam/xlog.c:2689,1
    - Dst: ReserveExternalFD
      Src: /src/postgres/src/backend/access/transam/xlog.c:2690,1
    - Dst: issue_xlog_fsync
      Src: /src/postgres/src/backend/access/transam/xlog.c:2693,1
    - Dst: WalSndWakeupRequest
      Src: /src/postgres/src/backend/access/transam/xlog.c:2697,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:2709,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:2714,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:2721,1
    - Dst: pg_write_barrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:2722,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:2723,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:2731,1
    - Dst: pg_read_barrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:2732,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:2733,1
    - Dst: pg_read_barrier
      Src: /src/postgres/src/backend/access/transam/xlog.c:2734,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:2735,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:2738,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:2741,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 114
    argCount: 3
    argNames:
    - WriteRqst
    - tli
    - flexible
    argTypes:
    - XLogwrtRqst
    - TimeLineID
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2744
      start: 2446
    functionDepth: 3
    functionLinenumber: 2446
    functionLinenumberEnd: 2744
    functionName: XLogWrite
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - LSN_FORMAT_ARGS
    - XLogArchivingActive
    - XLogFileInit
    - time
    - SpinLockRelease
    - XLogFileOpen
    - XLogRecPtrToBufIdx
    - pgstat_report_wait_end
    - RequestCheckpoint
    - XLByteToPrevSeg
    - pgstat_report_wait_start
    - errcode_for_file_access
    - NextBufIdx
    - pg_pwrite
    - XLByteInPrevSeg
    - ReserveExternalFD
    - XLogSegmentOffset
    - errmsg
    - pg_write_barrier
    - GetRedoRecPtr
    - XLogCheckpointNeeded
    - RefreshXLogWriteResult
    - pg_read_barrier
    - XLogFileName
    - elog
    - pgstat_prepare_io_time
    - pgstat_count_io_op_time
    - SpinLockAcquire
    - Assert
    - XLogArchiveNotifySeg
    - ereport
    - issue_xlog_fsync
    - pg_atomic_read_u64
    - WalSndWakeupRequest
    - pg_atomic_write_u64
    - XLogFileClose
    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:2759,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:2764,1
    - Dst: RefreshXLogWriteResult
      Src: /src/postgres/src/backend/access/transam/xlog.c:2785,1
    - Dst: SetLatch
      Src: /src/postgres/src/backend/access/transam/xlog.c:2800,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/access/transam/xlog.c:2800,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - asyncXactLSN
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2802
      start: 2751
    functionDepth: 1
    functionLinenumber: 2751
    functionLinenumberEnd: 2802
    functionName: XLogSetAsyncXactLSN
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 3
    functionsReached:
    - RefreshXLogWriteResult
    - SpinLockRelease
    - GetPGProcByNumber
    - SetLatch
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void XLogSetAsyncXactLSN(XLogRecPtr asyncXactLSN)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:2811,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:2813,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - lsn
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2814
      start: 2808
    functionDepth: 1
    functionLinenumber: 2808
    functionLinenumberEnd: 2814
    functionName: XLogSetReplicationSlotMinimumLSN
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void XLogSetReplicationSlotMinimumLSN(XLogRecPtr lsn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:2826,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:2828,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2831
      start: 2821
    functionDepth: 1
    functionLinenumber: 2821
    functionLinenumberEnd: 2831
    functionName: XLogGetReplicationSlotMinimumLSN
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr XLogGetReplicationSlotMinimumLSN(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/xlog.c:2860,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:2866,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/xlog.c:2872,1
    - Dst: GetCurrentReplayRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:2892,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:2894,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:2896,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:2896,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:2903,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:2907,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlog.c:2908,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:2909,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:2913,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 2
    argNames:
    - lsn
    - force
    argTypes:
    - XLogRecPtr
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2914
      start: 2842
    functionDepth: 1
    functionLinenumber: 2842
    functionLinenumberEnd: 2914
    functionName: UpdateMinRecoveryPoint
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - LWLockAcquire
    - errmsg_internal
    - ereport
    - elog
    - XLogRecPtrIsInvalid
    - LWLockRelease
    - GetCurrentReplayRecPtr
    - UpdateControlFile
    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:2936,1
    - Dst: UpdateMinRecoveryPoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:2938,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:2948,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:2949,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:2950,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:2951,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:2954,1
    - Dst: RefreshXLogWriteResult
      Src: /src/postgres/src/backend/access/transam/xlog.c:2976,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:2984,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:2987,1
    - Dst: WaitXLogInsertionsToFinish
      Src: /src/postgres/src/backend/access/transam/xlog.c:2988,1
    - Dst: LWLockAcquireOrWait
      Src: /src/postgres/src/backend/access/transam/xlog.c:2997,1
    - Dst: RefreshXLogWriteResult
      Src: /src/postgres/src/backend/access/transam/xlog.c:3008,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:3011,1
    - Dst: MinimumActiveBackends
      Src: /src/postgres/src/backend/access/transam/xlog.c:3025,1
    - Dst: pg_usleep
      Src: /src/postgres/src/backend/access/transam/xlog.c:3027,1
    - Dst: WaitXLogInsertionsToFinish
      Src: /src/postgres/src/backend/access/transam/xlog.c:3039,1
    - Dst: XLogWrite
      Src: /src/postgres/src/backend/access/transam/xlog.c:3046,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:3048,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:3053,1
    - Dst: WalSndWakeupProcessRequests
      Src: /src/postgres/src/backend/access/transam/xlog.c:3056,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:3056,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:3080,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:3082,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:3083,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 42
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3084
      start: 2922
    functionDepth: 4
    functionLinenumber: 2922
    functionLinenumberEnd: 3084
    functionName: XLogFlush
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 5
    functionsReached:
    - LSN_FORMAT_ARGS
    - WaitXLogInsertionsToFinish
    - START_CRIT_SECTION
    - WalSndWakeupProcessRequests
    - XLogInsertAllowed
    - RefreshXLogWriteResult
    - pg_usleep
    - SpinLockRelease
    - elog
    - END_CRIT_SECTION
    - UpdateMinRecoveryPoint
    - LWLockAcquireOrWait
    - MinimumActiveBackends
    - LWLockRelease
    - RecoveryInProgress
    - XLogWrite
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void XLogFlush(XLogRecPtr record)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:3121,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:3131,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:3133,1
    - Dst: RefreshXLogWriteResult
      Src: /src/postgres/src/backend/access/transam/xlog.c:3139,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:3142,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:3144,1
    - Dst: XLByteInPrevSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3157,1
    - Dst: XLogFileClose
      Src: /src/postgres/src/backend/access/transam/xlog.c:3160,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlog.c:3174,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/access/transam/xlog.c:3184,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:3208,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:3209,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:3210,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:3211,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:3212,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:3215,1
    - Dst: WaitXLogInsertionsToFinish
      Src: /src/postgres/src/backend/access/transam/xlog.c:3218,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:3219,1
    - Dst: RefreshXLogWriteResult
      Src: /src/postgres/src/backend/access/transam/xlog.c:3220,1
    - Dst: XLogWrite
      Src: /src/postgres/src/backend/access/transam/xlog.c:3224,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:3226,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:3228,1
    - Dst: WalSndWakeupProcessRequests
      Src: /src/postgres/src/backend/access/transam/xlog.c:3231,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:3231,1
    - Dst: AdvanceXLInsertBuffer
      Src: /src/postgres/src/backend/access/transam/xlog.c:3237,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 53
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3245
      start: 3110
    functionDepth: 5
    functionLinenumber: 3110
    functionLinenumberEnd: 3245
    functionName: XLogBackgroundFlush
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - WaitXLogInsertionsToFinish
    - START_CRIT_SECTION
    - WalSndWakeupProcessRequests
    - XLByteInPrevSeg
    - RefreshXLogWriteResult
    - AdvanceXLInsertBuffer
    - SpinLockRelease
    - elog
    - END_CRIT_SECTION
    - GetCurrentTimestamp
    - XLogFileClose
    - TimestampDifferenceExceeds
    - LWLockRelease
    - LWLockAcquire
    - RecoveryInProgress
    - XLogWrite
    - SpinLockAcquire
    linkageType: ''
    returnType: bool
    signature: bool XLogBackgroundFlush(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:3261,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/xlog.c:3271,1
    - Dst: LWLockConditionalAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:3282,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:3286,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/xlog.c:3293,1
    - Dst: RefreshXLogWriteResult
      Src: /src/postgres/src/backend/access/transam/xlog.c:3308,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3315
      start: 3253
    functionDepth: 1
    functionLinenumber: 3253
    functionLinenumberEnd: 3315
    functionName: XLogNeedsFlush
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - LWLockConditionalAcquire
    - RefreshXLogWriteResult
    - XLogRecPtrIsInvalid
    - LWLockRelease
    - RecoveryInProgress
    linkageType: ''
    returnType: bool
    signature: bool XLogNeedsFlush(XLogRecPtr record)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:3342,1
    - Dst: XLogFilePath
      Src: /src/postgres/src/backend/access/transam/xlog.c:3344,1
    - Dst: BasicOpenFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:3350,1
    - Dst: get_sync_bit
      Src: /src/postgres/src/backend/access/transam/xlog.c:3351,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3355,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3356,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3357,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:3368,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:3370,1
    - Dst: getpid
      Src: /src/postgres/src/backend/access/transam/xlog.c:3370,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:3372,1
    - Dst: BasicOpenFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:3378,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3380,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3381,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3382,1
    - Dst: pgstat_prepare_io_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:3385,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:3387,1
    - Dst: pg_pwrite_zeros
      Src: /src/postgres/src/backend/access/transam/xlog.c:3402,1
    - Dst: pg_pwrite
      Src: /src/postgres/src/backend/access/transam/xlog.c:3414,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:3420,1
    - Dst: pgstat_count_io_op_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:3426,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:3435,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlog.c:3437,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3441,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3442,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3443,1
    - Dst: pgstat_prepare_io_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:3447,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:3449,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/transam/xlog.c:3450,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlog.c:3453,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3455,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3456,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3457,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:3459,1
    - Dst: pgstat_count_io_op_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:3461,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlog.c:3464,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3465,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3466,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3467,1
    - Dst: InstallXLogFileSegment
      Src: /src/postgres/src/backend/access/transam/xlog.c:3486,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:3490,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:3499,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:3500,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 61
    argCount: 4
    argNames:
    - logsegno
    - logtli
    - added
    - path
    argTypes:
    - XLogSegNo
    - TimeLineID
    - bool*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3504
      start: 3330
    functionDepth: 6
    functionLinenumber: 3330
    functionLinenumberEnd: 3504
    functionName: XLogFileInitInternal
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - InstallXLogFileSegment
    - snprintf
    - BasicOpenFile
    - pgstat_report_wait_end
    - pgstat_report_wait_start
    - errcode_for_file_access
    - pg_pwrite
    - get_sync_bit
    - pg_fsync
    - errmsg
    - close
    - elog
    - getpid
    - pgstat_prepare_io_time
    - pgstat_count_io_op_time
    - XLogFilePath
    - Assert
    - ereport
    - unlink
    - pg_pwrite_zeros
    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:3525,1
    - Dst: XLogFileInitInternal
      Src: /src/postgres/src/backend/access/transam/xlog.c:3527,1
    - Dst: BasicOpenFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:3532,1
    - Dst: get_sync_bit
      Src: /src/postgres/src/backend/access/transam/xlog.c:3533,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3535,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3536,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3537,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - logsegno
    - logtli
    argTypes:
    - XLogSegNo
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3539
      start: 3518
    functionDepth: 7
    functionLinenumber: 3518
    functionLinenumberEnd: 3539
    functionName: XLogFileInit
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - errmsg
    - Assert
    - XLogFileInitInternal
    - get_sync_bit
    - BasicOpenFile
    - ereport
    - 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:3571,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:3572,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3574,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3575,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3576,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:3581,1
    - Dst: getpid
      Src: /src/postgres/src/backend/access/transam/xlog.c:3581,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:3583,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:3586,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3588,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3589,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3590,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/xlog.c:3606,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:3614,1
    - Dst: read
      Src: /src/postgres/src/backend/access/transam/xlog.c:3615,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3619,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3620,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3621,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3624,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:3625,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3626,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:3629,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:3632,1
    - Dst: write
      Src: /src/postgres/src/backend/access/transam/xlog.c:3633,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:3640,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3644,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3645,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3646,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:3648,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:3651,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/transam/xlog.c:3652,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3653,1
    - Dst: data_sync_elevel
      Src: /src/postgres/src/backend/access/transam/xlog.c:3653,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3654,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3655,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:3656,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:3658,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3659,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3660,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3661,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:3663,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3664,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3665,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3666,1
    - Dst: InstallXLogFileSegment
      Src: /src/postgres/src/backend/access/transam/xlog.c:3671,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:3672,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: 3673
      start: 3556
    functionDepth: 2
    functionLinenumber: 3556
    functionLinenumberEnd: 3673
    functionName: XLogFileCopy
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - InstallXLogFileSegment
    - snprintf
    - pgstat_report_wait_end
    - data_sync_elevel
    - pgstat_report_wait_start
    - errcode_for_file_access
    - read
    - pg_fsync
    - errmsg
    - write
    - CloseTransientFile
    - elog
    - getpid
    - XLogFilePath
    - memset
    - ereport
    - OpenTransientFile
    - unlink
    - errcode
    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:3708,1
    - Dst: XLogFilePath
      Src: /src/postgres/src/backend/access/transam/xlog.c:3710,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:3712,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:3715,1
    - Dst: durable_unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:3722,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlog.c:3727,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:3732,1
    - Dst: XLogFilePath
      Src: /src/postgres/src/backend/access/transam/xlog.c:3736,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:3740,1
    - Dst: access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3740,1
    - Dst: durable_rename
      Src: /src/postgres/src/backend/access/transam/xlog.c:3741,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:3743,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:3748,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: 3751
      start: 3701
    functionDepth: 2
    functionLinenumber: 3701
    functionLinenumberEnd: 3751
    functionName: InstallXLogFileSegment
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 2
    functionsReached:
    - XLogFilePath
    - Assert
    - durable_rename
    - stat
    - durable_unlink
    - access
    - LWLockRelease
    - LWLockAcquire
    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:3762,1
    - Dst: BasicOpenFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:3764,1
    - Dst: get_sync_bit
      Src: /src/postgres/src/backend/access/transam/xlog.c:3765,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3767,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3768,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3769,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - segno
    - tli
    argTypes:
    - XLogSegNo
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3772
      start: 3756
    functionDepth: 2
    functionLinenumber: 3756
    functionLinenumberEnd: 3772
    functionName: XLogFileOpen
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - XLogFilePath
    - errmsg
    - get_sync_bit
    - BasicOpenFile
    - ereport
    - 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:3780,1
    - Dst: XLogIsNeeded
      Src: /src/postgres/src/backend/access/transam/xlog.c:3789,1
    - Dst: posix_fadvise
      Src: /src/postgres/src/backend/access/transam/xlog.c:3790,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlog.c:3793,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:3798,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3800,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3801,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3802,1
    - Dst: ReleaseExternalFD
      Src: /src/postgres/src/backend/access/transam/xlog.c:3806,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3807
      start: 3777
    functionDepth: 2
    functionLinenumber: 3777
    functionLinenumberEnd: 3807
    functionName: XLogFileClose
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 2
    functionsReached:
    - errmsg
    - ReleaseExternalFD
    - Assert
    - XLogIsNeeded
    - close
    - ereport
    - 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:3840,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:3841,1
    - Dst: XLogFileInitInternal
      Src: /src/postgres/src/backend/access/transam/xlog.c:3845,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlog.c:3847,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - endptr
    - tli
    argTypes:
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3851
      start: 3828
    functionDepth: 7
    functionLinenumber: 3828
    functionLinenumberEnd: 3851
    functionName: PreallocXlogFiles
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - XLByteToPrevSeg
    - close
    - XLogFileInitInternal
    - XLogSegmentOffset
    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:3871,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:3873,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:3879,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:3881,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:3882,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:3883,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - segno
    - tli
    argTypes:
    - XLogSegNo
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3887
      start: 3865
    functionDepth: 2
    functionLinenumber: 3865
    functionLinenumberEnd: 3887
    functionName: CheckXLogRemoved
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - errmsg
    - SpinLockAcquire
    - ereport
    - XLogFileName
    - SpinLockRelease
    - 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:3901,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:3903,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3906
      start: 3896
    functionDepth: 1
    functionLinenumber: 3896
    functionLinenumberEnd: 3906
    functionName: XLogGetLastRemovedSegno
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: XLogSegNo
    signature: XLogSegNo XLogGetLastRemovedSegno(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:3919,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:3920,1
    - Dst: IsXLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:3926,1
    - Dst: XLogFromFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:3930,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:3942,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 1
    argNames:
    - tli
    argTypes:
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3944
      start: 3912
    functionDepth: 2
    functionLinenumber: 3912
    functionLinenumberEnd: 3944
    functionName: XLogGetOldestSegno
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - XLogFromFileName
    - ReadDir
    - AllocateDir
    - FreeDir
    - IsXLogFileName
    linkageType: ''
    returnType: XLogSegNo
    signature: XLogSegNo XLogGetOldestSegno(TimeLineID tli)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogFromFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:3956,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:3958,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:3961,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - filename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3962
      start: 3950
    functionDepth: 2
    functionLinenumber: 3950
    functionLinenumberEnd: 3962
    functionName: UpdateLastRemovedPtr
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - XLogFromFileName
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void UpdateLastRemovedPtr(char *filename)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:3976,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:3978,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:3979,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/access/transam/xlog.c:3983,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:3986,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:3987,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:3988,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:3990,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3991
      start: 3970
    functionDepth: 1
    functionLinenumber: 3970
    functionLinenumberEnd: 3991
    functionName: RemoveTempXlogFiles
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - ReadDir
    - AllocateDir
    - FreeDir
    - snprintf
    - elog
    - unlink
    - strncmp
    linkageType: ''
    returnType: void
    signature: void RemoveTempXlogFiles(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4014,1
    - Dst: XLOGfileslop
      Src: /src/postgres/src/backend/access/transam/xlog.c:4015,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:4022,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:4024,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:4027,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:4029,1
    - Dst: IsXLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:4032,1
    - Dst: IsPartialXLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:4033,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlog.c:4047,1
    - Dst: XLogArchiveCheckDone
      Src: /src/postgres/src/backend/access/transam/xlog.c:4049,1
    - Dst: UpdateLastRemovedPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:4052,1
    - Dst: RemoveXlogFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:4054,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:4059,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 4
    argNames:
    - segno
    - lastredoptr
    - endptr
    - insertTLI
    argTypes:
    - XLogSegNo
    - XLogRecPtr
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4060
      start: 4003
    functionDepth: 3
    functionLinenumber: 4003
    functionLinenumberEnd: 4060
    functionName: RemoveOldXlogFiles
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - XLByteToSeg
    - RemoveXlogFile
    - ReadDir
    - AllocateDir
    - FreeDir
    - XLOGfileslop
    - XLogFileName
    - XLogArchiveCheckDone
    - UpdateLastRemovedPtr
    - elog
    - IsPartialXLogFileName
    - strcmp
    - IsXLogFileName
    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:4092,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4093,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:4099,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:4101,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:4104,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:4106,1
    - Dst: IsXLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:4109,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/access/transam/xlog.c:4117,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlog.c:4118,1
    - Dst: XLogArchiveIsReady
      Src: /src/postgres/src/backend/access/transam/xlog.c:4126,1
    - Dst: RemoveXlogFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:4127,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:4131,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - switchpoint
    - newTLI
    argTypes:
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4132
      start: 4078
    functionDepth: 2
    functionLinenumber: 4078
    functionLinenumberEnd: 4132
    functionName: RemoveNonParentXlogFiles
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - XLByteToSeg
    - XLogArchiveIsReady
    - RemoveXlogFile
    - ReadDir
    - AllocateDir
    - FreeDir
    - XLogFileName
    - elog
    - XLByteToPrevSeg
    - strcmp
    - IsXLogFileName
    - strncmp
    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:4158,1
    - Dst: get_dirent_type
      Src: /src/postgres/src/backend/access/transam/xlog.c:4168,1
    - Dst: InstallXLogFileSegment
      Src: /src/postgres/src/backend/access/transam/xlog.c:4169,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4172,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlog.c:4173,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4184,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlog.c:4185,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:4200,1
    - Dst: rename
      Src: /src/postgres/src/backend/access/transam/xlog.c:4201,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4203,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:4204,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4205,1
    - Dst: durable_unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:4209,1
    - Dst: durable_unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:4211,1
    - Dst: XLogArchiveCleanup
      Src: /src/postgres/src/backend/access/transam/xlog.c:4221,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: 4222
      start: 4147
    functionDepth: 3
    functionLinenumber: 4147
    functionLinenumberEnd: 4222
    functionName: RemoveXlogFile
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 2
    functionsReached:
    - errmsg
    - XLogArchiveCleanup
    - rename
    - InstallXLogFileSegment
    - snprintf
    - errmsg_internal
    - ereport
    - get_dirent_type
    - durable_unlink
    - errcode_for_file_access
    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:4244,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/backend/access/transam/xlog.c:4245,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4246,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:4247,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4248,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:4252,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlog.c:4253,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/backend/access/transam/xlog.c:4256,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4257,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:4258,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4259,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4264,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4265,1
    - Dst: MakePGDirectory
      Src: /src/postgres/src/backend/access/transam/xlog.c:4266,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4267,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:4268,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4269,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:4274,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlog.c:4275,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/backend/access/transam/xlog.c:4278,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4279,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4280,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4285,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4286,1
    - Dst: MakePGDirectory
      Src: /src/postgres/src/backend/access/transam/xlog.c:4287,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4288,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4289,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4292
      start: 4237
    functionDepth: 1
    functionLinenumber: 4237
    functionLinenumberEnd: 4292
    functionName: ValidateXLOGDirectoryStructure
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - errmsg
    - stat
    - snprintf
    - S_ISDIR
    - ereport
    - MakePGDirectory
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void ValidateXLOGDirectoryStructure(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:4306,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:4308,1
    - Dst: IsBackupHistoryFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:4310,1
    - Dst: XLogArchiveCheckDone
      Src: /src/postgres/src/backend/access/transam/xlog.c:4312,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:4314,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:4316,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:4317,1
    - Dst: XLogArchiveCleanup
      Src: /src/postgres/src/backend/access/transam/xlog.c:4318,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:4323,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4324
      start: 4299
    functionDepth: 1
    functionLinenumber: 4299
    functionLinenumberEnd: 4324
    functionName: CleanupBackupHistory
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - IsBackupHistoryFileName
    - XLogArchiveCleanup
    - ReadDir
    - AllocateDir
    - FreeDir
    - snprintf
    - XLogArchiveCheckDone
    - elog
    - unlink
    linkageType: ''
    returnType: void
    signature: void CleanupBackupHistory(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_strong_random
      Src: /src/postgres/src/backend/access/transam/xlog.c:4353,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4354,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4355,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4356,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/xlog.c:4358,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:4361,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 2
    argNames:
    - sysidentifier
    - data_checksum_version
    argTypes:
    - uint64
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4375
      start: 4342
    functionDepth: 1
    functionLinenumber: 4342
    functionLinenumberEnd: 4375
    functionName: InitControlFile
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - errmsg
    - memset
    - ereport
    - memcpy
    - errcode
    - 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:4433,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlog.c:4434,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlog.c:4437,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/xlog.c:4446,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:4447,1
    - Dst: BasicOpenFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:4449,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4452,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:4453,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4454,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:4458,1
    - Dst: write
      Src: /src/postgres/src/backend/access/transam/xlog.c:4459,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4464,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:4465,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4466,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:4469,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:4471,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/transam/xlog.c:4472,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4473,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:4474,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4475,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:4477,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlog.c:4479,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4480,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:4481,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4482,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4484
      start: 4377
    functionDepth: 1
    functionLinenumber: 4377
    functionLinenumberEnd: 4484
    functionName: WriteControlFile
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - COMP_CRC32C
    - errmsg
    - write
    - memset
    - FIN_CRC32C
    - INIT_CRC32C
    - BasicOpenFile
    - close
    - ereport
    - pgstat_report_wait_end
    - memcpy
    - pgstat_report_wait_start
    - pg_fsync
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void WriteControlFile(void)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: BasicOpenFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:4497,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4500,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:4501,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4502,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:4505,1
    - Dst: read
      Src: /src/postgres/src/backend/access/transam/xlog.c:4506,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4510,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:4511,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4512,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4515,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4516,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4517,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:4520,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlog.c:4522,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:4535,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4539,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:4545,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4548,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlog.c:4551,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlog.c:4552,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlog.c:4555,1
    - Dst: EQ_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlog.c:4557,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4558,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4559,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4560,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4568,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4569,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4570,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4572,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4576,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4578,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4579,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4580,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4582,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4586,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4588,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4589,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4590,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4591,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4592,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4594,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4595,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4596,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4598,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4602,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4604,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4605,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4606,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4608,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4612,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4614,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4615,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4616,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4618,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4622,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4624,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4625,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4626,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4628,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4632,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4634,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4635,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4636,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4638,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4642,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4644,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4645,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4646,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4648,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4652,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4654,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4655,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4656,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4658,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4662,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4666,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4667,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4668,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4669,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4671,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4674,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4675,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4676,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4677,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:4679,1
    - Dst: IsValidWalSegSize
      Src: /src/postgres/src/backend/access/transam/xlog.c:4684,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4685,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4685,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/access/transam/xlog.c:4686,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4690,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:4692,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/access/transam/xlog.c:4693,1
    - Dst: ConvertToXSegs
      Src: /src/postgres/src/backend/access/transam/xlog.c:4697,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4698,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4698,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4700,1
    - Dst: ConvertToXSegs
      Src: /src/postgres/src/backend/access/transam/xlog.c:4703,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:4704,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:4704,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:4706,1
    - Dst: CalculateCheckpointSegments
      Src: /src/postgres/src/backend/access/transam/xlog.c:4713,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/access/transam/xlog.c:4716,1
    - Dst: DataChecksumsEnabled
      Src: /src/postgres/src/backend/access/transam/xlog.c:4716,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 58
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4718
      start: 4486
    functionDepth: 2
    functionLinenumber: 4486
    functionLinenumberEnd: 4718
    functionName: ReadControlFile
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - snprintf
    - BasicOpenFile
    - errhint
    - pgstat_report_wait_end
    - IsValidWalSegSize
    - pgstat_report_wait_start
    - errdetail
    - errcode_for_file_access
    - COMP_CRC32C
    - CalculateCheckpointSegments
    - SetConfigOption
    - DataChecksumsEnabled
    - FIN_CRC32C
    - EQ_CRC32C
    - read
    - errmsg
    - close
    - errmsg_plural
    - INIT_CRC32C
    - ereport
    - ConvertToXSegs
    - errcode
    linkageType: ''
    returnType: void
    signature: void ReadControlFile(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: update_controlfile
      Src: /src/postgres/src/backend/access/transam/xlog.c:4727,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4728
      start: 4724
    functionDepth: 2
    functionLinenumber: 4724
    functionLinenumberEnd: 4728
    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:4736,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4738
      start: 4733
    functionDepth: 1
    functionLinenumber: 4733
    functionLinenumberEnd: 4738
    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:4746,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4748
      start: 4743
    functionDepth: 1
    functionLinenumber: 4743
    functionLinenumberEnd: 4748
    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:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:4756,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4758
      start: 4753
    functionDepth: 1
    functionLinenumber: 4753
    functionLinenumberEnd: 4758
    functionName: DataChecksumsEnabled
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: bool
    signature: bool DataChecksumsEnabled(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4771
      start: 4767
    functionDepth: 0
    functionLinenumber: 4767
    functionLinenumberEnd: 4771
    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:4785,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4786
      start: 4782
    functionDepth: 2
    functionLinenumber: 4782
    functionLinenumberEnd: 4786
    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: 4810
      start: 4799
    functionDepth: 0
    functionLinenumber: 4799
    functionLinenumberEnd: 4810
    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:4831,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - int*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4845
      start: 4815
    functionDepth: 1
    functionLinenumber: 4815
    functionLinenumberEnd: 4845
    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:4859,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/transam/xlog.c:4862,1
    - Dst: SplitIdentifierString
      Src: /src/postgres/src/backend/access/transam/xlog.c:4865,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4868,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlog.c:4869,1
    - Dst: list_free
      Src: /src/postgres/src/backend/access/transam/xlog.c:4870,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/transam/xlog.c:4876,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/access/transam/xlog.c:4880,1
    - Dst: RmgrIdExists
      Src: /src/postgres/src/backend/access/transam/xlog.c:4883,1
    - Dst: GetRmgr
      Src: /src/postgres/src/backend/access/transam/xlog.c:4883,1
    - Dst: RmgrIdExists
      Src: /src/postgres/src/backend/access/transam/xlog.c:4893,1
    - Dst: GetRmgr
      Src: /src/postgres/src/backend/access/transam/xlog.c:4893,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/access/transam/xlog.c:4894,1
    - Dst: GetRmgr
      Src: /src/postgres/src/backend/access/transam/xlog.c:4894,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4914,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlog.c:4915,1
    - Dst: list_free
      Src: /src/postgres/src/backend/access/transam/xlog.c:4916,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlog.c:4923,1
    - Dst: list_free
      Src: /src/postgres/src/backend/access/transam/xlog.c:4924,1
    - Dst: guc_malloc
      Src: /src/postgres/src/backend/access/transam/xlog.c:4927,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:4930,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4932
      start: 4850
    functionDepth: 2
    functionLinenumber: 4850
    functionLinenumberEnd: 4932
    functionName: check_wal_consistency_checking
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - GUC_check_errdetail
    - pfree
    - memcpy
    - GetRmgr
    - pstrdup
    - MemSet
    - guc_malloc
    - RmgrIdExists
    - pg_strcasecmp
    - SplitIdentifierString
    - lfirst
    - list_free
    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:4876,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/access/transam/xlog.c:4880,1
    - Dst: RmgrIdExists
      Src: /src/postgres/src/backend/access/transam/xlog.c:4883,1
    - Dst: GetRmgr
      Src: /src/postgres/src/backend/access/transam/xlog.c:4883,1
    - Dst: RmgrIdExists
      Src: /src/postgres/src/backend/access/transam/xlog.c:4893,1
    - Dst: GetRmgr
      Src: /src/postgres/src/backend/access/transam/xlog.c:4893,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/access/transam/xlog.c:4894,1
    - Dst: GetRmgr
      Src: /src/postgres/src/backend/access/transam/xlog.c:4894,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:4914,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlog.c:4915,1
    - Dst: list_free
      Src: /src/postgres/src/backend/access/transam/xlog.c:4916,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4921
      start: 4874
    functionDepth: 2
    functionLinenumber: 4874
    functionLinenumberEnd: 4921
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 28
    functionsReached:
    - GUC_check_errdetail
    - pfree
    - GetRmgr
    - RmgrIdExists
    - pg_strcasecmp
    - lfirst
    - list_free
    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: 4954
      start: 4937
    functionDepth: 0
    functionLinenumber: 4937
    functionLinenumberEnd: 4954
    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:4967,1
    - Dst: find_option
      Src: /src/postgres/src/backend/access/transam/xlog.c:4973,1
    - Dst: set_config_option_ext
      Src: /src/postgres/src/backend/access/transam/xlog.c:4977,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:4983,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4985
      start: 4964
    functionDepth: 1
    functionLinenumber: 4964
    functionLinenumberEnd: 4985
    functionName: InitializeWalConsistencyChecking
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - Assert
    - find_option
    - set_config_option_ext
    linkageType: ''
    returnType: void
    signature: void InitializeWalConsistencyChecking(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogArchivingActive
      Src: /src/postgres/src/backend/access/transam/xlog.c:4993,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4997
      start: 4990
    functionDepth: 1
    functionLinenumber: 4990
    functionLinenumberEnd: 4997
    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:5011,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5012
      start: 5002
    functionDepth: 1
    functionLinenumber: 5002
    functionLinenumberEnd: 5012
    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: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:5029,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/xlog.c:5030,1
    - Dst: ReadControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:5031,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - reset
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5032
      start: 5026
    functionDepth: 3
    functionLinenumber: 5026
    functionLinenumberEnd: 5032
    functionName: LocalProcessControlFile
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - Assert
    - palloc
    - ReadControlFile
    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: 5043
      start: 5039
    functionDepth: 0
    functionLinenumber: 5039
    functionLinenumberEnd: 5043
    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:5068,1
    - Dst: XLOGChooseNumBuffers
      Src: /src/postgres/src/backend/access/transam/xlog.c:5068,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/access/transam/xlog.c:5069,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/access/transam/xlog.c:5072,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:5075,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/transam/xlog.c:5081,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/transam/xlog.c:5081,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/transam/xlog.c:5083,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/transam/xlog.c:5083,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/transam/xlog.c:5085,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/transam/xlog.c:5085,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/transam/xlog.c:5087,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/transam/xlog.c:5087,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5096
      start: 5048
    functionDepth: 1
    functionLinenumber: 5048
    functionLinenumberEnd: 5096
    functionName: XLOGShmemSize
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - Assert
    - SetConfigOption
    - snprintf
    - XLOGChooseNumBuffers
    - Max
    - add_size
    - mul_size
    linkageType: ''
    returnType: Size
    signature: Size XLOGShmemSize(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/transam/xlog.c:5116,1
    - Dst: MemoryContextAllowInCriticalSection
      Src: /src/postgres/src/backend/access/transam/xlog.c:5119,1
    - Dst: ShmemInitStruct
      Src: /src/postgres/src/backend/access/transam/xlog.c:5125,1
    - Dst: XLOGShmemSize
      Src: /src/postgres/src/backend/access/transam/xlog.c:5125,1
    - Dst: ShmemInitStruct
      Src: /src/postgres/src/backend/access/transam/xlog.c:5129,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:5134,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlog.c:5140,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/xlog.c:5143,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:5151,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlog.c:5152,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:5166,1
    - Dst: LWLockInitialize
      Src: /src/postgres/src/backend/access/transam/xlog.c:5178,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:5179,1
    - Dst: TYPEALIGN
      Src: /src/postgres/src/backend/access/transam/xlog.c:5188,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/xlog.c:5190,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/access/transam/xlog.c:5201,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/access/transam/xlog.c:5202,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:5203,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:5204,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:5205,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:5206,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:5208,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:5209,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/backend/access/transam/xlog.c:5210,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5211
      start: 5098
    functionDepth: 2
    functionLinenumber: 5098
    functionLinenumberEnd: 5211
    functionName: XLOGShmemInit
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - LWLockInitialize
    - memset
    - XLOGShmemSize
    - SpinLockInit
    - MemoryContextAllowInCriticalSection
    - AllocSetContextCreate
    - ConditionVariableInit
    - memcpy
    - pg_atomic_init_u64
    - ShmemInitStruct
    - TYPEALIGN
    linkageType: ''
    returnType: void
    signature: void XLOGShmemInit(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SetInstallXLogFileSegmentActive
      Src: /src/postgres/src/backend/access/transam/xlog.c:5231,1
    - Dst: gettimeofday
      Src: /src/postgres/src/backend/access/transam/xlog.c:5245,1
    - Dst: getpid
      Src: /src/postgres/src/backend/access/transam/xlog.c:5248,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/xlog.c:5251,1
    - Dst: TYPEALIGN
      Src: /src/postgres/src/backend/access/transam/xlog.c:5252,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/xlog.c:5253,1
    - Dst: FullTransactionIdFromEpochAndXid
      Src: /src/postgres/src/backend/access/transam/xlog.c:5268,1
    - Dst: time
      Src: /src/postgres/src/backend/access/transam/xlog.c:5278,1
    - Dst: MultiXactSetNextMXact
      Src: /src/postgres/src/backend/access/transam/xlog.c:5284,1
    - Dst: AdvanceOldestClogXid
      Src: /src/postgres/src/backend/access/transam/xlog.c:5285,1
    - Dst: SetTransactionIdLimit
      Src: /src/postgres/src/backend/access/transam/xlog.c:5286,1
    - Dst: SetMultiXactIdLimit
      Src: /src/postgres/src/backend/access/transam/xlog.c:5287,1
    - Dst: SetCommitTsLimit
      Src: /src/postgres/src/backend/access/transam/xlog.c:5288,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:5312,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:5314,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlog.c:5316,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlog.c:5317,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlog.c:5318,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlog.c:5319,1
    - Dst: XLogFileInit
      Src: /src/postgres/src/backend/access/transam/xlog.c:5324,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:5333,1
    - Dst: write
      Src: /src/postgres/src/backend/access/transam/xlog.c:5334,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:5339,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:5340,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5341,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:5343,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:5345,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/transam/xlog.c:5346,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:5347,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:5348,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5349,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:5350,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlog.c:5352,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:5353,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:5354,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5355,1
    - Dst: InitControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:5360,1
    - Dst: WriteControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:5366,1
    - Dst: BootStrapCLOG
      Src: /src/postgres/src/backend/access/transam/xlog.c:5369,1
    - Dst: BootStrapCommitTs
      Src: /src/postgres/src/backend/access/transam/xlog.c:5370,1
    - Dst: BootStrapSUBTRANS
      Src: /src/postgres/src/backend/access/transam/xlog.c:5371,1
    - Dst: BootStrapMultiXact
      Src: /src/postgres/src/backend/access/transam/xlog.c:5372,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlog.c:5374,1
    - Dst: ReadControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:5380,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 88
    argCount: 1
    argNames:
    - data_checksum_version
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5381
      start: 5217
    functionDepth: 8
    functionLinenumber: 5217
    functionLinenumberEnd: 5381
    functionName: BootStrapXLOG
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - XLogFileInit
    - time
    - pgstat_report_wait_end
    - pgstat_report_wait_start
    - InitControlFile
    - MultiXactSetNextMXact
    - errcode_for_file_access
    - COMP_CRC32C
    - pfree
    - SetInstallXLogFileSegmentActive
    - FIN_CRC32C
    - BootStrapCLOG
    - memcpy
    - SetCommitTsLimit
    - pg_fsync
    - write
    - errmsg
    - BootStrapSUBTRANS
    - BootStrapMultiXact
    - FullTransactionIdFromEpochAndXid
    - WriteControlFile
    - AdvanceOldestClogXid
    - close
    - SetTransactionIdLimit
    - BootStrapCommitTs
    - ReadControlFile
    - getpid
    - gettimeofday
    - palloc
    - TYPEALIGN
    - Assert
    - memset
    - SetMultiXactIdLimit
    - INIT_CRC32C
    - ereport
    linkageType: ''
    returnType: void
    signature: void BootStrapXLOG(uint32 data_checksum_version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/xlog.c:5386,1
    - Dst: pg_strftime
      Src: /src/postgres/src/backend/access/transam/xlog.c:5388,1
    - Dst: pg_localtime
      Src: /src/postgres/src/backend/access/transam/xlog.c:5390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tnow
    argTypes:
    - pg_time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5393
      start: 5383
    functionDepth: 3
    functionLinenumber: 5383
    functionLinenumberEnd: 5393
    functionName: str_time
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - pg_strftime
    - palloc
    - pg_localtime
    linkageType: ''
    returnType: char
    signature: 'char *

      str_time(pg_time_t tnow)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:5406,1
    - Dst: UpdateMinRecoveryPoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:5411,1
    - Dst: XLByteToPrevSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5419,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5420,1
    - Dst: XLogFileCopy
      Src: /src/postgres/src/backend/access/transam/xlog.c:5437,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:5438,1
    - Dst: XLogFileInit
      Src: /src/postgres/src/backend/access/transam/xlog.c:5448,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlog.c:5450,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:5454,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:5456,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:5457,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5458,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:5466,1
    - Dst: XLogArchiveCleanup
      Src: /src/postgres/src/backend/access/transam/xlog.c:5467,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - endTLI
    - endOfLog
    - newTLI
    argTypes:
    - TimeLineID
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5468
      start: 5398
    functionDepth: 8
    functionLinenumber: 5398
    functionLinenumberEnd: 5468
    functionName: XLogInitNewTimeline
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - XLogSegmentOffset
    - errmsg
    - Assert
    - XLByteToSeg
    - XLogArchiveCleanup
    - XLogFileInit
    - close
    - ereport
    - XLogFileName
    - XLogFileCopy
    - UpdateMinRecoveryPoint
    - XLByteToPrevSeg
    - errcode_for_file_access
    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:5480,1
    - Dst: ExecuteRecoveryCommand
      Src: /src/postgres/src/backend/access/transam/xlog.c:5481,1
    - Dst: RemoveNonParentXlogFiles
      Src: /src/postgres/src/backend/access/transam/xlog.c:5494,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:5523,1
    - Dst: XLogArchivingActive
      Src: /src/postgres/src/backend/access/transam/xlog.c:5524,1
    - Dst: XLByteToPrevSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5529,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:5530,1
    - Dst: XLogArchiveIsReadyOrDone
      Src: /src/postgres/src/backend/access/transam/xlog.c:5532,1
    - Dst: WaitForWalSummarization
      Src: /src/postgres/src/backend/access/transam/xlog.c:5543,1
    - Dst: XLogFilePath
      Src: /src/postgres/src/backend/access/transam/xlog.c:5545,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:5546,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:5547,1
    - Dst: XLogArchiveCleanup
      Src: /src/postgres/src/backend/access/transam/xlog.c:5553,1
    - Dst: durable_rename
      Src: /src/postgres/src/backend/access/transam/xlog.c:5555,1
    - Dst: XLogArchiveNotify
      Src: /src/postgres/src/backend/access/transam/xlog.c:5556,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - EndOfLogTLI
    - EndOfLog
    - newTLI
    argTypes:
    - TimeLineID
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5559
      start: 5473
    functionDepth: 3
    functionLinenumber: 5473
    functionLinenumberEnd: 5559
    functionName: CleanupAfterArchiveRecovery
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - XLogSegmentOffset
    - XLogArchivingActive
    - XLogFilePath
    - WaitForWalSummarization
    - XLogArchiveCleanup
    - XLogArchiveNotify
    - RemoveNonParentXlogFiles
    - snprintf
    - XLogFileName
    - XLogArchiveIsReadyOrDone
    - XLByteToPrevSeg
    - strcmp
    - durable_rename
    - ExecuteRecoveryCommand
    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:5578,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:5579,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5580,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:5581,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:5582,1
    - Dst: RecoveryRequiresIntParameter
      Src: /src/postgres/src/backend/access/transam/xlog.c:5592,1
    - Dst: RecoveryRequiresIntParameter
      Src: /src/postgres/src/backend/access/transam/xlog.c:5595,1
    - Dst: RecoveryRequiresIntParameter
      Src: /src/postgres/src/backend/access/transam/xlog.c:5598,1
    - Dst: RecoveryRequiresIntParameter
      Src: /src/postgres/src/backend/access/transam/xlog.c:5601,1
    - Dst: RecoveryRequiresIntParameter
      Src: /src/postgres/src/backend/access/transam/xlog.c:5604,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5608
      start: 5569
    functionDepth: 1
    functionLinenumber: 5569
    functionLinenumberEnd: 5608
    functionName: CheckRequiredParameterValues
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - errmsg
    - RecoveryRequiresIntParameter
    - ereport
    - errhint
    - errdetail
    - errcode
    linkageType: ''
    returnType: void
    signature: void CheckRequiredParameterValues(void)
  - BBCount: 38
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:5636,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:5637,1
    - Dst: XRecOffIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:5644,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:5645,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:5646,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5647,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:5657,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5658,1
    - Dst: str_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:5659,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:5663,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5664,1
    - Dst: str_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:5665,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:5669,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5670,1
    - Dst: str_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:5671,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:5675,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5676,1
    - Dst: str_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:5677,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:5678,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:5683,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5684,1
    - Dst: str_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:5685,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:5686,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:5691,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5692,1
    - Dst: str_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:5693,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:5697,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:5698,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:5699,1
    - Dst: pg_usleep
      Src: /src/postgres/src/backend/access/transam/xlog.c:5705,1
    - Dst: ValidateXLOGDirectoryStructure
      Src: /src/postgres/src/backend/access/transam/xlog.c:5713,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/access/transam/xlog.c:5716,1
    - Dst: RegisterTimeout
      Src: /src/postgres/src/backend/access/transam/xlog.c:5717,1
    - Dst: RemoveTempXlogFiles
      Src: /src/postgres/src/backend/access/transam/xlog.c:5737,1
    - Dst: SyncDataDirectory
      Src: /src/postgres/src/backend/access/transam/xlog.c:5738,1
    - Dst: InitWalRecovery
      Src: /src/postgres/src/backend/access/transam/xlog.c:5752,1
    - Dst: MultiXactSetNextMXact
      Src: /src/postgres/src/backend/access/transam/xlog.c:5760,1
    - Dst: AdvanceOldestClogXid
      Src: /src/postgres/src/backend/access/transam/xlog.c:5761,1
    - Dst: SetTransactionIdLimit
      Src: /src/postgres/src/backend/access/transam/xlog.c:5762,1
    - Dst: SetMultiXactIdLimit
      Src: /src/postgres/src/backend/access/transam/xlog.c:5763,1
    - Dst: SetCommitTsLimit
      Src: /src/postgres/src/backend/access/transam/xlog.c:5764,1
    - Dst: RelationCacheInitFileRemove
      Src: /src/postgres/src/backend/access/transam/xlog.c:5780,1
    - Dst: StartupReplicationSlots
      Src: /src/postgres/src/backend/access/transam/xlog.c:5786,1
    - Dst: StartupReorderBuffer
      Src: /src/postgres/src/backend/access/transam/xlog.c:5792,1
    - Dst: StartupCLOG
      Src: /src/postgres/src/backend/access/transam/xlog.c:5798,1
    - Dst: StartupMultiXact
      Src: /src/postgres/src/backend/access/transam/xlog.c:5804,1
    - Dst: StartupCommitTs
      Src: /src/postgres/src/backend/access/transam/xlog.c:5813,1
    - Dst: StartupReplicationOrigin
      Src: /src/postgres/src/backend/access/transam/xlog.c:5818,1
    - Dst: pg_atomic_write_membarrier_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:5826,1
    - Dst: pg_atomic_write_membarrier_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:5829,1
    - Dst: restoreTimeLineHistoryFiles
      Src: /src/postgres/src/backend/access/transam/xlog.c:5844,1
    - Dst: restoreTwoPhaseData
      Src: /src/postgres/src/backend/access/transam/xlog.c:5854,1
    - Dst: pgstat_discard_stats
      Src: /src/postgres/src/backend/access/transam/xlog.c:5868,1
    - Dst: pgstat_restore_stats
      Src: /src/postgres/src/backend/access/transam/xlog.c:5870,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:5881,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:5886,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:5896,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:5908,1
    - Dst: durable_rename
      Src: /src/postgres/src/backend/access/transam/xlog.c:5909,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:5921,1
    - Dst: durable_rename
      Src: /src/postgres/src/backend/access/transam/xlog.c:5922,1
    - Dst: CheckRequiredParameterValues
      Src: /src/postgres/src/backend/access/transam/xlog.c:5947,1
    - Dst: ResetUnloggedRelations
      Src: /src/postgres/src/backend/access/transam/xlog.c:5955,1
    - Dst: DeleteAllExportedSnapshotFiles
      Src: /src/postgres/src/backend/access/transam/xlog.c:5961,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:5974,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlog.c:5975,1
    - Dst: InitRecoveryTransactionEnvironment
      Src: /src/postgres/src/backend/access/transam/xlog.c:5977,1
    - Dst: PrescanPreparedTransactions
      Src: /src/postgres/src/backend/access/transam/xlog.c:5980,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:5983,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xlog.c:5983,1
    - Dst: ProcArrayInitRecovery
      Src: /src/postgres/src/backend/access/transam/xlog.c:5986,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xlog.c:5986,1
    - Dst: StartupSUBTRANS
      Src: /src/postgres/src/backend/access/transam/xlog.c:5993,1
    - Dst: StandbyRecoverPreparedTransactions
      Src: /src/postgres/src/backend/access/transam/xlog.c:6007,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xlog.c:6018,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xlog.c:6020,1
    - Dst: TransactionIdRetreat
      Src: /src/postgres/src/backend/access/transam/xlog.c:6021,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:6022,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/xlog.c:6022,1
    - Dst: ProcArrayApplyRecoveryInfo
      Src: /src/postgres/src/backend/access/transam/xlog.c:6026,1
    - Dst: PerformWalRecovery
      Src: /src/postgres/src/backend/access/transam/xlog.c:6033,1
    - Dst: FinishWalRecovery
      Src: /src/postgres/src/backend/access/transam/xlog.c:6042,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/access/transam/xlog.c:6052,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/xlog.c:6074,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/xlog.c:6084,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:6085,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:6086,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:6087,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:6088,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:6090,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:6091,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:6092,1
    - Dst: ResetUnloggedRelations
      Src: /src/postgres/src/backend/access/transam/xlog.c:6104,1
    - Dst: PrescanPreparedTransactions
      Src: /src/postgres/src/backend/access/transam/xlog.c:6111,1
    - Dst: SetInstallXLogFileSegmentActive
      Src: /src/postgres/src/backend/access/transam/xlog.c:6117,1
    - Dst: findNewestTimeLine
      Src: /src/postgres/src/backend/access/transam/xlog.c:6136,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:6137,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:6138,1
    - Dst: XLogInitNewTimeline
      Src: /src/postgres/src/backend/access/transam/xlog.c:6145,1
    - Dst: durable_unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:6152,1
    - Dst: durable_unlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:6155,1
    - Dst: writeTimeLineHistory
      Src: /src/postgres/src/backend/access/transam/xlog.c:6167,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:6170,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:6171,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:6175,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:6178,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/xlog.c:6186,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:6195,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:6196,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/xlog.c:6196,1
    - Dst: XLogRecPtrToBytePos
      Src: /src/postgres/src/backend/access/transam/xlog.c:6206,1
    - Dst: XLogRecPtrToBytePos
      Src: /src/postgres/src/backend/access/transam/xlog.c:6207,1
    - Dst: XLogRecPtrToBufIdx
      Src: /src/postgres/src/backend/access/transam/xlog.c:6220,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:6222,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:6226,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/xlog.c:6227,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:6229,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:6230,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:6240,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:6243,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:6243,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:6250,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:6251,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:6252,1
    - Dst: PreallocXlogFiles
      Src: /src/postgres/src/backend/access/transam/xlog.c:6259,1
    - Dst: time
      Src: /src/postgres/src/backend/access/transam/xlog.c:6267,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:6271,1
    - Dst: FullTransactionIdRetreat
      Src: /src/postgres/src/backend/access/transam/xlog.c:6273,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:6274,1
    - Dst: StartupSUBTRANS
      Src: /src/postgres/src/backend/access/transam/xlog.c:6281,1
    - Dst: TrimCLOG
      Src: /src/postgres/src/backend/access/transam/xlog.c:6286,1
    - Dst: TrimMultiXact
      Src: /src/postgres/src/backend/access/transam/xlog.c:6287,1
    - Dst: RecoverPreparedTransactions
      Src: /src/postgres/src/backend/access/transam/xlog.c:6294,1
    - Dst: ShutdownWalRecovery
      Src: /src/postgres/src/backend/access/transam/xlog.c:6297,1
    - Dst: LocalSetXLogInsertAllowed
      Src: /src/postgres/src/backend/access/transam/xlog.c:6300,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/xlog.c:6303,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:6305,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/xlog.c:6305,1
    - Dst: CreateOverwriteContrecordRecord
      Src: /src/postgres/src/backend/access/transam/xlog.c:6306,1
    - Dst: UpdateFullPageWrites
      Src: /src/postgres/src/backend/access/transam/xlog.c:6315,1
    - Dst: PerformRecoveryXLogAction
      Src: /src/postgres/src/backend/access/transam/xlog.c:6321,1
    - Dst: XLogReportParameters
      Src: /src/postgres/src/backend/access/transam/xlog.c:6327,1
    - Dst: CleanupAfterArchiveRecovery
      Src: /src/postgres/src/backend/access/transam/xlog.c:6331,1
    - Dst: CompleteCommitTsInitialization
      Src: /src/postgres/src/backend/access/transam/xlog.c:6337,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:6354,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:6357,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:6359,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:6361,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:6362,1
    - Dst: ShutdownRecoveryTransactionEnvironment
      Src: /src/postgres/src/backend/access/transam/xlog.c:6374,1
    - Dst: WalSndWakeup
      Src: /src/postgres/src/backend/access/transam/xlog.c:6380,1
    - Dst: RequestCheckpoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:6389,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 223
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6390
      start: 5613
    functionDepth: 9
    functionLinenumber: 5613
    functionLinenumberEnd: 6390
    functionName: StartupXLOG
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - ResetUnloggedRelations
    - PreallocXlogFiles
    - LWLockRelease
    - MultiXactSetNextMXact
    - SyncDataDirectory
    - pg_atomic_write_membarrier_u64
    - findNewestTimeLine
    - LocalSetXLogInsertAllowed
    - ProcArrayApplyRecoveryInfo
    - StartupMultiXact
    - StartupReorderBuffer
    - XLogReportParameters
    - SetMultiXactIdLimit
    - XLogRecPtrToBytePos
    - PerformRecoveryXLogAction
    - LWLockAcquire
    - DeleteAllExportedSnapshotFiles
    - XidFromFullTransactionId
    - time
    - errhint
    - XRecOffIsValid
    - RemoveTempXlogFiles
    - SetInstallXLogFileSegmentActive
    - InitRecoveryTransactionEnvironment
    - RecoverPreparedTransactions
    - errmsg
    - CreateOverwriteContrecordRecord
    - AdvanceOldestClogXid
    - TransactionIdRetreat
    - SetTransactionIdLimit
    - TransactionIdIsNormal
    - durable_unlink
    - str_time
    - XLogRecPtrIsInvalid
    - WalSndWakeup
    - StartupReplicationSlots
    - TrimMultiXact
    - ValidateXLOGDirectoryStructure
    - RegisterTimeout
    - ShutdownRecoveryTransactionEnvironment
    - InitWalRecovery
    - pg_atomic_write_u64
    - FullTransactionIdRetreat
    - pg_usleep
    - SpinLockRelease
    - CleanupAfterArchiveRecovery
    - restoreTimeLineHistoryFiles
    - ShutdownWalRecovery
    - memcpy
    - SetCommitTsLimit
    - TrimCLOG
    - StandbyRecoverPreparedTransactions
    - TransactionIdIsValid
    - StartupCLOG
    - ProcArrayInitRecovery
    - Assert
    - ereport
    - pg_atomic_read_u64
    - FinishWalRecovery
    - XLogInitNewTimeline
    - set_ps_display
    - pgstat_restore_stats
    - XLogRecPtrToBufIdx
    - RequestCheckpoint
    - durable_rename
    - UpdateControlFile
    - StartupCommitTs
    - PerformWalRecovery
    - writeTimeLineHistory
    - StartupReplicationOrigin
    - pgstat_discard_stats
    - CompleteCommitTsInitialization
    - SpinLockAcquire
    - RelationCacheInitFileRemove
    - CheckRequiredParameterValues
    - memset
    - PrescanPreparedTransactions
    - StartupSUBTRANS
    - IsBootstrapProcessingMode
    - errmsg_internal
    - restoreTwoPhaseData
    - unlink
    - errcode
    - UpdateFullPageWrites
    linkageType: ''
    returnType: void
    signature: void StartupXLOG(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:6400,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:6417,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:6423,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:6425,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:6427,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - EndRecPtr
    - replayTLI
    argTypes:
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6428
      start: 6396
    functionDepth: 3
    functionLinenumber: 6396
    functionLinenumberEnd: 6428
    functionName: SwitchIntoArchiveRecovery
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - SpinLockRelease
    - LWLockRelease
    - LWLockAcquire
    - UpdateControlFile
    - 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:6445,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:6456,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:6458,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - EndRecPtr
    - tli
    argTypes:
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6459
      start: 6434
    functionDepth: 3
    functionLinenumber: 6434
    functionLinenumberEnd: 6459
    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:6490,1
    - Dst: CreateEndOfRecoveryRecord
      Src: /src/postgres/src/backend/access/transam/xlog.c:6503,1
    - Dst: RequestCheckpoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:6507,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6513
      start: 6471
    functionDepth: 1
    functionLinenumber: 6471
    functionLinenumberEnd: 6513
    functionName: PerformRecoveryXLogAction
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - CreateEndOfRecoveryRecord
    - PromoteIsTriggered
    - RequestCheckpoint
    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: 6549
      start: 6521
    functionDepth: 0
    functionLinenumber: 6521
    functionLinenumberEnd: 6549
    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:6562,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:6564,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6567
      start: 6557
    functionDepth: 1
    functionLinenumber: 6557
    functionLinenumberEnd: 6567
    functionName: GetRecoveryState
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: RecoveryState
    signature: RecoveryState GetRecoveryState(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:6590,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6599
      start: 6576
    functionDepth: 1
    functionLinenumber: 6576
    functionLinenumberEnd: 6599
    functionName: XLogInsertAllowed
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 3
    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: 6617
      start: 6609
    functionDepth: 0
    functionLinenumber: 6609
    functionLinenumberEnd: 6617
    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:6635,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:6637,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6643
      start: 6624
    functionDepth: 1
    functionLinenumber: 6624
    functionLinenumberEnd: 6643
    functionName: GetRedoRecPtr
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 2
    functionsReached:
    - SpinLockRelease
    - SpinLockAcquire
    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: 6659
      start: 6654
    functionDepth: 0
    functionLinenumber: 6654
    functionLinenumberEnd: 6659
    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:6674,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:6676,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6679
      start: 6669
    functionDepth: 1
    functionLinenumber: 6669
    functionLinenumberEnd: 6679
    functionName: GetInsertRecPtr
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr GetInsertRecPtr(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:6689,1
    - Dst: RefreshXLogWriteResult
      Src: /src/postgres/src/backend/access/transam/xlog.c:6691,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - insertTLI
    argTypes:
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6701
      start: 6686
    functionDepth: 1
    functionLinenumber: 6686
    functionLinenumberEnd: 6701
    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:6710,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6714
      start: 6707
    functionDepth: 1
    functionLinenumber: 6707
    functionLinenumberEnd: 6714
    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:6728,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:6730,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6733
      start: 6723
    functionDepth: 1
    functionLinenumber: 6723
    functionLinenumberEnd: 6733
    functionName: GetWALInsertionTimeLineIfSet
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: TimeLineID
    signature: TimeLineID GetWALInsertionTimeLineIfSet(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:6758,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:6760,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6767
      start: 6743
    functionDepth: 1
    functionLinenumber: 6743
    functionLinenumberEnd: 6767
    functionName: GetLastImportantRecPtr
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr GetLastImportantRecPtr(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:6778,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:6781,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - lastSwitchLSN
    argTypes:
    - XLogRecPtr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6784
      start: 6772
    functionDepth: 1
    functionLinenumber: 6772
    functionLinenumberEnd: 6784
    functionName: GetLastSegSwitchData
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - LWLockRelease
    - LWLockAcquire
    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:6796,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:6797,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:6802,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:6803,1
    - Dst: WalSndInitStopping
      Src: /src/postgres/src/backend/access/transam/xlog.c:6808,1
    - Dst: WalSndWaitStopping
      Src: /src/postgres/src/backend/access/transam/xlog.c:6814,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:6816,1
    - Dst: CreateRestartPoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:6817,1
    - Dst: XLogArchivingActive
      Src: /src/postgres/src/backend/access/transam/xlog.c:6826,1
    - Dst: RequestXLogSwitch
      Src: /src/postgres/src/backend/access/transam/xlog.c:6827,1
    - Dst: CreateCheckPoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:6829,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6831
      start: 6789
    functionDepth: 1
    functionLinenumber: 6789
    functionLinenumberEnd: 6831
    functionName: ShutdownXLOG
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - errmsg
    - XLogArchivingActive
    - Assert
    - RequestXLogSwitch
    - CreateCheckPoint
    - ereport
    - WalSndWaitStopping
    - CreateRestartPoint
    - WalSndInitStopping
    - RecoveryInProgress
    linkageType: ''
    returnType: void
    signature: void ShutdownXLOG(int code, Datum arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:6840,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:6842,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:6852,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:6854,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - flags
    - restartpoint
    argTypes:
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6863
      start: 6836
    functionDepth: 1
    functionLinenumber: 6836
    functionLinenumberEnd: 6863
    functionName: LogCheckpointStart
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    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:6878,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/access/transam/xlog.c:6880,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/access/transam/xlog.c:6883,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/access/transam/xlog.c:6897,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:6918,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:6919,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:6939,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:6940,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:6942,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:6943,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:6963,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:6964,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - restartpoint
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6965
      start: 6868
    functionDepth: 1
    functionLinenumber: 6868
    functionLinenumberEnd: 6965
    functionName: LogCheckpointEnd
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - errmsg
    - LSN_FORMAT_ARGS
    - ereport
    - TimestampDifferenceMilliseconds
    - GetCurrentTimestamp
    linkageType: ''
    returnType: void
    signature: void LogCheckpointEnd(bool restartpoint)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - nbytes
    argTypes:
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7004
      start: 6973
    functionDepth: 0
    functionLinenumber: 6973
    functionLinenumberEnd: 7004
    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:7025,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:7030,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/access/transam/xlog.c:7034,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - flags
    - restartpoint
    - reset
    argTypes:
    - int
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7036
      start: 7011
    functionDepth: 2
    functionLinenumber: 7011
    functionLinenumberEnd: 7036
    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:7101,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:7102,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/xlog.c:7111,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlog.c:7112,1
    - Dst: SyncPreCheckpoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:7120,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:7125,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7129,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:7131,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7132,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/xlog.c:7136,1
    - Dst: time
      Src: /src/postgres/src/backend/access/transam/xlog.c:7137,1
    - Dst: XLogStandbyInfoActive
      Src: /src/postgres/src/backend/access/transam/xlog.c:7144,1
    - Dst: GetOldestActiveTransactionId
      Src: /src/postgres/src/backend/access/transam/xlog.c:7145,1
    - Dst: GetLastImportantRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:7153,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:7165,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:7166,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlog.c:7167,1
    - Dst: LocalSetXLogInsertAllowed
      Src: /src/postgres/src/backend/access/transam/xlog.c:7178,1
    - Dst: WALInsertLockAcquireExclusive
      Src: /src/postgres/src/backend/access/transam/xlog.c:7189,1
    - Dst: XLogBytePosToRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:7196,1
    - Dst: INSERT_FREESPACE
      Src: /src/postgres/src/backend/access/transam/xlog.c:7204,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:7207,1
    - Dst: WALInsertLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7233,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:7247,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xlog.c:7248,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:7249,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7261,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7263,1
    - Dst: LogCheckpointStart
      Src: /src/postgres/src/backend/access/transam/xlog.c:7270,1
    - Dst: update_checkpoint_display
      Src: /src/postgres/src/backend/access/transam/xlog.c:7273,1
    - Dst: TRACE_POSTGRESQL_CHECKPOINT_START
      Src: /src/postgres/src/backend/access/transam/xlog.c:7275,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7285,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7289,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7291,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7294,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7296,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7300,1
    - Dst: MultiXactGetCheckptMulti
      Src: /src/postgres/src/backend/access/transam/xlog.c:7302,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:7316,1
    - Dst: GetVirtualXIDsDelayingChkpt
      Src: /src/postgres/src/backend/access/transam/xlog.c:7347,1
    - Dst: AbsorbSyncRequests
      Src: /src/postgres/src/backend/access/transam/xlog.c:7357,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:7359,1
    - Dst: pg_usleep
      Src: /src/postgres/src/backend/access/transam/xlog.c:7360,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:7361,1
    - Dst: HaveVirtualXIDsDelayingChkpt
      Src: /src/postgres/src/backend/access/transam/xlog.c:7362,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlog.c:7365,1
    - Dst: CheckPointGuts
      Src: /src/postgres/src/backend/access/transam/xlog.c:7367,1
    - Dst: GetVirtualXIDsDelayingChkpt
      Src: /src/postgres/src/backend/access/transam/xlog.c:7369,1
    - Dst: AbsorbSyncRequests
      Src: /src/postgres/src/backend/access/transam/xlog.c:7374,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:7376,1
    - Dst: pg_usleep
      Src: /src/postgres/src/backend/access/transam/xlog.c:7377,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:7378,1
    - Dst: HaveVirtualXIDsDelayingChkpt
      Src: /src/postgres/src/backend/access/transam/xlog.c:7379,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlog.c:7382,1
    - Dst: XLogStandbyInfoActive
      Src: /src/postgres/src/backend/access/transam/xlog.c:7392,1
    - Dst: LogStandbySnapshot
      Src: /src/postgres/src/backend/access/transam/xlog.c:7393,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:7395,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:7400,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xlog.c:7401,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:7402,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/xlog.c:7406,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:7428,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:7429,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7440,1
    - Dst: pg_atomic_read_membarrier_u64
      Src: /src/postgres/src/backend/access/transam/xlog.c:7454,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:7456,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7457,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7460,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7462,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:7468,1
    - Dst: WakeupWalSummarizer
      Src: /src/postgres/src/backend/access/transam/xlog.c:7487,1
    - Dst: SyncPostCheckpoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:7492,1
    - Dst: UpdateCheckPointDistanceEstimate
      Src: /src/postgres/src/backend/access/transam/xlog.c:7499,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/access/transam/xlog.c:7502,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:7509,1
    - Dst: KeepLogSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:7510,1
    - Dst: InvalidateObsoleteReplicationSlots
      Src: /src/postgres/src/backend/access/transam/xlog.c:7511,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:7519,1
    - Dst: KeepLogSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:7520,1
    - Dst: RemoveOldXlogFiles
      Src: /src/postgres/src/backend/access/transam/xlog.c:7523,1
    - Dst: PreallocXlogFiles
      Src: /src/postgres/src/backend/access/transam/xlog.c:7531,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:7540,1
    - Dst: TruncateSUBTRANS
      Src: /src/postgres/src/backend/access/transam/xlog.c:7541,1
    - Dst: GetOldestTransactionIdConsideredRunning
      Src: /src/postgres/src/backend/access/transam/xlog.c:7541,1
    - Dst: LogCheckpointEnd
      Src: /src/postgres/src/backend/access/transam/xlog.c:7544,1
    - Dst: update_checkpoint_display
      Src: /src/postgres/src/backend/access/transam/xlog.c:7547,1
    - Dst: TRACE_POSTGRESQL_CHECKPOINT_DONE
      Src: /src/postgres/src/backend/access/transam/xlog.c:7549,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 149
    argCount: 1
    argNames:
    - flags
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7556
      start: 7076
    functionDepth: 8
    functionLinenumber: 7076
    functionLinenumberEnd: 7556
    functionName: CreateCheckPoint
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - TruncateSUBTRANS
    - WALInsertLockAcquireExclusive
    - UpdateCheckPointDistanceEstimate
    - pg_usleep
    - time
    - InvalidateObsoleteReplicationSlots
    - SpinLockRelease
    - pgstat_report_wait_end
    - XLogRegisterData
    - LogStandbySnapshot
    - HaveVirtualXIDsDelayingChkpt
    - RemoveOldXlogFiles
    - PreallocXlogFiles
    - LWLockRelease
    - pgstat_report_wait_start
    - RecoveryInProgress
    - UpdateControlFile
    - INSERT_FREESPACE
    - pfree
    - XLByteToSeg
    - START_CRIT_SECTION
    - SyncPostCheckpoint
    - GetOldestTransactionIdConsideredRunning
    - WALInsertLockRelease
    - GetOldestActiveTransactionId
    - LocalSetXLogInsertAllowed
    - END_CRIT_SECTION
    - CheckPointGuts
    - KeepLogSeg
    - SyncPreCheckpoint
    - GetLastImportantRecPtr
    - LogCheckpointStart
    - XLogSegmentOffset
    - errmsg
    - AbsorbSyncRequests
    - TRACE_POSTGRESQL_CHECKPOINT_START
    - GetVirtualXIDsDelayingChkpt
    - WakeupWalSummarizer
    - XLogFlush
    - elog
    - MemSet
    - update_checkpoint_display
    - GetCurrentTimestamp
    - MultiXactGetCheckptMulti
    - XLogStandbyInfoActive
    - LogCheckpointEnd
    - TRACE_POSTGRESQL_CHECKPOINT_DONE
    - SpinLockAcquire
    - pg_atomic_read_membarrier_u64
    - XLogBeginInsert
    - XLogInsert
    - errmsg_internal
    - ereport
    - INJECTION_POINT
    - XLogBytePosToRecPtr
    - LWLockAcquire
    linkageType: ''
    returnType: bool
    signature: bool CreateCheckPoint(int flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:7573,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:7574,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlog.c:7576,1
    - Dst: WALInsertLockAcquireExclusive
      Src: /src/postgres/src/backend/access/transam/xlog.c:7579,1
    - Dst: WALInsertLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7582,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:7584,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:7586,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xlog.c:7587,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:7588,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/xlog.c:7590,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7596,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:7599,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7600,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:7602,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7603
      start: 7566
    functionDepth: 5
    functionLinenumber: 7566
    functionLinenumberEnd: 7603
    functionName: CreateEndOfRecoveryRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - WALInsertLockAcquireExclusive
    - START_CRIT_SECTION
    - XLogBeginInsert
    - XLogInsert
    - XLogFlush
    - WALInsertLockRelease
    - elog
    - GetCurrentTimestamp
    - XLogRegisterData
    - END_CRIT_SECTION
    - LWLockRelease
    - LWLockAcquire
    - RecoveryInProgress
    - UpdateControlFile
    linkageType: ''
    returnType: void
    signature: void CreateEndOfRecoveryRecord(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:7641,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:7642,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:7644,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:7645,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlog.c:7649,1
    - Dst: GetXLogInsertRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:7653,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:7655,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:7656,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:7658,1
    - Dst: WALInsertLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7667,1
    - Dst: GetXLogBuffer
      Src: /src/postgres/src/backend/access/transam/xlog.c:7668,1
    - Dst: WALInsertLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7670,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:7677,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlog.c:7679,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xlog.c:7680,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:7681,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:7685,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:7686,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/xlog.c:7688,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:7690,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 3
    argNames:
    - aborted_lsn
    - pagePtr
    - newTLI
    argTypes:
    - XLogRecPtr
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7693
      start: 7631
    functionDepth: 5
    functionLinenumber: 7631
    functionLinenumberEnd: 7693
    functionName: CreateOverwriteContrecordRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - LSN_FORMAT_ARGS
    - XLogSegmentOffset
    - START_CRIT_SECTION
    - XLogBeginInsert
    - XLogInsert
    - XLogFlush
    - WALInsertLockRelease
    - elog
    - GetXLogInsertRecPtr
    - GetCurrentTimestamp
    - XLogRegisterData
    - END_CRIT_SECTION
    - GetXLogBuffer
    - RecoveryInProgress
    - WALInsertLockAcquire
    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:7704,1
    - Dst: CheckPointReplicationSlots
      Src: /src/postgres/src/backend/access/transam/xlog.c:7705,1
    - Dst: CheckPointSnapBuild
      Src: /src/postgres/src/backend/access/transam/xlog.c:7706,1
    - Dst: CheckPointLogicalRewriteHeap
      Src: /src/postgres/src/backend/access/transam/xlog.c:7707,1
    - Dst: CheckPointReplicationOrigin
      Src: /src/postgres/src/backend/access/transam/xlog.c:7708,1
    - Dst: TRACE_POSTGRESQL_BUFFER_CHECKPOINT_START
      Src: /src/postgres/src/backend/access/transam/xlog.c:7711,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlog.c:7712,1
    - Dst: CheckPointCLOG
      Src: /src/postgres/src/backend/access/transam/xlog.c:7713,1
    - Dst: CheckPointCommitTs
      Src: /src/postgres/src/backend/access/transam/xlog.c:7714,1
    - Dst: CheckPointSUBTRANS
      Src: /src/postgres/src/backend/access/transam/xlog.c:7715,1
    - Dst: CheckPointMultiXact
      Src: /src/postgres/src/backend/access/transam/xlog.c:7716,1
    - Dst: CheckPointPredicate
      Src: /src/postgres/src/backend/access/transam/xlog.c:7717,1
    - Dst: CheckPointBuffers
      Src: /src/postgres/src/backend/access/transam/xlog.c:7718,1
    - Dst: TRACE_POSTGRESQL_BUFFER_CHECKPOINT_SYNC_START
      Src: /src/postgres/src/backend/access/transam/xlog.c:7721,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlog.c:7722,1
    - Dst: ProcessSyncRequests
      Src: /src/postgres/src/backend/access/transam/xlog.c:7723,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlog.c:7724,1
    - Dst: TRACE_POSTGRESQL_BUFFER_CHECKPOINT_DONE
      Src: /src/postgres/src/backend/access/transam/xlog.c:7725,1
    - Dst: CheckPointTwoPhase
      Src: /src/postgres/src/backend/access/transam/xlog.c:7728,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 2
    argNames:
    - checkPointRedo
    - flags
    argTypes:
    - XLogRecPtr
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7729
      start: 7701
    functionDepth: 4
    functionLinenumber: 7701
    functionLinenumberEnd: 7729
    functionName: CheckPointGuts
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - CheckPointSnapBuild
    - CheckPointCLOG
    - CheckPointMultiXact
    - CheckPointReplicationSlots
    - CheckPointRelationMap
    - TRACE_POSTGRESQL_BUFFER_CHECKPOINT_DONE
    - TRACE_POSTGRESQL_BUFFER_CHECKPOINT_SYNC_START
    - ProcessSyncRequests
    - CheckPointCommitTs
    - CheckPointLogicalRewriteHeap
    - CheckPointTwoPhase
    - GetCurrentTimestamp
    - CheckPointReplicationOrigin
    - CheckPointPredicate
    - CheckPointSUBTRANS
    - CheckPointBuffers
    - TRACE_POSTGRESQL_BUFFER_CHECKPOINT_START
    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:7751,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:7753,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:7756,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7764,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7768,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - checkPoint
    - record
    argTypes:
    - CheckPoint*
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7769
      start: 7741
    functionDepth: 1
    functionLinenumber: 7741
    functionLinenumberEnd: 7769
    functionName: RecoveryRestartPoint
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - XLogHaveInvalidPages
    - SpinLockRelease
    - elog
    - SpinLockAcquire
    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:7797,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7800,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7804,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:7810,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:7812,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlog.c:7813,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/xlog.c:7831,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:7834,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlog.c:7835,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:7836,1
    - Dst: UpdateMinRecoveryPoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:7838,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7841,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:7843,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7844,1
    - Dst: WALInsertLockAcquireExclusive
      Src: /src/postgres/src/backend/access/transam/xlog.c:7858,1
    - Dst: WALInsertLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7860,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7863,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7865,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/xlog.c:7874,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlog.c:7875,1
    - Dst: LogCheckpointStart
      Src: /src/postgres/src/backend/access/transam/xlog.c:7878,1
    - Dst: update_checkpoint_display
      Src: /src/postgres/src/backend/access/transam/xlog.c:7881,1
    - Dst: CheckPointGuts
      Src: /src/postgres/src/backend/access/transam/xlog.c:7883,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/access/transam/xlog.c:7889,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:7903,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:7941,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:7943,1
    - Dst: UpdateCheckPointDistanceEstimate
      Src: /src/postgres/src/backend/access/transam/xlog.c:7950,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:7956,1
    - Dst: GetWalRcvFlushRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:7962,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:7963,1
    - Dst: KeepLogSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:7965,1
    - Dst: InvalidateObsoleteReplicationSlots
      Src: /src/postgres/src/backend/access/transam/xlog.c:7966,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:7974,1
    - Dst: KeepLogSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:7975,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:7991,1
    - Dst: RemoveOldXlogFiles
      Src: /src/postgres/src/backend/access/transam/xlog.c:7994,1
    - Dst: PreallocXlogFiles
      Src: /src/postgres/src/backend/access/transam/xlog.c:8000,1
    - Dst: TruncateSUBTRANS
      Src: /src/postgres/src/backend/access/transam/xlog.c:8010,1
    - Dst: GetOldestTransactionIdConsideredRunning
      Src: /src/postgres/src/backend/access/transam/xlog.c:8010,1
    - Dst: LogCheckpointEnd
      Src: /src/postgres/src/backend/access/transam/xlog.c:8013,1
    - Dst: update_checkpoint_display
      Src: /src/postgres/src/backend/access/transam/xlog.c:8016,1
    - Dst: GetLatestXTime
      Src: /src/postgres/src/backend/access/transam/xlog.c:8018,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:8019,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8020,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:8021,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlog.c:8022,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/transam/xlog.c:8023,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlog.c:8028,1
    - Dst: ExecuteRecoveryCommand
      Src: /src/postgres/src/backend/access/transam/xlog.c:8029,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 78
    argCount: 1
    argNames:
    - flags
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8035
      start: 7782
    functionDepth: 8
    functionLinenumber: 7782
    functionLinenumberEnd: 8035
    functionName: CreateRestartPoint
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - LSN_FORMAT_ARGS
    - TruncateSUBTRANS
    - WALInsertLockAcquireExclusive
    - UpdateCheckPointDistanceEstimate
    - InvalidateObsoleteReplicationSlots
    - SpinLockRelease
    - GetXLogReplayRecPtr
    - RemoveOldXlogFiles
    - PreallocXlogFiles
    - LWLockRelease
    - errdetail
    - RecoveryInProgress
    - UpdateControlFile
    - XLByteToSeg
    - GetOldestTransactionIdConsideredRunning
    - WALInsertLockRelease
    - CheckPointGuts
    - KeepLogSeg
    - strcmp
    - LogCheckpointStart
    - errmsg
    - GetLatestXTime
    - MemSet
    - update_checkpoint_display
    - GetCurrentTimestamp
    - XLogRecPtrIsInvalid
    - ExecuteRecoveryCommand
    - LogCheckpointEnd
    - SpinLockAcquire
    - Assert
    - GetWalRcvFlushRecPtr
    - errmsg_internal
    - ereport
    - INJECTION_POINT
    - UpdateMinRecoveryPoint
    - timestamptz_to_str
    - LWLockAcquire
    linkageType: ''
    returnType: bool
    signature: bool CreateRestartPoint(int flags)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/xlog.c:8074,1
    - Dst: GetXLogWriteRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:8082,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8083,1
    - Dst: KeepLogSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8084,1
    - Dst: XLogGetLastRemovedSegno
      Src: /src/postgres/src/backend/access/transam/xlog.c:8091,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8094,1
    - Dst: ConvertToXSegs
      Src: /src/postgres/src/backend/access/transam/xlog.c:8095,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8103,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - targetLSN
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8125
      start: 8060
    functionDepth: 2
    functionLinenumber: 8060
    functionLinenumberEnd: 8125
    functionName: GetWALAvailability
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - XLByteToSeg
    - ConvertToXSegs
    - KeepLogSeg
    - GetXLogWriteRecPtr
    - XLogGetLastRemovedSegno
    - XLogRecPtrIsInvalid
    linkageType: ''
    returnType: WALAvailability
    signature: WALAvailability GetWALAvailability(XLogRecPtr targetLSN)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8151,1
    - Dst: XLogGetReplicationSlotMinimumLSN
      Src: /src/postgres/src/backend/access/transam/xlog.c:8158,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8161,1
    - Dst: ConvertToXSegs
      Src: /src/postgres/src/backend/access/transam/xlog.c:8169,1
    - Dst: GetOldestUnsummarizedLSN
      Src: /src/postgres/src/backend/access/transam/xlog.c:8180,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8185,1
    - Dst: ConvertToXSegs
      Src: /src/postgres/src/backend/access/transam/xlog.c:8195,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 2
    argNames:
    - recptr
    - logSegNo
    argTypes:
    - XLogRecPtr
    - XLogSegNo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8209
      start: 8144
    functionDepth: 2
    functionLinenumber: 8144
    functionLinenumberEnd: 8209
    functionName: KeepLogSeg
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 3
    functionsReached:
    - XLogGetReplicationSlotMinimumLSN
    - GetOldestUnsummarizedLSN
    - XLByteToSeg
    - ConvertToXSegs
    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:8217,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xlog.c:8218,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - nextOid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8239
      start: 8214
    functionDepth: 1
    functionLinenumber: 8214
    functionLinenumberEnd: 8239
    functionName: XLogPutNextOid
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - XLogInsert
    - XLogRegisterData
    - XLogBeginInsert
    linkageType: ''
    returnType: void
    signature: void XLogPutNextOid(Oid nextOid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8257,1
    - Dst: XLogSetRecordFlags
      Src: /src/postgres/src/backend/access/transam/xlog.c:8260,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - mark_unimportant
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8264
      start: 8251
    functionDepth: 1
    functionLinenumber: 8251
    functionLinenumberEnd: 8264
    functionName: RequestXLogSwitch
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - XLogInsert
    - XLogSetRecordFlags
    - 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:8275,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:8276,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8278,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xlog.c:8279,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8281,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:8283,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8284,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlog.c:8285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - rpName
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8288
      start: 8269
    functionDepth: 1
    functionLinenumber: 8269
    functionLinenumberEnd: 8288
    functionName: XLogRestorePoint
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - errmsg
    - LSN_FORMAT_ARGS
    - XLogBeginInsert
    - XLogInsert
    - ereport
    - strlcpy
    - GetCurrentTimestamp
    - XLogRegisterData
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr XLogRestorePoint(const char *rpName)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogIsNeeded
      Src: /src/postgres/src/backend/access/transam/xlog.c:8313,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8327,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xlog.c:8328,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8330,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/xlog.c:8331,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:8334,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:8344,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8346,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8348
      start: 8294
    functionDepth: 5
    functionLinenumber: 8294
    functionLinenumberEnd: 8348
    functionName: XLogReportParameters
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - XLogIsNeeded
    - XLogBeginInsert
    - XLogInsert
    - XLogFlush
    - XLogRegisterData
    - LWLockRelease
    - LWLockAcquire
    - UpdateControlFile
    linkageType: ''
    returnType: void
    signature: void XLogReportParameters(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:8378,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:8380,1
    - Dst: WALInsertLockAcquireExclusive
      Src: /src/postgres/src/backend/access/transam/xlog.c:8391,1
    - Dst: WALInsertLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8393,1
    - Dst: XLogStandbyInfoActive
      Src: /src/postgres/src/backend/access/transam/xlog.c:8400,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8402,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xlog.c:8403,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8405,1
    - Dst: WALInsertLockAcquireExclusive
      Src: /src/postgres/src/backend/access/transam/xlog.c:8410,1
    - Dst: WALInsertLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8412,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xlog.c:8414,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8415
      start: 8357
    functionDepth: 2
    functionLinenumber: 8357
    functionLinenumberEnd: 8415
    functionName: UpdateFullPageWrites
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - WALInsertLockAcquireExclusive
    - START_CRIT_SECTION
    - XLogBeginInsert
    - XLogInsert
    - WALInsertLockRelease
    - XLogRegisterData
    - END_CRIT_SECTION
    - XLogStandbyInfoActive
    - RecoveryInProgress
    linkageType: ''
    returnType: void
    signature: void UpdateFullPageWrites(void)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xlog.c:8429,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8436,1
    - Dst: XLogRecHasAnyBlockRefs
      Src: /src/postgres/src/backend/access/transam/xlog.c:8437,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:8450,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlog.c:8450,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:8451,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8454,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:8461,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlog.c:8461,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:8463,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8465,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:8466,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8469,1
    - Dst: MultiXactSetNextMXact
      Src: /src/postgres/src/backend/access/transam/xlog.c:8470,1
    - Dst: MultiXactAdvanceOldest
      Src: /src/postgres/src/backend/access/transam/xlog.c:8473,1
    - Dst: SetTransactionIdLimit
      Src: /src/postgres/src/backend/access/transam/xlog.c:8480,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/xlog.c:8488,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/xlog.c:8489,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:8490,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8491,1
    - Dst: PrescanPreparedTransactions
      Src: /src/postgres/src/backend/access/transam/xlog.c:8507,1
    - Dst: StandbyRecoverPreparedTransactions
      Src: /src/postgres/src/backend/access/transam/xlog.c:8510,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xlog.c:8521,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xlog.c:8523,1
    - Dst: TransactionIdRetreat
      Src: /src/postgres/src/backend/access/transam/xlog.c:8524,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8525,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/xlog.c:8525,1
    - Dst: ProcArrayApplyRecoveryInfo
      Src: /src/postgres/src/backend/access/transam/xlog.c:8529,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:8533,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8535,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:8538,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8540,1
    - Dst: GetCurrentReplayRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:8546,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:8548,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8549,1
    - Dst: RecoveryRestartPoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:8552,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:8559,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlog.c:8559,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:8561,1
    - Dst: FullTransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/xlog.c:8562,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8565,1
    - Dst: MultiXactAdvanceNextMXact
      Src: /src/postgres/src/backend/access/transam/xlog.c:8580,1
    - Dst: MultiXactAdvanceOldest
      Src: /src/postgres/src/backend/access/transam/xlog.c:8587,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/xlog.c:8589,1
    - Dst: SetTransactionIdLimit
      Src: /src/postgres/src/backend/access/transam/xlog.c:8591,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:8594,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8596,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:8599,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8601,1
    - Dst: GetCurrentReplayRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:8604,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:8606,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8607,1
    - Dst: RecoveryRestartPoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:8610,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:8621,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlog.c:8621,1
    - Dst: GetCurrentReplayRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:8633,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:8635,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8636,1
    - Dst: XLogRecMaxBlockId
      Src: /src/postgres/src/backend/access/transam/xlog.c:8669,1
    - Dst: XLogRecHasBlockImage
      Src: /src/postgres/src/backend/access/transam/xlog.c:8673,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:8676,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/transam/xlog.c:8680,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:8681,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/transam/xlog.c:8682,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:8694,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlog.c:8694,1
    - Dst: InvalidateObsoleteReplicationSlots
      Src: /src/postgres/src/backend/access/transam/xlog.c:8707,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:8711,1
    - Dst: GetCurrentReplayRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:8737,1
    - Dst: CommitTsParameterChange
      Src: /src/postgres/src/backend/access/transam/xlog.c:8742,1
    - Dst: UpdateControlFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:8746,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8747,1
    - Dst: CheckRequiredParameterValues
      Src: /src/postgres/src/backend/access/transam/xlog.c:8750,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:8756,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlog.c:8756,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:8765,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:8768,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 137
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8778
      start: 8426
    functionDepth: 4
    functionLinenumber: 8426
    functionLinenumberEnd: 8778
    functionName: xlog_redo
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - MultiXactAdvanceOldest
    - XidFromFullTransactionId
    - InvalidateObsoleteReplicationSlots
    - SpinLockRelease
    - XLogRecGetData
    - LWLockRelease
    - UpdateControlFile
    - MultiXactSetNextMXact
    - RecoveryRestartPoint
    - MultiXactAdvanceNextMXact
    - XLogRecHasAnyBlockRefs
    - XLogRecGetInfo
    - XLogRecMaxBlockId
    - GetCurrentReplayRecPtr
    - memcpy
    - TransactionIdPrecedes
    - ProcArrayApplyRecoveryInfo
    - errmsg
    - StandbyRecoverPreparedTransactions
    - TransactionIdRetreat
    - SetTransactionIdLimit
    - TransactionIdIsNormal
    - elog
    - XLogRecPtrIsInvalid
    - UnlockReleaseBuffer
    - SpinLockAcquire
    - XLogRecHasBlockImage
    - Assert
    - CheckRequiredParameterValues
    - PrescanPreparedTransactions
    - CommitTsParameterChange
    - ereport
    - FullTransactionIdPrecedes
    - XLogReadBufferForRedo
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void xlog_redo(XLogReaderState *record)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: AmWalReceiverProcess
      Src: /src/postgres/src/backend/access/transam/xlog.c:8795,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlog.c:8824,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - method
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8827
      start: 8784
    functionDepth: 1
    functionLinenumber: 8784
    functionLinenumberEnd: 8827
    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:8845,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/transam/xlog.c:8846,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:8852,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:8855,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:8856,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8857,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:8860,1
    - Dst: get_sync_bit
      Src: /src/postgres/src/backend/access/transam/xlog.c:8861,1
    - Dst: get_sync_bit
      Src: /src/postgres/src/backend/access/transam/xlog.c:8861,1
    - Dst: XLogFileClose
      Src: /src/postgres/src/backend/access/transam/xlog.c:8862,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - new_wal_sync_method
    - extra
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8865
      start: 8832
    functionDepth: 3
    functionLinenumber: 8832
    functionLinenumberEnd: 8865
    functionName: assign_wal_sync_method
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - errmsg
    - get_sync_bit
    - ereport
    - XLogFileName
    - pgstat_report_wait_end
    - XLogFileClose
    - pgstat_report_wait_start
    - 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:8880,1
    - Dst: pgstat_prepare_io_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:8894,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlog.c:8896,1
    - Dst: pg_fsync_no_writethrough
      Src: /src/postgres/src/backend/access/transam/xlog.c:8900,1
    - Dst: _
      Src: /src/postgres/src/backend/access/transam/xlog.c:8901,1
    - Dst: pg_fsync_writethrough
      Src: /src/postgres/src/backend/access/transam/xlog.c:8905,1
    - Dst: _
      Src: /src/postgres/src/backend/access/transam/xlog.c:8906,1
    - Dst: pg_fdatasync
      Src: /src/postgres/src/backend/access/transam/xlog.c:8910,1
    - Dst: _
      Src: /src/postgres/src/backend/access/transam/xlog.c:8911,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:8916,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:8919,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:8920,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlog.c:8921,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:8931,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:8933,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:8934,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8935,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlog.c:8938,1
    - Dst: pgstat_count_io_op_time
      Src: /src/postgres/src/backend/access/transam/xlog.c:8940,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 34
    argCount: 3
    argNames:
    - fd
    - segno
    - tli
    argTypes:
    - int
    - XLogSegNo
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8942
      start: 8874
    functionDepth: 2
    functionLinenumber: 8874
    functionLinenumberEnd: 8942
    functionName: issue_xlog_fsync
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 1
    functionsReached:
    - errmsg
    - Assert
    - pg_fsync_writethrough
    - pg_fdatasync
    - pgstat_count_io_op_time
    - errmsg_internal
    - ereport
    - XLogFileName
    - pgstat_prepare_io_time
    - pgstat_report_wait_end
    - _
    - pgstat_report_wait_start
    - errcode
    - pg_fsync_no_writethrough
    - errcode_for_file_access
    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:8978,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:8979,1
    - Dst: XLogIsNeeded
      Src: /src/postgres/src/backend/access/transam/xlog.c:8985,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:8986,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:8987,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8988,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:8989,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/xlog.c:8991,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:8992,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:8993,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:8994,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/access/transam/xlog.c:8997,1
    - Dst: WALInsertLockAcquireExclusive
      Src: /src/postgres/src/backend/access/transam/xlog.c:9020,1
    - Dst: WALInsertLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:9022,1
    - Dst: PG_ENSURE_ERROR_CLEANUP
      Src: /src/postgres/src/backend/access/transam/xlog.c:9029,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/transam/xlog.c:9029,1
    - Dst: RequestXLogSwitch
      Src: /src/postgres/src/backend/access/transam/xlog.c:9059,1
    - Dst: RequestCheckpoint
      Src: /src/postgres/src/backend/access/transam/xlog.c:9083,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:9092,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:9097,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:9108,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:9110,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9113,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:9114,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9115,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:9117,1
    - Dst: WALInsertLockAcquireExclusive
      Src: /src/postgres/src/backend/access/transam/xlog.c:9143,1
    - Dst: WALInsertLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:9149,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/xlog.c:9155,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:9158,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:9159,1
    - Dst: strtoul
      Src: /src/postgres/src/backend/access/transam/xlog.c:9180,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:9184,1
    - Dst: get_dirent_type
      Src: /src/postgres/src/backend/access/transam/xlog.c:9186,1
    - Dst: readlink
      Src: /src/postgres/src/backend/access/transam/xlog.c:9193,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9196,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9197,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9203,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9204,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/access/transam/xlog.c:9216,1
    - Dst: IS_DIR_SEP
      Src: /src/postgres/src/backend/access/transam/xlog.c:9217,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/transam/xlog.c:9218,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/access/transam/xlog.c:9224,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/transam/xlog.c:9228,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/transam/xlog.c:9229,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlog.c:9231,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlog.c:9233,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:9245,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/transam/xlog.c:9247,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/xlog.c:9255,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/transam/xlog.c:9257,1
    - Dst: lappend
      Src: /src/postgres/src/backend/access/transam/xlog.c:9262,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/access/transam/xlog.c:9264,1
    - Dst: time
      Src: /src/postgres/src/backend/access/transam/xlog.c:9266,1
    - Dst: PG_END_ENSURE_ERROR_CLEANUP
      Src: /src/postgres/src/backend/access/transam/xlog.c:9268,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/transam/xlog.c:9268,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: 9276
      start: 8972
    functionDepth: 3
    functionLinenumber: 8972
    functionLinenumberEnd: 9276
    functionName: do_pg_backup_start
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - WALInsertLockAcquireExclusive
    - strtoul
    - snprintf
    - time
    - pstrdup
    - SpinLockRelease
    - errhint
    - PG_ENSURE_ERROR_CLEANUP
    - RequestCheckpoint
    - LWLockRelease
    - RecoveryInProgress
    - strlen
    - pfree
    - XLogIsNeeded
    - FreeDir
    - WALInsertLockRelease
    - errmsg
    - IS_DIR_SEP
    - lappend
    - strlcpy
    - palloc
    - strncmp
    - SpinLockAcquire
    - Assert
    - ReadDir
    - RequestXLogSwitch
    - AllocateDir
    - appendStringInfoChar
    - appendStringInfo
    - ereport
    - get_dirent_type
    - readlink
    - PG_END_ENSURE_ERROR_CLEANUP
    - DatumGetBool
    - initStringInfo
    - LWLockAcquire
    - errcode
    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: 9285
      start: 9281
    functionDepth: 0
    functionLinenumber: 9281
    functionLinenumberEnd: 9285
    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:9313,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlog.c:9315,1
    - Dst: XLogIsNeeded
      Src: /src/postgres/src/backend/access/transam/xlog.c:9321,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9322,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:9323,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9324,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:9325,1
    - Dst: WALInsertLockAcquireExclusive
      Src: /src/postgres/src/backend/access/transam/xlog.c:9334,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:9340,1
    - Dst: WALInsertLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:9354,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9361,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:9362,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9363,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:9364,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:9404,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:9406,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9409,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlog.c:9410,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9411,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:9413,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:9419,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:9422,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:9431,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/xlog.c:9432,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xlog.c:9434,1
    - Dst: RequestXLogSwitch
      Src: /src/postgres/src/backend/access/transam/xlog.c:9446,1
    - Dst: time
      Src: /src/postgres/src/backend/access/transam/xlog.c:9448,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9453,1
    - Dst: BackupHistoryFilePath
      Src: /src/postgres/src/backend/access/transam/xlog.c:9454,1
    - Dst: AllocateFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:9456,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9458,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:9459,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9460,1
    - Dst: build_backup_content
      Src: /src/postgres/src/backend/access/transam/xlog.c:9464,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/access/transam/xlog.c:9465,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlog.c:9466,1
    - Dst: fflush
      Src: /src/postgres/src/backend/access/transam/xlog.c:9468,1
    - Dst: ferror
      Src: /src/postgres/src/backend/access/transam/xlog.c:9468,1
    - Dst: FreeFile
      Src: /src/postgres/src/backend/access/transam/xlog.c:9468,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9469,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlog.c:9470,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9471,1
    - Dst: CleanupBackupHistory
      Src: /src/postgres/src/backend/access/transam/xlog.c:9480,1
    - Dst: XLogArchivingActive
      Src: /src/postgres/src/backend/access/transam/xlog.c:9505,1
    - Dst: XLogArchivingAlways
      Src: /src/postgres/src/backend/access/transam/xlog.c:9506,1
    - Dst: XLByteToPrevSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9508,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:9509,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9512,1
    - Dst: BackupHistoryFileName
      Src: /src/postgres/src/backend/access/transam/xlog.c:9513,1
    - Dst: XLogArchiveIsBusy
      Src: /src/postgres/src/backend/access/transam/xlog.c:9519,1
    - Dst: XLogArchiveIsBusy
      Src: /src/postgres/src/backend/access/transam/xlog.c:9520,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/xlog.c:9522,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9526,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9527,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/access/transam/xlog.c:9531,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/access/transam/xlog.c:9535,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9540,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9541,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlog.c:9543,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9549,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9550,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlog.c:9553,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9554,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 65
    argCount: 2
    argNames:
    - state
    - waitforarchive
    argTypes:
    - BackupState*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9555
      start: 9300
    functionDepth: 2
    functionLinenumber: 9300
    functionLinenumberEnd: 9555
    functionName: do_pg_backup_stop
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - XLogArchivingActive
    - XLogArchivingAlways
    - WALInsertLockAcquireExclusive
    - CHECK_FOR_INTERRUPTS
    - time
    - SpinLockRelease
    - fprintf
    - errhint
    - CleanupBackupHistory
    - XLogRegisterData
    - XLByteToPrevSeg
    - LWLockRelease
    - RecoveryInProgress
    - AllocateFile
    - errcode_for_file_access
    - ResetLatch
    - pfree
    - XLByteToSeg
    - XLogIsNeeded
    - WALInsertLockRelease
    - errmsg
    - BackupHistoryFilePath
    - fflush
    - FreeFile
    - ferror
    - XLogFileName
    - WaitLatch
    - SpinLockAcquire
    - Assert
    - RequestXLogSwitch
    - XLogBeginInsert
    - XLogInsert
    - ereport
    - BackupHistoryFileName
    - XLogArchiveIsBusy
    - build_backup_content
    - LWLockAcquire
    - errcode
    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:9577,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:9580,1
    - Dst: WALInsertLockAcquireExclusive
      Src: /src/postgres/src/backend/access/transam/xlog.c:9584,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlog.c:9585,1
    - Dst: WALInsertLockRelease
      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: errmsg
      Src: /src/postgres/src/backend/access/transam/xlog.c:9593,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9595
      start: 9574
    functionDepth: 2
    functionLinenumber: 9574
    functionLinenumberEnd: 9595
    functionName: do_pg_abort_backup
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - WALInsertLockAcquireExclusive
    - ereport
    - WALInsertLockRelease
    - 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:9608,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/transam/xlog.c:9608,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9610
      start: 9601
    functionDepth: 1
    functionLinenumber: 9601
    functionLinenumberEnd: 9610
    functionName: register_persistent_abort_backup_handler
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - DatumGetBool
    - before_shmem_exit
    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:9621,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:9623,1
    - Dst: XLogBytePosToRecPtr
      Src: /src/postgres/src/backend/access/transam/xlog.c:9625,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9626
      start: 9615
    functionDepth: 2
    functionLinenumber: 9615
    functionLinenumberEnd: 9626
    functionName: GetXLogInsertRecPtr
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 2
    functionsReached:
    - XLogBytePosToRecPtr
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr GetXLogInsertRecPtr(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RefreshXLogWriteResult
      Src: /src/postgres/src/backend/access/transam/xlog.c:9634,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9637
      start: 9631
    functionDepth: 1
    functionLinenumber: 9631
    functionLinenumberEnd: 9637
    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:9646,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:9649,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - oldrecptr
    - oldtli
    argTypes:
    - XLogRecPtr*
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9650
      start: 9643
    functionDepth: 1
    functionLinenumber: 9643
    functionLinenumberEnd: 9650
    functionName: GetOldestRestartPoint
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void GetOldestRestartPoint(XLogRecPtr *oldrecptr, TimeLineID *oldtli)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ShutdownWalRcv
      Src: /src/postgres/src/backend/access/transam/xlog.c:9656,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:9658,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:9660,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9661
      start: 9653
    functionDepth: 1
    functionLinenumber: 9653
    functionLinenumberEnd: 9661
    functionName: XLogShutdownWalRcv
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - LWLockRelease
    - LWLockAcquire
    - ShutdownWalRcv
    linkageType: ''
    returnType: void
    signature: void XLogShutdownWalRcv(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:9667,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:9669,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9670
      start: 9664
    functionDepth: 1
    functionLinenumber: 9664
    functionLinenumberEnd: 9670
    functionName: SetInstallXLogFileSegmentActive
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 2
    functionsReached:
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void SetInstallXLogFileSegmentActive(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:9677,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:9679,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9682
      start: 9672
    functionDepth: 1
    functionLinenumber: 9672
    functionLinenumberEnd: 9682
    functionName: IsInstallXLogFileSegmentActive
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: bool
    signature: bool IsInstallXLogFileSegmentActive(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlog.c:9690,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlog.c:9692,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - sleeping
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9693
      start: 9687
    functionDepth: 1
    functionLinenumber: 9687
    functionLinenumberEnd: 9693
    functionName: SetWalWriterSleeping
    functionSourceFile: /src/postgres/src/backend/access/transam/xlog.c
    functionUses: 0
    functionsReached:
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void SetWalWriterSleeping(bool sleeping)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:75,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:101,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:106,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:109,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:110,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:111,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:116,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:117,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:118,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:119,1
    - Dst: GetOldestRestartPoint
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:142,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:143,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:144,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:147,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:147,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:150,1
    - Dst: BuildRestoreCommand
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:153,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:157,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:158,1
    - Dst: fflush
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:161,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:162,1
    - Dst: PreRestoreCommand
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:172,1
    - Dst: system
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:177,1
    - Dst: PostRestoreCommand
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:179,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:181,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:182,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:190,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:212,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:213,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:221,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:222,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:224,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:233,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:234,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:235,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:236,1
    - Dst: wait_result_is_signal
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:264,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:265,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:267,1
    - Dst: wait_result_is_any_signal
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:267,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:268,1
    - Dst: wait_result_to_str
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:269,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:280,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: 282
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 282
    functionName: RestoreArchivedFile
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogarchive.c
    functionUses: 5
    functionsReached:
    - snprintf
    - pgstat_report_wait_end
    - pgstat_report_wait_start
    - PreRestoreCommand
    - errdetail
    - errcode_for_file_access
    - pfree
    - XLByteToSeg
    - strcmp
    - system
    - errmsg
    - strcpy
    - proc_exit
    - fflush
    - stat
    - XLogFileName
    - BuildRestoreCommand
    - PostRestoreCommand
    - wait_result_is_any_signal
    - GetOldestRestartPoint
    - Assert
    - wait_result_to_str
    - errmsg_internal
    - ereport
    - wait_result_is_signal
    - unlink
    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:305,1
    - Dst: GetOldestRestartPoint
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:312,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:313,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:314,1
    - Dst: replace_percent_placeholders
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:320,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:322,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:323,1
    - Dst: fflush
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:328,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:329,1
    - Dst: system
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:330,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:331,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:333,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:341,1
    - Dst: wait_result_is_any_signal
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:341,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:346,1
    - Dst: wait_result_to_str
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:347,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: 349
      start: 294
    functionDepth: 4
    functionLinenumber: 294
    functionLinenumberEnd: 349
    functionName: ExecuteRecoveryCommand
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogarchive.c
    functionUses: 2
    functionsReached:
    - wait_result_is_any_signal
    - GetOldestRestartPoint
    - XLByteToSeg
    - Assert
    - replace_percent_placeholders
    - fflush
    - pfree
    - errmsg
    - wait_result_to_str
    - errmsg_internal
    - ereport
    - XLogFileName
    - pgstat_report_wait_end
    - pgstat_report_wait_start
    - system
    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:364,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:366,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:383,1
    - Dst: rename
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:385,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:387,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:388,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:389,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:394,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:396,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:397,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:398,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:399,1
    - Dst: durable_rename
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:404,1
    - Dst: XLogArchiveForceDone
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:411,1
    - Dst: XLogArchiveNotify
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:413,1
    - Dst: WalSndRqstFileReload
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:423,1
    - Dst: WalSndWakeup
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:430,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - path
    - xlogfname
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 431
    functionName: KeepFileRestoredFromArchive
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogarchive.c
    functionUses: 2
    functionsReached:
    - errmsg
    - WalSndWakeup
    - rename
    - stat
    - XLogArchiveForceDone
    - XLogArchiveNotify
    - snprintf
    - ereport
    - strlcpy
    - WalSndRqstFileReload
    - unlink
    - durable_rename
    - errcode_for_file_access
    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:450,1
    - Dst: AllocateFile
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:451,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:454,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:455,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:456,1
    - Dst: FreeFile
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:460,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:462,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:463,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:464,1
    - Dst: IsTLHistoryFileName
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:480,1
    - Dst: PgArchForceDirScan
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:481,1
    - Dst: PgArchWakeup
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:485,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - xlog
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 443
    functionDepth: 1
    functionLinenumber: 443
    functionLinenumberEnd: 486
    functionName: XLogArchiveNotify
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogarchive.c
    functionUses: 3
    functionsReached:
    - errmsg
    - FreeFile
    - PgArchForceDirScan
    - ereport
    - IsTLHistoryFileName
    - StatusFilePath
    - PgArchWakeup
    - AllocateFile
    - 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:496,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:498,1
    - Dst: XLogArchiveNotify
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - segno
    - tli
    argTypes:
    - XLogSegNo
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 491
    functionDepth: 2
    functionLinenumber: 491
    functionLinenumberEnd: 500
    functionName: XLogArchiveNotifySeg
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogarchive.c
    functionUses: 1
    functionsReached:
    - XLogArchiveNotify
    - Assert
    - 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:518,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:519,1
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:523,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:524,1
    - Dst: durable_rename
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:526,1
    - Dst: AllocateFile
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:531,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:534,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:535,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:536,1
    - Dst: FreeFile
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:540,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:542,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:543,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:544,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - xlog
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 509
    functionDepth: 1
    functionLinenumber: 509
    functionLinenumberEnd: 548
    functionName: XLogArchiveForceDone
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogarchive.c
    functionUses: 1
    functionsReached:
    - errmsg
    - FreeFile
    - stat
    - ereport
    - StatusFilePath
    - durable_rename
    - AllocateFile
    - 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:571,1
    - Dst: XLogArchivingAlways
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:578,1
    - Dst: GetRecoveryState
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:579,1
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:589,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:590,1
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:594,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:595,1
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:599,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:600,1
    - Dst: XLogArchiveNotify
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:604,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - xlog
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 564
    functionDepth: 2
    functionLinenumber: 564
    functionLinenumberEnd: 606
    functionName: XLogArchiveCheckDone
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogarchive.c
    functionUses: 2
    functionsReached:
    - XLogArchivingActive
    - XLogArchivingAlways
    - stat
    - XLogArchiveNotify
    - StatusFilePath
    - GetRecoveryState
    linkageType: ''
    returnType: bool
    signature: bool XLogArchiveCheckDone(const char *xlog)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:625,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:626,1
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:630,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:631,1
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:635,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:636,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:644,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:645,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - xlog
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 618
    functionDepth: 1
    functionLinenumber: 618
    functionLinenumberEnd: 650
    functionName: XLogArchiveIsBusy
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogarchive.c
    functionUses: 1
    functionsReached:
    - stat
    - StatusFilePath
    - 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:670,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:671,1
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:675,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:676,1
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:680,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:681,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - xlog
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 663
    functionDepth: 1
    functionLinenumber: 663
    functionLinenumberEnd: 685
    functionName: XLogArchiveIsReadyOrDone
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogarchive.c
    functionUses: 1
    functionsReached:
    - stat
    - StatusFilePath
    linkageType: ''
    returnType: bool
    signature: bool XLogArchiveIsReadyOrDone(const char *xlog)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:699,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:700,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - xlog
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 693
    functionDepth: 1
    functionLinenumber: 693
    functionLinenumberEnd: 704
    functionName: XLogArchiveIsReady
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogarchive.c
    functionUses: 1
    functionsReached:
    - stat
    - StatusFilePath
    linkageType: ''
    returnType: bool
    signature: bool XLogArchiveIsReady(const char *xlog)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:717,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:718,1
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:722,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlogarchive.c:723,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - xlog
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 711
    functionDepth: 1
    functionLinenumber: 711
    functionLinenumberEnd: 725
    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: 64
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 64
    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: 67
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 67
    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:87,1
    - Dst: TransactionIdToEntry
      Src: /src/postgres/src/backend/access/transam/subtrans.c:88,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/subtrans.c:93,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/subtrans.c:93,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/subtrans.c:94,1
    - Dst: TransactionIdFollows
      Src: /src/postgres/src/backend/access/transam/subtrans.c:94,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/subtrans.c:96,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/subtrans.c:97,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/backend/access/transam/subtrans.c:99,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/subtrans.c:110,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/subtrans.c:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - xid
    - parent
    argTypes:
    - TransactionId
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 84
    functionDepth: 3
    functionLinenumber: 84
    functionLinenumberEnd: 116
    functionName: SubTransSetParent
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 1
    functionsReached:
    - TransactionIdFollows
    - Assert
    - TransactionIdToEntry
    - TransactionIdIsValid
    - SimpleLruGetBankLock
    - TransactionIdToPage
    - LWLockRelease
    - LWLockAcquire
    - SimpleLruReadPage
    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:124,1
    - Dst: TransactionIdToEntry
      Src: /src/postgres/src/backend/access/transam/subtrans.c:125,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/subtrans.c:131,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/transam/subtrans.c:131,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/subtrans.c:134,1
    - Dst: SimpleLruReadPage_ReadOnly
      Src: /src/postgres/src/backend/access/transam/subtrans.c:139,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/subtrans.c:145,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/subtrans.c:145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 121
    functionDepth: 4
    functionLinenumber: 121
    functionLinenumberEnd: 148
    functionName: SubTransGetParent
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 2
    functionsReached:
    - Assert
    - TransactionIdToEntry
    - SimpleLruReadPage_ReadOnly
    - SimpleLruGetBankLock
    - TransactionIdToPage
    - TransactionIdIsNormal
    - TransactionIdFollowsOrEquals
    - LWLockRelease
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId SubTransGetParent(TransactionId xid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/subtrans.c:169,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/transam/subtrans.c:169,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/subtrans.c:171,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/subtrans.c:174,1
    - Dst: SubTransGetParent
      Src: /src/postgres/src/backend/access/transam/subtrans.c:176,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/subtrans.c:183,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/subtrans.c:184,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/subtrans.c:188,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/subtrans.c:188,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 162
    functionDepth: 5
    functionLinenumber: 162
    functionLinenumberEnd: 191
    functionName: SubTransGetTopmostTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 1
    functionsReached:
    - Assert
    - TransactionIdIsValid
    - SubTransGetParent
    - elog
    - TransactionIdFollowsOrEquals
    - TransactionIdPrecedes
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId SubTransGetTopmostTransaction(TransactionId xid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruAutotuneBuffers
      Src: /src/postgres/src/backend/access/transam/subtrans.c:205,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/subtrans.c:207,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/transam/subtrans.c:207,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 208
    functionName: SUBTRANSShmemBuffers
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 0
    functionsReached:
    - Min
    - Max
    - SimpleLruAutotuneBuffers
    linkageType: ''
    returnType: int
    signature: int SUBTRANSShmemBuffers(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruShmemSize
      Src: /src/postgres/src/backend/access/transam/subtrans.c:216,1
    - Dst: SUBTRANSShmemBuffers
      Src: /src/postgres/src/backend/access/transam/subtrans.c:216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 213
    functionDepth: 2
    functionLinenumber: 213
    functionLinenumberEnd: 217
    functionName: SUBTRANSShmemSize
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 0
    functionsReached:
    - SUBTRANSShmemBuffers
    - SimpleLruShmemSize
    linkageType: ''
    returnType: Size
    signature: Size SUBTRANSShmemSize(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/subtrans.c:227,1
    - Dst: SUBTRANSShmemBuffers
      Src: /src/postgres/src/backend/access/transam/subtrans.c:227,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/access/transam/subtrans.c:228,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/access/transam/subtrans.c:238,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/subtrans.c:241,1
    - Dst: SimpleLruInit
      Src: /src/postgres/src/backend/access/transam/subtrans.c:244,1
    - Dst: SUBTRANSShmemBuffers
      Src: /src/postgres/src/backend/access/transam/subtrans.c:244,1
    - Dst: SlruPagePrecedesUnitTests
      Src: /src/postgres/src/backend/access/transam/subtrans.c:247,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 219
    functionDepth: 3
    functionLinenumber: 219
    functionLinenumberEnd: 248
    functionName: SUBTRANSShmemInit
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 0
    functionsReached:
    - Assert
    - SetConfigOption
    - SimpleLruInit
    - snprintf
    - SlruPagePrecedesUnitTests
    - SUBTRANSShmemBuffers
    linkageType: ''
    returnType: void
    signature: void SUBTRANSShmemInit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_slru_buffers
      Src: /src/postgres/src/backend/access/transam/subtrans.c:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - int*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 257
    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: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/subtrans.c:273,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/subtrans.c:275,1
    - Dst: ZeroSUBTRANSPage
      Src: /src/postgres/src/backend/access/transam/subtrans.c:278,1
    - Dst: SimpleLruWritePage
      Src: /src/postgres/src/backend/access/transam/subtrans.c:281,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/subtrans.c:282,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/subtrans.c:284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 269
    functionDepth: 4
    functionLinenumber: 269
    functionLinenumberEnd: 285
    functionName: BootStrapSUBTRANS
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 1
    functionsReached:
    - SimpleLruWritePage
    - Assert
    - SimpleLruGetBankLock
    - LWLockRelease
    - LWLockAcquire
    - ZeroSUBTRANSPage
    linkageType: ''
    returnType: void
    signature: void BootStrapSUBTRANS(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruZeroPage
      Src: /src/postgres/src/backend/access/transam/subtrans.c:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pageno
    argTypes:
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 295
    functionDepth: 3
    functionLinenumber: 295
    functionLinenumberEnd: 299
    functionName: ZeroSUBTRANSPage
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 1
    functionsReached:
    - SimpleLruZeroPage
    linkageType: ''
    returnType: int
    signature: int ZeroSUBTRANSPage(int64 pageno)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/subtrans.c:323,1
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/subtrans.c:325,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/subtrans.c:325,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/subtrans.c:329,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/subtrans.c:333,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/subtrans.c:334,1
    - Dst: ZeroSUBTRANSPage
      Src: /src/postgres/src/backend/access/transam/subtrans.c:338,1
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/subtrans.c:344,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/subtrans.c:348,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - oldestActiveXID
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 308
    functionDepth: 4
    functionLinenumber: 308
    functionLinenumberEnd: 349
    functionName: StartupSUBTRANS
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 1
    functionsReached:
    - XidFromFullTransactionId
    - SimpleLruGetBankLock
    - TransactionIdToPage
    - LWLockRelease
    - LWLockAcquire
    - ZeroSUBTRANSPage
    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:364,1
    - Dst: SimpleLruWriteAll
      Src: /src/postgres/src/backend/access/transam/subtrans.c:365,1
    - Dst: TRACE_POSTGRESQL_SUBTRANS_CHECKPOINT_DONE
      Src: /src/postgres/src/backend/access/transam/subtrans.c:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 354
    functionDepth: 4
    functionLinenumber: 354
    functionLinenumberEnd: 367
    functionName: CheckPointSUBTRANS
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 1
    functionsReached:
    - TRACE_POSTGRESQL_SUBTRANS_CHECKPOINT_START
    - TRACE_POSTGRESQL_SUBTRANS_CHECKPOINT_DONE
    - SimpleLruWriteAll
    linkageType: ''
    returnType: void
    signature: void CheckPointSUBTRANS(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdToEntry
      Src: /src/postgres/src/backend/access/transam/subtrans.c:388,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/subtrans.c:389,1
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/subtrans.c:392,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/subtrans.c:394,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/subtrans.c:395,1
    - Dst: ZeroSUBTRANSPage
      Src: /src/postgres/src/backend/access/transam/subtrans.c:398,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/subtrans.c:400,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - newestXact
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 378
    functionDepth: 4
    functionLinenumber: 378
    functionLinenumberEnd: 401
    functionName: ExtendSUBTRANS
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 1
    functionsReached:
    - TransactionIdEquals
    - TransactionIdToEntry
    - SimpleLruGetBankLock
    - TransactionIdToPage
    - LWLockRelease
    - LWLockAcquire
    - ZeroSUBTRANSPage
    linkageType: ''
    returnType: void
    signature: void ExtendSUBTRANS(TransactionId newestXact)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdRetreat
      Src: /src/postgres/src/backend/access/transam/subtrans.c:423,1
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/subtrans.c:424,1
    - Dst: SimpleLruTruncate
      Src: /src/postgres/src/backend/access/transam/subtrans.c:426,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - oldestXact
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 410
    functionDepth: 4
    functionLinenumber: 410
    functionLinenumberEnd: 427
    functionName: TruncateSUBTRANS
    functionSourceFile: /src/postgres/src/backend/access/transam/subtrans.c
    functionUses: 2
    functionsReached:
    - SimpleLruTruncate
    - TransactionIdToPage
    - TransactionIdRetreat
    linkageType: ''
    returnType: void
    signature: void TruncateSUBTRANS(TransactionId oldestXact)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/subtrans.c:445,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/subtrans.c:446,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - page1
    - page2
    argTypes:
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 434
    functionDepth: 2
    functionLinenumber: 434
    functionLinenumberEnd: 447
    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: 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:
    - XLogRecGetTotalLen
    - XLogRecGetBlock
    - XLogRecHasBlockRef
    - XLogRecMaxBlockId
    - XLogRecHasBlockImage
    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:
    - XLogRecGetRmid
    - Assert
    - XLogRecGetInfo
    - XLogRecGetLen
    linkageType: ''
    returnType: void
    signature: void XLogRecStoreStats(XLogStats *stats, XLogReaderState *record)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:59,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:60,1
    - Dst: get_backup_status
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:62,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:65,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:68,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:69,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:70,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:81,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:89,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:92,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:93,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:94,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:95,1
    - Dst: register_persistent_abort_backup_handler
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:97,1
    - Dst: do_pg_backup_start
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:98,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 56
    functionDepth: 4
    functionLinenumber: 56
    functionLinenumberEnd: 101
    functionName: pg_backup_start
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - do_pg_backup_start
    - MemoryContextSwitchTo
    - MemoryContextReset
    - makeStringInfo
    - PG_GETARG_TEXT_PP
    - PG_RETURN_LSN
    - ereport
    - palloc0
    - register_persistent_abort_backup_handler
    - PG_GETARG_BOOL
    - AllocSetContextCreate
    - get_backup_status
    - text_to_cstring
    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:130,1
    - Dst: get_backup_status
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:132,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:135,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:136,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:139,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:140,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:141,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:142,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:144,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:145,1
    - Dst: do_pg_backup_stop
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:148,1
    - Dst: build_backup_content
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:151,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:153,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:154,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:155,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:158,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:163,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:167,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:167,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:167,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 123
    functionDepth: 5
    functionLinenumber: 123
    functionLinenumberEnd: 168
    functionName: pg_backup_stop
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 1
    functionsReached:
    - errmsg
    - pfree
    - Assert
    - HeapTupleGetDatum
    - MemoryContextDelete
    - heap_form_tuple
    - CStringGetTextDatum
    - PG_RETURN_DATUM
    - ereport
    - elog
    - errhint
    - do_pg_backup_stop
    - PG_GETARG_BOOL
    - get_call_result_type
    - LSNGetDatum
    - build_backup_content
    - get_backup_status
    - errcode
    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:181,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:182,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:183,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:184,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:185,1
    - Dst: RequestXLogSwitch
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:187,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 176
    functionDepth: 2
    functionLinenumber: 176
    functionLinenumberEnd: 193
    functionName: pg_switch_wal
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - RecoveryInProgress
    - RequestXLogSwitch
    - PG_RETURN_LSN
    - ereport
    - errhint
    - errcode
    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:206,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:207,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:208,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:209,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:210,1
    - Dst: XLogStandbyInfoActive
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:213,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:214,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:215,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:216,1
    - Dst: LogStandbySnapshot
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:218,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:223,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 224
    functionName: pg_log_standby_snapshot
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - RecoveryInProgress
    - PG_RETURN_LSN
    - ereport
    - errhint
    - LogStandbySnapshot
    - XLogStandbyInfoActive
    - errcode
    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:235,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:239,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:240,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:241,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:242,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:243,1
    - Dst: XLogIsNeeded
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:245,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:246,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:247,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:248,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:249,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:251,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:253,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:254,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:255,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:256,1
    - Dst: XLogRestorePoint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:258,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:263,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 264
    functionName: pg_create_restore_point
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - XLogIsNeeded
    - RecoveryInProgress
    - text_to_cstring
    - PG_GETARG_TEXT_PP
    - XLogRestorePoint
    - PG_RETURN_LSN
    - ereport
    - errhint
    - errcode
    - strlen
    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:278,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:279,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:280,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:281,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:282,1
    - Dst: GetXLogWriteRecPtr
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:284,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:286,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 273
    functionDepth: 2
    functionLinenumber: 273
    functionLinenumberEnd: 287
    functionName: pg_current_wal_lsn
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - RecoveryInProgress
    - PG_RETURN_LSN
    - ereport
    - errhint
    - GetXLogWriteRecPtr
    - errcode
    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:299,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:300,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:301,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:302,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:303,1
    - Dst: GetXLogInsertRecPtr
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:305,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:307,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 294
    functionDepth: 3
    functionLinenumber: 294
    functionLinenumberEnd: 308
    functionName: pg_current_wal_insert_lsn
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - RecoveryInProgress
    - PG_RETURN_LSN
    - ereport
    - errhint
    - GetXLogInsertRecPtr
    - errcode
    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:320,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:321,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:322,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:323,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:324,1
    - Dst: GetFlushRecPtr
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:326,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:328,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 315
    functionDepth: 2
    functionLinenumber: 315
    functionLinenumberEnd: 329
    functionName: pg_current_wal_flush_lsn
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - RecoveryInProgress
    - PG_RETURN_LSN
    - ereport
    - errhint
    - GetFlushRecPtr
    - errcode
    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:342,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:345,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:347,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 337
    functionDepth: 1
    functionLinenumber: 337
    functionLinenumberEnd: 348
    functionName: pg_last_wal_receive_lsn
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - GetWalRcvFlushRecPtr
    - PG_RETURN_LSN
    - PG_RETURN_NULL
    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:361,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:364,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:366,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 367
    functionName: pg_last_wal_replay_lsn
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - GetXLogReplayRecPtr
    - PG_RETURN_LSN
    - PG_RETURN_NULL
    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:378,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:386,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:387,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:388,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:389,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:390,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:397,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:398,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:400,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:403,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:408,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:409,1
    - Dst: GetWALInsertionTimeLine
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:409,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:412,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:418,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:420,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:426,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:428,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:430,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 373
    functionDepth: 5
    functionLinenumber: 373
    functionLinenumberEnd: 431
    functionName: pg_walfile_name_offset
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - XLogSegmentOffset
    - XLByteToSeg
    - heap_form_tuple
    - HeapTupleGetDatum
    - RecoveryInProgress
    - CStringGetTextDatum
    - PG_RETURN_DATUM
    - BlessTupleDesc
    - UInt32GetDatum
    - PG_GETARG_LSN
    - ereport
    - XLogFileName
    - TupleDescInitEntry
    - errhint
    - GetWALInsertionTimeLine
    - CreateTemplateTupleDesc
    - errcode
    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:441,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:444,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:445,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:446,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:447,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:448,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:451,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:452,1
    - Dst: GetWALInsertionTimeLine
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:452,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:455,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:455,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 437
    functionDepth: 2
    functionLinenumber: 437
    functionLinenumberEnd: 456
    functionName: pg_walfile_name
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - XLByteToSeg
    - RecoveryInProgress
    - PG_GETARG_LSN
    - ereport
    - XLogFileName
    - GetWALInsertionTimeLine
    - errhint
    - PG_RETURN_TEXT_P
    - cstring_to_text
    - errcode
    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:466,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:466,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:478,1
    - Dst: pg_toupper
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:482,1
    - Dst: IsXLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:484,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:485,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:486,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:487,1
    - Dst: XLogFromFileName
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:489,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:491,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:492,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:495,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:496,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:497,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:498,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:499,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:501,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:503,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:504,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:506,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 462
    functionDepth: 5
    functionLinenumber: 462
    functionLinenumberEnd: 509
    functionName: pg_split_walfile_name
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - XLogFromFileName
    - HeapTupleGetDatum
    - snprintf
    - pstrdup
    - text_to_cstring
    - Int32GetDatum
    - Int64GetDatum
    - CStringGetDatum
    - get_call_result_type
    - IsXLogFileName
    - errmsg
    - heap_form_tuple
    - PG_RETURN_DATUM
    - elog
    - DirectFunctionCall3
    - ObjectIdGetDatum
    - pg_toupper
    - PG_GETARG_TEXT_PP
    - ereport
    - errcode
    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:520,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:521,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:522,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:523,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:524,1
    - Dst: PromoteIsTriggered
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:526,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:527,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:528,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:529,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:530,1
    - Dst: SetRecoveryPause
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:533,1
    - Dst: WakeupRecovery
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:536,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:538,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 517
    functionDepth: 1
    functionLinenumber: 517
    functionLinenumberEnd: 539
    functionName: pg_wal_replay_pause
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - RecoveryInProgress
    - WakeupRecovery
    - SetRecoveryPause
    - PG_RETURN_VOID
    - ereport
    - PromoteIsTriggered
    - errhint
    - errcode
    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:550,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:551,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:552,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:553,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:554,1
    - Dst: PromoteIsTriggered
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:556,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:557,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:558,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:559,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:560,1
    - Dst: SetRecoveryPause
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:563,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:565,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 547
    functionDepth: 1
    functionLinenumber: 547
    functionLinenumberEnd: 566
    functionName: pg_wal_replay_resume
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - RecoveryInProgress
    - SetRecoveryPause
    - PG_RETURN_VOID
    - ereport
    - PromoteIsTriggered
    - errhint
    - errcode
    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:574,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:575,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:576,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:577,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:578,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:580,1
    - Dst: GetRecoveryPauseState
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:580,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 571
    functionDepth: 1
    functionLinenumber: 571
    functionLinenumberEnd: 581
    functionName: pg_is_wal_replay_paused
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - RecoveryInProgress
    - PG_RETURN_BOOL
    - ereport
    - errhint
    - GetRecoveryPauseState
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum pg_is_wal_replay_paused(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:597,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:598,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:599,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:600,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:601,1
    - Dst: GetRecoveryPauseState
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:604,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:617,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:618,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:618,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 592
    functionDepth: 1
    functionLinenumber: 592
    functionLinenumberEnd: 619
    functionName: pg_get_wal_replay_pause_state
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - RecoveryInProgress
    - ereport
    - errhint
    - PG_RETURN_TEXT_P
    - GetRecoveryPauseState
    - cstring_to_text
    - errcode
    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:632,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:634,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:636,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 627
    functionDepth: 1
    functionLinenumber: 627
    functionLinenumberEnd: 637
    functionName: pg_last_xact_replay_timestamp
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TIMESTAMPTZ
    - PG_RETURN_NULL
    - GetLatestXTime
    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:645,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:645,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 642
    functionDepth: 1
    functionLinenumber: 642
    functionLinenumberEnd: 646
    functionName: pg_is_in_recovery
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - RecoveryInProgress
    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:656,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:657,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:658,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:660,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 651
    functionDepth: 1
    functionLinenumber: 651
    functionLinenumberEnd: 661
    functionName: pg_wal_lsn_diff
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_DATUM
    - DirectFunctionCall2
    - PG_GETARG_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:672,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:673,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:677,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:678,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:679,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:680,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:681,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:684,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:685,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:686,1
    - Dst: AllocateFile
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:689,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:691,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:692,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:693,1
    - Dst: FreeFile
      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_for_file_access
      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: kill
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:703,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:705,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:706,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:707,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:708,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:713,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:721,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:723,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:724,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:726,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:728,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:738,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:739,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:740,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:741,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:744,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:745,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/transam/xlogfuncs.c:749,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 669
    functionDepth: 1
    functionLinenumber: 669
    functionLinenumberEnd: 750
    functionName: pg_promote
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ResetLatch
    - CHECK_FOR_INTERRUPTS
    - RecoveryInProgress
    - FreeFile
    - errcontext
    - AllocateFile
    - kill
    - PG_RETURN_BOOL
    - ereport
    - errhint
    - PG_GETARG_INT32
    - PG_GETARG_BOOL
    - errmsg_plural
    - unlink
    - WaitLatch
    - errcode
    - errcode_for_file_access
    linkageType: ''
    returnType: Datum
    signature: Datum pg_promote(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:151,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:152,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:153,1
    - Dst: XLogInsertAllowed
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:156,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:157,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:160,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 148
    functionDepth: 2
    functionLinenumber: 148
    functionLinenumberEnd: 163
    functionName: XLogBeginInsert
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 67
    functionsReached:
    - XLogInsertAllowed
    - Assert
    - elog
    linkageType: ''
    returnType: void
    signature: void XLogBeginInsert(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:185,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:194,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:200,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:206,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:213,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - max_block_id
    - ndatas
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 216
    functionName: XLogEnsureRecordSpace
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 3
    functionsReached:
    - repalloc
    - Assert
    - MemSet
    - 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: 235
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 235
    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:247,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:248,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:261,1
    - Dst: BufferIsExclusiveLocked
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:261,1
    - Dst: BufferIsDirty
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:261,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:267,1
    - Dst: BufferGetTag
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:273,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:274,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:294,1
    - Dst: RelFileLocatorEquals
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:294,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 3
    argNames:
    - block_id
    - buffer
    - flags
    argTypes:
    - uint8
    - Buffer
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 241
    functionDepth: 4
    functionLinenumber: 241
    functionLinenumberEnd: 302
    functionName: XLogRegisterBuffer
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 50
    functionsReached:
    - Assert
    - BufferGetTag
    - RelFileLocatorEquals
    - BufferIsDirty
    - elog
    - BufferIsExclusiveLocked
    - BufferGetPage
    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:314,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:320,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:347,1
    - Dst: RelFileLocatorEquals
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:347,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: 355
      start: 308
    functionDepth: 1
    functionLinenumber: 308
    functionLinenumberEnd: 355
    functionName: XLogRegisterBlock
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 1
    functionsReached:
    - Assert
    - elog
    - RelFileLocatorEquals
    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:368,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:371,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:372,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:373,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - data
    - len
    argTypes:
    - void*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 363
    functionDepth: 1
    functionLinenumber: 363
    functionLinenumberEnd: 389
    functionName: XLogRegisterData
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 61
    functionsReached:
    - errdetail_internal
    - Assert
    - errmsg_internal
    - ereport
    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:410,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:415,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:425,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:426,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:427,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:430,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:431,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:432,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - block_id
    - data
    - len
    argTypes:
    - uint8
    - void*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 404
    functionDepth: 1
    functionLinenumber: 404
    functionLinenumberEnd: 443
    functionName: XLogRegisterBufData
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 29
    functionsReached:
    - Assert
    - errdetail_internal
    - errmsg_internal
    - ereport
    - elog
    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:458,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 455
    functionDepth: 1
    functionLinenumber: 455
    functionLinenumberEnd: 460
    functionName: XLogSetRecordFlags
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 9
    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:480,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:489,1
    - Dst: TRACE_POSTGRESQL_WAL_INSERT
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:491,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:497,1
    - Dst: XLogResetInsertion
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:499,1
    - Dst: GetFullPageWriteInfo
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:518,1
    - Dst: XLogRecordAssemble
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:520,1
    - Dst: XLogInsertRecord
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:523,1
    - Dst: XLogResetInsertion
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:527,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - rmid
    - info
    argTypes:
    - RmgrId
    - uint8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 473
    functionDepth: 2
    functionLinenumber: 473
    functionLinenumberEnd: 530
    functionName: XLogInsert
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 67
    functionsReached:
    - GetFullPageWriteInfo
    - XLogResetInsertion
    - IsBootstrapProcessingMode
    - elog
    - XLogInsertRecord
    - XLogRecordAssemble
    - TRACE_POSTGRESQL_WAL_INSERT
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr XLogInsert(RmgrId rmid, uint8 info)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: PageGetLSN
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:618,1
    - Dst: XLogCompressBackupBlock
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:691,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:739,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:747,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:752,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:794,1
    - Dst: RelFileLocatorEquals
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:808,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:818,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:822,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:826,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:833,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:836,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:845,1
    - Dst: IsSubxactTopXidLogPending
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:850,1
    - Dst: GetTopTransactionIdIfAny
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:852,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:858,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:870,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:871,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:872,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:878,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:903,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:904,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:906,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:916,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:917,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:918,1
    - Dst: GetCurrentTransactionIdIfAny
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:926,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 168
    argCount: 7
    argNames:
    - rmid
    - info
    - RedoRecPtr
    - doPageWrites
    - fpw_lsn
    - num_fpi
    - topxid_included
    argTypes:
    - RmgrId
    - uint8
    - XLogRecPtr
    - bool
    - XLogRecPtr*
    - int*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 547
    functionDepth: 3
    functionLinenumber: 547
    functionLinenumberEnd: 934
    functionName: XLogRecordAssemble
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 1
    functionsReached:
    - COMP_CRC32C
    - GetTopTransactionIdIfAny
    - Assert
    - XLogCompressBackupBlock
    - errdetail_internal
    - PageGetLSN
    - IsSubxactTopXidLogPending
    - INIT_CRC32C
    - errmsg_internal
    - RelFileLocatorEquals
    - ereport
    - elog
    - memcpy
    - GetCurrentTransactionIdIfAny
    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, bool *topxid_included)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:956,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:957,1
    - Dst: pglz_compress
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:974,1
    - Dst: LZ4_compress_default
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:979,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:984,1
    - Dst: ZSTD_compress
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:990,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:992,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:995,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1000,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: 1017
      start: 943
    functionDepth: 3
    functionLinenumber: 943
    functionLinenumberEnd: 1017
    functionName: XLogCompressBackupBlock
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 1
    functionsReached:
    - Assert
    - ZSTD_isError
    - pglz_compress
    - ZSTD_compress
    - elog
    - LZ4_compress_default
    - memcpy
    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:1033,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1035,1
    - Dst: PageGetLSN
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1037,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 1026
    functionDepth: 4
    functionLinenumber: 1026
    functionLinenumberEnd: 1041
    functionName: XLogCheckBufferNeedsBackup
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 2
    functionsReached:
    - BufferGetPage
    - PageGetLSN
    - GetFullPageWriteInfo
    linkageType: ''
    returnType: bool
    signature: bool XLogCheckBufferNeedsBackup(Buffer buffer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1074,1
    - Dst: GetRedoRecPtr
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1079,1
    - Dst: BufferGetLSNAtomic
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1087,1
    - Dst: BufferGetBlock
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1093,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1106,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1110,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1111,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1114,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1116,1
    - Dst: BufferGetTag
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1121,1
    - Dst: XLogRegisterBlock
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1122,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1124,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - buffer
    - buffer_std
    argTypes:
    - Buffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1128
      start: 1064
    functionDepth: 4
    functionLinenumber: 1064
    functionLinenumberEnd: 1128
    functionName: XLogSaveBufferForHint
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 0
    functionsReached:
    - Assert
    - XLogRegisterBlock
    - BufferGetLSNAtomic
    - memcpy
    - BufferGetBlock
    - GetRedoRecPtr
    - XLogBeginInsert
    - XLogInsert
    - BufferGetTag
    - BufferGetPage
    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:1153,1
    - Dst: XLogRegisterBlock
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1154,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1155,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1161,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1163,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: 1167
      start: 1142
    functionDepth: 3
    functionLinenumber: 1142
    functionLinenumberEnd: 1167
    functionName: log_newpage
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 2
    functionsReached:
    - PageSetLSN
    - XLogRegisterBlock
    - XLogBeginInsert
    - XLogInsert
    - PageIsNew
    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:1192,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1200,1
    - Dst: XLogRegisterBlock
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1205,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1210,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1218,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1220,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: 1224
      start: 1174
    functionDepth: 3
    functionLinenumber: 1174
    functionLinenumberEnd: 1224
    functionName: log_newpages
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - XLogRegisterBlock
    - XLogBeginInsert
    - XLogInsert
    - PageIsNew
    - XLogEnsureRecordSpace
    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:1239,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1245,1
    - Dst: BufferGetTag
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1247,1
    - Dst: log_newpage
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - buffer
    - page_std
    argTypes:
    - Buffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1250
      start: 1236
    functionDepth: 4
    functionLinenumber: 1236
    functionLinenumberEnd: 1250
    functionName: log_newpage_buffer
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 5
    functionsReached:
    - log_newpage
    - BufferGetPage
    - Assert
    - BufferGetTag
    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:1286,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1296,1
    - Dst: ReadBufferExtended
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1302,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1305,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1312,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1312,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1315,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1324,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1326,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1329,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1330,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1333,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1337,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1337,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1338,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1340,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 5
    argNames:
    - rel
    - forknum
    - startblk
    - endblk
    - page_std
    argTypes:
    - Relation
    - ForkNumber
    - BlockNumber
    - BlockNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1342
      start: 1269
    functionDepth: 5
    functionLinenumber: 1269
    functionLinenumberEnd: 1342
    functionName: log_newpage_range
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 1
    functionsReached:
    - MarkBufferDirty
    - PageSetLSN
    - START_CRIT_SECTION
    - CHECK_FOR_INTERRUPTS
    - XLogBeginInsert
    - LockBuffer
    - XLogInsert
    - XLogRegisterBuffer
    - ReadBufferExtended
    - END_CRIT_SECTION
    - BufferGetPage
    - PageIsNew
    - UnlockReleaseBuffer
    - XLogEnsureRecordSpace
    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:1359,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1361,1
    - Dst: AllocSizeIsValid
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1361,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1367,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1375,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1381,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/access/transam/xloginsert.c:1390,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1392
      start: 1347
    functionDepth: 1
    functionLinenumber: 1347
    functionLinenumberEnd: 1392
    functionName: InitXLogInsert
    functionSourceFile: /src/postgres/src/backend/access/transam/xloginsert.c
    functionUses: 0
    functionsReached:
    - Assert
    - AllocSizeIsValid
    - MemoryContextAllocZero
    - AllocSetContextCreate
    - MemoryContextAlloc
    - DecodeXLogRecordRequiredSpace
    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: 85
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 85
    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: 88
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 88
    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: 89
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 89
    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: 90
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 90
    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: 97
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 97
    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:186,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:189,1
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/clog.c:198,1
    - Dst: TransactionIdSetPageStatus
      Src: /src/postgres/src/backend/access/transam/clog.c:210,1
    - Dst: set_status_by_pages
      Src: /src/postgres/src/backend/access/transam/clog.c:228,1
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/clog.c:236,1
    - Dst: TransactionIdSetPageStatus
      Src: /src/postgres/src/backend/access/transam/clog.c:237,1
    - Dst: set_status_by_pages
      Src: /src/postgres/src/backend/access/transam/clog.c:244,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: 248
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 248
    functionName: TransactionIdSetTreeStatus
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 3
    functionsReached:
    - TransactionIdSetPageStatus
    - Assert
    - set_status_by_pages
    - TransactionIdToPage
    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:260,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:264,1
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/clog.c:273,1
    - Dst: TransactionIdSetPageStatus
      Src: /src/postgres/src/backend/access/transam/clog.c:280,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - nsubxids
    - subxids
    - status
    - lsn
    argTypes:
    - int
    - TransactionId*
    - XidStatus
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 286
    functionName: set_status_by_pages
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 1
    functionsReached:
    - TransactionIdSetPageStatus
    - Assert
    - TransactionIdToPage
    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:301,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/clog.c:305,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/access/transam/clog.c:325,1
    - Dst: LWLockConditionalAcquire
      Src: /src/postgres/src/backend/access/transam/clog.c:334,1
    - Dst: TransactionIdSetPageStatusInternal
      Src: /src/postgres/src/backend/access/transam/clog.c:337,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/clog.c:339,1
    - Dst: TransactionGroupUpdateXidStatus
      Src: /src/postgres/src/backend/access/transam/clog.c:342,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/clog.c:352,1
    - Dst: TransactionIdSetPageStatusInternal
      Src: /src/postgres/src/backend/access/transam/clog.c:353,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/clog.c:355,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: 356
      start: 292
    functionDepth: 1
    functionLinenumber: 292
    functionLinenumberEnd: 356
    functionName: TransactionIdSetPageStatus
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 2
    functionsReached:
    - LWLockConditionalAcquire
    - TransactionGroupUpdateXidStatus
    - LWLockRelease
    - memcmp
    - SimpleLruGetBankLock
    - TransactionIdSetPageStatusInternal
    - StaticAssertDecl
    - LWLockAcquire
    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:371,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/clog.c:373,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:374,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/access/transam/clog.c:374,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/clog.c:374,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/backend/access/transam/clog.c:386,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/clog.c:386,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/clog.c:397,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:404,1
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/clog.c:404,1
    - Dst: TransactionIdSetStatusBit
      Src: /src/postgres/src/backend/access/transam/clog.c:405,1
    - Dst: TransactionIdSetStatusBit
      Src: /src/postgres/src/backend/access/transam/clog.c:412,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:418,1
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/clog.c:418,1
    - Dst: TransactionIdSetStatusBit
      Src: /src/postgres/src/backend/access/transam/clog.c:419,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: 423
      start: 363
    functionDepth: 3
    functionLinenumber: 363
    functionLinenumberEnd: 423
    functionName: TransactionIdSetPageStatusInternal
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 1
    functionsReached:
    - Assert
    - TransactionIdIsValid
    - SimpleLruGetBankLock
    - TransactionIdSetStatusBit
    - TransactionIdToPage
    - LWLockHeldByMeInMode
    - XLogRecPtrIsInvalid
    - 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:452,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/clog.c:452,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/backend/access/transam/clog.c:487,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/access/transam/clog.c:505,1
    - Dst: pg_atomic_write_u32
      Src: /src/postgres/src/backend/access/transam/clog.c:512,1
    - Dst: pg_atomic_write_u32
      Src: /src/postgres/src/backend/access/transam/clog.c:516,1
    - Dst: pg_atomic_compare_exchange_u32
      Src: /src/postgres/src/backend/access/transam/clog.c:518,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/clog.c:535,1
    - Dst: PGSemaphoreLock
      Src: /src/postgres/src/backend/access/transam/clog.c:539,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/clog.c:544,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:546,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/backend/access/transam/clog.c:546,1
    - Dst: PGSemaphoreUnlock
      Src: /src/postgres/src/backend/access/transam/clog.c:550,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/clog.c:559,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/clog.c:560,1
    - Dst: pg_atomic_exchange_u32
      Src: /src/postgres/src/backend/access/transam/clog.c:570,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/clog.c:595,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/clog.c:599,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/clog.c:600,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:610,1
    - Dst: TransactionIdSetPageStatusInternal
      Src: /src/postgres/src/backend/access/transam/clog.c:612,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/backend/access/transam/clog.c:620,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/clog.c:625,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/backend/access/transam/clog.c:640,1
    - Dst: pg_atomic_write_u32
      Src: /src/postgres/src/backend/access/transam/clog.c:641,1
    - Dst: pg_write_barrier
      Src: /src/postgres/src/backend/access/transam/clog.c:644,1
    - Dst: PGSemaphoreUnlock
      Src: /src/postgres/src/backend/access/transam/clog.c:649,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 61
    argCount: 4
    argNames:
    - xid
    - status
    - lsn
    - pageno
    argTypes:
    - TransactionId
    - XidStatus
    - XLogRecPtr
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 440
    functionDepth: 4
    functionLinenumber: 440
    functionLinenumberEnd: 653
    functionName: TransactionGroupUpdateXidStatus
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 1
    functionsReached:
    - pg_atomic_read_u32
    - Assert
    - pg_write_barrier
    - pgstat_report_wait_start
    - TransactionIdIsValid
    - LWLockRelease
    - SimpleLruGetBankLock
    - TransactionIdSetPageStatusInternal
    - PGSemaphoreLock
    - pg_atomic_exchange_u32
    - pgstat_report_wait_end
    - pg_atomic_compare_exchange_u32
    - pg_atomic_write_u32
    - PGSemaphoreUnlock
    - GetPGProcByNumber
    - LWLockAcquire
    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:663,1
    - Dst: TransactionIdToBIndex
      Src: /src/postgres/src/backend/access/transam/clog.c:664,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:669,1
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/clog.c:669,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:670,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/access/transam/clog.c:670,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/clog.c:670,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:691,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/clog.c:710,1
    - Dst: GetLSNIndex
      Src: /src/postgres/src/backend/access/transam/clog.c:712,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 4
    argNames:
    - xid
    - status
    - lsn
    - slotno
    argTypes:
    - TransactionId
    - XidStatus
    - XLogRecPtr
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 717
      start: 660
    functionDepth: 1
    functionLinenumber: 660
    functionLinenumberEnd: 717
    functionName: TransactionIdSetStatusBit
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 1
    functionsReached:
    - Assert
    - GetLSNIndex
    - TransactionIdToByte
    - SimpleLruGetBankLock
    - TransactionIdToPage
    - TransactionIdToBIndex
    - LWLockHeldByMeInMode
    - XLogRecPtrIsInvalid
    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:737,1
    - Dst: TransactionIdToByte
      Src: /src/postgres/src/backend/access/transam/clog.c:738,1
    - Dst: TransactionIdToBIndex
      Src: /src/postgres/src/backend/access/transam/clog.c:739,1
    - Dst: SimpleLruReadPage_ReadOnly
      Src: /src/postgres/src/backend/access/transam/clog.c:747,1
    - Dst: GetLSNIndex
      Src: /src/postgres/src/backend/access/transam/clog.c:752,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/clog.c:755,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/clog.c:755,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - xid
    - lsn
    argTypes:
    - TransactionId
    - XLogRecPtr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 734
    functionDepth: 4
    functionLinenumber: 734
    functionLinenumberEnd: 758
    functionName: TransactionIdGetStatus
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 2
    functionsReached:
    - SimpleLruReadPage_ReadOnly
    - GetLSNIndex
    - TransactionIdToByte
    - SimpleLruGetBankLock
    - TransactionIdToPage
    - TransactionIdToBIndex
    - LWLockRelease
    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:772,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/clog.c:774,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/transam/clog.c:774,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 767
    functionDepth: 1
    functionLinenumber: 767
    functionLinenumberEnd: 775
    functionName: CLOGShmemBuffers
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 0
    functionsReached:
    - Min
    - Max
    - SimpleLruAutotuneBuffers
    linkageType: ''
    returnType: int
    signature: int CLOGShmemBuffers(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruShmemSize
      Src: /src/postgres/src/backend/access/transam/clog.c:783,1
    - Dst: CLOGShmemBuffers
      Src: /src/postgres/src/backend/access/transam/clog.c:783,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 780
    functionDepth: 2
    functionLinenumber: 780
    functionLinenumberEnd: 784
    functionName: CLOGShmemSize
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 0
    functionsReached:
    - CLOGShmemBuffers
    - SimpleLruShmemSize
    linkageType: ''
    returnType: Size
    signature: Size CLOGShmemSize(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/clog.c:794,1
    - Dst: CLOGShmemBuffers
      Src: /src/postgres/src/backend/access/transam/clog.c:794,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/access/transam/clog.c:795,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/access/transam/clog.c:805,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:808,1
    - Dst: SimpleLruInit
      Src: /src/postgres/src/backend/access/transam/clog.c:811,1
    - Dst: CLOGShmemBuffers
      Src: /src/postgres/src/backend/access/transam/clog.c:811,1
    - Dst: SlruPagePrecedesUnitTests
      Src: /src/postgres/src/backend/access/transam/clog.c:814,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 786
    functionDepth: 3
    functionLinenumber: 786
    functionLinenumberEnd: 815
    functionName: CLOGShmemInit
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 0
    functionsReached:
    - Assert
    - SetConfigOption
    - SimpleLruInit
    - snprintf
    - CLOGShmemBuffers
    - SlruPagePrecedesUnitTests
    linkageType: ''
    returnType: void
    signature: void CLOGShmemInit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_slru_buffers
      Src: /src/postgres/src/backend/access/transam/clog.c:823,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - int*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 820
    functionDepth: 1
    functionLinenumber: 820
    functionLinenumberEnd: 824
    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: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/clog.c:836,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/clog.c:838,1
    - Dst: ZeroCLOGPage
      Src: /src/postgres/src/backend/access/transam/clog.c:841,1
    - Dst: SimpleLruWritePage
      Src: /src/postgres/src/backend/access/transam/clog.c:844,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:845,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/clog.c:847,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 832
    functionDepth: 4
    functionLinenumber: 832
    functionLinenumberEnd: 848
    functionName: BootStrapCLOG
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 1
    functionsReached:
    - SimpleLruWritePage
    - Assert
    - SimpleLruGetBankLock
    - ZeroCLOGPage
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void BootStrapCLOG(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruZeroPage
      Src: /src/postgres/src/backend/access/transam/clog.c:864,1
    - Dst: WriteZeroPageXlogRec
      Src: /src/postgres/src/backend/access/transam/clog.c:867,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - pageno
    - writeXlog
    argTypes:
    - int64
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 859
    functionDepth: 3
    functionLinenumber: 859
    functionLinenumberEnd: 870
    functionName: ZeroCLOGPage
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 1
    functionsReached:
    - WriteZeroPageXlogRec
    - SimpleLruZeroPage
    linkageType: ''
    returnType: int
    signature: int ZeroCLOGPage(int64 pageno, bool writeXlog)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/clog.c:879,1
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/clog.c:880,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/clog.c:885,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 876
    functionDepth: 2
    functionLinenumber: 876
    functionLinenumberEnd: 886
    functionName: StartupCLOG
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 1
    functionsReached:
    - XidFromFullTransactionId
    - pg_atomic_write_u64
    - TransactionIdToPage
    linkageType: ''
    returnType: void
    signature: void StartupCLOG(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/clog.c:894,1
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/clog.c:895,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/clog.c:896,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/clog.c:898,1
    - Dst: TransactionIdToPgIndex
      Src: /src/postgres/src/backend/access/transam/clog.c:912,1
    - Dst: TransactionIdToByte
      Src: /src/postgres/src/backend/access/transam/clog.c:914,1
    - Dst: TransactionIdToBIndex
      Src: /src/postgres/src/backend/access/transam/clog.c:915,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/backend/access/transam/clog.c:919,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/clog.c:925,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/clog.c:930,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 891
    functionDepth: 3
    functionLinenumber: 891
    functionLinenumberEnd: 931
    functionName: TrimCLOG
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 1
    functionsReached:
    - TransactionIdToPgIndex
    - XidFromFullTransactionId
    - SimpleLruGetBankLock
    - TransactionIdToByte
    - TransactionIdToPage
    - TransactionIdToBIndex
    - MemSet
    - LWLockRelease
    - LWLockAcquire
    - SimpleLruReadPage
    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:944,1
    - Dst: SimpleLruWriteAll
      Src: /src/postgres/src/backend/access/transam/clog.c:945,1
    - Dst: TRACE_POSTGRESQL_CLOG_CHECKPOINT_DONE
      Src: /src/postgres/src/backend/access/transam/clog.c:946,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 947
      start: 936
    functionDepth: 4
    functionLinenumber: 936
    functionLinenumberEnd: 947
    functionName: CheckPointCLOG
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 1
    functionsReached:
    - SimpleLruWriteAll
    - TRACE_POSTGRESQL_CLOG_CHECKPOINT_DONE
    - 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:968,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/clog.c:969,1
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/clog.c:972,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/clog.c:973,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/clog.c:975,1
    - Dst: ZeroCLOGPage
      Src: /src/postgres/src/backend/access/transam/clog.c:978,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/clog.c:980,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - newestXact
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 958
    functionDepth: 4
    functionLinenumber: 958
    functionLinenumberEnd: 981
    functionName: ExtendCLOG
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 1
    functionsReached:
    - TransactionIdToPgIndex
    - TransactionIdEquals
    - SimpleLruGetBankLock
    - TransactionIdToPage
    - ZeroCLOGPage
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void ExtendCLOG(TransactionId newestXact)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdToPage
      Src: /src/postgres/src/backend/access/transam/clog.c:1008,1
    - Dst: SlruScanDirectory
      Src: /src/postgres/src/backend/access/transam/clog.c:1011,1
    - Dst: AdvanceOldestClogXid
      Src: /src/postgres/src/backend/access/transam/clog.c:1021,1
    - Dst: WriteTruncateXlogRec
      Src: /src/postgres/src/backend/access/transam/clog.c:1029,1
    - Dst: SimpleLruTruncate
      Src: /src/postgres/src/backend/access/transam/clog.c:1032,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - oldestXact
    - oldestxid_datoid
    argTypes:
    - TransactionId
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 999
    functionDepth: 4
    functionLinenumber: 999
    functionLinenumberEnd: 1033
    functionName: TruncateCLOG
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 0
    functionsReached:
    - AdvanceOldestClogXid
    - WriteTruncateXlogRec
    - TransactionIdToPage
    - SimpleLruTruncate
    - SlruScanDirectory
    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:1065,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/clog.c:1066,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - page1
    - page2
    argTypes:
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1067
      start: 1054
    functionDepth: 2
    functionLinenumber: 1054
    functionLinenumberEnd: 1067
    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: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/clog.c:1076,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/clog.c:1077,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/clog.c:1078,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - pageno
    argTypes:
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1079
      start: 1073
    functionDepth: 3
    functionLinenumber: 1073
    functionLinenumberEnd: 1079
    functionName: WriteZeroPageXlogRec
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 1
    functionsReached:
    - XLogInsert
    - XLogRegisterData
    - XLogBeginInsert
    linkageType: ''
    returnType: void
    signature: void WriteZeroPageXlogRec(int64 pageno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/clog.c:1097,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/clog.c:1098,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/clog.c:1099,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/clog.c:1100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - pageno
    - oldestXact
    - oldestXactDb
    argTypes:
    - int64
    - TransactionId
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1101
      start: 1087
    functionDepth: 5
    functionLinenumber: 1087
    functionLinenumberEnd: 1101
    functionName: WriteTruncateXlogRec
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 1
    functionsReached:
    - XLogInsert
    - XLogRegisterData
    - 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:1109,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:1112,1
    - Dst: XLogRecHasAnyBlockRefs
      Src: /src/postgres/src/backend/access/transam/clog.c:1112,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/clog.c:1120,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/clog.c:1120,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/clog.c:1122,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/clog.c:1123,1
    - Dst: ZeroCLOGPage
      Src: /src/postgres/src/backend/access/transam/clog.c:1125,1
    - Dst: SimpleLruWritePage
      Src: /src/postgres/src/backend/access/transam/clog.c:1126,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/clog.c:1127,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/clog.c:1129,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/clog.c:1135,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/clog.c:1135,1
    - Dst: AdvanceOldestClogXid
      Src: /src/postgres/src/backend/access/transam/clog.c:1137,1
    - Dst: SimpleLruTruncate
      Src: /src/postgres/src/backend/access/transam/clog.c:1139,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/clog.c:1142,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1106
    functionDepth: 4
    functionLinenumber: 1106
    functionLinenumberEnd: 1143
    functionName: clog_redo
    functionSourceFile: /src/postgres/src/backend/access/transam/clog.c
    functionUses: 0
    functionsReached:
    - SimpleLruWritePage
    - Assert
    - AdvanceOldestClogXid
    - SimpleLruGetBankLock
    - XLogRecHasAnyBlockRefs
    - ZeroCLOGPage
    - XLogRecGetInfo
    - XLogRecGetData
    - elog
    - SimpleLruTruncate
    - memcpy
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void clog_redo(XLogReaderState *record)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SlruSyncFileTag
      Src: /src/postgres/src/backend/access/transam/clog.c:1151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ftag
    - path
    argTypes:
    - FileTag*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1152
      start: 1148
    functionDepth: 3
    functionLinenumber: 1148
    functionLinenumberEnd: 1152
    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: makeStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:34,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:37,1
    - Dst: pg_strftime
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:40,1
    - Dst: pg_localtime
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:41,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:43,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:44,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:45,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:46,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:53,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:54,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:55,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:56,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:59,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:60,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:61,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:62,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:64,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: pg_strftime
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:73,1
    - Dst: pg_localtime
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:74,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:76,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:77,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:81,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:81,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:82,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:84,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:85,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:86,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogbackup.c:91,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 2
    argNames:
    - state
    - ishistoryfile
    argTypes:
    - BackupState*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 28
    functionDepth: 4
    functionLinenumber: 28
    functionLinenumberEnd: 94
    functionName: build_backup_content
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogbackup.c
    functionUses: 2
    functionsReached:
    - LSN_FORMAT_ARGS
    - pfree
    - Assert
    - XLByteToSeg
    - appendStringInfo
    - makeStringInfo
    - appendStringInfoString
    - XLogFileName
    - pg_strftime
    - pg_localtime
    - XLogRecPtrIsInvalid
    linkageType: ''
    returnType: char
    signature: 'char *

      build_backup_content(BackupState *state, bool ishistoryfile)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 452
    functionDepth: 0
    functionLinenumber: 452
    functionLinenumberEnd: 461
    functionName: XLogRecoveryShmemSize
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Size
    signature: Size XLogRecoveryShmemSize(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ShmemInitStruct
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:469,1
    - Dst: XLogRecoveryShmemSize
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:469,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:472,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:474,1
    - Dst: InitSharedLatch
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:475,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:476,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 463
    functionDepth: 1
    functionLinenumber: 463
    functionLinenumberEnd: 477
    functionName: XLogRecoveryShmemInit
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - XLogRecoveryShmemSize
    - memset
    - ConditionVariableInit
    - SpinLockInit
    - InitSharedLatch
    - ShmemInitStruct
    linkageType: ''
    returnType: void
    signature: void XLogRecoveryShmemInit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: disable_startup_progress_timeout
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:494,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 483
    functionDepth: 1
    functionLinenumber: 483
    functionLinenumberEnd: 495
    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: 41
    BranchProfiles: []
    Callsites:
    - Dst: readRecoverySignalFile
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:546,1
    - Dst: validateRecoveryParameters
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:547,1
    - Dst: OwnLatch
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:554,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:560,1
    - Dst: XLogReaderAllocate
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:562,1
    - Dst: XL_ROUTINE
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:563,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:568,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:569,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:570,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:571,1
    - Dst: XLogReaderSetDecodeBuffer
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:578,1
    - Dst: XLogPrefetcherAllocate
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:581,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:590,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:591,1
    - Dst: read_backup_label
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:598,1
    - Dst: EnableStandbyMode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:610,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:622,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:623,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:624,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:625,1
    - Dst: ReadCheckpointRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:632,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:636,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:636,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:638,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:639,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:640,1
    - Dst: XLogPrefetcherBeginRead
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:651,1
    - Dst: ReadRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:652,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:654,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:655,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:656,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:656,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:657,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:665,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:666,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:667,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:668,1
    - Dst: read_tablespace_map
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:676,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:682,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:685,1
    - Dst: remove_tablespace_symlink
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:691,1
    - Dst: symlink
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:693,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:694,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:695,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:696,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:699,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:700,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:724,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:726,1
    - Dst: durable_rename
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:727,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:728,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:729,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:731,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:734,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:735,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:737,1
    - Dst: EnableStandbyMode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:766,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:774,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: ReadCheckpointRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:784,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:788,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:789,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:790,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:800,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:801,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:802,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:804,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:804,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:811,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:812,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:814,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:815,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:818,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:819,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:820,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:822,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:823,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:826,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:827,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:828,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:830,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:831,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:833,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:834,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:842,1
    - Dst: tliOfPointInHistory
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:844,1
    - Dst: tliSwitchPoint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:853,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: errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:858,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:860,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:862,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:869,1
    - Dst: tliOfPointInHistory
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:870,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:872,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:873,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:875,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:878,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:879,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:880,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:882,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:883,1
    - Dst: U64FromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:884,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:886,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:887,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:889,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:890,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:892,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:893,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:895,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:896,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:899,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:899,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:900,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:901,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:905,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:906,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:916,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:917,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:945,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:946,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:949,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:950,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:992,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:993,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:994,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 160
    argCount: 4
    argNames:
    - ControlFile
    - wasShutdown_ptr
    - haveBackupLabel_ptr
    - haveTblspcMap_ptr
    argTypes:
    - ControlFileData*
    - bool*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1025
      start: 517
    functionDepth: 2
    functionLinenumber: 517
    functionLinenumberEnd: 1025
    functionName: InitWalRecovery
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - LSN_FORMAT_ARGS
    - tliOfPointInHistory
    - XidFromFullTransactionId
    - validateRecoveryParameters
    - XLogRecGetData
    - errhint
    - read_tablespace_map
    - durable_rename
    - errdetail
    - unlink
    - psprintf
    - errcode_for_file_access
    - pfree
    - ReadCheckpointRecord
    - EnableStandbyMode
    - symlink
    - memcpy
    - XLogReaderSetDecodeBuffer
    - XL_ROUTINE
    - errmsg
    - XLogReaderAllocate
    - stat
    - TransactionIdIsNormal
    - U64FromFullTransactionId
    - OwnLatch
    - tliSwitchPoint
    - palloc
    - XLogRecPtrIsInvalid
    - read_backup_label
    - lfirst
    - remove_tablespace_symlink
    - Assert
    - XLogPrefetcherAllocate
    - errmsg_internal
    - palloc0
    - ereport
    - ReadRecord
    - timestamptz_to_str
    - XLogPrefetcherBeginRead
    - errcode
    - readRecoverySignalFile
    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:682,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:685,1
    - Dst: remove_tablespace_symlink
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:691,1
    - Dst: symlink
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:693,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:694,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:695,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:696,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:699,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:700,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 680
    functionDepth: 2
    functionLinenumber: 680
    functionLinenumberEnd: 701
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 28
    functionsReached:
    - errmsg
    - pfree
    - ereport
    - errcode_for_file_access
    - symlink
    - lfirst
    - psprintf
    - remove_tablespace_symlink
    linkageType: ''
    returnType: void
    signature: void foreach(lc, tablespaces)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1039,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1045,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1046,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1047,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1048,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1054,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1064,1
    - Dst: BasicOpenFilePerm
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1068,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1072,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1073,1
    - Dst: stat
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1077,1
    - Dst: BasicOpenFilePerm
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1081,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1085,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1086,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1111,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1112,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1113,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 1034
    functionDepth: 1
    functionLinenumber: 1034
    functionLinenumberEnd: 1114
    functionName: readRecoverySignalFile
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - stat
    - close
    - IsBootstrapProcessingMode
    - ereport
    - unlink
    - BasicOpenFilePerm
    - 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:1127,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1128,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1129,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1130,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1131,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1136,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1137,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1138,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1139,1
    - Dst: DatumGetTimestampTz
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1157,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1157,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1158,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1159,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1160,1
    - Dst: existsTimeLineHistory
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1174,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1175,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1176,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1177,1
    - Dst: findNewestTimeLine
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1184,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1192,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1194
      start: 1116
    functionDepth: 3
    functionLinenumber: 1116
    functionLinenumberEnd: 1194
    functionName: validateRecoveryParameters
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - errmsg
    - DirectFunctionCall3
    - Assert
    - ObjectIdGetDatum
    - Int32GetDatum
    - existsTimeLineHistory
    - ereport
    - findNewestTimeLine
    - errhint
    - CStringGetDatum
    - DatumGetTimestampTz
    - strcmp
    - errcode
    linkageType: ''
    returnType: void
    signature: void validateRecoveryParameters(void)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: AllocateFile
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1240,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1244,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1245,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1246,1
    - Dst: fscanf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1256,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1258,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1259,1
    - Dst: errmsg
      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:1265,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1266,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1267,1
    - Dst: fscanf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1281,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1283,1
    - Dst: fscanf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1292,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1294,1
    - Dst: fscanf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1307,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1308,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1309,1
    - Dst: fscanf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1312,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1313,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1314,1
    - Dst: fscanf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1321,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1324,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1325,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1326,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1327,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1330,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1331,1
    - Dst: fscanf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1335,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1336,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1337,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1338,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1339,1
    - Dst: ferror
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1341,1
    - Dst: FreeFile
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1341,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1342,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1343,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1344,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 41
    argCount: 4
    argNames:
    - checkPointLoc
    - backupLabelTLI
    - backupEndRequired
    - backupFromStandby
    argTypes:
    - XLogRecPtr*
    - TimeLineID*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1348
      start: 1215
    functionDepth: 1
    functionLinenumber: 1215
    functionLinenumberEnd: 1348
    functionName: read_backup_label
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - FreeFile
    - ferror
    - errmsg_internal
    - ereport
    - errhint
    - fscanf
    - strcmp
    - errdetail
    - AllocateFile
    - 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:1375,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1379,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1380,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1381,1
    - Dst: fgetc
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1393,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1412,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1413,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1414,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1417,1
    - Dst: strtoul
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1419,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1421,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1422,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1423,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1424,1
    - Dst: lappend
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1425,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1441,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1442,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1443,1
    - Dst: ferror
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1445,1
    - Dst: FreeFile
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1445,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1446,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1447,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1448,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 42
    argCount: 1
    argNames:
    - tablespaces
    argTypes:
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1452
      start: 1361
    functionDepth: 1
    functionLinenumber: 1361
    functionLinenumberEnd: 1452
    functionName: read_tablespace_map
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - FreeFile
    - strtoul
    - ferror
    - ereport
    - palloc0
    - pstrdup
    - fgetc
    - lappend
    - AllocateFile
    - errcode_for_file_access
    linkageType: ''
    returnType: bool
    signature: bool read_tablespace_map(List **tablespaces)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1468,1
    - Dst: XLogShutdownWalRcv
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1479,1
    - Dst: ShutDownSlotSync
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1494,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1504,1
    - Dst: WalRcvStreaming
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1504,1
    - Dst: XLogPrefetcherBeginRead
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1530,1
    - Dst: ReadRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1531,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1551,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1560,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1576,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1576,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1580,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1581,1
    - Dst: getRecoveryStopReason
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1597,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1610
      start: 1465
    functionDepth: 2
    functionLinenumber: 1465
    functionLinenumberEnd: 1610
    functionName: FinishWalRecovery
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - XLogSegmentOffset
    - Assert
    - WalRcvStreaming
    - ShutDownSlotSync
    - memcpy
    - close
    - XLogShutdownWalRcv
    - ReadRecord
    - getRecoveryStopReason
    - XLogPrefetcherBeginRead
    - palloc
    linkageType: ''
    returnType: EndOfWalRecoveryInfo
    signature: 'EndOfWalRecoveryInfo *

      FinishWalRecovery(void)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XLogPrefetcherComputeStats
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1621,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1626,1
    - Dst: XLogReaderFree
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1629,1
    - Dst: XLogPrefetcherFree
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1630,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1638,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1639,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1642,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1643,1
    - Dst: DisownLatch
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1651,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1652
      start: 1615
    functionDepth: 2
    functionLinenumber: 1615
    functionLinenumberEnd: 1652
    functionName: ShutdownWalRecovery
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - DisownLatch
    - close
    - snprintf
    - XLogPrefetcherFree
    - XLogReaderFree
    - XLogPrefetcherComputeStats
    - unlink
    linkageType: ''
    returnType: void
    signature: void ShutdownWalRecovery(void)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1671,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1689,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1692,1
    - Dst: SendPostmasterSignal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1699,1
    - Dst: CheckRecoveryConsistency
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1704,1
    - Dst: XLogPrefetcherBeginRead
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1714,1
    - Dst: ReadRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1715,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1724,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1725,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1726,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1731,1
    - Dst: ReadRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1733,1
    - Dst: pg_rusage_init
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1741,1
    - Dst: RmgrStartup
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1745,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1747,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1748,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1749,1
    - Dst: begin_startup_progress_phase
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1753,1
    - Dst: ereport_startup_progress
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1761,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1762,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1769,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1770,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1771,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1772,1
    - Dst: xlog_outrec
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1773,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1774,1
    - Dst: xlog_outdesc
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1775,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1776,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1777,1
    - Dst: ProcessStartupProcInterrupts
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1782,1
    - Dst: recoveryPausesHere
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1799,1
    - Dst: recoveryStopsBefore
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1804,1
    - Dst: recoveryApplyDelay
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1814,1
    - Dst: recoveryPausesHere
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1824,1
    - Dst: ApplyWalRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1830,1
    - Dst: recoveryStopsAfter
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1833,1
    - Dst: ReadRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1840,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1850,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1851,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1867,1
    - Dst: SetRecoveryPause
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1870,1
    - Dst: recoveryPausesHere
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1871,1
    - Dst: RmgrCleanup
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1880,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1882,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1883,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1884,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1885,1
    - Dst: GetLatestXTime
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1886,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1888,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1889,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1890,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1897,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1898,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1908,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1909,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1910,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 93
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1911
      start: 1659
    functionDepth: 3
    functionLinenumber: 1659
    functionLinenumberEnd: 1911
    functionName: PerformWalRecovery
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - LSN_FORMAT_ARGS
    - ApplyWalRecord
    - SetRecoveryPause
    - SpinLockRelease
    - ProcessStartupProcInterrupts
    - pg_rusage_show
    - CheckRecoveryConsistency
    - XLogPrefetcherBeginRead
    - pfree
    - recoveryApplyDelay
    - RmgrStartup
    - SendPostmasterSignal
    - recoveryStopsBefore
    - proc_exit
    - errmsg
    - appendStringInfoString
    - recoveryStopsAfter
    - GetLatestXTime
    - xlog_outrec
    - elog
    - xlog_outdesc
    - GetCurrentTimestamp
    - SpinLockAcquire
    - RmgrCleanup
    - Assert
    - pg_rusage_init
    - appendStringInfo
    - begin_startup_progress_phase
    - ereport
    - recoveryPausesHere
    - ReadRecord
    - timestamptz_to_str
    - initStringInfo
    - ereport_startup_progress
    - errcode
    linkageType: ''
    returnType: void
    signature: void PerformWalRecovery(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: AdvanceNextFullTransactionIdPastXid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1931,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1951,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1951,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1959,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1959,1
    - Dst: checkTimeLineSwitch
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1967,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1980,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1983,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1989,1
    - Dst: RecordKnownAssignedTransactionIds
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1990,1
    - Dst: xlogrecovery_redo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:1997,1
    - Dst: GetRmgr
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2000,1
    - Dst: verifyBackupPageConsistency
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2008,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2017,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2021,1
    - Dst: AllowCascadeReplication
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2045,1
    - Dst: WalSndWakeup
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2046,1
    - Dst: WalRcvForceReply
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2056,1
    - Dst: CheckRecoveryConsistency
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2060,1
    - Dst: RemoveNonParentXlogFiles
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2069,1
    - Dst: XLogPrefetchReconfigure
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2072,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 51
    argCount: 3
    argNames:
    - xlogreader
    - record
    - replayTLI
    argTypes:
    - XLogReaderState*
    - XLogRecord*
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2074
      start: 1916
    functionDepth: 3
    functionLinenumber: 1916
    functionLinenumberEnd: 2074
    functionName: ApplyWalRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - RecordKnownAssignedTransactionIds
    - checkTimeLineSwitch
    - verifyBackupPageConsistency
    - WalSndWakeup
    - WalRcvForceReply
    - TransactionIdIsValid
    - RemoveNonParentXlogFiles
    - GetRmgr
    - SpinLockRelease
    - XLogPrefetchReconfigure
    - XLogRecGetData
    - AdvanceNextFullTransactionIdPastXid
    - xlogrecovery_redo
    - CheckRecoveryConsistency
    - memcpy
    - AllowCascadeReplication
    - SpinLockAcquire
    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:2083,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2086,1
    - Dst: XLogRecGetRmid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2086,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2093,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2093,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2095,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2096,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2097,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2103,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2104,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2105,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2106,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2115,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2115,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2127,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2132,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2133,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2133,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - record
    - replayTLI
    argTypes:
    - XLogReaderState*
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2135
      start: 2080
    functionDepth: 1
    functionLinenumber: 2080
    functionLinenumberEnd: 2135
    functionName: xlogrecovery_redo
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - LSN_FORMAT_ARGS
    - XLogRecGetRmid
    - Assert
    - errmsg
    - ereport
    - XLogRecGetData
    - XLogRecGetInfo
    - elog
    - timestamptz_to_str
    - memcpy
    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:2157,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2158,1
    - Dst: strspn
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2163,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2163,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2166,1
    - Dst: get_dirent_type
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2168,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2169,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2170,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2171,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2173,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2175,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2177
      start: 2151
    functionDepth: 3
    functionLinenumber: 2151
    functionLinenumberEnd: 2177
    functionName: CheckTablespaceDirectory
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - strspn
    - errmsg
    - ReadDir
    - AllocateDir
    - snprintf
    - ereport
    - get_dirent_type
    - errhint
    - errdetail
    - errcode
    - strlen
    linkageType: ''
    returnType: void
    signature: void CheckTablespaceDirectory(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2194,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2197,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2209,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2215,1
    - Dst: ReachedEndOfBackup
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2221,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2226,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2227,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2228,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2229,1
    - Dst: XLogCheckInvalidPages
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2245,1
    - Dst: CheckTablespaceDirectory
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2253,1
    - Dst: SendPostmasterSignal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2256,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2257,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2258,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2259,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2272,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2274,1
    - Dst: SendPostmasterSignal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2278,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2280
      start: 2184
    functionDepth: 4
    functionLinenumber: 2184
    functionLinenumberEnd: 2280
    functionName: CheckRecoveryConsistency
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 2
    functionsReached:
    - errmsg
    - LSN_FORMAT_ARGS
    - Assert
    - ReachedEndOfBackup
    - ereport
    - CheckTablespaceDirectory
    - SpinLockRelease
    - elog
    - XLogCheckInvalidPages
    - XLogRecPtrIsInvalid
    - SendPostmasterSignal
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void CheckRecoveryConsistency(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2291,1
    - Dst: xlog_outdesc
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2292,1
    - Dst: xlog_block_info
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2293,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2296,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2297,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2301
      start: 2285
    functionDepth: 3
    functionLinenumber: 2285
    functionLinenumberEnd: 2301
    functionName: rm_redo_error_callback
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - pfree
    - xlog_block_info
    - errcontext
    - xlog_outdesc
    - initStringInfo
    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:2310,1
    - Dst: XLogRecGetRmid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2310,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2311,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2314,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2315,1
    - Dst: RmgrData::rm_identify
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2317,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2319,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2321,1
    - Dst: RmgrData::rm_desc
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2323,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2324
      start: 2307
    functionDepth: 2
    functionLinenumber: 2307
    functionLinenumberEnd: 2324
    functionName: xlog_outdesc
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 2
    functionsReached:
    - XLogRecGetRmid
    - appendStringInfo
    - appendStringInfoChar
    - appendStringInfoString
    - GetRmgr
    - XLogRecGetInfo
    - RmgrData::rm_identify
    - RmgrData::rm_desc
    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:2331,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2332,1
    - Dst: XLogRecGetPrev
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2332,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2333,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2335,1
    - Dst: XLogRecGetDataLen
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2336,1
    - Dst: xlog_block_info
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2339
      start: 2328
    functionDepth: 2
    functionLinenumber: 2328
    functionLinenumberEnd: 2339
    functionName: xlog_outrec
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - LSN_FORMAT_ARGS
    - appendStringInfo
    - xlog_block_info
    - XLogRecGetDataLen
    - XLogRecGetXid
    - XLogRecGetPrev
    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:2352,1
    - Dst: XLogRecGetBlockTagExtended
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2358,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2363,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2370,1
    - Dst: XLogRecHasBlockImage
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2375,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2376,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - buf
    - record
    argTypes:
    - StringInfo
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2378
      start: 2346
    functionDepth: 2
    functionLinenumber: 2346
    functionLinenumberEnd: 2378
    functionName: xlog_block_info
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 2
    functionsReached:
    - appendStringInfo
    - appendStringInfoString
    - XLogRecMaxBlockId
    - XLogRecGetBlockTagExtended
    - XLogRecHasBlockImage
    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:2393,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2394,1
    - Dst: tliInHistory
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2401,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2402,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2403,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2415,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2418,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2419,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2421,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 7
    argCount: 4
    argNames:
    - lsn
    - newTLI
    - prevTLI
    - replayTLI
    argTypes:
    - XLogRecPtr
    - TimeLineID
    - TimeLineID
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2425
      start: 2387
    functionDepth: 2
    functionLinenumber: 2387
    functionLinenumberEnd: 2425
    functionName: checkTimeLineSwitch
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - errmsg
    - LSN_FORMAT_ARGS
    - tliInHistory
    - ereport
    - XLogRecPtrIsInvalid
    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:2439,1
    - Dst: XLogRecGetRmid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2441,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2445,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2451,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2457,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 2
    argNames:
    - record
    - recordXtime
    argTypes:
    - XLogReaderState*
    - TimestampTz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2461
      start: 2436
    functionDepth: 1
    functionLinenumber: 2436
    functionLinenumberEnd: 2461
    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:2474,1
    - Dst: XLogRecGetRmid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2474,1
    - Dst: XLogRecHasAnyBlockRefs
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2481,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2484,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2484,1
    - Dst: XLogRecMaxBlockId
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2486,1
    - Dst: XLogRecGetBlockTagExtended
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2491,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2501,1
    - Dst: XLogRecHasBlockImage
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2501,1
    - Dst: XLogRecBlockImageApply
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2503,1
    - Dst: XLogReadBufferExtended
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2517,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2520,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2523,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2524,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2530,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2533,1
    - Dst: PageGetLSN
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2540,1
    - Dst: RestoreBlockImage
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2549,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2550,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2551,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2552,1
    - Dst: RmgrData::rm_mask
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2560,1
    - Dst: RmgrData::rm_mask
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2561,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2565,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2567,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 31
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2573
      start: 2471
    functionDepth: 4
    functionLinenumber: 2471
    functionLinenumberEnd: 2573
    functionName: verifyBackupPageConsistency
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - XLogRecBlockImageApply
    - LockBuffer
    - XLogRecGetBlockTagExtended
    - PageGetLSN
    - memcmp
    - RestoreBlockImage
    - XLogRecHasAnyBlockRefs
    - XLogRecGetInfo
    - XLogRecMaxBlockId
    - memcpy
    - BufferIsValid
    - elog
    - BufferGetPage
    - XLogReadBufferExtended
    - UnlockReleaseBuffer
    - XLogRecHasBlockImage
    - XLogRecGetRmid
    - Assert
    - GetRmgr
    - errmsg_internal
    - ereport
    - RmgrData::rm_mask
    - errcode
    linkageType: ''
    returnType: void
    signature: void verifyBackupPageConsistency(XLogReaderState *record)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2602,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2603,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2623,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2624,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2625,1
    - Dst: XLogRecGetRmid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2630,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2633,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2638,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2642,1
    - Dst: ParseCommitRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2646,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2646,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2654,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2658,1
    - Dst: ParseAbortRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2662,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2662,1
    - Dst: getRecordTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2689,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2713,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2714,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2716,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2720,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2721,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2723,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 64
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2728
      start: 2583
    functionDepth: 2
    functionLinenumber: 2583
    functionLinenumberEnd: 2728
    functionName: recoveryStopsBefore
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - errmsg
    - LSN_FORMAT_ARGS
    - XLogRecGetRmid
    - ParseCommitRecord
    - getRecordTimestamp
    - ereport
    - XLogRecGetInfo
    - XLogRecGetData
    - timestamptz_to_str
    - XLogRecGetXid
    - ParseAbortRecord
    linkageType: ''
    returnType: bool
    signature: bool recoveryStopsBefore(XLogReaderState *record)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2751,1
    - Dst: XLogRecGetRmid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2752,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2763,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2765,1
    - Dst: getRecordTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2770,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2771,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2773,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2774,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2776,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2791,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2792,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2793,1
    - Dst: getRecordTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2810,1
    - Dst: SetLatestXTime
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2811,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2816,1
    - Dst: ParseCommitRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2819,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2819,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2826,1
    - Dst: ParseAbortRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2829,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2829,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2835,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2858,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2859,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2861,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2866,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2867,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2869,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2878,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2879,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 66
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2890
      start: 2736
    functionDepth: 2
    functionLinenumber: 2736
    functionLinenumberEnd: 2890
    functionName: recoveryStopsAfter
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - errmsg
    - XLogRecGetRmid
    - LSN_FORMAT_ARGS
    - ParseCommitRecord
    - getRecordTimestamp
    - ereport
    - XLogRecGetInfo
    - XLogRecGetData
    - SetLatestXTime
    - strlcpy
    - timestamptz_to_str
    - strcmp
    - XLogRecGetXid
    - ParseAbortRecord
    linkageType: ''
    returnType: bool
    signature: bool recoveryStopsAfter(XLogReaderState *record)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2902,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2907,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2910,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2912,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2915,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2917,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2921,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2923,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2925,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2926
      start: 2896
    functionDepth: 1
    functionLinenumber: 2896
    functionLinenumberEnd: 2926
    functionName: getRecoveryStopReason
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - LSN_FORMAT_ARGS
    - snprintf
    - timestamptz_to_str
    - pstrdup
    linkageType: ''
    returnType: char
    signature: 'char *

      getRecoveryStopReason(void)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2947,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2948,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2949,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2951,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2952,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2953,1
    - Dst: GetRecoveryPauseState
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2956,1
    - Dst: ProcessStartupProcInterrupts
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2958,1
    - Dst: CheckForStandbyTrigger
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2959,1
    - Dst: ConfirmRecoveryPaused
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2966,1
    - Dst: ConditionVariableTimedSleep
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2973,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:2976,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - endOfRecovery
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2977
      start: 2935
    functionDepth: 1
    functionLinenumber: 2935
    functionLinenumberEnd: 2977
    functionName: recoveryPausesHere
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - errmsg
    - CheckForStandbyTrigger
    - ConditionVariableCancelSleep
    - ConditionVariableTimedSleep
    - ereport
    - errhint
    - ProcessStartupProcInterrupts
    - ConfirmRecoveryPaused
    - GetRecoveryPauseState
    linkageType: ''
    returnType: void
    signature: void recoveryPausesHere(bool endOfRecovery)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetRmid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3020,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3023,1
    - Dst: getRecordTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3029,1
    - Dst: TimestampTzPlusMilliseconds
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3032,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3038,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3038,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3044,1
    - Dst: ProcessStartupProcInterrupts
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3047,1
    - Dst: CheckForStandbyTrigger
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3049,1
    - Dst: TimestampTzPlusMilliseconds
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3056,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3061,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3061,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3067,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3069,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 31
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3075
      start: 2992
    functionDepth: 2
    functionLinenumber: 2992
    functionLinenumberEnd: 3075
    functionName: recoveryApplyDelay
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - ResetLatch
    - XLogRecGetRmid
    - CheckForStandbyTrigger
    - getRecordTimestamp
    - TimestampDifferenceMilliseconds
    - XLogRecGetInfo
    - ProcessStartupProcInterrupts
    - elog
    - GetCurrentTimestamp
    - WaitLatch
    - TimestampTzPlusMilliseconds
    linkageType: ''
    returnType: bool
    signature: bool recoveryApplyDelay(XLogReaderState *record)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3085,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3087,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3090
      start: 3080
    functionDepth: 1
    functionLinenumber: 3080
    functionLinenumberEnd: 3090
    functionName: GetRecoveryPauseState
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 3
    functionsReached:
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: RecoveryPauseState
    signature: RecoveryPauseState GetRecoveryPauseState(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3103,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3110,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3113,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - recoveryPause
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3114
      start: 3100
    functionDepth: 1
    functionLinenumber: 3100
    functionLinenumberEnd: 3114
    functionName: SetRecoveryPause
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 3
    functionsReached:
    - ConditionVariableBroadcast
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void SetRecoveryPause(bool recoveryPause)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3124,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3128
      start: 3120
    functionDepth: 1
    functionLinenumber: 3120
    functionLinenumberEnd: 3128
    functionName: ConfirmRecoveryPaused
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void ConfirmRecoveryPaused(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: XLogPrefetcherGetReader
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3146,1
    - Dst: XLogPrefetcherReadRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3162,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3178,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3186,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3197,1
    - Dst: emode_for_corrupt_record
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3197,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3198,1
    - Dst: tliInHistory
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3204,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3210,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3211,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3213,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3215,1
    - Dst: emode_for_corrupt_record
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3215,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3216,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3219,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3249,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3250,1
    - Dst: EnableStandbyMode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3253,1
    - Dst: SwitchIntoArchiveRecovery
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3255,1
    - Dst: CheckRecoveryConsistency
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3259,1
    - Dst: CheckForStandbyTrigger
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3272,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 49
    argCount: 4
    argNames:
    - xlogprefetcher
    - emode
    - fetching_ckpt
    - replayTLI
    argTypes:
    - XLogPrefetcher*
    - int
    - bool
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3278
      start: 3141
    functionDepth: 5
    functionLinenumber: 3141
    functionLinenumberEnd: 3278
    functionName: ReadRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 8
    functionsReached:
    - XLogSegmentOffset
    - errmsg
    - XLByteToSeg
    - LSN_FORMAT_ARGS
    - CheckRecoveryConsistency
    - tliInHistory
    - CheckForStandbyTrigger
    - close
    - emode_for_corrupt_record
    - ereport
    - errmsg_internal
    - XLogFileName
    - EnableStandbyMode
    - XLogPrefetcherReadRecord
    - XLogPrefetcherGetReader
    - XLogRecPtrIsInvalid
    - SwitchIntoArchiveRecovery
    linkageType: ''
    returnType: XLogRecord
    signature: "XLogRecord *\nReadRecord(XLogPrefetcher *xlogprefetcher, int emode,\n\t\t
      \  bool fetching_ckpt, TimeLineID replayTLI)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3320,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3321,1
    - Dst: XLByteInSeg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3328,1
    - Dst: XLogCheckpointNeeded
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3336,1
    - Dst: GetRedoRecPtr
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3338,1
    - Dst: XLogCheckpointNeeded
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3339,1
    - Dst: RequestCheckpoint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3340,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3344,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3349,1
    - Dst: WaitForWALToBecomeAvailable
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3363,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3375,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3389,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3402,1
    - Dst: pgstat_prepare_io_time
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3412,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3414,1
    - Dst: pg_pread
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3415,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3421,1
    - Dst: pgstat_count_io_op_time
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3423,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3426,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3430,1
    - Dst: emode_for_corrupt_record
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3430,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3431,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3432,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3433,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3437,1
    - Dst: emode_for_corrupt_record
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3437,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3438,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3439,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3440,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3444,1
    - Dst: pgstat_count_io_op_time
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3446,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3449,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3450,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3451,1
    - Dst: XLogReaderValidatePageHeader
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3489,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3496,1
    - Dst: emode_for_corrupt_record
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3496,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3497,1
    - Dst: XLogReaderResetError
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3500,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3518,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 86
    argCount: 5
    argNames:
    - xlogreader
    - targetPagePtr
    - reqLen
    - targetRecPtr
    - readBuf
    argTypes:
    - XLogReaderState*
    - XLogRecPtr
    - int
    - XLogRecPtr
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3528
      start: 3308
    functionDepth: 3
    functionLinenumber: 3308
    functionLinenumberEnd: 3528
    functionName: XLogPageRead
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - emode_for_corrupt_record
    - pgstat_report_wait_end
    - RequestCheckpoint
    - pgstat_report_wait_start
    - errcode_for_file_access
    - XLByteToSeg
    - WaitForWALToBecomeAvailable
    - XLogReaderResetError
    - XLogSegmentOffset
    - errmsg
    - GetRedoRecPtr
    - XLogCheckpointNeeded
    - close
    - XLogFileName
    - pgstat_prepare_io_time
    - pg_pread
    - pgstat_count_io_op_time
    - Assert
    - XLByteInSeg
    - XLogReaderValidatePageHeader
    - errmsg_internal
    - ereport
    - errcode
    linkageType: ''
    returnType: int
    signature: "int XLogPageRead(XLogReaderState *xlogreader, XLogRecPtr targetPagePtr,
      int reqLen,\n\t\t\t XLogRecPtr targetRecPtr, char *readBuf)"
  - BBCount: 40
    BranchProfiles: []
    Callsites:
    - Dst: CheckForStandbyTrigger
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3640,1
    - Dst: XLogShutdownWalRcv
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3642,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3682,1
    - Dst: XLogShutdownWalRcv
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3689,1
    - Dst: rescanLatestTimeLine
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3697,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3712,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3713,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3719,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3721,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3722,1
    - Dst: KnownAssignedTransactionIdsIdleMaintenance
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3725,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3727,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3732,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3733,1
    - Dst: ProcessStartupProcInterrupts
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3736,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3743,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3758,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3777,1
    - Dst: WalRcvStreaming
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3777,1
    - Dst: close
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3782,1
    - Dst: XLogFileReadAnyTLI
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3793,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3813,1
    - Dst: XLogShutdownWalRcv
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3822,1
    - Dst: rescanLatestTimeLine
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3830,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3846,1
    - Dst: tliOfPointInHistory
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3864,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3867,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3868,1
    - Dst: SetInstallXLogFileSegmentActive
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3872,1
    - Dst: RequestXLogStreaming
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3873,1
    - Dst: WalRcvStreaming
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3882,1
    - Dst: GetWalRcvFlushRecPtr
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3906,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3912,1
    - Dst: SetCurrentChunkStartTime
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3913,1
    - Dst: readTimeLineHistory
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3941,1
    - Dst: XLogFileRead
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3942,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3944,1
    - Dst: CheckForStandbyTrigger
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3964,1
    - Dst: WalRcvForceReply
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3988,1
    - Dst: KnownAssignedTransactionIdsIdleMaintenance
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3993,1
    - Dst: XLogPrefetcherComputeStats
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:3996,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4002,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4006,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4011,1
    - Dst: recoveryPausesHere
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4020,1
    - Dst: ProcessStartupProcInterrupts
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4026,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 148
    argCount: 7
    argNames:
    - RecPtr
    - randAccess
    - fetching_ckpt
    - tliRecPtr
    - replayTLI
    - replayLSN
    - nonblocking
    argTypes:
    - XLogRecPtr
    - bool
    - bool
    - XLogRecPtr
    - TimeLineID
    - XLogRecPtr
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4030
      start: 3563
    functionDepth: 2
    functionLinenumber: 3563
    functionLinenumberEnd: 4030
    functionName: WaitForWALToBecomeAvailable
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - LSN_FORMAT_ARGS
    - tliOfPointInHistory
    - RequestXLogStreaming
    - ProcessStartupProcInterrupts
    - XLogFileRead
    - XLogPrefetcherComputeStats
    - ResetLatch
    - CheckForStandbyTrigger
    - WalRcvStreaming
    - SetInstallXLogFileSegmentActive
    - SetCurrentChunkStartTime
    - TimestampDifferenceExceeds
    - WalRcvForceReply
    - strcmp
    - rescanLatestTimeLine
    - close
    - elog
    - GetCurrentTimestamp
    - XLogFileReadAnyTLI
    - WaitLatch
    - Assert
    - GetWalRcvFlushRecPtr
    - readTimeLineHistory
    - TimestampDifferenceMilliseconds
    - recoveryPausesHere
    - XLogShutdownWalRcv
    - KnownAssignedTransactionIdsIdleMaintenance
    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: 4064
      start: 4051
    functionDepth: 0
    functionLinenumber: 4051
    functionLinenumberEnd: 4064
    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:4077,1
    - Dst: XRecOffIsValid
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4079,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4081,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4082,1
    - Dst: XLogPrefetcherBeginRead
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4086,1
    - Dst: ReadRecord
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4087,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4091,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4092,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4097,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4098,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4105,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4106,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4111,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4112,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - xlogprefetcher
    - RecPtr
    - replayTLI
    argTypes:
    - XLogPrefetcher*
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4116
      start: 4070
    functionDepth: 6
    functionLinenumber: 4070
    functionLinenumberEnd: 4116
    functionName: ReadCheckpointRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - errmsg
    - Assert
    - ereport
    - ReadRecord
    - XLogPrefetcherBeginRead
    - XRecOffIsValid
    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:4135,1
    - Dst: readTimeLineHistory
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4146,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4155,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4165,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4166,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4179,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4180,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4183,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4189,1
    - Dst: restoreTimeLineHistoryFiles
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4196,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4198,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4199,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 2
    argNames:
    - replayTLI
    - replayLSN
    argTypes:
    - TimeLineID
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4203
      start: 4125
    functionDepth: 3
    functionLinenumber: 4125
    functionLinenumberEnd: 4203
    functionName: rescanLatestTimeLine
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - errmsg
    - LSN_FORMAT_ARGS
    - restoreTimeLineHistoryFiles
    - list_free_deep
    - ereport
    - readTimeLineHistory
    - findNewestTimeLine
    - lfirst
    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:4155,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4162
      start: 4153
    functionDepth: 1
    functionLinenumber: 4153
    functionLinenumberEnd: 4162
    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:4221,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4227,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4229,1
    - Dst: RestoreArchivedFile
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4231,1
    - Dst: XLogFilePath
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4240,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4244,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4253,1
    - Dst: IsInstallXLogFileSegmentActive
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4253,1
    - Dst: KeepFileRestoredFromArchive
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4254,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4259,1
    - Dst: BasicOpenFile
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4262,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4269,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4271,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4278,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4283,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4284,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4285,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 4
    argNames:
    - segno
    - tli
    - source
    - notfoundOk
    argTypes:
    - XLogSegNo
    - TimeLineID
    - XLogSource
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4287
      start: 4212
    functionDepth: 2
    functionLinenumber: 4212
    functionLinenumberEnd: 4287
    functionName: XLogFileRead
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - XLogFilePath
    - IsInstallXLogFileSegmentActive
    - Assert
    - errmsg
    - snprintf
    - KeepFileRestoredFromArchive
    - BasicOpenFile
    - ereport
    - XLogFileName
    - set_ps_display
    - elog
    - GetCurrentTimestamp
    - RestoreArchivedFile
    - errcode_for_file_access
    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:4323,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4327,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4341,1
    - Dst: XLogFileRead
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4359,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4362,1
    - Dst: XLogFileRead
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4371,1
    - Dst: XLogFilePath
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4382,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4384,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4385,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4386,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 33
    argCount: 2
    argNames:
    - segno
    - source
    argTypes:
    - XLogSegNo
    - XLogSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4388
      start: 4294
    functionDepth: 3
    functionLinenumber: 4294
    functionLinenumberEnd: 4388
    functionName: XLogFileReadAnyTLI
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - XLogFilePath
    - errmsg
    - XLByteToSeg
    - readTimeLineHistory
    - ereport
    - elog
    - XLogFileRead
    - lfirst
    - errcode_for_file_access
    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:4327,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4341,1
    - Dst: XLogFileRead
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4359,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4362,1
    - Dst: XLogFileRead
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4371,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4379
      start: 4325
    functionDepth: 3
    functionLinenumber: 4325
    functionLinenumberEnd: 4379
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 28
    functionsReached:
    - elog
    - XLByteToSeg
    - lfirst
    - XLogFileRead
    linkageType: ''
    returnType: void
    signature: void foreach(cell, tles)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: WalRcvRunning
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4397,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4399,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4400,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4404
      start: 4394
    functionDepth: 1
    functionLinenumber: 4394
    functionLinenumberEnd: 4404
    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:4424,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4426,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4429
      start: 4413
    functionDepth: 1
    functionLinenumber: 4413
    functionLinenumberEnd: 4429
    functionName: PromoteIsTriggered
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 3
    functionsReached:
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: bool
    signature: bool PromoteIsTriggered(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4434,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4436,1
    - Dst: SetRecoveryPause
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4444,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4447
      start: 4431
    functionDepth: 2
    functionLinenumber: 4431
    functionLinenumberEnd: 4447
    functionName: SetPromoteIsTriggered
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - SetRecoveryPause
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void SetPromoteIsTriggered(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsPromoteSignaled
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4458,1
    - Dst: CheckPromoteSignal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4458,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4460,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4460,1
    - Dst: RemovePromoteSignalFiles
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4461,1
    - Dst: ResetPromoteSignaled
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4462,1
    - Dst: SetPromoteIsTriggered
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4463,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4468
      start: 4452
    functionDepth: 3
    functionLinenumber: 4452
    functionLinenumberEnd: 4468
    functionName: CheckForStandbyTrigger
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 4
    functionsReached:
    - errmsg
    - ResetPromoteSignaled
    - CheckPromoteSignal
    - ereport
    - SetPromoteIsTriggered
    - RemovePromoteSignalFiles
    - IsPromoteSignaled
    linkageType: ''
    returnType: bool
    signature: bool CheckForStandbyTrigger(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4476,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4477
      start: 4473
    functionDepth: 0
    functionLinenumber: 4473
    functionLinenumberEnd: 4477
    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:4487,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4491
      start: 4482
    functionDepth: 1
    functionLinenumber: 4482
    functionLinenumberEnd: 4491
    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:4500,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4501
      start: 4497
    functionDepth: 1
    functionLinenumber: 4497
    functionLinenumberEnd: 4501
    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: 4510
      start: 4506
    functionDepth: 0
    functionLinenumber: 4506
    functionLinenumberEnd: 4510
    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:4534,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4536,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4540
      start: 4521
    functionDepth: 1
    functionLinenumber: 4521
    functionLinenumberEnd: 4540
    functionName: HotStandbyActive
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: bool
    signature: bool HotStandbyActive(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4549,1
    - Dst: AmStartupProcess
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4549,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4551
      start: 4546
    functionDepth: 1
    functionLinenumber: 4546
    functionLinenumberEnd: 4551
    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:4564,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4567,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - replayTLI
    argTypes:
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4572
      start: 4558
    functionDepth: 1
    functionLinenumber: 4558
    functionLinenumberEnd: 4572
    functionName: GetXLogReplayRecPtr
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 2
    functionsReached:
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr GetXLogReplayRecPtr(TimeLineID *replayTLI)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4587,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4590,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - replayEndTLI
    argTypes:
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4595
      start: 4581
    functionDepth: 1
    functionLinenumber: 4581
    functionLinenumberEnd: 4595
    functionName: GetCurrentReplayRecPtr
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 2
    functionsReached:
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr GetCurrentReplayRecPtr(TimeLineID *replayEndTLI)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4607,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4609,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - xtime
    argTypes:
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4610
      start: 4604
    functionDepth: 1
    functionLinenumber: 4604
    functionLinenumberEnd: 4610
    functionName: SetLatestXTime
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void SetLatestXTime(TimestampTz xtime)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4620,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4622,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4625
      start: 4615
    functionDepth: 1
    functionLinenumber: 4615
    functionLinenumberEnd: 4625
    functionName: GetLatestXTime
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 3
    functionsReached:
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: TimestampTz
    signature: TimestampTz GetLatestXTime(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4636,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4638,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - xtime
    argTypes:
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4639
      start: 4633
    functionDepth: 1
    functionLinenumber: 4633
    functionLinenumberEnd: 4639
    functionName: SetCurrentChunkStartTime
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void SetCurrentChunkStartTime(TimestampTz xtime)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4650,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4652,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4655
      start: 4645
    functionDepth: 1
    functionLinenumber: 4645
    functionLinenumberEnd: 4655
    functionName: GetCurrentChunkReplayStartTime
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: TimestampTz
    signature: TimestampTz GetCurrentChunkReplayStartTime(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4668,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - rtime
    - fromStream
    argTypes:
    - TimestampTz*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4672
      start: 4661
    functionDepth: 1
    functionLinenumber: 4661
    functionLinenumberEnd: 4672
    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:4683,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4687,1
    - Dst: errcode
      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: SetRecoveryPause
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4695,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4697,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4698,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4699,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4700,1
    - Dst: GetRecoveryPauseState
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4702,1
    - Dst: ProcessStartupProcInterrupts
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4704,1
    - Dst: CheckForStandbyTrigger
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4706,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4709,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4710,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4711,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4717,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4721,1
    - Dst: ConfirmRecoveryPaused
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4730,1
    - Dst: ConditionVariableTimedSleep
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4737,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4740,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4743,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4744,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4745,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4747,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4751,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - param_name
    - currValue
    - minValue
    argTypes:
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4753
      start: 4678
    functionDepth: 4
    functionLinenumber: 4678
    functionLinenumberEnd: 4753
    functionName: RecoveryRequiresIntParameter
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 1
    functionsReached:
    - errmsg
    - CheckForStandbyTrigger
    - HotStandbyActiveInReplay
    - ConditionVariableCancelSleep
    - ConditionVariableTimedSleep
    - SetRecoveryPause
    - ereport
    - errhint
    - ProcessStartupProcInterrupts
    - ConfirmRecoveryPaused
    - GetRecoveryPauseState
    - errdetail
    - errcode
    linkageType: ''
    returnType: void
    signature: void RecoveryRequiresIntParameter(const char *param_name, int currValue,
      int minValue)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4762,1
    - Dst: ReplicationSlotValidateName
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4763,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4767
      start: 4759
    functionDepth: 1
    functionLinenumber: 4759
    functionLinenumberEnd: 4767
    functionName: check_primary_slot_name
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - ReplicationSlotValidateName
    - strcmp
    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:4790,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4791,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4792,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4793,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4794
      start: 4787
    functionDepth: 1
    functionLinenumber: 4787
    functionLinenumberEnd: 4794
    functionName: error_multiple_recovery_targets
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errdetail
    - errcode
    - ereport
    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:4802,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4802,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4804,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4808
      start: 4799
    functionDepth: 0
    functionLinenumber: 4799
    functionLinenumberEnd: 4808
    functionName: check_recovery_target
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - GUC_check_errdetail
    - strcmp
    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:4818,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4820,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4824
      start: 4813
    functionDepth: 2
    functionLinenumber: 4813
    functionLinenumberEnd: 4824
    functionName: assign_recovery_target
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - strcmp
    - error_multiple_recovery_targets
    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:4832,1
    - Dst: pg_lsn_in_internal
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4838,1
    - Dst: guc_malloc
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4842,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4849
      start: 4829
    functionDepth: 1
    functionLinenumber: 4829
    functionLinenumberEnd: 4849
    functionName: check_recovery_target_lsn
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - guc_malloc
    - strcmp
    - pg_lsn_in_internal
    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:4859,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4861,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4868
      start: 4854
    functionDepth: 2
    functionLinenumber: 4854
    functionLinenumberEnd: 4868
    functionName: assign_recovery_target_lsn
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - strcmp
    - error_multiple_recovery_targets
    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:4877,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4879,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4884
      start: 4873
    functionDepth: 0
    functionLinenumber: 4873
    functionLinenumberEnd: 4884
    functionName: check_recovery_target_name
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - GUC_check_errdetail
    - strlen
    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:4894,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4896,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4903
      start: 4889
    functionDepth: 2
    functionLinenumber: 4889
    functionLinenumberEnd: 4903
    functionName: assign_recovery_target_name
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - strcmp
    - error_multiple_recovery_targets
    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:4917,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4920,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4921,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: ParseDateTime
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4946,1
    - Dst: DecodeDateTime
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4949,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4956,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4958,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4964
      start: 4914
    functionDepth: 0
    functionLinenumber: 4914
    functionLinenumberEnd: 4964
    functionName: check_recovery_target_time
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - GUC_check_errdetail
    - tm2timestamp
    - ParseDateTime
    - DecodeDateTime
    - strcmp
    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:4974,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4976,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4980
      start: 4969
    functionDepth: 2
    functionLinenumber: 4969
    functionLinenumberEnd: 4980
    functionName: assign_recovery_target_time
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - strcmp
    - error_multiple_recovery_targets
    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:4991,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:4993,1
    - Dst: strtou64
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:5003,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:5007,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:5014,1
    - Dst: guc_malloc
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:5020,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5027
      start: 4985
    functionDepth: 1
    functionLinenumber: 4985
    functionLinenumberEnd: 5027
    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:5037,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5040
      start: 5032
    functionDepth: 0
    functionLinenumber: 5032
    functionLinenumberEnd: 5040
    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: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:5048,1
    - Dst: strtou64
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:5054,1
    - Dst: guc_malloc
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:5058,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5065
      start: 5045
    functionDepth: 1
    functionLinenumber: 5045
    functionLinenumberEnd: 5065
    functionName: check_recovery_target_xid
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - guc_malloc
    - strtou64
    - strcmp
    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:5075,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/xlogrecovery.c:5077,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5084
      start: 5070
    functionDepth: 2
    functionLinenumber: 5070
    functionLinenumberEnd: 5084
    functionName: assign_recovery_target_xid
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogrecovery.c
    functionUses: 0
    functionsReached:
    - strcmp
    - error_multiple_recovery_targets
    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:
    - relpathperm
    - elog
    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:
    - hash_create
    - hash_search
    - elog
    - report_invalid_page
    - message_level_is_interesting
    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:
    - hash_seq_search
    - hash_seq_init
    - RelFileLocatorEquals
    - hash_search
    - relpathperm
    - elog
    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:
    - hash_seq_search
    - hash_seq_init
    - hash_search
    - relpathperm
    - elog
    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:
    - hash_seq_search
    - hash_seq_init
    - hash_destroy
    - elog
    - 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: 42
    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: 12
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetBlockTagExtended
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:354,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:358,1
    - Dst: XLogRecGetBlock
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:367,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:369,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:371,1
    - Dst: XLogRecBlockImageApply
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:374,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:376,1
    - Dst: XLogRecHasBlockImage
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:376,1
    - Dst: XLogReadBufferExtended
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:377,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:380,1
    - Dst: RestoreBlockImage
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:381,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:382,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:383,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:384,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:390,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:392,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:395,1
    - Dst: FlushOneBuffer
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:404,1
    - Dst: XLogReadBufferExtended
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:410,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:411,1
    - Dst: LockBufferForCleanup
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:416,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:418,1
    - Dst: PageGetLSN
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:420,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:420,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: 428
      start: 339
    functionDepth: 4
    functionLinenumber: 339
    functionLinenumberEnd: 428
    functionName: XLogReadBufferForRedoExtended
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 10
    functionsReached:
    - PageSetLSN
    - MarkBufferDirty
    - XLogRecBlockImageApply
    - LockBuffer
    - XLogRecGetBlockTagExtended
    - PageGetLSN
    - RestoreBlockImage
    - FlushOneBuffer
    - PageIsNew
    - BufferIsValid
    - LockBufferForCleanup
    - elog
    - BufferGetPage
    - XLogReadBufferExtended
    - XLogRecHasBlockImage
    - Assert
    - errmsg_internal
    - ereport
    - XLogRecGetBlock
    - errcode
    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:468,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:471,1
    - Dst: ReadRecentBuffer
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:473,1
    - Dst: smgropen
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:480,1
    - Dst: smgrcreate
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:490,1
    - Dst: smgrnblocks
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:492,1
    - Dst: ReadBufferWithoutRelcache
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:497,1
    - Dst: log_invalid_page
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:505,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:512,1
    - Dst: ExtendBufferedRelTo
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:513,1
    - Dst: BMR_SMGR
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:513,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:526,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:533,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:535,1
    - Dst: log_invalid_page
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:536,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: 542
      start: 459
    functionDepth: 4
    functionLinenumber: 459
    functionLinenumberEnd: 542
    functionName: XLogReadBufferExtended
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 2
    functionsReached:
    - smgrcreate
    - Assert
    - BufferIsValid
    - ReadBufferWithoutRelcache
    - smgropen
    - ReadRecentBuffer
    - ReleaseBuffer
    - log_invalid_page
    - BMR_SMGR
    - BufferGetPage
    - ExtendBufferedRelTo
    - PageIsNew
    - 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
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:577,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:593,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:593,1
    - Dst: smgropen
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:609,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - rlocator
    argTypes:
    - RelFileLocator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 570
    functionDepth: 1
    functionLinenumber: 570
    functionLinenumberEnd: 612
    functionName: CreateFakeRelcacheEntry
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 7
    functionsReached:
    - sprintf
    - RelationGetRelationName
    - palloc0
    - smgropen
    linkageType: ''
    returnType: Relation
    signature: Relation CreateFakeRelcacheEntry(RelFileLocator rlocator)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:620,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fakerel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 617
    functionDepth: 0
    functionLinenumber: 617
    functionLinenumberEnd: 621
    functionName: FreeFakeRelcacheEntry
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 7
    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:632,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rlocator
    - forknum
    argTypes:
    - RelFileLocator
    - ForkNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 629
    functionDepth: 2
    functionLinenumber: 629
    functionLinenumberEnd: 633
    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:649,1
    - Dst: forget_invalid_pages_db
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:651,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - dbid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 640
    functionDepth: 2
    functionLinenumber: 640
    functionLinenumberEnd: 652
    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:663,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - rlocator
    - forkNum
    - nblocks
    argTypes:
    - RelFileLocator
    - ForkNumber
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 659
    functionDepth: 2
    functionLinenumber: 659
    functionLinenumberEnd: 664
    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:713,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:714,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:715,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:716,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:728,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:744,1
    - Dst: readTimeLineHistory
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:777,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:782,1
    - Dst: tliOfPointInHistory
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:789,1
    - Dst: tliSwitchPoint
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:790,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:793,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:796,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:798,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:800,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 21
    argCount: 4
    argNames:
    - state
    - wantPage
    - wantLength
    - currTLI
    argTypes:
    - XLogReaderState*
    - XLogRecPtr
    - uint32
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 706
    functionDepth: 2
    functionLinenumber: 706
    functionLinenumberEnd: 802
    functionName: XLogReadDetermineTimeline
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - Min
    - Assert
    - tliOfPointInHistory
    - list_free_deep
    - readTimeLineHistory
    - elog
    - tliSwitchPoint
    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:812,1
    - Dst: BasicOpenFile
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:813,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:818,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:819,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:820,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:823,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:824,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:825,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - state
    - nextSegNo
    - tli_p
    argTypes:
    - XLogReaderState*
    - XLogSegNo
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 827
      start: 805
    functionDepth: 2
    functionLinenumber: 805
    functionLinenumberEnd: 827
    functionName: wal_segment_open
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 0
    functionsReached:
    - XLogFilePath
    - errmsg
    - BasicOpenFile
    - ereport
    - 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:833,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 830
    functionDepth: 1
    functionLinenumber: 830
    functionLinenumberEnd: 836
    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:848,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: 850
      start: 844
    functionDepth: 1
    functionLinenumber: 844
    functionLinenumberEnd: 850
    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:861,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: 863
      start: 856
    functionDepth: 1
    functionLinenumber: 856
    functionLinenumberEnd: 863
    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: 8
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:896,1
    - Dst: GetFlushRecPtr
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:897,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:899,1
    - Dst: XLogReadDetermineTimeline
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:926,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:949,1
    - Dst: pg_usleep
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:950,1
    - Dst: WALRead
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:998,1
    - Dst: WALReadRaiseError
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:1000,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 6
    argNames:
    - state
    - targetPagePtr
    - reqLen
    - targetRecPtr
    - cur_page
    - wait_for_wal
    argTypes:
    - XLogReaderState*
    - XLogRecPtr
    - int
    - XLogRecPtr
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 868
    functionDepth: 3
    functionLinenumber: 868
    functionLinenumberEnd: 1004
    functionName: read_local_xlog_page_guts
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 2
    functionsReached:
    - WALReadRaiseError
    - CHECK_FOR_INTERRUPTS
    - WALRead
    - pg_usleep
    - GetXLogReplayRecPtr
    - GetFlushRecPtr
    - XLogReadDetermineTimeline
    - RecoveryInProgress
    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:1016,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:1021,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:1022,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:1023,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:1028,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:1029,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/xlogutils.c:1030,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - errinfo
    argTypes:
    - WALReadError*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1034
      start: 1010
    functionDepth: 2
    functionLinenumber: 1010
    functionLinenumberEnd: 1034
    functionName: WALReadRaiseError
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogutils.c
    functionUses: 1
    functionsReached:
    - errmsg
    - ereport
    - XLogFileName
    - errcode
    - 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:243,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/transam/twophase.c:243,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:245,1
    - Dst: add_size
      Src: /src/postgres/src/backend/access/transam/twophase.c:246,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/access/transam/twophase.c:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 250
    functionName: TwoPhaseShmemSize
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - add_size
    - mul_size
    - MAXALIGN
    linkageType: ''
    returnType: Size
    signature: Size TwoPhaseShmemSize(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ShmemInitStruct
      Src: /src/postgres/src/backend/access/transam/twophase.c:257,1
    - Dst: TwoPhaseShmemSize
      Src: /src/postgres/src/backend/access/transam/twophase.c:258,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:265,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:274,1
    - Dst: GetNumberFromPGProc
      Src: /src/postgres/src/backend/access/transam/twophase.c:283,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:287,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 252
    functionDepth: 2
    functionLinenumber: 252
    functionLinenumberEnd: 288
    functionName: TwoPhaseShmemInit
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - Assert
    - TwoPhaseShmemSize
    - GetNumberFromPGProc
    - ShmemInitStruct
    - MAXALIGN
    linkageType: ''
    returnType: void
    signature: void TwoPhaseShmemInit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AtAbort_Twophase
      Src: /src/postgres/src/backend/access/transam/twophase.c:297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 298
    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:329,1
    - Dst: RemoveGXact
      Src: /src/postgres/src/backend/access/transam/twophase.c:331,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:334,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 303
    functionDepth: 1
    functionLinenumber: 303
    functionLinenumberEnd: 337
    functionName: AtAbort_Twophase
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 2
    functionsReached:
    - LWLockRelease
    - LWLockAcquire
    - RemoveGXact
    linkageType: ''
    returnType: void
    signature: void AtAbort_Twophase(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:346,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 351
    functionName: PostPrepare_Twophase
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 1
    functionsReached:
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void PostPrepare_Twophase(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/twophase.c:365,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:366,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:367,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:368,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:373,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:374,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:375,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/twophase.c:376,1
    - Dst: before_shmem_exit
      Src: /src/postgres/src/backend/access/transam/twophase.c:381,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:385,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/twophase.c:391,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:393,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:394,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:395,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:402,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:403,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:404,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/twophase.c:405,1
    - Dst: MarkAsPreparingGuts
      Src: /src/postgres/src/backend/access/transam/twophase.c:410,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:415,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:418,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 5
    argNames:
    - xid
    - gid
    - prepared_at
    - owner
    - databaseid
    argTypes:
    - TransactionId
    - char*
    - TimestampTz
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 421
    functionName: MarkAsPreparing
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 1
    functionsReached:
    - errmsg
    - Assert
    - MarkAsPreparingGuts
    - before_shmem_exit
    - ereport
    - errhint
    - strcmp
    - LWLockRelease
    - LWLockAcquire
    - errcode
    - strlen
    linkageType: ''
    returnType: GlobalTransaction
    signature: "GlobalTransaction MarkAsPreparing(TransactionId xid, const char *gid,\n\t\t\t\tTimestampTz
      prepared_at, Oid owner, Oid databaseid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:439,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/access/transam/twophase.c:439,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:441,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/access/transam/twophase.c:442,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/twophase.c:445,1
    - Dst: dlist_node_init
      Src: /src/postgres/src/backend/access/transam/twophase.c:446,1
    - Dst: LocalTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/twophase.c:448,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:456,1
    - Dst: AmStartupProcess
      Src: /src/postgres/src/backend/access/transam/twophase.c:456,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:462,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/transam/twophase.c:474,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/access/transam/twophase.c:476,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/access/transam/twophase.c:487,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 41
    argCount: 6
    argNames:
    - gxact
    - xid
    - gid
    - prepared_at
    - owner
    - databaseid
    argTypes:
    - GlobalTransaction
    - TransactionId
    - char*
    - TimestampTz
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 432
    functionDepth: 2
    functionLinenumber: 432
    functionLinenumberEnd: 494
    functionName: MarkAsPreparingGuts
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 1
    functionsReached:
    - Assert
    - LocalTransactionIdIsValid
    - dlist_node_init
    - AmStartupProcess
    - MemSet
    - LWLockHeldByMeInMode
    - pg_atomic_init_u64
    - GetPGProcByNumber
    - dlist_init
    - strcpy
    linkageType: ''
    returnType: void
    signature: "void MarkAsPreparingGuts(GlobalTransaction gxact, TransactionId xid,
      const char *gid,\n\t\t\t\t\tTimestampTz prepared_at, Oid owner, Oid databaseid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/access/transam/twophase.c:507,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/twophase.c:517,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - gxact
    - nsubxacts
    - children
    argTypes:
    - GlobalTransaction
    - int
    - TransactionId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 503
    functionDepth: 1
    functionLinenumber: 503
    functionLinenumberEnd: 521
    functionName: GXactLoadSubxactData
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - memcpy
    - GetPGProcByNumber
    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:534,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:535,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:538,1
    - Dst: ProcArrayAdd
      Src: /src/postgres/src/backend/access/transam/twophase.c:544,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/access/transam/twophase.c:544,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - gxact
    - lock_held
    argTypes:
    - GlobalTransaction
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 529
    functionDepth: 1
    functionLinenumber: 529
    functionLinenumberEnd: 545
    functionName: MarkAsPrepared
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - ProcArrayAdd
    - Assert
    - LWLockRelease
    - GetPGProcByNumber
    - LWLockAcquire
    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:559,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:563,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/access/transam/twophase.c:568,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/twophase.c:573,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:578,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:579,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:580,1
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/access/transam/twophase.c:583,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:584,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:585,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:586,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/twophase.c:587,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:596,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:597,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:598,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/twophase.c:599,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:605,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:610,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:612,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:613,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:614,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 2
    argNames:
    - gid
    - user
    argTypes:
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 551
    functionDepth: 1
    functionLinenumber: 551
    functionLinenumberEnd: 619
    functionName: LockGXact
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - errmsg
    - LWLockRelease
    - before_shmem_exit
    - ereport
    - errhint
    - superuser_arg
    - strcmp
    - GetPGProcByNumber
    - LWLockAcquire
    - errcode
    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:632,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/access/transam/twophase.c:632,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/twophase.c:650,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - gxact
    argTypes:
    - GlobalTransaction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 627
    functionDepth: 1
    functionLinenumber: 627
    functionLinenumberEnd: 651
    functionName: RemoveGXact
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 1
    functionsReached:
    - Assert
    - LWLockHeldByMeInMode
    - elog
    linkageType: ''
    returnType: void
    signature: void RemoveGXact(GlobalTransaction gxact)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:672,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:676,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/twophase.c:683,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/twophase.c:686,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:689,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - gxacts
    argTypes:
    - GlobalTransaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 665
    functionDepth: 1
    functionLinenumber: 665
    functionLinenumberEnd: 692
    functionName: GetPreparedTransactionList
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - memcpy
    - palloc
    - LWLockRelease
    - LWLockAcquire
    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:716,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/access/transam/twophase.c:722,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/twophase.c:727,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/access/transam/twophase.c:731,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/access/transam/twophase.c:732,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/access/transam/twophase.c:734,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/access/transam/twophase.c:736,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/access/transam/twophase.c:738,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/access/transam/twophase.c:740,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/backend/access/transam/twophase.c:743,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/twophase.c:749,1
    - Dst: GetPreparedTransactionList
      Src: /src/postgres/src/backend/access/transam/twophase.c:752,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/transam/twophase.c:755,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/access/transam/twophase.c:758,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/access/transam/twophase.c:764,1
    - Dst: TransactionIdGetDatum
      Src: /src/postgres/src/backend/access/transam/twophase.c:777,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/access/transam/twophase.c:778,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/access/transam/twophase.c:779,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/transam/twophase.c:780,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/transam/twophase.c:781,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/transam/twophase.c:783,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/access/transam/twophase.c:784,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/access/transam/twophase.c:785,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/access/transam/twophase.c:788,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 710
    functionDepth: 5
    functionLinenumber: 710
    functionLinenumberEnd: 789
    functionName: pg_prepared_xact
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - SRF_PERCALL_SETUP
    - heap_form_tuple
    - HeapTupleGetDatum
    - MemoryContextSwitchTo
    - GetPreparedTransactionList
    - CStringGetTextDatum
    - BlessTupleDesc
    - TupleDescInitEntry
    - TransactionIdGetDatum
    - TimestampTzGetDatum
    - SRF_FIRSTCALL_INIT
    - SRF_RETURN_NEXT
    - SRF_IS_FIRSTCALL
    - palloc
    - GetPGProcByNumber
    - CreateTemplateTupleDesc
    - ObjectIdGetDatum
    - SRF_RETURN_DONE
    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:808,1
    - Dst: LWLockHeldByMe
      Src: /src/postgres/src/backend/access/transam/twophase.c:808,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:818,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:832,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/twophase.c:835,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - xid
    - lock_held
    argTypes:
    - TransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 799
    functionDepth: 1
    functionLinenumber: 799
    functionLinenumberEnd: 841
    functionName: TwoPhaseGetGXact
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - Assert
    - LWLockHeldByMe
    - elog
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: GlobalTransaction
    signature: GlobalTransaction TwoPhaseGetGXact(TransactionId xid, bool lock_held)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:858,1
    - Dst: VirtualTransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/twophase.c:858,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:859,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/access/transam/twophase.c:869,1
    - Dst: GET_VXID_FROM_PGPROC
      Src: /src/postgres/src/backend/access/transam/twophase.c:870,1
    - Dst: VirtualTransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/twophase.c:871,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:877,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:888,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - vxid
    - have_more
    argTypes:
    - VirtualTransactionId
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 851
    functionDepth: 1
    functionLinenumber: 851
    functionLinenumberEnd: 891
    functionName: TwoPhaseGetXidByVirtualXID
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - Assert
    - GET_VXID_FROM_PGPROC
    - VirtualTransactionIdIsValid
    - LWLockRelease
    - GetPGProcByNumber
    - LWLockAcquire
    - VirtualTransactionIdEquals
    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:905,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - xid
    - lock_held
    argTypes:
    - TransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 908
      start: 902
    functionDepth: 2
    functionLinenumber: 902
    functionLinenumberEnd: 908
    functionName: TwoPhaseGetDummyProcNumber
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 3
    functionsReached:
    - TwoPhaseGetGXact
    linkageType: ''
    returnType: ProcNumber
    signature: ProcNumber TwoPhaseGetDummyProcNumber(TransactionId xid, bool lock_held)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TwoPhaseGetGXact
      Src: /src/postgres/src/backend/access/transam/twophase.c:920,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/access/transam/twophase.c:922,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - xid
    - lock_held
    argTypes:
    - TransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 917
    functionDepth: 2
    functionLinenumber: 917
    functionLinenumberEnd: 923
    functionName: TwoPhaseGetDummyProc
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - GetPGProcByNumber
    - TwoPhaseGetGXact
    linkageType: ''
    returnType: PGPROC
    signature: 'PGPROC *

      TwoPhaseGetDummyProc(TransactionId xid, bool lock_held)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:940,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/twophase.c:940,1
    - Dst: FullTransactionIdFromAllowableAt
      Src: /src/postgres/src/backend/access/transam/twophase.c:941,1
    - Dst: ReadNextFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:941,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 942
      start: 937
    functionDepth: 2
    functionLinenumber: 937
    functionLinenumberEnd: 942
    functionName: AdjustToFullTransactionId
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsValid
    - Assert
    - ReadNextFullTransactionId
    - FullTransactionIdFromAllowableAt
    linkageType: ''
    returnType: FullTransactionId
    signature: FullTransactionId AdjustToFullTransactionId(TransactionId xid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AdjustToFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:947,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/twophase.c:949,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:950,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:951,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - path
    - xid
    argTypes:
    - char*
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 944
    functionDepth: 3
    functionLinenumber: 944
    functionLinenumberEnd: 952
    functionName: TwoPhaseFilePath
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - EpochFromFullTransactionId
    - snprintf
    - XidFromFullTransactionId
    - AdjustToFullTransactionId
    linkageType: ''
    returnType: int
    signature: int TwoPhaseFilePath(char *path, TransactionId xid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1023,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/transam/twophase.c:1027,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/transam/twophase.c:1033,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/twophase.c:1034,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/twophase.c:1037,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - data
    - len
    argTypes:
    - void*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 1020
    functionDepth: 1
    functionLinenumber: 1020
    functionLinenumberEnd: 1041
    functionName: save_state_data
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - palloc0
    - Max
    - memcpy
    - 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:1051,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/transam/twophase.c:1062,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/transam/twophase.c:1066,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/twophase.c:1067,1
    - Dst: xactGetCommittedChildren
      Src: /src/postgres/src/backend/access/transam/twophase.c:1081,1
    - Dst: smgrGetPendingDeletes
      Src: /src/postgres/src/backend/access/transam/twophase.c:1082,1
    - Dst: smgrGetPendingDeletes
      Src: /src/postgres/src/backend/access/transam/twophase.c:1083,1
    - Dst: pgstat_get_transactional_drops
      Src: /src/postgres/src/backend/access/transam/twophase.c:1085,1
    - Dst: pgstat_get_transactional_drops
      Src: /src/postgres/src/backend/access/transam/twophase.c:1087,1
    - Dst: xactGetCommittedInvalidationMessages
      Src: /src/postgres/src/backend/access/transam/twophase.c:1088,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/twophase.c:1090,1
    - Dst: save_state_data
      Src: /src/postgres/src/backend/access/transam/twophase.c:1095,1
    - Dst: save_state_data
      Src: /src/postgres/src/backend/access/transam/twophase.c:1096,1
    - Dst: save_state_data
      Src: /src/postgres/src/backend/access/transam/twophase.c:1104,1
    - Dst: GXactLoadSubxactData
      Src: /src/postgres/src/backend/access/transam/twophase.c:1106,1
    - Dst: save_state_data
      Src: /src/postgres/src/backend/access/transam/twophase.c:1110,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/twophase.c:1111,1
    - Dst: save_state_data
      Src: /src/postgres/src/backend/access/transam/twophase.c:1115,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/twophase.c:1116,1
    - Dst: save_state_data
      Src: /src/postgres/src/backend/access/transam/twophase.c:1120,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/twophase.c:1122,1
    - Dst: save_state_data
      Src: /src/postgres/src/backend/access/transam/twophase.c:1126,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/twophase.c:1128,1
    - Dst: save_state_data
      Src: /src/postgres/src/backend/access/transam/twophase.c:1132,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/twophase.c:1134,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 50
    argCount: 1
    argNames:
    - gxact
    argTypes:
    - GlobalTransaction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1136
      start: 1048
    functionDepth: 2
    functionLinenumber: 1048
    functionLinenumberEnd: 1136
    functionName: StartPrepare
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 1
    functionsReached:
    - pfree
    - save_state_data
    - palloc0
    - pgstat_get_transactional_drops
    - Max
    - smgrGetPendingDeletes
    - xactGetCommittedChildren
    - palloc
    - GetPGProcByNumber
    - xactGetCommittedInvalidationMessages
    - GXactLoadSubxactData
    - strlen
    linkageType: ''
    returnType: void
    signature: void StartPrepare(GlobalTransaction gxact)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RegisterTwoPhaseRecord
      Src: /src/postgres/src/backend/access/transam/twophase.c:1149,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:1154,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1172,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:1173,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1174,1
    - Dst: XLogEnsureRecordSpace
      Src: /src/postgres/src/backend/access/transam/twophase.c:1189,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/twophase.c:1191,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:1193,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/twophase.c:1196,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/twophase.c:1198,1
    - Dst: XLogSetRecordFlags
      Src: /src/postgres/src/backend/access/transam/twophase.c:1200,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/twophase.c:1202,1
    - Dst: replorigin_session_advance
      Src: /src/postgres/src/backend/access/transam/twophase.c:1207,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/twophase.c:1211,1
    - Dst: MarkAsPrepared
      Src: /src/postgres/src/backend/access/transam/twophase.c:1230,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/twophase.c:1246,1
    - Dst: SyncRepWaitForLSN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1254,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 1
    argNames:
    - gxact
    argTypes:
    - GlobalTransaction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1258
      start: 1141
    functionDepth: 5
    functionLinenumber: 1141
    functionLinenumberEnd: 1258
    functionName: EndPrepare
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 1
    functionsReached:
    - errmsg
    - Assert
    - START_CRIT_SECTION
    - XLogBeginInsert
    - XLogInsert
    - replorigin_session_advance
    - ereport
    - XLogFlush
    - SyncRepWaitForLSN
    - RegisterTwoPhaseRecord
    - END_CRIT_SECTION
    - XLogRegisterData
    - XLogSetRecordFlags
    - MarkAsPrepared
    - errcode
    - XLogEnsureRecordSpace
    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:1272,1
    - Dst: save_state_data
      Src: /src/postgres/src/backend/access/transam/twophase.c:1274,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - rmid
    - info
    - data
    - len
    argTypes:
    - TwoPhaseRmgrId
    - uint16
    - void*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1275
      start: 1263
    functionDepth: 2
    functionLinenumber: 1263
    functionLinenumberEnd: 1275
    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:1299,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/access/transam/twophase.c:1301,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1307,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:1308,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1309,1
    - Dst: fstat
      Src: /src/postgres/src/backend/access/transam/twophase.c:1318,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1319,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:1320,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1321,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1323,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1324,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1327,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:1328,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/access/transam/twophase.c:1329,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1335,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1336,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:1337,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1338,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/twophase.c:1344,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/twophase.c:1346,1
    - Dst: read
      Src: /src/postgres/src/backend/access/transam/twophase.c:1347,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1351,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:1352,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1353,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1355,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1356,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/twophase.c:1360,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/twophase.c:1362,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1363,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:1364,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1365,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1369,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:1370,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1371,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1375,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:1376,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1377,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/backend/access/transam/twophase.c:1380,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/access/transam/twophase.c:1381,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/backend/access/transam/twophase.c:1382,1
    - Dst: EQ_CRC32C
      Src: /src/postgres/src/backend/access/transam/twophase.c:1386,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1387,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:1388,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1389,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 2
    argNames:
    - xid
    - missing_ok
    argTypes:
    - TransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1393
      start: 1286
    functionDepth: 4
    functionLinenumber: 1286
    functionLinenumberEnd: 1393
    functionName: ReadTwoPhaseFile
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - errmsg
    - COMP_CRC32C
    - CloseTransientFile
    - FIN_CRC32C
    - INIT_CRC32C
    - fstat
    - ereport
    - TwoPhaseFilePath
    - OpenTransientFile
    - EQ_CRC32C
    - pgstat_report_wait_end
    - read
    - errmsg_plural
    - MAXALIGN
    - palloc
    - pgstat_report_wait_start
    - errcode
    - errcode_for_file_access
    linkageType: ''
    returnType: char
    signature: 'char *

      ReadTwoPhaseFile(TransactionId xid, bool missing_ok)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XLogReaderAllocate
      Src: /src/postgres/src/backend/access/transam/twophase.c:1410,1
    - Dst: XL_ROUTINE
      Src: /src/postgres/src/backend/access/transam/twophase.c:1411,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1416,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:1417,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1418,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/twophase.c:1419,1
    - Dst: XLogBeginRead
      Src: /src/postgres/src/backend/access/transam/twophase.c:1421,1
    - Dst: XLogReadRecord
      Src: /src/postgres/src/backend/access/transam/twophase.c:1422,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1427,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:1428,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1429,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/twophase.c:1430,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1432,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:1433,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1434,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/twophase.c:1435,1
    - Dst: XLogRecGetRmid
      Src: /src/postgres/src/backend/access/transam/twophase.c:1438,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/transam/twophase.c:1439,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1440,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:1441,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1442,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/twophase.c:1443,1
    - Dst: XLogRecGetDataLen
      Src: /src/postgres/src/backend/access/transam/twophase.c:1446,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/twophase.c:1448,1
    - Dst: XLogRecGetDataLen
      Src: /src/postgres/src/backend/access/transam/twophase.c:1448,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/twophase.c:1449,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/twophase.c:1449,1
    - Dst: XLogRecGetDataLen
      Src: /src/postgres/src/backend/access/transam/twophase.c:1449,1
    - Dst: XLogReaderFree
      Src: /src/postgres/src/backend/access/transam/twophase.c:1451,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - lsn
    - buf
    - len
    argTypes:
    - XLogRecPtr
    - char**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1452
      start: 1403
    functionDepth: 1
    functionLinenumber: 1403
    functionLinenumberEnd: 1452
    functionName: XlogReadTwoPhaseData
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - errmsg
    - LSN_FORMAT_ARGS
    - XLogReadRecord
    - XLogReaderAllocate
    - XLogRecGetRmid
    - memcpy
    - XLogBeginRead
    - ereport
    - XLogRecGetDataLen
    - XLogRecGetInfo
    - XLogRecGetData
    - XLogReaderFree
    - XL_ROUTINE
    - palloc
    - errdetail
    - errcode
    - errcode_for_file_access
    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:1465,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/twophase.c:1465,1
    - Dst: ReadTwoPhaseFile
      Src: /src/postgres/src/backend/access/transam/twophase.c:1471,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/twophase.c:1477,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/twophase.c:1478,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1481
      start: 1458
    functionDepth: 5
    functionLinenumber: 1458
    functionLinenumberEnd: 1481
    functionName: StandbyTransactionIdIsPrepared
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - TransactionIdEquals
    - Assert
    - pfree
    - 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:1510,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/access/transam/twophase.c:1510,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/access/transam/twophase.c:1511,1
    - Dst: ReadTwoPhaseFile
      Src: /src/postgres/src/backend/access/transam/twophase.c:1520,1
    - Dst: XlogReadTwoPhaseData
      Src: /src/postgres/src/backend/access/transam/twophase.c:1522,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:1529,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/twophase.c:1529,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1530,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1531,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1533,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1535,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1537,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1539,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1541,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1543,1
    - Dst: TransactionIdLatest
      Src: /src/postgres/src/backend/access/transam/twophase.c:1546,1
    - Dst: HOLD_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/twophase.c:1549,1
    - Dst: RecordTransactionCommitPrepared
      Src: /src/postgres/src/backend/access/transam/twophase.c:1560,1
    - Dst: RecordTransactionAbortPrepared
      Src: /src/postgres/src/backend/access/transam/twophase.c:1568,1
    - Dst: ProcArrayRemove
      Src: /src/postgres/src/backend/access/transam/twophase.c:1575,1
    - Dst: DropRelationFiles
      Src: /src/postgres/src/backend/access/transam/twophase.c:1606,1
    - Dst: pgstat_execute_transactional_drops
      Src: /src/postgres/src/backend/access/transam/twophase.c:1609,1
    - Dst: pgstat_execute_transactional_drops
      Src: /src/postgres/src/backend/access/transam/twophase.c:1611,1
    - Dst: RelationCacheInitFilePreInvalidate
      Src: /src/postgres/src/backend/access/transam/twophase.c:1623,1
    - Dst: SendSharedInvalidMessages
      Src: /src/postgres/src/backend/access/transam/twophase.c:1624,1
    - Dst: RelationCacheInitFilePostInvalidate
      Src: /src/postgres/src/backend/access/transam/twophase.c:1626,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:1635,1
    - Dst: ProcessRecords
      Src: /src/postgres/src/backend/access/transam/twophase.c:1639,1
    - Dst: ProcessRecords
      Src: /src/postgres/src/backend/access/transam/twophase.c:1641,1
    - Dst: PredicateLockTwoPhaseFinish
      Src: /src/postgres/src/backend/access/transam/twophase.c:1643,1
    - Dst: RemoveGXact
      Src: /src/postgres/src/backend/access/transam/twophase.c:1652,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:1658,1
    - Dst: AtEOXact_PgStat
      Src: /src/postgres/src/backend/access/transam/twophase.c:1661,1
    - Dst: RemoveTwoPhaseFile
      Src: /src/postgres/src/backend/access/transam/twophase.c:1667,1
    - Dst: RESUME_INTERRUPTS
      Src: /src/postgres/src/backend/access/transam/twophase.c:1671,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/twophase.c:1673,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 62
    argCount: 2
    argNames:
    - gid
    - isCommit
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1674
      start: 1486
    functionDepth: 5
    functionLinenumber: 1486
    functionLinenumberEnd: 1674
    functionName: FinishPreparedTransaction
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - RecordTransactionAbortPrepared
    - ReadTwoPhaseFile
    - ProcessRecords
    - TransactionIdLatest
    - PredicateLockTwoPhaseFinish
    - RemoveGXact
    - AtEOXact_PgStat
    - RemoveTwoPhaseFile
    - HOLD_INTERRUPTS
    - GetPGProcByNumber
    - GetUserId
    - LWLockRelease
    - ProcArrayRemove
    - pfree
    - LockGXact
    - SendSharedInvalidMessages
    - RelationCacheInitFilePreInvalidate
    - pgstat_execute_transactional_drops
    - XlogReadTwoPhaseData
    - RelationCacheInitFilePostInvalidate
    - RESUME_INTERRUPTS
    - TransactionIdEquals
    - Assert
    - RecordTransactionCommitPrepared
    - DropRelationFiles
    - LWLockAcquire
    - MAXALIGN
    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:1687,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1691,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:1696,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - bufptr
    - xid
    - callbacks
    argTypes:
    - char*
    - TransactionId
    - TwoPhaseCallback[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1698
      start: 1679
    functionDepth: 1
    functionLinenumber: 1679
    functionLinenumberEnd: 1698
    functionName: ProcessRecords
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 1
    functionsReached:
    - Assert
    - MAXALIGN
    linkageType: ''
    returnType: void
    signature: "void ProcessRecords(char *bufptr, TransactionId xid,\n\t\t\t   const
      TwoPhaseCallback callbacks[])"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TwoPhaseFilePath
      Src: /src/postgres/src/backend/access/transam/twophase.c:1711,1
    - Dst: unlink
      Src: /src/postgres/src/backend/access/transam/twophase.c:1712,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1714,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:1715,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1716,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - xid
    - giveWarning
    argTypes:
    - TransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1717
      start: 1706
    functionDepth: 4
    functionLinenumber: 1706
    functionLinenumberEnd: 1717
    functionName: RemoveTwoPhaseFile
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 1
    functionsReached:
    - errmsg
    - ereport
    - TwoPhaseFilePath
    - unlink
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void RemoveTwoPhaseFile(TransactionId xid, bool giveWarning)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/backend/access/transam/twophase.c:1733,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/access/transam/twophase.c:1734,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/backend/access/transam/twophase.c:1735,1
    - Dst: TwoPhaseFilePath
      Src: /src/postgres/src/backend/access/transam/twophase.c:1737,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/access/transam/twophase.c:1739,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1742,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:1743,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1744,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/twophase.c:1748,1
    - Dst: write
      Src: /src/postgres/src/backend/access/transam/twophase.c:1749,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1754,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:1755,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1756,1
    - Dst: write
      Src: /src/postgres/src/backend/access/transam/twophase.c:1758,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1763,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:1764,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1765,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/twophase.c:1767,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/twophase.c:1773,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/access/transam/twophase.c:1774,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1775,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:1776,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1777,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/twophase.c:1778,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/access/transam/twophase.c:1780,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1781,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:1782,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:1783,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 3
    argNames:
    - xid
    - content
    - len
    argTypes:
    - TransactionId
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1784
      start: 1725
    functionDepth: 4
    functionLinenumber: 1725
    functionLinenumberEnd: 1784
    functionName: RecreateTwoPhaseFile
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - COMP_CRC32C
    - errmsg
    - write
    - CloseTransientFile
    - FIN_CRC32C
    - INIT_CRC32C
    - ereport
    - TwoPhaseFilePath
    - OpenTransientFile
    - pgstat_report_wait_end
    - pgstat_report_wait_start
    - pg_fsync
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void RecreateTwoPhaseFile(TransactionId xid, void *content, int len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TRACE_POSTGRESQL_TWOPHASE_CHECKPOINT_START
      Src: /src/postgres/src/backend/access/transam/twophase.c:1814,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:1832,1
    - Dst: XlogReadTwoPhaseData
      Src: /src/postgres/src/backend/access/transam/twophase.c:1848,1
    - Dst: RecreateTwoPhaseFile
      Src: /src/postgres/src/backend/access/transam/twophase.c:1849,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/twophase.c:1853,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:1857,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/access/transam/twophase.c:1865,1
    - Dst: TRACE_POSTGRESQL_TWOPHASE_CHECKPOINT_DONE
      Src: /src/postgres/src/backend/access/transam/twophase.c:1867,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:1870,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/access/transam/twophase.c:1871,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - redo_horizon
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1877
      start: 1805
    functionDepth: 5
    functionLinenumber: 1805
    functionLinenumberEnd: 1877
    functionName: CheckPointTwoPhase
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 1
    functionsReached:
    - TRACE_POSTGRESQL_TWOPHASE_CHECKPOINT_DONE
    - TRACE_POSTGRESQL_TWOPHASE_CHECKPOINT_START
    - pfree
    - XlogReadTwoPhaseData
    - ereport
    - RecreateTwoPhaseFile
    - errmsg_plural
    - LWLockRelease
    - LWLockAcquire
    - fsync_fname
    linkageType: ''
    returnType: void
    signature: void CheckPointTwoPhase(XLogRecPtr redo_horizon)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:1893,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/access/transam/twophase.c:1894,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/access/transam/twophase.c:1895,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/transam/twophase.c:1897,1
    - Dst: strspn
      Src: /src/postgres/src/backend/access/transam/twophase.c:1898,1
    - Dst: FullTransactionIdFromU64
      Src: /src/postgres/src/backend/access/transam/twophase.c:1904,1
    - Dst: strtou64
      Src: /src/postgres/src/backend/access/transam/twophase.c:1904,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:1905,1
    - Dst: ProcessTwoPhaseBuffer
      Src: /src/postgres/src/backend/access/transam/twophase.c:1907,1
    - Dst: PrepareRedoAdd
      Src: /src/postgres/src/backend/access/transam/twophase.c:1912,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:1916,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/access/transam/twophase.c:1917,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1918
      start: 1887
    functionDepth: 1
    functionLinenumber: 1887
    functionLinenumberEnd: 1918
    functionName: restoreTwoPhaseData
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 1
    functionsReached:
    - strspn
    - strtou64
    - ReadDir
    - AllocateDir
    - XidFromFullTransactionId
    - FreeDir
    - FullTransactionIdFromU64
    - ProcessTwoPhaseBuffer
    - PrepareRedoAdd
    - LWLockRelease
    - LWLockAcquire
    - strlen
    linkageType: ''
    returnType: void
    signature: void restoreTwoPhaseData(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:1955,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:1962,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:1969,1
    - Dst: ProcessTwoPhaseBuffer
      Src: /src/postgres/src/backend/access/transam/twophase.c:1973,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/twophase.c:1984,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/twophase.c:1994,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/transam/twophase.c:1999,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/twophase.c:2005,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:2007,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 2
    argNames:
    - xids_p
    - nxids_p
    argTypes:
    - TransactionId**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2016
      start: 1951
    functionDepth: 2
    functionLinenumber: 1951
    functionLinenumberEnd: 2016
    functionName: PrescanPreparedTransactions
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 2
    functionsReached:
    - pfree
    - Assert
    - XidFromFullTransactionId
    - ProcessTwoPhaseBuffer
    - repalloc
    - palloc
    - LWLockRelease
    - LWLockAcquire
    - TransactionIdPrecedes
    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:2036,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2043,1
    - Dst: ProcessTwoPhaseBuffer
      Src: /src/postgres/src/backend/access/transam/twophase.c:2047,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/twophase.c:2051,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:2053,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2054
      start: 2031
    functionDepth: 1
    functionLinenumber: 2031
    functionLinenumberEnd: 2054
    functionName: StandbyRecoverPreparedTransactions
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 2
    functionsReached:
    - pfree
    - Assert
    - ProcessTwoPhaseBuffer
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void StandbyRecoverPreparedTransactions(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:2077,1
    - Dst: ProcessTwoPhaseBuffer
      Src: /src/postgres/src/backend/access/transam/twophase.c:2099,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:2105,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:2106,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2109,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/twophase.c:2109,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:2110,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:2112,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:2114,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:2115,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:2116,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:2117,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:2118,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:2119,1
    - Dst: MarkAsPreparingGuts
      Src: /src/postgres/src/backend/access/transam/twophase.c:2125,1
    - Dst: GXactLoadSubxactData
      Src: /src/postgres/src/backend/access/transam/twophase.c:2132,1
    - Dst: MarkAsPrepared
      Src: /src/postgres/src/backend/access/transam/twophase.c:2133,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:2135,1
    - Dst: ProcessRecords
      Src: /src/postgres/src/backend/access/transam/twophase.c:2140,1
    - Dst: StandbyReleaseLockTree
      Src: /src/postgres/src/backend/access/transam/twophase.c:2148,1
    - Dst: PostPrepare_Twophase
      Src: /src/postgres/src/backend/access/transam/twophase.c:2154,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/twophase.c:2156,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/twophase.c:2158,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:2161,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2162
      start: 2072
    functionDepth: 3
    functionLinenumber: 2072
    functionLinenumberEnd: 2162
    functionName: RecoverPreparedTransactions
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 2
    functionsReached:
    - errmsg
    - TransactionIdEquals
    - Assert
    - pfree
    - ProcessRecords
    - MarkAsPreparingGuts
    - StandbyReleaseLockTree
    - ereport
    - ProcessTwoPhaseBuffer
    - PostPrepare_Twophase
    - MarkAsPrepared
    - LWLockRelease
    - LWLockAcquire
    - GXactLoadSubxactData
    - MAXALIGN
    linkageType: ''
    returnType: void
    signature: void RecoverPreparedTransactions(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/twophase.c:2182,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2188,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/access/transam/twophase.c:2188,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2191,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/access/transam/twophase.c:2194,1
    - Dst: TransactionIdDidAbort
      Src: /src/postgres/src/backend/access/transam/twophase.c:2194,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:2198,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:2199,1
    - Dst: RemoveTwoPhaseFile
      Src: /src/postgres/src/backend/access/transam/twophase.c:2201,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:2205,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:2206,1
    - Dst: PrepareRedoRemove
      Src: /src/postgres/src/backend/access/transam/twophase.c:2208,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/access/transam/twophase.c:2214,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:2218,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:2219,1
    - Dst: RemoveTwoPhaseFile
      Src: /src/postgres/src/backend/access/transam/twophase.c:2221,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:2225,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:2226,1
    - Dst: PrepareRedoRemove
      Src: /src/postgres/src/backend/access/transam/twophase.c:2228,1
    - Dst: ReadTwoPhaseFile
      Src: /src/postgres/src/backend/access/transam/twophase.c:2236,1
    - Dst: XlogReadTwoPhaseData
      Src: /src/postgres/src/backend/access/transam/twophase.c:2241,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/twophase.c:2246,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:2249,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:2250,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:2251,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:2254,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:2255,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:2256,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:2265,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:2266,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2271,1
    - Dst: TransactionIdFollows
      Src: /src/postgres/src/backend/access/transam/twophase.c:2271,1
    - Dst: AdvanceNextFullTransactionIdPastXid
      Src: /src/postgres/src/backend/access/transam/twophase.c:2275,1
    - Dst: SubTransSetParent
      Src: /src/postgres/src/backend/access/transam/twophase.c:2278,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 44
    argCount: 5
    argNames:
    - xid
    - prepare_start_lsn
    - fromdisk
    - setParent
    - setNextXid
    argTypes:
    - TransactionId
    - XLogRecPtr
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2282
      start: 2175
    functionDepth: 5
    functionLinenumber: 2175
    functionLinenumberEnd: 2282
    functionName: ProcessTwoPhaseBuffer
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 4
    functionsReached:
    - errmsg
    - TransactionIdEquals
    - Assert
    - TransactionIdFollows
    - SubTransSetParent
    - ReadTwoPhaseFile
    - XidFromFullTransactionId
    - XlogReadTwoPhaseData
    - TransactionIdDidCommit
    - RemoveTwoPhaseFile
    - ereport
    - AdvanceNextFullTransactionIdPastXid
    - LWLockHeldByMeInMode
    - TransactionIdFollowsOrEquals
    - PrepareRedoRemove
    - TransactionIdDidAbort
    - errcode
    - MAXALIGN
    linkageType: ''
    returnType: char
    signature: "char *\nProcessTwoPhaseBuffer(TransactionId xid,\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: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/twophase.c:2309,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/twophase.c:2319,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2322,1
    - Dst: XactLogCommitRecord
      Src: /src/postgres/src/backend/access/transam/twophase.c:2330,1
    - Dst: replorigin_session_advance
      Src: /src/postgres/src/backend/access/transam/twophase.c:2341,1
    - Dst: TransactionTreeSetCommitTsData
      Src: /src/postgres/src/backend/access/transam/twophase.c:2355,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/twophase.c:2366,1
    - Dst: TransactionIdCommitTree
      Src: /src/postgres/src/backend/access/transam/twophase.c:2369,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/twophase.c:2374,1
    - Dst: SyncRepWaitForLSN
      Src: /src/postgres/src/backend/access/transam/twophase.c:2382,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    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: 2383
      start: 2295
    functionDepth: 5
    functionLinenumber: 2295
    functionLinenumberEnd: 2383
    functionName: RecordTransactionCommitPrepared
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 1
    functionsReached:
    - Assert
    - START_CRIT_SECTION
    - replorigin_session_advance
    - XactLogCommitRecord
    - TransactionIdCommitTree
    - XLogFlush
    - SyncRepWaitForLSN
    - GetCurrentTimestamp
    - END_CRIT_SECTION
    - TransactionTreeSetCommitTsData
    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:2417,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/twophase.c:2418,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/twophase.c:2421,1
    - Dst: XactLogAbortRecord
      Src: /src/postgres/src/backend/access/transam/twophase.c:2428,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/access/transam/twophase.c:2428,1
    - Dst: replorigin_session_advance
      Src: /src/postgres/src/backend/access/transam/twophase.c:2437,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/access/transam/twophase.c:2441,1
    - Dst: TransactionIdAbortTree
      Src: /src/postgres/src/backend/access/transam/twophase.c:2447,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/transam/twophase.c:2449,1
    - Dst: SyncRepWaitForLSN
      Src: /src/postgres/src/backend/access/transam/twophase.c:2457,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: 2458
      start: 2393
    functionDepth: 5
    functionLinenumber: 2393
    functionLinenumberEnd: 2458
    functionName: RecordTransactionAbortPrepared
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 1
    functionsReached:
    - START_CRIT_SECTION
    - TransactionIdDidCommit
    - replorigin_session_advance
    - XLogFlush
    - SyncRepWaitForLSN
    - elog
    - TransactionIdAbortTree
    - GetCurrentTimestamp
    - END_CRIT_SECTION
    - XactLogAbortRecord
    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: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2477,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/access/transam/twophase.c:2477,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2478,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/twophase.c:2478,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/twophase.c:2480,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/twophase.c:2504,1
    - Dst: TwoPhaseFilePath
      Src: /src/postgres/src/backend/access/transam/twophase.c:2508,1
    - Dst: access
      Src: /src/postgres/src/backend/access/transam/twophase.c:2510,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:2512,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:2513,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/access/transam/twophase.c:2515,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/twophase.c:2516,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:2521,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/access/transam/twophase.c:2522,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:2523,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:2528,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:2529,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/twophase.c:2530,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/twophase.c:2531,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/twophase.c:2543,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/access/transam/twophase.c:2545,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2548,1
    - Dst: replorigin_advance
      Src: /src/postgres/src/backend/access/transam/twophase.c:2554,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/twophase.c:2558,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 4
    argNames:
    - buf
    - start_lsn
    - end_lsn
    - origin_id
    argTypes:
    - char*
    - XLogRecPtr
    - XLogRecPtr
    - RepOriginId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2559
      start: 2468
    functionDepth: 4
    functionLinenumber: 2468
    functionLinenumberEnd: 2559
    functionName: PrepareRedoAdd
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 2
    functionsReached:
    - errmsg
    - LSN_FORMAT_ARGS
    - Assert
    - errcode
    - ereport
    - strcpy
    - TwoPhaseFilePath
    - errhint
    - replorigin_advance
    - LWLockHeldByMeInMode
    - access
    - errcode_for_file_access
    - elog
    - XLogRecPtrIsInvalid
    - errdetail
    - RecoveryInProgress
    - MAXALIGN
    linkageType: ''
    returnType: void
    signature: "void PrepareRedoAdd(char *buf, XLogRecPtr start_lsn,\n\t\t\t   XLogRecPtr
      end_lsn, RepOriginId origin_id)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2577,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/access/transam/twophase.c:2577,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2578,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/twophase.c:2578,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2586,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/twophase.c:2601,1
    - Dst: RemoveTwoPhaseFile
      Src: /src/postgres/src/backend/access/transam/twophase.c:2603,1
    - Dst: RemoveGXact
      Src: /src/postgres/src/backend/access/transam/twophase.c:2604,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - xid
    - giveWarning
    argTypes:
    - TransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2605
      start: 2570
    functionDepth: 5
    functionLinenumber: 2570
    functionLinenumberEnd: 2605
    functionName: PrepareRedoRemove
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 2
    functionsReached:
    - Assert
    - RemoveGXact
    - RemoveTwoPhaseFile
    - elog
    - LWLockHeldByMeInMode
    - RecoveryInProgress
    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:2629,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/twophase.c:2635,1
    - Dst: ReadTwoPhaseFile
      Src: /src/postgres/src/backend/access/transam/twophase.c:2651,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/twophase.c:2654,1
    - Dst: XlogReadTwoPhaseData
      Src: /src/postgres/src/backend/access/transam/twophase.c:2655,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/twophase.c:2664,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/twophase.c:2668,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:2671,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: 2673
      start: 2622
    functionDepth: 5
    functionLinenumber: 2622
    functionLinenumberEnd: 2673
    functionName: LookupGXact
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - ReadTwoPhaseFile
    - XlogReadTwoPhaseData
    - strcmp
    - LWLockRelease
    - LWLockAcquire
    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:2684,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/transam/twophase.c:2684,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/twophase.c:2686,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/twophase.c:2687,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/twophase.c:2688,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/access/transam/twophase.c:2689,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/twophase.c:2691,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: 2692
      start: 2681
    functionDepth: 1
    functionLinenumber: 2681
    functionLinenumberEnd: 2692
    functionName: TwoPhaseTransactionGid
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - Assert
    - TransactionIdIsValid
    - snprintf
    - errmsg_internal
    - ereport
    - OidIsValid
    - errcode
    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:2708,1
    - Dst: TwoPhaseTransactionGid
      Src: /src/postgres/src/backend/access/transam/twophase.c:2722,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/access/transam/twophase.c:2724,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - subid
    - gid
    argTypes:
    - Oid
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2725
      start: 2699
    functionDepth: 2
    functionLinenumber: 2699
    functionLinenumberEnd: 2725
    functionName: IsTwoPhaseTransactionGidForSubid
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - strcmp
    - sscanf
    - TwoPhaseTransactionGid
    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:2736,1
    - Dst: IsTwoPhaseTransactionGidForSubid
      Src: /src/postgres/src/backend/access/transam/twophase.c:2743,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/twophase.c:2749,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - subid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2752
      start: 2731
    functionDepth: 3
    functionLinenumber: 2731
    functionLinenumberEnd: 2752
    functionName: LookupGXactBySubid
    functionSourceFile: /src/postgres/src/backend/access/transam/twophase.c
    functionUses: 0
    functionsReached:
    - LWLockRelease
    - LWLockAcquire
    - IsTwoPhaseTransactionGidForSubid
    linkageType: ''
    returnType: bool
    signature: bool LookupGXactBySubid(Oid subid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:76,1
    - Dst: va_start
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:78,1
    - Dst: vsnprintf
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:79,1
    - Dst: va_end
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - state
    - fmt
    argTypes:
    - XLogReaderState*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 83
    functionName: report_invalid_record
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 0
    functionsReached:
    - va_end
    - vsnprintf
    - va_start
    - _
    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:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - state
    - buffer
    - size
    argTypes:
    - XLogReaderState*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 99
    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:113,1
    - Dst: palloc_extended
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:128,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:132,1
    - Dst: WALOpenSegmentInit
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:137,1
    - Dst: palloc_extended
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:143,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:147,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:148,1
    - Dst: allocate_recordbuf
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:157,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: 159
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 159
    functionName: XLogReaderAllocate
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 6
    functionsReached:
    - pfree
    - palloc_extended
    - allocate_recordbuf
    - 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:165,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:168,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:170,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:172,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
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - state
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 175
    functionName: XLogReaderFree
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 6
    functionsReached:
    - XLogReaderState*::routine::segment_close
    - pfree
    linkageType: ''
    returnType: void
    signature: void XLogReaderFree(XLogReaderState *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:196,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:196,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:199,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:200,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - state
    - reclength
    argTypes:
    - XLogReaderState*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 202
    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:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - seg
    - segcxt
    - segsize
    - waldir
    argTypes:
    - WALOpenSegment*
    - WALSegmentContext*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 218
    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:234,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:234,1
    - Dst: ResetDecoder
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - state
    - RecPtr
    argTypes:
    - XLogReaderState*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 243
    functionName: XLogBeginRead
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 5
    functionsReached:
    - XLogRecPtrIsInvalid
    - Assert
    - 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:264,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:273,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:276,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:281,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:289,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 1
    argNames:
    - state
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 311
    functionName: XLogReleasePreviousRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - unlikely
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr XLogReleasePreviousRecord(XLogReaderState *state)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XLogReleasePreviousRecord
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:329,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:346,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:346,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - state
    - errormsg
    argTypes:
    - XLogReaderState*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 325
    functionDepth: 2
    functionLinenumber: 325
    functionLinenumberEnd: 371
    functionName: XLogNextRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 1
    functionsReached:
    - XLogRecPtrIsInvalid
    - Assert
    - XLogReleasePreviousRecord
    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:398,1
    - Dst: XLogReaderHasQueuedRecordOrError
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:404,1
    - Dst: XLogReadAhead
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:405,1
    - Dst: XLogNextRecord
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:408,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:417,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - state
    - errormsg
    argTypes:
    - XLogReaderState*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 389
    functionDepth: 3
    functionLinenumber: 389
    functionLinenumberEnd: 422
    functionName: XLogReadRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 5
    functionsReached:
    - Assert
    - XLogReaderHasQueuedRecordOrError
    - XLogReadAhead
    - XLogReleasePreviousRecord
    - XLogNextRecord
    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:441,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:445,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:449,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:520,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: 526
      start: 438
    functionDepth: 1
    functionLinenumber: 438
    functionLinenumberEnd: 526
    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: 36
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:581,1
    - Dst: XRecOffIsValid
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:581,1
    - Dst: ReadPageInternal
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:598,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:599,1
    - Dst: XLogPageHeaderSize
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:609,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:620,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:621,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:629,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:630,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:635,1
    - Dst: ValidXLogRecordHeader
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:659,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:669,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:671,1
    - Dst: XLogReadRecordAlloc
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:684,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:712,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:713,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:716,1
    - Dst: ReadPageInternal
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:727,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:728,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:736,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:758,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:760,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:771,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:775,1
    - Dst: XLogPageHeaderSize
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:780,1
    - Dst: ReadPageInternal
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:783,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:786,1
    - Dst: ReadPageInternal
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:794,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:797,1
    - Dst: ValidXLogRecordHeader
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:805,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:825,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:825,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:826,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:827,1
    - Dst: allocate_recordbuf
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:828,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:829,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:833,1
    - Dst: ValidXLogRecord
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:836,1
    - Dst: XLogPageHeaderSize
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:839,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:842,1
    - Dst: ReadPageInternal
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:847,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:848,1
    - Dst: ValidXLogRecord
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:855,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:858,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:871,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:880,1
    - Dst: XLogReadRecordAlloc
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:881,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:885,1
    - Dst: DecodeXLogRecord
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:888,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:900,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:900,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:908,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:941,1
    - Dst: XLogReaderInvalReadState
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:947,1
    CyclomaticComplexity: 55
    EdgeCount: 55
    ICount: 180
    argCount: 2
    argNames:
    - state
    - nonblocking
    argTypes:
    - XLogReaderState*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 528
    functionDepth: 2
    functionLinenumber: 528
    functionLinenumberEnd: 956
    functionName: XLogDecodeNextRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - Min
    - Assert
    - report_invalid_record
    - XLogSegmentOffset
    - lengthof
    - ReadPageInternal
    - pfree
    - XLogReaderInvalReadState
    - ValidXLogRecordHeader
    - XLogPageHeaderSize
    - DecodeXLogRecord
    - allocate_recordbuf
    - memcpy
    - ValidXLogRecord
    - XRecOffIsValid
    - XLogReadRecordAlloc
    - MAXALIGN
    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:974,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:977,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - state
    - nonblocking
    argTypes:
    - XLogReaderState*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 966
    functionDepth: 3
    functionLinenumber: 966
    functionLinenumberEnd: 982
    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:1008,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1010,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1011,1
    - Dst: XLogReaderState*::routine::page_read
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1041,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1050,1
    - Dst: XLogReaderValidatePageHeader
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1052,1
    - Dst: XLogReaderState*::routine::page_read
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1061,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1061,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1069,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1075,1
    - Dst: XLogPageHeaderSize
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1080,1
    - Dst: XLogReaderState*::routine::page_read
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1082,1
    - Dst: XLogPageHeaderSize
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1082,1
    - Dst: XLogReaderValidatePageHeader
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1094,1
    - Dst: XLogReaderInvalReadState
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1105,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 50
    argCount: 3
    argNames:
    - state
    - pageptr
    - reqLen
    argTypes:
    - XLogReaderState*
    - XLogRecPtr
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1108
      start: 1000
    functionDepth: 1
    functionLinenumber: 1000
    functionLinenumberEnd: 1108
    functionName: ReadPageInternal
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 1
    functionsReached:
    - XLogSegmentOffset
    - XLByteToSeg
    - Assert
    - XLogReaderValidatePageHeader
    - XLogReaderInvalReadState
    - Max
    - XLogPageHeaderSize
    - XLogReaderState*::routine::page_read
    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: 1119
      start: 1113
    functionDepth: 0
    functionLinenumber: 1113
    functionLinenumberEnd: 1119
    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:1134,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1136,1
    - Dst: RmgrIdIsValid
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1140,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1142,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1144,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1155,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1157,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1158,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1171,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1173,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1174,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: 1180
      start: 1127
    functionDepth: 1
    functionLinenumber: 1127
    functionLinenumberEnd: 1180
    functionName: ValidXLogRecordHeader
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 1
    functionsReached:
    - LSN_FORMAT_ARGS
    - report_invalid_record
    - RmgrIdIsValid
    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:1198,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1201,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1202,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1204,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1205,1
    - Dst: EQ_CRC32C
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1207,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1209,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - state
    - record
    - recptr
    argTypes:
    - XLogReaderState*
    - XLogRecord*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1216
      start: 1193
    functionDepth: 1
    functionLinenumber: 1193
    functionLinenumberEnd: 1216
    functionName: ValidXLogRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 1
    functionsReached:
    - COMP_CRC32C
    - LSN_FORMAT_ARGS
    - Assert
    - report_invalid_record
    - FIN_CRC32C
    - INIT_CRC32C
    - EQ_CRC32C
    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:1232,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1234,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1235,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1241,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1243,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1247,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1256,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1258,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1262,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1274,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1282,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1288,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1297,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1300,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1304,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1318,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1320,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1322,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1324,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1344,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1346,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1351,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 48
    argCount: 3
    argNames:
    - state
    - recptr
    - phdr
    argTypes:
    - XLogReaderState*
    - XLogRecPtr
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1360
      start: 1224
    functionDepth: 2
    functionLinenumber: 1224
    functionLinenumberEnd: 1360
    functionName: XLogReaderValidatePageHeader
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 2
    functionsReached:
    - XLogSegmentOffset
    - LSN_FORMAT_ARGS
    - XLByteToSeg
    - Assert
    - report_invalid_record
    - XLogFileName
    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: 1370
      start: 1365
    functionDepth: 0
    functionLinenumber: 1365
    functionLinenumberEnd: 1370
    functionName: XLogReaderResetError
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void XLogReaderResetError(XLogReaderState *state)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1391,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1391,1
    - Dst: ReadPageInternal
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1423,1
    - Dst: XLogPageHeaderSize
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1429,1
    - Dst: ReadPageInternal
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1432,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1448,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1457,1
    - Dst: XLogBeginRead
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1473,1
    - Dst: XLogReadRecord
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1474,1
    - Dst: XLogBeginRead
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1481,1
    - Dst: XLogReaderInvalReadState
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1487,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 40
    argCount: 2
    argNames:
    - state
    - RecPtr
    argTypes:
    - XLogReaderState*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1490
      start: 1383
    functionDepth: 4
    functionLinenumber: 1383
    functionLinenumberEnd: 1490
    functionName: XLogFindNextRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 1
    functionsReached:
    - Assert
    - XLogReadRecord
    - ReadPageInternal
    - XLogBeginRead
    - XLogReaderInvalReadState
    - XLogPageHeaderSize
    - XLogRecPtrIsInvalid
    - MAXALIGN
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr XLogFindNextRecord(XLogReaderState *state, XLogRecPtr RecPtr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1525,1
    - Dst: XLByteInSeg
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1533,1
    - Dst: XLogReaderState*::routine::segment_close
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1539,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1541,1
    - Dst: XLogReaderState*::routine::segment_open
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1542,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1545,1
    - Dst: pgstat_prepare_io_time
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1560,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1562,1
    - Dst: pg_pread
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1567,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1570,1
    - Dst: pgstat_count_io_op_time
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1572,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: 1593
      start: 1503
    functionDepth: 3
    functionLinenumber: 1503
    functionLinenumberEnd: 1593
    functionName: WALRead
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 2
    functionsReached:
    - XLogSegmentOffset
    - XLogReaderState*::routine::segment_close
    - XLByteToSeg
    - XLByteInSeg
    - Assert
    - pgstat_prepare_io_time
    - pgstat_report_wait_end
    - pg_pread
    - pgstat_report_wait_start
    - XLogReaderState*::routine::segment_open
    - pgstat_count_io_op_time
    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:1614,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1627
      start: 1604
    functionDepth: 0
    functionLinenumber: 1604
    functionLinenumberEnd: 1627
    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: 1657
      start: 1638
    functionDepth: 0
    functionLinenumber: 1638
    functionLinenumberEnd: 1657
    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:1713,1
    - Dst: COPY_HEADER_FIELD
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1720,1
    - Dst: COPY_HEADER_FIELD
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1732,1
    - Dst: COPY_HEADER_FIELD
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1740,1
    - Dst: COPY_HEADER_FIELD
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1744,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1758,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1761,1
    - Dst: COPY_HEADER_FIELD
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1770,1
    - Dst: COPY_HEADER_FIELD
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1778,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1782,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1784,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:1799,1
    - Dst: COPY_HEADER_FIELD
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1800,1
    - Dst: COPY_HEADER_FIELD
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1801,1
    - Dst: BKPIMAGE_COMPRESSED
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1805,1
    - Dst: COPY_HEADER_FIELD
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1808,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1825,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1830,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1841,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1845,1
    - Dst: BKPIMAGE_COMPRESSED
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1852,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1855,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1858,1
    - Dst: BKPIMAGE_COMPRESSED
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1867,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1870,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1873,1
    - Dst: COPY_HEADER_FIELD
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1879,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:1888,1
    - Dst: COPY_HEADER_FIELD
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1894,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1898,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1900,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1927,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1933,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1939,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1941,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1950,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1952,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1958,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1959,1
    - Dst: DecodeXLogRecordRequiredSpace
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1959,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1965,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1967,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: 1972
      start: 1671
    functionDepth: 1
    functionLinenumber: 1671
    functionLinenumberEnd: 1972
    functionName: DecodeXLogRecord
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 1
    functionsReached:
    - LSN_FORMAT_ARGS
    - Assert
    - report_invalid_record
    - BKPIMAGE_COMPRESSED
    - MAXALIGN
    - memcpy
    - DecodeXLogRecordRequiredSpace
    - COPY_HEADER_FIELD
    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: 1689
      start: 1681
    functionDepth: 0
    functionLinenumber: 1681
    functionLinenumberEnd: 1689
    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:1985,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1989,1
    - Dst: pg_fatal
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:1992,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: 1996
      start: 1980
    functionDepth: 1
    functionLinenumber: 1980
    functionLinenumberEnd: 1996
    functionName: XLogRecGetBlockTag
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 15
    functionsReached:
    - elog
    - pg_fatal
    - XLogRecGetBlockTagExtended
    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:2014,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: 2027
      start: 2006
    functionDepth: 1
    functionLinenumber: 2006
    functionLinenumberEnd: 2027
    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: 2057
      start: 2034
    functionDepth: 0
    functionLinenumber: 2034
    functionLinenumberEnd: 2057
    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:2075,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2077,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2083,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2084,1
    - Dst: BKPIMAGE_COMPRESSED
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2092,1
    - Dst: pglz_decompress
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2099,1
    - Dst: LZ4_decompress_safe
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2106,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2110,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2111,1
    - Dst: ZSTD_decompress
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2120,1
    - Dst: ZSTD_isError
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2124,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2127,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2128,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2136,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2137,1
    - Dst: report_invalid_record
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2144,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2145,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2156,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2160,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2162,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2163,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 3
    argNames:
    - record
    - block_id
    - page
    argTypes:
    - XLogReaderState*
    - uint8
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2169
      start: 2065
    functionDepth: 2
    functionLinenumber: 2065
    functionLinenumberEnd: 2169
    functionName: RestoreBlockImage
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 3
    functionsReached:
    - LSN_FORMAT_ARGS
    - report_invalid_record
    - ZSTD_isError
    - pglz_decompress
    - BKPIMAGE_COMPRESSED
    - MemSet
    - memcpy
    - LZ4_decompress_safe
    - ZSTD_decompress
    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:2183,1
    - Dst: AmStartupProcess
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2183,1
    - Dst: FullTransactionIdFromAllowableAt
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2185,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/access/transam/xlogreader.c:2186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2187
      start: 2176
    functionDepth: 2
    functionLinenumber: 2176
    functionLinenumberEnd: 2187
    functionName: XLogRecGetFullXid
    functionSourceFile: /src/postgres/src/backend/access/transam/xlogreader.c
    functionUses: 0
    functionsReached:
    - Assert
    - XLogRecGetXid
    - FullTransactionIdFromAllowableAt
    - AmStartupProcess
    linkageType: ''
    returnType: FullTransactionId
    signature: FullTransactionId XLogRecGetFullXid(XLogReaderState *record)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 75
    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: 79
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 79
    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:180,1
    - Dst: TransactionIdToCTsPage
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:185,1
    - Dst: SetXidCommitTsInPage
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:190,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:206,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:212,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:214,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 5
    argNames:
    - xid
    - nsubxids
    - subxids
    - timestamp
    - nodeid
    argTypes:
    - TransactionId
    - int
    - TransactionId*
    - TimestampTz
    - RepOriginId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 140
    functionDepth: 2
    functionLinenumber: 140
    functionLinenumberEnd: 215
    functionName: TransactionTreeSetCommitTsData
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 3
    functionsReached:
    - SetXidCommitTsInPage
    - TransactionIdToCTsPage
    - LWLockRelease
    - LWLockAcquire
    - TransactionIdPrecedes
    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   RepOriginId
      nodeid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:226,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:230,1
    - Dst: SimpleLruReadPage
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:232,1
    - Dst: TransactionIdSetCommitTs
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:234,1
    - Dst: TransactionIdSetCommitTs
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:236,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:240,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 6
    argNames:
    - xid
    - nsubxids
    - subxids
    - ts
    - nodeid
    - pageno
    argTypes:
    - TransactionId
    - int
    - TransactionId*
    - TimestampTz
    - RepOriginId
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 221
    functionDepth: 3
    functionLinenumber: 221
    functionLinenumberEnd: 241
    functionName: SetXidCommitTsInPage
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 1
    functionsReached:
    - TransactionIdSetCommitTs
    - SimpleLruGetBankLock
    - LWLockRelease
    - LWLockAcquire
    - 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 RepOriginId nodeid, int64
      pageno)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdToCTsEntry
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:252,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:255,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:255,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - xid
    - ts
    - nodeid
    - slotno
    argTypes:
    - TransactionId
    - TimestampTz
    - RepOriginId
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 263
    functionName: TransactionIdSetCommitTs
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 1
    functionsReached:
    - TransactionIdIsNormal
    - Assert
    - TransactionIdToCTsEntry
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void TransactionIdSetCommitTs(TransactionId xid, TimestampTz ts,\n\t\t\t\t\t\t
      RepOriginId nodeid, int slotno)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdToCTsPage
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:277,1
    - Dst: TransactionIdToCTsEntry
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:278,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:284,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:285,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:286,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:287,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:288,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:297,1
    - Dst: error_commit_ts_disabled
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:301,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:313,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:320,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:320,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:320,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:321,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:326,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:327,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:328,1
    - Dst: SimpleLruReadPage_ReadOnly
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:337,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:338,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:347,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:347,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 3
    argNames:
    - xid
    - ts
    - nodeid
    argTypes:
    - TransactionId
    - TimestampTz*
    - RepOriginId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 273
    functionDepth: 4
    functionLinenumber: 273
    functionLinenumberEnd: 349
    functionName: TransactionIdGetCommitTsData
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - SimpleLruReadPage_ReadOnly
    - error_commit_ts_disabled
    - TransactionIdIsValid
    - memcpy
    - TransactionIdToCTsEntry
    - SimpleLruGetBankLock
    - ereport
    - TransactionIdIsNormal
    - TransactionIdPrecedes
    - TransactionIdToCTsPage
    - LWLockRelease
    - LWLockAcquire
    - errcode
    linkageType: ''
    returnType: bool
    signature: "bool TransactionIdGetCommitTsData(TransactionId xid, TimestampTz *ts,\n\t\t\t\t\t\t\t
      RepOriginId *nodeid)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:364,1
    - Dst: error_commit_ts_disabled
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:368,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:375,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ts
    - nodeid
    argTypes:
    - TimestampTz*
    - RepOriginId*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 359
    functionDepth: 1
    functionLinenumber: 359
    functionLinenumberEnd: 378
    functionName: GetLatestCommitTsData
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - LWLockRelease
    - LWLockAcquire
    - error_commit_ts_disabled
    linkageType: ''
    returnType: TransactionId
    signature: TransactionId GetLatestCommitTsData(TimestampTz *ts, RepOriginId *nodeid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:383,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:384,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:385,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:386,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:387,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:389,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 380
    functionDepth: 1
    functionLinenumber: 380
    functionLinenumberEnd: 391
    functionName: error_commit_ts_disabled
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 2
    functionsReached:
    - errmsg
    - errcode
    - ereport
    - errhint
    - 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:399,1
    - Dst: TransactionIdGetCommitTsData
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:403,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:406,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:408,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 396
    functionDepth: 5
    functionLinenumber: 396
    functionLinenumberEnd: 409
    functionName: pg_xact_commit_timestamp
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - PG_RETURN_TIMESTAMPTZ
    - TransactionIdGetCommitTsData
    - 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:431,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:433,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:434,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:436,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:438,1
    - Dst: TransactionIdGetDatum
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:442,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:445,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:448,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:452,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:454,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:454,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 419
    functionDepth: 5
    functionLinenumber: 419
    functionLinenumberEnd: 455
    functionName: pg_last_committed_xact
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - heap_form_tuple
    - HeapTupleGetDatum
    - memset
    - PG_RETURN_DATUM
    - GetLatestCommitTsData
    - TransactionIdIsNormal
    - elog
    - TimestampTzGetDatum
    - get_call_result_type
    - TransactionIdGetDatum
    - ObjectIdGetDatum
    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:466,1
    - Dst: TransactionIdGetCommitTsData
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:475,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:477,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:478,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:482,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:486,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:489,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:493,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:495,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:495,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 463
    functionDepth: 5
    functionLinenumber: 463
    functionLinenumberEnd: 496
    functionName: pg_xact_commit_timestamp_origin
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - heap_form_tuple
    - HeapTupleGetDatum
    - memset
    - PG_RETURN_DATUM
    - TransactionIdGetCommitTsData
    - PG_GETARG_TRANSACTIONID
    - elog
    - TimestampTzGetDatum
    - get_call_result_type
    - ObjectIdGetDatum
    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:510,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:512,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:512,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 505
    functionDepth: 1
    functionLinenumber: 505
    functionLinenumberEnd: 513
    functionName: CommitTsShmemBuffers
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - Min
    - Max
    - SimpleLruAutotuneBuffers
    linkageType: ''
    returnType: int
    signature: int CommitTsShmemBuffers(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruShmemSize
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:521,1
    - Dst: CommitTsShmemBuffers
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:521,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 518
    functionDepth: 2
    functionLinenumber: 518
    functionLinenumberEnd: 523
    functionName: CommitTsShmemSize
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - CommitTsShmemBuffers
    - SimpleLruShmemSize
    linkageType: ''
    returnType: Size
    signature: Size CommitTsShmemSize(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:539,1
    - Dst: CommitTsShmemBuffers
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:539,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:540,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:550,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:553,1
    - Dst: SimpleLruInit
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:556,1
    - Dst: CommitTsShmemBuffers
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:556,1
    - Dst: SlruPagePrecedesUnitTests
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:561,1
    - Dst: ShmemInitStruct
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:563,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:569,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:572,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:577,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 529
    functionDepth: 3
    functionLinenumber: 529
    functionLinenumberEnd: 578
    functionName: CommitTsShmemInit
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - Assert
    - TIMESTAMP_NOBEGIN
    - SimpleLruInit
    - SetConfigOption
    - CommitTsShmemBuffers
    - snprintf
    - SlruPagePrecedesUnitTests
    - ShmemInitStruct
    linkageType: ''
    returnType: void
    signature: void CommitTsShmemInit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_slru_buffers
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:586,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - int*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 583
    functionDepth: 1
    functionLinenumber: 583
    functionLinenumberEnd: 587
    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: 603
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 603
    functionName: BootStrapCommitTs
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BootStrapCommitTs(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruZeroPage
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:619,1
    - Dst: WriteZeroPageXlogRec
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:622,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - pageno
    - writeXlog
    argTypes:
    - int64
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 614
    functionDepth: 3
    functionLinenumber: 614
    functionLinenumberEnd: 625
    functionName: ZeroCommitTsPage
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - WriteZeroPageXlogRec
    - SimpleLruZeroPage
    linkageType: ''
    returnType: int
    signature: int ZeroCommitTsPage(int64 pageno, bool writeXlog)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ActivateCommitTs
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:634,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 631
    functionDepth: 1
    functionLinenumber: 631
    functionLinenumberEnd: 635
    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:654,1
    - Dst: ActivateCommitTs
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:656,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 641
    functionDepth: 1
    functionLinenumber: 641
    functionLinenumberEnd: 657
    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:682,1
    - Dst: DeactivateCommitTs
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:685,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - newvalue
    - oldvalue
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 663
    functionDepth: 1
    functionLinenumber: 663
    functionLinenumberEnd: 686
    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: 4
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:711,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:714,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:717,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:719,1
    - Dst: TransactionIdToCTsPage
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:720,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:725,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:740,1
    - Dst: ReadNextTransactionId
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:744,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:746,1
    - Dst: SimpleLruDoesPhysicalPageExist
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:749,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:751,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:754,1
    - Dst: ZeroCommitTsPage
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:755,1
    - Dst: SimpleLruWritePage
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:756,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:757,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:758,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:762,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:764,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 704
    functionDepth: 4
    functionLinenumber: 704
    functionLinenumberEnd: 765
    functionName: ActivateCommitTs
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 3
    functionsReached:
    - SimpleLruWritePage
    - ZeroCommitTsPage
    - Assert
    - pg_atomic_write_u64
    - XidFromFullTransactionId
    - SimpleLruGetBankLock
    - SimpleLruDoesPhysicalPageExist
    - ReadNextTransactionId
    - TransactionIdToCTsPage
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void ActivateCommitTs(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:787,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:791,1
    - Dst: SlruScanDirectory
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:811,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:813,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 814
      start: 777
    functionDepth: 3
    functionLinenumber: 777
    functionLinenumberEnd: 814
    functionName: DeactivateCommitTs
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 2
    functionsReached:
    - LWLockRelease
    - TIMESTAMP_NOBEGIN
    - LWLockAcquire
    - SlruScanDirectory
    linkageType: ''
    returnType: void
    signature: void DeactivateCommitTs(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleLruWriteAll
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:827,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 819
    functionDepth: 4
    functionLinenumber: 819
    functionLinenumberEnd: 828
    functionName: CheckPointCommitTs
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 1
    functionsReached:
    - SimpleLruWriteAll
    linkageType: ''
    returnType: void
    signature: void CheckPointCommitTs(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:852,1
    - Dst: TransactionIdToCTsEntry
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:860,1
    - Dst: TransactionIdEquals
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:861,1
    - Dst: TransactionIdToCTsPage
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:864,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:866,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:868,1
    - Dst: ZeroCommitTsPage
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:871,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:873,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - newestXact
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 874
      start: 841
    functionDepth: 4
    functionLinenumber: 841
    functionLinenumberEnd: 874
    functionName: ExtendCommitTs
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 1
    functionsReached:
    - TransactionIdEquals
    - Assert
    - ZeroCommitTsPage
    - TransactionIdToCTsEntry
    - SimpleLruGetBankLock
    - TransactionIdToCTsPage
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void ExtendCommitTs(TransactionId newestXact)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdToCTsPage
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:891,1
    - Dst: SlruScanDirectory
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:894,1
    - Dst: WriteTruncateXlogRec
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:899,1
    - Dst: SimpleLruTruncate
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:902,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - oldestXact
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 882
    functionDepth: 4
    functionLinenumber: 882
    functionLinenumberEnd: 903
    functionName: TruncateCommitTs
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - TransactionIdToCTsPage
    - WriteTruncateXlogRec
    - SimpleLruTruncate
    - SlruScanDirectory
    linkageType: ''
    returnType: void
    signature: void TruncateCommitTs(TransactionId oldestXact)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:915,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:918,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:920,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:925,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:929,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - oldestXact
    - newestXact
    argTypes:
    - TransactionId
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 908
    functionDepth: 2
    functionLinenumber: 908
    functionLinenumberEnd: 930
    functionName: SetCommitTsLimit
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 2
    functionsReached:
    - Assert
    - LWLockRelease
    - LWLockAcquire
    - TransactionIdPrecedes
    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:938,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:940,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:942,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - oldestXact
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 943
      start: 935
    functionDepth: 2
    functionLinenumber: 935
    functionLinenumberEnd: 943
    functionName: AdvanceOldestCommitTsXid
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - LWLockRelease
    - LWLockAcquire
    - TransactionIdPrecedes
    linkageType: ''
    returnType: void
    signature: void AdvanceOldestCommitTsXid(TransactionId oldestXact)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:980,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:981,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - page1
    - page2
    argTypes:
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 969
    functionDepth: 2
    functionLinenumber: 969
    functionLinenumberEnd: 982
    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: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:991,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:992,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:993,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - pageno
    argTypes:
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 994
      start: 988
    functionDepth: 3
    functionLinenumber: 988
    functionLinenumberEnd: 994
    functionName: WriteZeroPageXlogRec
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 2
    functionsReached:
    - XLogInsert
    - XLogRegisterData
    - XLogBeginInsert
    linkageType: ''
    returnType: void
    signature: void WriteZeroPageXlogRec(int64 pageno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1007,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1008,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1009,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - pageno
    - oldestXid
    argTypes:
    - int64
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1010
      start: 999
    functionDepth: 3
    functionLinenumber: 999
    functionLinenumberEnd: 1010
    functionName: WriteTruncateXlogRec
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 2
    functionsReached:
    - XLogInsert
    - XLogRegisterData
    - 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:1018,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1021,1
    - Dst: XLogRecHasAnyBlockRefs
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1021,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1029,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1029,1
    - Dst: SimpleLruGetBankLock
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1031,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1032,1
    - Dst: ZeroCommitTsPage
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1034,1
    - Dst: SimpleLruWritePage
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1035,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1036,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1038,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1042,1
    - Dst: AdvanceOldestCommitTsXid
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1044,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1050,1
    - Dst: SimpleLruTruncate
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1053,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/transam/commit_ts.c:1056,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1015
    functionDepth: 4
    functionLinenumber: 1015
    functionLinenumberEnd: 1057
    functionName: commit_ts_redo
    functionSourceFile: /src/postgres/src/backend/access/transam/commit_ts.c
    functionUses: 0
    functionsReached:
    - SimpleLruWritePage
    - Assert
    - ZeroCommitTsPage
    - pg_atomic_write_u64
    - SimpleLruGetBankLock
    - XLogRecHasAnyBlockRefs
    - XLogRecGetInfo
    - XLogRecGetData
    - elog
    - AdvanceOldestCommitTsXid
    - SimpleLruTruncate
    - memcpy
    - LWLockRelease
    - LWLockAcquire
    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:1065,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ftag
    - path
    argTypes:
    - FileTag*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1066
      start: 1062
    functionDepth: 3
    functionLinenumber: 1062
    functionLinenumberEnd: 1066
    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:
    - isnan
    - HYPOT
    - get_float8_nan
    linkageType: ''
    returnType: double
    signature: double point_box_distance(Point *point, BOX *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      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:
    - DatumGetPointP
    - point_box_distance
    - point_point_distance
    - DatumGetBoxP
    - palloc
    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
      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
    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
      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:
    - MarkBufferDirty
    - SpGistInitBuffer
    - RelationGetRelationName
    - SpGistInitMetapage
    - START_CRIT_SECTION
    - MemoryContextDelete
    - BufferGetBlockNumber
    - RelationGetNumberOfBlocks
    - RelationNeedsWAL
    - table_index_build_scan
    - elog
    - BufferGetPage
    - SpGistUpdateMetaPage
    - UnlockReleaseBuffer
    - Assert
    - log_newpage_range
    - SpGistNewBuffer
    - initSpGistState
    - palloc0
    - AllocSetContextCreate
    - 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:
    - SpGistInitMetapage
    - SpGistInitPage
    - smgr_bulk_start_rel
    - smgr_bulk_get_buf
    - smgr_bulk_write
    - smgr_bulk_finish
    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:
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - MemoryContextReset
    - initSpGistState
    - spgdoinsert
    - AllocSetContextCreate
    - SpGistUpdateMetaPage
    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:
    - memset
    - palloc0
    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
    - Item
    - 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:
    - Assert
    - PageGetItemId
    - PageIndexTupleDelete
    - PageAddItem
    - elog
    - PageGetItem
    - PageGetMaxOffsetNumber
    - SpGistPageGetOpaque
    linkageType: ''
    returnType: void
    signature: void addOrReplaceTuple(Page page, Item 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:121,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:122,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:123,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:123,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:123,1
    - Dst: SGLT_SET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:124,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:130,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:131,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:134,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:138,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:139,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:141,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:142,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:147,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:152,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:154,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:156,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:157,1
    - Dst: spgUpdateNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:159,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:162,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:163,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:165,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:166,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 73
    functionDepth: 4
    functionLinenumber: 73
    functionLinenumberEnd: 168
    functionName: spgRedoAddLeaf
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgxlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - PageIndexTupleDelete
    - MarkBufferDirty
    - PageAddItem
    - XLogRecGetData
    - SpGistInitBuffer
    - spgUpdateNodeLink
    - memcpy
    - XLogInitBufferForRedo
    - PageGetItem
    - addOrReplaceTuple
    - PageGetItemId
    - BufferIsValid
    - elog
    - XLogRecGetBlockTag
    - BufferGetPage
    - SGLT_SET_NEXTOFFSET
    - UnlockReleaseBuffer
    - Assert
    - XLogReadBufferForRedo
    - SGLT_GET_NEXTOFFSET
    linkageType: ''
    returnType: void
    signature: void spgRedoAddLeaf(XLogReaderState *record)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:174,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:185,1
    - Dst: fillFakeState
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:187,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:208,1
    - Dst: SpGistInitBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:209,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:214,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:220,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:232,1
    - Dst: addOrReplaceTuple
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:235,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:240,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:241,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:243,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:244,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:247,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:249,1
    - Dst: spgPageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:251,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:257,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:258,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:260,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:261,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:264,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:268,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:270,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:271,1
    - Dst: spgUpdateNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:273,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:276,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:277,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:279,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:280,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 45
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 170
    functionDepth: 4
    functionLinenumber: 170
    functionLinenumberEnd: 281
    functionName: spgRedoMoveLeafs
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgxlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - addOrReplaceTuple
    - MarkBufferDirty
    - BufferIsValid
    - PageGetItemId
    - memcpy
    - XLogRecGetBlockTag
    - XLogRecGetData
    - SpGistInitBuffer
    - spgUpdateNodeLink
    - spgPageIndexMultiDelete
    - XLogReadBufferForRedo
    - BufferGetPage
    - XLogInitBufferForRedo
    - PageGetItem
    - UnlockReleaseBuffer
    - fillFakeState
    linkageType: ''
    returnType: void
    signature: void spgRedoMoveLeafs(XLogReaderState *record)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:287,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:299,1
    - Dst: fillFakeState
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:301,1
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:303,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:306,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:307,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:309,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:311,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:312,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:315,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:318,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:319,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:321,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:322,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:329,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:330,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:344,1
    - Dst: SpGistInitBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:345,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:349,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:352,1
    - Dst: addOrReplaceTuple
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:354,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:364,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:365,1
    - Dst: spgUpdateNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:367,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:370,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:371,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:373,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:374,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:377,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:381,1
    - Dst: spgFormDeadTuple
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:384,1
    - Dst: spgFormDeadTuple
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:388,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:392,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:393,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:396,1
    - Dst: SpGistPageGetOpaque
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:400,1
    - Dst: SpGistPageGetOpaque
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:402,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:411,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:412,1
    - Dst: spgUpdateNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:414,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:417,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:418,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:420,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:421,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:429,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:433,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:435,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:436,1
    - Dst: spgUpdateNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:438,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:441,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:442,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:444,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:445,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 70
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 283
    functionDepth: 4
    functionLinenumber: 283
    functionLinenumberEnd: 448
    functionName: spgRedoAddNode
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgxlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - PageIndexTupleDelete
    - MarkBufferDirty
    - PageAddItem
    - XLogRecGetData
    - SpGistInitBuffer
    - spgUpdateNodeLink
    - spgFormDeadTuple
    - XLogRecHasBlockRef
    - memcpy
    - XLogInitBufferForRedo
    - PageGetItem
    - SpGistPageGetOpaque
    - addOrReplaceTuple
    - BufferIsValid
    - PageGetItemId
    - elog
    - XLogRecGetBlockTag
    - BufferGetPage
    - UnlockReleaseBuffer
    - Assert
    - XLogReadBufferForRedo
    - fillFakeState
    linkageType: ''
    returnType: void
    signature: void spgRedoAddNode(XLogReaderState *record)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:454,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:467,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:471,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:484,1
    - Dst: SpGistInitBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:486,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:490,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:493,1
    - Dst: addOrReplaceTuple
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:495,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:498,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:499,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:501,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:502,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:506,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:508,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:510,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:511,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:513,1
    - Dst: addOrReplaceTuple
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:517,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:521,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:522,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:524,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:525,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 450
    functionDepth: 4
    functionLinenumber: 450
    functionLinenumberEnd: 526
    functionName: spgRedoSplitTuple
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgxlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - addOrReplaceTuple
    - MarkBufferDirty
    - BufferIsValid
    - PageIndexTupleDelete
    - PageAddItem
    - BufferGetPage
    - XLogRecGetData
    - elog
    - SpGistInitBuffer
    - XLogReadBufferForRedo
    - memcpy
    - XLogInitBufferForRedo
    - UnlockReleaseBuffer
    linkageType: ''
    returnType: void
    signature: void spgRedoSplitTuple(XLogReaderState *record)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:532,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:550,1
    - Dst: fillFakeState
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:552,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:564,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:578,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:579,1
    - Dst: SpGistInitBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:581,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:594,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:596,1
    - Dst: spgPageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:604,1
    - Dst: spgPageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:611,1
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:623,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:631,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:632,1
    - Dst: SpGistInitBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:634,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:644,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:645,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:658,1
    - Dst: addOrReplaceTuple
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:665,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:672,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:673,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:677,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:678,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:684,1
    - Dst: SpGistInitBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:685,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:689,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:693,1
    - Dst: addOrReplaceTuple
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:695,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:703,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:704,1
    - Dst: spgUpdateNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:705,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:709,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:710,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:712,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:713,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:719,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:720,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:721,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:722,1
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:725,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:729,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:733,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:735,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:736,1
    - Dst: spgUpdateNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:737,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:740,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:741,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:743,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:744,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:747,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 94
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 528
    functionDepth: 4
    functionLinenumber: 528
    functionLinenumberEnd: 748
    functionName: spgRedoPickSplit
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgxlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - MarkBufferDirty
    - XLogRecGetData
    - SpGistInitBuffer
    - spgPageIndexMultiDelete
    - XLogRecHasBlockRef
    - memcpy
    - XLogInitBufferForRedo
    - PageGetItem
    - addOrReplaceTuple
    - PageGetItemId
    - BufferIsValid
    - XLogReadBufferForRedo
    - XLogRecGetBlockTag
    - BufferGetPage
    - UnlockReleaseBuffer
    - Assert
    - spgUpdateNodeLink
    - fillFakeState
    linkageType: ''
    returnType: void
    signature: void spgRedoPickSplit(XLogReaderState *record)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:754,1
    - Dst: fillFakeState
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:767,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:782,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:784,1
    - Dst: spgPageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:786,1
    - Dst: spgPageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:792,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:801,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:802,1
    - Dst: spgPageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:810,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:820,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:821,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:822,1
    - Dst: SGLT_SET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:823,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:826,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:827,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:829,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:830,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 750
    functionDepth: 4
    functionLinenumber: 750
    functionLinenumberEnd: 831
    functionName: spgRedoVacuumLeaf
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgxlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - Assert
    - PageGetItemId
    - MarkBufferDirty
    - BufferIsValid
    - XLogRecGetData
    - spgPageIndexMultiDelete
    - XLogReadBufferForRedo
    - BufferGetPage
    - PageGetItem
    - SGLT_SET_NEXTOFFSET
    - UnlockReleaseBuffer
    - fillFakeState
    linkageType: ''
    returnType: void
    signature: void spgRedoVacuumLeaf(XLogReaderState *record)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:837,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:845,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:847,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:850,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:852,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:853,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:855,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:856,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 833
    functionDepth: 4
    functionLinenumber: 833
    functionLinenumberEnd: 857
    functionName: spgRedoVacuumRoot
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgxlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - MarkBufferDirty
    - BufferIsValid
    - PageIndexMultiDelete
    - XLogRecGetData
    - XLogReadBufferForRedo
    - BufferGetPage
    - UnlockReleaseBuffer
    linkageType: ''
    returnType: void
    signature: void spgRedoVacuumRoot(XLogReaderState *record)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:863,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:878,1
    - Dst: ResolveRecoveryConflictWithSnapshot
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:879,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:884,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:886,1
    - Dst: SpGistPageGetOpaque
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:887,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:895,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:896,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:897,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:899,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:902,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:909,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:912,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:918,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:922,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:924,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:927,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:928,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:930,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:931,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 859
    functionDepth: 4
    functionLinenumber: 859
    functionLinenumberEnd: 932
    functionName: spgRedoVacuumRedirect
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgxlog.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - PageGetItemId
    - PageSetLSN
    - MarkBufferDirty
    - BufferIsValid
    - UnlockReleaseBuffer
    - PageIndexMultiDelete
    - ItemPointerSetInvalid
    - XLogRecGetBlockTag
    - XLogRecGetData
    - XLogReadBufferForRedo
    - BufferGetPage
    - palloc
    - PageGetItem
    - ResolveRecoveryConflictWithSnapshot
    - PageGetMaxOffsetNumber
    - SpGistPageGetOpaque
    linkageType: ''
    returnType: void
    signature: void spgRedoVacuumRedirect(XLogReaderState *record)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:937,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:940,1
    - Dst: spgRedoAddLeaf
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:944,1
    - Dst: spgRedoMoveLeafs
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:947,1
    - Dst: spgRedoAddNode
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:950,1
    - Dst: spgRedoSplitTuple
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:953,1
    - Dst: spgRedoPickSplit
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:956,1
    - Dst: spgRedoVacuumLeaf
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:959,1
    - Dst: spgRedoVacuumRoot
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:962,1
    - Dst: spgRedoVacuumRedirect
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:965,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:968,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:971,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:972,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 934
    functionDepth: 5
    functionLinenumber: 934
    functionLinenumberEnd: 973
    functionName: spg_redo
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgxlog.c
    functionUses: 0
    functionsReached:
    - spgRedoVacuumRoot
    - MemoryContextSwitchTo
    - MemoryContextReset
    - spgRedoAddNode
    - spgRedoMoveLeafs
    - spgRedoPickSplit
    - XLogRecGetInfo
    - elog
    - spgRedoVacuumLeaf
    - spgRedoVacuumRedirect
    - spgRedoSplitTuple
    - spgRedoAddLeaf
    linkageType: ''
    returnType: void
    signature: void spg_redo(XLogReaderState *record)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:978,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 975
    functionDepth: 1
    functionLinenumber: 975
    functionLinenumberEnd: 981
    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:986,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 988
      start: 983
    functionDepth: 1
    functionLinenumber: 983
    functionLinenumberEnd: 988
    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:999,1
    - Dst: mask_page_hint_bits
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:1001,1
    - Dst: mask_unused_space
      Src: /src/postgres/src/backend/access/spgist/spgxlog.c:1008,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - pagedata
    - blkno
    argTypes:
    - char*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 993
    functionDepth: 2
    functionLinenumber: 993
    functionLinenumberEnd: 1009
    functionName: spg_mask
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgxlog.c
    functionUses: 0
    functionsReached:
    - mask_unused_space
    - mask_page_lsn_and_checksum
    - 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_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 37
    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: 41
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 41
    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:57,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:58,1
    - 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:63,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:64,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:68,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:69,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:73,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:74,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:77,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 11
    argCount: 2
    argNames:
    - centroid
    - tst
    argTypes:
    - Point*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 79
    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
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:85,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - bbox
    - centroid
    - quadrant
    argTypes:
    - BOX*
    - Point*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 112
    functionName: getQuadrantArea
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c
    functionUses: 0
    functionsReached:
    - palloc
    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:117,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:118,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:119,1
    - Dst: PointPGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:127,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:128,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:131,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:132,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:134,1
    - Dst: getQuadrant
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:137,1
    - Dst: PointPGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:139,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 114
    functionDepth: 2
    functionLinenumber: 114
    functionLinenumberEnd: 142
    functionName: spg_quad_choose
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c
    functionUses: 0
    functionsReached:
    - DatumGetPointP
    - Assert
    - getQuadrant
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - PointPGetDatum
    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: 154
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 154
    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: 165
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 165
    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:171,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:172,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:180,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:182,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:184,1
    - Dst: qsort
      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: palloc0
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:192,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:196,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:197,1
    - Dst: PointPGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:205,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:210,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:211,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:215,1
    - Dst: getQuadrant
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:216,1
    - Dst: PointPGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:218,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:222,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 168
    functionDepth: 2
    functionLinenumber: 168
    functionLinenumberEnd: 223
    functionName: spg_quad_picksplit
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c
    functionUses: 0
    functionsReached:
    - DatumGetPointP
    - getQuadrant
    - qsort
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - palloc0
    - PointPGetDatum
    - palloc
    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:229,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:230,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:237,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:238,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:249,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:250,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:254,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:265,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:273,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:280,1
    - Dst: box_copy
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:283,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:285,1
    - Dst: spg_key_orderbys_distances
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:288,1
    - Dst: BoxPGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:288,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:292,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:295,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:302,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:308,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:312,1
    - Dst: getQuadrant
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:316,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:320,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:325,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:335,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:337,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:337,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:338,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:339,1
    - Dst: getQuadrant
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:350,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: elog
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:362,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:371,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:376,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:387,1
    - Dst: getQuadrantArea
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:388,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:390,1
    - Dst: spg_key_orderbys_distances
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:394,1
    - Dst: BoxPGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:394,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:402,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 94
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 226
    functionDepth: 3
    functionLinenumber: 226
    functionLinenumberEnd: 403
    functionName: spg_quad_inner_consistent
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c
    functionUses: 0
    functionsReached:
    - DatumGetPointP
    - Assert
    - MemoryContextSwitchTo
    - getQuadrant
    - SPTEST
    - PG_GETARG_POINTER
    - getQuadrantArea
    - PG_RETURN_VOID
    - spg_key_orderbys_distances
    - box_copy
    - PointerGetDatum
    - BoxPGetDatum
    - elog
    - DatumGetBoxP
    - DirectFunctionCall2
    - DatumGetBool
    - palloc
    - 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:409,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:410,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:411,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:425,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:430,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:433,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:436,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:440,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:444,1
    - Dst: SPTEST
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:453,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:456,1
    - Dst: spg_key_orderbys_distances
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:467,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c:470,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 406
    functionDepth: 3
    functionLinenumber: 406
    functionLinenumberEnd: 471
    functionName: spg_quad_leaf_consistent
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgquadtreeproc.c
    functionUses: 0
    functionsReached:
    - DatumGetPointP
    - SPTEST
    - PG_GETARG_POINTER
    - spg_key_orderbys_distances
    - PG_RETURN_BOOL
    - elog
    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:
    - format_operator
    - HeapTupleIsValid
    - get_opfamily_name
    - NameStr
    - ReleaseSysCache
    - identify_opfamily_groups
    - GETSTRUCT
    - check_amproc_signature
    - OidFunctionCall2
    - format_procedure
    - errmsg
    - get_op_rettype
    - format_type_be
    - elog
    - check_amoptsproc_signature
    - OidIsValid
    - check_amop_signature
    - ObjectIdGetDatum
    - lfirst
    - memset
    - ereport
    - PointerGetDatum
    - SearchSysCache1
    - SearchSysCacheList1
    - ReleaseCatCacheList
    - errcode
    - opfamily_can_sort_type
    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:
    - errmsg
    - lfirst
    - format_type_be
    - ereport
    - errcode
    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:
    - errmsg
    - errcode
    - lfirst
    - ereport
    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:
    - errmsg
    - errcode
    - lfirst
    - ereport
    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
      Src: /src/postgres/src/backend/access/spgist/spgvacuum.c:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - bds
    - tid
    argTypes:
    - spgBulkDeleteState*
    - ItemPointer
    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:
    - palloc
    - ItemPointerEquals
    linkageType: ''
    returnType: void
    signature: void spgAddPendingTID(spgBulkDeleteState *bds, ItemPointer 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:
    - pfree
    - Assert
    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:
    - MarkBufferDirty
    - PageSetLSN
    - STORE_STATE
    - XLogRegisterData
    - spgPageIndexMultiDelete
    - RelationGetRelationName
    - START_CRIT_SECTION
    - BufferGetBlockNumber
    - PageGetItem
    - RelationNeedsWAL
    - PageGetItemId
    - spgAddPendingTID
    - ItemPointerIsValid
    - elog
    - BufferGetPage
    - SGLT_SET_NEXTOFFSET
    - PageGetMaxOffsetNumber
    - Assert
    - XLogBeginInsert
    - memset
    - XLogInsert
    - XLogRegisterBuffer
    - TransactionIdFollowsOrEquals
    - END_CRIT_SECTION
    - SGLT_GET_NEXTOFFSET
    - spgBulkDeleteState*::callback
    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:
    - MarkBufferDirty
    - PageSetLSN
    - STORE_STATE
    - XLogRegisterData
    - START_CRIT_SECTION
    - PageGetItem
    - RelationNeedsWAL
    - PageGetItemId
    - ItemPointerIsValid
    - elog
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - Assert
    - XLogBeginInsert
    - XLogInsert
    - PageIndexMultiDelete
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    - spgBulkDeleteState*::callback
    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:
    - MarkBufferDirty
    - PageSetLSN
    - GlobalVisTestFor
    - XLogRegisterData
    - START_CRIT_SECTION
    - ItemPointerSetInvalid
    - PageGetItem
    - TransactionIdPrecedes
    - RelationNeedsWAL
    - SpGistPageGetOpaque
    - PageGetItemId
    - GlobalVisTestIsRemovableXid
    - TransactionIdIsValid
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - Assert
    - XLogBeginInsert
    - XLogInsert
    - PageIndexMultiDelete
    - XLogRegisterBuffer
    - RelationIsAccessibleInLogicalDecoding
    - END_CRIT_SECTION
    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:
    - UnlockReleaseBuffer
    - BufferGetBlockNumber
    - vacuumLeafRoot
    - LockBuffer
    - vacuumLeafPage
    - SpGistBlockIsRoot
    - PageIsEmpty
    - SpGistSetLastUsedPage
    - BufferGetPage
    - SpGistPageIsLeaf
    - PageIsNew
    - vacuumRedirectAndPlaceholder
    - RecordFreeIndexPage
    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:
    - LockBuffer
    - vacuum_delay_point
    - SpGistBlockIsRoot
    - RelationGetRelationName
    - ItemPointerGetOffsetNumber
    - SpGistPageIsDeleted
    - spgClearPendingList
    - PageGetItem
    - PageIsNew
    - PageGetItemId
    - spgAddPendingTID
    - ItemPointerIsValid
    - elog
    - ReadBufferExtended
    - BufferGetPage
    - UnlockReleaseBuffer
    - vacuumLeafPage
    - ItemPointerGetBlockNumber
    - SpGistPageIsLeaf
    - SpGistSetLastUsedPage
    - 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:
    - spgAddPendingTID
    - ItemPointerIsValid
    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
    - read_stream_begin_relation
    - LockRelationForExtension
    - BufferIsValid
    - RelationTruncate
    - read_stream_end
    - IndexFreeSpaceMapVacuum
    - GetActiveSnapshot
    - spgvacuumpage
    - initSpGistState
    - vacuum_delay_point
    - spgprocesspending
    - read_stream_reset
    - UnlockRelationForExtension
    - RelationGetNumberOfBlocks
    - SpGistUpdateMetaPage
    - read_stream_next_buffer
    linkageType: ''
    returnType: void
    signature: void spgvacuumscan(spgBulkDeleteState *bds)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      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:
    - spgvacuumscan
    - palloc0
    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
      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:
    - spgvacuumscan
    - palloc0
    linkageType: ''
    returnType: IndexBulkDeleteResult
    signature: 'IndexBulkDeleteResult *

      spgvacuumcleanup(IndexVacuumInfo *info, IndexBulkDeleteResult *stats)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:46,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 102
    functionName: spghandler
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - makeNode
    - 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:128,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:129,1
    - Dst: IsPolymorphicType
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:131,1
    - Dst: getBaseType
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:135,1
    - Dst: get_atttype
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:135,1
    - Dst: RelationGetIndexExpressions
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:146,1
    - Dst: list_head
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:147,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:154,1
    - Dst: getBaseType
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:156,1
    - Dst: exprType
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:156,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:156,1
    - Dst: lnext
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:157,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:160,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 2
    argNames:
    - index
    - indexcol
    argTypes:
    - Relation
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 162
    functionName: GetIndexInputType
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - RelationGetIndexExpressions
    - exprType
    - Assert
    - get_atttype
    - list_head
    - lnext
    - IsPolymorphicType
    - elog
    - lfirst
    - getBaseType
    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:172,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:172,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:173,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:174,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:175,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:180,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - desc
    - type
    argTypes:
    - SpGistTypeDesc*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 181
    functionName: fillTypeDesc
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - 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:198,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:202,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:202,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:203,1
    - Dst: IndexRelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:203,1
    - Dst: GetIndexInputType
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:210,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:215,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:216,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:218,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:219,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:228,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:231,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:231,1
    - Dst: IsBinaryCoercible
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:239,1
    - Dst: fillTypeDesc
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:244,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:248,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:248,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:249,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:250,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:251,1
    - Dst: fillTypeDesc
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:253,1
    - Dst: fillTypeDesc
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:261,1
    - Dst: fillTypeDesc
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:262,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:273,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:274,1
    - Dst: SpGistPageGetMeta
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:276,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:276,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:279,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:280,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:284,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 187
    functionDepth: 4
    functionLinenumber: 187
    functionLinenumberEnd: 296
    functionName: spgGetCache
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - LockBuffer
    - RelationGetRelationName
    - GetIndexInputType
    - fillTypeDesc
    - IndexRelationGetNumberOfAttributes
    - index_getprocinfo
    - IndexRelationGetNumberOfKeyAttributes
    - errmsg
    - ReadBuffer
    - FunctionCall2Coll
    - TupleDescAttr
    - MemoryContextAllocZero
    - index_getprocid
    - elog
    - IsBinaryCoercible
    - OidIsValid
    - BufferGetPage
    - UnlockReleaseBuffer
    - Assert
    - SpGistPageGetMeta
    - RelationGetDescr
    - ereport
    - PointerGetDatum
    - errcode
    linkageType: ''
    returnType: SpGistCache
    signature: 'SpGistCache *

      spgGetCache(Relation index)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:321,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:321,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:322,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:325,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:325,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:326,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:339,1
    - Dst: populate_compact_attribute
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:341,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - index
    - keyType
    argTypes:
    - Relation
    - SpGistTypeDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 314
    functionDepth: 4
    functionLinenumber: 314
    functionLinenumberEnd: 344
    functionName: getSpGistTupleDesc
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - CreateTupleDescCopy
    - TupleDescAttr
    - RelationGetDescr
    - TupleDescCompactAttr
    - populate_compact_attribute
    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:355,1
    - Dst: getSpGistTupleDesc
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:364,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:367,1
    - Dst: GetTopTransactionIdIfAny
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - SpGistState*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 347
    functionDepth: 5
    functionLinenumber: 347
    functionLinenumberEnd: 385
    functionName: initSpGistState
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 3
    functionsReached:
    - spgGetCache
    - getSpGistTupleDesc
    - palloc0
    - GetTopTransactionIdIfAny
    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:401,1
    - Dst: SpGistBlockIsFixed
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:410,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:413,1
    - Dst: ConditionalLockBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:419,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:421,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:423,1
    - Dst: SpGistPageIsDeleted
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:426,1
    - Dst: PageIsEmpty
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:426,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:429,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:433,1
    - Dst: ExtendBufferedRel
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:436,1
    - Dst: BMR_REL
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:436,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 393
    functionDepth: 4
    functionLinenumber: 393
    functionLinenumberEnd: 440
    functionName: SpGistNewBuffer
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 1
    functionsReached:
    - ReadBuffer
    - BMR_REL
    - ExtendBufferedRel
    - ReleaseBuffer
    - LockBuffer
    - ConditionalLockBuffer
    - SpGistPageIsDeleted
    - GetFreeIndexPage
    - PageIsEmpty
    - BufferGetPage
    - SpGistBlockIsFixed
    - PageIsNew
    linkageType: ''
    returnType: Buffer
    signature: Buffer SpGistNewBuffer(Relation index)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:458,1
    - Dst: ConditionalLockBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:460,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:462,1
    - Dst: SpGistPageGetMeta
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:463,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:478,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:479,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:483,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 449
    functionDepth: 4
    functionLinenumber: 449
    functionLinenumberEnd: 486
    functionName: SpGistUpdateMetaPage
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 3
    functionsReached:
    - ReadBuffer
    - MarkBufferDirty
    - ReleaseBuffer
    - SpGistPageGetMeta
    - ConditionalLockBuffer
    - BufferGetPage
    - UnlockReleaseBuffer
    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: 491
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 491
    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:515,1
    - Dst: GBUF_REQ_LEAF
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:518,1
    - Dst: GBUF_REQ_NULLS
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:520,1
    - Dst: SpGistNewBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:527,1
    - Dst: SpGistInitBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:528,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:537,1
    - Dst: GBUF_INNER_PARITY
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:538,1
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:552,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:552,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:553,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - index
    - flags
    argTypes:
    - Relation
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 512
    functionDepth: 5
    functionLinenumber: 512
    functionLinenumberEnd: 557
    functionName: allocNewBuffer
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - spgGetCache
    - GBUF_REQ_LEAF
    - GBUF_REQ_NULLS
    - BufferGetBlockNumber
    - UnlockReleaseBuffer
    - SpGistNewBuffer
    - SpGistInitBuffer
    - BufferGetPage
    - PageGetExactFreeSpace
    - GBUF_INNER_PARITY
    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:571,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:576,1
    - Dst: SpGistGetTargetPageFreeSpace
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:585,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:586,1
    - Dst: GET_LUP
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:589,1
    - Dst: allocNewBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:595,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:599,1
    - Dst: SpGistBlockIsFixed
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:599,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:607,1
    - Dst: ConditionalLockBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:609,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:614,1
    - Dst: allocNewBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:616,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:619,1
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:621,1
    - Dst: SpGistPageIsDeleted
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:621,1
    - Dst: PageIsEmpty
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:621,1
    - Dst: GBUF_REQ_LEAF
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:626,1
    - Dst: GBUF_REQ_NULLS
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:628,1
    - Dst: SpGistInitBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:630,1
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:631,1
    - Dst: GBUF_REQ_LEAF
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:640,1
    - Dst: SpGistPageIsLeaf
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:640,1
    - Dst: SpGistPageIsLeaf
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:640,1
    - Dst: GBUF_REQ_NULLS
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:641,1
    - Dst: SpGistPageStoresNulls
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:641,1
    - Dst: SpGistPageStoresNulls
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:641,1
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:643,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:657,1
    - Dst: allocNewBuffer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:662,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 4
    argNames:
    - index
    - flags
    - needSpace
    - isNew
    argTypes:
    - Relation
    - int
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 568
    functionDepth: 6
    functionLinenumber: 568
    functionLinenumberEnd: 663
    functionName: SpGistGetBuffer
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - GBUF_REQ_NULLS
    - ReleaseBuffer
    - SpGistInitBuffer
    - SpGistPageStoresNulls
    - Min
    - GBUF_REQ_LEAF
    - SpGistGetTargetPageFreeSpace
    - SpGistPageIsDeleted
    - PageIsEmpty
    - PageIsNew
    - ReadBuffer
    - spgGetCache
    - GET_LUP
    - elog
    - BufferGetPage
    - PageGetExactFreeSpace
    - UnlockReleaseBuffer
    - Assert
    - ConditionalLockBuffer
    - SpGistBlockIsFixed
    - SpGistPageIsLeaf
    - allocNewBuffer
    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:675,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:678,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:679,1
    - Dst: SpGistBlockIsFixed
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:683,1
    - Dst: SpGistPageIsLeaf
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:686,1
    - Dst: GBUF_INNER_PARITY
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:689,1
    - Dst: SpGistPageStoresNulls
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:690,1
    - Dst: GET_LUP
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:693,1
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:695,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - index
    - buffer
    argTypes:
    - Relation
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 672
    functionDepth: 5
    functionLinenumber: 672
    functionLinenumberEnd: 702
    functionName: SpGistSetLastUsedPage
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 2
    functionsReached:
    - spgGetCache
    - BufferGetBlockNumber
    - SpGistPageStoresNulls
    - GET_LUP
    - BufferGetPage
    - SpGistBlockIsFixed
    - SpGistPageIsLeaf
    - PageGetExactFreeSpace
    - GBUF_INNER_PARITY
    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:712,1
    - Dst: SpGistPageGetOpaque
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:713,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - page
    - f
    argTypes:
    - Page
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 707
    functionDepth: 1
    functionLinenumber: 707
    functionLinenumberEnd: 716
    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:724,1
    - Dst: BufferGetPageSize
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:724,1
    - Dst: SpGistInitPage
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:725,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:725,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - b
    - f
    argTypes:
    - Buffer
    - uint16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 721
    functionDepth: 4
    functionLinenumber: 721
    functionLinenumberEnd: 726
    functionName: SpGistInitBuffer
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 8
    functionsReached:
    - BufferGetPage
    - SpGistInitPage
    - Assert
    - BufferGetPageSize
    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:737,1
    - Dst: SpGistPageGetMeta
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:738,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:739,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - page
    argTypes:
    - Page
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 731
    functionDepth: 2
    functionLinenumber: 731
    functionLinenumberEnd: 753
    functionName: SpGistInitMetapage
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 2
    functionsReached:
    - SpGistPageGetMeta
    - SpGistInitPage
    - memset
    linkageType: ''
    returnType: void
    signature: void SpGistInitMetapage(Page page)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: build_reloptions
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:765,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:768,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - reloptions
    - validate
    argTypes:
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 758
    functionDepth: 4
    functionLinenumber: 758
    functionLinenumberEnd: 769
    functionName: spgoptions
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - build_reloptions
    - lengthof
    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:788,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:790,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - att
    - datum
    argTypes:
    - SpGistTypeDesc*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 778
    functionDepth: 1
    functionLinenumber: 778
    functionLinenumberEnd: 791
    functionName: SpGistGetInnerTypeSize
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - VARSIZE_ANY
    - MAXALIGN
    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:803,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:807,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:808,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:808,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - target
    - att
    - datum
    argTypes:
    - void*
    - SpGistTypeDesc*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 796
    functionDepth: 1
    functionLinenumber: 796
    functionLinenumberEnd: 810
    functionName: memcpyInnerDatum
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - memcpy
    - VARSIZE_ANY
    - DatumGetPointer
    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:848,1
    - Dst: SGLTHDRSZ
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:853,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:855,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - tupleDescriptor
    - datums
    - isnulls
    argTypes:
    - TupleDesc
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 817
    functionDepth: 3
    functionLinenumber: 817
    functionLinenumberEnd: 865
    functionName: SpGistGetLeafTupleSize
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - heap_compute_data_size
    - SGLTHDRSZ
    - MAXALIGN
    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:906,1
    - Dst: SGLTHDRSZ
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:911,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:913,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:923,1
    - Dst: SGLT_SET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:926,1
    - Dst: SGLT_SET_HASNULLMASK
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:936,1
    - Dst: heap_fill_tuple
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:939,1
    - Dst: heap_fill_tuple
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:945,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 4
    argNames:
    - state
    - heapPtr
    - datums
    - isnulls
    argTypes:
    - SpGistState*
    - ItemPointer
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 951
      start: 870
    functionDepth: 4
    functionLinenumber: 870
    functionLinenumberEnd: 951
    functionName: spgFormLeafTuple
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - heap_compute_data_size
    - SGLT_SET_HASNULLMASK
    - heap_fill_tuple
    - palloc0
    - SGLTHDRSZ
    - SGLT_SET_NEXTOFFSET
    - MAXALIGN
    linkageType: ''
    returnType: SpGistLeafTuple
    signature: "SpGistLeafTuple spgFormLeafTuple(SpGistState *state, ItemPointer 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:969,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:976,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:977,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:978,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:981,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:990,1
    - Dst: memcpyInnerDatum
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:993,1
    - Dst: SGNTDATAPTR
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:993,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - state
    - label
    - isnull
    argTypes:
    - SpGistState*
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 996
      start: 959
    functionDepth: 2
    functionLinenumber: 959
    functionLinenumberEnd: 996
    functionName: spgFormNodeTuple
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - errmsg
    - SpGistGetInnerTypeSize
    - ItemPointerSetInvalid
    - ereport
    - palloc0
    - memcpyInnerDatum
    - SGNTDATAPTR
    - errcode
    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:1013,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1021,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1034,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1035,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1036,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1039,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1048,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1051,1
    - Dst: memcpyInnerDatum
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1058,1
    - Dst: SGITDATAPTR
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1058,1
    - Dst: SGITNODEPTR
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1060,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1066,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1066,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1067,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: 1071
      start: 1001
    functionDepth: 2
    functionLinenumber: 1001
    functionLinenumberEnd: 1071
    functionName: spgFormInnerTuple
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - errmsg
    - SGITNODEPTR
    - SpGistGetInnerTypeSize
    - ereport
    - palloc0
    - SGITDATAPTR
    - errhint
    - elog
    - memcpyInnerDatum
    - memcpy
    - IndexTupleSize
    - errcode
    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:1092,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1096,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 4
    argNames:
    - state
    - tupstate
    - blkno
    - offnum
    argTypes:
    - SpGistState*
    - int
    - BlockNumber
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1106
      start: 1084
    functionDepth: 2
    functionLinenumber: 1084
    functionLinenumberEnd: 1106
    functionName: spgFormDeadTuple
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 1
    functionsReached:
    - ItemPointerSet
    - SGLT_SET_NEXTOFFSET
    - ItemPointerSetInvalid
    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:1118,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1133,1
    - Dst: SGLTHDRSZ
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1140,1
    - Dst: index_deform_tuple_internal
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1143,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1151,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: 1152
      start: 1114
    functionDepth: 3
    functionLinenumber: 1114
    functionLinenumberEnd: 1152
    functionName: spgDeformLeafTuple
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - SGLTHDRSZ
    - Assert
    - index_deform_tuple_internal
    - SGLT_GET_HASNULLMASK
    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:1167,1
    - Dst: IndexTupleHasNulls
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1168,1
    - Dst: IndexTupleHasNulls
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1172,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1173,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1180,1
    - Dst: IndexTupleHasNulls
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1183,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1184,1
    - Dst: SGNTDATUM
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1185,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - state
    - innerTuple
    argTypes:
    - SpGistState*
    - SpGistInnerTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1189
      start: 1159
    functionDepth: 1
    functionLinenumber: 1159
    functionLinenumberEnd: 1189
    functionName: spgExtractNodeLabels
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - SGITNODEPTR
    - IndexTupleHasNulls
    - elog
    - SGNTDATUM
    - palloc
    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:1172,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1173,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1174
      start: 1170
    functionDepth: 1
    functionLinenumber: 1170
    functionLinenumberEnd: 1174
    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:1183,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1184,1
    - Dst: SGNTDATUM
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1186
      start: 1181
    functionDepth: 1
    functionLinenumber: 1181
    functionLinenumberEnd: 1186
    functionName: SGITITERATE
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - SGNTDATUM
    - elog
    - 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:1206,1
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1212,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1212,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1215,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1226,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1227,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1255,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1257,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1267,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1273,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1281,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1285,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 40
    argCount: 6
    argNames:
    - state
    - page
    - item
    - size
    - startOffset
    - errorOK
    argTypes:
    - SpGistState*
    - Page
    - Item
    - Size
    - OffsetNumber*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1289
      start: 1202
    functionDepth: 2
    functionLinenumber: 1202
    functionLinenumberEnd: 1289
    functionName: SpGistPageAddNewItem
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - PageIndexTupleDelete
    - PageGetItemId
    - Assert
    - SpGistPageGetOpaque
    - PageAddItem
    - PageGetExactFreeSpace
    - elog
    - PageGetItem
    - PageGetMaxOffsetNumber
    - MAXALIGN
    linkageType: ''
    returnType: OffsetNumber
    signature: "OffsetNumber SpGistPageAddNewItem(SpGistState *state, Page page, Item
      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:1327,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1328,1
    - Dst: get_opclass_opfamily_and_input_type
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1335,1
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1342,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1343,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1350,1
    - Dst: opfamily_can_sort_type
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1355,1
    - Dst: get_op_rettype
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1356,1
    - Dst: ReleaseSysCacheList
      Src: /src/postgres/src/backend/access/spgist/spgutils.c:1363,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: 1368
      start: 1297
    functionDepth: 3
    functionLinenumber: 1297
    functionLinenumberEnd: 1368
    functionName: spgproperty
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgutils.c
    functionUses: 0
    functionsReached:
    - get_op_rettype
    - ReleaseSysCacheList
    - GETSTRUCT
    - SearchSysCacheList1
    - get_index_column_opclass
    - OidIsValid
    - ObjectIdGetDatum
    - get_opclass_opfamily_and_input_type
    - opfamily_can_sort_type
    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
      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: 3
    functionLinenumber: 79
    functionLinenumberEnd: 108
    functionName: addNode
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 0
    functionsReached:
    - SGITDATUM
    - spgFormNodeTuple
    - elog
    - spgFormInnerTuple
    - palloc
    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:170,1
    - Dst: SpGistPageGetOpaque
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:174,1
    - Dst: SpGistPageGetOpaque
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:176,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: 178
      start: 130
    functionDepth: 3
    functionLinenumber: 130
    functionLinenumberEnd: 178
    functionName: spgPageIndexMultiDelete
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 4
    functionsReached:
    - qsort
    - PageAddItem
    - PageIndexMultiDelete
    - spgFormDeadTuple
    - elog
    - memcpy
    - 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:191,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:192,1
    - Dst: spgUpdateNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:194,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - index
    - parent
    - blkno
    - offnum
    argTypes:
    - Relation
    - SPPageDesc*
    - BlockNumber
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 185
    functionDepth: 3
    functionLinenumber: 185
    functionLinenumberEnd: 197
    functionName: saveNodeLink
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 0
    functionsReached:
    - spgUpdateNodeLink
    - MarkBufferDirty
    - PageGetItem
    - 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:217,1
    - Dst: SpGistBlockIsRoot
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:220,1
    - Dst: SGLT_SET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:223,1
    - Dst: SpGistPageAddNewItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:224,1
    - Dst: saveNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:236,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:252,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:253,1
    - Dst: SGLT_SET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:256,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:256,1
    - Dst: SpGistPageAddNewItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:257,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:265,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:266,1
    - Dst: SGLT_SET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:267,1
    - Dst: SGLT_SET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:274,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:275,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:276,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:279,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:287,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:290,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:292,1
    - Dst: XLogBeginInsert
      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: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:299,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:304,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:306,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:308,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:310,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:315,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:319,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: 320
      start: 202
    functionDepth: 5
    functionLinenumber: 202
    functionLinenumberEnd: 320
    functionName: addLeafTuple
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 0
    functionsReached:
    - MarkBufferDirty
    - PageIndexTupleDelete
    - PageSetLSN
    - PageAddItem
    - SpGistBlockIsRoot
    - XLogRegisterData
    - START_CRIT_SECTION
    - SpGistPageAddNewItem
    - PageGetItem
    - RelationNeedsWAL
    - PageGetItemId
    - saveNodeLink
    - elog
    - SGLT_SET_NEXTOFFSET
    - XLogBeginInsert
    - XLogInsert
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    - SGLT_GET_NEXTOFFSET
    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:340,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:352,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:353,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:354,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:355,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:364,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:365,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:365,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:369,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:371,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 4
    argNames:
    - index
    - state
    - current
    - nToSplit
    argTypes:
    - Relation
    - SpGistState*
    - SPPageDesc*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 332
    functionDepth: 2
    functionLinenumber: 332
    functionLinenumberEnd: 377
    functionName: checkSplitConditions
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 0
    functionsReached:
    - SGLT_GET_NEXTOFFSET
    - Assert
    - PageGetItemId
    - SpGistBlockIsRoot
    - elog
    - PageGetItem
    - PageGetMaxOffsetNumber
    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:408,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:409,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:412,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:413,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:414,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:424,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:425,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:426,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:427,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:438,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:439,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:439,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:446,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:448,1
    - Dst: SpGistGetBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:452,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:454,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:455,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:456,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:458,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:460,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:470,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:471,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:472,1
    - Dst: SGLT_SET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:479,1
    - Dst: SpGistPageAddNewItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:481,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:488,1
    - Dst: SGLT_SET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:494,1
    - Dst: SpGistPageAddNewItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:495,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:500,1
    - Dst: spgPageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:508,1
    - Dst: saveNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:514,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:517,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:518,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:520,1
    - Dst: STORE_STATE
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:525,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:534,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:535,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:536,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:538,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:540,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:542,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:543,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:544,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:546,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:548,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:549,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:550,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:553,1
    - Dst: SpGistSetLastUsedPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:556,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:557,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: 558
      start: 386
    functionDepth: 7
    functionLinenumber: 386
    functionLinenumberEnd: 558
    functionName: moveLeafs
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 0
    functionsReached:
    - MarkBufferDirty
    - PageSetLSN
    - SpGistGetBuffer
    - STORE_STATE
    - XLogRegisterData
    - spgPageIndexMultiDelete
    - START_CRIT_SECTION
    - BufferGetBlockNumber
    - SpGistPageAddNewItem
    - memcpy
    - PageGetItem
    - RelationNeedsWAL
    - PageGetItemId
    - saveNodeLink
    - elog
    - BufferGetPage
    - palloc
    - SGLT_SET_NEXTOFFSET
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - Assert
    - XLogBeginInsert
    - XLogInsert
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    - SpGistSetLastUsedPage
    - SGLT_GET_NEXTOFFSET
    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:573,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:574,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:575,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:576,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:576,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:577,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - current
    - position
    - blkno
    - offnum
    argTypes:
    - SPPageDesc*
    - OffsetNumber
    - BlockNumber
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 567
    functionDepth: 3
    functionLinenumber: 567
    functionLinenumberEnd: 578
    functionName: setRedirectionTuple
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 0
    functionsReached:
    - Assert
    - ItemPointerSet
    - PageGetItemId
    - ItemPointerGetBlockNumber
    - PageGetItem
    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
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:641,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 4
    argNames:
    - in
    - out
    - tooBig
    - includeNew
    argTypes:
    - spgPickSplitIn*
    - spgPickSplitOut*
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 598
    functionDepth: 0
    functionLinenumber: 598
    functionLinenumberEnd: 649
    functionName: checkAllTheSame
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 0
    functionsReached:
    - palloc
    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:722,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:724,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:725,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:726,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:727,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:728,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:729,1
    - Dst: STORE_STATE
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:731,1
    - Dst: SpGistBlockIsRoot
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:742,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:753,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:754,1
    - Dst: SGLTDATUM
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:758,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:767,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:778,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:779,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:780,1
    - Dst: SGLTDATUM
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:784,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:790,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:796,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:797,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:797,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:803,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:805,1
    - Dst: SGLTDATUM
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:817,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:821,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:828,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:829,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:831,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:832,1
    - Dst: spgDeformLeafTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:841,1
    - Dst: spgFormLeafTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:850,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:865,1
    - Dst: spgDeformLeafTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:874,1
    - Dst: spgFormLeafTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:886,1
    - Dst: checkAllTheSame
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:900,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:921,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:922,1
    - Dst: spgFormNodeTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:934,1
    - Dst: spgFormInnerTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:936,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:957,1
    - Dst: SpGistBlockIsRoot
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:972,1
    - Dst: SpGistPageGetFreeSpace
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:973,1
    - Dst: SpGistGetBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:982,1
    - Dst: GBUF_INNER_PARITY
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:983,1
    - Dst: SpGistBlockIsRoot
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1012,1
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1013,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1040,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1041,1
    - Dst: SpGistGetBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1050,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1052,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1061,1
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1064,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1064,1
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1097,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1097,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1112,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1117,1
    - Dst: SpGistBlockIsRoot
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1131,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1133,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1136,1
    - Dst: SpGistBlockIsRoot
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1143,1
    - Dst: SpGistPageGetOpaque
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1151,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1152,1
    - Dst: SpGistInitBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1154,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1161,1
    - Dst: spgPageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1177,1
    - Dst: spgPageIndexMultiDelete
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1190,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1214,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1219,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1221,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1221,1
    - Dst: SGLT_SET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1222,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1222,1
    - Dst: SGLT_SET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1225,1
    - Dst: SpGistPageAddNewItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1228,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1228,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1235,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1238,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1249,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1263,1
    - Dst: SpGistPageAddNewItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1270,1
    - Dst: saveNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1280,1
    - Dst: setRedirectionTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1286,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1290,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1297,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1301,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1302,1
    - Dst: SpGistPageAddNewItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1304,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1309,1
    - Dst: saveNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1317,1
    - Dst: setRedirectionTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1323,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1327,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1335,1
    - Dst: SpGistBlockIsRoot
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1335,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1336,1
    - Dst: SpGistInitBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1338,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1343,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1346,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1354,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1360,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1365,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:1374,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1376,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1377,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1380,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1385,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1389,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1394,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1401,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1407,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1409,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1413,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1418,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1420,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1425,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1427,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1430,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1434,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1438,1
    - Dst: SpGistSetLastUsedPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1443,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1444,1
    - Dst: SpGistSetLastUsedPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1448,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1449,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: 1453
      start: 676
    functionDepth: 7
    functionLinenumber: 676
    functionLinenumberEnd: 1453
    functionName: doPickSplit
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 1
    functionsReached:
    - MarkBufferDirty
    - PageSetLSN
    - ItemPointerSet
    - SpGistGetBuffer
    - PageAddItem
    - SpGistBlockIsRoot
    - setRedirectionTuple
    - SpGistInitBuffer
    - STORE_STATE
    - XLogRegisterData
    - spgPageIndexMultiDelete
    - Min
    - START_CRIT_SECTION
    - BufferGetBlockNumber
    - ItemPointerGetOffsetNumber
    - checkAllTheSame
    - END_CRIT_SECTION
    - SpGistPageAddNewItem
    - index_getprocinfo
    - memcpy
    - PageGetItem
    - GBUF_INNER_PARITY
    - SpGistPageGetOpaque
    - RelationNeedsWAL
    - SGLTDATUM
    - PageGetItemId
    - BufferIsValid
    - FunctionCall2Coll
    - SpGistPageGetFreeSpace
    - ItemPointerIsValid
    - saveNodeLink
    - elog
    - spgFormLeafTuple
    - palloc
    - BufferGetPage
    - SGLT_SET_NEXTOFFSET
    - PageGetMaxOffsetNumber
    - PageGetExactFreeSpace
    - UnlockReleaseBuffer
    - Assert
    - spgDeformLeafTuple
    - XLogBeginInsert
    - memset
    - XLogInsert
    - palloc0
    - PointerGetDatum
    - spgFormNodeTuple
    - XLogRegisterBuffer
    - spgFormInnerTuple
    - ItemPointerGetBlockNumber
    - SpGistSetLastUsedPage
    - SGLT_GET_NEXTOFFSET
    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: 948
      start: 945
    functionDepth: 0
    functionLinenumber: 945
    functionLinenumberEnd: 948
    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:1470,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1471,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1489,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1493,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1495,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1496,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: 1507
      start: 1458
    functionDepth: 6
    functionLinenumber: 1458
    functionLinenumberEnd: 1507
    functionName: spgMatchNodeAction
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 0
    functionsReached:
    - ItemPointerGetOffsetNumber
    - ItemPointerIsValid
    - elog
    - ItemPointerGetBlockNumber
    - SpGistSetLastUsedPage
    - UnlockReleaseBuffer
    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: 1486
      start: 1482
    functionDepth: 0
    functionLinenumber: 1482
    functionLinenumberEnd: 1486
    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:1522,1
    - Dst: SpGistPageStoresNulls
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1522,1
    - Dst: addNode
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1525,1
    - Dst: STORE_STATE
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1528,1
    - Dst: PageGetExactFreeSpace
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1540,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1546,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1548,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1549,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1552,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1555,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1557,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1561,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1562,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1563,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1565,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1567,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1569,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1572,1
    - Dst: SpGistBlockIsRoot
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1587,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1588,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1589,1
    - Dst: SpGistGetBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1600,1
    - Dst: GBUF_INNER_PARITY
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1601,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1604,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1605,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1616,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1629,1
    - Dst: SpGistPageAddNewItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1633,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1637,1
    - Dst: saveNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1640,1
    - Dst: spgFormDeadTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1650,1
    - Dst: spgFormDeadTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1653,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1656,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1657,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1660,1
    - Dst: SpGistPageGetOpaque
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1664,1
    - Dst: SpGistPageGetOpaque
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1666,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1668,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1670,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1675,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1678,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1683,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1686,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1688,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1689,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1691,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1694,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1695,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1696,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1699,1
    - Dst: SpGistSetLastUsedPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1705,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1706,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: 1709
      start: 1512
    functionDepth: 7
    functionLinenumber: 1512
    functionLinenumberEnd: 1709
    functionName: spgAddNodeAction
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 0
    functionsReached:
    - MarkBufferDirty
    - PageIndexTupleDelete
    - PageSetLSN
    - SpGistGetBuffer
    - PageAddItem
    - addNode
    - SpGistBlockIsRoot
    - STORE_STATE
    - XLogRegisterData
    - SpGistPageStoresNulls
    - START_CRIT_SECTION
    - BufferGetBlockNumber
    - spgFormDeadTuple
    - SpGistPageAddNewItem
    - GBUF_INNER_PARITY
    - RelationNeedsWAL
    - SpGistPageGetOpaque
    - saveNodeLink
    - elog
    - BufferGetPage
    - PageGetExactFreeSpace
    - UnlockReleaseBuffer
    - Assert
    - XLogBeginInsert
    - XLogInsert
    - XLogRegisterBuffer
    - END_CRIT_SECTION
    - SpGistSetLastUsedPage
    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:1730,1
    - Dst: SpGistPageStoresNulls
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1730,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1735,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1740,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1747,1
    - Dst: spgFormNodeTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1758,1
    - Dst: spgFormInnerTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1761,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1769,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1776,1
    - Dst: spgFormInnerTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1782,1
    - Dst: SpGistBlockIsRoot
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1800,1
    - Dst: SpGistPageGetFreeSpace
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1801,1
    - Dst: SpGistGetBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1808,1
    - Dst: GBUF_INNER_PARITY
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1809,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1814,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1819,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1820,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1824,1
    - Dst: SpGistPageAddNewItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1834,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1841,1
    - Dst: SpGistPageAddNewItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1843,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1843,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1846,1
    - Dst: spgUpdateNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1857,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1859,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1860,1
    - Dst: spgUpdateNodeLink
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1861,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1864,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1866,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1870,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1871,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1872,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1873,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1875,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1883,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1886,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1888,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1892,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1892,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1896,1
    - Dst: SpGistSetLastUsedPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1901,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1902,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: 1904
      start: 1714
    functionDepth: 7
    functionLinenumber: 1714
    functionLinenumberEnd: 1904
    functionName: spgSplitNodeAction
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 0
    functionsReached:
    - MarkBufferDirty
    - PageIndexTupleDelete
    - PageSetLSN
    - SpGistGetBuffer
    - PageAddItem
    - SpGistBlockIsRoot
    - XLogRegisterData
    - SpGistPageStoresNulls
    - START_CRIT_SECTION
    - BufferGetBlockNumber
    - END_CRIT_SECTION
    - SpGistPageAddNewItem
    - PageGetItem
    - GBUF_INNER_PARITY
    - RelationNeedsWAL
    - PageGetItemId
    - SpGistPageGetFreeSpace
    - elog
    - BufferGetPage
    - palloc
    - UnlockReleaseBuffer
    - Assert
    - XLogBeginInsert
    - XLogInsert
    - spgFormNodeTuple
    - XLogRegisterBuffer
    - spgFormInnerTuple
    - spgUpdateNodeLink
    - SpGistSetLastUsedPage
    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: 1780
      start: 1777
    functionDepth: 0
    functionLinenumber: 1777
    functionLinenumberEnd: 1780
    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:1934,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1948,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1948,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1952,1
    - Dst: FunctionCall1Coll
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1954,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1960,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1964,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1964,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1977,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1978,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1978,1
    - Dst: SpGistGetLeafTupleSize
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1989,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:1999,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2000,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2001,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2004,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2005,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2028,1
    - Dst: INTERRUPTS_PENDING_CONDITION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2044,1
    - Dst: SpGistGetBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2059,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2061,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2063,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2068,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2069,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2074,1
    - Dst: ConditionalLockBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2087,1
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2089,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2090,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2099,1
    - Dst: SpGistPageStoresNulls
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2102,1
    - Dst: SpGistPageStoresNulls
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2103,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2104,1
    - Dst: SpGistPageIsLeaf
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2107,1
    - Dst: spgFormLeafTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2113,1
    - Dst: SpGistPageGetFreeSpace
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2115,1
    - Dst: addLeafTuple
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2118,1
    - Dst: checkSplitConditions
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2123,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2132,1
    - Dst: moveLeafs
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2133,1
    - Dst: doPickSplit
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2139,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2144,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2149,1
    - Dst: SpGistPageIsLeaf
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2149,1
    - Dst: INTERRUPTS_PENDING_CONDITION
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2170,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2176,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2177,1
    - Dst: SGITDATUM
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2184,1
    - Dst: spgExtractNodeLabels
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2186,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2188,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2193,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2195,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2196,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2212,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2215,1
    - Dst: spgMatchNodeAction
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2223,1
    - Dst: SpGistGetLeafTupleSize
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2232,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2276,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2277,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2278,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2281,1
    - Dst: errhint
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2282,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2295,1
    - Dst: spgAddNodeAction
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2297,1
    - Dst: spgSplitNodeAction
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2310,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2317,1
    - Dst: SpGistSetLastUsedPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2330,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2331,1
    - Dst: SpGistSetLastUsedPage
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2336,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2337,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2346,1
    - Dst: INTERRUPTS_CAN_BE_PROCESSED
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2346,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/spgist/spgdoinsert.c:2354,1
    CyclomaticComplexity: 52
    EdgeCount: 52
    ICount: 163
    argCount: 5
    argNames:
    - index
    - state
    - heapPtr
    - datums
    - isnulls
    argTypes:
    - Relation
    - SpGistState*
    - ItemPointer
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2357
      start: 1913
    functionDepth: 8
    functionLinenumber: 1913
    functionLinenumberEnd: 2357
    functionName: spgdoinsert
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgdoinsert.c
    functionUses: 2
    functionsReached:
    - spgSplitNodeAction
    - SpGistGetBuffer
    - CHECK_FOR_INTERRUPTS
    - SpGistGetLeafTupleSize
    - ReleaseBuffer
    - LockBuffer
    - doPickSplit
    - errhint
    - INTERRUPTS_CAN_BE_PROCESSED
    - SpGistPageStoresNulls
    - RelationGetRelationName
    - pg_prng_uint64_range
    - Min
    - pfree
    - BufferGetBlockNumber
    - INTERRUPTS_PENDING_CONDITION
    - FunctionCall1Coll
    - index_getprocinfo
    - PageGetItem
    - errmsg
    - ReadBuffer
    - spgAddNodeAction
    - PageGetItemId
    - spgExtractNodeLabels
    - FunctionCall2Coll
    - index_getprocid
    - SpGistPageGetFreeSpace
    - SGITDATUM
    - elog
    - addLeafTuple
    - OidIsValid
    - BufferGetPage
    - PG_DETOAST_DATUM
    - spgFormLeafTuple
    - UnlockReleaseBuffer
    - spgMatchNodeAction
    - Assert
    - memset
    - ConditionalLockBuffer
    - ereport
    - PointerGetDatum
    - checkSplitConditions
    - moveLeafs
    - TupleDescCompactAttr
    - SpGistPageIsLeaf
    - SpGistSetLastUsedPage
    - errcode
    linkageType: ''
    returnType: bool
    signature: "bool spgdoinsert(Relation index, SpGistState *state,\n\t\t\tItemPointer
      heapPtr, Datum *datums, bool *isnulls)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:31,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 38
    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: 51
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 51
    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:56,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:57,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:58,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:62,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:64,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:65,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:67,1
    - Dst: getSide
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:71,1
    - Dst: PointPGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:73,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:75,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 53
    functionDepth: 3
    functionLinenumber: 53
    functionLinenumberEnd: 76
    functionName: spg_kd_choose
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c
    functionUses: 0
    functionsReached:
    - DatumGetPointP
    - DatumGetFloat8
    - Assert
    - PG_GETARG_POINTER
    - getSide
    - PG_RETURN_VOID
    - elog
    - PointPGetDatum
    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: 93
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 93
    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: 104
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 104
    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:110,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:111,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:117,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:120,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:124,1
    - Dst: Float8GetDatum
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:130,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:135,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:136,1
    - Dst: PointPGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:153,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:156,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 107
    functionDepth: 2
    functionLinenumber: 107
    functionLinenumberEnd: 157
    functionName: spg_kd_picksplit
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c
    functionUses: 0
    functionsReached:
    - DatumGetPointP
    - qsort
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - Float8GetDatum
    - PointPGetDatum
    - palloc
    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:162,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:163,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:169,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:170,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:173,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:175,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:182,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:188,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:192,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:198,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:200,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:205,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:207,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:213,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:218,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:228,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:232,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:234,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:239,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:241,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:246,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:260,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:262,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:276,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:277,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:281,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:292,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:322,1
    - Dst: box_copy
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:323,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:325,1
    - Dst: spg_key_orderbys_distances
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:329,1
    - Dst: BoxPGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:329,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:338,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c:342,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 105
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 159
    functionDepth: 3
    functionLinenumber: 159
    functionLinenumberEnd: 343
    functionName: spg_kd_inner_consistent
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgkdtreeproc.c
    functionUses: 0
    functionsReached:
    - DatumGetPointP
    - Assert
    - DatumGetFloat8
    - MemoryContextSwitchTo
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - spg_key_orderbys_distances
    - box_copy
    - FPgt
    - BoxPGetDatum
    - elog
    - DatumGetBoxP
    - palloc
    - FPlt
    - 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_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 106
    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:117,1
    - Dst: SET_VARSIZE_SHORT
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:121,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:123,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:127,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:128,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:131,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - data
    - datalen
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 132
    functionName: formTextDatum
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgtextproc.c
    functionUses: 2
    functionsReached:
    - PointerGetDatum
    - SET_VARSIZE_SHORT
    - memcpy
    - palloc
    - SET_VARSIZE
    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: 150
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 150
    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:166,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - nodeLabels
    - nNodes
    - c
    - i
    argTypes:
    - Datum*
    - int
    - int16
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 181
    functionName: searchChar
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgtextproc.c
    functionUses: 1
    functionsReached:
    - DatumGetInt16
    linkageType: ''
    returnType: bool
    signature: bool searchChar(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:186,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:187,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:188,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:189,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:190,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:200,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:202,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:203,1
    - Dst: commonPrefix
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:205,1
    - Dst: formTextDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:230,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:234,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:236,1
    - Dst: formTextDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:248,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:252,1
    - Dst: searchChar
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:265,1
    - Dst: formTextDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:283,1
    - Dst: formTextDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:287,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:306,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:307,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:315,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:319,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 61
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 320
    functionName: spg_text_choose
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgtextproc.c
    functionUses: 0
    functionsReached:
    - formTextDatum
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - DatumGetTextPP
    - searchChar
    - VARSIZE_ANY_EXHDR
    - commonPrefix
    - VARDATA_ANY
    - palloc
    - 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:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 323
    functionDepth: 1
    functionLinenumber: 323
    functionLinenumberEnd: 330
    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:335,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:336,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:337,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:343,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:346,1
    - Dst: commonPrefix
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:347,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:347,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:348,1
    - Dst: VARSIZE_ANY_EXHDR
      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: Min
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:360,1
    - Dst: formTextDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:370,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:370,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:374,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:378,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:380,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:381,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:393,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:397,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:398,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:399,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:403,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:408,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:412,1
    - Dst: formTextDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:413,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:413,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:414,1
    - Dst: formTextDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:416,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:422,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 332
    functionDepth: 1
    functionLinenumber: 332
    functionLinenumberEnd: 423
    functionName: spg_text_picksplit
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgtextproc.c
    functionUses: 0
    functionsReached:
    - Min
    - formTextDatum
    - qsort
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - DatumGetTextPP
    - VARSIZE_ANY_EXHDR
    - commonPrefix
    - VARDATA_ANY
    - palloc
    - 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:428,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:429,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:430,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:430,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:449,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:450,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:451,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:456,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:457,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:461,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:462,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:465,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:465,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:466,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:469,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:469,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:470,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:479,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:480,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:481,1
    - Dst: DatumGetInt16
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:486,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:496,1
    - Dst: SPG_IS_COLLATION_AWARE_STRATEGY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:515,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:523,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:524,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:526,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:526,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:526,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:527,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:550,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:563,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:565,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:565,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:570,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 69
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 425
    functionDepth: 1
    functionLinenumber: 425
    functionLinenumberEnd: 571
    functionName: spg_text_inner_consistent
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgtextproc.c
    functionUses: 0
    functionsReached:
    - datumCopy
    - pg_newlocale_from_collation
    - Min
    - memcmp
    - DatumGetInt16
    - memcpy
    - DatumGetPointer
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - VARDATA
    - elog
    - VARSIZE_ANY_EXHDR
    - palloc
    - SET_VARSIZE
    - Assert
    - SPG_IS_COLLATION_AWARE_STRATEGY
    - DatumGetTextPP
    - PointerGetDatum
    - PG_GET_COLLATION
    - VARDATA_ANY
    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:576,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:577,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:589,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:592,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:593,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:595,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:596,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:599,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:600,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:602,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:603,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:607,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:609,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:610,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:612,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:612,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:613,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:614,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:614,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:615,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:616,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:624,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:625,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:635,1
    - Dst: DirectFunctionCall2Coll
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:635,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:636,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:638,1
    - Dst: SPG_IS_COLLATION_AWARE_STRATEGY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:646,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:652,1
    - Dst: pg_verifymbstr
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:652,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:654,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:655,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:656,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:661,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:661,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:661,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:690,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/spgist/spgtextproc.c:700,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 65
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 573
    functionDepth: 1
    functionLinenumber: 573
    functionLinenumberEnd: 701
    functionName: spg_text_leaf_consistent
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgtextproc.c
    functionUses: 0
    functionsReached:
    - Min
    - varstr_cmp
    - memcmp
    - DatumGetBool
    - memcpy
    - DatumGetPointer
    - PG_GETARG_POINTER
    - VARDATA
    - elog
    - VARSIZE_ANY_EXHDR
    - palloc
    - SET_VARSIZE
    - Assert
    - DirectFunctionCall2Coll
    - SPG_IS_COLLATION_AWARE_STRATEGY
    - PG_RETURN_BOOL
    - DatumGetTextPP
    - PointerGetDatum
    - PG_GET_COLLATION
    - VARDATA_ANY
    - pg_verifymbstr
    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:63,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:63,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:65,1
    - Dst: isnan
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:67,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 24
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - pairingheap_node*
    - pairingheap_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 81
    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:90,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:91,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:91,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:94,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:97,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:99,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - so
    - item
    argTypes:
    - SpGistScanOpaque
    - SpGistSearchItem*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 100
    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:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - so
    - item
    argTypes:
    - SpGistScanOpaque
    - SpGistSearchItem*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 111
    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:118,1
    - Dst: SizeOfSpGistSearchItem
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:118,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:123,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - so
    - isnull
    - distances
    argTypes:
    - SpGistScanOpaque
    - bool
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 127
    functionName: spgAllocSearchItem
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - memcpy
    - palloc
    - SizeOfSpGistSearchItem
    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:133,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:135,1
    - Dst: spgAddSearchItemToQueue
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - so
    - isnull
    argTypes:
    - SpGistScanOpaque
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 129
    functionDepth: 2
    functionLinenumber: 129
    functionLinenumberEnd: 147
    functionName: spgAddStartItem
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - ItemPointerSet
    - spgAddSearchItemToQueue
    - spgAllocSearchItem
    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:158,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:160,1
    - Dst: pairingheap_allocate
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:163,1
    - Dst: spgAddStartItem
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:167,1
    - Dst: spgAddStartItem
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:171,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:173,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:182,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:191,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - so
    argTypes:
    - SpGistScanOpaque
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 153
    functionDepth: 3
    functionLinenumber: 153
    functionLinenumberEnd: 194
    functionName: resetSpGistScanOpaque
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - pfree
    - MemoryContextSwitchTo
    - MemoryContextReset
    - spgAddStartItem
    - pairingheap_allocate
    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: 301
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 301
    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:310,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:312,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:314,1
    - Dst: initSpGistState
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:317,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:319,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:322,1
    - Dst: getSpGistTupleDesc
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:333,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:340,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:342,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:346,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:348,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:353,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:357,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:359,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:360,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:364,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:365,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:368,1
    - Dst: index_getprocinfo
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:369,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 3
    argNames:
    - rel
    - keysz
    - orderbysz
    argTypes:
    - Relation
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 303
    functionDepth: 6
    functionLinenumber: 303
    functionLinenumberEnd: 377
    functionName: spgbeginscan
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - RelationGetIndexScan
    - getSpGistTupleDesc
    - memset
    - initSpGistState
    - palloc0
    - index_getprocinfo
    - AllocSetContextCreate
    - fmgr_info_copy
    - palloc
    - 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:387,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:394,1
    - Dst: get_func_rettype
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:412,1
    - Dst: spgPrepareScanKeys
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:417,1
    - Dst: resetSpGistScanOpaque
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:420,1
    - Dst: pgstat_count_index_scan
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:423,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: 426
      start: 379
    functionDepth: 4
    functionLinenumber: 379
    functionLinenumberEnd: 426
    functionName: spgrescan
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - spgPrepareScanKeys
    - resetSpGistScanOpaque
    - pgstat_count_index_scan
    - get_func_rettype
    - memcpy
    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:433,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:434,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:437,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:440,1
    - Dst: FreeTupleDesc
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:441,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:448,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:449,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:450,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:451,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:452,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:453,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:456,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 428
    functionDepth: 3
    functionLinenumber: 428
    functionLinenumberEnd: 457
    functionName: spgendscan
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - pfree
    - RelationGetDescr
    - MemoryContextDelete
    - FreeTupleDesc
    linkageType: ''
    returnType: void
    signature: void spgendscan(IndexScanDesc scan)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: spgAllocSearchItem
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:467,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:481,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:490,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:491,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: 507
      start: 462
    functionDepth: 2
    functionLinenumber: 462
    functionLinenumberEnd: 507
    functionName: spgNewHeapItem
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - memcpy
    - palloc
    - datumCopy
    - spgAllocSearchItem
    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:529,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:542,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:548,1
    - Dst: SGLTDATUM
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:553,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:560,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:560,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:562,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:563,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:569,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:578,1
    - Dst: spgNewHeapItem
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:579,1
    - Dst: spgAddSearchItemToQueue
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:587,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:589,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:594,1
    - Dst: storeRes
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:595,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: 602
      start: 515
    functionDepth: 3
    functionLinenumber: 515
    functionLinenumberEnd: 602
    functionName: spgLeafTest
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - SGLTDATUM
    - spgNewHeapItem
    - FunctionCall2Coll
    - storeRes
    - spgAddSearchItemToQueue
    - 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:615,1
    - Dst: SGITDATUM
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:623,1
    - Dst: spgExtractNodeLabels
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:625,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 4
    argNames:
    - in
    - so
    - item
    - innerTuple
    argTypes:
    - spgInnerConsistentIn*
    - SpGistScanOpaque
    - SpGistSearchItem*
    - SpGistInnerTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 605
    functionDepth: 2
    functionLinenumber: 605
    functionLinenumberEnd: 626
    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:635,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:644,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: 664
      start: 628
    functionDepth: 2
    functionLinenumber: 628
    functionLinenumberEnd: 664
    functionName: spgMakeInnerItem
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - datumCopy
    - spgAllocSearchItem
    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:670,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:675,1
    - Dst: spgInitInnerConsistentIn
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:681,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:684,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:686,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:687,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:693,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:700,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:706,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:713,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:721,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:725,1
    - Dst: spgMakeInnerItem
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:734,1
    - Dst: spgAddSearchItemToQueue
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:737,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:741,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 4
    argNames:
    - so
    - item
    - innerTuple
    - isnull
    argTypes:
    - SpGistScanOpaque
    - SpGistSearchItem*
    - SpGistInnerTuple
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 742
      start: 666
    functionDepth: 3
    functionLinenumber: 666
    functionLinenumberEnd: 742
    functionName: spgInnerTest
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - spgInitInnerConsistentIn
    - FunctionCall2Coll
    - memset
    - spgAddSearchItemToQueue
    - ItemPointerIsValid
    - PointerGetDatum
    - elog
    - palloc
    - spgMakeInnerItem
    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: 711
      start: 708
    functionDepth: 0
    functionLinenumber: 708
    functionLinenumberEnd: 711
    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:748,1
    - Dst: pairingheap_remove_first
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:752,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - so
    argTypes:
    - SpGistScanOpaque
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 745
    functionDepth: 1
    functionLinenumber: 745
    functionLinenumberEnd: 753
    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:771,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:771,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:780,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:780,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:783,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:783,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:790,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:790,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:792,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:792,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:798,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:802,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:802,1
    - Dst: spgLeafTest
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:804,1
    - Dst: SGLT_GET_NEXTOFFSET
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:806,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: 807
      start: 762
    functionDepth: 4
    functionLinenumber: 762
    functionLinenumberEnd: 807
    functionName: spgTestLeafTuple
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - PageGetItemId
    - ItemPointerGetOffsetNumber
    - ItemPointerIsValid
    - elog
    - ItemPointerGetBlockNumber
    - spgLeafTest
    - PageGetItem
    - SGLT_GET_NEXTOFFSET
    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:825,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:832,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:837,1
    - Dst: storeRes
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:838,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:845,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:846,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:852,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:853,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:855,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:857,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:858,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:859,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:864,1
    - Dst: SpGistPageStoresNulls
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:866,1
    - Dst: SpGistPageIsLeaf
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:868,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:871,1
    - Dst: SpGistBlockIsRoot
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:873,1
    - Dst: spgTestLeafTuple
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:877,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:886,1
    - Dst: spgTestLeafTuple
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:887,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:898,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:898,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:906,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:906,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:910,1
    - Dst: spgInnerTest
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:914,1
    - Dst: spgFreeSearchItem
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:919,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:921,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:925,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: 926
      start: 816
    functionDepth: 5
    functionLinenumber: 816
    functionLinenumberEnd: 926
    functionName: spgWalk
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - CHECK_FOR_INTERRUPTS
    - MemoryContextReset
    - LockBuffer
    - SpGistBlockIsRoot
    - spgGetNextQueueItem
    - SpGistPageStoresNulls
    - spgFreeSearchItem
    - BufferGetBlockNumber
    - ItemPointerGetOffsetNumber
    - spgTestLeafTuple
    - storeRes
    - PageGetItem
    - ReadBuffer
    - PageGetItemId
    - elog
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - Assert
    - spgInnerTest
    - ItemPointerGetBlockNumber
    - SpGistPageIsLeaf
    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:936,1
    - Dst: tbm_add_tuples
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:937,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: 939
      start: 930
    functionDepth: 1
    functionLinenumber: 930
    functionLinenumberEnd: 939
    functionName: storeBitmap
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - tbm_add_tuples
    - Assert
    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:952,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - scan
    - tbm
    argTypes:
    - IndexScanDesc
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 941
    functionDepth: 6
    functionLinenumber: 941
    functionLinenumberEnd: 955
    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:964,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:976,1
    - Dst: spgDeformLeafTuple
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:1012,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:1018,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: 1023
      start: 958
    functionDepth: 5
    functionLinenumber: 958
    functionLinenumberEnd: 1023
    functionName: storeGettuple
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - heap_form_tuple
    - Assert
    - spgDeformLeafTuple
    - palloc
    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:1031,1
    - Dst: index_store_float8_orderby_distances
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:1046,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:1060,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:1069,1
    - Dst: spgWalk
      Src: /src/postgres/src/backend/access/spgist/spgscan.c:1073,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - IndexScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1080
      start: 1025
    functionDepth: 6
    functionLinenumber: 1025
    functionLinenumberEnd: 1080
    functionName: spggettuple
    functionSourceFile: /src/postgres/src/backend/access/spgist/spgscan.c
    functionUses: 0
    functionsReached:
    - spgWalk
    - index_store_float8_orderby_distances
    - elog
    - pfree
    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:1092,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - index
    - attno
    argTypes:
    - Relation
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1095
      start: 1082
    functionDepth: 5
    functionLinenumber: 1082
    functionLinenumberEnd: 1095
    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:
    - format_operator
    - HeapTupleIsValid
    - get_opfamily_name
    - NameStr
    - ReleaseSysCache
    - identify_opfamily_groups
    - GETSTRUCT
    - check_amproc_signature
    - format_procedure
    - errmsg
    - get_op_rettype
    - elog
    - check_amoptsproc_signature
    - OidIsValid
    - get_opfamily_proc
    - check_amop_signature
    - ObjectIdGetDatum
    - lfirst
    - ereport
    - SearchSysCache1
    - SearchSysCacheList1
    - ReleaseCatCacheList
    - errcode
    - opfamily_can_sort_type
    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:
    - errmsg
    - errcode
    - lfirst
    - ereport
    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:
    - errmsg
    - errcode
    - lfirst
    - ereport
    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
      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:
    - MarkBufferDirty
    - PageSetLSN
    - MemoryContextSwitchTo
    - initGISTstate
    - RelationGetRelationName
    - gist_indexsortbuild
    - START_CRIT_SECTION
    - MemoryContextDelete
    - BufferGetBlockNumber
    - tuplesort_begin_index_gist
    - GISTInitBuffer
    - RelationGetNumberOfBlocks
    - tuplesort_end
    - IndexRelationGetNumberOfKeyAttributes
    - RelationNeedsWAL
    - table_index_build_scan
    - index_getprocid
    - freeGISTstate
    - elog
    - OidIsValid
    - BufferGetPage
    - palloc
    - gistEmptyAllBuffers
    - UnlockReleaseBuffer
    - Assert
    - gistFreeBuildBuffers
    - log_newpage_range
    - gistNewBuffer
    - END_CRIT_SECTION
    - createTempGistContext
    - tuplesort_performsort
    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:
    - MemoryContextReset
    - MemoryContextSwitchTo
    - tuplesort_putindextuplevalues
    - gistCompressValues
    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
      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:
    - pfree
    - smgr_bulk_start_rel
    - PageSetLSN
    - gist_indexsortbuild_levelstate_flush
    - smgr_bulk_get_buf
    - smgr_bulk_write
    - MemoryContextReset
    - palloc0
    - smgr_bulk_finish
    - gist_indexsortbuild_levelstate_add
    - gistinitpage
    - tuplesort_getindextuple
    - memcpy
    - palloc
    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:
    - gist_indexsortbuild_levelstate_flush
    - gistfillbuffer
    - GistPageGetOpaque
    - palloc0
    - gistinitpage
    - 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
      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
      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:
    - PageSetLSN
    - MemoryContextSwitchTo
    - CHECK_FOR_INTERRUPTS
    - PageAddItem
    - GistPageGetOpaque
    - gistextractpage
    - gistinitpage
    - RelationGetRelationName
    - IndexTupleSize
    - pfree
    - gistSplit
    - gist_indexsortbuild_levelstate_add
    - smgr_bulk_get_buf
    - gistjoinvector
    - smgr_bulk_write
    - gistfillitupvec
    - gistunion
    - elog
    - ItemPointerSetBlockNumber
    - palloc
    - palloc0
    - GistPageIsLeaf
    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:
    - calculatePagesPerBuffer
    - gistGetMaxLevel
    - gistInitParentMap
    - elog
    - TupleDescCompactAttr
    - pow
    - gistInitBuildBuffers
    - MAXALIGN
    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:
    - gistdoinsert
    - gistInitBuffering
    - MemoryContextSwitchTo
    - calculatePagesPerBuffer
    - MemoryContextReset
    - RelationGetSmgr
    - gistFormTuple
    - IndexTupleSize
    - smgrnblocks
    - gistBufferingBuildInsert
    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:
    - gistProcessEmptyingQueue
    - gistProcessItup
    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:
    - ReadBuffer
    - gistbufferinginserttuples
    - PageGetItemId
    - gistMemorizeParent
    - CHECK_FOR_INTERRUPTS
    - Assert
    - LockBuffer
    - gistgetadjusted
    - gistGetNodeBuffer
    - gistPushItupToNodeBuffer
    - BUFFER_OVERFLOWED
    - LEVEL_HAS_BUFFERS
    - ItemPointerGetBlockNumber
    - gistchoose
    - BufferGetPage
    - PageGetItem
    - UnlockReleaseBuffer
    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
      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:
    - gistplacetopage
    - gistMemorizeAllDownlinks
    - LockBuffer
    - list_length
    - BufferGetBlockNumber
    - gistRelocateBuildBuffersOnSplit
    - PageGetItem
    - ReadBuffer
    - gistbufferinginserttuples
    - PageGetItemId
    - gistMemorizeParent
    - elog
    - gistBufferingFindCorrectParent
    - BufferGetPage
    - palloc
    - lfirst
    - UnlockReleaseBuffer
    - PageGetMaxOffsetNumber
    - Assert
    - list_free_deep
    - ItemPointerGetBlockNumber
    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:
    - lfirst
    - gistMemorizeParent
    - BufferGetBlockNumber
    - gistMemorizeAllDownlinks
    - UnlockReleaseBuffer
    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:
    - ReadBuffer
    - PageGetItemId
    - LockBuffer
    - gistGetParent
    - elog
    - gistcheckpage
    - OffsetNumberNext
    - ItemPointerGetBlockNumber
    - BufferGetPage
    - PageGetItem
    - PageGetMaxOffsetNumber
    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:
    - list_delete_first
    - linitial
    - MemoryContextReset
    - gistPopItupFromNodeBuffer
    - 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:
    - MemoryContextSwitchTo
    - list_delete_first
    - linitial
    - lcons
    - gistProcessEmptyingQueue
    - elog
    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:
    - ReadBuffer
    - PageGetItemId
    - LockBuffer
    - PageGetItem
    - ItemPointerGetBlockNumber
    - BufferGetPage
    - GistPageIsLeaf
    - UnlockReleaseBuffer
    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
    - PageGetItemId
    - gistMemorizeParent
    - BufferGetBlockNumber
    - PageGetItem
    - ItemPointerGetBlockNumber
    - BufferGetPage
    - GistPageIsLeaf
    - PageGetMaxOffsetNumber
    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: 2
    functionLinenumber: 67
    functionLinenumberEnd: 90
    functionName: size_box
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - isnan
    - float8_mul
    - float8_mi
    - 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_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:120,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:125,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/gist/gistproc.c:126,1
    - Dst: GIST_LEAF
      Src: /src/postgres/src/backend/access/gist/gistproc.c:132,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/gist/gistproc.c:133,1
    - Dst: gist_box_leaf_consistent
      Src: /src/postgres/src/backend/access/gist/gistproc.c:133,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:133,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/gist/gistproc.c:137,1
    - Dst: rtree_internal_consistent
      Src: /src/postgres/src/backend/access/gist/gistproc.c:137,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:137,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 112
    functionDepth: 2
    functionLinenumber: 112
    functionLinenumberEnd: 140
    functionName: gist_box_consistent
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - gist_box_leaf_consistent
    - PG_GETARG_POINTER
    - rtree_internal_consistent
    - PG_RETURN_BOOL
    - PG_GETARG_BOX_P
    - PG_GETARG_UINT16
    - DatumGetBoxP
    - GIST_LEAF
    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:148,1
    - Dst: float8_gt
      Src: /src/postgres/src/backend/access/gist/gistproc.c:150,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/access/gist/gistproc.c:152,1
    - Dst: float8_gt
      Src: /src/postgres/src/backend/access/gist/gistproc.c:154,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - b
    - addon
    argTypes:
    - BOX*
    - BOX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 156
    functionName: adjustBox
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - float8_lt
    - float8_gt
    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:166,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:167,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistproc.c:174,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:175,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistproc.c:176,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:180,1
    - Dst: adjustBox
      Src: /src/postgres/src/backend/access/gist/gistproc.c:181,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 163
    functionDepth: 3
    functionLinenumber: 163
    functionLinenumberEnd: 186
    functionName: gist_box_union
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - adjustBox
    - DatumGetBoxP
    - memcpy
    - palloc
    - 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:201,1
    - 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: DatumGetBoxP
      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: box_penalty
      Src: /src/postgres/src/backend/access/gist/gistproc.c:207,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 198
    functionDepth: 5
    functionLinenumber: 198
    functionLinenumberEnd: 209
    functionName: gist_box_penalty
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - DatumGetBoxP
    - PG_RETURN_POINTER
    - box_penalty
    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:227,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistproc.c:228,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gist/gistproc.c:231,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:233,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistproc.c:240,1
    - Dst: adjustBox
      Src: /src/postgres/src/backend/access/gist/gistproc.c:244,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistproc.c:253,1
    - Dst: adjustBox
      Src: /src/postgres/src/backend/access/gist/gistproc.c:257,1
    - Dst: BoxPGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:263,1
    - Dst: BoxPGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:264,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 2
    argNames:
    - entryvec
    - v
    argTypes:
    - GistEntryVector*
    - GIST_SPLITVEC*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 215
    functionDepth: 3
    functionLinenumber: 215
    functionLinenumberEnd: 265
    functionName: fallbackSplit
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - BoxPGetDatum
    - OffsetNumberNext
    - DatumGetBoxP
    - adjustBox
    - 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:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - i1
    - i2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 321
    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:332,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - i1
    - i2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 333
    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: 345
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 345
    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:382,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/gist/gistproc.c:382,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/access/gist/gistproc.c:396,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/access/gist/gistproc.c:399,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/access/gist/gistproc.c:402,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/access/gist/gistproc.c:402,1
    - Dst: non_negative
      Src: /src/postgres/src/backend/access/gist/gistproc.c:436,1
    - Dst: non_negative
      Src: /src/postgres/src/backend/access/gist/gistproc.c:436,1
    - Dst: non_negative
      Src: /src/postgres/src/backend/access/gist/gistproc.c:438,1
    - Dst: non_negative
      Src: /src/postgres/src/backend/access/gist/gistproc.c:438,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: 454
      start: 350
    functionDepth: 2
    functionLinenumber: 350
    functionLinenumberEnd: 454
    functionName: g_box_consider_split
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - Min
    - float4_div
    - float8_mi
    - non_negative
    - float8_div
    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:465,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - i1
    - i2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 459
    functionDepth: 1
    functionLinenumber: 459
    functionLinenumberEnd: 466
    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:497,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:498,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gist/gistproc.c:512,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistproc.c:518,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistproc.c:519,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gist/gistproc.c:524,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:526,1
    - Dst: adjustBox
      Src: /src/postgres/src/backend/access/gist/gistproc.c:530,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gist/gistproc.c:545,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:547,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistproc.c:564,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/gist/gistproc.c:566,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/gist/gistproc.c:568,1
    - Dst: float8_eq
      Src: /src/postgres/src/backend/access/gist/gistproc.c:615,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/access/gist/gistproc.c:617,1
    - Dst: float8_le
      Src: /src/postgres/src/backend/access/gist/gistproc.c:630,1
    - Dst: g_box_consider_split
      Src: /src/postgres/src/backend/access/gist/gistproc.c:636,1
    - Dst: float8_eq
      Src: /src/postgres/src/backend/access/gist/gistproc.c:652,1
    - Dst: float8_gt
      Src: /src/postgres/src/backend/access/gist/gistproc.c:654,1
    - Dst: float8_ge
      Src: /src/postgres/src/backend/access/gist/gistproc.c:666,1
    - Dst: g_box_consider_split
      Src: /src/postgres/src/backend/access/gist/gistproc.c:672,1
    - Dst: fallbackSplit
      Src: /src/postgres/src/backend/access/gist/gistproc.c:682,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:683,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistproc.c:695,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistproc.c:696,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/gist/gistproc.c:701,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/access/gist/gistproc.c:702,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistproc.c:709,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gist/gistproc.c:734,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:742,1
    - Dst: float8_le
      Src: /src/postgres/src/backend/access/gist/gistproc.c:754,1
    - Dst: float8_ge
      Src: /src/postgres/src/backend/access/gist/gistproc.c:757,1
    - Dst: PLACE_LEFT
      Src: /src/postgres/src/backend/access/gist/gistproc.c:765,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistproc.c:775,1
    - Dst: float8_ge
      Src: /src/postgres/src/backend/access/gist/gistproc.c:775,1
    - Dst: PLACE_RIGHT
      Src: /src/postgres/src/backend/access/gist/gistproc.c:778,1
    - Dst: ceil
      Src: /src/postgres/src/backend/access/gist/gistproc.c:791,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:799,1
    - Dst: fabs
      Src: /src/postgres/src/backend/access/gist/gistproc.c:800,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/access/gist/gistproc.c:800,1
    - Dst: box_penalty
      Src: /src/postgres/src/backend/access/gist/gistproc.c:800,1
    - Dst: box_penalty
      Src: /src/postgres/src/backend/access/gist/gistproc.c:801,1
    - Dst: qsort
      Src: /src/postgres/src/backend/access/gist/gistproc.c:808,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:815,1
    - Dst: PLACE_LEFT
      Src: /src/postgres/src/backend/access/gist/gistproc.c:822,1
    - Dst: PLACE_RIGHT
      Src: /src/postgres/src/backend/access/gist/gistproc.c:824,1
    - Dst: box_penalty
      Src: /src/postgres/src/backend/access/gist/gistproc.c:828,1
    - Dst: box_penalty
      Src: /src/postgres/src/backend/access/gist/gistproc.c:828,1
    - Dst: PLACE_LEFT
      Src: /src/postgres/src/backend/access/gist/gistproc.c:829,1
    - Dst: PLACE_RIGHT
      Src: /src/postgres/src/backend/access/gist/gistproc.c:831,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:836,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:837,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:838,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 115
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 494
    functionDepth: 5
    functionLinenumber: 494
    functionLinenumberEnd: 839
    functionName: gist_box_picksplit
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - float8_gt
    - float8_ge
    - float8_lt
    - float8_le
    - PG_RETURN_POINTER
    - float8_eq
    - box_penalty
    - float8_mi
    - OffsetNumberNext
    - DatumGetBoxP
    - adjustBox
    - memcpy
    - fabs
    - PLACE_RIGHT
    - qsort
    - PG_GETARG_POINTER
    - g_box_consider_split
    - ceil
    - palloc
    - fallbackSplit
    - Assert
    - PLACE_LEFT
    - memset
    - palloc0
    - PointerGetDatum
    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: 720
      start: 712
    functionDepth: 0
    functionLinenumber: 712
    functionLinenumberEnd: 720
    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: 729
      start: 721
    functionDepth: 0
    functionLinenumber: 721
    functionLinenumberEnd: 729
    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:854,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/access/gist/gistproc.c:855,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:856,1
    - Dst: float8_eq
      Src: /src/postgres/src/backend/access/gist/gistproc.c:859,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: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:865,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 851
    functionDepth: 2
    functionLinenumber: 851
    functionLinenumberEnd: 866
    functionName: gist_box_same
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - float8_eq
    - PG_GETARG_BOX_P
    - PG_RETURN_POINTER
    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:879,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:879,1
    - Dst: PointerGetDatum
      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: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:884,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:884,1
    - Dst: PointerGetDatum
      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: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:889,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:889,1
    - Dst: PointerGetDatum
      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: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:894,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:894,1
    - Dst: PointerGetDatum
      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: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:899,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:899,1
    - Dst: PointerGetDatum
      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: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:904,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:904,1
    - Dst: PointerGetDatum
      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: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:909,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:909,1
    - Dst: PointerGetDatum
      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: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:914,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:914,1
    - Dst: PointerGetDatum
      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: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:919,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:919,1
    - Dst: PointerGetDatum
      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: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:924,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:924,1
    - Dst: PointerGetDatum
      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: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:929,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:929,1
    - Dst: PointerGetDatum
      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: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:934,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:934,1
    - Dst: PointerGetDatum
      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: elog
      Src: /src/postgres/src/backend/access/gist/gistproc.c:939,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 44
    argCount: 3
    argNames:
    - key
    - query
    - strategy
    argTypes:
    - BOX*
    - BOX*
    - StrategyNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 944
      start: 871
    functionDepth: 1
    functionLinenumber: 871
    functionLinenumberEnd: 944
    functionName: gist_box_leaf_consistent
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 1
    functionsReached:
    - DatumGetBool
    - elog
    - DirectFunctionCall2
    - PointerGetDatum
    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:964,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:964,1
    - Dst: PointerGetDatum
      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: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:969,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:969,1
    - Dst: PointerGetDatum
      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: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:974,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:974,1
    - Dst: PointerGetDatum
      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: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:979,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:979,1
    - Dst: PointerGetDatum
      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: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:984,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:984,1
    - Dst: PointerGetDatum
      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: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:990,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:990,1
    - Dst: PointerGetDatum
      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: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:995,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:995,1
    - Dst: PointerGetDatum
      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: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1000,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1000,1
    - Dst: PointerGetDatum
      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: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1005,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1005,1
    - Dst: PointerGetDatum
      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: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1010,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1010,1
    - Dst: PointerGetDatum
      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: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1015,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1015,1
    - Dst: PointerGetDatum
      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: elog
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1020,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 3
    argNames:
    - key
    - query
    - strategy
    argTypes:
    - BOX*
    - BOX*
    - StrategyNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1025
      start: 956
    functionDepth: 1
    functionLinenumber: 956
    functionLinenumberEnd: 1025
    functionName: rtree_internal_consistent
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 1
    functionsReached:
    - DatumGetBool
    - elog
    - DirectFunctionCall2
    - PointerGetDatum
    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:1037,1
    - Dst: DatumGetPolygonP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1042,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1045,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1046,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1048,1
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1049,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1049,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1055,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 1034
    functionDepth: 2
    functionLinenumber: 1034
    functionLinenumberEnd: 1056
    functionName: gist_poly_compress
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - gistentryinit
    - PG_GETARG_POINTER
    - PointerGetDatum
    - PG_RETURN_POINTER
    - memcpy
    - palloc
    - DatumGetPolygonP
    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:1064,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1065,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1066,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1069,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1075,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1076,1
    - Dst: rtree_internal_consistent
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1083,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1083,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1087,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1089,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 1061
    functionDepth: 2
    functionLinenumber: 1061
    functionLinenumberEnd: 1090
    functionName: gist_poly_consistent
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - PG_GETARG_POINTER
    - rtree_internal_consistent
    - PG_RETURN_BOOL
    - PG_GETARG_POLYGON_P
    - PG_GETARG_UINT16
    - DatumGetBoxP
    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:1102,1
    - Dst: DatumGetCircleP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1107,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1110,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1111,1
    - Dst: float8_mi
      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: palloc
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1116,1
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1117,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1117,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1124
      start: 1099
    functionDepth: 2
    functionLinenumber: 1099
    functionLinenumberEnd: 1124
    functionName: gist_circle_compress
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - DatumGetCircleP
    - gistentryinit
    - PG_GETARG_POINTER
    - PointerGetDatum
    - float8_mi
    - palloc
    - float8_pl
    - 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:1132,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1133,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1134,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1137,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1144,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1145,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1152,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1153,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1154,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1155,1
    - Dst: rtree_internal_consistent
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1157,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1157,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1160,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1161
      start: 1129
    functionDepth: 2
    functionLinenumber: 1129
    functionLinenumberEnd: 1161
    functionName: gist_circle_consistent
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - float8_pl
    - PG_GETARG_POINTER
    - rtree_internal_consistent
    - PG_RETURN_BOOL
    - PG_GETARG_UINT16
    - float8_mi
    - DatumGetBoxP
    - PG_GETARG_CIRCLE_P
    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:1170,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1174,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1175,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1176,1
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1180,1
    - Dst: BoxPGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1180,1
    - Dst: PG_RETURN_POINTER
      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
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1187
      start: 1167
    functionDepth: 2
    functionLinenumber: 1167
    functionLinenumberEnd: 1187
    functionName: gist_point_compress
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - DatumGetPointP
    - gistentryinit
    - PG_GETARG_POINTER
    - BoxPGetDatum
    - palloc
    - 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:1198,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1199,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1203,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1205,1
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1208,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1208,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1213
      start: 1195
    functionDepth: 2
    functionLinenumber: 1195
    functionLinenumberEnd: 1213
    functionName: gist_point_fetch
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - gistentryinit
    - PG_GETARG_POINTER
    - PointerGetDatum
    - DatumGetBoxP
    - palloc
    - 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: 1219
      start: 1216
    functionDepth: 0
    functionLinenumber: 1216
    functionLinenumberEnd: 1219
    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:1228,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1239,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1241,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1243,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1245,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1250,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1252,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1254,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1256,1
    - Dst: point_point_distance
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1264,1
    - Dst: point_point_distance
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1266,1
    - Dst: point_point_distance
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1272,1
    - Dst: point_point_distance
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1278,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 39
    argCount: 3
    argNames:
    - isLeaf
    - box
    - point
    argTypes:
    - bool
    - BOX*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1284
      start: 1220
    functionDepth: 2
    functionLinenumber: 1220
    functionLinenumberEnd: 1284
    functionName: computeDistance
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - float8_mi
    - Assert
    - elog
    - 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:1295,1
    - Dst: FPgt
      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: FPlt
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1304,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1310,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1311,1
    - Dst: FPle
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1315,1
    - Dst: FPge
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1316,1
    - Dst: FPle
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1317,1
    - Dst: FPge
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1318,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1322,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 4
    argNames:
    - strategy
    - isLeaf
    - key
    - query
    argTypes:
    - StrategyNumber
    - bool
    - BOX*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1328
      start: 1286
    functionDepth: 1
    functionLinenumber: 1286
    functionLinenumberEnd: 1328
    functionName: gist_point_consistent_internal
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - FPge
    - FPle
    - FPeq
    - FPgt
    - elog
    - FPlt
    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:1339,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1340,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1341,1
    - Dst: gist_point_consistent_internal
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1358,1
    - Dst: GIST_LEAF
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1359,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1360,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1361,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1381,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1382,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1393,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1395,1
    - Dst: DirectFunctionCall5
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1395,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1396,1
    - Dst: PolygonPGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1397,1
    - Dst: Int16GetDatum
      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: GIST_LEAF
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1401,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1407,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1409,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1411,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1411,1
    - Dst: PolygonPGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1412,1
    - Dst: PointPGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1413,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1420,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1422,1
    - Dst: DirectFunctionCall5
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1422,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1423,1
    - Dst: CirclePGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1424,1
    - Dst: Int16GetDatum
      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: GIST_LEAF
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1428,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1434,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1436,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1438,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1438,1
    - Dst: CirclePGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1439,1
    - Dst: PointPGetDatum
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1440,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1446,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1451,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1452
      start: 1336
    functionDepth: 2
    functionLinenumber: 1336
    functionLinenumberEnd: 1452
    functionName: gist_point_consistent
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BOX_P
    - GIST_LEAF
    - PolygonPGetDatum
    - DirectFunctionCall5
    - CirclePGetDatum
    - DatumGetBoxP
    - DirectFunctionCall2
    - Int16GetDatum
    - PG_GETARG_POINTER
    - elog
    - PointPGetDatum
    - PG_GETARG_CIRCLE_P
    - gist_point_consistent_internal
    - Assert
    - PG_GETARG_POLYGON_P
    - PG_RETURN_BOOL
    - PointerGetDatum
    - PG_GETARG_UINT16
    - PG_GETARG_POINT_P
    - DatumGetBool
    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:1457,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1458,1
    - Dst: computeDistance
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1465,1
    - Dst: GIST_LEAF
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1465,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1466,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1467,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1470,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1475,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1476
      start: 1454
    functionDepth: 3
    functionLinenumber: 1454
    functionLinenumberEnd: 1476
    functionName: gist_point_distance
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_GETARG_UINT16
    - PG_GETARG_POINT_P
    - elog
    - DatumGetBoxP
    - GIST_LEAF
    - PG_RETURN_FLOAT8
    - computeDistance
    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:1487,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1488,1
    - Dst: DatumGetPointP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1489,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1492,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - entry
    - query
    - strategy
    argTypes:
    - GISTENTRY*
    - Datum
    - StrategyNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1497
      start: 1478
    functionDepth: 3
    functionLinenumber: 1478
    functionLinenumberEnd: 1497
    functionName: gist_bbox_distance
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - DatumGetPointP
    - elog
    - computeDistance
    - DatumGetBoxP
    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:1502,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1503,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1504,1
    - Dst: gist_bbox_distance
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1510,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1512,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1513
      start: 1499
    functionDepth: 4
    functionLinenumber: 1499
    functionLinenumberEnd: 1513
    functionName: gist_box_distance
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - gist_bbox_distance
    - PG_GETARG_UINT16
    - PG_GETARG_DATUM
    - PG_RETURN_FLOAT8
    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:1528,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1529,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1530,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1533,1
    - Dst: gist_bbox_distance
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1536,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1539,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1540
      start: 1525
    functionDepth: 4
    functionLinenumber: 1525
    functionLinenumberEnd: 1540
    functionName: gist_circle_distance
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - gist_bbox_distance
    - PG_GETARG_UINT16
    - PG_GETARG_DATUM
    - PG_RETURN_FLOAT8
    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:1545,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1546,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1547,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1550,1
    - Dst: gist_bbox_distance
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1553,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1557
      start: 1542
    functionDepth: 4
    functionLinenumber: 1542
    functionLinenumberEnd: 1557
    functionName: gist_poly_distance
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - gist_bbox_distance
    - PG_GETARG_UINT16
    - PG_GETARG_DATUM
    - PG_RETURN_FLOAT8
    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:1577,1
    - Dst: ieee_float32_to_uint32
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1578,1
    - Dst: part_bits32_by2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1581,1
    - Dst: part_bits32_by2
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1581,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1582
      start: 1574
    functionDepth: 1
    functionLinenumber: 1574
    functionLinenumberEnd: 1582
    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:1590,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1591,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1592,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1593,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1594,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1597
      start: 1585
    functionDepth: 1
    functionLinenumber: 1585
    functionLinenumberEnd: 1597
    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:1645,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1664,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - f
    argTypes:
    - float
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1675
      start: 1602
    functionDepth: 1
    functionLinenumber: 1602
    functionLinenumberEnd: 1675
    functionName: ieee_float32_to_uint32
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 1
    functionsReached:
    - isnan
    - Assert
    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:1683,1
    - Dst: DatumGetBoxP
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1684,1
    - Dst: point_zorder_internal
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1696,1
    - Dst: point_zorder_internal
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1697,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - a
    - b
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1704
      start: 1680
    functionDepth: 2
    functionLinenumber: 1680
    functionLinenumberEnd: 1704
    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:1716,1
    - Dst: point_zorder_internal
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1719,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - original
    - ssup
    argTypes:
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1726
      start: 1713
    functionDepth: 2
    functionLinenumber: 1713
    functionLinenumberEnd: 1726
    functionName: gist_bbox_zorder_abbrev_convert
    functionSourceFile: /src/postgres/src/backend/access/gist/gistproc.c
    functionUses: 0
    functionsReached:
    - point_zorder_internal
    - 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: 1739
      start: 1735
    functionDepth: 0
    functionLinenumber: 1735
    functionLinenumberEnd: 1739
    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:1747,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/access/gist/gistproc.c:1760,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1761
      start: 1744
    functionDepth: 1
    functionLinenumber: 1744
    functionLinenumberEnd: 1761
    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:
    - PageSetLSN
    - MarkBufferDirty
    - BufferIsValid
    - GistPageSetNSN
    - GistClearFollowRight
    - XLogReadBufferForRedo
    - BufferGetPage
    - UnlockReleaseBuffer
    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:106,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:117,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:118,1
    - Dst: GistMarkTuplesDeleted
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:119,1
    - Dst: PageIsEmpty
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:125,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:126,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:126,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:131,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:136,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:138,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:146,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:148,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:149,1
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:159,1
    - Dst: gistRedoClearFollowRight
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:160,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:162,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:163,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 69
    functionDepth: 5
    functionLinenumber: 69
    functionLinenumberEnd: 164
    functionName: gistRedoPageUpdateRecord
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - MarkBufferDirty
    - PageAddItem
    - gistRedoClearFollowRight
    - XLogRecGetData
    - IndexTupleSize
    - GistMarkTuplesDeleted
    - OffsetNumberNext
    - PageIsEmpty
    - XLogRecHasBlockRef
    - XLogRecGetBlockData
    - BufferIsValid
    - elog
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - Assert
    - PageIndexMultiDelete
    - PageIndexTupleOverwrite
    - XLogReadBufferForRedo
    - GistPageIsLeaf
    linkageType: ''
    returnType: void
    signature: void gistRedoPageUpdateRecord(XLogReaderState *record)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:175,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:195,1
    - Dst: ResolveRecoveryConflictWithSnapshot
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:197,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:202,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:204,1
    - Dst: PageIndexMultiDelete
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:206,1
    - Dst: GistClearPageHasGarbage
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:208,1
    - Dst: GistMarkTuplesDeleted
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:209,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:211,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:212,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:215,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:216,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 171
    functionDepth: 4
    functionLinenumber: 171
    functionLinenumberEnd: 217
    functionName: gistRedoDeleteRecord
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - MarkBufferDirty
    - BufferIsValid
    - PageIndexMultiDelete
    - GistClearPageHasGarbage
    - XLogRecGetBlockTag
    - XLogRecGetData
    - GistMarkTuplesDeleted
    - XLogReadBufferForRedo
    - BufferGetPage
    - ResolveRecoveryConflictWithSnapshot
    - UnlockReleaseBuffer
    linkageType: ''
    returnType: void
    signature: void gistRedoDeleteRecord(XLogReaderState *record)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:230,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:233,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:237,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:239,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:241,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - begin
    - len
    - n
    argTypes:
    - char*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 244
    functionName: decodePageSplitRecord
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - memcpy
    - palloc
    - IndexTupleSize
    - Assert
    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:250,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:275,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:278,1
    - Dst: XLogInitBufferForRedo
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:282,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:283,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:284,1
    - Dst: decodePageSplitRecord
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:286,1
    - Dst: GISTInitBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:293,1
    - Dst: gistfillbuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:296,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:300,1
    - Dst: GistPageSetNSN
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:301,1
    - Dst: GistClearFollowRight
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:302,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:310,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:311,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:314,1
    - Dst: GistPageSetNSN
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:315,1
    - Dst: GistMarkFollowRight
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:318,1
    - Dst: GistClearFollowRight
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:320,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:323,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:324,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:329,1
    - Dst: XLogRecHasBlockRef
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:333,1
    - Dst: gistRedoClearFollowRight
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:334,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:337,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 40
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 246
    functionDepth: 5
    functionLinenumber: 246
    functionLinenumberEnd: 338
    functionName: gistRedoPageSplitRecord
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - Assert
    - MarkBufferDirty
    - GistMarkFollowRight
    - gistfillbuffer
    - GISTInitBuffer
    - GistPageGetOpaque
    - gistRedoClearFollowRight
    - GistPageSetNSN
    - GistClearFollowRight
    - decodePageSplitRecord
    - XLogRecGetBlockTag
    - XLogRecGetData
    - XLogRecHasBlockRef
    - BufferGetPage
    - XLogInitBufferForRedo
    - XLogRecGetBlockData
    - UnlockReleaseBuffer
    linkageType: ''
    returnType: void
    signature: void gistRedoPageSplitRecord(XLogReaderState *record)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:345,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:349,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:351,1
    - Dst: GistPageSetDeleted
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:353,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:355,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:356,1
    - Dst: XLogReadBufferForRedo
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:359,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:361,1
    - Dst: PageIndexTupleDelete
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:363,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:365,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:366,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
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:371,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:372,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 341
    functionDepth: 4
    functionLinenumber: 341
    functionLinenumberEnd: 373
    functionName: gistRedoPageDelete
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - PageSetLSN
    - MarkBufferDirty
    - PageIndexTupleDelete
    - BufferIsValid
    - XLogRecGetData
    - GistPageSetDeleted
    - XLogReadBufferForRedo
    - BufferGetPage
    - UnlockReleaseBuffer
    linkageType: ''
    returnType: void
    signature: void gistRedoPageDelete(XLogReaderState *record)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:378,1
    - Dst: ResolveRecoveryConflictWithSnapshotFullXid
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:391,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 394
    functionName: gistRedoPageReuse
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - XLogRecGetData
    - ResolveRecoveryConflictWithSnapshotFullXid
    linkageType: ''
    returnType: void
    signature: void gistRedoPageReuse(XLogReaderState *record)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:399,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:408,1
    - Dst: gistRedoPageUpdateRecord
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:412,1
    - Dst: gistRedoDeleteRecord
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:415,1
    - Dst: gistRedoPageReuse
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:418,1
    - Dst: gistRedoPageSplitRecord
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:421,1
    - Dst: gistRedoPageDelete
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:424,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:430,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:433,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:434,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 396
    functionDepth: 6
    functionLinenumber: 396
    functionLinenumberEnd: 435
    functionName: gist_redo
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - gistRedoPageReuse
    - gistRedoPageUpdateRecord
    - MemoryContextReset
    - gistRedoPageSplitRecord
    - gistRedoDeleteRecord
    - XLogRecGetInfo
    - elog
    - gistRedoPageDelete
    linkageType: ''
    returnType: void
    signature: void gist_redo(XLogReaderState *record)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createTempGistContext
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:440,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 437
    functionDepth: 1
    functionLinenumber: 437
    functionLinenumberEnd: 441
    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:446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 443
    functionDepth: 1
    functionLinenumber: 443
    functionLinenumberEnd: 447
    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:457,1
    - Dst: mask_page_hint_bits
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:459,1
    - Dst: mask_unused_space
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:460,1
    - Dst: GistPageSetNSN
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:466,1
    - Dst: GistMarkFollowRight
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:472,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:474,1
    - Dst: mask_lp_flags
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:481,1
    - Dst: GistClearPageHasGarbage
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:488,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - pagedata
    - blkno
    argTypes:
    - char*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 452
    functionDepth: 2
    functionLinenumber: 452
    functionLinenumberEnd: 489
    functionName: gist_mask
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - GistPageSetNSN
    - mask_lp_flags
    - mask_page_lsn_and_checksum
    - mask_unused_space
    - GistMarkFollowRight
    - GistPageIsLeaf
    - GistClearPageHasGarbage
    - mask_page_hint_bits
    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:515,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:521,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:522,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:531,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:536,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:537,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:538,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:542,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: 545
      start: 494
    functionDepth: 5
    functionLinenumber: 494
    functionLinenumberEnd: 545
    functionName: gistXLogSplit
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - BufferIsValid
    - XLogBeginInsert
    - XLogRegisterBufData
    - XLogInsert
    - XLogRegisterBuffer
    - XLogRegisterData
    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:561,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:562,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:564,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:565,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - buffer
    - xid
    - parentBuffer
    - downlinkOffset
    argTypes:
    - Buffer
    - FullTransactionId
    - Buffer
    - OffsetNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 551
    functionDepth: 5
    functionLinenumber: 551
    functionLinenumberEnd: 570
    functionName: gistXLogPageDelete
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - XLogRegisterBuffer
    - XLogRegisterData
    - 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: XLogBeginInsert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:584,1
    - Dst: XLogSetRecordFlags
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:585,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:586,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:587,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 575
    functionDepth: 3
    functionLinenumber: 575
    functionLinenumberEnd: 588
    functionName: gistXLogAssignLSN
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - XLogRegisterData
    - XLogSetRecordFlags
    - XLogBeginInsert
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr gistXLogAssignLSN(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RelationIsAccessibleInLogicalDecoding
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:606,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:611,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:612,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:614,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - rel
    - heaprel
    - blkno
    - deleteXid
    argTypes:
    - Relation
    - Relation
    - BlockNumber
    - FullTransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 593
    functionDepth: 3
    functionLinenumber: 593
    functionLinenumberEnd: 615
    functionName: gistXLogPageReuse
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - XLogInsert
    - XLogRegisterData
    - RelationIsAccessibleInLogicalDecoding
    - XLogBeginInsert
    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:641,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:642,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:644,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:645,1
    - Dst: XLogRegisterBufData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:649,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:649,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:655,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:656,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:658,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: 661
      start: 628
    functionDepth: 5
    functionLinenumber: 628
    functionLinenumberEnd: 661
    functionName: gistXLogUpdate
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - BufferIsValid
    - XLogBeginInsert
    - XLogRegisterBufData
    - XLogInsert
    - XLogRegisterBuffer
    - XLogRegisterData
    - 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:676,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:680,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:681,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:688,1
    - Dst: XLogRegisterBuffer
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:690,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/access/gist/gistxlog.c:692,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: 695
      start: 669
    functionDepth: 5
    functionLinenumber: 669
    functionLinenumberEnd: 695
    functionName: gistXLogDelete
    functionSourceFile: /src/postgres/src/backend/access/gist/gistxlog.c
    functionUses: 0
    functionsReached:
    - XLogBeginInsert
    - XLogInsert
    - XLogRegisterBuffer
    - XLogRegisterData
    - RelationIsAccessibleInLogicalDecoding
    linkageType: ''
    returnType: XLogRecPtr
    signature: "XLogRecPtr gistXLogDelete(Buffer buffer, OffsetNumber *todelete, int
      ntodelete,\n\t\t\t   TransactionId snapshotConflictHorizon, Relation heaprel)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistget.c:48,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistget.c:49,1
    - Dst: XLogRecPtrIsInvalid
      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: ReadBuffer
      Src: /src/postgres/src/backend/access/gist/gistget.c:52,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gist/gistget.c:53,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gistget.c:56,1
    - Dst: gistcheckpage
      Src: /src/postgres/src/backend/access/gist/gistget.c:57,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistget.c:58,1
    - Dst: BufferGetLSNAtomic
      Src: /src/postgres/src/backend/access/gist/gistget.c:65,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistget.c:67,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistget.c:72,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gistget.c:72,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gist/gistget.c:81,1
    - Dst: ItemIdMarkDead
      Src: /src/postgres/src/backend/access/gist/gistget.c:82,1
    - Dst: GistMarkPageHasGarbage
      Src: /src/postgres/src/backend/access/gist/gistget.c:88,1
    - Dst: MarkBufferDirtyHint
      Src: /src/postgres/src/backend/access/gist/gistget.c:89,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistget.c:92,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 37
    functionDepth: 4
    functionLinenumber: 37
    functionLinenumberEnd: 99
    functionName: gistkillitems
    functionSourceFile: /src/postgres/src/backend/access/gist/gistget.c
    functionUses: 0
    functionsReached:
    - ReadBuffer
    - GistMarkPageHasGarbage
    - Assert
    - BufferIsValid
    - PageGetItemId
    - BufferGetLSNAtomic
    - MarkBufferDirtyHint
    - LockBuffer
    - gistcheckpage
    - ItemIdMarkDead
    - BufferGetPage
    - XLogRecPtrIsInvalid
    - GistPageIsLeaf
    - UnlockReleaseBuffer
    linkageType: ''
    returnType: void
    signature: void gistkillitems(IndexScanDesc scan)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: GistTupleIsInvalid
      Src: /src/postgres/src/backend/access/gist/gistget.c:147,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gistget.c:151,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistget.c:152,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/access/gist/gistget.c:155,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/gist/gistget.c:167,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gistget.c:182,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistget.c:187,1
    - Dst: gistdentryinit
      Src: /src/postgres/src/backend/access/gist/gistget.c:202,1
    - Dst: FunctionCall5Coll
      Src: /src/postgres/src/backend/access/gist/gistget.c:221,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistget.c:223,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/access/gist/gistget.c:225,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/gist/gistget.c:226,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistget.c:227,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/access/gist/gistget.c:229,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/access/gist/gistget.c:247,1
    - Dst: gistdentryinit
      Src: /src/postgres/src/backend/access/gist/gistget.c:264,1
    - Dst: FunctionCall5Coll
      Src: /src/postgres/src/backend/access/gist/gistget.c:285,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistget.c:287,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/access/gist/gistget.c:289,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/access/gist/gistget.c:290,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/access/gist/gistget.c:291,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/access/gist/gistget.c:293,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: 303
      start: 124
    functionDepth: 3
    functionLinenumber: 124
    functionLinenumberEnd: 303
    functionName: gistindex_keytest
    functionSourceFile: /src/postgres/src/backend/access/gist/gistget.c
    functionUses: 0
    functionsReached:
    - Assert
    - DatumGetFloat8
    - Int16GetDatum
    - GistTupleIsInvalid
    - FunctionCall5Coll
    - PointerGetDatum
    - elog
    - gistdentryinit
    - index_getattr
    - DatumGetBool
    - GistPageIsLeaf
    - ObjectIdGetDatum
    - 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:341,1
    - Dst: GISTSearchItemIsHeap
      Src: /src/postgres/src/backend/access/gist/gistget.c:341,1
    - Dst: ReadBuffer
      Src: /src/postgres/src/backend/access/gist/gistget.c:343,1
    - Dst: LockBuffer
      Src: /src/postgres/src/backend/access/gist/gistget.c:344,1
    - Dst: PredicateLockPage
      Src: /src/postgres/src/backend/access/gist/gistget.c:345,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistget.c:345,1
    - Dst: gistcheckpage
      Src: /src/postgres/src/backend/access/gist/gistget.c:346,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gistget.c:347,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/backend/access/gist/gistget.c:348,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/gist/gistget.c:356,1
    - Dst: GistFollowRight
      Src: /src/postgres/src/backend/access/gist/gistget.c:357,1
    - Dst: GistPageGetNSN
      Src: /src/postgres/src/backend/access/gist/gistget.c:358,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistget.c:365,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistget.c:367,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistget.c:370,1
    - Dst: SizeOfGISTSearchItem
      Src: /src/postgres/src/backend/access/gist/gistget.c:370,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistget.c:375,1
    - Dst: pairingheap_add
      Src: /src/postgres/src/backend/access/gist/gistget.c:378,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistget.c:380,1
    - Dst: GistPageIsDeleted
      Src: /src/postgres/src/backend/access/gist/gistget.c:391,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistget.c:393,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gist/gistget.c:400,1
    - Dst: BufferGetLSNAtomic
      Src: /src/postgres/src/backend/access/gist/gistget.c:407,1
    - Dst: PageGetMaxOffsetNumber
      Src: /src/postgres/src/backend/access/gist/gistget.c:412,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/access/gist/gistget.c:413,1
    - Dst: PageGetItemId
      Src: /src/postgres/src/backend/access/gist/gistget.c:415,1
    - Dst: ItemIdIsDead
      Src: /src/postgres/src/backend/access/gist/gistget.c:425,1
    - Dst: PageGetItem
      Src: /src/postgres/src/backend/access/gist/gistget.c:428,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistget.c:434,1
    - Dst: gistindex_keytest
      Src: /src/postgres/src/backend/access/gist/gistget.c:436,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistget.c:439,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gist/gistget.c:440,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gistget.c:446,1
    - Dst: tbm_add_tuples
      Src: /src/postgres/src/backend/access/gist/gistget.c:452,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gistget.c:455,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistget.c:470,1
    - Dst: gistFetchTuple
      Src: /src/postgres/src/backend/access/gist/gistget.c:472,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistget.c:473,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistget.c:487,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistget.c:490,1
    - Dst: SizeOfGISTSearchItem
      Src: /src/postgres/src/backend/access/gist/gistget.c:490,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gistget.c:492,1
    - Dst: gistFetchTuple
      Src: /src/postgres/src/backend/access/gist/gistget.c:504,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistget.c:509,1
    - Dst: BufferGetLSNAtomic
      Src: /src/postgres/src/backend/access/gist/gistget.c:516,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistget.c:520,1
    - Dst: pairingheap_add
      Src: /src/postgres/src/backend/access/gist/gistget.c:523,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistget.c:525,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gistget.c:529,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 72
    argCount: 5
    argNames:
    - scan
    - pageItem
    - myDistances
    - tbm
    - ntids
    argTypes:
    - IndexScanDesc
    - GISTSearchItem*
    - IndexOrderByDistance*
    - TIDBitmap*
    - int64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 327
    functionDepth: 4
    functionLinenumber: 327
    functionLinenumberEnd: 530
    functionName: gistScanPage
    functionSourceFile: /src/postgres/src/backend/access/gist/gistget.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - MemoryContextReset
    - LockBuffer
    - GistPageGetOpaque
    - GistPageGetNSN
    - BufferGetBlockNumber
    - SizeOfGISTSearchItem
    - OffsetNumberNext
    - ItemPointerGetBlockNumber
    - memcpy
    - PageGetItem
    - ItemIdIsDead
    - gistindex_keytest
    - gistFetchTuple
    - ReadBuffer
    - PageGetItemId
    - pairingheap_add
    - BufferGetLSNAtomic
    - PredicateLockPage
    - gistcheckpage
    - BufferGetPage
    - palloc
    - XLogRecPtrIsInvalid
    - UnlockReleaseBuffer
    - PageGetMaxOffsetNumber
    - Assert
    - GISTSearchItemIsHeap
    - GistPageIsDeleted
    - GistFollowRight
    - tbm_add_tuples
    - GistPageIsLeaf
    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:542,1
    - Dst: pairingheap_remove_first
      Src: /src/postgres/src/backend/access/gist/gistget.c:544,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - so
    argTypes:
    - GISTScanOpaque
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 537
    functionDepth: 1
    functionLinenumber: 537
    functionLinenumberEnd: 554
    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:568,1
    - Dst: getNextGISTSearchItem
      Src: /src/postgres/src/backend/access/gist/gistget.c:574,1
    - Dst: GISTSearchItemIsHeap
      Src: /src/postgres/src/backend/access/gist/gistget.c:579,1
    - Dst: index_store_float8_orderby_distances
      Src: /src/postgres/src/backend/access/gist/gistget.c:585,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/gist/gistget.c:597,1
    - Dst: gistScanPage
      Src: /src/postgres/src/backend/access/gist/gistget.c:599,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gist/gistget.c:602,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 559
    functionDepth: 5
    functionLinenumber: 559
    functionLinenumberEnd: 606
    functionName: getNextNearest
    functionSourceFile: /src/postgres/src/backend/access/gist/gistget.c
    functionUses: 0
    functionsReached:
    - pfree
    - CHECK_FOR_INTERRUPTS
    - getNextGISTSearchItem
    - index_store_float8_orderby_distances
    - GISTSearchItemIsHeap
    - gistScanPage
    linkageType: ''
    returnType: bool
    signature: bool getNextNearest(IndexScanDesc scan)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistget.c:617,1
    - Dst: pgstat_count_index_scan
      Src: /src/postgres/src/backend/access/gist/gistget.c:627,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gist/gistget.c:635,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gist/gistget.c:638,1
    - Dst: gistScanPage
      Src: /src/postgres/src/backend/access/gist/gistget.c:639,1
    - Dst: getNextNearest
      Src: /src/postgres/src/backend/access/gist/gistget.c:645,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistget.c:660,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistget.c:663,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistget.c:666,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistget.c:697,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistget.c:700,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistget.c:703,1
    - Dst: gistkillitems
      Src: /src/postgres/src/backend/access/gist/gistget.c:715,1
    - Dst: getNextGISTSearchItem
      Src: /src/postgres/src/backend/access/gist/gistget.c:717,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/gist/gistget.c:722,1
    - Dst: gistScanPage
      Src: /src/postgres/src/backend/access/gist/gistget.c:733,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gist/gistget.c:735,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 59
    argCount: 2
    argNames:
    - scan
    - dir
    argTypes:
    - IndexScanDesc
    - ScanDirection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 611
    functionDepth: 6
    functionLinenumber: 611
    functionLinenumberEnd: 739
    functionName: gistgettuple
    functionSourceFile: /src/postgres/src/backend/access/gist/gistget.c
    functionUses: 0
    functionsReached:
    - pfree
    - MemoryContextSwitchTo
    - CHECK_FOR_INTERRUPTS
    - pgstat_count_index_scan
    - MemoryContextReset
    - memset
    - getNextGISTSearchItem
    - gistkillitems
    - getNextNearest
    - elog
    - palloc
    - gistScanPage
    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:754,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gist/gistget.c:762,1
    - Dst: memset
      Src: /src/postgres/src/backend/access/gist/gistget.c:765,1
    - Dst: gistScanPage
      Src: /src/postgres/src/backend/access/gist/gistget.c:766,1
    - Dst: getNextGISTSearchItem
      Src: /src/postgres/src/backend/access/gist/gistget.c:774,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/access/gist/gistget.c:779,1
    - Dst: gistScanPage
      Src: /src/postgres/src/backend/access/gist/gistget.c:781,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gist/gistget.c:783,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - scan
    - tbm
    argTypes:
    - IndexScanDesc
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 744
    functionDepth: 5
    functionLinenumber: 744
    functionLinenumberEnd: 787
    functionName: gistgetbitmap
    functionSourceFile: /src/postgres/src/backend/access/gist/gistget.c
    functionUses: 0
    functionsReached:
    - pfree
    - CHECK_FOR_INTERRUPTS
    - pgstat_count_index_scan
    - MemoryContextReset
    - getNextGISTSearchItem
    - memset
    - 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:799,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gist/gistget.c:800,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/gist/gistget.c:800,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gist/gistget.c:801,1
    - Dst: index_getprocid
      Src: /src/postgres/src/backend/access/gist/gistget.c:801,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - index
    - attno
    argTypes:
    - Relation
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 796
    functionDepth: 2
    functionLinenumber: 796
    functionLinenumberEnd: 805
    functionName: gistcanreturn
    functionSourceFile: /src/postgres/src/backend/access/gist/gistget.c
    functionUses: 0
    functionsReached:
    - IndexRelationGetNumberOfKeyAttributes
    - index_getprocid
    - OidIsValid
    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: makeNode
      Src: /src/postgres/src/backend/access/gist/gist.c:61,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/access/gist/gist.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 117
    functionName: gisthandler
    functionSourceFile: /src/postgres/src/backend/access/gist/gist.c
    functionUses: 0
    functionsReached:
    - makeNode
    - 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:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 133
    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:144,1
    - Dst: BMR_REL
      Src: /src/postgres/src/backend/access/gist/gist.c:144,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gist/gist.c:148,1
    - Dst: GISTInitBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:149,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gist/gist.c:150,1
    - Dst: log_newpage_buffer
      Src: /src/postgres/src/backend/access/gist/gist.c:151,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gist/gist.c:152,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 138
    functionDepth: 5
    functionLinenumber: 138
    functionLinenumberEnd: 156
    functionName: gistbuildempty
    functionSourceFile: /src/postgres/src/backend/access/gist/gist.c
    functionUses: 0
    functionsReached:
    - BMR_REL
    - MarkBufferDirty
    - START_CRIT_SECTION
    - GISTInitBuffer
    - log_newpage_buffer
    - END_CRIT_SECTION
    - ExtendBufferedRel
    - UnlockReleaseBuffer
    linkageType: ''
    returnType: void
    signature: void gistbuildempty(Relation index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gist.c:178,1
    - Dst: initGISTstate
      Src: /src/postgres/src/backend/access/gist/gist.c:179,1
    - Dst: createTempGistContext
      Src: /src/postgres/src/backend/access/gist/gist.c:180,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gist.c:182,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gist.c:185,1
    - Dst: gistFormTuple
      Src: /src/postgres/src/backend/access/gist/gist.c:187,1
    - Dst: gistdoinsert
      Src: /src/postgres/src/backend/access/gist/gist.c:190,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gist.c:193,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/access/gist/gist.c:194,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: 197
      start: 164
    functionDepth: 2
    functionLinenumber: 164
    functionLinenumberEnd: 197
    functionName: gistinsert
    functionSourceFile: /src/postgres/src/backend/access/gist/gist.c
    functionUses: 0
    functionsReached:
    - gistdoinsert
    - MemoryContextSwitchTo
    - MemoryContextReset
    - gistFormTuple
    - initGISTstate
    - createTempGistContext
    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:240,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gist.c:241,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gist.c:242,1
    - Dst: GistFollowRight
      Src: /src/postgres/src/backend/access/gist/gist.c:255,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gist.c:256,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gist.c:259,1
    - Dst: GistPageIsDeleted
      Src: /src/postgres/src/backend/access/gist/gist.c:259,1
    - Dst: gistnospace
      Src: /src/postgres/src/backend/access/gist/gist.c:273,1
    - Dst: GistPageIsLeaf
      Src: /src/postgres/src/backend/access/gist/gist.c:279,1
    - Dst: GistPageHasGarbage
      Src: /src/postgres/src/backend/access/gist/gist.c:279,1
    - Dst: gistprunepage
      Src: /src/postgres/src/backend/access/gist/gist.c:281,1
    - Dst: gistnospace
      Src: /src/postgres/src/backend/access/gist/gist.c:282,1
    - Dst: gistextractpage
      Src: /src/postgres/src/backend/access/gist/gist.c:304,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/gist/gist.c:305,1
    - Dst: memmove
      Src: /src/postgres/src/backend/access/gist/gist.c:312,1
    - Dst: gistjoinvector
      Src: /src/postgres/src/backend/access/gist/gist.c:314,1
    - Dst: gistSplit
      Src: /src/postgres/src/backend/access/gist/gist.c:315,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gist.c:327,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/backend/access/gist/gist.c:343,1
    - Dst: GistPageGetNSN
      Src: /src/postgres/src/backend/access/gist/gist.c:344,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gist.c:347,1
    - Dst: PageGetTempPageCopySpecial
      Src: /src/postgres/src/backend/access/gist/gist.c:348,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gist.c:348,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/backend/access/gist/gist.c:351,1
    - Dst: gistNewBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:358,1
    - Dst: GISTInitBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:359,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gist.c:360,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gist.c:361,1
    - Dst: PredicateLockPageSplit
      Src: /src/postgres/src/backend/access/gist/gist.c:362,1
    - Dst: BufferGetBlockNumber
      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: ItemPointerSetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gist.c:373,1
    - Dst: GistTupleSetValid
      Src: /src/postgres/src/backend/access/gist/gist.c:374,1
    - Dst: PageGetTempPageCopySpecial
      Src: /src/postgres/src/backend/access/gist/gist.c:389,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gist.c:389,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/backend/access/gist/gist.c:390,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gist.c:395,1
    - Dst: gistfillitupvec
      Src: /src/postgres/src/backend/access/gist/gist.c:401,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gist.c:413,1
    - Dst: lappend
      Src: /src/postgres/src/backend/access/gist/gist.c:417,1
    - Dst: PageAddItem
      Src: /src/postgres/src/backend/access/gist/gist.c:433,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gist.c:433,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gist.c:434,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gist/gist.c:434,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/access/gist/gist.c:440,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gist.c:443,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/backend/access/gist/gist.c:448,1
    - Dst: GistPageGetOpaque
      Src: /src/postgres/src/backend/access/gist/gist.c:451,1
    - Dst: GistMarkFollowRight
      Src: /src/postgres/src/backend/access/gist/gist.c:462,1
    - Dst: GistClearFollowRight
      Src: /src/postgres/src/backend/access/gist/gist.c:464,1
    - Dst: GistPageSetNSN
      Src: /src/postgres/src/backend/access/gist/gist.c:471,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gist/gist.c:479,1
    - Dst: XLogEnsureRecordSpace
      Src: /src/postgres/src/backend/access/gist/gist.c:480,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gist/gist.c:482,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gist/gist.c:489,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/access/gist/gist.c:490,1
    - Dst: MarkBufferDirty
      Src: /src/postgres/src/backend/access/gist/gist.c:491,1
    - Dst: PageRestoreTempPage
      Src: /src/postgres/src/backend/access/gist/gist.c:497,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gist.c:497,1
    - Dst: BufferGetPage
      Src: /src/postgres/src/backend/access/gist/gist.c:498,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gist/gist.c:514,1
    - Dst: gistXLogSplit
      Src: /src/postgres/src/backend/access/gist/gist.c:515,1
    - Dst: gistGetFakeLSN
      Src: /src/postgres/src/backend/access/gist/gist.c:519,1
    - Dst: PageSetLSN
      Src: /src/postgres/src/backend/access/gist/gist.c:523,1
    - Dst: UnlockReleaseBuffer
      Src: /src/postgres/src/backend/access/gist/gist.c:535,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/access/gist/gist.c:543,1
    - Dst: OffsetNumberIsValid
      Src: /src/postgres/src/backend/access/gist/gist.c:549,1
    - Dst: PageIndexTupleOverwrite
      Src: /src/postgres/src/backend/access/gist/gist.c:554,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: gistGetFakeLSN
      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: 229
    functionDepth: 6
    functionLinenumber: 229
    functionLinenumberEnd: 631
    functionName: gistplacetopage
    functionSourceFile: /src/postgres/src/backend/access/gist/gist.c
    functionUses: 1
    functionsReached:
    - MarkBufferDirty
    - GistTupleSetValid
    - PageSetLSN
    - PageIndexTupleDelete
    - gistGetFakeLSN
    - PageAddItem
    - GistPageGetOpaque
    - gistextractpage
    - GistPageSetNSN
    - GistPageGetNSN
    - IndexTupleSize
    - RelationGetRelationName
    - XLogEnsureRecordSpace
    - START_CRIT_SECTION
    - BufferGetBlockNumber
    - PageGetTempPageCopySpecial
    - GISTInitBuffer
    - gistfillbuffer
    - OffsetNumberIsValid
    - memmove
    - gistSplit
    - END_CRIT_SECTION
    - RelationNeedsWAL
    - BufferIsValid
    - gistjoinvector
    - gistXLogSplit
    - PageRestoreTempPage
    - GistClearFollowRight
    - gistfillitupvec
    - elog
    - lappend
    - ItemPointerEquals
    - gistXLogUpdate
    - ItemPointerSetBlockNumber
    - BufferGetPage
    - palloc
    - UnlockReleaseBuffer
    - Assert
    - PredicateLockPageSplit
    - gistnospace
    - gistprunepage
    - GistPageHasGarbage
    - gistNewBuffer
    - GistPageIsDeleted
    - GistFollowRight
    - PageIndexTupleOverwrite
    - GistMarkFollowRight
    - GistPageIsLeaf
    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: XLogRecPtrIsInvalid
      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: XLogRecPtrIsInvalid
      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
      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:
    - gistfixsplit
    - ReleaseBuffer
    - LockBuffer
    - errhint
    - GistPageGetNSN
    - RelationGetRelationName
    - errdetail
    - PageGetLSN
    - gistinserttuple
    - gistchoose
    - PageGetItem
    - RelationNeedsWAL
    - ReadBuffer
    - errmsg
    - PageGetItemId
    - BufferGetLSNAtomic
    - gistgetadjusted
    - gistcheckpage
    - BufferGetPage
    - XLogRecPtrIsInvalid
    - UnlockReleaseBuffer
    - Assert
    - memset
    - GistTupleIsInvalid
    - ereport
    - palloc0
    - GistPageIsDeleted
    - GistFollowRight
    - ItemPointerGetBlockNumber
    - GistPageIsLeaf
    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
      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
      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
      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:
    - list_delete_first
    - LockBuffer
    - lcons
    - GistPageGetOpaque
    - GistPageGetNSN
    - RelationGetRelationName
    - OffsetNumberNext
    - PageGetItem
    - ReadBuffer
    - PageGetItemId
    - BufferGetLSNAtomic
    - linitial
    - elog
    - gistcheckpage
    - lappend
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - Assert
    - list_make1
    - palloc0
    - GistPageIsDeleted
    - GistFollowRight
    - ItemPointerGetBlockNumber
    - GistPageIsLeaf
    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:
    - ReadBuffer
    - gistFindCorrectParent
    - Assert
    - PageGetItemId
    - UnlockReleaseBuffer
    - ReleaseBuffer
    - LockBuffer
    - PageGetLSN
    - GistPageGetOpaque
    - gistcheckpage
    - OffsetNumberNext
    - ItemPointerGetBlockNumber
    - BufferGetPage
    - gistFindPath
    - PageGetItem
    - PageGetMaxOffsetNumber
    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:
    - gistFindCorrectParent
    - GistTupleSetValid
    - PageGetItemId
    - BufferGetBlockNumber
    - gistgetadjusted
    - LockBuffer
    - OffsetNumberNext
    - CopyIndexTuple
    - ItemPointerSetBlockNumber
    - BufferGetPage
    - PageGetItem
    - PageGetMaxOffsetNumber
    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
      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:
    - errmsg
    - ReadBuffer
    - Assert
    - LockBuffer
    - GistPageGetOpaque
    - OffsetNumberIsValid
    - ereport
    - gistfinishsplit
    - gistformdownlink
    - lappend
    - GistFollowRight
    - BufferGetPage
    - palloc
    - RelationGetRelationName
    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:
    - BufferIsValid
    - gistplacetopage
    - BufferGetBlockNumber
    - LockBuffer
    - gistfinishsplit
    - CheckForSerializableConflictIn
    - UnlockReleaseBuffer
    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:
    - gistFindCorrectParent
    - Assert
    - linitial
    - LockBuffer
    - lsecond
    - gistinserttuples
    - list_length
    - list_nth
    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
      Src: /src/postgres/src/backend/access/gist/gist.c:1486,1
    - Dst: palloc
      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:
    - check_stack_depth
    - errmsg
    - Assert
    - gistSplitByKey
    - RelationGetRelationName
    - memset
    - gistfitpage
    - ROTATEDIST
    - ereport
    - gistSplit
    - gistfillitupvec
    - gistFormTuple
    - palloc
    - IndexTupleSize
    - errcode
    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
      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: 4
    functionLinenumber: 1536
    functionLinenumberEnd: 1661
    functionName: initGISTstate
    functionSourceFile: /src/postgres/src/backend/access/gist/gist.c
    functionUses: 2
    functionsReached:
    - IndexRelationGetNumberOfKeyAttributes
    - MemoryContextSwitchTo
    - index_getprocid
    - CreateTupleDescTruncatedCopy
    - elog
    - index_getprocinfo
    - AllocSetContextCreate
    - OidIsValid
    - fmgr_info_copy
    - palloc
    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: gistGetFakeLSN
      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:
    - index_compute_xid_horizon_for_tuples
    - MarkBufferDirty
    - Assert
    - PageGetItemId
    - START_CRIT_SECTION
    - PageSetLSN
    - gistGetFakeLSN
    - PageIndexMultiDelete
    - XLogStandbyInfoActive
    - gistXLogDelete
    - OffsetNumberNext
    - END_CRIT_SECTION
    - ItemIdIsDead
    - GistPageIsLeaf
    - GistClearPageHasGarbage
    - PageGetMaxOffsetNumber
    - RelationNeedsWAL
    linkageType: ''
    returnType: void
    signature: void gistprunepage(Relation rel, Page page, Buffer buffer, Relation
      heapRel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      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
      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
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:90,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 3
    argNames:
    - pagesPerBuffer
    - levelStep
    - maxLevel
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 106
    functionName: gistInitBuildBuffers
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 1
    functionsReached:
    - hash_create
    - palloc
    - BufFileCreateTemp
    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:120,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:129,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:148,1
    - Dst: lcons
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:168,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:171,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 4
    argNames:
    - gfbb
    - giststate
    - nodeBlocknum
    - level
    argTypes:
    - GISTBuildBuffers*
    - GISTSTATE*
    - BlockNumber
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 175
    functionName: gistGetNodeBuffer
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 1
    functionsReached:
    - repalloc
    - MemoryContextSwitchTo
    - lcons
    - hash_search
    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:185,1
    - Dst: PAGE_FREE_SPACE
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - gfbb
    argTypes:
    - GISTBuildBuffers*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 192
    functionName: gistAllocateNewPageBuffer
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 0
    functionsReached:
    - MemoryContextAllocZero
    - PAGE_FREE_SPACE
    linkageType: ''
    returnType: GISTNodeBufferPage
    signature: 'GISTNodeBufferPage *

      gistAllocateNewPageBuffer(GISTBuildBuffers *gfbb)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: repalloc
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - gfbb
    - nodeBuffer
    argTypes:
    - GISTBuildBuffers*
    - GISTNodeBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 215
    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:227,1
    - Dst: ReadTempFileBlock
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:230,1
    - Dst: gistBuffersReleaseBlock
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:234,1
    - Dst: gistAddLoadedBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:237,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - gfbb
    - nodeBuffer
    argTypes:
    - GISTBuildBuffers*
    - GISTNodeBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 220
    functionDepth: 2
    functionLinenumber: 220
    functionLinenumberEnd: 240
    functionName: gistLoadNodeBuffer
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 0
    functionsReached:
    - gistBuffersReleaseBlock
    - gistAddLoadedBuffer
    - gistAllocateNewPageBuffer
    - ReadTempFileBlock
    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:254,1
    - Dst: WriteTempFileBlock
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:257,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:260,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - gfbb
    - nodeBuffer
    argTypes:
    - GISTBuildBuffers*
    - GISTNodeBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 266
    functionName: gistUnloadNodeBuffer
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 0
    functionsReached:
    - WriteTempFileBlock
    - pfree
    - 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:278,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - gfbb
    argTypes:
    - GISTBuildBuffers*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 271
    functionDepth: 2
    functionLinenumber: 271
    functionLinenumberEnd: 282
    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:290,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:294,1
    - Dst: PAGE_FREE_SPACE
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:294,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:294,1
    - Dst: PAGE_FREE_SPACE
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:297,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:297,1
    - Dst: PAGE_FREE_SPACE
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:301,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - pageBuffer
    - itup
    argTypes:
    - GISTNodeBufferPage*
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 305
    functionName: gistPlaceItupToPage
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 0
    functionsReached:
    - Assert
    - PAGE_FREE_SPACE
    - memcpy
    - IndexTupleSize
    - MAXALIGN
    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:316,1
    - Dst: PAGE_IS_EMPTY
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:316,1
    - Dst: PAGE_FREE_SPACE
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:321,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:322,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:325,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:326,1
    - Dst: PAGE_FREE_SPACE
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:329,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - pageBuffer
    - itup
    argTypes:
    - GISTNodeBufferPage*
    - IndexTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 330
    functionName: gistGetItupFromPage
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 0
    functionsReached:
    - Assert
    - PAGE_FREE_SPACE
    - PAGE_IS_EMPTY
    - memcpy
    - palloc
    - IndexTupleSize
    - MAXALIGN
    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:343,1
    - Dst: gistAllocateNewPageBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:350,1
    - Dst: gistAddLoadedBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:352,1
    - Dst: gistLoadNodeBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:357,1
    - Dst: PAGE_NO_SPACE
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:362,1
    - Dst: gistBuffersGetFreeBlock
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:370,1
    - Dst: WriteTempFileBlock
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:371,1
    - Dst: PAGE_FREE_SPACE
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:377,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:378,1
    - Dst: gistPlaceItupToPage
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:385,1
    - Dst: BUFFER_HALF_FILLED
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:390,1
    - Dst: lcons
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:392,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:398,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - gfbb
    - nodeBuffer
    - itup
    argTypes:
    - GISTBuildBuffers*
    - GISTNodeBuffer*
    - IndexTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 335
    functionDepth: 3
    functionLinenumber: 335
    functionLinenumberEnd: 399
    functionName: gistPushItupToNodeBuffer
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - lcons
    - gistAddLoadedBuffer
    - gistPlaceItupToPage
    - PAGE_FREE_SPACE
    - gistLoadNodeBuffer
    - gistBuffersGetFreeBlock
    - WriteTempFileBlock
    - BUFFER_HALF_FILLED
    - gistAllocateNewPageBuffer
    - PAGE_NO_SPACE
    - MAXALIGN
    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:417,1
    - Dst: gistGetItupFromPage
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:422,1
    - Dst: PAGE_IS_EMPTY
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:428,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:444,1
    - Dst: ReadTempFileBlock
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:445,1
    - Dst: gistBuffersReleaseBlock
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:451,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:456,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:457,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - gfbb
    - nodeBuffer
    - itup
    argTypes:
    - GISTBuildBuffers*
    - GISTNodeBuffer*
    - IndexTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 405
    functionDepth: 3
    functionLinenumber: 405
    functionLinenumberEnd: 462
    functionName: gistPopItupFromNodeBuffer
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - ReadTempFileBlock
    - gistLoadNodeBuffer
    - PAGE_IS_EMPTY
    - gistGetItupFromPage
    - gistBuffersReleaseBlock
    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: 479
      start: 467
    functionDepth: 0
    functionLinenumber: 467
    functionLinenumberEnd: 479
    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:493,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - gfbb
    - blocknum
    argTypes:
    - GISTBuildBuffers*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 484
    functionDepth: 0
    functionLinenumber: 484
    functionLinenumberEnd: 501
    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:510,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - gfbb
    argTypes:
    - GISTBuildBuffers*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 506
    functionDepth: 1
    functionLinenumber: 506
    functionLinenumberEnd: 513
    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:549,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:555,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:556,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:572,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:573,1
    - Dst: list_length
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:584,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:586,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:595,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:597,1
    - Dst: gistDeCompressAtt
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:600,1
    - Dst: gistGetNodeBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:612,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:612,1
    - Dst: gistPopItupFromNodeBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:627,1
    - Dst: gistDeCompressAtt
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:635,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:661,1
    - Dst: gistpenalty
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:666,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:687,1
    - Dst: gistPushItupToNodeBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:723,1
    - Dst: gistgetadjusted
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:726,1
    - Dst: gistDeCompressAtt
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:730,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:739,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: 740
      start: 532
    functionDepth: 4
    functionLinenumber: 532
    functionLinenumberEnd: 740
    functionName: gistRelocateBuildBuffersOnSplit
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 1
    functionsReached:
    - IndexRelationGetNumberOfKeyAttributes
    - pfree
    - Assert
    - BufferGetBlockNumber
    - gistGetNodeBuffer
    - gistgetadjusted
    - gistPopItupFromNodeBuffer
    - gistpenalty
    - gistPushItupToNodeBuffer
    - hash_search
    - LEVEL_HAS_BUFFERS
    - list_length
    - foreach_current_index
    - memcpy
    - palloc
    - lfirst
    - gistDeCompressAtt
    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:595,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:597,1
    - Dst: gistDeCompressAtt
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:600,1
    - Dst: gistGetNodeBuffer
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:612,1
    - Dst: BufferGetBlockNumber
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:612,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 593
    functionDepth: 2
    functionLinenumber: 593
    functionLinenumberEnd: 616
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 28
    functionsReached:
    - BufferGetBlockNumber
    - gistGetNodeBuffer
    - foreach_current_index
    - lfirst
    - gistDeCompressAtt
    linkageType: ''
    returnType: void
    signature: void foreach(lc, splitinfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BufFileSeekBlock
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:752,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:753,1
    - Dst: BufFileReadExact
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:754,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - file
    - blknum
    - ptr
    argTypes:
    - BufFile*
    - long
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 749
    functionDepth: 1
    functionLinenumber: 749
    functionLinenumberEnd: 755
    functionName: ReadTempFileBlock
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 2
    functionsReached:
    - BufFileSeekBlock
    - elog
    - 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:760,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:761,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/access/gist/gistbuildbuffers.c:762,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - file
    - blknum
    - ptr
    argTypes:
    - BufFile*
    - long
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 757
    functionDepth: 1
    functionLinenumber: 757
    functionLinenumberEnd: 763
    functionName: WriteTempFileBlock
    functionSourceFile: /src/postgres/src/backend/access/gist/gistbuildbuffers.c
    functionUses: 2
    functionsReached:
    - BufFileSeekBlock
    - BufFileWrite
    - elog
    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:
    - GISTSearchItemIsHeap
    - float8_cmp_internal
    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
      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
      Src: /src/postgres/src/backend/access/gist/gistscan.c:104,1
    - Dst: palloc
      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: 5
    functionLinenumber: 73
    functionLinenumberEnd: 124
    functionName: gistbeginscan
    functionSourceFile: /src/postgres/src/backend/access/gist/gistscan.c
    functionUses: 0
    functionsReached:
    - RelationGetIndexScan
    - MemoryContextSwitchTo
    - memset
    - palloc0
    - initGISTstate
    - createTempGistContext
    - palloc
    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: AllocSetContextCreate
      Src: /src/postgres/src/backend/access/gist/gistscan.c:207,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistscan.c:213,1
    - Dst: pairingheap_allocate
      Src: /src/postgres/src/backend/access/gist/gistscan.c:214,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/access/gist/gistscan.c:215,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistscan.c:231,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistscan.c:236,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/gist/gistscan.c:259,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gist/gistscan.c:275,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistscan.c:286,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/access/gist/gistscan.c:291,1
    - Dst: palloc
      Src: /src/postgres/src/backend/access/gist/gistscan.c:293,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gist/gistscan.c:308,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/gist/gistscan.c:309,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/gist/gistscan.c:311,1
    - Dst: get_func_rettype
      Src: /src/postgres/src/backend/access/gist/gistscan.c:325,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/access/gist/gistscan.c:331,1
    - Dst: pfree
      Src: /src/postgres/src/backend/access/gist/gistscan.c:339,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 69
    argCount: 5
    argNames:
    - scan
    - key
    - nkeys
    - orderbys
    - norderbys
    argTypes:
    - IndexScanDesc
    - ScanKey
    - int
    - ScanKey
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 126
    functionDepth: 4
    functionLinenumber: 126
    functionLinenumberEnd: 344
    functionName: gistrescan
    functionSourceFile: /src/postgres/src/backend/access/gist/gistscan.c
    functionUses: 0
    functionsReached:
    - IndexRelationGetNumberOfKeyAttributes
    - pfree
    - Assert
    - MemoryContextSwitchTo
    - RelationGetNumberOfAttributes
    - fmgr_info_copy
    - memcpy
    - MemoryContextReset
    - TupleDescAttr
    - get_func_rettype
    - TupleDescInitEntry
    - elog
    - AllocSetContextCreate
    - OidIsValid
    - pairingheap_allocate
    - palloc
    - RelationGetRelationName
    - CreateTemplateTupleDesc
    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:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - scan
    argTypes:
    - IndexScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 346
    functionDepth: 2
    functionLinenumber: 346
    functionLinenumberEnd: 356
    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:
    - PageAddItem
    - elog
    - OffsetNumberNext
    - PageIsEmpty
    - IndexTupleSize
    - PageGetMaxOffsetNumber
    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
    - IndexTupleSize
    - PageGetItemId
    - PageGetFreeSpace
    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
      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:
    - PageGetItemId
    - OffsetNumberNext
    - palloc
    - PageGetItem
    - PageGetMaxOffsetNumber
    linkageType: ''
    returnType: IndexTuple
    signature: 'IndexTuple *

      gistextractpage(Page page, int *len /* out */ )'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: repalloc
      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:
    - repalloc
    - memmove
    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:
    - memcpy
    - palloc
    - 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:
    - FunctionCall2Coll
    - PointerGetDatum
    - gistdentryinit
    - index_getattr
    - palloc
    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:
    - PointerGetDatum
    - FunctionCall2Coll
    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
    - gistdentryinit
    - index_getattr
    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:
    - IndexRelationGetNumberOfKeyAttributes
    - gistKeyIsEQ
    - gistMakeUnionKey
    - gistFormTuple
    - gistDeCompressAtt
    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:
    - IndexRelationGetNumberOfKeyAttributes
    - Assert
    - PageGetItemId
    - PageGetItem
    - gistpenalty
    - pg_prng_bool
    - gistdentryinit
    - OffsetNumberNext
    - index_getattr
    - GistPageIsLeaf
    - PageGetMaxOffsetNumber
    - gistDeCompressAtt
    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
    - gistCompressValues
    - index_form_tuple
    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:
    - IndexRelationGetNumberOfKeyAttributes
    - gistentryinit
    - PointerGetDatum
    - OidIsValid
    - 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
    - DatumGetPointer
    - gistentryinit
    - PointerGetDatum
    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: 5
    functionLinenumber: 666
    functionLinenumberEnd: 721
    functionName: gistFetchTuple
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 1
    functionsReached:
    - IndexRelationGetNumberOfKeyAttributes
    - heap_form_tuple
    - MemoryContextSwitchTo
    - index_getattr
    - gistFetchAtt
    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:
    - BufferGetPage
    - gistinitpage
    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:
    - errmsg
    - BufferGetBlockNumber
    - PageGetSpecialSize
    - ereport
    - errhint
    - BufferGetPage
    - RelationGetRelationName
    - PageIsNew
    - errcode
    - 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:
    - ReadBuffer
    - BMR_REL
    - ReleaseBuffer
    - LockBuffer
    - gistPageRecyclable
    - ConditionalLockBuffer
    - gistXLogPageReuse
    - GetFreeIndexPage
    - gistcheckpage
    - GistPageGetDeleteXid
    - BufferGetPage
    - ExtendBufferedRel
    - XLogStandbyInfoActive
    - PageIsNew
    - RelationNeedsWAL
    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:
    - GistPageGetDeleteXid
    - PageIsNew
    - GistPageIsDeleted
    - GlobalVisCheckRemovableFullXid
    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: 4
    functionLinenumber: 911
    functionLinenumberEnd: 923
    functionName: gistoptions
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 0
    functionsReached:
    - build_reloptions
    - lengthof
    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_index_column_opclass
    - OidIsValid
    - Int16GetDatum
    - ObjectIdGetDatum
    - get_opclass_opfamily_and_input_type
    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: 4
    BranchProfiles: []
    Callsites:
    - Dst: RelationIsPermanent
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1028,1
    - Dst: GetXLogInsertRecPtr
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1037,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1040,1
    - Dst: RelationNeedsWAL
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1040,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1043,1
    - Dst: gistXLogAssignLSN
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1044,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1055,1
    - Dst: GetFakeLSNForUnloggedRel
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1056,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1058
      start: 1015
    functionDepth: 4
    functionLinenumber: 1015
    functionLinenumberEnd: 1058
    functionName: gistGetFakeLSN
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 2
    functionsReached:
    - Assert
    - RelationIsPermanent
    - GetFakeLSNForUnloggedRel
    - gistXLogAssignLSN
    - GetXLogInsertRecPtr
    - XLogRecPtrIsInvalid
    - RelationNeedsWAL
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr gistGetFakeLSN(Relation rel)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1067,1
    - Dst: PG_RETURN_UINT16
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1072,1
    - Dst: PG_RETURN_UINT16
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1074,1
    - Dst: PG_RETURN_UINT16
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1076,1
    - Dst: PG_RETURN_UINT16
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1078,1
    - Dst: PG_RETURN_UINT16
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1080,1
    - Dst: PG_RETURN_UINT16
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1082,1
    - Dst: PG_RETURN_UINT16
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1084,1
    - Dst: PG_RETURN_UINT16
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1086,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1088
      start: 1064
    functionDepth: 1
    functionLinenumber: 1064
    functionLinenumberEnd: 1088
    functionName: gist_translate_cmptype_common
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_UINT16
    - PG_GETARG_INT32
    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:1104,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1105,1
    - Dst: OidFunctionCall1Coll
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1109,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1109,1
    - Dst: DatumGetUInt16
      Src: /src/postgres/src/backend/access/gist/gistutil.c:1110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - cmptype
    - opfamily
    argTypes:
    - CompareType
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1111
      start: 1097
    functionDepth: 1
    functionLinenumber: 1097
    functionLinenumberEnd: 1111
    functionName: gisttranslatecmptype
    functionSourceFile: /src/postgres/src/backend/access/gist/gistutil.c
    functionUses: 0
    functionsReached:
    - Int32GetDatum
    - OidIsValid
    - DatumGetUInt16
    - get_opfamily_proc
    - OidFunctionCall1Coll
    linkageType: ''
    returnType: StrategyNumber
    signature: StrategyNumber gisttranslatecmptype(CompareType cmptype, Oid opfamily)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      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:
    - gistvacuumscan
    - palloc0
    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
      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:
    - gistvacuumscan
    - palloc0
    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: gistGetFakeLSN
      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: 5
    functionLinenumber: 124
    functionLinenumberEnd: 297
    functionName: gistvacuumscan
    functionSourceFile: /src/postgres/src/backend/access/gist/gistvacuum.c
    functionUses: 2
    functionsReached:
    - RELATION_IS_LOCAL
    - MemoryContextSwitchTo
    - gistGetFakeLSN
    - vacuum_delay_point
    - GenerationContextCreate
    - read_stream_next_buffer
    - read_stream_begin_relation
    - MemoryContextDelete
    - IndexFreeSpaceMapVacuum
    - GetInsertRecPtr
    - RelationGetNumberOfBlocks
    - read_stream_reset
    - RelationNeedsWAL
    - LockRelationForExtension
    - BufferIsValid
    - gistvacuum_delete_empty_pages
    - UnlockRelationForExtension
    - intset_create
    - gistvacuumpage
    - read_stream_end
    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: gistGetFakeLSN
      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:
    - MarkBufferDirty
    - PageSetLSN
    - gistGetFakeLSN
    - LockBuffer
    - gistPageRecyclable
    - GistPageGetOpaque
    - vacuum_delay_point
    - errhint
    - GistPageGetNSN
    - RelationGetRelationName
    - GistMarkTuplesDeleted
    - errdetail
    - START_CRIT_SECTION
    - BufferGetBlockNumber
    - OffsetNumberNext
    - END_CRIT_SECTION
    - PageGetItem
    - RelationNeedsWAL
    - errmsg
    - PageGetItemId
    - gistXLogUpdate
    - ReadBufferExtended
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - RecordFreeIndexPage
    - intset_add_member
    - PageIndexMultiDelete
    - GistTupleIsInvalid
    - ereport
    - GistPageIsDeleted
    - GistFollowRight
    - callback
    - GistPageIsLeaf
    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:
    - ReleaseBuffer
    - LockBuffer
    - intset_is_member
    - intset_begin_iterate
    - OffsetNumberNext
    - intset_iterate_next
    - intset_num_entries
    - PageGetItem
    - PageIsNew
    - PageGetItemId
    - gistcheckpage
    - ReadBufferExtended
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - UnlockReleaseBuffer
    - Assert
    - gistdeletepage
    - GistPageIsDeleted
    - ItemPointerGetBlockNumber
    - GistPageIsLeaf
    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: gistGetFakeLSN
      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:
    - MarkBufferDirty
    - PageIndexTupleDelete
    - PageSetLSN
    - gistGetFakeLSN
    - GistPageSetDeleted
    - gistXLogPageDelete
    - START_CRIT_SECTION
    - BufferGetBlockNumber
    - PageGetItem
    - PageIsNew
    - RelationNeedsWAL
    - PageGetItemId
    - ReadNextFullTransactionId
    - BufferGetPage
    - PageGetMaxOffsetNumber
    - Assert
    - GistPageIsDeleted
    - GistFollowRight
    - END_CRIT_SECTION
    - ItemPointerGetBlockNumber
    - GistPageIsLeaf
    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
      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
    - 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:
    - gistentryinit
    - gistpenalty
    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:
    - gistentryinit
    - gistpenalty
    - gistDeCompressAtt
    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:
    - SWAPVAR
    - gistMakeUnionKey
    - gistentryinit
    - gistpenalty
    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:
    - FunctionCall2Coll
    - PointerGetDatum
    - OffsetNumberNext
    - memcpy
    - 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
      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:
    - errmsg
    - genericPickSplit
    - gistunionsubkey
    - Assert
    - removeDontCares
    - FunctionCall2Coll
    - gistKeyIsEQ
    - ereport
    - PointerGetDatum
    - palloc0
    - errhint
    - placeOne
    - supportSecondarySplit
    - findDontCares
    - RelationGetRelationName
    - errcode
    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
      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
      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:
    - gistSplitByKey
    - gistunionsubkey
    - Assert
    - gistSplitHalf
    - gistUserPicksplit
    - gistdentryinit
    - index_getattr
    - memcpy
    - palloc
    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
    - lappend
    - table_slot_callbacks
    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: Relation::rd_tableam::scan_begin
      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
    - struct ScanKeyData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 122
    functionName: table_beginscan_catalog
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 0
    functionsReached:
    - GetCatalogSnapshot
    - Relation::rd_tableam::scan_begin
    - RelationGetRelid
    - RegisterSnapshot
    linkageType: ''
    returnType: TableScanDesc
    signature: TableScanDesc table_beginscan_catalog(Relation relation, int nkeys,
      struct 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:
    - IsMVCCSnapshot
    - Assert
    - Relation::rd_tableam::parallelscan_estimate
    - EstimateSnapshotSpace
    - add_size
    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:
    - IsMVCCSnapshot
    - Relation::rd_tableam::parallelscan_initialize
    - SerializeSnapshot
    - Assert
    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:172,1
    - Dst: RelFileLocatorEquals
      Src: /src/postgres/src/backend/access/table/tableam.c:172,1
    - Dst: RestoreSnapshot
      Src: /src/postgres/src/backend/access/table/tableam.c:177,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/access/table/tableam.c:178,1
    - Dst: Relation::rd_tableam::scan_begin
      Src: /src/postgres/src/backend/access/table/tableam.c:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - relation
    - pscan
    argTypes:
    - Relation
    - ParallelTableScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 189
    functionName: table_beginscan_parallel
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 3
    functionsReached:
    - Relation::rd_tableam::scan_begin
    - Assert
    - RegisterSnapshot
    - RestoreSnapshot
    - RelFileLocatorEquals
    linkageType: ''
    returnType: TableScanDesc
    signature: TableScanDesc table_beginscan_parallel(Relation relation, ParallelTableScanDesc
      pscan)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/access/table/tableam.c:219,1
    - Dst: table_index_fetch_begin
      Src: /src/postgres/src/backend/access/table/tableam.c:220,1
    - Dst: table_index_fetch_tuple
      Src: /src/postgres/src/backend/access/table/tableam.c:221,1
    - Dst: table_index_fetch_end
      Src: /src/postgres/src/backend/access/table/tableam.c:223,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/access/table/tableam.c:224,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: 227
      start: 208
    functionDepth: 3
    functionLinenumber: 208
    functionLinenumberEnd: 227
    functionName: table_index_fetch_tuple_check
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 1
    functionsReached:
    - ExecDropSingleTupleTableSlot
    - table_index_fetch_end
    - table_slot_create
    - table_index_fetch_tuple
    - table_index_fetch_begin
    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: 3
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/access/table/tableam.c:246,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/access/table/tableam.c:246,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/table/tableam.c:247,1
    - Dst: TableAmRoutine*::tuple_tid_valid
      Src: /src/postgres/src/backend/access/table/tableam.c:253,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/table/tableam.c:254,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/table/tableam.c:255,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/table/tableam.c:256,1
    - Dst: ItemPointerGetBlockNumberNoCheck
      Src: /src/postgres/src/backend/access/table/tableam.c:257,1
    - Dst: ItemPointerGetOffsetNumberNoCheck
      Src: /src/postgres/src/backend/access/table/tableam.c:258,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/table/tableam.c:259,1
    - Dst: TableAmRoutine*::tuple_get_latest_tid
      Src: /src/postgres/src/backend/access/table/tableam.c:261,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - scan
    - tid
    argTypes:
    - TableScanDesc
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 235
    functionDepth: 2
    functionLinenumber: 235
    functionLinenumberEnd: 262
    functionName: table_tuple_get_latest_tid
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 0
    functionsReached:
    - errmsg
    - TableAmRoutine*::tuple_tid_valid
    - TransactionIdIsValid
    - TableAmRoutine*::tuple_get_latest_tid
    - ereport
    - ItemPointerGetOffsetNumberNoCheck
    - ItemPointerGetBlockNumberNoCheck
    - unlikely
    - elog
    - RelationGetRelationName
    - errcode
    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:279,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/access/table/tableam.c:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rel
    - slot
    argTypes:
    - Relation
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 276
    functionDepth: 2
    functionLinenumber: 276
    functionLinenumberEnd: 280
    functionName: simple_table_tuple_insert
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 0
    functionsReached:
    - table_tuple_insert
    - GetCurrentCommandId
    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:296,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/access/table/tableam.c:297,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/table/tableam.c:306,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/table/tableam.c:314,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/table/tableam.c:318,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/table/tableam.c:322,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - rel
    - tid
    - snapshot
    argTypes:
    - Relation
    - ItemPointer
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 290
    functionDepth: 2
    functionLinenumber: 290
    functionLinenumberEnd: 325
    functionName: simple_table_tuple_delete
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 0
    functionsReached:
    - elog
    - table_tuple_delete
    - GetCurrentCommandId
    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:345,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/access/table/tableam.c:346,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/table/tableam.c:355,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/table/tableam.c:363,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/table/tableam.c:367,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/table/tableam.c:371,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: 374
      start: 335
    functionDepth: 2
    functionLinenumber: 335
    functionLinenumberEnd: 374
    functionName: simple_table_tuple_update
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 0
    functionsReached:
    - elog
    - table_tuple_update
    - GetCurrentCommandId
    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: 386
      start: 382
    functionDepth: 0
    functionLinenumber: 382
    functionLinenumberEnd: 386
    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:394,1
    - Dst: RelationUsesLocalBuffers
      Src: /src/postgres/src/backend/access/table/tableam.c:397,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/access/table/tableam.c:399,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/access/table/tableam.c:401,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - rel
    - pscan
    argTypes:
    - Relation
    - ParallelTableScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 388
    functionDepth: 2
    functionLinenumber: 388
    functionLinenumberEnd: 404
    functionName: table_block_parallelscan_initialize
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 0
    functionsReached:
    - pg_atomic_init_u64
    - RelationGetNumberOfBlocks
    - SpinLockInit
    - RelationUsesLocalBuffers
    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:411,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rel
    - pscan
    argTypes:
    - Relation
    - ParallelTableScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 406
    functionDepth: 2
    functionLinenumber: 406
    functionLinenumberEnd: 412
    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: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/access/table/tableam.c:429,1
    - Dst: StaticAssertStmt
      Src: /src/postgres/src/backend/access/table/tableam.c:431,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/access/table/tableam.c:441,1
    - Dst: Max
      Src: /src/postgres/src/backend/access/table/tableam.c:441,1
    - Dst: Min
      Src: /src/postgres/src/backend/access/table/tableam.c:450,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/access/table/tableam.c:455,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/table/tableam.c:475,1
    - Dst: ss_get_location
      Src: /src/postgres/src/backend/access/table/tableam.c:476,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/access/table/tableam.c:480,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - rel
    - pbscanwork
    - pbscan
    argTypes:
    - Relation
    - ParallelBlockTableScanWorker
    - ParallelBlockTableScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 421
    functionDepth: 3
    functionLinenumber: 421
    functionLinenumberEnd: 481
    functionName: table_block_parallelscan_startblock_init
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 1
    functionsReached:
    - Min
    - memset
    - ss_get_location
    - SpinLockRelease
    - Max
    - StaticAssertStmt
    - pg_nextpower2_32
    - SpinLockAcquire
    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)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_fetch_add_u64
      Src: /src/postgres/src/backend/access/table/tableam.c:570,1
    - Dst: ss_report_location
      Src: /src/postgres/src/backend/access/table/tableam.c:595,1
    - Dst: ss_report_location
      Src: /src/postgres/src/backend/access/table/tableam.c:597,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 3
    argNames:
    - rel
    - pbscanwork
    - pbscan
    argTypes:
    - Relation
    - ParallelBlockTableScanWorker
    - ParallelBlockTableScanDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 491
    functionDepth: 3
    functionLinenumber: 491
    functionLinenumberEnd: 601
    functionName: table_block_parallelscan_nextpage
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 1
    functionsReached:
    - ss_report_location
    - pg_atomic_fetch_add_u64
    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:625,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/access/table/tableam.c:625,1
    - Dst: smgrnblocks
      Src: /src/postgres/src/backend/access/table/tableam.c:628,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/access/table/tableam.c:628,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - rel
    - forkNumber
    argTypes:
    - Relation
    - ForkNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 616
    functionDepth: 2
    functionLinenumber: 616
    functionLinenumberEnd: 631
    functionName: table_block_relation_size
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 0
    functionsReached:
    - smgrnblocks
    - RelationGetSmgr
    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:667,1
    - Dst: RelationGetFillFactor
      Src: /src/postgres/src/backend/access/table/tableam.c:738,1
    - Dst: get_rel_data_width
      Src: /src/postgres/src/backend/access/table/tableam.c:740,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/access/table/tableam.c:745,1
    - Dst: rint
      Src: /src/postgres/src/backend/access/table/tableam.c:747,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: 761
      start: 653
    functionDepth: 1
    functionLinenumber: 653
    functionLinenumberEnd: 761
    functionName: table_block_relation_estimate_size
    functionSourceFile: /src/postgres/src/backend/access/table/tableam.c
    functionUses: 1
    functionsReached:
    - RelationGetFillFactor
    - rint
    - get_rel_data_width
    - RelationGetNumberOfBlocks
    - clamp_row_est
    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:33,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/access/table/tableamapi.c:34,1
    - Dst: IsA
      Src: /src/postgres/src/backend/access/table/tableamapi.c:36,1
    - Dst: elog
      Src: /src/postgres/src/backend/access/table/tableamapi.c:37,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:48,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:52,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:57,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:63,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:65,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:72,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:77,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:87,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:90,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:92,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:94,1
    - Dst: Assert
      Src: /src/postgres/src/backend/access/table/tableamapi.c:95,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 43
    argCount: 1
    argNames:
    - amhandler
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 98
    functionName: GetTableAmRoutine
    functionSourceFile: /src/postgres/src/backend/access/table/tableamapi.c
    functionUses: 0
    functionsReached:
    - OidFunctionCall0
    - Assert
    - IsA
    - elog
    - 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:106,1
    - Dst: strlen
      Src: /src/postgres/src/backend/access/table/tableamapi.c:111,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/table/tableamapi.c:113,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/access/table/tableamapi.c:123,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/access/table/tableamapi.c:125,1
    - Dst: get_table_am_oid
      Src: /src/postgres/src/backend/access/table/tableamapi.c:125,1
    - Dst: ereport
      Src: /src/postgres/src/backend/access/table/tableamapi.c:134,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/table/tableamapi.c:135,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/table/tableamapi.c:136,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/access/table/tableamapi.c:141,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 149
    functionName: check_default_table_access_method
    functionSourceFile: /src/postgres/src/backend/access/table/tableamapi.c
    functionUses: 0
    functionsReached:
    - errmsg
    - GUC_check_errdetail
    - ereport
    - IsTransactionState
    - OidIsValid
    - errcode
    - strlen
    - get_table_am_oid
    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_kind
      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:
    - validate_relation_kind
    - relation_open
    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_kind
      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:
    - try_relation_open
    - validate_relation_kind
    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_kind
      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:
    - relation_openrv
    - validate_relation_kind
    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_kind
      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:
    - relation_openrv_extended
    - validate_relation_kind
    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: 13
    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:143,1
    - Dst: errcode
      Src: /src/postgres/src/backend/access/table/table.c:144,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/access/table/table.c:145,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/access/table/table.c:146,1
    - Dst: errdetail_relkind_not_supported
      Src: /src/postgres/src/backend/access/table/table.c:147,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 1
    argNames:
    - r
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 148
    functionName: validate_relation_kind
    functionSourceFile: /src/postgres/src/backend/access/table/table.c
    functionUses: 7
    functionsReached:
    - errmsg
    - errdetail_relkind_not_supported
    - ereport
    - RelationGetRelationName
    - errcode
    linkageType: ''
    returnType: void
    signature: void validate_relation_kind(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: 3
    functionLinenumber: 40
    functionLinenumberEnd: 162
    functionName: toast_tuple_init
    functionSourceFile: /src/postgres/src/backend/access/table/toast_helper.c
    functionUses: 1
    functionsReached:
    - VARSIZE_ANY
    - memcmp
    - TupleDescAttr
    - VARATT_IS_EXTERNAL
    - VARSIZE_EXTERNAL
    - VARATT_IS_EXTERNAL_ONDISK
    - PointerGetDatum
    - detoast_attr
    - detoast_external_attr
    - 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:
    - VARATT_IS_COMPRESSED
    - VARATT_IS_EXTERNAL
    - TupleDescAttr
    - DatumGetPointer
    - MAXALIGN
    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: 2
    functionLinenumber: 226
    functionLinenumberEnd: 250
    functionName: toast_tuple_try_compression
    functionSourceFile: /src/postgres/src/backend/access/table/toast_helper.c
    functionUses: 1
    functionsReached:
    - toast_compress_datum
    - DatumGetPointer
    - VARSIZE
    - pfree
    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
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 255
    functionDepth: 6
    functionLinenumber: 255
    functionLinenumberEnd: 269
    functionName: toast_tuple_externalize
    functionSourceFile: /src/postgres/src/backend/access/table/toast_helper.c
    functionUses: 1
    functionsReached:
    - pfree
    - DatumGetPointer
    - toast_save_datum
    linkageType: ''
    returnType: void
    signature: void toast_tuple_externalize(ToastTupleContext *ttc, int attribute,
      int 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: 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
    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:63,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:65,1
    - Dst: pgstat_progress_start_command
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:74,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - next
    - estimate_backup_size
    argTypes:
    - bbsink*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 78
    functionName: bbsink_progress_new
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_progress.c
    functionUses: 0
    functionsReached:
    - Assert
    - pgstat_progress_update_param
    - palloc0
    - pgstat_progress_start_command
    linkageType: ''
    returnType: bbsink
    signature: 'bbsink *

      bbsink_progress_new(bbsink *next, bool estimate_backup_size)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:103,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:104,1
    - Dst: bbsink_forward_begin_backup
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 108
    functionName: bbsink_progress_begin_backup
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_progress.c
    functionUses: 0
    functionsReached:
    - bbsink_forward_begin_backup
    - pgstat_progress_update_multi_param
    - list_length
    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:126,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:127,1
    - Dst: bbsink_forward_end_archive
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:131,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 140
    functionName: bbsink_progress_end_archive
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_progress.c
    functionUses: 0
    functionsReached:
    - bbsink_forward_end_archive
    - pgstat_progress_update_param
    - list_length
    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:164,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:179,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - sink
    - len
    argTypes:
    - bbsink*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 180
    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_update_param
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:188,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: 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:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 200
    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:221,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - bbsink_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 223
    functionName: basebackup_progress_wait_wal_archive
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_progress.c
    functionUses: 0
    functionsReached:
    - pgstat_progress_update_multi_param
    - list_length
    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:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 233
    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: pgstat_progress_end_command
      Src: /src/postgres/src/backend/backup/basebackup_progress.c:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 242
    functionName: basebackup_progress_done
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_progress.c
    functionUses: 0
    functionsReached:
    - pgstat_progress_end_command
    linkageType: ''
    returnType: void
    signature: void basebackup_progress_done(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:40,1
    - Dst: memset
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:43,1
    - Dst: GetWalSummaries
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:45,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:48,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:51,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:53,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:54,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:55,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:57,1
    - Dst: tuplestore_puttuple
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 31
    functionDepth: 5
    functionLinenumber: 31
    functionLinenumberEnd: 62
    functionName: pg_available_wal_summaries
    functionSourceFile: /src/postgres/src/backend/backup/walsummaryfuncs.c
    functionUses: 0
    functionsReached:
    - heap_form_tuple
    - GetWalSummaries
    - CHECK_FOR_INTERRUPTS
    - memset
    - Int64GetDatum
    - InitMaterializedSRF
    - tuplestore_puttuple
    - LSNGetDatum
    - lfirst
    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:48,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:51,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:53,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:54,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:55,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:57,1
    - Dst: tuplestore_puttuple
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 46
    functionDepth: 5
    functionLinenumber: 46
    functionLinenumberEnd: 59
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/backup/walsummaryfuncs.c
    functionUses: 28
    functionsReached:
    - heap_form_tuple
    - CHECK_FOR_INTERRUPTS
    - Int64GetDatum
    - tuplestore_puttuple
    - LSNGetDatum
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, wslist)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:82,1
    - Dst: memset
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:84,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:91,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:93,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:94,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:95,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:99,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:100,1
    - Dst: OpenWalSummaryFile
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:102,1
    - Dst: CreateBlockRefTableReader
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:103,1
    - Dst: FilePathName
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:104,1
    - Dst: BlockRefTableReaderNextRelation
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:108,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:114,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:116,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:117,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:118,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:119,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:129,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:131,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:132,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:134,1
    - Dst: tuplestore_puttuple
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:135,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:144,1
    - Dst: BlockRefTableReaderGetBlocks
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:146,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:155,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:158,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:160,1
    - Dst: tuplestore_puttuple
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:161,1
    - Dst: DestroyBlockRefTableReader
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:167,1
    - Dst: FileClose
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:168,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 68
    functionDepth: 5
    functionLinenumber: 68
    functionLinenumberEnd: 171
    functionName: pg_wal_summary_contents
    functionSourceFile: /src/postgres/src/backend/backup/walsummaryfuncs.c
    functionUses: 0
    functionsReached:
    - CHECK_FOR_INTERRUPTS
    - FileClose
    - BoolGetDatum
    - PG_GETARG_LSN
    - BlockRefTableReaderGetBlocks
    - CreateBlockRefTableReader
    - OpenWalSummaryFile
    - Int64GetDatum
    - BlockNumberIsValid
    - Int16GetDatum
    - BlockRefTableReaderNextRelation
    - errmsg
    - heap_form_tuple
    - InitMaterializedSRF
    - ObjectIdGetDatum
    - FilePathName
    - DestroyBlockRefTableReader
    - memset
    - PG_GETARG_INT64
    - ereport
    - tuplestore_puttuple
    - errcode
    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:188,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:191,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:192,1
    - Dst: memset
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:194,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:196,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:197,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:198,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:203,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:205,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:207,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/backup/walsummaryfuncs.c:207,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 176
    functionDepth: 5
    functionLinenumber: 176
    functionLinenumberEnd: 208
    functionName: pg_get_wal_summarizer_state
    functionSourceFile: /src/postgres/src/backend/backup/walsummaryfuncs.c
    functionUses: 0
    functionsReached:
    - heap_form_tuple
    - HeapTupleGetDatum
    - memset
    - Int32GetDatum
    - Int64GetDatum
    - PG_RETURN_DATUM
    - elog
    - GetWalSummarizerState
    - get_call_result_type
    - LSNGetDatum
    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
      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:
    - errmsg
    - Assert
    - palloc0
    - ereport
    - errcode
    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:
    - memset
    - bbsink_begin_backup
    - palloc
    - LZ4F_compressBound
    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:
    - pfree
    - Assert
    - LZ4F_getErrorName
    - bbsink_begin_archive
    - LZ4F_createCompressionContext
    - elog
    - LZ4F_isError
    - LZ4F_compressBegin
    - psprintf
    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:
    - LZ4F_getErrorName
    - LZ4F_compressUpdate
    - bbsink_archive_contents
    - elog
    - LZ4F_isError
    - LZ4F_compressBound
    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:
    - Assert
    - LZ4F_getErrorName
    - LZ4F_compressEnd
    - LZ4F_freeCompressionContext
    - bbsink_archive_contents
    - bbsink_forward_end_archive
    - elog
    - LZ4F_isError
    - LZ4F_compressBound
    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
      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:
    - UINT64CONST
    - GetCurrentTimestamp
    - palloc0
    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:
    - SendXlogRecPtrResult
    - pq_puttextmessage
    - SendCopyOutResponse
    - SendTablespaceList
    - palloc
    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:
    - list_nth
    - pq_beginmessage
    - pq_sendstring
    - pq_endmessage
    - pq_sendbyte
    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_putmessage
    - pq_flush_if_writable
    - TimestampDifferenceMilliseconds
    - GetCurrentTimestamp
    - pq_beginmessage
    - pq_endmessage
    - pq_sendint64
    - 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_flush_if_writable
    - pq_beginmessage
    - GetCurrentTimestamp
    - pq_endmessage
    - pq_sendint64
    - 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_endmessage
    - pq_beginmessage
    - pq_sendbyte
    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:
    - SendXlogRecPtrResult
    - SendCopyDone
    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_sendint16
    - pq_endmessage
    - pq_beginmessage
    - pq_sendbyte
    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: begin_tup_output_tupdesc
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:361,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:364,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:364,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:364,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:365,1
    - Dst: do_tup_output
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:366,1
    - Dst: end_tup_output
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:368,1
    - Dst: pq_puttextmessage
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:371,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - ptr
    - tli
    argTypes:
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 340
    functionDepth: 4
    functionLinenumber: 340
    functionLinenumberEnd: 372
    functionName: SendXlogRecPtrResult
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_copy.c
    functionUses: 2
    functionsReached:
    - LSN_FORMAT_ARGS
    - CreateDestReceiver
    - CStringGetTextDatum
    - Int64GetDatum
    - end_tup_output
    - pq_puttextmessage
    - do_tup_output
    - CreateTemplateTupleDesc
    - begin_tup_output_tupdesc
    - psprintf
    - TupleDescInitBuiltinEntry
    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:385,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:387,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:388,1
    - Dst: TupleDescInitBuiltinEntry
      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: begin_tup_output_tupdesc
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:393,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:398,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:410,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:411,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:414,1
    - Dst: do_tup_output
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:418,1
    - Dst: end_tup_output
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:421,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - tablespaces
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 377
    functionDepth: 4
    functionLinenumber: 377
    functionLinenumberEnd: 422
    functionName: SendTablespaceList
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_copy.c
    functionUses: 1
    functionsReached:
    - lfirst
    - CreateDestReceiver
    - ObjectIdGetDatum
    - CStringGetTextDatum
    - Int64GetDatum
    - end_tup_output
    - do_tup_output
    - CreateTemplateTupleDesc
    - begin_tup_output_tupdesc
    - TupleDescInitBuiltinEntry
    linkageType: ''
    returnType: void
    signature: void SendTablespaceList(List *tablespaces)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:398,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:410,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:411,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:414,1
    - Dst: do_tup_output
      Src: /src/postgres/src/backend/backup/basebackup_copy.c:418,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 396
    functionDepth: 1
    functionLinenumber: 396
    functionLinenumberEnd: 419
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_copy.c
    functionUses: 28
    functionsReached:
    - lfirst
    - CStringGetTextDatum
    - Int64GetDatum
    - do_tup_output
    - ObjectIdGetDatum
    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: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/backup/walsummary.c:70,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/backup/walsummary.c:72,1
    - Dst: palloc
      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:
    - IsWalSummaryFilename
    - ReadDir
    - AllocateDir
    - palloc
    - FreeDir
    - sscanf
    - lappend
    - XLogRecPtrIsInvalid
    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: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/backup/walsummary.c:114,1
    - Dst: XLogRecPtrIsInvalid
      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:
    - XLogRecPtrIsInvalid
    - lappend
    - lfirst
    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: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/backup/walsummary.c:114,1
    - Dst: XLogRecPtrIsInvalid
      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:
    - XLogRecPtrIsInvalid
    - lappend
    - lfirst
    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:
    - list_sort
    - lfirst
    - list_copy
    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:
    - LSN_FORMAT_ARGS
    - errmsg
    - snprintf
    - PathNameOpenFile
    - ereport
    - errcode_for_file_access
    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:
    - LSN_FORMAT_ARGS
    - errmsg
    - lstat
    - snprintf
    - errmsg_internal
    - ereport
    - unlink
    - errcode_for_file_access
    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:
    - errmsg
    - FilePathName
    - FileRead
    - ereport
    - 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:
    - errmsg
    - FilePathName
    - FileWrite
    - ereport
    - errhint
    - 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:
    - enlargeStringInfo
    - va_end
    - errmsg_internal
    - ereport
    - appendStringInfoVA
    - initStringInfo
    - va_start
    - errcode
    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:65,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:66,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:67,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:73,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:76,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - next
    - compress
    argTypes:
    - bbsink*
    - pg_compress_specification*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 86
    functionName: bbsink_gzip_new
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_gzip.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - palloc0
    - ereport
    - errcode
    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:100,1
    - Dst: bbsink_begin_backup
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 108
    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:121,1
    - Dst: deflateInit2
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:139,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:141,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:142,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:143,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:149,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:150,1
    - Dst: bbsink_begin_archive
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:151,1
    - Dst: pfree
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:152,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - sink
    - archive_name
    argTypes:
    - bbsink*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 113
    functionDepth: 2
    functionLinenumber: 113
    functionLinenumberEnd: 153
    functionName: bbsink_gzip_begin_archive
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_gzip.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - Assert
    - bbsink_begin_archive
    - memset
    - ereport
    - deflateInit2
    - errcode
    - psprintf
    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:181,1
    - Dst: deflate
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:198,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:200,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:212,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - sink
    - len
    argTypes:
    - bbsink*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 166
    functionDepth: 2
    functionLinenumber: 166
    functionLinenumberEnd: 216
    functionName: bbsink_gzip_archive_contents
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_gzip.c
    functionUses: 0
    functionsReached:
    - deflate
    - Assert
    - elog
    - bbsink_archive_contents
    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:239,1
    - Dst: deflate
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:249,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:251,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:265,1
    - Dst: bbsink_forward_end_archive
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:270,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 224
    functionDepth: 2
    functionLinenumber: 224
    functionLinenumberEnd: 271
    functionName: bbsink_gzip_end_archive
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_gzip.c
    functionUses: 0
    functionsReached:
    - Assert
    - bbsink_archive_contents
    - bbsink_forward_end_archive
    - deflate
    - elog
    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:280,1
    - Dst: bbsink_manifest_contents
      Src: /src/postgres/src/backend/backup/basebackup_gzip.c:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sink
    - len
    argTypes:
    - bbsink*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 277
    functionDepth: 2
    functionLinenumber: 277
    functionLinenumberEnd: 282
    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:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - opaque
    - items
    - size
    argTypes:
    - void*
    - unsigned
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 292
    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:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - opaque
    - address
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 302
    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: 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:
    - bbsink_begin_backup
    - Assert
    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:
    - bbsink_begin_archive
    - Assert
    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:
    - bbsink_archive_contents
    - Assert
    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:
    - bbsink_end_archive
    - Assert
    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: 0
    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
      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:
    - errmsg
    - Assert
    - palloc0
    - ereport
    - errcode
    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:
    - errmsg
    - ZSTD_getErrorName
    - ZSTD_isError
    - bbsink_begin_backup
    - ereport
    - ZSTD_createCCtx
    - elog
    - ZSTD_CCtx_setParameter
    - ZSTD_compressBound
    - palloc
    - errcode
    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:
    - pfree
    - bbsink_begin_archive
    - Assert
    - 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:
    - ZSTD_getErrorName
    - bbsink_archive_contents
    - ZSTD_isError
    - elog
    - ZSTD_compressBound
    - ZSTD_compressStream2
    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:
    - ZSTD_getErrorName
    - bbsink_archive_contents
    - ZSTD_isError
    - bbsink_forward_end_archive
    - elog
    - ZSTD_compressBound
    - ZSTD_compressStream2
    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:
    - ZSTD_freeCCtx
    - bbsink_forward_end_backup
    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:72,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:73,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - next
    - maxrate
    argTypes:
    - bbsink*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 89
    functionName: bbsink_throttle_new
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_throttle.c
    functionUses: 0
    functionsReached:
    - Assert
    - palloc0
    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:100,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - sink
    argTypes:
    - bbsink*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 95
    functionDepth: 3
    functionLinenumber: 95
    functionLinenumberEnd: 104
    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:112,1
    - Dst: bbsink_forward_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sink
    - len
    argTypes:
    - bbsink*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 109
    functionDepth: 3
    functionLinenumber: 109
    functionLinenumberEnd: 115
    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:123,1
    - Dst: bbsink_forward_manifest_contents
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sink
    - len
    argTypes:
    - bbsink*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 120
    functionDepth: 3
    functionLinenumber: 120
    functionLinenumberEnd: 126
    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:138,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:159,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:166,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:169,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:175,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:181,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/backup/basebackup_throttle.c:198,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - sink
    - increment
    argTypes:
    - bbsink_throttle*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 199
    functionName: throttle
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_throttle.c
    functionUses: 2
    functionsReached:
    - ResetLatch
    - Assert
    - CHECK_FOR_INTERRUPTS
    - GetCurrentTimestamp
    - WaitLatch
    linkageType: ''
    returnType: void
    signature: void throttle(bbsink_throttle *sink, size_t increment)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      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:
    - errmsg
    - errcode
    - CommitTransactionCommand
    - is_absolute_path
    - pg_check_dir
    - ereport
    - palloc0
    - has_privs_of_role
    - errdetail
    - MakePGDirectory
    - StartTransactionCommand
    - GetUserId
    - 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:
    - errmsg
    - pfree
    - Assert
    - bbsink_forward_begin_archive
    - PathNameOpenFile
    - ereport
    - psprintf
    - 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:
    - errmsg
    - FilePathName
    - FileWrite
    - ereport
    - errhint
    - bbsink_forward_archive_contents
    - errcode
    - 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:
    - errmsg
    - FileSync
    - FilePathName
    - FileClose
    - ereport
    - bbsink_forward_end_archive
    - 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:
    - errmsg
    - pfree
    - Assert
    - bbsink_forward_begin_manifest
    - PathNameOpenFile
    - ereport
    - psprintf
    - 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:
    - errmsg
    - bbsink_forward_manifest_contents
    - FilePathName
    - FileWrite
    - ereport
    - errhint
    - errcode
    - 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:
    - pfree
    - FileClose
    - bbsink_forward_end_manifest
    - durable_rename
    - psprintf
    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:
    - UINT64CONST
    - AppendToManifest
    - memset
    - pg_cryptohash_create
    - GetSystemIdentifier
    - BufFileCreateTemp
    - pg_cryptohash_error
    - elog
    - 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: 9
    functionLinenumber: 101
    functionLinenumberEnd: 206
    functionName: AddFileToBackupManifest
    functionSourceFile: /src/postgres/src/backend/backup/backup_manifest.c
    functionUses: 0
    functionsReached:
    - pg_gmtime
    - snprintf
    - strlen
    - pg_verify_mbstr
    - enlargeStringInfo
    - pfree
    - AppendStringToManifest
    - pg_checksum_type_name
    - escape_json_with_len
    - appendStringInfoString
    - elog
    - OidIsValid
    - pg_checksum_final
    - IsManifestEnabled
    - appendStringInfo
    - appendStringInfoChar
    - pg_strftime
    - initStringInfo
    - hex_encode
    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: XLogRecPtrIsInvalid
      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: XLogRecPtrIsInvalid
      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:
    - errmsg
    - LSN_FORMAT_ARGS
    - AppendToManifest
    - AppendStringToManifest
    - readTimeLineHistory
    - ereport
    - XLogRecPtrIsInvalid
    - IsManifestEnabled
    - lfirst
    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: XLogRecPtrIsInvalid
      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: XLogRecPtrIsInvalid
      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:
    - errmsg
    - LSN_FORMAT_ARGS
    - AppendToManifest
    - ereport
    - XLogRecPtrIsInvalid
    - lfirst
    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:
    - errmsg
    - Min
    - bbsink_manifest_contents
    - AppendStringToManifest
    - pg_cryptohash_final
    - ereport
    - pg_cryptohash_error
    - elog
    - BufFileReadExact
    - bbsink_end_manifest
    - BufFileClose
    - bbsink_begin_manifest
    - BufFileSeek
    - IsManifestEnabled
    - hex_encode
    - 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:
    - Assert
    - pg_cryptohash_error
    - elog
    - BufFileWrite
    - pg_cryptohash_update
    - strlen
    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
      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
    - MemoryContextSwitchTo
    - pstrdup
    - initialize_target_list
    - lappend
    - palloc
    - lfirst
    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:
    - strcmp
    - lfirst
    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
      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:
    - strcmp
    - errcode
    - errmsg
    - ereport
    - initialize_target_list
    - BaseBackupTargetType*::check_detail
    - palloc
    - lfirst
    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
      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:
    - palloc
    - strcmp
    - BaseBackupTargetType*::check_detail
    - lfirst
    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:
    - MemoryContextSwitchTo
    - lappend
    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:
    - errmsg
    - errcode
    - ereport
    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:
    - errmsg
    - errcode
    - ereport
    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:252,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup.c:253,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/backup/basebackup.c:257,1
    - Dst: InitializeBackupManifest
      Src: /src/postgres/src/backend/backup/basebackup.c:259,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/backup/basebackup.c:265,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/backup/basebackup.c:266,1
    - Dst: basebackup_progress_wait_checkpoint
      Src: /src/postgres/src/backend/backup/basebackup.c:268,1
    - Dst: do_pg_backup_start
      Src: /src/postgres/src/backend/backup/basebackup.c:269,1
    - Dst: PG_ENSURE_ERROR_CLEANUP
      Src: /src/postgres/src/backend/backup/basebackup.c:282,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/backup/basebackup.c:282,1
    - Dst: PrepareForIncrementalBackup
      Src: /src/postgres/src/backend/backup/basebackup.c:289,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/backup/basebackup.c:292,1
    - Dst: lappend
      Src: /src/postgres/src/backend/backup/basebackup.c:294,1
    - Dst: basebackup_progress_estimate_backup_size
      Src: /src/postgres/src/backend/backup/basebackup.c:302,1
    - Dst: foreach
      Src: /src/postgres/src/backend/backup/basebackup.c:304,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup.c:306,1
    - Dst: sendDir
      Src: /src/postgres/src/backend/backup/basebackup.c:309,1
    - Dst: sendTablespace
      Src: /src/postgres/src/backend/backup/basebackup.c:312,1
    - Dst: bbsink_begin_backup
      Src: /src/postgres/src/backend/backup/basebackup.c:320,1
    - Dst: foreach
      Src: /src/postgres/src/backend/backup/basebackup.c:323,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup.c:325,1
    - Dst: bbsink_begin_archive
      Src: /src/postgres/src/backend/backup/basebackup.c:333,1
    - Dst: build_backup_content
      Src: /src/postgres/src/backend/backup/basebackup.c:336,1
    - Dst: sendFileWithContent
      Src: /src/postgres/src/backend/backup/basebackup.c:337,1
    - Dst: pfree
      Src: /src/postgres/src/backend/backup/basebackup.c:339,1
    - Dst: sendFileWithContent
      Src: /src/postgres/src/backend/backup/basebackup.c:344,1
    - Dst: sendDir
      Src: /src/postgres/src/backend/backup/basebackup.c:350,1
    - Dst: lstat
      Src: /src/postgres/src/backend/backup/basebackup.c:354,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:355,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:356,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:357,1
    - Dst: sendFile
      Src: /src/postgres/src/backend/backup/basebackup.c:359,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/backup/basebackup.c:365,1
    - Dst: bbsink_begin_archive
      Src: /src/postgres/src/backend/backup/basebackup.c:367,1
    - Dst: sendTablespace
      Src: /src/postgres/src/backend/backup/basebackup.c:369,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup.c:380,1
    - Dst: lnext
      Src: /src/postgres/src/backend/backup/basebackup.c:380,1
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/backend/backup/basebackup.c:385,1
    - Dst: memset
      Src: /src/postgres/src/backend/backup/basebackup.c:387,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup.c:388,1
    - Dst: bbsink_end_archive
      Src: /src/postgres/src/backend/backup/basebackup.c:391,1
    - Dst: basebackup_progress_wait_wal_archive
      Src: /src/postgres/src/backend/backup/basebackup.c:395,1
    - Dst: do_pg_backup_stop
      Src: /src/postgres/src/backend/backup/basebackup.c:396,1
    - Dst: destroyStringInfo
      Src: /src/postgres/src/backend/backup/basebackup.c:402,1
    - Dst: pfree
      Src: /src/postgres/src/backend/backup/basebackup.c:403,1
    - Dst: PG_END_ENSURE_ERROR_CLEANUP
      Src: /src/postgres/src/backend/backup/basebackup.c:405,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/backup/basebackup.c:405,1
    - Dst: basebackup_progress_transfer_wal
      Src: /src/postgres/src/backend/backup/basebackup.c:428,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/backup/basebackup.c:439,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/backup/basebackup.c:440,1
    - Dst: XLByteToPrevSeg
      Src: /src/postgres/src/backend/backup/basebackup.c:441,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/backup/basebackup.c:442,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/backup/basebackup.c:444,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/backup/basebackup.c:445,1
    - Dst: IsXLogFileName
      Src: /src/postgres/src/backend/backup/basebackup.c:448,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:449,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/backup/basebackup.c:450,1
    - Dst: lappend
      Src: /src/postgres/src/backend/backup/basebackup.c:452,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/backup/basebackup.c:452,1
    - Dst: IsTLHistoryFileName
      Src: /src/postgres/src/backend/backup/basebackup.c:455,1
    - Dst: lappend
      Src: /src/postgres/src/backend/backup/basebackup.c:457,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/backup/basebackup.c:457,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/backup/basebackup.c:460,1
    - Dst: CheckXLogRemoved
      Src: /src/postgres/src/backend/backup/basebackup.c:466,1
    - Dst: list_sort
      Src: /src/postgres/src/backend/backup/basebackup.c:473,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:480,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:481,1
    - Dst: XLogFromFileName
      Src: /src/postgres/src/backend/backup/basebackup.c:487,1
    - Dst: linitial
      Src: /src/postgres/src/backend/backup/basebackup.c:487,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/backup/basebackup.c:493,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:495,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:496,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup.c:500,1
    - Dst: XLogFromFileName
      Src: /src/postgres/src/backend/backup/basebackup.c:504,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/backup/basebackup.c:509,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:510,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:511,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/backup/basebackup.c:518,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:519,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:520,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup.c:526,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/backup/basebackup.c:531,1
    - Dst: XLogFromFileName
      Src: /src/postgres/src/backend/backup/basebackup.c:532,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/backup/basebackup.c:534,1
    - Dst: CheckXLogRemoved
      Src: /src/postgres/src/backend/backup/basebackup.c:544,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:547,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:548,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:549,1
    - Dst: fstat
      Src: /src/postgres/src/backend/backup/basebackup.c:552,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:553,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:554,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:555,1
    - Dst: CheckXLogRemoved
      Src: /src/postgres/src/backend/backup/basebackup.c:559,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:560,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:561,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:562,1
    - Dst: _tarWriteHeader
      Src: /src/postgres/src/backend/backup/basebackup.c:566,1
    - Dst: basebackup_read_file
      Src: /src/postgres/src/backend/backup/basebackup.c:568,1
    - Dst: Min
      Src: /src/postgres/src/backend/backup/basebackup.c:569,1
    - Dst: CheckXLogRemoved
      Src: /src/postgres/src/backend/backup/basebackup.c:573,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup.c:574,1
    - Dst: CheckXLogRemoved
      Src: /src/postgres/src/backend/backup/basebackup.c:584,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:585,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:586,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:587,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup.c:594,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/backup/basebackup.c:596,1
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/backup/basebackup.c:604,1
    - Dst: sendFileWithContent
      Src: /src/postgres/src/backend/backup/basebackup.c:605,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup.c:619,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/backup/basebackup.c:621,1
    - Dst: lstat
      Src: /src/postgres/src/backend/backup/basebackup.c:623,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:624,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:625,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:626,1
    - Dst: sendFile
      Src: /src/postgres/src/backend/backup/basebackup.c:628,1
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/backup/basebackup.c:633,1
    - Dst: sendFileWithContent
      Src: /src/postgres/src/backend/backup/basebackup.c:634,1
    - Dst: StaticAssertStmt
      Src: /src/postgres/src/backend/backup/basebackup.c:638,1
    - Dst: memset
      Src: /src/postgres/src/backend/backup/basebackup.c:640,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup.c:641,1
    - Dst: bbsink_end_archive
      Src: /src/postgres/src/backend/backup/basebackup.c:644,1
    - Dst: AddWALInfoToBackupManifest
      Src: /src/postgres/src/backend/backup/basebackup.c:647,1
    - Dst: SendBackupManifest
      Src: /src/postgres/src/backend/backup/basebackup.c:650,1
    - Dst: bbsink_end_backup
      Src: /src/postgres/src/backend/backup/basebackup.c:652,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:657,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/backup/basebackup.c:658,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:663,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:664,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:665,1
    - Dst: FreeBackupManifest
      Src: /src/postgres/src/backend/backup/basebackup.c:673,1
    - Dst: ReleaseAuxProcessResources
      Src: /src/postgres/src/backend/backup/basebackup.c:676,1
    - Dst: basebackup_progress_done
      Src: /src/postgres/src/backend/backup/basebackup.c:678,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 159
    argCount: 3
    argNames:
    - opt
    - sink
    - ib
    argTypes:
    - basebackup_options*
    - bbsink*
    - IncrementalBackupInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 233
    functionDepth: 5
    functionLinenumber: 233
    functionLinenumberEnd: 679
    functionName: perform_base_backup
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 0
    functionsReached:
    - do_pg_backup_start
    - XLogFromFileName
    - lstat
    - basebackup_read_file
    - bbsink_end_backup
    - makeStringInfo
    - BoolGetDatum
    - bbsink_end_archive
    - snprintf
    - fstat
    - pstrdup
    - sendDir
    - do_pg_backup_stop
    - PG_ENSURE_ERROR_CLEANUP
    - sendFileWithContent
    - XLByteToPrevSeg
    - basebackup_progress_wait_wal_archive
    - basebackup_progress_estimate_backup_size
    - StaticAssertDecl
    - RecoveryInProgress
    - psprintf
    - errcode_for_file_access
    - sendFile
    - pfree
    - basebackup_progress_transfer_wal
    - XLByteToSeg
    - Min
    - ReleaseAuxProcessResources
    - destroyStringInfo
    - FreeDir
    - foreach
    - AddWALInfoToBackupManifest
    - PrepareForIncrementalBackup
    - strcmp
    - IsXLogFileName
    - errmsg
    - StaticAssertStmt
    - bbsink_begin_archive
    - InitializeBackupManifest
    - basebackup_progress_wait_checkpoint
    - sendTablespace
    - bbsink_archive_contents
    - linitial
    - bbsink_begin_backup
    - list_sort
    - lnext
    - CloseTransientFile
    - SendBackupManifest
    - XLogFileName
    - FreeBackupManifest
    - IsTLHistoryFileName
    - basebackup_progress_done
    - lappend
    - errmsg_plural
    - lfirst
    - Assert
    - ReadDir
    - AllocateDir
    - memset
    - palloc0
    - ereport
    - CheckXLogRemoved
    - PG_END_ENSURE_ERROR_CLEANUP
    - OpenTransientFile
    - _tarWriteHeader
    - StatusFilePath
    - build_backup_content
    - errcode
    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:500,1
    - Dst: XLogFromFileName
      Src: /src/postgres/src/backend/backup/basebackup.c:504,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/backup/basebackup.c:509,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:510,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:511,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 498
    functionDepth: 2
    functionLinenumber: 498
    functionLinenumberEnd: 513
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 29
    functionsReached:
    - errmsg
    - XLogFromFileName
    - ereport
    - XLogFileName
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, walFileList)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup.c:526,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/backup/basebackup.c:531,1
    - Dst: XLogFromFileName
      Src: /src/postgres/src/backend/backup/basebackup.c:532,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/backup/basebackup.c:534,1
    - Dst: CheckXLogRemoved
      Src: /src/postgres/src/backend/backup/basebackup.c:544,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:547,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:548,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:549,1
    - Dst: fstat
      Src: /src/postgres/src/backend/backup/basebackup.c:552,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:553,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:554,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:555,1
    - Dst: CheckXLogRemoved
      Src: /src/postgres/src/backend/backup/basebackup.c:559,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:560,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:561,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:562,1
    - Dst: _tarWriteHeader
      Src: /src/postgres/src/backend/backup/basebackup.c:566,1
    - Dst: basebackup_read_file
      Src: /src/postgres/src/backend/backup/basebackup.c:568,1
    - Dst: Min
      Src: /src/postgres/src/backend/backup/basebackup.c:569,1
    - Dst: CheckXLogRemoved
      Src: /src/postgres/src/backend/backup/basebackup.c:573,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup.c:574,1
    - Dst: CheckXLogRemoved
      Src: /src/postgres/src/backend/backup/basebackup.c:584,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:585,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:586,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:587,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup.c:594,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/backup/basebackup.c:596,1
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/backup/basebackup.c:604,1
    - Dst: sendFileWithContent
      Src: /src/postgres/src/backend/backup/basebackup.c:605,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 524
    functionDepth: 3
    functionLinenumber: 524
    functionLinenumberEnd: 606
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 29
    functionsReached:
    - errmsg
    - XLogFromFileName
    - Min
    - basebackup_read_file
    - Assert
    - CloseTransientFile
    - bbsink_archive_contents
    - snprintf
    - fstat
    - ereport
    - OpenTransientFile
    - CheckXLogRemoved
    - _tarWriteHeader
    - sendFileWithContent
    - StatusFilePath
    - lfirst
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void foreach(lc, walFileList)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup.c:619,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/backup/basebackup.c:621,1
    - Dst: lstat
      Src: /src/postgres/src/backend/backup/basebackup.c:623,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:624,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:625,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:626,1
    - Dst: sendFile
      Src: /src/postgres/src/backend/backup/basebackup.c:628,1
    - Dst: StatusFilePath
      Src: /src/postgres/src/backend/backup/basebackup.c:633,1
    - Dst: sendFileWithContent
      Src: /src/postgres/src/backend/backup/basebackup.c:634,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 617
    functionDepth: 1
    functionLinenumber: 617
    functionLinenumberEnd: 635
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 29
    functionsReached:
    - errmsg
    - sendFile
    - lstat
    - snprintf
    - ereport
    - sendFileWithContent
    - StatusFilePath
    - lfirst
    - errcode_for_file_access
    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:
    - strcmp
    - lfirst
    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:
    - lfirst
    - errmsg
    - validate_compress_specification
    - BaseBackupGetTargetHandle
    - defGetString
    - parse_compress_specification
    - ereport
    - pg_checksum_parse_type
    - parse_compress_algorithm
    - MemSet
    - defGetBoolean
    - parse_bool
    - defGetInt64
    - strcmp
    - pg_strcasecmp
    - errcode
    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:
    - errmsg
    - lfirst
    - defGetString
    - ereport
    - pg_checksum_parse_type
    - parse_compress_algorithm
    - defGetBoolean
    - parse_bool
    - defGetInt64
    - strcmp
    - pg_strcasecmp
    - errcode
    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: 6
    functionLinenumber: 989
    functionLinenumberEnd: 1066
    functionName: SendBaseBackup
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 0
    functionsReached:
    - snprintf
    - bbsink_copystream_new
    - set_ps_display
    - perform_base_backup
    - BaseBackupGetSink
    - bbsink_progress_new
    - bbsink_zstd_new
    - get_backup_status
    - errmsg
    - bbsink_gzip_new
    - WalSndSetState
    - PG_FINALLY
    - PG_END_TRY
    - parse_basebackup_options
    - bbsink_throttle_new
    - PG_TRY
    - ereport
    - bbsink_cleanup
    - bbsink_lz4_new
    - errcode
    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: 10
    functionLinenumber: 1074
    functionLinenumberEnd: 1126
    functionName: sendFileWithContent
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 3
    functionsReached:
    - Min
    - pg_checksum_update
    - bbsink_archive_contents
    - _tarWritePadding
    - time
    - elog
    - getegid
    - geteuid
    - _tarWriteHeader
    - pg_checksum_init
    - memcpy
    - AddFileToBackupManifest
    - strlen
    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:
    - errmsg
    - lstat
    - snprintf
    - ereport
    - sendDir
    - _tarWriteHeader
    - strlen
    - errcode_for_file_access
    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
      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:
    - strspn
    - GetFileBackupMethod
    - lstat
    - CHECK_FOR_INTERRUPTS
    - last_dir_separator
    - snprintf
    - S_ISDIR
    - pstrdup
    - sendDir
    - errhint
    - RecoveryInProgress
    - strlen
    - errcode_for_file_access
    - psprintf
    - pfree
    - sendFile
    - parse_filename_for_nontemp_relation
    - atooid
    - FreeDir
    - tarPaddingBytesRequired
    - strcmp
    - GetIncrementalFileSize
    - errmsg
    - S_ISLNK
    - convert_link_to_directory
    - elog
    - OidIsValid
    - palloc
    - strncmp
    - lfirst
    - looks_like_temp_rel_name
    - S_ISREG
    - ReadDir
    - AllocateDir
    - ereport
    - readlink
    - _tarWriteHeader
    - errcode
    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:
    - strcmp
    - lfirst
    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: DataChecksumsEnabled
      Src: /src/postgres/src/backend/backup/basebackup.c:1616,1
    - Dst: RelFileNumberIsValid
      Src: /src/postgres/src/backend/backup/basebackup.c:1617,1
    - Dst: push_to_sink
      Src: /src/postgres/src/backend/backup/basebackup.c:1631,1
    - Dst: push_to_sink
      Src: /src/postgres/src/backend/backup/basebackup.c:1633,1
    - Dst: push_to_sink
      Src: /src/postgres/src/backend/backup/basebackup.c:1635,1
    - Dst: push_to_sink
      Src: /src/postgres/src/backend/backup/basebackup.c:1637,1
    - Dst: memset
      Src: /src/postgres/src/backend/backup/basebackup.c:1652,1
    - Dst: push_to_sink
      Src: /src/postgres/src/backend/backup/basebackup.c:1655,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup.c:1662,1
    - Dst: pg_checksum_update
      Src: /src/postgres/src/backend/backup/basebackup.c:1663,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup.c:1666,1
    - Dst: read_file_data_into_buffer
      Src: /src/postgres/src/backend/backup/basebackup.c:1703,1
    - Dst: read_file_data_into_buffer
      Src: /src/postgres/src/backend/backup/basebackup.c:1724,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:1752,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:1753,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup.c:1776,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup.c:1780,1
    - Dst: pg_checksum_update
      Src: /src/postgres/src/backend/backup/basebackup.c:1783,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup.c:1785,1
    - Dst: Min
      Src: /src/postgres/src/backend/backup/basebackup.c:1792,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/backup/basebackup.c:1794,1
    - Dst: pg_checksum_update
      Src: /src/postgres/src/backend/backup/basebackup.c:1795,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup.c:1798,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup.c:1799,1
    - Dst: _tarWritePadding
      Src: /src/postgres/src/backend/backup/basebackup.c:1808,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/backup/basebackup.c:1810,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:1814,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/backup/basebackup.c:1815,1
    - Dst: pgstat_prepare_report_checksum_failure
      Src: /src/postgres/src/backend/backup/basebackup.c:1820,1
    - Dst: pgstat_report_checksum_failures_in_db
      Src: /src/postgres/src/backend/backup/basebackup.c:1821,1
    - Dst: AddFileToBackupManifest
      Src: /src/postgres/src/backend/backup/basebackup.c:1826,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: 1830
      start: 1573
    functionDepth: 10
    functionLinenumber: 1573
    functionLinenumberEnd: 1830
    functionName: sendFile
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 3
    functionsReached:
    - read_file_data_into_buffer
    - pg_checksum_init
    - errcode_for_file_access
    - Min
    - DataChecksumsEnabled
    - pgstat_prepare_report_checksum_failure
    - push_to_sink
    - errmsg
    - CloseTransientFile
    - bbsink_archive_contents
    - elog
    - MemSet
    - errmsg_plural
    - pgstat_report_checksum_failures_in_db
    - AddFileToBackupManifest
    - Assert
    - pg_checksum_update
    - memset
    - _tarWritePadding
    - ereport
    - RelFileNumberIsValid
    - OpenTransientFile
    - _tarWriteHeader
    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: 7
    BranchProfiles: []
    Callsites:
    - Dst: basebackup_read_file
      Src: /src/postgres/src/backend/backup/basebackup.c:1859,1
    - Dst: Min
      Src: /src/postgres/src/backend/backup/basebackup.c:1860,1
    - Dst: verify_page_checksum
      Src: /src/postgres/src/backend/backup/basebackup.c:1876,1
    - Dst: basebackup_read_file
      Src: /src/postgres/src/backend/backup/basebackup.c:1897,1
    - Dst: verify_page_checksum
      Src: /src/postgres/src/backend/backup/basebackup.c:1912,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:1919,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:1920,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:1926,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:1927,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 22
    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: 1933
      start: 1849
    functionDepth: 1
    functionLinenumber: 1849
    functionLinenumberEnd: 1933
    functionName: read_file_data_into_buffer
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 1
    functionsReached:
    - errmsg
    - Min
    - basebackup_read_file
    - verify_page_checksum
    - ereport
    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:1967,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/backup/basebackup.c:1974,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup.c:1977,1
    - Dst: pg_checksum_update
      Src: /src/postgres/src/backend/backup/basebackup.c:1978,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup.c:1980,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: 1983
      start: 1952
    functionDepth: 2
    functionLinenumber: 1952
    functionLinenumberEnd: 1983
    functionName: push_to_sink
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 1
    functionsReached:
    - bbsink_archive_contents
    - memcpy
    - pg_checksum_update
    - elog
    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: 3
    BranchProfiles: []
    Callsites:
    - Dst: PageIsNew
      Src: /src/postgres/src/backend/backup/basebackup.c:2007,1
    - Dst: PageGetLSN
      Src: /src/postgres/src/backend/backup/basebackup.c:2007,1
    - Dst: pg_checksum_page
      Src: /src/postgres/src/backend/backup/basebackup.c:2011,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - page
    - start_lsn
    - blkno
    - expected_checksum
    argTypes:
    - Page
    - XLogRecPtr
    - BlockNumber
    - uint16*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2019
      start: 1993
    functionDepth: 3
    functionLinenumber: 1993
    functionLinenumberEnd: 2019
    functionName: verify_page_checksum
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 1
    functionsReached:
    - pg_checksum_page
    - PageGetLSN
    - 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:2036,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup.c:2038,1
    - Dst: tarCreateHeader
      Src: /src/postgres/src/backend/backup/basebackup.c:2040,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:2050,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:2051,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:2052,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:2056,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup.c:2057,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:2058,1
    - Dst: elog
      Src: /src/postgres/src/backend/backup/basebackup.c:2063,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup.c:2066,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: 2070
      start: 2021
    functionDepth: 2
    functionLinenumber: 2021
    functionLinenumberEnd: 2070
    functionName: _tarWriteHeader
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 7
    functionsReached:
    - errmsg
    - Assert
    - bbsink_archive_contents
    - ereport
    - elog
    - StaticAssertDecl
    - errcode
    - tarCreateHeader
    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:2078,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup.c:2084,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup.c:2085,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/backup/basebackup.c:2089,1
    - Dst: bbsink_archive_contents
      Src: /src/postgres/src/backend/backup/basebackup.c:2090,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - sink
    - len
    argTypes:
    - bbsink*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2092
      start: 2075
    functionDepth: 2
    functionLinenumber: 2075
    functionLinenumberEnd: 2092
    functionName: _tarWritePadding
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 2
    functionsReached:
    - bbsink_archive_contents
    - tarPaddingBytesRequired
    - Assert
    - MemSet
    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:2102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - pathbuf
    - statbuf
    argTypes:
    - char*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2104
      start: 2098
    functionDepth: 1
    functionLinenumber: 2098
    functionLinenumberEnd: 2104
    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:2121,1
    - Dst: pg_pread
      Src: /src/postgres/src/backend/backup/basebackup.c:2122,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/backup/basebackup.c:2123,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:2126,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:2127,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:2128,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup.c:2130,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/backup/basebackup.c:2131,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup.c:2132,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: 2136
      start: 2115
    functionDepth: 3
    functionLinenumber: 2115
    functionLinenumberEnd: 2136
    functionName: basebackup_read_file
    functionSourceFile: /src/postgres/src/backend/backup/basebackup.c
    functionUses: 3
    functionsReached:
    - errmsg
    - ereport
    - pgstat_report_wait_end
    - pg_pread
    - pgstat_report_wait_start
    - 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
      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
      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:
    - MemoryContextSwitchTo
    - json_parse_manifest_incremental_init
    - palloc0
    - backup_file_create
    - initStringInfo
    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:
    - json_parse_manifest_incremental_chunk
    - appendBinaryStringInfo
    - MemoryContextSwitchTo
    - memmove
    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:
    - json_parse_manifest_incremental_chunk
    - pfree
    - MemoryContextSwitchTo
    - json_parse_manifest_incremental_shutdown
    linkageType: ''
    returnType: void
    signature: void FinalizeIncrementalManifest(IncrementalBackupInfo *ib)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:279,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:282,1
    - Dst: list_length
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:288,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:290,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:291,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:292,1
    - Dst: readTimeLineHistory
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:313,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:314,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:317,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:324,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:345,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:346,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:347,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:405,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:410,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:411,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:412,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:414,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:415,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:420,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:421,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:422,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:424,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:425,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:431,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:432,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:433,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:435,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:436,1
    - Dst: errhint
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:437,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:442,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:443,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:444,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:446,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:447,1
    - Dst: WaitForWalSummarization
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:459,1
    - Dst: GetWalSummaries
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:468,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:478,1
    - Dst: FilterWalSummaries
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:510,1
    - Dst: WalSummariesAreComplete
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:519,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:522,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:523,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:524,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:525,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:527,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:528,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:530,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:531,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:532,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:534,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:535,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:536,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:537,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:554,1
    - Dst: CreateEmptyBlockRefTable
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:571,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:574,1
    - Dst: OpenWalSummaryFile
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:582,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:584,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:585,1
    - Dst: FilePathName
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:586,1
    - Dst: CreateBlockRefTableReader
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:587,1
    - Dst: FilePathName
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:588,1
    - Dst: BlockRefTableReaderNextRelation
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:590,1
    - Dst: BlockRefTableSetLimitBlock
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:593,1
    - Dst: BlockRefTableReaderGetBlocks
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:601,1
    - Dst: BlockRefTableMarkBlockModified
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:607,1
    - Dst: DestroyBlockRefTableReader
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:611,1
    - Dst: FileClose
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:612,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:616,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 84
    argCount: 2
    argNames:
    - ib
    - backup_state
    argTypes:
    - IncrementalBackupInfo*
    - BackupState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 262
    functionDepth: 3
    functionLinenumber: 262
    functionLinenumberEnd: 617
    functionName: PrepareForIncrementalBackup
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 1
    functionsReached:
    - LSN_FORMAT_ARGS
    - MemoryContextSwitchTo
    - WaitForWalSummarization
    - FileClose
    - list_length
    - BlockRefTableReaderGetBlocks
    - errhint
    - WalSummariesAreComplete
    - errdetail
    - BlockRefTableSetLimitBlock
    - CreateBlockRefTableReader
    - list_concat
    - OpenWalSummaryFile
    - BlockRefTableReaderNextRelation
    - errmsg
    - BlockRefTableMarkBlockModified
    - CreateEmptyBlockRefTable
    - list_nth
    - XLogRecPtrIsInvalid
    - lfirst
    - FilterWalSummaries
    - Assert
    - GetWalSummaries
    - FilePathName
    - DestroyBlockRefTableReader
    - errmsg_internal
    - ereport
    - readTimeLineHistory
    - palloc0
    - errcode
    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:324,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 322
    functionDepth: 1
    functionLinenumber: 322
    functionLinenumberEnd: 336
    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:478,1
    - Dst: FilterWalSummaries
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:510,1
    - Dst: WalSummariesAreComplete
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:519,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:522,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:523,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:524,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:525,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:527,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:528,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:530,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:531,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:532,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:534,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:535,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:536,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:537,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:554,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 476
    functionDepth: 2
    functionLinenumber: 476
    functionLinenumberEnd: 562
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 29
    functionsReached:
    - errmsg
    - errcode
    - LSN_FORMAT_ARGS
    - list_concat
    - ereport
    - WalSummariesAreComplete
    - XLogRecPtrIsInvalid
    - errdetail
    - lfirst
    - FilterWalSummaries
    linkageType: ''
    returnType: void
    signature: void foreach(lc, expectedTLEs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:574,1
    - Dst: OpenWalSummaryFile
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:582,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:584,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:585,1
    - Dst: FilePathName
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:586,1
    - Dst: CreateBlockRefTableReader
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:587,1
    - Dst: FilePathName
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:588,1
    - Dst: BlockRefTableReaderNextRelation
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:590,1
    - Dst: BlockRefTableSetLimitBlock
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:593,1
    - Dst: BlockRefTableReaderGetBlocks
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:601,1
    - Dst: BlockRefTableMarkBlockModified
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:607,1
    - Dst: DestroyBlockRefTableReader
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:611,1
    - Dst: FileClose
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:612,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 572
    functionDepth: 2
    functionLinenumber: 572
    functionLinenumberEnd: 613
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 29
    functionsReached:
    - BlockRefTableMarkBlockModified
    - FilePathName
    - OpenWalSummaryFile
    - BlockRefTableSetLimitBlock
    - DestroyBlockRefTableReader
    - FileClose
    - errmsg_internal
    - ereport
    - BlockRefTableReaderGetBlocks
    - BlockRefTableReaderNextRelation
    - lfirst
    - CreateBlockRefTableReader
    linkageType: ''
    returnType: void
    signature: void foreach(lc, required_wslist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetRelationPath
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:632,1
    - Dst: strrchr
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:635,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:636,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:640,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:642,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: 645
      start: 624
    functionDepth: 2
    functionLinenumber: 624
    functionLinenumberEnd: 645
    functionName: GetIncrementalFilePath
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 0
    functionsReached:
    - GetRelationPath
    - Assert
    - psprintf
    - strrchr
    linkageType: ''
    returnType: char
    signature: "char *\nGetIncrementalFilePath(Oid dboid, Oid spcoid, RelFileNumber
      relfilenumber,\n\t\t\t\t\t   ForkNumber forknum, unsigned segno)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:680,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:686,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:686,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:687,1
    - Dst: RelFileNumberIsValid
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:687,1
    - Dst: backup_file_lookup
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:725,1
    - Dst: GetIncrementalFilePath
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:729,1
    - Dst: backup_file_lookup
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:731,1
    - Dst: BlockRefTableGetEntry
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:742,1
    - Dst: BlockRefTableGetEntry
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:755,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:793,1
    - Dst: errcode
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:794,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:795,1
    - Dst: BlockRefTableEntryGetBlocks
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:802,1
    - Dst: Assert
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:804,1
    - Dst: qsort
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:831,1
    - Dst: BlockNumberIsValid
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:849,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 50
    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: 859
      start: 662
    functionDepth: 3
    functionLinenumber: 662
    functionLinenumberEnd: 859
    functionName: GetFileBackupMethod
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 1
    functionsReached:
    - Assert
    - qsort
    - BlockRefTableEntryGetBlocks
    - GetIncrementalFilePath
    - BlockRefTableGetEntry
    - errmsg_internal
    - ereport
    - RelFileNumberIsValid
    - backup_file_lookup
    - OidIsValid
    - BlockNumberIsValid
    - errcode
    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:872,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - num_blocks_required
    argTypes:
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 889
      start: 866
    functionDepth: 1
    functionLinenumber: 866
    functionLinenumberEnd: 889
    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:900,1
    - Dst: GetIncrementalHeaderSize
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:907,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - num_blocks_required
    argTypes:
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 894
    functionDepth: 2
    functionLinenumber: 894
    functionLinenumberEnd: 911
    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:921,1
    - Dst: strlen
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:921,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 922
      start: 916
    functionDepth: 2
    functionLinenumber: 916
    functionLinenumberEnd: 922
    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:933,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - context
    - manifest_version
    argTypes:
    - JsonManifestParseContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 935
      start: 927
    functionDepth: 0
    functionLinenumber: 927
    functionLinenumberEnd: 935
    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:948,1
    - Dst: JsonManifestParseContext*::error_cb
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:951,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - context
    - manifest_system_identifier
    argTypes:
    - JsonManifestParseContext*
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 941
    functionDepth: 2
    functionLinenumber: 941
    functionLinenumberEnd: 955
    functionName: manifest_process_system_identifier
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 0
    functionsReached:
    - JsonManifestParseContext*::error_cb
    - GetSystemIdentifier
    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:974,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:977,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: 981
      start: 963
    functionDepth: 1
    functionLinenumber: 963
    functionLinenumberEnd: 981
    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
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:996,1
    - Dst: lappend
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:1001,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: 1002
      start: 990
    functionDepth: 1
    functionLinenumber: 990
    functionLinenumberEnd: 1002
    functionName: manifest_process_wal_range
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 0
    functionsReached:
    - palloc
    - lappend
    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:1013,1
    - Dst: va_start
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:1020,1
    - Dst: appendStringInfoVA
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:1021,1
    - Dst: va_end
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:1022,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:1025,1
    - Dst: ereport
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:1028,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/backup/basebackup_incremental.c:1029,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - context
    - fmt
    argTypes:
    - JsonManifestParseContext*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1030
      start: 1008
    functionDepth: 3
    functionLinenumber: 1008
    functionLinenumberEnd: 1030
    functionName: manifest_report_error
    functionSourceFile: /src/postgres/src/backend/backup/basebackup_incremental.c
    functionUses: 0
    functionsReached:
    - enlargeStringInfo
    - va_end
    - errmsg_internal
    - ereport
    - appendStringInfoVA
    - initStringInfo
    - va_start
    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:1041,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 1035
    functionDepth: 1
    functionLinenumber: 1035
    functionLinenumberEnd: 1042
    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:294,1
    - Dst: pgstat_report_plan_id
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - parse
    - query_string
    - cursorOptions
    - boundParams
    argTypes:
    - Query*
    - char*
    - int
    - ParamListInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 285
    functionDepth: 1
    functionLinenumber: 285
    functionLinenumberEnd: 299
    functionName: planner
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 2
    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)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:321,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:372,1
    - Dst: max_parallel_hazard
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:375,1
    - Dst: subquery_planner
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:434,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:437,1
    - Dst: get_cheapest_fractional_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:438,1
    - Dst: create_plan
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:440,1
    - Dst: ExecSupportsBackwardScan
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:448,1
    - Dst: materialize_finished_plan
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:449,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:469,1
    - Dst: SS_compute_initplan_cost
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:508,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:527,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:527,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:527,1
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:528,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:530,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:531,1
    - Dst: SS_finalize_plan
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:533,1
    - Dst: SS_finalize_plan
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:535,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:539,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:540,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:541,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:542,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:543,1
    - Dst: set_plan_references
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:544,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:546,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:546,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:546,1
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:547,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:549,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:550,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:552,1
    - Dst: set_plan_references
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:552,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:556,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:569,1
    - Dst: DestroyPartitionDirectory
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:611,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 129
    argCount: 4
    argNames:
    - parse
    - query_string
    - cursorOptions
    - boundParams
    argTypes:
    - Query*
    - char*
    - int
    - ParamListInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 614
    functionName: standard_planner
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 2
    functionsReached:
    - subquery_planner
    - list_length
    - materialize_finished_plan
    - forboth
    - create_plan
    - makeNode
    - DestroyPartitionDirectory
    - set_plan_references
    - ExecSupportsBackwardScan
    - IsParallelWorker
    - bms_difference
    - SS_finalize_plan
    - fetch_upper_rel
    - SS_compute_initplan_cost
    - lfirst_node
    - max_parallel_hazard
    - lfirst
    - get_cheapest_fractional_path
    - Assert
    linkageType: ''
    returnType: PlannedStmt
    signature: "PlannedStmt *\nstandard_planner(Query *parse, const char *query_string,
      int cursorOptions,\n\t\t\t\t ParamListInfo boundParams)"
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:663,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:679,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:684,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:685,1
    - Dst: assign_special_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:698,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:709,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:709,1
    - Dst: SS_process_ctes
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:716,1
    - Dst: transform_MERGE_to_join
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:721,1
    - Dst: replace_empty_jointree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:727,1
    - Dst: pull_up_sublinks
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:736,1
    - Dst: preprocess_function_rtes
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:744,1
    - Dst: expand_virtual_generated_columns
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:752,1
    - Dst: pull_up_subqueries
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:758,1
    - Dst: flatten_simple_union_all
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:767,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:784,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:786,1
    - Dst: has_subclass
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:804,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:809,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:816,1
    - Dst: list_cell_number
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:817,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:834,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:835,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:844,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:848,1
    - Dst: preprocess_rowmarks
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:855,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:871,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:875,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:877,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:879,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:882,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:887,1
    - Dst: preprocess_qual_conditions
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:890,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:892,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:895,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:897,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:900,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:902,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:906,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:908,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:914,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:918,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:922,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:926,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:932,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:934,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:937,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:941,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:947,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:950,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:954,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:956,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:964,1
    - Dst: flatten_join_alias_vars
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:979,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:987,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:994,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1001,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1007,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1017,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1019,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1019,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1020,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1038,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1040,1
    - Dst: flatten_group_exprs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1058,1
    - Dst: flatten_group_exprs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1060,1
    - Dst: expression_returns_set
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1065,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1109,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1111,1
    - Dst: contain_agg_clause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1113,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1114,1
    - Dst: contain_subplans
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1115,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1117,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1117,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1120,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1127,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1131,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1139,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1139,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1143,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1146,1
    - Dst: reduce_outer_joins
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1157,1
    - Dst: remove_useless_result_rtes
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1166,1
    - Dst: grouping_planner
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1171,1
    - Dst: SS_identify_outer_params
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1177,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1185,1
    - Dst: SS_charge_for_initplans
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1186,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1193,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 182
    argCount: 6
    argNames:
    - glob
    - parse
    - parent_root
    - hasRecursion
    - tuple_fraction
    - setops
    argTypes:
    - PlannerGlobal*
    - Query*
    - PlannerInfo*
    - bool
    - double
    - SetOperationStmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1196
      start: 649
    functionDepth: 2
    functionLinenumber: 649
    functionLinenumberEnd: 1196
    functionName: subquery_planner
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - SS_process_ctes
    - list_length
    - expand_virtual_generated_columns
    - contain_volatile_functions
    - preprocess_expression
    - set_cheapest
    - makeNode
    - flatten_group_exprs
    - list_concat
    - transform_MERGE_to_join
    - contain_subplans
    - reduce_outer_joins
    - grouping_planner
    - foreach
    - Max
    - list_cell_number
    - has_subclass
    - assign_special_exec_param
    - remove_useless_result_rtes
    - fetch_upper_rel
    - lfirst_node
    - SS_charge_for_initplans
    - pull_up_subqueries
    - flatten_simple_union_all
    - preprocess_qual_conditions
    - preprocess_rowmarks
    - lappend
    - contain_agg_clause
    - bms_is_member
    - rt_fetch
    - IS_OUTER_JOIN
    - lfirst
    - pull_varnos
    - pull_up_sublinks
    - Assert
    - preprocess_function_rtes
    - expression_returns_set
    - memset
    - bms_make_singleton
    - list_make1
    - replace_empty_jointree
    - flatten_join_alias_vars
    - SS_identify_outer_params
    - copyObject
    linkageType: ''
    returnType: PlannerInfo
    signature: "PlannerInfo *\nsubquery_planner(PlannerGlobal *glob, Query *parse,
      PlannerInfo *parent_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:1229,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1251,1
    - Dst: canonicalize_qual
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1258,1
    - Dst: printf
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1261,1
    - Dst: pprint
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1262,1
    - Dst: convert_saop_to_hashed_saop
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1273,1
    - Dst: SS_process_sublinks
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1278,1
    - Dst: SS_replace_correlation_vars
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1287,1
    - Dst: make_ands_implicit
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1296,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 22
    argCount: 3
    argNames:
    - root
    - expr
    - kind
    argTypes:
    - PlannerInfo*
    - Node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1299
      start: 1204
    functionDepth: 1
    functionLinenumber: 1204
    functionLinenumberEnd: 1299
    functionName: preprocess_expression
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - pprint
    - printf
    - convert_saop_to_hashed_saop
    - SS_process_sublinks
    - flatten_join_alias_vars
    - SS_replace_correlation_vars
    - eval_const_expressions
    - make_ands_implicit
    - canonicalize_qual
    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:1311,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1315,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1320,1
    - Dst: preprocess_qual_conditions
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1321,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1321,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1323,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1325,1
    - Dst: preprocess_qual_conditions
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1329,1
    - Dst: preprocess_qual_conditions
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1330,1
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1332,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1335,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1336,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - root
    - jtnode
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1337
      start: 1306
    functionDepth: 2
    functionLinenumber: 1306
    functionLinenumberEnd: 1337
    functionName: preprocess_qual_conditions
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 2
    functionsReached:
    - nodeTag
    - IsA
    - foreach
    - preprocess_qual_conditions
    - elog
    - preprocess_expression
    - lfirst
    linkageType: ''
    returnType: void
    signature: void preprocess_qual_conditions(PlannerInfo *root, Node *jtnode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: preprocess_expression
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - root
    - expr
    argTypes:
    - PlannerInfo*
    - Expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1354
      start: 1350
    functionDepth: 2
    functionLinenumber: 1350
    functionLinenumberEnd: 1354
    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:1404,1
    - Dst: plan_set_operations
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1426,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1435,1
    - Dst: postprocess_setop_tlist
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1439,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1439,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1447,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1450,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1458,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1459,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1462,1
    - Dst: LCS_asString
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1463,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1463,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1469,1
    - Dst: make_pathkeys_for_sortclauses
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1470,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1497,1
    - Dst: preprocess_grouping_sets
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1502,1
    - Dst: preprocess_groupclause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1507,1
    - Dst: preprocess_targetlist
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1517,1
    - Dst: preprocess_aggrefs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1528,1
    - Dst: preprocess_aggrefs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1529,1
    - Dst: find_window_functions
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1540,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1541,1
    - Dst: optimize_window_clauses
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1549,1
    - Dst: select_active_windows
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1552,1
    - Dst: name_active_windows
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1555,1
    - Dst: preprocess_minmax_aggregates
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1568,1
    - Dst: query_planner
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1604,1
    - Dst: create_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1615,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1617,1
    - Dst: make_sort_input_target
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1626,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1630,1
    - Dst: make_window_input_target
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1645,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1649,1
    - Dst: make_group_input_target
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1666,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1668,1
    - Dst: split_pathtarget_at_srfs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1685,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1688,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1689,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1689,1
    - Dst: split_pathtarget_at_srfs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1691,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1694,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1695,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1695,1
    - Dst: split_pathtarget_at_srfs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1697,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1700,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1701,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1701,1
    - Dst: split_pathtarget_at_srfs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1703,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1706,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1707,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1707,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1715,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1720,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1721,1
    - Dst: apply_scanjoin_target_to_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1722,1
    - Dst: create_grouping_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1748,1
    - Dst: adjust_paths_for_srfs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1755,1
    - Dst: create_window_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1766,1
    - Dst: adjust_paths_for_srfs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1775,1
    - Dst: create_distinct_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1786,1
    - Dst: create_ordered_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1801,1
    - Dst: adjust_paths_for_srfs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1809,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1817,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1827,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1828,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1843,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1845,1
    - Dst: create_lockrows_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1856,1
    - Dst: assign_special_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1858,1
    - Dst: limit_needed
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1864,1
    - Dst: create_limit_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1866,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1887,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1890,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1898,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1901,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1909,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1913,1
    - Dst: adjust_inherited_attnums_multilevel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1921,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1925,1
    - Dst: adjust_appendrel_attrs_multilevel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1934,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1938,1
    - Dst: adjust_appendrel_attrs_multilevel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1947,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1951,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1963,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1965,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1966,1
    - Dst: adjust_appendrel_attrs_multilevel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1969,1
    - Dst: adjust_appendrel_attrs_multilevel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1974,1
    - Dst: adjust_inherited_attnums_multilevel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1980,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1984,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1988,1
    - Dst: adjust_appendrel_attrs_multilevel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:1997,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2001,1
    - Dst: list_make1_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2019,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2021,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2023,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2025,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2027,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2029,1
    - Dst: list_make1_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2036,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2038,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2040,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2042,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2044,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2046,1
    - Dst: create_modifytable_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2060,1
    - Dst: assign_special_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2075,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2079,1
    - Dst: limit_needed
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2087,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2089,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2090,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2092,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2094,1
    - Dst: limit_needed
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2098,1
    - Dst: RelOptInfo*::fdwroutine::GetForeignUpperPaths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2109,1
    CyclomaticComplexity: 73
    EdgeCount: 73
    ICount: 221
    argCount: 3
    argNames:
    - root
    - tuple_fraction
    - setops
    argTypes:
    - PlannerInfo*
    - double
    - SetOperationStmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2119
      start: 1383
    functionDepth: 1
    functionLinenumber: 1383
    functionLinenumberEnd: 2119
    functionName: grouping_planner
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - preprocess_grouping_sets
    - lappend_int
    - add_path
    - adjust_appendrel_attrs_multilevel
    - list_length
    - LCS_asString
    - add_partial_path
    - preprocess_targetlist
    - find_window_functions
    - plan_set_operations
    - create_grouping_paths
    - equal
    - optimize_window_clauses
    - postprocess_setop_tlist
    - query_planner
    - make_group_input_target
    - RelOptInfo*::fdwroutine::GetForeignUpperPaths
    - foreach
    - make_sort_input_target
    - preprocess_groupclause
    - create_ordered_paths
    - create_distinct_paths
    - bms_next_member
    - adjust_paths_for_srfs
    - linitial_node
    - errmsg
    - create_pathtarget
    - create_window_paths
    - fetch_upper_rel
    - make_window_input_target
    - assign_special_exec_param
    - adjust_inherited_attnums_multilevel
    - is_parallel_safe
    - preprocess_aggrefs
    - find_base_rel
    - make_pathkeys_for_sortclauses
    - lappend
    - create_modifytable_path
    - preprocess_minmax_aggregates
    - apply_scanjoin_target_to_paths
    - lfirst
    - create_lockrows_path
    - Assert
    - create_limit_path
    - preprocess_limit
    - list_make1_int
    - split_pathtarget_at_srfs
    - limit_needed
    - ereport
    - linitial_int
    - list_make1
    - select_active_windows
    - copyObject
    - name_active_windows
    - bms_membership
    - errcode
    - IS_DUMMY_REL
    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
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2134,1
    - Dst: expand_grouping_sets
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2136,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2153,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2155,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2162,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2164,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2165,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2170,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2178,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2183,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2185,1
    - Dst: bms_overlap_list
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2187,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2189,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2192,1
    - Dst: bms_overlap_list
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2202,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2203,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2204,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2205,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2206,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2209,1
    - Dst: extract_rollup_sets
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2213,1
    - Dst: extract_rollup_sets
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2218,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2222,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2223,1
    - Dst: reorder_grouping_sets
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2236,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2237,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2244,1
    - Dst: preprocess_groupclause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2256,1
    - Dst: bms_overlap_list
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2267,1
    - Dst: remap_to_groupclause_idx
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2280,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2285,1
    - Dst: remap_to_groupclause_idx
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2295,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 51
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2302
      start: 2127
    functionDepth: 1
    functionLinenumber: 2127
    functionLinenumberEnd: 2302
    functionName: preprocess_grouping_sets
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - remap_to_groupclause_idx
    - expand_grouping_sets
    - list_length
    - makeNode
    - errdetail
    - bms_is_empty
    - foreach
    - preprocess_groupclause
    - linitial_node
    - errmsg
    - extract_rollup_sets
    - lfirst_node
    - lappend
    - OidIsValid
    - palloc
    - lfirst
    - bms_add_member
    - bms_overlap_list
    - palloc0
    - ereport
    - reorder_grouping_sets
    - errcode
    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:2222,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2223,1
    - Dst: reorder_grouping_sets
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2236,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2237,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2244,1
    - Dst: preprocess_groupclause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2256,1
    - Dst: bms_overlap_list
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2267,1
    - Dst: remap_to_groupclause_idx
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2280,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2285,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2286
      start: 2220
    functionDepth: 1
    functionLinenumber: 2220
    functionLinenumberEnd: 2286
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 33
    functionsReached:
    - remap_to_groupclause_idx
    - bms_overlap_list
    - list_length
    - reorder_grouping_sets
    - preprocess_groupclause
    - lappend
    - makeNode
    - lfirst
    - linitial_node
    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:2319,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2328,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2330,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2332,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2332,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2335,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: 2339
      start: 2308
    functionDepth: 1
    functionLinenumber: 2308
    functionLinenumberEnd: 2339
    functionName: remap_to_groupclause_idx
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 2
    functionsReached:
    - lfirst_node
    - lappend_int
    - foreach
    - lappend
    - lfirst_int
    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:2319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2322
      start: 2317
    functionDepth: 1
    functionLinenumber: 2317
    functionLinenumberEnd: 2322
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 34
    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:2328,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2330,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2332,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2332,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2336
      start: 2324
    functionDepth: 1
    functionLinenumber: 2324
    functionLinenumberEnd: 2336
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 35
    functionsReached:
    - lfirst_node
    - lappend_int
    - foreach
    - lappend
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(lc, gsets)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CheckSelectLocking
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2362,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2362,1
    - Dst: get_relids_in_jointree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2382,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2384,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2390,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2392,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2393,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2401,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2412,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2414,1
    - Dst: select_rowmark_type
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2417,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2423,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2430,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2432,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2436,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2439,1
    - Dst: select_rowmark_type
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2442,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2448,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2452
      start: 2345
    functionDepth: 1
    functionLinenumber: 2345
    functionLinenumberEnd: 2452
    functionName: preprocess_rowmarks
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - Assert
    - bms_del_member
    - lfirst_node
    - select_rowmark_type
    - foreach
    - lappend
    - get_relids_in_jointree
    - rt_fetch
    - bms_is_member
    - makeNode
    - CheckSelectLocking
    - linitial_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:2468,1
    - Dst: FdwRoutine*::GetForeignRowMarkType
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2471,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2501,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 2
    argNames:
    - rte
    - strength
    argTypes:
    - RangeTblEntry*
    - LockClauseStrength
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2504
      start: 2457
    functionDepth: 1
    functionLinenumber: 2457
    functionLinenumberEnd: 2504
    functionName: select_rowmark_type
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - elog
    - GetFdwRoutineByRelId
    - FdwRoutine*::GetForeignRowMarkType
    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:2532,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2540,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2541,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2550,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2563,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2564,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2573,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2614,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2631,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: 2692
      start: 2523
    functionDepth: 2
    functionLinenumber: 2523
    functionLinenumberEnd: 2692
    functionName: preprocess_limit
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - Min
    - Assert
    - estimate_expression_value
    - IsA
    - DatumGetInt64
    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:2716,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2729,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2734,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - parse
    argTypes:
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2745
      start: 2708
    functionDepth: 2
    functionLinenumber: 2708
    functionLinenumberEnd: 2745
    functionName: limit_needed
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - DatumGetInt64
    - IsA
    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:2787,1
    - Dst: get_sortgroupref_clause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2788,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2790,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2798,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2806,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2808,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2810,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2812,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2814,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2816,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2827,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2835,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2837,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2839,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2841,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2842,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2843,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2847,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2847,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2847,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 2
    argNames:
    - root
    - force
    argTypes:
    - PlannerInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2849
      start: 2774
    functionDepth: 1
    functionLinenumber: 2774
    functionLinenumberEnd: 2849
    functionName: preprocess_groupclause
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 3
    functionsReached:
    - Assert
    - equal
    - lfirst_node
    - list_copy
    - get_sortgroupref_clause
    - foreach
    - list_length
    - lappend
    - OidIsValid
    - list_member_ptr
    - lfirst_int
    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:2787,1
    - Dst: get_sortgroupref_clause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2788,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2790,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2791
      start: 2785
    functionDepth: 1
    functionLinenumber: 2785
    functionLinenumberEnd: 2791
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 37
    functionsReached:
    - get_sortgroupref_clause
    - lfirst_int
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(sl, force)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2873,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2888,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2896,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2899,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2904,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2924,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2925,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2926,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2927,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2935,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2942,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2942,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2946,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2952,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2959,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2961,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2967,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2968,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2975,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2982,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2989,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2990,1
    - Dst: BipartiteMatch
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3004,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3012,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3028,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3034,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3036,1
    - Dst: lcons
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3041,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3045,1
    - Dst: BipartiteMatchFree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3053,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3054,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3055,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3058,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3059,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3060,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3061,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3063,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3064,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 79
    argCount: 1
    argNames:
    - groupingSets
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3067
      start: 2870
    functionDepth: 2
    functionLinenumber: 2870
    functionLinenumberEnd: 3067
    functionName: extract_rollup_sets
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - lcons
    - list_length
    - lfirst_int
    - pfree
    - list_concat
    - BipartiteMatch
    - bms_equal
    - memcpy
    - bms_free
    - BipartiteMatchFree
    - bms_is_subset
    - lnext
    - list_head
    - lappend
    - palloc
    - lfirst
    - bms_add_member
    - Assert
    - list_make1
    - palloc0
    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:2935,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2942,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2942,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2946,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2952,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2959,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2961,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2967,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2968,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2975,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2982,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2989,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2990,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2997
      start: 2933
    functionDepth: 1
    functionLinenumber: 2933
    functionLinenumberEnd: 2997
    functionName: for_each_cell
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - bms_is_subset
    - lfirst_int
    - list_length
    - list_make1
    - bms_equal
    - lappend
    - memcpy
    - palloc
    - lfirst
    - bms_free
    - bms_add_member
    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:2942,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:2942,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2943
      start: 2940
    functionDepth: 1
    functionLinenumber: 2940
    functionLinenumberEnd: 2943
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 37
    functionsReached:
    - lfirst_int
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, candidate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3091,1
    - Dst: list_difference_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3092,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3093,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3095,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3095,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3098,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3098,1
    - Dst: list_member_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3101,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3103,1
    - Dst: list_delete_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3104,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3114,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3116,1
    - Dst: lcons
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3117,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3120,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - groupingSets
    - sortclause
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3123
      start: 3082
    functionDepth: 3
    functionLinenumber: 3082
    functionLinenumberEnd: 3123
    functionName: reorder_grouping_sets
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 2
    functionsReached:
    - list_concat
    - list_copy
    - lappend_int
    - lcons
    - list_delete_int
    - list_length
    - list_nth
    - list_member_int
    - makeNode
    - list_difference_int
    - lfirst
    - list_free
    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:3091,1
    - Dst: list_difference_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3092,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3093,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3095,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3095,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3098,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3098,1
    - Dst: list_member_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3101,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3103,1
    - Dst: list_delete_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3104,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3114,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3116,1
    - Dst: lcons
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3117,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3118
      start: 3089
    functionDepth: 3
    functionLinenumber: 3089
    functionLinenumberEnd: 3118
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 37
    functionsReached:
    - list_concat
    - list_copy
    - lappend_int
    - lcons
    - list_delete_int
    - list_length
    - list_nth
    - list_member_int
    - makeNode
    - list_difference_int
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, groupingSets)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3137,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - keys
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3144
      start: 3130
    functionDepth: 1
    functionLinenumber: 3130
    functionLinenumberEnd: 3144
    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:3137,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3141
      start: 3135
    functionDepth: 1
    functionLinenumber: 3135
    functionLinenumberEnd: 3141
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 37
    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:3186,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3188,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3199,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3201,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3202,1
    - Dst: AGGKIND_IS_ORDERED_SET
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3204,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3230,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3232,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3235,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3236,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3239,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3239,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3252,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3253,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3273,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3273,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3279,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3281,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3282,1
    - Dst: make_pathkeys_for_sortclauses
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3291,1
    - Dst: has_volatile_pathkey
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3298,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3300,1
    - Dst: append_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3314,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3314,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3318,1
    - Dst: append_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3326,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3326,1
    - Dst: compare_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3330,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3343,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3353,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3359,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3359,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3383,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3385,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3387,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3389,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 72
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3394
      start: 3175
    functionDepth: 2
    functionLinenumber: 3175
    functionLinenumberEnd: 3394
    functionName: adjust_group_pathkeys_for_groupagg
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - list_copy
    - castNode
    - list_nth_node
    - append_pathkeys
    - bms_num_members
    - foreach
    - foreach_current_index
    - bms_next_member
    - linitial_node
    - bms_del_member
    - bms_del_members
    - lfirst_node
    - IsA
    - make_pathkeys_for_sortclauses
    - compare_pathkeys
    - lfirst
    - bms_add_member
    - AGGKIND_IS_ORDERED_SET
    - Assert
    - has_volatile_pathkey
    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:3420,1
    - Dst: grouping_is_sortable
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3422,1
    - Dst: make_pathkeys_for_sortclauses_extended
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3433,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3440,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3441,1
    - Dst: make_pathkeys_for_sortclauses_extended
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3466,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3481,1
    - Dst: adjust_group_pathkeys_for_groupagg
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3484,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3496,1
    - Dst: make_pathkeys_for_window
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3498,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3516,1
    - Dst: make_pathkeys_for_sortclauses_extended
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3518,1
    - Dst: make_pathkeys_for_sortclauses
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3532,1
    - Dst: generate_setop_child_grouplist
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3542,1
    - Dst: make_pathkeys_for_sortclauses_extended
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3545,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3582,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3583,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 55
    argCount: 2
    argNames:
    - root
    - extra
    argTypes:
    - PlannerInfo*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3591
      start: 3399
    functionDepth: 3
    functionLinenumber: 3399
    functionLinenumberEnd: 3591
    functionName: standard_qp_callback
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - Assert
    - list_copy
    - adjust_group_pathkeys_for_groupagg
    - list_length
    - generate_setop_child_grouplist
    - make_pathkeys_for_sortclauses
    - make_pathkeys_for_window
    - make_pathkeys_for_sortclauses_extended
    - grouping_is_sortable
    - linitial_node
    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:3622,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3626,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3628,1
    - Dst: get_sortgrouplist_exprs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3632,1
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3637,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3639,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3640,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3641,1
    - Dst: get_sortgrouplist_exprs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3660,1
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3663,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3665,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3666,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3667,1
    - Dst: get_sortgrouplist_exprs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3683,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3686,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3693,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: 3707
      start: 3604
    functionDepth: 1
    functionLinenumber: 3604
    functionLinenumberEnd: 3707
    functionName: get_number_of_groups
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - Assert
    - lfirst_node
    - foreach
    - list_length
    - estimate_num_groups
    - forboth
    - lfirst
    - get_sortgrouplist_exprs
    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:3738,1
    - Dst: get_agg_clause_costs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3739,1
    - Dst: make_grouping_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3745,1
    - Dst: is_degenerate_grouping
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3752,1
    - Dst: create_degenerate_grouping_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3753,1
    - Dst: grouping_is_sortable
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3771,1
    - Dst: grouping_is_hashable
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3796,1
    - Dst: can_partial_agg
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3802,1
    - Dst: create_ordinary_grouping_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3822,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3827,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: 3829
      start: 3726
    functionDepth: 1
    functionLinenumber: 3726
    functionLinenumberEnd: 3829
    functionName: create_grouping_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - create_degenerate_grouping_paths
    - set_cheapest
    - is_degenerate_grouping
    - create_ordinary_grouping_paths
    - get_agg_clause_costs
    - can_partial_agg
    - MemSet
    - make_grouping_rel
    - grouping_is_sortable
    - grouping_is_hashable
    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:3846,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3848,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3859,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3871,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 5
    argNames:
    - root
    - input_rel
    - target
    - target_parallel_safe
    - havingQual
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - PathTarget*
    - bool
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3883
      start: 3839
    functionDepth: 1
    functionLinenumber: 3839
    functionLinenumberEnd: 3883
    functionName: make_grouping_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - IS_OTHER_REL
    - is_parallel_safe
    - fetch_upper_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: 3899
      start: 3892
    functionDepth: 0
    functionLinenumber: 3892
    functionLinenumberEnd: 3899
    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:3921,1
    - Dst: create_group_result_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3936,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3939,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3942,1
    - Dst: create_group_result_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3956,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3961,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - root
    - input_rel
    - grouped_rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3962
      start: 3913
    functionDepth: 1
    functionLinenumber: 3913
    functionLinenumberEnd: 3962
    functionName: create_degenerate_grouping_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - create_append_path
    - add_path
    - create_group_result_path
    - list_length
    - lappend
    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: 12
    BranchProfiles: []
    Callsites:
    - Dst: IS_PARTITIONED_REL
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:3997,1
    - Dst: group_by_has_partkey
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4013,1
    - Dst: create_partial_grouping_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4039,1
    - Dst: create_partitionwise_grouping_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4052,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4059,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4062,1
    - Dst: gather_grouping_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4070,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4071,1
    - Dst: get_number_of_groups
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4077,1
    - Dst: add_paths_to_grouping_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4083,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4089,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4090,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4091,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4092,1
    - Dst: RelOptInfo*::fdwroutine::GetForeignUpperPaths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4100,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 33
    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: 4109
      start: 3977
    functionDepth: 2
    functionLinenumber: 3977
    functionLinenumberEnd: 4109
    functionName: create_ordinary_grouping_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - errmsg
    - Assert
    - group_by_has_partkey
    - create_partitionwise_grouping_paths
    - RelOptInfo*::fdwroutine::GetForeignUpperPaths
    - ereport
    - create_partial_grouping_paths
    - add_paths_to_grouping_rel
    - IS_PARTITIONED_REL
    - set_cheapest
    - get_number_of_groups
    - errdetail
    - errcode
    - gather_grouping_paths
    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:4128,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4149,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4154,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4177,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4179,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4181,1
    - Dst: estimate_hashagg_tablesize
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4184,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4201,1
    - Dst: for_each_cell
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4203,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4205,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4221,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4225,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4232,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4233,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4237,1
    - Dst: preprocess_groupclause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4239,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4240,1
    - Dst: remap_to_groupclause_idx
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4241,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4247,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4262,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4266,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4271,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4276,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4279,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4283,1
    - Dst: create_groupingsets_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4284,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4311,1
    - Dst: estimate_hashagg_tablesize
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4318,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4323,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4326,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4328,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4354,1
    - Dst: floor
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4355,1
    - Dst: for_each_from
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4364,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4366,1
    - Dst: estimate_hashagg_tablesize
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4370,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4379,1
    - Dst: floor
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4379,1
    - Dst: DiscreteKnapsack
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4392,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4394,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4396,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4396,1
    - Dst: for_each_from
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4399,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4401,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4405,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4406,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4409,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4413,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4419,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4423,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4424,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4426,1
    - Dst: preprocess_groupclause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4428,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4429,1
    - Dst: remap_to_groupclause_idx
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4430,1
    - Dst: lcons
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4436,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4441,1
    - Dst: create_groupingsets_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4442,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4456,1
    - Dst: create_groupingsets_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4457,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: 4464
      start: 4117
    functionDepth: 2
    functionLinenumber: 4117
    functionLinenumberEnd: 4464
    functionName: consider_groupingsets_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - remap_to_groupclause_idx
    - list_copy
    - add_path
    - lcons
    - list_length
    - create_groupingsets_path
    - for_each_cell
    - makeNode
    - DiscreteKnapsack
    - Min
    - list_concat
    - bms_is_empty
    - get_hash_memory_limit
    - preprocess_groupclause
    - Max
    - lfirst_node
    - linitial
    - list_head
    - lnext
    - for_each_from
    - lappend
    - bms_is_member
    - palloc
    - Assert
    - floor
    - estimate_hashagg_tablesize
    - list_make1
    - pathkeys_contained_in
    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:4225,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4232,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4233,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4237,1
    - Dst: preprocess_groupclause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4239,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4240,1
    - Dst: remap_to_groupclause_idx
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4241,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4249
      start: 4223
    functionDepth: 2
    functionLinenumber: 4223
    functionLinenumberEnd: 4249
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 39
    functionsReached:
    - lfirst_node
    - remap_to_groupclause_idx
    - list_make1
    - preprocess_groupclause
    - lappend
    - makeNode
    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:4423,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4424,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4426,1
    - Dst: preprocess_groupclause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4428,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4429,1
    - Dst: remap_to_groupclause_idx
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4430,1
    - Dst: lcons
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4437
      start: 4421
    functionDepth: 2
    functionLinenumber: 4421
    functionLinenumberEnd: 4437
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 39
    functionsReached:
    - Assert
    - lfirst_node
    - remap_to_groupclause_idx
    - lcons
    - list_make1
    - preprocess_groupclause
    - makeNode
    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:4492,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4500,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4516,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4518,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4522,1
    - Dst: create_one_window_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4525,1
    - Dst: RelOptInfo*::fdwroutine::GetForeignUpperPaths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4540,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4550,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: 4553
      start: 4479
    functionDepth: 1
    functionLinenumber: 4479
    functionLinenumberEnd: 4553
    functionName: create_window_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - fetch_upper_rel
    - pathkeys_count_contained_in
    - RelOptInfo*::fdwroutine::GetForeignUpperPaths
    - foreach
    - is_parallel_safe
    - create_one_window_path
    - set_cheapest
    - lfirst
    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:4598,1
    - Dst: make_pathkeys_for_window
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4606,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4610,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4622,1
    - Dst: create_incremental_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4632,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4641,1
    - Dst: copy_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4653,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4654,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4656,1
    - Dst: add_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4658,1
    - Dst: get_typavgwidth
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4659,1
    - Dst: clamp_width_est
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4661,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4670,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4670,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4676,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4679,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4681,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4684,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4691,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4692,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4696,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4697,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4700,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4708,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4711,1
    - Dst: create_windowagg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4716,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4722,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: 4723
      start: 4566
    functionDepth: 2
    functionLinenumber: 4566
    functionLinenumberEnd: 4723
    functionName: create_one_window_path
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - create_incremental_sort_path
    - lfirst_node
    - add_path
    - clamp_width_est
    - pathkeys_count_contained_in
    - lnext
    - foreach
    - list_length
    - foreach_current_index
    - make_pathkeys_for_window
    - add_column_to_pathtarget
    - copyObject
    - lappend
    - make_opclause
    - create_windowagg_path
    - copy_pathtarget
    - create_sort_path
    - get_typavgwidth
    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:4598,1
    - Dst: make_pathkeys_for_window
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4606,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4610,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4622,1
    - Dst: create_incremental_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4632,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4641,1
    - Dst: copy_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4653,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4654,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4656,1
    - Dst: add_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4658,1
    - Dst: get_typavgwidth
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4659,1
    - Dst: clamp_width_est
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4661,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4670,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4670,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4676,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4679,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4681,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4684,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4691,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4692,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4696,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4697,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4700,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4708,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4711,1
    - Dst: create_windowagg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4716,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4720
      start: 4596
    functionDepth: 2
    functionLinenumber: 4596
    functionLinenumberEnd: 4720
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 42
    functionsReached:
    - create_incremental_sort_path
    - lfirst_node
    - clamp_width_est
    - pathkeys_count_contained_in
    - lnext
    - foreach
    - list_length
    - foreach_current_index
    - make_pathkeys_for_window
    - add_column_to_pathtarget
    - copyObject
    - lappend
    - make_opclause
    - create_windowagg_path
    - copy_pathtarget
    - create_sort_path
    - get_typavgwidth
    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:4743,1
    - Dst: create_final_distinct_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4763,1
    - Dst: create_partial_distinct_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4766,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4770,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4771,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4772,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4773,1
    - Dst: RelOptInfo*::fdwroutine::GetForeignUpperPaths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4781,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4793,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - root
    - input_rel
    - target
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - PathTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4796
      start: 4736
    functionDepth: 1
    functionLinenumber: 4736
    functionLinenumberEnd: 4796
    functionName: create_distinct_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - fetch_upper_rel
    - errmsg
    - create_partial_distinct_paths
    - RelOptInfo*::fdwroutine::GetForeignUpperPaths
    - ereport
    - set_cheapest
    - errdetail
    - create_final_distinct_paths
    - errcode
    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:4828,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4841,1
    - Dst: get_sortgrouplist_exprs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4843,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4847,1
    - Dst: grouping_is_sortable
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4858,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4860,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4862,1
    - Dst: get_useful_pathkeys_for_distinct
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4867,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4870,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4870,1
    - Dst: make_ordered_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4874,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4893,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4895,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4909,1
    - Dst: create_limit_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4910,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4919,1
    - Dst: create_upper_unique_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4920,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4922,1
    - Dst: grouping_is_hashable
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4935,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4937,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4938,1
    - Dst: RelOptInfo*::fdwroutine::GetForeignUpperPaths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4956,1
    - Dst: generate_useful_gather_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4969,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4970,1
    - Dst: create_final_distinct_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4977,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: 4980
      start: 4806
    functionDepth: 1
    functionLinenumber: 4806
    functionLinenumberEnd: 4980
    functionName: create_partial_distinct_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - create_upper_unique_path
    - create_agg_path
    - list_length
    - add_partial_path
    - generate_useful_gather_paths
    - grouping_is_sortable
    - set_cheapest
    - Int64GetDatum
    - RelOptInfo*::fdwroutine::GetForeignUpperPaths
    - foreach
    - fetch_upper_rel
    - linitial
    - make_ordered_path
    - get_useful_pathkeys_for_distinct
    - lfirst
    - Assert
    - create_limit_path
    - estimate_num_groups
    - makeConst
    - create_final_distinct_paths
    - grouping_is_hashable
    - get_sortgrouplist_exprs
    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:4874,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4893,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4895,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4909,1
    - Dst: create_limit_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4910,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4919,1
    - Dst: create_upper_unique_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4920,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:4922,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4925
      start: 4872
    functionDepth: 1
    functionLinenumber: 4872
    functionLinenumberEnd: 4925
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - create_upper_unique_path
    - create_limit_path
    - Int64GetDatum
    - list_length
    - add_partial_path
    - make_ordered_path
    - makeConst
    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:5016,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5018,1
    - Dst: grouping_is_sortable
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5026,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5049,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5050,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5055,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5057,1
    - Dst: get_useful_pathkeys_for_distinct
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5062,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5065,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5065,1
    - Dst: make_ordered_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5069,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5096,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5098,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5106,1
    - Dst: create_limit_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5107,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5113,1
    - Dst: create_upper_unique_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5114,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5116,1
    - Dst: grouping_is_hashable
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5142,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5145,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5146,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 35
    argCount: 3
    argNames:
    - root
    - input_rel
    - distinct_rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5159
      start: 4989
    functionDepth: 1
    functionLinenumber: 4989
    functionLinenumberEnd: 5159
    functionName: create_final_distinct_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 2
    functionsReached:
    - Assert
    - create_upper_unique_path
    - create_limit_path
    - get_useful_pathkeys_for_distinct
    - create_agg_path
    - Int64GetDatum
    - add_path
    - list_length
    - foreach
    - makeConst
    - make_ordered_path
    - estimate_num_groups
    - grouping_is_hashable
    - grouping_is_sortable
    - lfirst
    - get_sortgrouplist_exprs
    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:5069,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5096,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5098,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5106,1
    - Dst: create_limit_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5107,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5113,1
    - Dst: create_upper_unique_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5114,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5116,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5119
      start: 5067
    functionDepth: 1
    functionLinenumber: 5067
    functionLinenumberEnd: 5119
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - create_upper_unique_path
    - create_limit_path
    - Int64GetDatum
    - add_path
    - list_length
    - make_ordered_path
    - makeConst
    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:5177,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5198,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5201,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5204,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5215,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5215,1
    - Dst: list_concat_unique_ptr
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5220,1
    - Dst: compare_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5227,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5231,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 3
    argNames:
    - root
    - needed_pathkeys
    - path_pathkeys
    argTypes:
    - PlannerInfo*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5235
      start: 5169
    functionDepth: 1
    functionLinenumber: 5169
    functionLinenumberEnd: 5235
    functionName: get_useful_pathkeys_for_distinct
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 2
    functionsReached:
    - list_length
    - lappend
    - compare_pathkeys
    - list_member_ptr
    - list_concat_unique_ptr
    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:5198,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5201,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5204,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5205
      start: 5192
    functionDepth: 1
    functionLinenumber: 5192
    functionLinenumberEnd: 5205
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - list_member_ptr
    - lappend
    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:5266,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5284,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5286,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5291,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5315,1
    - Dst: create_incremental_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5321,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5333,1
    - Dst: apply_projection_to_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5334,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5337,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5356,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5358,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5360,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5366,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5390,1
    - Dst: create_incremental_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5396,1
    - Dst: compute_gather_rows
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5402,1
    - Dst: create_gather_merge_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5404,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5414,1
    - Dst: apply_projection_to_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5415,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5418,1
    - Dst: RelOptInfo*::fdwroutine::GetForeignUpperPaths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5428,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5441,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 46
    argCount: 5
    argNames:
    - root
    - input_rel
    - target
    - target_parallel_safe
    - limit_tuples
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - PathTarget*
    - bool
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5444
      start: 5254
    functionDepth: 1
    functionLinenumber: 5254
    functionLinenumberEnd: 5444
    functionName: create_ordered_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - fetch_upper_rel
    - create_incremental_sort_path
    - Assert
    - compute_gather_rows
    - equal
    - linitial
    - add_path
    - create_gather_merge_path
    - pathkeys_count_contained_in
    - RelOptInfo*::fdwroutine::GetForeignUpperPaths
    - foreach
    - create_sort_path
    - apply_projection_to_path
    - lfirst
    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:5488,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5492,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5494,1
    - Dst: get_pathtarget_sortgroupref
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5495,1
    - Dst: get_sortgroupref_clause_noerr
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5498,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5510,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5512,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5513,1
    - Dst: add_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5516,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5524,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5534,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5548,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5554,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5556,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5557,1
    - Dst: add_new_columns_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5560,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5563,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5564,1
    - Dst: set_pathtarget_cost_width
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5567,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 2
    argNames:
    - root
    - final_target
    argTypes:
    - PlannerInfo*
    - PathTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5568
      start: 5474
    functionDepth: 1
    functionLinenumber: 5474
    functionLinenumberEnd: 5568
    functionName: make_group_input_target
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - add_new_columns_to_pathtarget
    - Assert
    - remove_nulling_relids
    - set_pathtarget_cost_width
    - create_empty_pathtarget
    - bms_make_singleton
    - foreach
    - get_sortgroupref_clause_noerr
    - add_column_to_pathtarget
    - get_pathtarget_sortgroupref
    - lappend
    - list_free
    - lfirst
    - pull_var_clause
    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:5597,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5601,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5603,1
    - Dst: get_pathtarget_sortgroupref
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5604,1
    - Dst: get_sortgroupref_clause_noerr
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5607,1
    - Dst: add_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5614,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5622,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5632,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5641,1
    - Dst: add_new_columns_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5646,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5653,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5655,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5657,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5665,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5666,1
    - Dst: mark_partial_aggref
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5669,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5671,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5676,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5677,1
    - Dst: set_pathtarget_cost_width
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5680,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 3
    argNames:
    - root
    - grouping_target
    - havingQual
    argTypes:
    - PlannerInfo*
    - PathTarget*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5681
      start: 5586
    functionDepth: 1
    functionLinenumber: 5586
    functionLinenumberEnd: 5681
    functionName: make_partial_grouping_target
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - add_new_columns_to_pathtarget
    - set_pathtarget_cost_width
    - create_empty_pathtarget
    - IsA
    - foreach
    - get_sortgroupref_clause_noerr
    - add_column_to_pathtarget
    - get_pathtarget_sortgroupref
    - lappend
    - list_free
    - mark_partial_aggref
    - memcpy
    - makeNode
    - lfirst
    - pull_var_clause
    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:5693,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5693,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5695,1
    - Dst: DO_AGGSPLIT_SKIPFINAL
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5705,1
    - Dst: DO_AGGSPLIT_SERIALIZE
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5707,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - agg
    - aggsplit
    argTypes:
    - Aggref*
    - AggSplit
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5712
      start: 5689
    functionDepth: 1
    functionLinenumber: 5689
    functionLinenumberEnd: 5712
    functionName: mark_partial_aggref
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - DO_AGGSPLIT_SERIALIZE
    - Assert
    - DO_AGGSPLIT_SKIPFINAL
    - OidIsValid
    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:5728,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5732,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5739,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5740,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5741,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5743,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5744,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5748,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - new_tlist
    - orig_tlist
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5750
      start: 5724
    functionDepth: 2
    functionLinenumber: 5724
    functionLinenumberEnd: 5750
    functionName: postprocess_setop_tlist
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - Assert
    - lfirst_node
    - list_head
    - lnext
    - elog
    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:5732,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5739,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5740,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5741,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5743,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5744,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5746
      start: 5730
    functionDepth: 2
    functionLinenumber: 5730
    functionLinenumberEnd: 5746
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 47
    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:5769,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5773,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5779,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5783,1
    - Dst: get_func_support
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5786,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5789,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5799,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5799,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5800,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5813,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5839,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5848,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5858,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5859,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5861,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5862,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5872,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5874,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5880,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 37
    argCount: 2
    argNames:
    - root
    - wflists
    argTypes:
    - PlannerInfo*
    - WindowFuncLists*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5894
      start: 5761
    functionDepth: 1
    functionLinenumber: 5761
    functionLinenumberEnd: 5894
    functionName: optimize_window_clauses
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - OidFunctionCall1
    - Assert
    - equal
    - get_func_support
    - lfirst_node
    - list_concat
    - foreach
    - PointerGetDatum
    - list_length
    - foreach_current_index
    - OidIsValid
    - DatumGetPointer
    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:5769,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5773,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5779,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5783,1
    - Dst: get_func_support
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5786,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5789,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5799,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5799,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5800,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5813,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5839,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5848,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5858,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5859,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5861,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5862,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5872,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5874,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5880,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5893
      start: 5767
    functionDepth: 1
    functionLinenumber: 5767
    functionLinenumberEnd: 5893
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 49
    functionsReached:
    - OidFunctionCall1
    - Assert
    - equal
    - get_func_support
    - lfirst_node
    - list_concat
    - foreach
    - PointerGetDatum
    - list_length
    - foreach_current_index
    - OidIsValid
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void foreach(lc, windowClause)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5848,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5858,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5859,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5861,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5862,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5872,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5874,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5880,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5891
      start: 5846
    functionDepth: 1
    functionLinenumber: 5846
    functionLinenumberEnd: 5891
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 50
    functionsReached:
    - list_concat
    - equal
    - lfirst_node
    - foreach
    linkageType: ''
    returnType: void
    signature: void foreach(lc3, windowClause)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5908,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5909,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5914,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5917,1
    - Dst: list_concat_unique
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5937,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5937,1
    - Dst: qsort
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5962,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5966,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5968,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - root
    - wflists
    argTypes:
    - PlannerInfo*
    - WindowFuncLists*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5971
      start: 5901
    functionDepth: 1
    functionLinenumber: 5901
    functionLinenumberEnd: 5971
    functionName: select_active_windows
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - qsort
    - lfirst_node
    - list_copy
    - list_length
    - lappend
    - list_concat_unique
    - palloc
    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:5914,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5917,1
    - Dst: list_concat_unique
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5937,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5937,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5940
      start: 5912
    functionDepth: 1
    functionLinenumber: 5912
    functionLinenumberEnd: 5940
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 50
    functionsReached:
    - list_concat_unique
    - Assert
    - lfirst_node
    - list_copy
    linkageType: ''
    returnType: void
    signature: void foreach(lc, windowClause)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:5993,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6004,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6007,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6009,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6015,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 1
    argNames:
    - activeWindows
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6017
      start: 5984
    functionDepth: 1
    functionLinenumber: 5984
    functionLinenumberEnd: 6017
    functionName: name_active_windows
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - strcmp
    - snprintf
    - lfirst_node
    - pstrdup
    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:5993,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6004,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6007,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6009,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6015,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6016
      start: 5991
    functionDepth: 1
    functionLinenumber: 5991
    functionLinenumberEnd: 6016
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 50
    functionsReached:
    - strcmp
    - snprintf
    - lfirst_node
    - pstrdup
    linkageType: ''
    returnType: void
    signature: void foreach(lc, activeWindows)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6007,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6009,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6011
      start: 6005
    functionDepth: 1
    functionLinenumber: 6005
    functionLinenumberEnd: 6011
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 50
    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:6043,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6045,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6046,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6063,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6063,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6065,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6065,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6069
      start: 6035
    functionDepth: 1
    functionLinenumber: 6035
    functionLinenumberEnd: 6069
    functionName: common_prefix_cmp
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - forboth
    - lfirst_node
    - list_length
    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:6116,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6125,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6128,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6130,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6132,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6134,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6136,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6138,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6143,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6145,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6147,1
    - Dst: create_empty_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6154,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6158,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6160,1
    - Dst: get_pathtarget_sortgroupref
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6161,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6168,1
    - Dst: add_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6174,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6182,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6198,1
    - Dst: add_new_columns_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6202,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6205,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6206,1
    - Dst: set_pathtarget_cost_width
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 3
    argNames:
    - root
    - final_target
    - activeWindows
    argTypes:
    - PlannerInfo*
    - PathTarget*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6210
      start: 6104
    functionDepth: 1
    functionLinenumber: 6104
    functionLinenumberEnd: 6210
    functionName: make_window_input_target
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - add_new_columns_to_pathtarget
    - Assert
    - lfirst_node
    - set_pathtarget_cost_width
    - create_empty_pathtarget
    - foreach
    - add_column_to_pathtarget
    - lappend
    - get_pathtarget_sortgroupref
    - list_free
    - bms_is_member
    - lfirst
    - pull_var_clause
    - bms_add_member
    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:6125,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6128,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6130,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6132,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6134,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6136,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6140
      start: 6123
    functionDepth: 1
    functionLinenumber: 6123
    functionLinenumberEnd: 6140
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 52
    functionsReached:
    - bms_add_member
    - lfirst_node
    - foreach
    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:6231,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6232,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6233,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6234,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6235,1
    - Dst: grouping_is_sortable
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6236,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6237,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6238,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6239,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6240,1
    - Dst: make_pathkeys_for_sortclauses_extended
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6250,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6258,1
    - Dst: make_pathkeys_for_sortclauses
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6272,1
    - Dst: append_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6278,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - root
    - wc
    - tlist
    argTypes:
    - PlannerInfo*
    - WindowClause*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6284
      start: 6224
    functionDepth: 1
    functionLinenumber: 6224
    functionLinenumberEnd: 6284
    functionName: make_pathkeys_for_window
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 3
    functionsReached:
    - errmsg
    - Assert
    - append_pathkeys
    - ereport
    - make_pathkeys_for_sortclauses
    - make_pathkeys_for_sortclauses_extended
    - grouping_is_sortable
    - errdetail
    - errcode
    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:6373,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6378,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6379,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6380,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6384,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6386,1
    - Dst: get_pathtarget_sortgroupref
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6396,1
    - Dst: expression_returns_set
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6403,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6409,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6424,1
    - Dst: expression_returns_set
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6443,1
    - Dst: create_empty_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6476,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6480,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6482,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6485,1
    - Dst: add_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6487,1
    - Dst: get_pathtarget_sortgroupref
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6488,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6500,1
    - Dst: add_new_columns_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6504,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6507,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6508,1
    - Dst: set_pathtarget_cost_width
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6511,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: 6512
      start: 6352
    functionDepth: 1
    functionLinenumber: 6352
    functionLinenumberEnd: 6512
    functionName: make_sort_input_target
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - add_new_columns_to_pathtarget
    - Assert
    - expression_returns_set
    - set_pathtarget_cost_width
    - create_empty_pathtarget
    - cost_qual_eval_node
    - palloc0
    - foreach
    - list_length
    - lappend
    - contain_volatile_functions
    - get_pathtarget_sortgroupref
    - add_column_to_pathtarget
    - list_free
    - lfirst
    - pull_var_clause
    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:6542,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6544,1
    - Dst: compare_fractional_path_costs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6550,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 2
    argNames:
    - rel
    - tuple_fraction
    argTypes:
    - RelOptInfo*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6557
      start: 6528
    functionDepth: 1
    functionLinenumber: 6528
    functionLinenumberEnd: 6557
    functionName: get_cheapest_fractional_path
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - compare_fractional_path_costs
    - lfirst
    - foreach
    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:6580,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6580,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6580,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6581,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6581,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6584,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6597,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6599,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6604,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6607,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6608,1
    - Dst: create_set_projection_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6612,1
    - Dst: apply_projection_to_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6617,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6622,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6630,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6632,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6637,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6640,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6641,1
    - Dst: create_set_projection_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6645,1
    - Dst: create_projection_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6652,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6658,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: 6660
      start: 6574
    functionDepth: 1
    functionLinenumber: 6574
    functionLinenumberEnd: 6660
    functionName: adjust_paths_for_srfs
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - Assert
    - lfirst_node
    - create_projection_path
    - lfirst_int
    - linitial_int
    - foreach
    - list_length
    - create_set_projection_path
    - apply_projection_to_path
    - lfirst
    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:6607,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6608,1
    - Dst: create_set_projection_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6612,1
    - Dst: apply_projection_to_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6617,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6621
      start: 6605
    functionDepth: 1
    functionLinenumber: 6605
    functionLinenumberEnd: 6621
    functionName: forboth
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 3
    functionsReached:
    - create_set_projection_path
    - apply_projection_to_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:6640,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6641,1
    - Dst: create_set_projection_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6645,1
    - Dst: create_projection_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6652,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6657
      start: 6638
    functionDepth: 1
    functionLinenumber: 6638
    functionLinenumberEnd: 6657
    functionName: forboth
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 3
    functionsReached:
    - create_set_projection_path
    - create_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:6699,1
    - Dst: fix_opfuncids
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6702,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - expr
    argTypes:
    - Expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6705
      start: 6690
    functionDepth: 1
    functionLinenumber: 6690
    functionLinenumberEnd: 6705
    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:6727,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6732,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6741,1
    - Dst: fix_opfuncids
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6744,1
    - Dst: extract_query_dependencies_walker
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6750,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 3
    argNames:
    - expr
    - relationOids
    - invalItems
    argTypes:
    - Expr*
    - List**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6756
      start: 6717
    functionDepth: 1
    functionLinenumber: 6717
    functionLinenumberEnd: 6756
    functionName: expression_planner_with_deps
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - eval_const_expressions
    - MemSet
    - extract_query_dependencies_walker
    - fix_opfuncids
    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:6791,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6794,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6796,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6802,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6802,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6805,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6813,1
    - Dst: addRTEPermissionInfo
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6814,1
    - Dst: setup_simple_rel_arrays
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6817,1
    - Dst: build_simple_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6820,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6824,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6826,1
    - Dst: get_relation_data_width
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6846,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6856,1
    - Dst: create_seqscan_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6860,1
    - Dst: cost_sort
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6861,1
    - Dst: create_index_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6867,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 42
    argCount: 2
    argNames:
    - tableOid
    - indexOid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6873
      start: 6770
    functionDepth: 1
    functionLinenumber: 6770
    functionLinenumberEnd: 6873
    functionName: plan_cluster_use_sort
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - lfirst_node
    - list_make1
    - foreach
    - addRTEPermissionInfo
    - build_simple_rel
    - get_relation_data_width
    - cost_qual_eval
    - cost_sort
    - create_index_path
    - makeNode
    - create_seqscan_path
    - setup_simple_rel_arrays
    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:6915,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6918,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6920,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6926,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6926,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6936,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6944,1
    - Dst: addRTEPermissionInfo
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6945,1
    - Dst: setup_simple_rel_arrays
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6948,1
    - Dst: build_simple_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6951,1
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6954,1
    - Dst: index_open
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6955,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6965,1
    - Dst: RelationGetIndexExpressions
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6965,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6966,1
    - Dst: RelationGetIndexPredicate
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6966,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6981,1
    - Dst: estimate_rel_size
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6990,1
    - Dst: compute_parallel_worker
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:6996,1
    - Dst: index_close
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7014,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7015,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 46
    argCount: 2
    argNames:
    - tableOid
    - indexOid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7018
      start: 6892
    functionDepth: 3
    functionLinenumber: 6892
    functionLinenumberEnd: 7018
    functionName: plan_create_index_workers
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 0
    functionsReached:
    - RelationGetIndexExpressions
    - Min
    - estimate_rel_size
    - table_open
    - index_close
    - table_close
    - list_make1
    - is_parallel_safe
    - addRTEPermissionInfo
    - build_simple_rel
    - RelationGetIndexPredicate
    - compute_parallel_worker
    - makeNode
    - index_open
    - setup_simple_rel_arrays
    linkageType: ''
    returnType: int
    signature: int plan_create_index_workers(Oid tableOid, Oid indexOid)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7048,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7051,1
    - Dst: get_useful_group_keys_orderings
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7056,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7058,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7058,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7062,1
    - Dst: make_ordered_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7067,1
    - Dst: consider_groupingsets_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7079,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7089,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7090,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7107,1
    - Dst: create_group_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7108,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7118,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7129,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7132,1
    - Dst: get_useful_group_keys_orderings
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7137,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7139,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7139,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7144,1
    - Dst: make_ordered_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7149,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7160,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7161,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7172,1
    - Dst: create_group_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7173,1
    - Dst: consider_groupingsets_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7192,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7202,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7203,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7222,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7223,1
    - Dst: gather_grouping_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7243,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 49
    argCount: 8
    argNames:
    - root
    - input_rel
    - grouped_rel
    - partially_grouped_rel
    - agg_costs
    - gd
    - dNumGroups
    - extra
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - AggClauseCosts*
    - grouping_sets_data*
    - double
    - GroupPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7244
      start: 7025
    functionDepth: 3
    functionLinenumber: 7025
    functionLinenumberEnd: 7244
    functionName: add_paths_to_grouping_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - Assert
    - create_agg_path
    - add_path
    - get_useful_group_keys_orderings
    - list_length
    - foreach
    - make_ordered_path
    - consider_groupingsets_paths
    - create_group_path
    - lfirst
    - gather_grouping_paths
    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, double
      dNumGroups,\n\t\t\t\t\t\t  GroupPathExtraData *extra)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7062,1
    - Dst: make_ordered_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7067,1
    - Dst: consider_groupingsets_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7079,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7089,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7090,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7107,1
    - Dst: create_group_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7108,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7118,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7120
      start: 7060
    functionDepth: 3
    functionLinenumber: 7060
    functionLinenumberEnd: 7120
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 57
    functionsReached:
    - Assert
    - create_agg_path
    - add_path
    - make_ordered_path
    - consider_groupingsets_paths
    - create_group_path
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, pathkey_orderings)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7144,1
    - Dst: make_ordered_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7149,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7160,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7161,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7172,1
    - Dst: create_group_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7173,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7180
      start: 7142
    functionDepth: 1
    functionLinenumber: 7142
    functionLinenumberEnd: 7180
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 57
    functionsReached:
    - create_agg_path
    - add_path
    - make_ordered_path
    - create_group_path
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, pathkey_orderings)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7299,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7315,1
    - Dst: make_partial_grouping_target
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7333,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7342,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7343,1
    - Dst: get_agg_clause_costs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7347,1
    - Dst: get_agg_clause_costs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7351,1
    - Dst: get_number_of_groups
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7361,1
    - Dst: get_number_of_groups
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7367,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7375,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7381,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7384,1
    - Dst: get_useful_group_keys_orderings
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7389,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7391,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7391,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7396,1
    - Dst: make_ordered_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7401,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7412,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7413,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7424,1
    - Dst: create_group_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7425,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7438,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7441,1
    - Dst: get_useful_group_keys_orderings
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7446,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7448,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7448,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7453,1
    - Dst: make_ordered_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7459,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7470,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7471,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7482,1
    - Dst: create_group_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7483,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7499,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7501,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7502,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7519,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7520,1
    - Dst: FdwRoutine*::GetForeignUpperPaths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7541,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 68
    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: 7548
      start: 7262
    functionDepth: 2
    functionLinenumber: 7262
    functionLinenumberEnd: 7548
    functionName: create_partial_grouping_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - fetch_upper_rel
    - Assert
    - linitial
    - create_agg_path
    - add_path
    - get_useful_group_keys_orderings
    - get_agg_clause_costs
    - foreach
    - list_length
    - add_partial_path
    - MemSet
    - make_ordered_path
    - create_group_path
    - FdwRoutine*::GetForeignUpperPaths
    - get_number_of_groups
    - lfirst
    - make_partial_grouping_target
    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:7396,1
    - Dst: make_ordered_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7401,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7412,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7413,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7424,1
    - Dst: create_group_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7425,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7431
      start: 7394
    functionDepth: 1
    functionLinenumber: 7394
    functionLinenumberEnd: 7431
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 58
    functionsReached:
    - create_agg_path
    - add_path
    - make_ordered_path
    - create_group_path
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, pathkey_orderings)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7453,1
    - Dst: make_ordered_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7459,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7470,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7471,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7482,1
    - Dst: create_group_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7483,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7489
      start: 7451
    functionDepth: 1
    functionLinenumber: 7451
    functionLinenumberEnd: 7489
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 58
    functionsReached:
    - create_agg_path
    - add_partial_path
    - make_ordered_path
    - create_group_path
    - lfirst
    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:7563,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7585,1
    - Dst: create_incremental_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7591,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: 7600
      start: 7556
    functionDepth: 1
    functionLinenumber: 7556
    functionLinenumberEnd: 7600
    functionName: make_ordered_path
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 10
    functionsReached:
    - create_incremental_sort_path
    - create_sort_path
    - pathkeys_count_contained_in
    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:7626,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7627,1
    - Dst: generate_useful_gather_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7633,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7635,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7638,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7640,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7645,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7668,1
    - Dst: create_incremental_sort_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7672,1
    - Dst: compute_gather_rows
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7678,1
    - Dst: create_gather_merge_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7680,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7688,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7690
      start: 7615
    functionDepth: 1
    functionLinenumber: 7615
    functionLinenumberEnd: 7690
    functionName: gather_grouping_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 2
    functionsReached:
    - lfirst
    - create_incremental_sort_path
    - compute_gather_rows
    - linitial
    - add_path
    - create_gather_merge_path
    - pathkeys_count_contained_in
    - foreach
    - list_length
    - generate_useful_gather_paths
    - create_sort_path
    - list_copy_head
    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: 7724
      start: 7698
    functionDepth: 0
    functionLinenumber: 7698
    functionLinenumberEnd: 7724
    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:7748,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7753,1
    - Dst: generate_useful_gather_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7792,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7804,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7815,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7817,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7820,1
    - Dst: create_projection_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7829,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7831,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7836,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7838,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7841,1
    - Dst: create_projection_path
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7850,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7852,1
    - Dst: adjust_paths_for_srfs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7863,1
    - Dst: llast_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7878,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7894,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7901,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7904,1
    - Dst: find_appinfos_by_relids
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7908,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7912,1
    - Dst: copy_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7914,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7916,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7919,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7922,1
    - Dst: apply_scanjoin_target_to_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7925,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7932,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7933,1
    - Dst: add_paths_to_append_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7937,1
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7947,1
    - Dst: generate_useful_gather_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7948,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7955,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    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: 7956
      start: 7740
    functionDepth: 2
    functionLinenumber: 7740
    functionLinenumberEnd: 7956
    functionName: apply_scanjoin_target_to_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 2
    functionsReached:
    - add_paths_to_append_rel
    - generate_useful_gather_paths
    - set_cheapest
    - copy_pathtarget
    - pfree
    - foreach
    - create_projection_path
    - bms_next_member
    - adjust_paths_for_srfs
    - linitial_node
    - lfirst_node
    - lappend
    - IS_PARTITIONED_REL
    - apply_scanjoin_target_to_paths
    - lfirst
    - check_stack_depth
    - IS_OTHER_REL
    - Assert
    - find_appinfos_by_relids
    - llast_node
    - adjust_appendrel_attrs
    - IS_DUMMY_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:7912,1
    - Dst: copy_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7914,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7916,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7919,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7921
      start: 7910
    functionDepth: 1
    functionLinenumber: 7910
    functionLinenumberEnd: 7921
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 60
    functionsReached:
    - copy_pathtarget
    - lappend
    - adjust_appendrel_attrs
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, scanjoin_targets)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7991,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7992,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:7997,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8007,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8010,1
    - Dst: copy_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8013,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8019,1
    - Dst: find_appinfos_by_relids
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8021,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8025,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8031,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8035,1
    - Dst: make_grouping_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8050,1
    - Dst: create_ordinary_grouping_paths
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8056,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8064,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8072,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8073,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8077,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8091,1
    - Dst: add_paths_to_append_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8093,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8101,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8107,1
    - Dst: add_paths_to_append_rel
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8109,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    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: 8111
      start: 7975
    functionDepth: 3
    functionLinenumber: 7975
    functionLinenumberEnd: 8111
    functionName: create_partitionwise_grouping_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - find_appinfos_by_relids
    - memcpy
    - create_ordinary_grouping_paths
    - add_paths_to_append_rel
    - adjust_appendrel_attrs
    - make_grouping_rel
    - lappend
    - set_cheapest
    - copy_pathtarget
    - bms_next_member
    - IS_DUMMY_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:8124,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8129,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8146,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8151,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8152,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8159,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8162,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8168,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8168,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 22
    argCount: 3
    argNames:
    - input_rel
    - targetList
    - groupClause
    argTypes:
    - RelOptInfo*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8190
      start: 8119
    functionDepth: 1
    functionLinenumber: 8119
    functionLinenumberEnd: 8190
    functionName: group_by_has_partkey
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - Assert
    - exprCollation
    - equal
    - IsA
    - OidIsValid
    - lfirst
    - get_sortgrouplist_exprs
    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:8146,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8151,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8152,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8159,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8162,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8168,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8168,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8179
      start: 8143
    functionDepth: 1
    functionLinenumber: 8143
    functionLinenumberEnd: 8179
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 60
    functionsReached:
    - exprCollation
    - equal
    - IsA
    - OidIsValid
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, partexprs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8151,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8152,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8159,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8162,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8168,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8168,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8175
      start: 8149
    functionDepth: 1
    functionLinenumber: 8149
    functionLinenumberEnd: 8175
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 60
    functionsReached:
    - exprCollation
    - equal
    - IsA
    - OidIsValid
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lg, groupexprs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8209,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8214,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8215,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8218,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8230,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8231,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8232,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8233,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8236,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8239,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8240,1
    - Dst: assignSortGroupRef
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8243,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8246,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8247,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - op
    - targetlist
    argTypes:
    - SetOperationStmt*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8250
      start: 8206
    functionDepth: 2
    functionLinenumber: 8206
    functionLinenumberEnd: 8250
    functionName: generate_setop_child_grouplist
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 1
    functionsReached:
    - exprType
    - Assert
    - list_head
    - lnext
    - copyObject
    - assignSortGroupRef
    - lfirst_oid
    - lfirst
    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:8218,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8230,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8231,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8232,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8233,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8236,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8239,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8240,1
    - Dst: assignSortGroupRef
      Src: /src/postgres/src/backend/optimizer/plan/planner.c:8243,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8244
      start: 8216
    functionDepth: 2
    functionLinenumber: 8216
    functionLinenumberEnd: 8244
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planner.c
    functionUses: 60
    functionsReached:
    - exprType
    - Assert
    - lnext
    - assignSortGroupRef
    - lfirst_oid
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lt, targetlist)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:124,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:128,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:129,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:130,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - plan
    - coltype
    - coltypmod
    - colcollation
    argTypes:
    - Plan*
    - Oid*
    - int32*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 137
    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: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:182,1
    - Dst: simplify_EXISTS_query
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:188,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:218,1
    - Dst: subquery_planner
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:221,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:232,1
    - Dst: get_cheapest_fractional_path
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:233,1
    - Dst: create_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:235,1
    - Dst: build_subplan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:238,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:252,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:258,1
    - Dst: simplify_EXISTS_query
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:260,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:261,1
    - Dst: convert_EXISTS_to_ANY
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:263,1
    - Dst: subquery_planner
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:268,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:276,1
    - Dst: subpath_is_hashable
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:280,1
    - Dst: create_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:286,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:289,1
    - Dst: build_subplan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:290,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:297,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:298,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:301,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:302,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 41
    argCount: 6
    argNames:
    - root
    - orig_subquery
    - subLinkType
    - subLinkId
    - testexpr
    - isTopQual
    argTypes:
    - PlannerInfo*
    - Query*
    - SubLinkType
    - int
    - Node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 161
    functionDepth: 3
    functionLinenumber: 161
    functionLinenumberEnd: 310
    functionName: make_subplan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 0
    functionsReached:
    - subquery_planner
    - fetch_upper_rel
    - Assert
    - convert_EXISTS_to_ANY
    - simplify_EXISTS_query
    - list_make2
    - subpath_is_hashable
    - IsA
    - castNode
    - copyObject
    - create_plan
    - makeNode
    - get_cheapest_fractional_path
    - build_subplan
    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:334,1
    - Dst: get_first_col_type
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:338,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:353,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:366,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:367,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:368,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:369,1
    - Dst: SS_process_sublinks
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:370,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:372,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:373,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:391,1
    - Dst: generate_new_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:392,1
    - Dst: list_make1_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:393,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:399,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:402,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:403,1
    - Dst: generate_new_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:404,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:405,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:406,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:407,1
    - Dst: list_make1_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:408,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:414,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:418,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:419,1
    - Dst: get_promoted_array_type
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:420,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:420,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:421,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:422,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:423,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:423,1
    - Dst: generate_new_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:424,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:426,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:427,1
    - Dst: list_make1_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:428,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:437,1
    - Dst: generate_subquery_params
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:438,1
    - Dst: convert_testexpr
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:441,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:444,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:460,1
    - Dst: generate_subquery_params
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:461,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:470,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:471,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:472,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:473,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:473,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:474,1
    - Dst: makeNullConst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:480,1
    - Dst: generate_subquery_params
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:498,1
    - Dst: convert_testexpr
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:501,1
    - Dst: subplan_is_hashable
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:520,1
    - Dst: testexpr_is_hashable
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:521,1
    - Dst: ExecMaterializesOutput
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:535,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:535,1
    - Dst: materialize_finished_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:536,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:545,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:546,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:547,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:548,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:551,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:561,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:565,1
    - Dst: cost_subplan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:570,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: 573
      start: 318
    functionDepth: 2
    functionLinenumber: 318
    functionLinenumberEnd: 573
    functionName: build_subplan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - makeNullConst
    - list_copy
    - lappend_int
    - SS_process_sublinks
    - list_length
    - ExecMaterializesOutput
    - convert_testexpr
    - materialize_finished_plan
    - makeNode
    - psprintf
    - exprType
    - list_nth_cell
    - nodeTag
    - linitial
    - format_type_be
    - IsA
    - elog
    - lappend
    - OidIsValid
    - generate_new_exec_param
    - generate_subquery_params
    - lfirst
    - testexpr_is_hashable
    - bms_add_member
    - Assert
    - exprCollation
    - get_promoted_array_type
    - get_first_col_type
    - list_make1_int
    - exprTypmod
    - cost_subplan
    - subplan_is_hashable
    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:353,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:366,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:367,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:368,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:369,1
    - Dst: SS_process_sublinks
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:370,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:372,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:373,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 351
    functionDepth: 1
    functionLinenumber: 351
    functionLinenumberEnd: 374
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 60
    functionsReached:
    - lappend_int
    - IsA
    - SS_process_sublinks
    - lappend
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, plan_params)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:591,1
    - Dst: generate_new_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:597,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:598,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:599,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:600,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:601,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:602,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - root
    - tlist
    - paramIds
    argTypes:
    - PlannerInfo*
    - List*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 581
    functionDepth: 1
    functionLinenumber: 581
    functionLinenumberEnd: 607
    functionName: generate_subquery_params
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - exprType
    - exprCollation
    - exprTypmod
    - lappend_int
    - lappend
    - 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:591,1
    - Dst: generate_new_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:597,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:598,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:599,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:600,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:601,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:602,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 589
    functionDepth: 1
    functionLinenumber: 589
    functionLinenumberEnd: 603
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 60
    functionsReached:
    - exprType
    - exprCollation
    - exprTypmod
    - lappend_int
    - lappend
    - 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:623,1
    - Dst: makeVarFromTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:629,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:630,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - root
    - tlist
    - varno
    argTypes:
    - PlannerInfo*
    - List*
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 614
    functionDepth: 1
    functionLinenumber: 614
    functionLinenumberEnd: 634
    functionName: generate_subquery_vars
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 0
    functionsReached:
    - lappend
    - lfirst
    - makeVarFromTargetEntry
    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:623,1
    - Dst: makeVarFromTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:629,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:630,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 621
    functionDepth: 1
    functionLinenumber: 621
    functionLinenumberEnd: 631
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 60
    functionsReached:
    - lappend
    - lfirst
    - makeVarFromTargetEntry
    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:652,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - root
    - testexpr
    - subst_nodes
    argTypes:
    - PlannerInfo*
    - Node*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 643
    functionDepth: 1
    functionLinenumber: 643
    functionLinenumberEnd: 653
    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:661,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:668,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:669,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:676,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:676,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:680,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:702,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - convert_testexpr_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 655
    functionDepth: 3
    functionLinenumber: 655
    functionLinenumberEnd: 703
    functionName: convert_testexpr_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - IsA
    - list_length
    - list_nth
    - elog
    - copyObject
    - expression_tree_mutator
    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: MAXALIGN
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:723,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:723,1
    - Dst: get_hash_memory_limit
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:724,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - plan
    argTypes:
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 711
    functionDepth: 1
    functionLinenumber: 711
    functionLinenumberEnd: 728
    functionName: subplan_is_hashable
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - get_hash_memory_limit
    - MAXALIGN
    linkageType: ''
    returnType: bool
    signature: bool subplan_is_hashable(Plan *plan)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:747,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:747,1
    - Dst: get_hash_memory_limit
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:748,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - path
    argTypes:
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 735
    functionDepth: 1
    functionLinenumber: 735
    functionLinenumberEnd: 752
    functionName: subpath_is_hashable
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - get_hash_memory_limit
    - MAXALIGN
    linkageType: ''
    returnType: bool
    signature: bool subpath_is_hashable(Path *path)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:767,1
    - Dst: test_opexpr_is_hashable
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:769,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:772,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:776,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:778,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:780,1
    - Dst: test_opexpr_is_hashable
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:782,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - testexpr
    - param_ids
    argTypes:
    - Node*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 760
    functionDepth: 2
    functionLinenumber: 760
    functionLinenumberEnd: 789
    functionName: testexpr_is_hashable
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - lfirst
    - IsA
    - foreach
    - is_andclause
    - test_opexpr_is_hashable
    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:802,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:816,1
    - Dst: contain_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:818,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:818,1
    - Dst: contain_var_clause
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:820,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:820,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - testexpr
    - param_ids
    argTypes:
    - OpExpr*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 791
    functionDepth: 1
    functionLinenumber: 791
    functionLinenumberEnd: 823
    functionName: test_opexpr_is_hashable
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - linitial
    - lsecond
    - list_length
    - hash_ok_operator
    - contain_exec_param
    - 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:837,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:843,1
    - Dst: op_hashjoinable
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:845,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:845,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:853,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:853,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:854,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:855,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:856,1
    - Dst: func_strict
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:857,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:859,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:862,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - expr
    argTypes:
    - OpExpr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 831
    functionDepth: 1
    functionLinenumber: 831
    functionLinenumberEnd: 865
    functionName: hash_ok_operator
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - exprType
    - func_strict
    - ReleaseSysCache
    - linitial
    - HeapTupleIsValid
    - op_hashjoinable
    - GETSTRUCT
    - list_length
    - SearchSysCache1
    - elog
    - 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:884,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:886,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:888,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:904,1
    - Dst: contain_dml
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:944,1
    - Dst: contain_outer_selfref
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:946,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:947,1
    - Dst: inline_cte
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:949,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:951,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:959,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:962,1
    - Dst: subquery_planner
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:968,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:977,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:983,1
    - Dst: create_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:986,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:994,1
    - Dst: get_first_col_type
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:998,1
    - Dst: assign_special_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1027,1
    - Dst: list_make1_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1028,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1033,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1034,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1035,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1036,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1038,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1040,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1043,1
    - Dst: cost_subplan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1046,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 42
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 879
    functionDepth: 3
    functionLinenumber: 879
    functionLinenumberEnd: 1048
    functionName: SS_process_ctes
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - subquery_planner
    - lappend_int
    - list_length
    - contain_volatile_functions
    - create_plan
    - makeNode
    - psprintf
    - foreach
    - assign_special_exec_param
    - fetch_upper_rel
    - elog
    - lappend
    - lfirst
    - Assert
    - contain_outer_selfref
    - get_first_col_type
    - list_make1_int
    - contain_dml
    - copyObject
    - cost_subplan
    - inline_cte
    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:1058,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1055
    functionDepth: 1
    functionLinenumber: 1055
    functionLinenumberEnd: 1059
    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:1066,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1074,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1076,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1077
      start: 1061
    functionDepth: 1
    functionLinenumber: 1061
    functionLinenumberEnd: 1077
    functionName: contain_dml_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - IsA
    - expression_tree_walker
    - 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:1091,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1091,1
    - Dst: contain_outer_selfref_walker
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1093,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1094
      start: 1082
    functionDepth: 1
    functionLinenumber: 1082
    functionLinenumberEnd: 1094
    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:1101,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1115,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1123,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1130,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - node
    - depth
    argTypes:
    - Node*
    - Index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1131
      start: 1096
    functionDepth: 1
    functionLinenumber: 1096
    functionLinenumberEnd: 1131
    functionName: contain_outer_selfref_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - IsA
    - expression_tree_walker
    - 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:1144,1
    - Dst: inline_cte_walker
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - root
    - cte
    argTypes:
    - PlannerInfo*
    - CommonTableExpr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1147
      start: 1136
    functionDepth: 1
    functionLinenumber: 1136
    functionLinenumberEnd: 1147
    functionName: inline_cte
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - inline_cte_walker
    - castNode
    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:1154,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1165,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1172,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1177,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1185,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1188,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1214,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - inline_cte_walker_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1215
      start: 1149
    functionDepth: 1
    functionLinenumber: 1149
    functionLinenumberEnd: 1215
    functionName: inline_cte_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - expression_tree_walker
    - IsA
    - IncrementVarSublevelsUp
    - copyObject
    - strcmp
    - query_tree_walker
    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:1241,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1242,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1243,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1247,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1250,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1251,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1252,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1261,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1262,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1265,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1267,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1268,1
    - Dst: convert_testexpr
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1274,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1274,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1280,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1286,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1289,1
    - Dst: make_SAOP_expr
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1293,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1293,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1294,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 18
    argCount: 3
    argNames:
    - root
    - testexpr
    - values
    argTypes:
    - PlannerInfo*
    - Node*
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1296
      start: 1226
    functionDepth: 2
    functionLinenumber: 1226
    functionLinenumberEnd: 1296
    functionName: convert_VALUES_to_ANY
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 0
    functionsReached:
    - exprType
    - linitial
    - make_SAOP_expr
    - lsecond
    - IsA
    - list_length
    - foreach
    - convert_testexpr
    - list_make1
    - eval_const_expressions
    - contain_volatile_functions
    - lappend
    - linitial_oid
    - lfirst
    - linitial_node
    linkageType: ''
    returnType: ScalarArrayOpExpr
    signature: 'ScalarArrayOpExpr *

      convert_VALUES_to_ANY(PlannerInfo *root, Node *testexpr, Query *values)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1350,1
    - Dst: pull_varnos_of_level
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1356,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1357,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1363,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1371,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1372,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1378,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1384,1
    - Dst: make_parsestate
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1388,1
    - Dst: addRangeTableEntryForSubquery
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1398,1
    - Dst: makeAlias
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1400,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1404,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1405,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1410,1
    - Dst: generate_subquery_vars
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1416,1
    - Dst: convert_testexpr
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1423,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1428,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 3
    argNames:
    - root
    - sublink
    - available_rels
    argTypes:
    - PlannerInfo*
    - SubLink*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1440
      start: 1332
    functionDepth: 2
    functionLinenumber: 1332
    functionLinenumberEnd: 1440
    functionName: convert_ANY_sublink_to_join
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 0
    functionsReached:
    - Assert
    - bms_is_subset
    - make_parsestate
    - bms_is_empty
    - makeAlias
    - list_length
    - convert_testexpr
    - lappend
    - contain_volatile_functions
    - addRangeTableEntryForSubquery
    - generate_subquery_vars
    - pull_varnos_of_level
    - makeNode
    - pull_varnos
    linkageType: ''
    returnType: JoinExpr
    signature: "JoinExpr *\nconvert_ANY_sublink_to_join(PlannerInfo *root, SubLink
      *sublink,\n\t\t\t\t\t\t\tRelids available_rels)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1462,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1479,1
    - Dst: simplify_EXISTS_query
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1487,1
    - Dst: contain_vars_of_level
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1502,1
    - Dst: contain_vars_of_level
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1509,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1515,1
    - Dst: replace_empty_jointree
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1521,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1538,1
    - Dst: OffsetVarNodes
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1539,1
    - Dst: OffsetVarNodes
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1540,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1547,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1548,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1556,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1559,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1562,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1564,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1565,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1565,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1571,1
    - Dst: CombineRangeTables
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1578,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1584,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1589,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1590,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 46
    argCount: 4
    argNames:
    - root
    - sublink
    - under_not
    - available_rels
    argTypes:
    - PlannerInfo*
    - SubLink*
    - bool
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1600
      start: 1449
    functionDepth: 1
    functionLinenumber: 1449
    functionLinenumberEnd: 1600
    functionName: convert_EXISTS_sublink_to_join
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 0
    functionsReached:
    - Assert
    - bms_is_subset
    - simplify_EXISTS_query
    - linitial
    - bms_is_empty
    - CombineRangeTables
    - IncrementVarSublevelsUp
    - replace_empty_jointree
    - list_length
    - copyObject
    - contain_volatile_functions
    - OffsetVarNodes
    - contain_vars_of_level
    - makeNode
    - bms_next_member
    - pull_varnos
    - bms_free
    - bms_add_member
    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: 6
    BranchProfiles: []
    Callsites:
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1659,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1665,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1669,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1670,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1695,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1697,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1706,1
    - Dst: list_delete_cell
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1707,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 28
    argCount: 2
    argNames:
    - root
    - query
    argTypes:
    - PlannerInfo*
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1714
      start: 1618
    functionDepth: 2
    functionLinenumber: 1618
    functionLinenumberEnd: 1714
    functionName: simplify_EXISTS_query
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 2
    functionsReached:
    - Assert
    - lfirst_node
    - IsA
    - foreach
    - list_delete_cell
    - DatumGetInt64
    - eval_const_expressions
    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:1753,1
    - Dst: contain_vars_of_level
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1771,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1777,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1799,1
    - Dst: canonicalize_qual
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1800,1
    - Dst: make_ands_implicit
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1801,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1811,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1813,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1815,1
    - Dst: hash_ok_operator
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1816,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1818,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1819,1
    - Dst: contain_vars_of_level
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1821,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1823,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1824,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1825,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1826,1
    - Dst: contain_vars_of_level
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1829,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1837,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1838,1
    - Dst: hash_ok_operator
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1838,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1840,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1841,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1842,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1843,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1851,1
    - Dst: contain_vars_of_level
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1869,1
    - Dst: contain_vars_of_level
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1870,1
    - Dst: contain_aggs_of_level
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1873,1
    - Dst: contain_aggs_of_level
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1874,1
    - Dst: contain_vars_of_level
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1883,1
    - Dst: contain_subplans
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1890,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1896,1
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1902,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1914,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1915,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1916,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1917,1
    - Dst: generate_new_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1920,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1921,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1922,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1923,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1924,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1925,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1929,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1930,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1933,1
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1938,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 59
    argCount: 4
    argNames:
    - root
    - subselect
    - testexpr
    - paramIds
    argTypes:
    - PlannerInfo*
    - Query*
    - Node**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1942
      start: 1730
    functionDepth: 2
    functionLinenumber: 1730
    functionLinenumberEnd: 1942
    functionName: convert_EXISTS_to_ANY
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - lappend_int
    - contain_volatile_functions
    - exprType
    - contain_subplans
    - lsecond
    - foreach
    - make_ands_implicit
    - make_opclause
    - canonicalize_qual
    - contain_aggs_of_level
    - linitial
    - IsA
    - eval_const_expressions
    - lappend
    - hash_ok_operator
    - OidIsValid
    - generate_new_exec_param
    - contain_vars_of_level
    - get_commutator
    - lfirst
    - make_ands_explicit
    - makeTargetEntry
    - Assert
    - exprCollation
    - lappend_oid
    - exprTypmod
    - IncrementVarSublevelsUp
    - lfirst_oid
    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:1914,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1915,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1916,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1917,1
    - Dst: generate_new_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1920,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1921,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1922,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1923,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1924,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1925,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1929,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1930,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1933,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1934
      start: 1912
    functionDepth: 1
    functionLinenumber: 1912
    functionLinenumberEnd: 1934
    functionName: forfour
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 0
    functionsReached:
    - exprType
    - makeTargetEntry
    - exprCollation
    - exprTypmod
    - lappend_int
    - lappend
    - generate_new_exec_param
    - make_opclause
    - lfirst_oid
    - lfirst
    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:1974,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - root
    - expr
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1975
      start: 1970
    functionDepth: 1
    functionLinenumber: 1970
    functionLinenumberEnd: 1975
    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:1982,1
    - Dst: replace_outer_var
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1985,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1987,1
    - Dst: replace_outer_placeholdervar
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1990,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:1993,1
    - Dst: replace_outer_agg
      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: replace_outer_grouping
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2001,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2003,1
    - Dst: replace_outer_merge_support
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2006,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2009,1
    - Dst: replace_outer_returning
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2012,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2015,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 28
    argCount: 2
    argNames:
    - node
    - root
    argTypes:
    - Node*
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2016
      start: 1977
    functionDepth: 1
    functionLinenumber: 1977
    functionLinenumberEnd: 2016
    functionName: replace_correlation_vars_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - replace_outer_agg
    - replace_outer_var
    - replace_outer_grouping
    - IsA
    - replace_outer_merge_support
    - replace_outer_placeholdervar
    - replace_outer_returning
    - expression_tree_mutator
    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:2032,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - root
    - expr
    - isQual
    argTypes:
    - PlannerInfo*
    - Node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2033
      start: 2025
    functionDepth: 1
    functionLinenumber: 2025
    functionLinenumberEnd: 2033
    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:2044,1
    - Dst: process_sublinks_mutator
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2054,1
    - Dst: make_subplan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2059,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2074,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2079,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2084,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2089,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2100,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2100,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2101,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2101,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2102,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2102,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2118,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2126,1
    - Dst: process_sublinks_mutator
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2130,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2130,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2131,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2132,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2134,1
    - Dst: make_andclause
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2136,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2139,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2147,1
    - Dst: process_sublinks_mutator
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2151,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2151,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2152,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2153,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2155,1
    - Dst: make_orclause
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2157,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2166,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 50
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - process_sublinks_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2169
      start: 2035
    functionDepth: 4
    functionLinenumber: 2035
    functionLinenumberEnd: 2169
    functionName: process_sublinks_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 2
    functionsReached:
    - lfirst
    - Assert
    - list_concat
    - make_subplan
    - IsA
    - is_orclause
    - foreach
    - make_andclause
    - process_sublinks_mutator
    - lappend
    - make_orclause
    - expression_tree_mutator
    - is_andclause
    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:2209,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2211,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2213,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2216,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2218,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2221,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2223,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2223,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2228,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2231
      start: 2183
    functionDepth: 1
    functionLinenumber: 2183
    functionLinenumberEnd: 2231
    functionName: SS_identify_outer_params
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - lfirst_int
    - lfirst
    - bms_add_member
    - foreach
    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:2262,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2268,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2270,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2289,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2291,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - root
    - final_rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2299
      start: 2247
    functionDepth: 1
    functionLinenumber: 2247
    functionLinenumberEnd: 2299
    functionName: SS_charge_for_initplans
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - SS_compute_initplan_cost
    - lfirst
    - foreach
    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:2329,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: 2337
      start: 2311
    functionDepth: 1
    functionLinenumber: 2311
    functionLinenumberEnd: 2337
    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:2329,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2334
      start: 2327
    functionDepth: 1
    functionLinenumber: 2327
    functionLinenumberEnd: 2334
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 68
    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: 2356
      start: 2352
    functionDepth: 0
    functionLinenumber: 2352
    functionLinenumberEnd: 2356
    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:2371,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - root
    - plan
    argTypes:
    - PlannerInfo*
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2372
      start: 2367
    functionDepth: 1
    functionLinenumber: 2367
    functionLinenumberEnd: 2372
    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:2433,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2435,1
    - Dst: planner_subplan_get_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2436,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2439,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2440,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2442,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2442,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2448,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2458,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2459,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2468,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2470,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2474,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2477,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2482,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2486,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2488,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2492,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2494,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2502,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2506,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2508,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2510,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2516,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2520,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2530,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2532,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2536,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2538,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2542,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2544,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2554,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2557,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2557,1
    - Dst: finalize_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2559,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2563,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2566,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2582,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2584,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2590,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2596,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2600,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2606,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2608,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2612,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2614,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2634,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2635,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2637,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2639,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2644,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2648,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2655,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2657,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2661,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2668,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2670,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2674,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2684,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2688,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2691,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2694,1
    - Dst: finalize_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2695,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2696,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2710,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2710,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2712,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2712,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2714,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2716,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2718,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2726,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2729,1
    - Dst: finalize_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2730,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2731,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2741,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2744,1
    - Dst: finalize_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2745,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2746,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2756,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2759,1
    - Dst: finalize_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2760,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2761,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2771,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2774,1
    - Dst: finalize_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2775,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2776,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2786,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2789,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2791,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2793,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2800,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2802,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2807,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2809,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2814,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2819,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2821,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2828,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2828,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2836,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2836,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2838,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2838,1
    - Dst: finalize_agg_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2856,1
    - Dst: finalize_agg_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2858,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2866,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2868,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2877,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2877,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2885,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2897,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2897,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2905,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2913,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2928,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2929,1
    - Dst: finalize_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2933,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2938,1
    - Dst: finalize_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2943,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2946,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2949,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2950,1
    - Dst: finalize_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2955,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2961,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2971,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2977,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2978,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2989,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2990,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2992,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:2994,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: 2997
      start: 2405
    functionDepth: 3
    functionLinenumber: 2405
    functionLinenumberEnd: 2997
    functionName: finalize_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 3
    functionsReached:
    - bms_copy
    - list_length
    - bms_union
    - lfirst_int
    - finalize_agg_primnode
    - planner_subplan_get_plan
    - foreach
    - finalize_primnode
    - bms_difference
    - bms_free
    - nodeTag
    - bms_del_member
    - bms_is_subset
    - bms_del_members
    - find_base_rel
    - elog
    - list_nth
    - finalize_plan
    - lfirst
    - bms_add_member
    - Assert
    - bms_add_members
    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:3008,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3014,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3018,1
    - Dst: find_minmax_agg_replacement_param
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3031,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3033,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3037,1
    - Dst: planner_subplan_get_plan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3040,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3045,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3055,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3057,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3058,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3062,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3069,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3070,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3072,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3072,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3074,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3078,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - finalize_primnode_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3079
      start: 3003
    functionDepth: 1
    functionLinenumber: 3003
    functionLinenumberEnd: 3079
    functionName: finalize_primnode
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 2
    functionsReached:
    - bms_del_member
    - bms_copy
    - expression_tree_walker
    - planner_subplan_get_plan
    - IsA
    - finalize_primnode
    - foreach
    - find_minmax_agg_replacement_param
    - bms_join
    - lfirst_int
    - bms_add_member
    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:3091,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3096,1
    - Dst: finalize_primnode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3097,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - finalize_primnode_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3101
      start: 3086
    functionDepth: 2
    functionLinenumber: 3086
    functionLinenumberEnd: 3101
    functionName: finalize_agg_primnode
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 1
    functionsReached:
    - IsA
    - expression_tree_walker
    - finalize_primnode
    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:3117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - root
    - resulttype
    - resulttypmod
    - resultcollation
    argTypes:
    - PlannerInfo*
    - Oid
    - int32
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3119
      start: 3112
    functionDepth: 1
    functionLinenumber: 3112
    functionLinenumberEnd: 3119
    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:3142,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3143,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3144,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3151,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3153,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3154,1
    - Dst: get_first_col_type
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3155,1
    - Dst: list_make1_int
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3158,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3160,1
    - Dst: cost_subplan
      Src: /src/postgres/src/backend/optimizer/plan/subselect.c:3168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 4
    argNames:
    - root
    - subroot
    - plan
    - prm
    argTypes:
    - PlannerInfo*
    - PlannerInfo*
    - Plan*
    - Param*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3169
      start: 3128
    functionDepth: 2
    functionLinenumber: 3128
    functionLinenumberEnd: 3169
    functionName: SS_make_initplan_from_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/subselect.c
    functionUses: 0
    functionsReached:
    - get_first_col_type
    - list_make1_int
    - list_length
    - lappend
    - cost_subplan
    - makeNode
    - psprintf
    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: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:84,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:90,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:91,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:100,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:122,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:124,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:126,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:128,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:131,1
    - Dst: can_minmax_aggs
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:144,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:155,1
    - Dst: get_equality_op_for_ordering_op
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:163,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:164,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:165,1
    - Dst: build_minmax_path
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:176,1
    - Dst: build_minmax_path
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:178,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:196,1
    - Dst: SS_make_initplan_output_param
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:199,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:200,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:202,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:219,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:220,1
    - Dst: create_minmaxagg_path
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:221,1
    - Dst: create_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:222,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 41
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 72
    functionDepth: 2
    functionLinenumber: 72
    functionLinenumberEnd: 226
    functionName: preprocess_minmax_aggregates
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planagg.c
    functionUses: 1
    functionsReached:
    - exprType
    - fetch_upper_rel
    - Assert
    - get_equality_op_for_ordering_op
    - exprCollation
    - linitial
    - planner_rt_fetch
    - can_minmax_aggs
    - build_minmax_path
    - IsA
    - add_path
    - list_length
    - elog
    - SS_make_initplan_output_param
    - OidIsValid
    - create_minmaxagg_path
    - lfirst
    - create_pathtarget
    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:155,1
    - Dst: get_equality_op_for_ordering_op
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:163,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:164,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:165,1
    - Dst: build_minmax_path
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:176,1
    - Dst: build_minmax_path
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:178,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 183
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planagg.c
    functionUses: 70
    functionsReached:
    - get_equality_op_for_ordering_op
    - build_minmax_path
    - elog
    - OidIsValid
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, aggs_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:196,1
    - Dst: SS_make_initplan_output_param
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:199,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:200,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 194
    functionDepth: 2
    functionLinenumber: 194
    functionLinenumberEnd: 203
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planagg.c
    functionUses: 70
    functionsReached:
    - exprType
    - exprCollation
    - SS_make_initplan_output_param
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, aggs_list)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:245,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:247,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:248,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:253,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:254,1
    - Dst: fetch_agg_sort_op
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:282,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:283,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:286,1
    - Dst: contain_mutable_functions
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:288,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:291,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:291,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:294,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:303,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - root
    - context
    argTypes:
    - PlannerInfo*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 306
    functionName: can_minmax_aggs
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planagg.c
    functionUses: 1
    functionsReached:
    - exprType
    - Assert
    - lfirst_node
    - linitial
    - type_is_rowtype
    - contain_mutable_functions
    - list_length
    - foreach
    - fetch_agg_sort_op
    - lappend
    - OidIsValid
    - makeNode
    - linitial_node
    linkageType: ''
    returnType: bool
    signature: bool can_minmax_aggs(PlannerInfo *root, List **context)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:338,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:339,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:349,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:350,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: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:356,1
    - Dst: Assert
      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: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:371,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:371,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:373,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:375,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:386,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:388,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:394,1
    - Dst: lcons
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:396,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:399,1
    - Dst: assignSortGroupRef
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:400,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:406,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:410,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:412,1
    - Dst: query_planner
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:422,1
    - Dst: SS_identify_outer_params
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:430,1
    - Dst: SS_charge_for_initplans
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:431,1
    - Dst: get_cheapest_fractional_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:443,1
    - Dst: apply_projection_to_path
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:455,1
    - Dst: create_pathtarget
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:456,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 59
    argCount: 6
    argNames:
    - root
    - mminfo
    - eqop
    - sortop
    - reverse_sort
    - nulls_first
    argTypes:
    - PlannerInfo*
    - MinMaxAggInfo*
    - Oid
    - Oid
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 316
    functionDepth: 2
    functionLinenumber: 316
    functionLinenumberEnd: 474
    functionName: build_minmax_path
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planagg.c
    functionUses: 2
    functionsReached:
    - lcons
    - pstrdup
    - makeNode
    - query_planner
    - Int64GetDatum
    - assignSortGroupRef
    - list_member
    - memcpy
    - create_pathtarget
    - SS_charge_for_initplans
    - palloc
    - apply_projection_to_path
    - makeTargetEntry
    - Assert
    - get_cheapest_fractional_path_for_pathkeys
    - IncrementVarSublevelsUp
    - list_make1
    - SS_identify_outer_params
    - copyObject
    - makeConst
    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:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - root
    - extra
    argTypes:
    - PlannerInfo*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 479
    functionDepth: 1
    functionLinenumber: 479
    functionLinenumberEnd: 492
    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:506,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:506,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:507,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:509,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/plan/planagg.c:511,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - aggfnoid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 498
    functionDepth: 1
    functionLinenumber: 498
    functionLinenumberEnd: 514
    functionName: fetch_agg_sort_op
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planagg.c
    functionUses: 1
    functionsReached:
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - SearchSysCache1
    - 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: 117
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 117
    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: 118
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 118
    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: 129
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 129
    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: 132
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 132
    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: palloc
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:311,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:312,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:318,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:326,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:328,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:340,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:347,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:347,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:349,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:349,1
    - Dst: set_plan_refs
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:353,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:365,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:367,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:376,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 2
    argNames:
    - root
    - plan
    argTypes:
    - PlannerInfo*
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 381
    functionName: set_plan_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - add_rtes_to_flat_rtable
    - lfirst_node
    - palloc0
    - foreach
    - list_length
    - foreach_current_index
    - lappend
    - memcpy
    - palloc
    - set_plan_refs
    - lfirst
    linkageType: ''
    returnType: Plan
    signature: 'Plan *

      set_plan_references(PlannerInfo *root, Plan *plan)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:406,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:408,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:411,1
    - Dst: add_rte_to_flat_rtable
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:412,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:426,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:428,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:443,1
    - Dst: flatten_unplanned_rtes
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:465,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:467,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:467,1
    - Dst: add_rtes_to_flat_rtable
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:469,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 18
    argCount: 2
    argNames:
    - root
    - recursing
    argTypes:
    - PlannerInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 391
    functionDepth: 1
    functionLinenumber: 391
    functionLinenumberEnd: 474
    functionName: add_rtes_to_flat_rtable
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 2
    functionsReached:
    - fetch_upper_rel
    - add_rtes_to_flat_rtable
    - Assert
    - flatten_unplanned_rtes
    - foreach
    - OidIsValid
    - add_rte_to_flat_rtable
    - lfirst
    - IS_DUMMY_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:486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - glob
    - rte
    argTypes:
    - PlannerGlobal*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 480
    functionDepth: 1
    functionLinenumber: 480
    functionLinenumberEnd: 490
    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:497,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:503,1
    - Dst: add_rte_to_flat_rtable
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:504,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:507,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:517,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:524,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - node
    - cxt
    argTypes:
    - Node*
    - flatten_rtes_walker_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 525
    functionName: flatten_rtes_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached:
    - expression_tree_walker
    - IsA
    - OidIsValid
    - add_rte_to_flat_rtable
    - query_tree_walker
    linkageType: ''
    returnType: bool
    signature: bool flatten_rtes_walker(Node *node, flatten_rtes_walker_context *cxt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:544,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:545,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:563,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:580,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:582,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:583,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:584,1
    - Dst: getRTEPermissionInfo
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:597,1
    - Dst: addRTEPermissionInfo
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:606,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:607,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 3
    argNames:
    - glob
    - rteperminfos
    - rte
    argTypes:
    - PlannerGlobal*
    - List*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 537
    functionDepth: 1
    functionLinenumber: 537
    functionLinenumberEnd: 609
    functionName: add_rte_to_flat_rtable
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 2
    functionsReached:
    - getRTEPermissionInfo
    - lappend_oid
    - list_length
    - lappend
    - addRTEPermissionInfo
    - OidIsValid
    - memcpy
    - palloc
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: "void add_rte_to_flat_rtable(PlannerGlobal *glob, List *rteperminfos,\n\t\t\t\t\t
      \  RangeTblEntry *rte)"
  - BBCount: 53
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:628,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:636,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:637,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:639,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:640,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:649,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:650,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:652,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:653,1
    - Dst: fix_scan_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:655,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:665,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:666,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:668,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:669,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:671,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:674,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:675,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:677,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:680,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:681,1
    - Dst: set_indexonlyscan_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:688,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:697,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:698,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:700,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:702,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:703,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:712,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:713,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:715,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:716,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:718,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:719,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:728,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:729,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:731,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:732,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:734,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:744,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:745,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:747,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:748,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:750,1
    - Dst: set_subqueryscan_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:756,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:765,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:766,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:768,1
    - Dst: NUM_EXEC_QUAL
      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: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:780,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:781,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:783,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:784,1
    - Dst: fix_scan_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:786,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:796,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:797,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:799,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:800,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:802,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:812,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:813,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:815,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:816,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:825,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:826,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:828,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:829,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:838,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:839,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:841,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:842,1
    - Dst: set_foreignscan_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:846,1
    - Dst: set_customscan_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:849,1
    - Dst: set_join_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:855,1
    - Dst: set_upper_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:861,1
    - Dst: set_param_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:862,1
    - Dst: set_hash_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:867,1
    - Dst: set_dummy_tlist_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:878,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:880,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:882,1
    - Dst: set_dummy_tlist_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:899,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:905,1
    - Dst: set_dummy_tlist_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:916,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:917,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:919,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:921,1
    - Dst: set_dummy_tlist_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:938,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:939,1
    - Dst: fix_scan_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:942,1
    - Dst: fix_scan_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:944,1
    - Dst: DO_AGGSPLIT_COMBINE
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:957,1
    - Dst: convert_combining_aggrefs
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:960,1
    - Dst: convert_combining_aggrefs
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:963,1
    - Dst: set_upper_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:967,1
    - Dst: set_upper_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:971,1
    - Dst: set_windowagg_runcondition_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:985,1
    - Dst: set_upper_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:989,1
    - Dst: fix_scan_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:997,1
    - Dst: fix_scan_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:999,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1000,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1003,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1004,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1007,1
    - Dst: set_upper_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1019,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1034,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1036,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1039,1
    - Dst: makeNullConst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1040,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1046,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1047,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1049,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1050,1
    - Dst: fix_scan_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1054,1
    - Dst: set_upper_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1058,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1063,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1065,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1066,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1069,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1082,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1082,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1082,1
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1083,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1086,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1087,1
    - Dst: set_returning_clause_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1089,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1094,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1107,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1107,1
    - Dst: build_tlist_index
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1122,1
    - Dst: fix_join_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1125,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1127,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1128,1
    - Dst: fix_join_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1131,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1133,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1134,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1136,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1139,1
    - Dst: build_tlist_index
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1175,1
    - Dst: forthree
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1177,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1181,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1182,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1183,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1187,1
    - Dst: fix_join_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1190,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1196,1
    - Dst: fix_join_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1199,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1205,1
    - Dst: fix_join_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1210,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1216,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1217,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1227,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1229,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1231,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1233,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1244,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1249,1
    - Dst: set_append_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1256,1
    - Dst: set_mergeappend_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1261,1
    - Dst: set_dummy_tlist_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1266,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1267,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1274,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1275,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1276,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1278,1
    - Dst: set_plan_refs
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1278,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1279,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1289,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1290,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1291,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1293,1
    - Dst: set_plan_refs
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1293,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1294,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1300,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1301,1
    - Dst: set_plan_refs
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1313,1
    - Dst: set_plan_refs
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1314,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 266
    argCount: 3
    argNames:
    - root
    - plan
    - rtoffset
    argTypes:
    - PlannerInfo*
    - Plan*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1317
      start: 614
    functionDepth: 1
    functionLinenumber: 614
    functionLinenumberEnd: 1317
    functionName: set_plan_refs
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 2
    functionsReached:
    - makeNullConst
    - set_param_references
    - fix_join_expr
    - lappend_int
    - set_append_references
    - list_length
    - forboth
    - lfirst_int
    - set_foreignscan_references
    - pfree
    - list_concat
    - foreach
    - set_subqueryscan_references
    - set_plan_refs
    - set_mergeappend_references
    - nodeTag
    - convert_combining_aggrefs
    - build_tlist_index
    - linitial
    - set_windowagg_runcondition_references
    - DO_AGGSPLIT_COMBINE
    - set_returning_clause_references
    - IsA
    - elog
    - NUM_EXEC_QUAL
    - outerPlan
    - lappend
    - forthree
    - fix_scan_list
    - lfirst
    - set_customscan_references
    - NUM_EXEC_TLIST
    - set_dummy_tlist_references
    - Assert
    - fix_scan_expr
    - set_indexonlyscan_references
    - set_upper_references
    - set_hash_references
    - linitial_int
    - set_join_references
    - copyObject
    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:1187,1
    - Dst: fix_join_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1190,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1196,1
    - Dst: fix_join_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1199,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1206
      start: 1185
    functionDepth: 1
    functionLinenumber: 1185
    functionLinenumberEnd: 1206
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 74
    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:1345,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1347,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1350,1
    - Dst: build_tlist_index
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1353,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1357,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1363,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1365,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1371,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1373,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1379,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1381,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1384,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1387,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1388,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1390,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - root
    - plan
    - rtoffset
    argTypes:
    - PlannerInfo*
    - IndexOnlyScan*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1393
      start: 1328
    functionDepth: 1
    functionLinenumber: 1328
    functionLinenumberEnd: 1393
    functionName: set_indexonlyscan_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - lfirst
    - pfree
    - build_tlist_index
    - foreach
    - lappend
    - NUM_EXEC_QUAL
    - fix_scan_list
    - fix_upper_expr
    - NUM_EXEC_TLIST
    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:1411,1
    - Dst: set_plan_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1414,1
    - Dst: trivial_subqueryscan
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1416,1
    - Dst: clean_up_removed_plan_level
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1421,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1434,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1435,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1437,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1438,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - root
    - plan
    - rtoffset
    argTypes:
    - PlannerInfo*
    - SubqueryScan*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1444
      start: 1402
    functionDepth: 2
    functionLinenumber: 1402
    functionLinenumberEnd: 1444
    functionName: set_subqueryscan_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - find_base_rel
    - clean_up_removed_plan_level
    - NUM_EXEC_QUAL
    - trivial_subqueryscan
    - fix_scan_list
    - NUM_EXEC_TLIST
    - set_plan_references
    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:1483,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1490,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1491,1
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1495,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1497,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1498,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1508,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1512,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1513,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1517,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1519,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 1
    argNames:
    - plan
    argTypes:
    - SubqueryScan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1532
      start: 1471
    functionDepth: 1
    functionLinenumber: 1471
    functionLinenumberEnd: 1532
    functionName: trivial_subqueryscan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - Assert
    - equal
    - IsA
    - list_length
    - forboth
    - lfirst
    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:1555,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1567,1
    - Dst: apply_tlist_labeling
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1576,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - parent
    - child
    argTypes:
    - Plan*
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1579
      start: 1541
    functionDepth: 2
    functionLinenumber: 1541
    functionLinenumberEnd: 1579
    functionName: clean_up_removed_plan_level
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - SS_compute_initplan_cost
    - list_concat
    - apply_tlist_labeling
    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:1600,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1603,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1609,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1611,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1617,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1619,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1625,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1627,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1633,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1634,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1637,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1638,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1647,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1648,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1650,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1651,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1653,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1654,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1656,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1657,1
    - Dst: offset_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1660,1
    - Dst: offset_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1661,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - root
    - fscan
    - rtoffset
    argTypes:
    - PlannerInfo*
    - ForeignScan*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1666
      start: 1585
    functionDepth: 1
    functionLinenumber: 1585
    functionLinenumberEnd: 1666
    functionName: set_foreignscan_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - pfree
    - build_tlist_index
    - offset_relid_set
    - NUM_EXEC_QUAL
    - fix_scan_list
    - fix_upper_expr
    - NUM_EXEC_TLIST
    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:1686,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1689,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1695,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1697,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1703,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1705,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1711,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1712,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1715,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1716,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1722,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1723,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1725,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1726,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1728,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1729,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1733,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1735,1
    - Dst: set_plan_refs
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1735,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1735,1
    - Dst: offset_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1738,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - root
    - cscan
    - rtoffset
    argTypes:
    - PlannerInfo*
    - CustomScan*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1739
      start: 1672
    functionDepth: 2
    functionLinenumber: 1672
    functionLinenumberEnd: 1739
    functionName: set_customscan_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - lfirst
    - pfree
    - build_tlist_index
    - foreach
    - offset_relid_set
    - NUM_EXEC_QUAL
    - fix_scan_list
    - set_plan_refs
    - fix_upper_expr
    - NUM_EXEC_TLIST
    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:1762,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1763,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1764,1
    - Dst: offset_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1767,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1768,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1770,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1775,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1780,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1783,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1797,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1804,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1806,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - root
    - part_prune_index
    - rtoffset
    argTypes:
    - PlannerInfo*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1807
      start: 1755
    functionDepth: 1
    functionLinenumber: 1755
    functionLinenumberEnd: 1807
    functionName: register_partpruneinfo
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached:
    - Assert
    - foreach
    - list_length
    - offset_relid_set
    - lappend
    - list_nth_node
    - fix_scan_list
    - lfirst
    - bms_add_member
    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:1775,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1780,1
    - Dst: fix_scan_list
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1783,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1797,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1801
      start: 1773
    functionDepth: 1
    functionLinenumber: 1773
    functionLinenumberEnd: 1801
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 77
    functionsReached:
    - fix_scan_list
    - lfirst
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: void foreach(l2, prune_infos)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1828,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1831,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1833,1
    - Dst: set_plan_refs
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1833,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1833,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1844,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1846,1
    - Dst: clean_up_removed_plan_level
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1849,1
    - Dst: set_dummy_tlist_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1857,1
    - Dst: offset_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1859,1
    - Dst: register_partpruneinfo
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1867,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1870,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1871,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - root
    - aplan
    - rtoffset
    argTypes:
    - PlannerInfo*
    - Append*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1874
      start: 1816
    functionDepth: 3
    functionLinenumber: 1816
    functionLinenumberEnd: 1874
    functionName: set_append_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - set_dummy_tlist_references
    - Assert
    - linitial
    - register_partpruneinfo
    - list_length
    - foreach
    - clean_up_removed_plan_level
    - offset_relid_set
    - set_plan_refs
    - lfirst
    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:1895,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1898,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1900,1
    - Dst: set_plan_refs
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1900,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1900,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1912,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1914,1
    - Dst: clean_up_removed_plan_level
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1917,1
    - Dst: set_dummy_tlist_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1925,1
    - Dst: offset_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1927,1
    - Dst: register_partpruneinfo
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1935,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1938,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1939,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - root
    - mplan
    - rtoffset
    argTypes:
    - PlannerInfo*
    - MergeAppend*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1942
      start: 1883
    functionDepth: 3
    functionLinenumber: 1883
    functionLinenumberEnd: 1942
    functionName: set_mergeappend_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - set_dummy_tlist_references
    - Assert
    - linitial
    - register_partpruneinfo
    - list_length
    - foreach
    - clean_up_removed_plan_level
    - offset_relid_set
    - set_plan_refs
    - lfirst
    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:1960,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1962,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1968,1
    - Dst: set_dummy_tlist_references
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1971,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1974,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - root
    - plan
    - rtoffset
    argTypes:
    - PlannerInfo*
    - Plan*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1975
      start: 1948
    functionDepth: 1
    functionLinenumber: 1948
    functionLinenumberEnd: 1975
    functionName: set_hash_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - set_dummy_tlist_references
    - Assert
    - build_tlist_index
    - 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_next_member
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1991,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:1992,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - relids
    - rtoffset
    argTypes:
    - Relids
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1994
      start: 1981
    functionDepth: 1
    functionLinenumber: 1981
    functionLinenumberEnd: 1994
    functionName: offset_relid_set
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 5
    functionsReached:
    - bms_next_member
    - bms_add_member
    linkageType: ''
    returnType: Relids
    signature: Relids offset_relid_set(Relids relids, int rtoffset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2006,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - var
    argTypes:
    - Var*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2010
      start: 2003
    functionDepth: 0
    functionLinenumber: 2003
    functionLinenumberEnd: 2010
    functionName: copyVar
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached:
    - palloc
    linkageType: ''
    returnType: Var
    signature: 'Var *

      copyVar(Var *var)'
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2029,1
    - Dst: record_plan_function_dependency
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2031,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2034,1
    - Dst: record_plan_function_dependency
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2036,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2039,1
    - Dst: record_plan_function_dependency
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2041,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2044,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2046,1
    - Dst: record_plan_function_dependency
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2047,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2050,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2052,1
    - Dst: record_plan_function_dependency
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2053,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2056,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2058,1
    - Dst: record_plan_function_dependency
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2059,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2062,1
    - Dst: set_sa_opfuncid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2066,1
    - Dst: record_plan_function_dependency
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2067,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2069,1
    - Dst: record_plan_function_dependency
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2070,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2072,1
    - Dst: record_plan_function_dependency
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2073,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2075,1
    - Dst: ISREGCLASSCONST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2080,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2082,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2083,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2085,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2092,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2099,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2101,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2101,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2104,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2104,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 45
    argCount: 2
    argNames:
    - root
    - node
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2110
      start: 2025
    functionDepth: 1
    functionLinenumber: 2025
    functionLinenumberEnd: 2110
    functionName: fix_expr_common
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached:
    - Assert
    - equal
    - set_sa_opfuncid
    - ISREGCLASSCONST
    - lappend_oid
    - lappend_int
    - IsA
    - foreach
    - DatumGetObjectId
    - OidIsValid
    - set_opfuncid
    - record_plan_function_dependency
    - lfirst_int
    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:2130,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2131,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2132,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2133,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2134,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2135,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2135,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2137,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - root
    - p
    argTypes:
    - PlannerInfo*
    - Param*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2138
      start: 2120
    functionDepth: 3
    functionLinenumber: 2120
    functionLinenumberEnd: 2138
    functionName: fix_param_node
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached:
    - list_nth
    - elog
    - copyObject
    - list_length
    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:2165,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2167,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2169,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - root
    - asplan
    - num_exec
    argTypes:
    - PlannerInfo*
    - AlternativeSubPlan*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2187
      start: 2151
    functionDepth: 1
    functionLinenumber: 2151
    functionLinenumberEnd: 2187
    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:2222,1
    - Dst: fix_scan_expr_walker
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2237,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: 2240
      start: 2207
    functionDepth: 1
    functionLinenumber: 2207
    functionLinenumberEnd: 2240
    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:2247,1
    - Dst: copyVar
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2249,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2251,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2257,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2258,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2259,1
    - Dst: IS_SPECIAL_VARNO
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2260,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2266,1
    - Dst: fix_param_node
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2267,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2268,1
    - Dst: find_minmax_agg_replacement_param
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2274,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2278,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2282,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2284,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2286,1
    - Dst: IS_SPECIAL_VARNO
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2286,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2290,1
    - Dst: fix_scan_expr_mutator
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2296,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2298,1
    - Dst: fix_scan_expr_mutator
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2299,1
    - Dst: fix_alternative_subplan
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2299,1
    - Dst: fix_expr_common
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2303,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2304,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - fix_scan_expr_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2305
      start: 2242
    functionDepth: 4
    functionLinenumber: 2242
    functionLinenumberEnd: 2305
    functionName: fix_scan_expr_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 2
    functionsReached:
    - copyVar
    - Assert
    - fix_alternative_subplan
    - fix_param_node
    - expression_tree_mutator
    - IsA
    - find_minmax_agg_replacement_param
    - copyObject
    - fix_expr_common
    - IS_SPECIAL_VARNO
    - fix_scan_expr_mutator
    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:2312,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2312,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2313,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2313,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2314,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2314,1
    - Dst: fix_expr_common
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2315,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2316,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - fix_scan_expr_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2317
      start: 2307
    functionDepth: 2
    functionLinenumber: 2307
    functionLinenumberEnd: 2317
    functionName: fix_scan_expr_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - Assert
    - IsA
    - fix_expr_common
    - 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:2335,1
    - Dst: build_tlist_index
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2336,1
    - Dst: fix_join_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2345,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2352,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2355,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2360,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2362,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2375,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2381,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2383,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2385,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2388,1
    - Dst: fix_join_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2392,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2399,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2401,1
    - Dst: fix_join_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2405,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2412,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2418,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2424,1
    - Dst: fix_join_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2437,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2444,1
    - Dst: fix_join_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2445,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2452,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2454,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2455,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 3
    argNames:
    - root
    - join
    - rtoffset
    argTypes:
    - PlannerInfo*
    - Join*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2456
      start: 2327
    functionDepth: 1
    functionLinenumber: 2327
    functionLinenumberEnd: 2456
    functionName: set_join_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - pfree
    - build_tlist_index
    - fix_join_expr
    - IsA
    - foreach
    - elog
    - NUM_EXEC_QUAL
    - fix_upper_expr
    - lfirst
    - 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:2484,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2494,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2499,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2500,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2503,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2504,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2509,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2511,1
    - Dst: search_indexed_tlist_for_sortgroupref
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2518,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2523,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2529,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2532,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2538,1
    - Dst: flatCopyTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2539,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2541,1
    - Dst: fix_upper_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2546,1
    - Dst: NUM_EXEC_QUAL
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2552,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2554,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - root
    - plan
    - rtoffset
    argTypes:
    - PlannerInfo*
    - Plan*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2555
      start: 2476
    functionDepth: 1
    functionLinenumber: 2476
    functionLinenumberEnd: 2555
    functionName: set_upper_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - pfree
    - build_tlist_index
    - remove_nulling_relids
    - bms_make_singleton
    - IsA
    - foreach
    - lappend
    - search_indexed_tlist_for_sortgroupref
    - NUM_EXEC_QUAL
    - fix_upper_expr
    - flatCopyTargetEntry
    - lfirst
    - NUM_EXEC_TLIST
    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:2567,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2567,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2567,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2577,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2579,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2582,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2584,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2584,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2593,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2595,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2598,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - root
    - plan
    argTypes:
    - PlannerInfo*
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2600
      start: 2564
    functionDepth: 1
    functionLinenumber: 2564
    functionLinenumberEnd: 2600
    functionName: set_param_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - Assert
    - IsA
    - lfirst_int
    - foreach
    - lfirst
    - bms_intersect
    - 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:2624,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2631,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2632,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2639,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2640,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2652,1
    - Dst: mark_partial_aggref
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2660,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2665,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2665,1
    - Dst: mark_partial_aggref
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2667,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2671,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2672
      start: 2619
    functionDepth: 2
    functionLinenumber: 2619
    functionLinenumberEnd: 2672
    functionName: convert_combining_aggrefs
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - makeTargetEntry
    - Assert
    - IsA
    - list_make1
    - copyObject
    - mark_partial_aggref
    - memcpy
    - makeNode
    - expression_tree_mutator
    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:2694,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2696,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2706,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2709,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2713,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2715,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2716,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2717,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2719,1
    - Dst: flatCopyTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2731,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2733,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - plan
    - rtoffset
    argTypes:
    - Plan*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2738
      start: 2687
    functionDepth: 1
    functionLinenumber: 2687
    functionLinenumberEnd: 2738
    functionName: set_dummy_tlist_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 4
    functionsReached:
    - exprType
    - makeVar
    - exprCollation
    - exprTypmod
    - IsA
    - foreach
    - lappend
    - flatCopyTargetEntry
    - lfirst
    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:2763,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2764,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2774,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2776,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2786,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - tlist
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2795
      start: 2754
    functionDepth: 1
    functionLinenumber: 2754
    functionLinenumberEnd: 2795
    functionName: build_tlist_index
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 7
    functionsReached:
    - palloc
    - IsA
    - lfirst
    - list_length
    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:2774,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2776,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2786,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2790
      start: 2772
    functionDepth: 1
    functionLinenumber: 2772
    functionLinenumberEnd: 2790
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 85
    functionsReached:
    - IsA
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, tlist)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2814,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2815,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2825,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2827,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2840,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - tlist
    - ignore_rel
    argTypes:
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2847
      start: 2805
    functionDepth: 1
    functionLinenumber: 2805
    functionLinenumberEnd: 2847
    functionName: build_tlist_index_other_vars
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached:
    - palloc
    - IsA
    - lfirst
    - list_length
    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:2825,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2827,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2840,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2842
      start: 2823
    functionDepth: 1
    functionLinenumber: 2823
    functionLinenumberEnd: 2842
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 85
    functionsReached:
    - IsA
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, tlist)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: copyVar
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2880,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2898,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2900,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2901,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2902,1
    - Dst: bmsToString
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2903,1
    - Dst: bmsToString
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2904,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: 2916
      start: 2863
    functionDepth: 1
    functionLinenumber: 2863
    functionLinenumberEnd: 2916
    functionName: search_indexed_tlist_for_var
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached:
    - copyVar
    - bmsToString
    - bms_is_subset
    - bms_equal
    - elog
    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:2935,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2937,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2939,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2954,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2956,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2957,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2958,1
    - Dst: bmsToString
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2959,1
    - Dst: bmsToString
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2960,1
    - Dst: makeVarFromTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2964,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: 2971
      start: 2928
    functionDepth: 1
    functionLinenumber: 2928
    functionLinenumberEnd: 2971
    functionName: search_indexed_tlist_for_phv
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached:
    - bmsToString
    - bms_is_subset
    - IsA
    - foreach
    - bms_equal
    - elog
    - makeVarFromTargetEntry
    - lfirst
    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:2994,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:2997,1
    - Dst: makeVarFromTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3003,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - node
    - itlist
    - newvarno
    argTypes:
    - Expr*
    - indexed_tlist*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3009
      start: 2981
    functionDepth: 1
    functionLinenumber: 2981
    functionLinenumberEnd: 3009
    functionName: search_indexed_tlist_for_non_var
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached:
    - tlist_member
    - IsA
    - makeVarFromTargetEntry
    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:3029,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3031,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3042,1
    - Dst: makeVarFromTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3047,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: 3054
      start: 3021
    functionDepth: 1
    functionLinenumber: 3021
    functionLinenumberEnd: 3054
    functionName: search_indexed_tlist_for_sortgroupref
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - makeVarFromTargetEntry
    - equal
    - 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:3118,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: 3119
      start: 3099
    functionDepth: 1
    functionLinenumber: 3099
    functionLinenumberEnd: 3119
    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:3128,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3141,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3143,1
    - Dst: search_indexed_tlist_for_var
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3150,1
    - Dst: search_indexed_tlist_for_var
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3162,1
    - Dst: copyVar
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3174,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3182,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3184,1
    - Dst: search_indexed_tlist_for_phv
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3191,1
    - Dst: search_indexed_tlist_for_phv
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3200,1
    - Dst: fix_join_expr_mutator
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3210,1
    - Dst: search_indexed_tlist_for_non_var
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3215,1
    - Dst: search_indexed_tlist_for_non_var
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3223,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3230,1
    - Dst: fix_param_node
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3231,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3232,1
    - Dst: fix_join_expr_mutator
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3233,1
    - Dst: fix_alternative_subplan
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3233,1
    - Dst: fix_expr_common
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3237,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3238,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 58
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - fix_join_expr_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3239
      start: 3121
    functionDepth: 4
    functionLinenumber: 3121
    functionLinenumberEnd: 3239
    functionName: fix_join_expr_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 2
    functionsReached:
    - copyVar
    - search_indexed_tlist_for_non_var
    - fix_alternative_subplan
    - search_indexed_tlist_for_var
    - fix_param_node
    - expression_tree_mutator
    - IsA
    - elog
    - fix_expr_common
    - fix_join_expr_mutator
    - search_indexed_tlist_for_phv
    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:3290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 7
    argNames:
    - root
    - node
    - subplan_itlist
    - newvarno
    - rtoffset
    - nrm_match
    - num_exec
    argTypes:
    - PlannerInfo*
    - Node*
    - indexed_tlist*
    - int
    - int
    - NullingRelsMatch
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3291
      start: 3273
    functionDepth: 1
    functionLinenumber: 3273
    functionLinenumberEnd: 3291
    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
      \  NullingRelsMatch nrm_match,\n\t\t\t   double num_exec)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3300,1
    - Dst: search_indexed_tlist_for_var
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3304,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3310,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3313,1
    - Dst: search_indexed_tlist_for_phv
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3320,1
    - Dst: fix_upper_expr_mutator
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3329,1
    - Dst: search_indexed_tlist_for_non_var
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3334,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3341,1
    - Dst: fix_param_node
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3342,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3343,1
    - Dst: find_minmax_agg_replacement_param
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3349,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3353,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3357,1
    - Dst: fix_upper_expr_mutator
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3358,1
    - Dst: fix_alternative_subplan
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3358,1
    - Dst: fix_expr_common
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3362,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3363,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - fix_upper_expr_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3364
      start: 3293
    functionDepth: 4
    functionLinenumber: 3293
    functionLinenumberEnd: 3364
    functionName: fix_upper_expr_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 2
    functionsReached:
    - fix_upper_expr_mutator
    - search_indexed_tlist_for_non_var
    - fix_alternative_subplan
    - search_indexed_tlist_for_var
    - fix_param_node
    - IsA
    - elog
    - find_minmax_agg_replacement_param
    - copyObject
    - fix_expr_common
    - expression_tree_mutator
    - search_indexed_tlist_for_phv
    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:3417,1
    - Dst: fix_join_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3419,1
    - Dst: NUM_EXEC_TLIST
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3426,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3428,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: 3431
      start: 3394
    functionDepth: 2
    functionLinenumber: 3394
    functionLinenumberEnd: 3431
    functionName: set_returning_clause_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - fix_join_expr
    - build_tlist_index_other_vars
    - NUM_EXEC_TLIST
    - pfree
    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:3445,1
    - Dst: search_indexed_tlist_for_non_var
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3449,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3454,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3457,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - fix_windowagg_cond_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3460
      start: 3438
    functionDepth: 2
    functionLinenumber: 3438
    functionLinenumberEnd: 3460
    functionName: fix_windowagg_condition_expr_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached:
    - elog
    - search_indexed_tlist_for_non_var
    - expression_tree_mutator
    - IsA
    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:3479,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - root
    - runcondition
    - subplan_itlist
    argTypes:
    - PlannerInfo*
    - List*
    - indexed_tlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3481
      start: 3468
    functionDepth: 3
    functionLinenumber: 3468
    functionLinenumberEnd: 3481
    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:3497,1
    - Dst: fix_windowagg_condition_expr
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3499,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3501,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - root
    - runcondition
    - plan
    argTypes:
    - PlannerInfo*
    - List*
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3504
      start: 3489
    functionDepth: 4
    functionLinenumber: 3489
    functionLinenumberEnd: 3504
    functionName: set_windowagg_runcondition_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - pfree
    - fix_windowagg_condition_expr
    - build_tlist_index
    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:3520,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3522,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3525,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3527,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3530,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - root
    - aggref
    argTypes:
    - PlannerInfo*
    - Aggref*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3535
      start: 3516
    functionDepth: 1
    functionLinenumber: 3516
    functionLinenumberEnd: 3535
    functionName: find_minmax_agg_replacement_param
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 3
    functionsReached:
    - equal
    - linitial
    - foreach
    - list_length
    - lfirst
    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:3562,1
    - Dst: GetSysCacheHashValue1
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3570,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3571,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3573,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - root
    - funcid
    argTypes:
    - PlannerInfo*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3575
      start: 3549
    functionDepth: 1
    functionLinenumber: 3549
    functionLinenumberEnd: 3575
    functionName: record_plan_function_dependency
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 1
    functionsReached:
    - makeNode
    - lappend
    - ObjectIdGetDatum
    - GetSysCacheHashValue1
    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:3598,1
    - Dst: GetSysCacheHashValue1
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3606,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3607,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3609,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - root
    - typid
    argTypes:
    - PlannerInfo*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3611
      start: 3589
    functionDepth: 1
    functionLinenumber: 3589
    functionLinenumberEnd: 3611
    functionName: record_plan_type_dependency
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached:
    - makeNode
    - lappend
    - ObjectIdGetDatum
    - GetSysCacheHashValue1
    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:3640,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3647,1
    - Dst: extract_query_dependencies_walker
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3651,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 4
    argNames:
    - query
    - relationOids
    - invalItems
    - hasRowSecurity
    argTypes:
    - Node*
    - List**
    - List**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3656
      start: 3630
    functionDepth: 1
    functionLinenumber: 3630
    functionLinenumberEnd: 3656
    functionName: extract_query_dependencies
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 0
    functionsReached:
    - MemSet
    - extract_query_dependencies_walker
    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:3671,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3671,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3672,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3685,1
    - Dst: extract_query_dependencies_walker
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3690,1
    - Dst: extract_query_dependencies_walker
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3692,1
    - Dst: UtilityContainsQuery
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3702,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3712,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3714,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3717,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3718,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3720,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3724,1
    - Dst: fix_expr_common
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3728,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/plan/setrefs.c:3729,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3731
      start: 3666
    functionDepth: 2
    functionLinenumber: 3666
    functionLinenumberEnd: 3731
    functionName: extract_query_dependencies_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/setrefs.c
    functionUses: 3
    functionsReached:
    - Assert
    - extract_query_dependencies_walker
    - expression_tree_walker
    - UtilityContainsQuery
    - lappend_oid
    - IsA
    - foreach
    - OidIsValid
    - fix_expr_common
    - lfirst
    - query_tree_walker
    linkageType: ''
    returnType: bool
    signature: bool extract_query_dependencies_walker(Node *node, PlannerInfo *context)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: setup_simple_rel_arrays
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:85,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:93,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:94,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:96,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:98,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:103,1
    - Dst: build_simple_rel
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:107,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:126,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:136,1
    - Dst: create_group_result_path
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:137,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:142,1
    - Dst: add_base_rels_to_query
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:170,1
    - Dst: remove_useless_groupby_columns
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:173,1
    - Dst: build_base_rel_tlists
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:185,1
    - Dst: find_placeholders_in_jointree
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:187,1
    - Dst: find_lateral_references
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:189,1
    - Dst: deconstruct_jointree
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:191,1
    - Dst: reconsider_outer_join_clauses
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:198,1
    - Dst: generate_base_implied_equalities
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:205,1
    - Dst: fix_placeholder_input_needed_levels
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:221,1
    - Dst: remove_useless_joins
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:228,1
    - Dst: reduce_unique_semijoins
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:234,1
    - Dst: remove_useless_self_joins
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:239,1
    - Dst: add_placeholders_to_base_rels
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:246,1
    - Dst: create_lateral_join_info
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:252,1
    - Dst: match_foreign_keys_to_quals
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:260,1
    - Dst: extract_restriction_or_clauses
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:266,1
    - Dst: add_other_rels_to_query
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:276,1
    - Dst: distribute_row_identity_vars
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:283,1
    - Dst: make_one_rel
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:288,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/planmain.c:293,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 55
    argCount: 3
    argNames:
    - root
    - qp_callback
    - qp_extra
    argTypes:
    - PlannerInfo*
    - query_pathkeys_callback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 296
    functionName: query_planner
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/planmain.c
    functionUses: 5
    functionsReached:
    - create_lateral_join_info
    - add_path
    - add_other_rels_to_query
    - list_length
    - fix_placeholder_input_needed_levels
    - set_cheapest
    - add_base_rels_to_query
    - match_foreign_keys_to_quals
    - remove_useless_self_joins
    - setup_simple_rel_arrays
    - remove_useless_groupby_columns
    - build_base_rel_tlists
    - find_placeholders_in_jointree
    - reconsider_outer_join_clauses
    - linitial
    - reduce_unique_semijoins
    - extract_restriction_or_clauses
    - create_group_result_path
    - IsA
    - distribute_row_identity_vars
    - is_parallel_safe
    - add_placeholders_to_base_rels
    - elog
    - make_one_rel
    - deconstruct_jointree
    - find_lateral_references
    - Assert
    - remove_useless_joins
    - build_simple_rel
    - generate_base_implied_equalities
    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:99,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:101,1
    - Dst: join_is_removable
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:106,1
    - Dst: bms_singleton_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:114,1
    - Dst: remove_leftjoinrel_from_query
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:116,1
    - Dst: remove_rel_from_joinlist
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:120,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:122,1
    - Dst: list_delete_cell
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:129,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - root
    - joinlist
    argTypes:
    - PlannerInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 141
    functionName: remove_useless_joins
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached:
    - remove_rel_from_joinlist
    - join_is_removable
    - bms_singleton_member
    - remove_leftjoinrel_from_query
    - foreach
    - list_delete_cell
    - elog
    - lfirst
    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:172,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:183,1
    - Dst: rel_supports_distinctness
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:190,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:194,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:195,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:196,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:197,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:214,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:227,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:229,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:231,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:233,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:235,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:237,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:244,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:247,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:247,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:259,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:261,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:280,1
    - Dst: clause_sides_match_join
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:292,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:297,1
    - Dst: rel_is_distinct_for
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:304,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 46
    argCount: 2
    argNames:
    - root
    - sjinfo
    argTypes:
    - PlannerInfo*
    - SpecialJoinInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 154
    functionDepth: 2
    functionLinenumber: 154
    functionLinenumberEnd: 312
    functionName: join_is_removable
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached:
    - bms_overlap
    - pull_varnos
    - Assert
    - bms_is_subset
    - clause_sides_match_join
    - bms_copy
    - bms_get_singleton_member
    - RINFO_IS_PUSHED_DOWN
    - rel_is_distinct_for
    - foreach
    - find_base_rel
    - bms_union
    - lappend
    - bms_add_member
    - bms_is_member
    - lfirst
    - rel_supports_distinctness
    linkageType: ''
    returnType: bool
    signature: bool join_is_removable(PlannerInfo *root, SpecialJoinInfo *sjinfo)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:336,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:337,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:341,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:343,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:355,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:357,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:365,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:366,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:367,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:368,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:370,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:371,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:372,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:373,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:377,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:380,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:382,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:384,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:386,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:389,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:391,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:393,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:395,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:400,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:402,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:426,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:428,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:430,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:430,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:432,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:433,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:434,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:441,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:449,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:451,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:453,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:453,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:455,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:456,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:460,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:466,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:469,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:471,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:473,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:473,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:475,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:478,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:485,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:487,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:489,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:490,1
    - Dst: remove_rel_from_eclass
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:491,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:517,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:523,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:524,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:530,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 70
    argCount: 5
    argNames:
    - root
    - rel
    - subst
    - sjinfo
    - joinrelids
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - int
    - SpecialJoinInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 324
    functionDepth: 1
    functionLinenumber: 324
    functionLinenumberEnd: 533
    functionName: remove_rel_from_query
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 0
    functionsReached:
    - Assert
    - adjust_relid_set
    - bms_del_member
    - ChangeVarNodesExtended
    - bms_copy
    - bms_is_subset
    - bms_is_empty
    - bms_make_singleton
    - foreach
    - bms_is_member
    - foreach_delete_current
    - bms_difference
    - lfirst
    - remove_rel_from_eclass
    linkageType: ''
    returnType: void
    signature: "void remove_rel_from_query(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t
      \ int subst, SpecialJoinInfo *sjinfo,\n\t\t\t\t\t  Relids joinrelids)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:547,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:555,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:556,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:557,1
    - Dst: remove_rel_from_query
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:559,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:577,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:579,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:587,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:590,1
    - Dst: remove_join_clause_from_rels
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:592,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:594,1
    - Dst: remove_rel_from_restrictinfo
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:603,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:611,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:614,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:614,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:615,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:615,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:619,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:636,1
    - Dst: rebuild_placeholder_attr_needed
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:642,1
    - Dst: rebuild_joinclause_attr_needed
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:643,1
    - Dst: rebuild_eclass_attr_needed
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:644,1
    - Dst: rebuild_lateral_attr_needed
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:645,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 3
    argNames:
    - root
    - relid
    - sjinfo
    argTypes:
    - PlannerInfo*
    - int
    - SpecialJoinInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 543
    functionDepth: 2
    functionLinenumber: 543
    functionLinenumberEnd: 646
    functionName: remove_leftjoinrel_from_query
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached:
    - list_copy
    - bms_union
    - rebuild_eclass_attr_needed
    - pfree
    - remove_rel_from_restrictinfo
    - RINFO_IS_PUSHED_DOWN
    - remove_join_clause_from_rels
    - find_base_rel
    - bms_is_member
    - pull_varnos
    - lfirst
    - bms_add_member
    - Assert
    - rebuild_lateral_attr_needed
    - bms_add_members
    - remove_rel_from_query
    - rebuild_joinclause_attr_needed
    - distribute_restrictinfo_to_rels
    - rebuild_placeholder_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:590,1
    - Dst: remove_join_clause_from_rels
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:592,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:594,1
    - Dst: remove_rel_from_restrictinfo
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:603,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:611,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:614,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:614,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:615,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:615,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:619,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 588
    functionDepth: 1
    functionLinenumber: 588
    functionLinenumberEnd: 621
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 92
    functionsReached:
    - lfirst
    - remove_rel_from_restrictinfo
    - Assert
    - RINFO_IS_PUSHED_DOWN
    - remove_join_clause_from_rels
    - distribute_restrictinfo_to_rels
    - bms_is_member
    - pull_varnos
    linkageType: ''
    returnType: void
    signature: void foreach(l, joininfos)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:666,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:667,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:668,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:670,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:671,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:672,1
    - Dst: restriction_is_or_clause
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:675,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:679,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:679,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:680,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:682,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:685,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:692,1
    - Dst: remove_rel_from_restrictinfo
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:694,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:699,1
    - Dst: remove_rel_from_restrictinfo
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:701,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 3
    argNames:
    - rinfo
    - relid
    - ojrelid
    argTypes:
    - RestrictInfo*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 656
    functionDepth: 2
    functionLinenumber: 656
    functionLinenumberEnd: 705
    functionName: remove_rel_from_restrictinfo
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 3
    functionsReached:
    - Assert
    - remove_rel_from_restrictinfo
    - bms_del_member
    - bms_copy
    - lfirst_node
    - is_orclause
    - foreach
    - castNode
    - is_andclause
    - restriction_is_or_clause
    - lfirst
    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:692,1
    - Dst: remove_rel_from_restrictinfo
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:694,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 690
    functionDepth: 3
    functionLinenumber: 690
    functionLinenumberEnd: 695
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 93
    functionsReached:
    - remove_rel_from_restrictinfo
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, andargs)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:724,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:726,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:734,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:741,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:743,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:745,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:746,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:749,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:750,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:752,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:754,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:755,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:760,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:762,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:765,1
    - Dst: remove_rel_from_restrictinfo
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:768,1
    - Dst: ec_clear_derived_clauses
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:776,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 4
    argNames:
    - ec
    - sjinfo
    - relid
    - subst
    argTypes:
    - EquivalenceClass*
    - SpecialJoinInfo*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 717
    functionDepth: 3
    functionLinenumber: 717
    functionLinenumberEnd: 777
    functionName: remove_rel_from_eclass
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached:
    - Assert
    - adjust_relid_set
    - ChangeVarNodesExtended
    - remove_rel_from_restrictinfo
    - bms_is_empty
    - foreach
    - bms_is_member
    - foreach_delete_current
    - lfirst
    - ec_clear_derived_clauses
    linkageType: ''
    returnType: void
    signature: "void remove_rel_from_eclass(EquivalenceClass *ec, SpecialJoinInfo
      *sjinfo,\n\t\t\t\t\t   int relid, int subst)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:796,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:798,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:805,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:807,1
    - Dst: remove_rel_from_joinlist
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:812,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:816,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:820,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:821,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - joinlist
    - relid
    - nremoved
    argTypes:
    - List*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 788
    functionDepth: 1
    functionLinenumber: 788
    functionLinenumberEnd: 826
    functionName: remove_rel_from_joinlist
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 2
    functionsReached:
    - nodeTag
    - remove_rel_from_joinlist
    - IsA
    - elog
    - lappend
    - lfirst
    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:796,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:798,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:805,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:807,1
    - Dst: remove_rel_from_joinlist
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:812,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:816,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:820,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:821,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 794
    functionDepth: 2
    functionLinenumber: 794
    functionLinenumberEnd: 823
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 94
    functionsReached:
    - nodeTag
    - remove_rel_from_joinlist
    - IsA
    - elog
    - lappend
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(jl, joinlist)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:850,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:852,1
    - Dst: bms_get_singleton_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:865,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:868,1
    - Dst: rel_supports_distinctness
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:875,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:879,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:880,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:888,1
    - Dst: generate_join_implied_equalities
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:888,1
    - Dst: innerrel_is_unique
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:896,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:902,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 842
    functionDepth: 1
    functionLinenumber: 842
    functionLinenumberEnd: 904
    functionName: reduce_unique_semijoins
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached:
    - Assert
    - innerrel_is_unique
    - list_concat
    - bms_get_singleton_member
    - foreach
    - find_base_rel
    - bms_union
    - generate_join_implied_equalities
    - foreach_delete_current
    - lfirst
    - rel_supports_distinctness
    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:935,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:937,1
    - Dst: query_supports_distinctness
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:948,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 918
    functionDepth: 1
    functionLinenumber: 918
    functionLinenumberEnd: 953
    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_ext
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:996,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1019,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1031,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1035,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1037,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1044,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1051,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1055,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1056,1
    - Dst: query_is_distinct_for
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1059,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 23
    argCount: 4
    argNames:
    - root
    - rel
    - clause_list
    - extra_clauses
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1063
      start: 978
    functionDepth: 2
    functionLinenumber: 978
    functionLinenumberEnd: 1063
    functionName: rel_is_distinct_for
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached:
    - query_is_distinct_for
    - lfirst_node
    - lappend_oid
    - lappend_int
    - IsA
    - castNode
    - get_rightop
    - get_leftop
    - relation_has_unique_index_ext
    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:1019,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1031,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1035,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1037,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1044,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1051,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1055,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1056,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1017
    functionDepth: 2
    functionLinenumber: 1017
    functionLinenumberEnd: 1057
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 96
    functionsReached:
    - lfirst_node
    - lappend_oid
    - lappend_int
    - IsA
    - castNode
    - get_rightop
    - get_leftop
    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: 1094
      start: 1077
    functionDepth: 0
    functionLinenumber: 1077
    functionLinenumberEnd: 1094
    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: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1121,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1121,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1121,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1131,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1133,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1134,1
    - Dst: distinct_col_search
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1137,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1138,1
    - Dst: equality_ops_are_compatible
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1139,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1162,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1164,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1165,1
    - Dst: distinct_col_search
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1168,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1169,1
    - Dst: equality_ops_are_compatible
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1170,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1191,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1192,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1213,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1215,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1222,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1223,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1225,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1232,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1233,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1234,1
    - Dst: distinct_col_search
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1236,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1237,1
    - Dst: equality_ops_are_compatible
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1238,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 51
    argCount: 3
    argNames:
    - query
    - colnos
    - opids
    argTypes:
    - Query*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1255
      start: 1115
    functionDepth: 2
    functionLinenumber: 1115
    functionLinenumberEnd: 1255
    functionName: query_is_distinct_for
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached:
    - Assert
    - distinct_col_search
    - linitial
    - list_head
    - lnext
    - foreach
    - list_length
    - castNode
    - get_sortgroupclause_tle
    - OidIsValid
    - equality_ops_are_compatible
    - lfirst
    linkageType: ''
    returnType: bool
    signature: bool query_is_distinct_for(Query *query, List *colnos, List *opids)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1272,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1273,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - colno
    - colnos
    - opids
    argTypes:
    - int
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1264
    functionDepth: 1
    functionLinenumber: 1264
    functionLinenumberEnd: 1276
    functionName: distinct_col_search
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached:
    - lfirst_oid
    - lfirst_int
    linkageType: ''
    returnType: Oid
    signature: Oid distinct_col_search(int colno, List *colnos, List *opids)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1272,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1273,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1274
      start: 1270
    functionDepth: 1
    functionLinenumber: 1270
    functionLinenumberEnd: 1274
    functionName: forboth
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 5
    functionsReached:
    - lfirst_oid
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void forboth(lc1, colnos, lc2, opids)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: innerrel_is_unique_ext
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1313,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: 1315
      start: 1304
    functionDepth: 1
    functionLinenumber: 1304
    functionLinenumberEnd: 1315
    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:1350,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1365,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1367,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1369,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1370,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1383,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1385,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1387,1
    - Dst: is_innerrel_unique_for
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1392,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1406,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1407,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1408,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1411,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1413,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1440,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1442,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1443,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1444,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: 1449
      start: 1326
    functionDepth: 2
    functionLinenumber: 1326
    functionLinenumberEnd: 1449
    functionName: innerrel_is_unique_ext
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - bms_is_subset
    - is_innerrel_unique_for
    - bms_copy
    - foreach
    - bms_equal
    - lappend
    - makeNode
    - lfirst
    - rel_supports_distinctness
    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:1477,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1483,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1484,1
    - Dst: clause_sides_match_join
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1496,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1501,1
    - Dst: rel_is_distinct_for
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1505,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: 1506
      start: 1456
    functionDepth: 3
    functionLinenumber: 1456
    functionLinenumberEnd: 1506
    functionName: is_innerrel_unique_for
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached:
    - clause_sides_match_join
    - RINFO_IS_PUSHED_DOWN
    - rel_is_distinct_for
    - lappend
    - IS_OUTER_JOIN
    - lfirst
    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:1477,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1483,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1484,1
    - Dst: clause_sides_match_join
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1496,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1501,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1502
      start: 1475
    functionDepth: 2
    functionLinenumber: 1475
    functionLinenumberEnd: 1502
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 98
    functionsReached:
    - clause_sides_match_join
    - RINFO_IS_PUSHED_DOWN
    - lappend
    - IS_OUTER_JOIN
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, restrictlist)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1541,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1543,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1547,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1549,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1553,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1554,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1557,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1562,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1565,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1573,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1576,1
    - Dst: ec_clear_derived_clauses
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1579,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1582,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1586,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1588,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1592,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1602,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1605,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1613,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1616,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1618,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 42
    argCount: 3
    argNames:
    - ec
    - from
    - to
    argTypes:
    - EquivalenceClass*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1619
      start: 1530
    functionDepth: 1
    functionLinenumber: 1530
    functionLinenumberEnd: 1619
    functionName: update_eclasses
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 0
    functionsReached:
    - Assert
    - adjust_relid_set
    - ChangeVarNodesExtended
    - foreach_node
    - equal
    - ec_clear_derived_clauses
    - lappend
    - bms_is_member
    - list_free
    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:1562,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1565,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1570
      start: 1560
    functionDepth: 1
    functionLinenumber: 1560
    functionLinenumberEnd: 1570
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    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:1602,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1605,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1610
      start: 1600
    functionDepth: 1
    functionLinenumber: 1600
    functionLinenumberEnd: 1610
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    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:1637,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - RestrictInfo*
    - RestrictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1641
      start: 1630
    functionDepth: 1
    functionLinenumber: 1630
    functionLinenumberEnd: 1641
    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:1666,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1666,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1668,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1670,1
    - Dst: restrict_infos_logically_equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1677,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1684,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: 1686
      start: 1656
    functionDepth: 2
    functionLinenumber: 1656
    functionLinenumberEnd: 1686
    functionName: add_non_redundant_clauses
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 0
    functionsReached:
    - Assert
    - foreach_node
    - bms_equal
    - distribute_restrictinfo_to_rels
    - bms_is_member
    - 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:1666,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1666,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1668,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1670,1
    - Dst: restrict_infos_logically_equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1677,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1684,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1685
      start: 1662
    functionDepth: 2
    functionLinenumber: 1662
    functionLinenumberEnd: 1685
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 3
    functionsReached:
    - Assert
    - foreach_node
    - bms_equal
    - distribute_restrictinfo_to_rels
    - bms_is_member
    - 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:1703,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1707,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1714,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1722,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1723,1
    - Dst: ChangeVarNodesWalkExpression
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1727,1
    - Dst: ChangeVarNodesWalkExpression
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1728,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1730,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1740,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1741,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1745,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1747,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1754,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1757,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1759,1
    - Dst: bms_get_singleton_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1762,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1764,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1769,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1770,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1779,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1781,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1792,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - ChangeVarNodes_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1798
      start: 1700
    functionDepth: 2
    functionLinenumber: 1700
    functionLinenumberEnd: 1798
    functionName: replace_relid_callback
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 0
    functionsReached:
    - Assert
    - adjust_relid_set
    - equal
    - bms_get_singleton_member
    - IsA
    - get_leftop
    - get_rightop
    - ChangeVarNodesWalkExpression
    - bms_is_member
    - bms_membership
    - makeNode
    - bms_num_members
    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:1835,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1836,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1844,1
    - Dst: remove_join_clause_from_rels
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1847,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1848,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1851,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1852,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1854,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1863,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1865,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1867,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1870,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1871,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1873,1
    - Dst: add_non_redundant_clauses
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1879,1
    - Dst: add_non_redundant_clauses
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1881,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1884,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1885,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1894,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1896,1
    - Dst: update_eclasses
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1898,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1899,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1906,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1908,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1910,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1912,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1913,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1920,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1922,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1938,1
    - Dst: list_delete_ptr
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1940,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1945,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1955,1
    - Dst: remove_rel_from_query
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1959,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1962,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1964,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1968,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1969,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1984,1
    - Dst: rebuild_placeholder_attr_needed
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1990,1
    - Dst: rebuild_joinclause_attr_needed
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1991,1
    - Dst: rebuild_eclass_attr_needed
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1992,1
    - Dst: rebuild_lateral_attr_needed
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1993,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: 1994
      start: 1824
    functionDepth: 3
    functionLinenumber: 1824
    functionLinenumberEnd: 1994
    functionName: remove_self_join_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 0
    functionsReached:
    - list_copy
    - rebuild_eclass_attr_needed
    - add_non_redundant_clauses
    - ChangeVarNodesExtended
    - pfree
    - list_concat
    - foreach_node
    - remove_join_clause_from_rels
    - foreach
    - list_member
    - bms_next_member
    - list_delete_ptr
    - update_eclasses
    - list_nth
    - lappend
    - lfirst
    - list_free
    - bms_add_member
    - Assert
    - adjust_relid_set
    - rebuild_lateral_attr_needed
    - bms_add_members
    - remove_rel_from_query
    - rebuild_joinclause_attr_needed
    - rebuild_placeholder_attr_needed
    - bms_membership
    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:1847,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1848,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1851,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1852,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:1854,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1855
      start: 1845
    functionDepth: 1
    functionLinenumber: 1845
    functionLinenumberEnd: 1855
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 4
    functionsReached:
    - bms_membership
    - ChangeVarNodesExtended
    - lappend
    - remove_join_clause_from_rels
    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:2020,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2021,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2022,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2024,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2030,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2030,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2032,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2036,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2037,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2037,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2039,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2041,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2049,1
    - Dst: bms_singleton_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2050,1
    - Dst: bms_singleton_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2051,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2054,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2055,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2057,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: 2062
      start: 2005
    functionDepth: 2
    functionLinenumber: 2005
    functionLinenumberEnd: 2062
    functionName: split_selfjoin_quals
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 0
    functionsReached:
    - ChangeVarNodesExtended
    - equal
    - bms_singleton_member
    - IsA
    - list_length
    - get_leftop
    - get_rightop
    - lappend
    - copyObject
    - bms_membership
    - bms_num_members
    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:2020,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2021,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2022,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2024,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2030,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2030,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2032,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2036,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2037,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2037,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2039,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2041,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2049,1
    - Dst: bms_singleton_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2050,1
    - Dst: bms_singleton_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2051,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2054,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2055,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2057,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2058
      start: 2012
    functionDepth: 2
    functionLinenumber: 2012
    functionLinenumberEnd: 2058
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 4
    functionsReached:
    - ChangeVarNodesExtended
    - equal
    - bms_singleton_member
    - IsA
    - list_length
    - get_leftop
    - get_rightop
    - lappend
    - copyObject
    - bms_membership
    - bms_num_members
    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:2081,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2084,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2084,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2085,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2087,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2088,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2091,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2091,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2092,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2093,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2093,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2094,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2100,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2109,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2109,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2111,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2112,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2112,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2113,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2114,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2114,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2116,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2116,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 4
    argNames:
    - root
    - outer
    - uclauses
    - relid
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2128
      start: 2070
    functionDepth: 2
    functionLinenumber: 2070
    functionLinenumberEnd: 2128
    functionName: match_unique_clauses
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 0
    functionsReached:
    - Assert
    - ChangeVarNodesExtended
    - equal
    - foreach_node
    - bms_is_empty
    - get_rightop
    - get_leftop
    - copyObject
    - is_opclause
    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:2081,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2084,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2084,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2085,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2087,1
    - Dst: ChangeVarNodesExtended
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2088,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2091,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2091,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2092,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2093,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2093,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2094,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2100,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2109,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2109,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2111,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2112,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2112,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2113,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2114,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2114,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2116,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2116,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2125
      start: 2074
    functionDepth: 2
    functionLinenumber: 2074
    functionLinenumberEnd: 2125
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 6
    functionsReached:
    - Assert
    - ChangeVarNodesExtended
    - equal
    - foreach_node
    - bms_is_empty
    - get_rightop
    - get_leftop
    - copyObject
    - is_opclause
    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:2143,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2149,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2163,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2171,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2173,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2175,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2176,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2177,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2178,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2193,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2195,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2199,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2204,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2218,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2219,1
    - Dst: generate_join_implied_equalities
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2231,1
    - Dst: split_selfjoin_quals
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2242,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2245,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2245,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2246,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2246,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2254,1
    - Dst: innerrel_is_unique_ext
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2263,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2265,1
    - Dst: match_unique_clauses
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2280,1
    - Dst: remove_self_join_rel
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2287,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2289,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 45
    argCount: 2
    argNames:
    - root
    - relids
    argTypes:
    - PlannerInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2297
      start: 2136
    functionDepth: 4
    functionLinenumber: 2136
    functionLinenumberEnd: 2297
    functionName: remove_self_joins_one_group
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 0
    functionsReached:
    - Assert
    - list_concat
    - innerrel_is_unique_ext
    - match_unique_clauses
    - remove_self_join_rel
    - split_selfjoin_quals
    - foreach
    - list_length
    - generate_join_implied_equalities
    - bms_is_member
    - bms_next_member
    - lfirst
    - bms_add_member
    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:2316,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2318,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2337,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2337,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2338,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2341,1
    - Dst: remove_self_joins_recurse
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2344,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2348,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2349,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2352,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2362,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2366,1
    - Dst: qsort
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2373,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2398,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2401,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2411,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2411,1
    - Dst: remove_self_joins_one_group
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2412,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2413,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2414,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2415,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2416,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2417,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2418,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2423,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2429,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2429,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 49
    argCount: 3
    argNames:
    - root
    - joinlist
    - toRemove
    argTypes:
    - PlannerInfo*
    - List*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2432
      start: 2303
    functionDepth: 5
    functionLinenumber: 2303
    functionLinenumberEnd: 2432
    functionName: remove_self_joins_recurse
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached:
    - bms_overlap
    - bms_num_members
    - bms_is_empty
    - bms_next_member
    - bms_free
    - nodeTag
    - qsort
    - bms_del_member
    - bms_del_members
    - IsA
    - remove_self_joins_one_group
    - elog
    - bms_is_member
    - palloc
    - lfirst
    - bms_add_member
    - Assert
    - bms_add_members
    - remove_self_joins_recurse
    - bms_membership
    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:2316,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2318,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2337,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2337,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2338,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2341,1
    - Dst: remove_self_joins_recurse
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2344,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2348,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2349,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2350
      start: 2314
    functionDepth: 6
    functionLinenumber: 2314
    functionLinenumberEnd: 2350
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 100
    functionsReached:
    - nodeTag
    - Assert
    - IsA
    - elog
    - remove_self_joins_recurse
    - bms_is_member
    - lfirst
    - bms_add_member
    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: 2447
      start: 2437
    functionDepth: 0
    functionLinenumber: 2437
    functionLinenumberEnd: 2447
    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:2491,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2491,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2491,1
    - Dst: remove_self_joins_recurse
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2498,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2500,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2503,1
    - Dst: remove_rel_from_joinlist
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2507,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/analyzejoins.c:2509,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 2
    argNames:
    - root
    - joinlist
    argTypes:
    - PlannerInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2514
      start: 2484
    functionDepth: 6
    functionLinenumber: 2484
    functionLinenumberEnd: 2514
    functionName: remove_useless_self_joins
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/analyzejoins.c
    functionUses: 1
    functionsReached:
    - remove_rel_from_joinlist
    - linitial
    - IsA
    - list_length
    - unlikely
    - elog
    - remove_self_joins_recurse
    - bms_next_member
    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:342,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:349,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:358,1
    - Dst: apply_tlist_labeling
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:359,1
    - Dst: SS_attach_initplans
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:368,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:372,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 381
    functionName: create_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 3
    functionsReached:
    - Assert
    - create_plan_recurse
    - IsA
    - SS_attach_initplans
    - elog
    - apply_tlist_labeling
    linkageType: ''
    returnType: Plan
    signature: 'Plan *

      create_plan(PlannerInfo *root, Path *best_path)'
  - BBCount: 45
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:393,1
    - Dst: create_scan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:413,1
    - Dst: create_join_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:418,1
    - Dst: create_append_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:422,1
    - Dst: create_merge_append_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:427,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:432,1
    - Dst: create_projection_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:434,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:438,1
    - Dst: create_minmaxagg_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:440,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:443,1
    - Dst: create_group_result_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:445,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:451,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:451,1
    - Dst: create_scan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:452,1
    - Dst: create_project_set_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:456,1
    - Dst: create_material_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:460,1
    - Dst: create_memoize_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:465,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:470,1
    - Dst: create_upper_unique_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:472,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:478,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:478,1
    - Dst: create_unique_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:479,1
    - Dst: create_gather_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:485,1
    - Dst: create_sort_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:489,1
    - Dst: create_incrementalsort_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:494,1
    - Dst: create_group_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:499,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:503,1
    - Dst: create_groupingsets_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:504,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:508,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:508,1
    - Dst: create_agg_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:509,1
    - Dst: create_windowagg_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:514,1
    - Dst: create_setop_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:518,1
    - Dst: create_recursiveunion_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:523,1
    - Dst: create_lockrows_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:527,1
    - Dst: create_modifytable_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:532,1
    - Dst: create_limit_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:536,1
    - Dst: create_gather_merge_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:541,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:545,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 109
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - Path*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 552
    functionName: create_plan_recurse
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - create_gather_merge_plan
    - create_recursiveunion_plan
    - create_join_plan
    - create_sort_plan
    - create_agg_plan
    - create_modifytable_plan
    - create_upper_unique_plan
    - create_groupingsets_plan
    - create_append_plan
    - create_unique_plan
    - create_group_result_plan
    - create_group_plan
    - create_gather_plan
    - create_minmaxagg_plan
    - create_memoize_plan
    - create_setop_plan
    - create_incrementalsort_plan
    - create_limit_plan
    - create_material_plan
    - IsA
    - create_project_set_plan
    - elog
    - create_windowagg_plan
    - check_stack_depth
    - create_merge_append_plan
    - Assert
    - create_projection_plan
    - create_lockrows_plan
    - create_scan_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:583,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:597,1
    - Dst: IS_JOIN_REL
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:610,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:614,1
    - Dst: get_gating_quals
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:621,1
    - Dst: get_gating_quals
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:624,1
    - Dst: use_physical_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:642,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:647,1
    - Dst: apply_pathtarget_labeling_to_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:654,1
    - Dst: build_physical_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:658,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:662,1
    - Dst: apply_pathtarget_labeling_to_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:668,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:674,1
    - Dst: create_seqscan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:680,1
    - Dst: create_samplescan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:687,1
    - Dst: create_indexscan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:694,1
    - Dst: create_indexscan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:702,1
    - Dst: create_bitmap_scan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:710,1
    - Dst: create_tidscan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:717,1
    - Dst: create_tidrangescan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:724,1
    - Dst: create_subqueryscan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:731,1
    - Dst: create_functionscan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:738,1
    - Dst: create_tablefuncscan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:745,1
    - Dst: create_valuesscan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:752,1
    - Dst: create_ctescan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:759,1
    - Dst: create_namedtuplestorescan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:766,1
    - Dst: create_resultscan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:773,1
    - Dst: create_worktablescan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:780,1
    - Dst: create_foreignscan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:787,1
    - Dst: create_customscan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:794,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:801,1
    - Dst: create_gating_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:813,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 102
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - Path*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 558
    functionDepth: 1
    functionLinenumber: 558
    functionLinenumberEnd: 816
    functionName: create_scan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - create_ctescan_plan
    - create_seqscan_plan
    - create_samplescan_plan
    - castNode
    - get_gating_quals
    - create_tablefuncscan_plan
    - apply_pathtarget_labeling_to_tlist
    - create_indexscan_plan
    - create_tidrangescan_plan
    - create_bitmap_scan_plan
    - create_tidscan_plan
    - build_physical_tlist
    - create_worktablescan_plan
    - elog
    - create_functionscan_plan
    - create_customscan_plan
    - create_resultscan_plan
    - Assert
    - create_foreignscan_plan
    - create_valuesscan_plan
    - create_gating_plan
    - list_concat_copy
    - create_namedtuplestorescan_plan
    - IS_JOIN_REL
    - create_subqueryscan_plan
    - use_physical_tlist
    - copyObject
    - 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:832,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:834,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:844,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:846,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:853,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - root
    - path
    argTypes:
    - PlannerInfo*
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 824
    functionDepth: 1
    functionLinenumber: 824
    functionLinenumberEnd: 857
    functionName: build_path_tlist
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeTargetEntry
    - replace_nestloop_params
    - foreach
    - lappend
    - 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:903,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:911,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:922,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:930,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:932,1
    - Dst: bms_nonempty_difference
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:934,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:935,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:969,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:971,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:975,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:980,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:982,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 41
    argCount: 3
    argNames:
    - root
    - path
    - flags
    argTypes:
    - PlannerInfo*
    - Path*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 864
    functionDepth: 1
    functionLinenumber: 864
    functionLinenumberEnd: 992
    functionName: use_physical_tlist
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - bms_is_subset
    - bms_is_empty
    - IsA
    - foreach
    - bms_nonempty_difference
    - bms_is_member
    - lfirst
    - 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:1009,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1012,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - root
    - quals
    argTypes:
    - PlannerInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 1001
    functionDepth: 1
    functionLinenumber: 1001
    functionLinenumberEnd: 1013
    functionName: get_gating_quals
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - order_qual_clauses
    - extract_actual_clauses
    linkageType: ''
    returnType: List
    signature: 'List *

      get_gating_quals(PlannerInfo *root, List *quals)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1028,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1037,1
    - Dst: make_result
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1051,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1051,1
    - Dst: copy_plan_costsize
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1067,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - root
    - path
    - plan
    - gating_quals
    argTypes:
    - PlannerInfo*
    - Path*
    - Plan*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1073
      start: 1021
    functionDepth: 2
    functionLinenumber: 1021
    functionLinenumberEnd: 1073
    functionName: create_gating_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - copy_plan_costsize
    - IsA
    - make_result
    - 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:1089,1
    - Dst: create_hashjoin_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1093,1
    - Dst: create_nestloop_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1097,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1101,1
    - Dst: get_gating_quals
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1112,1
    - Dst: create_gating_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1114,1
    - Dst: get_loc_restrictinfo
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1124,1
    - Dst: set_qpqual
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1125,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1126,1
    - Dst: get_qpqual
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1126,1
    - Dst: get_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1127,1
    - Dst: get_loc_restrictinfo
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1127,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - JoinPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1131
      start: 1080
    functionDepth: 3
    functionLinenumber: 1080
    functionLinenumberEnd: 1131
    functionName: create_join_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - create_nestloop_plan
    - create_gating_plan
    - list_concat
    - set_qpqual
    - create_hashjoin_plan
    - create_mergejoin_plan
    - get_gating_quals
    - elog
    - get_actual_clauses
    - get_qpqual
    - get_loc_restrictinfo
    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:1142,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1152,1
    - Dst: trivial_subqueryscan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1159,1
    - Dst: mark_async_capable_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1160,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1173,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1176,1
    - Dst: FdwRoutine*::IsForeignPathAsyncCapable
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1178,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1188,1
    - Dst: mark_async_capable_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1195,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 2
    argNames:
    - plan
    - path
    argTypes:
    - Plan*
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1206
      start: 1139
    functionDepth: 2
    functionLinenumber: 1139
    functionLinenumberEnd: 1206
    functionName: mark_async_capable_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - nodeTag
    - Assert
    - FdwRoutine*::IsForeignPathAsyncCapable
    - IsA
    - trivial_subqueryscan
    - mark_async_capable_plan
    linkageType: ''
    returnType: bool
    signature: bool mark_async_capable_plan(Plan *plan, Path *path)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1219,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1220,1
    - Dst: make_result
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1248,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1249,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1249,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1253,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1269,1
    - Dst: prepare_sort_from_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1284,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1293,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1299,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1302,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1304,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1308,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_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1356,1
    - Dst: make_sort
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1358,1
    - Dst: label_sort_with_costsize
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1362,1
    - Dst: mark_async_capable_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1368,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1370,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1374,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1389,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1395,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1396,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1399,1
    - Dst: make_partition_pruneinfo
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1403,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1412,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1421,1
    - Dst: inject_projection_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1422,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 58
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - AppendPath*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1427
      start: 1215
    functionDepth: 3
    functionLinenumber: 1215
    functionLinenumberEnd: 1427
    functionName: create_append_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - prepare_sort_from_pathkeys
    - make_partition_pruneinfo
    - list_length
    - mark_async_capable_plan
    - make_result
    - makeNode
    - inject_projection_plan
    - list_copy_head
    - create_plan_recurse
    - list_concat
    - replace_nestloop_params
    - memcmp
    - foreach
    - extract_actual_clauses
    - copy_generic_path_info
    - elog
    - lappend
    - make_sort
    - label_sort_with_costsize
    - makeBoolConst
    - lfirst
    - Assert
    - list_make1
    - pathkeys_contained_in
    - build_path_tlist
    linkageType: ''
    returnType: Plan
    signature: 'Plan *

      create_append_plan(PlannerInfo *root, AppendPath *best_path, int flags)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1440,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1442,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1443,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1456,1
    - Dst: prepare_sort_from_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1469,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1478,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1485,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1487,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1497,1
    - Dst: prepare_sort_from_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1500,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1516,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1517,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1519,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1520,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1520,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1522,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1522,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1524,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1524,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1528,1
    - Dst: make_sort
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1530,1
    - Dst: label_sort_with_costsize
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1534,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1538,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1553,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1556,1
    - Dst: make_partition_pruneinfo
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1559,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1573,1
    - Dst: inject_projection_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1574,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 37
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - MergeAppendPath*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1578
      start: 1436
    functionDepth: 2
    functionLinenumber: 1436
    functionLinenumberEnd: 1578
    functionName: create_merge_append_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - prepare_sort_from_pathkeys
    - make_partition_pruneinfo
    - list_length
    - inject_projection_plan
    - makeNode
    - list_copy_head
    - create_plan_recurse
    - memcmp
    - foreach
    - extract_actual_clauses
    - copy_generic_path_info
    - elog
    - lappend
    - make_sort
    - label_sort_with_costsize
    - lfirst
    - Assert
    - pathkeys_contained_in
    - 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:1594,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1597,1
    - Dst: make_result
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1599,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1601,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - GroupResultPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1604
      start: 1587
    functionDepth: 2
    functionLinenumber: 1587
    functionLinenumberEnd: 1604
    functionName: create_group_result_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - make_result
    - order_qual_clauses
    - build_path_tlist
    - copy_generic_path_info
    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:1620,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1622,1
    - Dst: make_project_set
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1624,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1626,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - ProjectSetPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1629
      start: 1612
    functionDepth: 2
    functionLinenumber: 1612
    functionLinenumberEnd: 1629
    functionName: create_project_set_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - build_path_tlist
    - copy_generic_path_info
    - create_plan_recurse
    - make_project_set
    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:1649,1
    - Dst: make_material
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1652,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1654,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - MaterialPath*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1657
      start: 1638
    functionDepth: 2
    functionLinenumber: 1638
    functionLinenumberEnd: 1657
    functionName: create_material_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - copy_generic_path_info
    - create_plan_recurse
    - make_material
    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:1680,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1683,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1686,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1687,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1688,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1689,1
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1692,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1694,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1695,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1698,1
    - Dst: pull_paramids
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1702,1
    - Dst: make_memoize
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1704,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1708,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - MemoizePath*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1711
      start: 1666
    functionDepth: 2
    functionLinenumber: 1666
    functionLinenumberEnd: 1711
    functionName: create_memoize_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - exprCollation
    - create_plan_recurse
    - replace_nestloop_params
    - make_memoize
    - list_length
    - copy_generic_path_info
    - forboth
    - palloc
    - lfirst_oid
    - pull_paramids
    - lfirst
    linkageType: ''
    returnType: Memoize
    signature: 'Memoize *

      create_memoize_plan(PlannerInfo *root, MemoizePath *best_path, int flags)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1737,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1763,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1764,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1769,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1772,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1775,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1779,1
    - Dst: change_plan_targetlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1787,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1797,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1798,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1799,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1804,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1807,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1809,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1811,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1825,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1829,1
    - Dst: get_compatible_hash_operators
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1832,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1833,1
    - Dst: make_agg
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1843,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1843,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1866,1
    - Dst: get_ordering_op_for_equality_op
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1872,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1873,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1874,1
    - Dst: get_equality_op_for_ordering_op
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1883,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1884,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1885,1
    - Dst: get_tle_by_resno
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1888,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1890,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1892,1
    - Dst: assignSortGroupRef
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1893,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1900,1
    - Dst: make_sort_from_sortclauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1903,1
    - Dst: label_sort_with_costsize
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1904,1
    - Dst: make_unique_from_sortclauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1905,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1909,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 65
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - UniquePath*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1912
      start: 1720
    functionDepth: 2
    functionLinenumber: 1720
    functionLinenumberEnd: 1912
    functionName: create_unique_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - list_length
    - change_plan_targetlist
    - make_unique_from_sortclauses
    - make_agg
    - makeNode
    - get_equality_op_for_ordering_op
    - create_plan_recurse
    - make_sort_from_sortclauses
    - get_ordering_op_for_equality_op
    - assignSortGroupRef
    - copy_generic_path_info
    - elog
    - lappend
    - OidIsValid
    - palloc
    - label_sort_with_costsize
    - lfirst
    - tlist_member
    - makeTargetEntry
    - exprCollation
    - Assert
    - get_compatible_hash_operators
    - get_tle_by_resno
    - lfirst_oid
    - build_path_tlist
    linkageType: ''
    returnType: Plan
    signature: 'Plan *

      create_unique_plan(PlannerInfo *root, UniquePath *best_path, int flags)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1769,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1772,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1775,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1779,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1783
      start: 1767
    functionDepth: 1
    functionLinenumber: 1767
    functionLinenumberEnd: 1783
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 104
    functionsReached:
    - tlist_member
    - lappend
    - makeTargetEntry
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, uniq_exprs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1804,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1807,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1809,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1811,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1813
      start: 1802
    functionDepth: 1
    functionLinenumber: 1802
    functionLinenumberEnd: 1813
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 104
    functionsReached:
    - tlist_member
    - elog
    - lfirst
    - exprCollation
    linkageType: ''
    returnType: void
    signature: void foreach(l, uniq_exprs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1829,1
    - Dst: get_compatible_hash_operators
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1832,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1833,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1836
      start: 1827
    functionDepth: 1
    functionLinenumber: 1827
    functionLinenumberEnd: 1836
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 104
    functionsReached:
    - elog
    - lfirst_oid
    - get_compatible_hash_operators
    linkageType: ''
    returnType: void
    signature: void foreach(l, in_operators)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1866,1
    - Dst: get_ordering_op_for_equality_op
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1872,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1873,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1874,1
    - Dst: get_equality_op_for_ordering_op
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1883,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1884,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1885,1
    - Dst: get_tle_by_resno
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1888,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1890,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1892,1
    - Dst: assignSortGroupRef
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1893,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1900,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1902
      start: 1864
    functionDepth: 1
    functionLinenumber: 1864
    functionLinenumberEnd: 1902
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 104
    functionsReached:
    - Assert
    - get_equality_op_for_ordering_op
    - get_ordering_op_for_equality_op
    - elog
    - lappend
    - OidIsValid
    - get_tle_by_resno
    - assignSortGroupRef
    - makeNode
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(l, in_operators)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1933,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1935,1
    - Dst: make_gather
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1937,1
    - Dst: assign_special_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1940,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1944,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - GatherPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1950
      start: 1920
    functionDepth: 2
    functionLinenumber: 1920
    functionLinenumberEnd: 1950
    functionName: create_gather_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - create_plan_recurse
    - make_gather
    - copy_generic_path_info
    - build_path_tlist
    - assign_special_exec_param
    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:1964,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1967,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1970,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1973,1
    - Dst: assign_special_exec_param
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1976,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1979,1
    - Dst: prepare_sort_from_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1982,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1996,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:1996,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - GatherMergePath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2005
      start: 1958
    functionDepth: 2
    functionLinenumber: 1958
    functionLinenumberEnd: 2005
    functionName: create_gather_merge_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - create_plan_recurse
    - prepare_sort_from_pathkeys
    - pathkeys_contained_in
    - copy_generic_path_info
    - makeNode
    - build_path_tlist
    - assign_special_exec_param
    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:2035,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2042,1
    - Dst: apply_pathtarget_labeling_to_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2045,1
    - Dst: is_projection_capable_path
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2048,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2056,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2058,1
    - Dst: is_projection_capable_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2058,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2059,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2067,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2068,1
    - Dst: tlist_same_exprs
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2069,1
    - Dst: make_result
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2097,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2099,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - ProjectionPath*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2103
      start: 2014
    functionDepth: 2
    functionLinenumber: 2014
    functionLinenumberEnd: 2103
    functionName: create_projection_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - create_plan_recurse
    - apply_pathtarget_labeling_to_tlist
    - tlist_same_exprs
    - is_projection_capable_path
    - use_physical_tlist
    - is_projection_capable_plan
    - copy_generic_path_info
    - make_result
    - build_path_tlist
    linkageType: ''
    returnType: Plan
    signature: 'Plan *

      create_projection_plan(PlannerInfo *root, ProjectionPath *best_path, int flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_result
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2121,1
    - Dst: copy_plan_costsize
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - subplan
    - tlist
    - parallel_safe
    argTypes:
    - Plan*
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2134
      start: 2116
    functionDepth: 1
    functionLinenumber: 2116
    functionLinenumberEnd: 2134
    functionName: inject_projection_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 2
    functionsReached:
    - make_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:2156,1
    - Dst: tlist_same_exprs
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2157,1
    - Dst: inject_projection_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2158,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - subplan
    - tlist
    - tlist_parallel_safe
    argTypes:
    - Plan*
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2168
      start: 2148
    functionDepth: 2
    functionLinenumber: 2148
    functionLinenumberEnd: 2168
    functionName: change_plan_targetlist
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - tlist_same_exprs
    - is_projection_capable_plan
    - inject_projection_plan
    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:2187,1
    - Dst: make_sort_from_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2196,1
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2197,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - SortPath*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2203
      start: 2176
    functionDepth: 2
    functionLinenumber: 2176
    functionLinenumberEnd: 2203
    functionName: create_sort_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - IS_OTHER_REL
    - make_sort_from_pathkeys
    - copy_generic_path_info
    - create_plan_recurse
    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:2218,1
    - Dst: make_incrementalsort_from_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2220,1
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2222,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - IncrementalSortPath*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2229
      start: 2210
    functionDepth: 2
    functionLinenumber: 2210
    functionLinenumberEnd: 2229
    functionName: create_incrementalsort_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - IS_OTHER_REL
    - make_incrementalsort_from_pathkeys
    - copy_generic_path_info
    - create_plan_recurse
    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:2249,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2251,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2253,1
    - Dst: make_group
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2255,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2257,1
    - Dst: extract_grouping_cols
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2258,1
    - Dst: extract_grouping_ops
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2260,1
    - Dst: extract_grouping_collations
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2261,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - GroupPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2268
      start: 2237
    functionDepth: 2
    functionLinenumber: 2237
    functionLinenumberEnd: 2268
    functionName: create_group_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - order_qual_clauses
    - create_plan_recurse
    - extract_grouping_ops
    - extract_grouping_cols
    - list_length
    - copy_generic_path_info
    - make_group
    - build_path_tlist
    - extract_grouping_collations
    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:2286,1
    - Dst: make_unique_from_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2289,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - UpperUniquePath*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2296
      start: 2276
    functionDepth: 2
    functionLinenumber: 2276
    functionLinenumberEnd: 2296
    functionName: create_upper_unique_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - copy_generic_path_info
    - create_plan_recurse
    - make_unique_from_pathkeys
    linkageType: ''
    returnType: Unique
    signature: 'Unique *

      create_upper_unique_plan(PlannerInfo *root, UpperUniquePath *best_path, int
      flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2316,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2318,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2320,1
    - Dst: make_agg
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2322,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2325,1
    - Dst: extract_grouping_cols
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2326,1
    - Dst: extract_grouping_ops
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2328,1
    - Dst: extract_grouping_collations
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2329,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2337,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - AggPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2340
      start: 2304
    functionDepth: 2
    functionLinenumber: 2304
    functionLinenumberEnd: 2340
    functionName: create_agg_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - order_qual_clauses
    - create_plan_recurse
    - extract_grouping_ops
    - extract_grouping_cols
    - list_length
    - copy_generic_path_info
    - make_agg
    - build_path_tlist
    - extract_grouping_collations
    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:2358,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2360,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2360,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - root
    - groupClause
    argTypes:
    - PlannerInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2371
      start: 2350
    functionDepth: 1
    functionLinenumber: 2350
    functionLinenumberEnd: 2371
    functionName: remap_groupColIdx
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 0
    functionsReached:
    - Assert
    - lfirst
    - palloc0
    - 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:2365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2368
      start: 2363
    functionDepth: 1
    functionLinenumber: 2363
    functionLinenumberEnd: 2368
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 104
    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:2400,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2401,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2407,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2415,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2417,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2423,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2426,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2428,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2429,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2438,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2448,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2450,1
    - Dst: for_each_from
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2452,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2454,1
    - Dst: remap_groupColIdx
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2460,1
    - Dst: make_sort_from_groupcols
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2465,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2475,1
    - Dst: make_agg
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2480,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2484,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2484,1
    - Dst: extract_grouping_ops
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2486,1
    - Dst: extract_grouping_collations
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2487,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2503,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2511,1
    - Dst: remap_groupColIdx
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2515,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2517,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2517,1
    - Dst: make_agg
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2519,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2519,1
    - Dst: extract_grouping_ops
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2525,1
    - Dst: extract_grouping_collations
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2526,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2534,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 43
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - GroupingSetsPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2538
      start: 2388
    functionDepth: 2
    functionLinenumber: 2388
    functionLinenumberEnd: 2538
    functionName: create_groupingsets_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - create_plan_recurse
    - extract_grouping_ops
    - linitial
    - extract_grouping_collations
    - palloc0
    - foreach
    - list_length
    - for_each_from
    - copy_generic_path_info
    - lappend
    - get_sortgroupclause_tle
    - make_sort_from_groupcols
    - make_agg
    - build_path_tlist
    - lfirst
    - remap_groupColIdx
    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:2554,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2556,1
    - Dst: create_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2567,1
    - Dst: make_limit
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2569,1
    - Dst: SS_make_initplan_from_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2585,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2589,1
    - Dst: make_result
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2591,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2593,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2601,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - MinMaxAggPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2605
      start: 2546
    functionDepth: 3
    functionLinenumber: 2546
    functionLinenumberEnd: 2605
    functionName: create_minmaxagg_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - make_limit
    - SS_make_initplan_from_plan
    - foreach
    - copy_generic_path_info
    - make_result
    - create_plan
    - build_path_tlist
    - lfirst
    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:2618,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2619,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2638,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2641,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2647,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2648,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2649,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2652,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2654,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2655,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2657,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2657,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2660,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2664,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2665,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2666,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2669,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2671,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2672,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2674,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2674,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2677,1
    - Dst: make_windowagg
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2682,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2697,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - WindowAggPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2700
      start: 2613
    functionDepth: 2
    functionLinenumber: 2613
    functionLinenumberEnd: 2700
    functionName: create_windowagg_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - exprCollation
    - create_plan_recurse
    - foreach
    - list_length
    - make_windowagg
    - copy_generic_path_info
    - get_sortgroupclause_tle
    - OidIsValid
    - palloc
    - build_path_tlist
    - lfirst
    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:2712,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2721,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2723,1
    - Dst: clamp_cardinality_to_long
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2727,1
    - Dst: make_setop
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2729,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2737,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - SetOpPath*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2740
      start: 2708
    functionDepth: 2
    functionLinenumber: 2708
    functionLinenumberEnd: 2740
    functionName: create_setop_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - build_path_tlist
    - create_plan_recurse
    - clamp_cardinality_to_long
    - make_setop
    - copy_generic_path_info
    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:2758,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2759,1
    - Dst: build_path_tlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2761,1
    - Dst: clamp_cardinality_to_long
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2764,1
    - Dst: make_recursive_union
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2766,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2773,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - RecursiveUnionPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2776
      start: 2748
    functionDepth: 2
    functionLinenumber: 2748
    functionLinenumberEnd: 2776
    functionName: create_recursiveunion_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - create_plan_recurse
    - make_recursive_union
    - copy_generic_path_info
    - clamp_cardinality_to_long
    - 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:2792,1
    - Dst: make_lockrows
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2794,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2796,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - LockRowsPath*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2799
      start: 2784
    functionDepth: 2
    functionLinenumber: 2784
    functionLinenumberEnd: 2799
    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:2815,1
    - Dst: apply_tlist_labeling
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2818,1
    - Dst: make_modifytable
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2820,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2837,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - ModifyTablePath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2840
      start: 2807
    functionDepth: 2
    functionLinenumber: 2807
    functionLinenumberEnd: 2840
    functionName: create_modifytable_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - make_modifytable
    - copy_generic_path_info
    - create_plan_recurse
    - apply_tlist_labeling
    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:2859,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2867,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2868,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2869,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2870,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2873,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2875,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2876,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2880,1
    - Dst: make_limit
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2885,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2891,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - root
    - best_path
    - flags
    argTypes:
    - PlannerInfo*
    - LimitPath*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2894
      start: 2848
    functionDepth: 2
    functionLinenumber: 2848
    functionLinenumberEnd: 2894
    functionName: create_limit_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - exprCollation
    - create_plan_recurse
    - make_limit
    - foreach
    - list_length
    - get_sortgroupclause_tle
    - palloc
    - copy_generic_path_info
    - lfirst
    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:2917,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2918,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2921,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2924,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2930,1
    - Dst: make_seqscan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2933,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2937,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: 2940
      start: 2909
    functionDepth: 1
    functionLinenumber: 2909
    functionLinenumberEnd: 2940
    functionName: create_seqscan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - order_qual_clauses
    - replace_nestloop_params
    - make_seqscan
    - extract_actual_clauses
    - copy_generic_path_info
    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:2957,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2958,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2959,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2961,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2964,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2967,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2973,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2975,1
    - Dst: make_samplescan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2978,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:2983,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: 2986
      start: 2947
    functionDepth: 1
    functionLinenumber: 2947
    functionLinenumberEnd: 2986
    functionName: create_samplescan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - order_qual_clauses
    - replace_nestloop_params
    - planner_rt_fetch
    - extract_actual_clauses
    - copy_generic_path_info
    - 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:3019,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3020,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3022,1
    - Dst: fix_indexqual_references
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3031,1
    - Dst: fix_indexorderby_references
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3038,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3071,1
    - Dst: is_redundant_with_indexclauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3075,1
    - Dst: contain_mutable_functions
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3077,1
    - Dst: predicate_implied_by
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3078,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3078,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3081,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3085,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3088,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3102,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3104,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3106,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3123,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3123,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3123,1
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3124,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3126,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3127,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3128,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3132,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3136,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3137,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3139,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3152,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3154,1
    - Dst: make_indexonlyscan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3163,1
    - Dst: make_indexscan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3173,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3184,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: 3187
      start: 2998
    functionDepth: 1
    functionLinenumber: 2998
    functionLinenumberEnd: 3187
    functionName: create_indexscan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - list_length
    - forboth
    - exprType
    - fix_indexorderby_references
    - order_qual_clauses
    - replace_nestloop_params
    - is_redundant_with_indexclauses
    - foreach
    - get_opfamily_member_for_cmptype
    - extract_actual_clauses
    - make_indexonlyscan
    - copy_generic_path_info
    - lfirst_node
    - fix_indexqual_references
    - make_indexscan
    - contain_mutable_functions
    - elog
    - lappend
    - OidIsValid
    - predicate_implied_by
    - lfirst
    - Assert
    - lappend_oid
    - list_make1
    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:3071,1
    - Dst: is_redundant_with_indexclauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3075,1
    - Dst: contain_mutable_functions
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3077,1
    - Dst: predicate_implied_by
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3078,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3078,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3081,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3082
      start: 3069
    functionDepth: 1
    functionLinenumber: 3069
    functionLinenumberEnd: 3082
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 109
    functionsReached:
    - lfirst_node
    - contain_mutable_functions
    - is_redundant_with_indexclauses
    - list_make1
    - lappend
    - predicate_implied_by
    linkageType: ''
    returnType: void
    signature: void foreach(l, scan_clauses)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3210,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3211,1
    - Dst: create_bitmap_subplan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3214,1
    - Dst: bitmap_subplan_mark_shared
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3219,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3250,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3255,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3257,1
    - Dst: contain_mutable_functions
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3259,1
    - Dst: predicate_implied_by
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3260,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3260,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3262,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3266,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3269,1
    - Dst: list_difference_ptr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3277,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3287,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3289,1
    - Dst: make_bitmap_heapscan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3293,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3299,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: 3302
      start: 3194
    functionDepth: 1
    functionLinenumber: 3194
    functionLinenumberEnd: 3302
    functionName: create_bitmap_scan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - make_bitmap_heapscan
    - Assert
    - order_qual_clauses
    - lfirst_node
    - list_difference_ptr
    - replace_nestloop_params
    - contain_mutable_functions
    - list_make1
    - lappend
    - bitmap_subplan_mark_shared
    - extract_actual_clauses
    - list_member
    - create_bitmap_subplan
    - predicate_implied_by
    - list_member_ptr
    - copy_generic_path_info
    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:3250,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3255,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3257,1
    - Dst: contain_mutable_functions
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3259,1
    - Dst: predicate_implied_by
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3260,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3260,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3262,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3263
      start: 3248
    functionDepth: 1
    functionLinenumber: 3248
    functionLinenumberEnd: 3263
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 109
    functionsReached:
    - lfirst_node
    - contain_mutable_functions
    - list_make1
    - lappend
    - list_member
    - predicate_implied_by
    - list_member_ptr
    linkageType: ''
    returnType: void
    signature: void foreach(l, scan_clauses)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3330,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3346,1
    - Dst: create_bitmap_subplan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3353,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3353,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3356,1
    - Dst: list_concat_unique
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3357,1
    - Dst: list_concat_unique
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3358,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3360,1
    - Dst: make_bitmap_and
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3362,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3366,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3374,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3393,1
    - Dst: create_bitmap_subplan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3400,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3400,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3403,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3407,1
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3408,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3412,1
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3413,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3420,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3422,1
    - Dst: make_bitmap_or
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3426,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3430,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3443,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3446,1
    - Dst: make_orclause
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3446,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3449,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3452,1
    - Dst: make_orclause
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3452,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3455,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3465,1
    - Dst: create_indexscan_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3466,1
    - Dst: make_bitmap_indexscan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3469,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3477,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3485,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3487,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3490,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3491,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3492,1
    - Dst: get_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3493,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3495,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3498,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3500,1
    - Dst: predicate_implied_by
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3508,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3508,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3510,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3511,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3520,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3520,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: 3525
      start: 3324
    functionDepth: 2
    functionLinenumber: 3324
    functionLinenumberEnd: 3525
    functionName: create_bitmap_subplan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 2
    functionsReached:
    - list_length
    - castNode
    - make_orclause
    - list_concat
    - create_indexscan_plan
    - foreach
    - make_bitmap_indexscan
    - nodeTag
    - linitial
    - IsA
    - elog
    - lappend
    - list_concat_unique
    - get_actual_clauses
    - predicate_implied_by
    - clamp_row_est
    - lfirst
    - make_ands_explicit
    - Assert
    - list_make1
    - make_bitmap_and
    - make_bitmap_or
    - create_bitmap_subplan
    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:3541,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3542,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3563,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3570,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3574,1
    - Dst: is_redundant_derived_clause
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3576,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3578,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3584,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3587,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3588,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3601,1
    - Dst: list_difference
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3602,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3603,1
    - Dst: make_orclause
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3603,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3609,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3611,1
    - Dst: make_tidscan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3614,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3619,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: 3622
      start: 3532
    functionDepth: 1
    functionLinenumber: 3532
    functionLinenumberEnd: 3622
    functionName: create_tidscan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - order_qual_clauses
    - lfirst_node
    - replace_nestloop_params
    - list_difference
    - is_redundant_derived_clause
    - list_make1
    - list_length
    - lappend
    - make_tidscan
    - extract_actual_clauses
    - make_orclause
    - list_member_ptr
    - copy_generic_path_info
    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:3570,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3574,1
    - Dst: is_redundant_derived_clause
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3576,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3578,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3579
      start: 3568
    functionDepth: 1
    functionLinenumber: 3568
    functionLinenumberEnd: 3579
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 110
    functionsReached:
    - lappend
    - list_member_ptr
    - is_redundant_derived_clause
    - 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:3638,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3639,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3652,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3656,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3658,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3664,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3667,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3668,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3674,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3676,1
    - Dst: make_tidrangescan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3679,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3684,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: 3687
      start: 3629
    functionDepth: 1
    functionLinenumber: 3629
    functionLinenumberEnd: 3687
    functionName: create_tidrangescan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - order_qual_clauses
    - lfirst_node
    - replace_nestloop_params
    - make_tidrangescan
    - lappend
    - extract_actual_clauses
    - list_member_ptr
    - copy_generic_path_info
    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:3652,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3656,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3658,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3659
      start: 3650
    functionDepth: 1
    functionLinenumber: 3650
    functionLinenumberEnd: 3659
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 110
    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:3704,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3705,1
    - Dst: create_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3712,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3715,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3718,1
    - Dst: process_subquery_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3732,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3735,1
    - Dst: make_subqueryscan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3738,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3743,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: 3746
      start: 3694
    functionDepth: 2
    functionLinenumber: 3694
    functionLinenumberEnd: 3746
    functionName: create_subqueryscan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - order_qual_clauses
    - replace_nestloop_params
    - extract_actual_clauses
    - process_subquery_nestloop_params
    - create_plan
    - copy_generic_path_info
    - make_subqueryscan
    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:3763,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3764,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3765,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3769,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3772,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3778,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3780,1
    - Dst: make_functionscan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3783,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3786,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: 3789
      start: 3753
    functionDepth: 1
    functionLinenumber: 3753
    functionLinenumberEnd: 3789
    functionName: create_functionscan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - order_qual_clauses
    - replace_nestloop_params
    - planner_rt_fetch
    - make_functionscan
    - extract_actual_clauses
    - copy_generic_path_info
    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:3806,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3807,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3808,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3812,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3815,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3821,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3823,1
    - Dst: make_tablefuncscan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3826,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3829,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: 3832
      start: 3796
    functionDepth: 1
    functionLinenumber: 3796
    functionLinenumberEnd: 3832
    functionName: create_tablefuncscan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - make_tablefuncscan
    - order_qual_clauses
    - replace_nestloop_params
    - planner_rt_fetch
    - extract_actual_clauses
    - copy_generic_path_info
    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:3849,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3850,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3851,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3855,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3858,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3864,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3867,1
    - Dst: make_valuesscan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3870,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3873,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: 3876
      start: 3839
    functionDepth: 1
    functionLinenumber: 3839
    functionLinenumberEnd: 3876
    functionName: create_valuesscan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - order_qual_clauses
    - replace_nestloop_params
    - planner_rt_fetch
    - make_valuesscan
    - extract_actual_clauses
    - copy_generic_path_info
    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:3898,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3899,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3900,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3901,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3912,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3921,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3923,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3925,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3930,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3931,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3932,1
    - Dst: list_nth_int
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3933,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3935,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3936,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3938,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3943,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3949,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3952,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3955,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3961,1
    - Dst: make_ctescan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3964,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3967,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: 3970
      start: 3883
    functionDepth: 3
    functionLinenumber: 3883
    functionLinenumberEnd: 3970
    functionName: create_ctescan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - order_qual_clauses
    - replace_nestloop_params
    - planner_rt_fetch
    - list_nth_int
    - foreach
    - list_length
    - linitial_int
    - elog
    - extract_actual_clauses
    - make_ctescan
    - strcmp
    - copy_generic_path_info
    - lfirst
    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:3986,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3987,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3988,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3991,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:3994,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4000,1
    - Dst: make_namedtuplestorescan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4003,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4006,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: 4009
      start: 3978
    functionDepth: 1
    functionLinenumber: 3978
    functionLinenumberEnd: 4009
    functionName: create_namedtuplestorescan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - order_qual_clauses
    - replace_nestloop_params
    - planner_rt_fetch
    - extract_actual_clauses
    - copy_generic_path_info
    - make_namedtuplestorescan
    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:4025,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4026,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4027,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4030,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4033,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4039,1
    - Dst: make_result
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4042,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4044,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: 4047
      start: 4017
    functionDepth: 1
    functionLinenumber: 4017
    functionLinenumberEnd: 4047
    functionName: create_resultscan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - order_qual_clauses
    - replace_nestloop_params
    - planner_rt_fetch
    - extract_actual_clauses
    - make_result
    - copy_generic_path_info
    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:4064,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4065,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4066,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4067,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4076,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4083,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4086,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4089,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4092,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4098,1
    - Dst: make_worktablescan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4101,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4104,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: 4107
      start: 4054
    functionDepth: 1
    functionLinenumber: 4054
    functionLinenumberEnd: 4107
    functionName: create_worktablescan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - order_qual_clauses
    - replace_nestloop_params
    - planner_rt_fetch
    - elog
    - extract_actual_clauses
    - copy_generic_path_info
    - 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:4124,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4128,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4139,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4140,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4141,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4149,1
    - Dst: RelOptInfo*::fdwroutine::GetForeignPlan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4158,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4164,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4187,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4209,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4211,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4213,1
    - Dst: pull_varattnos
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4238,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4241,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4243,1
    - Dst: pull_varattnos
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4245,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4251,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4258,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: 4262
      start: 4114
    functionDepth: 2
    functionLinenumber: 4114
    functionLinenumberEnd: 4262
    functionName: create_foreignscan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - create_plan_recurse
    - order_qual_clauses
    - replace_nestloop_params
    - RelOptInfo*::fdwroutine::GetForeignPlan
    - planner_rt_fetch
    - foreach
    - pull_varattnos
    - bms_is_member
    - bms_difference
    - copy_generic_path_info
    - lfirst
    - bms_free
    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:4279,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4281,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4281,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4284,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4291,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4297,1
    - Dst: CustomPath*::methods::PlanCustomPath
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4298,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4309,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4325,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4327,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: 4331
      start: 4269
    functionDepth: 2
    functionLinenumber: 4269
    functionLinenumberEnd: 4331
    functionName: create_customscan_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - CustomPath*::methods::PlanCustomPath
    - order_qual_clauses
    - create_plan_recurse
    - replace_nestloop_params
    - foreach
    - castNode
    - lappend
    - copy_generic_path_info
    - lfirst
    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:4348,1
    - Dst: reparameterize_path_by_child
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4364,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4372,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4375,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4379,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4381,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4384,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4388,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4392,1
    - Dst: extract_actual_join_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4394,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4401,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4409,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4411,1
    - Dst: identify_current_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4418,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4420,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4437,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4441,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4444,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4446,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4457,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4462,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4464,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4464,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4465,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4468,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4471,1
    - Dst: change_plan_targetlist
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4474,1
    - Dst: make_nestloop
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4478,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4487,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - NestPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4490
      start: 4340
    functionDepth: 3
    functionLinenumber: 4340
    functionLinenumberEnd: 4490
    functionName: create_nestloop_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - list_copy
    - castNode
    - list_length
    - bms_union
    - change_plan_targetlist
    - extract_actual_join_clauses
    - identify_current_nestloop_params
    - make_nestloop
    - create_plan_recurse
    - order_qual_clauses
    - replace_nestloop_params
    - extract_actual_clauses
    - copy_generic_path_info
    - bms_free
    - IsA
    - is_parallel_safe
    - lappend
    - IS_OUTER_JOIN
    - lfirst
    - tlist_member
    - makeTargetEntry
    - Assert
    - reparameterize_path_by_child
    - copyObject
    - PATH_REQ_OUTER
    - 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:4437,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4441,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4444,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4446,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4457,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4462,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4464,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4464,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4465,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4468,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4471,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4472
      start: 4435
    functionDepth: 1
    functionLinenumber: 4435
    functionLinenumberEnd: 4472
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 113
    functionsReached:
    - lfirst
    - makeTargetEntry
    - replace_nestloop_params
    - list_copy
    - IsA
    - castNode
    - list_length
    - is_parallel_safe
    - lappend
    - copyObject
    - tlist_member
    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:4499,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4525,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4528,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4533,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4537,1
    - Dst: extract_actual_join_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4539,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4546,1
    - Dst: get_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4554,1
    - Dst: list_difference
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4555,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4564,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4566,1
    - Dst: get_switched_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4574,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4590,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4590,1
    - Dst: make_incrementalsort_from_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4600,1
    - Dst: label_incrementalsort_with_costsize
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4605,1
    - Dst: make_sort_from_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4613,1
    - Dst: label_sort_with_costsize
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4617,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4641,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4641,1
    - Dst: make_sort_from_pathkeys
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4644,1
    - Dst: label_sort_with_costsize
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4648,1
    - Dst: make_material
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4661,1
    - Dst: copy_plan_costsize
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4668,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4681,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4682,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4682,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4683,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4684,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4685,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4686,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4690,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4691,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4693,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4695,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4713,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4714,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4735,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4736,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4738,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4740,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4760,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4765,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4778,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4784,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4803,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4807,1
    - Dst: make_mergejoin
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4826,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4841,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 105
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - MergePath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4844
      start: 4492
    functionDepth: 2
    functionLinenumber: 4492
    functionLinenumberEnd: 4844
    functionName: create_mergejoin_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - list_difference
    - label_incrementalsort_with_costsize
    - list_length
    - make_mergejoin
    - extract_actual_join_clauses
    - order_qual_clauses
    - create_plan_recurse
    - replace_nestloop_params
    - make_incrementalsort_from_pathkeys
    - foreach
    - make_material
    - extract_actual_clauses
    - copy_generic_path_info
    - make_sort_from_pathkeys
    - copy_plan_costsize
    - lfirst_node
    - list_head
    - lnext
    - elog
    - get_actual_clauses
    - palloc
    - label_sort_with_costsize
    - IS_OUTER_JOIN
    - lfirst
    - Assert
    - get_switched_clauses
    - pathkeys_contained_in
    - 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:4778,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4782
      start: 4774
    functionDepth: 1
    functionLinenumber: 4774
    functionLinenumberEnd: 4782
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 114
    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:4854,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4874,1
    - Dst: create_plan_recurse
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4877,1
    - Dst: order_qual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4881,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4886,1
    - Dst: extract_actual_join_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4888,1
    - Dst: extract_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4895,1
    - Dst: get_actual_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4903,1
    - Dst: list_difference
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4904,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4913,1
    - Dst: replace_nestloop_params
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4915,1
    - Dst: get_switched_clauses
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4922,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4933,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4935,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4938,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4938,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4939,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4940,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4942,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4967,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4969,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4970,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4971,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4971,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4972,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4972,1
    - Dst: make_hash
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4978,1
    - Dst: copy_plan_costsize
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4988,1
    - Dst: make_hashjoin
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5002,1
    - Dst: copy_generic_path_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5014,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 46
    argCount: 2
    argNames:
    - root
    - best_path
    argTypes:
    - PlannerInfo*
    - HashPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5017
      start: 4846
    functionDepth: 2
    functionLinenumber: 4846
    functionLinenumberEnd: 5017
    functionName: create_hashjoin_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - list_difference
    - list_length
    - is_opclause
    - make_hashjoin
    - extract_actual_join_clauses
    - order_qual_clauses
    - create_plan_recurse
    - replace_nestloop_params
    - lsecond
    - extract_actual_clauses
    - copy_generic_path_info
    - copy_plan_costsize
    - lfirst_node
    - linitial
    - IsA
    - lappend
    - get_actual_clauses
    - IS_OUTER_JOIN
    - make_hash
    - Assert
    - lappend_oid
    - get_switched_clauses
    - 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:4967,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4969,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4970,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4971,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4971,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4972,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:4972,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4973
      start: 4965
    functionDepth: 1
    functionLinenumber: 4965
    functionLinenumberEnd: 4973
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 114
    functionsReached:
    - lfirst_node
    - linitial
    - lappend_oid
    - lsecond
    - lappend
    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:5039,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - root
    - expr
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5040
      start: 5035
    functionDepth: 1
    functionLinenumber: 5035
    functionLinenumberEnd: 5040
    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:5047,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5052,1
    - Dst: IS_SPECIAL_VARNO
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5054,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5055,1
    - Dst: replace_nestloop_param_var
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5058,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5060,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5065,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5068,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5068,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5086,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5088,1
    - Dst: replace_nestloop_params_mutator
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5090,1
    - Dst: replace_nestloop_param_placeholdervar
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5095,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5097,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - node
    - root
    argTypes:
    - Node*
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5098
      start: 5042
    functionDepth: 1
    functionLinenumber: 5042
    functionLinenumberEnd: 5098
    functionName: replace_nestloop_params_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 2
    functionsReached:
    - Assert
    - bms_is_subset
    - find_placeholder_info
    - replace_nestloop_param_var
    - expression_tree_mutator
    - IsA
    - replace_nestloop_param_placeholdervar
    - replace_nestloop_params_mutator
    - bms_is_member
    - memcpy
    - makeNode
    - IS_SPECIAL_VARNO
    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:5131,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5133,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5137,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5139,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5142,1
    - Dst: fix_indexqual_clause
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5143,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5145,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: 5151
      start: 5120
    functionDepth: 1
    functionLinenumber: 5120
    functionLinenumberEnd: 5151
    functionName: fix_indexqual_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - lappend
    - fix_indexqual_clause
    - lfirst_node
    - foreach
    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:5171,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5173,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5174,1
    - Dst: fix_indexqual_clause
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5176,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - root
    - index_path
    argTypes:
    - PlannerInfo*
    - IndexPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5181
      start: 5161
    functionDepth: 1
    functionLinenumber: 5161
    functionLinenumberEnd: 5181
    functionName: fix_indexorderby_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - lfirst_int
    - lappend
    - fix_indexqual_clause
    - forboth
    - lfirst
    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:5200,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5202,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5207,1
    - Dst: fix_indexqual_operand
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5207,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5207,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5211,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5218,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5218,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5218,1
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5219,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5221,1
    - Dst: fix_indexqual_operand
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5221,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5221,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5223,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5226,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5231,1
    - Dst: fix_indexqual_operand
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5231,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5231,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5235,1
    - Dst: fix_indexqual_operand
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5240,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5245,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5246,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: 5249
      start: 5190
    functionDepth: 2
    functionLinenumber: 5190
    functionLinenumberEnd: 5249
    functionName: fix_indexqual_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 2
    functionsReached:
    - nodeTag
    - Assert
    - fix_indexqual_operand
    - replace_nestloop_params
    - linitial
    - IsA
    - lfirst_int
    - list_length
    - elog
    - forboth
    - lfirst
    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: 9
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5271,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5274,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5279,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5283,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5289,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5293,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5299,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5304,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5305,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5307,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5309,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5310,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5310,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5311,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5311,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5316,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5318,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5323,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 3
    argNames:
    - node
    - index
    - indexcol
    argTypes:
    - Node*
    - IndexOptInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5325
      start: 5261
    functionDepth: 2
    functionLinenumber: 5261
    functionLinenumberEnd: 5325
    functionName: fix_indexqual_operand
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - exprType
    - Assert
    - makeVar
    - equal
    - exprCollation
    - list_head
    - IsA
    - lnext
    - elog
    - copyObject
    - lfirst
    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:5344,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5347,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5347,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5348,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5355,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5363,1
    - Dst: CommuteOpExpr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5366,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5367,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5372,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5372,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5373,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 2
    argNames:
    - clauses
    - outerrelids
    argTypes:
    - List*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5378
      start: 5336
    functionDepth: 2
    functionLinenumber: 5336
    functionLinenumberEnd: 5378
    functionName: get_switched_clauses
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 2
    functionsReached:
    - Assert
    - bms_is_subset
    - list_copy
    - CommuteOpExpr
    - lappend
    - is_opclause
    - makeNode
    - lfirst
    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:5344,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5347,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5347,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5348,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5355,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5363,1
    - Dst: CommuteOpExpr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5366,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5367,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5372,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5372,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5373,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5376
      start: 5342
    functionDepth: 2
    functionLinenumber: 5342
    functionLinenumberEnd: 5376
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 115
    functionsReached:
    - Assert
    - bms_is_subset
    - list_copy
    - CommuteOpExpr
    - lappend
    - is_opclause
    - makeNode
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, clauses)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5422,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5436,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5440,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5443,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5446,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5497,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 2
    argNames:
    - root
    - clauses
    argTypes:
    - PlannerInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5500
      start: 5413
    functionDepth: 1
    functionLinenumber: 5413
    functionLinenumberEnd: 5500
    functionName: order_qual_clauses
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 23
    functionsReached:
    - cost_qual_eval_node
    - IsA
    - list_length
    - lappend
    - palloc
    - lfirst
    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:5440,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5443,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5446,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5468
      start: 5438
    functionDepth: 1
    functionLinenumber: 5438
    functionLinenumberEnd: 5468
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 115
    functionsReached:
    - cost_qual_eval_node
    - IsA
    - lfirst
    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: 5517
      start: 5507
    functionDepth: 0
    functionLinenumber: 5507
    functionLinenumberEnd: 5517
    functionName: copy_generic_path_info
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 42
    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: 5535
      start: 5523
    functionDepth: 0
    functionLinenumber: 5523
    functionLinenumberEnd: 5535
    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:5552,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5552,1
    - Dst: cost_sort
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5554,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - root
    - plan
    - limit_tuples
    argTypes:
    - PlannerInfo*
    - Sort*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5568
      start: 5546
    functionDepth: 1
    functionLinenumber: 5546
    functionLinenumberEnd: 5568
    functionName: label_sort_with_costsize
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 4
    functionsReached:
    - Assert
    - cost_sort
    - IsA
    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:5581,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5581,1
    - Dst: cost_incremental_sort
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5583,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: 5599
      start: 5574
    functionDepth: 1
    functionLinenumber: 5574
    functionLinenumberEnd: 5599
    functionName: label_incrementalsort_with_costsize
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - cost_incremental_sort
    - Assert
    - IsA
    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:5609,1
    - Dst: bitmap_subplan_mark_shared
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5610,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5610,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5611,1
    - Dst: bitmap_subplan_mark_shared
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5614,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5614,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5616,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5619,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:5619,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - plan
    argTypes:
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5620
      start: 5606
    functionDepth: 1
    functionLinenumber: 5606
    functionLinenumberEnd: 5620
    functionName: bitmap_subplan_mark_shared
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 2
    functionsReached:
    - nodeTag
    - linitial
    - IsA
    - elog
    - bitmap_subplan_mark_shared
    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:5641,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - qptlist
    - qpqual
    - scanrelid
    argTypes:
    - List*
    - List*
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5651
      start: 5636
    functionDepth: 1
    functionLinenumber: 5636
    functionLinenumberEnd: 5651
    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:5659,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - qptlist
    - qpqual
    - scanrelid
    - tsc
    argTypes:
    - List*
    - List*
    - Index
    - TableSampleClause*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5670
      start: 5653
    functionDepth: 1
    functionLinenumber: 5653
    functionLinenumberEnd: 5670
    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:5684,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: 5701
      start: 5672
    functionDepth: 1
    functionLinenumber: 5672
    functionLinenumberEnd: 5701
    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:5714,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: 5730
      start: 5703
    functionDepth: 1
    functionLinenumber: 5703
    functionLinenumberEnd: 5730
    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:5738,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - scanrelid
    - indexid
    - indexqual
    - indexqualorig
    argTypes:
    - Index
    - Oid
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5751
      start: 5732
    functionDepth: 1
    functionLinenumber: 5732
    functionLinenumberEnd: 5751
    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:5760,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: 5771
      start: 5753
    functionDepth: 1
    functionLinenumber: 5753
    functionLinenumberEnd: 5771
    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:5779,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - qptlist
    - qpqual
    - scanrelid
    - tidquals
    argTypes:
    - List*
    - List*
    - Index
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5790
      start: 5773
    functionDepth: 1
    functionLinenumber: 5773
    functionLinenumberEnd: 5790
    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:5798,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - qptlist
    - qpqual
    - scanrelid
    - tidrangequals
    argTypes:
    - List*
    - List*
    - Index
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5809
      start: 5792
    functionDepth: 1
    functionLinenumber: 5792
    functionLinenumberEnd: 5809
    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:5817,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - qptlist
    - qpqual
    - scanrelid
    - subplan
    argTypes:
    - List*
    - List*
    - Index
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5829
      start: 5811
    functionDepth: 1
    functionLinenumber: 5811
    functionLinenumberEnd: 5829
    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:5838,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: 5850
      start: 5831
    functionDepth: 1
    functionLinenumber: 5831
    functionLinenumberEnd: 5850
    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:5858,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - qptlist
    - qpqual
    - scanrelid
    - tablefunc
    argTypes:
    - List*
    - List*
    - Index
    - TableFunc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5869
      start: 5852
    functionDepth: 1
    functionLinenumber: 5852
    functionLinenumberEnd: 5869
    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:5877,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: 5888
      start: 5871
    functionDepth: 1
    functionLinenumber: 5871
    functionLinenumberEnd: 5888
    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:5897,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: 5909
      start: 5890
    functionDepth: 1
    functionLinenumber: 5890
    functionLinenumberEnd: 5909
    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:5917,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - qptlist
    - qpqual
    - scanrelid
    - enrname
    argTypes:
    - List*
    - List*
    - Index
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5929
      start: 5911
    functionDepth: 1
    functionLinenumber: 5911
    functionLinenumberEnd: 5929
    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:5937,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - qptlist
    - qpqual
    - scanrelid
    - wtParam
    argTypes:
    - List*
    - List*
    - Index
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5948
      start: 5931
    functionDepth: 1
    functionLinenumber: 5931
    functionLinenumberEnd: 5948
    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:5960,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: 5988
      start: 5950
    functionDepth: 1
    functionLinenumber: 5950
    functionLinenumberEnd: 5988
    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:5998,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6000,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6021,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6022,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6023,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6027,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6028,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6033,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6034,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6034,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 6
    argNames:
    - tlist
    - lefttree
    - righttree
    - wtParam
    - distinctList
    - numGroups
    argTypes:
    - List*
    - Plan*
    - Plan*
    - int
    - List*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6044
      start: 5990
    functionDepth: 1
    functionLinenumber: 5990
    functionLinenumberEnd: 6044
    functionName: make_recursive_union
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - exprCollation
    - Assert
    - palloc
    - list_length
    - get_sortgroupclause_tle
    - OidIsValid
    - makeNode
    - lfirst
    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 long numGroups)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6027,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6028,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6033,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6034,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6034,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6036
      start: 6025
    functionDepth: 1
    functionLinenumber: 6025
    functionLinenumberEnd: 6036
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 115
    functionsReached:
    - lfirst
    - exprCollation
    - Assert
    - OidIsValid
    - get_sortgroupclause_tle
    linkageType: ''
    returnType: void
    signature: void foreach(slitem, distinctList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6049,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - bitmapplans
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6059
      start: 6046
    functionDepth: 1
    functionLinenumber: 6046
    functionLinenumberEnd: 6059
    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:6064,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - bitmapplans
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6074
      start: 6061
    functionDepth: 1
    functionLinenumber: 6061
    functionLinenumberEnd: 6074
    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:6086,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 8
    argNames:
    - tlist
    - joinclauses
    - otherclauses
    - nestParams
    - lefttree
    - righttree
    - jointype
    - inner_unique
    argTypes:
    - List*
    - List*
    - List*
    - List*
    - Plan*
    - Plan*
    - JoinType
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6099
      start: 6076
    functionDepth: 1
    functionLinenumber: 6076
    functionLinenumberEnd: 6099
    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  bool inner_unique)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 11
    argNames:
    - tlist
    - joinclauses
    - otherclauses
    - hashclauses
    - hashoperators
    - hashcollations
    - hashkeys
    - lefttree
    - righttree
    - jointype
    - inner_unique
    argTypes:
    - List*
    - List*
    - List*
    - List*
    - List*
    - List*
    - List*
    - Plan*
    - Plan*
    - JoinType
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6130
      start: 6101
    functionDepth: 1
    functionLinenumber: 6101
    functionLinenumberEnd: 6130
    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  bool inner_unique)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6139,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: 6153
      start: 6132
    functionDepth: 1
    functionLinenumber: 6132
    functionLinenumberEnd: 6153
    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:6170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 13
    argNames:
    - tlist
    - joinclauses
    - otherclauses
    - mergeclauses
    - mergefamilies
    - mergecollations
    - mergereversals
    - mergenullsfirst
    - lefttree
    - righttree
    - jointype
    - inner_unique
    - skip_mark_restore
    argTypes:
    - List*
    - List*
    - List*
    - List*
    - Oid*
    - Oid*
    - bool*
    - bool*
    - Plan*
    - Plan*
    - JoinType
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6188
      start: 6155
    functionDepth: 1
    functionLinenumber: 6155
    functionLinenumberEnd: 6188
    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
      \  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:6204,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: 6219
      start: 6196
    functionDepth: 1
    functionLinenumber: 6196
    functionLinenumberEnd: 6219
    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:6235,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: 6250
      start: 6227
    functionDepth: 1
    functionLinenumber: 6227
    functionLinenumberEnd: 6250
    functionName: make_incrementalsort
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 0
    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:6315,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6316,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6317,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6318,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6319,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6325,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6341,1
    - Dst: get_sortgroupref_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6342,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6343,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6344,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6344,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6345,1
    - Dst: get_tle_by_resno
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6358,1
    - Dst: find_ec_member_matching_expr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6361,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6388,1
    - Dst: find_ec_member_matching_expr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6389,1
    - Dst: find_computable_ec_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6405,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6407,1
    - Dst: is_projection_capable_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6414,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6417,1
    - Dst: inject_projection_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6418,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6428,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6428,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6429,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6432,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6440,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6444,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6445,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: 6465
      start: 6293
    functionDepth: 2
    functionLinenumber: 6293
    functionLinenumberEnd: 6465
    functionName: prepare_sort_from_pathkeys
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 3
    functionsReached:
    - makeTargetEntry
    - Assert
    - inject_projection_plan
    - linitial
    - find_computable_ec_member
    - list_length
    - is_projection_capable_plan
    - elog
    - find_ec_member_matching_expr
    - copyObject
    - get_tle_by_resno
    - lappend
    - get_opfamily_member_for_cmptype
    - OidIsValid
    - palloc
    - get_sortgroupref_tle
    - lfirst
    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:6325,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6341,1
    - Dst: get_sortgroupref_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6342,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6343,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6344,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6344,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6345,1
    - Dst: get_tle_by_resno
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6358,1
    - Dst: find_ec_member_matching_expr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6361,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6388,1
    - Dst: find_ec_member_matching_expr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6389,1
    - Dst: find_computable_ec_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6405,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6407,1
    - Dst: is_projection_capable_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6414,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6417,1
    - Dst: inject_projection_plan
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6418,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6428,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6428,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6429,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6432,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6440,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6444,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6445,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6455
      start: 6323
    functionDepth: 2
    functionLinenumber: 6323
    functionLinenumberEnd: 6455
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 115
    functionsReached:
    - makeTargetEntry
    - Assert
    - linitial
    - find_computable_ec_member
    - list_length
    - is_projection_capable_plan
    - elog
    - find_ec_member_matching_expr
    - copyObject
    - get_tle_by_resno
    - lappend
    - get_opfamily_member_for_cmptype
    - OidIsValid
    - inject_projection_plan
    - get_sortgroupref_tle
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(i, pathkeys)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6388,1
    - Dst: find_ec_member_matching_expr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6389,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6397
      start: 6386
    functionDepth: 1
    functionLinenumber: 6386
    functionLinenumberEnd: 6397
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 115
    functionsReached:
    - find_ec_member_matching_expr
    - lfirst
    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:6485,1
    - Dst: make_sort
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - lefttree
    - pathkeys
    - relids
    argTypes:
    - Plan*
    - List*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6499
      start: 6475
    functionDepth: 3
    functionLinenumber: 6475
    functionLinenumberEnd: 6499
    functionName: make_sort_from_pathkeys
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 2
    functionsReached:
    - make_sort
    - prepare_sort_from_pathkeys
    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:6521,1
    - Dst: make_incrementalsort
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6532,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - lefttree
    - pathkeys
    - relids
    - nPresortedCols
    argTypes:
    - Plan*
    - List*
    - Relids
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6535
      start: 6510
    functionDepth: 3
    functionLinenumber: 6510
    functionLinenumberEnd: 6535
    functionName: make_incrementalsort_from_pathkeys
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 2
    functionsReached:
    - make_incrementalsort
    - prepare_sort_from_pathkeys
    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:6556,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6557,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6558,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6559,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6560,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6565,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6566,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6570,1
    - Dst: make_sort
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 2
    argNames:
    - sortcls
    - lefttree
    argTypes:
    - List*
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6578
      start: 6544
    functionDepth: 2
    functionLinenumber: 6544
    functionLinenumberEnd: 6578
    functionName: make_sort_from_sortclauses
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - lfirst
    - exprCollation
    - list_length
    - make_sort
    - palloc
    - get_sortgroupclause_tle
    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:6565,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6566,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6570,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6573
      start: 6563
    functionDepth: 1
    functionLinenumber: 6563
    functionLinenumberEnd: 6573
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 115
    functionsReached:
    - exprCollation
    - get_sortgroupclause_tle
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, sortcls)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6607,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6608,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6609,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6610,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6611,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6616,1
    - Dst: get_tle_by_resno
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6617,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6620,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6624,1
    - Dst: make_sort
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6629,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - groupcls
    - grpColIdx
    - lefttree
    argTypes:
    - List*
    - AttrNumber*
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6632
      start: 6593
    functionDepth: 2
    functionLinenumber: 6593
    functionLinenumberEnd: 6632
    functionName: make_sort_from_groupcols
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - exprCollation
    - list_length
    - elog
    - get_tle_by_resno
    - make_sort
    - palloc
    - lfirst
    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:6616,1
    - Dst: get_tle_by_resno
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6617,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6620,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6624,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6627
      start: 6614
    functionDepth: 1
    functionLinenumber: 6614
    functionLinenumberEnd: 6627
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 115
    functionsReached:
    - get_tle_by_resno
    - elog
    - 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:6637,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - lefttree
    argTypes:
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6646
      start: 6634
    functionDepth: 1
    functionLinenumber: 6634
    functionLinenumberEnd: 6646
    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:6664,1
    - Dst: SS_compute_initplan_cost
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6676,1
    - Dst: cost_material
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6682,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - subplan
    argTypes:
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6697
      start: 6656
    functionDepth: 2
    functionLinenumber: 6656
    functionLinenumberEnd: 6697
    functionName: materialize_finished_plan
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 2
    functionsReached:
    - SS_compute_initplan_cost
    - make_material
    - cost_material
    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:6704,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6712,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 8
    argNames:
    - lefttree
    - hashoperators
    - collations
    - param_exprs
    - singlerow
    - binary_mode
    - est_entries
    - keyparamids
    argTypes:
    - Plan*
    - Oid*
    - Oid*
    - List*
    - bool
    - bool
    - uint32
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6722
      start: 6699
    functionDepth: 1
    functionLinenumber: 6699
    functionLinenumberEnd: 6722
    functionName: make_memoize
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - makeNode
    - list_length
    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)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6731,1
    - Dst: clamp_cardinality_to_long
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6736,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 13
    argNames:
    - tlist
    - qual
    - aggstrategy
    - aggsplit
    - numGroupCols
    - grpColIdx
    - grpOperators
    - grpCollations
    - groupingSets
    - chain
    - dNumGroups
    - transitionSpace
    - lefttree
    argTypes:
    - List*
    - List*
    - AggStrategy
    - AggSplit
    - int
    - AttrNumber*
    - Oid*
    - Oid*
    - List*
    - List*
    - double
    - Size
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6756
      start: 6724
    functionDepth: 1
    functionLinenumber: 6724
    functionLinenumberEnd: 6756
    functionName: make_agg
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 3
    functionsReached:
    - makeNode
    - clamp_cardinality_to_long
    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, double dNumGroups,\n\t\t
      Size transitionSpace, Plan *lefttree)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6764,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: 6796
      start: 6758
    functionDepth: 1
    functionLinenumber: 6758
    functionLinenumberEnd: 6796
    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:6807,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: 6821
      start: 6798
    functionDepth: 1
    functionLinenumber: 6798
    functionLinenumberEnd: 6821
    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: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6831,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6833,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6849,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6850,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6851,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6852,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6856,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6857,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6861,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6862,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6862,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 2
    argNames:
    - lefttree
    - distinctList
    argTypes:
    - Plan*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6872
      start: 6828
    functionDepth: 1
    functionLinenumber: 6828
    functionLinenumberEnd: 6872
    functionName: make_unique_from_sortclauses
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - exprCollation
    - palloc
    - list_length
    - get_sortgroupclause_tle
    - OidIsValid
    - makeNode
    - lfirst
    linkageType: ''
    returnType: Unique
    signature: 'Unique *

      make_unique_from_sortclauses(Plan *lefttree, List *distinctList)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6856,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6857,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6861,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6862,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6862,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6864
      start: 6854
    functionDepth: 1
    functionLinenumber: 6854
    functionLinenumberEnd: 6864
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 115
    functionsReached:
    - lfirst
    - exprCollation
    - Assert
    - OidIsValid
    - get_sortgroupclause_tle
    linkageType: ''
    returnType: void
    signature: void foreach(slitem, distinctList)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6880,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6898,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6898,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6899,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6900,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6901,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6905,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6925,1
    - Dst: get_sortgroupref_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6926,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6927,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6928,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6928,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6929,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6938,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6940,1
    - Dst: find_ec_member_matching_expr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6941,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6953,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6959,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6963,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6964,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 44
    argCount: 3
    argNames:
    - lefttree
    - pathkeys
    - numCols
    argTypes:
    - Plan*
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6981
      start: 6877
    functionDepth: 1
    functionLinenumber: 6877
    functionLinenumberEnd: 6981
    functionName: make_unique_from_pathkeys
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - palloc
    - linitial
    - list_length
    - foreach
    - elog
    - find_ec_member_matching_expr
    - get_opfamily_member_for_cmptype
    - OidIsValid
    - makeNode
    - get_sortgroupref_tle
    - lfirst
    linkageType: ''
    returnType: Unique
    signature: 'Unique *

      make_unique_from_pathkeys(Plan *lefttree, List *pathkeys, int numCols)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6905,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6925,1
    - Dst: get_sortgroupref_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6926,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6927,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6928,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6928,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6929,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6938,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6940,1
    - Dst: find_ec_member_matching_expr
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6941,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6953,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6959,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6963,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6964,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6973
      start: 6903
    functionDepth: 1
    functionLinenumber: 6903
    functionLinenumberEnd: 6973
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 117
    functionsReached:
    - Assert
    - linitial
    - list_length
    - foreach
    - elog
    - find_ec_member_matching_expr
    - get_opfamily_member_for_cmptype
    - OidIsValid
    - get_sortgroupref_tle
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, pathkeys)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:6991,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: 7005
      start: 6983
    functionDepth: 1
    functionLinenumber: 6983
    functionLinenumberEnd: 7005
    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:7017,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7019,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7036,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7037,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7038,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7039,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7043,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7044,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7051,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7051,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7052,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 27
    argCount: 7
    argNames:
    - cmd
    - strategy
    - tlist
    - lefttree
    - righttree
    - groupList
    - numGroups
    argTypes:
    - SetOpCmd
    - SetOpStrategy
    - List*
    - Plan*
    - Plan*
    - List*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7067
      start: 7012
    functionDepth: 1
    functionLinenumber: 7012
    functionLinenumberEnd: 7067
    functionName: make_setop
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - exprCollation
    - palloc
    - list_length
    - get_sortgroupclause_tle
    - OidIsValid
    - makeNode
    - lfirst
    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, long numGroups)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7043,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7044,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7051,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7051,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7052,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7055
      start: 7041
    functionDepth: 1
    functionLinenumber: 7041
    functionLinenumberEnd: 7055
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 117
    functionsReached:
    - lfirst
    - Assert
    - exprCollation
    - OidIsValid
    - get_sortgroupclause_tle
    linkageType: ''
    returnType: void
    signature: void foreach(slitem, groupList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7076,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - lefttree
    - rowMarks
    - epqParam
    argTypes:
    - Plan*
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7088
      start: 7073
    functionDepth: 1
    functionLinenumber: 7073
    functionLinenumberEnd: 7088
    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:7099,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: 7116
      start: 7094
    functionDepth: 1
    functionLinenumber: 7094
    functionLinenumberEnd: 7116
    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:7127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - tlist
    - resconstantqual
    - subplan
    argTypes:
    - List*
    - Node*
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7137
      start: 7122
    functionDepth: 1
    functionLinenumber: 7122
    functionLinenumberEnd: 7137
    functionName: make_result
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 7
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: Result
    signature: "Result *\nmake_result(List *tlist,\n\t\t\tNode *resconstantqual,\n\t\t\tPlan
      *subplan)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - tlist
    - subplan
    argTypes:
    - List*
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7156
      start: 7143
    functionDepth: 1
    functionLinenumber: 7143
    functionLinenumberEnd: 7156
    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: 11
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7174,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7182,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7184,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7184,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7186,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7187,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7187,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7188,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7189,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7189,1
    - Dst: extract_update_targetlist_colnos
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7225,1
    - Dst: infer_arbiter_indexes
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7234,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7258,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7279,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7285,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7288,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7289,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7290,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7291,1
    - Dst: GetFdwRoutineByRelId
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7294,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7309,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7311,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7312,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7313,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7314,1
    - Dst: errdetail_relkind_not_supported
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7315,1
    - Dst: has_row_triggers
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7333,1
    - Dst: has_stored_generated_columns
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7334,1
    - Dst: contain_vars_returning_old_or_new
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7340,1
    - Dst: FdwRoutine*::PlanDirectModify
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7345,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7348,1
    - Dst: FdwRoutine*::PlanForeignModify
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7353,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7356,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 78
    argCount: 16
    argNames:
    - root
    - subplan
    - operation
    - canSetTag
    - nominalRelation
    - rootRelation
    - partColsUpdated
    - resultRelations
    - updateColnosLists
    - withCheckOptionLists
    - returningLists
    - rowMarks
    - onconflict
    - mergeActionLists
    - mergeJoinConditions
    - epqParam
    argTypes:
    - PlannerInfo*
    - Plan*
    - CmdType
    - bool
    - Index
    - Index
    - bool
    - List*
    - List*
    - List*
    - List*
    - List*
    - OnConflictExpr*
    - List*
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7363
      start: 7162
    functionDepth: 1
    functionLinenumber: 7162
    functionLinenumberEnd: 7363
    functionName: make_modifytable
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - list_length
    - makeNode
    - has_row_triggers
    - lfirst_int
    - infer_arbiter_indexes
    - get_rel_name
    - FdwRoutine*::PlanForeignModify
    - errmsg
    - errdetail_relkind_not_supported
    - extract_update_targetlist_colnos
    - lappend
    - has_stored_generated_columns
    - contain_vars_returning_old_or_new
    - bms_add_member
    - Assert
    - planner_rt_fetch
    - ereport
    - FdwRoutine*::PlanDirectModify
    - unlikely
    - GetFdwRoutineByRelId
    - errcode
    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
      bool partColsUpdated,\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
      int epqParam)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7258,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7279,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7285,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7288,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7289,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7290,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7291,1
    - Dst: GetFdwRoutineByRelId
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7294,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7309,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7311,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7312,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7313,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7314,1
    - Dst: errdetail_relkind_not_supported
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7315,1
    - Dst: has_row_triggers
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7333,1
    - Dst: has_stored_generated_columns
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7334,1
    - Dst: contain_vars_returning_old_or_new
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7340,1
    - Dst: FdwRoutine*::PlanDirectModify
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7345,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7348,1
    - Dst: FdwRoutine*::PlanForeignModify
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7353,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7356,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7358
      start: 7256
    functionDepth: 1
    functionLinenumber: 7256
    functionLinenumberEnd: 7358
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 117
    functionsReached:
    - errmsg
    - errcode
    - Assert
    - get_rel_name
    - errdetail_relkind_not_supported
    - contain_vars_returning_old_or_new
    - planner_rt_fetch
    - ereport
    - FdwRoutine*::PlanDirectModify
    - FdwRoutine*::PlanForeignModify
    - unlikely
    - lappend
    - has_stored_generated_columns
    - GetFdwRoutineByRelId
    - has_row_triggers
    - lfirst_int
    - 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:7389,1
    - Dst: IS_DUMMY_APPEND
      Src: /src/postgres/src/backend/optimizer/plan/createplan.c:7399,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 1
    argNames:
    - path
    argTypes:
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7413
      start: 7369
    functionDepth: 1
    functionLinenumber: 7369
    functionLinenumberEnd: 7413
    functionName: is_projection_capable_path
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/createplan.c
    functionUses: 1
    functionsReached:
    - IS_DUMMY_APPEND
    - castNode
    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:7423,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 1
    argNames:
    - plan
    argTypes:
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7455
      start: 7419
    functionDepth: 1
    functionLinenumber: 7419
    functionLinenumberEnd: 7455
    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:162,1
    - Dst: build_simple_rel
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:166,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:168,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:173,1
    - Dst: add_base_rels_to_query
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:174,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:174,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:176,1
    - Dst: add_base_rels_to_query
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:180,1
    - Dst: add_base_rels_to_query
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:181,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:184,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:185,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - root
    - jtnode
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 186
    functionName: add_base_rels_to_query
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 2
    functionsReached:
    - nodeTag
    - IsA
    - foreach
    - elog
    - build_simple_rel
    - add_base_rels_to_query
    - lfirst
    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:215,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 217
    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:237,1
    - Dst: add_vars_to_targetlist
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:244,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:244,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:245,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:254,1
    - Dst: add_vars_to_targetlist
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:260,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:261,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:262,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - root
    - final_tlist
    argTypes:
    - PlannerInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 265
    functionName: build_base_rel_tlists
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - bms_make_singleton
    - add_vars_to_targetlist
    - list_free
    - pull_var_clause
    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:287,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:287,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:291,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:293,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:296,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:299,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:301,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:312,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:314,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:317,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:320,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:323,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:325,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:329,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:329,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - root
    - vars
    - where_needed
    argTypes:
    - PlannerInfo*
    - List*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 331
    functionName: add_vars_to_targetlist
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - nodeTag
    - Assert
    - bms_is_subset
    - bms_add_members
    - bms_is_empty
    - IsA
    - find_base_rel
    - elog
    - lappend
    - copyObject
    - find_placeholder_info
    - lfirst
    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:291,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:293,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:296,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:299,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:301,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:312,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:314,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:317,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:320,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:323,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:325,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:329,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:329,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 330
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 118
    functionsReached:
    - nodeTag
    - Assert
    - bms_is_subset
    - bms_add_members
    - IsA
    - find_base_rel
    - elog
    - lappend
    - copyObject
    - find_placeholder_info
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(temp, vars)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:358,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:358,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:362,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:364,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:367,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:370,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:372,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:374,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:377,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:380,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:382,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:386,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:386,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - root
    - vars
    - where_needed
    argTypes:
    - PlannerInfo*
    - List*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 352
    functionDepth: 1
    functionLinenumber: 352
    functionLinenumberEnd: 388
    functionName: add_vars_to_attr_needed
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 0
    functionsReached:
    - nodeTag
    - Assert
    - bms_is_subset
    - bms_add_members
    - bms_is_empty
    - IsA
    - find_base_rel
    - elog
    - find_placeholder_info
    - lfirst
    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:362,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:364,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:367,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:370,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:372,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:374,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:377,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:380,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:382,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:386,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:386,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 360
    functionDepth: 1
    functionLinenumber: 360
    functionLinenumberEnd: 387
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 118
    functionsReached:
    - nodeTag
    - Assert
    - bms_is_subset
    - bms_add_members
    - IsA
    - find_base_rel
    - elog
    - find_placeholder_info
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(temp, vars)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:422,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:434,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:435,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:436,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:438,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:439,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:450,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:456,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:456,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:463,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:464,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:483,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:485,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:507,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:517,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:547,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:555,1
    - Dst: bms_subset_compare
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:567,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:586,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:593,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:594,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:597,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:610,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:612,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:613,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:620,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:622,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:624,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 64
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 411
    functionDepth: 1
    functionLinenumber: 411
    functionLinenumberEnd: 629
    functionName: remove_useless_groupby_columns
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - bms_subset_compare
    - foreach_node
    - lfirst_node
    - bms_is_empty
    - IsA
    - palloc0
    - foreach
    - list_length
    - lappend
    - bms_is_member
    - bms_membership
    - bms_difference
    - get_sortgroupclause_tle
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: void remove_useless_groupby_columns(PlannerInfo *root)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:677,1
    - Dst: extract_lateral_references
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:701,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 657
    functionDepth: 1
    functionLinenumber: 657
    functionLinenumberEnd: 703
    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:720,1
    - Dst: pull_vars_of_level
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:722,1
    - Dst: pull_vars_of_level
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:724,1
    - Dst: pull_vars_of_level
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:726,1
    - Dst: pull_vars_of_level
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:728,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:731,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:742,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:744,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:745,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:752,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:759,1
    - Dst: preprocess_phv_expression
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:767,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:770,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:771,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:774,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:783,1
    - Dst: add_vars_to_targetlist
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:789,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 3
    argNames:
    - root
    - brel
    - rtindex
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 796
      start: 705
    functionDepth: 3
    functionLinenumber: 705
    functionLinenumberEnd: 796
    functionName: extract_lateral_references
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - preprocess_phv_expression
    - bms_make_singleton
    - add_vars_to_targetlist
    - IsA
    - IncrementVarSublevelsUp
    - pull_vars_of_level
    - lappend
    - copyObject
    - lfirst
    - list_free
    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:742,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:744,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:745,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:752,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:759,1
    - Dst: preprocess_phv_expression
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:767,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:770,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:771,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 740
    functionDepth: 3
    functionLinenumber: 740
    functionLinenumberEnd: 772
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 119
    functionsReached:
    - lfirst
    - Assert
    - IsA
    - IncrementVarSublevelsUp
    - lappend
    - copyObject
    - preprocess_phv_expression
    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:833,1
    - Dst: add_vars_to_attr_needed
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:835,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 806
    functionDepth: 2
    functionLinenumber: 806
    functionLinenumberEnd: 837
    functionName: rebuild_lateral_attr_needed
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 2
    functionsReached:
    - bms_make_singleton
    - add_vars_to_attr_needed
    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:856,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:870,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:879,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:881,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:883,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:888,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:891,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:894,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:897,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:901,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:906,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:922,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:924,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:940,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:941,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:941,1
    - Dst: bms_get_singleton_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:943,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:946,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:949,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:952,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:959,1
    - Dst: find_base_rel_ignore_join
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:961,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:965,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1015,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1016,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1037,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1041,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1041,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1045,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1052,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1054,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 75
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 844
    functionDepth: 1
    functionLinenumber: 844
    functionLinenumberEnd: 1057
    functionName: create_lateral_join_info
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - bms_add_members
    - bms_copy
    - bms_get_singleton_member
    - bms_is_empty
    - find_base_rel_ignore_join
    - bms_is_member
    - IsA
    - foreach
    - find_base_rel
    - find_placeholder_info
    - bms_next_member
    - lfirst
    - bms_intersect
    - bms_add_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:1099,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1103,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1104,1
    - Dst: deconstruct_recurse
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1111,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1116,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1119,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1119,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1124,1
    - Dst: deconstruct_distribute
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1126,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1137,1
    - Dst: deconstruct_distribute_oj_quals
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1140,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1145,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1148
      start: 1083
    functionDepth: 1
    functionLinenumber: 1083
    functionLinenumberEnd: 1148
    functionName: deconstruct_jointree
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - Assert
    - list_free_deep
    - IsA
    - bms_union
    - bms_equal
    - deconstruct_recurse
    - deconstruct_distribute
    - deconstruct_distribute_oj_quals
    - lfirst
    - linitial_node
    linkageType: ''
    returnType: List
    signature: 'List *

      deconstruct_jointree(PlannerInfo *root)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1124,1
    - Dst: deconstruct_distribute
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1122
    functionDepth: 1
    functionLinenumber: 1122
    functionLinenumberEnd: 1127
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 120
    functionsReached:
    - lfirst
    - deconstruct_distribute
    linkageType: ''
    returnType: void
    signature: void foreach(lc, item_list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1137,1
    - Dst: deconstruct_distribute_oj_quals
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1141
      start: 1135
    functionDepth: 1
    functionLinenumber: 1135
    functionLinenumberEnd: 1141
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 120
    functionsReached:
    - deconstruct_distribute_oj_quals
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, item_list)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1174,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1177,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1181,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1186,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1189,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1192,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1195,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1197,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1216,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1217,1
    - Dst: deconstruct_recurse
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1223,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1223,1
    - Dst: llast
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1227,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1228,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1231,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1234,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1235,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1237,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1247,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1250,1
    - Dst: deconstruct_recurse
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1266,1
    - Dst: llast
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1270,1
    - Dst: deconstruct_recurse
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1271,1
    - Dst: llast
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1275,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1277,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1288,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1290,1
    - Dst: deconstruct_recurse
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1293,1
    - Dst: llast
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1297,1
    - Dst: deconstruct_recurse
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1298,1
    - Dst: llast
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1302,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1305,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1307,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1313,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1315,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1317,1
    - Dst: mark_rels_nulled_by_join
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1319,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1322,1
    - Dst: deconstruct_recurse
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1332,1
    - Dst: llast
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1336,1
    - Dst: deconstruct_recurse
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1337,1
    - Dst: llast
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1341,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1343,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1346,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1347,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1356,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1357,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1360,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1362,1
    - Dst: deconstruct_recurse
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1363,1
    - Dst: llast
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1367,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1368,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1369,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1371,1
    - Dst: deconstruct_recurse
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1372,1
    - Dst: llast
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1376,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1378,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1380,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1382,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1384,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1385,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1387,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1389,1
    - Dst: mark_rels_nulled_by_join
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1391,1
    - Dst: mark_rels_nulled_by_join
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1393,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1395,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1404,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1417,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1417,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1419,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1419,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1423,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1432,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1433,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1436,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1437,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1440,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1445,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1446,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1451,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: 1454
      start: 1165
    functionDepth: 1
    functionLinenumber: 1165
    functionLinenumberEnd: 1454
    functionName: deconstruct_recurse
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 2
    functionsReached:
    - palloc0_object
    - bms_copy
    - list_length
    - bms_union
    - deconstruct_recurse
    - makeNode
    - list_concat
    - foreach
    - mark_rels_nulled_by_join
    - nodeTag
    - linitial
    - llast
    - IsA
    - elog
    - lappend
    - lfirst
    - bms_add_member
    - Assert
    - bms_add_members
    - list_make2
    - bms_make_singleton
    - list_make1
    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:1468,1
    - Dst: process_security_barrier_quals
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1474,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1478,1
    - Dst: distribute_quals_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1486,1
    - Dst: distribute_quals_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1498,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1507,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1521,1
    - Dst: make_outerjoininfo
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1533,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1544,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1573,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1574,1
    - Dst: distribute_quals_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1580,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1593,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1597,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1598,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 2
    argNames:
    - root
    - jtitem
    argTypes:
    - PlannerInfo*
    - JoinTreeItem*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1600
      start: 1463
    functionDepth: 1
    functionLinenumber: 1463
    functionLinenumberEnd: 1600
    functionName: deconstruct_distribute
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 2
    functionsReached:
    - nodeTag
    - distribute_quals_to_rels
    - list_concat
    - bms_add_members
    - make_outerjoininfo
    - process_security_barrier_quals
    - IsA
    - bms_union
    - elog
    - lappend
    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:1629,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1631,1
    - Dst: distribute_quals_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1639,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1654,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - root
    - rti
    - jtitem
    argTypes:
    - PlannerInfo*
    - int
    - JoinTreeItem*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1655
      start: 1615
    functionDepth: 1
    functionLinenumber: 1615
    functionLinenumberEnd: 1655
    functionName: process_security_barrier_quals
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - distribute_quals_to_rels
    - Assert
    - lfirst
    - foreach
    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:1671,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1681,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1681,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1684,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - root
    - ojrelid
    - lower_rels
    argTypes:
    - PlannerInfo*
    - Index
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1686
      start: 1665
    functionDepth: 1
    functionLinenumber: 1665
    functionLinenumberEnd: 1686
    functionName: mark_rels_nulled_by_join
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - bms_is_member
    - Assert
    - bms_next_member
    - bms_add_member
    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:1714,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1727,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1728,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1745,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1747,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1749,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1750,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1751,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1752,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1755,1
    - Dst: LCS_asString
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1756,1
    - Dst: compute_semijoin_info
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1769,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1774,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1775,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1783,1
    - Dst: find_nonnullable_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1789,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1792,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1798,1
    - Dst: bms_int_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1804,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1804,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1817,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1819,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1829,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1830,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1831,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1833,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1835,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1837,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1840,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1841,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1843,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1845,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1847,1
    - Dst: contain_placeholder_references_to
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1860,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1884,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1886,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1889,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1892,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1894,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1897,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1902,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1903,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1906,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1909,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1931,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1933,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1934,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1943,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1945,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1948,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1956,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1960,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1973,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1975,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1979,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1983,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1992,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1993,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1994,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1995,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1998,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1998,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1999,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:1999,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2001,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2001,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2015,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2016,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2024,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2026,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2028,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2030,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2031,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2033,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: 2038
      start: 1707
    functionDepth: 1
    functionLinenumber: 1707
    functionLinenumberEnd: 2038
    functionName: make_outerjoininfo
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - bms_overlap
    - bms_copy
    - LCS_asString
    - bms_union
    - find_nonnullable_rels
    - makeNode
    - bms_intersect
    - contain_placeholder_references_to
    - bms_is_empty
    - foreach
    - bms_int_members
    - compute_semijoin_info
    - errmsg
    - bms_del_member
    - bms_is_subset
    - bms_del_members
    - bms_is_member
    - pull_varnos
    - lfirst
    - bms_add_member
    - Assert
    - bms_add_members
    - ereport
    - errcode
    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:2098,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2108,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2109,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2112,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2113,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2114,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2121,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2131,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2132,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2133,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2134,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2135,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2136,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2139,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2140,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2146,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2152,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2153,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2154,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2158,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2159,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2160,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2163,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2164,1
    - Dst: op_mergejoinable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2178,1
    - Dst: get_mergejoin_opfamilies
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2179,1
    - Dst: op_hashjoinable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2185,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2192,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2193,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2193,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2203,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 63
    argCount: 3
    argNames:
    - root
    - sjinfo
    - clause
    argTypes:
    - PlannerInfo*
    - SpecialJoinInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2214
      start: 2047
    functionDepth: 1
    functionLinenumber: 2047
    functionLinenumberEnd: 2214
    functionName: compute_semijoin_info
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - bms_overlap
    - list_length
    - bms_union
    - contain_volatile_functions
    - op_mergejoinable
    - exprType
    - bms_is_empty
    - op_hashjoinable
    - lsecond
    - get_mergejoin_opfamilies
    - bms_is_subset
    - linitial
    - IsA
    - lappend
    - OidIsValid
    - lfirst
    - get_commutator
    - pull_varnos
    - lappend_oid
    - copyObject
    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:2098,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2108,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2109,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2112,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2113,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2114,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2121,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2131,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2132,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2133,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2134,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2135,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2136,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2139,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2140,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2146,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2152,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2153,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2154,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2158,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2159,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2160,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2163,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2164,1
    - Dst: op_mergejoinable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2178,1
    - Dst: get_mergejoin_opfamilies
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2179,1
    - Dst: op_hashjoinable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2185,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2192,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2193,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2193,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2194
      start: 2096
    functionDepth: 1
    functionLinenumber: 2096
    functionLinenumberEnd: 2194
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 123
    functionsReached:
    - bms_overlap
    - list_length
    - bms_union
    - contain_volatile_functions
    - op_mergejoinable
    - exprType
    - bms_is_empty
    - op_hashjoinable
    - lsecond
    - get_mergejoin_opfamilies
    - bms_is_subset
    - linitial
    - IsA
    - lappend
    - OidIsValid
    - lfirst
    - get_commutator
    - pull_varnos
    - lappend_oid
    - copyObject
    linkageType: ''
    returnType: void
    signature: void foreach(lc, clause)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2236,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2237,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2238,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2248,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2282,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2283,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2292,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2293,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2309,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2322,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2330,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2330,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2332,1
    - Dst: add_nulling_relids
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2362,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2364,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2365,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2370,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2371,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2375,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2377,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2380,1
    - Dst: distribute_quals_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2403,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2409,1
    - Dst: add_nulling_relids
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2427,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2429,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2430,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2435,1
    - Dst: distribute_quals_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2441,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 54
    argCount: 3
    argNames:
    - root
    - jtitems
    - jtitem
    argTypes:
    - PlannerInfo*
    - List*
    - JoinTreeItem*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2452
      start: 2225
    functionDepth: 1
    functionLinenumber: 2225
    functionLinenumberEnd: 2452
    functionName: deconstruct_distribute_oj_quals
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 2
    functionsReached:
    - distribute_quals_to_rels
    - Assert
    - bms_del_member
    - bms_copy
    - remove_nulling_relids
    - bms_is_empty
    - bms_make_singleton
    - bms_union
    - bms_equal
    - bms_is_member
    - lfirst
    - add_nulling_relids
    - bms_add_member
    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:2309,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2322,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2330,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2330,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2332,1
    - Dst: add_nulling_relids
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2362,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2364,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2365,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2370,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2371,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2375,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2377,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2380,1
    - Dst: distribute_quals_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2403,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2409,1
    - Dst: add_nulling_relids
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2427,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2429,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2430,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2435,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2436
      start: 2307
    functionDepth: 1
    functionLinenumber: 2307
    functionLinenumberEnd: 2436
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 123
    functionsReached:
    - distribute_quals_to_rels
    - Assert
    - bms_del_member
    - bms_copy
    - bms_make_singleton
    - bms_union
    - bms_equal
    - bms_is_member
    - lfirst
    - add_nulling_relids
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: void foreach(lc, jtitems)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2484,1
    - Dst: distribute_qual_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2486,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: 2499
      start: 2466
    functionDepth: 1
    functionLinenumber: 2466
    functionLinenumberEnd: 2499
    functionName: distribute_quals_to_rels
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 4
    functionsReached:
    - distribute_qual_to_rels
    - lfirst
    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:2484,1
    - Dst: distribute_qual_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2498
      start: 2482
    functionDepth: 1
    functionLinenumber: 2482
    functionLinenumberEnd: 2498
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 123
    functionsReached:
    - distribute_qual_to_rels
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, clauses)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2568,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2582,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2586,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2587,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2590,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2592,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2601,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2603,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2610,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2611,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2633,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2638,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2641,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2644,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2658,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2659,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2661,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2701,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2712,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2734,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2736,1
    - Dst: check_redundant_nullability_qual
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2752,1
    - Dst: make_restrictinfo
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2768,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2800,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2802,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2809,1
    - Dst: add_vars_to_targetlist
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2812,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2813,1
    - Dst: check_mergejoinable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2821,1
    - Dst: process_equivalence
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2859,1
    - Dst: initialize_mergeclause_eclasses
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2863,1
    - Dst: initialize_mergeclause_eclasses
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2869,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2871,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2872,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2874,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2878,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2882,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2886,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2888,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2892,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2896,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2903,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2907,1
    - Dst: initialize_mergeclause_eclasses
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2916,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2921,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: 2922
      start: 2544
    functionDepth: 2
    functionLinenumber: 2544
    functionLinenumberEnd: 2922
    functionName: distribute_qual_to_rels
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 2
    functionsReached:
    - bms_overlap
    - bms_copy
    - process_equivalence
    - check_mergejoinable
    - contain_volatile_functions
    - makeNode
    - bms_intersect
    - bms_is_empty
    - add_vars_to_targetlist
    - bms_is_subset
    - linitial
    - initialize_mergeclause_eclasses
    - elog
    - lappend
    - pull_varnos
    - list_free
    - Assert
    - make_restrictinfo
    - check_redundant_nullability_qual
    - distribute_restrictinfo_to_rels
    - bms_membership
    - pull_var_clause
    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:2941,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2954,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2956,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2964,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - root
    - clause
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2969
      start: 2934
    functionDepth: 1
    functionLinenumber: 2934
    functionLinenumberEnd: 2969
    functionName: check_redundant_nullability_qual
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - bms_is_member
    - find_forced_null_var
    - lfirst
    - 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:2983,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2986,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:2986,1
    - Dst: restriction_is_always_true
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3006,1
    - Dst: restriction_is_always_false
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3019,1
    - Dst: make_restrictinfo
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3024,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3025,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3040,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3043,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - root
    - relid
    - restrictinfo
    argTypes:
    - PlannerInfo*
    - Index
    - RestrictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3045
      start: 2979
    functionDepth: 1
    functionLinenumber: 2979
    functionLinenumberEnd: 3045
    functionName: add_base_clause_to_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 0
    functionsReached:
    - Min
    - Assert
    - make_restrictinfo
    - restriction_is_always_true
    - restriction_is_always_false
    - find_base_rel
    - lappend
    - bms_membership
    - makeBoolConst
    linkageType: ''
    returnType: void
    signature: "void add_base_clause_to_rel(PlannerInfo *root, Index relid,\n\t\t\t\t\t
      \  RestrictInfo *restrictinfo)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3061,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3067,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3075,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3077,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - root
    - expr
    argTypes:
    - PlannerInfo*
    - Expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3081
      start: 3054
    functionDepth: 1
    functionLinenumber: 3054
    functionLinenumberEnd: 3081
    functionName: expr_is_nonnullable
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 0
    functionsReached:
    - find_base_rel
    - bms_is_empty
    - bms_is_member
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool expr_is_nonnullable(PlannerInfo *root, Expr *expr)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3104,1
    - Dst: expr_is_nonnullable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3119,1
    - Dst: restriction_is_or_clause
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3123,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3127,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3127,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3133,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3135,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3137,1
    - Dst: restriction_is_always_true
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3140,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 2
    argNames:
    - root
    - restrictinfo
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3146
      start: 3090
    functionDepth: 2
    functionLinenumber: 3090
    functionLinenumberEnd: 3146
    functionName: restriction_is_always_true
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 2
    functionsReached:
    - Assert
    - restriction_is_always_true
    - is_orclause
    - IsA
    - foreach
    - restriction_is_or_clause
    - lfirst
    - expr_is_nonnullable
    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:3169,1
    - Dst: expr_is_nonnullable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3184,1
    - Dst: restriction_is_or_clause
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3188,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3192,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3192,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3203,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3205,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3207,1
    - Dst: restriction_is_always_false
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3208,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - root
    - restrictinfo
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3215
      start: 3155
    functionDepth: 2
    functionLinenumber: 3155
    functionLinenumberEnd: 3215
    functionName: restriction_is_always_false
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 2
    functionsReached:
    - Assert
    - is_orclause
    - IsA
    - foreach
    - restriction_is_always_false
    - restriction_is_or_clause
    - lfirst
    - expr_is_nonnullable
    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:3232,1
    - Dst: bms_get_singleton_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3236,1
    - Dst: add_base_clause_to_rel
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3242,1
    - Dst: check_hashjoinable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3255,1
    - Dst: check_memoizable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3262,1
    - Dst: add_join_clause_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3267,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3276,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - root
    - restrictinfo
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3278
      start: 3226
    functionDepth: 2
    functionLinenumber: 3226
    functionLinenumberEnd: 3278
    functionName: distribute_restrictinfo_to_rels
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 5
    functionsReached:
    - add_join_clause_to_rels
    - bms_get_singleton_member
    - bms_is_empty
    - check_memoizable
    - elog
    - add_base_clause_to_rel
    - check_hashjoinable
    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:3330,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3333,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3334,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3341,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3344,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3348,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3349,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3361,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3362,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3362,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3370,1
    - Dst: get_join_domain_min_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3373,1
    - Dst: make_restrictinfo
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3383,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3410,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3412,1
    - Dst: add_vars_to_targetlist
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3417,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3418,1
    - Dst: check_mergejoinable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3426,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3437,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: 3440
      start: 3311
    functionDepth: 3
    functionLinenumber: 3311
    functionLinenumberEnd: 3440
    functionName: process_implied_equality
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 0
    functionsReached:
    - Assert
    - make_restrictinfo
    - bms_is_subset
    - list_free
    - bms_is_empty
    - get_join_domain_min_rels
    - add_vars_to_targetlist
    - IsA
    - check_mergejoinable
    - distribute_restrictinfo_to_rels
    - eval_const_expressions
    - copyObject
    - make_opclause
    - DatumGetBool
    - bms_membership
    - pull_varnos
    - pull_var_clause
    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:3471,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3474,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3475,1
    - Dst: make_restrictinfo
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3482,1
    - Dst: check_mergejoinable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3494,1
    - Dst: check_hashjoinable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3495,1
    - Dst: check_memoizable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3496,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: 3499
      start: 3455
    functionDepth: 1
    functionLinenumber: 3455
    functionLinenumberEnd: 3499
    functionName: build_implied_join_equality
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 0
    functionsReached:
    - make_restrictinfo
    - check_memoizable
    - check_mergejoinable
    - copyObject
    - make_opclause
    - check_hashjoinable
    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:3527,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3531,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: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3540,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3542,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3543,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - root
    - domain_relids
    argTypes:
    - PlannerInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3547
      start: 3524
    functionDepth: 1
    functionLinenumber: 3524
    functionLinenumberEnd: 3547
    functionName: get_join_domain_min_rels
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - bms_del_member
    - bms_del_members
    - bms_copy
    - foreach
    - bms_equal
    - bms_is_member
    - lfirst
    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:3583,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3585,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3590,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3592,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3596,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3598,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3605,1
    - Dst: add_vars_to_attr_needed
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3608,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3609,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3613
      start: 3558
    functionDepth: 2
    functionLinenumber: 3558
    functionLinenumberEnd: 3613
    functionName: rebuild_joinclause_attr_needed
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 2
    functionsReached:
    - bms_intersect
    - add_vars_to_attr_needed
    - foreach
    - list_free
    - bms_is_member
    - bms_membership
    - lfirst
    - pull_var_clause
    - bms_add_member
    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:3636,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3638,1
    - Dst: match_eclasses_to_foreign_key_col
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3683,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3701,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3703,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3709,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3710,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3712,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3713,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3716,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3718,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3720,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3722,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3734,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3751,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3752,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3755,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3773,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 58
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3777
      start: 3630
    functionDepth: 2
    functionLinenumber: 3630
    functionLinenumberEnd: 3777
    functionName: match_foreign_keys_to_quals
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 1
    functionsReached:
    - get_commutator
    - IsA
    - list_length
    - foreach
    - get_leftop
    - get_rightop
    - lappend
    - match_eclasses_to_foreign_key_col
    - OidIsValid
    - lfirst
    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:3804,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3806,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3810,1
    - Dst: op_mergejoinable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3812,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3812,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3813,1
    - Dst: get_mergejoin_opfamilies
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3814,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - restrictinfo
    argTypes:
    - RestrictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3821
      start: 3795
    functionDepth: 2
    functionLinenumber: 3795
    functionLinenumberEnd: 3821
    functionName: check_mergejoinable
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 3
    functionsReached:
    - exprType
    - get_mergejoin_opfamilies
    - linitial
    - list_length
    - contain_volatile_functions
    - is_opclause
    - op_mergejoinable
    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:3841,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3843,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3847,1
    - Dst: op_hashjoinable
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3849,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3849,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3850,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - restrictinfo
    argTypes:
    - RestrictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3852
      start: 3832
    functionDepth: 2
    functionLinenumber: 3832
    functionLinenumberEnd: 3852
    functionName: check_hashjoinable
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 2
    functionsReached:
    - exprType
    - linitial
    - op_hashjoinable
    - list_length
    - contain_volatile_functions
    - is_opclause
    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:3870,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3872,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3875,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3875,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3877,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3880,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3880,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3883,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3883,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3890,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3893,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/plan/initsplan.c:3893,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 1
    argNames:
    - restrictinfo
    argTypes:
    - RestrictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3895
      start: 3860
    functionDepth: 2
    functionLinenumber: 3860
    functionLinenumberEnd: 3895
    functionName: check_memoizable
    functionSourceFile: /src/postgres/src/backend/optimizer/plan/initsplan.c
    functionUses: 2
    functionsReached:
    - exprType
    - linitial
    - lsecond
    - lookup_type_cache
    - list_length
    - is_opclause
    - OidIsValid
    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:53,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - root
    - tour
    - num_gene
    argTypes:
    - PlannerInfo*
    - Gene*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 59
    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
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_recombination.c:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - root
    - num_gene
    argTypes:
    - PlannerInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 80
    functionName: alloc_city_table
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_recombination.c
    functionUses: 0
    functionsReached:
    - palloc
    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:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - root
    - city_table
    argTypes:
    - PlannerInfo*
    - City*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 90
    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
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - list_length
    - list_truncate
    - gimme_tree
    - AllocSetContextCreate
    linkageType: ''
    returnType: Cost
    signature: Cost geqo_eval(PlannerInfo *root, Gene *tour, int num_gene)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:190,1
    - Dst: palloc
      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:
    - merge_clump
    - linitial
    - list_length
    - list_nth
    - palloc
    - lfirst
    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: 129
    functionsReached:
    - lfirst
    - merge_clump
    linkageType: ''
    returnType: void
    signature: void foreach(lc, clumps)
  - BBCount: 6
    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: generate_partitionwise_join_paths
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:268,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:276,1
    - Dst: generate_useful_gather_paths
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:277,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:280,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:285,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:288,1
    - Dst: merge_clump
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:295,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:306,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:309,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:311,1
    - Dst: list_insert_nth
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:316,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 5
    argNames:
    - root
    - clumps
    - new_clump
    - num_gene
    - force
    argTypes:
    - PlannerInfo*
    - List*
    - Clump*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 237
    functionDepth: 3
    functionLinenumber: 237
    functionLinenumberEnd: 319
    functionName: merge_clump
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c
    functionUses: 3
    functionsReached:
    - desirable_join
    - pfree
    - generate_partitionwise_join_paths
    - set_cheapest
    - merge_clump
    - list_insert_nth
    - list_length
    - bms_equal
    - generate_useful_gather_paths
    - lappend
    - list_nth
    - make_join_rel
    - foreach_delete_current
    - lfirst
    linkageType: ''
    returnType: List
    signature: "List *\nmerge_clump(PlannerInfo *root, List *clumps, Clump *new_clump,
      int num_gene,\n\t\t\tbool force)"
  - BBCount: 4
    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: generate_partitionwise_join_paths
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:268,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:276,1
    - Dst: generate_useful_gather_paths
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:277,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:280,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:285,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:288,1
    - Dst: merge_clump
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:295,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 245
    functionDepth: 4
    functionLinenumber: 245
    functionLinenumberEnd: 298
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c
    functionUses: 129
    functionsReached:
    - desirable_join
    - pfree
    - generate_partitionwise_join_paths
    - set_cheapest
    - merge_clump
    - bms_equal
    - generate_useful_gather_paths
    - make_join_rel
    - foreach_delete_current
    - lfirst
    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:332,1
    - Dst: have_join_order_restriction
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c:333,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - root
    - outer_rel
    - inner_rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 324
    functionDepth: 1
    functionLinenumber: 324
    functionLinenumberEnd: 338
    functionName: desirable_join
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_eval.c
    functionUses: 2
    functionsReached:
    - have_relevant_joinclause
    - have_join_order_restriction
    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:63,1
    - Dst: geqo_randint
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_ox1.c:64,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: 94
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 94
    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: 54
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 54
    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: pg_prng_fseed
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_random.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - root
    - seed
    argTypes:
    - PlannerInfo*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 19
    functionDepth: 4
    functionLinenumber: 19
    functionLinenumberEnd: 25
    functionName: geqo_set_seed
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_random.c
    functionUses: 0
    functionsReached:
    - pg_prng_fseed
    linkageType: ''
    returnType: void
    signature: void geqo_set_seed(PlannerInfo *root, double seed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_prng_double
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_random.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 27
    functionDepth: 3
    functionLinenumber: 27
    functionLinenumberEnd: 33
    functionName: geqo_rand
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_random.c
    functionUses: 0
    functionsReached:
    - pg_prng_double
    linkageType: ''
    returnType: double
    signature: double geqo_rand(PlannerInfo *root)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_random.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - root
    - upper
    - lower
    argTypes:
    - PlannerInfo*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 35
    functionDepth: 3
    functionLinenumber: 35
    functionLinenumberEnd: 45
    functionName: geqo_randint
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_random.c
    functionUses: 2
    functionsReached:
    - pg_prng_uint64_range
    linkageType: ''
    returnType: int
    signature: int geqo_randint(PlannerInfo *root, int upper, int lower)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: geqo_set_seed
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:106,1
    - Dst: gimme_pool_size
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:109,1
    - Dst: gimme_number_generations
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:110,1
    - Dst: alloc_pool
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:116,1
    - Dst: random_init_pool
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:119,1
    - Dst: sort_pool
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:122,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:127,1
    - Dst: alloc_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:134,1
    - Dst: alloc_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:135,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:139,1
    - Dst: alloc_edge_table
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:142,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:145,1
    - Dst: alloc_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:148,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:151,1
    - Dst: alloc_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:154,1
    - Dst: alloc_city_table
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:155,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:158,1
    - Dst: alloc_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:161,1
    - Dst: alloc_city_table
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:162,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:165,1
    - Dst: alloc_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:168,1
    - Dst: alloc_city_table
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:169,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:172,1
    - Dst: alloc_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:175,1
    - Dst: alloc_city_table
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:176,1
    - Dst: geqo_selection
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:186,1
    - Dst: gimme_edge_table
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:190,1
    - Dst: gimme_tour
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:195,1
    - Dst: pmx
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:198,1
    - Dst: cx
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:201,1
    - Dst: geqo_mutation
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:206,1
    - Dst: px
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:210,1
    - Dst: ox1
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:213,1
    - Dst: ox2
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:216,1
    - Dst: geqo_eval
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:221,1
    - Dst: spread_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:224,1
    - Dst: print_gen
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:229,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:238,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:241,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:253,1
    - Dst: print_pool
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:257,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:261,1
    - Dst: gimme_tree
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:272,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:275,1
    - Dst: print_plan
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:279,1
    - Dst: free_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:283,1
    - Dst: free_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:284,1
    - Dst: free_edge_table
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:287,1
    - Dst: free_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:289,1
    - Dst: free_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:291,1
    - Dst: free_city_table
      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:294,1
    - Dst: free_city_table
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:295,1
    - Dst: free_chromo
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:297,1
    - Dst: free_city_table
      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_pool
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:304,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 77
    argCount: 3
    argNames:
    - root
    - number_of_rels
    - initial_rels
    argTypes:
    - PlannerInfo*
    - int
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 71
    functionDepth: 5
    functionLinenumber: 71
    functionLinenumberEnd: 310
    functionName: geqo
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_main.c
    functionUses: 0
    functionsReached:
    - cx
    - gimme_pool_size
    - alloc_city_table
    - print_plan
    - spread_chromo
    - gimme_edge_table
    - free_edge_table
    - free_city_table
    - gimme_tree
    - print_gen
    - gimme_number_generations
    - alloc_edge_table
    - geqo_eval
    - alloc_pool
    - pmx
    - ox2
    - geqo_selection
    - alloc_chromo
    - free_pool
    - elog
    - geqo_mutation
    - sort_pool
    - print_pool
    - gimme_tour
    - random_init_pool
    - free_chromo
    - ox1
    - geqo_set_seed
    - px
    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:330,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_main.c:340,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - nr_rel
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 341
    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: 358
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 358
    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
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - root
    - num_gene
    argTypes:
    - PlannerInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 68
    functionName: alloc_edge_table
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c
    functionUses: 1
    functionsReached:
    - palloc
    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:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - root
    - edge_table
    argTypes:
    - PlannerInfo*
    - Edge*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 79
    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:128,1
    - Dst: gimme_edge
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:129,1
    - Dst: gimme_edge
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:131,1
    - Dst: gimme_edge
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:132,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: 137
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 137
    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:167,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: 185
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 185
    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:202,1
    - Dst: remove_gene
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:211,1
    - Dst: gimme_gene
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:216,1
    - Dst: edge_failure
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:222,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: 230
      start: 195
    functionDepth: 4
    functionLinenumber: 195
    functionLinenumberEnd: 230
    functionName: gimme_tour
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c
    functionUses: 1
    functionsReached:
    - remove_gene
    - geqo_randint
    - gimme_gene
    - edge_failure
    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:254,1
    - Dst: abs
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:261,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: 273
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 273
    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:312,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:337,1
    - Dst: geqo_randint
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:344,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:362,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 3
    argNames:
    - root
    - edge
    - edge_table
    argTypes:
    - PlannerInfo*
    - Edge
    - Edge*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 281
    functionDepth: 4
    functionLinenumber: 281
    functionLinenumberEnd: 364
    functionName: gimme_gene
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c
    functionUses: 1
    functionsReached:
    - abs
    - geqo_randint
    - elog
    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:405,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:422,1
    - Dst: geqo_randint
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:427,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:443,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:461,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_erx.c:466,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: 468
      start: 371
    functionDepth: 4
    functionLinenumber: 371
    functionLinenumberEnd: 468
    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:60,1
    - 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:70,1
    - Dst: geqo_copy
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_selection.c:73,1
    - Dst: geqo_copy
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_selection.c:74,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: 75
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 75
    functionName: geqo_selection
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_selection.c
    functionUses: 1
    functionsReached:
    - linear_rand
    - geqo_copy
    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:104,1
    - Dst: sqrt
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_selection.c:106,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - root
    - pool_size
    - bias
    argTypes:
    - PlannerInfo*
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 87
    functionDepth: 4
    functionLinenumber: 87
    functionLinenumberEnd: 111
    functionName: linear_rand
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_selection.c
    functionUses: 1
    functionsReached:
    - sqrt
    - geqo_rand
    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:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - pool
    argTypes:
    - Pool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 52
    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:77,1
    - 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:80,1
    - Dst: fflush
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_misc.c:83,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 4
    argNames:
    - fp
    - pool
    - start
    - stop
    argTypes:
    - FILE*
    - Pool*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 84
    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:99,1
    - Dst: avg_pool
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_misc.c:105,1
    - Dst: fflush
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_misc.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - fp
    - pool
    - generation
    argTypes:
    - FILE*
    - Pool*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 90
    functionDepth: 2
    functionLinenumber: 90
    functionLinenumberEnd: 108
    functionName: print_gen
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_misc.c
    functionUses: 1
    functionsReached:
    - fflush
    - avg_pool
    - 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:117,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_misc.c:121,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_misc.c:123,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:127,1
    - Dst: fflush
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_misc.c:129,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - fp
    - edge_table
    - num_gene
    argTypes:
    - FILE*
    - Edge*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 130
    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:66,1
    - Dst: geqo_randint
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_ox2.c:71,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: 111
      start: 48
    functionDepth: 4
    functionLinenumber: 48
    functionLinenumberEnd: 111
    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:47,1
    - Dst: geqo_randint
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_mutation.c:53,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:57,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - root
    - tour
    - num_gene
    argTypes:
    - PlannerInfo*
    - Gene*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 42
    functionDepth: 4
    functionLinenumber: 42
    functionLinenumberEnd: 66
    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:63,1
    - Dst: geqo_randint
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_px.c:68,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: 107
      start: 48
    functionDepth: 4
    functionLinenumber: 48
    functionLinenumberEnd: 107
    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:68,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: 123
      start: 49
    functionDepth: 4
    functionLinenumber: 49
    functionLinenumberEnd: 123
    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
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pmx.c:51,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pmx.c:52,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pmx.c:53,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pmx.c:54,1
    - Dst: geqo_randint
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pmx.c:77,1
    - Dst: geqo_randint
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pmx.c:78,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pmx.c:214,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pmx.c:215,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
    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: 218
      start: 48
    functionDepth: 4
    functionLinenumber: 48
    functionLinenumberEnd: 218
    functionName: pmx
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_pmx.c
    functionUses: 1
    functionsReached:
    - pfree
    - palloc
    - geqo_randint
    linkageType: ''
    returnType: void
    signature: void pmx(PlannerInfo *root, Gene *tour1, Gene *tour2, Gene *offspring,
      int num_gene)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c:49,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c:54,1
    - Dst: palloc
      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
    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
    - elog
    - geqo_eval
    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: 17
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int compare(const void *arg1, const void *arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c:166,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - root
    - string_length
    argTypes:
    - PlannerInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 170
    functionName: alloc_chromo
    functionSourceFile: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c
    functionUses: 1
    functionsReached:
    - palloc
    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:178,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/geqo/geqo_pool.c:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - root
    - chromo
    argTypes:
    - PlannerInfo*
    - Chromosome*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 180
    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:249,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 3
    argNames:
    - root
    - chromo
    - pool
    argTypes:
    - PlannerInfo*
    - Chromosome*
    - Pool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 265
    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:
    - Assert
    - make_plain_restrictinfo
    - is_orclause
    - make_sub_restrictinfos
    - is_andclause
    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:
    - bms_overlap
    - Assert
    - bms_is_empty
    - list_length
    - get_leftop
    - get_rightop
    - bms_union
    - is_opclause
    - makeNode
    - bms_difference
    - bms_num_members
    - pull_varnos
    - bms_free
    - contain_leaked_vars
    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
    - is_orclause
    - foreach
    - make_andclause
    - make_orclause
    - lappend
    - is_andclause
    - make_sub_restrictinfos
    - lfirst
    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:
    - Assert
    - linitial
    - list_make2
    - lsecond
    - list_length
    - castNode
    - memcpy
    - makeNode
    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:
    - DatumGetBool
    - IsA
    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: 130
    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: 130
    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
    - lfirst_node
    - RINFO_IS_PUSHED_DOWN
    - lappend
    - 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: 130
    functionsReached:
    - Assert
    - lfirst_node
    - RINFO_IS_PUSHED_DOWN
    - lappend
    - 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_overlap
    - bms_is_subset
    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:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 182
    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:189,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:191,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:194,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:196,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:199,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:199,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:200,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 201
    functionName: contain_agg_clause_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - Assert
    - IsA
    - expression_tree_walker
    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:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 219
    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
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:231,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:235,1
    - Dst: find_window_functions_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - clause
    - maxWinRef
    argTypes:
    - Node*
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 238
    functionName: find_window_functions
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - palloc
    - find_window_functions_walker
    - palloc0
    linkageType: ''
    returnType: WindowFuncLists
    signature: 'WindowFuncLists *

      find_window_functions(Node *clause, Index maxWinRef)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:245,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:251,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:254,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:257,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:269,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:269,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:270,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - node
    - lists
    argTypes:
    - Node*
    - WindowFuncLists*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 271
    functionName: find_window_functions_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - Assert
    - expression_tree_walker
    - IsA
    - elog
    - lappend
    - list_member
    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:294,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:299,1
    - Dst: get_function_rows
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:299,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:301,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:307,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:308,1
    - Dst: get_function_rows
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:308,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - root
    - clause
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 312
    functionName: expression_returns_set_rows
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - get_function_rows
    - clamp_row_est
    - IsA
    - set_opfuncid
    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:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 330
    functionDepth: 1
    functionLinenumber: 330
    functionLinenumberEnd: 334
    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:341,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:342,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:343,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:345,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 346
    functionName: contain_subplans_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - IsA
    - expression_tree_walker
    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:373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 374
    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:379,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - func_id
    - context
    argTypes:
    - Oid
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 376
    functionDepth: 1
    functionLinenumber: 376
    functionLinenumberEnd: 380
    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:388,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:392,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:406,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:408,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:408,1
    - Dst: to_jsonb_is_immutable
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:411,1
    - Dst: to_json_is_immutable
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:412,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:419,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:421,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:424,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:427,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:429,1
    - Dst: jspIsMutable
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:433,1
    - Dst: DatumGetJsonPathP
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:433,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:438,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:444,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:461,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:464,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:468,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 382
    functionDepth: 2
    functionLinenumber: 382
    functionLinenumberEnd: 470
    functionName: contain_mutable_functions_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - exprType
    - Assert
    - to_json_is_immutable
    - to_jsonb_is_immutable
    - expression_tree_walker
    - IsA
    - foreach
    - castNode
    - DatumGetJsonPathP
    - jspIsMutable
    - check_functions_in_node
    - lfirst
    - query_tree_walker
    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:494,1
    - Dst: contain_mutable_functions
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:497,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - expr
    argTypes:
    - Expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 490
    functionDepth: 2
    functionLinenumber: 490
    functionLinenumberEnd: 498
    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:541,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 538
    functionDepth: 1
    functionLinenumber: 538
    functionLinenumberEnd: 542
    functionName: contain_volatile_functions
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 12
    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:547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - func_id
    - context
    argTypes:
    - Oid
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 544
    functionDepth: 1
    functionLinenumber: 544
    functionLinenumberEnd: 548
    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:556,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:560,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:566,1
    - Dst: contain_volatile_functions_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:584,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:595,1
    - Dst: contain_volatile_functions_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:611,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:630,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:633,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:637,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 550
    functionDepth: 1
    functionLinenumber: 550
    functionLinenumberEnd: 639
    functionName: contain_volatile_functions_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 2
    functionsReached:
    - expression_tree_walker
    - contain_volatile_functions_walker
    - IsA
    - check_functions_in_node
    - query_tree_walker
    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:663,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:666,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - expr
    argTypes:
    - Expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 659
    functionDepth: 2
    functionLinenumber: 659
    functionLinenumberEnd: 667
    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:676,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 673
    functionDepth: 1
    functionLinenumber: 673
    functionLinenumberEnd: 677
    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:683,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - func_id
    - context
    argTypes:
    - Oid
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 679
    functionDepth: 1
    functionLinenumber: 679
    functionLinenumberEnd: 684
    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:692,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:706,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:709,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:713,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 686
    functionDepth: 1
    functionLinenumber: 686
    functionLinenumberEnd: 716
    functionName: contain_volatile_functions_not_nextval_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - IsA
    - check_functions_in_node
    - expression_tree_walker
    - 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:742,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - parse
    argTypes:
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 734
    functionDepth: 1
    functionLinenumber: 734
    functionLinenumberEnd: 744
    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:781,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:783,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:785,1
    - Dst: max_parallel_hazard_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:790,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - root
    - node
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 753
    functionDepth: 1
    functionLinenumber: 753
    functionLinenumberEnd: 791
    functionName: is_parallel_safe
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 7
    functionsReached:
    - list_concat
    - lfirst
    - max_parallel_hazard_walker
    - 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:804,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:815,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - proparallel
    - context
    argTypes:
    - char
    - max_parallel_hazard_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 794
    functionDepth: 1
    functionLinenumber: 794
    functionLinenumberEnd: 819
    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:825,1
    - Dst: func_parallel
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:825,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - func_id
    - context
    argTypes:
    - Oid
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 827
      start: 822
    functionDepth: 2
    functionLinenumber: 822
    functionLinenumberEnd: 827
    functionName: max_parallel_hazard_checker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - func_parallel
    - max_parallel_hazard_test
    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:836,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:851,1
    - Dst: max_parallel_hazard_test
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:853,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:857,1
    - Dst: max_parallel_hazard_test
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:859,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:871,1
    - Dst: max_parallel_hazard_test
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:873,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:880,1
    - Dst: max_parallel_hazard_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:884,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:891,1
    - Dst: max_parallel_hazard_test
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:893,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:903,1
    - Dst: max_parallel_hazard_test
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:909,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:912,1
    - Dst: max_parallel_hazard_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:914,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:916,1
    - Dst: max_parallel_hazard_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:919,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:932,1
    - Dst: list_member_int
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:940,1
    - Dst: max_parallel_hazard_test
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:942,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:953,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:965,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:971,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 54
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - max_parallel_hazard_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 974
      start: 829
    functionDepth: 2
    functionLinenumber: 829
    functionLinenumberEnd: 974
    functionName: max_parallel_hazard_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 3
    functionsReached:
    - list_concat_copy
    - expression_tree_walker
    - max_parallel_hazard_walker
    - IsA
    - list_member_int
    - check_functions_in_node
    - max_parallel_hazard_test
    - list_free
    - query_tree_walker
    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:996,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 993
    functionDepth: 1
    functionLinenumber: 993
    functionLinenumberEnd: 997
    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:1002,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - func_id
    - context
    argTypes:
    - Oid
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 999
    functionDepth: 1
    functionLinenumber: 999
    functionLinenumberEnd: 1003
    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: 30
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1010,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1015,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1023,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1028,1
    - Dst: getSubscriptingRoutines
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1037,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1042,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1047,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1052,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1066,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1071,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1073,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:1077,1
    - Dst: contain_nonstrict_functions_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1084,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1087,1
    - Dst: contain_nonstrict_functions_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1094,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1097,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: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1107,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1109,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1111,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1113,1
    - Dst: check_functions_in_node
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1117,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1121,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 70
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1123
      start: 1005
    functionDepth: 1
    functionLinenumber: 1005
    functionLinenumberEnd: 1123
    functionName: contain_nonstrict_functions_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 2
    functionsReached:
    - getSubscriptingRoutines
    - expression_tree_walker
    - IsA
    - contain_nonstrict_functions_walker
    - check_functions_in_node
    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:1140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - clause
    - param_ids
    argTypes:
    - Node*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1141
      start: 1137
    functionDepth: 1
    functionLinenumber: 1137
    functionLinenumberEnd: 1141
    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:1148,1
    - Dst: list_member_int
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1153,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1156,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - node
    - param_ids
    argTypes:
    - Node*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1157
      start: 1143
    functionDepth: 1
    functionLinenumber: 1143
    functionLinenumberEnd: 1157
    functionName: contain_exec_param_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - list_member_int
    - IsA
    - expression_tree_walker
    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:1184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1185
      start: 1179
    functionDepth: 1
    functionLinenumber: 1179
    functionLinenumberEnd: 1185
    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:1194,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1196,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1219,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1226,1
    - Dst: contain_context_dependent_node_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1233,1
    - Dst: contain_context_dependent_node_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1239,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1244,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - node
    - flags
    argTypes:
    - Node*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1246
      start: 1189
    functionDepth: 1
    functionLinenumber: 1189
    functionLinenumberEnd: 1246
    functionName: contain_context_dependent_node_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 2
    functionsReached:
    - contain_context_dependent_node_walker
    - IsA
    - expression_tree_walker
    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:1266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1267
      start: 1263
    functionDepth: 1
    functionLinenumber: 1263
    functionLinenumberEnd: 1267
    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:1272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - func_id
    - context
    argTypes:
    - Oid
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1273
      start: 1269
    functionDepth: 1
    functionLinenumber: 1269
    functionLinenumberEnd: 1273
    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:1281,1
    - Dst: check_functions_in_node
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1321,1
    - Dst: contain_var_clause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1323,1
    - Dst: getSubscriptingRoutines
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1333,1
    - Dst: contain_var_clause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1341,1
    - Dst: forthree
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1359,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1363,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1363,1
    - Dst: get_func_leakproof
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1365,1
    - Dst: contain_var_clause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1366,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1366,1
    - Dst: contain_var_clause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1367,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1367,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1384,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1386,1
    - Dst: get_func_leakproof
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1387,1
    - Dst: contain_var_clause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1398,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1422,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 65
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1424
      start: 1275
    functionDepth: 1
    functionLinenumber: 1275
    functionLinenumberEnd: 1424
    functionName: contain_leaked_vars_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - nodeTag
    - getSubscriptingRoutines
    - get_func_leakproof
    - lfirst
    - expression_tree_walker
    - get_opcode
    - lookup_type_cache
    - forthree
    - check_functions_in_node
    - OidIsValid
    - lfirst_oid
    - 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:1460,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1461
      start: 1457
    functionDepth: 1
    functionLinenumber: 1457
    functionLinenumberEnd: 1461
    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:1471,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1476,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1478,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1489,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1491,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1492,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1492,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1496,1
    - Dst: func_strict
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1500,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1501,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1503,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1507,1
    - Dst: func_strict
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1508,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1509,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1511,1
    - Dst: is_strict_saop
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1515,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1516,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1518,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1528,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1548,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1552,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1552,1
    - Dst: bms_int_members
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1557,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1563,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1569,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1573,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1577,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1581,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1583,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1588,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1590,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1595,1
    - Dst: IsA
      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:1602,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1604,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1608,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1610,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1616,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1618,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1627,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1629,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1652,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1654,1
    - Dst: find_nonnullable_rels_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1662,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1674,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1675,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 83
    argCount: 2
    argNames:
    - node
    - top_level
    argTypes:
    - Node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1678
      start: 1463
    functionDepth: 1
    functionLinenumber: 1463
    functionLinenumberEnd: 1678
    functionName: find_nonnullable_rels_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 2
    functionsReached:
    - func_strict
    - bms_int_members
    - find_nonnullable_rels_walker
    - is_strict_saop
    - bms_membership
    - bms_add_members
    - bms_make_singleton
    - bms_is_empty
    - IsA
    - foreach
    - elog
    - set_opfuncid
    - bms_join
    - lfirst
    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:1711,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1712
      start: 1708
    functionDepth: 1
    functionLinenumber: 1708
    functionLinenumberEnd: 1712
    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:1722,1
    - Dst: mbms_add_member
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1727,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1731,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1742,1
    - Dst: mbms_add_members
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1744,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1745,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1745,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1749,1
    - Dst: func_strict
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1753,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1754,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1756,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1760,1
    - Dst: func_strict
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1761,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1762,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1764,1
    - Dst: is_strict_saop
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1768,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1769,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1771,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1786,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1806,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1810,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1810,1
    - Dst: mbms_int_members
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1815,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1827,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1831,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1835,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1839,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1841,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1846,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1848,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1853,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1855,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1860,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1862,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1866,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1868,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1874,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1876,1
    - Dst: find_nonnullable_vars_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1885,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1887,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
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 81
    argCount: 2
    argNames:
    - node
    - top_level
    argTypes:
    - Node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1903
      start: 1714
    functionDepth: 1
    functionLinenumber: 1714
    functionLinenumberEnd: 1903
    functionName: find_nonnullable_vars_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 2
    functionsReached:
    - func_strict
    - is_strict_saop
    - mbms_int_members
    - mbms_add_member
    - mbms_add_members
    - IsA
    - foreach
    - elog
    - set_opfuncid
    - find_nonnullable_vars_walker
    - lfirst
    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:1927,1
    - Dst: mbms_add_member
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1930,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1935,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1941,1
    - Dst: mbms_add_members
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1943,1
    - Dst: find_forced_null_vars
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1944,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1944,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1947,1
    - Dst: find_forced_null_vars
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1959,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - node
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1963
      start: 1917
    functionDepth: 1
    functionLinenumber: 1917
    functionLinenumberEnd: 1963
    functionName: find_forced_null_vars
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - mbms_add_member
    - IsA
    - mbms_add_members
    - foreach
    - find_forced_null_var
    - find_forced_null_vars
    - lfirst
    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:1983,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1992,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:1997,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2006,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 16
    argCount: 1
    argNames:
    - node
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2012
      start: 1978
    functionDepth: 1
    functionLinenumber: 1978
    functionLinenumberEnd: 2012
    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: 8
    BranchProfiles: []
    Callsites:
    - Dst: set_sa_opfuncid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2033,1
    - Dst: func_strict
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2034,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2040,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2040,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2041,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2042,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2051,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2052,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2052,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2052,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2056,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 21
    argCount: 2
    argNames:
    - expr
    - falseOK
    argTypes:
    - ScalarArrayOpExpr*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2064
      start: 2027
    functionDepth: 1
    functionLinenumber: 2027
    functionLinenumberEnd: 2064
    functionName: is_strict_saop
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 2
    functionsReached:
    - func_strict
    - Assert
    - ARR_DIMS
    - DatumGetArrayTypeP
    - set_sa_opfuncid
    - ARR_NDIM
    - lsecond
    - IsA
    - list_length
    - ArrayGetNItems
    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:2098,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2099,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2102
      start: 2089
    functionDepth: 2
    functionLinenumber: 2089
    functionLinenumberEnd: 2102
    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:2112,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2113,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - clause
    - relids
    argTypes:
    - Node*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2116
      start: 2109
    functionDepth: 2
    functionLinenumber: 2109
    functionLinenumberEnd: 2116
    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:2135,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2137,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2138,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - root
    - clause
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2141
      start: 2131
    functionDepth: 1
    functionLinenumber: 2131
    functionLinenumberEnd: 2141
    functionName: NumRelids
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - bms_del_members
    - bms_num_members
    - pull_varnos
    - 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:2155,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2156,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2157,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2159,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2161,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2162,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2172,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2173,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2173,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2174,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - clause
    argTypes:
    - OpExpr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2175
      start: 2148
    functionDepth: 2
    functionLinenumber: 2148
    functionLinenumberEnd: 2175
    functionName: CommuteOpExpr
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 2
    functionsReached:
    - linitial
    - lsecond
    - list_length
    - elog
    - OidIsValid
    - is_opclause
    - get_commutator
    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:2198,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2201,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2204,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2210,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2213,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: 2215
      start: 2187
    functionDepth: 2
    functionLinenumber: 2187
    functionLinenumberEnd: 2215
    functionName: rowtype_field_matches
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - ReleaseTupleDesc
    - TupleDescAttr
    - lookup_rowtype_tupdesc_domain
    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:2268,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - root
    - node
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2269
      start: 2255
    functionDepth: 1
    functionLinenumber: 2255
    functionLinenumberEnd: 2269
    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:2291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2292
      start: 2288
    functionDepth: 1
    functionLinenumber: 2288
    functionLinenumberEnd: 2292
    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:2300,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2303,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2307,1
    - Dst: get_op_hash_functions
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2312,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2316,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2324,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2324,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2324,1
    - Dst: get_negator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2336,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2343,1
    - Dst: get_op_hash_functions
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2344,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2348,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2356,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2356,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2356,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2367,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2375,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 26
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2376
      start: 2294
    functionDepth: 1
    functionLinenumber: 2294
    functionLinenumberEnd: 2376
    functionName: convert_saop_to_hashed_saop_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - ARR_DIMS
    - expression_tree_walker
    - ARR_NDIM
    - lsecond
    - IsA
    - get_op_hash_functions
    - get_opcode
    - ArrayGetNItems
    - OidIsValid
    - get_negator
    - 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:2407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - root
    - node
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2408
      start: 2396
    functionDepth: 1
    functionLinenumber: 2396
    functionLinenumberEnd: 2408
    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: 2422
      start: 2419
    functionDepth: 0
    functionLinenumber: 2419
    functionLinenumberEnd: 2422
    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: 2430
      start: 2428
    functionDepth: 0
    functionLinenumber: 2428
    functionLinenumberEnd: 2430
    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: 2437
      start: 2432
    functionDepth: 0
    functionLinenumber: 2432
    functionLinenumberEnd: 2437
    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: 110
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2447,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2451,1
    - Dst: ParamListInfo::paramFetch
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2473,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2484,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2502,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2507,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2508,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2525,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2543,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2543,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2544,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2545,1
    - Dst: expand_function_arguments
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2547,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2551,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2555,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2560,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2564,1
    - Dst: simplify_function
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2593,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2595,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2612,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2635,1
    - Dst: simplify_function
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2641,1
    - Dst: simplify_boolean_equality
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2661,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2672,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2700,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2711,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2711,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2713,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2714,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2725,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2729,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2738,1
    - Dst: simplify_function
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2745,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2760,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2763,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2763,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2773,1
    - Dst: ece_generic_processing
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2791,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2794,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2796,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2796,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2798,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2799,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2806,1
    - Dst: ece_function_is_safe
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2809,1
    - Dst: ece_evaluate_expr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2810,1
    - Dst: ece_generic_processing
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2819,1
    - Dst: set_sa_opfuncid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2822,1
    - Dst: ece_all_arguments_const
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2828,1
    - Dst: ece_function_is_safe
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2829,1
    - Dst: ece_evaluate_expr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2830,1
    - Dst: simplify_or_arguments
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2845,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2850,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2852,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2853,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2856,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2862,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2863,1
    - Dst: make_orclause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2865,1
    - Dst: simplify_and_arguments
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2873,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2878,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2880,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2881,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2884,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2890,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2891,1
    - Dst: make_andclause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2893,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2899,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2899,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2900,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2900,1
    - Dst: negate_clause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2907,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2910,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2929,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2931,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2934,1
    - Dst: makeJsonValueExpr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2936,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2938,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2957,1
    - Dst: applyRelabelType
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2960,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2980,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2991,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2991,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2993,1
    - Dst: simplify_function
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2996,1
    - Dst: list_make3
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3012,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3013,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3017,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3020,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3024,1
    - Dst: simplify_function
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3028,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3046,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3047,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3056,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3064,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3066,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3077,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3090,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3091,1
    - Dst: contain_mutable_functions
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3092,1
    - Dst: ece_evaluate_expr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3093,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3110,1
    - Dst: applyRelabelType
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3113,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3114,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3115,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3163,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3168,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3179,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3181,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3186,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3194,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3199,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3206,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3212,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3217,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3232,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3244,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3261,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3263,1
    - Dst: ece_generic_processing
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3286,1
    - Dst: ece_all_arguments_const
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3288,1
    - Dst: ece_evaluate_expr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3289,1
    - Dst: foreach
      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:3304,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3304,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3315,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3321,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3324,1
    - Dst: makeNullConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3332,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3336,1
    - Dst: evaluate_expr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3353,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3358,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3390,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3392,1
    - Dst: rowtype_field_matches
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3396,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3404,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3417,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3422,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3424,1
    - Dst: rowtype_field_matches
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3427,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3432,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3433,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3434,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3438,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3444,1
    - Dst: rowtype_field_matches
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3448,1
    - Dst: ece_evaluate_expr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3453,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3463,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3465,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3477,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3479,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3485,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3492,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3502,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3507,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3511,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3513,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3514,1
    - Dst: make_andclause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3516,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3518,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3532,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3538,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3541,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3561,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3563,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3572,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3576,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3580,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3584,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3593,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3599,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3602,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3624,1
    - Dst: DomainHasConstraints
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3627,1
    - Dst: record_plan_type_dependency
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3631,1
    - Dst: applyRelabelType
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3635,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3644,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3666,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3672,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3676,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3679,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3696,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3712,1
    - Dst: ece_evaluate_expr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3713,1
    - Dst: ece_generic_processing
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3727,1
    CyclomaticComplexity: 129
    EdgeCount: 129
    ICount: 451
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - eval_const_expressions_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3728
      start: 2441
    functionDepth: 3
    functionLinenumber: 2441
    functionLinenumberEnd: 3728
    functionName: eval_const_expressions_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 3
    functionsReached:
    - makeNullConst
    - ece_evaluate_expr
    - getTypeOutputInfo
    - BoolGetDatum
    - HeapTupleIsValid
    - set_sa_opfuncid
    - datumCopy
    - castNode
    - list_length
    - make_andclause
    - record_plan_type_dependency
    - ece_function_is_safe
    - expand_function_arguments
    - make_orclause
    - makeNode
    - exprType
    - rowtype_field_matches
    - get_typlenbyval
    - ReleaseSysCache
    - Int32GetDatum
    - foreach
    - DomainHasConstraints
    - eval_const_expressions_mutator
    - DatumGetBool
    - memcpy
    - nodeTag
    - makeVar
    - lfirst_node
    - linitial
    - list_make3
    - contain_mutable_functions
    - IsA
    - evaluate_expr
    - elog
    - lappend
    - list_nth
    - OidIsValid
    - set_opfuncid
    - makeBoolConst
    - ObjectIdGetDatum
    - lfirst
    - makeJsonValueExpr
    - check_stack_depth
    - Assert
    - ParamListInfo::paramFetch
    - getTypeInputInfo
    - exprCollation
    - simplify_and_arguments
    - simplify_function
    - applyRelabelType
    - exprTypmod
    - negate_clause
    - list_make1
    - ece_all_arguments_const
    - SearchSysCache1
    - copyObject
    - simplify_or_arguments
    - makeConst
    - simplify_boolean_equality
    - ece_generic_processing
    - expression_tree_mutator
    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: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2711,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2711,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2713,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:2714,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2718
      start: 2709
    functionDepth: 1
    functionLinenumber: 2709
    functionLinenumberEnd: 2718
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 136
    functionsReached:
    - lfirst
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(arg, args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3744,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3746,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3747,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3750
      start: 3739
    functionDepth: 1
    functionLinenumber: 3739
    functionLinenumberEnd: 3750
    functionName: contain_non_const_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - IsA
    - expression_tree_walker
    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:3758,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - funcid
    - context
    argTypes:
    - Oid
    - eval_const_expressions_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3772
      start: 3755
    functionDepth: 1
    functionLinenumber: 3755
    functionLinenumberEnd: 3772
    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:3812,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3815,1
    - Dst: list_delete_first
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3817,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3820,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3825,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3827,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3832,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3840,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3844,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3852,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3858,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3874,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: 3878
      start: 3793
    functionDepth: 4
    functionLinenumber: 3793
    functionLinenumberEnd: 3878
    functionName: simplify_or_arguments
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - list_concat_copy
    - linitial
    - list_delete_first
    - list_copy
    - is_orclause
    - IsA
    - lappend
    - eval_const_expressions_mutator
    - DatumGetBool
    - list_free
    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:3908,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3911,1
    - Dst: list_delete_first
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3913,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3916,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3921,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3923,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3928,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3936,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3940,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3948,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3954,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3970,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: 3974
      start: 3899
    functionDepth: 4
    functionLinenumber: 3899
    functionLinenumberEnd: 3974
    functionName: simplify_and_arguments
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - list_concat_copy
    - linitial
    - list_delete_first
    - list_copy
    - IsA
    - lappend
    - eval_const_expressions_mutator
    - DatumGetBool
    - is_andclause
    - list_free
    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:3999,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:3999,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4000,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4001,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4002,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4004,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4007,1
    - Dst: negate_clause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4010,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4014,1
    - Dst: negate_clause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4015,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4020,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4022,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4025,1
    - Dst: negate_clause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4028,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4032,1
    - Dst: negate_clause
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4033,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 2
    argNames:
    - opno
    - args
    argTypes:
    - Oid
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4039
      start: 3993
    functionDepth: 1
    functionLinenumber: 3993
    functionLinenumberEnd: 4039
    functionName: simplify_boolean_equality
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - Assert
    - linitial
    - negate_clause
    - IsA
    - lsecond
    - list_length
    - 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:4085,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4085,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4086,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4087,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4088,1
    - Dst: expand_function_arguments
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4098,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4099,1
    - Dst: evaluate_function
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4108,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4113,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4141,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4141,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4142,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4145,1
    - Dst: inline_function
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4149,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4153,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: 4156
      start: 4062
    functionDepth: 1
    functionLinenumber: 4062
    functionLinenumberEnd: 4156
    functionName: simplify_function
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - evaluate_function
    - OidFunctionCall1
    - Assert
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - PointerGetDatum
    - SearchSysCache1
    - elog
    - inline_function
    - OidIsValid
    - expand_function_arguments
    - DatumGetPointer
    - expression_tree_mutator
    - ObjectIdGetDatum
    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: 7
    BranchProfiles: []
    Callsites:
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4182,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4201,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4206,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4208,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4209,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4211,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4212,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4213,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4214,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4215,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4222,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4224,1
    - Dst: reorder_function_arguments
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4234,1
    - Dst: recheck_cast_function_args
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4236,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4240,1
    - Dst: add_function_defaults
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4243,1
    - Dst: recheck_cast_function_args
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4245,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: 4251
      start: 4178
    functionDepth: 1
    functionLinenumber: 4178
    functionLinenumberEnd: 4251
    functionName: expand_function_arguments
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 2
    functionsReached:
    - ARR_ELEMTYPE
    - ARR_DIMS
    - Assert
    - DatumGetArrayTypeP
    - ARR_DATA_PTR
    - recheck_cast_function_args
    - add_function_defaults
    - ARR_NDIM
    - GETSTRUCT
    - IsA
    - list_length
    - elog
    - reorder_function_arguments
    - ARR_HASNULL
    - SysCacheGetAttr
    - lfirst
    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:4222,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4224,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4229
      start: 4220
    functionDepth: 1
    functionLinenumber: 4220
    functionLinenumberEnd: 4229
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 136
    functionsReached:
    - IsA
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4262,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4263,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4268,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4270,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4271,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4277,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4279,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4282,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4289,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4290,1
    - Dst: fetch_function_defaults
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4301,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4307,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4316,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4317,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 3
    argNames:
    - args
    - pronargs
    - func_tuple
    argTypes:
    - List*
    - int
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4321
      start: 4259
    functionDepth: 1
    functionLinenumber: 4259
    functionLinenumberEnd: 4321
    functionName: reorder_function_arguments
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - fetch_function_defaults
    - Assert
    - memset
    - GETSTRUCT
    - IsA
    - list_length
    - elog
    - lappend
    - lfirst
    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:4277,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4279,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4282,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4289,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4290,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4293
      start: 4275
    functionDepth: 1
    functionLinenumber: 4275
    functionLinenumberEnd: 4293
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 136
    functionsReached:
    - Assert
    - IsA
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4307,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4309
      start: 4304
    functionDepth: 1
    functionLinenumber: 4304
    functionLinenumberEnd: 4309
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 136
    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:4332,1
    - Dst: fetch_function_defaults
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4337,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4340,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4342,1
    - Dst: list_delete_first_n
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4344,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4347,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - args
    - pronargs
    - func_tuple
    argTypes:
    - List*
    - int
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4348
      start: 4329
    functionDepth: 1
    functionLinenumber: 4329
    functionLinenumberEnd: 4348
    functionName: add_function_defaults
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - fetch_function_defaults
    - list_concat_copy
    - list_delete_first_n
    - list_length
    - elog
    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:4360,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4362,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4363,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4363,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - func_tuple
    argTypes:
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4366
      start: 4353
    functionDepth: 1
    functionLinenumber: 4353
    functionLinenumberEnd: 4366
    functionName: fetch_function_defaults
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 2
    functionsReached:
    - pfree
    - stringToNode
    - TextDatumGetCString
    - SysCacheGetAttrNotNull
    - castNode
    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:4388,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4395,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4396,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4400,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4400,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4402,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4403,1
    - Dst: enforce_generic_type_consistency
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4404,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4411,1
    - Dst: make_fn_arguments
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4414,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: 4415
      start: 4383
    functionDepth: 1
    functionLinenumber: 4383
    functionLinenumberEnd: 4415
    functionName: recheck_cast_function_args
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - exprType
    - Assert
    - enforce_generic_type_consistency
    - GETSTRUCT
    - list_length
    - elog
    - make_fn_arguments
    - memcpy
    - lfirst
    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:4400,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4400,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4401
      start: 4398
    functionDepth: 1
    functionLinenumber: 4398
    functionLinenumberEnd: 4401
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 136
    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:4435,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4465,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4465,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4466,1
    - Dst: makeNullConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4478,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4508,1
    - Dst: evaluate_expr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4519,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: 4521
      start: 4428
    functionDepth: 1
    functionLinenumber: 4428
    functionLinenumberEnd: 4521
    functionName: evaluate_function
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - makeNullConst
    - IsA
    - GETSTRUCT
    - evaluate_expr
    - makeNode
    - lfirst
    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:4465,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4465,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4466,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4469
      start: 4463
    functionDepth: 1
    functionLinenumber: 4463
    functionLinenumberEnd: 4469
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 136
    functionsReached:
    - lfirst
    - IsA
    linkageType: ''
    returnType: void
    signature: void foreach(arg, args)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4561,1
    - Dst: heap_attisnull
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4590,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4591,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4595,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4599,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4599,1
    - Dst: FmgrHookIsNeeded
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4603,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4610,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4613,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4620,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4632,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4633,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4639,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4648,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4657,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4657,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4658,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4659,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4659,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4661,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4662,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4664,1
    - Dst: prepare_sql_fn_parse_info
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4675,1
    - Dst: pg_parse_query
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4685,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4686,1
    - Dst: make_parsestate
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4689,1
    - Dst: sql_fn_parser_setup
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4691,1
    - Dst: transformTopLevelStmt
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4693,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4693,1
    - Dst: free_parsestate
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4695,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4706,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4725,1
    - Dst: get_expr_result_type
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4729,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4743,1
    - Dst: check_sql_fn_retval
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4744,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4744,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4754,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4758,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4768,1
    - Dst: contain_mutable_functions
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4780,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4783,1
    - Dst: contain_nonstrict_functions
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4787,1
    - Dst: contain_context_dependent_node
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4794,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4803,1
    - Dst: substitute_actual_parameters
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4804,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4811,1
    - Dst: contain_subplans
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4830,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4832,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4832,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4841,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4851,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4853,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4855,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4863,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4865,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4867,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4869,1
    - Dst: record_plan_function_dependency
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4884,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4890,1
    - Dst: eval_const_expressions_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4891,1
    - Dst: list_delete_last
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4892,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4900,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4901,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: 4905
      start: 4554
    functionDepth: 4
    functionLinenumber: 4554
    functionLinenumberEnd: 4905
    functionName: inline_function
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - transformTopLevelStmt
    - MemoryContextSwitchTo
    - SysCacheGetAttrNotNull
    - list_length
    - castNode
    - contain_volatile_functions
    - cost_qual_eval
    - SysCacheGetAttr
    - heap_attisnull
    - makeNode
    - record_plan_function_dependency
    - GetUserId
    - object_aclcheck
    - pg_parse_query
    - exprType
    - NameStr
    - MemoryContextDelete
    - contain_subplans
    - GETSTRUCT
    - contain_context_dependent_node
    - get_expr_result_type
    - eval_const_expressions_mutator
    - linitial_node
    - make_parsestate
    - linitial
    - list_delete_last
    - contain_mutable_functions
    - IsA
    - prepare_sql_fn_parse_info
    - substitute_actual_parameters
    - list_member_oid
    - FmgrHookIsNeeded
    - OidIsValid
    - sql_fn_parser_setup
    - free_parsestate
    - lfirst
    - exprCollation
    - stringToNode
    - lappend_oid
    - TextDatumGetCString
    - list_make1
    - check_sql_fn_retval
    - palloc0
    - copyObject
    - AllocSetContextCreate
    - contain_nonstrict_functions
    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:4811,1
    - Dst: contain_subplans
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4830,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4832,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4832,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4841,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4845
      start: 4809
    functionDepth: 2
    functionLinenumber: 4809
    functionLinenumberEnd: 4845
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 136
    functionsReached:
    - contain_subplans
    - list_make1
    - contain_volatile_functions
    - cost_qual_eval
    - lfirst
    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:4920,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - expr
    - nargs
    - args
    - usecounts
    argTypes:
    - Node*
    - int
    - List*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4921
      start: 4910
    functionDepth: 1
    functionLinenumber: 4910
    functionLinenumberEnd: 4921
    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:4929,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4934,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4936,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4943,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4945,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - substitute_actual_parameters_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4946
      start: 4923
    functionDepth: 3
    functionLinenumber: 4923
    functionLinenumberEnd: 4946
    functionName: substitute_actual_parameters_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - list_nth
    - elog
    - 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:4958,1
    - Dst: errposition
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4961,1
    - Dst: internalerrposition
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4962,1
    - Dst: internalerrquery
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4963,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4966,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4967
      start: 4951
    functionDepth: 1
    functionLinenumber: 4951
    functionLinenumberEnd: 4967
    functionName: sql_inline_error_callback
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - internalerrposition
    - errcontext
    - errposition
    - internalerrquery
    - geterrposition
    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:4990,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4993,1
    - Dst: fix_opfuncids
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:4996,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5002,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5012,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5013,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5017,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5020,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5033,1
    - Dst: PG_DETOAST_DATUM_COPY
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5033,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5035,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5039,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5044,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: 5048
      start: 4975
    functionDepth: 2
    functionLinenumber: 4975
    functionLinenumberEnd: 5048
    functionName: evaluate_expr
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 2
    functionsReached:
    - FreeExecutorState
    - MemoryContextSwitchTo
    - fix_opfuncids
    - get_typlenbyval
    - ExecEvalExprSwitchContext
    - datumCopy
    - PointerGetDatum
    - GetPerTupleExprContext
    - PG_DETOAST_DATUM_COPY
    - CreateExecutorState
    - makeConst
    - ExecInitExpr
    linkageType: ''
    returnType: Expr
    signature: "Expr *\nevaluate_expr(Expr *expr, Oid result_type, int32 result_typmod,\n\t\t\t
      \ Oid result_collation)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5089,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5097,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5104,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5106,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5108,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5131,1
    - Dst: contain_subplans
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5132,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5136,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5136,1
    - Dst: FmgrHookIsNeeded
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5140,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5146,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5146,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5147,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5148,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5149,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5168,1
    - Dst: heap_attisnull
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5169,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5171,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5179,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5182,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5185,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5186,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5192,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5201,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5209,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5209,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5210,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5211,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5211,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5213,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5214,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5216,1
    - Dst: AcquireRewriteLocks
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5219,1
    - Dst: pg_rewrite_query
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5220,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5221,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5223,1
    - Dst: prepare_sql_fn_parse_info
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5232,1
    - Dst: pg_parse_query
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5241,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5242,1
    - Dst: pg_analyze_and_rewrite_withcb
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5245,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5245,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5249,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5251,1
    - Dst: BuildDescFromLists
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5262,1
    - Dst: get_expr_result_type
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5268,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5273,1
    - Dst: check_sql_fn_retval
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5290,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5290,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5303,1
    - Dst: substitute_actual_srf_parameters
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5308,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5316,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5318,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5320,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5322,1
    - Dst: record_plan_function_dependency
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5333,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5346,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5347,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5349,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 95
    argCount: 2
    argNames:
    - root
    - rte
    argTypes:
    - PlannerInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5352
      start: 5067
    functionDepth: 5
    functionLinenumber: 5067
    functionLinenumberEnd: 5352
    functionName: inline_set_returning_function
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - HeapTupleIsValid
    - BuildDescFromLists
    - SysCacheGetAttrNotNull
    - list_length
    - castNode
    - pg_rewrite_query
    - contain_volatile_functions
    - SysCacheGetAttr
    - heap_attisnull
    - pg_analyze_and_rewrite_withcb
    - record_plan_function_dependency
    - GetUserId
    - object_aclcheck
    - pg_parse_query
    - NameStr
    - MemoryContextDelete
    - ReleaseSysCache
    - contain_subplans
    - AcquireRewriteLocks
    - GETSTRUCT
    - get_expr_result_type
    - linitial_node
    - linitial
    - IsA
    - prepare_sql_fn_parse_info
    - elog
    - FmgrHookIsNeeded
    - substitute_actual_srf_parameters
    - ObjectIdGetDatum
    - check_stack_depth
    - Assert
    - stringToNode
    - TextDatumGetCString
    - list_make1
    - check_sql_fn_retval
    - SearchSysCache1
    - copyObject
    - AllocSetContextCreate
    linkageType: ''
    returnType: Query
    signature: 'Query *

      inline_set_returning_function(PlannerInfo *root, RangeTblEntry *rte)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: query_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - expr
    - nargs
    - args
    argTypes:
    - Query*
    - int
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5373
      start: 5360
    functionDepth: 1
    functionLinenumber: 5360
    functionLinenumberEnd: 5373
    functionName: substitute_actual_srf_parameters
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - query_tree_mutator
    linkageType: ''
    returnType: Query
    signature: 'Query *

      substitute_actual_srf_parameters(Query *expr, int nargs, List *args)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5383,1
    - Dst: query_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5386,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5393,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5400,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5406,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5406,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5407,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5411,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - substitute_actual_srf_parameters_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5414
      start: 5375
    functionDepth: 3
    functionLinenumber: 5375
    functionLinenumberEnd: 5414
    functionName: substitute_actual_srf_parameters_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 0
    functionsReached:
    - query_tree_mutator
    - IsA
    - IncrementVarSublevelsUp
    - elog
    - list_nth
    - copyObject
    - expression_tree_mutator
    linkageType: ''
    returnType: Node
    signature: "Node *\nsubstitute_actual_srf_parameters_mutator(Node *node,\n\t\t\t\t\t\t\t\t\t\t
      substitute_actual_srf_parameters_context *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pull_paramids_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5425,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - expr
    argTypes:
    - Expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5428
      start: 5420
    functionDepth: 1
    functionLinenumber: 5420
    functionLinenumberEnd: 5428
    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:5435,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5439,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5442,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - Bitmapset**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5443
      start: 5430
    functionDepth: 1
    functionLinenumber: 5430
    functionLinenumberEnd: 5443
    functionName: pull_paramids_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - IsA
    - expression_tree_walker
    - bms_add_member
    linkageType: ''
    returnType: bool
    signature: bool pull_paramids_walker(Node *node, Bitmapset **context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_array_type
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5458,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5460,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5470,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5490,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5493,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5495,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5495,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5496,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5496,1
    - Dst: construct_md_array
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5503,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5505,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5506,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5509,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5510,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5511,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5515,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5517,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/optimizer/util/clauses.c:5522,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: 5526
      start: 5452
    functionDepth: 1
    functionLinenumber: 5452
    functionLinenumberEnd: 5526
    functionName: make_SAOP_expr
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 1
    functionsReached:
    - pfree
    - get_typlenbyvalalign
    - palloc
    - list_make2
    - construct_md_array
    - get_opcode
    - list_length
    - PointerGetDatum
    - OidIsValid
    - makeConst
    - makeNode
    - list_free
    - get_array_type
    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: 5501
      start: 5497
    functionDepth: 0
    functionLinenumber: 5497
    functionLinenumberEnd: 5501
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/optimizer/util/clauses.c
    functionUses: 7
    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:54,1
    - Dst: make_inh_translation_list
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:60,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - parentrel
    - childrel
    - parentRTindex
    - childRTindex
    argTypes:
    - Relation
    - Relation
    - Index
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 64
    functionName: make_append_rel_info
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 0
    functionsReached:
    - makeNode
    - RelationGetRelid
    - make_inh_translation_list
    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:86,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:87,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:88,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:97,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:107,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:111,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:114,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:125,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:125,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:145,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:146,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:146,1
    - Dst: SearchSysCacheAttName
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:150,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:151,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:152,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:153,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:154,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:155,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:156,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:158,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:163,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:164,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:165,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:166,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:168,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:169,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:170,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:171,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:173,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:173,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 36
    argCount: 4
    argNames:
    - oldrelation
    - newrelation
    - newvarno
    - appinfo
    argTypes:
    - Relation
    - Relation
    - Index
    - AppendRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 184
    functionName: make_inh_translation_list
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 1
    functionsReached:
    - errmsg
    - makeVar
    - NameStr
    - Assert
    - RelationGetRelid
    - ReleaseSysCache
    - HeapTupleIsValid
    - RelationGetDescr
    - TupleDescAttr
    - GETSTRUCT
    - palloc0
    - ereport
    - elog
    - lappend
    - strcmp
    - RelationGetRelationName
    - errcode
    - SearchSysCacheAttName
    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:210,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:213,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:213,1
    - Dst: adjust_appendrel_attrs_mutator
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:215,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - root
    - node
    - nappinfos
    - appinfos
    argTypes:
    - PlannerInfo*
    - Node*
    - int
    - AppendRelInfo**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 216
    functionName: adjust_appendrel_attrs
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 3
    functionsReached:
    - adjust_appendrel_attrs_mutator
    - Assert
    - IsA
    linkageType: ''
    returnType: Node
    signature: "Node *\nadjust_appendrel_attrs(PlannerInfo *root, Node *node, int
      nappinfos,\n\t\t\t\t\t   AppendRelInfo **appinfos)"
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:228,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:230,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:284,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:285,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:286,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:287,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:287,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:290,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:291,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:292,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:300,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:302,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:314,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:316,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:319,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:347,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:349,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:350,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:354,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:358,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:360,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:382,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:386,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:394,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:396,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:399,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:403,1
    - Dst: makeNullConst
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:414,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:422,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:424,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:438,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:443,1
    - Dst: adjust_child_relids
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:449,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:456,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:456,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:457,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:457,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:458,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:458,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:459,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:459,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:466,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:469,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:472,1
    - Dst: adjust_appendrel_attrs_mutator
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:476,1
    - Dst: adjust_appendrel_attrs_mutator
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:480,1
    - Dst: adjust_child_relids
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:483,1
    - Dst: adjust_child_relids
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:486,1
    - Dst: adjust_child_relids
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:489,1
    - Dst: adjust_child_relids
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:492,1
    - Dst: adjust_child_relids
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:495,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:523,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:523,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:524,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:524,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:526,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:526,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:527,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:527,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:529,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 129
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - adjust_appendrel_attrs_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 218
    functionDepth: 3
    functionLinenumber: 218
    functionLinenumberEnd: 530
    functionName: adjust_appendrel_attrs_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 2
    functionsReached:
    - makeNullConst
    - adjust_child_relids
    - Assert
    - get_rel_name
    - IsA
    - list_length
    - adjust_appendrel_attrs_mutator
    - elog
    - list_nth
    - copyObject
    - OidIsValid
    - bms_is_member
    - memcpy
    - makeNode
    - rt_fetch
    - expression_tree_mutator
    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:552,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:556,1
    - Dst: find_appinfos_by_relids
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:560,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:562,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:564,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - root
    - node
    - childrel
    - parentrel
    argTypes:
    - PlannerInfo*
    - Node*
    - RelOptInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 540
    functionDepth: 2
    functionLinenumber: 540
    functionLinenumberEnd: 567
    functionName: adjust_appendrel_attrs_multilevel
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 2
    functionsReached:
    - pfree
    - find_appinfos_by_relids
    - adjust_appendrel_attrs_multilevel
    - adjust_appendrel_attrs
    - elog
    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:584,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:588,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:590,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:591,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - relids
    - nappinfos
    - appinfos
    argTypes:
    - Relids
    - int
    - AppendRelInfo**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 573
    functionDepth: 1
    functionLinenumber: 573
    functionLinenumberEnd: 601
    functionName: adjust_child_relids
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 1
    functionsReached:
    - bms_is_member
    - bms_del_member
    - bms_copy
    - bms_add_member
    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:619,1
    - Dst: adjust_child_relids_multilevel
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:626,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:630,1
    - Dst: find_appinfos_by_relids
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:634,1
    - Dst: adjust_child_relids
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:636,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:638,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - root
    - relids
    - childrel
    - parentrel
    argTypes:
    - PlannerInfo*
    - Relids
    - RelOptInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 607
    functionDepth: 2
    functionLinenumber: 607
    functionLinenumberEnd: 641
    functionName: adjust_child_relids_multilevel
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 1
    functionsReached:
    - bms_overlap
    - adjust_child_relids
    - pfree
    - find_appinfos_by_relids
    - elog
    - adjust_child_relids_multilevel
    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:654,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:654,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:659,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:664,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:665,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:666,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:667,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:668,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:669,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:670,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:672,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - attnums
    - context
    argTypes:
    - List*
    - AppendRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 647
    functionDepth: 3
    functionLinenumber: 647
    functionLinenumberEnd: 675
    functionName: adjust_inherited_attnums
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 0
    functionsReached:
    - Assert
    - get_rel_name
    - lappend_int
    - IsA
    - list_length
    - elog
    - list_nth
    - OidIsValid
    - lfirst_int
    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:659,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:664,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:665,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:666,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:667,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:668,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:669,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:670,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:672,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 657
    functionDepth: 3
    functionLinenumber: 657
    functionLinenumberEnd: 673
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 136
    functionsReached:
    - get_rel_name
    - lappend_int
    - IsA
    - list_length
    - list_nth
    - elog
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(lc, attnums)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:688,1
    - Dst: adjust_inherited_attnums_multilevel
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:692,1
    - Dst: adjust_inherited_attnums
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:697,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: 698
      start: 681
    functionDepth: 4
    functionLinenumber: 681
    functionLinenumberEnd: 698
    functionName: adjust_inherited_attnums_multilevel
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 2
    functionsReached:
    - elog
    - adjust_inherited_attnums
    - adjust_inherited_attnums_multilevel
    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:714,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:721,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:723,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:727,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:727,1
    - Dst: adjust_appendrel_attrs_multilevel
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:729,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:731,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:732,1
    - Dst: adjust_inherited_attnums_multilevel
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:735,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: 739
      start: 709
    functionDepth: 5
    functionLinenumber: 709
    functionLinenumberEnd: 739
    functionName: get_translated_update_targetlist
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 0
    functionsReached:
    - Assert
    - adjust_appendrel_attrs_multilevel
    - adjust_inherited_attnums_multilevel
    - find_base_rel
    - copyObject
    - bms_is_member
    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
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:761,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:761,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:764,1
    - Dst: find_base_rel_ignore_join
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:771,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:774,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 752
    functionDepth: 1
    functionLinenumber: 752
    functionLinenumberEnd: 781
    functionName: find_appinfos_by_relids
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 4
    functionsReached:
    - find_base_rel_ignore_join
    - elog
    - palloc
    - bms_next_member
    - bms_num_members
    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:818,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:818,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:819,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:820,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:821,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:830,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:831,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:832,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:834,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:842,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:842,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:843,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:850,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:855,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:857,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:858,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:860,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:863,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:869,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:875,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:876,1
    - Dst: get_typavgwidth
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:878,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:878,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:879,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:880,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:881,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:883,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:886,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:889,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:890,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:891,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:893,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: 894
      start: 808
    functionDepth: 1
    functionLinenumber: 808
    functionLinenumberEnd: 894
    functionName: add_row_identity_var
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 0
    functionsReached:
    - pstrdup
    - list_length
    - makeNode
    - exprType
    - equal
    - foreach
    - strcmp
    - IsA
    - elog
    - lappend
    - bms_is_member
    - lfirst
    - bms_add_member
    - makeTargetEntry
    - Assert
    - bms_make_singleton
    - exprTypmod
    - copyObject
    - get_typavgwidth
    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:912,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:922,1
    - Dst: add_row_identity_var
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:928,1
    - Dst: GetFdwRoutineForRelation
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:937,1
    - Dst: FdwRoutine*::AddForeignUpdateTargets
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:940,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:961,1
    - Dst: add_row_identity_var
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:967,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: 970
      start: 903
    functionDepth: 2
    functionLinenumber: 903
    functionLinenumberEnd: 970
    functionName: add_row_identity_columns
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 0
    functionsReached:
    - Assert
    - makeVar
    - add_row_identity_var
    - GetFdwRoutineForRelation
    - FdwRoutine*::AddForeignUpdateTargets
    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:999,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1002,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1005,1
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1026,1
    - Dst: add_row_identity_columns
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1027,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1029,1
    - Dst: build_base_rel_tlists
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1030,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1042,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1044,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1046,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1049,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1052,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/appendinfo.c:1052,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 984
    functionDepth: 3
    functionLinenumber: 984
    functionLinenumberEnd: 1056
    functionName: distribute_row_identity_vars
    functionSourceFile: /src/postgres/src/backend/optimizer/util/appendinfo.c
    functionUses: 1
    functionsReached:
    - Assert
    - add_row_identity_columns
    - table_open
    - IsA
    - foreach
    - find_base_rel
    - lappend
    - copyObject
    - build_base_rel_tlists
    - table_close
    - rt_fetch
    - lfirst
    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:101,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:109,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:113,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:115,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:117,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:130,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:138,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:140,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:144,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:147,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 151
    functionName: setup_simple_rel_arrays
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 3
    functionsReached:
    - Assert
    - lfirst_node
    - palloc0
    - foreach
    - list_length
    - elog
    - lfirst
    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:167,1
    - Dst: repalloc0_array
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:172,1
    - Dst: repalloc0_array
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:175,1
    - Dst: repalloc0_array
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:179,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:182,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - root
    - add_size
    argTypes:
    - PlannerInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 185
    functionName: expand_planner_arrays
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 0
    functionsReached:
    - repalloc0_array
    - Assert
    - palloc0_array
    linkageType: ''
    returnType: void
    signature: void expand_planner_arrays(PlannerInfo *root, int add_size)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:198,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:200,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:204,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:206,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:208,1
    - Dst: create_empty_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:214,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:240,1
    - Dst: getRTEPermissionInfo
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:259,1
    - Dst: get_relation_info
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:340,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:356,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:358,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:360,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:370,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:395,1
    - Dst: apply_child_basequals
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:396,1
    - Dst: mark_dummy_rel
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:402,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 117
    argCount: 3
    argNames:
    - root
    - relid
    - parent
    argTypes:
    - PlannerInfo*
    - int
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 407
    functionName: build_simple_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 4
    functionsReached:
    - Assert
    - get_relation_info
    - mark_dummy_rel
    - bms_make_singleton
    - create_empty_pathtarget
    - apply_child_basequals
    - palloc0
    - list_length
    - elog
    - makeNode
    - getRTEPermissionInfo
    linkageType: ''
    returnType: RelOptInfo
    signature: 'RelOptInfo *

      build_simple_rel(PlannerInfo *root, int relid, RelOptInfo *parent)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:426,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - root
    - relid
    argTypes:
    - PlannerInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 413
    functionDepth: 1
    functionLinenumber: 413
    functionLinenumberEnd: 429
    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: 442
      start: 435
    functionDepth: 0
    functionLinenumber: 435
    functionLinenumberEnd: 442
    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:476,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - root
    - relid
    argTypes:
    - PlannerInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 453
    functionDepth: 1
    functionLinenumber: 453
    functionLinenumberEnd: 479
    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:498,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:504,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:506,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:510,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:514,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 519
    functionName: build_join_rel_hash
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 0
    functionsReached:
    - Assert
    - hash_create
    - hash_search
    - foreach
    - 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:533,1
    - Dst: build_join_rel_hash
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:534,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:549,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:560,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:562,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:564,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - root
    - relids
    argTypes:
    - PlannerInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 526
    functionDepth: 2
    functionLinenumber: 526
    functionLinenumberEnd: 570
    functionName: find_join_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 0
    functionsReached:
    - build_join_rel_hash
    - hash_search
    - foreach
    - list_length
    - bms_equal
    - lfirst
    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:592,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:602,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:603,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:610,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:611,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 3
    argNames:
    - joinrel
    - outer_rel
    - inner_rel
    argTypes:
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 588
    functionDepth: 1
    functionLinenumber: 588
    functionLinenumberEnd: 619
    functionName: set_foreign_rel_properties
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - OidIsValid
    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:630,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:638,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:642,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - root
    - joinrel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 626
    functionDepth: 1
    functionLinenumber: 626
    functionLinenumberEnd: 645
    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: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:677,1
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:677,1
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:677,1
    - Dst: find_join_rel
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:682,1
    - Dst: build_joinrel_restrictlist
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:691,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:702,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:704,1
    - Dst: create_empty_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:710,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:720,1
    - Dst: min_join_parameterization
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:722,1
    - Dst: set_foreign_rel_properties
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:773,1
    - Dst: build_joinrel_tlist
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:784,1
    - Dst: build_joinrel_tlist
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:786,1
    - Dst: add_placeholders_to_joinrel
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:788,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:798,1
    - Dst: build_joinrel_restrictlist
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:805,1
    - Dst: build_joinrel_joinlist
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:810,1
    - Dst: has_relevant_eclass_joinclause
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:816,1
    - Dst: build_joinrel_partition_info
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:819,1
    - Dst: set_joinrel_size_estimates
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:825,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:843,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:844,1
    - Dst: add_join_rel
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:848,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:858,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:859,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:859,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:861,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 93
    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: 865
      start: 664
    functionDepth: 3
    functionLinenumber: 664
    functionLinenumberEnd: 865
    functionName: build_join_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 0
    functionsReached:
    - set_foreign_rel_properties
    - bms_copy
    - create_empty_pathtarget
    - bms_union
    - add_placeholders_to_joinrel
    - makeNode
    - bms_num_members
    - min_join_parameterization
    - build_joinrel_partition_info
    - build_joinrel_tlist
    - bms_del_members
    - is_parallel_safe
    - lappend
    - build_joinrel_joinlist
    - IS_OTHER_REL
    - Assert
    - add_join_rel
    - build_joinrel_restrictlist
    - has_relevant_eclass_joinclause
    - set_joinrel_size_estimates
    - find_join_rel
    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: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:887,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:890,1
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:890,1
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:890,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:893,1
    - Dst: adjust_child_relids
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:896,1
    - Dst: create_empty_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:903,1
    - Dst: set_foreign_rel_properties
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:957,1
    - Dst: build_child_join_reltarget
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:960,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:964,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:973,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:974,1
    - Dst: build_joinrel_partition_info
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:983,1
    - Dst: set_joinrel_size_estimates
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:990,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:994,1
    - Dst: find_join_rel
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:994,1
    - Dst: add_join_rel
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:997,1
    - Dst: has_useful_pathkeys
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1005,1
    - Dst: add_child_join_rel_equivalences
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1006,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 75
    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: 1011
      start: 881
    functionDepth: 3
    functionLinenumber: 881
    functionLinenumberEnd: 1011
    functionName: build_child_join_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 0
    functionsReached:
    - IS_OTHER_REL
    - adjust_child_relids
    - Assert
    - set_foreign_rel_properties
    - add_join_rel
    - has_useful_pathkeys
    - bms_copy
    - create_empty_pathtarget
    - build_joinrel_partition_info
    - adjust_appendrel_attrs
    - build_child_join_reltarget
    - set_joinrel_size_estimates
    - find_join_rel
    - makeNode
    - add_child_join_rel_equivalences
    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:1042,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1043,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: 1045
      start: 1021
    functionDepth: 1
    functionLinenumber: 1021
    functionLinenumberEnd: 1045
    functionName: min_join_parameterization
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 1
    functionsReached:
    - bms_union
    - bms_del_members
    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:1111,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1113,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1118,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1121,1
    - Dst: bms_nonempty_difference
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1124,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1133,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1136,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1137,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1139,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1140,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1144,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1146,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1146,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1147,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1148,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1152,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1153,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1157,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1170,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1171,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1172,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1178,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1189,1
    - Dst: bms_nonempty_difference
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1193,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1208,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1211,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1212,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1214,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1215,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1219,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1221,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1221,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1222,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1223,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1227,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1228,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1232,1
    - Dst: clamp_width_est
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1238,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: 1239
      start: 1099
    functionDepth: 3
    functionLinenumber: 1099
    functionLinenumberEnd: 1239
    functionName: build_joinrel_tlist
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 1
    functionsReached:
    - nodeTag
    - Assert
    - bms_is_subset
    - bms_is_member
    - clamp_width_est
    - IsA
    - foreach
    - find_base_rel
    - elog
    - bms_nonempty_difference
    - copyObject
    - lappend
    - list_nth
    - find_placeholder_info
    - bms_join
    - lfirst
    - bms_intersect
    - 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:1144,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1146,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1146,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1147,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1148,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1150
      start: 1142
    functionDepth: 1
    functionLinenumber: 1142
    functionLinenumberEnd: 1150
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 142
    functionsReached:
    - Assert
    - bms_is_subset
    - bms_is_member
    - lfirst
    - bms_add_member
    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:1219,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1221,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1221,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1222,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1225
      start: 1217
    functionDepth: 1
    functionLinenumber: 1217
    functionLinenumberEnd: 1225
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 142
    functionsReached:
    - bms_is_member
    - Assert
    - lfirst
    - bms_add_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:1294,1
    - Dst: subbuild_joinrel_restrictlist
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1301,1
    - Dst: subbuild_joinrel_restrictlist
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1303,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1311,1
    - Dst: generate_join_implied_equalities
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1312,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: 1319
      start: 1284
    functionDepth: 1
    functionLinenumber: 1284
    functionLinenumberEnd: 1319
    functionName: build_joinrel_restrictlist
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 2
    functionsReached:
    - bms_union
    - generate_join_implied_equalities
    - list_concat
    - 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:1333,1
    - Dst: subbuild_joinrel_joinlist
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - joinrel
    - outer_rel
    - inner_rel
    argTypes:
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1337
      start: 1321
    functionDepth: 1
    functionLinenumber: 1321
    functionLinenumberEnd: 1337
    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:1348,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1350,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1352,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1365,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1365,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1366,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1368,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1380,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1380,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1381,1
    - Dst: list_append_unique_ptr
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1391,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: 1403
      start: 1339
    functionDepth: 1
    functionLinenumber: 1339
    functionLinenumberEnd: 1403
    functionName: subbuild_joinrel_restrictlist
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 1
    functionsReached:
    - bms_overlap
    - Assert
    - bms_is_subset
    - list_append_unique_ptr
    - RINFO_IS_PUSHED_DOWN
    - foreach
    - lfirst
    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:1413,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1417,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1419,1
    - Dst: list_append_unique_ptr
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1436,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - joinrel
    - joininfo_list
    - new_joininfo
    argTypes:
    - RelOptInfo*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1441
      start: 1405
    functionDepth: 1
    functionLinenumber: 1405
    functionLinenumberEnd: 1441
    functionName: subbuild_joinrel_joinlist
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 1
    functionsReached:
    - Assert
    - list_append_unique_ptr
    - bms_is_subset
    - lfirst
    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:1417,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1419,1
    - Dst: list_append_unique_ptr
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1436,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1438
      start: 1415
    functionDepth: 1
    functionLinenumber: 1415
    functionLinenumberEnd: 1438
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 143
    functionsReached:
    - list_append_unique_ptr
    - bms_is_subset
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, joininfo_list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1471,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1473,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1475,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1479,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1481,1
    - Dst: create_empty_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1487,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1494,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 3
    argNames:
    - root
    - kind
    - relids
    argTypes:
    - PlannerInfo*
    - UpperRelationKind
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1497
      start: 1457
    functionDepth: 1
    functionLinenumber: 1457
    functionLinenumberEnd: 1497
    functionName: fetch_upper_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 13
    functionsReached:
    - bms_copy
    - create_empty_pathtarget
    - foreach
    - bms_equal
    - lappend
    - makeNode
    - lfirst
    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:1513,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1514,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1521,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1524,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1527,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1530
      start: 1508
    functionDepth: 2
    functionLinenumber: 1508
    functionLinenumberEnd: 1530
    functionName: find_childrel_parents
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 0
    functionsReached:
    - find_base_rel
    - Assert
    - 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:1557,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1557,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1560,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1563,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1563,1
    - Dst: find_param_path_info
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1566,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1573,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1575,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1577,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1579,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1582,1
    - Dst: generate_join_implied_equalities
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1590,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1598,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1600,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1600,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1605,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1611,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1613,1
    - Dst: get_parameterized_baserel_size
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1617,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1620,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1625,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 3
    argNames:
    - root
    - baserel
    - required_outer
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1628
      start: 1544
    functionDepth: 2
    functionLinenumber: 1544
    functionLinenumberEnd: 1628
    functionName: get_baserel_parampathinfo
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 0
    functionsReached:
    - bms_overlap
    - Assert
    - bms_is_subset
    - list_concat
    - bms_is_empty
    - find_param_path_info
    - foreach
    - get_parameterized_baserel_size
    - bms_union
    - lappend
    - generate_join_implied_equalities
    - join_clause_is_movable_into
    - makeNode
    - lfirst
    - bms_add_member
    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:1598,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1600,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1600,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1603
      start: 1596
    functionDepth: 2
    functionLinenumber: 1596
    functionLinenumberEnd: 1603
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 145
    functionsReached:
    - join_clause_is_movable_into
    - Assert
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, eqclauses)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1611,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1613,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1614
      start: 1609
    functionDepth: 1
    functionLinenumber: 1609
    functionLinenumberEnd: 1614
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 145
    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:1677,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1677,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1680,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1683,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1683,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1694,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1696,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1697,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1701,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1702,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1707,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1709,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1711,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1714,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1717,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1720,1
    - Dst: generate_join_implied_equalities
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1724,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1733,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1735,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1735,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1738,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1742,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1747,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1748,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1751,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1788,1
    - Dst: generate_join_implied_equalities_for_ecs
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1791,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1798,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1800,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1800,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1803,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1806,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1815,1
    - Dst: find_param_path_info
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1818,1
    - Dst: get_parameterized_joinrel_size
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1822,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1835,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1840,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: 1843
      start: 1658
    functionDepth: 2
    functionLinenumber: 1658
    functionLinenumberEnd: 1843
    functionName: get_joinrel_parampathinfo
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 0
    functionsReached:
    - bms_overlap
    - Assert
    - bms_is_subset
    - list_concat
    - bms_is_empty
    - get_parameterized_joinrel_size
    - find_param_path_info
    - foreach
    - bms_union
    - lappend
    - PATH_REQ_OUTER
    - generate_join_implied_equalities
    - join_clause_is_movable_into
    - generate_join_implied_equalities_for_ecs
    - makeNode
    - lfirst
    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:1733,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1735,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1735,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1738,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1742,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1747,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1748,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1751,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1752
      start: 1731
    functionDepth: 2
    functionLinenumber: 1731
    functionLinenumberEnd: 1752
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 146
    functionsReached:
    - join_clause_is_movable_into
    - Assert
    - lappend
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, eclauses)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1798,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1800,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1800,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1803,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1806,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1807
      start: 1796
    functionDepth: 2
    functionLinenumber: 1796
    functionLinenumberEnd: 1807
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 146
    functionsReached:
    - join_clause_is_movable_into
    - Assert
    - lappend
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, eclauses)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1861,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1861,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1864,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1867,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1867,1
    - Dst: find_param_path_info
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1870,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1874,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1879,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - appendrel
    - required_outer
    argTypes:
    - RelOptInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1882
      start: 1855
    functionDepth: 1
    functionLinenumber: 1855
    functionLinenumberEnd: 1882
    functionName: get_appendrel_parampathinfo
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 0
    functionsReached:
    - bms_overlap
    - Assert
    - bms_is_subset
    - bms_is_empty
    - find_param_path_info
    - lappend
    - makeNode
    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:1893,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1895,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1897,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - rel
    - required_outer
    argTypes:
    - RelOptInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1902
      start: 1888
    functionDepth: 1
    functionLinenumber: 1888
    functionLinenumberEnd: 1902
    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:1919,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1919,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1921,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1922,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1923,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1938,1
    - Dst: get_param_path_clause_serials
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1939,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1940,1
    - Dst: get_param_path_clause_serials
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1941,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1942,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1944,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1946,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1950,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1961,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1963,1
    - Dst: get_param_path_clause_serials
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1966,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1967,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1968,1
    - Dst: bms_int_members
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:1970,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 1
    argNames:
    - path
    argTypes:
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1982
      start: 1909
    functionDepth: 1
    functionLinenumber: 1909
    functionLinenumberEnd: 1982
    functionName: get_param_path_clause_serials
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 1
    functionsReached:
    - Assert
    - bms_add_members
    - bms_copy
    - list_head
    - IsA
    - foreach
    - bms_int_members
    - lfirst
    - get_param_path_clause_serials
    - 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:2001,1
    - Dst: IS_PARTITIONED_REL
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2001,1
    - Dst: have_partkey_equi_join
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2020,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2023,1
    - Dst: IS_PARTITIONED_REL
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2023,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2033,1
    - Dst: set_joinrel_partition_key_exprs
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2045,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2051,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2052,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: 2054
      start: 1990
    functionDepth: 1
    functionLinenumber: 1990
    functionLinenumberEnd: 2054
    functionName: build_joinrel_partition_info
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 2
    functionsReached:
    - set_joinrel_partition_key_exprs
    - have_partkey_equi_join
    - Assert
    - IS_PARTITIONED_REL
    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:2077,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2078,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2081,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2088,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2097,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2098,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2106,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2110,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2113,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2114,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2116,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2117,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2119,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2120,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2122,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2123,1
    - Dst: op_strict
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2132,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2142,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2143,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2146,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2147,1
    - Dst: match_expr_to_partition_keys
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2156,1
    - Dst: match_expr_to_partition_keys
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2159,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2184,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2185,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2189,1
    - Dst: get_opfamily_member
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2228,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2232,1
    - Dst: get_mergejoin_opfamilies
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2234,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2237,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2247,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2249,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2252,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2254,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2256,1
    - Dst: exprs_known_equal
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2258,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2274,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2276,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: 2297
      start: 2063
    functionDepth: 1
    functionLinenumber: 2063
    functionLinenumberEnd: 2297
    functionName: have_partkey_equi_join
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 1
    functionsReached:
    - bms_overlap
    - op_strict
    - castNode
    - linitial_oid
    - match_expr_to_partition_keys
    - RINFO_IS_PUSHED_DOWN
    - lsecond
    - foreach
    - exprs_known_equal
    - get_mergejoin_opfamilies
    - bms_is_subset
    - lfirst_node
    - linitial
    - remove_nulling_relids
    - OidIsValid
    - list_member_oid
    - IS_OUTER_JOIN
    - get_opfamily_member
    - lfirst
    - op_in_opfamily
    - Assert
    - exprCollation
    - memset
    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:2088,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2097,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2098,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2106,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2110,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2113,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2114,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2116,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2117,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2119,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2120,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2122,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2123,1
    - Dst: op_strict
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2132,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2142,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2143,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2146,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2147,1
    - Dst: match_expr_to_partition_keys
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2156,1
    - Dst: match_expr_to_partition_keys
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2159,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2184,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2185,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2189,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2199
      start: 2086
    functionDepth: 1
    functionLinenumber: 2086
    functionLinenumberEnd: 2199
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 149
    functionsReached:
    - bms_overlap
    - op_strict
    - bms_is_subset
    - lfirst_node
    - linitial
    - remove_nulling_relids
    - RINFO_IS_PUSHED_DOWN
    - lsecond
    - castNode
    - OidIsValid
    - list_member_oid
    - IS_OUTER_JOIN
    - match_expr_to_partition_keys
    - op_in_opfamily
    linkageType: ''
    returnType: void
    signature: void foreach(lc, restrictlist)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2316,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2317,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2318,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2321,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2322,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2329,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2331,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2331,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2345,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2347,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2347,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - expr
    - rel
    - strict_op
    argTypes:
    - Expr*
    - RelOptInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2353
      start: 2310
    functionDepth: 1
    functionLinenumber: 2310
    functionLinenumberEnd: 2353
    functionName: match_expr_to_partition_keys
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 2
    functionsReached:
    - Assert
    - equal
    - IsA
    - foreach
    - castNode
    - lfirst
    linkageType: ''
    returnType: int
    signature: int match_expr_to_partition_keys(Expr *expr, RelOptInfo *rel, bool
      strict_op)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2367,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2369,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2400,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2401,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2414,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2415,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2426,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2427,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2429,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2440,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2442,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2444,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2471,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2471,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2473,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2478,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2479,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2481,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2482,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2483,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2485,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2491,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: 2497
      start: 2359
    functionDepth: 1
    functionLinenumber: 2359
    functionLinenumberEnd: 2497
    functionName: set_joinrel_partition_key_exprs
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 1
    functionsReached:
    - exprType
    - exprCollation
    - list_concat
    - list_concat_copy
    - list_copy
    - list_make2
    - palloc0
    - foreach
    - elog
    - lappend
    - makeNode
    - lfirst
    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:2478,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2479,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2481,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2482,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2483,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/relnode.c:2485,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2486
      start: 2476
    functionDepth: 1
    functionLinenumber: 2476
    functionLinenumberEnd: 2486
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/relnode.c
    functionUses: 151
    functionsReached:
    - exprType
    - exprCollation
    - list_make2
    - lappend
    - makeNode
    - 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:2512,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: 2520
      start: 2503
    functionDepth: 2
    functionLinenumber: 2503
    functionLinenumberEnd: 2520
    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: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - root
    - expr
    - phrels
    argTypes:
    - PlannerInfo*
    - Expr*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 65
    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:89,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:98,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:104,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:106,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:109,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:126,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:127,1
    - Dst: bms_int_members
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:128,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:130,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:132,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:133,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:133,1
    - Dst: get_typavgwidth
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:137,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:137,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:138,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:147,1
    - Dst: repalloc0_array
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:159,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:162,1
    - Dst: find_placeholders_in_expr
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:172,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 2
    argNames:
    - root
    - phv
    argTypes:
    - PlannerInfo*
    - PlaceHolderVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 175
    functionName: find_placeholder_info
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 7
    functionsReached:
    - bms_int_members
    - exprType
    - Assert
    - repalloc0_array
    - find_placeholders_in_expr
    - bms_copy
    - bms_is_empty
    - exprTypmod
    - get_typavgwidth
    - elog
    - lappend
    - copyObject
    - palloc0_array
    - makeNode
    - bms_difference
    - pull_varnos
    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:188,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:194,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:195,1
    - Dst: find_placeholders_recurse
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:196,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 198
    functionName: find_placeholders_in_jointree
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 1
    functionsReached:
    - Assert
    - find_placeholders_recurse
    - IsA
    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:211,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:215,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:223,1
    - Dst: find_placeholders_recurse
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:225,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:225,1
    - Dst: find_placeholders_in_expr
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:231,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:233,1
    - Dst: find_placeholders_recurse
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:240,1
    - Dst: find_placeholders_recurse
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:241,1
    - Dst: find_placeholders_in_expr
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:244,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:247,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:248,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - root
    - jtnode
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 249
    functionName: find_placeholders_recurse
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 2
    functionsReached:
    - nodeTag
    - find_placeholders_in_expr
    - IsA
    - foreach
    - elog
    - find_placeholders_recurse
    - lfirst
    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:266,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:272,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:275,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:279,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:281,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - root
    - expr
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 256
    functionDepth: 2
    functionLinenumber: 256
    functionLinenumberEnd: 282
    functionName: find_placeholders_in_expr
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 2
    functionsReached:
    - IsA
    - list_free
    - find_placeholder_info
    - lfirst
    - pull_var_clause
    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:272,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:275,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:279,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 270
    functionDepth: 2
    functionLinenumber: 270
    functionLinenumberEnd: 280
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 152
    functionsReached:
    - find_placeholder_info
    - IsA
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(vl, vars)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:304,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:306,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:307,1
    - Dst: add_vars_to_targetlist
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:312,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 299
    functionDepth: 2
    functionLinenumber: 299
    functionLinenumberEnd: 315
    functionName: fix_placeholder_input_needed_levels
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 1
    functionsReached:
    - pull_var_clause
    - add_vars_to_targetlist
    - foreach
    - lfirst
    - list_free
    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:331,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:333,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:334,1
    - Dst: add_vars_to_attr_needed
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:339,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 326
    functionDepth: 2
    functionLinenumber: 326
    functionLinenumberEnd: 342
    functionName: rebuild_placeholder_attr_needed
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 2
    functionsReached:
    - pull_var_clause
    - add_vars_to_attr_needed
    - foreach
    - lfirst
    - list_free
    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:360,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:362,1
    - Dst: bms_get_singleton_member
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:366,1
    - Dst: bms_nonempty_difference
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:367,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:369,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:376,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:379,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:380,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 355
    functionDepth: 2
    functionLinenumber: 355
    functionLinenumberEnd: 384
    functionName: add_placeholders_to_base_rels
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 1
    functionsReached:
    - Assert
    - bms_get_singleton_member
    - foreach
    - find_base_rel
    - bms_nonempty_difference
    - lappend
    - copyObject
    - lfirst
    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:408,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:410,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:413,1
    - Dst: bms_nonempty_difference
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:416,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:431,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:432,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:435,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:443,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:445,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:447,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:470,1
    - Dst: clamp_width_est
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:475,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: 476
      start: 399
    functionDepth: 1
    functionLinenumber: 399
    functionLinenumberEnd: 476
    functionName: add_placeholders_to_joinrel
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 1
    functionsReached:
    - Assert
    - bms_is_subset
    - bms_add_members
    - cost_qual_eval_node
    - clamp_width_est
    - foreach
    - bms_nonempty_difference
    - copyObject
    - lappend
    - lfirst
    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:502,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - root
    - clause
    - relid
    argTypes:
    - PlannerInfo*
    - Node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 490
    functionDepth: 1
    functionLinenumber: 490
    functionLinenumberEnd: 503
    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:511,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:519,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:532,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:538,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:545,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - contain_placeholder_references_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 505
    functionDepth: 1
    functionLinenumber: 505
    functionLinenumberEnd: 547
    functionName: contain_placeholder_references_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 1
    functionsReached:
    - bms_is_member
    - IsA
    - expression_tree_walker
    - query_tree_walker
    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:568,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:578,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:578,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:581,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/util/placeholder.c:585,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - root
    - phinfo
    argTypes:
    - PlannerInfo*
    - PlaceHolderInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 558
    functionDepth: 1
    functionLinenumber: 558
    functionLinenumberEnd: 587
    functionName: get_placeholder_nulling_relids
    functionSourceFile: /src/postgres/src/backend/optimizer/util/placeholder.c
    functionUses: 0
    functionsReached:
    - Assert
    - bms_del_members
    - bms_add_members
    - bms_is_member
    - bms_next_member
    linkageType: ''
    returnType: Relids
    signature: Relids get_placeholder_nulling_relids(PlannerInfo *root, PlaceHolderInfo
      *phinfo)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:72,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 3
    argNames:
    - path1
    - path2
    - criterion
    argTypes:
    - Path*
    - Path*
    - CostSelector
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 112
    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:131,1
    - Dst: compare_path_costs
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:140,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 3
    argNames:
    - path1
    - path2
    - fraction
    argTypes:
    - Path*
    - Path*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 123
    functionDepth: 2
    functionLinenumber: 123
    functionLinenumberEnd: 150
    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:188,1
    - Dst: CONSIDER_PATH_STARTUP_COST
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:203,1
    - Dst: CONSIDER_PATH_STARTUP_COST
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:215,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 3
    argNames:
    - path1
    - path2
    - fuzz_factor
    argTypes:
    - Path*
    - Path*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 239
    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: 186
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 186
    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:277,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:277,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:280,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:285,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:287,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:293,1
    - Dst: bms_subset_compare
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:311,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:311,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:312,1
    - Dst: compare_path_costs
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:316,1
    - Dst: compare_path_costs
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:354,1
    - Dst: compare_pathkeys
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:357,1
    - Dst: compare_path_costs
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:361,1
    - Dst: compare_pathkeys
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:364,1
    - Dst: lcons
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:372,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:380,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 49
    argCount: 1
    argNames:
    - parent_rel
    argTypes:
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 268
    functionDepth: 2
    functionLinenumber: 268
    functionLinenumberEnd: 386
    functionName: set_cheapest
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 11
    functionsReached:
    - Assert
    - bms_subset_compare
    - compare_path_costs
    - lcons
    - IsA
    - foreach
    - elog
    - lappend
    - compare_pathkeys
    - PATH_REQ_OUTER
    - lfirst
    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:472,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:482,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:484,1
    - Dst: compare_path_costs_fuzzily
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:493,1
    - Dst: compare_pathkeys
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:513,1
    - Dst: bms_subset_compare
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:520,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:520,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:521,1
    - Dst: compare_path_costs_fuzzily
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:567,1
    - Dst: bms_subset_compare
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:589,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:589,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:590,1
    - Dst: bms_subset_compare
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:601,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:601,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:602,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:626,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:632,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:633,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:644,1
    - Dst: list_insert_nth
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:660,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:665,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:666,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 75
    argCount: 2
    argNames:
    - parent_rel
    - new_path
    argTypes:
    - RelOptInfo*
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 460
    functionDepth: 2
    functionLinenumber: 460
    functionLinenumberEnd: 668
    functionName: add_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 15
    functionsReached:
    - pfree
    - bms_subset_compare
    - CHECK_FOR_INTERRUPTS
    - list_insert_nth
    - compare_path_costs_fuzzily
    - IsA
    - foreach
    - foreach_current_index
    - compare_pathkeys
    - PATH_REQ_OUTER
    - foreach_delete_current
    - lfirst
    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:702,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:704,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:713,1
    - Dst: compare_pathkeys
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:737,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:743,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:743,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: 753
      start: 687
    functionDepth: 1
    functionLinenumber: 687
    functionLinenumberEnd: 753
    functionName: add_path_precheck
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - foreach
    - bms_equal
    - unlikely
    - compare_pathkeys
    - PATH_REQ_OUTER
    - lfirst
    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: 15
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:802,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:805,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:808,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:814,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:816,1
    - Dst: compare_pathkeys
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:821,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:826,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:878,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:879,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:885,1
    - Dst: list_insert_nth
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:901,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:906,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 47
    argCount: 2
    argNames:
    - parent_rel
    - new_path
    argTypes:
    - RelOptInfo*
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 908
      start: 794
    functionDepth: 1
    functionLinenumber: 794
    functionLinenumberEnd: 908
    functionName: add_partial_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 5
    functionsReached:
    - pfree
    - Assert
    - CHECK_FOR_INTERRUPTS
    - list_insert_nth
    - foreach
    - unlikely
    - foreach_current_index
    - compare_pathkeys
    - foreach_delete_current
    - lfirst
    linkageType: ''
    returnType: void
    signature: void add_partial_path(RelOptInfo *parent_rel, Path *new_path)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:937,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:939,1
    - Dst: compare_pathkeys
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:942,1
    - Dst: add_path_precheck
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:965,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 4
    argNames:
    - parent_rel
    - disabled_nodes
    - total_cost
    - pathkeys
    argTypes:
    - RelOptInfo*
    - int
    - Cost
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 920
    functionDepth: 2
    functionLinenumber: 920
    functionLinenumberEnd: 970
    functionName: add_partial_path_precheck
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - add_path_precheck
    - compare_pathkeys
    - lfirst
    - foreach
    linkageType: ''
    returnType: bool
    signature: "bool add_partial_path_precheck(RelOptInfo *parent_rel, int disabled_nodes,\n\t\t\t\t\t\t
      \ Cost total_cost, List *pathkeys)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:986,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:991,1
    - Dst: cost_seqscan
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:998,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: 1001
      start: 982
    functionDepth: 3
    functionLinenumber: 982
    functionLinenumberEnd: 1001
    functionName: create_seqscan_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 1
    functionsReached:
    - makeNode
    - cost_seqscan
    - 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:1010,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1015,1
    - Dst: cost_samplescan
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1022,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - root
    - rel
    - required_outer
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1025
      start: 1007
    functionDepth: 3
    functionLinenumber: 1007
    functionLinenumberEnd: 1025
    functionName: create_samplescan_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - makeNode
    - cost_samplescan
    - get_baserel_parampathinfo
    linkageType: ''
    returnType: Path
    signature: 'Path *

      create_samplescan_path(PlannerInfo *root, RelOptInfo *rel, Relids required_outer)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1061,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1067,1
    - Dst: cost_index
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1080,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    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: 1083
      start: 1048
    functionDepth: 3
    functionLinenumber: 1048
    functionLinenumberEnd: 1083
    functionName: create_index_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 1
    functionsReached:
    - makeNode
    - cost_index
    - 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:1105,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1110,1
    - Dst: cost_bitmap_heap_scan
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1119,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: 1124
      start: 1097
    functionDepth: 3
    functionLinenumber: 1097
    functionLinenumberEnd: 1124
    functionName: create_bitmap_heap_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - makeNode
    - cost_bitmap_heap_scan
    - 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:1135,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1150,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1152,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1153,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1155,1
    - Dst: cost_bitmap_and_node
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 3
    argNames:
    - root
    - rel
    - bitmapquals
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1176
      start: 1130
    functionDepth: 3
    functionLinenumber: 1130
    functionLinenumberEnd: 1176
    functionName: create_bitmap_and_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - lfirst
    - bms_add_members
    - cost_bitmap_and_node
    - PATH_REQ_OUTER
    - makeNode
    - 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:1150,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1152,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1154
      start: 1148
    functionDepth: 1
    functionLinenumber: 1148
    functionLinenumberEnd: 1154
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 161
    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:1187,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1202,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1204,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1205,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1207,1
    - Dst: cost_bitmap_or_node
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 3
    argNames:
    - root
    - rel
    - bitmapquals
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1228
      start: 1182
    functionDepth: 3
    functionLinenumber: 1182
    functionLinenumberEnd: 1228
    functionName: create_bitmap_or_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - lfirst
    - bms_add_members
    - PATH_REQ_OUTER
    - cost_bitmap_or_node
    - makeNode
    - 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:1202,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1204,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1206
      start: 1200
    functionDepth: 1
    functionLinenumber: 1200
    functionLinenumberEnd: 1206
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 161
    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: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1243,1
    - Dst: cost_tidscan
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1252,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: 1256
      start: 1234
    functionDepth: 3
    functionLinenumber: 1234
    functionLinenumberEnd: 1256
    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:1267,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1272,1
    - Dst: cost_tidrangescan
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 4
    argNames:
    - root
    - rel
    - tidrangequals
    - required_outer
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1285
      start: 1263
    functionDepth: 3
    functionLinenumber: 1263
    functionLinenumberEnd: 1285
    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)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1307,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1310,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1328,1
    - Dst: get_appendrel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1332,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1356,1
    - Dst: list_sort
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1358,1
    - Dst: list_sort
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1359,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1361,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1362,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1368,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1373,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1375,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1381,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1381,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1381,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1384,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1396,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1398,1
    - Dst: cost_append
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1407,1
    - Dst: cost_append
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1412,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 9
    argNames:
    - root
    - rel
    - subpaths
    - partial_subpaths
    - pathkeys
    - required_outer
    - parallel_workers
    - parallel_aware
    - rows
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - List*
    - List*
    - Relids
    - int
    - bool
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1419
      start: 1299
    functionDepth: 3
    functionLinenumber: 1299
    functionLinenumberEnd: 1419
    functionName: create_append_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 1
    functionsReached:
    - lfirst
    - cost_append
    - Assert
    - list_concat
    - get_appendrel_parampathinfo
    - linitial
    - list_sort
    - list_length
    - foreach
    - bms_equal
    - PATH_REQ_OUTER
    - makeNode
    - get_baserel_parampathinfo
    linkageType: ''
    returnType: AppendPath
    signature: "AppendPath *\ncreate_append_path(PlannerInfo *root,\n\t\t\t\t   RelOptInfo
      *rel,\n\t\t\t\t   List *subpaths, List *partial_subpaths,\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:1433,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1434,1
    - Dst: compare_path_costs
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1437,1
    - Dst: bms_compare
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1440,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - ListCell*
    - ListCell*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1441
      start: 1430
    functionDepth: 2
    functionLinenumber: 1430
    functionLinenumberEnd: 1441
    functionName: append_total_cost_compare
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - lfirst
    - compare_path_costs
    - bms_compare
    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:1455,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1456,1
    - Dst: compare_path_costs
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1459,1
    - Dst: bms_compare
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1462,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - ListCell*
    - ListCell*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1463
      start: 1452
    functionDepth: 2
    functionLinenumber: 1452
    functionLinenumberEnd: 1463
    functionName: append_startup_cost_compare
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - lfirst
    - compare_path_costs
    - bms_compare
    linkageType: ''
    returnType: int
    signature: int append_startup_cost_compare(const ListCell *a, const ListCell *b)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1477,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1487,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1487,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1487,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1503,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1517,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1520,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1520,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1520,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1526,1
    - Dst: cost_sort
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1538,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1560,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1561,1
    - Dst: cost_merge_append
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1569,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1570,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 39
    argCount: 5
    argNames:
    - root
    - rel
    - subpaths
    - pathkeys
    - required_outer
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - List*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1576
      start: 1470
    functionDepth: 1
    functionLinenumber: 1470
    functionLinenumberEnd: 1576
    functionName: create_merge_append_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - Assert
    - linitial
    - bms_is_empty
    - pathkeys_contained_in
    - list_length
    - bms_equal
    - cost_sort
    - PATH_REQ_OUTER
    - makeNode
    - cost_merge_append
    - lfirst
    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 *pathkeys,\n\t\t\t\t\t\t
      Relids required_outer)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1517,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1520,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1520,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1520,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1526,1
    - Dst: cost_sort
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1538,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1552
      start: 1515
    functionDepth: 1
    functionLinenumber: 1515
    functionLinenumberEnd: 1552
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 162
    functionsReached:
    - Assert
    - bms_is_empty
    - pathkeys_contained_in
    - cost_sort
    - PATH_REQ_OUTER
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, subpaths)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1589,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1619,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 4
    argNames:
    - root
    - rel
    - target
    - havingqual
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - PathTarget*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1626
      start: 1585
    functionDepth: 1
    functionLinenumber: 1585
    functionLinenumberEnd: 1626
    functionName: create_group_result_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 2
    functionsReached:
    - makeNode
    - cost_qual_eval
    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:1636,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1638,1
    - Dst: cost_material
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1652,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - rel
    - subpath
    argTypes:
    - RelOptInfo*
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1660
      start: 1633
    functionDepth: 1
    functionLinenumber: 1633
    functionLinenumberEnd: 1660
    functionName: create_material_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - makeNode
    - Assert
    - cost_material
    linkageType: ''
    returnType: MaterialPath
    signature: 'MaterialPath *

      create_material_path(RelOptInfo *rel, Path *subpath)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1671,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1673,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1690,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1701,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 8
    argNames:
    - root
    - rel
    - subpath
    - param_exprs
    - hash_operators
    - singlerow
    - binary_mode
    - calls
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - List*
    - List*
    - bool
    - bool
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1713
      start: 1666
    functionDepth: 1
    functionLinenumber: 1666
    functionLinenumberEnd: 1713
    functionName: create_memoize_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - makeNode
    - clamp_row_est
    - Assert
    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, double calls)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1737,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1738,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1740,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1741,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1741,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1761,1
    - Dst: GetMemoryChunkContext
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1761,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1763,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1787,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1788,1
    - Dst: relation_has_unique_index_for
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1797,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1810,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1826,1
    - Dst: query_supports_distinctness
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1828,1
    - Dst: translate_sub_tlist
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1832,1
    - Dst: query_is_distinct_for
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1836,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1849,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1857,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1862,1
    - Dst: cost_sort
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1869,1
    - Dst: get_hash_memory_limit
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1895,1
    - Dst: cost_agg
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1904,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1931,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1950,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 85
    argCount: 4
    argNames:
    - root
    - rel
    - subpath
    - sjinfo
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - SpecialJoinInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1953
      start: 1726
    functionDepth: 3
    functionLinenumber: 1726
    functionLinenumberEnd: 1953
    functionName: create_unique_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - query_is_distinct_for
    - translate_sub_tlist
    - planner_rt_fetch
    - GetMemoryChunkContext
    - list_length
    - bms_equal
    - relation_has_unique_index_for
    - copyObject
    - query_supports_distinctness
    - estimate_num_groups
    - cost_sort
    - get_hash_memory_limit
    - makeNode
    - cost_agg
    linkageType: ''
    returnType: UniquePath
    signature: "UniquePath *\ncreate_unique_path(PlannerInfo *root, RelOptInfo *rel,
      Path *subpath,\n\t\t\t\t   SpecialJoinInfo *sjinfo)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1966,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1971,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1972,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1981,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1982,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1986,1
    - Dst: cost_gather_merge
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:1999,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: 2004
      start: 1961
    functionDepth: 3
    functionLinenumber: 1961
    functionLinenumberEnd: 2004
    functionName: create_gather_merge_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 2
    functionsReached:
    - Assert
    - cost_gather_merge
    - pathkeys_contained_in
    - elog
    - makeNode
    - 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: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2025,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2027,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2031,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - tlist
    - relid
    argTypes:
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2034
      start: 2017
    functionDepth: 1
    functionLinenumber: 2017
    functionLinenumberEnd: 2034
    functionName: translate_sub_tlist
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 1
    functionsReached:
    - lappend_int
    - IsA
    - lfirst
    linkageType: ''
    returnType: List
    signature: 'List *

      translate_sub_tlist(List *tlist, int relid)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2025,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2027,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2031,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2032
      start: 2023
    functionDepth: 1
    functionLinenumber: 2023
    functionLinenumberEnd: 2032
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 162
    functionsReached:
    - lappend_int
    - IsA
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, tlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2047,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2049,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2054,1
    - Dst: cost_gather
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2072,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: 2075
      start: 2043
    functionDepth: 3
    functionLinenumber: 2043
    functionLinenumberEnd: 2075
    functionName: create_gather_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - cost_gather
    - makeNode
    - get_baserel_parampathinfo
    - Assert
    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:2092,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2097,1
    - Dst: cost_subqueryscan
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2106,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: 2110
      start: 2087
    functionDepth: 3
    functionLinenumber: 2087
    functionLinenumberEnd: 2110
    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:2121,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2126,1
    - Dst: cost_functionscan
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2133,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: 2136
      start: 2117
    functionDepth: 3
    functionLinenumber: 2117
    functionLinenumberEnd: 2136
    functionName: create_functionscan_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - makeNode
    - get_baserel_parampathinfo
    - cost_functionscan
    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:2147,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2152,1
    - Dst: cost_tablefuncscan
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - root
    - rel
    - required_outer
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2162
      start: 2143
    functionDepth: 3
    functionLinenumber: 2143
    functionLinenumberEnd: 2162
    functionName: create_tablefuncscan_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - makeNode
    - cost_tablefuncscan
    - 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:2173,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2178,1
    - Dst: cost_valuesscan
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - root
    - rel
    - required_outer
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2188
      start: 2169
    functionDepth: 3
    functionLinenumber: 2169
    functionLinenumberEnd: 2188
    functionName: create_valuesscan_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - makeNode
    - cost_valuesscan
    - 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:2199,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2204,1
    - Dst: cost_ctescan
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2211,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: 2214
      start: 2195
    functionDepth: 3
    functionLinenumber: 2195
    functionLinenumberEnd: 2214
    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:2225,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2230,1
    - Dst: cost_namedtuplestorescan
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - root
    - rel
    - required_outer
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2240
      start: 2221
    functionDepth: 3
    functionLinenumber: 2221
    functionLinenumberEnd: 2240
    functionName: create_namedtuplestorescan_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - makeNode
    - get_baserel_parampathinfo
    - cost_namedtuplestorescan
    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:2251,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2256,1
    - Dst: cost_resultscan
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - root
    - rel
    - required_outer
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2266
      start: 2247
    functionDepth: 3
    functionLinenumber: 2247
    functionLinenumberEnd: 2266
    functionName: create_resultscan_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - makeNode
    - get_baserel_parampathinfo
    - cost_resultscan
    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:2277,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2282,1
    - Dst: cost_ctescan
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - root
    - rel
    - required_outer
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2293
      start: 2273
    functionDepth: 3
    functionLinenumber: 2273
    functionLinenumberEnd: 2293
    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:2317,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2320,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2320,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2325,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: 2341
      start: 2306
    functionDepth: 3
    functionLinenumber: 2306
    functionLinenumberEnd: 2341
    functionName: create_foreignscan_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - makeNode
    - get_baserel_parampathinfo
    - Assert
    - IS_SIMPLE_REL
    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:2365,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2374,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2374,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2375,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: 2395
      start: 2354
    functionDepth: 1
    functionLinenumber: 2354
    functionLinenumberEnd: 2395
    functionName: create_foreign_join_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - bms_is_empty
    - makeNode
    - elog
    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:2418,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2424,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2424,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: 2444
      start: 2408
    functionDepth: 1
    functionLinenumber: 2408
    functionLinenumberEnd: 2444
    functionName: create_foreign_upper_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - bms_is_empty
    - makeNode
    - Assert
    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:2464,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2464,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2467,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2469,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2471,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: 2474
      start: 2455
    functionDepth: 1
    functionLinenumber: 2455
    functionLinenumberEnd: 2474
    functionName: calc_nestloop_required_outer
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - bms_overlap
    - Assert
    - bms_del_members
    - bms_copy
    - 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:2485,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2486,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2509,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2509,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2510,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2510,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2512,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - outer_path
    - inner_path
    argTypes:
    - Path*
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2515
      start: 2482
    functionDepth: 1
    functionLinenumber: 2482
    functionLinenumberEnd: 2515
    functionName: calc_non_nestloop_required_outer
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - bms_overlap
    - bms_union
    - Assert
    - PATH_REQ_OUTER
    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:2546,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2547,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2567,1
    - Dst: get_param_path_clause_serials
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2569,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2575,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2577,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2578,1
    - Dst: get_joinrel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2587,1
    - Dst: final_cost_nestloop
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2606,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: 2609
      start: 2534
    functionDepth: 3
    functionLinenumber: 2534
    functionLinenumberEnd: 2609
    functionName: create_nestloop_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - bms_overlap
    - final_cost_nestloop
    - get_joinrel_parampathinfo
    - lappend
    - PATH_REQ_OUTER
    - bms_is_member
    - makeNode
    - lfirst
    - get_param_path_clause_serials
    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:2575,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2577,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2578,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2579
      start: 2573
    functionDepth: 1
    functionLinenumber: 2573
    functionLinenumberEnd: 2579
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 162
    functionsReached:
    - bms_is_member
    - lappend
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, restrict_clauses)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2647,1
    - Dst: get_joinrel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2653,1
    - Dst: final_cost_mergejoin
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2678,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: 2681
      start: 2631
    functionDepth: 3
    functionLinenumber: 2631
    functionLinenumberEnd: 2681
    functionName: create_mergejoin_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - makeNode
    - get_joinrel_parampathinfo
    - final_cost_mergejoin
    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:2712,1
    - Dst: get_joinrel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2718,1
    - Dst: final_cost_hashjoin
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2752,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: 2755
      start: 2699
    functionDepth: 3
    functionLinenumber: 2699
    functionLinenumberEnd: 2755
    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:2771,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2781,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2785,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2787,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2787,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2798,1
    - Dst: is_projection_capable_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2815,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2816,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 4
    argNames:
    - root
    - rel
    - subpath
    - target
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - PathTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2851
      start: 2765
    functionDepth: 2
    functionLinenumber: 2765
    functionLinenumberEnd: 2851
    functionName: create_projection_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 3
    functionsReached:
    - Assert
    - equal
    - is_projection_capable_path
    - IsA
    - is_parallel_safe
    - makeNode
    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:2887,1
    - Dst: create_projection_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2888,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2907,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2907,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2908,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2920,1
    - Dst: create_projection_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2925,1
    - Dst: create_projection_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2935,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2942,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 4
    argNames:
    - root
    - rel
    - path
    - target
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - PathTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2953
      start: 2875
    functionDepth: 3
    functionLinenumber: 2875
    functionLinenumberEnd: 2953
    functionName: apply_projection_to_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 4
    functionsReached:
    - create_projection_path
    - IsA
    - is_projection_capable_path
    - is_parallel_safe
    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:2970,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2982,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2994,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2996,1
    - Dst: expression_returns_set_rows
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:2999,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 4
    argNames:
    - root
    - rel
    - subpath
    - target
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - PathTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3020
      start: 2964
    functionDepth: 2
    functionLinenumber: 2964
    functionLinenumberEnd: 3020
    functionName: create_set_projection_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 3
    functionsReached:
    - foreach
    - is_parallel_safe
    - expression_returns_set_rows
    - makeNode
    - lfirst
    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:3042,1
    - Dst: cost_incremental_sort
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3059,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: 3072
      start: 3034
    functionDepth: 1
    functionLinenumber: 3034
    functionLinenumberEnd: 3072
    functionName: create_incremental_sort_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 5
    functionsReached:
    - cost_incremental_sort
    - makeNode
    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:3091,1
    - Dst: cost_sort
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3107,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: 3116
      start: 3084
    functionDepth: 1
    functionLinenumber: 3084
    functionLinenumberEnd: 3116
    functionName: create_sort_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 5
    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:3137,1
    - Dst: cost_group
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3157,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3158,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: 3171
      start: 3129
    functionDepth: 1
    functionLinenumber: 3129
    functionLinenumberEnd: 3171
    functionName: create_group_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 6
    functionsReached:
    - makeNode
    - cost_group
    - list_length
    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: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3196,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 5
    argNames:
    - root
    - rel
    - subpath
    - numCols
    - numGroups
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3226
      start: 3189
    functionDepth: 1
    functionLinenumber: 3189
    functionLinenumberEnd: 3226
    functionName: create_upper_unique_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 4
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: UpperUniquePath
    signature: "UpperUniquePath *\ncreate_upper_unique_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 int numCols,\n\t\t\t\t\t\t
      double numGroups)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3254,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3276,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3277,1
    - Dst: cost_agg
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3294,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3296,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: 3308
      start: 3242
    functionDepth: 1
    functionLinenumber: 3242
    functionLinenumberEnd: 3308
    functionName: create_agg_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 8
    functionsReached:
    - makeNode
    - cost_agg
    - list_copy_head
    - list_length
    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:3334,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3356,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3357,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3361,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3369,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3379,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3380,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3380,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3381,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3381,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3385,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3387,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3387,1
    - Dst: cost_agg
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3401,1
    - Dst: cost_agg
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3427,1
    - Dst: cost_sort
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3442,1
    - Dst: cost_agg
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3452,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: 3477
      start: 3325
    functionDepth: 1
    functionLinenumber: 3325
    functionLinenumberEnd: 3477
    functionName: create_groupingsets_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 1
    functionsReached:
    - Assert
    - linitial
    - list_length
    - cost_sort
    - makeNode
    - cost_agg
    - lfirst
    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:3385,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3387,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3387,1
    - Dst: cost_agg
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3401,1
    - Dst: cost_agg
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3427,1
    - Dst: cost_sort
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3442,1
    - Dst: cost_agg
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3452,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3469
      start: 3383
    functionDepth: 1
    functionLinenumber: 3383
    functionLinenumberEnd: 3469
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 163
    functionsReached:
    - linitial
    - list_length
    - cost_sort
    - cost_agg
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, rollups)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3495,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3520,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3542,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3555,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3556,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: 3559
      start: 3488
    functionDepth: 2
    functionLinenumber: 3488
    functionLinenumberEnd: 3559
    functionName: create_minmaxagg_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 1
    functionsReached:
    - makeNode
    - lfirst
    - cost_qual_eval
    - is_parallel_safe
    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:3520,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3526
      start: 3518
    functionDepth: 1
    functionLinenumber: 3518
    functionLinenumberEnd: 3526
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 163
    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:3590,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3593,1
    - Dst: cost_windowagg
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3619,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: 3633
      start: 3579
    functionDepth: 1
    functionLinenumber: 3579
    functionLinenumberEnd: 3633
    functionName: create_windowagg_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 2
    functionsReached:
    - cost_windowagg
    - makeNode
    - Assert
    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: 4
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3663,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3704,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3724,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3746,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3747,1
    - Dst: get_hash_memory_limit
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3748,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    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: 3754
      start: 3652
    functionDepth: 1
    functionLinenumber: 3652
    functionLinenumberEnd: 3754
    functionName: create_setop_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - get_hash_memory_limit
    - makeNode
    - MAXALIGN
    - list_length
    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:3780,1
    - Dst: cost_recursive_union
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3801,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: 3804
      start: 3770
    functionDepth: 1
    functionLinenumber: 3770
    functionLinenumberEnd: 3804
    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:3819,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: 3853
      start: 3815
    functionDepth: 1
    functionLinenumber: 3815
    functionLinenumberEnd: 3853
    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:3892,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3894,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3896,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3896,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3898,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3899,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3899,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3900,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3901,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3901,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 38
    argCount: 17
    argNames:
    - root
    - rel
    - subpath
    - operation
    - canSetTag
    - nominalRelation
    - rootRelation
    - partColsUpdated
    - resultRelations
    - updateColnosLists
    - withCheckOptionLists
    - returningLists
    - rowMarks
    - onconflict
    - mergeActionLists
    - mergeJoinConditions
    - epqParam
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - CmdType
    - bool
    - Index
    - Index
    - bool
    - List*
    - List*
    - List*
    - List*
    - List*
    - OnConflictExpr*
    - List*
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3962
      start: 3879
    functionDepth: 1
    functionLinenumber: 3879
    functionLinenumberEnd: 3962
    functionName: create_modifytable_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 1
    functionsReached:
    - makeNode
    - Assert
    - 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\tbool partColsUpdated,\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\tint epqParam)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:3988,1
    - Dst: adjust_limit_rows_costs
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4013,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: 4019
      start: 3981
    functionDepth: 1
    functionLinenumber: 3981
    functionLinenumberEnd: 4019
    functionName: create_limit_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 5
    functionsReached:
    - makeNode
    - adjust_limit_rows_costs
    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:4055,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4074,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: 4085
      start: 4037
    functionDepth: 1
    functionLinenumber: 4037
    functionLinenumberEnd: 4085
    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:4113,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4113,1
    - Dst: create_seqscan_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4118,1
    - Dst: create_samplescan_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4120,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4125,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4134,1
    - Dst: get_baserel_parampathinfo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4136,1
    - Dst: cost_index
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4137,1
    - Dst: create_bitmap_heap_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4144,1
    - Dst: create_subqueryscan_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4166,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4175,1
    - Dst: create_resultscan_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4176,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4188,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4190,1
    - Dst: reparameterize_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4192,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4199,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4201,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4205,1
    - Dst: reparameterize_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4216,1
    - Dst: create_material_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4221,1
    - Dst: reparameterize_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4228,1
    - Dst: create_memoize_path
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4233,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 55
    argCount: 4
    argNames:
    - root
    - path
    - required_outer
    - loop_count
    argTypes:
    - PlannerInfo*
    - Path*
    - Relids
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4245
      start: 4105
    functionDepth: 4
    functionLinenumber: 4105
    functionLinenumberEnd: 4245
    functionName: reparameterize_path
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 1
    functionsReached:
    - create_append_path
    - makeNode
    - create_seqscan_path
    - create_samplescan_path
    - foreach
    - memcpy
    - create_subqueryscan_path
    - create_bitmap_heap_path
    - create_material_path
    - bms_is_subset
    - IsA
    - reparameterize_path
    - create_resultscan_path
    - lappend
    - lfirst
    - get_baserel_parampathinfo
    - create_memoize_path
    - cost_index
    - PATH_REQ_OUTER
    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:4309,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4309,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4324,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4328,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4335,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4336,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4337,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4338,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4340,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4348,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4349,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4358,1
    - Dst: REPARAMETERIZE_CHILD_PATH
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4359,1
    - Dst: REPARAMETERIZE_CHILD_PATH_LIST
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4368,1
    - Dst: REPARAMETERIZE_CHILD_PATH_LIST
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4377,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4387,1
    - Dst: REPARAMETERIZE_CHILD_PATH
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4389,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4391,1
    - Dst: rfpc_func
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4397,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4407,1
    - Dst: REPARAMETERIZE_CHILD_PATH_LIST
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4408,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4410,1
    - Dst: CustomPath*::methods::ReparameterizeCustomPathByChild
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4414,1
    - Dst: REPARAMETERIZE_CHILD_PATH
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4426,1
    - Dst: REPARAMETERIZE_CHILD_PATH
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4427,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4428,1
    - Dst: REPARAMETERIZE_CHILD_PATH
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4438,1
    - Dst: REPARAMETERIZE_CHILD_PATH
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4439,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4440,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4441,1
    - Dst: REPARAMETERIZE_CHILD_PATH
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4451,1
    - Dst: REPARAMETERIZE_CHILD_PATH
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4452,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4453,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4454,1
    - Dst: REPARAMETERIZE_CHILD_PATH_LIST
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4463,1
    - Dst: REPARAMETERIZE_CHILD_PATH
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4472,1
    - Dst: REPARAMETERIZE_CHILD_PATH
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4481,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4482,1
    - Dst: REPARAMETERIZE_CHILD_PATH
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4491,1
    - Dst: adjust_child_relids_multilevel
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4508,1
    - Dst: find_param_path_info
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4513,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4525,1
    - Dst: GetMemoryChunkContext
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4525,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4527,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4528,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4531,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4532,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4533,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4535,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4537,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4546,1
    - Dst: copy_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4549,1
    - Dst: ADJUST_CHILD_ATTRS
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4550,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 127
    argCount: 3
    argNames:
    - root
    - path
    - child_rel
    argTypes:
    - PlannerInfo*
    - Path*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4554
      start: 4271
    functionDepth: 3
    functionLinenumber: 4271
    functionLinenumberEnd: 4554
    functionName: reparameterize_path_by_child
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 1
    functionsReached:
    - bms_overlap
    - MemoryContextSwitchTo
    - bms_copy
    - copy_pathtarget
    - makeNode
    - REPARAMETERIZE_CHILD_PATH
    - CustomPath*::methods::ReparameterizeCustomPathByChild
    - ADJUST_CHILD_ATTRS
    - bms_free
    - nodeTag
    - lappend
    - adjust_child_relids_multilevel
    - rfpc_func
    - Assert
    - planner_rt_fetch
    - find_param_path_info
    - GetMemoryChunkContext
    - PATH_REQ_OUTER
    - REPARAMETERIZE_CHILD_PATH_LIST
    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: 4285
      start: 4280
    functionDepth: 0
    functionLinenumber: 4280
    functionLinenumberEnd: 4285
    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: 4292
      start: 4286
    functionDepth: 0
    functionLinenumber: 4286
    functionLinenumberEnd: 4292
    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: 4303
      start: 4293
    functionDepth: 0
    functionLinenumber: 4293
    functionLinenumberEnd: 4303
    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:4587,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4587,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4594,1
    - Dst: REJECT_IF_PATH_NOT_REPARAMETERIZABLE
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4604,1
    - Dst: REJECT_IF_PATH_LIST_NOT_REPARAMETERIZABLE
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4612,1
    - Dst: REJECT_IF_PATH_LIST_NOT_REPARAMETERIZABLE
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4620,1
    - Dst: REJECT_IF_PATH_NOT_REPARAMETERIZABLE
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4629,1
    - Dst: REJECT_IF_PATH_LIST_NOT_REPARAMETERIZABLE
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4637,1
    - Dst: REJECT_IF_PATH_NOT_REPARAMETERIZABLE
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4647,1
    - Dst: REJECT_IF_PATH_NOT_REPARAMETERIZABLE
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4648,1
    - Dst: REJECT_IF_PATH_LIST_NOT_REPARAMETERIZABLE
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4656,1
    - Dst: REJECT_IF_PATH_NOT_REPARAMETERIZABLE
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4664,1
    - Dst: REJECT_IF_PATH_NOT_REPARAMETERIZABLE
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4672,1
    - Dst: REJECT_IF_PATH_NOT_REPARAMETERIZABLE
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4680,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 55
    argCount: 2
    argNames:
    - path
    - child_rel
    argTypes:
    - Path*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4690
      start: 4567
    functionDepth: 1
    functionLinenumber: 4567
    functionLinenumberEnd: 4690
    functionName: path_is_reparameterizable_by_child
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 0
    functionsReached:
    - bms_overlap
    - nodeTag
    - REJECT_IF_PATH_NOT_REPARAMETERIZABLE
    - REJECT_IF_PATH_LIST_NOT_REPARAMETERIZABLE
    - PATH_REQ_OUTER
    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: 4575
      start: 4570
    functionDepth: 0
    functionLinenumber: 4570
    functionLinenumberEnd: 4575
    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: 4581
      start: 4576
    functionDepth: 0
    functionLinenumber: 4576
    functionLinenumberEnd: 4581
    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:4708,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4708,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4713,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4717,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - root
    - pathlist
    - child_rel
    argTypes:
    - PlannerInfo*
    - List*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4721
      start: 4698
    functionDepth: 4
    functionLinenumber: 4698
    functionLinenumberEnd: 4721
    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:4708,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4708,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4713,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4717,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4718
      start: 4706
    functionDepth: 4
    functionLinenumber: 4706
    functionLinenumberEnd: 4718
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 164
    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:4734,1
    - Dst: path_is_reparameterizable_by_child
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4736,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - pathlist
    - child_rel
    argTypes:
    - List*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4741
      start: 4727
    functionDepth: 2
    functionLinenumber: 4727
    functionLinenumberEnd: 4741
    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:4734,1
    - Dst: path_is_reparameterizable_by_child
      Src: /src/postgres/src/backend/optimizer/util/pathnode.c:4736,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4738
      start: 4732
    functionDepth: 2
    functionLinenumber: 4732
    functionLinenumberEnd: 4738
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/pathnode.c
    functionUses: 164
    functionsReached:
    - path_is_reparameterizable_by_child
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, pathlist)
  - 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:
    - lappend_oid
    - IsA
    - foreach
    - list_length
    - bms_equal
    - lappend
    - copyObject
    - makeNode
    - lfirst
    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
    - makeNode
    - assign_param_for_var
    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:
    - exprType
    - Assert
    - lappend_oid
    - IsA
    - IncrementVarSublevelsUp
    - foreach
    - list_length
    - lappend
    - copyObject
    - makeNode
    - lfirst
    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:
    - exprType
    - Assert
    - exprCollation
    - exprTypmod
    - assign_param_for_placeholdervar
    - makeNode
    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:
    - Assert
    - lappend_oid
    - IncrementVarSublevelsUp
    - list_length
    - lappend
    - copyObject
    - makeNode
    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:
    - exprType
    - Assert
    - lappend_oid
    - IncrementVarSublevelsUp
    - list_length
    - lappend
    - copyObject
    - makeNode
    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:
    - exprType
    - Assert
    - lappend_oid
    - list_length
    - elog
    - lappend
    - copyObject
    - makeNode
    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:
    - exprType
    - Assert
    - exprCollation
    - exprLocation
    - lappend_oid
    - exprTypmod
    - IncrementVarSublevelsUp
    - list_length
    - lappend
    - copyObject
    - makeNode
    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:
    - equal
    - foreach
    - lappend
    - copyObject
    - generate_new_exec_param
    - makeNode
    - lfirst
    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:
    - exprType
    - exprCollation
    - equal
    - exprTypmod
    - foreach
    - lappend
    - copyObject
    - generate_new_exec_param
    - makeNode
    - lfirst
    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:
    - Assert
    - equal
    - bms_is_subset
    - lfirst_node
    - find_placeholder_info
    - IsA
    - foreach
    - elog
    - lappend
    - copyObject
    - bms_is_member
    - makeNode
    - lfirst
    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: 170
    functionsReached:
    - Assert
    - equal
    - bms_is_subset
    - lfirst_node
    - find_placeholder_info
    - IsA
    - foreach
    - elog
    - lappend
    - copyObject
    - bms_is_member
    - makeNode
    - lfirst
    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:
    - bms_overlap
    - bms_is_subset
    - find_placeholder_info
    - IsA
    - foreach
    - bms_union
    - lappend
    - copyObject
    - bms_is_member
    - foreach_delete_current
    - get_placeholder_nulling_relids
    - lfirst
    - bms_intersect
    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:
    - lappend_oid
    - makeNode
    - list_length
    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:
    - lappend_oid
    - list_length
    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: 14
    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:
    - query_tree_walker
    - bms_add_members
    - expression_tree_walker
    - IsA
    - bms_equal
    - bms_join
    - bms_difference
    - 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
    - IsA
    - expression_tree_walker
    - 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:
    - lappend
    - IsA
    - expression_tree_walker
    - query_tree_walker
    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:
    - IsA
    - expression_tree_walker
    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:
    - IsA
    - expression_tree_walker
    - 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:
    - IsA
    - expression_tree_walker
    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:
    - IsA
    - expression_tree_walker
    - 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: 11
    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
    - lappend
    - IsA
    - expression_tree_walker
    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:798,1
    - Dst: flatten_join_alias_vars_mutator
      Src: /src/postgres/src/backend/optimizer/util/var.c:808,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - root
    - query
    - node
    argTypes:
    - PlannerInfo*
    - Query*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 788
    functionDepth: 1
    functionLinenumber: 788
    functionLinenumberEnd: 809
    functionName: flatten_join_alias_vars
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 2
    functionsReached:
    - Assert
    - flatten_join_alias_vars_mutator
    linkageType: ''
    returnType: Node
    signature: 'Node *

      flatten_join_alias_vars(PlannerInfo *root, Query *query, Node *node)'
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:817,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/var.c:826,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:838,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/var.c:838,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/var.c:838,1
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/util/var.c:839,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/var.c:841,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/var.c:845,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/util/var.c:852,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:854,1
    - Dst: flatten_join_alias_vars_mutator
      Src: /src/postgres/src/backend/optimizer/util/var.c:858,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/var.c:859,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/var.c:861,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/var.c:861,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/var.c:861,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/var.c:863,1
    - Dst: add_nullingrels_if_needed
      Src: /src/postgres/src/backend/optimizer/util/var.c:872,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:877,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/util/var.c:878,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:879,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/var.c:880,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/util/var.c:887,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:890,1
    - Dst: flatten_join_alias_vars_mutator
      Src: /src/postgres/src/backend/optimizer/util/var.c:894,1
    - Dst: checkExprHasSubLink
      Src: /src/postgres/src/backend/optimizer/util/var.c:898,1
    - Dst: add_nullingrels_if_needed
      Src: /src/postgres/src/backend/optimizer/util/var.c:901,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:903,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/var.c:908,1
    - Dst: alias_relid_set
      Src: /src/postgres/src/backend/optimizer/util/var.c:914,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:921,1
    - Dst: query_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/var.c:930,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:940,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:940,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:941,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:941,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:943,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:943,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:944,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:944,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:945,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:945,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/var.c:947,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 68
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - flatten_join_alias_vars_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 948
      start: 811
    functionDepth: 3
    functionLinenumber: 811
    functionLinenumberEnd: 948
    functionName: flatten_join_alias_vars_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 2
    functionsReached:
    - Assert
    - checkExprHasSubLink
    - flatten_join_alias_vars_mutator
    - query_tree_mutator
    - IsA
    - IncrementVarSublevelsUp
    - list_length
    - add_nullingrels_if_needed
    - alias_relid_set
    - list_nth
    - lappend
    - copyObject
    - forboth
    - makeNode
    - rt_fetch
    - expression_tree_mutator
    - lfirst
    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:977,1
    - Dst: flatten_group_exprs_mutator
      Src: /src/postgres/src/backend/optimizer/util/var.c:987,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - root
    - query
    - node
    argTypes:
    - PlannerInfo*
    - Query*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 988
      start: 967
    functionDepth: 1
    functionLinenumber: 967
    functionLinenumberEnd: 988
    functionName: flatten_group_exprs
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 1
    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:996,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/var.c:1005,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:1010,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/util/var.c:1011,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:1012,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/var.c:1013,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/util/var.c:1020,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1023,1
    - Dst: checkExprHasSubLink
      Src: /src/postgres/src/backend/optimizer/util/var.c:1028,1
    - Dst: mark_nullable_by_grouping
      Src: /src/postgres/src/backend/optimizer/util/var.c:1031,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1034,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/var.c:1046,1
    - Dst: flatten_group_exprs_mutator
      Src: /src/postgres/src/backend/optimizer/util/var.c:1048,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1063,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1075,1
    - Dst: query_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/var.c:1084,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/optimizer/util/var.c:1094,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 45
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - flatten_join_alias_vars_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 990
    functionDepth: 3
    functionLinenumber: 990
    functionLinenumberEnd: 1096
    functionName: flatten_group_exprs_mutator
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 2
    functionsReached:
    - Assert
    - checkExprHasSubLink
    - query_tree_mutator
    - mark_nullable_by_grouping
    - IsA
    - IncrementVarSublevelsUp
    - list_nth
    - copyObject
    - flatten_group_exprs_mutator
    - rt_fetch
    - expression_tree_mutator
    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:1112,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/util/var.c:1112,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/util/var.c:1113,1
    - Dst: pull_varnos_of_level
      Src: /src/postgres/src/backend/optimizer/util/var.c:1115,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/var.c:1117,1
    - Dst: add_nulling_relids
      Src: /src/postgres/src/backend/optimizer/util/var.c:1128,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:1144,1
    - Dst: contain_agg_clause
      Src: /src/postgres/src/backend/optimizer/util/var.c:1144,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:1145,1
    - Dst: contain_window_function
      Src: /src/postgres/src/backend/optimizer/util/var.c:1145,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/util/var.c:1147,1
    - Dst: expression_returns_set
      Src: /src/postgres/src/backend/optimizer/util/var.c:1148,1
    - Dst: get_relids_in_jointree
      Src: /src/postgres/src/backend/optimizer/util/var.c:1153,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:1155,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/var.c:1155,1
    - Dst: make_placeholder_expr
      Src: /src/postgres/src/backend/optimizer/util/var.c:1157,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/var.c:1160,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 3
    argNames:
    - root
    - newnode
    - oldvar
    argTypes:
    - PlannerInfo*
    - Node*
    - Var*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1166
      start: 1102
    functionDepth: 2
    functionLinenumber: 1102
    functionLinenumberEnd: 1166
    functionName: mark_nullable_by_grouping
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 1
    functionsReached:
    - contain_window_function
    - Assert
    - expression_returns_set
    - bms_copy
    - bms_make_singleton
    - bms_is_empty
    - bms_equal
    - contain_volatile_functions
    - contain_agg_clause
    - get_relids_in_jointree
    - pull_varnos_of_level
    - make_placeholder_expr
    - add_nulling_relids
    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:1178,1
    - Dst: adjust_standard_join_alias_expression
      Src: /src/postgres/src/backend/optimizer/util/var.c:1179,1
    - Dst: pull_varnos_of_level
      Src: /src/postgres/src/backend/optimizer/util/var.c:1191,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/var.c:1193,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/var.c:1196,1
    - Dst: get_relids_for_join
      Src: /src/postgres/src/backend/optimizer/util/var.c:1197,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/util/var.c:1199,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:1200,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/util/var.c:1200,1
    - Dst: make_placeholder_expr
      Src: /src/postgres/src/backend/optimizer/util/var.c:1202,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/var.c:1205,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/var.c:1211,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - root
    - newnode
    - oldvar
    argTypes:
    - PlannerInfo*
    - Node*
    - Var*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1214
      start: 1172
    functionDepth: 2
    functionLinenumber: 1172
    functionLinenumberEnd: 1214
    functionName: add_nullingrels_if_needed
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 1
    functionsReached:
    - Assert
    - bms_del_member
    - bms_copy
    - adjust_standard_join_alias_expression
    - get_relids_for_join
    - bms_is_empty
    - is_standard_join_alias_expression
    - elog
    - pull_varnos_of_level
    - make_placeholder_expr
    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:1229,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1232,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1235,1
    - Dst: is_standard_join_alias_expression
      Src: /src/postgres/src/backend/optimizer/util/var.c:1254,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/var.c:1254,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1256,1
    - Dst: is_standard_join_alias_expression
      Src: /src/postgres/src/backend/optimizer/util/var.c:1261,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1263,1
    - Dst: is_standard_join_alias_expression
      Src: /src/postgres/src/backend/optimizer/util/var.c:1268,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1270,1
    - Dst: is_standard_join_alias_expression
      Src: /src/postgres/src/backend/optimizer/util/var.c:1275,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1277,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:1282,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/var.c:1283,1
    - Dst: is_standard_join_alias_expression
      Src: /src/postgres/src/backend/optimizer/util/var.c:1285,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/var.c:1285,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 30
    argCount: 2
    argNames:
    - newnode
    - oldvar
    argTypes:
    - Node*
    - Var*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1292
      start: 1224
    functionDepth: 1
    functionLinenumber: 1224
    functionLinenumberEnd: 1292
    functionName: is_standard_join_alias_expression
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 2
    functionsReached:
    - Assert
    - linitial
    - IsA
    - foreach
    - is_standard_join_alias_expression
    - lfirst
    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:1301,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/var.c:1306,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1309,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/var.c:1314,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1317,1
    - Dst: adjust_standard_join_alias_expression
      Src: /src/postgres/src/backend/optimizer/util/var.c:1321,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/var.c:1321,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1323,1
    - Dst: adjust_standard_join_alias_expression
      Src: /src/postgres/src/backend/optimizer/util/var.c:1327,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1329,1
    - Dst: adjust_standard_join_alias_expression
      Src: /src/postgres/src/backend/optimizer/util/var.c:1333,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1335,1
    - Dst: adjust_standard_join_alias_expression
      Src: /src/postgres/src/backend/optimizer/util/var.c:1339,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/var.c:1341,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:1346,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/var.c:1347,1
    - Dst: adjust_standard_join_alias_expression
      Src: /src/postgres/src/backend/optimizer/util/var.c:1349,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/var.c:1349,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/var.c:1353,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - newnode
    - oldvar
    argTypes:
    - Node*
    - Var*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1354
      start: 1298
    functionDepth: 1
    functionLinenumber: 1298
    functionLinenumberEnd: 1354
    functionName: adjust_standard_join_alias_expression
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 2
    functionsReached:
    - Assert
    - bms_add_members
    - linitial
    - adjust_standard_join_alias_expression
    - IsA
    - foreach
    - lfirst
    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:1367,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/var.c:1369,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/optimizer/util/var.c:1372,1
    - Dst: get_relids_for_join
      Src: /src/postgres/src/backend/optimizer/util/var.c:1372,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/var.c:1374,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - query
    - relids
    argTypes:
    - Query*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1377
      start: 1360
    functionDepth: 1
    functionLinenumber: 1360
    functionLinenumberEnd: 1377
    functionName: alias_relid_set
    functionSourceFile: /src/postgres/src/backend/optimizer/util/var.c
    functionUses: 1
    functionsReached:
    - get_relids_for_join
    - bms_join
    - rt_fetch
    - bms_next_member
    - 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: 34
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 34
    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:85,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - node
    - targetlist
    argTypes:
    - Expr*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 91
    functionName: tlist_member
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 6
    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:85,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 89
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 173
    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:108,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:111,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 7
    argCount: 2
    argNames:
    - var
    - targetlist
    argTypes:
    - Var*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 120
    functionName: tlist_member_match_var
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 0
    functionsReached:
    - IsA
    - lfirst
    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:108,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:111,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 118
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 173
    functionsReached:
    - IsA
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(temp, targetlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:134,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:139,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:141,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:145,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:145,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - tlist
    - exprs
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 131
    functionDepth: 2
    functionLinenumber: 131
    functionLinenumberEnd: 153
    functionName: add_to_flat_tlist
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 0
    functionsReached:
    - makeTargetEntry
    - lfirst
    - list_length
    - lappend
    - copyObject
    - tlist_member
    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:139,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:141,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:145,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:145,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 137
    functionDepth: 2
    functionLinenumber: 137
    functionLinenumberEnd: 151
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 173
    functionsReached:
    - makeTargetEntry
    - lfirst
    - lappend
    - copyObject
    - tlist_member
    linkageType: ''
    returnType: void
    signature: void foreach(lc, exprs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:170,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:175,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - tlist
    - includeJunk
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 178
    functionName: get_tlist_exprs
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 0
    functionsReached:
    - lappend
    - lfirst
    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:170,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:175,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 176
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 173
    functionsReached:
    - lappend
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, tlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:193,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - tlist
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 199
    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:193,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 197
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 173
    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:223,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:223,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:228,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:229,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:231,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - tlist1
    - tlist2
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 236
    functionName: tlist_same_exprs
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 2
    functionsReached:
    - equal
    - lfirst
    - list_length
    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:228,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:229,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:231,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 233
    functionName: forboth
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 10
    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:251,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:255,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:266,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:266,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:268,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - tlist
    - colTypes
    - junkOK
    argTypes:
    - List*
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 247
    functionDepth: 2
    functionLinenumber: 247
    functionLinenumberEnd: 274
    functionName: tlist_same_datatypes
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 0
    functionsReached:
    - exprType
    - list_head
    - lnext
    - lfirst_oid
    - lfirst
    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:255,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:266,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:266,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:268,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 253
    functionDepth: 2
    functionLinenumber: 253
    functionLinenumberEnd: 270
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 173
    functionsReached:
    - exprType
    - lfirst_oid
    - lnext
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, tlist)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:285,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:289,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:300,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:300,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:302,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - tlist
    - colCollations
    - junkOK
    argTypes:
    - List*
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 281
    functionDepth: 2
    functionLinenumber: 281
    functionLinenumberEnd: 308
    functionName: tlist_same_collations
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 0
    functionsReached:
    - exprCollation
    - list_head
    - lnext
    - lfirst_oid
    - lfirst
    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:289,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:300,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:300,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:302,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 287
    functionDepth: 2
    functionLinenumber: 287
    functionLinenumberEnd: 304
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 173
    functionsReached:
    - exprCollation
    - lfirst_oid
    - lnext
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, tlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:323,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:323,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:323,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:326,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:327,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - dest_tlist
    - src_tlist
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 336
    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:326,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:327,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 324
    functionDepth: 1
    functionLinenumber: 324
    functionLinenumberEnd: 335
    functionName: forboth
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 10
    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:351,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:357,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - sortref
    - targetList
    argTypes:
    - Index
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 344
    functionDepth: 1
    functionLinenumber: 344
    functionLinenumberEnd: 359
    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:351,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 355
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 173
    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:370,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sgClause
    - targetList
    argTypes:
    - SortGroupClause*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 366
    functionDepth: 2
    functionLinenumber: 366
    functionLinenumberEnd: 371
    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:381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sgClause
    - targetList
    argTypes:
    - SortGroupClause*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 378
    functionDepth: 3
    functionLinenumber: 378
    functionLinenumberEnd: 384
    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:399,1
    - Dst: get_sortgroupclause_expr
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:402,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:403,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - sgClauses
    - targetList
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 391
    functionDepth: 4
    functionLinenumber: 391
    functionLinenumberEnd: 406
    functionName: get_sortgrouplist_exprs
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 4
    functionsReached:
    - get_sortgroupclause_expr
    - lfirst
    - 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:399,1
    - Dst: get_sortgroupclause_expr
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:402,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:403,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 397
    functionDepth: 4
    functionLinenumber: 397
    functionLinenumberEnd: 404
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 173
    functionsReached:
    - get_sortgroupclause_expr
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(l, sgClauses)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:428,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:434,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - sortref
    - clauses
    argTypes:
    - Index
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 421
    functionDepth: 1
    functionLinenumber: 421
    functionLinenumberEnd: 436
    functionName: get_sortgroupref_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 2
    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:428,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 426
    functionDepth: 1
    functionLinenumber: 426
    functionLinenumberEnd: 432
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 173
    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:449,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sortref
    - clauses
    argTypes:
    - Index
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 442
    functionDepth: 1
    functionLinenumber: 442
    functionLinenumberEnd: 456
    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:449,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 447
    functionDepth: 1
    functionLinenumber: 447
    functionLinenumberEnd: 453
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 173
    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:465,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:470,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:474,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:477,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - groupClause
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 462
    functionDepth: 1
    functionLinenumber: 462
    functionLinenumberEnd: 482
    functionName: extract_grouping_ops
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 3
    functionsReached:
    - Assert
    - list_length
    - OidIsValid
    - palloc
    - lfirst
    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:474,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:477,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 472
    functionDepth: 1
    functionLinenumber: 472
    functionLinenumberEnd: 479
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 173
    functionsReached:
    - OidIsValid
    - Assert
    - 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:491,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:496,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:500,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:501,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - groupClause
    - tlist
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 488
    functionDepth: 3
    functionLinenumber: 488
    functionLinenumberEnd: 507
    functionName: extract_grouping_collations
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 3
    functionsReached:
    - lfirst
    - exprCollation
    - list_length
    - palloc
    - get_sortgroupclause_tle
    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:500,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:501,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 498
    functionDepth: 3
    functionLinenumber: 498
    functionLinenumberEnd: 504
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 173
    functionsReached:
    - exprCollation
    - get_sortgroupclause_tle
    - 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:517,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:521,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:525,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:526,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - groupClause
    - tlist
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 513
    functionDepth: 3
    functionLinenumber: 513
    functionLinenumberEnd: 532
    functionName: extract_grouping_cols
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 2
    functionsReached:
    - palloc
    - get_sortgroupclause_tle
    - lfirst
    - list_length
    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:525,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:526,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 523
    functionDepth: 3
    functionLinenumber: 523
    functionLinenumberEnd: 529
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 173
    functionsReached:
    - get_sortgroupclause_tle
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(glitem, groupClause)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:546,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:548,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - groupClause
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 539
    functionDepth: 1
    functionLinenumber: 539
    functionLinenumberEnd: 552
    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:546,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:548,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 544
    functionDepth: 1
    functionLinenumber: 544
    functionLinenumberEnd: 550
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 173
    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:566,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - groupClause
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 559
    functionDepth: 1
    functionLinenumber: 559
    functionLinenumberEnd: 572
    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:566,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 564
    functionDepth: 1
    functionLinenumber: 564
    functionLinenumberEnd: 570
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 173
    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:593,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:597,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:597,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:602,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:604,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - tlist
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 590
    functionDepth: 1
    functionLinenumber: 590
    functionLinenumberEnd: 617
    functionName: make_pathtarget_from_tlist
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 0
    functionsReached:
    - palloc
    - list_length
    - lappend
    - makeNode
    - lfirst
    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:602,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:604,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 600
    functionDepth: 1
    functionLinenumber: 600
    functionLinenumberEnd: 607
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 173
    functionsReached:
    - lappend
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, tlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:631,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:633,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:636,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:642,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - target
    argTypes:
    - PathTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 623
    functionDepth: 1
    functionLinenumber: 623
    functionLinenumberEnd: 647
    functionName: make_tlist_from_pathtarget
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 0
    functionsReached:
    - makeTargetEntry
    - lappend
    - lfirst
    - foreach
    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:659,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:662,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:664,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:668,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:670,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:671,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - src
    argTypes:
    - PathTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 656
    functionDepth: 1
    functionLinenumber: 656
    functionLinenumberEnd: 674
    functionName: copy_pathtarget
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 6
    functionsReached:
    - palloc
    - list_copy
    - list_length
    - memcpy
    - makeNode
    linkageType: ''
    returnType: PathTarget
    signature: 'PathTarget *

      copy_pathtarget(PathTarget *src)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:684,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 680
    functionDepth: 1
    functionLinenumber: 680
    functionLinenumberEnd: 685
    functionName: create_empty_pathtarget
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 8
    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:698,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:702,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:706,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:712,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:714,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - target
    - expr
    - sortgroupref
    argTypes:
    - PathTarget*
    - Expr*
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 694
    functionDepth: 1
    functionLinenumber: 694
    functionLinenumberEnd: 727
    functionName: add_column_to_pathtarget
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 6
    functionsReached:
    - repalloc
    - lappend
    - palloc0
    - list_length
    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:743,1
    - Dst: add_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:744,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - target
    - expr
    argTypes:
    - PathTarget*
    - Expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 740
    functionDepth: 2
    functionLinenumber: 740
    functionLinenumberEnd: 745
    functionName: add_new_column_to_pathtarget
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 0
    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:758,1
    - Dst: add_new_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:760,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - target
    - exprs
    argTypes:
    - PathTarget*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 751
    functionDepth: 3
    functionLinenumber: 751
    functionLinenumberEnd: 762
    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:758,1
    - Dst: add_new_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:760,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 756
    functionDepth: 3
    functionLinenumber: 756
    functionLinenumberEnd: 761
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 174
    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:784,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:786,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:800,1
    - Dst: tlist_member_match_var
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:801,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:803,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:812,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:815,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - tlist
    - target
    argTypes:
    - List*
    - PathTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 773
    functionDepth: 2
    functionLinenumber: 773
    functionLinenumberEnd: 821
    functionName: apply_pathtarget_labeling_to_tlist
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 2
    functionsReached:
    - lfirst
    - tlist_member_match_var
    - IsA
    - foreach
    - elog
    - tlist_member
    linkageType: ''
    returnType: void
    signature: void apply_pathtarget_labeling_to_tlist(List *tlist, PathTarget *target)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:903,1
    - Dst: list_make1_int
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:904,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:918,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:919,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:920,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:930,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:932,1
    - Dst: get_pathtarget_sortgroupref
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:935,1
    - Dst: split_pathtarget_walker
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:943,1
    - Dst: IS_SRF_CALL
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:966,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:977,1
    - Dst: list_make1_int
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:978,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:989,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:990,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:992,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:997,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:998,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:998,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:998,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:999,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1000,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1000,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1000,1
    - Dst: forthree
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1012,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1016,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1019,1
    - Dst: create_empty_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1025,1
    - Dst: add_sp_items_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1033,1
    - Dst: for_each_cell
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1034,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1035,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1037,1
    - Dst: add_sp_items_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1039,1
    - Dst: for_each_cell
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1041,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1042,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1044,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1049,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1051,1
    - Dst: add_sp_item_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1052,1
    - Dst: set_pathtarget_cost_width
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1055,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1061,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1062,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 66
    argCount: 5
    argNames:
    - root
    - target
    - input_target
    - targets
    - targets_contain_srfs
    argTypes:
    - PlannerInfo*
    - PathTarget*
    - PathTarget*
    - List**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 880
    functionDepth: 2
    functionLinenumber: 880
    functionLinenumberEnd: 1068
    functionName: split_pathtarget_at_srfs
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 1
    functionsReached:
    - add_sp_items_to_pathtarget
    - set_pathtarget_cost_width
    - create_empty_pathtarget
    - lappend_int
    - IS_SRF_CALL
    - for_each_cell
    - list_concat
    - list_nth_cell
    - foreach
    - list_member
    - split_pathtarget_walker
    - add_sp_item_to_pathtarget
    - lnext
    - lappend
    - forthree
    - get_pathtarget_sortgroupref
    - lfirst
    - list_make1_int
    - list_make1
    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: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1049,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1051,1
    - Dst: add_sp_item_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1052,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1053
      start: 1047
    functionDepth: 1
    functionLinenumber: 1047
    functionLinenumberEnd: 1053
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 176
    functionsReached:
    - list_member
    - add_sp_item_to_pathtarget
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lcx, input_srfs)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1090,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1092,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1096,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1106,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1107,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1108,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1109,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1110,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1112,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1116,1
    - Dst: IS_SRF_CALL
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1125,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1127,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1142,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1148,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1150,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1151,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1152,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1156,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1157,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1157,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1157,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1160,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1161,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1161,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1161,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1162,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1163,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1163,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1163,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1171,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1172,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1183,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - split_pathtarget_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1184
      start: 1076
    functionDepth: 2
    functionLinenumber: 1076
    functionLinenumberEnd: 1184
    functionName: split_pathtarget_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 1
    functionsReached:
    - list_concat
    - expression_tree_walker
    - list_nth_cell
    - IsA
    - list_length
    - IS_SRF_CALL
    - Max
    - lappend
    - list_member
    - palloc
    - lfirst
    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:1210,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1212,1
    - Dst: get_pathtarget_sortgroupref
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1213,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1218,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1226,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1226,1
    - Dst: add_column_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1238,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1238,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - target
    - item
    argTypes:
    - PathTarget*
    - split_pathtarget_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1240
      start: 1199
    functionDepth: 2
    functionLinenumber: 1199
    functionLinenumberEnd: 1240
    functionName: add_sp_item_to_pathtarget
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 2
    functionsReached:
    - equal
    - palloc0
    - foreach
    - list_length
    - add_column_to_pathtarget
    - copyObject
    - get_pathtarget_sortgroupref
    - lfirst
    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:1252,1
    - Dst: add_sp_item_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - target
    - items
    argTypes:
    - PathTarget*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1256
      start: 1245
    functionDepth: 3
    functionLinenumber: 1245
    functionLinenumberEnd: 1256
    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:1252,1
    - Dst: add_sp_item_to_pathtarget
      Src: /src/postgres/src/backend/optimizer/util/tlist.c:1254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1255
      start: 1250
    functionDepth: 3
    functionLinenumber: 1250
    functionLinenumberEnd: 1255
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/tlist.c
    functionUses: 177
    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:96,1
    - Dst: expand_appendrel_subquery
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:100,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:104,1
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:121,1
    - Dst: get_plan_rowmark
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:129,1
    - Dst: getRTEPermissionInfo
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:143,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:148,1
    - Dst: expand_partitioned_rtentry
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:154,1
    - Dst: find_all_inheritors
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:170,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:180,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:181,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:181,1
    - Dst: expand_planner_arrays
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:184,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:184,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:192,1
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:199,1
    - Dst: RELATION_IS_OTHER_TEMP
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:209,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:211,1
    - Dst: expand_single_inheritance_child
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:216,1
    - Dst: build_simple_rel
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:221,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:225,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:253,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:259,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:260,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:261,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:262,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:264,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:265,1
    - Dst: makeWholeRowVar
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:272,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:272,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:276,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:277,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:278,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:279,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:281,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:282,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:288,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:294,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:295,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:296,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:297,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:299,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:300,1
    - Dst: add_vars_to_targetlist
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:307,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:307,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:310,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 63
    argCount: 4
    argNames:
    - root
    - rel
    - rte
    - rti
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 85
    functionDepth: 3
    functionLinenumber: 85
    functionLinenumberEnd: 311
    functionName: expand_inherited_rtentry
    functionSourceFile: /src/postgres/src/backend/optimizer/util/inherit.c
    functionUses: 1
    functionsReached:
    - makeWholeRowVar
    - expand_single_inheritance_child
    - expand_partitioned_rtentry
    - snprintf
    - expand_appendrel_subquery
    - pstrdup
    - list_length
    - linitial_oid
    - find_all_inheritors
    - table_open
    - add_vars_to_targetlist
    - makeVar
    - expand_planner_arrays
    - lappend
    - table_close
    - RELATION_IS_OTHER_TEMP
    - makeTargetEntry
    - Assert
    - get_plan_rowmark
    - bms_make_singleton
    - planner_rt_fetch
    - build_simple_rel
    - lfirst_oid
    - getRTEPermissionInfo
    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:192,1
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:199,1
    - Dst: RELATION_IS_OTHER_TEMP
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:209,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:211,1
    - Dst: expand_single_inheritance_child
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:216,1
    - Dst: build_simple_rel
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:221,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:225,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 190
    functionDepth: 3
    functionLinenumber: 190
    functionLinenumberEnd: 226
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/inherit.c
    functionUses: 177
    functionsReached:
    - RELATION_IS_OTHER_TEMP
    - expand_single_inheritance_child
    - table_open
    - build_simple_rel
    - table_close
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(l, inhOIDs)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:329,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:331,1
    - Dst: PartitionDirectoryLookup
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:333,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:337,1
    - Dst: has_partition_attrs
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:347,1
    - Dst: prune_append_rel_partitions
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:359,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:362,1
    - Dst: expand_planner_arrays
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:364,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:371,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:373,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:381,1
    - Dst: try_table_open
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:394,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:397,1
    - Dst: RELATION_IS_OTHER_TEMP
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:406,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:407,1
    - Dst: expand_single_inheritance_child
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:410,1
    - Dst: build_simple_rel
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:415,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:417,1
    - Dst: translate_col_privs
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:426,1
    - Dst: expand_partitioned_rtentry
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:429,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:437,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    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: 439
      start: 317
    functionDepth: 3
    functionLinenumber: 317
    functionLinenumberEnd: 439
    functionName: expand_partitioned_rtentry
    functionSourceFile: /src/postgres/src/backend/optimizer/util/inherit.c
    functionUses: 2
    functionsReached:
    - expand_single_inheritance_child
    - expand_partitioned_rtentry
    - bms_num_members
    - PartitionDirectoryLookup
    - bms_next_member
    - try_table_open
    - bms_del_member
    - expand_planner_arrays
    - elog
    - table_close
    - check_stack_depth
    - RELATION_IS_OTHER_TEMP
    - Assert
    - bms_add_members
    - palloc0
    - translate_col_privs
    - has_partition_attrs
    - build_simple_rel
    - 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: 7
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:470,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:471,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:492,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:493,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:494,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:500,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:511,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:512,1
    - Dst: make_append_rel_info
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:519,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:521,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:524,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:534,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:539,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:548,1
    - Dst: strVal
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:551,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:551,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:557,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:559,1
    - Dst: makeString
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:559,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:559,1
    - Dst: makeAlias
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:567,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:574,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:575,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:577,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:585,1
    - Dst: select_rowmark_type
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:591,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:607,1
    - Dst: bms_is_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:619,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:627,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:636,1
    - Dst: add_row_identity_var
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:642,1
    - Dst: add_row_identity_columns
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:645,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 61
    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: 649
      start: 461
    functionDepth: 3
    functionLinenumber: 461
    functionLinenumberEnd: 649
    functionName: expand_single_inheritance_child
    functionSourceFile: /src/postgres/src/backend/optimizer/util/inherit.c
    functionUses: 3
    functionsReached:
    - pstrdup
    - list_length
    - makeNode
    - NameStr
    - add_row_identity_columns
    - RelationGetRelid
    - add_row_identity_var
    - makeAlias
    - memcpy
    - makeString
    - makeVar
    - TupleDescAttr
    - list_nth
    - lappend
    - strVal
    - bms_is_member
    - bms_add_member
    - Assert
    - make_append_rel_info
    - RelationGetDescr
    - select_rowmark_type
    - copyObject
    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:665,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:666,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:666,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:674,1
    - Dst: getRTEPermissionInfo
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:675,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:681,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:683,1
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:683,1
    - Dst: translate_col_privs_multilevel
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:685,1
    - Dst: get_dependent_generated_columns
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:693,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:696,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 656
    functionDepth: 2
    functionLinenumber: 656
    functionLinenumberEnd: 697
    functionName: get_rel_all_updated_cols
    functionSourceFile: /src/postgres/src/backend/optimizer/util/inherit.c
    functionUses: 0
    functionsReached:
    - IS_OTHER_REL
    - Assert
    - translate_col_privs_multilevel
    - planner_rt_fetch
    - IS_SIMPLE_REL
    - find_base_rel
    - bms_union
    - get_dependent_generated_columns
    - getRTEPermissionInfo
    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:722,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:724,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:729,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:736,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:742,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:744,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - parent_privs
    - translated_vars
    argTypes:
    - Bitmapset*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 710
    functionDepth: 1
    functionLinenumber: 710
    functionLinenumberEnd: 749
    functionName: translate_col_privs
    functionSourceFile: /src/postgres/src/backend/optimizer/util/inherit.c
    functionUses: 1
    functionsReached:
    - bms_is_member
    - lfirst_node
    - bms_add_member
    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:736,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:742,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:744,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 734
    functionDepth: 1
    functionLinenumber: 734
    functionLinenumberEnd: 746
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/inherit.c
    functionUses: 177
    functionsReached:
    - bms_is_member
    - lfirst_node
    - bms_add_member
    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:775,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:779,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:783,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:785,1
    - Dst: translate_col_privs
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:787,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: 788
      start: 760
    functionDepth: 2
    functionLinenumber: 760
    functionLinenumberEnd: 788
    functionName: translate_col_privs_multilevel
    functionSourceFile: /src/postgres/src/backend/optimizer/util/inherit.c
    functionUses: 2
    functionsReached:
    - translate_col_privs_multilevel
    - elog
    - Assert
    - translate_col_privs
    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:805,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:807,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:817,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:819,1
    - Dst: build_simple_rel
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:822,1
    - Dst: expand_inherited_rtentry
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:826,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - root
    - rel
    - rte
    - rti
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 799
    functionDepth: 4
    functionLinenumber: 799
    functionLinenumberEnd: 828
    functionName: expand_appendrel_subquery
    functionSourceFile: /src/postgres/src/backend/optimizer/util/inherit.c
    functionUses: 1
    functionsReached:
    - Assert
    - foreach
    - build_simple_rel
    - expand_inherited_rtentry
    - lfirst
    linkageType: ''
    returnType: void
    signature: "void expand_appendrel_subquery(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t\t
      \ RangeTblEntry *rte, Index rti)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:861,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:863,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:867,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:867,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:868,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:871,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:873,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:876,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:885,1
    - Dst: make_ands_implicit
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:885,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:887,1
    - Dst: contain_vars_of_level
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:893,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:894,1
    - Dst: make_restrictinfo
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:901,1
    - Dst: restriction_is_always_false
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:911,1
    - Dst: restriction_is_always_true
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:914,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:917,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:919,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:938,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:940,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:945,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:948,1
    - Dst: make_restrictinfo
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:949,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:955,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:959,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 5
    argNames:
    - root
    - parentrel
    - childrel
    - childRTE
    - appinfo
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RangeTblEntry*
    - AppendRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 842
    functionDepth: 3
    functionLinenumber: 842
    functionLinenumberEnd: 969
    functionName: apply_child_basequals
    functionSourceFile: /src/postgres/src/backend/optimizer/util/inherit.c
    functionUses: 1
    functionsReached:
    - Min
    - Assert
    - make_restrictinfo
    - restriction_is_always_true
    - adjust_appendrel_attrs
    - IsA
    - foreach
    - restriction_is_always_false
    - eval_const_expressions
    - contain_volatile_functions
    - lappend
    - make_ands_implicit
    - DatumGetBool
    - contain_vars_of_level
    - lfirst
    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:945,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:948,1
    - Dst: make_restrictinfo
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:949,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/util/inherit.c:955,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 943
    functionDepth: 3
    functionLinenumber: 943
    functionLinenumberEnd: 956
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/inherit.c
    functionUses: 179
    functionsReached:
    - Min
    - make_restrictinfo
    - lappend
    - lfirst
    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:
    - bms_overlap
    - have_relevant_eclass_joinclause
    - lfirst
    - list_length
    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: 179
    functionsReached:
    - bms_overlap
    - lfirst
    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
    - restriction_is_always_true
    - find_base_rel_ignore_join
    - restriction_is_always_false
    - lappend
    - bms_next_member
    - makeBoolConst
    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_delete_ptr
    - find_base_rel_ignore_join
    - list_member_ptr
    - bms_next_member
    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:
    - Assert
    - extract_or_clause
    - foreach
    - consider_new_or_clause
    - join_clause_is_movable_to
    - restriction_is_or_clause
    - lfirst
    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:
    - lfirst
    - make_ands_explicit
    - Assert
    - list_concat
    - lfirst_node
    - is_orclause
    - extract_or_clause
    - foreach
    - castNode
    - lappend
    - is_safe_restriction_clause_for
    - restriction_is_or_clause
    - make_orclause
    - is_andclause
    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: 181
    functionsReached:
    - lfirst_node
    - extract_or_clause
    - lappend
    - is_safe_restriction_clause_for
    - 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:
    - Min
    - make_restrictinfo
    - init_dummy_sjinfo
    - clause_selectivity
    - lappend
    - bms_difference
    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:129,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:142,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:143,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:144,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:145,1
    - Dst: errdetail_relkind_not_supported
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:146,1
    - Dst: RelationIsPermanent
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:150,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:150,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:151,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:152,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:153,1
    - Dst: RelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:156,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:157,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:159,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:161,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:163,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:178,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:180,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:184,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:192,1
    - Dst: estimate_rel_size
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:203,1
    - Dst: RelationGetParallelWorkers
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:207,1
    - Dst: IsSystemRelation
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:218,1
    - Dst: RelationGetIndexList
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:229,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:243,1
    - Dst: index_open
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:255,1
    - Dst: index_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:267,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:277,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:277,1
    - Dst: index_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:281,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:285,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:289,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:294,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:295,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:296,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:297,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:298,1
    - Dst: index_can_return
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:303,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:334,1
    - Dst: RelationGetIndexAttOptions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:337,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:348,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:351,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:352,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:375,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:376,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:377,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:390,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:394,1
    - Dst: get_ordering_op_properties
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:395,1
    - Dst: RelationGetIndexExpressions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:445,1
    - Dst: RelationGetIndexPredicate
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:446,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:448,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:450,1
    - Dst: build_index_tlist
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:453,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:474,1
    - Dst: estimate_rel_size
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:481,1
    - Dst: IndexAmRoutine*::amgettreeheight
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:492,1
    - Dst: index_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:508,1
    - Dst: lcons
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:517,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:520,1
    - Dst: get_relation_statistics
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:525,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:531,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:534,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:534,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:536,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:537,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:538,1
    - Dst: GetForeignServerIdByRelId
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:541,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:541,1
    - Dst: GetFdwRoutineForRelation
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:542,1
    - Dst: get_relation_foreign_keys
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:551,1
    - Dst: set_relation_partition_info
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:564,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:566,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 181
    argCount: 4
    argNames:
    - root
    - relationObjectId
    - inhparent
    - rel
    argTypes:
    - PlannerInfo*
    - Oid
    - bool
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 115
    functionDepth: 3
    functionLinenumber: 115
    functionLinenumberEnd: 575
    functionName: get_relation_info
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - RelationGetIndexExpressions
    - RelationGetParallelWorkers
    - lcons
    - build_index_tlist
    - RelationGetIndexAttOptions
    - makeNode
    - RelationGetRelationName
    - set_relation_partition_info
    - RecoveryInProgress
    - get_relation_statistics
    - RelationGetNumberOfAttributes
    - estimate_rel_size
    - table_open
    - RelationGetIndexList
    - index_close
    - RelationGetRelid
    - get_opfamily_member_for_cmptype
    - RelationGetForm
    - get_ordering_op_properties
    - RelationGetNumberOfBlocks
    - HeapTupleHeaderGetXmin
    - TransactionIdPrecedes
    - errmsg
    - errdetail_relkind_not_supported
    - ChangeVarNodes
    - OidIsValid
    - GetForeignServerIdByRelId
    - index_can_return
    - palloc
    - table_close
    - list_free
    - bms_add_member
    - Assert
    - RelationIsPermanent
    - IsSystemRelation
    - get_relation_foreign_keys
    - ereport
    - palloc0
    - unlikely
    - IndexAmRoutine*::amgettreeheight
    - RelationGetIndexPredicate
    - GetFdwRoutineForRelation
    - TupleDescCompactAttr
    - lfirst_oid
    - errcode
    - index_open
    linkageType: ''
    returnType: void
    signature: "void get_relation_info(PlannerInfo *root, Oid relationObjectId, bool
      inhparent,\n\t\t\t\t  RelOptInfo *rel)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:243,1
    - Dst: index_open
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:255,1
    - Dst: index_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:267,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:277,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:277,1
    - Dst: index_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:281,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:285,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:289,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:294,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:295,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:296,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:297,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:298,1
    - Dst: index_can_return
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:303,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:334,1
    - Dst: RelationGetIndexAttOptions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:337,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:348,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:351,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:352,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:375,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:376,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:377,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:390,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:394,1
    - Dst: get_ordering_op_properties
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:395,1
    - Dst: RelationGetIndexExpressions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:445,1
    - Dst: RelationGetIndexPredicate
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:446,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:448,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:450,1
    - Dst: build_index_tlist
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:453,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:474,1
    - Dst: estimate_rel_size
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:481,1
    - Dst: IndexAmRoutine*::amgettreeheight
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:492,1
    - Dst: index_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:508,1
    - Dst: lcons
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:517,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 126
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 241
    functionDepth: 2
    functionLinenumber: 241
    functionLinenumberEnd: 518
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 181
    functionsReached:
    - RelationGetIndexExpressions
    - lcons
    - build_index_tlist
    - RelationGetIndexAttOptions
    - makeNode
    - index_close
    - estimate_rel_size
    - get_opfamily_member_for_cmptype
    - RelationGetForm
    - get_ordering_op_properties
    - RelationGetNumberOfBlocks
    - HeapTupleHeaderGetXmin
    - TransactionIdPrecedes
    - ChangeVarNodes
    - OidIsValid
    - index_can_return
    - palloc
    - Assert
    - IndexAmRoutine*::amgettreeheight
    - RelationGetIndexPredicate
    - lfirst_oid
    - index_open
    linkageType: ''
    returnType: void
    signature: void foreach(l, indexoidlist)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:601,1
    - Dst: RelationGetFKeyList
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:618,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:634,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:639,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:639,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:649,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:665,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:669,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:670,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:671,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:677,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:678,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:679,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:681,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 4
    argNames:
    - root
    - rel
    - relation
    - inhparent
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Relation
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 587
    functionDepth: 1
    functionLinenumber: 587
    functionLinenumberEnd: 684
    functionName: get_relation_foreign_keys
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - Assert
    - RelationGetRelid
    - memset
    - list_length
    - lappend
    - RelationGetFKeyList
    - memcpy
    - makeNode
    - lfirst
    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:634,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:639,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:639,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:649,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:665,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:669,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:670,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:671,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:677,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:678,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:679,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:681,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 632
    functionDepth: 1
    functionLinenumber: 632
    functionLinenumberEnd: 683
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 181
    functionsReached:
    - Assert
    - RelationGetRelid
    - memset
    - lappend
    - memcpy
    - makeNode
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, cachedfkeys)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:649,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:665,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:669,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:670,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:671,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:677,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:678,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:679,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:681,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 647
    functionDepth: 1
    functionLinenumber: 647
    functionLinenumberEnd: 682
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 181
    functionsReached:
    - memset
    - lappend
    - memcpy
    - makeNode
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, rtable)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:742,1
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:744,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:751,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:753,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:757,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:760,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:768,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:769,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:770,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:772,1
    - Dst: get_constraint_index
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:782,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:785,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:786,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:787,1
    - Dst: RelationGetIndexList
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:794,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:798,1
    - Dst: index_open
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:815,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:835,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:836,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:837,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:839,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:840,1
    - Dst: index_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:841,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:842,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:873,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:878,1
    - Dst: RelationGetIndexExpressions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:882,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:884,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:886,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:888,1
    - Dst: infer_collation_opclass_match
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:897,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:905,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:916,1
    - Dst: list_difference
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:929,1
    - Dst: RelationGetIndexPredicate
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:936,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:938,1
    - Dst: predicate_implied_by
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:940,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:943,1
    - Dst: index_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:945,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:948,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:949,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:952,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:953,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:954,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 88
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 706
    functionDepth: 3
    functionLinenumber: 706
    functionLinenumberEnd: 957
    functionName: infer_arbiter_indexes
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - RelationGetIndexExpressions
    - list_difference
    - get_constraint_index
    - index_close
    - table_open
    - RelationGetIndexList
    - foreach
    - bms_equal
    - list_member
    - errmsg
    - ChangeVarNodes
    - IsA
    - lappend
    - infer_collation_opclass_match
    - table_close
    - rt_fetch
    - predicate_implied_by
    - lfirst
    - list_free
    - bms_add_member
    - lappend_oid
    - ereport
    - RelationGetIndexPredicate
    - lfirst_oid
    - errcode
    - index_open
    linkageType: ''
    returnType: List
    signature: 'List *

      infer_arbiter_indexes(PlannerInfo *root)'
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:798,1
    - Dst: index_open
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:815,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:835,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:836,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:837,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:839,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:840,1
    - Dst: index_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:841,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:842,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:873,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:878,1
    - Dst: RelationGetIndexExpressions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:882,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:884,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:886,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:888,1
    - Dst: infer_collation_opclass_match
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:897,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:905,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:916,1
    - Dst: list_difference
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:929,1
    - Dst: RelationGetIndexPredicate
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:936,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:938,1
    - Dst: predicate_implied_by
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:940,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:943,1
    - Dst: index_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:945,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 796
    functionDepth: 3
    functionLinenumber: 796
    functionLinenumberEnd: 946
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 183
    functionsReached:
    - RelationGetIndexExpressions
    - list_difference
    - index_close
    - foreach
    - bms_equal
    - list_member
    - errmsg
    - ChangeVarNodes
    - IsA
    - infer_collation_opclass_match
    - table_close
    - predicate_implied_by
    - lfirst
    - list_free
    - bms_add_member
    - lappend_oid
    - ereport
    - RelationGetIndexPredicate
    - lfirst_oid
    - errcode
    - index_open
    linkageType: ''
    returnType: void
    signature: void foreach(l, indexList)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: get_opclass_family
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1007,1
    - Dst: get_opclass_input_type
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1008,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1036,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1043,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1050,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 26
    argCount: 3
    argNames:
    - elem
    - idxRel
    - idxExprs
    argTypes:
    - InferenceElem*
    - Relation
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 986
    functionDepth: 3
    functionLinenumber: 986
    functionLinenumberEnd: 1056
    functionName: infer_collation_opclass_match
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 2
    functionsReached:
    - equal
    - IsA
    - list_nth
    - get_opclass_family
    - get_opclass_input_type
    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:1078,1
    - Dst: table_relation_estimate_size
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1080,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1091,1
    - Dst: get_rel_data_width
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1144,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1145,1
    - Dst: rint
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1150,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: 1177
      start: 1068
    functionDepth: 1
    functionLinenumber: 1068
    functionLinenumberEnd: 1177
    functionName: estimate_rel_size
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 4
    functionsReached:
    - rint
    - RELKIND_HAS_TABLE_AM
    - get_rel_data_width
    - table_relation_estimate_size
    - RelationGetNumberOfBlocks
    - MAXALIGN
    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:1199,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1201,1
    - Dst: get_attavgwidth
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1215,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1215,1
    - Dst: get_typavgwidth
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1218,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1219,1
    - Dst: clamp_width_est
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1226,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - rel
    - attr_widths
    argTypes:
    - Relation
    - int32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1227
      start: 1193
    functionDepth: 2
    functionLinenumber: 1193
    functionLinenumberEnd: 1227
    functionName: get_rel_data_width
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 2
    functionsReached:
    - Assert
    - get_attavgwidth
    - RelationGetNumberOfAttributes
    - RelationGetRelid
    - TupleDescAttr
    - clamp_width_est
    - get_typavgwidth
    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:1242,1
    - Dst: get_rel_data_width
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1244,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - relid
    - attr_widths
    argTypes:
    - Oid
    - int32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1249
      start: 1235
    functionDepth: 3
    functionLinenumber: 1235
    functionLinenumberEnd: 1249
    functionName: get_relation_data_width
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - get_rel_data_width
    - table_close
    - table_open
    linkageType: ''
    returnType: int32
    signature: int32 get_relation_data_width(Oid relid, int32 *attr_widths)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1291,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1314,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1322,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1334,1
    - Dst: canonicalize_qual
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1336,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1340,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1346,1
    - Dst: make_ands_implicit
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1347,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1357,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1361,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1362,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1364,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1379,1
    - Dst: set_baserel_partition_constraint
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1391,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1392,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1395,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 35
    argCount: 6
    argNames:
    - root
    - relationObjectId
    - rel
    - include_noinherit
    - include_notnull
    - include_partition
    argTypes:
    - PlannerInfo*
    - Oid
    - RelOptInfo*
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1398
      start: 1276
    functionDepth: 3
    functionLinenumber: 1276
    functionLinenumberEnd: 1398
    functionName: get_relation_constraints
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 0
    functionsReached:
    - Assert
    - makeVar
    - stringToNode
    - list_concat
    - set_baserel_partition_constraint
    - table_open
    - TupleDescAttr
    - ChangeVarNodes
    - table_close
    - eval_const_expressions
    - lappend
    - make_ands_implicit
    - TupleDescCompactAttr
    - makeNode
    - canonicalize_qual
    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:1414,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1415,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1415,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1416,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1419,1
    - Dst: statext_is_kind_built
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1422,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1424,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1430,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1433,1
    - Dst: statext_is_kind_built
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1436,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1438,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1444,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1447,1
    - Dst: statext_is_kind_built
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1450,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1452,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1458,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1461,1
    - Dst: statext_is_kind_built
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1464,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1466,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1472,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1475,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1478,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: 1479
      start: 1406
    functionDepth: 1
    functionLinenumber: 1406
    functionLinenumberEnd: 1479
    functionName: get_relation_statistics_worker
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 0
    functionsReached:
    - SearchSysCache2
    - bms_copy
    - ReleaseSysCache
    - BoolGetDatum
    - HeapTupleIsValid
    - GETSTRUCT
    - lappend
    - statext_is_kind_built
    - makeNode
    - ObjectIdGetDatum
    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:1497,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1501,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1508,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1508,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1509,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1510,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1511,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1519,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1535,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1542,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1543,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1544,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1554,1
    - Dst: fix_opfuncids
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1557,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1565,1
    - Dst: get_relation_statistics_worker
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1571,1
    - Dst: get_relation_statistics_worker
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1573,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1575,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1576,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1579,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - rel
    - relation
    argTypes:
    - RelOptInfo*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1582
      start: 1489
    functionDepth: 2
    functionLinenumber: 1489
    functionLinenumberEnd: 1582
    functionName: get_relation_statistics
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - HeapTupleIsValid
    - get_relation_statistics_worker
    - SysCacheGetAttr
    - pfree
    - ReleaseSysCache
    - GETSTRUCT
    - bms_free
    - ChangeVarNodes
    - elog
    - eval_const_expressions
    - ObjectIdGetDatum
    - list_free
    - bms_add_member
    - fix_opfuncids
    - stringToNode
    - RelationGetStatExtList
    - TextDatumGetCString
    - SearchSysCache1
    - lfirst_oid
    linkageType: ''
    returnType: List
    signature: 'List *

      get_relation_statistics(RelOptInfo *rel, Relation relation)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1501,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1508,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1508,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1509,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1510,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1511,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1519,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1535,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1542,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1543,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1544,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1554,1
    - Dst: fix_opfuncids
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1557,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1565,1
    - Dst: get_relation_statistics_worker
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1571,1
    - Dst: get_relation_statistics_worker
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1573,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1575,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1576,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1577
      start: 1499
    functionDepth: 2
    functionLinenumber: 1499
    functionLinenumberEnd: 1577
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 183
    functionsReached:
    - pfree
    - fix_opfuncids
    - stringToNode
    - ReleaseSysCache
    - HeapTupleIsValid
    - TextDatumGetCString
    - ChangeVarNodes
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - eval_const_expressions
    - get_relation_statistics_worker
    - SysCacheGetAttr
    - lfirst_oid
    - ObjectIdGetDatum
    - bms_free
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: void foreach(l, statoidlist)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1608,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1608,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1627,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1629,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1632,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1634,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1682,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1684,1
    - Dst: contain_mutable_functions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1686,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1687,1
    - Dst: predicate_refuted_by
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1694,1
    - Dst: get_relation_constraints
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1723,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1738,1
    - Dst: contain_mutable_functions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1740,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1741,1
    - Dst: predicate_refuted_by
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1757,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 39
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1761
      start: 1595
    functionDepth: 4
    functionLinenumber: 1595
    functionLinenumberEnd: 1761
    functionName: relation_excluded_by_constraints
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 0
    functionsReached:
    - predicate_refuted_by
    - Assert
    - contain_mutable_functions
    - IsA
    - get_relation_constraints
    - foreach
    - IS_SIMPLE_REL
    - lappend
    - DatumGetBool
    - lfirst
    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:1738,1
    - Dst: contain_mutable_functions
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1740,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1741,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1742
      start: 1736
    functionDepth: 2
    functionLinenumber: 1736
    functionLinenumberEnd: 1742
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 184
    functionsReached:
    - lappend
    - contain_mutable_functions
    - lfirst
    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:1790,1
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1803,1
    - Dst: RelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1805,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1808,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1818,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1825,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1826,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1832,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1837,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1839,1
    - Dst: makeVarFromTargetEntry
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1845,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1847,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1848,1
    - Dst: expandRTE
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1862,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1864,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1866,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1872,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1878,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1879,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1888,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 43
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1894
      start: 1785
    functionDepth: 3
    functionLinenumber: 1785
    functionLinenumberEnd: 1894
    functionName: build_physical_tlist
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - makeTargetEntry
    - makeVar
    - expandRTE
    - RelationGetNumberOfAttributes
    - table_open
    - planner_rt_fetch
    - TupleDescAttr
    - IsA
    - foreach
    - elog
    - lappend
    - makeVarFromTargetEntry
    - table_close
    - lfirst
    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:1915,1
    - Dst: SystemAttributeDefinition
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1927,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1929,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1931,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1942,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1943,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1944,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1947,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1948,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1954,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - root
    - index
    - heapRelation
    argTypes:
    - PlannerInfo*
    - IndexOptInfo*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1957
      start: 1906
    functionDepth: 2
    functionLinenumber: 1906
    functionLinenumberEnd: 1957
    functionName: build_index_tlist
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 2
    functionsReached:
    - makeTargetEntry
    - makeVar
    - TupleDescAttr
    - list_head
    - lnext
    - elog
    - lappend
    - SystemAttributeDefinition
    - lfirst
    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:1975,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1985,1
    - Dst: OidFunctionCall4Coll
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1985,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1987,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1988,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1989,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1990,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:1993,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: 1996
      start: 1968
    functionDepth: 3
    functionLinenumber: 1968
    functionLinenumberEnd: 1996
    functionName: restriction_selectivity
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - get_oprrest
    - DatumGetFloat8
    - Int32GetDatum
    - PointerGetDatum
    - elog
    - OidFunctionCall4Coll
    - ObjectIdGetDatum
    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:2015,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2025,1
    - Dst: OidFunctionCall5Coll
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2025,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2027,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2028,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2029,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2030,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2031,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2034,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: 2037
      start: 2007
    functionDepth: 3
    functionLinenumber: 2007
    functionLinenumberEnd: 2037
    functionName: join_selectivity
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - DatumGetFloat8
    - get_oprjoin
    - PointerGetDatum
    - elog
    - OidFunctionCall5Coll
    - Int16GetDatum
    - ObjectIdGetDatum
    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:2058,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2084,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2084,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2085,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2092,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: 2095
      start: 2048
    functionDepth: 1
    functionLinenumber: 2048
    functionLinenumberEnd: 2095
    functionName: function_selectivity
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 0
    functionsReached:
    - OidFunctionCall1
    - get_func_support
    - PointerGetDatum
    - elog
    - 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:2117,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2117,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2118,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2119,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2120,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2122,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2137,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2137,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2138,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2145,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2153,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 4
    argNames:
    - root
    - funcid
    - node
    - cost
    argTypes:
    - PlannerInfo*
    - Oid
    - Node*
    - QualCost*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2154
      start: 2110
    functionDepth: 1
    functionLinenumber: 2110
    functionLinenumberEnd: 2154
    functionName: add_function_cost
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 0
    functionsReached:
    - OidFunctionCall1
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - PointerGetDatum
    - SearchSysCache1
    - elog
    - OidIsValid
    - DatumGetPointer
    - ObjectIdGetDatum
    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:2178,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2178,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2179,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2180,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2181,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2183,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2185,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2198,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2198,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2199,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2204,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2212,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 3
    argNames:
    - root
    - funcid
    - node
    argTypes:
    - PlannerInfo*
    - Oid
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2215
      start: 2171
    functionDepth: 1
    functionLinenumber: 2171
    functionLinenumberEnd: 2215
    functionName: get_function_rows
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - OidFunctionCall1
    - Assert
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - PointerGetDatum
    - SearchSysCache1
    - elog
    - OidIsValid
    - DatumGetPointer
    - ObjectIdGetDatum
    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:2234,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2236,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 2
    argNames:
    - rel
    - attno
    argTypes:
    - RelOptInfo*
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2253
      start: 2229
    functionDepth: 1
    functionLinenumber: 2229
    functionLinenumberEnd: 2253
    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:2264,1
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2270,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2298,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2302,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 25
    argCount: 3
    argNames:
    - root
    - rti
    - event
    argTypes:
    - PlannerInfo*
    - Index
    - CmdType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2304
      start: 2261
    functionDepth: 3
    functionLinenumber: 2261
    functionLinenumberEnd: 2304
    functionName: has_row_triggers
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 2
    functionsReached:
    - table_close
    - planner_rt_fetch
    - elog
    - table_open
    linkageType: ''
    returnType: bool
    signature: bool has_row_triggers(PlannerInfo *root, Index rti, CmdType event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2314,1
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2320,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2322,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2325,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - root
    - rti
    argTypes:
    - PlannerInfo*
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2328
      start: 2311
    functionDepth: 3
    functionLinenumber: 2311
    functionLinenumberEnd: 2328
    functionName: has_stored_generated_columns
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 2
    functionsReached:
    - planner_rt_fetch
    - RelationGetDescr
    - table_close
    - table_open
    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:2343,1
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2349,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2351,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2363,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2367,1
    - Dst: pull_varattnos
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2368,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2370,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2371,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2376,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 3
    argNames:
    - root
    - rti
    - target_cols
    argTypes:
    - PlannerInfo*
    - Index
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2379
      start: 2338
    functionDepth: 3
    functionLinenumber: 2338
    functionLinenumberEnd: 2379
    functionName: get_dependent_generated_columns
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - bms_overlap
    - stringToNode
    - table_open
    - planner_rt_fetch
    - RelationGetDescr
    - TupleDescAttr
    - pull_varattnos
    - 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:2398,1
    - Dst: PartitionDirectoryLookup
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2401,1
    - Dst: find_partition_scheme
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2403,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2404,1
    - Dst: set_baserel_partition_key_exprs
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2407,1
    - Dst: set_baserel_partition_constraint
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2408,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - root
    - rel
    - relation
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2409
      start: 2386
    functionDepth: 1
    functionLinenumber: 2386
    functionLinenumberEnd: 2409
    functionName: set_relation_partition_info
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - Assert
    - PartitionDirectoryLookup
    - set_baserel_partition_key_exprs
    - set_baserel_partition_constraint
    - CreatePartitionDirectory
    - find_partition_scheme
    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:2419,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2426,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2431,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2433,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2441,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2443,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2445,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2453,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2453,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2455,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2455,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2467,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2481,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2485,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2486,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2489,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2490,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2493,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2494,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2497,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2498,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2501,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2502,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2506,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2508,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2512,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 2
    argNames:
    - root
    - relation
    argTypes:
    - PlannerInfo*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2515
      start: 2416
    functionDepth: 1
    functionLinenumber: 2416
    functionLinenumberEnd: 2515
    functionName: find_partition_scheme
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - RelationGetPartitionKey
    - Assert
    - fmgr_info_copy
    - memcmp
    - palloc0
    - foreach
    - lappend
    - memcpy
    - palloc
    - lfirst
    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:2527,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2534,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2534,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2537,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2540,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2541,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2551,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2553,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2561,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2564,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2564,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2565,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2566,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2570,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2581,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - relation
    - rel
    argTypes:
    - Relation
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2582
      start: 2523
    functionDepth: 2
    functionLinenumber: 2523
    functionLinenumberEnd: 2582
    functionName: set_baserel_partition_key_exprs
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 1
    functionsReached:
    - RelationGetPartitionKey
    - Assert
    - makeVar
    - list_head
    - ChangeVarNodes
    - lnext
    - IS_SIMPLE_REL
    - list_make1
    - palloc0
    - elog
    - copyObject
    - palloc
    - lfirst
    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:2606,1
    - Dst: expression_planner
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2609,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/util/plancat.c:2611,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - relation
    - rel
    argTypes:
    - Relation
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2614
      start: 2591
    functionDepth: 2
    functionLinenumber: 2591
    functionLinenumberEnd: 2614
    functionName: set_baserel_partition_constraint
    functionSourceFile: /src/postgres/src/backend/optimizer/util/plancat.c
    functionUses: 2
    functionsReached:
    - ChangeVarNodes
    - expression_planner
    - RelationGetPartitionQual
    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: 77
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 77
    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: 81
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 81
    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:169,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:170,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:173,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:174,1
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:179,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - predicate_list
    - clause_list
    - weak
    argTypes:
    - List*
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 180
    functionName: predicate_implied_by
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 8
    functionsReached:
    - linitial
    - predicate_implied_by_recurse
    - list_length
    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:239,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:240,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:243,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:244,1
    - Dst: predicate_refuted_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:249,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - predicate_list
    - clause_list
    - weak
    argTypes:
    - List*
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 250
    functionName: predicate_refuted_by
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 2
    functionsReached:
    - linitial
    - predicate_refuted_by_recurse
    - list_length
    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:299,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:300,1
    - Dst: predicate_classify
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:303,1
    - Dst: predicate_classify
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:305,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:316,1
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:318,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:325,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:336,1
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:338,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:345,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:354,1
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:356,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:363,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:372,1
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:374,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:381,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:396,1
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:402,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:409,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:416,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:428,1
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:430,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:437,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:451,1
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:453,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:460,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:469,1
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:471,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:478,1
    - Dst: predicate_implied_by_simple_clause
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:487,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:495,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 109
    argCount: 3
    argNames:
    - clause
    - predicate
    - weak
    argTypes:
    - Node*
    - Node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 497
    functionName: predicate_implied_by_recurse
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 2
    functionsReached:
    - Assert
    - predicate_classify
    - iterate_end
    - IsA
    - elog
    - predicate_implied_by_recurse
    - 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:402,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 400
    functionDepth: 2
    functionLinenumber: 400
    functionLinenumberEnd: 408
    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:541,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:542,1
    - Dst: predicate_classify
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:545,1
    - Dst: predicate_classify
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:547,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:560,1
    - Dst: predicate_refuted_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:562,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:569,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:578,1
    - Dst: predicate_refuted_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:580,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:587,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:596,1
    - Dst: predicate_refuted_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:598,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:605,1
    - Dst: extract_not_arg
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:620,1
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:622,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:630,1
    - Dst: predicate_refuted_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:632,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:639,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:653,1
    - Dst: predicate_refuted_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:655,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:662,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:672,1
    - Dst: predicate_refuted_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:678,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:685,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:692,1
    - Dst: extract_not_arg
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:702,1
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:704,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:712,1
    - Dst: predicate_refuted_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:714,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:721,1
    - Dst: extract_strong_not_arg
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:737,1
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:739,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:751,1
    - Dst: predicate_refuted_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:753,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:760,1
    - Dst: iterate_begin
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:769,1
    - Dst: predicate_refuted_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:771,1
    - Dst: iterate_end
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:778,1
    - Dst: extract_not_arg
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:788,1
    - Dst: predicate_implied_by_recurse
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:790,1
    - Dst: predicate_refuted_by_simple_clause
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:798,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:806,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 130
    argCount: 3
    argNames:
    - clause
    - predicate
    - weak
    argTypes:
    - Node*
    - Node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 808
      start: 530
    functionDepth: 2
    functionLinenumber: 530
    functionLinenumberEnd: 808
    functionName: predicate_refuted_by_recurse
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 2
    functionsReached:
    - Assert
    - predicate_refuted_by_simple_clause
    - extract_not_arg
    - predicate_classify
    - iterate_end
    - IsA
    - extract_strong_not_arg
    - elog
    - predicate_refuted_by_recurse
    - predicate_implied_by_recurse
    - iterate_begin
    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:678,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 676
    functionDepth: 3
    functionLinenumber: 676
    functionLinenumberEnd: 684
    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:829,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:830,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:830,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:836,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:845,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:852,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:861,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:864,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:872,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:878,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:879,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:879,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:879,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:888,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:890,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 2
    argNames:
    - clause
    - info
    argTypes:
    - Node*
    - PredIterInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 825
    functionDepth: 2
    functionLinenumber: 825
    functionLinenumberEnd: 901
    functionName: predicate_classify
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 2
    functionsReached:
    - Assert
    - ARR_DIMS
    - DatumGetArrayTypeP
    - ARR_NDIM
    - is_orclause
    - lsecond
    - IsA
    - list_length
    - ArrayGetNItems
    - is_andclause
    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:911,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - clause
    - info
    argTypes:
    - Node*
    - PredIterInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 907
    functionDepth: 1
    functionLinenumber: 907
    functionLinenumberEnd: 912
    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:922,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:923,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - info
    argTypes:
    - PredIterInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 914
    functionDepth: 2
    functionLinenumber: 914
    functionLinenumberEnd: 925
    functionName: list_next_fn
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 0
    functionsReached:
    - lnext
    - lfirst
    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: 931
      start: 927
    functionDepth: 0
    functionLinenumber: 927
    functionLinenumberEnd: 931
    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:941,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - clause
    - info
    argTypes:
    - Node*
    - PredIterInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 942
      start: 937
    functionDepth: 1
    functionLinenumber: 937
    functionLinenumberEnd: 942
    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
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:970,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:974,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:975,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:976,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:976,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:978,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:979,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:992,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:996,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1001,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 2
    argNames:
    - clause
    - info
    argTypes:
    - Node*
    - PredIterInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1005
      start: 958
    functionDepth: 1
    functionLinenumber: 958
    functionLinenumberEnd: 1005
    functionName: arrayconst_startup_fn
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 0
    functionsReached:
    - ARR_ELEMTYPE
    - deconstruct_array
    - get_typlenbyvalalign
    - DatumGetArrayTypeP
    - list_copy
    - lsecond
    - palloc
    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: 1018
      start: 1007
    functionDepth: 0
    functionLinenumber: 1007
    functionLinenumberEnd: 1018
    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:1025,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1026,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1027,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1028,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - info
    argTypes:
    - PredIterInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1029
      start: 1020
    functionDepth: 1
    functionLinenumber: 1020
    functionLinenumberEnd: 1029
    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
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1049,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1060,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1063,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1065,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 2
    argNames:
    - clause
    - info
    argTypes:
    - Node*
    - PredIterInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1066
      start: 1041
    functionDepth: 1
    functionLinenumber: 1041
    functionLinenumberEnd: 1066
    functionName: arrayexpr_startup_fn
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 0
    functionsReached:
    - palloc
    - list_head
    - lsecond
    - list_copy
    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:1075,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1075,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1076,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - info
    argTypes:
    - PredIterInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1078
      start: 1068
    functionDepth: 2
    functionLinenumber: 1068
    functionLinenumberEnd: 1078
    functionName: arrayexpr_next_fn
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 0
    functionsReached:
    - lfirst
    - lnext
    - lsecond
    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:1085,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1086,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - info
    argTypes:
    - PredIterInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1087
      start: 1080
    functionDepth: 1
    functionLinenumber: 1080
    functionLinenumberEnd: 1087
    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:1102,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1111,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1115,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1138,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1138,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1139,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1141,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1144,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1146,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1149,1
    - Dst: is_notclause
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1155,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1156,1
    - Dst: get_notclausearg
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1156,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1168,1
    - Dst: clause_is_strict_for
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1192,1
    - Dst: operator_predicate_proof
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1211,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 40
    argCount: 3
    argNames:
    - predicate
    - clause
    - weak
    argTypes:
    - Expr*
    - Node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1212
      start: 1097
    functionDepth: 2
    functionLinenumber: 1097
    functionLinenumberEnd: 1212
    functionName: predicate_implied_by_simple_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 1
    functionsReached:
    - nodeTag
    - Assert
    - equal
    - CHECK_FOR_INTERRUPTS
    - linitial
    - clause_is_strict_for
    - operator_predicate_proof
    - lsecond
    - IsA
    - list_length
    - get_notclausearg
    - DatumGetBool
    - is_notclause
    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:1229,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1243,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1257,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1276,1
    - Dst: clause_is_strict_for
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1291,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1309,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1323,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1341,1
    - Dst: clause_is_strict_for
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1356,1
    - Dst: operator_predicate_proof
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1377,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 65
    argCount: 3
    argNames:
    - predicate
    - clause
    - weak
    argTypes:
    - Expr*
    - Node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1378
      start: 1224
    functionDepth: 1
    functionLinenumber: 1224
    functionLinenumberEnd: 1378
    functionName: predicate_refuted_by_simple_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 1
    functionsReached:
    - nodeTag
    - equal
    - CHECK_FOR_INTERRUPTS
    - clause_is_strict_for
    - operator_predicate_proof
    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:1390,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1395,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1397,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1407
      start: 1385
    functionDepth: 1
    functionLinenumber: 1385
    functionLinenumberEnd: 1407
    functionName: extract_not_arg
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 1
    functionsReached:
    - IsA
    - linitial
    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:1418,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1423,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1425,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1433
      start: 1413
    functionDepth: 1
    functionLinenumber: 1413
    functionLinenumberEnd: 1433
    functionName: extract_strong_not_arg
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 1
    functionsReached:
    - IsA
    - linitial
    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:1474,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1476,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1480,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1488,1
    - Dst: op_strict
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1489,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1491,1
    - Dst: clause_is_strict_for
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1493,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1493,1
    - Dst: is_funcclause
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1498,1
    - Dst: func_strict
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1499,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1501,1
    - Dst: clause_is_strict_for
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1503,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1503,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1517,1
    - Dst: clause_is_strict_for
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1518,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1520,1
    - Dst: clause_is_strict_for
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1521,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1523,1
    - Dst: clause_is_strict_for
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1524,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1526,1
    - Dst: clause_is_strict_for
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1527,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1535,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1538,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1539,1
    - Dst: clause_is_strict_for
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1549,1
    - Dst: op_strict
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1550,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1557,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1570,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1571,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1571,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1571,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1573,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1580,1
    - Dst: clause_is_strict_for
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1593,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1600,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 52
    argCount: 3
    argNames:
    - clause
    - subexpr
    - allow_false
    argTypes:
    - Node*
    - Node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1604
      start: 1459
    functionDepth: 2
    functionLinenumber: 1459
    functionLinenumberEnd: 1604
    functionName: clause_is_strict_for
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 3
    functionsReached:
    - func_strict
    - op_strict
    - ARR_DIMS
    - equal
    - DatumGetArrayTypeP
    - linitial
    - clause_is_strict_for
    - is_funcclause
    - ARR_NDIM
    - IsA
    - lsecond
    - foreach
    - list_length
    - ArrayGetNItems
    - is_opclause
    - lfirst
    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:1810,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1813,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1815,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1818,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1837,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1838,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: equal
      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: operator_same_subexprs_proof
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1847,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1852,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1855,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1860,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1863,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1866,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1870,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1871,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1873,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1874,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1877,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1879,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1883,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1884,1
    - Dst: operator_same_subexprs_proof
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1886,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1891,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1894,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1898,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1899,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1903,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1906,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1909,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1913,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1914,1
    - Dst: op_strict
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1933,1
    - Dst: op_strict
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1950,1
    - Dst: op_strict
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1962,1
    - Dst: get_btree_test_op
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1972,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1974,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1983,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1986,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1989,1
    - Dst: fix_opfuncids
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:1998,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2001,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2004,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2005,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2009,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2012,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2017,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2020,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: 2021
      start: 1778
    functionDepth: 2
    functionLinenumber: 1778
    functionLinenumberEnd: 2021
    functionName: operator_predicate_proof
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 2
    functionsReached:
    - op_strict
    - MemoryContextSwitchTo
    - list_length
    - GetPerTupleExprContext
    - is_opclause
    - CreateExecutorState
    - equal
    - lsecond
    - make_opclause
    - FreeExecutorState
    - ExecEvalExprSwitchContext
    - linitial
    - IsA
    - elog
    - OidIsValid
    - operator_same_subexprs_proof
    - get_btree_test_op
    - ExecInitExpr
    - get_commutator
    - fix_opfuncids
    - DatumGetBool
    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:2049,1
    - Dst: operator_same_subexprs_lookup
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2062,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: 2063
      start: 2031
    functionDepth: 1
    functionLinenumber: 2031
    functionLinenumberEnd: 2063
    functionName: operator_same_subexprs_proof
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 1
    functionsReached:
    - operator_same_subexprs_lookup
    - get_negator
    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:2124,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2128,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2135,1
    - Dst: get_op_index_interpretation
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2168,1
    - Dst: get_op_index_interpretation
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2170,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2176,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2181,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2190,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2224,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2228,1
    - Dst: get_negator
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2229,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2233,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2239,1
    - Dst: op_volatile
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2251,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2262,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2263,1
    - Dst: op_volatile
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2279,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: 2297
      start: 2100
    functionDepth: 1
    functionLinenumber: 2100
    functionLinenumberEnd: 2297
    functionName: lookup_proof_cache
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 0
    functionsReached:
    - CacheRegisterSyscacheCallback
    - Assert
    - list_free_deep
    - hash_create
    - op_volatile
    - hash_search
    - get_op_index_interpretation
    - get_opfamily_member_for_cmptype
    - OidIsValid
    - get_negator
    - lfirst
    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:2176,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2181,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2190,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2224,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2228,1
    - Dst: get_negator
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2229,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2233,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2239,1
    - Dst: op_volatile
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2251,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2260
      start: 2174
    functionDepth: 1
    functionLinenumber: 2174
    functionLinenumberEnd: 2260
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 188
    functionsReached:
    - Assert
    - op_volatile
    - get_opfamily_member_for_cmptype
    - OidIsValid
    - get_negator
    - lfirst
    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:2181,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2190,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2224,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2228,1
    - Dst: get_negator
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2229,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2233,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2239,1
    - Dst: op_volatile
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2251,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2256
      start: 2179
    functionDepth: 1
    functionLinenumber: 2179
    functionLinenumberEnd: 2256
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/util/predtest.c
    functionUses: 188
    functionsReached:
    - Assert
    - op_volatile
    - get_opfamily_member_for_cmptype
    - OidIsValid
    - get_negator
    - lfirst
    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:2309,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: 2314
      start: 2304
    functionDepth: 2
    functionLinenumber: 2304
    functionLinenumberEnd: 2314
    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:2334,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: 2339
      start: 2329
    functionDepth: 2
    functionLinenumber: 2329
    functionLinenumberEnd: 2339
    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:2351,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2354,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/optimizer/util/predtest.c:2356,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - arg
    - cacheid
    - hashvalue
    argTypes:
    - Datum
    - int
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2361
      start: 2345
    functionDepth: 1
    functionLinenumber: 2345
    functionLinenumberEnd: 2361
    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, int cacheid, uint32
      hashvalue)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:82,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:89,1
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:91,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:94,1
    - Dst: expand_insert_targetlist
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:107,1
    - Dst: extract_update_targetlist_colnos
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:109,1
    - Dst: add_row_identity_columns
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:125,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:147,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:149,1
    - Dst: expand_insert_targetlist
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:153,1
    - Dst: extract_update_targetlist_colnos
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:158,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:166,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:167,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:172,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:175,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:178,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:181,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:182,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:184,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:186,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:194,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:198,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:201,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:204,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:207,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:208,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:210,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:229,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:231,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:243,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:249,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:250,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:251,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:252,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:254,1
    - Dst: makeWholeRowVar
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:259,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:259,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:263,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:264,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:265,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:266,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:268,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:274,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:280,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:281,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:282,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:283,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:285,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:296,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:301,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:307,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:310,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:314,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:317,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:318,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:322,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:324,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:330,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 79
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 63
    functionDepth: 3
    functionLinenumber: 63
    functionLinenumberEnd: 331
    functionName: preprocess_targetlist
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/preptlist.c
    functionUses: 1
    functionsReached:
    - makeWholeRowVar
    - snprintf
    - pstrdup
    - list_length
    - expand_insert_targetlist
    - add_row_identity_columns
    - table_open
    - foreach
    - makeVar
    - extract_update_targetlist_colnos
    - IsA
    - elog
    - lappend
    - table_close
    - rt_fetch
    - tlist_member
    - list_free
    - lfirst
    - makeTargetEntry
    - Assert
    - list_concat_copy
    - pull_var_clause
    linkageType: ''
    returnType: void
    signature: void preprocess_targetlist(PlannerInfo *root)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:172,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:175,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:178,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:181,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:182,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:184,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 170
    functionDepth: 2
    functionLinenumber: 170
    functionLinenumberEnd: 185
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/preptlist.c
    functionUses: 189
    functionsReached:
    - lfirst
    - makeTargetEntry
    - IsA
    - list_length
    - lappend
    - tlist_member
    linkageType: ''
    returnType: void
    signature: void foreach(l2, vars)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:198,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:201,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:204,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:207,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:208,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:210,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 196
    functionDepth: 2
    functionLinenumber: 196
    functionLinenumberEnd: 211
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/preptlist.c
    functionUses: 189
    functionsReached:
    - lfirst
    - makeTargetEntry
    - IsA
    - list_length
    - lappend
    - tlist_member
    linkageType: ''
    returnType: void
    signature: void foreach(l, vars)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:307,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:310,1
    - Dst: tlist_member
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:314,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:317,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:318,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:322,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 305
    functionDepth: 2
    functionLinenumber: 305
    functionLinenumberEnd: 323
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/preptlist.c
    functionUses: 189
    functionsReached:
    - lfirst
    - makeTargetEntry
    - IsA
    - list_length
    - lappend
    - tlist_member
    linkageType: ''
    returnType: void
    signature: void foreach(l, vars)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:356,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:359,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - tlist
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 347
    functionDepth: 1
    functionLinenumber: 347
    functionLinenumberEnd: 363
    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:356,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:359,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 354
    functionDepth: 1
    functionLinenumber: 354
    functionLinenumberEnd: 361
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/preptlist.c
    functionUses: 189
    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:389,1
    - Dst: RelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:398,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:402,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:407,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:412,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:447,1
    - Dst: getBaseTypeAndTypmod
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:461,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:462,1
    - Dst: coerce_null_to_domain
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:473,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:479,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:480,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:483,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:485,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:485,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:489,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:501,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:504,1
    - Dst: flatCopyTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:508,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:511,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/prep/preptlist.c:513,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 3
    argNames:
    - root
    - tlist
    - rel
    argTypes:
    - PlannerInfo*
    - List*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 381
    functionDepth: 2
    functionLinenumber: 381
    functionLinenumberEnd: 517
    functionName: expand_insert_targetlist
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/preptlist.c
    functionUses: 1
    functionsReached:
    - makeTargetEntry
    - NameStr
    - RelationGetNumberOfAttributes
    - flatCopyTargetEntry
    - TupleDescAttr
    - list_head
    - lnext
    - IsA
    - getBaseTypeAndTypmod
    - coerce_null_to_domain
    - pstrdup
    - elog
    - eval_const_expressions
    - lappend
    - makeConst
    - lfirst
    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:532,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - rowmarks
    - rtindex
    argTypes:
    - List*
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 525
    functionDepth: 1
    functionLinenumber: 525
    functionLinenumberEnd: 538
    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:532,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 530
    functionDepth: 1
    functionLinenumber: 530
    functionLinenumberEnd: 536
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/preptlist.c
    functionUses: 189
    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:96,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:103,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:106,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:107,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:109,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:110,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:119,1
    - Dst: setup_simple_rel_arrays
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:127,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:134,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:136,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:136,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:139,1
    - Dst: generate_recursion_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:146,1
    - Dst: recurse_set_operations
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:159,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 171
    functionName: plan_set_operations
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 1
    functionsReached:
    - Assert
    - generate_recursion_path
    - IsA
    - castNode
    - recurse_set_operations
    - setup_simple_rel_arrays
    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:221,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:223,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:232,1
    - Dst: build_simple_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:235,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:238,1
    - Dst: subquery_planner
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:245,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:254,1
    - Dst: generate_setop_tlist
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:257,1
    - Dst: create_pathtarget
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:263,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:269,1
    - Dst: generate_union_paths
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:275,1
    - Dst: generate_nonunion_paths
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:279,1
    - Dst: tlist_same_datatypes
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:296,1
    - Dst: tlist_same_collations
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:297,1
    - Dst: generate_setop_tlist
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:303,1
    - Dst: create_pathtarget
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:310,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:313,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:315,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:318,1
    - Dst: apply_projection_to_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:319,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:323,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:327,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:329,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:332,1
    - Dst: create_projection_path
      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: postprocess_setop_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:340,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:344,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:345,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 42
    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: 351
      start: 208
    functionDepth: 4
    functionLinenumber: 208
    functionLinenumberEnd: 351
    functionName: recurse_set_operations
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 1
    functionsReached:
    - check_stack_depth
    - subquery_planner
    - Assert
    - nodeTag
    - tlist_same_datatypes
    - postprocess_setop_rel
    - IsA
    - generate_union_paths
    - foreach
    - generate_setop_tlist
    - elog
    - generate_nonunion_paths
    - build_simple_rel
    - tlist_same_collations
    - create_projection_path
    - apply_projection_to_path
    - lfirst
    - create_pathtarget
    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:377,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:379,1
    - Dst: recurse_set_operations
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:385,1
    - Dst: build_setop_child_paths
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:392,1
    - Dst: recurse_set_operations
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:397,1
    - Dst: build_setop_child_paths
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:404,1
    - Dst: generate_append_tlist
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:412,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:413,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:419,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:420,1
    - Dst: create_pathtarget
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:421,1
    - Dst: generate_setop_grouplist
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:434,1
    - Dst: grouping_is_hashable
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:437,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:438,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:439,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:440,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:441,1
    - Dst: create_recursiveunion_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:453,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:462,1
    - Dst: postprocess_setop_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:463,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: 465
      start: 356
    functionDepth: 5
    functionLinenumber: 356
    functionLinenumberEnd: 465
    functionName: generate_recursion_path
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 1
    functionsReached:
    - fetch_upper_rel
    - errcode
    - Assert
    - errmsg
    - list_make2
    - add_path
    - postprocess_setop_rel
    - generate_append_tlist
    - generate_setop_grouplist
    - ereport
    - bms_union
    - elog
    - build_setop_child_paths
    - create_recursiveunion_path
    - errdetail
    - grouping_is_hashable
    - recurse_set_operations
    - create_pathtarget
    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: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:490,1
    - Dst: add_setop_child_rel_equivalences
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:494,1
    - Dst: set_subquery_size_estimates
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:504,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:510,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:514,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:516,1
    - Dst: convert_subquery_pathkeys
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:530,1
    - Dst: make_tlist_from_pathtarget
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:531,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:534,1
    - Dst: create_subqueryscan_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:534,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:551,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:576,1
    - Dst: create_incremental_sort_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:582,1
    - Dst: convert_subquery_pathkeys
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:598,1
    - Dst: make_tlist_from_pathtarget
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:599,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:602,1
    - Dst: create_subqueryscan_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:602,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:612,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:620,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:626,1
    - Dst: create_subqueryscan_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:628,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:631,1
    - Dst: postprocess_setop_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:634,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:664,1
    - Dst: get_tlist_exprs
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:665,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 39
    argCount: 6
    argNames:
    - root
    - rel
    - trivial_tlist
    - child_tlist
    - interesting_pathkeys
    - pNumGroups
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - bool
    - List*
    - List*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 480
    functionDepth: 4
    functionLinenumber: 480
    functionLinenumberEnd: 670
    functionName: build_setop_child_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 1
    functionsReached:
    - create_incremental_sort_path
    - add_path
    - pathkeys_count_contained_in
    - add_partial_path
    - add_setop_child_rel_equivalences
    - set_subquery_size_estimates
    - make_tlist_from_pathtarget
    - create_sort_path
    - convert_subquery_pathkeys
    - bms_is_empty
    - foreach
    - fetch_upper_rel
    - create_subqueryscan_path
    - linitial
    - lfirst
    - Assert
    - get_tlist_exprs
    - postprocess_setop_rel
    - estimate_num_groups
    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: 19
    BranchProfiles: []
    Callsites:
    - Dst: plan_union_children
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:706,1
    - Dst: generate_append_tlist
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:719,1
    - Dst: generate_setop_grouplist
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:727,1
    - Dst: grouping_is_sortable
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:729,1
    - Dst: make_pathkeys_for_sortclauses
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:733,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:746,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:747,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:748,1
    - Dst: build_setop_child_paths
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:752,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:759,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:762,1
    - Dst: get_cheapest_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:767,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:774,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:797,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:798,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:801,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:805,1
    - Dst: create_pathtarget
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:806,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:814,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:836,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:838,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:841,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:852,1
    - Dst: pg_leftmost_one_pos32
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:853,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:853,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:854,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:857,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:860,1
    - Dst: create_gather_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:864,1
    - Dst: grouping_is_sortable
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:871,1
    - Dst: grouping_is_hashable
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:872,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:892,1
    - Dst: create_pathtarget
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:895,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:902,1
    - Dst: create_agg_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:908,1
    - Dst: create_pathtarget
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:911,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:918,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:928,1
    - Dst: make_pathkeys_for_sortclauses
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:929,1
    - Dst: create_upper_unique_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:932,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:935,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:938,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:945,1
    - Dst: make_pathkeys_for_sortclauses
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:946,1
    - Dst: create_upper_unique_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:949,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:952,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:954,1
    - Dst: create_merge_append_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:966,1
    - Dst: create_upper_unique_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:973,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:976,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:979,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:985,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:988,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 85
    argCount: 4
    argNames:
    - op
    - root
    - refnames_tlist
    - pTargetList
    argTypes:
    - SetOperationStmt*
    - PlannerInfo*
    - List*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 675
    functionDepth: 5
    functionLinenumber: 675
    functionLinenumberEnd: 992
    functionName: generate_union_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 1
    functionsReached:
    - create_upper_unique_path
    - plan_union_children
    - get_cheapest_path_for_pathkeys
    - create_append_path
    - create_agg_path
    - add_path
    - generate_append_tlist
    - list_length
    - bms_union
    - create_sort_path
    - lfirst_int
    - Min
    - generate_setop_grouplist
    - Max
    - create_pathtarget
    - fetch_upper_rel
    - lfirst_node
    - linitial
    - create_gather_path
    - make_pathkeys_for_sortclauses
    - build_setop_child_paths
    - lappend
    - lfirst
    - Assert
    - create_merge_append_path
    - grouping_is_sortable
    - pg_leftmost_one_pos32
    - grouping_is_hashable
    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: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:746,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:747,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:748,1
    - Dst: build_setop_child_paths
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:752,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 744
    functionDepth: 5
    functionLinenumber: 744
    functionLinenumberEnd: 754
    functionName: forthree
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 3
    functionsReached:
    - lfirst_node
    - build_setop_child_paths
    - lfirst
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void forthree(lc, rellist, lc2, trivial_tlist_list, lc3, tlist_list)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:759,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:762,1
    - Dst: get_cheapest_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:767,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:774,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:797,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:798,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:801,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 757
    functionDepth: 1
    functionLinenumber: 757
    functionLinenumberEnd: 802
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 191
    functionsReached:
    - linitial
    - get_cheapest_path_for_pathkeys
    - bms_union
    - lappend
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, rellist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:836,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:838,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 834
    functionDepth: 1
    functionLinenumber: 834
    functionLinenumberEnd: 840
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 191
    functionsReached:
    - Max
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, partial_pathlist)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: recurse_set_operations
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1031,1
    - Dst: recurse_set_operations
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1038,1
    - Dst: generate_setop_tlist
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1052,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1057,1
    - Dst: generate_setop_grouplist
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1062,1
    - Dst: grouping_is_sortable
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1065,1
    - Dst: grouping_is_hashable
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1066,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1068,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1069,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1071,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1073,1
    - Dst: make_pathkeys_for_sortclauses
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1078,1
    - Dst: build_setop_child_paths
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1088,1
    - Dst: build_setop_child_paths
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1093,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1131,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1132,1
    - Dst: create_pathtarget
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1133,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1151,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1165,1
    - Dst: create_setop_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1175,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1184,1
    - Dst: make_pathkeys_for_sortclauses
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1198,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1201,1
    - Dst: get_cheapest_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1205,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1212,1
    - Dst: make_pathkeys_for_sortclauses
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1220,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1223,1
    - Dst: get_cheapest_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1227,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1234,1
    - Dst: create_setop_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1241,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1250,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 81
    argCount: 4
    argNames:
    - op
    - root
    - refnames_tlist
    - pTargetList
    argTypes:
    - SetOperationStmt*
    - PlannerInfo*
    - List*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1254
      start: 997
    functionDepth: 5
    functionLinenumber: 997
    functionLinenumberEnd: 1254
    functionName: generate_nonunion_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 1
    functionsReached:
    - get_cheapest_path_for_pathkeys
    - create_setop_path
    - add_path
    - bms_union
    - create_sort_path
    - errdetail
    - Min
    - generate_setop_grouplist
    - grouping_is_hashable
    - create_pathtarget
    - errmsg
    - fetch_upper_rel
    - generate_setop_tlist
    - make_pathkeys_for_sortclauses
    - build_setop_child_paths
    - elog
    - recurse_set_operations
    - Assert
    - ereport
    - pathkeys_contained_in
    - grouping_is_sortable
    - errcode
    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:1275,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1285,1
    - Dst: list_delete_first
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1287,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1289,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1295,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1296,1
    - Dst: lcons
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1299,1
    - Dst: lcons
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1300,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1313,1
    - Dst: recurse_set_operations
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1313,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1320,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1321,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: 1325
      start: 1268
    functionDepth: 5
    functionLinenumber: 1268
    functionLinenumberEnd: 1325
    functionName: plan_union_children
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 1
    functionsReached:
    - equal
    - list_delete_first
    - linitial
    - lappend_int
    - lcons
    - IsA
    - list_make1
    - lappend
    - recurse_set_operations
    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:1342,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1343
      start: 1330
    functionDepth: 3
    functionLinenumber: 1330
    functionLinenumberEnd: 1343
    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:1378,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1379,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1380,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1381,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1383,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1384,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1385,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1386,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1404,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1407,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1409,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1410,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1411,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1414,1
    - Dst: coerce_to_common_type
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1424,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1442,1
    - Dst: applyRelabelType
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1444,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1445,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1445,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1450,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1452,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1462,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: 1466
      start: 1356
    functionDepth: 1
    functionLinenumber: 1356
    functionLinenumberEnd: 1466
    functionName: generate_setop_tlist
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 2
    functionsReached:
    - exprType
    - makeTargetEntry
    - Assert
    - makeVar
    - exprCollation
    - coerce_to_common_type
    - applyRelabelType
    - exprTypmod
    - IsA
    - pstrdup
    - lappend
    - lfirst_oid
    - lfirst
    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:1378,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1379,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1380,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1381,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1383,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1384,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1385,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1386,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1404,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1407,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1409,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1410,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1411,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1414,1
    - Dst: coerce_to_common_type
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1424,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1442,1
    - Dst: applyRelabelType
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1444,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1445,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1445,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1450,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1452,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1462,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1463
      start: 1375
    functionDepth: 1
    functionLinenumber: 1375
    functionLinenumberEnd: 1463
    functionName: forfour
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 0
    functionsReached:
    - exprType
    - makeTargetEntry
    - Assert
    - makeVar
    - exprCollation
    - coerce_to_common_type
    - applyRelabelType
    - exprTypmod
    - IsA
    - pstrdup
    - lappend
    - lfirst_oid
    - lfirst
    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
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1506,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1506,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1510,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1513,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1517,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1519,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1520,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1521,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1521,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1524,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1526,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1536,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1539,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1549,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1551,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1552,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1554,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1555,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1556,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1562,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1564,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1574,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1577,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: 1580
      start: 1484
    functionDepth: 2
    functionLinenumber: 1484
    functionLinenumberEnd: 1580
    functionName: generate_append_tlist
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 2
    functionsReached:
    - exprType
    - makeTargetEntry
    - Assert
    - makeVar
    - pfree
    - exprTypmod
    - list_head
    - lnext
    - pstrdup
    - list_length
    - lappend
    - palloc
    - lfirst_oid
    - lfirst
    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:1510,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1513,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1517,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1519,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1520,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1521,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1521,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1524,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1526,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1536,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1539,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1540
      start: 1508
    functionDepth: 2
    functionLinenumber: 1508
    functionLinenumberEnd: 1540
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 191
    functionsReached:
    - exprType
    - Assert
    - exprTypmod
    - list_head
    - lnext
    - lfirst_oid
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(tlistl, input_tlists)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1517,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1519,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1520,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1521,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1521,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1524,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1526,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1536,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1538
      start: 1515
    functionDepth: 2
    functionLinenumber: 1515
    functionLinenumberEnd: 1538
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 191
    functionsReached:
    - exprType
    - Assert
    - exprTypmod
    - list_head
    - lnext
    - lfirst_oid
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(subtlistl, subtlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1549,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1551,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1552,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1554,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1555,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1556,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1562,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1564,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1575
      start: 1546
    functionDepth: 1
    functionLinenumber: 1546
    functionLinenumberEnd: 1575
    functionName: forthree
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 3
    functionsReached:
    - makeTargetEntry
    - Assert
    - makeVar
    - pstrdup
    - lappend
    - lfirst_oid
    - lfirst
    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:1596,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1600,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1603,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1606,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1609,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1612,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1613,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1614,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1615,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1619,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - op
    - targetlist
    argTypes:
    - SetOperationStmt*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1621
      start: 1593
    functionDepth: 2
    functionLinenumber: 1593
    functionLinenumberEnd: 1621
    functionName: generate_setop_grouplist
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 3
    functionsReached:
    - Assert
    - lnext
    - list_head
    - copyObject
    - 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:1603,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1606,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1609,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1612,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1613,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1614,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepunion.c:1615,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1618
      start: 1601
    functionDepth: 2
    functionLinenumber: 1601
    functionLinenumberEnd: 1618
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepunion.c
    functionUses: 191
    functionsReached:
    - Assert
    - lnext
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lt, targetlist)
  - 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:
    - nodeTag
    - make_notclause
    - linitial
    - negate_clause
    - foreach
    - make_andclause
    - elog
    - lappend
    - get_negator
    - DatumGetBool
    - make_orclause
    - makeNode
    - makeBoolConst
    - lfirst
    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
    - find_duplicate_ors
    - IsA
    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:
    - list_concat
    - lappend
    - is_andclause
    - pull_ands
    - lfirst
    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: 192
    functionsReached:
    - list_concat
    - lappend
    - is_andclause
    - pull_ands
    - lfirst
    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:
    - list_concat
    - is_orclause
    - lappend
    - lfirst
    - pull_ors
    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: 192
    functionsReached:
    - list_concat
    - is_orclause
    - lappend
    - lfirst
    - pull_ors
    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:
    - is_andclause
    - process_duplicate_ors
    - pull_ands
    - linitial
    - is_orclause
    - IsA
    - foreach
    - list_length
    - make_andclause
    - lappend
    - makeBoolConst
    - DatumGetBool
    - find_duplicate_ors
    - lfirst
    - pull_ors
    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:
    - lfirst
    - list_union
    - pull_ands
    - equal
    - linitial
    - list_difference
    - list_make1
    - list_length
    - make_andclause
    - lappend
    - list_member
    - make_orclause
    - makeBoolConst
    - is_andclause
    - pull_ors
    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: 193
    functionsReached:
    - list_length
    - lfirst
    - list_make1
    - is_andclause
    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: 193
    functionsReached:
    - equal
    - lappend
    - is_andclause
    - list_member
    - lfirst
    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: 193
    functionsReached:
    - list_member
    - equal
    - lfirst
    - is_andclause
    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: 193
    functionsReached:
    - linitial
    - list_difference
    - list_length
    - make_andclause
    - lappend
    - is_andclause
    - list_member
    - lfirst
    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:
    - find_compatible_agg
    - HeapTupleIsValid
    - list_length
    - find_compatible_trans
    - SysCacheGetAttr
    - list_nth_node
    - makeNode
    - exprType
    - get_typlenbyval
    - ReleaseSysCache
    - GETSTRUCT
    - GetAggInitVal
    - linitial
    - elog
    - lappend
    - OidIsValid
    - agg_args_support_sendreceive
    - ObjectIdGetDatum
    - Assert
    - exprTypmod
    - get_aggregate_argtypes
    - list_make1
    - SearchSysCache1
    - resolve_aggregate_transtype
    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:
    - preprocess_aggref
    - Assert
    - 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:
    - equal
    - lfirst_node
    - lappend_int
    - foreach
    - contain_volatile_functions
    - list_free
    - linitial_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:
    - datumIsEqual
    - lfirst_int
    - list_nth_node
    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: 194
    functionsReached:
    - datumIsEqual
    - lfirst_int
    - list_nth_node
    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
    - OidInputFunctionCall
    - TextDatumGetCString
    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_SERIALIZE
    - linitial_node
    - lfirst_node
    - DO_AGGSPLIT_COMBINE
    - cost_qual_eval_node
    - foreach
    - DO_AGGSPLIT_DESERIALIZE
    - OidIsValid
    - DO_AGGSPLIT_SKIPFINAL
    - add_function_cost
    - get_typavgwidth
    - MAXALIGN
    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:212,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:229,1
    - Dst: makeAlias
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:239,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:248,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:249,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:264,1
    - Dst: makeFromExpr
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:266,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:266,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:269,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:269,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:270,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:276,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:278,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:282,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:283,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:288,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:300,1
    - Dst: add_nulling_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:312,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:313,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:314,1
    - Dst: add_nulling_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:332,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:333,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:334,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:336,1
    - Dst: add_nulling_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:339,1
    - Dst: bms_make_singleton
      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: add_nulling_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:344,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:345,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:346,1
    - Dst: add_nulling_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:350,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:351,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:352,1
    - Dst: makeWholeRowVar
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:376,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:376,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:378,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:381,1
    - Dst: make_and_qual
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:389,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 78
    argCount: 1
    argNames:
    - parse
    argTypes:
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 393
    functionName: transform_MERGE_to_join
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - nodeTag
    - Assert
    - makeWholeRowVar
    - foreach_node
    - makeFromExpr
    - linitial
    - bms_make_singleton
    - IsA
    - list_make1
    - list_length
    - makeAlias
    - elog
    - lappend
    - makeNode
    - rt_fetch
    - add_nulling_relids
    - make_and_qual
    linkageType: ''
    returnType: void
    signature: void transform_MERGE_to_join(Query *parse)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:425,1
    - Dst: makeAlias
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:427,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:430,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:431,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:434,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:436,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - parse
    argTypes:
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 409
    functionDepth: 1
    functionLinenumber: 409
    functionLinenumberEnd: 437
    functionName: replace_empty_jointree
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - list_make1
    - list_length
    - makeAlias
    - lappend
    - makeNode
    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:474,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:482,1
    - Dst: makeFromExpr
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:485,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:485,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 467
    functionDepth: 1
    functionLinenumber: 467
    functionLinenumberEnd: 486
    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:499,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:505,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:509,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:512,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:522,1
    - Dst: pull_up_sublinks_jointree_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:527,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:528,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:530,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:531,1
    - Dst: makeFromExpr
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:534,1
    - Dst: pull_up_sublinks_qual_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:538,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:554,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:565,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:566,1
    - Dst: pull_up_sublinks_jointree_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:570,1
    - Dst: pull_up_sublinks_jointree_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:572,1
    - Dst: pull_up_sublinks_qual_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:590,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:592,1
    - Dst: pull_up_sublinks_qual_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:597,1
    - Dst: pull_up_sublinks_qual_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:606,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:612,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:625,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:627,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:631,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:632,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 49
    argCount: 3
    argNames:
    - root
    - jtnode
    - relids
    argTypes:
    - PlannerInfo*
    - Node*
    - Relids*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 494
    functionDepth: 1
    functionLinenumber: 494
    functionLinenumberEnd: 634
    functionName: pull_up_sublinks_jointree_recurse
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - check_stack_depth
    - nodeTag
    - pull_up_sublinks_qual_recurse
    - palloc
    - makeFromExpr
    - bms_make_singleton
    - IsA
    - foreach
    - bms_union
    - pull_up_sublinks_jointree_recurse
    - lappend
    - elog
    - memcpy
    - bms_join
    - lfirst
    - bms_add_member
    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: 19
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:658,1
    - Dst: convert_VALUES_to_ANY
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:669,1
    - Dst: convert_ANY_sublink_to_join
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:679,1
    - Dst: pull_up_sublinks_jointree_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:686,1
    - Dst: pull_up_sublinks_qual_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:695,1
    - Dst: convert_ANY_sublink_to_join
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:705,1
    - Dst: pull_up_sublinks_jointree_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:712,1
    - Dst: pull_up_sublinks_qual_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:721,1
    - Dst: convert_EXISTS_sublink_to_join
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:733,1
    - Dst: pull_up_sublinks_jointree_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:740,1
    - Dst: pull_up_sublinks_qual_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:749,1
    - Dst: convert_EXISTS_sublink_to_join
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:759,1
    - Dst: pull_up_sublinks_jointree_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:766,1
    - Dst: pull_up_sublinks_qual_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:775,1
    - Dst: is_notclause
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:788,1
    - Dst: get_notclausearg
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:791,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:795,1
    - Dst: convert_EXISTS_sublink_to_join
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:799,1
    - Dst: pull_up_sublinks_jointree_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:806,1
    - Dst: pull_up_sublinks_qual_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:816,1
    - Dst: convert_EXISTS_sublink_to_join
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:825,1
    - Dst: pull_up_sublinks_jointree_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:832,1
    - Dst: pull_up_sublinks_qual_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:842,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:855,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:861,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:863,1
    - Dst: pull_up_sublinks_qual_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:866,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:873,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:878,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:879,1
    - Dst: make_andclause
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:881,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 74
    argCount: 6
    argNames:
    - root
    - node
    - jtlink1
    - available_rels1
    - jtlink2
    - available_rels2
    argTypes:
    - PlannerInfo*
    - Node*
    - Node**
    - Relids
    - Node**
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 651
    functionDepth: 3
    functionLinenumber: 651
    functionLinenumberEnd: 885
    functionName: pull_up_sublinks_qual_recurse
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - lfirst
    - pull_up_sublinks_qual_recurse
    - linitial
    - IsA
    - foreach
    - list_length
    - make_andclause
    - pull_up_sublinks_jointree_recurse
    - get_notclausearg
    - convert_VALUES_to_ANY
    - convert_EXISTS_sublink_to_join
    - lappend
    - is_andclause
    - convert_ANY_sublink_to_join
    - is_notclause
    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:918,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:920,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:928,1
    - Dst: inline_set_returning_function
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:931,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 913
    functionDepth: 6
    functionLinenumber: 913
    functionLinenumberEnd: 950
    functionName: preprocess_function_rtes
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - eval_const_expressions
    - lfirst
    - inline_set_returning_function
    - foreach
    linkageType: ''
    returnType: void
    signature: void preprocess_function_rtes(PlannerInfo *root)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:976,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:978,1
    - Dst: table_open
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:990,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:992,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1000,1
    - Dst: build_generation_expression
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1007,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1008,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1010,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1011,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1017,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1024,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1025,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1029,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1029,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1030,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1051,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1051,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1065,1
    - Dst: table_close
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1068,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 40
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 968
    functionDepth: 3
    functionLinenumber: 968
    functionLinenumberEnd: 1072
    functionName: expand_virtual_generated_columns
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - makeTargetEntry
    - makeVar
    - Assert
    - table_open
    - build_generation_expression
    - RelationGetDescr
    - TupleDescAttr
    - ChangeVarNodes
    - palloc0
    - foreach
    - list_length
    - lappend
    - table_close
    - lfirst
    - pullup_replace_vars
    linkageType: ''
    returnType: Query
    signature: 'Query *

      expand_virtual_generated_columns(PlannerInfo *root)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1086,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1086,1
    - Dst: pull_up_subqueries_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1089,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1092,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1092,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1093
      start: 1082
    functionDepth: 1
    functionLinenumber: 1082
    functionLinenumberEnd: 1093
    functionName: pull_up_subqueries
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - Assert
    - pull_up_subqueries_recurse
    - IsA
    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:1132,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1134,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1136,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1137,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1140,1
    - Dst: is_simple_subquery
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1150,1
    - Dst: is_safe_append_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1152,1
    - Dst: pull_up_simple_subquery
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1153,1
    - Dst: is_simple_union_all
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1167,1
    - Dst: pull_up_simple_union_all
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1168,1
    - Dst: is_simple_values
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1179,1
    - Dst: pull_up_simple_values
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1180,1
    - Dst: pull_up_constant_function
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1186,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1191,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1196,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1198,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1200,1
    - Dst: pull_up_subqueries_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1200,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1200,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1205,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1209,1
    - Dst: pull_up_subqueries_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1214,1
    - Dst: pull_up_subqueries_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1217,1
    - Dst: pull_up_subqueries_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1224,1
    - Dst: pull_up_subqueries_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1227,1
    - Dst: pull_up_subqueries_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1232,1
    - Dst: pull_up_subqueries_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1235,1
    - Dst: pull_up_subqueries_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1240,1
    - Dst: pull_up_subqueries_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1243,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1248,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1254,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1255,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: 1257
      start: 1126
    functionDepth: 1
    functionLinenumber: 1126
    functionLinenumberEnd: 1257
    functionName: pull_up_subqueries_recurse
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - check_stack_depth
    - lfirst
    - Assert
    - nodeTag
    - is_simple_union_all
    - CHECK_FOR_INTERRUPTS
    - is_simple_values
    - pull_up_simple_union_all
    - pull_up_subqueries_recurse
    - IsA
    - foreach
    - pull_up_simple_subquery
    - elog
    - pull_up_simple_values
    - is_simple_subquery
    - rt_fetch
    - pull_up_constant_function
    - is_safe_append_member
    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: 20
    BranchProfiles: []
    Callsites:
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1289,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1298,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1318,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1319,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1334,1
    - Dst: replace_empty_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1340,1
    - Dst: pull_up_sublinks
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1347,1
    - Dst: preprocess_function_rtes
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1353,1
    - Dst: expand_virtual_generated_columns
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1360,1
    - Dst: pull_up_subqueries
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1372,1
    - Dst: is_simple_subquery
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1382,1
    - Dst: is_safe_append_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1383,1
    - Dst: flatten_join_alias_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1410,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1418,1
    - Dst: OffsetVarNodes
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1419,1
    - Dst: OffsetVarNodes
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1420,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1426,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1427,1
    - Dst: get_relids_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1442,1
    - Dst: get_nullingrels
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1444,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1456,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1456,1
    - Dst: perform_pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1476,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1488,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1490,1
    - Dst: CombineRangeTables
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1520,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1527,1
    - Dst: get_relids_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1544,1
    - Dst: substitute_phv_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1547,1
    - Dst: fix_append_rel_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1548,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1554,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1561,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1562,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1563,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1564,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1598,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1598,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1599,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1601,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1602,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 113
    argCount: 5
    argNames:
    - root
    - jtnode
    - rte
    - lowest_outer_join
    - containing_appendrel
    argTypes:
    - PlannerInfo*
    - Node*
    - RangeTblEntry*
    - JoinExpr*
    - AppendRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1605
      start: 1271
    functionDepth: 7
    functionLinenumber: 1271
    functionLinenumberEnd: 1605
    functionName: pull_up_simple_subquery
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - get_nullingrels
    - list_length
    - expand_virtual_generated_columns
    - OffsetVarNodes
    - get_relids_in_jointree
    - makeNode
    - is_safe_append_member
    - list_concat
    - substitute_phv_relids
    - perform_pullup_replace_vars
    - fix_append_rel_relids
    - foreach
    - CombineRangeTables
    - linitial
    - pull_up_subqueries
    - IsA
    - is_simple_subquery
    - lfirst
    - pull_up_sublinks
    - Assert
    - preprocess_function_rtes
    - memset
    - IncrementVarSublevelsUp
    - replace_empty_jointree
    - flatten_join_alias_vars
    - palloc0
    - copyObject
    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:1621,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1629,1
    - Dst: IncrementVarSublevelsUp_rtable
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1636,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1650,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1652,1
    - Dst: CombineRangeTables
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1660,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1668,1
    - Dst: pull_up_union_leaf_queries
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1669,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - root
    - jtnode
    - rte
    argTypes:
    - PlannerInfo*
    - Node*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1678
      start: 1616
    functionDepth: 1
    functionLinenumber: 1616
    functionLinenumberEnd: 1678
    functionName: pull_up_simple_union_all
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - Assert
    - pull_up_union_leaf_queries
    - list_length
    - copyObject
    - IncrementVarSublevelsUp_rtable
    - lfirst
    - CombineRangeTables
    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:1650,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1652,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1654
      start: 1648
    functionDepth: 1
    functionLinenumber: 1648
    functionLinenumberEnd: 1654
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 201
    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:1702,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1716,1
    - Dst: make_setop_translation_list
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1721,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1723,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1738,1
    - Dst: pull_up_subqueries_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1740,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1743,1
    - Dst: pull_up_union_leaf_queries
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1748,1
    - Dst: pull_up_union_leaf_queries
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1750,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1755,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1756,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: 1758
      start: 1698
    functionDepth: 2
    functionLinenumber: 1698
    functionLinenumberEnd: 1758
    functionName: pull_up_union_leaf_queries
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - nodeTag
    - pull_up_union_leaf_queries
    - pull_up_subqueries_recurse
    - make_setop_translation_list
    - IsA
    - elog
    - lappend
    - makeNode
    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:1778,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1780,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1782,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1784,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1789,1
    - Dst: makeVarFromTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1789,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - query
    - newvarno
    - appinfo
    argTypes:
    - Query*
    - int
    - AppendRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1794
      start: 1768
    functionDepth: 1
    functionLinenumber: 1768
    functionLinenumberEnd: 1794
    functionName: make_setop_translation_list
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - palloc0
    - foreach
    - list_length
    - lappend
    - makeVarFromTargetEntry
    - lfirst
    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:1813,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1815,1
    - Dst: get_relids_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1877,1
    - Dst: jointree_contains_lateral_outer_refs
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1886,1
    - Dst: pull_varnos_of_level
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1909,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1913,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1926,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: 1930
      start: 1806
    functionDepth: 2
    functionLinenumber: 1806
    functionLinenumberEnd: 1930
    functionName: is_simple_subquery
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - bms_is_subset
    - IsA
    - elog
    - contain_volatile_functions
    - get_relids_in_jointree
    - pull_varnos_of_level
    - jointree_contains_lateral_outer_refs
    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:1957,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1958,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1958,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1964,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1964,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1970,1
    - Dst: contain_vars_of_level
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1970,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1980,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1981,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1981,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1997,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1997,1
    - Dst: perform_pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2006,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2012,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2013,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2014,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2020,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2020,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2023,1
    - Dst: makeAlias
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2025,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2028,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2031,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 31
    argCount: 3
    argNames:
    - root
    - jtnode
    - rte
    argTypes:
    - PlannerInfo*
    - Node*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2034
      start: 1946
    functionDepth: 2
    functionLinenumber: 1946
    functionLinenumberEnd: 2034
    functionName: pull_up_simple_values
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - makeTargetEntry
    - Assert
    - linitial
    - perform_pullup_replace_vars
    - palloc0
    - list_length
    - makeAlias
    - list_make1
    - lappend
    - copyObject
    - contain_vars_of_level
    - makeNode
    - lfirst
    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:1980,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1981,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:1981,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1986
      start: 1978
    functionDepth: 1
    functionLinenumber: 1978
    functionLinenumberEnd: 1986
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 202
    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:2046,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2053,1
    - Dst: expression_returns_set
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2067,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2068,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2077,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2078,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - root
    - rte
    argTypes:
    - PlannerInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2082
      start: 2043
    functionDepth: 2
    functionLinenumber: 2043
    functionLinenumberEnd: 2082
    functionName: is_simple_values
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - Assert
    - expression_returns_set
    - linitial
    - list_length
    - contain_volatile_functions
    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:2119,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2121,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2122,1
    - Dst: get_expr_result_type
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2137,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2145,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2145,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2165,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2165,1
    - Dst: perform_pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2181,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: 2204
      start: 2102
    functionDepth: 1
    functionLinenumber: 2102
    functionLinenumberEnd: 2204
    functionName: pull_up_constant_function
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - makeTargetEntry
    - perform_pullup_replace_vars
    - IsA
    - list_make1
    - list_length
    - get_expr_result_type
    - palloc0
    - linitial_node
    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:2220,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2222,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2225,1
    - Dst: is_simple_union_all_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2238,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 9
    argCount: 1
    argNames:
    - subquery
    argTypes:
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2240
      start: 2214
    functionDepth: 1
    functionLinenumber: 2214
    functionLinenumberEnd: 2240
    functionName: is_simple_union_all
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - elog
    - is_simple_union_all_recurse
    - IsA
    - castNode
    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:2246,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2248,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2251,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2254,1
    - Dst: tlist_same_datatypes
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2258,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2260,1
    - Dst: is_simple_union_all_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2269,1
    - Dst: is_simple_union_all_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2270,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2274,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2275,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - setOp
    - setOpQuery
    - colTypes
    argTypes:
    - Node*
    - Query*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2278
      start: 2242
    functionDepth: 3
    functionLinenumber: 2242
    functionLinenumberEnd: 2278
    functionName: is_simple_union_all_recurse
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - check_stack_depth
    - nodeTag
    - Assert
    - tlist_same_datatypes
    - IsA
    - elog
    - is_simple_union_all_recurse
    - rt_fetch
    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:2304,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2304,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2309,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2313,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2315,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2317,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - subquery
    argTypes:
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2321
      start: 2285
    functionDepth: 1
    functionLinenumber: 2285
    functionLinenumberEnd: 2321
    functionName: is_safe_append_member
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - linitial
    - Assert
    - 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:2340,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2342,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2348,1
    - Dst: jointree_contains_lateral_outer_refs
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2350,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2351,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2359,1
    - Dst: pull_varnos_of_level
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2359,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2363,1
    - Dst: jointree_contains_lateral_outer_refs
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2378,1
    - Dst: jointree_contains_lateral_outer_refs
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2383,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2391,1
    - Dst: pull_varnos_of_level
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2391,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2396,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2397,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: 2399
      start: 2333
    functionDepth: 2
    functionLinenumber: 2333
    functionLinenumberEnd: 2399
    functionName: jointree_contains_lateral_outer_refs
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - nodeTag
    - bms_is_subset
    - IsA
    - foreach
    - elog
    - pull_varnos_of_level
    - lfirst
    - jointree_contains_lateral_outer_refs
    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:2429,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2445,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2447,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2452,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2455,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2465,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2467,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2469,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2471,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2474,1
    - Dst: replace_vars_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2476,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2477,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2478,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2483,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2485,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2488,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2495,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2497,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2501,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2505,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: 2508
      start: 2408
    functionDepth: 1
    functionLinenumber: 2408
    functionLinenumberEnd: 2508
    functionName: perform_pullup_replace_vars
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 3
    functionsReached:
    - Assert
    - foreach
    - replace_vars_in_jointree
    - lfirst
    - pullup_replace_vars
    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: 18
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2521,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2534,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2536,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2543,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2545,1
    - Dst: pullup_replace_vars_subquery
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2550,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2555,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2560,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2565,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2574,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2580,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2585,1
    - Dst: replace_vars_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2586,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2586,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2587,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2589,1
    - Dst: replace_vars_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2594,1
    - Dst: replace_vars_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2595,1
    - Dst: pullup_replace_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2607,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2612,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2613,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 49
    argCount: 2
    argNames:
    - jtnode
    - context
    argTypes:
    - Node*
    - pullup_replace_vars_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2614
      start: 2515
    functionDepth: 1
    functionLinenumber: 2515
    functionLinenumberEnd: 2614
    functionName: replace_vars_in_jointree
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - nodeTag
    - Assert
    - IsA
    - foreach
    - elog
    - replace_vars_in_jointree
    - pullup_replace_vars_subquery
    - rt_fetch
    - lfirst
    - pullup_replace_vars
    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:2625,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - expr
    - context
    argTypes:
    - Node*
    - pullup_replace_vars_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2630
      start: 2622
    functionDepth: 1
    functionLinenumber: 2622
    functionLinenumberEnd: 2630
    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:2643,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2669,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2673,1
    - Dst: ReplaceVarFromTargetList
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2681,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2710,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2721,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2726,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2727,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2732,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2738,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2746,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2748,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2749,1
    - Dst: contain_vars_of_level
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2803,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2810,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2811,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2819,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2821,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2822,1
    - Dst: contain_nonstrict_functions
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2833,1
    - Dst: make_placeholder_expr
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2848,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2850,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2857,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2858,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2866,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2870,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2871,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2874,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2878,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2879,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2913,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2914,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2917,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2921,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2922,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2924,1
    - Dst: add_nulling_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2925,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2926,1
    - Dst: add_nulling_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2932,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2936,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2936,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2937,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2943,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 93
    argCount: 2
    argNames:
    - var
    - context
    argTypes:
    - Var*
    - replace_rte_variables_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2946
      start: 2632
    functionDepth: 2
    functionLinenumber: 2632
    functionLinenumberEnd: 2946
    functionName: pullup_replace_vars_callback
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 0
    functionsReached:
    - bms_overlap
    - list_length
    - make_placeholder_expr
    - bms_intersect
    - bms_is_empty
    - bms_next_member
    - bms_is_subset
    - bms_del_members
    - IsA
    - ReplaceVarFromTargetList
    - bms_is_member
    - contain_vars_of_level
    - pull_varnos
    - add_nulling_relids
    - Assert
    - bms_add_members
    - bms_make_singleton
    - IncrementVarSublevelsUp
    - copyObject
    - contain_nonstrict_functions
    linkageType: ''
    returnType: Node
    signature: "Node *\npullup_replace_vars_callback(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:2959,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2959,1
    - Dst: replace_rte_variables
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2960,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - query
    - context
    argTypes:
    - Query*
    - pullup_replace_vars_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2965
      start: 2955
    functionDepth: 1
    functionLinenumber: 2955
    functionLinenumberEnd: 2965
    functionName: pullup_replace_vars_subquery
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - replace_rte_variables
    - Assert
    - IsA
    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:2995,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:2996,1
    - Dst: is_simple_union_all_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3006,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3014,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3016,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3016,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3018,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3019,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3028,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3029,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3030,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3042,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3044,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3045,1
    - Dst: pull_up_union_leaf_queries
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3059,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3060
      start: 2982
    functionDepth: 4
    functionLinenumber: 2982
    functionLinenumberEnd: 3060
    functionName: flatten_simple_union_all
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - Assert
    - pull_up_union_leaf_queries
    - IsA
    - list_make1
    - castNode
    - list_length
    - lappend
    - is_simple_union_all_recurse
    - copyObject
    - makeNode
    - rt_fetch
    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:3117,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3121,1
    - Dst: reduce_outer_joins_pass2
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3126,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3136,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3139,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3144,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3153,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3155,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3156,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3159,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3163,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3167
      start: 3101
    functionDepth: 1
    functionLinenumber: 3101
    functionLinenumberEnd: 3167
    functionName: reduce_outer_joins
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - remove_nulling_relids
    - bms_is_empty
    - bms_make_singleton
    - foreach
    - elog
    - reduce_outer_joins_pass2
    - reduce_outer_joins_pass1
    - lfirst
    linkageType: ''
    returnType: void
    signature: void reduce_outer_joins(PlannerInfo *root)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3180,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3187,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3191,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3193,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3198,1
    - Dst: reduce_outer_joins_pass1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3202,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3202,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3203,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3206,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3209,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3215,1
    - Dst: reduce_outer_joins_pass1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3218,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3219,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3222,1
    - Dst: reduce_outer_joins_pass1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3224,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3225,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3228,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3231,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3232,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 1
    argNames:
    - jtnode
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3234
      start: 3174
    functionDepth: 1
    functionLinenumber: 3174
    functionLinenumberEnd: 3234
    functionName: reduce_outer_joins_pass1
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - nodeTag
    - bms_add_members
    - bms_make_singleton
    - IsA
    - foreach
    - reduce_outer_joins_pass1
    - lappend
    - elog
    - palloc
    - IS_OUTER_JOIN
    - lfirst
    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:3265,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3266,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3267,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3268,1
    - Dst: find_nonnullable_rels
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3277,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3278,1
    - Dst: find_forced_null_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3280,1
    - Dst: mbms_add_members
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3281,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3284,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3284,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3284,1
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3285,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3287,1
    - Dst: reduce_outer_joins_pass2
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3290,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3290,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3295,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3298,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3303,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3304,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3312,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3316,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3320,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3322,1
    - Dst: report_reduced_full_join
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3328,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3334,1
    - Dst: report_reduced_full_join
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3338,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3354,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3374,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3375,1
    - Dst: find_nonnullable_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3394,1
    - Dst: mbms_overlap_sets
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3401,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3402,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3412,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3414,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3415,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3418,1
    - Dst: find_nonnullable_rels
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3454,1
    - Dst: find_forced_null_vars
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3455,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3459,1
    - Dst: mbms_add_members
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3461,1
    - Dst: reduce_outer_joins_pass2
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3492,1
    - Dst: reduce_outer_joins_pass2
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3512,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3517,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3521,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3522,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    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: 3523
      start: 3252
    functionDepth: 2
    functionLinenumber: 3252
    functionLinenumberEnd: 3523
    functionName: reduce_outer_joins_pass2
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - bms_overlap
    - list_length
    - reduce_outer_joins_pass2
    - find_nonnullable_rels
    - forboth
    - mbms_add_members
    - lsecond
    - find_forced_null_vars
    - bms_free
    - nodeTag
    - linitial
    - IsA
    - elog
    - find_nonnullable_vars
    - rt_fetch
    - lfirst
    - bms_add_member
    - Assert
    - mbms_overlap_sets
    - bms_add_members
    - report_reduced_full_join
    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
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3532,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3535,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: 3536
      start: 3526
    functionDepth: 1
    functionLinenumber: 3526
    functionLinenumberEnd: 3536
    functionName: report_reduced_full_join
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - palloc
    - lappend
    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: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3602,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3602,1
    - Dst: remove_useless_results_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3605,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3610,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3610,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3621,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3624,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3629,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3645,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3647,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3649,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3650,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3652
      start: 3595
    functionDepth: 1
    functionLinenumber: 3595
    functionLinenumberEnd: 3652
    functionName: remove_useless_result_rtes
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - Assert
    - remove_nulling_relids
    - bms_is_empty
    - IsA
    - foreach
    - remove_useless_results_recurse
    - foreach_delete_current
    - rt_fetch
    - lfirst
    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:3673,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3674,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3678,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3693,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3695,1
    - Dst: remove_useless_results_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3699,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3703,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3711,1
    - Dst: get_result_relid
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3712,1
    - Dst: find_dependent_phvs_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3713,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3715,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3716,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3729,1
    - Dst: remove_result_refs
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3730,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3747,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3759,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3759,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3760,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3761,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3764,1
    - Dst: remove_useless_results_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3781,1
    - Dst: remove_useless_results_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3787,1
    - Dst: get_result_relid
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3814,1
    - Dst: find_dependent_phvs_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3815,1
    - Dst: remove_result_refs
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3817,1
    - Dst: makeFromExpr
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3820,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3820,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3826,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3826,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3827,1
    - Dst: get_result_relid
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3831,1
    - Dst: remove_result_refs
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3833,1
    - Dst: makeFromExpr
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3836,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3836,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3842,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3842,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3843,1
    - Dst: get_result_relid
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3868,1
    - Dst: find_dependent_phvs
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3870,1
    - Dst: remove_result_refs
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3872,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3873,1
    - Dst: get_result_relid
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3899,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3901,1
    - Dst: remove_result_refs
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3902,1
    - Dst: makeFromExpr
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3905,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3905,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3911,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3911,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3912,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3923,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3929,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3930,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: 3932
      start: 3668
    functionDepth: 1
    functionLinenumber: 3668
    functionLinenumberEnd: 3932
    functionName: remove_useless_results_recurse
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - makeFromExpr
    - remove_result_refs
    - list_length
    - castNode
    - find_dependent_phvs
    - list_concat
    - get_result_relid
    - foreach
    - foreach_delete_current
    - bms_next_member
    - nodeTag
    - linitial
    - find_dependent_phvs_in_jointree
    - IsA
    - remove_useless_results_recurse
    - elog
    - lfirst
    - bms_add_member
    - Assert
    - list_make1
    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:3944,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3947,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - root
    - jtnode
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3950
      start: 3939
    functionDepth: 1
    functionLinenumber: 3939
    functionLinenumberEnd: 3950
    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:3978,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3979,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3979,1
    - Dst: substitute_phv_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3980,1
    - Dst: fix_append_rel_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:3981,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - root
    - varno
    - newjtloc
    argTypes:
    - PlannerInfo*
    - int
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3988
      start: 3969
    functionDepth: 1
    functionLinenumber: 3969
    functionLinenumberEnd: 3988
    functionName: remove_result_refs
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - Assert
    - substitute_phv_relids
    - bms_is_empty
    - fix_append_rel_relids
    - get_relids_in_jointree
    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:4014,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4019,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4023,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4029,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4036,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4036,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4037,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4037,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4038,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4038,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4040,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - find_dependent_phvs_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4041
      start: 4008
    functionDepth: 1
    functionLinenumber: 4008
    functionLinenumberEnd: 4041
    functionName: find_dependent_phvs_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 0
    functionsReached:
    - Assert
    - expression_tree_walker
    - IsA
    - bms_equal
    - query_tree_walker
    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:4052,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4055,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4058,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - root
    - varno
    argTypes:
    - PlannerInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4063
      start: 4043
    functionDepth: 1
    functionLinenumber: 4043
    functionLinenumberEnd: 4063
    functionName: find_dependent_phvs
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - bms_make_singleton
    - expression_tree_walker
    - query_tree_walker
    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:4076,1
    - Dst: find_dependent_phvs_walker
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4082,1
    - Dst: get_relids_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4092,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4094,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4096,1
    - Dst: range_table_entry_walker
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4099,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - root
    - node
    - varno
    argTypes:
    - PlannerInfo*
    - Node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4104
      start: 4065
    functionDepth: 2
    functionLinenumber: 4065
    functionLinenumberEnd: 4104
    functionName: find_dependent_phvs_in_jointree
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - bms_make_singleton
    - get_relids_in_jointree
    - find_dependent_phvs_walker
    - rt_fetch
    - bms_next_member
    - range_table_entry_walker
    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:4132,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4137,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4139,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4141,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4144,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4144,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4148,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4154,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4161,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4161,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4162,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4162,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4163,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4163,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4164,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4164,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4166,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - substitute_phv_relids_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4167
      start: 4126
    functionDepth: 1
    functionLinenumber: 4126
    functionLinenumberEnd: 4167
    functionName: substitute_phv_relids_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 0
    functionsReached:
    - Assert
    - bms_del_member
    - expression_tree_walker
    - bms_is_empty
    - IsA
    - bms_union
    - bms_is_member
    - query_tree_walker
    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:4181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - node
    - varno
    - subrelids
    argTypes:
    - Node*
    - int
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4185
      start: 4169
    functionDepth: 1
    functionLinenumber: 4169
    functionLinenumberEnd: 4185
    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:4209,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4211,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4214,1
    - Dst: bms_singleton_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4219,1
    - Dst: substitute_phv_relids
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4225,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - root
    - varno
    - subrelids
    argTypes:
    - PlannerInfo*
    - int
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4228
      start: 4197
    functionDepth: 2
    functionLinenumber: 4197
    functionLinenumberEnd: 4228
    functionName: fix_append_rel_relids
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - Assert
    - substitute_phv_relids
    - bms_singleton_member
    - foreach
    - lfirst
    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:4249,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4253,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4255,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4260,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4262,1
    - Dst: get_relids_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4263,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4263,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4268,1
    - Dst: get_relids_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4272,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4275,1
    - Dst: get_relids_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4276,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4284,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4289,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4294,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4295,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: 4297
      start: 4241
    functionDepth: 1
    functionLinenumber: 4241
    functionLinenumberEnd: 4297
    functionName: get_relids_in_jointree
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 7
    functionsReached:
    - nodeTag
    - bms_make_singleton
    - IsA
    - foreach
    - elog
    - get_relids_in_jointree
    - bms_join
    - lfirst
    - bms_add_member
    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:4307,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4310,1
    - Dst: get_relids_in_jointree
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4311,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - query
    - joinrelid
    argTypes:
    - Query*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4312
      start: 4302
    functionDepth: 2
    functionLinenumber: 4302
    functionLinenumberEnd: 4312
    functionName: get_relids_for_join
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - elog
    - get_relids_in_jointree
    - find_jointree_node_for_rel
    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:4324,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4331,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4336,1
    - Dst: find_jointree_node_for_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4338,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4338,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4343,1
    - Dst: find_jointree_node_for_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4349,1
    - Dst: find_jointree_node_for_rel
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4352,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4357,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4358,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - jtnode
    - relid
    argTypes:
    - Node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4360
      start: 4319
    functionDepth: 1
    functionLinenumber: 4319
    functionLinenumberEnd: 4360
    functionName: find_jointree_node_for_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - nodeTag
    - IsA
    - find_jointree_node_for_rel
    - foreach
    - elog
    - lfirst
    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:4371,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4373,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4374,1
    - Dst: get_nullingrels_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - parse
    argTypes:
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4377
      start: 4368
    functionDepth: 1
    functionLinenumber: 4368
    functionLinenumberEnd: 4377
    functionName: get_nullingrels
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 1
    functionsReached:
    - palloc0_array
    - get_nullingrels_recurse
    - palloc_object
    - list_length
    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:4394,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4398,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4401,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4406,1
    - Dst: get_nullingrels_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4408,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4408,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4411,1
    - Dst: get_nullingrels_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4419,1
    - Dst: get_nullingrels_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4420,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4425,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4425,1
    - Dst: get_nullingrels_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4427,1
    - Dst: get_nullingrels_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4428,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4431,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4431,1
    - Dst: get_nullingrels_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4433,1
    - Dst: get_nullingrels_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4434,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4437,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4437,1
    - Dst: get_nullingrels_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4439,1
    - Dst: get_nullingrels_recurse
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4440,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4443,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4449,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/prep/prepjointree.c:4450,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 3
    argNames:
    - jtnode
    - upper_nullingrels
    - info
    argTypes:
    - Node*
    - Relids
    - nullingrel_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4451
      start: 4388
    functionDepth: 1
    functionLinenumber: 4388
    functionLinenumberEnd: 4451
    functionName: get_nullingrels_recurse
    functionSourceFile: /src/postgres/src/backend/optimizer/prep/prepjointree.c
    functionUses: 2
    functionsReached:
    - nodeTag
    - Assert
    - bms_copy
    - get_nullingrels_recurse
    - IsA
    - foreach
    - elog
    - lfirst
    - bms_add_member
    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: 43
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 43
    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: 45
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 45
    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: 48
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 48
    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: 16
    BranchProfiles: []
    Callsites:
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:179,1
    - Dst: innerrel_is_unique
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:183,1
    - Dst: innerrel_is_unique
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:192,1
    - Dst: select_mergejoin_clauses
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:209,1
    - Dst: compute_semi_anti_join_factors
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:222,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:240,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:242,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:251,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:252,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:253,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:254,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:259,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:260,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:261,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:262,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:273,1
    - Dst: sort_inner_and_outer
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:281,1
    - Dst: match_unsorted_outer
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:293,1
    - Dst: match_unsorted_inner
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:310,1
    - Dst: hash_inner_and_outer
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:320,1
    - Dst: RelOptInfo*::fdwroutine::GetForeignJoinPaths
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:330,1
    - Dst: set_join_pathlist_hook
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:341,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 45
    argCount: 7
    argNames:
    - root
    - joinrel
    - outerrel
    - innerrel
    - jointype
    - sjinfo
    - restrictlist
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - JoinType
    - SpecialJoinInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 123
    functionDepth: 2
    functionLinenumber: 123
    functionLinenumberEnd: 343
    functionName: add_paths_to_joinrel
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached:
    - bms_overlap
    - sort_inner_and_outer
    - innerrel_is_unique
    - bms_is_subset
    - bms_add_members
    - compute_semi_anti_join_factors
    - hash_inner_and_outer
    - foreach
    - match_unsorted_outer
    - set_join_pathlist_hook
    - RelOptInfo*::fdwroutine::GetForeignJoinPaths
    - select_mergejoin_clauses
    - bms_join
    - bms_difference
    - lfirst
    - match_unsorted_inner
    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:369,1
    - Dst: bms_nonempty_difference
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:370,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - root
    - outerrelids
    - inner_paramrels
    argTypes:
    - PlannerInfo*
    - Relids
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 360
    functionDepth: 1
    functionLinenumber: 360
    functionLinenumberEnd: 371
    functionName: allow_star_schema_join
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached:
    - bms_overlap
    - bms_nonempty_difference
    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:393,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:394,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:396,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:400,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:402,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:404,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:406,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:408,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:417,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:418,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 3
    argNames:
    - root
    - outerrelids
    - inner_paramrels
    argTypes:
    - PlannerInfo*
    - Relids
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 421
    functionName: have_unsafe_outer_join_ref
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached:
    - bms_overlap
    - bms_free
    - foreach
    - bms_is_member
    - bms_difference
    - lfirst
    - 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:457,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:468,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:468,1
    - Dst: clause_sides_match_join
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:469,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:472,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:473,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:479,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:484,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:489,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:491,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:492,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:501,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:503,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:504,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:518,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:524,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:527,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:531,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:533,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:534,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:538,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:538,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:542,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:542,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:544,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:545,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:554,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:556,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:557,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: 574
      start: 436
    functionDepth: 2
    functionLinenumber: 436
    functionLinenumberEnd: 574
    functionName: paraminfo_get_equal_hashops
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached:
    - exprType
    - clause_sides_match_join
    - list_concat
    - linitial
    - lappend_oid
    - IsA
    - lsecond
    - list_length
    - lookup_type_cache
    - lappend
    - contain_volatile_functions
    - OidIsValid
    - list_member
    - lfirst
    - list_free
    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:457,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:468,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:468,1
    - Dst: clause_sides_match_join
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:469,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:472,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:473,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:479,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:484,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:489,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:491,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:492,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:501,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:503,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:504,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:518,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 455
    functionDepth: 2
    functionLinenumber: 455
    functionLinenumberEnd: 520
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 215
    functionsReached:
    - clause_sides_match_join
    - linitial
    - lappend_oid
    - IsA
    - lsecond
    - list_length
    - lappend
    - OidIsValid
    - list_member
    - lfirst
    - list_free
    linkageType: ''
    returnType: void
    signature: void foreach(lc, clauses)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:527,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:531,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:533,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:534,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:538,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:538,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:542,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:542,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:544,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:545,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:554,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:556,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:557,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 525
    functionDepth: 2
    functionLinenumber: 525
    functionLinenumberEnd: 570
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 215
    functionsReached:
    - exprType
    - lappend_oid
    - lookup_type_cache
    - lappend
    - contain_volatile_functions
    - OidIsValid
    - list_member
    - lfirst
    - list_free
    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:595,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:598,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:600,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:609,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:619,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:619,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:622,1
    - Dst: pull_vars_of_level
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:627,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:630,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:632,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:636,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:638,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:639,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:641,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:645,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:647,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:647,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:649,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:652,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:655,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 2
    argNames:
    - root
    - innerrelids
    argTypes:
    - PlannerInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 581
    functionDepth: 2
    functionLinenumber: 581
    functionLinenumberEnd: 659
    functionName: extract_lateral_vars_from_PHVs
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached:
    - bms_overlap
    - pull_varnos
    - Assert
    - bms_is_subset
    - find_placeholder_info
    - IsA
    - foreach
    - pull_vars_of_level
    - bms_equal
    - lappend
    - bms_is_member
    - bms_membership
    - lfirst
    - list_free
    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:630,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:632,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:636,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:638,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:639,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:641,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:645,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:647,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:647,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:649,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:652,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 628
    functionDepth: 2
    functionLinenumber: 628
    functionLinenumberEnd: 653
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 216
    functionsReached:
    - Assert
    - bms_is_subset
    - find_placeholder_info
    - IsA
    - lappend
    - bms_is_member
    - lfirst
    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:702,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:764,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:766,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:776,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:779,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:781,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:783,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:795,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:797,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:799,1
    - Dst: paraminfo_get_equal_hashops
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:805,1
    - Dst: create_memoize_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:815,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    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: 826
      start: 672
    functionDepth: 3
    functionLinenumber: 672
    functionLinenumberEnd: 826
    functionName: get_memoize_path
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached:
    - extract_lateral_vars_from_PHVs
    - foreach_node
    - create_memoize_path
    - foreach
    - contain_volatile_functions
    - bms_is_member
    - paraminfo_get_equal_hashops
    - lfirst
    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:848,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:849,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:858,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:859,1
    - Dst: calc_nestloop_required_outer
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:884,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:887,1
    - Dst: allow_star_schema_join
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:888,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:891,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:896,1
    - Dst: have_unsafe_outer_join_ref
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:896,1
    - Dst: PATH_PARAM_BY_PARENT
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:905,1
    - Dst: path_is_reparameterizable_by_child
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:906,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:908,1
    - Dst: initial_cost_nestloop
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:921,1
    - Dst: add_path_precheck
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:924,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:928,1
    - Dst: create_nestloop_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:929,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:943,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 7
    argNames:
    - root
    - joinrel
    - outer_path
    - inner_path
    - pathkeys
    - jointype
    - extra
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - Path*
    - List*
    - JoinType
    - JoinPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 833
    functionDepth: 4
    functionLinenumber: 833
    functionLinenumberEnd: 945
    functionName: try_nestloop_path
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached:
    - bms_overlap
    - Assert
    - add_path_precheck
    - add_path
    - bms_free
    - PATH_PARAM_BY_PARENT
    - path_is_reparameterizable_by_child
    - have_unsafe_outer_join_ref
    - initial_cost_nestloop
    - PATH_REQ_OUTER
    - create_nestloop_path
    - bms_is_member
    - calc_nestloop_required_outer
    - allow_star_schema_join
    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  JoinPathExtraData *extra)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:969,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:969,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:970,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:970,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:970,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:987,1
    - Dst: PATH_PARAM_BY_PARENT
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:998,1
    - Dst: path_is_reparameterizable_by_child
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:999,1
    - Dst: initial_cost_nestloop
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1006,1
    - Dst: add_partial_path_precheck
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1008,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1013,1
    - Dst: create_nestloop_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1014,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 7
    argNames:
    - root
    - joinrel
    - outer_path
    - inner_path
    - pathkeys
    - jointype
    - extra
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    - Path*
    - List*
    - JoinType
    - JoinPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1024
      start: 952
    functionDepth: 4
    functionLinenumber: 952
    functionLinenumberEnd: 1024
    functionName: try_partial_nestloop_path
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached:
    - Assert
    - bms_is_subset
    - bms_is_empty
    - PATH_PARAM_BY_PARENT
    - path_is_reparameterizable_by_child
    - add_partial_path
    - add_partial_path_precheck
    - initial_cost_nestloop
    - PATH_REQ_OUTER
    - create_nestloop_path
    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  JoinPathExtraData
      *extra)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: try_partial_mergejoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1050,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1070,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1070,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1071,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1071,1
    - Dst: calc_non_nestloop_required_outer
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1078,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1081,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1084,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1099,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1103,1
    - Dst: initial_cost_mergejoin
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1109,1
    - Dst: add_path_precheck
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1115,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1119,1
    - Dst: create_mergejoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1120,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1138,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: 1140
      start: 1031
    functionDepth: 4
    functionLinenumber: 1031
    functionLinenumberEnd: 1140
    functionName: try_mergejoin_path
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached:
    - bms_overlap
    - calc_non_nestloop_required_outer
    - try_partial_mergejoin_path
    - create_mergejoin_path
    - add_path_precheck
    - add_path
    - pathkeys_count_contained_in
    - pathkeys_contained_in
    - PATH_REQ_OUTER
    - bms_is_member
    - initial_cost_mergejoin
    - bms_free
    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:1165,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1165,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1166,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1166,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1166,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1167,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1167,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1181,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1185,1
    - Dst: initial_cost_mergejoin
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1191,1
    - Dst: add_partial_path_precheck
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1197,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1202,1
    - Dst: create_mergejoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1203,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: 1217
      start: 1147
    functionDepth: 4
    functionLinenumber: 1147
    functionLinenumberEnd: 1217
    functionName: try_partial_mergejoin_path
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 1
    functionsReached:
    - Assert
    - create_mergejoin_path
    - bms_is_empty
    - pathkeys_count_contained_in
    - pathkeys_contained_in
    - add_partial_path
    - add_partial_path_precheck
    - PATH_REQ_OUTER
    - 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:1243,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1243,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1244,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1244,1
    - Dst: calc_non_nestloop_required_outer
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1251,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1254,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1257,1
    - Dst: initial_cost_hashjoin
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1265,1
    - Dst: add_path_precheck
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1268,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1272,1
    - Dst: create_hashjoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1273,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1288,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: 1290
      start: 1224
    functionDepth: 4
    functionLinenumber: 1224
    functionLinenumberEnd: 1290
    functionName: try_hashjoin_path
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached:
    - bms_overlap
    - calc_non_nestloop_required_outer
    - initial_cost_hashjoin
    - add_path_precheck
    - add_path
    - PATH_REQ_OUTER
    - bms_is_member
    - bms_free
    - create_hashjoin_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:1318,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1318,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1319,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1319,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1319,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1320,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1320,1
    - Dst: initial_cost_hashjoin
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1327,1
    - Dst: add_partial_path_precheck
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1329,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1334,1
    - Dst: create_hashjoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1335,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: 1346
      start: 1301
    functionDepth: 4
    functionLinenumber: 1301
    functionLinenumberEnd: 1346
    functionName: try_partial_hashjoin_path
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached:
    - Assert
    - initial_cost_hashjoin
    - bms_is_empty
    - add_partial_path
    - add_partial_path_precheck
    - PATH_REQ_OUTER
    - create_hashjoin_path
    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: 10
    BranchProfiles: []
    Callsites:
    - Dst: PATH_PARAM_BY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1401,1
    - Dst: PATH_PARAM_BY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1402,1
    - Dst: create_unique_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1411,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1413,1
    - Dst: create_unique_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1418,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1420,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1438,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1440,1
    - Dst: get_cheapest_parallel_safe_total_inner
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1446,1
    - Dst: select_outer_pathkeys_for_merge
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1477,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1483,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1490,1
    - Dst: lcons
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1491,1
    - Dst: list_delete_nth_cell
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1492,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1492,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1493,1
    - Dst: find_mergeclauses_for_outer_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1499,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1504,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1504,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1504,1
    - Dst: make_inner_pathkeys_for_merge
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1507,1
    - Dst: build_join_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1512,1
    - Dst: try_mergejoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1522,1
    - Dst: try_partial_mergejoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1539,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 36
    argCount: 6
    argNames:
    - root
    - joinrel
    - outerrel
    - innerrel
    - jointype
    - extra
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - JoinType
    - JoinPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1550
      start: 1359
    functionDepth: 5
    functionLinenumber: 1359
    functionLinenumberEnd: 1550
    functionName: sort_inner_and_outer
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 1
    functionsReached:
    - list_delete_nth_cell
    - list_copy
    - lcons
    - list_length
    - try_partial_mergejoin_path
    - bms_is_empty
    - get_cheapest_parallel_safe_total_inner
    - make_inner_pathkeys_for_merge
    - foreach_current_index
    - build_join_pathkeys
    - PATH_PARAM_BY_REL
    - linitial
    - list_head
    - try_mergejoin_path
    - lfirst
    - Assert
    - find_mergeclauses_for_outer_pathkeys
    - create_unique_path
    - 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:1483,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1490,1
    - Dst: lcons
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1491,1
    - Dst: list_delete_nth_cell
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1492,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1492,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1493,1
    - Dst: find_mergeclauses_for_outer_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1499,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1504,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1504,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1504,1
    - Dst: make_inner_pathkeys_for_merge
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1507,1
    - Dst: build_join_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1512,1
    - Dst: try_mergejoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1522,1
    - Dst: try_partial_mergejoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1539,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1549
      start: 1481
    functionDepth: 5
    functionLinenumber: 1481
    functionLinenumberEnd: 1549
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 217
    functionsReached:
    - Assert
    - list_delete_nth_cell
    - find_mergeclauses_for_outer_pathkeys
    - list_copy
    - try_partial_mergejoin_path
    - lcons
    - list_head
    - list_length
    - make_inner_pathkeys_for_merge
    - foreach_current_index
    - try_mergejoin_path
    - lfirst
    - build_join_pathkeys
    linkageType: ''
    returnType: void
    signature: void foreach(l, all_pathkeys)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: find_mergeclauses_for_outer_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1592,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1613,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1613,1
    - Dst: make_inner_pathkeys_for_merge
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1617,1
    - Dst: try_mergejoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1627,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1672,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1685,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1687,1
    - Dst: list_truncate
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1701,1
    - Dst: get_cheapest_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1702,1
    - Dst: compare_path_costs
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1709,1
    - Dst: trim_mergeclauses_for_inner_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1717,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1720,1
    - Dst: try_mergejoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1724,1
    - Dst: get_cheapest_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1738,1
    - Dst: compare_path_costs
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1745,1
    - Dst: trim_mergeclauses_for_inner_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1760,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1763,1
    - Dst: try_mergejoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1768,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 55
    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: 1789
      start: 1566
    functionDepth: 5
    functionLinenumber: 1566
    functionLinenumberEnd: 1789
    functionName: generate_mergejoin_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 0
    functionsReached:
    - Assert
    - find_mergeclauses_for_outer_pathkeys
    - compare_path_costs
    - list_copy
    - get_cheapest_path_for_pathkeys
    - pathkeys_contained_in
    - list_length
    - make_inner_pathkeys_for_merge
    - list_truncate
    - try_mergejoin_path
    - trim_mergeclauses_for_inner_pathkeys
    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: 31
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1865,1
    - Dst: PATH_PARAM_BY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1877,1
    - Dst: create_unique_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1890,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1891,1
    - Dst: ExecMaterializesOutput
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1901,1
    - Dst: create_material_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1903,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1906,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1908,1
    - Dst: PATH_PARAM_BY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1914,1
    - Dst: create_unique_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1926,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1928,1
    - Dst: build_join_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1936,1
    - Dst: try_nestloop_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1945,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1963,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1965,1
    - Dst: try_nestloop_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1968,1
    - Dst: get_memoize_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1980,1
    - Dst: try_nestloop_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1984,1
    - Dst: try_nestloop_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:1995,1
    - Dst: generate_mergejoin_paths
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2013,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2034,1
    - Dst: consider_parallel_nestloop
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2037,1
    - Dst: get_cheapest_parallel_safe_total_inner
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2051,1
    - Dst: consider_parallel_mergejoin
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2055,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 81
    argCount: 6
    argNames:
    - root
    - joinrel
    - outerrel
    - innerrel
    - jointype
    - extra
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - JoinType
    - JoinPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2059
      start: 1814
    functionDepth: 6
    functionLinenumber: 1814
    functionLinenumberEnd: 2059
    functionName: match_unsorted_outer
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 1
    functionsReached:
    - create_material_path
    - Assert
    - consider_parallel_nestloop
    - PATH_PARAM_BY_REL
    - consider_parallel_mergejoin
    - create_unique_path
    - get_memoize_path
    - bms_is_empty
    - foreach
    - ExecMaterializesOutput
    - get_cheapest_parallel_safe_total_inner
    - elog
    - try_nestloop_path
    - generate_mergejoin_paths
    - lfirst
    - build_join_pathkeys
    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:2085,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2087,1
    - Dst: build_join_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2093,1
    - Dst: generate_mergejoin_paths
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2096,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: 2100
      start: 2073
    functionDepth: 6
    functionLinenumber: 2073
    functionLinenumberEnd: 2100
    functionName: consider_parallel_mergejoin
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 1
    functionsReached:
    - generate_mergejoin_paths
    - lfirst
    - build_join_pathkeys
    - foreach
    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: 8
    BranchProfiles: []
    Callsites:
    - Dst: PATH_PARAM_BY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2139,1
    - Dst: ExecMaterializesOutput
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2140,1
    - Dst: create_material_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2143,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2144,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2147,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2149,1
    - Dst: build_join_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2154,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2163,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2165,1
    - Dst: create_unique_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2183,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2186,1
    - Dst: try_partial_nestloop_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2189,1
    - Dst: get_memoize_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2196,1
    - Dst: try_partial_nestloop_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2200,1
    - Dst: try_partial_nestloop_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2206,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 26
    argCount: 6
    argNames:
    - root
    - joinrel
    - outerrel
    - innerrel
    - jointype
    - extra
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - JoinType
    - JoinPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2209
      start: 2113
    functionDepth: 5
    functionLinenumber: 2113
    functionLinenumberEnd: 2209
    functionName: consider_parallel_nestloop
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 1
    functionsReached:
    - create_material_path
    - Assert
    - try_partial_nestloop_path
    - PATH_PARAM_BY_REL
    - create_unique_path
    - get_memoize_path
    - foreach
    - ExecMaterializesOutput
    - lfirst
    - build_join_pathkeys
    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: 20
    BranchProfiles: []
    Callsites:
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2231,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2243,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2245,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2251,1
    - Dst: clause_sides_match_join
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2261,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2276,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2276,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2276,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2279,1
    - Dst: PATH_PARAM_BY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2300,1
    - Dst: PATH_PARAM_BY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2301,1
    - Dst: create_unique_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2308,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2310,1
    - Dst: try_hashjoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2312,1
    - Dst: create_unique_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2324,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2326,1
    - Dst: try_hashjoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2328,1
    - Dst: try_hashjoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2337,1
    - Dst: try_hashjoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2358,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2366,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2368,1
    - Dst: PATH_PARAM_BY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2374,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2377,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2379,1
    - Dst: PATH_PARAM_BY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2385,1
    - Dst: try_hashjoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2392,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2413,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2420,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2432,1
    - Dst: try_partial_hashjoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2433,1
    - Dst: get_cheapest_parallel_safe_total_inner
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2458,1
    - Dst: try_partial_hashjoin_path
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2461,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 60
    argCount: 6
    argNames:
    - root
    - joinrel
    - outerrel
    - innerrel
    - jointype
    - extra
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - JoinType
    - JoinPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2468
      start: 2222
    functionDepth: 5
    functionLinenumber: 2222
    functionLinenumberEnd: 2468
    functionName: hash_inner_and_outer
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 1
    functionsReached:
    - get_commutator
    - Assert
    - try_hashjoin_path
    - clause_sides_match_join
    - PATH_PARAM_BY_REL
    - linitial
    - create_unique_path
    - bms_is_empty
    - RINFO_IS_PUSHED_DOWN
    - try_partial_hashjoin_path
    - foreach
    - castNode
    - get_cheapest_parallel_safe_total_inner
    - lappend
    - OidIsValid
    - IS_OUTER_JOIN
    - lfirst
    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:2502,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2518,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2526,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2539,1
    - Dst: clause_sides_match_join
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2547,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2565,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2565,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2565,1
    - Dst: update_mergeclause_eclasses
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2579,1
    - Dst: EC_MUST_BE_REDUNDANT
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2581,1
    - Dst: EC_MUST_BE_REDUNDANT
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2582,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2588,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: 2607
      start: 2492
    functionDepth: 2
    functionLinenumber: 2492
    functionLinenumberEnd: 2607
    functionName: select_mergejoin_clauses
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 1
    functionsReached:
    - get_commutator
    - clause_sides_match_join
    - EC_MUST_BE_REDUNDANT
    - RINFO_IS_PUSHED_DOWN
    - IsA
    - update_mergeclause_eclasses
    - castNode
    - lappend
    - OidIsValid
    - IS_OUTER_JOIN
    - lfirst
    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:2518,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2526,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2539,1
    - Dst: clause_sides_match_join
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2547,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2565,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2565,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2565,1
    - Dst: update_mergeclause_eclasses
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2579,1
    - Dst: EC_MUST_BE_REDUNDANT
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2581,1
    - Dst: EC_MUST_BE_REDUNDANT
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2582,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinpath.c:2588,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2589
      start: 2516
    functionDepth: 2
    functionLinenumber: 2516
    functionLinenumberEnd: 2589
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinpath.c
    functionUses: 221
    functionsReached:
    - get_commutator
    - clause_sides_match_join
    - EC_MUST_BE_REDUNDANT
    - RINFO_IS_PUSHED_DOWN
    - IsA
    - update_mergeclause_eclasses
    - castNode
    - lappend
    - OidIsValid
    - lfirst
    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:178,1
    - Dst: set_base_rel_sizes
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:183,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:208,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:210,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:213,1
    - Dst: set_base_rel_pathlists
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:221,1
    - Dst: make_rel_from_joinlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:226,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:231,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:231,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - root
    - joinlist
    argTypes:
    - PlannerInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 234
    functionName: make_one_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - Assert
    - make_rel_from_joinlist
    - IS_SIMPLE_REL
    - set_base_rel_sizes
    - set_base_rel_pathlists
    - bms_equal
    - set_base_rel_consider_startup
    - IS_DUMMY_REL
    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:264,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:266,1
    - Dst: bms_get_singleton_member
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:270,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:272,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 246
    functionDepth: 2
    functionLinenumber: 246
    functionLinenumberEnd: 277
    functionName: set_base_rel_consider_startup
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - find_base_rel
    - bms_get_singleton_member
    - lfirst
    - foreach
    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:303,1
    - Dst: set_rel_consider_parallel
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:320,1
    - Dst: set_rel_size
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:322,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 324
    functionName: set_base_rel_sizes
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - Assert
    - set_rel_size
    - set_rel_consider_parallel
    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:345,1
    - Dst: set_rel_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:351,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 332
    functionDepth: 1
    functionLinenumber: 332
    functionLinenumberEnd: 353
    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:364,1
    - Dst: set_dummy_rel_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:377,1
    - Dst: set_append_rel_size
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:382,1
    - Dst: set_foreign_size
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:392,1
    - Dst: set_dummy_rel_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:401,1
    - Dst: set_tablesample_rel_size
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:406,1
    - Dst: set_plain_rel_size
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:411,1
    - Dst: set_subquery_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:421,1
    - Dst: set_function_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:424,1
    - Dst: set_tablefunc_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:427,1
    - Dst: set_values_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:430,1
    - Dst: set_worktable_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:440,1
    - Dst: set_cte_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:442,1
    - Dst: set_namedtuplestore_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:446,1
    - Dst: set_result_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:450,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:453,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:461,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:461,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 50
    argCount: 4
    argNames:
    - root
    - rel
    - rti
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Index
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 359
    functionDepth: 5
    functionLinenumber: 359
    functionLinenumberEnd: 462
    functionName: set_rel_size
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - Assert
    - set_dummy_rel_pathlist
    - relation_excluded_by_constraints
    - set_function_size_estimates
    - set_tablesample_rel_size
    - set_subquery_pathlist
    - set_values_size_estimates
    - set_result_pathlist
    - set_plain_rel_size
    - set_append_rel_size
    - set_cte_pathlist
    - elog
    - IS_DUMMY_REL
    - set_worktable_pathlist
    - set_namedtuplestore_pathlist
    - set_foreign_size
    - set_tablefunc_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:472,1
    - Dst: set_append_rel_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:479,1
    - Dst: set_foreign_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:489,1
    - Dst: set_tablesample_rel_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:494,1
    - Dst: set_plain_rel_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:499,1
    - Dst: set_function_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:507,1
    - Dst: set_tablefunc_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:511,1
    - Dst: set_values_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:515,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:527,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:556,1
    - Dst: generate_useful_gather_paths
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:557,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:560,1
    - Dst: pprint
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:563,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 45
    argCount: 4
    argNames:
    - root
    - rel
    - rti
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Index
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 468
    functionDepth: 3
    functionLinenumber: 468
    functionLinenumberEnd: 565
    functionName: set_rel_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - pprint
    - set_values_pathlist
    - set_function_pathlist
    - set_tablesample_rel_pathlist
    - elog
    - bms_equal
    - generate_useful_gather_paths
    - set_foreign_pathlist
    - set_tablefunc_pathlist
    - set_cheapest
    - set_plain_rel_pathlist
    - IS_DUMMY_REL
    - set_append_rel_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:578,1
    - Dst: set_baserel_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:581,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 571
    functionDepth: 1
    functionLinenumber: 571
    functionLinenumberEnd: 582
    functionName: set_plain_rel_size
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - check_index_predicates
    - set_baserel_size_estimates
    linkageType: ''
    returnType: void
    signature: void set_plain_rel_size(PlannerInfo *root, RelOptInfo *rel, RangeTblEntry
      *rte)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:596,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:599,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:602,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:602,1
    - Dst: get_rel_persistence
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:619,1
    - Dst: func_parallel
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:628,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:632,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:646,1
    - Dst: RelOptInfo*::fdwroutine::IsForeignScanParallelSafe
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:649,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:684,1
    - Dst: limit_needed
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:686,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:693,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:698,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:708,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:736,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:749,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:756,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 55
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 588
    functionDepth: 3
    functionLinenumber: 588
    functionLinenumberEnd: 761
    functionName: set_rel_consider_parallel
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - func_parallel
    - Assert
    - limit_needed
    - is_parallel_safe
    - IS_SIMPLE_REL
    - RelOptInfo*::fdwroutine::IsForeignScanParallelSafe
    - castNode
    - 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:787,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:791,1
    - Dst: create_seqscan_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:791,1
    - Dst: create_plain_partial_paths
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:795,1
    - Dst: create_index_paths
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:798,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 767
    functionDepth: 4
    functionLinenumber: 767
    functionLinenumberEnd: 799
    functionName: set_plain_rel_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - add_path
    - create_plain_partial_paths
    - create_tidscan_paths
    - create_seqscan_path
    - create_index_paths
    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:810,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:818,1
    - Dst: create_seqscan_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:818,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 805
    functionDepth: 4
    functionLinenumber: 805
    functionLinenumberEnd: 819
    functionName: create_plain_partial_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - add_partial_path
    - create_seqscan_path
    - compute_parallel_worker
    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:837,1
    - Dst: GetTsmRoutine
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:844,1
    - Dst: TsmRoutine*::SampleScanGetSampleSize
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:845,1
    - Dst: set_baserel_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:858,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 825
    functionDepth: 2
    functionLinenumber: 825
    functionLinenumberEnd: 859
    functionName: set_tablesample_rel_size
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - TsmRoutine*::SampleScanGetSampleSize
    - GetTsmRoutine
    - check_index_predicates
    - set_baserel_size_estimates
    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:879,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:898,1
    - Dst: GetTsmRoutine
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:899,1
    - Dst: create_material_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:901,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:904,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 865
    functionDepth: 4
    functionLinenumber: 865
    functionLinenumberEnd: 907
    functionName: set_tablesample_rel_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - create_material_path
    - add_path
    - GetTsmRoutine
    - create_samplescan_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:917,1
    - Dst: RelOptInfo*::fdwroutine::GetForeignRelSize
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:920,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:923,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:930,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 913
    functionDepth: 1
    functionLinenumber: 913
    functionLinenumberEnd: 931
    functionName: set_foreign_size
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - set_foreign_size_estimates
    - Max
    - clamp_row_est
    - RelOptInfo*::fdwroutine::GetForeignRelSize
    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:941,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 942
      start: 937
    functionDepth: 0
    functionLinenumber: 937
    functionLinenumberEnd: 942
    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:969,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:971,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:971,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:981,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1012,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1014,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1016,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1036,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1037,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1040,1
    - Dst: relation_excluded_by_constraints
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1050,1
    - Dst: set_dummy_rel_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1056,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1071,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1073,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1075,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1076,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1077,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1094,1
    - Dst: has_useful_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1106,1
    - Dst: add_child_rel_equivalences
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1107,1
    - Dst: set_rel_consider_parallel
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1140,1
    - Dst: set_rel_size
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1145,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1152,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1173,1
    - Dst: forboth
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1187,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1190,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1191,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1193,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1198,1
    - Dst: get_typavgwidth
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1206,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1206,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1207,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1208,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1221,1
    - Dst: rint
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1224,1
    - Dst: rint
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1226,1
    - Dst: set_dummy_rel_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1240,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1243,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 71
    argCount: 4
    argNames:
    - root
    - rel
    - rti
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Index
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1244
      start: 955
    functionDepth: 6
    functionLinenumber: 955
    functionLinenumberEnd: 1244
    functionName: set_append_rel_size
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - bms_overlap
    - set_dummy_rel_pathlist
    - relation_excluded_by_constraints
    - forboth
    - exprType
    - pfree
    - bms_is_empty
    - foreach
    - has_useful_pathkeys
    - add_child_rel_equivalences
    - set_rel_size
    - IsA
    - rint
    - find_base_rel
    - lappend
    - lfirst
    - check_stack_depth
    - Assert
    - exprTypmod
    - adjust_appendrel_attrs
    - palloc0
    - IS_SIMPLE_REL
    - set_rel_consider_parallel
    - get_typavgwidth
    - IS_DUMMY_REL
    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:1262,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1264,1
    - Dst: set_rel_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1290,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1295,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1301,1
    - Dst: add_paths_to_append_rel
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1305,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 4
    argNames:
    - root
    - rel
    - rti
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Index
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1306
      start: 1250
    functionDepth: 4
    functionLinenumber: 1250
    functionLinenumberEnd: 1306
    functionName: set_append_rel_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - add_paths_to_append_rel
    - foreach
    - lappend
    - set_rel_pathlist
    - lfirst
    - IS_DUMMY_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: 25
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1348,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1362,1
    - Dst: get_cheapest_fractional_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1383,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1389,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1390,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1401,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1402,1
    - Dst: get_cheapest_parallel_safe_total_inner
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1417,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1429,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1430,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1449,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1461,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1463,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1465,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1476,1
    - Dst: compare_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1478,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1488,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1502,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1504,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1513,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1526,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1526,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1532,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1532,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1548,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1550,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1552,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1565,1
    - Dst: pg_leftmost_one_pos32
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1566,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1566,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1567,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1570,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1573,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1585,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1606,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1608,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1616,1
    - Dst: pg_leftmost_one_pos32
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1617,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1617,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1618,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1620,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1622,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1626,1
    - Dst: generate_orderedappend_paths
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1634,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1652,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1660,1
    - Dst: get_cheapest_parameterized_child_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1670,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1679,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1683,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1684,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1696,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1698,1
    - Dst: for_each_from
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1701,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1703,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1710,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1710,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1714,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 105
    argCount: 3
    argNames:
    - root
    - rel
    - live_childrels
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1717
      start: 1320
    functionDepth: 4
    functionLinenumber: 1320
    functionLinenumberEnd: 1717
    functionName: add_paths_to_append_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 3
    functionsReached:
    - accumulate_append_subpath
    - create_append_path
    - add_path
    - list_length
    - add_partial_path
    - Min
    - get_cheapest_parallel_safe_total_inner
    - foreach
    - bms_equal
    - Max
    - get_cheapest_parameterized_child_path
    - linitial
    - for_each_from
    - lappend
    - compare_pathkeys
    - lfirst
    - get_cheapest_fractional_path
    - generate_orderedappend_paths
    - Assert
    - list_make1
    - PATH_REQ_OUTER
    - pg_leftmost_one_pos32
    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:1348,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1362,1
    - Dst: get_cheapest_fractional_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1383,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1389,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1390,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1401,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1402,1
    - Dst: get_cheapest_parallel_safe_total_inner
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1417,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1429,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1430,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1449,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1461,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1463,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1465,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1476,1
    - Dst: compare_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1478,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1488,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1502,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1504,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1513,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 51
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1518
      start: 1346
    functionDepth: 2
    functionLinenumber: 1346
    functionLinenumberEnd: 1518
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 226
    functionsReached:
    - lfirst
    - Assert
    - linitial
    - get_cheapest_parallel_safe_total_inner
    - foreach
    - bms_equal
    - lappend
    - compare_pathkeys
    - PATH_REQ_OUTER
    - accumulate_append_subpath
    - get_cheapest_fractional_path
    linkageType: ''
    returnType: void
    signature: void foreach(l, live_childrels)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1476,1
    - Dst: compare_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1478,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1484
      start: 1474
    functionDepth: 1
    functionLinenumber: 1474
    functionLinenumberEnd: 1484
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 226
    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:1502,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1504,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1509
      start: 1500
    functionDepth: 1
    functionLinenumber: 1500
    functionLinenumberEnd: 1509
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 226
    functionsReached:
    - bms_equal
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lco, all_child_outers)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1548,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1550,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1551
      start: 1546
    functionDepth: 1
    functionLinenumber: 1546
    functionLinenumberEnd: 1551
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 226
    functionsReached:
    - Max
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, partial_subpaths)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1606,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1609
      start: 1604
    functionDepth: 1
    functionLinenumber: 1604
    functionLinenumberEnd: 1609
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 226
    functionsReached:
    - Max
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, pa_partial_subpaths)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1652,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1660,1
    - Dst: get_cheapest_parameterized_child_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1670,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1679,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1683,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1684,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1687
      start: 1650
    functionDepth: 4
    functionLinenumber: 1650
    functionLinenumberEnd: 1687
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 226
    functionsReached:
    - get_cheapest_parameterized_child_path
    - create_append_path
    - add_path
    - accumulate_append_subpath
    - lfirst
    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:1660,1
    - Dst: get_cheapest_parameterized_child_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1670,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1679,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1680
      start: 1658
    functionDepth: 1
    functionLinenumber: 1658
    functionLinenumberEnd: 1680
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 226
    functionsReached:
    - get_cheapest_parameterized_child_path
    - accumulate_append_subpath
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lcr, live_childrels)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1765,1
    - Dst: partitions_are_ordered
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1766,1
    - Dst: build_partition_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1768,1
    - Dst: build_partition_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1772,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1790,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1811,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1813,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1816,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1818,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1830,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1844,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1851,1
    - Dst: get_cheapest_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1858,1
    - Dst: get_cheapest_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1864,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1879,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1900,1
    - Dst: get_cheapest_fractional_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1907,1
    - Dst: get_singleton_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1945,1
    - Dst: get_singleton_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1946,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1948,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1949,1
    - Dst: get_singleton_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1953,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1954,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1963,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1965,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1969,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1978,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1978,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1988,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1988,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1999,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1999,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2012,1
    - Dst: create_merge_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2012,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2018,1
    - Dst: create_merge_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2018,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2025,1
    - Dst: create_merge_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2025,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 64
    argCount: 4
    argNames:
    - root
    - rel
    - live_childrels
    - all_child_pathkeys
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2032
      start: 1746
    functionDepth: 4
    functionLinenumber: 1746
    functionLinenumberEnd: 2032
    functionName: generate_orderedappend_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - Assert
    - get_cheapest_path_for_pathkeys
    - create_append_path
    - add_path
    - get_cheapest_fractional_path_for_pathkeys
    - partitions_are_ordered
    - pathkeys_contained_in
    - IS_SIMPLE_REL
    - list_length
    - create_merge_append_path
    - lappend
    - get_singleton_append_subpath
    - list_nth_node
    - build_partition_pathkeys
    - accumulate_append_subpath
    - lfirst
    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: 15
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1790,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1811,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1813,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1816,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1818,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1830,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1844,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1851,1
    - Dst: get_cheapest_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1858,1
    - Dst: get_cheapest_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1864,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1879,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1900,1
    - Dst: get_cheapest_fractional_path_for_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1907,1
    - Dst: get_singleton_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1945,1
    - Dst: get_singleton_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1946,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1948,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1949,1
    - Dst: get_singleton_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1953,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1954,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1963,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1965,1
    - Dst: accumulate_append_subpath
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1969,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1978,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1978,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1988,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1988,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1999,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:1999,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2012,1
    - Dst: create_merge_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2012,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2018,1
    - Dst: create_merge_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2018,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2025,1
    - Dst: create_merge_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2025,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 59
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2031
      start: 1788
    functionDepth: 4
    functionLinenumber: 1788
    functionLinenumberEnd: 2031
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 226
    functionsReached:
    - Assert
    - get_cheapest_path_for_pathkeys
    - create_append_path
    - add_path
    - get_cheapest_fractional_path_for_pathkeys
    - create_merge_append_path
    - list_length
    - pathkeys_contained_in
    - lappend
    - get_singleton_append_subpath
    - list_nth_node
    - accumulate_append_subpath
    - lfirst
    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:2053,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2058,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2059,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2059,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2071,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2073,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2076,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2076,1
    - Dst: compare_path_costs
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2084,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2088,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2088,1
    - Dst: reparameterize_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2090,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2093,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2093,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2093,1
    - Dst: compare_path_costs
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2096,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 22
    argCount: 3
    argNames:
    - root
    - rel
    - required_outer
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2106
      start: 2041
    functionDepth: 5
    functionLinenumber: 2041
    functionLinenumberEnd: 2106
    functionName: get_cheapest_parameterized_child_path
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 3
    functionsReached:
    - Assert
    - bms_is_subset
    - compare_path_costs
    - get_cheapest_path_for_pathkeys
    - reparameterize_path
    - foreach
    - bms_equal
    - PATH_REQ_OUTER
    - lfirst
    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:2132,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2138,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2146,1
    - Dst: list_copy_tail
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2147,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2149,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2151,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2156,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2160,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2164,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - path
    - subpaths
    - special_subpaths
    argTypes:
    - Path*
    - List**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2165
      start: 2129
    functionDepth: 1
    functionLinenumber: 2129
    functionLinenumberEnd: 2165
    functionName: accumulate_append_subpath
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 6
    functionsReached:
    - list_concat
    - IsA
    - lappend
    - list_copy_tail
    - list_copy_head
    linkageType: ''
    returnType: void
    signature: void accumulate_append_subpath(Path *path, List **subpaths, List **special_subpaths)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2177,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2179,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2183,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2184,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2186,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2190,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2191,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - path
    argTypes:
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2195
      start: 2174
    functionDepth: 1
    functionLinenumber: 2174
    functionLinenumberEnd: 2195
    functionName: get_singleton_append_subpath
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 2
    functionsReached:
    - linitial
    - Assert
    - IsA
    - list_length
    linkageType: ''
    returnType: Path
    signature: 'Path *

      get_singleton_append_subpath(Path *path)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2220,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2220,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - rel
    argTypes:
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2231
      start: 2208
    functionDepth: 4
    functionLinenumber: 2208
    functionLinenumberEnd: 2231
    functionName: set_dummy_rel_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 2
    functionsReached:
    - set_cheapest
    - create_append_path
    - add_path
    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:2274,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2278,1
    - Dst: contain_subplans
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2282,1
    - Dst: get_func_support
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2285,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2288,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2293,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2295,1
    - Dst: is_pseudo_constant_clause
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2301,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2305,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2314,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2314,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2315,1
    - Dst: get_op_index_interpretation
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2326,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2330,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2403,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2415,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2419,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2421,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2424,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 69
    argCount: 9
    argNames:
    - subquery
    - rte
    - rti
    - attno
    - wfunc
    - opexpr
    - wfunc_left
    - keep_original
    - run_cond_attrs
    argTypes:
    - Query*
    - RangeTblEntry*
    - Index
    - AttrNumber
    - WindowFunc*
    - OpExpr*
    - bool
    - bool*
    - Bitmapset**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2431
      start: 2256
    functionDepth: 3
    functionLinenumber: 2256
    functionLinenumberEnd: 2431
    functionName: find_window_run_conditions
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 0
    functionsReached:
    - OidFunctionCall1
    - is_pseudo_constant_clause
    - get_func_support
    - contain_subplans
    - linitial
    - lsecond
    - IsA
    - PointerGetDatum
    - get_op_index_interpretation
    - list_nth
    - get_opfamily_member_for_cmptype
    - copyObject
    - OidIsValid
    - lappend
    - makeNode
    - DatumGetPointer
    - lfirst
    - bms_add_member
    linkageType: ''
    returnType: bool
    signature: "bool find_window_run_conditions(Query *subquery, RangeTblEntry *rte,
      Index rti,\n\t\t\t\t\t\t   AttrNumber attno, WindowFunc *wfunc, OpExpr *opexpr,\n\t\t\t\t\t\t
      \  bool wfunc_left, bool *keep_original,\n\t\t\t\t\t\t   Bitmapset **run_cond_attrs)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2330,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2403,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2409
      start: 2328
    functionDepth: 1
    functionLinenumber: 2328
    functionLinenumberEnd: 2409
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 227
    functionsReached:
    - get_opfamily_member_for_cmptype
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, opinfos)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2457,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2460,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2471,1
    - Dst: func_strict
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2472,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2482,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2483,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2485,1
    - Dst: find_window_run_conditions
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2488,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2495,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2496,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2498,1
    - Dst: find_window_run_conditions
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2501,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 5
    argNames:
    - subquery
    - rte
    - rti
    - clause
    - run_cond_attrs
    argTypes:
    - Query*
    - RangeTblEntry*
    - Index
    - Node*
    - Bitmapset**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2508
      start: 2447
    functionDepth: 4
    functionLinenumber: 2447
    functionLinenumberEnd: 2508
    functionName: check_and_push_window_quals
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 0
    functionsReached:
    - func_strict
    - linitial
    - IsA
    - lsecond
    - list_length
    - list_nth
    - set_opfuncid
    - find_window_run_conditions
    linkageType: ''
    returnType: bool
    signature: "bool check_and_push_window_quals(Query *subquery, RangeTblEntry *rte,
      Index rti,\n\t\t\t\t\t\t\tNode *clause, Bitmapset **run_cond_attrs)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2541,1
    - Dst: memset
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2558,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2560,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2560,1
    - Dst: subquery_is_pushdown_safe
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2592,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2598,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2600,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2605,1
    - Dst: qual_is_pushdown_safe
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2609,1
    - Dst: subquery_push_qual
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2613,1
    - Dst: check_and_push_window_quals
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2625,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2633,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2638,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2646,1
    - Dst: remove_unused_subquery_outputs
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2654,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2668,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2674,1
    - Dst: subquery_planner
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2677,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2689,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2691,1
    - Dst: set_dummy_rel_pathlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2693,1
    - Dst: set_subquery_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2702,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2709,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2709,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2714,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2716,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2719,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2726,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2738,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2740,1
    - Dst: convert_subquery_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2744,1
    - Dst: make_tlist_from_pathtarget
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2747,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2750,1
    - Dst: create_subqueryscan_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2751,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2757,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2760,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2764,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2766,1
    - Dst: convert_subquery_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2770,1
    - Dst: make_tlist_from_pathtarget
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2773,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2776,1
    - Dst: create_subqueryscan_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2777,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 69
    argCount: 4
    argNames:
    - root
    - rel
    - rti
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Index
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2783
      start: 2522
    functionDepth: 5
    functionLinenumber: 2522
    functionLinenumberEnd: 2783
    functionName: set_subquery_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - subquery_planner
    - set_dummy_rel_pathlist
    - check_and_push_window_quals
    - remove_unused_subquery_outputs
    - add_path
    - qual_is_pushdown_safe
    - list_length
    - add_partial_path
    - set_subquery_size_estimates
    - make_tlist_from_pathtarget
    - pfree
    - convert_subquery_pathkeys
    - bms_is_empty
    - foreach
    - foreach_current_index
    - fetch_upper_rel
    - create_subqueryscan_path
    - IsA
    - lappend
    - lfirst
    - Assert
    - memset
    - subquery_push_qual
    - palloc0
    - copyObject
    - bms_membership
    - IS_DUMMY_REL
    - subquery_is_pushdown_safe
    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:2818,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2820,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2823,1
    - Dst: build_expression_pathkey
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2840,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2848,1
    - Dst: create_functionscan_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2848,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2850
      start: 2789
    functionDepth: 4
    functionLinenumber: 2789
    functionLinenumberEnd: 2850
    functionName: set_function_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - build_expression_pathkey
    - add_path
    - IsA
    - foreach
    - create_functionscan_path
    - lfirst
    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:2869,1
    - Dst: create_valuesscan_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2869,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2870
      start: 2856
    functionDepth: 4
    functionLinenumber: 2856
    functionLinenumberEnd: 2870
    functionName: set_values_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - add_path
    - create_valuesscan_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:2889,1
    - Dst: create_tablefuncscan_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2889,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2891
      start: 2876
    functionDepth: 4
    functionLinenumber: 2876
    functionLinenumberEnd: 2891
    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:2923,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2932,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2934,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2936,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2941,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2942,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2943,1
    - Dst: list_nth_int
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2944,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2946,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2948,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2948,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2948,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2949,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2950,1
    - Dst: set_cte_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2953,1
    - Dst: convert_subquery_pathkeys
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2956,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2969,1
    - Dst: create_ctescan_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2969,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2970
      start: 2900
    functionDepth: 4
    functionLinenumber: 2900
    functionLinenumberEnd: 2970
    functionName: set_cte_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - Assert
    - convert_subquery_pathkeys
    - add_path
    - list_nth_int
    - list_length
    - foreach
    - set_cte_size_estimates
    - elog
    - list_nth
    - create_ctescan_path
    - strcmp
    - lfirst
    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:2986,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2996,1
    - Dst: create_namedtuplestorescan_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:2996,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2997
      start: 2979
    functionDepth: 4
    functionLinenumber: 2979
    functionLinenumberEnd: 2997
    functionName: set_namedtuplestore_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - add_path
    - set_namedtuplestore_size_estimates
    - create_namedtuplestorescan_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:3013,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3023,1
    - Dst: create_resultscan_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3023,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3024
      start: 3006
    functionDepth: 4
    functionLinenumber: 3006
    functionLinenumberEnd: 3024
    functionName: set_result_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - set_result_size_estimates
    - add_path
    - create_resultscan_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:3048,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3055,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3059,1
    - Dst: set_cte_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3062,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3073,1
    - Dst: create_worktablescan_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3073,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - root
    - rel
    - rte
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3074
      start: 3033
    functionDepth: 4
    functionLinenumber: 3033
    functionLinenumberEnd: 3074
    functionName: set_worktable_pathlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - create_worktablescan_path
    - set_cte_size_estimates
    - elog
    - add_path
    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:3114,1
    - Dst: compute_gather_rows
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3115,1
    - Dst: create_gather_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3117,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3119,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3125,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3127,1
    - Dst: compute_gather_rows
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3133,1
    - Dst: create_gather_merge_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3134,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3136,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - root
    - rel
    - override_rows
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3138
      start: 3092
    functionDepth: 4
    functionLinenumber: 3092
    functionLinenumberEnd: 3138
    functionName: generate_gather_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 0
    functionsReached:
    - compute_gather_rows
    - linitial
    - add_path
    - create_gather_merge_path
    - create_gather_path
    - foreach
    - lfirst
    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:3178,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3180,1
    - Dst: relation_can_be_sorted_early
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3195,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3207,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3208,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3211,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3212,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - root
    - rel
    - require_parallel_safe
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3217
      start: 3161
    functionDepth: 1
    functionLinenumber: 3161
    functionLinenumberEnd: 3217
    functionName: get_useful_pathkeys_for_relation
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 0
    functionsReached:
    - list_copy_head
    - relation_can_be_sorted_early
    - list_length
    - foreach
    - lappend
    - lfirst
    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:3247,1
    - Dst: get_useful_pathkeys_for_relation
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3250,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3253,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3261,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3266,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3268,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3271,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3312,1
    - Dst: create_incremental_sort_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3319,1
    - Dst: compute_gather_rows
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3325,1
    - Dst: create_gather_merge_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3326,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3333,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 3
    argNames:
    - root
    - rel
    - override_rows
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3336
      start: 3229
    functionDepth: 5
    functionLinenumber: 3229
    functionLinenumberEnd: 3336
    functionName: generate_useful_gather_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 6
    functionsReached:
    - create_incremental_sort_path
    - compute_gather_rows
    - linitial
    - get_useful_pathkeys_for_relation
    - add_path
    - create_gather_merge_path
    - pathkeys_count_contained_in
    - foreach
    - generate_gather_paths
    - create_sort_path
    - lfirst
    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:3261,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3266,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3268,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3271,1
    - Dst: create_sort_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3312,1
    - Dst: create_incremental_sort_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3319,1
    - Dst: compute_gather_rows
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3325,1
    - Dst: create_gather_merge_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3326,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3333,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3335
      start: 3259
    functionDepth: 4
    functionLinenumber: 3259
    functionLinenumberEnd: 3335
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 234
    functionsReached:
    - create_incremental_sort_path
    - compute_gather_rows
    - add_path
    - create_gather_merge_path
    - pathkeys_count_contained_in
    - foreach
    - create_sort_path
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, useful_pathkeys_list)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3357,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3370,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3373,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3377,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3379,1
    - Dst: make_rel_from_joinlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3382,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3386,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3387,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3391,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3399,1
    - Dst: geqo
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3415,1
    - Dst: standard_join_search
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3417,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - root
    - joinlist
    argTypes:
    - PlannerInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3419
      start: 3345
    functionDepth: 6
    functionLinenumber: 3345
    functionLinenumberEnd: 3419
    functionName: make_rel_from_joinlist
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 2
    functionsReached:
    - nodeTag
    - linitial
    - standard_join_search
    - make_rel_from_joinlist
    - geqo
    - IsA
    - list_length
    - find_base_rel
    - elog
    - lappend
    - lfirst
    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:3370,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3373,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3377,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3379,1
    - Dst: make_rel_from_joinlist
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3382,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3386,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3387,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3391,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3392
      start: 3368
    functionDepth: 7
    functionLinenumber: 3368
    functionLinenumberEnd: 3392
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 234
    functionsReached:
    - nodeTag
    - make_rel_from_joinlist
    - IsA
    - find_base_rel
    - elog
    - lappend
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(jl, joinlist)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3460,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3473,1
    - Dst: join_search_one_level
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3486,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3498,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3500,1
    - Dst: generate_partitionwise_join_paths
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3503,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3511,1
    - Dst: generate_useful_gather_paths
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3512,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3515,1
    - Dst: pprint
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3518,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3527,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3528,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3528,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3530,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 3
    argNames:
    - root
    - levels_needed
    - initial_rels
    argTypes:
    - PlannerInfo*
    - int
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3535
      start: 3450
    functionDepth: 6
    functionLinenumber: 3450
    functionLinenumberEnd: 3535
    functionName: standard_join_search
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - pprint
    - join_search_one_level
    - Assert
    - generate_partitionwise_join_paths
    - linitial
    - palloc0
    - foreach
    - list_length
    - bms_equal
    - generate_useful_gather_paths
    - elog
    - set_cheapest
    - lfirst
    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:3648,1
    - Dst: recurse_pushdown_safe
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3655,1
    - Dst: castNode
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3665,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3666,1
    - Dst: compare_tlist_datatypes
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3667,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 21
    argCount: 3
    argNames:
    - subquery
    - topquery
    - safetyInfo
    argTypes:
    - Query*
    - Query*
    - pushdown_safety_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3672
      start: 3621
    functionDepth: 1
    functionLinenumber: 3621
    functionLinenumberEnd: 3672
    functionName: subquery_is_pushdown_safe
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - Assert
    - recurse_pushdown_safe
    - castNode
    - check_output_expressions
    - 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:3681,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3684,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3687,1
    - Dst: subquery_is_pushdown_safe
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3688,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3690,1
    - Dst: recurse_pushdown_safe
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3698,1
    - Dst: recurse_pushdown_safe
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3700,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3705,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3706,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - setOp
    - topquery
    - safetyInfo
    argTypes:
    - Node*
    - Query*
    - pushdown_safety_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3709
      start: 3677
    functionDepth: 2
    functionLinenumber: 3677
    functionLinenumberEnd: 3709
    functionName: recurse_pushdown_safe
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 2
    functionsReached:
    - nodeTag
    - Assert
    - recurse_pushdown_safe
    - IsA
    - elog
    - rt_fetch
    - subquery_is_pushdown_safe
    linkageType: ''
    returnType: bool
    signature: "bool recurse_pushdown_safe(Node *setOp, Query *topquery,\n\t\t\t\t\t
      \ pushdown_safety_info *safetyInfo)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3751,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3753,1
    - Dst: expression_returns_set
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3762,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3771,1
    - Dst: targetIsInSortList
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3781,1
    - Dst: targetIsInAllPartitionLists
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3792,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 21
    argCount: 2
    argNames:
    - subquery
    - safetyInfo
    argTypes:
    - Query*
    - pushdown_safety_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3799
      start: 3746
    functionDepth: 2
    functionLinenumber: 3746
    functionLinenumberEnd: 3799
    functionName: check_output_expressions
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - expression_returns_set
    - targetIsInSortList
    - foreach
    - targetIsInAllPartitionLists
    - contain_volatile_functions
    - lfirst
    linkageType: ''
    returnType: void
    signature: void check_output_expressions(Query *subquery, pushdown_safety_info
      *safetyInfo)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3823,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3827,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3832,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3833,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3833,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3835,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3838,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - tlist
    - colTypes
    - safetyInfo
    argTypes:
    - List*
    - List*
    - pushdown_safety_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3839
      start: 3818
    functionDepth: 2
    functionLinenumber: 3818
    functionLinenumberEnd: 3839
    functionName: compare_tlist_datatypes
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - exprType
    - list_head
    - lnext
    - elog
    - lfirst_oid
    - lfirst
    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:3827,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3832,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3833,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3833,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3835,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3836
      start: 3825
    functionDepth: 2
    functionLinenumber: 3825
    functionLinenumberEnd: 3836
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 236
    functionsReached:
    - exprType
    - lnext
    - elog
    - lfirst_oid
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, tlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3856,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3858,1
    - Dst: targetIsInSortList
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3860,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - tle
    - query
    argTypes:
    - TargetEntry*
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3864
      start: 3851
    functionDepth: 1
    functionLinenumber: 3851
    functionLinenumberEnd: 3864
    functionName: targetIsInAllPartitionLists
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - targetIsInSortList
    - lfirst
    - foreach
    linkageType: ''
    returnType: bool
    signature: bool targetIsInAllPartitionLists(TargetEntry *tle, Query *query)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: contain_subplans
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3904,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3909,1
    - Dst: contain_leaked_vars
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3914,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3928,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3931,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3940,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3959,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3987,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 32
    argCount: 4
    argNames:
    - subquery
    - rti
    - rinfo
    - safetyInfo
    argTypes:
    - Query*
    - Index
    - RestrictInfo*
    - pushdown_safety_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3990
      start: 3894
    functionDepth: 2
    functionLinenumber: 3894
    functionLinenumberEnd: 3990
    functionName: qual_is_pushdown_safe
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - Assert
    - contain_subplans
    - IsA
    - contain_volatile_functions
    - list_free
    - lfirst
    - pull_var_clause
    - contain_leaked_vars
    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:3931,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3940,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:3959,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3985
      start: 3929
    functionDepth: 1
    functionLinenumber: 3929
    functionLinenumberEnd: 3985
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 237
    functionsReached:
    - Assert
    - IsA
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(vl, vars)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: recurse_push_qual
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4001,1
    - Dst: ReplaceVarsFromTargetList
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4015,1
    - Dst: make_and_qual
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4027,1
    - Dst: make_and_qual
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4030,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 4
    argNames:
    - subquery
    - rte
    - rti
    - qual
    argTypes:
    - Query*
    - RangeTblEntry*
    - Index
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4038
      start: 3995
    functionDepth: 1
    functionLinenumber: 3995
    functionLinenumberEnd: 4038
    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:4047,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4050,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4053,1
    - Dst: subquery_push_qual
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4054,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4056,1
    - Dst: recurse_push_qual
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4060,1
    - Dst: recurse_push_qual
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4061,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4065,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4066,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: 4068
      start: 4043
    functionDepth: 2
    functionLinenumber: 4043
    functionLinenumberEnd: 4068
    functionName: recurse_push_qual
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 2
    functionsReached:
    - nodeTag
    - Assert
    - subquery_push_qual
    - IsA
    - recurse_push_qual
    - elog
    - rt_fetch
    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:4132,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4135,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4137,1
    - Dst: pull_varattnos
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4139,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4146,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4154,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4156,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4173,1
    - Dst: expression_returns_set
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4182,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4189,1
    - Dst: makeNullConst
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4197,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4197,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4198,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4199,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 23
    argCount: 3
    argNames:
    - subquery
    - rel
    - extra_used_attrs
    argTypes:
    - Query*
    - RelOptInfo*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4201
      start: 4095
    functionDepth: 2
    functionLinenumber: 4095
    functionLinenumberEnd: 4201
    functionName: remove_unused_subquery_outputs
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 1
    functionsReached:
    - makeNullConst
    - exprType
    - exprCollation
    - expression_returns_set
    - exprTypmod
    - foreach
    - pull_varattnos
    - contain_volatile_functions
    - bms_is_member
    - lfirst
    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:4215,1
    - Dst: compute_parallel_worker
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4218,1
    - Dst: add_partial_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4224,1
    - Dst: create_bitmap_heap_path
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4224,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - root
    - rel
    - bitmapqual
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4226
      start: 4207
    functionDepth: 4
    functionLinenumber: 4207
    functionLinenumberEnd: 4226
    functionName: create_partial_bitmap_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 0
    functionsReached:
    - create_bitmap_heap_path
    - add_partial_path
    - compute_bitmap_pages
    - compute_parallel_worker
    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:4282,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4300,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4310,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4317,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: 4320
      start: 4243
    functionDepth: 0
    functionLinenumber: 4243
    functionLinenumberEnd: 4320
    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: 7
    BranchProfiles: []
    Callsites:
    - Dst: IS_JOIN_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4340,1
    - Dst: IS_PARTITIONED_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4344,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4348,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4351,1
    - Dst: generate_partitionwise_join_paths
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4366,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4380,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4383,1
    - Dst: pprint
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4387,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4390,1
    - Dst: mark_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4396,1
    - Dst: add_paths_to_append_rel
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4401,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/allpaths.c:4402,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4403
      start: 4331
    functionDepth: 5
    functionLinenumber: 4331
    functionLinenumberEnd: 4403
    functionName: generate_partitionwise_join_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/path/allpaths.c
    functionUses: 4
    functionsReached:
    - check_stack_depth
    - pprint
    - Assert
    - generate_partitionwise_join_paths
    - mark_dummy_rel
    - IS_JOIN_REL
    - add_paths_to_append_rel
    - lappend
    - IS_PARTITIONED_REL
    - set_cheapest
    - list_free
    - IS_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:79,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:93,1
    - Dst: has_join_restriction
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:96,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:114,1
    - Dst: make_rels_by_clause_joins
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:118,1
    - Dst: make_rels_by_clauseless_joins
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:134,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:161,1
    - Dst: has_join_restriction
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:171,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:175,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:181,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:183,1
    - Dst: have_relevant_joinclause
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:190,1
    - Dst: have_join_order_restriction
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:191,1
    - Dst: make_join_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:193,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:227,1
    - Dst: make_rels_by_clauseless_joins
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:229,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:255,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 34
    argCount: 2
    argNames:
    - root
    - level
    argTypes:
    - PlannerInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 72
    functionDepth: 2
    functionLinenumber: 72
    functionLinenumberEnd: 257
    functionName: join_search_one_level
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 1
    functionsReached:
    - bms_overlap
    - Assert
    - make_rels_by_clauseless_joins
    - have_join_order_restriction
    - make_join_rel
    - has_join_restriction
    - foreach_current_index
    - elog
    - make_rels_by_clause_joins
    - have_relevant_joinclause
    - lfirst
    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:93,1
    - Dst: has_join_restriction
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:96,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:114,1
    - Dst: make_rels_by_clause_joins
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:118,1
    - Dst: make_rels_by_clauseless_joins
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:134,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 138
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 238
    functionsReached:
    - make_rels_by_clauseless_joins
    - has_join_restriction
    - foreach_current_index
    - make_rels_by_clause_joins
    - lfirst
    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:161,1
    - Dst: has_join_restriction
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:171,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:175,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:181,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:183,1
    - Dst: have_relevant_joinclause
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:190,1
    - Dst: have_join_order_restriction
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:191,1
    - Dst: make_join_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:193,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 159
    functionDepth: 2
    functionLinenumber: 159
    functionLinenumberEnd: 197
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 238
    functionsReached:
    - bms_overlap
    - have_join_order_restriction
    - has_join_restriction
    - foreach_current_index
    - make_join_rel
    - have_relevant_joinclause
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(r, joinrels[k])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:181,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:183,1
    - Dst: have_relevant_joinclause
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:190,1
    - Dst: have_join_order_restriction
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:191,1
    - Dst: make_join_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:193,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 179
    functionDepth: 2
    functionLinenumber: 179
    functionLinenumberEnd: 196
    functionName: for_each_from
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 3
    functionsReached:
    - bms_overlap
    - have_join_order_restriction
    - make_join_rel
    - have_relevant_joinclause
    - lfirst
    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:227,1
    - Dst: make_rels_by_clauseless_joins
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 232
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 238
    functionsReached:
    - make_rels_by_clauseless_joins
    - lfirst
    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:289,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:291,1
    - Dst: have_relevant_joinclause
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:292,1
    - Dst: have_join_order_restriction
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:293,1
    - Dst: make_join_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:295,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: 298
      start: 279
    functionDepth: 2
    functionLinenumber: 279
    functionLinenumberEnd: 298
    functionName: make_rels_by_clause_joins
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 2
    functionsReached:
    - bms_overlap
    - have_join_order_restriction
    - make_join_rel
    - have_relevant_joinclause
    - lfirst
    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:289,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:291,1
    - Dst: have_relevant_joinclause
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:292,1
    - Dst: have_join_order_restriction
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:293,1
    - Dst: make_join_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:295,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 287
    functionDepth: 2
    functionLinenumber: 287
    functionLinenumberEnd: 297
    functionName: for_each_from
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 3
    functionsReached:
    - bms_overlap
    - have_join_order_restriction
    - make_join_rel
    - have_relevant_joinclause
    - lfirst
    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:322,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:324,1
    - Dst: make_join_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:326,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - root
    - old_rel
    - other_rels
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 329
    functionName: make_rels_by_clauseless_joins
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 3
    functionsReached:
    - bms_overlap
    - lfirst
    - make_join_rel
    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:322,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:324,1
    - Dst: make_join_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:326,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 320
    functionDepth: 1
    functionLinenumber: 320
    functionLinenumberEnd: 328
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 238
    functionsReached:
    - bms_overlap
    - lfirst
    - make_join_rel
    linkageType: ''
    returnType: void
    signature: void foreach(l, other_rels)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:377,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:379,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:386,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:393,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:399,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:400,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:402,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:403,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:414,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:415,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:417,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:418,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:429,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:430,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:437,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:438,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:446,1
    - Dst: create_unique_path
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:447,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:479,1
    - Dst: create_unique_path
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:480,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:509,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:510,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:520,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:569,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:570,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:582,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:594,1
    - Dst: min_join_parameterization
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:611,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:615,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:621,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:623,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:629,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:630,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:632,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:638,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: 647
      start: 349
    functionDepth: 4
    functionLinenumber: 349
    functionLinenumberEnd: 647
    functionName: join_is_legal
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 0
    functionsReached:
    - bms_overlap
    - bms_is_subset
    - bms_add_members
    - bms_copy
    - create_unique_path
    - min_join_parameterization
    - foreach
    - bms_equal
    - lfirst
    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: 681
      start: 660
    functionDepth: 0
    functionLinenumber: 660
    functionLinenumberEnd: 681
    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:707,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:707,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:710,1
    - Dst: join_is_legal
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:713,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:717,1
    - Dst: add_outer_joins_to_relids
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:725,1
    - Dst: init_dummy_sjinfo
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:745,1
    - Dst: build_join_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:752,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:760,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:762,1
    - Dst: populate_joinrel_with_paths
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:767,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:770,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 3
    argNames:
    - root
    - rel1
    - rel2
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 695
    functionDepth: 5
    functionLinenumber: 695
    functionLinenumberEnd: 773
    functionName: make_join_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 9
    functionsReached:
    - bms_overlap
    - build_join_rel
    - Assert
    - join_is_legal
    - init_dummy_sjinfo
    - add_outer_joins_to_relids
    - is_dummy_rel
    - bms_union
    - bms_free
    - populate_joinrel_with_paths
    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:808,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:817,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:821,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:830,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:840,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:842,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:848,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:852,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:853,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:854,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:855,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:857,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:860,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:868,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: 875
      start: 792
    functionDepth: 1
    functionLinenumber: 792
    functionLinenumberEnd: 875
    functionName: add_outer_joins_to_relids
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 1
    functionsReached:
    - bms_is_subset
    - bms_add_members
    - bms_copy
    - foreach
    - lappend
    - bms_is_member
    - lfirst
    - bms_add_member
    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: 18
    BranchProfiles: []
    Callsites:
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:910,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:910,1
    - Dst: restriction_is_constant_false
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:911,1
    - Dst: mark_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:913,1
    - Dst: add_paths_to_joinrel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:916,1
    - Dst: add_paths_to_joinrel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:919,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:924,1
    - Dst: restriction_is_constant_false
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:925,1
    - Dst: mark_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:927,1
    - Dst: restriction_is_constant_false
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:930,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:931,1
    - Dst: mark_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:932,1
    - Dst: add_paths_to_joinrel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:933,1
    - Dst: add_paths_to_joinrel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:936,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:941,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:941,1
    - Dst: restriction_is_constant_false
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:942,1
    - Dst: mark_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:944,1
    - Dst: add_paths_to_joinrel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:947,1
    - Dst: add_paths_to_joinrel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:950,1
    - Dst: ereport
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:962,1
    - Dst: errcode
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:963,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:964,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:974,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:975,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:977,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:977,1
    - Dst: restriction_is_constant_false
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:978,1
    - Dst: mark_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:980,1
    - Dst: add_paths_to_joinrel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:983,1
    - Dst: add_paths_to_joinrel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:986,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:999,1
    - Dst: create_unique_path
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1000,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1003,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1003,1
    - Dst: restriction_is_constant_false
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1004,1
    - Dst: mark_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1006,1
    - Dst: add_paths_to_joinrel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1009,1
    - Dst: add_paths_to_joinrel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1012,1
    - Dst: is_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1018,1
    - Dst: restriction_is_constant_false
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1019,1
    - Dst: mark_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1021,1
    - Dst: restriction_is_constant_false
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1024,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1025,1
    - Dst: mark_dummy_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1026,1
    - Dst: add_paths_to_joinrel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1027,1
    - Dst: add_paths_to_joinrel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1030,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1036,1
    - Dst: try_partitionwise_join
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1041,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: 1042
      start: 884
    functionDepth: 4
    functionLinenumber: 884
    functionLinenumberEnd: 1042
    functionName: populate_joinrel_with_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 1
    functionsReached:
    - errmsg
    - add_paths_to_joinrel
    - bms_is_subset
    - mark_dummy_rel
    - create_unique_path
    - try_partitionwise_join
    - ereport
    - is_dummy_rel
    - bms_equal
    - elog
    - restriction_is_constant_false
    - errcode
    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:1076,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1077,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1087,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1089,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1091,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1092,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1104,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1106,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1113,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1114,1
    - Dst: bms_is_subset
      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: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1131,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1132,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1139,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1140,1
    - Dst: has_legal_joinclause
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1158,1
    - Dst: has_legal_joinclause
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1159,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 32
    argCount: 3
    argNames:
    - root
    - rel1
    - rel2
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1164
      start: 1065
    functionDepth: 1
    functionLinenumber: 1065
    functionLinenumberEnd: 1164
    functionName: have_join_order_restriction
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 6
    functionsReached:
    - bms_overlap
    - bms_is_subset
    - has_legal_joinclause
    - foreach
    - lfirst
    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:1186,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1188,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1190,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1191,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1195,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1197,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1204,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1205,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1209,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1210,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 16
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1215
      start: 1178
    functionDepth: 1
    functionLinenumber: 1178
    functionLinenumberEnd: 1215
    functionName: has_join_restriction
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 3
    functionsReached:
    - bms_overlap
    - bms_is_subset
    - foreach
    - bms_equal
    - lfirst
    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:1239,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1241,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1244,1
    - Dst: have_relevant_joinclause
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1247,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1254,1
    - Dst: join_is_legal
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1256,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1260,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1264,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1269
      start: 1234
    functionDepth: 5
    functionLinenumber: 1234
    functionLinenumberEnd: 1269
    functionName: has_legal_joinclause
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 1
    functionsReached:
    - bms_overlap
    - join_is_legal
    - foreach
    - bms_union
    - have_relevant_joinclause
    - lfirst
    - bms_free
    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:1287,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1297,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1299,1
    - Dst: IS_DUMMY_APPEND
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1304,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - rel
    argTypes:
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1307
      start: 1275
    functionDepth: 1
    functionLinenumber: 1275
    functionLinenumberEnd: 1307
    functionName: is_dummy_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 2
    functionsReached:
    - IS_DUMMY_APPEND
    - IsA
    - linitial
    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:1330,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1334,1
    - Dst: GetMemoryChunkContext
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1334,1
    - Dst: add_path
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1344,1
    - Dst: create_append_path
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1344,1
    - Dst: set_cheapest
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1349,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1351,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - rel
    argTypes:
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1352
      start: 1324
    functionDepth: 4
    functionLinenumber: 1324
    functionLinenumberEnd: 1352
    functionName: mark_dummy_rel
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 3
    functionsReached:
    - MemoryContextSwitchTo
    - create_append_path
    - add_path
    - GetMemoryChunkContext
    - is_dummy_rel
    - set_cheapest
    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:1382,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1384,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1387,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1394,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 3
    argNames:
    - restrictlist
    - joinrel
    - only_pushed_down
    argTypes:
    - List*
    - RelOptInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1399
      start: 1367
    functionDepth: 1
    functionLinenumber: 1367
    functionLinenumberEnd: 1399
    functionName: restriction_is_constant_false
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 1
    functionsReached:
    - DatumGetBool
    - RINFO_IS_PUSHED_DOWN
    - IsA
    - 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:1382,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1384,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1387,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1394,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1397
      start: 1380
    functionDepth: 1
    functionLinenumber: 1380
    functionLinenumberEnd: 1397
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 243
    functionsReached:
    - DatumGetBool
    - RINFO_IS_PUSHED_DOWN
    - IsA
    - 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:1426,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1427,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1435,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1442,1
    - Dst: IS_PARTITIONED_REL
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1448,1
    - Dst: IS_PARTITIONED_REL
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1448,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1451,1
    - Dst: REL_HAS_ALL_PART_PROPS
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1451,1
    - Dst: REL_HAS_ALL_PART_PROPS
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1451,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1454,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1461,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1464,1
    - Dst: compute_partition_bounds
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1466,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1471,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1472,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1495,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1496,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1497,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1498,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1506,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1507,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1534,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1562,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1563,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1563,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1569,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1570,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1570,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1576,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1576,1
    - Dst: build_child_join_sjinfo
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1582,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1587,1
    - Dst: find_appinfos_by_relids
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1588,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1596,1
    - Dst: build_child_join_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1604,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1608,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1609,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1614,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1614,1
    - Dst: adjust_child_relids
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1615,1
    - Dst: populate_joinrel_with_paths
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1619,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1629,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1630,1
    - Dst: free_child_join_sjinfo
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1631,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 81
    argCount: 6
    argNames:
    - root
    - rel1
    - rel2
    - joinrel
    - parent_sjinfo
    - parent_restrictlist
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    - RelOptInfo*
    - SpecialJoinInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1633
      start: 1421
    functionDepth: 5
    functionLinenumber: 1421
    functionLinenumberEnd: 1633
    functionName: try_partitionwise_join
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 1
    functionsReached:
    - bms_overlap
    - bms_union
    - pfree
    - bms_equal
    - REL_HAS_ALL_PART_PROPS
    - build_child_join_rel
    - bms_free
    - lfirst_node
    - list_head
    - lnext
    - free_child_join_sjinfo
    - elog
    - IS_PARTITIONED_REL
    - bms_add_member
    - check_stack_depth
    - adjust_child_relids
    - Assert
    - populate_joinrel_with_paths
    - bms_add_members
    - find_appinfos_by_relids
    - compute_partition_bounds
    - adjust_appendrel_attrs
    - IS_SIMPLE_REL
    - build_child_join_sjinfo
    - IS_DUMMY_REL
    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:1647,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1656,1
    - Dst: init_dummy_sjinfo
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1657,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1661,1
    - Dst: find_appinfos_by_relids
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1662,1
    - Dst: find_appinfos_by_relids
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1664,1
    - Dst: adjust_child_relids
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1667,1
    - Dst: adjust_child_relids
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1669,1
    - Dst: adjust_child_relids
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1672,1
    - Dst: adjust_child_relids
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1674,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1678,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1683,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1684,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: 1687
      start: 1643
    functionDepth: 2
    functionLinenumber: 1643
    functionLinenumberEnd: 1687
    functionName: build_child_join_sjinfo
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 1
    functionsReached:
    - adjust_child_relids
    - pfree
    - Assert
    - init_dummy_sjinfo
    - find_appinfos_by_relids
    - adjust_appendrel_attrs
    - memcpy
    - makeNode
    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:1708,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1711,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1714,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1717,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1719,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1720,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1721,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1722,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1724,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1732,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - child_sjinfo
    - parent_sjinfo
    argTypes:
    - SpecialJoinInfo*
    - SpecialJoinInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1733
      start: 1697
    functionDepth: 1
    functionLinenumber: 1697
    functionLinenumberEnd: 1733
    functionName: free_child_join_sjinfo
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - 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:1755,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1756,1
    - Dst: partition_bounds_equal
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1771,1
    - Dst: partition_bounds_merge
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1782,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1793,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1797,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1801,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1805,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1806,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1807,1
    - Dst: get_matching_part_pairs
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1818,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1820,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1820,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1821,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1821,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: 1824
      start: 1739
    functionDepth: 1
    functionLinenumber: 1739
    functionLinenumberEnd: 1824
    functionName: compute_partition_bounds
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 1
    functionsReached:
    - Assert
    - get_matching_part_pairs
    - partition_bounds_merge
    - partition_bounds_equal
    - palloc0
    - 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:1835,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1836,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1860,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1861,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1869,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1871,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1871,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1871,1
    - Dst: bms_singleton_member
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1884,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1886,1
    - Dst: find_join_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1889,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1890,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1896,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1898,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1898,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1898,1
    - Dst: bms_singleton_member
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1905,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1907,1
    - Dst: find_join_rel
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1910,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1911,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1918,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/joinrels.c:1919,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: 1921
      start: 1830
    functionDepth: 3
    functionLinenumber: 1830
    functionLinenumberEnd: 1921
    functionName: get_matching_part_pairs
    functionSourceFile: /src/postgres/src/backend/optimizer/path/joinrels.c
    functionUses: 1
    functionsReached:
    - Assert
    - bms_singleton_member
    - IS_SIMPLE_REL
    - find_base_rel
    - lappend
    - find_join_rel
    - bms_num_members
    - bms_intersect
    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
    - IsCTIDVar
    - lsecond
    - IsA
    - list_length
    - contain_volatile_functions
    - is_opclause
    - bms_is_member
    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:
    - Assert
    - linitial
    - IsCTIDVar
    - lsecond
    - IsA
    - list_length
    - contain_volatile_functions
    - bms_is_member
    - pull_varnos
    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:
    - IsCurrentOfClause
    - IsTidEqualClause
    - IsTidEqualAnyClause
    - restriction_is_securely_promotable
    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:
    - lfirst
    - Assert
    - list_concat
    - lfirst_node
    - IsCurrentOfClause
    - list_make1
    - foreach
    - castNode
    - list_length
    - elog
    - RestrictInfoIsTidQual
    - TidQualFromRestrictInfoList
    - restriction_is_or_clause
    - is_andclause
    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: 245
    functionsReached:
    - lfirst
    - Assert
    - list_concat
    - lfirst_node
    - IsCurrentOfClause
    - list_make1
    - foreach
    - castNode
    - list_length
    - elog
    - RestrictInfoIsTidQual
    - TidQualFromRestrictInfoList
    - restriction_is_or_clause
    - is_andclause
    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: 245
    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:
    - bms_del_member
    - lfirst_node
    - restriction_is_securely_promotable
    - create_tidscan_path
    - add_path
    - list_make1
    - bms_union
    - join_clause_is_movable_to
    - IsTidEqualClause
    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: 245
    functionsReached:
    - bms_del_member
    - lfirst_node
    - restriction_is_securely_promotable
    - create_tidscan_path
    - add_path
    - list_make1
    - bms_union
    - join_clause_is_movable_to
    - IsTidEqualClause
    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:
    - IsCTIDVar
    - IsA
    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: 6
    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: generate_implied_equalities_for_column
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:569,1
    - Dst: BuildParameterizedTidPaths
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:576,1
    - Dst: BuildParameterizedTidPaths
      Src: /src/postgres/src/backend/optimizer/path/tidpath.c:584,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 497
    functionDepth: 6
    functionLinenumber: 497
    functionLinenumberEnd: 587
    functionName: create_tidscan_paths
    functionSourceFile: /src/postgres/src/backend/optimizer/path/tidpath.c
    functionUses: 1
    functionsReached:
    - create_tidscan_path
    - add_path
    - BuildParameterizedTidPaths
    - TidRangeQualFromRestrictInfoList
    - TidQualFromRestrictInfoList
    - create_tidrangescan_path
    - generate_implied_equalities_for_column
    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:
    - consider_index_join_clauses
    - add_path
    - create_partial_bitmap_paths
    - match_eclass_clauses_to_index
    - match_restriction_clauses_to_index
    - list_concat
    - choose_bitmap_and
    - foreach
    - generate_bitmap_or_paths
    - create_bitmap_heap_path
    - bms_is_subset
    - MemSet
    - lappend
    - lfirst
    - Assert
    - match_join_clauses_to_index
    - list_append_unique
    - get_index_paths
    - PATH_REQ_OUTER
    - get_loop_count
    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: 246
    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: 246
    functionsReached:
    - create_bitmap_heap_path
    - list_concat
    - bms_is_subset
    - choose_bitmap_and
    - add_path
    - lappend
    - PATH_REQ_OUTER
    - lfirst
    - get_loop_count
    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: 246
    functionsReached:
    - lappend
    - bms_is_subset
    - lfirst
    - 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:
    - consider_index_join_outer_rels
    - list_length
    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:
    - eclass_already_used
    - bms_subset_compare
    - list_length
    - bms_union
    - list_nth
    - get_join_index_paths
    - list_member
    - lfirst
    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: 246
    functionsReached:
    - eclass_already_used
    - bms_subset_compare
    - list_length
    - bms_union
    - list_nth
    - get_join_index_paths
    - list_member
    - lfirst
    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:
    - Assert
    - bms_is_subset
    - list_concat
    - foreach
    - MemSet
    - lappend
    - get_index_paths
    - list_member
    - lfirst
    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:
    - bms_is_subset
    - lfirst
    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: 247
    functionsReached:
    - bms_is_subset
    - lfirst
    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:
    - list_concat
    - add_path
    - build_index_paths
    - lappend
    - lfirst
    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: 247
    functionsReached:
    - add_path
    - lappend
    - lfirst
    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_copy
    - list_length
    - add_partial_path
    - list_copy_head
    - pfree
    - foreach
    - create_index_path
    - bms_del_member
    - has_useful_pathkeys
    - IsA
    - lappend
    - build_index_pathkeys
    - match_pathkeys_to_index
    - lfirst
    - Assert
    - bms_add_members
    - truncate_useless_pathkeys
    - check_index_only
    - get_loop_count
    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:
    - list_concat
    - list_concat_copy
    - match_clauses_to_index
    - build_index_paths
    - foreach
    - MemSet
    - predicate_implied_by
    - lfirst
    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
      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:
    - list_length
    - castNode
    - contain_volatile_functions
    - make_orclause
    - pfree
    - foreach
    - qsort
    - make_plain_restrictinfo
    - match_index_to_operand
    - IsA
    - get_leftop
    - list_nth
    - lappend
    - OidIsValid
    - bms_is_member
    - palloc
    - get_commutator
    - lfirst
    - Assert
    - get_rightop
    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: 251
    functionsReached:
    - get_commutator
    - match_index_to_operand
    - IsA
    - list_length
    - get_leftop
    - castNode
    - get_rightop
    - foreach
    - contain_volatile_functions
    - OidIsValid
    - bms_is_member
    - lfirst
    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:
    - choose_bitmap_and
    - list_make1
    - lappend
    - build_paths_for_OR
    - lfirst
    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: 251
    functionsReached:
    - choose_bitmap_and
    - list_make1
    - lappend
    - build_paths_for_OR
    - lfirst
    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
    - make_bitmap_paths_for_or_group
    - list_concat
    - lfirst_node
    - list_concat_copy
    - list_copy
    - choose_bitmap_and
    - list_make1
    - castNode
    - create_bitmap_or_path
    - group_similar_or_args
    - generate_bitmap_or_paths
    - lappend
    - is_andclause
    - restriction_is_or_clause
    - build_paths_for_OR
    - lfirst
    - list_free
    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: 251
    functionsReached:
    - list_delete
    - make_bitmap_paths_for_or_group
    - list_concat
    - lfirst_node
    - list_copy
    - choose_bitmap_and
    - list_make1
    - castNode
    - create_bitmap_or_path
    - group_similar_or_args
    - generate_bitmap_or_paths
    - lappend
    - is_andclause
    - restriction_is_or_clause
    - build_paths_for_OR
    - lfirst
    - list_free
    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: 251
    functionsReached:
    - make_bitmap_paths_for_or_group
    - list_concat
    - choose_bitmap_and
    - list_make1
    - castNode
    - generate_bitmap_or_paths
    - lappend
    - is_andclause
    - restriction_is_or_clause
    - build_paths_for_OR
    - lfirst
    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
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1856,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1861,1
    - Dst: classify_index_clause_usage
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1863,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1875,1
    - Dst: cost_bitmap_tree_node
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1886,1
    - Dst: cost_bitmap_tree_node
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1887,1
    - Dst: qsort
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1903,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1922,1
    - Dst: bitmap_scan_cost_est
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1923,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1924,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1925,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1933,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1940,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1942,1
    - Dst: predicate_implied_by
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1944,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1944,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1954,1
    - Dst: bitmap_and_cost_est
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1955,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1960,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1961,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1962,1
    - Dst: list_truncate
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1968,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1968,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1980,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1983,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1984,1
    - Dst: create_bitmap_and_path
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1985,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 68
    argCount: 3
    argNames:
    - root
    - rel
    - paths
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1986
      start: 1783
    functionDepth: 4
    functionLinenumber: 1783
    functionLinenumberEnd: 1986
    functionName: choose_bitmap_and
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 7
    functionsReached:
    - bms_overlap
    - create_bitmap_and_path
    - bms_copy
    - list_length
    - list_concat
    - foreach
    - list_truncate
    - bms_equal
    - qsort
    - linitial
    - bitmap_scan_cost_est
    - lappend
    - predicate_implied_by
    - palloc
    - lfirst
    - classify_index_clause_usage
    - list_free
    - Assert
    - bms_add_members
    - list_concat_copy
    - list_make1
    - bitmap_and_cost_est
    - cost_bitmap_tree_node
    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:1861,1
    - Dst: classify_index_clause_usage
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1863,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1875,1
    - Dst: cost_bitmap_tree_node
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1886,1
    - Dst: cost_bitmap_tree_node
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:1887,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1896
      start: 1859
    functionDepth: 1
    functionLinenumber: 1859
    functionLinenumberEnd: 1896
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 252
    functionsReached:
    - cost_bitmap_tree_node
    - bms_equal
    - lfirst
    - classify_index_clause_usage
    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:1999,1
    - Dst: cost_bitmap_tree_node
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2000,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2016
      start: 1989
    functionDepth: 1
    functionLinenumber: 1989
    functionLinenumberEnd: 2016
    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:2043,1
    - Dst: get_loop_count
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2046,1
    - Dst: PATH_REQ_OUTER
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2047,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - root
    - rel
    - ipath
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2050
      start: 2022
    functionDepth: 1
    functionLinenumber: 2022
    functionLinenumberEnd: 2050
    functionName: bitmap_scan_cost_est
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - PATH_REQ_OUTER
    - cost_bitmap_heap_scan
    - get_loop_count
    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:2065,1
    - Dst: bitmap_scan_cost_est
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2067,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - root
    - rel
    - paths
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2068
      start: 2056
    functionDepth: 4
    functionLinenumber: 2056
    functionLinenumberEnd: 2068
    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
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2092,1
    - Dst: find_indexpath_quals
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2098,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2108,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2108,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2117,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2119,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2121,1
    - Dst: find_list_position
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2122,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2124,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2126,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2128,1
    - Dst: find_list_position
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 2
    argNames:
    - path
    - clauselist
    argTypes:
    - Path*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2135
      start: 2085
    functionDepth: 1
    functionLinenumber: 2085
    functionLinenumberEnd: 2135
    functionName: classify_index_clause_usage
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 2
    functionsReached:
    - find_list_position
    - foreach
    - list_length
    - find_indexpath_quals
    - palloc
    - lfirst
    - 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:2156,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2161,1
    - Dst: find_indexpath_quals
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2163,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2163,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2166,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2171,1
    - Dst: find_indexpath_quals
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2173,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2173,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2176,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2181,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2183,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2185,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2187,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2190,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2190,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - bitmapqual
    - quals
    - preds
    argTypes:
    - Path*
    - List**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2191
      start: 2153
    functionDepth: 1
    functionLinenumber: 2153
    functionLinenumberEnd: 2191
    functionName: find_indexpath_quals
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 2
    functionsReached:
    - nodeTag
    - list_concat
    - IsA
    - foreach
    - find_indexpath_quals
    - elog
    - lappend
    - lfirst
    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:2207,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2209,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2211,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2216,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - node
    - nodelist
    argTypes:
    - Node*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2219
      start: 2200
    functionDepth: 1
    functionLinenumber: 2200
    functionLinenumberEnd: 2219
    functionName: find_list_position
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - lappend
    - equal
    - lfirst
    - foreach
    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:2249,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2262,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2264,1
    - Dst: pull_varattnos
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2266,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2286,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2291,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2293,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2294,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - rel
    - index
    argTypes:
    - RelOptInfo*
    - IndexOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2297
      start: 2226
    functionDepth: 2
    functionLinenumber: 2226
    functionLinenumberEnd: 2297
    functionName: check_index_only
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - bms_is_subset
    - foreach
    - pull_varattnos
    - lfirst
    - bms_free
    - 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:2337,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2348,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2351,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2355,1
    - Dst: adjust_rowcount_for_semijoins
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2358,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 3
    argNames:
    - root
    - cur_relid
    - outer_relids
    argTypes:
    - PlannerInfo*
    - Index
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2369
      start: 2325
    functionDepth: 1
    functionLinenumber: 2325
    functionLinenumberEnd: 2369
    functionName: get_loop_count
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 4
    functionsReached:
    - adjust_rowcount_for_semijoins
    - Assert
    - bms_next_member
    - IS_DUMMY_REL
    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:2386,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2388,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2391,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2392,1
    - Dst: approximate_joinrel_size
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2398,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2399,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: 2409
      start: 2378
    functionDepth: 1
    functionLinenumber: 2378
    functionLinenumberEnd: 2409
    functionName: adjust_rowcount_for_semijoins
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - approximate_joinrel_size
    - foreach
    - estimate_num_groups
    - bms_is_member
    - lfirst
    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:2429,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2439,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2442,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2446,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - root
    - relids
    argTypes:
    - PlannerInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2452
      start: 2422
    functionDepth: 1
    functionLinenumber: 2422
    functionLinenumberEnd: 2452
    functionName: approximate_joinrel_size
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - Assert
    - bms_next_member
    - IS_DUMMY_REL
    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:2470,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - root
    - index
    - clauseset
    argTypes:
    - PlannerInfo*
    - IndexOptInfo*
    - IndexClauseSet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2471
      start: 2464
    functionDepth: 1
    functionLinenumber: 2464
    functionLinenumberEnd: 2471
    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:2489,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2491,1
    - Dst: join_clause_is_movable_to
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2494,1
    - Dst: restriction_is_or_clause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2502,1
    - Dst: list_append_unique_ptr
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2503,1
    - Dst: match_clause_to_index
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2505,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: 2507
      start: 2480
    functionDepth: 2
    functionLinenumber: 2480
    functionLinenumberEnd: 2507
    functionName: match_join_clauses_to_index
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - list_append_unique_ptr
    - match_clause_to_index
    - foreach
    - join_clause_is_movable_to
    - restriction_is_or_clause
    - lfirst
    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:2532,1
    - Dst: match_clauses_to_index
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2543,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - root
    - index
    - clauseset
    argTypes:
    - PlannerInfo*
    - IndexOptInfo*
    - IndexClauseSet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2545
      start: 2514
    functionDepth: 1
    functionLinenumber: 2514
    functionLinenumberEnd: 2545
    functionName: match_eclass_clauses_to_index
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - match_clauses_to_index
    - generate_implied_equalities_for_column
    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:2562,1
    - Dst: match_clause_to_index
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2564,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - root
    - clauses
    - index
    - clauseset
    argTypes:
    - PlannerInfo*
    - List*
    - IndexOptInfo*
    - IndexClauseSet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2566
      start: 2552
    functionDepth: 1
    functionLinenumber: 2552
    functionLinenumberEnd: 2566
    functionName: match_clauses_to_index
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 3
    functionsReached:
    - lfirst_node
    - match_clause_to_index
    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:2562,1
    - Dst: match_clause_to_index
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2564,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2565
      start: 2560
    functionDepth: 1
    functionLinenumber: 2560
    functionLinenumberEnd: 2565
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 258
    functionsReached:
    - lfirst_node
    - match_clause_to_index
    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:2606,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2616,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2618,1
    - Dst: match_clause_to_indexcol
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2625,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2633,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 4
    argNames:
    - root
    - rinfo
    - index
    - clauseset
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    - IndexOptInfo*
    - IndexClauseSet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2638
      start: 2585
    functionDepth: 1
    functionLinenumber: 2585
    functionLinenumberEnd: 2638
    functionName: match_clause_to_index
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 3
    functionsReached:
    - restriction_is_securely_promotable
    - foreach
    - lappend
    - match_clause_to_indexcol
    - lfirst
    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:2719,1
    - Dst: IsBooleanOpfamily
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2730,1
    - Dst: match_boolean_index_clause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2732,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2742,1
    - Dst: match_opclause_to_indexcol
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2744,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2746,1
    - Dst: match_funcclause_to_indexcol
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2748,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2750,1
    - Dst: match_saopclause_to_indexcol
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2752,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2754,1
    - Dst: match_rowcompare_to_indexcol
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2756,1
    - Dst: restriction_is_or_clause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2758,1
    - Dst: match_orclause_to_indexcol
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2760,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2762,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2767,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2769,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2771,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 4
    argNames:
    - root
    - rinfo
    - indexcol
    - index
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    - int
    - IndexOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2780
      start: 2709
    functionDepth: 1
    functionLinenumber: 2709
    functionLinenumberEnd: 2780
    functionName: match_clause_to_indexcol
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - match_funcclause_to_indexcol
    - Assert
    - match_orclause_to_indexcol
    - match_index_to_operand
    - match_rowcompare_to_indexcol
    - IsA
    - list_make1
    - IsBooleanOpfamily
    - match_saopclause_to_indexcol
    - match_boolean_index_clause
    - restriction_is_or_clause
    - makeNode
    - match_opclause_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:2794,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2796,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - opfamily
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2797
      start: 2790
    functionDepth: 1
    functionLinenumber: 2790
    functionLinenumberEnd: 2797
    functionName: IsBooleanOpfamily
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - IsBuiltinBooleanOpfamily
    - op_in_opfamily
    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:2825,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2828,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2830,1
    - Dst: is_notclause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2834,1
    - Dst: get_notclausearg
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2836,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2838,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2841,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2843,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2853,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2859,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2862,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2864,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2868,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2871,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2873,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2884,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2887,1
    - Dst: make_simple_restrictinfo
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2887,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 4
    argNames:
    - root
    - rinfo
    - indexcol
    - index
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    - int
    - IndexOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2895
      start: 2815
    functionDepth: 2
    functionLinenumber: 2815
    functionLinenumberEnd: 2895
    functionName: match_boolean_index_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - match_index_to_operand
    - IsA
    - list_make1
    - get_notclausearg
    - make_opclause
    - makeNode
    - makeBoolConst
    - is_notclause
    - make_simple_restrictinfo
    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:2923,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2926,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2927,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2944,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2945,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2946,1
    - Dst: IndexCollMatchesExprColl
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2948,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2949,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2951,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2953,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2964,1
    - Dst: get_index_clause_from_support
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2965,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2973,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2974,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2975,1
    - Dst: IndexCollMatchesExprColl
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2977,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2979,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2981,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2982,1
    - Dst: commute_restrictinfo
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2987,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2990,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:2992,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3004,1
    - Dst: get_index_clause_from_support
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3005,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 4
    argNames:
    - root
    - rinfo
    - indexcol
    - index
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    - int
    - IndexOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3014
      start: 2902
    functionDepth: 2
    functionLinenumber: 2902
    functionLinenumberEnd: 3014
    functionName: match_opclause_to_indexcol
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - match_index_to_operand
    - IndexCollMatchesExprColl
    - linitial
    - commute_restrictinfo
    - get_index_clause_from_support
    - lsecond
    - list_make1
    - list_length
    - contain_volatile_functions
    - OidIsValid
    - set_opfuncid
    - bms_is_member
    - makeNode
    - get_commutator
    - op_in_opfamily
    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:3042,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3044,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3046,1
    - Dst: get_index_clause_from_support
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3048,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - root
    - rinfo
    - indexcol
    - index
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    - int
    - IndexOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3060
      start: 3021
    functionDepth: 1
    functionLinenumber: 3021
    functionLinenumberEnd: 3060
    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:3075,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3079,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3095,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3095,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3096,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3100,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3110,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3112,1
    - Dst: make_simple_restrictinfo
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3113,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: 3126
      start: 3067
    functionDepth: 1
    functionLinenumber: 3067
    functionLinenumberEnd: 3126
    functionName: get_index_clause_from_support
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 2
    functionsReached:
    - OidFunctionCall1
    - get_func_support
    - PointerGetDatum
    - lappend
    - OidIsValid
    - makeNode
    - DatumGetPointer
    - lfirst
    - make_simple_restrictinfo
    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:3110,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3112,1
    - Dst: make_simple_restrictinfo
      Src: /src/postgres/src/backend/optimizer/path/indxpath.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/path/indxpath.c
    functionUses: 260
    functionsReached:
    - lappend
    - lfirst
    - make_simple_restrictinfo
    linkageType: ''
    returnType: void
    signature: void foreach(lc, sresult)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3152,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3153,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3154,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3165,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3166,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3167,1
    - Dst: IndexCollMatchesExprColl
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3169,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3170,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3172,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3175,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 4
    argNames:
    - root
    - rinfo
    - indexcol
    - index
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    - int
    - IndexOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3189
      start: 3133
    functionDepth: 2
    functionLinenumber: 3133
    functionLinenumberEnd: 3189
    functionName: match_saopclause_to_indexcol
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - match_index_to_operand
    - IndexCollMatchesExprColl
    - linitial
    - lsecond
    - list_make1
    - contain_volatile_functions
    - bms_is_member
    - makeNode
    - pull_varnos
    - op_in_opfamily
    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:3235,1
    - Dst: linitial
      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: linitial_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3238,1
    - Dst: IndexCollMatchesExprColl
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3241,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3247,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3248,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3248,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3249,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3254,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3255,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3255,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3256,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3259,1
    - Dst: get_op_opfamily_strategy
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3268,1
    - Dst: expand_indexqual_rowcompare
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3274,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 4
    argNames:
    - root
    - rinfo
    - indexcol
    - index
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    - int
    - IndexOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3283
      start: 3201
    functionDepth: 2
    functionLinenumber: 3201
    functionLinenumberEnd: 3283
    functionName: match_rowcompare_to_indexcol
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - get_commutator
    - match_index_to_operand
    - IndexCollMatchesExprColl
    - linitial
    - expand_indexqual_rowcompare
    - contain_volatile_functions
    - get_op_opfamily_strategy
    - bms_is_member
    - linitial_oid
    - pull_varnos
    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: 17
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3315,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3315,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3316,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3329,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3338,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3338,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3341,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3344,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3351,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3360,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3361,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3362,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3363,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3363,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3364,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3364,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3370,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3370,1
    - Dst: get_op_rettype
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3373,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3381,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3382,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3383,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3384,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3385,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3390,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3391,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3392,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3394,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3395,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3414,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3416,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3420,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3420,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3421,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3421,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3432,1
    - Dst: get_array_type
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3433,1
    - Dst: IndexCollMatchesExprColl
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3441,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3442,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3443,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3451,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3459,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3461,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3471,1
    - Dst: make_SAOP_expr
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3475,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3485,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3487,1
    - Dst: make_simple_restrictinfo
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3487,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 73
    argCount: 4
    argNames:
    - root
    - rinfo
    - indexcol
    - index
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    - int
    - IndexOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3493
      start: 3295
    functionDepth: 2
    functionLinenumber: 3295
    functionLinenumberEnd: 3493
    functionName: match_orclause_to_indexcol
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - make_SAOP_expr
    - list_length
    - contain_volatile_functions
    - makeNode
    - exprType
    - lsecond
    - foreach
    - bms_equal
    - make_simple_restrictinfo
    - get_op_rettype
    - bms_is_subset
    - match_index_to_operand
    - IndexCollMatchesExprColl
    - linitial
    - IsA
    - lappend
    - OidIsValid
    - bms_is_member
    - get_commutator
    - lfirst
    - get_array_type
    - type_is_rowtype
    - op_in_opfamily
    - Assert
    - list_free
    - list_make1
    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:3526,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3554,1
    - Dst: list_make1_int
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3560,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3563,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3564,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3565,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3566,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3576,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3578,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3579,1
    - Dst: list_nth_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3582,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3586,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3590,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3590,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3592,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3600,1
    - Dst: get_op_opfamily_strategy
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3601,1
    - Dst: IndexCollMatchesExprColl
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3603,1
    - Dst: list_nth_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3604,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3612,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3615,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3619,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3620,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3621,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3622,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3629,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3636,1
    - Dst: list_truncate
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3653,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3666,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3672,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3673,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3674,1
    - Dst: get_opfamily_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3676,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3678,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3679,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3681,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3688,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3692,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3694,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3696,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3697,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3698,1
    - Dst: make_simple_restrictinfo
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3698,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3708,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3708,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3709,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3709,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3710,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3710,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3712,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3713,1
    - Dst: make_simple_restrictinfo
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3713,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: 3718
      start: 3518
    functionDepth: 3
    functionLinenumber: 3518
    functionLinenumberEnd: 3718
    functionName: expand_indexqual_rowcompare
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - lappend_int
    - list_length
    - contain_volatile_functions
    - makeNode
    - linitial_oid
    - list_copy_head
    - list_truncate
    - get_op_opfamily_strategy
    - make_opclause
    - list_nth_oid
    - make_simple_restrictinfo
    - match_index_to_operand
    - IndexCollMatchesExprColl
    - linitial
    - list_nth
    - elog
    - OidIsValid
    - bms_is_member
    - pull_varnos
    - get_commutator
    - get_op_opfamily_properties
    - get_opfamily_member
    - list_make1_int
    - lappend_oid
    - list_make1_oid
    - list_make1
    - copyObject
    - lfirst_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:3672,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3673,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3674,1
    - Dst: get_opfamily_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3676,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3678,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3679,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3681,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3682
      start: 3668
    functionDepth: 1
    functionLinenumber: 3668
    functionLinenumberEnd: 3682
    functionName: forthree
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 3
    functionsReached:
    - lappend_oid
    - elog
    - OidIsValid
    - lfirst_oid
    - get_opfamily_member
    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:3756,1
    - Dst: setup_eclass_member_iterator
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3778,1
    - Dst: eclass_member_iterator_next
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3780,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3785,1
    - Dst: match_clause_to_ordering_op
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3800,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3806,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3807,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: 3824
      start: 3740
    functionDepth: 1
    functionLinenumber: 3740
    functionLinenumberEnd: 3824
    functionName: match_pathkeys_to_index
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - match_clause_to_ordering_op
    - lappend_int
    - eclass_member_iterator_next
    - bms_equal
    - lappend
    - setup_eclass_member_iterator
    - lfirst
    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:3756,1
    - Dst: setup_eclass_member_iterator
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3778,1
    - Dst: eclass_member_iterator_next
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3780,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3785,1
    - Dst: match_clause_to_ordering_op
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3800,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3806,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3807,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3823
      start: 3754
    functionDepth: 1
    functionLinenumber: 3754
    functionLinenumberEnd: 3823
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 261
    functionsReached:
    - match_clause_to_ordering_op
    - lappend_int
    - eclass_member_iterator_next
    - bms_equal
    - lappend
    - setup_eclass_member_iterator
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc1, pathkeys)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3866,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3874,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3876,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3877,1
    - Dst: IndexCollMatchesExprColl
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3886,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3893,1
    - Dst: contain_var_clause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3894,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3895,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3899,1
    - Dst: contain_var_clause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3900,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3901,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3904,1
    - Dst: get_op_opfamily_sortfamily
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3916,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3923,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3926,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3931,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: 3937
      start: 3851
    functionDepth: 2
    functionLinenumber: 3851
    functionLinenumberEnd: 3937
    functionName: match_clause_to_ordering_op
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 2
    functionsReached:
    - get_commutator
    - Assert
    - match_index_to_operand
    - IndexCollMatchesExprColl
    - list_make2
    - get_leftop
    - get_rightop
    - contain_volatile_functions
    - is_opclause
    - memcpy
    - get_op_opfamily_sortfamily
    - makeNode
    - 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: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3975,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3975,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3983,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:3985,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4001,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4004,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4006,1
    - Dst: join_clause_is_movable_to
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4009,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4012,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4024,1
    - Dst: find_childrel_parents
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4025,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4027,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4028,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4030,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4032,1
    - Dst: generate_join_implied_equalities
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4033,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4034,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4052,1
    - Dst: get_plan_rowmark
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4053,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4062,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4064,1
    - Dst: predicate_implied_by
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4071,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4080,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4082,1
    - Dst: contain_mutable_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4085,1
    - Dst: predicate_implied_by
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4086,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4086,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4088,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 36
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4091
      start: 3965
    functionDepth: 3
    functionLinenumber: 3965
    functionLinenumberEnd: 4091
    functionName: check_index_predicates
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 2
    functionsReached:
    - list_copy
    - bms_union
    - join_clause_is_movable_to
    - list_concat
    - bms_is_empty
    - foreach
    - bms_difference
    - bms_del_members
    - contain_mutable_functions
    - lappend
    - bms_is_member
    - predicate_implied_by
    - find_childrel_parents
    - lfirst
    - Assert
    - get_plan_rowmark
    - list_make1
    - IS_SIMPLE_REL
    - generate_join_implied_equalities
    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:4113,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4129,1
    - Dst: IndexCollMatchesExprColl
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4133,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4136,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: 4137
      start: 4103
    functionDepth: 1
    functionLinenumber: 4103
    functionLinenumberEnd: 4137
    functionName: ec_member_matches_indexcol
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 0
    functionsReached:
    - match_index_to_operand
    - Assert
    - list_member_oid
    - 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: 1
    BranchProfiles: []
    Callsites:
    - Dst: relation_has_unique_index_ext
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - root
    - rel
    - restrictlist
    - exprlist
    - oprlist
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4168
      start: 4161
    functionDepth: 1
    functionLinenumber: 4161
    functionLinenumberEnd: 4168
    functionName: relation_has_unique_index_for
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 1
    functionsReached:
    - relation_has_unique_index_ext
    linkageType: ''
    returnType: bool
    signature: "bool relation_has_unique_index_for(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t\t\t
      \ List *restrictlist,\n\t\t\t\t\t\t\t  List *exprlist, List *oprlist)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4184,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4184,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4184,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4194,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4196,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4210,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4215,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4224,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4232,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4234,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4261,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4270,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4281,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4283,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4285,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4289,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4292,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4299,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4299,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4300,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4302,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4303,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4315,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4316,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4319,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4329,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 57
    argCount: 6
    argNames:
    - root
    - rel
    - restrictlist
    - exprlist
    - oprlist
    - extra_clauses
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - List*
    - List*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4356
      start: 4176
    functionDepth: 2
    functionLinenumber: 4176
    functionLinenumberEnd: 4356
    functionName: relation_has_unique_index_ext
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 2
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - match_index_to_operand
    - bms_is_empty
    - foreach
    - list_length
    - get_rightop
    - get_leftop
    - lappend
    - list_member_oid
    - bms_membership
    - lfirst_oid
    - lfirst
    - op_in_opfamily
    linkageType: ''
    returnType: bool
    signature: "bool relation_has_unique_index_ext(PlannerInfo *root, RelOptInfo *rel,\n\t\t\t\t\t\t\t
      \ List *restrictlist,\n\t\t\t\t\t\t\t  List *exprlist, List *oprlist,\n\t\t\t\t\t\t\t
      \ List **extra_clauses)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4261,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4270,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4281,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4283,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4285,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4289,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4292,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4299,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4299,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4300,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4302,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4303,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4308
      start: 4259
    functionDepth: 2
    functionLinenumber: 4259
    functionLinenumberEnd: 4308
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 263
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - match_index_to_operand
    - bms_is_empty
    - get_rightop
    - get_leftop
    - lappend
    - list_member_oid
    - bms_membership
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, restrictlist)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4315,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4316,1
    - Dst: match_index_to_operand
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4319,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4329,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4340
      start: 4313
    functionDepth: 1
    functionLinenumber: 4313
    functionLinenumberEnd: 4340
    functionName: forboth
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 12
    functionsReached:
    - match_index_to_operand
    - lfirst_oid
    - lfirst
    - op_in_opfamily
    linkageType: ''
    returnType: void
    signature: void forboth(lc, exprlist, lc2, oprlist)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsBooleanOpfamily
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4382,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4386,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4388,1
    - Dst: match_boolean_index_clause
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4399,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - root
    - index
    - indexcol
    argTypes:
    - PlannerInfo*
    - IndexOptInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4404
      start: 4374
    functionDepth: 3
    functionLinenumber: 4374
    functionLinenumberEnd: 4404
    functionName: indexcol_is_bool_constant_for_query
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 0
    functionsReached:
    - match_boolean_index_clause
    - IsBooleanOpfamily
    - lfirst
    - foreach
    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: 9
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4438,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4447,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4464,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4470,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4471,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4475,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4476,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4481,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4484,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 25
    argCount: 3
    argNames:
    - operand
    - indexcol
    - index
    argTypes:
    - Node*
    - int
    - IndexOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4489
      start: 4425
    functionDepth: 2
    functionLinenumber: 4425
    functionLinenumberEnd: 4489
    functionName: match_index_to_operand
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 15
    functionsReached:
    - equal
    - list_head
    - IsA
    - lnext
    - elog
    - lfirst
    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:4515,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4515,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/optimizer/path/indxpath.c:4517,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - root
    - expr
    - index
    argTypes:
    - PlannerInfo*
    - Node*
    - IndexOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4520
      start: 4511
    functionDepth: 2
    functionLinenumber: 4511
    functionLinenumberEnd: 4520
    functionName: is_pseudo_constant_for_index
    functionSourceFile: /src/postgres/src/backend/optimizer/path/indxpath.c
    functionUses: 0
    functionsReached:
    - bms_is_member
    - contain_volatile_functions
    - pull_varnos
    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:
    - list_delete_nth_cell
    - ec_add_derived_clauses
    - is_opclause
    - makeNode
    - bms_join
    - exprType
    - Min
    - equal
    - list_concat
    - foreach
    - foreach_current_index
    - Max
    - add_eq_member
    - op_input_types
    - get_leftop
    - canonicalize_ec_expression
    - elog
    - lappend
    - set_opfuncid
    - lfirst
    - func_strict
    - Assert
    - make_restrictinfo
    - list_make1
    - get_rightop
    - ec_clear_derived_clauses
    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:
    - exprType
    - exprCollation
    - applyRelabelType
    - exprTypmod
    - IsPolymorphicType
    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:
    - bms_is_empty
    - makeNode
    - Assert
    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
    - lappend
    - make_eq_member
    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:
    - repalloc0_array
    - Assert
    - make_eq_member
    - unlikely
    - lappend
    - palloc0_array
    - 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: 0
    functionsReached:
    - contain_window_function
    - MemoryContextSwitchTo
    - list_copy
    - list_length
    - contain_volatile_functions
    - makeNode
    - equal
    - foreach
    - bms_equal
    - setup_eclass_member_iterator
    - bms_next_member
    - add_eq_member
    - linitial_node
    - canonicalize_ec_expression
    - elog
    - lappend
    - contain_agg_clause
    - bms_is_member
    - pull_varnos
    - lfirst
    - bms_add_member
    - Assert
    - expression_returns_set
    - eclass_member_iterator_next
    - copyObject
    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:
    - bms_is_subset
    - equal
    - eclass_member_iterator_next
    - IsA
    - setup_eclass_member_iterator
    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:1013,1
    - Dst: eclass_member_iterator_next
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1014,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1030,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1036,1
    - Dst: list_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1042,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1042,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1045,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1054,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: 1061
      start: 990
    functionDepth: 2
    functionLinenumber: 990
    functionLinenumberEnd: 1061
    functionName: find_computable_ec_member
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 2
    functionsReached:
    - bms_is_subset
    - eclass_member_iterator_next
    - is_parallel_safe
    - list_member
    - list_free
    - setup_eclass_member_iterator
    - lfirst
    - pull_var_clause
    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:1042,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1042,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 1040
    functionDepth: 1
    functionLinenumber: 1040
    functionLinenumberEnd: 1044
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 266
    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:1093,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1095,1
    - Dst: find_ec_member_matching_expr
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1097,1
    - Dst: expression_returns_set
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1107,1
    - Dst: is_parallel_safe
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1115,1
    - Dst: find_computable_ec_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1124,1
    - Dst: expression_returns_set
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1135,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: 1139
      start: 1076
    functionDepth: 3
    functionLinenumber: 1076
    functionLinenumberEnd: 1139
    functionName: relation_can_be_sorted_early
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - expression_returns_set
    - find_computable_ec_member
    - is_parallel_safe
    - foreach
    - find_ec_member_matching_expr
    - lfirst
    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:1203,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1205,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1209,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1210,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1217,1
    - Dst: generate_base_implied_equalities_const
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1220,1
    - Dst: generate_base_implied_equalities_no_const
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1222,1
    - Dst: generate_base_implied_equalities_broken
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1226,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1230,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1241,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1251,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1251,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1255,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1257,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1266
      start: 1187
    functionDepth: 1
    functionLinenumber: 1187
    functionLinenumberEnd: 1266
    functionName: generate_base_implied_equalities
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - Assert
    - generate_base_implied_equalities_const
    - list_length
    - foreach
    - generate_base_implied_equalities_broken
    - generate_base_implied_equalities_no_const
    - bms_is_member
    - bms_membership
    - bms_next_member
    - lfirst
    - bms_add_member
    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:1285,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1286,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1288,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1290,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1295,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1303,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1305,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1310,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1314,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1317,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1319,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1324,1
    - Dst: select_equality_operator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1327,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1330,1
    - Dst: process_implied_equality
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1342,1
    - Dst: ec_add_derived_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1362,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 2
    argNames:
    - root
    - ec
    argTypes:
    - PlannerInfo*
    - EquivalenceClass*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1365
      start: 1271
    functionDepth: 4
    functionLinenumber: 1271
    functionLinenumberEnd: 1365
    functionName: generate_base_implied_equalities_const
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - Assert
    - process_implied_equality
    - linitial
    - IsA
    - foreach
    - list_length
    - distribute_restrictinfo_to_rels
    - select_equality_operator
    - OidIsValid
    - ec_add_derived_clause
    - lfirst
    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:1386,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1389,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1391,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1393,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1397,1
    - Dst: bms_get_singleton_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1399,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1401,1
    - Dst: select_equality_operator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1409,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1412,1
    - Dst: process_implied_equality
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1424,1
    - Dst: pfree
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1448,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1459,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1461,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1462,1
    - Dst: add_vars_to_targetlist
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1467,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1468,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 2
    argNames:
    - root
    - ec
    argTypes:
    - PlannerInfo*
    - EquivalenceClass*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1470
      start: 1370
    functionDepth: 4
    functionLinenumber: 1370
    functionLinenumberEnd: 1470
    functionName: generate_base_implied_equalities_no_const
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - process_implied_equality
    - bms_get_singleton_member
    - add_vars_to_targetlist
    - palloc0
    - foreach
    - select_equality_operator
    - OidIsValid
    - list_free
    - lfirst
    - pull_var_clause
    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:1492,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1494,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1497,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1498,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - root
    - ec
    argTypes:
    - PlannerInfo*
    - EquivalenceClass*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1500
      start: 1486
    functionDepth: 3
    functionLinenumber: 1486
    functionLinenumberEnd: 1500
    functionName: generate_base_implied_equalities_broken
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - bms_membership
    - lfirst
    - distribute_restrictinfo_to_rels
    - foreach
    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:1564,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1566,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1566,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1571,1
    - Dst: add_outer_joins_to_relids
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1572,1
    - Dst: get_eclass_indexes_for_relids
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1597,1
    - Dst: get_common_eclass_indexes
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1599,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1603,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1605,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1613,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1617,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1617,1
    - Dst: generate_join_implied_equalities_normal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1620,1
    - Dst: generate_join_implied_equalities_broken
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1628,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1635,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: 1639
      start: 1549
    functionDepth: 3
    functionLinenumber: 1549
    functionLinenumberEnd: 1639
    functionName: generate_join_implied_equalities
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 6
    functionsReached:
    - IS_OTHER_REL
    - bms_overlap
    - Assert
    - get_eclass_indexes_for_relids
    - generate_join_implied_equalities_normal
    - list_concat
    - generate_join_implied_equalities_broken
    - bms_is_empty
    - get_common_eclass_indexes
    - add_outer_joins_to_relids
    - list_length
    - bms_union
    - list_nth
    - bms_next_member
    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:1663,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1665,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1665,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1670,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1680,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1688,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1692,1
    - Dst: generate_join_implied_equalities_normal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1696,1
    - Dst: generate_join_implied_equalities_broken
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1704,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1711,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: 1715
      start: 1649
    functionDepth: 1
    functionLinenumber: 1649
    functionLinenumberEnd: 1715
    functionName: generate_join_implied_equalities_for_ecs
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - IS_OTHER_REL
    - bms_overlap
    - Assert
    - generate_join_implied_equalities_normal
    - list_concat
    - generate_join_implied_equalities_broken
    - bms_is_empty
    - list_length
    - bms_union
    - lfirst
    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:1680,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1688,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1692,1
    - Dst: generate_join_implied_equalities_normal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1696,1
    - Dst: generate_join_implied_equalities_broken
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1704,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1711,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1712
      start: 1678
    functionDepth: 1
    functionLinenumber: 1678
    functionLinenumberEnd: 1712
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 271
    functionsReached:
    - bms_overlap
    - generate_join_implied_equalities_normal
    - list_concat
    - generate_join_implied_equalities_broken
    - list_length
    - lfirst
    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:1743,1
    - Dst: eclass_member_iterator_next
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1744,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1751,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1754,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1755,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1756,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1757,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1759,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1782,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1787,1
    - Dst: select_equality_operator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1791,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1794,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:1799,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: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1803,1
    - Dst: op_hashjoinable
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1805,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1806,1
    - Dst: create_join_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1832,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1836,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1850,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1857,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1857,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1861,1
    - Dst: select_equality_operator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1867,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1870,1
    - Dst: create_join_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1877,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1881,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: 1888
      start: 1720
    functionDepth: 1
    functionLinenumber: 1720
    functionLinenumberEnd: 1888
    functionName: generate_join_implied_equalities_normal
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 3
    functionsReached:
    - exprType
    - bms_is_subset
    - list_concat
    - create_join_clause
    - linitial
    - eclass_member_iterator_next
    - IsA
    - op_hashjoinable
    - lappend
    - select_equality_operator
    - OidIsValid
    - setup_eclass_member_iterator
    - lfirst
    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:1782,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1787,1
    - Dst: select_equality_operator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1791,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1794,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:1799,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: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1803,1
    - Dst: op_hashjoinable
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1805,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1806,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1820
      start: 1780
    functionDepth: 1
    functionLinenumber: 1780
    functionLinenumberEnd: 1820
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 271
    functionsReached:
    - exprType
    - op_hashjoinable
    - IsA
    - OidIsValid
    - select_equality_operator
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc1, outer_members)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1787,1
    - Dst: select_equality_operator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1791,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1794,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:1799,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: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1803,1
    - Dst: op_hashjoinable
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1805,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1806,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1817
      start: 1785
    functionDepth: 1
    functionLinenumber: 1785
    functionLinenumberEnd: 1817
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 271
    functionsReached:
    - exprType
    - op_hashjoinable
    - IsA
    - OidIsValid
    - select_equality_operator
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, inner_members)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1861,1
    - Dst: select_equality_operator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1867,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1870,1
    - Dst: create_join_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1877,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1881,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1884
      start: 1859
    functionDepth: 1
    functionLinenumber: 1859
    functionLinenumberEnd: 1884
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 271
    functionsReached:
    - create_join_clause
    - lappend
    - OidIsValid
    - select_equality_operator
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc1, new_members)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1909,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1911,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: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1916,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1917,1
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1931,1
    - Dst: adjust_appendrel_attrs_multilevel
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1932,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: 1938
      start: 1898
    functionDepth: 3
    functionLinenumber: 1898
    functionLinenumberEnd: 1938
    functionName: generate_join_implied_equalities_broken
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 3
    functionsReached:
    - IS_OTHER_REL
    - bms_is_subset
    - adjust_appendrel_attrs_multilevel
    - foreach
    - lappend
    - lfirst
    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:1952,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1954,1
    - Dst: get_opfamily_member_for_cmptype
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1957,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1958,1
    - Dst: get_func_leakproof
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1964,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:1964,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - ec
    - lefttype
    - righttype
    argTypes:
    - EquivalenceClass*
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1968
      start: 1947
    functionDepth: 1
    functionLinenumber: 1947
    functionLinenumberEnd: 1968
    functionName: select_equality_operator
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 6
    functionsReached:
    - get_func_leakproof
    - get_opcode
    - foreach
    - get_opfamily_member_for_cmptype
    - OidIsValid
    - lfirst_oid
    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:1993,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2001,1
    - Dst: create_join_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2012,1
    - Dst: build_implied_join_equality
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2017,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2022,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2035,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2038,1
    - Dst: ec_add_derived_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2059,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2061,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: 2064
      start: 1982
    functionDepth: 2
    functionLinenumber: 1982
    functionLinenumberEnd: 2064
    functionName: create_join_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 3
    functionsReached:
    - MemoryContextSwitchTo
    - build_implied_join_equality
    - bms_add_members
    - create_join_clause
    - bms_union
    - ec_search_clause_for_ems
    - ec_add_derived_clause
    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:2146,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2148,1
    - Dst: reconsider_outer_join_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2150,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2157,1
    - Dst: make_restrictinfo
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2159,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2160,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2169,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2174,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2176,1
    - Dst: reconsider_outer_join_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2178,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2185,1
    - Dst: make_restrictinfo
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2187,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2188,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2197,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2202,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2204,1
    - Dst: reconsider_full_join_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2206,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2213,1
    - Dst: make_restrictinfo
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2215,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2216,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2225,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2231,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2233,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2235,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2237,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2239,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2241,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2243,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2245,1
    - Dst: distribute_restrictinfo_to_rels
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2247,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 37
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2249
      start: 2134
    functionDepth: 3
    functionLinenumber: 2134
    functionLinenumberEnd: 2249
    functionName: reconsider_outer_join_clauses
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - reconsider_full_join_clause
    - make_restrictinfo
    - foreach
    - distribute_restrictinfo_to_rels
    - reconsider_outer_join_clause
    - foreach_delete_current
    - makeBoolConst
    - lfirst
    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:2272,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2272,1
    - Dst: op_input_types
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2277,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2280,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2281,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2287,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2288,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2294,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2296,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2301,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2312,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2316,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2318,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2321,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2322,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2337,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2339,1
    - Dst: select_equality_operator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2346,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2349,1
    - Dst: build_implied_join_equality
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2351,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2356,1
    - Dst: find_join_domain
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2359,1
    - Dst: process_equivalence
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2360,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 53
    argCount: 3
    argNames:
    - root
    - ojcinfo
    - outer_on_left
    argTypes:
    - PlannerInfo*
    - OuterJoinClauseInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2376
      start: 2256
    functionDepth: 4
    functionLinenumber: 2256
    functionLinenumberEnd: 2376
    functionName: reconsider_outer_join_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - Assert
    - equal
    - op_input_types
    - build_implied_join_equality
    - bms_copy
    - process_equivalence
    - foreach
    - get_leftop
    - get_rightop
    - is_opclause
    - select_equality_operator
    - OidIsValid
    - find_join_domain
    - lfirst
    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:2388,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2400,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2400,1
    - Dst: op_input_types
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2403,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2404,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2405,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2409,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2411,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2420,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2431,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2448,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2450,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2453,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2454,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2460,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2462,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2463,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2474,1
    - Dst: remove_nulling_relids
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2475,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2477,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2477,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2479,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2495,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2497,1
    - Dst: select_equality_operator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2504,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2507,1
    - Dst: build_implied_join_equality
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2509,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2514,1
    - Dst: find_join_domain
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2517,1
    - Dst: process_equivalence
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2518,1
    - Dst: select_equality_operator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2521,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2524,1
    - Dst: build_implied_join_equality
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2526,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2531,1
    - Dst: find_join_domain
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2534,1
    - Dst: process_equivalence
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2535,1
    - Dst: list_delete_nth_cell
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2549,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 65
    argCount: 2
    argNames:
    - root
    - ojcinfo
    argTypes:
    - PlannerInfo*
    - OuterJoinClauseInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2562
      start: 2383
    functionDepth: 4
    functionLinenumber: 2383
    functionLinenumberEnd: 2562
    functionName: reconsider_full_join_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - list_delete_nth_cell
    - bms_copy
    - process_equivalence
    - list_length
    - is_opclause
    - find_join_domain
    - equal
    - lsecond
    - foreach
    - foreach_current_index
    - op_input_types
    - linitial
    - remove_nulling_relids
    - IsA
    - get_leftop
    - select_equality_operator
    - OidIsValid
    - lfirst
    - Assert
    - build_implied_join_equality
    - bms_make_singleton
    - get_rightop
    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:2578,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2580,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2587,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2590,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2594,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2596,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2597,1
    - Dst: add_vars_to_attr_needed
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2602,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2603,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2607
      start: 2573
    functionDepth: 2
    functionLinenumber: 2573
    functionLinenumberEnd: 2607
    functionName: rebuild_eclass_attr_needed
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 2
    functionsReached:
    - Assert
    - add_vars_to_attr_needed
    - list_length
    - foreach
    - list_free
    - lfirst
    - pull_var_clause
    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:2621,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2623,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2625,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2628,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - root
    - relids
    argTypes:
    - PlannerInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2630
      start: 2616
    functionDepth: 1
    functionLinenumber: 2616
    functionLinenumberEnd: 2630
    functionName: find_join_domain
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 2
    functionsReached:
    - elog
    - bms_is_subset
    - lfirst
    - 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:2652,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2654,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2670,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2671,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2675,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2677,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2680,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2681,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2683,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 4
    argNames:
    - root
    - item1
    - item2
    - opfamily
    argTypes:
    - PlannerInfo*
    - Node*
    - Node*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2691
      start: 2647
    functionDepth: 1
    functionLinenumber: 2647
    functionLinenumberEnd: 2691
    functionName: exprs_known_equal
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - Assert
    - equal
    - foreach
    - OidIsValid
    - list_member_oid
    - lfirst
    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: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: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2728,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2728,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2729,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2733,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2735,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2749,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2751,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2755,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2759,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2761,1
    - Dst: get_mergejoin_opfamilies
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2779,1
    - Dst: equal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2780,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 33
    argCount: 3
    argNames:
    - root
    - fkinfo
    - colno
    argTypes:
    - PlannerInfo*
    - ForeignKeyOptInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2792
      start: 2709
    functionDepth: 3
    functionLinenumber: 2709
    functionLinenumberEnd: 2792
    functionName: match_eclasses_to_foreign_key_col
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - get_mergejoin_opfamilies
    - Assert
    - equal
    - IsA
    - IS_SIMPLE_REL
    - foreach
    - list_nth
    - bms_next_member
    - lfirst
    - bms_intersect
    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:2808,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2809,1
    - Dst: ec_search_derived_clause_for_ems
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2811,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - root
    - ec
    - em
    argTypes:
    - PlannerInfo*
    - EquivalenceClass*
    - EquivalenceMember*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2812
      start: 2803
    functionDepth: 1
    functionLinenumber: 2803
    functionLinenumberEnd: 2812
    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:2846,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2847,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2847,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2850,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2852,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2863,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2863,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2865,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2871,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2881,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2882,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2892,1
    - Dst: adjust_appendrel_attrs_multilevel
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2900,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2912,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2914,1
    - Dst: add_child_eq_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2916,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: 2928
      start: 2832
    functionDepth: 3
    functionLinenumber: 2832
    functionLinenumberEnd: 2928
    functionName: add_child_rel_equivalences
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - Assert
    - bms_is_subset
    - foreach_node
    - bms_add_members
    - add_child_eq_member
    - bms_is_empty
    - adjust_appendrel_attrs
    - adjust_appendrel_attrs_multilevel
    - IS_SIMPLE_REL
    - list_nth
    - bms_difference
    - bms_next_member
    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:2952,1
    - Dst: IS_JOIN_REL
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2952,1
    - Dst: IS_JOIN_REL
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2952,1
    - Dst: get_eclass_indexes_for_relids
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2955,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2965,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2968,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2970,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2981,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2981,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2983,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2989,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2995,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:2999,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3009,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3016,1
    - Dst: adjust_appendrel_attrs_multilevel
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3018,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3030,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3032,1
    - Dst: add_child_eq_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3054,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3062,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3067,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: 3068
      start: 2940
    functionDepth: 3
    functionLinenumber: 2940
    functionLinenumberEnd: 3068
    functionName: add_child_join_rel_equivalences
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - bms_overlap
    - Assert
    - MemoryContextSwitchTo
    - get_eclass_indexes_for_relids
    - foreach_node
    - bms_add_members
    - add_child_eq_member
    - IS_JOIN_REL
    - adjust_appendrel_attrs
    - adjust_appendrel_attrs_multilevel
    - list_nth
    - bms_membership
    - bms_difference
    - bms_next_member
    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:3088,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3092,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3100,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3102,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3103,1
    - Dst: add_child_eq_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3112,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3119,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3122,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3131,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3132,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: 3133
      start: 3083
    functionDepth: 3
    functionLinenumber: 3083
    functionLinenumberEnd: 3133
    functionName: add_setop_child_rel_equivalences
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - exprType
    - add_child_eq_member
    - lfirst_node
    - linitial
    - list_head
    - lnext
    - bms_add_range
    - list_length
    - elog
    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:3092,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3100,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3102,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3103,1
    - Dst: add_child_eq_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3112,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3119,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3122,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3123
      start: 3090
    functionDepth: 3
    functionLinenumber: 3090
    functionLinenumberEnd: 3123
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 280
    functionsReached:
    - exprType
    - add_child_eq_member
    - lfirst_node
    - linitial
    - lnext
    - elog
    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:3164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - it
    - ec
    - child_relids
    argTypes:
    - EquivalenceMemberIterator*
    - EquivalenceClass*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3165
      start: 3155
    functionDepth: 1
    functionLinenumber: 3155
    functionLinenumberEnd: 3165
    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:3184,1
    - Dst: lnext
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3185,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3190,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3205,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - it
    argTypes:
    - EquivalenceMemberIterator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3213
      start: 3174
    functionDepth: 2
    functionLinenumber: 3174
    functionLinenumberEnd: 3213
    functionName: eclass_member_iterator_next
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 6
    functionsReached:
    - bms_next_member
    - lnext
    - lfirst_node
    - list_head
    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:3251,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3254,1
    - Dst: IS_SIMPLE_REL
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3254,1
    - Dst: find_childrel_parents
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3258,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3263,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3265,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3271,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3271,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3277,1
    - Dst: setup_eclass_member_iterator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3290,1
    - Dst: eclass_member_iterator_next
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3291,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3293,1
    - Dst: callback
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3294,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3305,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3307,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3312,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3316,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3320,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3328,1
    - Dst: select_equality_operator
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3331,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3334,1
    - Dst: create_join_clause
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3338,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3342,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: 3355
      start: 3238
    functionDepth: 3
    functionLinenumber: 3238
    functionLinenumberEnd: 3355
    functionName: generate_implied_equalities_for_column
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 2
    functionsReached:
    - lfirst
    - bms_overlap
    - Assert
    - bms_is_subset
    - create_join_clause
    - eclass_member_iterator_next
    - IS_SIMPLE_REL
    - list_length
    - foreach
    - list_nth
    - bms_equal
    - lappend
    - select_equality_operator
    - OidIsValid
    - callback
    - setup_eclass_member_iterator
    - bms_next_member
    - 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:3386,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3390,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3392,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: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3400,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3400,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3406,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - root
    - rel1
    - rel2
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3434
      start: 3369
    functionDepth: 3
    functionLinenumber: 3369
    functionLinenumberEnd: 3434
    functionName: have_relevant_eclass_joinclause
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - bms_overlap
    - Assert
    - get_common_eclass_indexes
    - list_length
    - list_nth
    - bms_next_member
    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:3452,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3455,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3457,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3464,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3471,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - root
    - rel1
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3476
      start: 3445
    functionDepth: 3
    functionLinenumber: 3445
    functionLinenumberEnd: 3476
    functionName: has_relevant_eclass_joinclause
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - get_eclass_indexes_for_relids
    - bms_is_subset
    - list_length
    - list_nth
    - bms_next_member
    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:3497,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3503,1
    - Dst: IS_OTHER_REL
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3513,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3515,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3515,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3522,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3528,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3530,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3533,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3535,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - root
    - eclass
    - rel
    argTypes:
    - PlannerInfo*
    - EquivalenceClass*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3540
      start: 3489
    functionDepth: 1
    functionLinenumber: 3489
    functionLinenumberEnd: 3540
    functionName: eclass_useful_for_merging
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 0
    functionsReached:
    - IS_OTHER_REL
    - bms_overlap
    - Assert
    - bms_is_subset
    - bms_is_empty
    - list_length
    - foreach
    - lfirst
    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:3561,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - rinfo
    - clauselist
    argTypes:
    - RestrictInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3568
      start: 3549
    functionDepth: 1
    functionLinenumber: 3549
    functionLinenumberEnd: 3568
    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:3561,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3565
      start: 3559
    functionDepth: 1
    functionLinenumber: 3559
    functionLinenumberEnd: 3565
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 282
    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:3584,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - rinfo
    - indexclauses
    argTypes:
    - RestrictInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3605
      start: 3576
    functionDepth: 1
    functionLinenumber: 3576
    functionLinenumberEnd: 3605
    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:3584,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3602
      start: 3582
    functionDepth: 1
    functionLinenumber: 3582
    functionLinenumberEnd: 3602
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 282
    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:3619,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3621,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3631,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3631,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3635,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - root
    - relids
    argTypes:
    - PlannerInfo*
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3638
      start: 3612
    functionDepth: 1
    functionLinenumber: 3612
    functionLinenumberEnd: 3638
    functionName: get_eclass_indexes_for_relids
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 3
    functionsReached:
    - bms_is_member
    - Assert
    - bms_next_member
    - bms_add_members
    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:3653,1
    - Dst: bms_get_singleton_member
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3659,1
    - Dst: get_eclass_indexes_for_relids
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3662,1
    - Dst: bms_int_members
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3665,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - root
    - relids1
    - relids2
    argTypes:
    - PlannerInfo*
    - Relids
    - Relids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3666
      start: 3646
    functionDepth: 2
    functionLinenumber: 3646
    functionLinenumberEnd: 3666
    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:3675,1
    - Dst: derives_create
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3686,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3687,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3690,1
    - Dst: ec_add_clause_to_derives_hash
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3691,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - root
    - ec
    argTypes:
    - PlannerInfo*
    - EquivalenceClass*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3692
      start: 3672
    functionDepth: 1
    functionLinenumber: 3672
    functionLinenumberEnd: 3692
    functionName: ec_build_derives_hash
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 0
    functionsReached:
    - ec_add_clause_to_derives_hash
    - Assert
    - foreach_node
    - derives_create
    - 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:3709,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3715,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3717,1
    - Dst: ec_add_clause_to_derives_hash
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3719,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ec
    - clause
    argTypes:
    - EquivalenceClass*
    - RestrictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3720
      start: 3702
    functionDepth: 1
    functionLinenumber: 3702
    functionLinenumberEnd: 3720
    functionName: ec_add_derived_clause
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 2
    functionsReached:
    - ec_add_clause_to_derives_hash
    - Assert
    - lappend
    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:3735,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3737,1
    - Dst: ec_add_clause_to_derives_hash
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3738,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ec
    - clauses
    argTypes:
    - EquivalenceClass*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3739
      start: 3732
    functionDepth: 1
    functionLinenumber: 3732
    functionLinenumberEnd: 3739
    functionName: ec_add_derived_clauses
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - ec_add_clause_to_derives_hash
    - list_concat
    - foreach_node
    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:3760,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: 3778
      start: 3754
    functionDepth: 1
    functionLinenumber: 3754
    functionLinenumberEnd: 3778
    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:3799,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3805,1
    - Dst: fill_ec_derives_key
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3812,1
    - Dst: derives_insert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3816,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3817,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ec
    - rinfo
    argTypes:
    - EquivalenceClass*
    - RestrictInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3819
      start: 3788
    functionDepth: 2
    functionLinenumber: 3788
    functionLinenumberEnd: 3819
    functionName: ec_add_clause_to_derives_hash
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 3
    functionsReached:
    - fill_ec_derives_key
    - Assert
    - 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:3833,1
    - Dst: derives_destroy
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3838,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ec
    argTypes:
    - EquivalenceClass*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3841
      start: 3830
    functionDepth: 1
    functionLinenumber: 3830
    functionLinenumberEnd: 3841
    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:3860,1
    - Dst: ec_search_derived_clause_for_ems
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3873,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: 3875
      start: 3854
    functionDepth: 1
    functionLinenumber: 3854
    functionLinenumberEnd: 3875
    functionName: ec_search_clause_for_ems
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 1
    functionsReached:
    - ec_search_derived_clause_for_ems
    - foreach_node
    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:3900,1
    - Dst: ec_build_derives_hash
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3901,1
    - Dst: fill_ec_derives_key
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3910,1
    - Dst: derives_lookup
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3911,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3915,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3916,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3923,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/equivclass.c:3929,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: 3944
      start: 3892
    functionDepth: 2
    functionLinenumber: 3892
    functionLinenumberEnd: 3944
    functionName: ec_search_derived_clause_for_ems
    functionSourceFile: /src/postgres/src/backend/optimizer/path/equivclass.c
    functionUses: 2
    functionsReached:
    - fill_ec_derives_key
    - Assert
    - foreach_node
    - ec_build_derives_hash
    - list_length
    - derives_lookup
    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:
    - is_pseudo_constant_clause_relids
    - nulltestsel
    - get_oprrest
    - pfree
    - is_pseudo_constant_clause
    - linitial
    - find_single_rel_for_clauses
    - clause_selectivity_ext
    - IsA
    - list_length
    - lsecond
    - NumRelids
    - statext_clauselist_selectivity
    - is_opclause
    - bms_is_member
    - lfirst
    - addRangeClause
    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: 282
    functionsReached:
    - is_pseudo_constant_clause_relids
    - get_oprrest
    - is_pseudo_constant_clause
    - linitial
    - clause_selectivity_ext
    - IsA
    - list_length
    - lsecond
    - NumRelids
    - is_opclause
    - bms_is_member
    - lfirst
    - addRangeClause
    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:
    - find_single_rel_for_clauses
    - clause_selectivity_ext
    - statext_clauselist_selectivity
    - bms_is_member
    - lfirst
    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: 282
    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
      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:
    - get_leftop
    - palloc
    - equal
    - get_rightop
    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:
    - find_single_rel_for_clauses
    - bms_get_singleton_member
    - bms_is_empty
    - IsA
    - find_base_rel
    - is_andclause
    - lfirst
    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: 282
    functionsReached:
    - find_single_rel_for_clauses
    - bms_get_singleton_member
    - bms_is_empty
    - IsA
    - is_andclause
    - lfirst
    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: 32
    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: IsA
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:878,1
    - Dst: scalararraysel
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:881,1
    - Dst: treat_as_join_clause
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:883,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:889,1
    - Dst: rowcomparesel
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:892,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:898,1
    - Dst: nulltestsel
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:901,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:908,1
    - Dst: booltestsel
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:911,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:918,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:922,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:927,1
    - Dst: clause_selectivity_ext
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:930,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:937,1
    - Dst: clause_selectivity_ext
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:940,1
    - Dst: boolvarsel
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:956,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/clausesel.c:969,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 89
    argCount: 6
    argNames:
    - root
    - clause
    - varRelid
    - jointype
    - sjinfo
    - use_extended_stats
    argTypes:
    - PlannerInfo*
    - Node*
    - int
    - JoinType
    - SpecialJoinInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 683
    functionDepth: 4
    functionLinenumber: 683
    functionLinenumberEnd: 973
    functionName: clause_selectivity_ext
    functionSourceFile: /src/postgres/src/backend/optimizer/path/clausesel.c
    functionUses: 6
    functionsReached:
    - restriction_selectivity
    - estimate_expression_value
    - is_opclause
    - is_funcclause
    - treat_as_join_clause
    - scalararraysel
    - is_andclause
    - nulltestsel
    - clauselist_selectivity_ext
    - clauselist_selectivity_or
    - join_selectivity
    - IsA
    - clause_selectivity_ext
    - find_base_rel
    - elog
    - get_notclausearg
    - bms_is_member
    - is_notclause
    - boolvarsel
    - rowcomparesel
    - booltestsel
    - is_orclause
    - DatumGetBool
    - function_selectivity
    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: 114
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 114
    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:221,1
    - Dst: rint
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:226,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - nrows
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 229
    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:255,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - tuple_width
    argTypes:
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 258
    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: isnan
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:271,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - x
    argTypes:
    - Cardinality
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 284
    functionName: clamp_cardinality_to_long
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 3
    functionsReached:
    - isnan
    linkageType: ''
    returnType: long
    signature: long clamp_cardinality_to_long(Cardinality x)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:306,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:307,1
    - Dst: get_tablespace_page_costs
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:316,1
    - Dst: get_restriction_qual_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:326,1
    - Dst: get_parallel_divisor
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:338,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:354,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 4
    argNames:
    - path
    - root
    - baserel
    - param_info
    argTypes:
    - Path*
    - PlannerInfo*
    - RelOptInfo*
    - ParamPathInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 294
    functionDepth: 2
    functionLinenumber: 294
    functionLinenumberEnd: 360
    functionName: cost_seqscan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - Assert
    - get_restriction_qual_cost
    - get_parallel_divisor
    - clamp_row_est
    - get_tablespace_page_costs
    linkageType: ''
    returnType: void
    signature: "void cost_seqscan(Path *path, PlannerInfo *root,\n\t\t\t RelOptInfo
      *baserel, ParamPathInfo *param_info)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:385,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:386,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:387,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:389,1
    - Dst: GetTsmRoutine
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:390,1
    - Dst: get_tablespace_page_costs
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:399,1
    - Dst: get_restriction_qual_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:421,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 4
    argNames:
    - path
    - root
    - baserel
    - param_info
    argTypes:
    - Path*
    - PlannerInfo*
    - RelOptInfo*
    - ParamPathInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 369
    functionDepth: 2
    functionLinenumber: 369
    functionLinenumberEnd: 433
    functionName: cost_samplescan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - Assert
    - get_restriction_qual_cost
    - planner_rt_fetch
    - GetTsmRoutine
    - get_tablespace_page_costs
    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: 472
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 472
    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:510,1
    - Dst: LOG2
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:512,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: 539
      start: 484
    functionDepth: 1
    functionLinenumber: 484
    functionLinenumberEnd: 539
    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:588,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:588,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:589,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:590,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:591,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:604,1
    - Dst: extract_nonindex_conditions
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:604,1
    - Dst: extract_nonindex_conditions
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:606,1
    - Dst: extract_nonindex_conditions
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:613,1
    - Dst: amcostestimate
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:628,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:646,1
    - Dst: get_tablespace_page_costs
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:649,1
    - Dst: index_pages_fetched
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:690,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:696,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:712,1
    - Dst: index_pages_fetched
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:714,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:720,1
    - Dst: index_pages_fetched
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:730,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:736,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:744,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:747,1
    - Dst: compute_parallel_worker
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:775,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:805,1
    - Dst: get_parallel_divisor
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:819,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:821,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 70
    argCount: 4
    argNames:
    - path
    - root
    - loop_count
    - partial_path
    argTypes:
    - IndexPath*
    - PlannerInfo*
    - double
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 559
    functionDepth: 2
    functionLinenumber: 559
    functionLinenumberEnd: 831
    functionName: cost_index
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - Assert
    - list_concat
    - ceil
    - IsA
    - get_parallel_divisor
    - compute_parallel_worker
    - cost_qual_eval
    - extract_nonindex_conditions
    - amcostestimate
    - clamp_row_est
    - index_pages_fetched
    - get_tablespace_page_costs
    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:857,1
    - Dst: is_redundant_with_indexclauses
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:861,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:864,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - qual_clauses
    - indexclauses
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 867
      start: 849
    functionDepth: 2
    functionLinenumber: 849
    functionLinenumberEnd: 867
    functionName: extract_nonindex_conditions
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - lappend
    - is_redundant_with_indexclauses
    - 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:857,1
    - Dst: is_redundant_with_indexclauses
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:861,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:864,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 855
    functionDepth: 2
    functionLinenumber: 855
    functionLinenumberEnd: 865
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 282
    functionsReached:
    - lappend
    - is_redundant_with_indexclauses
    - 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:921,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:922,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:941,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:958,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: 961
      start: 907
    functionDepth: 1
    functionLinenumber: 907
    functionLinenumberEnd: 961
    functionName: index_pages_fetched
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - Max
    - ceil
    - Assert
    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:978,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:982,1
    - Dst: get_indexpath_pages
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:984,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:984,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:987,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:991,1
    - Dst: get_indexpath_pages
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:993,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:993,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:996,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1003,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1003,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - bitmapqual
    argTypes:
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1006
      start: 972
    functionDepth: 1
    functionLinenumber: 972
    functionLinenumberEnd: 1006
    functionName: get_indexpath_pages
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - nodeTag
    - IsA
    - foreach
    - elog
    - get_indexpath_pages
    - lfirst
    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:1041,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1041,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1042,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1043,1
    - Dst: compute_bitmap_pages
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1051,1
    - Dst: get_tablespace_page_costs
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1059,1
    - Dst: sqrt
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1073,1
    - Dst: get_restriction_qual_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1088,1
    - Dst: get_parallel_divisor
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1097,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1102,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 6
    argNames:
    - path
    - root
    - baserel
    - param_info
    - bitmapqual
    - loop_count
    argTypes:
    - Path*
    - PlannerInfo*
    - RelOptInfo*
    - ParamPathInfo*
    - Path*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1115
      start: 1022
    functionDepth: 2
    functionLinenumber: 1022
    functionLinenumberEnd: 1115
    functionName: cost_bitmap_heap_scan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - Assert
    - sqrt
    - get_restriction_qual_cost
    - compute_bitmap_pages
    - IsA
    - get_parallel_divisor
    - clamp_row_est
    - get_tablespace_page_costs
    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:1124,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1137,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1142,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1149,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1149,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - path
    - cost
    - selec
    argTypes:
    - Path*
    - Cost*
    - Selectivity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1152
      start: 1121
    functionDepth: 1
    functionLinenumber: 1121
    functionLinenumberEnd: 1152
    functionName: cost_bitmap_tree_node
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 3
    functionsReached:
    - nodeTag
    - elog
    - IsA
    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:1182,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1184,1
    - Dst: cost_bitmap_tree_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1188,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1193,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - path
    - root
    argTypes:
    - BitmapAndPath*
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1201
      start: 1164
    functionDepth: 2
    functionLinenumber: 1164
    functionLinenumberEnd: 1201
    functionName: cost_bitmap_and_node
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - cost_bitmap_tree_node
    - list_head
    - lfirst
    - 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:1228,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1230,1
    - Dst: cost_bitmap_tree_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1234,1
    - Dst: list_head
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1239,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1240,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1243,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - path
    - root
    argTypes:
    - BitmapOrPath*
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1247
      start: 1209
    functionDepth: 2
    functionLinenumber: 1209
    functionLinenumberEnd: 1247
    functionName: cost_bitmap_or_node
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - Min
    - list_head
    - IsA
    - foreach
    - cost_bitmap_tree_node
    - lfirst
    linkageType: ''
    returnType: void
    signature: void cost_bitmap_or_node(BitmapOrPath *path, PlannerInfo *root)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1271,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1272,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1273,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1285,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1293,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1293,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1294,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1294,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1294,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1296,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1300,1
    - Dst: estimate_array_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1302,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1304,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1320,1
    - Dst: get_tablespace_page_costs
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1323,1
    - Dst: get_restriction_qual_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1331,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 5
    argNames:
    - path
    - root
    - baserel
    - tidquals
    - param_info
    argTypes:
    - Path*
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - ParamPathInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1351
      start: 1257
    functionDepth: 1
    functionLinenumber: 1257
    functionLinenumberEnd: 1351
    functionName: cost_tidscan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - Assert
    - lfirst_node
    - get_restriction_qual_cost
    - lsecond
    - IsA
    - list_length
    - estimate_array_length
    - cost_qual_eval
    - get_tablespace_page_costs
    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:1285,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1293,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1293,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1294,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1294,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1294,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1296,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1300,1
    - Dst: estimate_array_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1302,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1304,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1314
      start: 1283
    functionDepth: 1
    functionLinenumber: 1283
    functionLinenumberEnd: 1314
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 285
    functionsReached:
    - Assert
    - lfirst_node
    - lsecond
    - IsA
    - list_length
    - estimate_array_length
    linkageType: ''
    returnType: void
    signature: void foreach(l, tidquals)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1380,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1381,1
    - Dst: clauselist_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1390,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1392,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1412,1
    - Dst: get_tablespace_page_costs
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1415,1
    - Dst: get_restriction_qual_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1423,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1442,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 5
    argNames:
    - path
    - root
    - baserel
    - tidrangequals
    - param_info
    argTypes:
    - Path*
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - ParamPathInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1446
      start: 1362
    functionDepth: 2
    functionLinenumber: 1362
    functionLinenumberEnd: 1446
    functionName: cost_tidrangescan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - Assert
    - get_restriction_qual_cost
    - ceil
    - clauselist_selectivity
    - cost_qual_eval
    - get_tablespace_page_costs
    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: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1468,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1469,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1478,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1483,1
    - Dst: clauselist_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1484,1
    - Dst: get_restriction_qual_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1516,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 5
    argNames:
    - path
    - root
    - baserel
    - param_info
    - trivial_pathtarget
    argTypes:
    - SubqueryScanPath*
    - PlannerInfo*
    - RelOptInfo*
    - ParamPathInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1528
      start: 1456
    functionDepth: 2
    functionLinenumber: 1456
    functionLinenumberEnd: 1528
    functionName: cost_subqueryscan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - Assert
    - list_concat_copy
    - get_restriction_qual_cost
    - clauselist_selectivity
    - 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: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1549,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1550,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1551,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1572,1
    - Dst: get_restriction_qual_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1577,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 4
    argNames:
    - path
    - root
    - baserel
    - param_info
    argTypes:
    - Path*
    - PlannerInfo*
    - RelOptInfo*
    - ParamPathInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1590
      start: 1537
    functionDepth: 1
    functionLinenumber: 1537
    functionLinenumberEnd: 1590
    functionName: cost_functionscan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - get_restriction_qual_cost
    - planner_rt_fetch
    - Assert
    - cost_qual_eval_node
    linkageType: ''
    returnType: void
    signature: "void cost_functionscan(Path *path, PlannerInfo *root,\n\t\t\t\t  RelOptInfo
      *baserel, ParamPathInfo *param_info)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1611,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1612,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1613,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1629,1
    - Dst: get_restriction_qual_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1634,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 4
    argNames:
    - path
    - root
    - baserel
    - param_info
    argTypes:
    - Path*
    - PlannerInfo*
    - RelOptInfo*
    - ParamPathInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1647
      start: 1599
    functionDepth: 1
    functionLinenumber: 1599
    functionLinenumberEnd: 1647
    functionName: cost_tablefuncscan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - get_restriction_qual_cost
    - planner_rt_fetch
    - Assert
    - cost_qual_eval_node
    linkageType: ''
    returnType: void
    signature: "void cost_tablefuncscan(Path *path, PlannerInfo *root,\n\t\t\t\t   RelOptInfo
      *baserel, ParamPathInfo *param_info)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1666,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1667,1
    - Dst: get_restriction_qual_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1682,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 4
    argNames:
    - path
    - root
    - baserel
    - param_info
    argTypes:
    - Path*
    - PlannerInfo*
    - RelOptInfo*
    - ParamPathInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1695
      start: 1656
    functionDepth: 1
    functionLinenumber: 1656
    functionLinenumberEnd: 1695
    functionName: cost_valuesscan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - get_restriction_qual_cost
    - Assert
    linkageType: ''
    returnType: void
    signature: "void cost_valuesscan(Path *path, PlannerInfo *root,\n\t\t\t\tRelOptInfo
      *baserel, ParamPathInfo *param_info)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1717,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1718,1
    - Dst: get_restriction_qual_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1730,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 4
    argNames:
    - path
    - root
    - baserel
    - param_info
    argTypes:
    - Path*
    - PlannerInfo*
    - RelOptInfo*
    - ParamPathInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1743
      start: 1707
    functionDepth: 1
    functionLinenumber: 1707
    functionLinenumberEnd: 1743
    functionName: cost_ctescan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - get_restriction_qual_cost
    - Assert
    linkageType: ''
    returnType: void
    signature: "void cost_ctescan(Path *path, PlannerInfo *root,\n\t\t\t RelOptInfo
      *baserel, ParamPathInfo *param_info)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1759,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1760,1
    - Dst: get_restriction_qual_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1772,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 4
    argNames:
    - path
    - root
    - baserel
    - param_info
    argTypes:
    - Path*
    - PlannerInfo*
    - RelOptInfo*
    - ParamPathInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1781
      start: 1749
    functionDepth: 1
    functionLinenumber: 1749
    functionLinenumberEnd: 1781
    functionName: cost_namedtuplestorescan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - get_restriction_qual_cost
    - Assert
    linkageType: ''
    returnType: void
    signature: "void cost_namedtuplestorescan(Path *path, PlannerInfo *root,\n\t\t\t\t\t\t
      RelOptInfo *baserel, ParamPathInfo *param_info)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1797,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1798,1
    - Dst: get_restriction_qual_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1807,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 4
    argNames:
    - path
    - root
    - baserel
    - param_info
    argTypes:
    - Path*
    - PlannerInfo*
    - RelOptInfo*
    - ParamPathInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1816
      start: 1787
    functionDepth: 1
    functionLinenumber: 1787
    functionLinenumberEnd: 1816
    functionName: cost_resultscan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - get_restriction_qual_cost
    - Assert
    linkageType: ''
    returnType: void
    signature: "void cost_resultscan(Path *path, PlannerInfo *root,\n\t\t\t\tRelOptInfo
      *baserel, ParamPathInfo *param_info)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1857,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - runion
    - nrterm
    - rterm
    argTypes:
    - Path*
    - Path*
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1859
      start: 1825
    functionDepth: 0
    functionLinenumber: 1825
    functionLinenumberEnd: 1859
    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:1903,1
    - Dst: relation_byte_size
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1922,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1935,1
    - Dst: tuplesort_merge_order
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1937,1
    - Dst: LOG2
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1946,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1952,1
    - Dst: log
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1952,1
    - Dst: log
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1952,1
    - Dst: LOG2
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1968,1
    - Dst: LOG2
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:1973,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: 1985
      start: 1897
    functionDepth: 1
    functionLinenumber: 1897
    functionLinenumberEnd: 1985
    functionName: cost_tuplesort
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 0
    functionsReached:
    - relation_byte_size
    - log
    - tuplesort_merge_order
    - ceil
    - LOG2
    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:2019,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2019,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2029,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2055,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2057,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2063,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2063,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2070,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2072,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2078,1
    - Dst: cost_tuplesort
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2088,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2124,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: 2129
      start: 1999
    functionDepth: 2
    functionLinenumber: 1999
    functionLinenumberEnd: 2129
    functionName: cost_incremental_sort
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - pull_varnos
    - Min
    - Assert
    - cost_tuplesort
    - linitial
    - list_length
    - foreach_current_index
    - lappend
    - estimate_num_groups
    - bms_is_member
    - lfirst
    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:2055,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2057,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2063,1
    - Dst: pull_varnos
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2063,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2070,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2072,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2074
      start: 2053
    functionDepth: 2
    functionLinenumber: 2053
    functionLinenumberEnd: 2074
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 285
    functionsReached:
    - lfirst
    - linitial
    - foreach_current_index
    - lappend
    - bms_is_member
    - pull_varnos
    linkageType: ''
    returnType: void
    signature: void foreach(l, pathkeys)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cost_tuplesort
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2154,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: 2165
      start: 2143
    functionDepth: 2
    functionLinenumber: 2143
    functionLinenumberEnd: 2165
    functionName: cost_sort
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 8
    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:2191,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2192,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2198,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2217,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 3
    argNames:
    - subpaths
    - numpaths
    - parallel_workers
    argTypes:
    - List*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2243
      start: 2173
    functionDepth: 1
    functionLinenumber: 2173
    functionLinenumberEnd: 2243
    functionName: append_nonpartial_cost
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 0
    functionsReached:
    - Min
    - palloc
    - lfirst
    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:2198,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2203
      start: 2196
    functionDepth: 1
    functionLinenumber: 2196
    functionLinenumberEnd: 2203
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 285
    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:2217,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2232
      start: 2215
    functionDepth: 1
    functionLinenumber: 2215
    functionLinenumberEnd: 2232
    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: 8
    BranchProfiles: []
    Callsites:
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2268,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2280,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2282,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2309,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2311,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2314,1
    - Dst: cost_sort
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2322,1
    - Dst: get_parallel_divisor
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2345,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2348,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2351,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2353,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2363,1
    - Dst: get_parallel_divisor
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2379,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2386,1
    - Dst: append_nonpartial_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2393,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 47
    argCount: 1
    argNames:
    - apath
    argTypes:
    - AppendPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2404
      start: 2249
    functionDepth: 3
    functionLinenumber: 2249
    functionLinenumberEnd: 2404
    functionName: cost_append
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - Min
    - Assert
    - append_nonpartial_cost
    - linitial
    - pathkeys_contained_in
    - foreach
    - get_parallel_divisor
    - cost_sort
    - clamp_row_est
    - lfirst
    linkageType: ''
    returnType: void
    signature: void cost_append(AppendPath *apath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LOG2
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    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: 2468
      start: 2431
    functionDepth: 1
    functionLinenumber: 2431
    functionLinenumberEnd: 2468
    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:2490,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2517,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 6
    argNames:
    - path
    - input_disabled_nodes
    - input_startup_cost
    - input_total_cost
    - tuples
    - width
    argTypes:
    - Path*
    - int
    - Cost
    - Cost
    - double
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2525
      start: 2482
    functionDepth: 1
    functionLinenumber: 2482
    functionLinenumberEnd: 2525
    functionName: cost_material
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - relation_byte_size
    - ceil
    linkageType: ''
    returnType: void
    signature: "void cost_material(Path *path,\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 tuples, int
      width)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_hash_memory_limit
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2562,1
    - Dst: relation_byte_size
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2570,1
    - Dst: ExecEstimateCacheEntryOverheadBytes
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2571,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2574,1
    - Dst: get_expr_width
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2575,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2575,1
    - Dst: floor
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2578,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2581,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2604,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2604,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2613,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2622,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2624,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 4
    argNames:
    - root
    - mpath
    - rescan_startup_cost
    - rescan_total_cost
    argTypes:
    - PlannerInfo*
    - MemoizePath*
    - Cost*
    - Cost*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2668
      start: 2540
    functionDepth: 1
    functionLinenumber: 2540
    functionLinenumberEnd: 2668
    functionName: cost_memoize_rescan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 0
    functionsReached:
    - relation_byte_size
    - Min
    - Assert
    - floor
    - foreach
    - get_hash_memory_limit
    - ExecEstimateCacheEntryOverheadBytes
    - Max
    - estimate_num_groups
    - lfirst
    - get_expr_width
    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: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2698,1
    - Dst: hash_agg_entry_size
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2801,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2801,1
    - Dst: hash_agg_set_limits
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2804,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2807,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2810,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2810,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2811,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2818,1
    - Dst: log
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2818,1
    - Dst: log
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2818,1
    - Dst: relation_byte_size
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2824,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2852,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2856,1
    - Dst: clauselist_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2857,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 67
    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: 2868
      start: 2681
    functionDepth: 2
    functionLinenumber: 2681
    functionLinenumberEnd: 2868
    functionName: cost_agg
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 4
    functionsReached:
    - hash_agg_entry_size
    - Assert
    - log
    - relation_byte_size
    - hash_agg_set_limits
    - ceil
    - clauselist_selectivity
    - list_length
    - Max
    - cost_qual_eval
    - clamp_row_est
    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:2899,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2902,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2904,1
    - Dst: get_sortgrouplist_exprs
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2920,1
    - Dst: estimate_num_groups
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2924,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2927,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2966,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:2986,1
    - Dst: DatumGetInt16
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3005,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3009,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3013,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3049,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3059,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3070,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3078,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3087,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 77
    argCount: 3
    argNames:
    - root
    - wc
    - input_tuples
    argTypes:
    - PlannerInfo*
    - WindowClause*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3088
      start: 2883
    functionDepth: 5
    functionLinenumber: 2883
    functionLinenumberEnd: 3088
    functionName: get_windowclause_startup_tuples
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 0
    functionsReached:
    - Min
    - Assert
    - DatumGetInt32
    - IsA
    - DatumGetInt64
    - estimate_num_groups
    - DatumGetInt16
    - clamp_row_est
    - list_free
    - get_sortgrouplist_exprs
    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:3111,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3112,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3128,1
    - Dst: add_function_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3133,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3139,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3147,1
    - Dst: get_windowclause_startup_tuples
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3178,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: 3184
      start: 3097
    functionDepth: 6
    functionLinenumber: 3097
    functionLinenumberEnd: 3184
    functionName: cost_windowagg
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - lfirst_node
    - add_function_cost
    - cost_qual_eval_node
    - list_length
    - get_windowclause_startup_tuples
    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:3128,1
    - Dst: add_function_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3133,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3139,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3152
      start: 3126
    functionDepth: 2
    functionLinenumber: 3126
    functionLinenumberEnd: 3152
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 287
    functionsReached:
    - cost_qual_eval_node
    - add_function_cost
    - 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:3224,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3228,1
    - Dst: clauselist_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3229,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: 3240
      start: 3194
    functionDepth: 2
    functionLinenumber: 3194
    functionLinenumberEnd: 3240
    functionName: cost_group
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - clamp_row_est
    - cost_qual_eval
    - clauselist_selectivity
    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:3287,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 6
    argNames:
    - root
    - workspace
    - jointype
    - outer_path
    - inner_path
    - extra
    argTypes:
    - PlannerInfo*
    - JoinCostWorkspace*
    - JoinType
    - Path*
    - Path*
    - JoinPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3338
      start: 3266
    functionDepth: 1
    functionLinenumber: 3266
    functionLinenumberEnd: 3338
    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,\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:3380,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3383,1
    - Dst: rint
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3410,1
    - Dst: has_indexed_join_quals
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3429,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3506,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 44
    argCount: 4
    argNames:
    - root
    - path
    - workspace
    - extra
    argTypes:
    - PlannerInfo*
    - NestPath*
    - JoinCostWorkspace*
    - JoinPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3517
      start: 3348
    functionDepth: 2
    functionLinenumber: 3348
    functionLinenumberEnd: 3517
    functionName: final_cost_nestloop
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - has_indexed_join_quals
    - rint
    - get_parallel_divisor
    - cost_qual_eval
    - clamp_row_est
    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:3596,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3606,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3607,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3608,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3609,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3615,1
    - Dst: cached_scansel
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3618,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3620,1
    - Dst: rint
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3661,1
    - Dst: rint
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3662,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3663,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3664,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3666,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3667,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3679,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3680,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3693,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3693,1
    - Dst: cost_incremental_sort
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3701,1
    - Dst: cost_sort
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3716,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3752,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3752,1
    - Dst: cost_sort
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3759,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: 3807
      start: 3551
    functionDepth: 3
    functionLinenumber: 3551
    functionLinenumberEnd: 3807
    functionName: initial_cost_mergejoin
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - Assert
    - bms_is_subset
    - linitial
    - rint
    - pathkeys_contained_in
    - cost_incremental_sort
    - elog
    - cost_sort
    - clamp_row_est
    - cached_scansel
    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: 12
    BranchProfiles: []
    Callsites:
    - Dst: get_parallel_divisor
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3878,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3881,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3888,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3889,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3902,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3903,1
    - Dst: approx_tuple_count
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3912,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:3940,1
    - Dst: ExecSupportsMarkRestore
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4014,1
    - Dst: relation_byte_size
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4029,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 49
    argCount: 4
    argNames:
    - root
    - path
    - workspace
    - extra
    argTypes:
    - PlannerInfo*
    - MergePath*
    - JoinCostWorkspace*
    - JoinPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4075
      start: 3836
    functionDepth: 2
    functionLinenumber: 3836
    functionLinenumberEnd: 4075
    functionName: final_cost_mergejoin
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - relation_byte_size
    - ExecSupportsMarkRestore
    - approx_tuple_count
    - IsA
    - list_length
    - get_parallel_divisor
    - cost_qual_eval
    - clamp_row_est
    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:4092,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4094,1
    - Dst: mergejoinscansel
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4103,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4114,1
    - Dst: palloc
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4116,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4126,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4128,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - root
    - rinfo
    - pathkey
    argTypes:
    - PlannerInfo*
    - RestrictInfo*
    - PathKey*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4131
      start: 4080
    functionDepth: 1
    functionLinenumber: 4080
    functionLinenumberEnd: 4131
    functionName: cached_scansel
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - mergejoinscansel
    - MemoryContextSwitchTo
    - foreach
    - lappend
    - palloc
    - lfirst
    linkageType: ''
    returnType: MergeScanSelCache
    signature: 'MergeScanSelCache *

      cached_scansel(PlannerInfo *root, RestrictInfo *rinfo, PathKey *pathkey)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4173,1
    - Dst: get_parallel_divisor
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4210,1
    - Dst: ExecChooseHashTableSize
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4222,1
    - Dst: page_size
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4241,1
    - Dst: page_size
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4243,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    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: 4261
      start: 4159
    functionDepth: 1
    functionLinenumber: 4159
    functionLinenumberEnd: 4261
    functionName: initial_cost_hashjoin
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - get_parallel_divisor
    - ExecChooseHashTableSize
    - page_size
    - list_length
    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:4310,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4313,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4335,1
    - Dst: estimate_multivariate_bucketsize
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4348,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4356,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4368,1
    - Dst: estimate_hash_bucket_stats
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4376,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4377,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4387,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4387,1
    - Dst: estimate_hash_bucket_stats
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4394,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4395,1
    - Dst: relation_byte_size
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4419,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4419,1
    - Dst: get_hash_memory_limit
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4420,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4427,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4428,1
    - Dst: rint
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4453,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4458,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4475,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4497,1
    - Dst: approx_tuple_count
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4504,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 67
    argCount: 4
    argNames:
    - root
    - path
    - workspace
    - extra
    argTypes:
    - PlannerInfo*
    - HashPath*
    - JoinCostWorkspace*
    - JoinPathExtraData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4523
      start: 4274
    functionDepth: 2
    functionLinenumber: 4274
    functionLinenumberEnd: 4523
    functionName: final_cost_hashjoin
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - relation_byte_size
    - Assert
    - bms_is_subset
    - lfirst_node
    - approx_tuple_count
    - IsA
    - rint
    - get_rightop
    - get_parallel_divisor
    - get_leftop
    - get_hash_memory_limit
    - estimate_multivariate_bucketsize
    - cost_qual_eval
    - clamp_row_est
    - estimate_hash_bucket_stats
    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:4356,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4368,1
    - Dst: estimate_hash_bucket_stats
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4376,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4377,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4387,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4387,1
    - Dst: estimate_hash_bucket_stats
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4394,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4395,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4408
      start: 4354
    functionDepth: 2
    functionLinenumber: 4354
    functionLinenumberEnd: 4408
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 288
    functionsReached:
    - Assert
    - bms_is_subset
    - lfirst_node
    - get_rightop
    - get_leftop
    - estimate_hash_bucket_stats
    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:4539,1
    - Dst: make_ands_implicit
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4540,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4577,1
    - Dst: ExecMaterializesOutput
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4601,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4601,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - root
    - subplan
    - plan
    argTypes:
    - PlannerInfo*
    - SubPlan*
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4609
      start: 4533
    functionDepth: 2
    functionLinenumber: 4533
    functionLinenumberEnd: 4609
    functionName: cost_subplan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 3
    functionsReached:
    - nodeTag
    - ExecMaterializesOutput
    - cost_qual_eval
    - make_ands_implicit
    - clamp_row_est
    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:4674,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4681,1
    - Dst: relation_byte_size
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4701,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4708,1
    - Dst: cost_memoize_rescan
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4718,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: 4726
      start: 4626
    functionDepth: 2
    functionLinenumber: 4626
    functionLinenumberEnd: 4726
    functionName: cost_rescan
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - relation_byte_size
    - cost_memoize_rescan
    - ceil
    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:4755,1
    - Dst: cost_qual_eval_walker
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4757,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - cost
    - quals
    - root
    argTypes:
    - QualCost*
    - List*
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4761
      start: 4741
    functionDepth: 1
    functionLinenumber: 4741
    functionLinenumberEnd: 4761
    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:4755,1
    - Dst: cost_qual_eval_walker
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4757,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4758
      start: 4753
    functionDepth: 1
    functionLinenumber: 4753
    functionLinenumberEnd: 4758
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 288
    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:4776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - cost
    - qual
    - root
    argTypes:
    - QualCost*
    - Node*
    - PlannerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4779
      start: 4767
    functionDepth: 1
    functionLinenumber: 4767
    functionLinenumberEnd: 4779
    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:4793,1
    - Dst: cost_qual_eval_walker
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4810,1
    - Dst: cost_qual_eval_walker
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4812,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4854,1
    - Dst: add_function_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4856,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4859,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4860,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4861,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4864,1
    - Dst: add_function_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4865,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4868,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4871,1
    - Dst: estimate_array_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4874,1
    - Dst: set_sa_opfuncid
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4876,1
    - Dst: add_function_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4878,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4881,1
    - Dst: add_function_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4886,1
    - Dst: estimate_array_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4912,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4915,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4916,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4929,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4935,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4943,1
    - Dst: add_function_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4945,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4948,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4948,1
    - Dst: add_function_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4950,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4953,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4958,1
    - Dst: estimate_array_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4963,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4965,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4971,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4973,1
    - Dst: add_function_cost
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4975,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4975,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4979,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4980,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4981,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4982,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4983,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4984,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4989,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4992,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:4994,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5013,1
    - Dst: cost_qual_eval_walker
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5023,1
    - Dst: linitial
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5023,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5026,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5042,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 85
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - cost_qual_eval_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5043
      start: 4781
    functionDepth: 2
    functionLinenumber: 4781
    functionLinenumberEnd: 5043
    functionName: cost_qual_eval_walker
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 4
    functionsReached:
    - exprType
    - getTypeInputInfo
    - cost_qual_eval_walker
    - getTypeOutputInfo
    - set_sa_opfuncid
    - linitial
    - expression_tree_walker
    - cost_qual_eval_node
    - lsecond
    - IsA
    - estimate_array_length
    - foreach
    - get_opcode
    - elog
    - OidIsValid
    - set_opfuncid
    - lfirst_oid
    - add_function_cost
    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:5065,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: 5072
      start: 5057
    functionDepth: 2
    functionLinenumber: 5057
    functionLinenumberEnd: 5072
    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:5123,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5128,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5130,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5131,1
    - Dst: clauselist_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5140,1
    - Dst: init_dummy_sjinfo
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5149,1
    - Dst: clauselist_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5151,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5158,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5159,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5177,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: 5184
      start: 5099
    functionDepth: 2
    functionLinenumber: 5099
    functionLinenumberEnd: 5184
    functionName: compute_semi_anti_join_factors
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - init_dummy_sjinfo
    - lfirst_node
    - RINFO_IS_PUSHED_DOWN
    - clauselist_selectivity
    - Max
    - lappend
    - IS_OUTER_JOIN
    - list_free
    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:5128,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5130,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5131,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5132
      start: 5126
    functionDepth: 1
    functionLinenumber: 5126
    functionLinenumberEnd: 5132
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 289
    functionsReached:
    - RINFO_IS_PUSHED_DOWN
    - lappend
    - 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:5225,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5248,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5250,1
    - Dst: join_clause_is_movable_into
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5252,1
    - Dst: is_redundant_with_indexclauses
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5256,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 1
    argNames:
    - path
    argTypes:
    - NestPath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5262
      start: 5196
    functionDepth: 2
    functionLinenumber: 5196
    functionLinenumberEnd: 5262
    functionName: has_indexed_join_quals
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - is_redundant_with_indexclauses
    - IsA
    - foreach
    - join_clause_is_movable_into
    - lfirst
    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:5302,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5308,1
    - Dst: clause_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5311,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - root
    - path
    - quals
    argTypes:
    - PlannerInfo*
    - JoinPath*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5318
      start: 5289
    functionDepth: 2
    functionLinenumber: 5289
    functionLinenumberEnd: 5318
    functionName: approx_tuple_count
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - init_dummy_sjinfo
    - lfirst
    - clause_selectivity
    - clamp_row_est
    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:5308,1
    - Dst: clause_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5312
      start: 5306
    functionDepth: 2
    functionLinenumber: 5306
    functionLinenumberEnd: 5312
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 290
    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:5340,1
    - Dst: clauselist_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5343,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5349,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5351,1
    - Dst: set_rel_width
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5354
      start: 5334
    functionDepth: 2
    functionLinenumber: 5334
    functionLinenumberEnd: 5354
    functionName: set_baserel_size_estimates
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - Assert
    - clauselist_selectivity
    - cost_qual_eval
    - set_rel_width
    - clamp_row_est
    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:5377,1
    - Dst: clauselist_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5379,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5384,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - root
    - rel
    - param_clauses
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5389
      start: 5364
    functionDepth: 2
    functionLinenumber: 5364
    functionLinenumberEnd: 5389
    functionName: get_parameterized_baserel_size
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - clauselist_selectivity
    - clamp_row_est
    - list_concat_copy
    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:5420,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: 5428
      start: 5413
    functionDepth: 1
    functionLinenumber: 5413
    functionLinenumberEnd: 5428
    functionName: set_joinrel_size_estimates
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    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:5463,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: 5475
      start: 5445
    functionDepth: 1
    functionLinenumber: 5445
    functionLinenumberEnd: 5475
    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:5517,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5528,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5537,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5539,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5540,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5542,1
    - Dst: clauselist_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5546,1
    - Dst: clauselist_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5551,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5558,1
    - Dst: list_free
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5559,1
    - Dst: clauselist_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5563,1
    - Dst: elog
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5613,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5618,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: 5619
      start: 5486
    functionDepth: 2
    functionLinenumber: 5486
    functionLinenumberEnd: 5619
    functionName: calc_joinrel_size_estimate
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - lfirst_node
    - get_foreign_key_join_selectivity
    - RINFO_IS_PUSHED_DOWN
    - clauselist_selectivity
    - elog
    - lappend
    - clamp_row_est
    - IS_OUTER_JOIN
    - list_free
    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:5537,1
    - Dst: RINFO_IS_PUSHED_DOWN
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5539,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5540,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5542,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5543
      start: 5535
    functionDepth: 1
    functionLinenumber: 5535
    functionLinenumberEnd: 5543
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 290
    functionsReached:
    - RINFO_IS_PUSHED_DOWN
    - lappend
    - 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:5649,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5651,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5660,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5661,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5663,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5664,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5682,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5692,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5697,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5731,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5740,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5741,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5772,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5775,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5815,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5816,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5827,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5828,1
    - Dst: find_derived_clause_for_ec_member
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5852,1
    - Dst: clause_selectivity
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5860,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5874,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: 5876
      start: 5636
    functionDepth: 2
    functionLinenumber: 5636
    functionLinenumberEnd: 5876
    functionName: get_foreign_key_join_selectivity
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - foreach_delete_current
    - list_concat
    - list_copy
    - clause_selectivity
    - foreach
    - list_length
    - find_base_rel
    - Max
    - lappend
    - find_derived_clause_for_ec_member
    - CLAMP_PROBABILITY
    - bms_is_member
    - bms_membership
    - list_member_ptr
    - lfirst
    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:5697,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5731,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5740,1
    - Dst: lappend
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5741,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5743
      start: 5695
    functionDepth: 1
    functionLinenumber: 5695
    functionLinenumberEnd: 5743
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 291
    functionsReached:
    - foreach_delete_current
    - list_member_ptr
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(cell, worklist)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5896,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5897,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5897,1
    - Dst: fetch_upper_rel
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5903,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5912,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5914,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5944,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5948,1
    - Dst: set_baserel_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5956,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5957
      start: 5888
    functionDepth: 3
    functionLinenumber: 5888
    functionLinenumberEnd: 5957
    functionName: set_subquery_size_estimates
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - fetch_upper_rel
    - Assert
    - lfirst_node
    - planner_rt_fetch
    - IsA
    - foreach
    - find_base_rel
    - set_baserel_size_estimates
    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:5975,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5976,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5977,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5984,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5986,1
    - Dst: expression_returns_set_rows
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5987,1
    - Dst: set_baserel_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:5994,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5995
      start: 5968
    functionDepth: 3
    functionLinenumber: 5968
    functionLinenumberEnd: 5995
    functionName: set_function_size_estimates
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - Assert
    - planner_rt_fetch
    - foreach
    - 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:6010,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6011,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6011,1
    - Dst: set_baserel_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6016,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6017
      start: 6006
    functionDepth: 3
    functionLinenumber: 6006
    functionLinenumberEnd: 6017
    functionName: set_tablefunc_size_estimates
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - planner_rt_fetch
    - Assert
    - 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:6034,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6035,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6036,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6044,1
    - Dst: set_baserel_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6047,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6048
      start: 6028
    functionDepth: 3
    functionLinenumber: 6028
    functionLinenumberEnd: 6048
    functionName: set_values_size_estimates
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - planner_rt_fetch
    - Assert
    - 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:6066,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6067,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6068,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6077,1
    - Dst: set_baserel_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6086,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - root
    - rel
    - cte_rows
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6087
      start: 6060
    functionDepth: 3
    functionLinenumber: 6060
    functionLinenumberEnd: 6087
    functionName: set_cte_size_estimates
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - planner_rt_fetch
    - Assert
    - clamp_row_est
    - set_baserel_size_estimates
    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:6104,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6105,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6106,1
    - Dst: set_baserel_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6120
      start: 6098
    functionDepth: 3
    functionLinenumber: 6098
    functionLinenumberEnd: 6120
    functionName: set_namedtuplestore_size_estimates
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - planner_rt_fetch
    - Assert
    - 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:6135,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6136,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6136,1
    - Dst: set_baserel_size_estimates
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6143
      start: 6131
    functionDepth: 3
    functionLinenumber: 6131
    functionLinenumberEnd: 6143
    functionName: set_result_size_estimates
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - planner_rt_fetch
    - Assert
    - 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:6164,1
    - Dst: cost_qual_eval
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6168,1
    - Dst: set_rel_width
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6171
      start: 6160
    functionDepth: 2
    functionLinenumber: 6160
    functionLinenumberEnd: 6171
    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:6198,1
    - Dst: foreach
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6207,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6209,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6217,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6224,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6225,1
    - Dst: get_attavgwidth
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6252,1
    - Dst: get_typavgwidth
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6265,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6266,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6270,1
    - Dst: find_placeholder_info
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6277,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6281,1
    - Dst: get_typavgwidth
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6295,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6295,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6295,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6296,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6299,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6311,1
    - Dst: get_relation_data_width
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6316,1
    - Dst: clamp_width_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6328,1
    - Dst: clamp_width_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6337,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 54
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6338
      start: 6195
    functionDepth: 4
    functionLinenumber: 6195
    functionLinenumberEnd: 6338
    functionName: set_rel_width
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - exprType
    - Assert
    - get_attavgwidth
    - planner_rt_fetch
    - cost_qual_eval_node
    - exprTypmod
    - IsA
    - get_typavgwidth
    - foreach
    - clamp_width_est
    - get_relation_data_width
    - find_placeholder_info
    - lfirst
    - MAXALIGN
    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:6362,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6364,1
    - Dst: get_expr_width
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6366,1
    - Dst: IsA
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6369,1
    - Dst: cost_qual_eval_node
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6373,1
    - Dst: clamp_width_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6379,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - root
    - target
    argTypes:
    - PlannerInfo*
    - PathTarget*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6382
      start: 6352
    functionDepth: 2
    functionLinenumber: 6352
    functionLinenumberEnd: 6382
    functionName: set_pathtarget_cost_width
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 5
    functionsReached:
    - cost_qual_eval_node
    - clamp_width_est
    - IsA
    - foreach
    - lfirst
    - get_expr_width
    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:6395,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6400,1
    - Dst: IS_SPECIAL_VARNO
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6403,1
    - Dst: get_typavgwidth
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6422,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6423,1
    - Dst: get_typavgwidth
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6428,1
    - Dst: exprType
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6428,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6428,1
    - Dst: Assert
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6429,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - root
    - expr
    argTypes:
    - PlannerInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6431
      start: 6390
    functionDepth: 1
    functionLinenumber: 6390
    functionLinenumberEnd: 6431
    functionName: get_expr_width
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - exprType
    - Assert
    - exprTypmod
    - IsA
    - IS_SPECIAL_VARNO
    - 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:6441,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6441,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tuples
    - width
    argTypes:
    - double
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6442
      start: 6438
    functionDepth: 1
    functionLinenumber: 6438
    functionLinenumberEnd: 6442
    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:6452,1
    - Dst: relation_byte_size
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tuples
    - width
    argTypes:
    - double
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6453
      start: 6449
    functionDepth: 2
    functionLinenumber: 6449
    functionLinenumberEnd: 6453
    functionName: page_size
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 1
    functionsReached:
    - relation_byte_size
    - ceil
    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: 6485
      start: 6459
    functionDepth: 0
    functionLinenumber: 6459
    functionLinenumberEnd: 6485
    functionName: get_parallel_divisor
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 8
    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:6516,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6521,1
    - Dst: Min
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6540,1
    - Dst: tbm_calculate_entries
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6541,1
    - Dst: index_pages_fetched
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6551,1
    - Dst: get_indexpath_pages
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6553,1
    - Dst: ceil
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6561,1
    - Dst: Max
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6575,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6587,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: 6598
      start: 6499
    functionDepth: 2
    functionLinenumber: 6499
    functionLinenumberEnd: 6598
    functionName: compute_bitmap_pages
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 2
    functionsReached:
    - Min
    - tbm_calculate_entries
    - ceil
    - Max
    - cost_bitmap_tree_node
    - clamp_row_est
    - get_indexpath_pages
    - 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:6613,1
    - Dst: clamp_row_est
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6615,1
    - Dst: get_parallel_divisor
      Src: /src/postgres/src/backend/optimizer/path/costsize.c:6615,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - path
    argTypes:
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6616
      start: 6610
    functionDepth: 2
    functionLinenumber: 6610
    functionLinenumberEnd: 6616
    functionName: compute_gather_rows
    functionSourceFile: /src/postgres/src/backend/optimizer/path/costsize.c
    functionUses: 5
    functionsReached:
    - get_parallel_divisor
    - Assert
    - clamp_row_est
    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:
    - MemoryContextSwitchTo
    - foreach
    - elog
    - lappend
    - makeNode
    - 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
    - pathkey_is_redundant
    - lfirst_node
    - lappend
    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: 296
    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:
    - EC_MUST_BE_REDUNDANT
    - lfirst
    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: 296
    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:
    - get_mergejoin_opfamilies
    - make_canonical_pathkey
    - elog
    - get_opfamily_member_for_cmptype
    - OidIsValid
    - get_eclass_for_sort_expr
    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:
    - make_pathkey_from_sortinfo
    - get_ordering_op_properties
    - elog
    - 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: 12
    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: 16
    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
    - Assert
    - list_length
    - foreach_current_index
    - get_sortgroupref_clause_noerr
    - lappend
    - OidIsValid
    - list_member_ptr
    - lfirst
    - list_free
    - list_concat_unique_ptr
    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: 296
    functionsReached:
    - Assert
    - foreach_current_index
    - get_sortgroupref_clause_noerr
    - lappend
    - OidIsValid
    - list_member_ptr
    - lfirst
    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:
    - Assert
    - lfirst_node
    - list_difference_ptr
    - group_keys_reorder_by_pathkeys
    - list_difference
    - pathkeys_contained_in
    - for_each_from
    - list_length
    - lappend
    - compare_pathkeys
    - forboth
    - makeNode
    - linitial_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: 11
    functionsReached:
    - lfirst
    - list_length
    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: 13
    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:
    - bms_is_subset
    - compare_path_costs
    - pathkeys_contained_in
    - PATH_REQ_OUTER
    - lfirst
    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: 296
    functionsReached:
    - bms_is_subset
    - compare_path_costs
    - pathkeys_contained_in
    - PATH_REQ_OUTER
    - lfirst
    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:
    - bms_is_subset
    - compare_fractional_path_costs
    - pathkeys_contained_in
    - PATH_REQ_OUTER
    - lfirst
    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: 296
    functionsReached:
    - bms_is_subset
    - compare_fractional_path_costs
    - pathkeys_contained_in
    - PATH_REQ_OUTER
    - lfirst
    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:
    - bms_is_empty
    - lfirst
    - 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: 296
    functionsReached:
    - bms_is_empty
    - lfirst
    - 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:
    - make_pathkey_from_sortinfo
    - pathkey_is_redundant
    - indexcol_is_bool_constant_for_query
    - foreach
    - ScanDirectionIsBackward
    - lappend
    - 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:
    - IsBuiltinBooleanOpfamily
    - matches_boolean_partition_clause
    - lfirst
    - foreach
    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:
    - get_notclausearg
    - equal
    - is_notclause
    - linitial
    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:
    - make_pathkey_from_sortinfo
    - Assert
    - pathkey_is_redundant
    - partkey_is_bool_constant_for_query
    - linitial
    - partitions_are_ordered
    - IS_SIMPLE_REL
    - ScanDirectionIsBackward
    - lappend
    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:
    - make_pathkey_from_sortinfo
    - exprCollation
    - list_make1
    - get_ordering_op_properties
    - elog
    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:
    - Assert
    - pathkey_is_redundant
    - equal
    - linitial
    - get_eclass_for_sort_expr
    - make_canonical_pathkey
    - list_length
    - foreach
    - canonicalize_ec_expression
    - elog
    - list_nth
    - find_var_for_subquery_tle
    - lappend
    - get_sortgroupref_tle
    - lfirst
    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: 300
    functionsReached:
    - lfirst
    - Assert
    - pathkey_is_redundant
    - equal
    - linitial
    - get_eclass_for_sort_expr
    - make_canonical_pathkey
    - list_length
    - foreach
    - canonicalize_ec_expression
    - elog
    - list_nth
    - lappend
    - get_sortgroupref_tle
    - find_var_for_subquery_tle
    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: 300
    functionsReached:
    - lfirst
    - equal
    - make_canonical_pathkey
    - list_length
    - canonicalize_ec_expression
    - list_nth
    - get_eclass_for_sort_expr
    - find_var_for_subquery_tle
    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:
    - Assert
    - IsA
    - foreach
    - copyObject
    - lfirst
    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: 7
    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:
    - Assert
    - pathkey_is_redundant
    - make_pathkey_from_sortop
    - remove_nulling_relids
    - bms_make_singleton
    - foreach
    - lappend
    - OidIsValid
    - foreach_delete_current
    - get_sortgroupclause_expr
    - lfirst
    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:
    - Assert
    - op_input_types
    - get_leftop
    - get_rightop
    - get_eclass_for_sort_expr
    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:
    - update_mergeclause_eclasses
    - list_concat
    - lfirst
    - 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: 302
    functionsReached:
    - update_mergeclause_eclasses
    - lfirst
    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: 302
    functionsReached:
    - lappend
    - list_concat
    - lfirst
    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: 302
    functionsReached:
    - lappend
    - lfirst
    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:
    - bms_overlap
    - pfree
    - Assert
    - list_copy_head
    - pathkey_is_redundant
    - list_copy
    - make_canonical_pathkey
    - update_mergeclause_eclasses
    - foreach
    - list_length
    - lappend
    - palloc
    - linitial_oid
    - lfirst
    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: 304
    functionsReached:
    - bms_overlap
    - Assert
    - update_mergeclause_eclasses
    - foreach
    - lfirst
    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:
    - pathkey_is_redundant
    - make_canonical_pathkey
    - list_head
    - update_mergeclause_eclasses
    - lnext
    - elog
    - lappend
    - lfirst
    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: 304
    functionsReached:
    - pathkey_is_redundant
    - make_canonical_pathkey
    - lnext
    - update_mergeclause_eclasses
    - elog
    - lappend
    - lfirst
    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
    - lfirst
    - lnext
    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: 304
    functionsReached:
    - lappend
    - lnext
    - lfirst
    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:
    - update_mergeclause_eclasses
    - foreach
    - eclass_useful_for_merging
    - lfirst
    - right_merge_direction
    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: 306
    functionsReached:
    - update_mergeclause_eclasses
    - foreach
    - eclass_useful_for_merging
    - lfirst
    - right_merge_direction
    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:2164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - root
    - pathkeys
    argTypes:
    - PlannerInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2168
      start: 2159
    functionDepth: 2
    functionLinenumber: 2159
    functionLinenumberEnd: 2168
    functionName: pathkeys_useful_for_ordering
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 0
    functionsReached:
    - pathkeys_count_contained_in
    linkageType: ''
    returnType: int
    signature: int pathkeys_useful_for_ordering(PlannerInfo *root, List *pathkeys)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2202,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2205,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - root
    - pathkeys
    argTypes:
    - PlannerInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2212
      start: 2189
    functionDepth: 1
    functionLinenumber: 2189
    functionLinenumberEnd: 2212
    functionName: pathkeys_useful_for_grouping
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 0
    functionsReached:
    - list_member_ptr
    - lfirst
    linkageType: ''
    returnType: int
    signature: int pathkeys_useful_for_grouping(PlannerInfo *root, List *pathkeys)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2202,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2205,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2209
      start: 2200
    functionDepth: 1
    functionLinenumber: 2200
    functionLinenumberEnd: 2209
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 307
    functionsReached:
    - list_member_ptr
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(key, pathkeys)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2240,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - root
    - pathkeys
    argTypes:
    - PlannerInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2247
      start: 2223
    functionDepth: 1
    functionLinenumber: 2223
    functionLinenumberEnd: 2247
    functionName: pathkeys_useful_for_distinct
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 0
    functionsReached:
    - list_member_ptr
    linkageType: ''
    returnType: int
    signature: int pathkeys_useful_for_distinct(PlannerInfo *root, List *pathkeys)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2240,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2244
      start: 2237
    functionDepth: 1
    functionLinenumber: 2237
    functionLinenumberEnd: 2244
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 15
    functionsReached:
    - list_member_ptr
    linkageType: ''
    returnType: void
    signature: void foreach_node(PathKey, pathkey, pathkeys)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - root
    - pathkeys
    argTypes:
    - PlannerInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2263
      start: 2254
    functionDepth: 2
    functionLinenumber: 2254
    functionLinenumberEnd: 2263
    functionName: pathkeys_useful_for_setop
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 0
    functionsReached:
    - pathkeys_count_contained_in
    linkageType: ''
    returnType: int
    signature: int pathkeys_useful_for_setop(PlannerInfo *root, List *pathkeys)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pathkeys_useful_for_merging
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2277,1
    - Dst: pathkeys_useful_for_ordering
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2278,1
    - Dst: pathkeys_useful_for_grouping
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2281,1
    - Dst: pathkeys_useful_for_distinct
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2284,1
    - Dst: pathkeys_useful_for_setop
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2287,1
    - Dst: list_length
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2297,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/optimizer/path/pathkeys.c:2300,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - root
    - rel
    - pathkeys
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2301
      start: 2269
    functionDepth: 3
    functionLinenumber: 2269
    functionLinenumberEnd: 2301
    functionName: truncate_useless_pathkeys
    functionSourceFile: /src/postgres/src/backend/optimizer/path/pathkeys.c
    functionUses: 2
    functionsReached:
    - pathkeys_useful_for_distinct
    - pathkeys_useful_for_grouping
    - list_length
    - pathkeys_useful_for_merging
    - pathkeys_useful_for_ordering
    - pathkeys_useful_for_setop
    - list_copy_head
    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: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - root
    - rel
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2328
      start: 2318
    functionDepth: 0
    functionLinenumber: 2318
    functionLinenumberEnd: 2328
    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:58,1
    - Dst: provider_init
      Src: /src/postgres/src/backend/jit/jit.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 59
    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:90,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/jit.c:91,1
    - Dst: pg_file_exists
      Src: /src/postgres/src/backend/jit/jit.c:92,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/jit.c:94,1
    - Dst: load_external_function
      Src: /src/postgres/src/backend/jit/jit.c:111,1
    - Dst: init
      Src: /src/postgres/src/backend/jit/jit.c:112,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/jit.c:117,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 120
    functionName: provider_init
    functionSourceFile: /src/postgres/src/backend/jit/jit.c
    functionUses: 1
    functionsReached:
    - init
    - load_external_function
    - snprintf
    - elog
    - pg_file_exists
    linkageType: ''
    returnType: bool
    signature: bool provider_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reset_after_error
      Src: /src/postgres/src/backend/jit/jit.c:130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 131
    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:140,1
    - Dst: pfree
      Src: /src/postgres/src/backend/jit/jit.c:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - context
    argTypes:
    - JitContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 143
    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:174,1
    - Dst: compile_expr
      Src: /src/postgres/src/backend/jit/jit.c:175,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - state
    argTypes:
    - struct ExprState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 150
    functionDepth: 2
    functionLinenumber: 150
    functionLinenumberEnd: 178
    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:185,1
    - 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
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - dst
    - add
    argTypes:
    - JitInstrumentation*
    - JitInstrumentation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 190
    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: 72
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 72
    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:135,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:141,1
    - Dst: llvm_create_context
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:148,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:152,1
    - Dst: llvm_mutable_module
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:154,1
    - Dst: LLVMGetModuleContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:155,1
    - Dst: LLVMCreateBuilderInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:157,1
    - Dst: llvm_expand_funcname
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:159,1
    - Dst: LLVMAddFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:162,1
    - Dst: llvm_pg_var_func_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:163,1
    - Dst: LLVMSetLinkage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:164,1
    - Dst: LLVMSetVisibility
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:165,1
    - Dst: llvm_copy_attributes
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:166,1
    - Dst: LLVMAppendBasicBlockInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:168,1
    - Dst: LLVMGetParam
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:171,1
    - Dst: LLVMGetParam
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:172,1
    - Dst: LLVMGetParam
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:173,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:175,1
    - Dst: l_struct_gep
      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:182,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:187,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:194,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:199,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:204,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:209,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:214,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:219,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:226,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:231,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:236,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:241,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:246,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:251,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:256,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:261,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:266,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:271,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:276,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:281,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:288,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:293,1
    - Dst: palloc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:300,1
    - Dst: l_bb_append_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:302,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:305,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:314,1
    - Dst: ExecEvalStepOp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:317,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:319,1
    - Dst: l_ptr
      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:320,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:320,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:329,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:330,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:332,1
    - Dst: LLVMBuildRet
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:334,1
    - Dst: LLVMBuildRet
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:339,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:339,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:355,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:365,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:383,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:388,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:389,1
    - Dst: l_int16_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:390,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:394,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:404,1
    - Dst: slot_compile_deform
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:406,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:409,1
    - Dst: INSTR_TIME_ACCUM_DIFF
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:410,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:420,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:421,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:423,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:430,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:432,1
    - Dst: llvm_pg_var_func_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:433,1
    - Dst: llvm_pg_func
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:434,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:435,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:438,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:480,1
    - Dst: l_load_gep1
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:481,1
    - Dst: l_load_gep1
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:482,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:483,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:484,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:486,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:509,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:512,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:517,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:519,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:564,1
    - Dst: l_load_gep1
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:565,1
    - Dst: l_load_gep1
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:566,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:569,1
    - Dst: l_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:570,1
    - Dst: l_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:574,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:580,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:581,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:583,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:598,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:599,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:602,1
    - Dst: l_gep
      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: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:609,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:617,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:621,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:622,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:623,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:627,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:630,1
    - Dst: llvm_pg_var_func_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:631,1
    - Dst: llvm_pg_func
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:632,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:633,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:642,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:644,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:653,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:654,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:656,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:657,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:659,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:684,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:689,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:692,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:692,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:698,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:698,1
    - Dst: palloc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:702,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:705,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:709,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:717,1
    - Dst: l_funcnull
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:729,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:730,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:731,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:733,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:739,1
    - Dst: BuildV1Call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:742,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:744,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:745,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:747,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:752,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:754,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:759,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:761,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:783,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_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:794,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:795,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:798,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:798,1
    - Dst: l_load
      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:801,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:804,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:805,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:806,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:811,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:813,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:813,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:815,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:818,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:819,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:820,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:821,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:829,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:832,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:835,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:837,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:840,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:841,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:842,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:845,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:847,1
    - Dst: l_sbool_const
      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_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:849,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:851,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:875,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_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:886,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:887,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:890,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:890,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:891,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:892,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:894,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:895,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:896,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:901,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:903,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:903,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:905,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:908,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:909,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:910,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:911,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:919,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:922,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:925,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:927,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:930,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:931,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:932,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:935,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:937,1
    - Dst: l_sbool_const
      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_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:939,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:941,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:951,1
    - Dst: LLVMBuildZExt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:952,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:953,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:955,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:964,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:966,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:977,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:980,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:981,1
    - Dst: LLVMBuildOr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:984,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:985,1
    - Dst: l_sbool_const
      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_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:988,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:991,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:997,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:999,1
    - Dst: l_sbool_const
      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_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1001,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1003,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1009,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1019,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1021,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1022,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1023,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1035,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1037,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1038,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1039,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1054,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1055,1
    - Dst: LLVMBuildOr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1058,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1059,1
    - Dst: l_sbool_const
      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_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1062,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1065,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1074,1
    - Dst: LLVMBuildSelect
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1078,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1079,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1080,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1081,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1082,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1084,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1085,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1085,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1087,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1093,1
    - Dst: LLVMBuildSelect
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1097,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1098,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1099,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1100,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1101,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1103,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1104,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1104,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1106,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1111,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1113,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1117,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1119,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1129,1
    - Dst: l_bb_before_v
      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: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1137,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1138,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1139,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1143,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1146,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1146,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1151,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1151,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1155,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1155,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1158,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1160,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1173,1
    - Dst: LLVMBuildZExt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1175,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1176,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1178,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1181,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1183,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1188,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1190,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1194,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1196,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1204,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1205,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1208,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1208,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1210,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1211,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1213,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1215,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1220,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1222,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1232,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1233,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1236,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1236,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1238,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1239,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1241,1
    - Dst: LLVMBuildZExt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1242,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1244,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1245,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1246,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1259,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1260,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1263,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1263,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1265,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1266,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1268,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1270,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1281,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1282,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_load
      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:1287,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1288,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1289,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1291,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1301,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1306,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1310,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1311,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1313,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1327,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1330,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1331,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1333,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1336,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1339,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1340,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1341,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1345,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1347,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1348,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1350,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1354,1
    - Dst: llvm_pg_var_func_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1355,1
    - Dst: llvm_pg_func
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1356,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1357,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1358,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1360,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1388,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: llvm_function_reference
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1397,1
    - Dst: llvm_function_reference
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1398,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1399,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1399,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1400,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1400,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1403,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1410,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1411,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1412,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1413,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1417,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1418,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1419,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1421,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1422,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1425,1
    - Dst: l_funcvaluep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1427,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1428,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1429,1
    - Dst: l_funcnullp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1430,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1432,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1433,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1436,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1439,1
    - Dst: LLVMBuildPhi
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1452,1
    - Dst: LLVMAddIncoming
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1453,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1455,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1464,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1465,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1466,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1472,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1475,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1478,1
    - Dst: l_funcvaluep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1479,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1480,1
    - Dst: l_funcnullp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1481,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1487,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1487,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1489,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1490,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1494,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1496,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1501,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1503,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1529,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1530,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_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1534,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1534,1
    - Dst: l_funcnull
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1537,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1538,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1539,1
    - Dst: l_funcnull
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1540,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1541,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1542,1
    - Dst: LLVMBuildOr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1544,1
    - Dst: LLVMBuildAnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1545,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1552,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1558,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1559,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1564,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1565,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1565,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1567,1
    - Dst: l_sizet_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_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1569,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1571,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1574,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1575,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1575,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1577,1
    - Dst: l_sizet_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_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1579,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1580,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1583,1
    - Dst: BuildV1Call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1585,1
    - Dst: LLVMBuildZExt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1592,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1593,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1595,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1599,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1600,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1602,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1622,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_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1629,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1629,1
    - Dst: l_funcvalue
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1632,1
    - Dst: l_funcnull
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1635,1
    - Dst: l_funcnull
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1636,1
    - Dst: LLVMBuildOr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1639,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1640,1
    - Dst: l_sbool_const
      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: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1646,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1649,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1650,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1651,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1652,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1655,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1672,1
    - Dst: llvm_pg_var_func_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1673,1
    - Dst: llvm_pg_func
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1674,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1675,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1676,1
    - Dst: l_funcvaluep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1677,1
    - Dst: BuildV1Call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1680,1
    - Dst: LLVMBuildAnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1687,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1688,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1690,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1692,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1694,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1697,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1700,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1701,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1701,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1702,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1702,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1704,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1709,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1711,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1715,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1717,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1721,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1723,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1733,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1740,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1745,1
    - Dst: l_int8_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1747,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1749,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1750,1
    - Dst: LLVMBuildAnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1751,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1753,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1756,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1758,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1758,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1759,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1759,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1761,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1766,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1768,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1772,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1774,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1778,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1780,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1793,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:1798,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1813,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1814,1
    - Dst: l_funcnull
      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:1817,1
    - Dst: LLVMBuildOr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1820,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1821,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1824,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1826,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1828,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1831,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1835,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1839,1
    - Dst: BuildV1Call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1842,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1844,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1847,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1848,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1851,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1857,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1860,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1861,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1864,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1872,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1873,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1873,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1874,1
    - Dst: LLVMBuildTrunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1893,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1894,1
    - Dst: LLVMInt32TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1895,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1913,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1918,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1921,1
    - Dst: LLVMBuildZExt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1923,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1925,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1925,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1926,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1928,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1933,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1935,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1939,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1941,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1945,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1947,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1951,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1953,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1963,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1964,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_load
      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:1969,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1970,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1971,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1973,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1983,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1989,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1994,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1995,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:1997,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2002,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2004,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2008,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2010,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2017,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2019,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2020,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2020,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2021,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2055,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2056,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2062,1
    - Dst: LLVMBuildShl
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2068,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2068,1
    - Dst: LLVMBuildAnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2070,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2071,1
    - Dst: LLVMBuildLShr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2072,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2073,1
    - Dst: LLVMBuildOr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2074,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2082,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2088,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2090,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2091,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2093,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2096,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2105,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2109,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2115,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2115,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2116,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2116,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2117,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2121,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2125,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2128,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2128,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2132,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2138,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2142,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2148,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2148,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2151,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2154,1
    - Dst: l_funcnull
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2157,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2158,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2159,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2162,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2167,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2180,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2181,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2187,1
    - Dst: LLVMBuildShl
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2193,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2193,1
    - Dst: LLVMBuildAnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2195,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2196,1
    - Dst: LLVMBuildLShr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2197,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2198,1
    - Dst: LLVMBuildOr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2199,1
    - Dst: BuildV1Call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2204,1
    - Dst: LLVMBuildXor
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2213,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2216,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2217,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2217,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2219,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2224,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2226,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2230,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2232,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2236,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2238,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2242,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2244,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2248,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2250,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2254,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2256,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2268,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2291,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2294,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2297,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2300,1
    - Dst: LLVMBuildSwitch
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2303,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2310,1
    - Dst: LLVMAddCase
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2311,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2314,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2316,1
    - Dst: LLVMBuildUnreachable
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2318,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2323,1
    - Dst: LLVMAddCase
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2324,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2327,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2329,1
    - Dst: LLVMBuildUnreachable
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2331,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2336,1
    - Dst: LLVMAddCase
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2337,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2340,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2342,1
    - Dst: LLVMBuildUnreachable
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2344,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2346,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2349,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2354,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2357,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2361,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2364,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2373,1
    - Dst: l_load_gep1
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2376,1
    - Dst: l_load_gep1
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2377,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2380,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2381,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2383,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2388,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2390,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2406,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2407,1
    - Dst: LLVMInt32TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2407,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2408,1
    - Dst: LLVMInt32TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2408,1
    - Dst: l_load_gep1
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2411,1
    - Dst: l_load_gep1
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2413,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2416,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2417,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2419,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2424,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2426,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2430,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2432,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2452,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2455,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2456,1
    - Dst: l_funcnull
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2457,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2459,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2460,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2463,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2467,1
    - Dst: castNode
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2470,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2474,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2475,1
    - Dst: l_mcxt_switch
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2476,1
    - Dst: BuildV1Call
      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:2479,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2481,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2482,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2484,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2501,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2504,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2504,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2505,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2505,1
    - Dst: palloc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2508,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2512,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2517,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2522,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2526,1
    - Dst: l_load_gep1
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2534,1
    - Dst: l_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2539,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2541,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2546,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2547,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2550,1
    - Dst: LLVMBuildBitCast
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2572,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2573,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2575,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2581,1
    - Dst: l_load_gep1
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2583,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2583,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2586,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2587,1
    - Dst: LLVMBuildPtrToInt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2588,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2589,1
    - Dst: castNode
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2632,1
    - Dst: LLVMBuildBitCast
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2638,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2638,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2639,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2640,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2647,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2652,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2653,1
    - Dst: l_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2655,1
    - Dst: l_load_gep1
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2657,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2657,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2670,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2676,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2678,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2681,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2682,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2683,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2691,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2693,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2694,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2701,1
    - Dst: llvm_pg_var_func_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2702,1
    - Dst: llvm_pg_func
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2703,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2704,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2707,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2710,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2721,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2724,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2730,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2731,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2732,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2736,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2740,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2741,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_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2746,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2752,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2758,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2765,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2766,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2766,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2768,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2772,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2773,1
    - Dst: l_mcxt_switch
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2774,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2778,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2784,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2789,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2790,1
    - Dst: l_funcvaluep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2794,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2795,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2796,1
    - Dst: l_funcnullp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2797,1
    - Dst: BuildV1Call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2800,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2824,1
    - Dst: l_bb_before_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2826,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2829,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2830,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2836,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2837,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2843,1
    - Dst: LLVMBuildTrunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2848,1
    - Dst: LLVMBuildTrunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2851,1
    - Dst: llvm_pg_func
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2854,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2856,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2857,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2859,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2863,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2864,1
    - Dst: l_mcxt_switch
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2866,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2867,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2870,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2874,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2875,1
    - Dst: l_mcxt_switch
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2877,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2879,1
    - Dst: castNode
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2885,1
    - Dst: llvm_pg_func
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2889,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2893,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2893,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2894,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2894,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2896,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2896,1
    - Dst: LLVMBuildZExt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2897,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2899,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2900,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2901,1
    - Dst: castNode
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2909,1
    - Dst: llvm_pg_func
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2913,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2917,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2917,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2918,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2918,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2920,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2920,1
    - Dst: LLVMBuildZExt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2921,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2923,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2924,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2925,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2932,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2934,1
    - Dst: build_EvalXFunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2938,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2940,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2944,1
    - Dst: LLVMDisposeBuilder
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2949,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2959,1
    - Dst: llvm_leave_fatal_on_oom
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2968,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2970,1
    - Dst: INSTR_TIME_ACCUM_DIFF
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2971,1
    CyclomaticComplexity: 163
    EdgeCount: 163
    ICount: 1063
    argCount: 1
    argNames:
    - state
    argTypes:
    - ExprState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2975
      start: 77
    functionDepth: 3
    functionLinenumber: 77
    functionLinenumberEnd: 2975
    functionName: llvm_compile_expr
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c
    functionUses: 0
    functionsReached:
    - LLVMPositionBuilderAtEnd
    - ExecEvalStepOp
    - llvm_function_reference
    - lengthof
    - llvm_pg_var_func_type
    - LLVMBuildICmp
    - llvm_create_context
    - LLVMBuildSelect
    - LLVMBuildShl
    - LLVMBuildPtrToInt
    - llvm_copy_attributes
    - l_load_struct_gep
    - LLVMBuildPhi
    - LLVMAppendBasicBlockInContext
    - LLVMBuildUnreachable
    - castNode
    - l_funcnullp
    - l_ptr
    - llvm_leave_fatal_on_oom
    - LLVMBuildRet
    - l_funcvalue
    - LLVMBuildXor
    - LLVMGetParam
    - LLVMBuildBitCast
    - LLVMGetFunctionType
    - LLVMAddCase
    - LLVMCreateBuilderInContext
    - llvm_pg_func
    - l_sbool_const
    - l_struct_gep
    - l_load
    - llvm_pg_var_type
    - l_load_gep1
    - l_gep
    - INSTR_TIME_SET_CURRENT
    - LLVMBuildZExt
    - LLVMBuildSwitch
    - LLVMBuildLShr
    - LLVMAddIncoming
    - l_int32_const
    - LLVMInt32TypeInContext
    - LLVMBuildAnd
    - slot_compile_deform
    - build_EvalXFunc
    - l_ptr_const
    - elog
    - LLVMDisposeBuilder
    - llvm_expand_funcname
    - LLVMBuildCondBr
    - BuildV1Call
    - palloc
    - l_bb_append_v
    - LLVMBuildTrunc
    - Assert
    - l_bb_before_v
    - llvm_mutable_module
    - LLVMSetLinkage
    - l_int16_const
    - INSTR_TIME_ACCUM_DIFF
    - llvm_enter_fatal_on_oom
    - l_call
    - l_sizet_const
    - LLVMGetModuleContext
    - l_funcnull
    - LLVMBuildOr
    - l_int8_const
    - palloc0
    - LLVMBuildStore
    - l_funcvaluep
    - l_mcxt_switch
    - LLVMBuildBr
    - LLVMAddFunction
    - LLVMSetVisibility
    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:2991,1
    - Dst: llvm_enter_fatal_on_oom
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2993,1
    - Dst: llvm_get_function
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2994,1
    - Dst: llvm_leave_fatal_on_oom
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2996,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:2997,1
    - Dst: func
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3002,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - state
    - econtext
    - isNull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3003
      start: 2985
    functionDepth: 1
    functionLinenumber: 2985
    functionLinenumberEnd: 3003
    functionName: ExecRunCompiledExpr
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c
    functionUses: 0
    functionsReached:
    - Assert
    - func
    - llvm_enter_fatal_on_oom
    - llvm_get_function
    - llvm_leave_fatal_on_oom
    - CheckExprStillValid
    linkageType: ''
    returnType: Datum
    signature: Datum ExecRunCompiledExpr(ExprState *state, ExprContext *econtext,
      bool *isNull)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LLVMGetModuleContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3016,1
    - Dst: llvm_function_reference
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3018,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3020,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3020,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3021,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3026,1
    - Dst: l_sbool_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3026,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3028,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3028,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3031,1
    - Dst: create_LifetimeEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3038,1
    - Dst: l_int64_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3041,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3042,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3042,1
    - Dst: LLVMInt8TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3042,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3043,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3043,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3043,1
    - Dst: l_int64_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3045,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3046,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3046,1
    - Dst: LLVMInt8TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3046,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3047,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3047,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3047,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 5
    argNames:
    - context
    - b
    - mod
    - fcinfo
    - v_fcinfo_isnull
    argTypes:
    - LLVMJitContext*
    - LLVMBuilderRef
    - LLVMModuleRef
    - FunctionCallInfo
    - LLVMValueRef*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3051
      start: 3005
    functionDepth: 1
    functionLinenumber: 3005
    functionLinenumberEnd: 3051
    functionName: BuildV1Call
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c
    functionUses: 1
    functionsReached:
    - l_int64_const
    - LLVMGetFunctionType
    - llvm_function_reference
    - lengthof
    - l_sbool_const
    - l_call
    - l_struct_gep
    - LLVMInt8TypeInContext
    - LLVMGetModuleContext
    - l_load
    - l_ptr_const
    - l_ptr
    - LLVMBuildStore
    - create_LifetimeEnd
    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:3061,1
    - Dst: LLVMCountParams
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3067,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3068,1
    - Dst: LLVMCountParams
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3069,1
    - Dst: palloc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3071,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3074,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3074,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3079,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3079,1
    - Dst: pfree
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3081,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: 3084
      start: 3056
    functionDepth: 1
    functionLinenumber: 3056
    functionLinenumberEnd: 3084
    functionName: build_EvalXFuncInt
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c
    functionUses: 0
    functionsReached:
    - pfree
    - LLVMGetFunctionType
    - llvm_pg_func
    - l_call
    - LLVMCountParams
    - l_ptr_const
    - elog
    - l_ptr
    - palloc
    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:3097,1
    - Dst: LLVMGetModuleContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3101,1
    - Dst: LLVMInt64TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3102,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3103,1
    - Dst: LLVMInt8TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3103,1
    - Dst: LLVMFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3105,1
    - Dst: LLVMVoidTypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3105,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3106,1
    - Dst: LLVMAddFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3107,1
    - Dst: LLVMSetFunctionCallConv
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3109,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3111,1
    - Dst: LLVMGetIntrinsicID
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c:3111,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - mod
    argTypes:
    - LLVMModuleRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3114
      start: 3086
    functionDepth: 1
    functionLinenumber: 3086
    functionLinenumberEnd: 3114
    functionName: create_LifetimeEnd
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_expr.c
    functionUses: 1
    functionsReached:
    - Assert
    - lengthof
    - LLVMFunctionType
    - LLVMGetNamedFunction
    - LLVMInt8TypeInContext
    - LLVMSetFunctionCallConv
    - LLVMGetModuleContext
    - l_ptr
    - LLVMVoidTypeInContext
    - LLVMGetIntrinsicID
    - LLVMAddFunction
    - 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:56,1
    - Dst: unwrap
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_wrap.cpp:57,1
    - Dst: std::make_unique<llvm::backport::SectionMemoryManager>
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_wrap.cpp:57,1
    - Dst: llvm::orc::RTDyldObjectLinkingLayer::RTDyldObjectLinkingLayer
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_wrap.cpp:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ES
    argTypes:
    - LLVMOrcExecutionSessionRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 58
    functionName: LLVMOrcCreateRTDyldObjectLinkingLayerWithSafeSectionMemoryManager
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_wrap.cpp
    functionUses: 0
    functionsReached:
    - unwrap
    - wrap
    - 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_execute_inline_plan
    - llvm::unwrap
    - LLVMGetModuleContext
    - std::unique_ptr::get
    - llvm_build_inline_plan
    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::getGUID
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:241,1
    - Dst: add_module_to_inline_search_path
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:249,1
    - Dst: summaries_for_guid
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:256,1
    - Dst: modulePath
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:259,1
    - Dst: llvm::cast<llvm::FunctionSummary>
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:263,1
    - Dst: notEligibleToImport
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:265,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:267,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:268,1
    - Dst: llvm::FunctionSummary*::instCount
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:272,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:274,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:275,1
    - Dst: llvm::FunctionSummary*::instCount
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:275,1
    - Dst: load_module_cached
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:280,1
    - Dst: llvm::Module*::materializeMetadata
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:281,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:282,1
    - Dst: llvm::Module*::getFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:284,1
    - Dst: llvm::Function*::materialize
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:293,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:294,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:296,1
    - Dst: llvm::Function*::isDeclaration
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:296,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:297,1
    - Dst: llvm::Function*::hasExternalLinkage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:297,1
    - Dst: function_inlinable
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:307,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:325,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:326,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:331,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:332,1
    - Dst: llvm::FunctionSummary*::instCount
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:332,1
    - Dst: llvm::StringSet::insert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:335,1
    - Dst: llvm::StringSet::insert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:340,1
    - Dst: first
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:340,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:341,1
    - Dst: llvm::StringSet::size
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:341,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:355,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:356,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 64
    argCount: 2
    argNames:
    - lc
    - mod
    argTypes:
    - LLVMContextRef
    - llvm::Module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 370
    functionName: llvm_build_inline_plan
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp
    functionUses: 1
    functionsReached:
    - llvm::Module*::getFunction
    - llvm::StringRef::data
    - llvm::Function*::materialize
    - llvm::Module*::functions
    - ilog
    - llvm::FunctionSummary*::instCount
    - function_inlinable
    - llvm::GlobalValue::getGUID
    - llvm_split_symbol_name
    - llvm::StringSet::size
    - isIntrinsic
    - getName
    - llvm::StringSet::insert
    - load_module_cached
    - modulePath
    - llvm::cast<llvm::FunctionSummary>
    - notEligibleToImport
    - llvm::Function*::hasExternalLinkage
    - llvm::Function*::isDeclaration
    - summaries_for_guid
    - elog
    - InlineWorkList::push_back
    - add_module_to_inline_search_path
    - isDeclaration
    - InlineWorkList::empty
    - ImportMapTy::ImportMapTy
    - Assert
    - llvm::Module*::materializeMetadata
    - InlineSearchPath::empty
    - first
    - InlineWorkList::pop_back_val
    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:383,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:387,1
    - Dst: count
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:387,1
    - Dst: std::move
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:388,1
    - Dst: erase
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:389,1
    - Dst: empty
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:391,1
    - Dst: first
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:396,1
    - Dst: llvm_split_symbol_name
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:400,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:400,1
    - Dst: std::unique_ptr::getNamedValue
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:402,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:405,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:405,1
    - Dst: llvm::isa<llvm::Function>
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:413,1
    - Dst: llvm::dyn_cast<llvm::Function>
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:415,1
    - Dst: llvm::stripDebugInfo
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:422,1
    - Dst: create_redirection_function
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:436,1
    - Dst: llvm::SetVector::insert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:438,1
    - Dst: llvm::stripDebugInfo
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:439,1
    - Dst: llvm::GlobalValue*::hasExternalLinkage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:442,1
    - Dst: llvm::GlobalValue*::setLinkage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:444,1
    - Dst: llvm::SetVector::insert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:448,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:449,1
    - Dst: data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:450,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:450,1
    - Dst: llvm::IRMover::move
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:454,1
    - Dst: std::move
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:454,1
    - Dst: llvm::SetVector::getArrayRef
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:454,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:457,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - mod
    - globalsToInline
    argTypes:
    - llvm::Module*
    - ImportMapTy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 376
    functionDepth: 1
    functionLinenumber: 376
    functionLinenumberEnd: 459
    functionName: llvm_execute_inline_plan
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp
    functionUses: 1
    functionsReached:
    - llvm::SetVector::insert
    - llvm::GlobalValue*::hasExternalLinkage
    - llvm::StringRef::data
    - create_redirection_function
    - llvm::stripDebugInfo
    - ilog
    - llvm::isa<llvm::Function>
    - llvm_split_symbol_name
    - erase
    - std::unique_ptr::getNamedValue
    - data
    - llvm::dyn_cast<llvm::Function>
    - llvm::SetVector::getArrayRef
    - elog
    - std::move
    - llvm::IRMover::move
    - Assert
    - first
    - count
    - empty
    - llvm::GlobalValue*::setLinkage
    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:470,1
    - Dst: end
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:471,1
    - Dst: insert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:473,1
    - Dst: std::make_pair
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:474,1
    - Dst: load_module
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:474,1
    - Dst: auto::second::get
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:477,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - lc
    - modPath
    argTypes:
    - LLVMContextRef
    - llvm::StringRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 467
    functionDepth: 1
    functionLinenumber: 467
    functionLinenumberEnd: 478
    functionName: load_module_cached
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp
    functionUses: 1
    functionsReached:
    - insert
    - std::make_pair
    - auto::second::get
    - find
    - end
    - load_module
    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:488,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:488,1
    - Dst: LLVMCreateMemoryBufferWithContentsOfFile
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:490,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:491,1
    - Dst: LLVMGetBitcodeModuleInContext2
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:493,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:494,1
    - Dst: llvm::StripDebugInfo
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:501,1
    - Dst: llvm::unwrap
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:501,1
    - Dst: std::unique_ptr<llvm::Module>
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:503,1
    - Dst: llvm::unwrap
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:503,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - lc
    - Identifier
    argTypes:
    - LLVMContextRef
    - llvm::StringRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 480
    functionDepth: 1
    functionLinenumber: 480
    functionLinenumberEnd: 504
    functionName: load_module
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp
    functionUses: 2
    functionsReached:
    - std::unique_ptr<llvm::Module>
    - LLVMCreateMemoryBufferWithContentsOfFile
    - snprintf
    - LLVMGetBitcodeModuleInContext2
    - llvm::StringRef::data
    - llvm::unwrap
    - elog
    - llvm::StripDebugInfo
    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:522,1
    - Dst: llvm::SmallVector::push_back
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:526,1
    - Dst: llvm::SmallVector::empty
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:530,1
    - Dst: llvm::SmallVector::pop_back_val
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:531,1
    - Dst: llvm::SmallPtrSet::insert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:534,1
    - Dst: llvm::User*::operands
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:537,1
    - Dst: llvm::dyn_cast<llvm::User>
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:538,1
    - Dst: llvm::isa<llvm::BlockAddress>
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:541,1
    - Dst: llvm::dyn_cast<llvm::GlobalVariable>
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:543,1
    - Dst: llvm::SmallPtrSet<llvm::GlobalVariable *, 8>::insert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:544,1
    - Dst: auto*::hasInitializer
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:545,1
    - Dst: llvm::SmallVector::push_back
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:546,1
    - Dst: auto*::getInitializer
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:546,1
    - Dst: llvm::dyn_cast<llvm::Function>
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:549,1
    - Dst: llvm::SmallPtrSet<llvm::Function *, 8>::insert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:550,1
    - Dst: llvm::SmallVector::push_back
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:553,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: 558
      start: 510
    functionDepth: 0
    functionLinenumber: 510
    functionLinenumberEnd: 558
    functionName: function_references
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp
    functionUses: 0
    functionsReached:
    - llvm::isa<llvm::BlockAddress>
    - llvm::dyn_cast<llvm::GlobalVariable>
    - llvm::SmallVector::empty
    - llvm::SmallVector::pop_back_val
    - llvm::SmallPtrSet<llvm::Function *, 8>::insert
    - llvm::SmallPtrSet::insert
    - llvm::SmallPtrSet<llvm::GlobalVariable *, 8>::insert
    - llvm::dyn_cast<llvm::User>
    - llvm::User*::operands
    - auto*::getInitializer
    - auto*::hasInitializer
    - llvm::isa<llvm::DbgInfoIntrinsic>
    - llvm::dyn_cast<llvm::Function>
    - 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:582,1
    - Dst: llvm::Function::hasAvailableExternallyLinkage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:589,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:592,1
    - Dst: llvm::Function::getName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:592,1
    - Dst: llvm::Function::materialize
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:594,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:595,1
    - Dst: llvm::Function::getAttributes
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:597,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:599,1
    - Dst: llvm::Function::getName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:600,1
    - Dst: function_references
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:604,1
    - Dst: materialize
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:608,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:609,1
    - Dst: isThreadLocal
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:615,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:617,1
    - Dst: llvm::Function::getName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:618,1
    - Dst: getName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:618,1
    - Dst: hasExternalLinkage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:626,1
    - Dst: hasAvailableExternallyLinkage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:626,1
    - Dst: isConstant
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:637,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:639,1
    - Dst: llvm::Function::getName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:640,1
    - Dst: getName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:640,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:644,1
    - Dst: getName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:645,1
    - Dst: getLinkage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:645,1
    - Dst: llvm::StringSet<>::insert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:647,1
    - Dst: getName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:647,1
    - Dst: llvm::SmallPtrSet<const llvm::Function *, 8>::insert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:652,1
    - Dst: materialize
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:662,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:663,1
    - Dst: isIntrinsic
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:665,1
    - Dst: llvm::SmallPtrSet<const llvm::Function *, 8>::insert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:669,1
    - Dst: hasExternalLinkage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:677,1
    - Dst: getName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:679,1
    - Dst: FunctionInlineStates::find
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:688,1
    - Dst: FunctionInlineStates::end
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:689,1
    - Dst: InlineWorkList::push_back
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:699,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:701,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:703,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:716,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:718,1
    - Dst: InlineWorkList::push_back
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:722,1
    - Dst: isInterposable
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:730,1
    - Dst: function_inlinable
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:733,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:742,1
    - Dst: llvm::Function::getName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:744,1
    - Dst: getName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:744,1
    - Dst: llvm::StringSet<>::insert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:749,1
    - Dst: getName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:749,1
    - Dst: llvm::StringSet<>::insert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:753,1
    - Dst: first
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:753,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: 757
      start: 567
    functionDepth: 1
    functionLinenumber: 567
    functionLinenumberEnd: 757
    functionName: function_inlinable
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp
    functionUses: 2
    functionsReached:
    - function_references
    - getLinkage
    - llvm::StringRef::data
    - isThreadLocal
    - ilog
    - function_inlinable
    - llvm::Function::hasAvailableExternallyLinkage
    - materialize
    - getName
    - isIntrinsic
    - llvm::StringSet<>::insert
    - llvm::Function::isInterposable
    - hasExternalLinkage
    - FunctionInlineStates::find
    - elog
    - llvm::Function::getName
    - llvm::Function::getAttributes
    - FunctionInlineStates::end
    - InlineWorkList::push_back
    - llvm::SmallPtrSet<const llvm::Function *, 8>::insert
    - isConstant
    - isInterposable
    - hasAvailableExternallyLinkage
    - first
    - llvm::Function::materialize
    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:767,1
    - Dst: llvm::ErrorOr::getError
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:769,1
    - Dst: ilog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:771,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:771,1
    - Dst: std::error_code::message
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:772,1
    - Dst: llvm::ErrorOr::get
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:776,1
    - Dst: llvm::getModuleSummaryIndex
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:779,1
    - Dst: std::move
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:781,1
    - Dst: llvm::Expected::get
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:781,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:782,1
    - Dst: llvm::StringRef::data
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:783,1
    - Dst: toString
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:784,1
    - Dst: llvm::Expected::takeError
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:784,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - path
    argTypes:
    - llvm::StringRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 763
    functionDepth: 1
    functionLinenumber: 763
    functionLinenumberEnd: 787
    functionName: llvm_load_summary
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp
    functionUses: 0
    functionsReached:
    - ResourceOwnerForgetFile
    - toString
    - llvm::Expected::get
    - llvm::StringRef::data
    - llvm::Expected::takeError
    - elog
    - llvm::ErrorOr::get
    - llvm::getModuleSummaryIndex
    - std::move
    - std::error_code::message
    - llvm::ErrorOr::getError
    - ilog
    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:799,1
    - Dst: find
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:803,1
    - Dst: end
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:804,1
    - Dst: std::string::replace
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:807,1
    - Dst: strlen
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:807,1
    - Dst: std::string
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:807,1
    - Dst: llvm_load_summary
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:809,1
    - Dst: find
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:810,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:813,1
    - Dst: end
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:813,1
    - Dst: push_back
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:817,1
    - Dst: auto::second::get
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:817,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ' searchpath'
    - modpath
    argTypes:
    - InlineSearchPath
    - llvm::StringRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 792
    functionDepth: 2
    functionLinenumber: 792
    functionLinenumberEnd: 818
    functionName: add_module_to_inline_search_path
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp
    functionUses: 1
    functionsReached:
    - Assert
    - auto::second::get
    - std::string
    - find
    - llvm_load_summary
    - std::string::replace
    - end
    - llvm::StringRef::starts_with
    - strlen
    - push_back
    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:831,1
    - Dst: llvm::ValueInfo::getSummaryList
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:835,1
    - Dst: llvm::SmallVector::push_back
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:836,1
    - Dst: get
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:836,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - ' path'
    - guid
    argTypes:
    - InlineSearchPath
    - llvm::GlobalValue::GUID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 824
    functionDepth: 0
    functionLinenumber: 824
    functionLinenumberEnd: 840
    functionName: summaries_for_guid
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp
    functionUses: 1
    functionsReached:
    - llvm::ValueInfo::getSummaryList
    - getValueInfo
    - llvm::SmallVector::push_back
    - get
    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:852,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:858,1
    - Dst: llvm::Function*::getFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:858,1
    - Dst: std::unique_ptr<llvm::Module>::get
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:860,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:861,1
    - Dst: llvm::IRBuilder::SetInsertPoint
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:863,1
    - Dst: llvm::IRBuilder::CreateCall
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:864,1
    - Dst: llvm::Function*::arg_begin
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:864,1
    - Dst: llvm::CallInst*::addFnAttr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:865,1
    - Dst: llvm::IRBuilder::CreateRet
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp:866,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: 869
      start: 845
    functionDepth: 1
    functionLinenumber: 845
    functionLinenumberEnd: 869
    functionName: create_redirection_function
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_inline.cpp
    functionUses: 1
    functionsReached:
    - llvm::Function*::getContext
    - llvm::IRBuilder::SetInsertPoint
    - llvm::CallInst*::addFnAttr
    - llvm::Function*::getFunctionType
    - llvm::IRBuilder::CreateRet
    - llvm::IRBuilder::CreateCall
    - llvm::Function*::arg_begin
    - AllocSetContextCreate
    - std::unique_ptr<llvm::Module>::get
    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:52,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - MemGroup
    - Size
    argTypes:
    - MemoryGroup
    - uintptr_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 56
    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:76,1
    - Dst: Align
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:82,1
    - Dst: std::max
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:82,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:82,1
    - Dst: Align
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:83,1
    - Dst: std::max
      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: Align
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:84,1
    - Dst: std::max
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:84,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:84,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:88,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:88,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:90,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:90,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:92,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:92,1
    - Dst: backport::SectionMemoryManager::hasSpace
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:94,1
    - Dst: backport::SectionMemoryManager::hasSpace
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:95,1
    - Dst: backport::SectionMemoryManager::hasSpace
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:96,1
    - Dst: FreeMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:107,1
    - Dst: FreeMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:108,1
    - Dst: FreeMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:109,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:112,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:113,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:114,1
    - Dst: allocateMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:119,1
    - Dst: AllocatedMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:126,1
    - Dst: sys::MemoryBlock::base
      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: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:146,1
    - Dst: isAddrAligned
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:146,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:147,1
    - Dst: FreeMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:148,1
    - Dst: backport::SectionMemoryManager::allocateSection
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:158,1
    - Dst: backport::SectionMemoryManager::allocateSection
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:160,1
    - Dst: backport::SectionMemoryManager::allocateSection
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:168,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:178,1
    - Dst: llvm_unreachable
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:192,1
    - Dst: FreeMemBlock::Free::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:198,1
    - Dst: FreeMemBlock::Free::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:199,1
    - Dst: FreeMemBlock::Free::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:200,1
    - Dst: MemoryGroup::PendingMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:206,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:206,1
    - Dst: MemoryGroup::PendingMem::size
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:210,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:214,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:214,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:215,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:220,1
    - Dst: allocateMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:235,1
    - Dst: Near::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:248,1
    - Dst: Near::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:250,1
    - Dst: Near::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:252,1
    - Dst: MemoryGroup::AllocatedMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:256,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:257,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:258,1
    - Dst: MemoryGroup::PendingMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:264,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:264,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:271,1
    - Dst: MemoryGroup::FreeMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:273,1
    - Dst: backport::SectionMemoryManager::applyMemoryGroupPermissions
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:285,1
    - Dst: std::error_code::message
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:289,1
    - Dst: backport::SectionMemoryManager::applyMemoryGroupPermissions
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:295,1
    - Dst: std::error_code::message
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:298,1
    - Dst: backport::SectionMemoryManager::invalidateInstructionCache
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:308,1
    - Dst: sys::Process::getPageSizeEstimate
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:314,1
    - Dst: base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:317,1
    - Dst: allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:319,1
    - Dst: base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:323,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:326,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:326,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:327,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:327,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:328,1
    - Dst: base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:328,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:328,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:329,1
    - Dst: allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:329,1
    - Dst: protectMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:338,1
    - Dst: MemoryGroup::PendingMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:341,1
    - Dst: trimBlockToPageSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:346,1
    - Dst: erase_if
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:352,1
    - Dst: FreeMemBlock::Free::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:353,1
    - Dst: std::error_code
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:356,1
    - Dst: sys::Memory::InvalidateInstructionCache
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:361,1
    - Dst: base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:361,1
    - Dst: allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:362,1
    - Dst: releaseMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:368,1
    - Dst: backport::DefaultMMapper::allocateMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:385,1
    - Dst: backport::DefaultMMapper::protectMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:390,1
    - Dst: backport::DefaultMMapper::releaseMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:394,1
    - Dst: std::make_unique<DefaultMMapper>
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:404,1
    - Dst: get
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:405,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: (isAddrAligned(RWDataAlign, (void *)Addr))
      pos:
        line_end: 145
        line_start: 145
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: "(M.base() <= Trimmed.base() &&\n         Trimmed.allocatedSize()
        <= M.allocatedSize())"
      pos:
        line_end: 328
        line_start: 327
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: (isAddrAligned(RODataAlign, (void *)Addr))
      pos:
        line_end: 138
        line_start: 138
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: (isAddrAligned(CodeAlign, (void *)Addr))
      pos:
        line_end: 131
        line_start: 131
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: (!(Alignment & (Alignment - 1)) && "Alignment must be a power of
        two.")
      pos:
        line_end: 177
        line_start: 177
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: (((uintptr_t)Trimmed.base() % PageSize) == 0)
      pos:
        line_end: 325
        line_start: 325
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: ((Trimmed.allocatedSize() % PageSize) == 0)
      pos:
        line_end: 326
        line_start: 326
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    constantsTouched: []
    func_position:
      end: 409
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 409
    functionName: backport::SectionMemoryManager::reserveAllocationSpace
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - backport::SectionMemoryManager::invalidateInstructionCache
    - protectMappedMemory
    - std::max
    - backport::SectionMemoryManager::hasSpace
    - erase_if
    - Align::value
    - Align
    - Near::base
    - FreeMemBlock::Free::allocatedSize
    - std::error_code::message
    - base
    - backport::DefaultMMapper::releaseMappedMemory
    - trimBlockToPageSize
    - FreeMem::clear
    - backport::DefaultMMapper::protectMappedMemory
    - backport::SectionMemoryManager::allocateSection
    - sys::Memory::InvalidateInstructionCache
    - sys::MemoryBlock::allocatedSize
    - std::make_unique<DefaultMMapper>
    - MemoryGroup::FreeMem::push_back
    - get
    - assert
    - backport::SectionMemoryManager::applyMemoryGroupPermissions
    - sys::MemoryBlock
    - isAddrAligned
    - sys::Process::getPageSizeEstimate
    - MemoryGroup::PendingMem::clear
    - MemoryGroup::PendingMem::push_back
    - sys::MemoryBlock::base
    - FreeMem::push_back
    - FreeMemBlock::Free::base
    - releaseMappedMemory
    - std::error_code
    - alignTo
    - MemoryGroup::AllocatedMem::push_back
    - AllocatedMem::push_back
    - MemoryGroup::PendingMem::size
    - backport::DefaultMMapper::allocateMappedMemory
    - llvm_unreachable
    - allocateMappedMemory
    - allocatedSize
    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:76,1
    - Dst: Align
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:82,1
    - Dst: std::max
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:82,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:82,1
    - Dst: Align
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:83,1
    - Dst: std::max
      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: Align
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:84,1
    - Dst: std::max
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:84,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:84,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:88,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:88,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:90,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:90,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:92,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:92,1
    - Dst: backport::SectionMemoryManager::hasSpace
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:94,1
    - Dst: backport::SectionMemoryManager::hasSpace
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:95,1
    - Dst: backport::SectionMemoryManager::hasSpace
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:96,1
    - Dst: FreeMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:107,1
    - Dst: FreeMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:108,1
    - Dst: FreeMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:109,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:112,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:113,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:114,1
    - Dst: allocateMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:119,1
    - Dst: AllocatedMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:126,1
    - Dst: sys::MemoryBlock::base
      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: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:146,1
    - Dst: isAddrAligned
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:146,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:147,1
    - Dst: FreeMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:148,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: 131
        line_start: 131
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: (isAddrAligned(RODataAlign, (void *)Addr))
      pos:
        line_end: 138
        line_start: 138
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: (isAddrAligned(RWDataAlign, (void *)Addr))
      pos:
        line_end: 145
        line_start: 145
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    constantsTouched: []
    func_position:
      end: 150
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 150
    functionName: backport::SectionMemoryManager::reserveAllocationSpace
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - assert
    - alignTo
    - std::max
    - backport::SectionMemoryManager::hasSpace
    - isAddrAligned
    - sys::MemoryBlock
    - FreeMem::push_back
    - sys::Process::getPageSizeEstimate
    - FreeMem::clear
    - AllocatedMem::push_back
    - sys::MemoryBlock::base
    - Align::value
    - Align
    - allocateMappedMemory
    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:158,1
    - Dst: backport::SectionMemoryManager::allocateSection
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:160,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: 162
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 162
    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:168,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: 170
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 170
    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:178,1
    - Dst: llvm_unreachable
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:192,1
    - Dst: Free::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:198,1
    - Dst: Free::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:199,1
    - Dst: Free::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:200,1
    - Dst: MemoryGroup::PendingMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:206,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:206,1
    - Dst: MemoryGroup::PendingMem::size
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:210,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:214,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:214,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:215,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:220,1
    - Dst: allocateMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:235,1
    - Dst: Near::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:248,1
    - Dst: Near::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:250,1
    - Dst: Near::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:252,1
    - Dst: MemoryGroup::AllocatedMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:256,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:257,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:258,1
    - Dst: MemoryGroup::PendingMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:264,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:264,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:271,1
    - Dst: MemoryGroup::FreeMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:273,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: 177
        line_start: 177
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    constantsTouched: []
    func_position:
      end: 278
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 278
    functionName: backport::SectionMemoryManager::allocateSection
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 3
    functionsReached:
    - assert
    - Free::base
    - sys::MemoryBlock::allocatedSize
    - sys::MemoryBlock
    - MemoryGroup::PendingMem::push_back
    - MemoryGroup::AllocatedMem::push_back
    - MemoryGroup::PendingMem::size
    - sys::MemoryBlock::base
    - llvm_unreachable
    - allocateMappedMemory
    - Free::allocatedSize
    - MemoryGroup::FreeMem::push_back
    - Near::base
    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:285,1
    - Dst: std::error_code::message
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:289,1
    - Dst: backport::SectionMemoryManager::applyMemoryGroupPermissions
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:295,1
    - Dst: std::error_code::message
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:298,1
    - Dst: backport::SectionMemoryManager::invalidateInstructionCache
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:308,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - ErrMsg
    argTypes:
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 311
    functionName: backport::SectionMemoryManager::finalizeMemory
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - backport::SectionMemoryManager::invalidateInstructionCache
    - std::error_code::message
    - 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:314,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:317,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:319,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:323,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:326,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:326,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:327,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:327,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:328,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:328,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:328,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:329,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:329,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: 325
        line_start: 325
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: ((Trimmed.allocatedSize() % PageSize) == 0)
      pos:
        line_end: 326
        line_start: 326
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: "(M.base() <= Trimmed.base() &&\n         Trimmed.allocatedSize()
        <= M.allocatedSize())"
      pos:
        line_end: 328
        line_start: 327
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    constantsTouched: []
    func_position:
      end: 332
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 332
    functionName: backport::trimBlockToPageSize
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - assert
    - sys::MemoryBlock::allocatedSize
    - sys::MemoryBlock::base
    - 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:338,1
    - Dst: MemoryGroup::PendingMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:341,1
    - Dst: trimBlockToPageSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:346,1
    - Dst: erase_if
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:352,1
    - Dst: Free::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:353,1
    - Dst: std::error_code
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:356,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - MemGroup
    - Permissions
    argTypes:
    - MemoryGroup
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 357
    functionName: backport::SectionMemoryManager::applyMemoryGroupPermissions
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 2
    functionsReached:
    - std::error_code
    - protectMappedMemory
    - trimBlockToPageSize
    - MemoryGroup::PendingMem::clear
    - erase_if
    - Free::allocatedSize
    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:361,1
    - Dst: base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:361,1
    - Dst: allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:362,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 363
    functionName: backport::SectionMemoryManager::invalidateInstructionCache
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 2
    functionsReached:
    - base
    - allocatedSize
    - sys::Memory::InvalidateInstructionCache
    linkageType: ''
    returnType: void
    signature: void SectionMemoryManager::invalidateInstructionCache()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: releaseMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:368,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 365
    functionDepth: 0
    functionLinenumber: 365
    functionLinenumberEnd: 370
    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: 372
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 372
    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: 374
      start: 374
    functionDepth: 0
    functionLinenumber: 374
    functionLinenumberEnd: 374
    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:385,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: 386
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 386
    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:390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - Block
    - Flags
    argTypes:
    - sys::MemoryBlock
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 391
    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:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - M
    argTypes:
    - sys::MemoryBlock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 393
    functionDepth: 1
    functionLinenumber: 393
    functionLinenumberEnd: 395
    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:385,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: 386
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 386
    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:390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - Block
    - Flags
    argTypes:
    - sys::MemoryBlock
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 391
    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:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - M
    argTypes:
    - sys::MemoryBlock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 393
    functionDepth: 1
    functionLinenumber: 393
    functionLinenumberEnd: 395
    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:404,1
    - Dst: get
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:405,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - UnownedMM
    - ReserveAlloc
    argTypes:
    - MemoryMapper*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 399
    functionDepth: 0
    functionLinenumber: 399
    functionLinenumberEnd: 407
    functionName: backport::SectionMemoryManager::SectionMemoryManager
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - std::make_unique<DefaultMMapper>
    - get
    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:52,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - MemGroup
    - Size
    argTypes:
    - MemoryGroup
    - uintptr_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 56
    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:76,1
    - Dst: Align
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:82,1
    - Dst: std::max
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:82,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:82,1
    - Dst: Align
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:83,1
    - Dst: std::max
      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: Align
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:84,1
    - Dst: std::max
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:84,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:84,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:88,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:88,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:90,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:90,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:92,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:92,1
    - Dst: backport::SectionMemoryManager::hasSpace
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:94,1
    - Dst: backport::SectionMemoryManager::hasSpace
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:95,1
    - Dst: backport::SectionMemoryManager::hasSpace
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:96,1
    - Dst: FreeMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:107,1
    - Dst: FreeMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:108,1
    - Dst: FreeMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:109,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:112,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:113,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:114,1
    - Dst: allocateMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:119,1
    - Dst: AllocatedMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:126,1
    - Dst: sys::MemoryBlock::base
      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: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:146,1
    - Dst: isAddrAligned
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:146,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:147,1
    - Dst: FreeMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:148,1
    - Dst: backport::SectionMemoryManager::allocateSection
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:158,1
    - Dst: backport::SectionMemoryManager::allocateSection
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:160,1
    - Dst: backport::SectionMemoryManager::allocateSection
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:168,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:178,1
    - Dst: llvm_unreachable
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:192,1
    - Dst: FreeMemBlock::Free::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:198,1
    - Dst: FreeMemBlock::Free::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:199,1
    - Dst: FreeMemBlock::Free::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:200,1
    - Dst: MemoryGroup::PendingMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:206,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:206,1
    - Dst: MemoryGroup::PendingMem::size
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:210,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:214,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:214,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:215,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:220,1
    - Dst: allocateMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:235,1
    - Dst: Near::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:248,1
    - Dst: Near::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:250,1
    - Dst: Near::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:252,1
    - Dst: MemoryGroup::AllocatedMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:256,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:257,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:258,1
    - Dst: MemoryGroup::PendingMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:264,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:264,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:271,1
    - Dst: MemoryGroup::FreeMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:273,1
    - Dst: backport::SectionMemoryManager::applyMemoryGroupPermissions
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:285,1
    - Dst: std::error_code::message
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:289,1
    - Dst: backport::SectionMemoryManager::applyMemoryGroupPermissions
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:295,1
    - Dst: std::error_code::message
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:298,1
    - Dst: backport::SectionMemoryManager::invalidateInstructionCache
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:308,1
    - Dst: sys::Process::getPageSizeEstimate
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:314,1
    - Dst: base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:317,1
    - Dst: allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:319,1
    - Dst: base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:323,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:326,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:326,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:327,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:327,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:328,1
    - Dst: base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:328,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:328,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:329,1
    - Dst: allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:329,1
    - Dst: protectMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:338,1
    - Dst: MemoryGroup::PendingMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:341,1
    - Dst: trimBlockToPageSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:346,1
    - Dst: erase_if
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:352,1
    - Dst: FreeMemBlock::Free::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:353,1
    - Dst: std::error_code
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:356,1
    - Dst: sys::Memory::InvalidateInstructionCache
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:361,1
    - Dst: base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:361,1
    - Dst: allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:362,1
    - Dst: releaseMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:368,1
    - Dst: backport::DefaultMMapper::allocateMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:385,1
    - Dst: backport::DefaultMMapper::protectMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:390,1
    - Dst: backport::DefaultMMapper::releaseMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:394,1
    - Dst: std::make_unique<DefaultMMapper>
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:404,1
    - Dst: get
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:405,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: (isAddrAligned(RWDataAlign, (void *)Addr))
      pos:
        line_end: 145
        line_start: 145
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: "(M.base() <= Trimmed.base() &&\n         Trimmed.allocatedSize()
        <= M.allocatedSize())"
      pos:
        line_end: 328
        line_start: 327
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: (isAddrAligned(RODataAlign, (void *)Addr))
      pos:
        line_end: 138
        line_start: 138
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: (isAddrAligned(CodeAlign, (void *)Addr))
      pos:
        line_end: 131
        line_start: 131
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: (!(Alignment & (Alignment - 1)) && "Alignment must be a power of
        two.")
      pos:
        line_end: 177
        line_start: 177
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: (((uintptr_t)Trimmed.base() % PageSize) == 0)
      pos:
        line_end: 325
        line_start: 325
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: ((Trimmed.allocatedSize() % PageSize) == 0)
      pos:
        line_end: 326
        line_start: 326
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    constantsTouched: []
    func_position:
      end: 409
      start: 59
    functionDepth: 2
    functionLinenumber: 59
    functionLinenumberEnd: 409
    functionName: backport::SectionMemoryManager::reserveAllocationSpace
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - backport::SectionMemoryManager::invalidateInstructionCache
    - protectMappedMemory
    - std::max
    - backport::SectionMemoryManager::hasSpace
    - erase_if
    - Align::value
    - Align
    - Near::base
    - FreeMemBlock::Free::allocatedSize
    - std::error_code::message
    - base
    - backport::DefaultMMapper::releaseMappedMemory
    - trimBlockToPageSize
    - FreeMem::clear
    - backport::DefaultMMapper::protectMappedMemory
    - backport::SectionMemoryManager::allocateSection
    - sys::Memory::InvalidateInstructionCache
    - sys::MemoryBlock::allocatedSize
    - std::make_unique<DefaultMMapper>
    - MemoryGroup::FreeMem::push_back
    - get
    - assert
    - backport::SectionMemoryManager::applyMemoryGroupPermissions
    - sys::MemoryBlock
    - isAddrAligned
    - sys::Process::getPageSizeEstimate
    - MemoryGroup::PendingMem::clear
    - MemoryGroup::PendingMem::push_back
    - sys::MemoryBlock::base
    - FreeMem::push_back
    - FreeMemBlock::Free::base
    - releaseMappedMemory
    - std::error_code
    - alignTo
    - MemoryGroup::AllocatedMem::push_back
    - AllocatedMem::push_back
    - MemoryGroup::PendingMem::size
    - backport::DefaultMMapper::allocateMappedMemory
    - llvm_unreachable
    - allocateMappedMemory
    - allocatedSize
    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:76,1
    - Dst: Align
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:82,1
    - Dst: std::max
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:82,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:82,1
    - Dst: Align
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:83,1
    - Dst: std::max
      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: Align
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:84,1
    - Dst: std::max
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:84,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:84,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:88,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:88,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:90,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:90,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:92,1
    - Dst: Align::value
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:92,1
    - Dst: backport::SectionMemoryManager::hasSpace
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:94,1
    - Dst: backport::SectionMemoryManager::hasSpace
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:95,1
    - Dst: backport::SectionMemoryManager::hasSpace
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:96,1
    - Dst: FreeMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:107,1
    - Dst: FreeMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:108,1
    - Dst: FreeMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:109,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:112,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:113,1
    - Dst: alignTo
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:114,1
    - Dst: allocateMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:119,1
    - Dst: AllocatedMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:126,1
    - Dst: sys::MemoryBlock::base
      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: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:146,1
    - Dst: isAddrAligned
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:146,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:147,1
    - Dst: FreeMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:148,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: 131
        line_start: 131
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: (isAddrAligned(RODataAlign, (void *)Addr))
      pos:
        line_end: 138
        line_start: 138
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: (isAddrAligned(RWDataAlign, (void *)Addr))
      pos:
        line_end: 145
        line_start: 145
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    constantsTouched: []
    func_position:
      end: 150
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 150
    functionName: backport::SectionMemoryManager::reserveAllocationSpace
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - assert
    - alignTo
    - std::max
    - backport::SectionMemoryManager::hasSpace
    - isAddrAligned
    - sys::MemoryBlock
    - FreeMem::push_back
    - sys::Process::getPageSizeEstimate
    - FreeMem::clear
    - AllocatedMem::push_back
    - sys::MemoryBlock::base
    - Align::value
    - Align
    - allocateMappedMemory
    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:158,1
    - Dst: backport::SectionMemoryManager::allocateSection
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:160,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: 162
      start: 152
    functionDepth: 2
    functionLinenumber: 152
    functionLinenumberEnd: 162
    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:168,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: 170
      start: 164
    functionDepth: 2
    functionLinenumber: 164
    functionLinenumberEnd: 170
    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:178,1
    - Dst: llvm_unreachable
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:192,1
    - Dst: Free::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:198,1
    - Dst: Free::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:199,1
    - Dst: Free::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:200,1
    - Dst: MemoryGroup::PendingMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:206,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:206,1
    - Dst: MemoryGroup::PendingMem::size
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:210,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:214,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:214,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:215,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:220,1
    - Dst: allocateMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:235,1
    - Dst: Near::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:248,1
    - Dst: Near::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:250,1
    - Dst: Near::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:252,1
    - Dst: MemoryGroup::AllocatedMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:256,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:257,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:258,1
    - Dst: MemoryGroup::PendingMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:264,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:264,1
    - Dst: sys::MemoryBlock
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:271,1
    - Dst: MemoryGroup::FreeMem::push_back
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:273,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: 177
        line_start: 177
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    constantsTouched: []
    func_position:
      end: 278
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 278
    functionName: backport::SectionMemoryManager::allocateSection
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 6
    functionsReached:
    - assert
    - Free::base
    - sys::MemoryBlock::allocatedSize
    - sys::MemoryBlock
    - MemoryGroup::PendingMem::push_back
    - MemoryGroup::AllocatedMem::push_back
    - MemoryGroup::PendingMem::size
    - sys::MemoryBlock::base
    - llvm_unreachable
    - allocateMappedMemory
    - Free::allocatedSize
    - MemoryGroup::FreeMem::push_back
    - Near::base
    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:285,1
    - Dst: std::error_code::message
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:289,1
    - Dst: backport::SectionMemoryManager::applyMemoryGroupPermissions
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:295,1
    - Dst: std::error_code::message
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:298,1
    - Dst: backport::SectionMemoryManager::invalidateInstructionCache
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:308,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - ErrMsg
    argTypes:
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 311
    functionName: backport::SectionMemoryManager::finalizeMemory
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - backport::SectionMemoryManager::invalidateInstructionCache
    - std::error_code::message
    - 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:314,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:317,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:319,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:323,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:326,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:326,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:327,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:327,1
    - Dst: assert
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:328,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:328,1
    - Dst: sys::MemoryBlock::base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:328,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:329,1
    - Dst: sys::MemoryBlock::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:329,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: 325
        line_start: 325
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: ((Trimmed.allocatedSize() % PageSize) == 0)
      pos:
        line_end: 326
        line_start: 326
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    - condition: "(M.base() <= Trimmed.base() &&\n         Trimmed.allocatedSize()
        <= M.allocatedSize())"
      pos:
        line_end: 328
        line_start: 327
        source_file: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    constantsTouched: []
    func_position:
      end: 332
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 332
    functionName: backport::trimBlockToPageSize
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - assert
    - sys::MemoryBlock::allocatedSize
    - sys::MemoryBlock::base
    - 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:338,1
    - Dst: MemoryGroup::PendingMem::clear
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:341,1
    - Dst: trimBlockToPageSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:346,1
    - Dst: erase_if
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:352,1
    - Dst: Free::allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:353,1
    - Dst: std::error_code
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:356,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - MemGroup
    - Permissions
    argTypes:
    - MemoryGroup
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 357
    functionName: backport::SectionMemoryManager::applyMemoryGroupPermissions
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 4
    functionsReached:
    - std::error_code
    - protectMappedMemory
    - trimBlockToPageSize
    - MemoryGroup::PendingMem::clear
    - erase_if
    - Free::allocatedSize
    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:361,1
    - Dst: base
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:361,1
    - Dst: allocatedSize
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:362,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 363
    functionName: backport::SectionMemoryManager::invalidateInstructionCache
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 4
    functionsReached:
    - base
    - allocatedSize
    - sys::Memory::InvalidateInstructionCache
    linkageType: ''
    returnType: void
    signature: void SectionMemoryManager::invalidateInstructionCache()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: releaseMappedMemory
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:368,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 365
    functionDepth: 0
    functionLinenumber: 365
    functionLinenumberEnd: 370
    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: 372
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 372
    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: 374
      start: 374
    functionDepth: 0
    functionLinenumber: 374
    functionLinenumberEnd: 374
    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:385,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: 386
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 386
    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:390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - Block
    - Flags
    argTypes:
    - sys::MemoryBlock
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 391
    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:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - M
    argTypes:
    - sys::MemoryBlock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 393
    functionDepth: 1
    functionLinenumber: 393
    functionLinenumberEnd: 395
    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:385,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: 386
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 386
    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:390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - Block
    - Flags
    argTypes:
    - sys::MemoryBlock
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 391
    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:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - M
    argTypes:
    - sys::MemoryBlock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 393
    functionDepth: 1
    functionLinenumber: 393
    functionLinenumberEnd: 395
    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:404,1
    - Dst: get
      Src: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp:405,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - UnownedMM
    - ReserveAlloc
    argTypes:
    - MemoryMapper*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 399
    functionDepth: 0
    functionLinenumber: 399
    functionLinenumberEnd: 407
    functionName: backport::SectionMemoryManager::SectionMemoryManager
    functionSourceFile: /src/postgres/src/backend/jit/llvm/SectionMemoryManager.cpp
    functionUses: 0
    functionsReached:
    - std::make_unique<DefaultMMapper>
    - get
    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:133,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - owner
    - handle
    argTypes:
    - ResourceOwner
    - LLVMJitContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 134
    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:138,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - owner
    - handle
    argTypes:
    - ResourceOwner
    - LLVMJitContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 139
    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: 156
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 156
    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:176,1
    - Dst: llvm_inline_reset_caches
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:200,1
    - Dst: LLVMContextDispose
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:202,1
    - Dst: LLVMContextCreate
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:203,1
    - Dst: llvm_create_types
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:211,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 212
    functionName: llvm_recreate_llvm_context
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 0
    functionsReached:
    - llvm_inline_reset_caches
    - LLVMContextCreate
    - elog
    - LLVMContextDispose
    - llvm_create_types
    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:227,1
    - Dst: llvm_session_initialize
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:229,1
    - Dst: llvm_recreate_llvm_context
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:231,1
    - Dst: ResourceOwnerEnlarge
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:233,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:235,1
    - Dst: ResourceOwnerRememberJIT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - jitFlags
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 222
    functionDepth: 2
    functionLinenumber: 222
    functionLinenumberEnd: 246
    functionName: llvm_create_context
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 1
    functionsReached:
    - llvm_session_initialize
    - MemoryContextAllocZero
    - ResourceOwnerEnlarge
    - ResourceOwnerRememberJIT
    - llvm_recreate_llvm_context
    - llvm_assert_in_fatal_section
    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:271,1
    - Dst: LLVMDisposeModule
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:275,1
    - Dst: foreach
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:279,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:281,1
    - Dst: LLVMOrcResourceTrackerRemove
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:287,1
    - Dst: LLVMOrcReleaseResourceTracker
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:288,1
    - Dst: LLVMOrcLLJITGetExecutionSession
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:296,1
    - Dst: LLVMOrcExecutionSessionGetSymbolStringPool
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:297,1
    - Dst: LLVMOrcSymbolStringPoolClearDeadEntries
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:298,1
    - Dst: pfree
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:301,1
    - Dst: list_free
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:303,1
    - Dst: llvm_leave_fatal_on_oom
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:306,1
    - Dst: ResourceOwnerForgetJIT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:309,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 1
    argNames:
    - context
    argTypes:
    - JitContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 251
    functionDepth: 2
    functionLinenumber: 251
    functionLinenumberEnd: 310
    functionName: llvm_release_context
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 0
    functionsReached:
    - pfree
    - llvm_enter_fatal_on_oom
    - LLVMOrcLLJITGetExecutionSession
    - llvm_leave_fatal_on_oom
    - foreach
    - LLVMOrcSymbolStringPoolClearDeadEntries
    - LLVMOrcResourceTrackerRemove
    - LLVMOrcExecutionSessionGetSymbolStringPool
    - ResourceOwnerForgetJIT
    - LLVMDisposeModule
    - lfirst
    - list_free
    - LLVMOrcReleaseResourceTracker
    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:318,1
    - Dst: LLVMModuleCreateWithNameInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:327,1
    - Dst: LLVMSetTarget
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:328,1
    - Dst: LLVMSetDataLayout
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:329,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - context
    argTypes:
    - LLVMJitContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 315
    functionDepth: 1
    functionLinenumber: 315
    functionLinenumberEnd: 333
    functionName: llvm_mutable_module
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 1
    functionsReached:
    - LLVMModuleCreateWithNameInContext
    - LLVMSetDataLayout
    - 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:343,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - context
    - basename
    argTypes:
    - struct LLVMJitContext*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 340
    functionDepth: 2
    functionLinenumber: 340
    functionLinenumberEnd: 355
    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:366,1
    - Dst: llvm_compile_module
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:374,1
    - Dst: foreach
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:382,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:384,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:390,1
    - Dst: LLVMOrcLLJITLookup
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:393,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:395,1
    - Dst: llvm_error_message
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:396,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:404,1
    - Dst: INSTR_TIME_ACCUM_DIFF
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:405,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:412,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - context
    - funcname
    argTypes:
    - LLVMJitContext*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 361
    functionDepth: 1
    functionLinenumber: 361
    functionLinenumberEnd: 415
    functionName: llvm_get_function
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 1
    functionsReached:
    - llvm_compile_module
    - LLVMOrcLLJITLookup
    - INSTR_TIME_ACCUM_DIFF
    - foreach
    - elog
    - llvm_assert_in_fatal_section
    - llvm_error_message
    - INSTR_TIME_SET_CURRENT
    - lfirst
    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:428,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:430,1
    - Dst: LLVMGlobalGetValueType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:432,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - varname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 421
    functionDepth: 1
    functionLinenumber: 421
    functionLinenumberEnd: 435
    functionName: llvm_pg_var_type
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 1
    functionsReached:
    - elog
    - LLVMGetNamedGlobal
    - LLVMGlobalGetValueType
    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:447,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:449,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:451,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - varname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 441
    functionDepth: 2
    functionLinenumber: 441
    functionLinenumberEnd: 454
    functionName: llvm_pg_var_func_type
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 1
    functionsReached:
    - LLVMGetFunctionType
    - elog
    - 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:470,1
    - Dst: LLVMGetNamedFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:474,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:477,1
    - Dst: LLVMAddFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:479,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:481,1
    - Dst: llvm_copy_attributes
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:482,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - mod
    - funcname
    argTypes:
    - LLVMModuleRef
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 463
    functionDepth: 2
    functionLinenumber: 463
    functionLinenumberEnd: 485
    functionName: llvm_pg_func
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 2
    functionsReached:
    - LLVMGetFunctionType
    - LLVMGetNamedFunction
    - llvm_copy_attributes
    - elog
    - LLVMAddFunction
    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:497,1
    - Dst: palloc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:502,1
    - Dst: LLVMGetAttributesAtIndex
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:503,1
    - Dst: LLVMAddAttributeAtIndex
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:506,1
    - Dst: pfree
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:508,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - v_from
    - v_to
    - index
    argTypes:
    - LLVMValueRef
    - LLVMValueRef
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 509
    functionName: llvm_copy_attributes_at_index
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 0
    functionsReached:
    - pfree
    - LLVMGetAttributesAtIndex
    - LLVMAddAttributeAtIndex
    - LLVMGetAttributeCountAtIndex
    - palloc
    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:521,1
    - Dst: LLVMGetTypeKind
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:523,1
    - Dst: LLVMGetFunctionReturnType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:523,1
    - Dst: llvm_copy_attributes_at_index
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:526,1
    - Dst: LLVMCountParams
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:530,1
    - Dst: llvm_copy_attributes_at_index
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:533,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - v_from
    - v_to
    argTypes:
    - LLVMValueRef
    - LLVMValueRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 515
    functionDepth: 2
    functionLinenumber: 515
    functionLinenumberEnd: 534
    functionName: llvm_copy_attributes
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 2
    functionsReached:
    - llvm_copy_attributes_at_index
    - LLVMGetFunctionReturnType
    - LLVMGetTypeKind
    - LLVMCountParams
    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:551,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:556,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:561,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:572,1
    - Dst: LLVMGetNamedGlobal
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:574,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:576,1
    - Dst: l_ptr_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:578,1
    - Dst: LLVMAddGlobal
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:580,1
    - Dst: LLVMSetInitializer
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:581,1
    - Dst: LLVMSetGlobalConstant
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:582,1
    - Dst: LLVMSetLinkage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:583,1
    - Dst: LLVMSetUnnamedAddr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:584,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:586,1
    - Dst: LLVMGetNamedFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:590,1
    - Dst: LLVMAddFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:594,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:594,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 4
    argNames:
    - context
    - builder
    - mod
    - fcinfo
    argTypes:
    - LLVMJitContext*
    - LLVMBuilderRef
    - LLVMModuleRef
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 539
    functionDepth: 2
    functionLinenumber: 539
    functionLinenumberEnd: 597
    functionName: llvm_function_reference
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 2
    functionsReached:
    - LLVMGetFunctionType
    - LLVMSetUnnamedAddr
    - LLVMSetLinkage
    - LLVMGetNamedFunction
    - LLVMGetNamedGlobal
    - LLVMAddGlobal
    - l_load
    - pstrdup
    - LLVMSetGlobalConstant
    - fmgr_symbol
    - l_ptr_const
    - LLVMSetInitializer
    - LLVMAddFunction
    - psprintf
    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: 7
    BranchProfiles: []
    Callsites:
    - Dst: LLVMPassManagerBuilderCreate
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:622,1
    - Dst: LLVMPassManagerBuilderSetOptLevel
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:623,1
    - Dst: LLVMCreateFunctionPassManagerForModule
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:624,1
    - Dst: LLVMPassManagerBuilderUseInlinerWithThreshold
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:629,1
    - Dst: LLVMAddPromoteMemoryToRegisterPass
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:634,1
    - Dst: LLVMPassManagerBuilderPopulateFunctionPassManager
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:637,1
    - Dst: LLVMInitializeFunctionPassManager
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:643,1
    - Dst: LLVMGetFirstFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:644,1
    - Dst: LLVMGetNextFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:646,1
    - Dst: LLVMRunFunctionPassManager
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:647,1
    - Dst: LLVMFinalizeFunctionPassManager
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:648,1
    - Dst: LLVMDisposePassManager
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:649,1
    - Dst: LLVMCreatePassManager
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:655,1
    - Dst: LLVMPassManagerBuilderPopulateModulePassManager
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:656,1
    - Dst: LLVMAddAlwaysInlinerPass
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:660,1
    - Dst: LLVMAddFunctionInliningPass
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:664,1
    - Dst: LLVMRunPassManager
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:665,1
    - Dst: LLVMDisposePassManager
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:666,1
    - Dst: LLVMPassManagerBuilderDispose
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:668,1
    - Dst: LLVMCreatePassBuilderOptions
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:679,1
    - Dst: LLVMPassBuilderOptionsSetDebugLogging
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:682,1
    - Dst: LLVMPassBuilderOptionsSetVerifyEach
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:687,1
    - Dst: LLVMPassBuilderOptionsSetInlinerThreshold
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:690,1
    - Dst: LLVMRunPasses
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:692,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:695,1
    - Dst: llvm_error_message
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:695,1
    - Dst: LLVMDisposePassBuilderOptions
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:697,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 2
    argNames:
    - context
    - module
    argTypes:
    - LLVMJitContext*
    - LLVMModuleRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 602
    functionDepth: 1
    functionLinenumber: 602
    functionLinenumberEnd: 699
    functionName: llvm_optimize_module
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 0
    functionsReached:
    - LLVMRunFunctionPassManager
    - LLVMCreateFunctionPassManagerForModule
    - llvm_error_message
    - LLVMRunPassManager
    - LLVMCreatePassManager
    - LLVMFinalizeFunctionPassManager
    - LLVMRunPasses
    - LLVMDisposePassBuilderOptions
    - LLVMPassManagerBuilderPopulateFunctionPassManager
    - LLVMPassBuilderOptionsSetInlinerThreshold
    - elog
    - LLVMInitializeFunctionPassManager
    - LLVMPassManagerBuilderPopulateModulePassManager
    - LLVMGetFirstFunction
    - LLVMDisposePassManager
    - LLVMAddPromoteMemoryToRegisterPass
    - LLVMPassBuilderOptionsSetVerifyEach
    - LLVMPassManagerBuilderUseInlinerWithThreshold
    - LLVMPassManagerBuilderCreate
    - LLVMAddFunctionInliningPass
    - LLVMCreatePassBuilderOptions
    - LLVMAddAlwaysInlinerPass
    - LLVMPassManagerBuilderSetOptLevel
    - LLVMPassBuilderOptionsSetDebugLogging
    - LLVMGetNextFunction
    - LLVMPassManagerBuilderDispose
    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:721,1
    - Dst: llvm_inline
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:722,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:723,1
    - Dst: INSTR_TIME_ACCUM_DIFF
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:724,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:732,1
    - Dst: LLVMWriteBitcodeToFile
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:735,1
    - Dst: pfree
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:736,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:741,1
    - Dst: llvm_optimize_module
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:742,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:743,1
    - Dst: INSTR_TIME_ACCUM_DIFF
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:744,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:751,1
    - Dst: LLVMWriteBitcodeToFile
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:754,1
    - Dst: pfree
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:755,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:759,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:767,1
    - Dst: LLVMOrcLLJITGetMainJITDylib
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:771,1
    - Dst: LLVMOrcCreateNewThreadSafeModule
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:773,1
    - Dst: LLVMOrcJITDylibCreateResourceTracker
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:776,1
    - Dst: LLVMOrcLLJITAddLLVMIRModuleWithRT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:785,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:790,1
    - Dst: llvm_error_message
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:791,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:796,1
    - Dst: INSTR_TIME_ACCUM_DIFF
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:797,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:804,1
    - Dst: lappend
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:805,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:806,1
    - Dst: ereport
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:808,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:809,1
    - Dst: INSTR_TIME_GET_DOUBLE
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:810,1
    - Dst: INSTR_TIME_GET_DOUBLE
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:811,1
    - Dst: INSTR_TIME_GET_DOUBLE
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:812,1
    - Dst: errhidestmt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:813,1
    - Dst: errhidecontext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:814,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 42
    argCount: 1
    argNames:
    - context
    argTypes:
    - LLVMJitContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 704
    functionDepth: 2
    functionLinenumber: 704
    functionLinenumberEnd: 815
    functionName: llvm_compile_module
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 1
    functionsReached:
    - LLVMOrcLLJITGetMainJITDylib
    - MemoryContextSwitchTo
    - LLVMOrcLLJITAddLLVMIRModuleWithRT
    - llvm_error_message
    - llvm_optimize_module
    - LLVMOrcJITDylibCreateResourceTracker
    - psprintf
    - errhidestmt
    - pfree
    - errhidecontext
    - llvm_inline
    - INSTR_TIME_GET_DOUBLE
    - INSTR_TIME_SET_CURRENT
    - LLVMOrcCreateNewThreadSafeModule
    - elog
    - lappend
    - LLVMWriteBitcodeToFile
    - INSTR_TIME_ACCUM_DIFF
    - errmsg_internal
    - ereport
    - MemoryContextAlloc
    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:833,1
    - Dst: LLVMInitializeNativeTarget
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:835,1
    - Dst: LLVMInitializeNativeAsmPrinter
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:836,1
    - Dst: LLVMInitializeNativeAsmParser
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:837,1
    - Dst: LLVMContextCreate
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:841,1
    - Dst: llvm_create_types
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:851,1
    - Dst: llvm_set_target
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:856,1
    - Dst: LLVMGetTargetFromTriple
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:858,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:860,1
    - Dst: LLVMGetHostCPUName
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:869,1
    - Dst: LLVMGetHostCPUFeatures
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:870,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:871,1
    - Dst: LLVMCreateTargetMachine
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:875,1
    - Dst: LLVMCreateTargetMachine
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:880,1
    - Dst: LLVMDisposeMessage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:885,1
    - Dst: LLVMDisposeMessage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:887,1
    - Dst: LLVMLoadLibraryPermanently
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:891,1
    - Dst: LLVMOrcCreateNewThreadSafeContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:894,1
    - Dst: llvm_create_jit_instance
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:896,1
    - Dst: llvm_create_jit_instance
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:899,1
    - Dst: on_proc_exit
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:903,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:907,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 908
      start: 820
    functionDepth: 1
    functionLinenumber: 820
    functionLinenumberEnd: 908
    functionName: llvm_session_initialize
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - LLVMOrcCreateNewThreadSafeContext
    - LLVMContextCreate
    - LLVMGetHostCPUFeatures
    - LLVMGetHostCPUName
    - LLVMInitializeNativeTarget
    - LLVMLoadLibraryPermanently
    - LLVMCreateTargetMachine
    - elog
    - llvm_set_target
    - llvm_create_jit_instance
    - LLVMInitializeNativeAsmParser
    - on_proc_exit
    - LLVMInitializeNativeAsmPrinter
    - LLVMDisposeMessage
    - llvm_create_types
    - 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:921,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:923,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:928,1
    - Dst: LLVMOrcDisposeLLJIT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:934,1
    - Dst: LLVMOrcDisposeLLJIT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:939,1
    - Dst: LLVMOrcDisposeThreadSafeContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:944,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 948
      start: 910
    functionDepth: 1
    functionLinenumber: 910
    functionLinenumberEnd: 948
    functionName: llvm_shutdown
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 0
    functionsReached:
    - Assert
    - llvm_in_fatal_on_oom
    - elog
    - LLVMOrcDisposeLLJIT
    - LLVMOrcDisposeThreadSafeContext
    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:958,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:960,1
    - Dst: LLVMGetFunctionReturnType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:962,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - mod
    - name
    argTypes:
    - LLVMModuleRef
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 951
    functionDepth: 2
    functionLinenumber: 951
    functionLinenumberEnd: 965
    functionName: load_return_type
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 0
    functionsReached:
    - LLVMGetFunctionReturnType
    - elog
    - LLVMGetNamedFunction
    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:975,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:978,1
    - Dst: LLVMGetTarget
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:978,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:981,1
    - Dst: LLVMGetDataLayoutStr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:981,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 971
    functionDepth: 1
    functionLinenumber: 971
    functionLinenumberEnd: 982
    functionName: llvm_set_target
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 1
    functionsReached:
    - LLVMGetTarget
    - elog
    - pstrdup
    - 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:997,1
    - Dst: LLVMCreateMemoryBufferWithContentsOfFile
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1000,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1002,1
    - Dst: LLVMParseBitcodeInContext2
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1007,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1009,1
    - Dst: LLVMDisposeMemoryBuffer
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1011,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1013,1
    - Dst: load_return_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1014,1
    - Dst: llvm_pg_var_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1015,1
    - Dst: llvm_pg_var_type
      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:1017,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: llvm_pg_var_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: LLVMGetNamedFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1035,1
    - Dst: LLVMGetNamedFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1036,1
    - Dst: LLVMGetNamedFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1037,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 990
    functionDepth: 3
    functionLinenumber: 990
    functionLinenumberEnd: 1038
    functionName: llvm_create_types
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 2
    functionsReached:
    - LLVMGetNamedFunction
    - load_return_type
    - LLVMCreateMemoryBufferWithContentsOfFile
    - LLVMDisposeMemoryBuffer
    - snprintf
    - LLVMParseBitcodeInContext2
    - elog
    - llvm_pg_var_type
    linkageType: ''
    returnType: void
    signature: void llvm_create_types(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1053,1
    - Dst: strlen
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1053,1
    - Dst: rindex
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1059,1
    - Dst: pnstrdup
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1062,1
    - Dst: strlen
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1062,1
    - Dst: strlen
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1063,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1064,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1066,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1071,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - name
    - modname
    - funcname
    argTypes:
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1073
      start: 1044
    functionDepth: 1
    functionLinenumber: 1044
    functionLinenumberEnd: 1073
    functionName: llvm_split_symbol_name
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 2
    functionsReached:
    - Assert
    - pnstrdup
    - pstrdup
    - rindex
    - strncmp
    - strlen
    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:1091,1
    - Dst: llvm_split_symbol_name
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1095,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1098,1
    - Dst: load_external_function
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1101,1
    - Dst: LLVMSearchForAddressOfSymbol
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1104,1
    - Dst: pfree
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1106,1
    - Dst: pfree
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1108,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1112,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - symname
    - ctx
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1115
      start: 1078
    functionDepth: 2
    functionLinenumber: 1078
    functionLinenumberEnd: 1115
    functionName: llvm_resolve_symbol
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - load_external_function
    - llvm_split_symbol_name
    - elog
    - LLVMSearchForAddressOfSymbol
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t llvm_resolve_symbol(const char *symname, void *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1124,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1126,1
    - Dst: LLVMOrcSymbolStringPoolEntryStr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1133,1
    - Dst: LLVMOrcRetainSymbolStringPoolEntry
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1135,1
    - Dst: llvm_resolve_symbol
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1137,1
    - Dst: LLVMOrcAbsoluteSymbols
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1141,1
    - Dst: LLVMOrcJITDylibDefine
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1142,1
    - Dst: LLVMOrcDisposeMaterializationUnit
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1144,1
    - Dst: pfree
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1146,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: 1149
      start: 1117
    functionDepth: 3
    functionLinenumber: 1117
    functionLinenumberEnd: 1149
    functionName: llvm_resolve_symbols
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 0
    functionsReached:
    - llvm_resolve_symbol
    - LLVMOrcJITDylibDefine
    - LLVMOrcRetainSymbolStringPoolEntry
    - LLVMOrcDisposeMaterializationUnit
    - pfree
    - LLVMOrcSymbolStringPoolEntryStr
    - LLVMOrcAbsoluteSymbols
    - palloc0
    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:1163,1
    - Dst: llvm_error_message
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - error
    argTypes:
    - void*
    - LLVMErrorRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1165
      start: 1160
    functionDepth: 1
    functionLinenumber: 1160
    functionLinenumberEnd: 1165
    functionName: llvm_log_jit_error
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 0
    functionsReached:
    - llvm_error_message
    - elog
    linkageType: ''
    returnType: void
    signature: void llvm_log_jit_error(void *ctx, LLVMErrorRef error)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LLVMOrcCreateRTDyldObjectLinkingLayerWithSafeSectionMemoryManager
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1175,1
    - Dst: LLVMOrcCreateRTDyldObjectLinkingLayerWithSectionMemoryManager
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1178,1
    - Dst: LLVMCreateGDBRegistrationListener
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1185,1
    - Dst: LLVMOrcRTDyldObjectLinkingLayerRegisterJITEventListener
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1187,1
    - Dst: LLVMCreatePerfJITEventListener
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1194,1
    - Dst: LLVMOrcRTDyldObjectLinkingLayerRegisterJITEventListener
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1196,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - Ctx
    - ES
    - Triple
    argTypes:
    - void*
    - LLVMOrcExecutionSessionRef
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1201
      start: 1170
    functionDepth: 1
    functionLinenumber: 1170
    functionLinenumberEnd: 1201
    functionName: llvm_create_object_layer
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 0
    functionsReached:
    - LLVMOrcCreateRTDyldObjectLinkingLayerWithSectionMemoryManager
    - LLVMCreateGDBRegistrationListener
    - LLVMOrcRTDyldObjectLinkingLayerRegisterJITEventListener
    - LLVMOrcCreateRTDyldObjectLinkingLayerWithSafeSectionMemoryManager
    - LLVMCreatePerfJITEventListener
    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:1217,1
    - Dst: LLVMOrcJITTargetMachineBuilderCreateFromTargetMachine
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1218,1
    - Dst: LLVMOrcLLJITBuilderSetJITTargetMachineBuilder
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1219,1
    - Dst: LLVMOrcLLJITBuilderSetObjectLinkingLayerCreator
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1221,1
    - Dst: LLVMOrcCreateLLJIT
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1225,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1227,1
    - Dst: llvm_error_message
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1228,1
    - Dst: LLVMOrcExecutionSessionSetErrorReporter
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1230,1
    - Dst: LLVMOrcLLJITGetExecutionSession
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1230,1
    - Dst: LLVMOrcCreateDynamicLibrarySearchGeneratorForProcess
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1237,1
    - Dst: LLVMOrcLLJITGetGlobalPrefix
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1238,1
    - Dst: elog
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1241,1
    - Dst: llvm_error_message
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1242,1
    - Dst: LLVMOrcJITDylibAddGenerator
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1243,1
    - Dst: LLVMOrcLLJITGetMainJITDylib
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1243,1
    - Dst: LLVMOrcCreateCustomCAPIDefinitionGenerator
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1250,1
    - Dst: LLVMOrcCreateCustomCAPIDefinitionGenerator
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1252,1
    - Dst: LLVMOrcJITDylibAddGenerator
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1254,1
    - Dst: LLVMOrcLLJITGetMainJITDylib
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1254,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - tm
    argTypes:
    - LLVMTargetMachineRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1257
      start: 1207
    functionDepth: 1
    functionLinenumber: 1207
    functionLinenumberEnd: 1257
    functionName: llvm_create_jit_instance
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 1
    functionsReached:
    - LLVMOrcLLJITGetMainJITDylib
    - LLVMOrcLLJITBuilderSetJITTargetMachineBuilder
    - LLVMOrcCreateDynamicLibrarySearchGeneratorForProcess
    - LLVMOrcCreateLLJITBuilder
    - LLVMOrcJITTargetMachineBuilderCreateFromTargetMachine
    - LLVMOrcCreateCustomCAPIDefinitionGenerator
    - LLVMOrcLLJITBuilderSetObjectLinkingLayerCreator
    - LLVMOrcLLJITGetGlobalPrefix
    - elog
    - LLVMOrcJITDylibAddGenerator
    - llvm_error_message
    - LLVMOrcLLJITGetExecutionSession
    - LLVMOrcExecutionSessionSetErrorReporter
    - LLVMOrcCreateLLJIT
    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:1262,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1263,1
    - Dst: LLVMDisposeErrorMessage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - error
    argTypes:
    - LLVMErrorRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1268
      start: 1259
    functionDepth: 0
    functionLinenumber: 1259
    functionLinenumberEnd: 1268
    functionName: llvm_error_message
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 5
    functionsReached:
    - LLVMDisposeErrorMessage
    - pstrdup
    - LLVMGetErrorMessage
    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:1276,1
    - Dst: jit_release_context
      Src: /src/postgres/src/backend/jit/llvm/llvmjit.c:1279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - res
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1280
      start: 1273
    functionDepth: 1
    functionLinenumber: 1273
    functionLinenumberEnd: 1280
    functionName: ResOwnerReleaseJitContext
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit.c
    functionUses: 0
    functionsReached:
    - DatumGetPointer
    - jit_release_context
    linkageType: ''
    returnType: void
    signature: void ResOwnerReleaseJitContext(Datum res)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertVariableIsOfType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_types.c:83,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_types.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 86
    functionName: AttributeTemplate
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_types.c
    functionUses: 0
    functionsReached:
    - AssertVariableIsOfType
    - PG_RETURN_NULL
    linkageType: ''
    returnType: Datum
    signature: Datum AttributeTemplate(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AssertVariableIsOfType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_types.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - struct ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 103
    functionName: ExecEvalSubroutineTemplate
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_types.c
    functionUses: 0
    functionsReached:
    - AssertVariableIsOfType
    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: AssertVariableIsOfType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_types.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - struct ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 117
    functionName: ExecEvalBoolSubroutineTemplate
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_types.c
    functionUses: 0
    functionsReached:
    - AssertVariableIsOfType
    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: 129
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 129
    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:102,1
    - Dst: LLVMGetModuleContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:103,1
    - Dst: llvm_expand_funcname
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:105,1
    - Dst: TupleDescCompactAttr
      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:136,1
    - Dst: LLVMFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:138,1
    - Dst: LLVMVoidTypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:138,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:139,1
    - Dst: LLVMAddFunction
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:141,1
    - Dst: LLVMSetLinkage
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:142,1
    - Dst: LLVMSetParamAlignment
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:143,1
    - Dst: LLVMGetParam
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:143,1
    - Dst: llvm_copy_attributes
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:144,1
    - Dst: LLVMAppendBasicBlockInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:147,1
    - Dst: LLVMAppendBasicBlockInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:149,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: LLVMCreateBuilderInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:157,1
    - Dst: palloc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:159,1
    - Dst: palloc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:160,1
    - Dst: palloc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:161,1
    - Dst: palloc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:162,1
    - Dst: palloc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:163,1
    - Dst: palloc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:164,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:168,1
    - Dst: LLVMBuildAlloca
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:171,1
    - Dst: LLVMGetParam
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:173,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:176,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:179,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:181,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:182,1
    - Dst: LLVMBuildBitCast
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:189,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:191,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:193,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:195,1
    - Dst: LLVMBuildBitCast
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:203,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:205,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:207,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:212,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:221,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:225,1
    - Dst: LLVMBuildBitCast
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:231,1
    - Dst: l_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:232,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:237,1
    - Dst: LLVMInt8TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:237,1
    - Dst: l_load_struct_gep
      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:246,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:253,1
    - Dst: LLVMBuildAnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:254,1
    - Dst: l_int16_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:255,1
    - Dst: l_int16_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:257,1
    - Dst: LLVMBuildAnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:261,1
    - Dst: l_int16_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:262,1
    - Dst: LLVMBuildZExt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:271,1
    - Dst: l_load_struct_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:272,1
    - Dst: LLVMInt32TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:277,1
    - Dst: l_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:279,1
    - Dst: LLVMInt8TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:280,1
    - Dst: LLVMBuildBitCast
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:281,1
    - Dst: l_ptr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:283,1
    - Dst: LLVMInt8TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:283,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:295,1
    - Dst: LLVMInt32TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:295,1
    - Dst: LLVMBuildZExt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:296,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:297,1
    - Dst: l_bb_append_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:304,1
    - Dst: l_bb_append_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:306,1
    - Dst: l_bb_append_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:308,1
    - Dst: l_bb_append_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:310,1
    - Dst: l_bb_append_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:312,1
    - Dst: l_bb_append_v
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:314,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:328,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:329,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:330,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:338,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:339,1
    - Dst: l_int16_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:341,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:347,1
    - Dst: LLVMBuildZExt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:350,1
    - Dst: LLVMInt32TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:350,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:351,1
    - Dst: llvm_pg_func
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:352,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:353,1
    - Dst: LLVMGetFunctionType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:354,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:355,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:356,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:359,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:361,1
    - Dst: LLVMInt16TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:361,1
    - Dst: LLVMBuildSwitch
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:371,1
    - Dst: l_int16_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:376,1
    - Dst: LLVMAddCase
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:378,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:384,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:387,1
    - Dst: LLVMBuildUnreachable
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:388,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:396,1
    - Dst: l_int16_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:399,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:404,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:412,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:412,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:422,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:428,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:432,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:434,1
    - Dst: l_int32_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:460,1
    - Dst: l_int8_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:461,1
    - Dst: l_load_gep1
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:462,1
    - Dst: LLVMInt8TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:462,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:464,1
    - Dst: LLVMBuildAnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:466,1
    - Dst: l_int8_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:467,1
    - Dst: LLVMBuildAnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:470,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:472,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:474,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:477,1
    - Dst: l_int8_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:478,1
    - Dst: l_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:479,1
    - Dst: LLVMInt8TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:479,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:481,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:482,1
    - Dst: l_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:483,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:485,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:491,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:492,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:493,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:495,1
    - Dst: TYPEALIGN
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:507,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:527,1
    - Dst: l_load_gep1
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:530,1
    - Dst: LLVMInt8TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:530,1
    - Dst: LLVMBuildICmp
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:532,1
    - Dst: l_int8_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:533,1
    - Dst: LLVMBuildCondBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:535,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:541,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:544,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:549,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:552,1
    - Dst: LLVMBuildAdd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:555,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:558,1
    - Dst: LLVMBuildAnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:560,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:562,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:572,1
    - Dst: TYPEALIGN
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:573,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:576,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:577,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:581,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:582,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:583,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:586,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:596,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:597,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:597,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:615,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:626,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:628,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:640,1
    - Dst: l_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:643,1
    - Dst: LLVMInt8TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:643,1
    - Dst: l_gep
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:647,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:650,1
    - Dst: l_int8_const
      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:651,1
    - Dst: LLVMIntTypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:660,1
    - Dst: LLVMPointerType
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:661,1
    - Dst: LLVMBuildPointerCast
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:664,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:665,1
    - Dst: LLVMBuildZExt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:666,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:668,1
    - Dst: LLVMBuildPtrToInt
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:676,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:680,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:686,1
    - Dst: l_call
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:690,1
    - Dst: llvm_pg_var_func_type
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:691,1
    - Dst: llvm_pg_func
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:692,1
    - Dst: l_callsite_ro
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:695,1
    - Dst: l_callsite_alwaysinline
      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: LLVMBuildAdd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:708,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:708,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:712,1
    - Dst: Assert
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:718,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:719,1
    - Dst: l_sizet_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:719,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:723,1
    - Dst: LLVMBuildAdd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:725,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:726,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:736,1
    - Dst: LLVMBuildBr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:740,1
    - Dst: LLVMPositionBuilderAtEnd
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:746,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:749,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:752,1
    - Dst: l_int16_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:752,1
    - Dst: LLVMBuildTrunc
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:753,1
    - Dst: LLVMInt32TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:753,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:754,1
    - Dst: l_load
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:755,1
    - Dst: LLVMInt16TypeInContext
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:755,1
    - Dst: LLVMBuildOr
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:756,1
    - Dst: l_int16_const
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:756,1
    - Dst: LLVMBuildStore
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:757,1
    - Dst: LLVMBuildRetVoid
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:758,1
    - Dst: LLVMDisposeBuilder
      Src: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c:761,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 232
    argCount: 4
    argNames:
    - context
    - desc
    - ops
    - natts
    argTypes:
    - LLVMJitContext*
    - TupleDesc
    - TupleTableSlotOps*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 33
    functionDepth: 3
    functionLinenumber: 33
    functionLinenumberEnd: 764
    functionName: slot_compile_deform
    functionSourceFile: /src/postgres/src/backend/jit/llvm/llvmjit_deform.c
    functionUses: 1
    functionsReached:
    - LLVMPositionBuilderAtEnd
    - LLVMBuildPtrToInt
    - lengthof
    - LLVMBuildICmp
    - LLVMBuildBr
    - llvm_pg_var_func_type
    - llvm_copy_attributes
    - l_load_struct_gep
    - LLVMBuildUnreachable
    - LLVMAppendBasicBlockInContext
    - l_ptr
    - LLVMSetParamAlignment
    - LLVMGetParam
    - LLVMBuildBitCast
    - LLVMBuildAdd
    - LLVMGetFunctionType
    - LLVMAddCase
    - LLVMCreateBuilderInContext
    - LLVMFunctionType
    - pg_unreachable
    - llvm_pg_func
    - l_struct_gep
    - l_load
    - l_load_gep1
    - l_gep
    - LLVMBuildZExt
    - LLVMBuildSwitch
    - LLVMBuildPointerCast
    - LLVMBuildRetVoid
    - l_int32_const
    - LLVMInt32TypeInContext
    - LLVMBuildAnd
    - l_callsite_alwaysinline
    - l_callsite_ro
    - LLVMDisposeBuilder
    - llvm_expand_funcname
    - LLVMBuildCondBr
    - LLVMBuildAlloca
    - palloc
    - l_bb_append_v
    - LLVMIntTypeInContext
    - TYPEALIGN
    - Assert
    - l_int16_const
    - llvm_mutable_module
    - LLVMSetLinkage
    - l_call
    - l_int8_const
    - LLVMPointerType
    - LLVMInt8TypeInContext
    - l_sizet_const
    - LLVMGetModuleContext
    - LLVMBuildTrunc
    - LLVMBuildOr
    - LLVMVoidTypeInContext
    - TupleDescCompactAttr
    - LLVMBuildStore
    - LLVMAddFunction
    - LLVMInt16TypeInContext
    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:
    - llvm::install_bad_alloc_error_handler
    - llvm::install_fatal_error_handler
    - std::set_new_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:
    - llvm::remove_bad_alloc_error_handler
    - llvm::remove_fatal_error_handler
    - std::set_new_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:
    - llvm::remove_bad_alloc_error_handler
    - llvm::remove_fatal_error_handler
    - std::set_new_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:
    - errmsg
    - errdetail
    - errcode
    - ereport
    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:
    - errmsg
    - errdetail
    - errcode
    - ereport
    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:
    - errmsg
    - errcode
    - ereport
    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:
    - sigemptyset
    - sigdelset
    - sigfillset
    linkageType: ''
    returnType: void
    signature: void pqinitmask(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/libpq/auth-scram.c:216,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/libpq/auth-scram.c:217,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/libpq/auth-scram.c:220,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/libpq/auth-scram.c:221,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - port
    - buf
    argTypes:
    - Port*
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 205
    functionDepth: 2
    functionLinenumber: 205
    functionLinenumberEnd: 222
    functionName: scram_get_mechanisms
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 0
    functionsReached:
    - appendStringInfoChar
    - appendStringInfoString
    linkageType: ''
    returnType: void
    signature: void scram_get_mechanisms(Port *port, StringInfo buf)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/libpq/auth-scram.c:245,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth-scram.c:258,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth-scram.c:262,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:265,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:266,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:267,1
    - Dst: get_password_type
      Src: /src/postgres/src/backend/libpq/auth-scram.c:274,1
    - Dst: parse_scram_secret
      Src: /src/postgres/src/backend/libpq/auth-scram.c:278,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:290,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:291,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth-scram.c:302,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth-scram.c:302,1
    - Dst: mock_scram_secret
      Src: /src/postgres/src/backend/libpq/auth-scram.c:325,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 3
    argNames:
    - port
    - selected_mech
    - shadow_pass
    argTypes:
    - Port*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 239
    functionDepth: 2
    functionLinenumber: 239
    functionLinenumberEnd: 333
    functionName: scram_init
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 0
    functionsReached:
    - errmsg
    - get_password_type
    - ereport
    - palloc0
    - parse_scram_secret
    - mock_scram_secret
    - _
    - strcmp
    - errcode
    - psprintf
    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:368,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/auth-scram.c:370,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:380,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:381,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:382,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:383,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:384,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:385,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:386,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:387,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:388,1
    - Dst: read_client_first_message
      Src: /src/postgres/src/backend/libpq/auth-scram.c:399,1
    - Dst: build_server_first_message
      Src: /src/postgres/src/backend/libpq/auth-scram.c:402,1
    - Dst: read_client_final_message
      Src: /src/postgres/src/backend/libpq/auth-scram.c:415,1
    - Dst: verify_final_nonce
      Src: /src/postgres/src/backend/libpq/auth-scram.c:417,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:418,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:419,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:420,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:421,1
    - Dst: verify_client_proof
      Src: /src/postgres/src/backend/libpq/auth-scram.c:442,1
    - Dst: build_server_final_message
      Src: /src/postgres/src/backend/libpq/auth-scram.c:449,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-scram.c:457,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:465,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/auth-scram.c:469,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/auth-scram.c:470,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: 475
      start: 351
    functionDepth: 1
    functionLinenumber: 351
    functionLinenumberEnd: 475
    functionName: scram_exchange
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - read_client_final_message
    - read_client_first_message
    - ereport
    - pstrdup
    - build_server_first_message
    - verify_client_proof
    - elog
    - memcpy
    - verify_final_nonce
    - build_server_final_message
    - errdetail
    - errcode
    - strlen
    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:496,1
    - Dst: pg_strong_random
      Src: /src/postgres/src/backend/libpq/auth-scram.c:501,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:502,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:503,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:504,1
    - Dst: scram_build_secret
      Src: /src/postgres/src/backend/libpq/auth-scram.c:506,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth-scram.c:512,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - password
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 482
    functionDepth: 5
    functionLinenumber: 482
    functionLinenumberEnd: 515
    functionName: pg_be_scram_build_secret
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - ereport
    - pg_saslprep
    - scram_build_secret
    - errcode
    - pg_strong_random
    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:540,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:546,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:547,1
    - Dst: pg_b64_dec_len
      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: palloc
      Src: /src/postgres/src/backend/libpq/auth-scram.c:552,1
    - Dst: pg_b64_decode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:553,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:553,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:557,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:558,1
    - Dst: pg_saslprep
      Src: /src/postgres/src/backend/libpq/auth-scram.c:563,1
    - Dst: scram_SaltedPassword
      Src: /src/postgres/src/backend/libpq/auth-scram.c:568,1
    - Dst: scram_ServerKey
      Src: /src/postgres/src/backend/libpq/auth-scram.c:571,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-scram.c:574,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth-scram.c:578,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/libpq/auth-scram.c:584,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - username
    - password
    - secret
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 522
    functionDepth: 5
    functionLinenumber: 522
    functionLinenumberEnd: 585
    functionName: scram_verify_plain_password
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - memcmp
    - ereport
    - pg_b64_decode
    - parse_scram_secret
    - pg_b64_dec_len
    - pg_saslprep
    - elog
    - scram_ServerKey
    - scram_SaltedPassword
    - palloc
    - strlen
    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:621,1
    - Dst: strsep
      Src: /src/postgres/src/backend/libpq/auth-scram.c:622,1
    - Dst: strsep
      Src: /src/postgres/src/backend/libpq/auth-scram.c:625,1
    - Dst: strsep
      Src: /src/postgres/src/backend/libpq/auth-scram.c:628,1
    - Dst: strsep
      Src: /src/postgres/src/backend/libpq/auth-scram.c:631,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth-scram.c:637,1
    - Dst: strtol
      Src: /src/postgres/src/backend/libpq/auth-scram.c:643,1
    - Dst: pg_b64_dec_len
      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: palloc
      Src: /src/postgres/src/backend/libpq/auth-scram.c:652,1
    - Dst: pg_b64_decode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:653,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:653,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/auth-scram.c:657,1
    - Dst: pg_b64_dec_len
      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: palloc
      Src: /src/postgres/src/backend/libpq/auth-scram.c:663,1
    - Dst: pg_b64_decode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:664,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:664,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/auth-scram.c:668,1
    - Dst: pg_b64_dec_len
      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: palloc
      Src: /src/postgres/src/backend/libpq/auth-scram.c:671,1
    - Dst: pg_b64_decode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:672,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:672,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/auth-scram.c:676,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: 683
      start: 599
    functionDepth: 2
    functionLinenumber: 599
    functionLinenumberEnd: 683
    functionName: parse_scram_secret
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 2
    functionsReached:
    - palloc
    - strsep
    - pstrdup
    - pg_b64_decode
    - pg_b64_dec_len
    - strtol
    - memcpy
    - strcmp
    - strlen
    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:717,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-scram.c:719,1
    - Dst: pg_b64_enc_len
      Src: /src/postgres/src/backend/libpq/auth-scram.c:721,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/auth-scram.c:723,1
    - Dst: pg_b64_encode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:724,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-scram.c:728,1
    - Dst: memset
      Src: /src/postgres/src/backend/libpq/auth-scram.c:735,1
    - Dst: memset
      Src: /src/postgres/src/backend/libpq/auth-scram.c:736,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: 737
      start: 696
    functionDepth: 2
    functionLinenumber: 696
    functionLinenumberEnd: 737
    functionName: mock_scram_secret
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 1
    functionsReached:
    - pg_b64_encode
    - memset
    - pg_b64_enc_len
    - scram_mock_salt
    - elog
    - 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:749,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:750,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:751,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:752,1
    - Dst: sanitize_char
      Src: /src/postgres/src/backend/libpq/auth-scram.c:753,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:757,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:758,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:759,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:760,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - input
    - attr
    argTypes:
    - char**
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 776
      start: 742
    functionDepth: 1
    functionLinenumber: 742
    functionLinenumberEnd: 776
    functionName: read_attr_value
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 2
    functionsReached:
    - errmsg
    - sanitize_char
    - ereport
    - errdetail
    - errcode
    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: 796
      start: 778
    functionDepth: 0
    functionLinenumber: 778
    functionLinenumberEnd: 796
    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:812,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/libpq/auth-scram.c:814,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 806
    functionDepth: 0
    functionLinenumber: 806
    functionLinenumberEnd: 816
    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: 846
      start: 826
    functionDepth: 0
    functionLinenumber: 826
    functionLinenumberEnd: 846
    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:862,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:863,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:864,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:865,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:875,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:876,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:877,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:878,1
    - Dst: sanitize_char
      Src: /src/postgres/src/backend/libpq/auth-scram.c:879,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:885,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:886,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:887,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:888,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 2
    argNames:
    - input
    - attr_p
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 854
    functionDepth: 1
    functionLinenumber: 854
    functionLinenumberEnd: 904
    functionName: read_any_attr
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 0
    functionsReached:
    - errmsg
    - sanitize_char
    - ereport
    - errdetail
    - errcode
    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:915,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:993,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:994,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:995,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:996,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1000,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1001,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1002,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1003,1
    - Dst: sanitize_char
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1004,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1015,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1016,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1017,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1018,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1022,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1023,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1024,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1025,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1030,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1031,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1032,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1033,1
    - Dst: sanitize_char
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1034,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1044,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1045,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1046,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1047,1
    - Dst: read_attr_value
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1049,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1055,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1056,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1057,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1058,1
    - Dst: sanitize_str
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1059,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1062,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1063,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1064,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1065,1
    - Dst: sanitize_char
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1066,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1073,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1074,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1075,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1077,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1078,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1079,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1080,1
    - Dst: sanitize_char
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1081,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1084,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1094,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1095,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1096,1
    - Dst: read_attr_value
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1103,1
    - Dst: read_attr_value
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1106,1
    - Dst: is_scram_printable
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1107,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1108,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1109,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1110,1
    - Dst: read_any_attr
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1117,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 45
    argCount: 2
    argNames:
    - state
    - input
    argTypes:
    - scram_state*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1120
      start: 912
    functionDepth: 2
    functionLinenumber: 912
    functionLinenumberEnd: 1120
    functionName: read_client_first_message
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 1
    functionsReached:
    - errmsg
    - sanitize_char
    - read_any_attr
    - is_scram_printable
    - sanitize_str
    - read_attr_value
    - ereport
    - pstrdup
    - strcmp
    - errdetail
    - errcode
    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:1129,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1130,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1131,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1135,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1137,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - state
    argTypes:
    - scram_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1141
      start: 1126
    functionDepth: 0
    functionLinenumber: 1126
    functionLinenumberEnd: 1141
    functionName: verify_final_nonce
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 1
    functionsReached:
    - memcmp
    - 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:1153,1
    - Dst: pg_hmac_init
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1162,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1163,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1165,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1166,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1167,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1169,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1170,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1171,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1173,1
    - Dst: pg_hmac_final
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1174,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1176,1
    - Dst: pg_hmac_error
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1177,1
    - Dst: pg_hmac_free
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1180,1
    - Dst: scram_H
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1187,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1189,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1191,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - scram_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1195
      start: 1148
    functionDepth: 1
    functionLinenumber: 1148
    functionLinenumberEnd: 1195
    functionName: verify_client_proof
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 1
    functionsReached:
    - pg_hmac_free
    - memcmp
    - pg_hmac_update
    - pg_hmac_error
    - pg_hmac_init
    - elog
    - scram_H
    - pg_hmac_create
    - pg_hmac_final
    - strlen
    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:1237,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1238,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1239,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1240,1
    - Dst: pg_b64_enc_len
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1242,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1244,1
    - Dst: pg_b64_encode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1245,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1248,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1249,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1250,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1254,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1258,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - state
    argTypes:
    - scram_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1259
      start: 1201
    functionDepth: 2
    functionLinenumber: 1201
    functionLinenumberEnd: 1259
    functionName: build_server_first_message
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 1
    functionsReached:
    - errmsg
    - pg_b64_encode
    - pg_b64_enc_len
    - ereport
    - pstrdup
    - psprintf
    - palloc
    - errcode
    - pg_strong_random
    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:1277,1
    - Dst: read_attr_value
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1312,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1324,1
    - Dst: be_tls_get_certificate_hash
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1327,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1332,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1334,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1336,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1337,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1338,1
    - Dst: pg_b64_enc_len
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1340,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1342,1
    - Dst: pg_b64_encode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1343,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1346,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1353,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1354,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1355,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1356,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1359,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1370,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1371,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1372,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1373,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1374,1
    - Dst: read_attr_value
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1377,1
    - Dst: read_any_attr
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1383,1
    - Dst: pg_b64_dec_len
      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: palloc
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1387,1
    - Dst: pg_b64_decode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1388,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1388,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1390,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1391,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1392,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1393,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1394,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1395,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1398,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1399,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1400,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1401,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1403,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1404,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 42
    argCount: 2
    argNames:
    - state
    - input
    argTypes:
    - scram_state*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1406
      start: 1265
    functionDepth: 2
    functionLinenumber: 1265
    functionLinenumberEnd: 1406
    functionName: read_client_final_message
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 1
    functionsReached:
    - read_any_attr
    - pg_b64_encode
    - snprintf
    - pg_b64_enc_len
    - pstrdup
    - pg_b64_dec_len
    - errdetail
    - strlen
    - pfree
    - pg_b64_decode
    - memcpy
    - strcmp
    - errmsg
    - read_attr_value
    - elog
    - be_tls_get_certificate_hash
    - palloc
    - Assert
    - ereport
    - errcode
    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:1417,1
    - Dst: pg_hmac_init
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1420,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1421,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1423,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1424,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1425,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1427,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1428,1
    - Dst: pg_hmac_update
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1429,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1431,1
    - Dst: pg_hmac_final
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1432,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1434,1
    - Dst: pg_hmac_error
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1435,1
    - Dst: pg_hmac_free
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1438,1
    - Dst: pg_b64_enc_len
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1440,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1442,1
    - Dst: pg_b64_encode
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1443,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1447,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1461,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - scram_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1462
      start: 1411
    functionDepth: 2
    functionLinenumber: 1411
    functionLinenumberEnd: 1462
    functionName: build_server_final_message
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 1
    functionsReached:
    - pg_hmac_free
    - pg_b64_encode
    - pg_b64_enc_len
    - pg_hmac_update
    - pg_hmac_error
    - pg_hmac_init
    - elog
    - psprintf
    - pg_hmac_create
    - palloc
    - pg_hmac_final
    - strlen
    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:1476,1
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1484,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1491,1
    - Dst: pg_cryptohash_create
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1493,1
    - Dst: pg_cryptohash_init
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1494,1
    - Dst: pg_cryptohash_update
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1495,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1495,1
    - Dst: pg_cryptohash_update
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1496,1
    - Dst: pg_cryptohash_final
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1497,1
    - Dst: pg_cryptohash_free
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1499,1
    - Dst: pg_cryptohash_free
      Src: /src/postgres/src/backend/libpq/auth-scram.c:1502,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: 1505
      start: 1470
    functionDepth: 2
    functionLinenumber: 1470
    functionLinenumberEnd: 1505
    functionName: scram_mock_salt
    functionSourceFile: /src/postgres/src/backend/libpq/auth-scram.c
    functionUses: 1
    functionsReached:
    - Assert
    - pg_cryptohash_create
    - pg_cryptohash_final
    - pg_cryptohash_free
    - GetMockAuthenticationNonce
    - pg_cryptohash_update
    - pg_cryptohash_init
    - StaticAssertDecl
    - strlen
    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
      Src: /src/postgres/src/backend/libpq/pqcomm.c:181,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/pqcomm.c:183,1
    - Dst: getsockname
      Src: /src/postgres/src/backend/libpq/pqcomm.c:188,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:192,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:193,1
    - Dst: setsockopt
      Src: /src/postgres/src/backend/libpq/pqcomm.c:208,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:211,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:212,1
    - Dst: setsockopt
      Src: /src/postgres/src/backend/libpq/pqcomm.c:216,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:219,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:220,1
    - Dst: getsockopt
      Src: /src/postgres/src/backend/libpq/pqcomm.c:247,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:250,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:251,1
    - Dst: setsockopt
      Src: /src/postgres/src/backend/libpq/pqcomm.c:256,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:259,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:260,1
    - Dst: pq_setkeepalivesidle
      Src: /src/postgres/src/backend/libpq/pqcomm.c:272,1
    - Dst: pq_setkeepalivesinterval
      Src: /src/postgres/src/backend/libpq/pqcomm.c:273,1
    - Dst: pq_setkeepalivescount
      Src: /src/postgres/src/backend/libpq/pqcomm.c:274,1
    - Dst: pq_settcpusertimeout
      Src: /src/postgres/src/backend/libpq/pqcomm.c:275,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/libpq/pqcomm.c:280,1
    - Dst: on_proc_exit
      Src: /src/postgres/src/backend/libpq/pqcomm.c:286,1
    - Dst: pg_set_noblock
      Src: /src/postgres/src/backend/libpq/pqcomm.c:295,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:296,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:297,1
    - Dst: fcntl
      Src: /src/postgres/src/backend/libpq/pqcomm.c:303,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/pqcomm.c:304,1
    - Dst: CreateWaitEventSet
      Src: /src/postgres/src/backend/libpq/pqcomm.c:307,1
    - Dst: AddWaitEventToSet
      Src: /src/postgres/src/backend/libpq/pqcomm.c:308,1
    - Dst: AddWaitEventToSet
      Src: /src/postgres/src/backend/libpq/pqcomm.c:310,1
    - Dst: AddWaitEventToSet
      Src: /src/postgres/src/backend/libpq/pqcomm.c:312,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/pqcomm.c:319,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/pqcomm.c:320,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 50
    argCount: 1
    argNames:
    - client_sock
    argTypes:
    - ClientSocket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 323
    functionName: pq_init
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - getsockopt
    - pq_settcpusertimeout
    - pq_setkeepalivesinterval
    - AddWaitEventToSet
    - memcpy
    - setsockopt
    - getsockname
    - errmsg
    - pg_set_noblock
    - pq_setkeepalivesidle
    - elog
    - on_proc_exit
    - Assert
    - fcntl
    - ereport
    - palloc0
    - MemoryContextAlloc
    - CreateWaitEventSet
    - pq_setkeepalivescount
    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: 338
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 338
    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:368,1
    - Dst: gss_release_cred
      Src: /src/postgres/src/backend/libpq/pqcomm.c:371,1
    - Dst: secure_close
      Src: /src/postgres/src/backend/libpq/pqcomm.c:379,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 348
    functionDepth: 1
    functionLinenumber: 348
    functionLinenumberEnd: 393
    functionName: socket_close
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - gss_delete_sec_context
    - gss_release_cred
    - secure_close
    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:442,1
    - Dst: UNIXSOCK_PATH
      Src: /src/postgres/src/backend/libpq/pqcomm.c:453,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/pqcomm.c:454,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:456,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:457,1
    - Dst: Lock_AF_UNIX
      Src: /src/postgres/src/backend/libpq/pqcomm.c:462,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/libpq/pqcomm.c:468,1
    - Dst: pg_getaddrinfo_all
      Src: /src/postgres/src/backend/libpq/pqcomm.c:472,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:476,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:477,1
    - Dst: gai_strerror
      Src: /src/postgres/src/backend/libpq/pqcomm.c:478,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:480,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:481,1
    - Dst: gai_strerror
      Src: /src/postgres/src/backend/libpq/pqcomm.c:482,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/pqcomm.c:484,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:502,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:503,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/pqcomm.c:512,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/pqcomm.c:515,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/pqcomm.c:518,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/libpq/pqcomm.c:521,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/pqcomm.c:522,1
    - Dst: pg_getnameinfo_all
      Src: /src/postgres/src/backend/libpq/pqcomm.c:533,1
    - Dst: socket
      Src: /src/postgres/src/backend/libpq/pqcomm.c:541,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:543,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/pqcomm.c:544,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:546,1
    - Dst: fcntl
      Src: /src/postgres/src/backend/libpq/pqcomm.c:553,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/pqcomm.c:554,1
    - Dst: setsockopt
      Src: /src/postgres/src/backend/libpq/pqcomm.c:569,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:572,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/pqcomm.c:573,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:575,1
    - Dst: closesocket
      Src: /src/postgres/src/backend/libpq/pqcomm.c:578,1
    - Dst: setsockopt
      Src: /src/postgres/src/backend/libpq/pqcomm.c:587,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:590,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/pqcomm.c:591,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:593,1
    - Dst: closesocket
      Src: /src/postgres/src/backend/libpq/pqcomm.c:596,1
    - Dst: bind
      Src: /src/postgres/src/backend/libpq/pqcomm.c:608,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:613,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/pqcomm.c:614,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:616,1
    - Dst: errhint
      Src: /src/postgres/src/backend/libpq/pqcomm.c:620,1
    - Dst: errhint
      Src: /src/postgres/src/backend/libpq/pqcomm.c:622,1
    - Dst: closesocket
      Src: /src/postgres/src/backend/libpq/pqcomm.c:625,1
    - Dst: Setup_AF_UNIX
      Src: /src/postgres/src/backend/libpq/pqcomm.c:631,1
    - Dst: closesocket
      Src: /src/postgres/src/backend/libpq/pqcomm.c:633,1
    - Dst: listen
      Src: /src/postgres/src/backend/libpq/pqcomm.c:645,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:648,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/pqcomm.c:649,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:651,1
    - Dst: closesocket
      Src: /src/postgres/src/backend/libpq/pqcomm.c:653,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:658,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:659,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:662,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:664,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/pqcomm.c:672,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: 678
      start: 417
    functionDepth: 2
    functionLinenumber: 417
    functionLinenumberEnd: 678
    functionName: ListenServerPort
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - listen
    - snprintf
    - gai_strerror
    - errhint
    - strlen
    - bind
    - pg_getnameinfo_all
    - UNIXSOCK_PATH
    - _
    - Setup_AF_UNIX
    - pg_freeaddrinfo_all
    - setsockopt
    - errmsg
    - elog
    - MemSet
    - socket
    - Lock_AF_UNIX
    - errcode_for_socket_access
    - pg_getaddrinfo_all
    - fcntl
    - ereport
    - closesocket
    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:699,1
    - Dst: unlink
      Src: /src/postgres/src/backend/libpq/pqcomm.c:705,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/pqcomm.c:710,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/pqcomm.c:710,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - unixSocketDir
    - unixSocketPath
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 684
    functionDepth: 1
    functionLinenumber: 684
    functionLinenumberEnd: 713
    functionName: Lock_AF_UNIX
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 1
    functionsReached:
    - unlink
    - lappend
    - CreateSocketLockFile
    - pstrdup
    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:731,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/pqcomm.c:735,1
    - Dst: strtoul
      Src: /src/postgres/src/backend/libpq/pqcomm.c:741,1
    - Dst: getgrnam
      Src: /src/postgres/src/backend/libpq/pqcomm.c:750,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:753,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:754,1
    - Dst: chown
      Src: /src/postgres/src/backend/libpq/pqcomm.c:760,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:762,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/pqcomm.c:763,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:764,1
    - Dst: chmod
      Src: /src/postgres/src/backend/libpq/pqcomm.c:771,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:773,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/pqcomm.c:774,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:775,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 1
    argNames:
    - sock_path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 719
    functionDepth: 1
    functionLinenumber: 719
    functionLinenumberEnd: 780
    functionName: Setup_AF_UNIX
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 1
    functionsReached:
    - errmsg
    - Assert
    - chown
    - strtoul
    - ereport
    - elog
    - getgrnam
    - chmod
    - 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:798,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqcomm.c:802,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/pqcomm.c:803,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqcomm.c:804,1
    - Dst: pg_usleep
      Src: /src/postgres/src/backend/libpq/pqcomm.c:813,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - server_fd
    - client_sock
    argTypes:
    - pgsocket
    - ClientSocket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 793
    functionDepth: 1
    functionLinenumber: 793
    functionLinenumberEnd: 818
    functionName: AcceptConnection
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - errcode_for_socket_access
    - errmsg
    - accept
    - pg_usleep
    - ereport
    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:837,1
    - Dst: utime
      Src: /src/postgres/src/backend/libpq/pqcomm.c:840,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 829
    functionDepth: 1
    functionLinenumber: 829
    functionLinenumberEnd: 842
    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:837,1
    - Dst: utime
      Src: /src/postgres/src/backend/libpq/pqcomm.c:840,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 835
    functionDepth: 1
    functionLinenumber: 835
    functionLinenumberEnd: 841
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 309
    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:855,1
    - Dst: unlink
      Src: /src/postgres/src/backend/libpq/pqcomm.c:858,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 847
    functionDepth: 1
    functionLinenumber: 847
    functionLinenumberEnd: 862
    functionName: RemoveSocketFiles
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 0
    functionsReached:
    - unlink
    - lfirst
    linkageType: ''
    returnType: void
    signature: void RemoveSocketFiles(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/pqcomm.c:855,1
    - Dst: unlink
      Src: /src/postgres/src/backend/libpq/pqcomm.c:858,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 853
    functionDepth: 1
    functionLinenumber: 853
    functionLinenumberEnd: 859
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/pqcomm.c
    functionUses: 309
    functionsReached:
    - unlink
    - lfirst
    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:
    - errmsg
    - errcode
    - ereport
    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:
    - errcode_for_socket_access
    - errmsg
    - ereport
    - secure_read
    - memmove
    - socket_set_nonblocking
    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:
    - pq_recvbuf
    - Assert
    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:
    - pq_recvbuf
    - Assert
    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:
    - errcode_for_socket_access
    - errmsg
    - Assert
    - ereport
    - secure_read
    - socket_set_nonblocking
    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:
    - pq_recvbuf
    - memcpy
    - Assert
    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:
    - pq_recvbuf
    - Assert
    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:
    - errmsg
    - errcode
    - ereport
    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:
    - errmsg
    - pq_getbytes
    - Assert
    - enlargeStringInfo
    - resetStringInfo
    - pq_discardbytes
    - PG_RE_THROW
    - PG_TRY
    - PG_END_TRY
    - pg_ntoh32
    - PG_CATCH
    - ereport
    - errcode
    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
    - internal_flush_buffer
    - 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:
    - errcode_for_socket_access
    - secure_write
    - 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
    - internal_putbytes
    - pg_hton32
    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:
    - repalloc
    - Assert
    - pq_putmessage
    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:
    - WSAIoctl
    - WSAGetLastError
    - ereport
    - errmsg
    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:
    - errmsg
    - getsockopt
    - ereport
    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:
    - errmsg
    - ereport
    - pq_setkeepaliveswin32
    - pq_getkeepalivesidle
    - setsockopt
    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:
    - errmsg
    - getsockopt
    - ereport
    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:
    - errmsg
    - ereport
    - pq_setkeepaliveswin32
    - pq_getkeepalivesinterval
    - setsockopt
    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:
    - errmsg
    - getsockopt
    - ereport
    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:
    - errmsg
    - pq_getkeepalivescount
    - ereport
    - setsockopt
    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:
    - errmsg
    - getsockopt
    - ereport
    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:
    - errmsg
    - pq_gettcpusertimeout
    - ereport
    - setsockopt
    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:
    - ResetLatch
    - WaitEventSetWait
    - lengthof
    - ModifyWaitEvent
    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:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - seg
    - mqh
    argTypes:
    - dsm_segment*
    - shm_mq_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 60
    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: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - seg
    - arg
    argTypes:
    - dsm_segment*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 71
    functionName: pq_cleanup_redirect_to_shm_mq
    functionSourceFile: /src/postgres/src/backend/libpq/pqmq.c
    functionUses: 0
    functionsReached: []
    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:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - pid
    - procNumber
    argTypes:
    - pid_t
    - ProcNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 83
    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: 89
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 89
    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: 96
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 96
    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: 103
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 103
    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: 110
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 110
    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: 8
    BranchProfiles: []
    Callsites:
    - Dst: shm_mq_detach
      Src: /src/postgres/src/backend/libpq/pqmq.c:134,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/pqmq.c:155,1
    - Dst: shm_mq_sendv
      Src: /src/postgres/src/backend/libpq/pqmq.c:164,1
    - Dst: IsLogicalParallelApplyWorker
      Src: /src/postgres/src/backend/libpq/pqmq.c:168,1
    - Dst: SendProcSignal
      Src: /src/postgres/src/backend/libpq/pqmq.c:169,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/pqmq.c:174,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/libpq/pqmq.c:174,1
    - Dst: SendProcSignal
      Src: /src/postgres/src/backend/libpq/pqmq.c:175,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/libpq/pqmq.c:184,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/libpq/pqmq.c:186,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/libpq/pqmq.c:187,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/pqmq.c:192,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 3
    argNames:
    - msgtype
    - s
    - len
    argTypes:
    - char
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 196
    functionName: mq_putmessage
    functionSourceFile: /src/postgres/src/backend/libpq/pqmq.c
    functionUses: 0
    functionsReached:
    - ResetLatch
    - Assert
    - CHECK_FOR_INTERRUPTS
    - IsLogicalParallelApplyWorker
    - IsParallelWorker
    - SendProcSignal
    - shm_mq_detach
    - WaitLatch
    - shm_mq_sendv
    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:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - msgtype
    - s
    - len
    argTypes:
    - char
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 209
    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:219,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/libpq/pqmq.c:226,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/libpq/pqmq.c:231,1
    - Dst: pq_getmsgrawstring
      Src: /src/postgres/src/backend/libpq/pqmq.c:234,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/pqmq.c:242,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/pqmq.c:251,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/pqmq.c:259,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/pqmq.c:261,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/pqmq.c:263,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/pqmq.c:265,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/pqmq.c:267,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/pqmq.c:269,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/pqmq.c:272,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/pqmq.c:275,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/pqmq.c:276,1
    - Dst: MAKE_SQLSTATE
      Src: /src/postgres/src/backend/libpq/pqmq.c:277,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/pqmq.c:281,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/pqmq.c:284,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/pqmq.c:287,1
    - Dst: pg_strtoint32
      Src: /src/postgres/src/backend/libpq/pqmq.c:290,1
    - Dst: pg_strtoint32
      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: pstrdup
      Src: /src/postgres/src/backend/libpq/pqmq.c:302,1
    - Dst: pstrdup
      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: pg_strtoint32
      Src: /src/postgres/src/backend/libpq/pqmq.c:320,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/pqmq.c:323,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/pqmq.c:326,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 89
    argCount: 2
    argNames:
    - msg
    - edata
    argTypes:
    - StringInfo
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 330
    functionName: pq_parse_errornotice
    functionSourceFile: /src/postgres/src/backend/libpq/pqmq.c
    functionUses: 1
    functionsReached:
    - pq_getmsgbyte
    - pq_getmsgend
    - pq_getmsgrawstring
    - MAKE_SQLSTATE
    - pstrdup
    - elog
    - MemSet
    - pg_strtoint32
    - strcmp
    - strlen
    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:
    - appendBinaryStringInfoNT
    - pfree
    - pg_server_to_client
    - pq_sendint32
    - strlen
    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:
    - pg_server_to_client
    - pfree
    - strlen
    - appendBinaryStringInfo
    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:
    - pg_server_to_client
    - appendBinaryStringInfoNT
    - strlen
    - pfree
    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:
    - appendStringInfoChar
    - IS_HIGHBIT_SET
    - appendStringInfoCharMacro
    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:317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buf
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 318
    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:328,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
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/libpq/pqformat.c:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - buf
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 325
    functionDepth: 3
    functionLinenumber: 325
    functionLinenumberEnd: 334
    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:351,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/libpq/pqformat.c:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - buf
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 345
    functionDepth: 1
    functionLinenumber: 345
    functionLinenumberEnd: 355
    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:369,1
    - Dst: pg_server_to_client
      Src: /src/postgres/src/backend/libpq/pqformat.c:372,1
    - Dst: pq_putmessage
      Src: /src/postgres/src/backend/libpq/pqformat.c:375,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/pqformat.c:375,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/pqformat.c:376,1
    - Dst: pq_putmessage
      Src: /src/postgres/src/backend/libpq/pqformat.c:379,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - msgtype
    - str
    argTypes:
    - char
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 366
    functionDepth: 1
    functionLinenumber: 366
    functionLinenumberEnd: 380
    functionName: pq_puttextmessage
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 2
    functionsReached:
    - pg_server_to_client
    - pq_putmessage
    - strlen
    - pfree
    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:390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - msgtype
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 391
    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:402,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/pqformat.c:403,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqformat.c:404,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - msg
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 398
    functionDepth: 1
    functionLinenumber: 398
    functionLinenumberEnd: 406
    functionName: pq_getmsgbyte
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 2
    functionsReached:
    - errmsg
    - errcode
    - ereport
    linkageType: ''
    returnType: int
    signature: int pq_getmsgbyte(StringInfo msg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pq_copymsgbytes
      Src: /src/postgres/src/backend/libpq/pqformat.c:425,1
    - Dst: pq_copymsgbytes
      Src: /src/postgres/src/backend/libpq/pqformat.c:429,1
    - Dst: pg_ntoh16
      Src: /src/postgres/src/backend/libpq/pqformat.c:430,1
    - Dst: pq_copymsgbytes
      Src: /src/postgres/src/backend/libpq/pqformat.c:433,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/backend/libpq/pqformat.c:434,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/pqformat.c:437,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - msg
    - b
    argTypes:
    - StringInfo
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 414
    functionDepth: 1
    functionLinenumber: 414
    functionLinenumberEnd: 442
    functionName: pq_getmsgint
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 1
    functionsReached:
    - pg_ntoh16
    - elog
    - pg_ntoh32
    - pq_copymsgbytes
    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:457,1
    - Dst: pg_ntoh64
      Src: /src/postgres/src/backend/libpq/pqformat.c:459,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - msg
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 452
    functionDepth: 1
    functionLinenumber: 452
    functionLinenumberEnd: 460
    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:477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - msg
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 468
    functionDepth: 2
    functionLinenumber: 468
    functionLinenumberEnd: 479
    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:496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - msg
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 487
    functionDepth: 2
    functionLinenumber: 487
    functionLinenumberEnd: 498
    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:512,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqformat.c:513,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/pqformat.c:514,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqformat.c:515,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - msg
    - datalen
    argTypes:
    - StringInfo
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 507
    functionDepth: 1
    functionLinenumber: 507
    functionLinenumberEnd: 519
    functionName: pq_getmsgbytes
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - errcode
    - datalen < 0 || datalen >
    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:530,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqformat.c:531,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/pqformat.c:532,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqformat.c:533,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/pqformat.c:534,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - msg
    - buf
    - datalen
    argTypes:
    - StringInfo
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 527
    functionDepth: 1
    functionLinenumber: 527
    functionLinenumberEnd: 536
    functionName: pq_copymsgbytes
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 2
    functionsReached:
    - errmsg
    - ereport
    - datalen < 0 || datalen >
    - memcpy
    - errcode
    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:551,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqformat.c:552,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/pqformat.c:553,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqformat.c:554,1
    - Dst: pg_client_to_server
      Src: /src/postgres/src/backend/libpq/pqformat.c:558,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/pqformat.c:560,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/pqformat.c:563,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/pqformat.c:564,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - msg
    - rawbytes
    - nbytes
    argTypes:
    - StringInfo
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 545
    functionDepth: 1
    functionLinenumber: 545
    functionLinenumberEnd: 569
    functionName: pq_getmsgtext
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pg_client_to_server
    - ereport
    - rawbytes < 0 || rawbytes >
    - memcpy
    - palloc
    - errcode
    - strlen
    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:591,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqformat.c:593,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/pqformat.c:594,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqformat.c:595,1
    - Dst: pg_client_to_server
      Src: /src/postgres/src/backend/libpq/pqformat.c:598,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - msg
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 578
    functionDepth: 1
    functionLinenumber: 578
    functionLinenumberEnd: 599
    functionName: pq_getmsgstring
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pg_client_to_server
    - ereport
    - errcode
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      pq_getmsgstring(StringInfo msg)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/pqformat.c:620,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqformat.c:622,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/pqformat.c:623,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqformat.c:624,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - msg
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 607
    functionDepth: 1
    functionLinenumber: 607
    functionLinenumberEnd: 628
    functionName: pq_getmsgrawstring
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 2
    functionsReached:
    - errmsg
    - ereport
    - errcode
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      pq_getmsgrawstring(StringInfo msg)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/pqformat.c:638,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/pqformat.c:639,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/pqformat.c:640,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - msg
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 634
    functionDepth: 1
    functionLinenumber: 634
    functionLinenumberEnd: 641
    functionName: pq_getmsgend
    functionSourceFile: /src/postgres/src/backend/libpq/pqformat.c
    functionUses: 2
    functionsReached:
    - errmsg
    - errcode
    - ereport
    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_INET6
    - range_sockaddr_AF_INET
    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:
    - memset
    - memcpy
    - strtol
    - pg_hton32
    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
    - WSAIoctl
    - WSAGetLastError
    - run_ifaddr_callback
    - WSASocket
    - closesocket
    - free
    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:
    - freeifaddrs
    - getifaddrs
    - run_ifaddr_callback
    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
    - ioctl
    - memset
    - close
    - run_ifaddr_callback
    - socket
    - memcpy
    - _SIZEOF_ADDR_IFREQ
    - free
    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:
    - memset
    - pg_ntoh32
    - pg_sockaddr_cidr_mask
    - run_ifaddr_callback
    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:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - isServerStart
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 82
    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:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 93
    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: 106
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 106
    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:119,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/be-secure.c:122,1
    - Dst: pq_startmsgread
      Src: /src/postgres/src/backend/libpq/be-secure.c:124,1
    - Dst: pq_getbytes
      Src: /src/postgres/src/backend/libpq/be-secure.c:125,1
    - Dst: pq_endmsgread
      Src: /src/postgres/src/backend/libpq/be-secure.c:127,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure.c:132,1
    - Dst: pq_buffer_remaining_data
      Src: /src/postgres/src/backend/libpq/be-secure.c:132,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/libpq/be-secure.c:134,1
    - Dst: be_tls_open_server
      Src: /src/postgres/src/backend/libpq/be-secure.c:136,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/be-secure.c:144,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure.c:149,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure.c:153,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/be-secure.c:154,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 111
    functionDepth: 4
    functionLinenumber: 111
    functionLinenumberEnd: 161
    functionName: secure_open_server
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure.c
    functionUses: 0
    functionsReached:
    - pq_getbytes
    - Assert
    - pfree
    - pq_endmsgread
    - ereport
    - errmsg_internal
    - pq_startmsgread
    - elog
    - INJECTION_POINT
    - palloc
    - be_tls_open_server
    - pq_buffer_remaining_data
    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:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 173
    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:185,1
    - Dst: be_tls_read
      Src: /src/postgres/src/backend/libpq/be-secure.c:192,1
    - Dst: be_gssapi_read
      Src: /src/postgres/src/backend/libpq/be-secure.c:199,1
    - Dst: secure_raw_read
      Src: /src/postgres/src/backend/libpq/be-secure.c:205,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure.c:214,1
    - Dst: ModifyWaitEvent
      Src: /src/postgres/src/backend/libpq/be-secure.c:216,1
    - Dst: WaitEventSetWait
      Src: /src/postgres/src/backend/libpq/be-secure.c:218,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure.c:239,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure.c:240,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure.c:241,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/libpq/be-secure.c:246,1
    - Dst: ProcessClientReadInterrupt
      Src: /src/postgres/src/backend/libpq/be-secure.c:247,1
    - Dst: ProcessClientReadInterrupt
      Src: /src/postgres/src/backend/libpq/be-secure.c:262,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 3
    argNames:
    - port
    - ptr
    - len
    argTypes:
    - Port*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 265
    functionName: secure_read
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure.c
    functionUses: 3
    functionsReached:
    - errmsg
    - ResetLatch
    - Assert
    - secure_raw_read
    - ModifyWaitEvent
    - be_tls_read
    - WaitEventSetWait
    - ereport
    - ProcessClientReadInterrupt
    - be_gssapi_read
    - errcode
    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:278,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/be-secure.c:279,1
    - Dst: recv
      Src: /src/postgres/src/backend/libpq/be-secure.c:292,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - port
    - ptr
    - len
    argTypes:
    - Port*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 298
    functionName: secure_raw_read
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure.c
    functionUses: 5
    functionsReached:
    - recv
    - memcpy
    - Assert
    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:311,1
    - Dst: be_tls_write
      Src: /src/postgres/src/backend/libpq/be-secure.c:318,1
    - Dst: be_gssapi_write
      Src: /src/postgres/src/backend/libpq/be-secure.c:325,1
    - Dst: secure_raw_write
      Src: /src/postgres/src/backend/libpq/be-secure.c:331,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure.c:339,1
    - Dst: ModifyWaitEvent
      Src: /src/postgres/src/backend/libpq/be-secure.c:341,1
    - Dst: WaitEventSetWait
      Src: /src/postgres/src/backend/libpq/be-secure.c:343,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure.c:348,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure.c:349,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure.c:350,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/libpq/be-secure.c:355,1
    - Dst: ProcessClientWriteInterrupt
      Src: /src/postgres/src/backend/libpq/be-secure.c:356,1
    - Dst: ProcessClientWriteInterrupt
      Src: /src/postgres/src/backend/libpq/be-secure.c:371,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 3
    argNames:
    - port
    - ptr
    - len
    argTypes:
    - Port*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 304
    functionDepth: 1
    functionLinenumber: 304
    functionLinenumberEnd: 374
    functionName: secure_write
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure.c
    functionUses: 2
    functionsReached:
    - errmsg
    - ResetLatch
    - Assert
    - ModifyWaitEvent
    - secure_raw_write
    - WaitEventSetWait
    - ereport
    - be_gssapi_write
    - be_tls_write
    - ProcessClientWriteInterrupt
    - errcode
    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:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - port
    - ptr
    - len
    argTypes:
    - Port*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 376
    functionDepth: 1
    functionLinenumber: 376
    functionLinenumberEnd: 390
    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:48,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:49,1
    - Dst: replace_percent_placeholders
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:52,1
    - Dst: OpenPipeStream
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:54,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:57,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:58,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:59,1
    - Dst: fgets
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:64,1
    - Dst: ferror
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:66,1
    - Dst: explicit_bzero
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:68,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:69,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:70,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:71,1
    - Dst: ClosePipeStream
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:77,1
    - Dst: explicit_bzero
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:80,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:81,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:82,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:83,1
    - Dst: explicit_bzero
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:90,1
    - Dst: wait_result_to_str
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:91,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:92,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:93,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:94,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:96,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:97,1
    - Dst: pg_strip_crlf
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:102,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:105,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 4
    argNames:
    - prompt
    - is_server_start
    - buf
    - size
    argTypes:
    - char*
    - bool
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 39
    functionDepth: 4
    functionLinenumber: 39
    functionLinenumberEnd: 107
    functionName: run_ssl_passphrase_command
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-common.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - Assert
    - replace_percent_placeholders
    - wait_result_to_str
    - errdetail_internal
    - ClosePipeStream
    - ferror
    - ereport
    - OpenPipeStream
    - explicit_bzero
    - pg_strip_crlf
    - fgets
    - errcode_for_file_access
    linkageType: ''
    returnType: int
    signature: int run_ssl_passphrase_command(const char *prompt, bool is_server_start,
      char *buf, int size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:119,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:121,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:122,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:123,1
    - Dst: S_ISREG
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:129,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:131,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:132,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:133,1
    - Dst: geteuid
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:155,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:157,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:158,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:159,1
    - Dst: geteuid
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:164,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:167,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:168,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:169,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/be-secure-common.c:171,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 2
    argNames:
    - ssl_key_file
    - isServerStart
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 177
    functionName: check_ssl_key_file_permissions
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-common.c
    functionUses: 0
    functionsReached:
    - errmsg
    - S_ISREG
    - stat
    - ereport
    - errdetail
    - errcode
    - geteuid
    - errcode_for_file_access
    linkageType: ''
    returnType: bool
    signature: bool check_ssl_key_file_permissions(const char *ssl_key_file, bool
      isServerStart)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_new
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:114,1
    - Dst: SSLv23_method
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:114,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:117,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:118,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:119,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:119,1
    - Dst: SSL_CTX_set_mode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:127,1
    - Dst: SSL_CTX_use_certificate_chain_file
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:140,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:142,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:143,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:144,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:145,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:145,1
    - Dst: check_ssl_key_file_permissions
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:149,1
    - Dst: SSL_CTX_use_PrivateKey_file
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:157,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:162,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:163,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:164,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:167,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:168,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:169,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:170,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:170,1
    - Dst: SSL_CTX_check_private_key
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:174,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:176,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:177,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:178,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:179,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:179,1
    - Dst: ssl_protocol_version_to_openssl
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:185,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:189,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:191,1
    - Dst: GetConfigOption
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:193,1
    - Dst: SSL_CTX_set_min_proto_version
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:198,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:200,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:201,1
    - Dst: ssl_protocol_version_to_openssl
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:208,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:212,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:214,1
    - Dst: GetConfigOption
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:216,1
    - Dst: SSL_CTX_set_max_proto_version
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:221,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:223,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:224,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:239,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:240,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:241,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:242,1
    - Dst: SSL_CTX_set_num_tickets
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:259,1
    - Dst: SSL_CTX_set_options
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:261,1
    - Dst: SSL_CTX_set_session_cache_mode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:264,1
    - Dst: SSL_CTX_set_options
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:267,1
    - Dst: SSL_CTX_set_options
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:278,1
    - Dst: SSL_CTX_set_options
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:281,1
    - Dst: initialize_dh
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:285,1
    - Dst: initialize_ecdh
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:287,1
    - Dst: SSL_CTX_set_cipher_list
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:291,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:293,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:294,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:295,1
    - Dst: SSL_CTX_set_ciphersuites
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:306,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:308,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:309,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:310,1
    - Dst: SSL_CTX_set_options
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:317,1
    - Dst: STACK_OF
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:324,1
    - Dst: SSL_CTX_load_verify_locations
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:326,1
    - Dst: SSL_load_client_CA_file
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:327,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:329,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:330,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:331,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:332,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:332,1
    - Dst: SSL_CTX_set_client_CA_list
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:343,1
    - Dst: SSL_CTX_set_verify
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:350,1
    - Dst: SSL_CTX_get_cert_store
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:363,1
    - Dst: X509_STORE_load_locations
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:368,1
    - Dst: X509_STORE_set_flags
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:373,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:378,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:379,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:380,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:381,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:381,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:386,1
    - Dst: errcode
      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: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:394,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:395,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:396,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:398,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:398,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:408,1
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:425,1
    CyclomaticComplexity: 51
    EdgeCount: 51
    ICount: 133
    argCount: 1
    argNames:
    - isServerStart
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 427
    functionName: be_tls_init
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 1
    functionsReached:
    - SSL_CTX_use_certificate_chain_file
    - SSL_CTX_set_session_cache_mode
    - SSL_CTX_load_verify_locations
    - SSL_CTX_set_num_tickets
    - ERR_get_error
    - SSL_CTX_check_private_key
    - errdetail
    - GetConfigOption
    - SSLv23_method
    - X509_STORE_set_flags
    - SSLerrmessage
    - initialize_ecdh
    - SSL_CTX_set_client_CA_list
    - SSL_CTX_set_options
    - SSL_CTX_new
    - errmsg
    - SSL_load_client_CA_file
    - check_ssl_key_file_permissions
    - ssl_protocol_version_to_openssl
    - SSL_CTX_set_verify
    - SSL_CTX_set_ciphersuites
    - initialize_dh
    - X509_STORE_load_locations
    - SSL_CTX_get_cert_store
    - SSL_CTX_free
    - STACK_OF
    - ereport
    - SSL_CTX_set_max_proto_version
    - SSL_CTX_set_cipher_list
    - SSL_CTX_use_PrivateKey_file
    - SSL_CTX_set_min_proto_version
    - SSL_CTX_set_mode
    - errcode
    linkageType: ''
    returnType: int
    signature: int be_tls_init(bool isServerStart)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:433,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 429
    functionDepth: 0
    functionLinenumber: 429
    functionLinenumberEnd: 436
    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: 37
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:447,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:448,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:452,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:453,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:454,1
    - Dst: SSL_CTX_set_info_callback
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:459,1
    - Dst: SSL_CTX_set_alpn_select_cb
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:462,1
    - Dst: SSL_new
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:464,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:466,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:467,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:468,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:469,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:469,1
    - Dst: ssl_set_port_bio
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:472,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:474,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:475,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:476,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:477,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:477,1
    - Dst: ERR_clear_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:493,1
    - Dst: SSL_accept
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:494,1
    - Dst: SSL_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:497,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:507,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:513,1
    - Dst: WaitLatchOrSocket
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:525,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:530,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:531,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:532,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:534,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:535,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:536,1
    - Dst: ERR_GET_REASON
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:539,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:575,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:576,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:577,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:578,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:579,1
    - Dst: errhint
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:581,1
    - Dst: ssl_protocol_version_to_string
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:583,1
    - Dst: ssl_protocol_version_to_string
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:586,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:591,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:592,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:593,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:596,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:597,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:598,1
    - Dst: SSL_get0_alpn_selected
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:611,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:616,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:617,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:617,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:624,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:625,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:626,1
    - Dst: SSL_get_peer_certificate
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:632,1
    - Dst: X509_get_subject_name
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:641,1
    - Dst: X509_NAME_get_text_by_NID
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:646,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:651,1
    - Dst: X509_NAME_get_text_by_NID
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:652,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:658,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:666,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:668,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:669,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:670,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:671,1
    - Dst: BIO_new
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:678,1
    - Dst: BIO_s_mem
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:678,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:683,1
    - Dst: X509_NAME_print_ex
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:696,1
    - Dst: BIO_get_mem_ptr
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:697,1
    - Dst: BIO_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:699,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:702,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:707,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:708,1
    - Dst: BIO_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:710,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:712,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:714,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:715,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:716,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:717,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:720,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 137
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 438
    functionDepth: 1
    functionLinenumber: 438
    functionLinenumberEnd: 732
    functionName: be_tls_open_server
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 1
    functionsReached:
    - BIO_new
    - BIO_get_mem_ptr
    - ERR_clear_error
    - X509_NAME_print_ex
    - errhint
    - ERR_get_error
    - ssl_set_port_bio
    - SSL_CTX_set_info_callback
    - strlen
    - pfree
    - SSL_accept
    - SSL_get_peer_certificate
    - SSLerrmessage
    - errdetail_internal
    - memcmp
    - BIO_free
    - ERR_GET_REASON
    - memcpy
    - ssl_protocol_version_to_string
    - errmsg
    - SSL_get0_alpn_selected
    - X509_NAME_get_text_by_NID
    - SSL_get_error
    - X509_get_subject_name
    - errcode_for_socket_access
    - Assert
    - SSL_new
    - ereport
    - BIO_s_mem
    - WaitLatchOrSocket
    - MemoryContextAlloc
    - errcode
    - SSL_CTX_set_alpn_select_cb
    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:739,1
    - Dst: SSL_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:740,1
    - Dst: X509_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:747,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:753,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:759,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 734
    functionDepth: 0
    functionLinenumber: 734
    functionLinenumberEnd: 762
    functionName: be_tls_close
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 1
    functionsReached:
    - X509_free
    - SSL_free
    - SSL_shutdown
    - pfree
    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:772,1
    - Dst: SSL_read
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:773,1
    - Dst: SSL_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:774,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:775,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:800,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:801,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:802,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:802,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:811,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:812,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:813,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: 821
      start: 764
    functionDepth: 1
    functionLinenumber: 764
    functionLinenumberEnd: 821
    functionName: be_tls_read
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 1
    functionsReached:
    - errmsg
    - SSLerrmessage
    - ereport
    - ERR_clear_error
    - SSL_get_error
    - ERR_get_error
    - errcode
    - SSL_read
    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:831,1
    - Dst: SSL_write
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:832,1
    - Dst: SSL_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:833,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:834,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:865,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:866,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:867,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:867,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:881,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:882,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:883,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: 891
      start: 823
    functionDepth: 1
    functionLinenumber: 823
    functionLinenumberEnd: 891
    functionName: be_tls_write
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 1
    functionsReached:
    - errmsg
    - SSLerrmessage
    - SSL_write
    - ereport
    - ERR_clear_error
    - SSL_get_error
    - ERR_get_error
    - errcode
    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:915,1
    - Dst: secure_raw_read
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:919,1
    - Dst: BIO_clear_retry_flags
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:920,1
    - Dst: BIO_set_retry_read
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:927,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - h
    - buf
    - size
    argTypes:
    - BIO*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 911
    functionDepth: 2
    functionLinenumber: 911
    functionLinenumberEnd: 933
    functionName: port_bio_read
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - BIO_set_retry_read
    - BIO_get_data
    - BIO_clear_retry_flags
    - 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:940,1
    - Dst: BIO_get_data
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:940,1
    - Dst: BIO_clear_retry_flags
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:941,1
    - Dst: BIO_set_retry_write
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:947,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - h
    - buf
    - size
    argTypes:
    - BIO*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 935
    functionDepth: 2
    functionLinenumber: 935
    functionLinenumberEnd: 952
    functionName: port_bio_write
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - BIO_get_data
    - secure_raw_write
    - BIO_clear_retry_flags
    - BIO_set_retry_write
    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:958,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 4
    argNames:
    - h
    - cmd
    - num
    - ptr
    argTypes:
    - BIO*
    - int
    - long
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 954
    functionDepth: 0
    functionLinenumber: 954
    functionLinenumberEnd: 982
    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:991,1
    - Dst: BIO_meth_new
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:995,1
    - Dst: BIO_meth_set_write
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:998,1
    - Dst: BIO_meth_set_read
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:999,1
    - Dst: BIO_meth_set_ctrl
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1000,1
    - Dst: BIO_meth_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1002,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1008
      start: 984
    functionDepth: 0
    functionLinenumber: 984
    functionLinenumberEnd: 1008
    functionName: port_bio_method
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - BIO_meth_set_ctrl
    - BIO_get_new_index
    - BIO_meth_set_write
    - BIO_meth_free
    - BIO_meth_new
    - BIO_meth_set_read
    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:1016,1
    - Dst: BIO_new
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1020,1
    - Dst: BIO_set_data
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1024,1
    - Dst: BIO_set_init
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1025,1
    - Dst: SSL_set_bio
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1027,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1029
      start: 1010
    functionDepth: 1
    functionLinenumber: 1010
    functionLinenumberEnd: 1029
    functionName: ssl_set_port_bio
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 1
    functionsReached:
    - SSL_set_bio
    - BIO_new
    - BIO_set_init
    - BIO_set_data
    - port_bio_method
    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:1046,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1048,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1049,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1050,1
    - Dst: PEM_read_DHparams
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1055,1
    - Dst: FreeFile
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1056,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1060,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1061,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1062,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1063,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1063,1
    - Dst: DH_check
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1068,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1070,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1071,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1072,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1073,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1073,1
    - Dst: DH_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1074,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1079,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1080,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1081,1
    - Dst: DH_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1082,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1088,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1089,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1090,1
    - Dst: DH_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1091,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - filename
    - isServerStart
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 1038
    functionDepth: 1
    functionLinenumber: 1038
    functionLinenumberEnd: 1096
    functionName: load_dh_file
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - FreeFile
    - SSLerrmessage
    - ereport
    - ERR_get_error
    - DH_check
    - PEM_read_DHparams
    - DH_free
    - AllocateFile
    - 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:1111,1
    - Dst: PEM_read_bio_DHparams
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1114,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1116,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1117,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1118,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1118,1
    - Dst: BIO_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - buffer
    - len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1122
      start: 1105
    functionDepth: 1
    functionLinenumber: 1105
    functionLinenumberEnd: 1122
    functionName: load_dh_buffer
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - SSLerrmessage
    - errmsg_internal
    - ereport
    - BIO_free
    - ERR_get_error
    - PEM_read_bio_DHparams
    - BIO_new_mem_buf
    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:1133,1
    - Dst: run_ssl_passphrase_command
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - buf
    - size
    - rwflag
    - userdata
    argTypes:
    - char*
    - int
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1136
      start: 1127
    functionDepth: 5
    functionLinenumber: 1127
    functionLinenumberEnd: 1136
    functionName: ssl_external_passwd_cb
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - run_ssl_passphrase_command
    - Assert
    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:1153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - buf
    - size
    - rwflag
    - userdata
    argTypes:
    - char*
    - int
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1156
      start: 1147
    functionDepth: 1
    functionLinenumber: 1147
    functionLinenumberEnd: 1156
    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:1167,1
    - Dst: pg_clean_ascii
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1191,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1192
      start: 1164
    functionDepth: 2
    functionLinenumber: 1164
    functionLinenumberEnd: 1192
    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:1220,1
    - Dst: X509_STORE_CTX_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1221,1
    - Dst: X509_verify_cert_error_string
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1222,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1224,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1225,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1226,1
    - Dst: X509_STORE_CTX_get_current_cert
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1229,1
    - Dst: X509_NAME_to_cstring
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1245,1
    - Dst: X509_get_subject_name
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1245,1
    - Dst: prepare_cert_name
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1246,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1247,1
    - Dst: X509_NAME_to_cstring
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1249,1
    - Dst: X509_get_issuer_name
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1249,1
    - Dst: prepare_cert_name
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1250,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1251,1
    - Dst: X509_get_serialNumber
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1257,1
    - Dst: ASN1_INTEGER_to_BN
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1258,1
    - Dst: BN_bn2dec
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1259,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1261,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1262,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1263,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1264,1
    - Dst: BN_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1267,1
    - Dst: OPENSSL_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1268,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1269,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1270,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 2
    argNames:
    - ok
    - ctx
    argTypes:
    - int
    - X509_STORE_CTX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1277
      start: 1204
    functionDepth: 3
    functionLinenumber: 1204
    functionLinenumberEnd: 1277
    functionName: verify_cb
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - pfree
    - X509_NAME_to_cstring
    - ASN1_INTEGER_to_BN
    - X509_verify_cert_error_string
    - appendStringInfo
    - appendStringInfoChar
    - OPENSSL_free
    - BN_free
    - X509_STORE_CTX_get_error_depth
    - BN_bn2dec
    - X509_get_issuer_name
    - _
    - X509_get_serialNumber
    - initStringInfo
    - X509_STORE_CTX_get_current_cert
    - X509_get_subject_name
    - prepare_cert_name
    - X509_STORE_CTX_get_error
    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:1288,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1293,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1294,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1297,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1298,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1301,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1302,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1305,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1306,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1309,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1310,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1313,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1314,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1317,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1318,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1321,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1322,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 3
    argNames:
    - ssl
    - type
    - args
    argTypes:
    - SSL*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1325
      start: 1283
    functionDepth: 1
    functionLinenumber: 1283
    functionLinenumberEnd: 1325
    functionName: info_cb
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - SSL_state_string_long
    - errmsg_internal
    - ereport
    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:1349,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1350,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1351,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1352,1
    - Dst: SSL_select_next_proto
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1354,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: 1370
      start: 1334
    functionDepth: 1
    functionLinenumber: 1334
    functionLinenumberEnd: 1370
    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: 5
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_set_options
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1391,1
    - Dst: load_dh_file
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1394,1
    - Dst: load_dh_buffer
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1396,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1399,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1400,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1401,1
    - Dst: SSL_CTX_set_tmp_dh
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1405,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1407,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1408,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1409,1
    - Dst: SSLerrmessage
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1410,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1410,1
    - Dst: DH_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1411,1
    - Dst: DH_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1415,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - context
    - isServerStart
    argTypes:
    - SSL_CTX*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1417
      start: 1386
    functionDepth: 2
    functionLinenumber: 1386
    functionLinenumberEnd: 1417
    functionName: initialize_dh
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 1
    functionsReached:
    - errmsg
    - SSLerrmessage
    - DH_free
    - ereport
    - load_dh_buffer
    - ERR_get_error
    - SSL_CTX_set_options
    - load_dh_file
    - errcode
    - SSL_CTX_set_tmp_dh
    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:1428,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1437,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1438,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1439,1
    - Dst: SSLerrmessageExt
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1440,1
    - Dst: ERR_get_error
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1440,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1441,1
    - Dst: errhint
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1442,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - context
    - isServerStart
    argTypes:
    - SSL_CTX*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1448
      start: 1424
    functionDepth: 1
    functionLinenumber: 1424
    functionLinenumberEnd: 1448
    functionName: initialize_ecdh
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 1
    functionsReached:
    - errmsg
    - SSL_CTX_set1_groups_list
    - ereport
    - errhint
    - ERR_get_error
    - _
    - errcode
    - SSLerrmessageExt
    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:1469,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ecode
    - replacement
    argTypes:
    - unsigned long
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1470
      start: 1463
    functionDepth: 0
    functionLinenumber: 1463
    functionLinenumberEnd: 1470
    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:1488,1
    - Dst: ERR_reason_error_string
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1489,1
    - Dst: ERR_SYSTEM_ERROR
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1501,1
    - Dst: strerror
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1502,1
    - Dst: ERR_GET_REASON
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1502,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1506,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1506,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ecode
    argTypes:
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1508
      start: 1481
    functionDepth: 0
    functionLinenumber: 1481
    functionLinenumberEnd: 1508
    functionName: SSLerrmessage
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 18
    functionsReached:
    - snprintf
    - ERR_reason_error_string
    - ERR_SYSTEM_ERROR
    - strerror
    - ERR_GET_REASON
    - _
    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:1517,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1522
      start: 1510
    functionDepth: 0
    functionLinenumber: 1510
    functionLinenumberEnd: 1522
    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:1528,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1531
      start: 1524
    functionDepth: 0
    functionLinenumber: 1524
    functionLinenumberEnd: 1531
    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:1537,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1540
      start: 1533
    functionDepth: 0
    functionLinenumber: 1533
    functionLinenumberEnd: 1540
    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:1546,1
    - Dst: X509_NAME_to_cstring
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1546,1
    - Dst: X509_get_subject_name
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1546,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - port
    - ptr
    - len
    argTypes:
    - Port*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1549
      start: 1542
    functionDepth: 1
    functionLinenumber: 1542
    functionLinenumberEnd: 1549
    functionName: be_tls_get_peer_subject_name
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - X509_NAME_to_cstring
    - X509_get_subject_name
    - strlcpy
    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:1555,1
    - Dst: X509_NAME_to_cstring
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1555,1
    - Dst: X509_get_issuer_name
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1555,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - port
    - ptr
    - len
    argTypes:
    - Port*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1558
      start: 1551
    functionDepth: 1
    functionLinenumber: 1551
    functionLinenumberEnd: 1558
    functionName: be_tls_get_peer_issuer_name
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - X509_get_issuer_name
    - X509_NAME_to_cstring
    - strlcpy
    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:1569,1
    - Dst: ASN1_INTEGER_to_BN
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1570,1
    - Dst: BN_bn2dec
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1571,1
    - Dst: BN_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1573,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1574,1
    - Dst: OPENSSL_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1575,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - port
    - ptr
    - len
    argTypes:
    - Port*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1579
      start: 1560
    functionDepth: 1
    functionLinenumber: 1560
    functionLinenumberEnd: 1579
    functionName: be_tls_get_peer_serial
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - ASN1_INTEGER_to_BN
    - OPENSSL_free
    - BN_free
    - BN_bn2dec
    - strlcpy
    - X509_get_serialNumber
    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:1592,1
    - Dst: X509_get_signature_info
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1602,1
    - Dst: OBJ_find_sigid_algs
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1604,1
    - Dst: X509_get_signature_nid
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1604,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1607,1
    - Dst: EVP_sha256
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1619,1
    - Dst: EVP_get_digestbynid
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1622,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1624,1
    - Dst: OBJ_nid2sn
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1625,1
    - Dst: X509_digest
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1630,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1631,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1633,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1634,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - port
    - len
    argTypes:
    - Port*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1638
      start: 1581
    functionDepth: 1
    functionLinenumber: 1581
    functionLinenumberEnd: 1638
    functionName: be_tls_get_certificate_hash
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 1
    functionsReached:
    - EVP_sha256
    - EVP_get_digestbynid
    - SSL_get_certificate
    - OBJ_nid2sn
    - memcpy
    - elog
    - X509_get_signature_info
    - X509_digest
    - palloc
    - X509_get_signature_nid
    - OBJ_find_sigid_algs
    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:1647,1
    - Dst: BIO_s_mem
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1647,1
    - Dst: X509_NAME_entry_count
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1650,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1661,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1662,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1663,1
    - Dst: BIO_set_close
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1665,1
    - Dst: X509_NAME_get_entry
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1668,1
    - Dst: OBJ_obj2nid
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1669,1
    - Dst: X509_NAME_ENTRY_get_object
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1669,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1671,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1672,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1673,1
    - Dst: X509_NAME_ENTRY_get_data
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1674,1
    - Dst: OBJ_nid2sn
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1675,1
    - Dst: OBJ_nid2ln
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1677,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1679,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1680,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1681,1
    - Dst: BIO_printf
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1682,1
    - Dst: ASN1_STRING_print_ex
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1683,1
    - Dst: BIO_write
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1690,1
    - Dst: BIO_get_mem_data
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1691,1
    - Dst: pg_any_to_server
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1692,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1694,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1696,1
    - Dst: BIO_free
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1697,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1698,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 1
    argNames:
    - name
    argTypes:
    - X509_NAME*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1701
      start: 1644
    functionDepth: 1
    functionLinenumber: 1644
    functionLinenumberEnd: 1701
    functionName: X509_NAME_to_cstring
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 3
    functionsReached:
    - BIO_new
    - BIO_set_close
    - BIO_printf
    - BIO_get_mem_data
    - pstrdup
    - X509_NAME_get_entry
    - BIO_write
    - pfree
    - BIO_free
    - pg_any_to_server
    - OBJ_nid2ln
    - errmsg
    - OBJ_nid2sn
    - elog
    - X509_NAME_entry_count
    - X509_NAME_ENTRY_get_object
    - X509_NAME_ENTRY_get_data
    - ereport
    - BIO_s_mem
    - ASN1_STRING_print_ex
    - OBJ_obj2nid
    - errcode
    linkageType: ''
    returnType: char
    signature: 'char *

      X509_NAME_to_cstring(X509_NAME *name)'
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - v
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1747
      start: 1717
    functionDepth: 0
    functionLinenumber: 1717
    functionLinenumberEnd: 1747
    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: 1770
      start: 1752
    functionDepth: 0
    functionLinenumber: 1752
    functionLinenumberEnd: 1770
    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: 4
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_set_default_passwd_cb
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1779,1
    - Dst: SSL_CTX_set_default_passwd_cb
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1784,1
    - Dst: SSL_CTX_set_default_passwd_cb
      Src: /src/postgres/src/backend/libpq/be-secure-openssl.c:1793,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - context
    - isServerStart
    argTypes:
    - SSL_CTX*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1795
      start: 1773
    functionDepth: 0
    functionLinenumber: 1773
    functionLinenumberEnd: 1795
    functionName: default_openssl_tls_init
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-openssl.c
    functionUses: 0
    functionsReached:
    - 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:
    - PG_RETURN_INT32
    - Assert
    - PreventCommandIfReadOnly
    - GetCurrentSubTransactionId
    - RegisterSnapshotOnOwner
    - elog
    - PG_GETARG_OID
    - PG_GETARG_INT32
    - inv_open
    - newLOfd
    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:
    - errmsg
    - PG_RETURN_INT32
    - closeLOfd
    - ereport
    - elog
    - PG_GETARG_INT32
    - errcode
    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:
    - errmsg
    - inv_read
    - errcode
    - ereport
    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:
    - errmsg
    - inv_write
    - errcode
    - ereport
    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:
    - errmsg
    - PG_RETURN_INT32
    - ereport
    - PG_GETARG_INT32
    - inv_seek
    - errcode
    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:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - PG_GETARG_INT32
    - PG_RETURN_INT64
    - inv_seek
    - errcode
    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
    - PG_GETARG_OID
    - PreventCommandIfReadOnly
    - inv_create
    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:
    - errmsg
    - PG_RETURN_INT32
    - ereport
    - PG_GETARG_INT32
    - inv_tell
    - errcode
    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:
    - errmsg
    - ereport
    - PG_GETARG_INT32
    - PG_RETURN_INT64
    - inv_tell
    - errcode
    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:
    - errmsg
    - PG_RETURN_INT32
    - GetUserId
    - PreventCommandIfReadOnly
    - LargeObjectExists
    - inv_drop
    - closeLOfd
    - ereport
    - PG_GETARG_OID
    - object_ownercheck
    - errcode
    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: 1
    functionLinenumber: 361
    functionLinenumberEnd: 377
    functionName: be_loread
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - lo_read
    - VARDATA
    - PG_GETARG_INT32
    - PG_RETURN_BYTEA_P
    - palloc
    - SET_VARSIZE
    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: 1
    functionLinenumber: 379
    functionLinenumberEnd: 392
    functionName: be_lowrite
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PreventCommandIfReadOnly
    - lo_write
    - PG_GETARG_BYTEA_PP
    - PG_GETARG_INT32
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    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
    - PG_GETARG_TEXT_PP
    - lo_import_internal
    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_TEXT_PP
    - lo_import_internal
    - PG_GETARG_OID
    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:
    - errmsg
    - inv_create
    - PreventCommandIfReadOnly
    - Assert
    - CloseTransientFile
    - inv_close
    - inv_write
    - ereport
    - OpenTransientFile
    - read
    - text_to_cstring_buffer
    - inv_open
    - errcode_for_file_access
    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:
    - errmsg
    - write
    - umask
    - PG_RETURN_INT32
    - PG_END_TRY
    - inv_read
    - CloseTransientFile
    - PG_TRY
    - inv_close
    - PG_GETARG_TEXT_PP
    - OpenTransientFilePerm
    - ereport
    - PG_GETARG_OID
    - text_to_cstring_buffer
    - PG_FINALLY
    - inv_open
    - errcode_for_file_access
    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:
    - errmsg
    - inv_truncate
    - errcode
    - ereport
    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:
    - lo_truncate_internal
    - PreventCommandIfReadOnly
    - PG_GETARG_INT32
    - PG_RETURN_INT32
    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
    - lo_truncate_internal
    - PG_GETARG_INT64
    - PG_GETARG_INT32
    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:
    - close_lo_relation
    - MemoryContextDelete
    - closeLOfd
    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: 1
    functionLinenumber: 745
    functionLinenumberEnd: 791
    functionName: lo_get_fragment_internal
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - palloc
    - inv_read
    - inv_close
    - ereport
    - VARDATA
    - SET_VARSIZE
    - inv_seek
    - inv_open
    - errcode
    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: 2
    functionLinenumber: 796
    functionLinenumberEnd: 805
    functionName: be_lo_get
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BYTEA_P
    - PG_GETARG_OID
    - 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: 2
    functionLinenumber: 810
    functionLinenumberEnd: 826
    functionName: be_lo_get_fragment
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - lo_get_fragment_internal
    - PG_GETARG_INT64
    - ereport
    - PG_GETARG_OID
    - PG_GETARG_INT32
    - PG_RETURN_BYTEA_P
    - errcode
    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: 1
    functionLinenumber: 831
    functionLinenumberEnd: 849
    functionName: be_lo_from_bytea
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - inv_create
    - PreventCommandIfReadOnly
    - Assert
    - inv_close
    - inv_write
    - PG_GETARG_BYTEA_PP
    - PG_RETURN_OID
    - PG_GETARG_OID
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - inv_open
    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: 1
    functionLinenumber: 854
    functionLinenumberEnd: 873
    functionName: be_lo_put
    functionSourceFile: /src/postgres/src/backend/libpq/be-fsstubs.c
    functionUses: 0
    functionsReached:
    - Assert
    - PreventCommandIfReadOnly
    - inv_close
    - PG_GETARG_INT64
    - PG_RETURN_VOID
    - inv_write
    - PG_GETARG_BYTEA_PP
    - PG_GETARG_OID
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - inv_seek
    - inv_open
    linkageType: ''
    returnType: Datum
    signature: Datum be_lo_put(PG_FUNCTION_ARGS)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:62,1
    - Dst: pg_be_sasl_mech*::get_mechanisms
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:64,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:66,1
    - Dst: sendAuthRequest
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:68,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:69,1
    - Dst: pq_startmsgread
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:80,1
    - Dst: pq_getbyte
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:81,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:87,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:88,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:89,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:97,1
    - Dst: pq_getmessage
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:98,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:101,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:105,1
    - Dst: pq_getmsgrawstring
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:117,1
    - Dst: pg_be_sasl_mech*::init
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:131,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:133,1
    - Dst: pq_getmsgbytes
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:137,1
    - Dst: pq_getmsgbytes
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:144,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:146,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:152,1
    - Dst: pg_be_sasl_mech*::exchange
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:157,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:162,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:171,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:176,1
    - Dst: sendAuthRequest
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:179,1
    - Dst: sendAuthRequest
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:181,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth-sasl.c:183,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 52
    argCount: 4
    argNames:
    - mech
    - port
    - shadow_pass
    - logdetail
    argTypes:
    - pg_be_sasl_mech*
    - Port*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 43
    functionDepth: 5
    functionLinenumber: 43
    functionLinenumberEnd: 194
    functionName: CheckSASLAuth
    functionSourceFile: /src/postgres/src/backend/libpq/auth-sasl.c
    functionUses: 0
    functionsReached:
    - pg_be_sasl_mech*::exchange
    - pfree
    - pq_getmsgend
    - pq_getmsgrawstring
    - pg_be_sasl_mech*::get_mechanisms
    - pq_getbyte
    - pq_getmessage
    - pg_be_sasl_mech*::init
    - errmsg
    - pq_startmsgread
    - elog
    - sendAuthRequest
    - pq_getmsgbytes
    - Assert
    - appendStringInfoChar
    - ereport
    - initStringInfo
    - pq_getmsgint
    - errcode
    linkageType: ''
    returnType: int
    signature: "int CheckSASLAuth(const pg_be_sasl_mech *mech, Port *port, char *shadow_pass,\n\t\t\t
      \ const char **logdetail)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/libpq/crypt.c:47,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/libpq/crypt.c:47,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/libpq/crypt.c:48,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/crypt.c:50,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/crypt.c:50,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/libpq/crypt.c:55,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/libpq/crypt.c:59,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/crypt.c:60,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/crypt.c:60,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/libpq/crypt.c:64,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/libpq/crypt.c:66,1
    - Dst: DatumGetTimestampTz
      Src: /src/postgres/src/backend/libpq/crypt.c:69,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/libpq/crypt.c:71,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/libpq/crypt.c:76,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/crypt.c:78,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/crypt.c:78,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - role
    - logdetail
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 37
    functionDepth: 3
    functionLinenumber: 37
    functionLinenumberEnd: 84
    functionName: get_role_password
    functionSourceFile: /src/postgres/src/backend/libpq/crypt.c
    functionUses: 0
    functionsReached:
    - ReleaseSysCache
    - HeapTupleIsValid
    - TextDatumGetCString
    - PointerGetDatum
    - SearchSysCache1
    - DatumGetTimestampTz
    - GetCurrentTimestamp
    - _
    - SysCacheGetAttr
    - psprintf
    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:99,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/crypt.c:100,1
    - Dst: strspn
      Src: /src/postgres/src/backend/libpq/crypt.c:101,1
    - Dst: parse_scram_secret
      Src: /src/postgres/src/backend/libpq/crypt.c:103,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - shadow_pass
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 89
    functionDepth: 3
    functionLinenumber: 89
    functionLinenumberEnd: 107
    functionName: get_password_type
    functionSourceFile: /src/postgres/src/backend/libpq/crypt.c
    functionUses: 1
    functionsReached:
    - strspn
    - strncmp
    - parse_scram_secret
    - strlen
    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:120,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/crypt.c:130,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/crypt.c:137,1
    - Dst: pg_md5_encrypt
      Src: /src/postgres/src/backend/libpq/crypt.c:139,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/crypt.c:139,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/crypt.c:141,1
    - Dst: pg_be_scram_build_secret
      Src: /src/postgres/src/backend/libpq/crypt.c:145,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/crypt.c:149,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/crypt.c:154,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/crypt.c:164,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/crypt.c:170,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/crypt.c:172,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/crypt.c:173,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/crypt.c:174,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/crypt.c:175,1
    - Dst: get_password_type
      Src: /src/postgres/src/backend/libpq/crypt.c:180,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/crypt.c:181,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/crypt.c:182,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/crypt.c:183,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/crypt.c:184,1
    - Dst: errhint
      Src: /src/postgres/src/backend/libpq/crypt.c:185,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 3
    argNames:
    - target_type
    - role
    - password
    argTypes:
    - PasswordType
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 116
    functionDepth: 6
    functionLinenumber: 116
    functionLinenumberEnd: 188
    functionName: encrypt_password
    functionSourceFile: /src/postgres/src/backend/libpq/crypt.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - get_password_type
    - pg_md5_encrypt
    - pstrdup
    - ereport
    - elog
    - pg_be_scram_build_secret
    - errhint
    - palloc
    - errdetail
    - errcode
    - strlen
    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:211,1
    - Dst: get_password_type
      Src: /src/postgres/src/backend/libpq/crypt.c:213,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/crypt.c:216,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/crypt.c:216,1
    - Dst: pg_md5_encrypt
      Src: /src/postgres/src/backend/libpq/crypt.c:225,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/crypt.c:225,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/crypt.c:233,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/crypt.c:237,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/crypt.c:237,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    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: 243
      start: 201
    functionDepth: 4
    functionLinenumber: 201
    functionLinenumberEnd: 243
    functionName: md5_crypt_verify
    functionSourceFile: /src/postgres/src/backend/libpq/crypt.c
    functionUses: 0
    functionsReached:
    - Assert
    - get_password_type
    - pg_md5_encrypt
    - _
    - strcmp
    - strlen
    - psprintf
    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:268,1
    - Dst: scram_verify_plain_password
      Src: /src/postgres/src/backend/libpq/crypt.c:271,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:286,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/crypt.c:288,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/crypt.c:295,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/crypt.c:299,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/crypt.c:299,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/crypt.c:318,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/crypt.c:318,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 4
    argNames:
    - role
    - shadow_pass
    - client_pass
    - logdetail
    argTypes:
    - char*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 255
    functionDepth: 6
    functionLinenumber: 255
    functionLinenumberEnd: 321
    functionName: plain_crypt_verify
    functionSourceFile: /src/postgres/src/backend/libpq/crypt.c
    functionUses: 0
    functionsReached:
    - get_password_type
    - pg_md5_encrypt
    - scram_verify_plain_password
    - _
    - strcmp
    - strlen
    - psprintf
    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:131,1
    - Dst: secure_raw_write
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:162,1
    - Dst: gss_wrap
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:205,1
    - Dst: pg_GSS_error
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:209,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:209,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:215,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:216,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:222,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:223,1
    - Dst: pg_hton32
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:235,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:236,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:239,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:243,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:247,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:248,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 57
    argCount: 3
    argNames:
    - port
    - ptr
    - len
    argTypes:
    - Port*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 254
    functionName: be_gssapi_write
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-gssapi.c
    functionUses: 1
    functionsReached:
    - gss_wrap
    - pg_GSS_error
    - errmsg
    - Assert
    - secure_raw_write
    - ereport
    - elog
    - gss_release_buffer
    - _
    - pg_hton32
    - memcpy
    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:294,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:300,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:325,1
    - Dst: secure_raw_read
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:336,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:354,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:358,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:359,1
    - Dst: secure_raw_read
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:370,1
    - Dst: gss_unwrap
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:394,1
    - Dst: pg_GSS_error
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:397,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:397,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:403,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:404,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:409,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:416,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 54
    argCount: 3
    argNames:
    - port
    - ptr
    - len
    argTypes:
    - Port*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 269
    functionDepth: 2
    functionLinenumber: 269
    functionLinenumberEnd: 420
    functionName: be_gssapi_read
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-gssapi.c
    functionUses: 1
    functionsReached:
    - errmsg
    - Min
    - Assert
    - pg_GSS_error
    - secure_raw_read
    - gss_unwrap
    - pg_ntoh32
    - ereport
    - _
    - gss_release_buffer
    - memcpy
    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:441,1
    - Dst: WaitLatchOrSocket
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:460,1
    - Dst: secure_raw_read
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:476,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 18
    argCount: 2
    argNames:
    - port
    - len
    argTypes:
    - Port*
    - ssize_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 430
    functionDepth: 2
    functionLinenumber: 430
    functionLinenumberEnd: 488
    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:510,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:516,1
    - Dst: malloc
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:531,1
    - Dst: malloc
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:532,1
    - Dst: malloc
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:533,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:535,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:536,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:537,1
    - Dst: setenv
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:548,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:551,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:552,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:553,1
    - Dst: read_or_wait
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:567,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:574,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:587,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:588,1
    - Dst: read_or_wait
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:598,1
    - Dst: gss_accept_sec_context
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:605,1
    - Dst: GSS_ERROR
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:611,1
    - Dst: pg_GSS_error
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:613,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:613,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:615,1
    - Dst: pg_store_delegated_credential
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:629,1
    - Dst: pg_hton32
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:642,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:646,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:647,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:650,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:654,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:657,1
    - Dst: secure_raw_write
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:664,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:674,1
    - Dst: WaitLatchOrSocket
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:681,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:693,1
    - Dst: free
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:708,1
    - Dst: free
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:709,1
    - Dst: free
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:710,1
    - Dst: malloc
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:711,1
    - Dst: malloc
      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: ereport
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:715,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:716,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:717,1
    - Dst: gss_wrap_size_limit
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:725,1
    - Dst: GSS_ERROR
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:729,1
    - Dst: pg_GSS_error
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:731,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/be-secure-gssapi.c:731,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 90
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 738
      start: 502
    functionDepth: 3
    functionLinenumber: 502
    functionLinenumberEnd: 738
    functionName: secure_open_gssapi
    functionSourceFile: /src/postgres/src/backend/libpq/be-secure-gssapi.c
    functionUses: 0
    functionsReached:
    - pg_GSS_error
    - pg_ntoh32
    - _
    - memcpy
    - GSS_ERROR
    - pg_store_delegated_credential
    - errmsg
    - malloc
    - gss_wrap_size_limit
    - secure_raw_write
    - MemoryContextAllocZero
    - setenv
    - gss_accept_sec_context
    - pg_hton32
    - gss_release_buffer
    - read_or_wait
    - ereport
    - INJECTION_POINT
    - WaitLatchOrSocket
    - errcode
    - free
    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: 750
      start: 743
    functionDepth: 0
    functionLinenumber: 743
    functionLinenumberEnd: 750
    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: 762
      start: 755
    functionDepth: 0
    functionLinenumber: 755
    functionLinenumberEnd: 762
    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: 775
      start: 768
    functionDepth: 0
    functionLinenumber: 768
    functionLinenumberEnd: 775
    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: 788
      start: 781
    functionDepth: 0
    functionLinenumber: 781
    functionLinenumberEnd: 788
    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:
    - Min
    - elog
    - gss_release_buffer
    - memcpy
    - 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:
    - errdetail_internal
    - pg_GSS_error_int
    - errmsg_internal
    - ereport
    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:
    - pg_GSS_error
    - gss_release_cred
    - setenv
    - gss_store_cred_into
    linkageType: ''
    returnType: void
    signature: void pg_store_delegated_credential(gss_cred_id_t cred)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: proc_exit
      Src: /src/postgres/src/backend/libpq/auth.c:248,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:254,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:257,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:260,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:263,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:268,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:273,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:276,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:279,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:282,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:285,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:288,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:291,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:294,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/auth.c:297,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth.c:301,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth.c:301,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth.c:305,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:309,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:310,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:311,1
    - Dst: errdetail_log
      Src: /src/postgres/src/backend/libpq/auth.c:312,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 56
    argCount: 3
    argNames:
    - port
    - status
    - logdetail
    argTypes:
    - Port*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 230
    functionDepth: 2
    functionLinenumber: 230
    functionLinenumberEnd: 315
    functionName: auth_failed
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - errdetail_log
    - _
    - gettext_noop
    - errcode
    - psprintf
    - proc_exit
    linkageType: ''
    returnType: void
    signature: void auth_failed(Port *port, int status, const char *logdetail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth.c:335,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:345,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:346,1
    - Dst: errdetail_log
      Src: /src/postgres/src/backend/libpq/auth.c:347,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/libpq/auth.c:351,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:356,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:357,1
    - Dst: hba_authname
      Src: /src/postgres/src/backend/libpq/auth.c:360,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - port
    - id
    argTypes:
    - Port*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 332
    functionDepth: 1
    functionLinenumber: 332
    functionLinenumberEnd: 363
    functionName: set_authn_id
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 0
    functionsReached:
    - errmsg
    - MemoryContextStrdup
    - Assert
    - hba_authname
    - ereport
    - errdetail_log
    linkageType: ''
    returnType: void
    signature: void set_authn_id(Port *port, const char *id)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: hba_getauthmethod
      Src: /src/postgres/src/backend/libpq/auth.c:382,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/libpq/auth.c:384,1
    - Dst: secure_loaded_verify_locations
      Src: /src/postgres/src/backend/libpq/auth.c:394,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:395,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:396,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:397,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:406,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:407,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:408,1
    - Dst: pg_getnameinfo_all
      Src: /src/postgres/src/backend/libpq/auth.c:432,1
    - Dst: ENABLE_GSS
      Src: /src/postgres/src/backend/libpq/auth.c:438,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth.c:439,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth.c:442,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth.c:444,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:447,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:448,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:450,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:454,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:455,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:457,1
    - Dst: pg_getnameinfo_all
      Src: /src/postgres/src/backend/libpq/auth.c:478,1
    - Dst: ENABLE_GSS
      Src: /src/postgres/src/backend/libpq/auth.c:484,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth.c:485,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth.c:488,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth.c:490,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:514,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:515,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:517,1
    - Dst: HOSTNAME_LOOKUP_DETAIL
      Src: /src/postgres/src/backend/libpq/auth.c:520,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:522,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:523,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:525,1
    - Dst: HOSTNAME_LOOKUP_DETAIL
      Src: /src/postgres/src/backend/libpq/auth.c:529,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/libpq/auth.c:538,1
    - Dst: pg_GSS_checkauth
      Src: /src/postgres/src/backend/libpq/auth.c:547,1
    - Dst: sendAuthRequest
      Src: /src/postgres/src/backend/libpq/auth.c:550,1
    - Dst: pg_GSS_recvauth
      Src: /src/postgres/src/backend/libpq/auth.c:551,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth.c:554,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/libpq/auth.c:562,1
    - Dst: sendAuthRequest
      Src: /src/postgres/src/backend/libpq/auth.c:564,1
    - Dst: pg_SSPI_recvauth
      Src: /src/postgres/src/backend/libpq/auth.c:565,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth.c:567,1
    - Dst: auth_peer
      Src: /src/postgres/src/backend/libpq/auth.c:572,1
    - Dst: ident_inet
      Src: /src/postgres/src/backend/libpq/auth.c:576,1
    - Dst: CheckPWChallengeAuth
      Src: /src/postgres/src/backend/libpq/auth.c:581,1
    - Dst: CheckPasswordAuth
      Src: /src/postgres/src/backend/libpq/auth.c:585,1
    - Dst: CheckPAMAuth
      Src: /src/postgres/src/backend/libpq/auth.c:590,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth.c:592,1
    - Dst: CheckBSDAuth
      Src: /src/postgres/src/backend/libpq/auth.c:598,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth.c:600,1
    - Dst: CheckLDAPAuth
      Src: /src/postgres/src/backend/libpq/auth.c:606,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth.c:608,1
    - Dst: CheckRADIUSAuth
      Src: /src/postgres/src/backend/libpq/auth.c:612,1
    - Dst: CheckSASLAuth
      Src: /src/postgres/src/backend/libpq/auth.c:620,1
    - Dst: CheckCertAuth
      Src: /src/postgres/src/backend/libpq/auth.c:632,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth.c:634,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:648,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:649,1
    - Dst: hba_authname
      Src: /src/postgres/src/backend/libpq/auth.c:651,1
    - Dst: sendAuthRequest
      Src: /src/postgres/src/backend/libpq/auth.c:659,1
    - Dst: auth_failed
      Src: /src/postgres/src/backend/libpq/auth.c:661,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 92
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 370
    functionDepth: 6
    functionLinenumber: 370
    functionLinenumberEnd: 662
    functionName: ClientAuthentication
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 0
    functionsReached:
    - CHECK_FOR_INTERRUPTS
    - ENABLE_GSS
    - hba_getauthmethod
    - CheckPAMAuth
    - pg_getnameinfo_all
    - hba_authname
    - pg_SSPI_recvauth
    - CheckPWChallengeAuth
    - pg_GSS_recvauth
    - CheckPasswordAuth
    - _
    - HOSTNAME_LOOKUP_DETAIL
    - errmsg
    - CheckRADIUSAuth
    - CheckSASLAuth
    - secure_loaded_verify_locations
    - MemoryContextAllocZero
    - auth_failed
    - ident_inet
    - CheckCertAuth
    - sendAuthRequest
    - Assert
    - CheckLDAPAuth
    - ereport
    - CheckBSDAuth
    - auth_peer
    - errcode
    - 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: 512
      start: 492
    functionDepth: 0
    functionLinenumber: 492
    functionLinenumberEnd: 512
    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:673,1
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/libpq/auth.c:675,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/libpq/auth.c:676,1
    - Dst: pq_sendbytes
      Src: /src/postgres/src/backend/libpq/auth.c:678,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/libpq/auth.c:680,1
    - Dst: pq_flush
      Src: /src/postgres/src/backend/libpq/auth.c:688,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/libpq/auth.c:690,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - port
    - areq
    - extradata
    - extralen
    argTypes:
    - Port*
    - AuthRequest
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 668
    functionDepth: 4
    functionLinenumber: 668
    functionLinenumberEnd: 691
    functionName: sendAuthRequest
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 2
    functionsReached:
    - pq_sendbytes
    - CHECK_FOR_INTERRUPTS
    - pq_flush
    - pq_beginmessage
    - pq_sendint32
    - pq_endmessage
    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:704,1
    - Dst: pq_getbyte
      Src: /src/postgres/src/backend/libpq/auth.c:707,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:716,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:717,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:718,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/libpq/auth.c:723,1
    - Dst: pq_getmessage
      Src: /src/postgres/src/backend/libpq/auth.c:724,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:727,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:736,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:737,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:738,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:739,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:755,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:756,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:757,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth.c:760,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 698
    functionDepth: 5
    functionLinenumber: 698
    functionLinenumberEnd: 768
    functionName: recv_password_packet
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - pq_getbyte
    - ereport
    - pq_startmsgread
    - pq_getmessage
    - elog
    - initStringInfo
    - errcode
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      recv_password_packet(Port *port)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sendAuthRequest
      Src: /src/postgres/src/backend/libpq/auth.c:786,1
    - Dst: recv_password_packet
      Src: /src/postgres/src/backend/libpq/auth.c:788,1
    - Dst: get_role_password
      Src: /src/postgres/src/backend/libpq/auth.c:792,1
    - Dst: plain_crypt_verify
      Src: /src/postgres/src/backend/libpq/auth.c:795,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:802,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:803,1
    - Dst: set_authn_id
      Src: /src/postgres/src/backend/libpq/auth.c:806,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - port
    - logdetail
    argTypes:
    - Port*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 779
    functionDepth: 7
    functionLinenumber: 779
    functionLinenumberEnd: 809
    functionName: CheckPasswordAuth
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached:
    - sendAuthRequest
    - pfree
    - set_authn_id
    - recv_password_packet
    - get_role_password
    - plain_crypt_verify
    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:821,1
    - Dst: get_role_password
      Src: /src/postgres/src/backend/libpq/auth.c:825,1
    - Dst: get_password_type
      Src: /src/postgres/src/backend/libpq/auth.c:839,1
    - Dst: CheckMD5Auth
      Src: /src/postgres/src/backend/libpq/auth.c:852,1
    - Dst: CheckSASLAuth
      Src: /src/postgres/src/backend/libpq/auth.c:854,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:858,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth.c:865,1
    - Dst: set_authn_id
      Src: /src/postgres/src/backend/libpq/auth.c:869,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - port
    - logdetail
    argTypes:
    - Port*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 814
    functionDepth: 6
    functionLinenumber: 814
    functionLinenumberEnd: 872
    functionName: CheckPWChallengeAuth
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - CheckMD5Auth
    - CheckSASLAuth
    - set_authn_id
    - get_role_password
    - get_password_type
    linkageType: ''
    returnType: int
    signature: int CheckPWChallengeAuth(Port *port, const char **logdetail)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_strong_random
      Src: /src/postgres/src/backend/libpq/auth.c:882,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:884,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:885,1
    - Dst: sendAuthRequest
      Src: /src/postgres/src/backend/libpq/auth.c:889,1
    - Dst: recv_password_packet
      Src: /src/postgres/src/backend/libpq/auth.c:891,1
    - Dst: md5_crypt_verify
      Src: /src/postgres/src/backend/libpq/auth.c:896,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:901,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - port
    - shadow_pass
    - logdetail
    argTypes:
    - Port*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 874
    functionDepth: 6
    functionLinenumber: 874
    functionLinenumberEnd: 904
    functionName: CheckMD5Auth
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached:
    - errmsg
    - sendAuthRequest
    - pfree
    - recv_password_packet
    - ereport
    - md5_crypt_verify
    - pg_strong_random
    linkageType: ''
    returnType: int
    signature: int CheckMD5Auth(Port *port, char *shadow_pass, const char **logdetail)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: setenv
      Src: /src/postgres/src/backend/libpq/auth.c:931,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:934,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:935,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:936,1
    - Dst: pq_startmsgread
      Src: /src/postgres/src/backend/libpq/auth.c:964,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/libpq/auth.c:966,1
    - Dst: pq_getbyte
      Src: /src/postgres/src/backend/libpq/auth.c:968,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:973,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:974,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:975,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/libpq/auth.c:981,1
    - Dst: pq_getmessage
      Src: /src/postgres/src/backend/libpq/auth.c:982,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:985,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth.c:993,1
    - Dst: gss_accept_sec_context
      Src: /src/postgres/src/backend/libpq/auth.c:996,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1009,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth.c:1011,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/libpq/auth.c:1016,1
    - Dst: pg_store_delegated_credential
      Src: /src/postgres/src/backend/libpq/auth.c:1020,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth.c:1029,1
    - Dst: sendAuthRequest
      Src: /src/postgres/src/backend/libpq/auth.c:1032,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/backend/libpq/auth.c:1035,1
    - Dst: gss_delete_sec_context
      Src: /src/postgres/src/backend/libpq/auth.c:1040,1
    - Dst: pg_GSS_error
      Src: /src/postgres/src/backend/libpq/auth.c:1041,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth.c:1041,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth.c:1047,1
    - Dst: gss_release_cred
      Src: /src/postgres/src/backend/libpq/auth.c:1056,1
    - Dst: pg_GSS_checkauth
      Src: /src/postgres/src/backend/libpq/auth.c:1058,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 52
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 912
    functionDepth: 5
    functionLinenumber: 912
    functionLinenumberEnd: 1059
    functionName: pg_GSS_recvauth
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached:
    - pg_GSS_error
    - CHECK_FOR_INTERRUPTS
    - gss_release_cred
    - pfree
    - pq_getbyte
    - pq_getmessage
    - _
    - pg_store_delegated_credential
    - errmsg
    - setenv
    - gss_accept_sec_context
    - pq_startmsgread
    - elog
    - gss_release_buffer
    - gss_delete_sec_context
    - sendAuthRequest
    - ereport
    - initStringInfo
    - errcode
    - 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:1079,1
    - Dst: pg_GSS_error
      Src: /src/postgres/src/backend/libpq/auth.c:1082,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth.c:1082,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/auth.c:1091,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/auth.c:1092,1
    - Dst: gss_release_buffer
      Src: /src/postgres/src/backend/libpq/auth.c:1094,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/libpq/auth.c:1104,1
    - Dst: set_authn_id
      Src: /src/postgres/src/backend/libpq/auth.c:1105,1
    - Dst: strchr
      Src: /src/postgres/src/backend/libpq/auth.c:1110,1
    - Dst: strchr
      Src: /src/postgres/src/backend/libpq/auth.c:1112,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:1123,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/libpq/auth.c:1129,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth.c:1131,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth.c:1136,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1139,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:1144,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth.c:1146,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1148,1
    - Dst: check_usermap
      Src: /src/postgres/src/backend/libpq/auth.c:1152,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1155,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1158
      start: 1065
    functionDepth: 2
    functionLinenumber: 1065
    functionLinenumberEnd: 1158
    functionName: pg_GSS_checkauth
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 2
    functionsReached:
    - pg_GSS_error
    - MemoryContextStrdup
    - strcmp
    - pfree
    - memcpy
    - set_authn_id
    - elog
    - _
    - gss_release_buffer
    - gss_display_name
    - palloc
    - pg_strcasecmp
    - check_usermap
    - strlen
    - strchr
    linkageType: ''
    returnType: int
    signature: int pg_GSS_checkauth(Port *port)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FormatMessage
      Src: /src/postgres/src/backend/libpq/auth.c:1177,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1181,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/auth.c:1182,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/libpq/auth.c:1183,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1185,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/auth.c:1186,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/libpq/auth.c:1187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - severity
    - errmsg
    - r
    argTypes:
    - int
    - char*
    - SECURITY_STATUS
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1188
      start: 1172
    functionDepth: 1
    functionLinenumber: 1172
    functionLinenumberEnd: 1188
    functionName: pg_SSPI_error
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 2
    functionsReached:
    - errdetail_internal
    - ereport
    - errmsg_internal
    - FormatMessage
    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:1218,1
    - Dst: pg_SSPI_error
      Src: /src/postgres/src/backend/libpq/auth.c:1228,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth.c:1228,1
    - Dst: pq_startmsgread
      Src: /src/postgres/src/backend/libpq/auth.c:1238,1
    - Dst: pq_getbyte
      Src: /src/postgres/src/backend/libpq/auth.c:1239,1
    - Dst: DeleteSecurityContext
      Src: /src/postgres/src/backend/libpq/auth.c:1244,1
    - Dst: free
      Src: /src/postgres/src/backend/libpq/auth.c:1245,1
    - Dst: FreeCredentialsHandle
      Src: /src/postgres/src/backend/libpq/auth.c:1247,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1251,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:1252,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1253,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/libpq/auth.c:1259,1
    - Dst: pq_getmessage
      Src: /src/postgres/src/backend/libpq/auth.c:1260,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1263,1
    - Dst: DeleteSecurityContext
      Src: /src/postgres/src/backend/libpq/auth.c:1266,1
    - Dst: free
      Src: /src/postgres/src/backend/libpq/auth.c:1267,1
    - Dst: FreeCredentialsHandle
      Src: /src/postgres/src/backend/libpq/auth.c:1269,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth.c:1289,1
    - Dst: AcceptSecurityContext
      Src: /src/postgres/src/backend/libpq/auth.c:1292,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1303,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth.c:1310,1
    - Dst: sendAuthRequest
      Src: /src/postgres/src/backend/libpq/auth.c:1316,1
    - Dst: FreeContextBuffer
      Src: /src/postgres/src/backend/libpq/auth.c:1319,1
    - Dst: DeleteSecurityContext
      Src: /src/postgres/src/backend/libpq/auth.c:1326,1
    - Dst: free
      Src: /src/postgres/src/backend/libpq/auth.c:1327,1
    - Dst: FreeCredentialsHandle
      Src: /src/postgres/src/backend/libpq/auth.c:1329,1
    - Dst: pg_SSPI_error
      Src: /src/postgres/src/backend/libpq/auth.c:1330,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth.c:1331,1
    - Dst: malloc
      Src: /src/postgres/src/backend/libpq/auth.c:1342,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1344,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1345,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/auth.c:1348,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth.c:1351,1
    - Dst: FreeCredentialsHandle
      Src: /src/postgres/src/backend/libpq/auth.c:1359,1
    - Dst: QuerySecurityContextToken
      Src: /src/postgres/src/backend/libpq/auth.c:1369,1
    - Dst: pg_SSPI_error
      Src: /src/postgres/src/backend/libpq/auth.c:1371,1
    - Dst: _
      Src: /src/postgres/src/backend/libpq/auth.c:1372,1
    - Dst: DeleteSecurityContext
      Src: /src/postgres/src/backend/libpq/auth.c:1378,1
    - Dst: free
      Src: /src/postgres/src/backend/libpq/auth.c:1379,1
    - Dst: GetTokenInformation
      Src: /src/postgres/src/backend/libpq/auth.c:1381,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/libpq/auth.c:1381,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1382,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/auth.c:1383,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/libpq/auth.c:1384,1
    - Dst: malloc
      Src: /src/postgres/src/backend/libpq/auth.c:1386,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1388,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1389,1
    - Dst: GetTokenInformation
      Src: /src/postgres/src/backend/libpq/auth.c:1391,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1392,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/auth.c:1393,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/libpq/auth.c:1394,1
    - Dst: CloseHandle
      Src: /src/postgres/src/backend/libpq/auth.c:1396,1
    - Dst: LookupAccountSid
      Src: /src/postgres/src/backend/libpq/auth.c:1398,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1400,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/auth.c:1401,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/libpq/auth.c:1402,1
    - Dst: free
      Src: /src/postgres/src/backend/libpq/auth.c:1404,1
    - Dst: pg_SSPI_make_upn
      Src: /src/postgres/src/backend/libpq/auth.c:1408,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth.c:1426,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth.c:1431,1
    - Dst: set_authn_id
      Src: /src/postgres/src/backend/libpq/auth.c:1434,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1435,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:1441,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/libpq/auth.c:1443,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth.c:1445,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth.c:1464,1
    - Dst: check_usermap
      Src: /src/postgres/src/backend/libpq/auth.c:1465,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1466,1
    - Dst: check_usermap
      Src: /src/postgres/src/backend/libpq/auth.c:1470,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 107
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1471
      start: 1190
    functionDepth: 5
    functionLinenumber: 1190
    functionLinenumberEnd: 1471
    functionName: pg_SSPI_recvauth
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached:
    - AcceptSecurityContext
    - CloseHandle
    - FreeContextBuffer
    - pg_SSPI_make_upn
    - psprintf
    - strlen
    - pfree
    - pq_getbyte
    - pq_getmessage
    - _
    - memcpy
    - check_usermap
    - errmsg
    - malloc
    - set_authn_id
    - pg_SSPI_error
    - FreeCredentialsHandle
    - pq_startmsgread
    - elog
    - GetTokenInformation
    - LookupAccountSid
    - AcquireCredentialsHandle
    - pg_strcasecmp
    - QuerySecurityContextToken
    - sendAuthRequest
    - DeleteSecurityContext
    - GetLastError
    - ereport
    - errmsg_internal
    - initStringInfo
    - errcode
    - free
    linkageType: ''
    returnType: int
    signature: int pg_SSPI_recvauth(Port *port)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth.c:1498,1
    - Dst: TranslateName
      Src: /src/postgres/src/backend/libpq/auth.c:1499,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/libpq/auth.c:1502,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1505,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1506,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:1507,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1508,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/auth.c:1513,1
    - Dst: TranslateName
      Src: /src/postgres/src/backend/libpq/auth.c:1515,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1518,1
    - Dst: strchr
      Src: /src/postgres/src/backend/libpq/auth.c:1520,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1524,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1525,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:1526,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1527,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1537,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1538,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:1539,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1540,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/libpq/auth.c:1545,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1552,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1553,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:1554,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1555,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/libpq/auth.c:1560,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:1563,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: 1565
      start: 1477
    functionDepth: 2
    functionLinenumber: 1477
    functionLinenumberEnd: 1565
    functionName: pg_SSPI_make_upn
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached:
    - errmsg
    - pfree
    - TranslateName
    - GetLastError
    - ereport
    - strcpy
    - palloc
    - errcode
    - psprintf
    - strchr
    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: 7
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:1590,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:1592,1
    - Dst: pg_isblank
      Src: /src/postgres/src/backend/libpq/auth.c:1608,1
    - Dst: pg_isblank
      Src: /src/postgres/src/backend/libpq/auth.c:1611,1
    - Dst: pg_isblank
      Src: /src/postgres/src/backend/libpq/auth.c:1615,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth.c:1617,1
    - Dst: pg_isblank
      Src: /src/postgres/src/backend/libpq/auth.c:1638,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 40
    argCount: 2
    argNames:
    - ident_response
    - ident_user
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1651
      start: 1581
    functionDepth: 1
    functionLinenumber: 1581
    functionLinenumberEnd: 1651
    functionName: interpret_ident_response
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pg_isblank
    - strlen
    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:1686,1
    - Dst: pg_getnameinfo_all
      Src: /src/postgres/src/backend/libpq/auth.c:1690,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/libpq/auth.c:1695,1
    - Dst: pg_getaddrinfo_all
      Src: /src/postgres/src/backend/libpq/auth.c:1704,1
    - Dst: pg_getaddrinfo_all
      Src: /src/postgres/src/backend/libpq/auth.c:1720,1
    - Dst: socket
      Src: /src/postgres/src/backend/libpq/auth.c:1728,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1732,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/auth.c:1733,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1734,1
    - Dst: bind
      Src: /src/postgres/src/backend/libpq/auth.c:1744,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1747,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/auth.c:1748,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1749,1
    - Dst: connect
      Src: /src/postgres/src/backend/libpq/auth.c:1755,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1759,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/auth.c:1760,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1761,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/libpq/auth.c:1768,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/libpq/auth.c:1774,1
    - Dst: send
      Src: /src/postgres/src/backend/libpq/auth.c:1776,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:1776,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1781,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/auth.c:1782,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1783,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/libpq/auth.c:1791,1
    - Dst: recv
      Src: /src/postgres/src/backend/libpq/auth.c:1793,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1798,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/auth.c:1799,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1800,1
    - Dst: interpret_ident_response
      Src: /src/postgres/src/backend/libpq/auth.c:1807,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1809,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1810,1
    - Dst: closesocket
      Src: /src/postgres/src/backend/libpq/auth.c:1815,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/auth.c:1817,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/auth.c:1819,1
    - Dst: set_authn_id
      Src: /src/postgres/src/backend/libpq/auth.c:1828,1
    - Dst: check_usermap
      Src: /src/postgres/src/backend/libpq/auth.c:1829,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 91
    argCount: 1
    argNames:
    - port
    argTypes:
    - hbaPort*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1832
      start: 1662
    functionDepth: 2
    functionLinenumber: 1662
    functionLinenumberEnd: 1832
    functionName: ident_inet
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached:
    - errcode_for_socket_access
    - errmsg
    - bind
    - connect
    - pg_getnameinfo_all
    - CHECK_FOR_INTERRUPTS
    - pg_getaddrinfo_all
    - send
    - set_authn_id
    - snprintf
    - ereport
    - recv
    - socket
    - check_usermap
    - interpret_ident_response
    - closesocket
    - strlen
    - pg_freeaddrinfo_all
    linkageType: ''
    returnType: int
    signature: int ident_inet(hbaPort *port)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getpeereid
      Src: /src/postgres/src/backend/libpq/auth.c:1860,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1864,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:1865,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1866,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1868,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/libpq/auth.c:1869,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1870,1
    - Dst: getpwuid_r
      Src: /src/postgres/src/backend/libpq/auth.c:1875,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1879,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1880,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1885,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1886,1
    - Dst: set_authn_id
      Src: /src/postgres/src/backend/libpq/auth.c:1895,1
    - Dst: check_usermap
      Src: /src/postgres/src/backend/libpq/auth.c:1897,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth.c:1903,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - port
    argTypes:
    - hbaPort*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1906
      start: 1847
    functionDepth: 2
    functionLinenumber: 1847
    functionLinenumberEnd: 1906
    functionName: auth_peer
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode_for_socket_access
    - Assert
    - getpeereid
    - getpwuid_r
    - set_authn_id
    - ereport
    - errcode
    - check_usermap
    linkageType: ''
    returnType: int
    signature: int auth_peer(hbaPort *port)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/postgres/src/backend/libpq/auth.c:1947,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1949,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth.c:1950,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1951,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:1960,1
    - Dst: sendAuthRequest
      Src: /src/postgres/src/backend/libpq/auth.c:1967,1
    - Dst: recv_password_packet
      Src: /src/postgres/src/backend/libpq/auth.c:1968,1
    - Dst: strdup
      Src: /src/postgres/src/backend/libpq/auth.c:1980,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1985,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1986,1
    - Dst: strdup
      Src: /src/postgres/src/backend/libpq/auth.c:1991,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:1996,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:1997,1
    - Dst: free
      Src: /src/postgres/src/backend/libpq/auth.c:2010,1
    - Dst: free
      Src: /src/postgres/src/backend/libpq/auth.c:2011,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 51
    argCount: 4
    argNames:
    - num_msg
    - msg
    - resp
    - appdata_ptr
    argTypes:
    - int
    - struct pam_message**
    - struct pam_response**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2014
      start: 1919
    functionDepth: 6
    functionLinenumber: 1919
    functionLinenumberEnd: 2014
    functionName: pam_passwd_conv_proc
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 0
    functionsReached:
    - errmsg
    - sendAuthRequest
    - recv_password_packet
    - calloc
    - ereport
    - strdup
    - free
    - errcode
    - strlen
    linkageType: ''
    returnType: int
    signature: "int pam_passwd_conv_proc(int num_msg, 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:2040,1
    - Dst: pam_start
      Src: /src/postgres/src/backend/libpq/auth.c:2045,1
    - Dst: pam_start
      Src: /src/postgres/src/backend/libpq/auth.c:2048,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2053,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2054,1
    - Dst: pam_strerror
      Src: /src/postgres/src/backend/libpq/auth.c:2055,1
    - Dst: pam_set_item
      Src: /src/postgres/src/backend/libpq/auth.c:2060,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2064,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2065,1
    - Dst: pam_strerror
      Src: /src/postgres/src/backend/libpq/auth.c:2066,1
    - Dst: pg_getnameinfo_all
      Src: /src/postgres/src/backend/libpq/auth.c:2081,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2086,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/libpq/auth.c:2087,1
    - Dst: gai_strerror
      Src: /src/postgres/src/backend/libpq/auth.c:2088,1
    - Dst: pam_set_item
      Src: /src/postgres/src/backend/libpq/auth.c:2092,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2096,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2097,1
    - Dst: pam_strerror
      Src: /src/postgres/src/backend/libpq/auth.c:2098,1
    - Dst: pam_set_item
      Src: /src/postgres/src/backend/libpq/auth.c:2104,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_authenticate
      Src: /src/postgres/src/backend/libpq/auth.c:2115,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2121,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2122,1
    - Dst: pam_strerror
      Src: /src/postgres/src/backend/libpq/auth.c:2123,1
    - Dst: pam_acct_mgmt
      Src: /src/postgres/src/backend/libpq/auth.c:2128,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2134,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2135,1
    - Dst: pam_strerror
      Src: /src/postgres/src/backend/libpq/auth.c:2136,1
    - Dst: pam_end
      Src: /src/postgres/src/backend/libpq/auth.c:2141,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2145,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2146,1
    - Dst: pam_strerror
      Src: /src/postgres/src/backend/libpq/auth.c:2147,1
    - Dst: set_authn_id
      Src: /src/postgres/src/backend/libpq/auth.c:2153,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 63
    argCount: 3
    argNames:
    - port
    - user
    - password
    argTypes:
    - Port*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2156
      start: 2020
    functionDepth: 2
    functionLinenumber: 2020
    functionLinenumberEnd: 2156
    functionName: CheckPAMAuth
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached:
    - errmsg
    - pg_getnameinfo_all
    - pam_authenticate
    - pam_acct_mgmt
    - set_authn_id
    - errmsg_internal
    - ereport
    - gai_strerror
    - pam_end
    - unconstify
    - pam_start
    - pam_strerror
    - pam_set_item
    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:2172,1
    - Dst: recv_password_packet
      Src: /src/postgres/src/backend/libpq/auth.c:2174,1
    - Dst: auth_userokay
      Src: /src/postgres/src/backend/libpq/auth.c:2183,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2185,1
    - Dst: set_authn_id
      Src: /src/postgres/src/backend/libpq/auth.c:2190,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - port
    - user
    argTypes:
    - Port*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2192
      start: 2165
    functionDepth: 6
    functionLinenumber: 2165
    functionLinenumberEnd: 2192
    functionName: CheckBSDAuth
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached:
    - sendAuthRequest
    - pfree
    - set_authn_id
    - recv_password_packet
    - auth_userokay
    linkageType: ''
    returnType: int
    signature: int CheckBSDAuth(Port *port, char *user)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth.c:2219,1
    - Dst: ldap_sslinit
      Src: /src/postgres/src/backend/libpq/auth.c:2220,1
    - Dst: ldap_init
      Src: /src/postgres/src/backend/libpq/auth.c:2222,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2225,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2226,1
    - Dst: LdapGetLastError
      Src: /src/postgres/src/backend/libpq/auth.c:2227,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/libpq/auth.c:2248,1
    - Dst: ldap_dn2domain
      Src: /src/postgres/src/backend/libpq/auth.c:2260,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2262,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2263,1
    - Dst: ldap_domain2hostlist
      Src: /src/postgres/src/backend/libpq/auth.c:2268,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2270,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2271,1
    - Dst: errhint
      Src: /src/postgres/src/backend/libpq/auth.c:2273,1
    - Dst: ldap_memfree
      Src: /src/postgres/src/backend/libpq/auth.c:2274,1
    - Dst: ldap_memfree
      Src: /src/postgres/src/backend/libpq/auth.c:2277,1
    - Dst: strcspn
      Src: /src/postgres/src/backend/libpq/auth.c:2296,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/libpq/auth.c:2300,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/libpq/auth.c:2303,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/libpq/auth.c:2304,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/libpq/auth.c:2305,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/libpq/auth.c:2307,1
    - Dst: ldap_memfree
      Src: /src/postgres/src/backend/libpq/auth.c:2317,1
    - Dst: ldap_initialize
      Src: /src/postgres/src/backend/libpq/auth.c:2320,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2321,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2324,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2325,1
    - Dst: ldap_err2string
      Src: /src/postgres/src/backend/libpq/auth.c:2326,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth.c:2332,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2334,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2335,1
    - Dst: ldap_init
      Src: /src/postgres/src/backend/libpq/auth.c:2339,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2342,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2343,1
    - Dst: ldap_set_option
      Src: /src/postgres/src/backend/libpq/auth.c:2350,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2352,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2353,1
    - Dst: ldap_err2string
      Src: /src/postgres/src/backend/libpq/auth.c:2354,1
    - Dst: errdetail_for_ldap
      Src: /src/postgres/src/backend/libpq/auth.c:2355,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/backend/libpq/auth.c:2356,1
    - Dst: ldap_start_tls_s
      Src: /src/postgres/src/backend/libpq/auth.c:2363,1
    - Dst: ldap_start_tls_s
      Src: /src/postgres/src/backend/libpq/auth.c:2365,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2368,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2369,1
    - Dst: ldap_err2string
      Src: /src/postgres/src/backend/libpq/auth.c:2370,1
    - Dst: errdetail_for_ldap
      Src: /src/postgres/src/backend/libpq/auth.c:2371,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/backend/libpq/auth.c:2372,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 75
    argCount: 2
    argNames:
    - port
    - ldap
    argTypes:
    - Port*
    - LDAP**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2378
      start: 2208
    functionDepth: 3
    functionLinenumber: 2208
    functionLinenumberEnd: 2378
    functionName: InitializeLDAPConnection
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 0
    functionsReached:
    - errhint
    - pfree
    - ldap_err2string
    - ldap_start_tls_s
    - strcspn
    - ldap_sslinit
    - strcmp
    - errmsg
    - ldap_domain2hostlist
    - appendStringInfoString
    - ldap_memfree
    - ldap_initialize
    - ldap_unbind
    - appendBinaryStringInfo
    - appendStringInfoChar
    - appendStringInfo
    - ldap_dn2domain
    - ereport
    - LdapGetLastError
    - ldap_init
    - initStringInfo
    - ldap_set_option
    - errdetail_for_ldap
    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: 2398
      start: 2394
    functionDepth: 0
    functionLinenumber: 2394
    functionLinenumberEnd: 2398
    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:2409,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/libpq/auth.c:2412,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/libpq/auth.c:2414,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/libpq/auth.c:2418,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - pattern
    - user_name
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2422
      start: 2404
    functionDepth: 3
    functionLinenumber: 2404
    functionLinenumberEnd: 2422
    functionName: FormatSearchFilter
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 0
    functionsReached:
    - appendStringInfoChar
    - initStringInfo
    - appendStringInfoString
    - strncmp
    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:2445,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2446,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2452,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2453,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth.c:2467,1
    - Dst: sendAuthRequest
      Src: /src/postgres/src/backend/libpq/auth.c:2473,1
    - Dst: recv_password_packet
      Src: /src/postgres/src/backend/libpq/auth.c:2475,1
    - Dst: InitializeLDAPConnection
      Src: /src/postgres/src/backend/libpq/auth.c:2479,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2482,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2514,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2515,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/backend/libpq/auth.c:2516,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2517,1
    - Dst: ldap_simple_bind_s
      Src: /src/postgres/src/backend/libpq/auth.c:2526,1
    - Dst: ldap_password_hook
      Src: /src/postgres/src/backend/libpq/auth.c:2528,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2531,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2532,1
    - Dst: ldap_err2string
      Src: /src/postgres/src/backend/libpq/auth.c:2535,1
    - Dst: errdetail_for_ldap
      Src: /src/postgres/src/backend/libpq/auth.c:2536,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/backend/libpq/auth.c:2537,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2538,1
    - Dst: FormatSearchFilter
      Src: /src/postgres/src/backend/libpq/auth.c:2544,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth.c:2546,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth.c:2548,1
    - Dst: ldap_search_s
      Src: /src/postgres/src/backend/libpq/auth.c:2551,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2561,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2562,1
    - Dst: ldap_err2string
      Src: /src/postgres/src/backend/libpq/auth.c:2563,1
    - Dst: errdetail_for_ldap
      Src: /src/postgres/src/backend/libpq/auth.c:2564,1
    - Dst: ldap_msgfree
      Src: /src/postgres/src/backend/libpq/auth.c:2566,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/backend/libpq/auth.c:2567,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2568,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2569,1
    - Dst: ldap_count_entries
      Src: /src/postgres/src/backend/libpq/auth.c:2573,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2577,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2578,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth.c:2579,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2582,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2583,1
    - Dst: errdetail_plural
      Src: /src/postgres/src/backend/libpq/auth.c:2584,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/backend/libpq/auth.c:2589,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2590,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2591,1
    - Dst: ldap_msgfree
      Src: /src/postgres/src/backend/libpq/auth.c:2592,1
    - Dst: ldap_first_entry
      Src: /src/postgres/src/backend/libpq/auth.c:2596,1
    - Dst: ldap_get_dn
      Src: /src/postgres/src/backend/libpq/auth.c:2597,1
    - Dst: ldap_get_option
      Src: /src/postgres/src/backend/libpq/auth.c:2602,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2603,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2604,1
    - Dst: ldap_err2string
      Src: /src/postgres/src/backend/libpq/auth.c:2606,1
    - Dst: errdetail_for_ldap
      Src: /src/postgres/src/backend/libpq/auth.c:2607,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/backend/libpq/auth.c:2608,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2609,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2610,1
    - Dst: ldap_msgfree
      Src: /src/postgres/src/backend/libpq/auth.c:2611,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/auth.c:2614,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2616,1
    - Dst: ldap_memfree
      Src: /src/postgres/src/backend/libpq/auth.c:2617,1
    - Dst: ldap_msgfree
      Src: /src/postgres/src/backend/libpq/auth.c:2618,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth.c:2621,1
    - Dst: ldap_simple_bind_s
      Src: /src/postgres/src/backend/libpq/auth.c:2626,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2630,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2631,1
    - Dst: ldap_err2string
      Src: /src/postgres/src/backend/libpq/auth.c:2632,1
    - Dst: errdetail_for_ldap
      Src: /src/postgres/src/backend/libpq/auth.c:2633,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/backend/libpq/auth.c:2634,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2635,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2636,1
    - Dst: set_authn_id
      Src: /src/postgres/src/backend/libpq/auth.c:2641,1
    - Dst: ldap_unbind
      Src: /src/postgres/src/backend/libpq/auth.c:2643,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2644,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2645,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 96
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2648
      start: 2427
    functionDepth: 6
    functionLinenumber: 2427
    functionLinenumberEnd: 2648
    functionName: CheckLDAPAuth
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached:
    - pstrdup
    - ldap_msgfree
    - errdetail
    - psprintf
    - pfree
    - ldap_err2string
    - recv_password_packet
    - ldap_get_option
    - ldap_search_s
    - strcmp
    - ldap_get_dn
    - errmsg
    - errdetail_plural
    - set_authn_id
    - ldap_password_hook
    - ldap_memfree
    - ldap_simple_bind_s
    - ldap_first_entry
    - ldap_count_entries
    - sendAuthRequest
    - ldap_unbind
    - ereport
    - InitializeLDAPConnection
    - errdetail_for_ldap
    - FormatSearchFilter
    linkageType: ''
    returnType: int
    signature: int CheckLDAPAuth(Port *port)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldap_get_option
      Src: /src/postgres/src/backend/libpq/auth.c:2660,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth.c:2663,1
    - Dst: ldap_memfree
      Src: /src/postgres/src/backend/libpq/auth.c:2664,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ldap
    argTypes:
    - LDAP*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2668
      start: 2654
    functionDepth: 1
    functionLinenumber: 2654
    functionLinenumberEnd: 2668
    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:2684,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:2698,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2700,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2701,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2721,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2722,1
    - Dst: set_authn_id
      Src: /src/postgres/src/backend/libpq/auth.c:2727,1
    - Dst: check_usermap
      Src: /src/postgres/src/backend/libpq/auth.c:2731,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2744,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2745,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2749,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2750,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2756
      start: 2678
    functionDepth: 2
    functionLinenumber: 2678
    functionLinenumberEnd: 2756
    functionName: CheckCertAuth
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached:
    - errmsg
    - Assert
    - set_authn_id
    - ereport
    - strlen
    - check_usermap
    linkageType: ''
    returnType: int
    signature: int CheckCertAuth(Port *port)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth.c:2823,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/auth.c:2832,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - packet
    - type
    - data
    - len
    argTypes:
    - radius_packet*
    - uint8
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2834
      start: 2810
    functionDepth: 1
    functionLinenumber: 2810
    functionLinenumberEnd: 2834
    functionName: radius_add_attribute
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 0
    functionsReached:
    - memcpy
    - elog
    linkageType: ''
    returnType: void
    signature: void radius_add_attribute(radius_packet *packet, uint8 type, const
      unsigned char *data, int len)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth.c:2846,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2851,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2852,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2858,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2859,1
    - Dst: sendAuthRequest
      Src: /src/postgres/src/backend/libpq/auth.c:2864,1
    - Dst: recv_password_packet
      Src: /src/postgres/src/backend/libpq/auth.c:2866,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:2870,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2872,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2873,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2874,1
    - Dst: list_head
      Src: /src/postgres/src/backend/libpq/auth.c:2881,1
    - Dst: list_head
      Src: /src/postgres/src/backend/libpq/auth.c:2882,1
    - Dst: list_head
      Src: /src/postgres/src/backend/libpq/auth.c:2883,1
    - Dst: foreach
      Src: /src/postgres/src/backend/libpq/auth.c:2884,1
    - Dst: PerformRadiusTransaction
      Src: /src/postgres/src/backend/libpq/auth.c:2886,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/auth.c:2886,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/auth.c:2887,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/auth.c:2888,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/auth.c:2889,1
    - Dst: set_authn_id
      Src: /src/postgres/src/backend/libpq/auth.c:2901,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2903,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2908,1
    - Dst: list_length
      Src: /src/postgres/src/backend/libpq/auth.c:2918,1
    - Dst: lnext
      Src: /src/postgres/src/backend/libpq/auth.c:2919,1
    - Dst: list_length
      Src: /src/postgres/src/backend/libpq/auth.c:2920,1
    - Dst: lnext
      Src: /src/postgres/src/backend/libpq/auth.c:2921,1
    - Dst: list_length
      Src: /src/postgres/src/backend/libpq/auth.c:2922,1
    - Dst: lnext
      Src: /src/postgres/src/backend/libpq/auth.c:2923,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:2927,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 1
    argNames:
    - port
    argTypes:
    - Port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2929
      start: 2836
    functionDepth: 6
    functionLinenumber: 2836
    functionLinenumberEnd: 2929
    functionName: CheckRADIUSAuth
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached:
    - errmsg
    - sendAuthRequest
    - Assert
    - pfree
    - PerformRadiusTransaction
    - set_authn_id
    - recv_password_packet
    - list_head
    - lnext
    - ereport
    - foreach
    - list_length
    - lfirst
    - strlen
    linkageType: ''
    returnType: int
    signature: int CheckRADIUSAuth(Port *port)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: pg_hton32
      Src: /src/postgres/src/backend/libpq/auth.c:2940,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/libpq/auth.c:2966,1
    - Dst: atoi
      Src: /src/postgres/src/backend/libpq/auth.c:2969,1
    - Dst: pg_getaddrinfo_all
      Src: /src/postgres/src/backend/libpq/auth.c:2971,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2974,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2975,1
    - Dst: gai_strerror
      Src: /src/postgres/src/backend/libpq/auth.c:2976,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/auth.c:2978,1
    - Dst: pg_strong_random
      Src: /src/postgres/src/backend/libpq/auth.c:2986,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:2988,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:2989,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/auth.c:2990,1
    - Dst: radius_add_attribute
      Src: /src/postgres/src/backend/libpq/auth.c:2994,1
    - Dst: radius_add_attribute
      Src: /src/postgres/src/backend/libpq/auth.c:2995,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:2995,1
    - Dst: radius_add_attribute
      Src: /src/postgres/src/backend/libpq/auth.c:2996,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:2996,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:3004,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/auth.c:3005,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:3005,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/auth.c:3006,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:3006,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/auth.c:3014,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:3014,1
    - Dst: pg_md5_binary
      Src: /src/postgres/src/backend/libpq/auth.c:3022,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:3022,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:3025,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:3026,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:3028,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/auth.c:3029,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:3035,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:3041,1
    - Dst: radius_add_attribute
      Src: /src/postgres/src/backend/libpq/auth.c:3043,1
    - Dst: pg_hton16
      Src: /src/postgres/src/backend/libpq/auth.c:3047,1
    - Dst: socket
      Src: /src/postgres/src/backend/libpq/auth.c:3049,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:3052,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:3053,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/auth.c:3054,1
    - Dst: memset
      Src: /src/postgres/src/backend/libpq/auth.c:3058,1
    - Dst: bind
      Src: /src/postgres/src/backend/libpq/auth.c:3066,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:3068,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:3069,1
    - Dst: closesocket
      Src: /src/postgres/src/backend/libpq/auth.c:3070,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/auth.c:3071,1
    - Dst: sendto
      Src: /src/postgres/src/backend/libpq/auth.c:3075,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:3078,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:3079,1
    - Dst: closesocket
      Src: /src/postgres/src/backend/libpq/auth.c:3080,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/auth.c:3081,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/auth.c:3086,1
    - Dst: gettimeofday
      Src: /src/postgres/src/backend/libpq/auth.c:3098,1
    - Dst: gettimeofday
      Src: /src/postgres/src/backend/libpq/auth.c:3108,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:3112,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:3113,1
    - Dst: closesocket
      Src: /src/postgres/src/backend/libpq/auth.c:3115,1
    - Dst: FD_ZERO
      Src: /src/postgres/src/backend/libpq/auth.c:3121,1
    - Dst: FD_SET
      Src: /src/postgres/src/backend/libpq/auth.c:3122,1
    - Dst: select
      Src: /src/postgres/src/backend/libpq/auth.c:3124,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:3131,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:3132,1
    - Dst: closesocket
      Src: /src/postgres/src/backend/libpq/auth.c:3133,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:3138,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:3139,1
    - Dst: closesocket
      Src: /src/postgres/src/backend/libpq/auth.c:3141,1
    - Dst: recvfrom
      Src: /src/postgres/src/backend/libpq/auth.c:3157,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:3161,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:3162,1
    - Dst: closesocket
      Src: /src/postgres/src/backend/libpq/auth.c:3163,1
    - Dst: pg_hton16
      Src: /src/postgres/src/backend/libpq/auth.c:3167,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:3169,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:3170,1
    - Dst: pg_ntoh16
      Src: /src/postgres/src/backend/libpq/auth.c:3171,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:3177,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:3178,1
    - Dst: pg_ntoh16
      Src: /src/postgres/src/backend/libpq/auth.c:3182,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:3184,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:3185,1
    - Dst: pg_ntoh16
      Src: /src/postgres/src/backend/libpq/auth.c:3186,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:3192,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:3193,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/auth.c:3202,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:3202,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/auth.c:3204,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/auth.c:3205,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/auth.c:3210,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/auth.c:3213,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:3213,1
    - Dst: pg_md5_binary
      Src: /src/postgres/src/backend/libpq/auth.c:3215,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth.c:3216,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:3219,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:3220,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:3222,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth.c:3225,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/libpq/auth.c:3227,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:3229,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:3230,1
    - Dst: closesocket
      Src: /src/postgres/src/backend/libpq/auth.c:3237,1
    - Dst: closesocket
      Src: /src/postgres/src/backend/libpq/auth.c:3242,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth.c:3247,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth.c:3248,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 153
    argCount: 6
    argNames:
    - server
    - secret
    - portstr
    - identifier
    - user_name
    - passwd
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3253
      start: 2931
    functionDepth: 2
    functionLinenumber: 2931
    functionLinenumberEnd: 3253
    functionName: PerformRadiusTransaction
    functionSourceFile: /src/postgres/src/backend/libpq/auth.c
    functionUses: 1
    functionsReached:
    - radius_add_attribute
    - gai_strerror
    - pg_ntoh16
    - strlen
    - pfree
    - bind
    - recvfrom
    - memcmp
    - FD_ZERO
    - memcpy
    - pg_freeaddrinfo_all
    - errmsg
    - atoi
    - pg_hton16
    - MemSet
    - socket
    - select
    - gettimeofday
    - pg_hton32
    - palloc
    - pg_strong_random
    - sendto
    - pg_getaddrinfo_all
    - memset
    - ereport
    - pg_md5_binary
    - FD_SET
    - closesocket
    linkageType: ''
    returnType: int
    signature: int PerformRadiusTransaction(const char *server, const char *secret,
      const char *portstr, const char *identifier, const char *user_name, const char
      *passwd)
  - 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: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 149
    functionName: pg_isblank
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool pg_isblank(const char c)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/libpq/hba.c:196,1
    - Dst: pg_isblank
      Src: /src/postgres/src/backend/libpq/hba.c:201,1
    - Dst: pg_isblank
      Src: /src/postgres/src/backend/libpq/hba.c:209,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/libpq/hba.c:227,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: 253
      start: 186
    functionDepth: 2
    functionLinenumber: 186
    functionLinenumberEnd: 253
    functionName: next_token
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - appendStringInfoChar
    - pg_isblank
    - resetStringInfo
    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:264,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/libpq/hba.c:266,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/hba.c:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - token
    - quoted
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 273
    functionName: make_auth_token
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - memcpy
    - palloc0
    - strlen
    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:282,1
    - Dst: pg_regfree
      Src: /src/postgres/src/backend/libpq/hba.c:283,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - token
    argTypes:
    - AuthToken*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 284
    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:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - in
    argTypes:
    - AuthToken*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 295
    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:310,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/libpq/hba.c:315,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/hba.c:316,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/hba.c:316,1
    - Dst: pg_mb2wchar_with_len
      Src: /src/postgres/src/backend/libpq/hba.c:317,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/hba.c:318,1
    - Dst: pg_regcomp
      Src: /src/postgres/src/backend/libpq/hba.c:320,1
    - Dst: pg_regerror
      Src: /src/postgres/src/backend/libpq/hba.c:326,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:327,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:328,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:329,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:331,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:334,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:338,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: 340
      start: 302
    functionDepth: 2
    functionLinenumber: 302
    functionLinenumberEnd: 340
    functionName: regcomp_auth_token
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - Assert
    - pg_regerror
    - errcontext
    - pg_regcomp
    - palloc0
    - ereport
    - psprintf
    - palloc
    - pg_mb2wchar_with_len
    - errcode
    - strlen
    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:355,1
    - Dst: palloc
      Src: /src/postgres/src/backend/libpq/hba.c:357,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/hba.c:357,1
    - Dst: pg_mb2wchar_with_len
      Src: /src/postgres/src/backend/libpq/hba.c:358,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/hba.c:358,1
    - Dst: pg_regexec
      Src: /src/postgres/src/backend/libpq/hba.c:360,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:362,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: 364
      start: 347
    functionDepth: 1
    functionLinenumber: 347
    functionLinenumberEnd: 364
    functionName: regexec_auth_token
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - pg_regexec
    - palloc
    - pg_mb2wchar_with_len
    - strlen
    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:389,1
    - Dst: next_token
      Src: /src/postgres/src/backend/libpq/hba.c:393,1
    - Dst: tokenize_expand_file
      Src: /src/postgres/src/backend/libpq/hba.c:399,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:409,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:410,1
    - Dst: make_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:410,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:411,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:415,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: 418
      start: 380
    functionDepth: 3
    functionLinenumber: 380
    functionLinenumberEnd: 418
    functionName: next_field_expand
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - pfree
    - MemoryContextSwitchTo
    - tokenize_expand_file
    - lappend
    - make_auth_token
    - initStringInfo
    - next_token
    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:451,1
    - Dst: open_auth_file
      Src: /src/postgres/src/backend/libpq/hba.c:452,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:458,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:459,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:462,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:467,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/hba.c:468,1
    - Dst: tokenize_auth_file
      Src: /src/postgres/src/backend/libpq/hba.c:472,1
    - Dst: free_auth_file
      Src: /src/postgres/src/backend/libpq/hba.c:474,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:475,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: 476
      start: 439
    functionDepth: 1
    functionLinenumber: 439
    functionLinenumberEnd: 476
    functionName: tokenize_include_file
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - Assert
    - free_auth_file
    - tokenize_auth_file
    - AbsoluteConfigLocation
    - ereport
    - open_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:507,1
    - Dst: open_auth_file
      Src: /src/postgres/src/backend/libpq/hba.c:508,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:513,1
    - Dst: tokenize_auth_file
      Src: /src/postgres/src/backend/libpq/hba.c:521,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:524,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:532,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:538,1
    - Dst: foreach
      Src: /src/postgres/src/backend/libpq/hba.c:542,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:544,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:549,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:556,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:557,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:558,1
    - Dst: free_auth_file
      Src: /src/postgres/src/backend/libpq/hba.c:563,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: 565
      start: 494
    functionDepth: 1
    functionLinenumber: 494
    functionLinenumberEnd: 565
    functionName: tokenize_expand_file
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 1
    functionsReached:
    - pfree
    - free_auth_file
    - MemoryContextSwitchTo
    - tokenize_auth_file
    - AbsoluteConfigLocation
    - pstrdup
    - foreach
    - open_auth_file
    - lappend
    - lfirst
    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:532,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:538,1
    - Dst: foreach
      Src: /src/postgres/src/backend/libpq/hba.c:542,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:544,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:549,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:556,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:557,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:558,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 530
    functionDepth: 1
    functionLinenumber: 530
    functionLinenumberEnd: 561
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 312
    functionsReached:
    - MemoryContextSwitchTo
    - pstrdup
    - foreach
    - lappend
    - 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:549,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:556,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:557,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 547
    functionDepth: 1
    functionLinenumber: 547
    functionLinenumberEnd: 559
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 312
    functionsReached:
    - MemoryContextSwitchTo
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(inc_token, inc_tokens)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FreeFile
      Src: /src/postgres/src/backend/libpq/hba.c:574,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/libpq/hba.c:579,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - file
    - depth
    argTypes:
    - FILE*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 571
    functionDepth: 1
    functionLinenumber: 571
    functionLinenumberEnd: 582
    functionName: free_auth_file
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 2
    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:609,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/hba.c:610,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:611,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:614,1
    - Dst: AllocateFile
      Src: /src/postgres/src/backend/libpq/hba.c:619,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:624,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/hba.c:625,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:626,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:631,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/libpq/hba.c:650,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: 656
      start: 596
    functionDepth: 2
    functionLinenumber: 596
    functionLinenumberEnd: 656
    functionName: open_auth_file
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 2
    functionsReached:
    - errmsg
    - ereport
    - AllocSetContextCreate
    - AllocateFile
    - psprintf
    - 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:666,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 661
    functionDepth: 0
    functionLinenumber: 661
    functionLinenumberEnd: 668
    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:701,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/libpq/hba.c:715,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:718,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/libpq/hba.c:720,1
    - Dst: feof
      Src: /src/postgres/src/backend/libpq/hba.c:725,1
    - Dst: ferror
      Src: /src/postgres/src/backend/libpq/hba.c:725,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/libpq/hba.c:736,1
    - Dst: pg_get_line_append
      Src: /src/postgres/src/backend/libpq/hba.c:738,1
    - Dst: pg_strip_crlf
      Src: /src/postgres/src/backend/libpq/hba.c:741,1
    - Dst: ferror
      Src: /src/postgres/src/backend/libpq/hba.c:762,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:767,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/libpq/hba.c:768,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:769,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:771,1
    - Dst: next_field_expand
      Src: /src/postgres/src/backend/libpq/hba.c:782,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:791,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:792,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:793,1
    - Dst: list_length
      Src: /src/postgres/src/backend/libpq/hba.c:805,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/hba.c:810,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/libpq/hba.c:810,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/hba.c:811,1
    - Dst: lsecond_node
      Src: /src/postgres/src/backend/libpq/hba.c:811,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:813,1
    - Dst: tokenize_include_file
      Src: /src/postgres/src/backend/libpq/hba.c:815,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:827,1
    - Dst: GetConfFilesInDir
      Src: /src/postgres/src/backend/libpq/hba.c:834,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/libpq/hba.c:843,1
    - Dst: tokenize_include_file
      Src: /src/postgres/src/backend/libpq/hba.c:846,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/libpq/hba.c:852,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/libpq/hba.c:853,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:859,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:860,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:873,1
    - Dst: tokenize_include_file
      Src: /src/postgres/src/backend/libpq/hba.c:876,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:896,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/libpq/hba.c:897,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:899,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:901,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:902,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:903,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:904,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:911,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/libpq/hba.c:912,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: 915
      start: 690
    functionDepth: 4
    functionLinenumber: 690
    functionLinenumberEnd: 915
    functionName: tokenize_auth_file
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 2
    functionsReached:
    - MemoryContextSwitchTo
    - feof
    - pstrdup
    - list_length
    - next_field_expand
    - psprintf
    - errcode_for_file_access
    - pfree
    - MemoryContextDelete
    - strcmp
    - linitial_node
    - errmsg
    - tokenize_include_file
    - resetStringInfo
    - linitial
    - appendStringInfoString
    - ferror
    - lappend
    - lsecond_node
    - Assert
    - appendStringInfoChar
    - ereport
    - palloc0
    - pg_get_line_append
    - AllocSetContextCreate
    - pg_strip_crlf
    - initStringInfo
    - GetConfFilesInDir
    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:929,1
    - Dst: get_role_oid
      Src: /src/postgres/src/backend/libpq/hba.c:932,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/libpq/hba.c:934,1
    - Dst: is_member_of_role_nosuper
      Src: /src/postgres/src/backend/libpq/hba.c:942,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - userid
    - role
    argTypes:
    - Oid
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 943
      start: 924
    functionDepth: 1
    functionLinenumber: 924
    functionLinenumberEnd: 943
    functionName: is_member
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 92
    functionsReached:
    - is_member_of_role_nosuper
    - get_role_oid
    - OidIsValid
    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:961,1
    - Dst: token_is_member_check
      Src: /src/postgres/src/backend/libpq/hba.c:962,1
    - Dst: is_member
      Src: /src/postgres/src/backend/libpq/hba.c:964,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:967,1
    - Dst: token_has_regexp
      Src: /src/postgres/src/backend/libpq/hba.c:969,1
    - Dst: regexec_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:971,1
    - Dst: token_matches_insensitive
      Src: /src/postgres/src/backend/libpq/hba.c:976,1
    - Dst: token_matches
      Src: /src/postgres/src/backend/libpq/hba.c:979,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: 983
      start: 953
    functionDepth: 2
    functionLinenumber: 953
    functionLinenumberEnd: 983
    functionName: check_role
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - token_has_regexp
    - regexec_auth_token
    - token_matches
    - token_is_keyword
    - token_is_member_check
    - token_matches_insensitive
    - is_member
    - lfirst
    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:961,1
    - Dst: token_is_member_check
      Src: /src/postgres/src/backend/libpq/hba.c:962,1
    - Dst: is_member
      Src: /src/postgres/src/backend/libpq/hba.c:964,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:967,1
    - Dst: token_has_regexp
      Src: /src/postgres/src/backend/libpq/hba.c:969,1
    - Dst: regexec_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:971,1
    - Dst: token_matches_insensitive
      Src: /src/postgres/src/backend/libpq/hba.c:976,1
    - Dst: token_matches
      Src: /src/postgres/src/backend/libpq/hba.c:979,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 959
    functionDepth: 2
    functionLinenumber: 959
    functionLinenumberEnd: 981
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 312
    functionsReached:
    - token_has_regexp
    - regexec_auth_token
    - token_matches
    - token_is_keyword
    - token_is_member_check
    - token_matches_insensitive
    - is_member
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(cell, tokens)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:1000,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1007,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1010,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1012,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1014,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1017,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1018,1
    - Dst: is_member
      Src: /src/postgres/src/backend/libpq/hba.c:1020,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1023,1
    - Dst: token_has_regexp
      Src: /src/postgres/src/backend/libpq/hba.c:1025,1
    - Dst: regexec_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:1027,1
    - Dst: token_matches
      Src: /src/postgres/src/backend/libpq/hba.c:1030,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 26
    argCount: 4
    argNames:
    - dbname
    - role
    - roleid
    - tokens
    argTypes:
    - char*
    - char*
    - Oid
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1034
      start: 992
    functionDepth: 2
    functionLinenumber: 992
    functionLinenumberEnd: 1034
    functionName: check_db
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - token_has_regexp
    - regexec_auth_token
    - token_matches
    - token_is_keyword
    - strcmp
    - lfirst
    - is_member
    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:1000,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1007,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1010,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1012,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1014,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1017,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1018,1
    - Dst: is_member
      Src: /src/postgres/src/backend/libpq/hba.c:1020,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1023,1
    - Dst: token_has_regexp
      Src: /src/postgres/src/backend/libpq/hba.c:1025,1
    - Dst: regexec_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:1027,1
    - Dst: token_matches
      Src: /src/postgres/src/backend/libpq/hba.c:1030,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1032
      start: 998
    functionDepth: 2
    functionLinenumber: 998
    functionLinenumberEnd: 1032
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 312
    functionsReached:
    - token_has_regexp
    - regexec_auth_token
    - token_matches
    - token_is_keyword
    - strcmp
    - lfirst
    - is_member
    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: 1040
      start: 1036
    functionDepth: 0
    functionLinenumber: 1036
    functionLinenumberEnd: 1040
    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: 1052
      start: 1042
    functionDepth: 0
    functionLinenumber: 1042
    functionLinenumberEnd: 1052
    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:1062,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/hba.c:1063,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/libpq/hba.c:1068,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/libpq/hba.c:1071,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - pattern
    - actual_hostname
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1057
    functionDepth: 2
    functionLinenumber: 1057
    functionLinenumberEnd: 1072
    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:1094,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:1106,1
    - Dst: hostname_match
      Src: /src/postgres/src/backend/libpq/hba.c:1110,1
    - Dst: getaddrinfo
      Src: /src/postgres/src/backend/libpq/hba.c:1118,1
    - Dst: ipv4eq
      Src: /src/postgres/src/backend/libpq/hba.c:1134,1
    - Dst: ipv6eq
      Src: /src/postgres/src/backend/libpq/hba.c:1143,1
    - Dst: freeaddrinfo
      Src: /src/postgres/src/backend/libpq/hba.c:1154,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/hba.c:1157,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 45
    argCount: 2
    argNames:
    - port
    - hostname
    argTypes:
    - hbaPort*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1163
      start: 1077
    functionDepth: 3
    functionLinenumber: 1077
    functionLinenumberEnd: 1163
    functionName: check_hostname
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - getaddrinfo
    - pg_getnameinfo_all
    - freeaddrinfo
    - ipv6eq
    - pstrdup
    - elog
    - hostname_match
    - ipv4eq
    linkageType: ''
    returnType: bool
    signature: bool check_hostname(hbaPort *port, const char *hostname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_range_sockaddr
      Src: /src/postgres/src/backend/libpq/hba.c:1172,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - raddr
    - addr
    - mask
    argTypes:
    - SockAddr*
    - struct sockaddr*
    - struct sockaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1177
      start: 1168
    functionDepth: 2
    functionLinenumber: 1168
    functionLinenumberEnd: 1177
    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:1196,1
    - Dst: check_ip
      Src: /src/postgres/src/backend/libpq/hba.c:1197,1
    - Dst: check_ip
      Src: /src/postgres/src/backend/libpq/hba.c:1202,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: 1204
      start: 1182
    functionDepth: 3
    functionLinenumber: 1182
    functionLinenumberEnd: 1204
    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:1219,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1221,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1222,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - raddr
    - method
    argTypes:
    - SockAddr*
    - IPCompareMethod
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1227
      start: 1209
    functionDepth: 4
    functionLinenumber: 1209
    functionLinenumberEnd: 1227
    functionName: check_same_host_or_net
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pg_foreach_ifaddr
    - ereport
    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: 1248
      start: 1244
    functionDepth: 0
    functionLinenumber: 1244
    functionLinenumberEnd: 1248
    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: 1263
      start: 1258
    functionDepth: 0
    functionLinenumber: 1258
    functionLinenumberEnd: 1263
    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: 1278
      start: 1264
    functionDepth: 0
    functionLinenumber: 1264
    functionLinenumberEnd: 1278
    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: 1300
      start: 1288
    functionDepth: 0
    functionLinenumber: 1288
    functionLinenumberEnd: 1300
    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: 1313
      start: 1301
    functionDepth: 0
    functionLinenumber: 1301
    functionLinenumberEnd: 1313
    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
      Src: /src/postgres/src/backend/libpq/hba.c:1345,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:1346,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:1348,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/hba.c:1351,1
    - Dst: list_head
      Src: /src/postgres/src/backend/libpq/hba.c:1352,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:1353,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1356,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1357,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1358,1
    - Dst: errhint
      Src: /src/postgres/src/backend/libpq/hba.c:1359,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1360,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/hba.c:1365,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1366,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1370,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1371,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1372,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1373,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1374,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1384,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1385,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1386,1
    - Dst: errhint
      Src: /src/postgres/src/backend/libpq/hba.c:1387,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1388,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1393,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1394,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1395,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1396,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1405,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1406,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1407,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1408,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1425,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1426,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1427,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1429,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:1431,1
    - Dst: lnext
      Src: /src/postgres/src/backend/libpq/hba.c:1436,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1439,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1440,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1441,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1442,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:1448,1
    - Dst: copy_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:1451,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:1451,1
    - Dst: regcomp_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:1454,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:1457,1
    - Dst: lnext
      Src: /src/postgres/src/backend/libpq/hba.c:1461,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1464,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1465,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1466,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1467,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:1473,1
    - Dst: copy_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:1476,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:1476,1
    - Dst: regcomp_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:1479,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:1482,1
    - Dst: lnext
      Src: /src/postgres/src/backend/libpq/hba.c:1488,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1491,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1492,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1493,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1494,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:1499,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1502,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1503,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1504,1
    - Dst: errhint
      Src: /src/postgres/src/backend/libpq/hba.c:1505,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1506,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/hba.c:1511,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:1517,1
    - Dst: token_is_keyword
      Src: /src/postgres/src/backend/libpq/hba.c:1522,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:1533,1
    - Dst: strchr
      Src: /src/postgres/src/backend/libpq/hba.c:1536,1
    - Dst: pg_getaddrinfo_all
      Src: /src/postgres/src/backend/libpq/hba.c:1550,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/hba.c:1553,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1561,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1562,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1563,1
    - Dst: gai_strerror
      Src: /src/postgres/src/backend/libpq/hba.c:1564,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1565,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:1567,1
    - Dst: gai_strerror
      Src: /src/postgres/src/backend/libpq/hba.c:1568,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/hba.c:1570,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/hba.c:1574,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1581,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1582,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1583,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1585,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:1587,1
    - Dst: pg_sockaddr_cidr_mask
      Src: /src/postgres/src/backend/libpq/hba.c:1592,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1595,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1596,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1597,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1599,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:1601,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:1606,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:1611,1
    - Dst: lnext
      Src: /src/postgres/src/backend/libpq/hba.c:1612,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1615,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1616,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1617,1
    - Dst: errhint
      Src: /src/postgres/src/backend/libpq/hba.c:1618,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1619,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:1624,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1627,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1628,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1629,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1630,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/hba.c:1635,1
    - Dst: pg_getaddrinfo_all
      Src: /src/postgres/src/backend/libpq/hba.c:1637,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1641,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1642,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1643,1
    - Dst: gai_strerror
      Src: /src/postgres/src/backend/libpq/hba.c:1644,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1645,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:1647,1
    - Dst: gai_strerror
      Src: /src/postgres/src/backend/libpq/hba.c:1648,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/hba.c:1650,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/hba.c:1654,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/hba.c:1657,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1661,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1662,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1663,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1664,1
    - Dst: lnext
      Src: /src/postgres/src/backend/libpq/hba.c:1674,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1677,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1678,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1679,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1680,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:1685,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1688,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1689,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1690,1
    - Dst: errhint
      Src: /src/postgres/src/backend/libpq/hba.c:1691,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1692,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/hba.c:1697,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:1706,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1708,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1714,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:1724,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1726,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1732,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1738,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1744,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1750,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:1752,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1756,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1757,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1758,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1760,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:1762,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 209
    argCount: 2
    argNames:
    - tok_line
    - elevel
    argTypes:
    - TokenizedAuthLine*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1765
      start: 1327
    functionDepth: 3
    functionLinenumber: 1327
    functionLinenumberEnd: 1765
    functionName: parse_hba_line
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - pstrdup
    - gai_strerror
    - errhint
    - psprintf
    - pfree
    - errcontext
    - memcpy
    - strcmp
    - pg_freeaddrinfo_all
    - errmsg
    - linitial
    - list_head
    - lnext
    - lappend
    - lfirst
    - pg_sockaddr_cidr_mask
    - Assert
    - copy_auth_token
    - pg_getaddrinfo_all
    - palloc0
    - ereport
    - token_is_keyword
    - regcomp_auth_token
    - errcode
    - strchr
    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:1451,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:1451,1
    - Dst: regcomp_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:1454,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:1457,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1458
      start: 1449
    functionDepth: 3
    functionLinenumber: 1449
    functionLinenumberEnd: 1458
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 312
    functionsReached:
    - copy_auth_token
    - regcomp_auth_token
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(tokencell, tokens)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: copy_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:1476,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:1476,1
    - Dst: regcomp_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:1479,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:1482,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1483
      start: 1474
    functionDepth: 3
    functionLinenumber: 1474
    functionLinenumberEnd: 1483
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 312
    functionsReached:
    - copy_auth_token
    - regcomp_auth_token
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(tokencell, tokens)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:1863,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:1865,1
    - Dst: strchr
      Src: /src/postgres/src/backend/libpq/hba.c:1866,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:1872,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:1873,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:1874,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:1875,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:1877,1
    - Dst: parse_hba_auth_opt
      Src: /src/postgres/src/backend/libpq/hba.c:1883,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:1886,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1887
      start: 1859
    functionDepth: 2
    functionLinenumber: 1859
    functionLinenumberEnd: 1887
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 312
    functionsReached:
    - lfirst
    - errmsg
    - pfree
    - errcontext
    - ereport
    - pstrdup
    - parse_hba_auth_opt
    - errcode
    - psprintf
    - strchr
    linkageType: ''
    returnType: void
    signature: void foreach(tokencell, tokens)
  - BBCount: 64
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2097,1
    - Dst: INVALID_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2105,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/hba.c:2105,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2106,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2108,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2112,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2113,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2114,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:2115,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2121,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2125,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2129,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2130,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2131,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:2132,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2142,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2143,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2144,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:2145,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2150,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: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:2157,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2163,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2167,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2173,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2174,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2175,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:2176,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2181,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2183,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2184,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2186,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2188,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2189,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2194,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2201,1
    - Dst: ldap_url_parse
      Src: /src/postgres/src/backend/libpq/hba.c:2203,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2206,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2207,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2208,1
    - Dst: ldap_err2string
      Src: /src/postgres/src/backend/libpq/hba.c:2208,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:2209,1
    - Dst: ldap_err2string
      Src: /src/postgres/src/backend/libpq/hba.c:2210,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2214,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2215,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2217,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2218,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2219,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:2220,1
    - Dst: ldap_free_urldesc
      Src: /src/postgres/src/backend/libpq/hba.c:2222,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2227,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2229,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2232,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2235,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2238,1
    - Dst: ldap_free_urldesc
      Src: /src/postgres/src/backend/libpq/hba.c:2239,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2241,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2242,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2243,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2247,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2249,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2250,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2255,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2257,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2258,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2258,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2259,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2260,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2261,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:2262,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2264,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2266,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2268,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2269,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2271,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2273,1
    - Dst: atoi
      Src: /src/postgres/src/backend/libpq/hba.c:2274,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2277,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2278,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2279,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:2280,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:2282,1
    - Dst: strcmp
      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: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2289,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2291,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2293,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2294,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2296,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2298,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2299,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2301,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2303,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2304,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2306,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2308,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2309,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2311,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2313,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2314,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2316,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2318,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2319,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2321,1
    - Dst: INVALID_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2325,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/hba.c:2325,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2326,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2328,1
    - Dst: INVALID_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2332,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/hba.c:2332,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2333,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2338,1
    - Dst: INVALID_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2341,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/hba.c:2341,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2342,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2347,1
    - Dst: INVALID_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2350,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/libpq/hba.c:2350,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2351,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2356,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2363,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2365,1
    - Dst: SplitGUCList
      Src: /src/postgres/src/backend/libpq/hba.c:2367,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2370,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2371,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2372,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:2374,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/libpq/hba.c:2382,1
    - Dst: pg_getaddrinfo_all
      Src: /src/postgres/src/backend/libpq/hba.c:2386,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:2386,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2389,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2390,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2391,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:2392,1
    - Dst: gai_strerror
      Src: /src/postgres/src/backend/libpq/hba.c:2392,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:2393,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/hba.c:2396,1
    - Dst: list_free
      Src: /src/postgres/src/backend/libpq/hba.c:2398,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/hba.c:2401,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2406,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2408,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2412,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2414,1
    - Dst: SplitGUCList
      Src: /src/postgres/src/backend/libpq/hba.c:2416,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2418,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2419,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2420,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:2422,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:2424,1
    - Dst: atoi
      Src: /src/postgres/src/backend/libpq/hba.c:2430,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:2430,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2432,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2433,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2434,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:2435,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2442,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2444,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2447,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2449,1
    - Dst: SplitGUCList
      Src: /src/postgres/src/backend/libpq/hba.c:2451,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2454,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2455,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2456,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:2458,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2464,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2466,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2469,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2471,1
    - Dst: SplitGUCList
      Src: /src/postgres/src/backend/libpq/hba.c:2473,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2476,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2477,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2478,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:2480,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2486,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2488,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2490,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2491,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2493,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2495,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2496,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2498,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2500,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2501,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2503,1
    - Dst: REQUIRE_AUTH_OPTION
      Src: /src/postgres/src/backend/libpq/hba.c:2505,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2506,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2513,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2514,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2515,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:2517,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/hba.c:2519,1
    CyclomaticComplexity: 73
    EdgeCount: 73
    ICount: 241
    argCount: 5
    argNames:
    - name
    - val
    - hbaline
    - elevel
    - err_msg
    argTypes:
    - char*
    - char*
    - HbaLine*
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2524
      start: 2086
    functionDepth: 2
    functionLinenumber: 2086
    functionLinenumberEnd: 2524
    functionName: parse_hba_auth_opt
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 1
    functionsReached:
    - pstrdup
    - gai_strerror
    - psprintf
    - ldap_err2string
    - errcontext
    - REQUIRE_AUTH_OPTION
    - strcmp
    - gettext_noop
    - pg_freeaddrinfo_all
    - errmsg
    - atoi
    - MemSet
    - ldap_url_parse
    - INVALID_AUTH_OPTION
    - lfirst
    - list_free
    - SplitGUCList
    - pg_getaddrinfo_all
    - ereport
    - ldap_free_urldesc
    - errcode
    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: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemSet
      Src: /src/postgres/src/backend/libpq/hba.c:2382,1
    - Dst: pg_getaddrinfo_all
      Src: /src/postgres/src/backend/libpq/hba.c:2386,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:2386,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2389,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2390,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2391,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:2392,1
    - Dst: gai_strerror
      Src: /src/postgres/src/backend/libpq/hba.c:2392,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:2393,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/hba.c:2396,1
    - Dst: list_free
      Src: /src/postgres/src/backend/libpq/hba.c:2398,1
    - Dst: pg_freeaddrinfo_all
      Src: /src/postgres/src/backend/libpq/hba.c:2401,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2402
      start: 2380
    functionDepth: 2
    functionLinenumber: 2380
    functionLinenumberEnd: 2402
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 312
    functionsReached:
    - lfirst
    - errmsg
    - pg_getaddrinfo_all
    - errcontext
    - ereport
    - gai_strerror
    - MemSet
    - errcode
    - list_free
    - pg_freeaddrinfo_all
    linkageType: ''
    returnType: void
    signature: void foreach(l, parsed_servers)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: atoi
      Src: /src/postgres/src/backend/libpq/hba.c:2430,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:2430,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2432,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2433,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2434,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/hba.c:2435,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2440
      start: 2428
    functionDepth: 1
    functionLinenumber: 2428
    functionLinenumberEnd: 2440
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 312
    functionsReached:
    - errmsg
    - lfirst
    - atoi
    - errcontext
    - ereport
    - errcode
    linkageType: ''
    returnType: void
    signature: void foreach(l, parsed_ports)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: get_role_oid
      Src: /src/postgres/src/backend/libpq/hba.c:2538,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:2542,1
    - Dst: check_hostname
      Src: /src/postgres/src/backend/libpq/hba.c:2588,1
    - Dst: check_ip
      Src: /src/postgres/src/backend/libpq/hba.c:2594,1
    - Dst: check_same_host_or_net
      Src: /src/postgres/src/backend/libpq/hba.c:2604,1
    - Dst: check_db
      Src: /src/postgres/src/backend/libpq/hba.c:2615,1
    - Dst: check_role
      Src: /src/postgres/src/backend/libpq/hba.c:2619,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/libpq/hba.c:2628,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 53
    argCount: 1
    argNames:
    - port
    argTypes:
    - hbaPort*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2631
      start: 2530
    functionDepth: 5
    functionLinenumber: 2530
    functionLinenumberEnd: 2631
    functionName: check_hba
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - check_role
    - check_ip
    - check_db
    - get_role_oid
    - check_same_host_or_net
    - palloc0
    - check_hostname
    - lfirst
    linkageType: ''
    returnType: void
    signature: void check_hba(hbaPort *port)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:2542,1
    - Dst: check_hostname
      Src: /src/postgres/src/backend/libpq/hba.c:2588,1
    - Dst: check_ip
      Src: /src/postgres/src/backend/libpq/hba.c:2594,1
    - Dst: check_same_host_or_net
      Src: /src/postgres/src/backend/libpq/hba.c:2604,1
    - Dst: check_db
      Src: /src/postgres/src/backend/libpq/hba.c:2615,1
    - Dst: check_role
      Src: /src/postgres/src/backend/libpq/hba.c:2619,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2625
      start: 2540
    functionDepth: 5
    functionLinenumber: 2540
    functionLinenumberEnd: 2625
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 312
    functionsReached:
    - lfirst
    - check_role
    - check_db
    - check_same_host_or_net
    - check_hostname
    - check_ip
    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:2655,1
    - Dst: tokenize_auth_file
      Src: /src/postgres/src/backend/libpq/hba.c:2662,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/hba.c:2665,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/libpq/hba.c:2666,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:2669,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:2672,1
    - Dst: parse_hba_line
      Src: /src/postgres/src/backend/libpq/hba.c:2682,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:2695,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2705,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2706,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2707,1
    - Dst: free_auth_file
      Src: /src/postgres/src/backend/libpq/hba.c:2713,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:2714,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/libpq/hba.c:2722,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/libpq/hba.c:2728,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2733
      start: 2644
    functionDepth: 5
    functionLinenumber: 2644
    functionLinenumberEnd: 2733
    functionName: load_hba
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - Assert
    - MemoryContextSwitchTo
    - tokenize_auth_file
    - free_auth_file
    - MemoryContextDelete
    - ereport
    - open_auth_file
    - lappend
    - AllocSetContextCreate
    - parse_hba_line
    - lfirst
    linkageType: ''
    returnType: bool
    signature: bool load_hba(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:2672,1
    - Dst: parse_hba_line
      Src: /src/postgres/src/backend/libpq/hba.c:2682,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:2695,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2696
      start: 2670
    functionDepth: 4
    functionLinenumber: 2670
    functionLinenumberEnd: 2696
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 312
    functionsReached:
    - lappend
    - parse_hba_line
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(line, hba_lines)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/hba.c:2761,1
    - Dst: list_head
      Src: /src/postgres/src/backend/libpq/hba.c:2762,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/libpq/hba.c:2764,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:2768,1
    - Dst: IDENT_MULTI_VALUE
      Src: /src/postgres/src/backend/libpq/hba.c:2769,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/hba.c:2770,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/hba.c:2771,1
    - Dst: lnext
      Src: /src/postgres/src/backend/libpq/hba.c:2774,1
    - Dst: IDENT_FIELD_ABSENT
      Src: /src/postgres/src/backend/libpq/hba.c:2775,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:2776,1
    - Dst: IDENT_MULTI_VALUE
      Src: /src/postgres/src/backend/libpq/hba.c:2777,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/hba.c:2778,1
    - Dst: copy_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:2781,1
    - Dst: lnext
      Src: /src/postgres/src/backend/libpq/hba.c:2784,1
    - Dst: IDENT_FIELD_ABSENT
      Src: /src/postgres/src/backend/libpq/hba.c:2785,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:2786,1
    - Dst: IDENT_MULTI_VALUE
      Src: /src/postgres/src/backend/libpq/hba.c:2787,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/hba.c:2788,1
    - Dst: copy_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:2789,1
    - Dst: regcomp_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:2795,1
    - Dst: regcomp_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:2802,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 28
    argCount: 2
    argNames:
    - tok_line
    - elevel
    argTypes:
    - TokenizedAuthLine*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2810
      start: 2750
    functionDepth: 3
    functionLinenumber: 2750
    functionLinenumberEnd: 2810
    functionName: parse_ident_line
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - Assert
    - IDENT_FIELD_ABSENT
    - linitial
    - list_head
    - lnext
    - palloc0
    - IDENT_MULTI_VALUE
    - pstrdup
    - copy_auth_token
    - regcomp_auth_token
    - lfirst
    linkageType: ''
    returnType: IdentLine
    signature: 'IdentLine *

      parse_ident_line(TokenizedAuthLine *tok_line, int elevel)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2828,1
    - Dst: get_role_oid
      Src: /src/postgres/src/backend/libpq/hba.c:2833,1
    - Dst: token_has_regexp
      Src: /src/postgres/src/backend/libpq/hba.c:2836,1
    - Dst: regexec_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:2849,1
    - Dst: pg_regerror
      Src: /src/postgres/src/backend/libpq/hba.c:2857,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2858,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2859,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2860,1
    - Dst: token_is_member_check
      Src: /src/postgres/src/backend/libpq/hba.c:2872,1
    - Dst: token_has_regexp
      Src: /src/postgres/src/backend/libpq/hba.c:2873,1
    - Dst: strstr
      Src: /src/postgres/src/backend/libpq/hba.c:2874,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2882,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/hba.c:2883,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2884,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/libpq/hba.c:2894,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/hba.c:2894,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/hba.c:2896,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/libpq/hba.c:2897,1
    - Dst: strcat
      Src: /src/postgres/src/backend/libpq/hba.c:2900,1
    - Dst: make_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:2907,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/hba.c:2909,1
    - Dst: check_role
      Src: /src/postgres/src/backend/libpq/hba.c:2917,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/libpq/hba.c:2918,1
    - Dst: free_auth_token
      Src: /src/postgres/src/backend/libpq/hba.c:2922,1
    - Dst: token_matches_insensitive
      Src: /src/postgres/src/backend/libpq/hba.c:2934,1
    - Dst: token_matches
      Src: /src/postgres/src/backend/libpq/hba.c:2940,1
    - Dst: check_role
      Src: /src/postgres/src/backend/libpq/hba.c:2945,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/libpq/hba.c:2946,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 47
    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: 2949
      start: 2818
    functionDepth: 2
    functionLinenumber: 2818
    functionLinenumberEnd: 2949
    functionName: check_ident_usermap
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - strstr
    - pg_regerror
    - token_matches
    - strlen
    - pfree
    - check_role
    - regexec_auth_token
    - make_auth_token
    - token_matches_insensitive
    - memcpy
    - strcmp
    - errmsg
    - token_has_regexp
    - strcat
    - free_auth_token
    - get_role_oid
    - token_is_member_check
    - ereport
    - palloc0
    - list_make1
    - errcode
    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:2978,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/hba.c:2983,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:2986,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:2987,1
    - Dst: check_ident_usermap
      Src: /src/postgres/src/backend/libpq/hba.c:2997,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:2997,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/hba.c:3006,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/hba.c:3007,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: 3011
      start: 2965
    functionDepth: 3
    functionLinenumber: 2965
    functionLinenumberEnd: 3011
    functionName: check_usermap
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 5
    functionsReached:
    - errmsg
    - lfirst
    - ereport
    - strcmp
    - pg_strcasecmp
    - check_ident_usermap
    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:2997,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:2997,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3002
      start: 2995
    functionDepth: 3
    functionLinenumber: 2995
    functionLinenumberEnd: 3002
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 312
    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:3033,1
    - Dst: tokenize_auth_file
      Src: /src/postgres/src/backend/libpq/hba.c:3040,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/hba.c:3043,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/libpq/hba.c:3044,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:3047,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:3050,1
    - Dst: parse_ident_line
      Src: /src/postgres/src/backend/libpq/hba.c:3059,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:3072,1
    - Dst: free_auth_file
      Src: /src/postgres/src/backend/libpq/hba.c:3076,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/libpq/hba.c:3077,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/libpq/hba.c:3085,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/libpq/hba.c:3091,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3097
      start: 3020
    functionDepth: 5
    functionLinenumber: 3020
    functionLinenumberEnd: 3097
    functionName: load_ident
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 0
    functionsReached:
    - free_auth_file
    - Assert
    - MemoryContextSwitchTo
    - tokenize_auth_file
    - MemoryContextDelete
    - parse_ident_line
    - open_auth_file
    - lappend
    - AllocSetContextCreate
    - lfirst
    linkageType: ''
    returnType: bool
    signature: bool load_ident(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/libpq/hba.c:3050,1
    - Dst: parse_ident_line
      Src: /src/postgres/src/backend/libpq/hba.c:3059,1
    - Dst: lappend
      Src: /src/postgres/src/backend/libpq/hba.c:3072,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3073
      start: 3048
    functionDepth: 4
    functionLinenumber: 3048
    functionLinenumberEnd: 3073
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 312
    functionsReached:
    - parse_ident_line
    - lappend
    - lfirst
    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:3112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - hbaPort*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3113
      start: 3109
    functionDepth: 6
    functionLinenumber: 3109
    functionLinenumberEnd: 3113
    functionName: hba_getauthmethod
    functionSourceFile: /src/postgres/src/backend/libpq/hba.c
    functionUses: 1
    functionsReached:
    - check_hba
    linkageType: ''
    returnType: void
    signature: void hba_getauthmethod(hbaPort *port)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - auth_method
    argTypes:
    - UserAuth
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3126
      start: 3122
    functionDepth: 0
    functionLinenumber: 3122
    functionLinenumberEnd: 3126
    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:92,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - port
    - buf
    argTypes:
    - Port*
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 94
    functionName: oauth_get_mechanisms
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 0
    functionsReached:
    - appendStringInfoChar
    - appendStringInfoString
    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:106,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:107,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:108,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:109,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:111,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:116,1
    - Dst: load_validator_library
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:120,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - port
    - selected_mech
    - shadow_pass
    argTypes:
    - Port*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 123
    functionName: oauth_init
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - palloc0
    - ereport
    - load_validator_library
    - strcmp
    - errcode
    linkageType: ''
    returnType: void
    signature: 'void *

      oauth_init(Port *port, const char *selected_mech, const char *shadow_pass)'
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:156,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:158,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:167,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:168,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:169,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:170,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:171,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:172,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:173,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:174,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:175,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:190,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:191,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:192,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:193,1
    - Dst: elog
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:200,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:205,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:218,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:219,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:220,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:221,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:228,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:229,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:230,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:231,1
    - Dst: sanitize_char
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:232,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:237,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:238,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:239,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:240,1
    - Dst: sanitize_char
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:241,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:248,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:249,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:250,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:252,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:253,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:254,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:255,1
    - Dst: sanitize_char
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:256,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:261,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:262,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:263,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:264,1
    - Dst: sanitize_char
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:265,1
    - Dst: parse_kvpairs_for_auth
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:268,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:270,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:271,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:272,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:273,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:277,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:278,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:279,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:280,1
    - Dst: validate
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:282,1
    - Dst: generate_error_response
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:284,1
    - Dst: explicit_bzero
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:296,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 64
    argCount: 6
    argNames:
    - opaq
    - input
    - inputlen
    - output
    - outputlen
    - logdetail
    argTypes:
    - void*
    - char*
    - int
    - char**
    - int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 299
    functionName: oauth_exchange
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 0
    functionsReached:
    - errmsg
    - sanitize_char
    - Assert
    - parse_kvpairs_for_auth
    - generate_error_response
    - ereport
    - pstrdup
    - elog
    - explicit_bzero
    - validate
    - errdetail
    - errcode
    - strlen
    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:315,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:317,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 319
    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:340,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:341,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:342,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:343,1
    - Dst: strspn
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:345,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:347,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:348,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:349,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:350,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:373,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:374,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:375,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:376,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - key
    - val
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 379
    functionName: validate_kvpair
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 0
    functionsReached:
    - errmsg
    - strspn
    - ereport
    - errdetail
    - errcode
    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:416,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
    - Dst: strchr
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:434,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:436,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:437,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:438,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:439,1
    - Dst: validate_kvpair
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:445,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:447,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:450,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:451,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:452,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:453,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:470,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:471,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:472,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:473,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:475,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 1
    argNames:
    - input
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 385
    functionDepth: 2
    functionLinenumber: 385
    functionLinenumberEnd: 477
    functionName: parse_kvpairs_for_auth
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 1
    functionsReached:
    - errmsg
    - pg_unreachable
    - validate_kvpair
    - ereport
    - strcmp
    - errdetail
    - errcode
    - strchr
    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:497,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:498,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:499,1
    - Dst: errdetail_log
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:500,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:506,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:507,1
    - Dst: strstr
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:508,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:509,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:511,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:518,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:520,1
    - Dst: escape_json
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:521,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:522,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:524,1
    - Dst: escape_json
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:525,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:527,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - ctx
    - output
    - outputlen
    argTypes:
    - struct oauth_ctx*
    - char**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 484
    functionDepth: 3
    functionLinenumber: 484
    functionLinenumberEnd: 531
    functionName: generate_error_response
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 1
    functionsReached:
    - errmsg
    - pfree
    - escape_json
    - strstr
    - appendStringInfoString
    - ereport
    - errdetail_log
    - initStringInfo
    - errcode
    linkageType: ''
    returnType: void
    signature: void generate_error_response(struct oauth_ctx *ctx, char **output,
      int *outputlen)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:566,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:581,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:581,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:583,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:584,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:585,1
    - Dst: errdetail_log
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:586,1
    - Dst: strlen
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:591,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:600,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:601,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:602,1
    - Dst: errdetail_log
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:603,1
    - Dst: strspn
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:611,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:622,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:623,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:624,1
    - Dst: errdetail_log
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:625,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - header
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 555
    functionDepth: 2
    functionLinenumber: 555
    functionLinenumberEnd: 630
    functionName: validate_token_format
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 0
    functionsReached:
    - errmsg
    - strspn
    - Assert
    - ereport
    - errdetail_log
    - pg_strncasecmp
    - errcode
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      validate_token_format(const char *header)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: validate_token_format
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:646,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:654,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:655,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:656,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:659,1
    - Dst: validate_cb
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:660,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:663,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:664,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:665,1
    - Dst: set_authn_id
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:674,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:678,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:679,1
    - Dst: errdetail_log
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:681,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:702,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:703,1
    - Dst: errdetail_log
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:705,1
    - Dst: check_usermap
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:712,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:723,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:724,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 37
    argCount: 2
    argNames:
    - port
    - auth
    argTypes:
    - Port*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 637
    functionDepth: 4
    functionLinenumber: 637
    functionLinenumberEnd: 727
    functionName: validate
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 15
    functionsReached:
    - errmsg
    - pfree
    - set_authn_id
    - palloc0
    - ereport
    - errdetail_log
    - validate_cb
    - validate_token_format
    - errcode
    - check_usermap
    linkageType: ''
    returnType: bool
    signature: bool validate(Port *port, const char *auth)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:748,1
    - Dst: load_external_function
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:751,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:759,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:760,1
    - Dst: Assert
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:764,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:772,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:773,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:775,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:783,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:784,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:788,1
    - Dst: startup_cb
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:792,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:795,1
    - Dst: MemoryContextRegisterResetCallback
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:798,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - libname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 737
    functionDepth: 1
    functionLinenumber: 737
    functionLinenumberEnd: 799
    functionName: load_validator_library
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 1
    functionsReached:
    - errmsg
    - Assert
    - load_external_function
    - MemoryContextRegisterResetCallback
    - ereport
    - palloc0
    - startup_cb
    - errdetail
    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:809,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 805
    functionDepth: 0
    functionLinenumber: 805
    functionLinenumberEnd: 810
    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:831,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:832,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:833,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:835,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:837,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:843,1
    - Dst: SplitDirectoriesString
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:845,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:848,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:849,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:850,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:852,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:861,1
    - Dst: linitial
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:861,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:865,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:866,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:867,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:868,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:876,1
    - Dst: ereport
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:880,1
    - Dst: errcode
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:881,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:882,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:884,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:886,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:890,1
    - Dst: pfree
      Src: /src/postgres/src/backend/libpq/auth-oauth.c:891,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 3
    argNames:
    - hbaline
    - elevel
    - err_msg
    argTypes:
    - HbaLine*
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 819
    functionDepth: 2
    functionLinenumber: 819
    functionLinenumberEnd: 894
    functionName: check_oauth_validator
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - list_free_deep
    - SplitDirectoriesString
    - linitial
    - errcontext
    - ereport
    - pstrdup
    - strcmp
    - errcode
    - psprintf
    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:876,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 874
    functionDepth: 0
    functionLinenumber: 874
    functionLinenumberEnd: 878
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/libpq/auth-oauth.c
    functionUses: 1
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(char, allowed, elemlist)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/utility.c:96,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/utility.c:96,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:115,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - pstmt
    argTypes:
    - PlannedStmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 120
    functionName: CommandIsReadOnly
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 0
    functionsReached:
    - elog
    - Assert
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool CommandIsReadOnly(PlannedStmt *pstmt)
  - BBCount: 121
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/utility.c:130,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:385,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:391,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/utility.c:392,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 154
    argCount: 1
    argNames:
    - parsetree
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 395
    functionName: ClassifyUtilityCommandAsReadOnly
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 0
    functionsReached:
    - nodeTag
    - elog
    linkageType: ''
    returnType: int
    signature: int ClassifyUtilityCommandAsReadOnly(Node *parsetree)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/utility.c:407,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/utility.c:408,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/utility.c:410,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - cmdname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 403
    functionDepth: 1
    functionLinenumber: 403
    functionLinenumberEnd: 412
    functionName: PreventCommandIfReadOnly
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 10
    functionsReached:
    - errmsg
    - errcode
    - ereport
    linkageType: ''
    returnType: void
    signature: void PreventCommandIfReadOnly(const char *cmdname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/tcop/utility.c:424,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/utility.c:425,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/utility.c:426,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/utility.c:428,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - cmdname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 421
    functionDepth: 1
    functionLinenumber: 421
    functionLinenumberEnd: 430
    functionName: PreventCommandIfParallelMode
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - ereport
    - IsInParallelMode
    linkageType: ''
    returnType: void
    signature: void PreventCommandIfParallelMode(const char *cmdname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/tcop/utility.c:443,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/utility.c:444,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/utility.c:445,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/utility.c:447,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - cmdname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 440
    functionDepth: 1
    functionLinenumber: 440
    functionLinenumberEnd: 449
    functionName: PreventCommandDuringRecovery
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - RecoveryInProgress
    - ereport
    linkageType: ''
    returnType: void
    signature: void PreventCommandDuringRecovery(const char *cmdname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: InSecurityRestrictedOperation
      Src: /src/postgres/src/backend/tcop/utility.c:461,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/utility.c:462,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/utility.c:463,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/utility.c:465,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - cmdname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 458
    functionDepth: 1
    functionLinenumber: 458
    functionLinenumberEnd: 467
    functionName: CheckRestrictedOperation
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - InSecurityRestrictedOperation
    - ereport
    linkageType: ''
    returnType: void
    signature: void CheckRestrictedOperation(const char *cmdname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/utility.c:508,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/utility.c:508,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/utility.c:509,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/utility.c:510,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/utility.c:511,1
    - Dst: standard_ProcessUtility
      Src: /src/postgres/src/backend/tcop/utility.c:523,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: 526
      start: 498
    functionDepth: 1
    functionLinenumber: 498
    functionLinenumberEnd: 526
    functionName: ProcessUtility
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 2
    functionsReached:
    - standard_ProcessUtility
    - Assert
    - 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:554,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/tcop/utility.c:559,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/tcop/utility.c:570,1
    - Dst: ClassifyUtilityCommandAsReadOnly
      Src: /src/postgres/src/backend/tcop/utility.c:574,1
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/tcop/utility.c:576,1
    - Dst: CreateCommandTag
      Src: /src/postgres/src/backend/tcop/utility.c:578,1
    - Dst: PreventCommandIfReadOnly
      Src: /src/postgres/src/backend/tcop/utility.c:581,1
    - Dst: GetCommandTagName
      Src: /src/postgres/src/backend/tcop/utility.c:581,1
    - Dst: PreventCommandIfParallelMode
      Src: /src/postgres/src/backend/tcop/utility.c:583,1
    - Dst: GetCommandTagName
      Src: /src/postgres/src/backend/tcop/utility.c:583,1
    - Dst: PreventCommandDuringRecovery
      Src: /src/postgres/src/backend/tcop/utility.c:585,1
    - Dst: GetCommandTagName
      Src: /src/postgres/src/backend/tcop/utility.c:585,1
    - Dst: make_parsestate
      Src: /src/postgres/src/backend/tcop/utility.c:588,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/utility.c:592,1
    - Dst: BeginTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:612,1
    - Dst: foreach
      Src: /src/postgres/src/backend/tcop/utility.c:613,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/tcop/utility.c:615,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tcop/utility.c:617,1
    - Dst: SetPGVariable
      Src: /src/postgres/src/backend/tcop/utility.c:618,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/tcop/utility.c:619,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tcop/utility.c:621,1
    - Dst: SetPGVariable
      Src: /src/postgres/src/backend/tcop/utility.c:622,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/tcop/utility.c:623,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tcop/utility.c:625,1
    - Dst: SetPGVariable
      Src: /src/postgres/src/backend/tcop/utility.c:626,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/tcop/utility.c:627,1
    - Dst: EndTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:634,1
    - Dst: SetQueryCompletion
      Src: /src/postgres/src/backend/tcop/utility.c:638,1
    - Dst: PrepareTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:643,1
    - Dst: SetQueryCompletion
      Src: /src/postgres/src/backend/tcop/utility.c:647,1
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:652,1
    - Dst: FinishPreparedTransaction
      Src: /src/postgres/src/backend/tcop/utility.c:653,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: UserAbortTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:662,1
    - Dst: RequireTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:666,1
    - Dst: DefineSavepoint
      Src: /src/postgres/src/backend/tcop/utility.c:667,1
    - Dst: RequireTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:671,1
    - Dst: ReleaseSavepoint
      Src: /src/postgres/src/backend/tcop/utility.c:672,1
    - Dst: RequireTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:676,1
    - Dst: RollbackToSavepoint
      Src: /src/postgres/src/backend/tcop/utility.c:677,1
    - Dst: PerformCursorOpen
      Src: /src/postgres/src/backend/tcop/utility.c:692,1
    - Dst: CheckRestrictedOperation
      Src: /src/postgres/src/backend/tcop/utility.c:700,1
    - Dst: PerformPortalClose
      Src: /src/postgres/src/backend/tcop/utility.c:701,1
    - Dst: PerformPortalFetch
      Src: /src/postgres/src/backend/tcop/utility.c:706,1
    - Dst: ExecuteDoStmt
      Src: /src/postgres/src/backend/tcop/utility.c:710,1
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:715,1
    - Dst: CreateTableSpace
      Src: /src/postgres/src/backend/tcop/utility.c:716,1
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:721,1
    - Dst: DropTableSpace
      Src: /src/postgres/src/backend/tcop/utility.c:722,1
    - Dst: AlterTableSpaceOptions
      Src: /src/postgres/src/backend/tcop/utility.c:727,1
    - Dst: ExecuteTruncate
      Src: /src/postgres/src/backend/tcop/utility.c:731,1
    - Dst: DoCopy
      Src: /src/postgres/src/backend/tcop/utility.c:738,1
    - Dst: SetQueryCompletion
      Src: /src/postgres/src/backend/tcop/utility.c:742,1
    - Dst: CheckRestrictedOperation
      Src: /src/postgres/src/backend/tcop/utility.c:747,1
    - Dst: PrepareQuery
      Src: /src/postgres/src/backend/tcop/utility.c:748,1
    - Dst: ExecuteQuery
      Src: /src/postgres/src/backend/tcop/utility.c:753,1
    - Dst: CheckRestrictedOperation
      Src: /src/postgres/src/backend/tcop/utility.c:760,1
    - Dst: DeallocateQuery
      Src: /src/postgres/src/backend/tcop/utility.c:761,1
    - Dst: GrantRole
      Src: /src/postgres/src/backend/tcop/utility.c:766,1
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:771,1
    - Dst: createdb
      Src: /src/postgres/src/backend/tcop/utility.c:772,1
    - Dst: AlterDatabase
      Src: /src/postgres/src/backend/tcop/utility.c:777,1
    - Dst: AlterDatabaseRefreshColl
      Src: /src/postgres/src/backend/tcop/utility.c:782,1
    - Dst: AlterDatabaseSet
      Src: /src/postgres/src/backend/tcop/utility.c:787,1
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:792,1
    - Dst: DropDatabase
      Src: /src/postgres/src/backend/tcop/utility.c:793,1
    - Dst: Async_Notify
      Src: /src/postgres/src/backend/tcop/utility.c:801,1
    - Dst: CheckRestrictedOperation
      Src: /src/postgres/src/backend/tcop/utility.c:809,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/utility.c:821,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/utility.c:822,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/utility.c:824,1
    - Dst: Async_Listen
      Src: /src/postgres/src/backend/tcop/utility.c:827,1
    - Dst: CheckRestrictedOperation
      Src: /src/postgres/src/backend/tcop/utility.c:835,1
    - Dst: Async_Unlisten
      Src: /src/postgres/src/backend/tcop/utility.c:837,1
    - Dst: Async_UnlistenAll
      Src: /src/postgres/src/backend/tcop/utility.c:839,1
    - Dst: closeAllVfds
      Src: /src/postgres/src/backend/tcop/utility.c:847,1
    - Dst: load_file
      Src: /src/postgres/src/backend/tcop/utility.c:849,1
    - Dst: superuser
      Src: /src/postgres/src/backend/tcop/utility.c:849,1
    - Dst: ExecuteCallStmt
      Src: /src/postgres/src/backend/tcop/utility.c:854,1
    - Dst: castNode
      Src: /src/postgres/src/backend/tcop/utility.c:854,1
    - Dst: cluster
      Src: /src/postgres/src/backend/tcop/utility.c:858,1
    - Dst: ExecVacuum
      Src: /src/postgres/src/backend/tcop/utility.c:862,1
    - Dst: ExplainQuery
      Src: /src/postgres/src/backend/tcop/utility.c:866,1
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:870,1
    - Dst: AlterSystemSetConfigFile
      Src: /src/postgres/src/backend/tcop/utility.c:871,1
    - Dst: ExecSetVariableStmt
      Src: /src/postgres/src/backend/tcop/utility.c:875,1
    - Dst: GetPGVariable
      Src: /src/postgres/src/backend/tcop/utility.c:882,1
    - Dst: CheckRestrictedOperation
      Src: /src/postgres/src/backend/tcop/utility.c:888,1
    - Dst: DiscardCommand
      Src: /src/postgres/src/backend/tcop/utility.c:889,1
    - Dst: CreateEventTrigger
      Src: /src/postgres/src/backend/tcop/utility.c:894,1
    - Dst: AlterEventTrigger
      Src: /src/postgres/src/backend/tcop/utility.c:899,1
    - Dst: CreateRole
      Src: /src/postgres/src/backend/tcop/utility.c:907,1
    - Dst: AlterRole
      Src: /src/postgres/src/backend/tcop/utility.c:912,1
    - Dst: AlterRoleSet
      Src: /src/postgres/src/backend/tcop/utility.c:917,1
    - Dst: DropRole
      Src: /src/postgres/src/backend/tcop/utility.c:922,1
    - Dst: ReassignOwnedObjects
      Src: /src/postgres/src/backend/tcop/utility.c:927,1
    - Dst: RequireTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:936,1
    - Dst: LockTableCommand
      Src: /src/postgres/src/backend/tcop/utility.c:937,1
    - Dst: WarnNoTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:941,1
    - Dst: AfterTriggerSetState
      Src: /src/postgres/src/backend/tcop/utility.c:942,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/tcop/utility.c:946,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/tcop/utility.c:946,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/utility.c:947,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/utility.c:948,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/utility.c:950,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/utility.c:952,1
    - Dst: RequestCheckpoint
      Src: /src/postgres/src/backend/tcop/utility.c:955,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/tcop/utility.c:956,1
    - Dst: EventTriggerSupportsObjectType
      Src: /src/postgres/src/backend/tcop/utility.c:968,1
    - Dst: ProcessUtilitySlow
      Src: /src/postgres/src/backend/tcop/utility.c:969,1
    - Dst: ExecuteGrantStmt
      Src: /src/postgres/src/backend/tcop/utility.c:973,1
    - Dst: EventTriggerSupportsObjectType
      Src: /src/postgres/src/backend/tcop/utility.c:981,1
    - Dst: ProcessUtilitySlow
      Src: /src/postgres/src/backend/tcop/utility.c:982,1
    - Dst: ExecDropStmt
      Src: /src/postgres/src/backend/tcop/utility.c:986,1
    - Dst: EventTriggerSupportsObjectType
      Src: /src/postgres/src/backend/tcop/utility.c:994,1
    - Dst: ProcessUtilitySlow
      Src: /src/postgres/src/backend/tcop/utility.c:995,1
    - Dst: ExecRenameStmt
      Src: /src/postgres/src/backend/tcop/utility.c:999,1
    - Dst: EventTriggerSupportsObjectType
      Src: /src/postgres/src/backend/tcop/utility.c:1007,1
    - Dst: ProcessUtilitySlow
      Src: /src/postgres/src/backend/tcop/utility.c:1008,1
    - Dst: ExecAlterObjectDependsStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1012,1
    - Dst: EventTriggerSupportsObjectType
      Src: /src/postgres/src/backend/tcop/utility.c:1020,1
    - Dst: ProcessUtilitySlow
      Src: /src/postgres/src/backend/tcop/utility.c:1021,1
    - Dst: ExecAlterObjectSchemaStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1025,1
    - Dst: EventTriggerSupportsObjectType
      Src: /src/postgres/src/backend/tcop/utility.c:1033,1
    - Dst: ProcessUtilitySlow
      Src: /src/postgres/src/backend/tcop/utility.c:1034,1
    - Dst: ExecAlterOwnerStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1038,1
    - Dst: EventTriggerSupportsObjectType
      Src: /src/postgres/src/backend/tcop/utility.c:1046,1
    - Dst: ProcessUtilitySlow
      Src: /src/postgres/src/backend/tcop/utility.c:1047,1
    - Dst: CommentObject
      Src: /src/postgres/src/backend/tcop/utility.c:1051,1
    - Dst: EventTriggerSupportsObjectType
      Src: /src/postgres/src/backend/tcop/utility.c:1059,1
    - Dst: ProcessUtilitySlow
      Src: /src/postgres/src/backend/tcop/utility.c:1060,1
    - Dst: ExecSecLabelStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1064,1
    - Dst: ProcessUtilitySlow
      Src: /src/postgres/src/backend/tcop/utility.c:1070,1
    - Dst: free_parsestate
      Src: /src/postgres/src/backend/tcop/utility.c:1076,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/tcop/utility.c:1083,1
    CyclomaticComplexity: 89
    EdgeCount: 89
    ICount: 274
    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: 1084
      start: 542
    functionDepth: 6
    functionLinenumber: 542
    functionLinenumberEnd: 1084
    functionName: standard_ProcessUtility
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 2
    functionsReached:
    - PrepareQuery
    - PerformPortalClose
    - UserAbortTransactionBlock
    - PerformPortalFetch
    - GetUserId
    - foreach
    - CreateCommandTag
    - createdb
    - superuser
    - GetPGVariable
    - CheckRestrictedOperation
    - Async_Listen
    - AfterTriggerSetState
    - EventTriggerSupportsObjectType
    - BeginTransactionBlock
    - ExecVacuum
    - AlterRole
    - PerformCursorOpen
    - DropTableSpace
    - ClassifyUtilityCommandAsReadOnly
    - DefineSavepoint
    - ExecSecLabelStmt
    - ExecAlterOwnerStmt
    - cluster
    - castNode
    - AlterEventTrigger
    - RecoveryInProgress
    - Async_Unlisten
    - ReleaseSavepoint
    - IsInParallelMode
    - RequireTransactionBlock
    - CommentObject
    - nodeTag
    - errmsg
    - ExecRenameStmt
    - ExplainQuery
    - PreventCommandDuringRecovery
    - AlterTableSpaceOptions
    - ProcessUtilitySlow
    - PreventCommandIfParallelMode
    - free_parsestate
    - ExecDropStmt
    - GrantRole
    - has_privs_of_role
    - copyObject
    - ReassignOwnedObjects
    - DeallocateQuery
    - GetCommandTagName
    - CreateTableSpace
    - AlterDatabaseRefreshColl
    - PreventCommandIfReadOnly
    - DropRole
    - IsTransactionBlock
    - AlterDatabaseSet
    - DiscardCommand
    - ExecuteQuery
    - CommandCounterIncrement
    - DoCopy
    - ExecSetVariableStmt
    - LockTableCommand
    - FinishPreparedTransaction
    - load_file
    - CreateEventTrigger
    - list_make1
    - Async_Notify
    - ereport
    - ExecAlterObjectSchemaStmt
    - ExecuteGrantStmt
    - EndTransactionBlock
    - PreventInTransactionBlock
    - PrepareTransactionBlock
    - AlterSystemSetConfigFile
    - RequestCheckpoint
    - errdetail
    - AlterDatabase
    - closeAllVfds
    - ExecuteCallStmt
    - AlterRoleSet
    - ExecAlterObjectDependsStmt
    - CreateRole
    - DropDatabase
    - SetPGVariable
    - strcmp
    - make_parsestate
    - WarnNoTransactionBlock
    - lfirst
    - SetQueryCompletion
    - Async_UnlistenAll
    - check_stack_depth
    - ExecuteTruncate
    - RollbackToSavepoint
    - ExecuteDoStmt
    - errcode
    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: 100
    BranchProfiles: []
    Callsites:
    - Dst: EventTriggerBeginCompleteQuery
      Src: /src/postgres/src/backend/tcop/utility.c:1110,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/tcop/utility.c:1113,1
    - Dst: EventTriggerDDLCommandStart
      Src: /src/postgres/src/backend/tcop/utility.c:1116,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/utility.c:1118,1
    - Dst: CreateSchemaCommand
      Src: /src/postgres/src/backend/tcop/utility.c:1124,1
    - Dst: transformCreateStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1143,1
    - Dst: linitial
      Src: /src/postgres/src/backend/tcop/utility.c:1153,1
    - Dst: list_delete_first
      Src: /src/postgres/src/backend/tcop/utility.c:1155,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/utility.c:1157,1
    - Dst: DefineRelation
      Src: /src/postgres/src/backend/tcop/utility.c:1167,1
    - Dst: EventTriggerCollectSimpleCommand
      Src: /src/postgres/src/backend/tcop/utility.c:1171,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/tcop/utility.c:1179,1
    - Dst: transformRelOptions
      Src: /src/postgres/src/backend/tcop/utility.c:1185,1
    - Dst: heap_reloptions
      Src: /src/postgres/src/backend/tcop/utility.c:1191,1
    - Dst: NewRelationCreateToastTable
      Src: /src/postgres/src/backend/tcop/utility.c:1195,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/utility.c:1198,1
    - Dst: DefineRelation
      Src: /src/postgres/src/backend/tcop/utility.c:1206,1
    - Dst: CreateForeignTable
      Src: /src/postgres/src/backend/tcop/utility.c:1210,1
    - Dst: EventTriggerCollectSimpleCommand
      Src: /src/postgres/src/backend/tcop/utility.c:1212,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/utility.c:1216,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/utility.c:1227,1
    - Dst: expandTableLikeClause
      Src: /src/postgres/src/backend/tcop/utility.c:1229,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/tcop/utility.c:1230,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/tcop/utility.c:1241,1
    - Dst: ProcessUtility
      Src: /src/postgres/src/backend/tcop/utility.c:1248,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/tcop/utility.c:1260,1
    - Dst: foreach
      Src: /src/postgres/src/backend/tcop/utility.c:1283,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/tcop/utility.c:1285,1
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:1291,1
    - Dst: AlterTableGetLockLevel
      Src: /src/postgres/src/backend/tcop/utility.c:1302,1
    - Dst: AlterTableLookupRelation
      Src: /src/postgres/src/backend/tcop/utility.c:1303,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/tcop/utility.c:1305,1
    - Dst: EventTriggerAlterTableStart
      Src: /src/postgres/src/backend/tcop/utility.c:1317,1
    - Dst: EventTriggerAlterTableRelid
      Src: /src/postgres/src/backend/tcop/utility.c:1318,1
    - Dst: AlterTable
      Src: /src/postgres/src/backend/tcop/utility.c:1321,1
    - Dst: EventTriggerAlterTableEnd
      Src: /src/postgres/src/backend/tcop/utility.c:1324,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/utility.c:1327,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/utility.c:1328,1
    - Dst: AlterDomainDefault
      Src: /src/postgres/src/backend/tcop/utility.c:1353,1
    - Dst: AlterDomainNotNull
      Src: /src/postgres/src/backend/tcop/utility.c:1358,1
    - Dst: AlterDomainNotNull
      Src: /src/postgres/src/backend/tcop/utility.c:1363,1
    - Dst: AlterDomainAddConstraint
      Src: /src/postgres/src/backend/tcop/utility.c:1368,1
    - Dst: AlterDomainDropConstraint
      Src: /src/postgres/src/backend/tcop/utility.c:1374,1
    - Dst: AlterDomainValidateConstraint
      Src: /src/postgres/src/backend/tcop/utility.c:1381,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:1385,1
    - Dst: DefineAggregate
      Src: /src/postgres/src/backend/tcop/utility.c:1403,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/utility.c:1409,1
    - Dst: DefineOperator
      Src: /src/postgres/src/backend/tcop/utility.c:1410,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/utility.c:1414,1
    - Dst: DefineType
      Src: /src/postgres/src/backend/tcop/utility.c:1415,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/utility.c:1420,1
    - Dst: DefineTSParser
      Src: /src/postgres/src/backend/tcop/utility.c:1421,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/utility.c:1425,1
    - Dst: DefineTSDictionary
      Src: /src/postgres/src/backend/tcop/utility.c:1426,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/utility.c:1430,1
    - Dst: DefineTSTemplate
      Src: /src/postgres/src/backend/tcop/utility.c:1431,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/utility.c:1435,1
    - Dst: DefineTSConfiguration
      Src: /src/postgres/src/backend/tcop/utility.c:1436,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/utility.c:1441,1
    - Dst: DefineCollation
      Src: /src/postgres/src/backend/tcop/utility.c:1442,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:1448,1
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:1464,1
    - Dst: RangeVarGetRelidExtended
      Src: /src/postgres/src/backend/tcop/utility.c:1479,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/tcop/utility.c:1496,1
    - Dst: find_all_inheritors
      Src: /src/postgres/src/backend/tcop/utility.c:1501,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/tcop/utility.c:1504,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/tcop/utility.c:1505,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:1511,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/utility.c:1516,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/utility.c:1517,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/utility.c:1518,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/utility.c:1520,1
    - Dst: list_length
      Src: /src/postgres/src/backend/tcop/utility.c:1524,1
    - Dst: list_free
      Src: /src/postgres/src/backend/tcop/utility.c:1525,1
    - Dst: transformIndexStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1540,1
    - Dst: EventTriggerAlterTableStart
      Src: /src/postgres/src/backend/tcop/utility.c:1543,1
    - Dst: DefineIndex
      Src: /src/postgres/src/backend/tcop/utility.c:1545,1
    - Dst: EventTriggerCollectSimpleCommand
      Src: /src/postgres/src/backend/tcop/utility.c:1562,1
    - Dst: EventTriggerAlterTableEnd
      Src: /src/postgres/src/backend/tcop/utility.c:1565,1
    - Dst: ExecReindex
      Src: /src/postgres/src/backend/tcop/utility.c:1570,1
    - Dst: CreateExtension
      Src: /src/postgres/src/backend/tcop/utility.c:1577,1
    - Dst: ExecAlterExtensionStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1581,1
    - Dst: ExecAlterExtensionContentsStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1585,1
    - Dst: CreateForeignDataWrapper
      Src: /src/postgres/src/backend/tcop/utility.c:1590,1
    - Dst: AlterForeignDataWrapper
      Src: /src/postgres/src/backend/tcop/utility.c:1594,1
    - Dst: CreateForeignServer
      Src: /src/postgres/src/backend/tcop/utility.c:1598,1
    - Dst: AlterForeignServer
      Src: /src/postgres/src/backend/tcop/utility.c:1602,1
    - Dst: CreateUserMapping
      Src: /src/postgres/src/backend/tcop/utility.c:1606,1
    - Dst: AlterUserMapping
      Src: /src/postgres/src/backend/tcop/utility.c:1610,1
    - Dst: RemoveUserMapping
      Src: /src/postgres/src/backend/tcop/utility.c:1614,1
    - Dst: ImportForeignSchema
      Src: /src/postgres/src/backend/tcop/utility.c:1620,1
    - Dst: DefineCompositeType
      Src: /src/postgres/src/backend/tcop/utility.c:1629,1
    - Dst: DefineEnum
      Src: /src/postgres/src/backend/tcop/utility.c:1635,1
    - Dst: DefineRange
      Src: /src/postgres/src/backend/tcop/utility.c:1639,1
    - Dst: AlterEnum
      Src: /src/postgres/src/backend/tcop/utility.c:1643,1
    - Dst: EventTriggerAlterTableStart
      Src: /src/postgres/src/backend/tcop/utility.c:1647,1
    - Dst: DefineView
      Src: /src/postgres/src/backend/tcop/utility.c:1648,1
    - Dst: EventTriggerCollectSimpleCommand
      Src: /src/postgres/src/backend/tcop/utility.c:1650,1
    - Dst: EventTriggerAlterTableEnd
      Src: /src/postgres/src/backend/tcop/utility.c:1654,1
    - Dst: CreateFunction
      Src: /src/postgres/src/backend/tcop/utility.c:1658,1
    - Dst: AlterFunction
      Src: /src/postgres/src/backend/tcop/utility.c:1662,1
    - Dst: DefineRule
      Src: /src/postgres/src/backend/tcop/utility.c:1666,1
    - Dst: DefineSequence
      Src: /src/postgres/src/backend/tcop/utility.c:1670,1
    - Dst: AlterSequence
      Src: /src/postgres/src/backend/tcop/utility.c:1674,1
    - Dst: ExecCreateTableAs
      Src: /src/postgres/src/backend/tcop/utility.c:1678,1
    - Dst: EventTriggerInhibitCommandCollection
      Src: /src/postgres/src/backend/tcop/utility.c:1690,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/tcop/utility.c:1691,1
    - Dst: ExecRefreshMatView
      Src: /src/postgres/src/backend/tcop/utility.c:1693,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/backend/tcop/utility.c:1696,1
    - Dst: EventTriggerUndoInhibitCommandCollection
      Src: /src/postgres/src/backend/tcop/utility.c:1698,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/tcop/utility.c:1700,1
    - Dst: CreateTrigger
      Src: /src/postgres/src/backend/tcop/utility.c:1704,1
    - Dst: CreateProceduralLanguage
      Src: /src/postgres/src/backend/tcop/utility.c:1711,1
    - Dst: DefineDomain
      Src: /src/postgres/src/backend/tcop/utility.c:1715,1
    - Dst: CreateConversionCommand
      Src: /src/postgres/src/backend/tcop/utility.c:1719,1
    - Dst: CreateCast
      Src: /src/postgres/src/backend/tcop/utility.c:1723,1
    - Dst: DefineOpClass
      Src: /src/postgres/src/backend/tcop/utility.c:1727,1
    - Dst: DefineOpFamily
      Src: /src/postgres/src/backend/tcop/utility.c:1733,1
    - Dst: CreateTransform
      Src: /src/postgres/src/backend/tcop/utility.c:1743,1
    - Dst: AlterOpFamily
      Src: /src/postgres/src/backend/tcop/utility.c:1747,1
    - Dst: AlterTSDictionary
      Src: /src/postgres/src/backend/tcop/utility.c:1753,1
    - Dst: AlterTSConfiguration
      Src: /src/postgres/src/backend/tcop/utility.c:1757,1
    - Dst: AlterTableMoveAll
      Src: /src/postgres/src/backend/tcop/utility.c:1768,1
    - Dst: ExecDropStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1774,1
    - Dst: ExecRenameStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1780,1
    - Dst: ExecAlterObjectDependsStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1785,1
    - Dst: ExecAlterObjectSchemaStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1791,1
    - Dst: ExecAlterOwnerStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1796,1
    - Dst: AlterOperator
      Src: /src/postgres/src/backend/tcop/utility.c:1800,1
    - Dst: AlterType
      Src: /src/postgres/src/backend/tcop/utility.c:1804,1
    - Dst: CommentObject
      Src: /src/postgres/src/backend/tcop/utility.c:1808,1
    - Dst: ExecuteGrantStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1812,1
    - Dst: DropOwnedObjects
      Src: /src/postgres/src/backend/tcop/utility.c:1818,1
    - Dst: ExecAlterDefaultPrivilegesStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1824,1
    - Dst: EventTriggerCollectAlterDefPrivs
      Src: /src/postgres/src/backend/tcop/utility.c:1825,1
    - Dst: CreatePolicy
      Src: /src/postgres/src/backend/tcop/utility.c:1830,1
    - Dst: AlterPolicy
      Src: /src/postgres/src/backend/tcop/utility.c:1834,1
    - Dst: ExecSecLabelStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1838,1
    - Dst: CreateAccessMethod
      Src: /src/postgres/src/backend/tcop/utility.c:1842,1
    - Dst: CreatePublication
      Src: /src/postgres/src/backend/tcop/utility.c:1846,1
    - Dst: AlterPublication
      Src: /src/postgres/src/backend/tcop/utility.c:1850,1
    - Dst: CreateSubscription
      Src: /src/postgres/src/backend/tcop/utility.c:1860,1
    - Dst: AlterSubscription
      Src: /src/postgres/src/backend/tcop/utility.c:1866,1
    - Dst: DropSubscription
      Src: /src/postgres/src/backend/tcop/utility.c:1872,1
    - Dst: linitial
      Src: /src/postgres/src/backend/tcop/utility.c:1881,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/utility.c:1883,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/utility.c:1884,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/utility.c:1885,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/utility.c:1886,1
    - Dst: RangeVarGetRelid
      Src: /src/postgres/src/backend/tcop/utility.c:1899,1
    - Dst: transformStatsStmt
      Src: /src/postgres/src/backend/tcop/utility.c:1902,1
    - Dst: CreateStatistics
      Src: /src/postgres/src/backend/tcop/utility.c:1904,1
    - Dst: AlterStatistics
      Src: /src/postgres/src/backend/tcop/utility.c:1909,1
    - Dst: AlterCollation
      Src: /src/postgres/src/backend/tcop/utility.c:1913,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:1917,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/utility.c:1918,1
    - Dst: EventTriggerCollectSimpleCommand
      Src: /src/postgres/src/backend/tcop/utility.c:1927,1
    - Dst: EventTriggerSQLDrop
      Src: /src/postgres/src/backend/tcop/utility.c:1932,1
    - Dst: EventTriggerDDLCommandEnd
      Src: /src/postgres/src/backend/tcop/utility.c:1933,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/backend/tcop/utility.c:1936,1
    - Dst: EventTriggerEndCompleteQuery
      Src: /src/postgres/src/backend/tcop/utility.c:1939,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/tcop/utility.c:1941,1
    CyclomaticComplexity: 109
    EdgeCount: 109
    ICount: 387
    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: 1942
      start: 1091
    functionDepth: 3
    functionLinenumber: 1091
    functionLinenumberEnd: 1942
    functionName: ProcessUtilitySlow
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 1
    functionsReached:
    - CreatePolicy
    - list_delete_first
    - DefineTSParser
    - AlterEnum
    - AlterOperator
    - CreateTransform
    - EventTriggerDDLCommandEnd
    - DefineType
    - foreach
    - DefineOpClass
    - EventTriggerAlterTableEnd
    - get_rel_relkind
    - RemoveUserMapping
    - AlterForeignDataWrapper
    - AlterTSDictionary
    - DropSubscription
    - DefineOpFamily
    - DefineCompositeType
    - DefineAggregate
    - IsA
    - DefineSequence
    - ExecAlterExtensionContentsStmt
    - DefineView
    - ExecCreateTableAs
    - ExecRefreshMatView
    - NewRelationCreateToastTable
    - AlterTable
    - DropOwnedObjects
    - ExecSecLabelStmt
    - ExecAlterOwnerStmt
    - DefineCollation
    - list_length
    - AlterFunction
    - DefineIndex
    - DefineOperator
    - AlterDomainAddConstraint
    - list_concat
    - DefineRule
    - EventTriggerCollectSimpleCommand
    - AlterSequence
    - CommentObject
    - AlterPolicy
    - CreateSubscription
    - CreateProceduralLanguage
    - nodeTag
    - errmsg
    - DefineEnum
    - ExecRenameStmt
    - ImportForeignSchema
    - EventTriggerInhibitCommandCollection
    - linitial
    - DefineTSTemplate
    - EventTriggerUndoInhibitCommandCollection
    - AlterDomainDefault
    - DefineRelation
    - EventTriggerSQLDrop
    - CreateForeignDataWrapper
    - CreateAccessMethod
    - ExecDropStmt
    - list_free
    - AlterCollation
    - PG_END_TRY
    - AlterForeignServer
    - EventTriggerAlterTableRelid
    - AlterOpFamily
    - AlterTableLookupRelation
    - lfirst_oid
    - ExecReindex
    - heap_reloptions
    - CreateForeignTable
    - ExecAlterDefaultPrivilegesStmt
    - ProcessUtility
    - AlterDomainDropConstraint
    - makeNode
    - find_all_inheritors
    - CreateUserMapping
    - transformIndexStmt
    - transformStatsStmt
    - RangeVarGetRelid
    - AlterPublication
    - CreateCast
    - CreateExtension
    - CreateTrigger
    - CommandCounterIncrement
    - EventTriggerEndCompleteQuery
    - expandTableLikeClause
    - CreateSchemaCommand
    - elog
    - AlterTableMoveAll
    - RangeVarGetRelidExtended
    - AlterTableGetLockLevel
    - Assert
    - EventTriggerAlterTableStart
    - EventTriggerBeginCompleteQuery
    - AlterTSConfiguration
    - ereport
    - ExecAlterObjectSchemaStmt
    - CreateStatistics
    - ExecuteGrantStmt
    - AlterDomainValidateConstraint
    - DefineDomain
    - EventTriggerCollectAlterDefPrivs
    - PreventInTransactionBlock
    - CreatePublication
    - AlterStatistics
    - CreateForeignServer
    - DefineTSConfiguration
    - errdetail
    - ExecAlterExtensionStmt
    - ExecAlterObjectDependsStmt
    - EventTriggerDDLCommandStart
    - CreateConversionCommand
    - AlterDomainNotNull
    - DefineTSDictionary
    - AlterType
    - DefineRange
    - AlterUserMapping
    - AlterSubscription
    - OidIsValid
    - transformCreateStmt
    - PG_FINALLY
    - lfirst
    - PG_TRY
    - transformRelOptions
    - CreateFunction
    - errcode
    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:1504,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/tcop/utility.c:1505,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:1511,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/utility.c:1516,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/utility.c:1517,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/utility.c:1518,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/utility.c:1520,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1522
      start: 1502
    functionDepth: 1
    functionLinenumber: 1502
    functionLinenumberEnd: 1522
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 314
    functionsReached:
    - errmsg
    - get_rel_relkind
    - ereport
    - elog
    - lfirst_oid
    - errdetail
    - errcode
    linkageType: ''
    returnType: void
    signature: void foreach(lc, inheritors)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EventTriggerAlterTableEnd
      Src: /src/postgres/src/backend/tcop/utility.c:1968,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/tcop/utility.c:1971,1
    - Dst: ProcessUtility
      Src: /src/postgres/src/backend/tcop/utility.c:1978,1
    - Dst: EventTriggerAlterTableStart
      Src: /src/postgres/src/backend/tcop/utility.c:1987,1
    - Dst: EventTriggerAlterTableRelid
      Src: /src/postgres/src/backend/tcop/utility.c:1988,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - stmt
    - context
    argTypes:
    - Node*
    - AlterTableUtilityContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1989
      start: 1958
    functionDepth: 2
    functionLinenumber: 1958
    functionLinenumberEnd: 1989
    functionName: ProcessUtilityForAlterTable
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 0
    functionsReached:
    - EventTriggerAlterTableStart
    - EventTriggerAlterTableRelid
    - ProcessUtility
    - EventTriggerAlterTableEnd
    - makeNode
    linkageType: ''
    returnType: void
    signature: void ProcessUtilityForAlterTable(Node *stmt, AlterTableUtilityContext
      *context)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/tcop/utility.c:2001,1
    - Dst: RemoveRelations
      Src: /src/postgres/src/backend/tcop/utility.c:2010,1
    - Dst: RemoveObjects
      Src: /src/postgres/src/backend/tcop/utility.c:2013,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - stmt
    - isTopLevel
    argTypes:
    - DropStmt*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2016
      start: 1994
    functionDepth: 2
    functionLinenumber: 1994
    functionLinenumberEnd: 2016
    functionName: ExecDropStmt
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 2
    functionsReached:
    - RemoveObjects
    - RemoveRelations
    - PreventInTransactionBlock
    linkageType: ''
    returnType: void
    signature: void ExecDropStmt(DropStmt *stmt, bool isTopLevel)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/utility.c:2030,1
    - Dst: GetPortalByName
      Src: /src/postgres/src/backend/tcop/utility.c:2045,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/backend/tcop/utility.c:2046,1
    - Dst: FetchPreparedStatement
      Src: /src/postgres/src/backend/tcop/utility.c:2056,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 1
    argNames:
    - parsetree
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2073
      start: 2027
    functionDepth: 1
    functionLinenumber: 2027
    functionLinenumberEnd: 2073
    functionName: UtilityReturnsTuples
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 0
    functionsReached:
    - nodeTag
    - PortalIsValid
    - FetchPreparedStatement
    - GetPortalByName
    linkageType: ''
    returnType: bool
    signature: bool UtilityReturnsTuples(Node *parsetree)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/utility.c:2086,1
    - Dst: CallStmtResultDesc
      Src: /src/postgres/src/backend/tcop/utility.c:2089,1
    - Dst: GetPortalByName
      Src: /src/postgres/src/backend/tcop/utility.c:2098,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/backend/tcop/utility.c:2099,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/tcop/utility.c:2101,1
    - Dst: FetchPreparedStatement
      Src: /src/postgres/src/backend/tcop/utility.c:2109,1
    - Dst: FetchPreparedStatementResultDesc
      Src: /src/postgres/src/backend/tcop/utility.c:2112,1
    - Dst: ExplainResultDesc
      Src: /src/postgres/src/backend/tcop/utility.c:2116,1
    - Dst: GetPGVariableResultDesc
      Src: /src/postgres/src/backend/tcop/utility.c:2122,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 1
    argNames:
    - parsetree
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2128
      start: 2083
    functionDepth: 4
    functionLinenumber: 2083
    functionLinenumberEnd: 2128
    functionName: UtilityTupleDescriptor
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 0
    functionsReached:
    - nodeTag
    - CreateTupleDescCopy
    - ExplainResultDesc
    - CallStmtResultDesc
    - FetchPreparedStatementResultDesc
    - FetchPreparedStatement
    - PortalIsValid
    - GetPGVariableResultDesc
    - GetPortalByName
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc UtilityTupleDescriptor(Node *parsetree)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: UtilityReturnsTuples
      Src: /src/postgres/src/backend/tcop/utility.c:2153,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - parsetree
    argTypes:
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2160
      start: 2136
    functionDepth: 2
    functionLinenumber: 2136
    functionLinenumberEnd: 2160
    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:2183,1
    - Dst: castNode
      Src: /src/postgres/src/backend/tcop/utility.c:2186,1
    - Dst: UtilityContainsQuery
      Src: /src/postgres/src/backend/tcop/utility.c:2188,1
    - Dst: castNode
      Src: /src/postgres/src/backend/tcop/utility.c:2192,1
    - Dst: UtilityContainsQuery
      Src: /src/postgres/src/backend/tcop/utility.c:2194,1
    - Dst: castNode
      Src: /src/postgres/src/backend/tcop/utility.c:2198,1
    - Dst: UtilityContainsQuery
      Src: /src/postgres/src/backend/tcop/utility.c:2200,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - parsetree
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2206
      start: 2178
    functionDepth: 1
    functionLinenumber: 2178
    functionLinenumberEnd: 2206
    functionName: UtilityContainsQuery
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 2
    functionsReached:
    - nodeTag
    - UtilityContainsQuery
    - castNode
    linkageType: ''
    returnType: Query
    signature: 'Query *

      UtilityContainsQuery(Node *parsetree)'
  - BBCount: 44
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 129
    argCount: 1
    argNames:
    - objtype
    argTypes:
    - ObjectType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2350
      start: 2215
    functionDepth: 0
    functionLinenumber: 2215
    functionLinenumberEnd: 2350
    functionName: AlterObjectTypeCommandTag
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CommandTag
    signature: CommandTag AlterObjectTypeCommandTag(ObjectType objtype)
  - BBCount: 225
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/utility.c:2366,1
    - Dst: CreateCommandTag
      Src: /src/postgres/src/backend/tcop/utility.c:2370,1
    - Dst: AlterObjectTypeCommandTag
      Src: /src/postgres/src/backend/tcop/utility.c:2679,1
    - Dst: AlterObjectTypeCommandTag
      Src: /src/postgres/src/backend/tcop/utility.c:2685,1
    - Dst: AlterObjectTypeCommandTag
      Src: /src/postgres/src/backend/tcop/utility.c:2689,1
    - Dst: AlterObjectTypeCommandTag
      Src: /src/postgres/src/backend/tcop/utility.c:2693,1
    - Dst: AlterObjectTypeCommandTag
      Src: /src/postgres/src/backend/tcop/utility.c:2697,1
    - Dst: AlterObjectTypeCommandTag
      Src: /src/postgres/src/backend/tcop/utility.c:2701,1
    - Dst: linitial
      Src: /src/postgres/src/backend/tcop/utility.c:3119,1
    - Dst: CreateCommandTag
      Src: /src/postgres/src/backend/tcop/utility.c:3154,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:3157,1
    - Dst: linitial
      Src: /src/postgres/src/backend/tcop/utility.c:3182,1
    - Dst: CreateCommandTag
      Src: /src/postgres/src/backend/tcop/utility.c:3217,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:3220,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:3229,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/utility.c:3230,1
    CyclomaticComplexity: 223
    EdgeCount: 223
    ICount: 673
    argCount: 1
    argNames:
    - parsetree
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3236
      start: 2361
    functionDepth: 1
    functionLinenumber: 2361
    functionLinenumberEnd: 3236
    functionName: CreateCommandTag
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 4
    functionsReached:
    - nodeTag
    - linitial
    - elog
    - CreateCommandTag
    - AlterObjectTypeCommandTag
    linkageType: ''
    returnType: CommandTag
    signature: CommandTag CreateCommandTag(Node *parsetree)
  - BBCount: 137
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/utility.c:3253,1
    - Dst: GetCommandLogLevel
      Src: /src/postgres/src/backend/tcop/utility.c:3257,1
    - Dst: GetCommandLogLevel
      Src: /src/postgres/src/backend/tcop/utility.c:3356,1
    - Dst: FetchPreparedStatement
      Src: /src/postgres/src/backend/tcop/utility.c:3366,1
    - Dst: GetCommandLogLevel
      Src: /src/postgres/src/backend/tcop/utility.c:3368,1
    - Dst: foreach
      Src: /src/postgres/src/backend/tcop/utility.c:3524,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/tcop/utility.c:3526,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tcop/utility.c:3528,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/tcop/utility.c:3529,1
    - Dst: GetCommandLogLevel
      Src: /src/postgres/src/backend/tcop/utility.c:3533,1
    - Dst: GetCommandLogLevel
      Src: /src/postgres/src/backend/tcop/utility.c:3719,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:3723,1
    - Dst: GetCommandLogLevel
      Src: /src/postgres/src/backend/tcop/utility.c:3750,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:3754,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/utility.c:3763,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/utility.c:3764,1
    CyclomaticComplexity: 116
    EdgeCount: 116
    ICount: 372
    argCount: 1
    argNames:
    - parsetree
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3770
      start: 3248
    functionDepth: 1
    functionLinenumber: 3248
    functionLinenumberEnd: 3770
    functionName: GetCommandLogLevel
    functionSourceFile: /src/postgres/src/backend/tcop/utility.c
    functionUses: 1
    functionsReached:
    - nodeTag
    - foreach
    - elog
    - defGetBoolean
    - FetchPreparedStatement
    - strcmp
    - GetCommandLogLevel
    - lfirst
    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:
    - CreateCopyDestReceiver
    - CreateTransientRelDestReceiver
    - pg_unreachable
    - CreateIntoRelDestReceiver
    - CreateSQLFunctionDestReceiver
    - unconstify
    - printtup_create_DR
    - CreateExplainSerializeDestReceiver
    - CreateTuplestoreDestReceiver
    - CreateTupleQueueDestReceiver
    linkageType: ''
    returnType: DestReceiver
    signature: 'DestReceiver *

      CreateDestReceiver(CommandDest dest)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: BuildQueryCompletionString
      Src: /src/postgres/src/backend/tcop/dest.c:180,1
    - Dst: pq_putmessage
      Src: /src/postgres/src/backend/tcop/dest.c:182,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - qc
    - dest
    - force_undecorated_output
    argTypes:
    - QueryCompletion*
    - CommandDest
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 196
    functionName: EndCommand
    functionSourceFile: /src/postgres/src/backend/tcop/dest.c
    functionUses: 0
    functionsReached:
    - BuildQueryCompletionString
    - pq_putmessage
    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:207,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tcop/dest.c:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - commandTag
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 208
    functionName: EndReplicationCommand
    functionSourceFile: /src/postgres/src/backend/tcop/dest.c
    functionUses: 0
    functionsReached:
    - pq_putmessage
    - strlen
    linkageType: ''
    returnType: void
    signature: void EndReplicationCommand(const char *commandTag)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: pq_putemptymessage
      Src: /src/postgres/src/backend/tcop/dest.c:227,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - dest
    argTypes:
    - CommandDest
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 217
    functionDepth: 2
    functionLinenumber: 217
    functionLinenumberEnd: 242
    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:266,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/tcop/dest.c:267,1
    - Dst: TransactionBlockStatusCode
      Src: /src/postgres/src/backend/tcop/dest.c:267,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/tcop/dest.c:268,1
    - Dst: pq_flush
      Src: /src/postgres/src/backend/tcop/dest.c:271,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 1
    argNames:
    - dest
    argTypes:
    - CommandDest
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 255
    functionDepth: 4
    functionLinenumber: 255
    functionLinenumberEnd: 286
    functionName: ReadyForQuery
    functionSourceFile: /src/postgres/src/backend/tcop/dest.c
    functionUses: 3
    functionsReached:
    - pq_flush
    - pq_beginmessage
    - TransactionBlockStatusCode
    - pq_endmessage
    - 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:
    - errmsg
    - BackendInitialize
    - Assert
    - MemoryContextSwitchTo
    - ereport
    - secure_initialize
    - PostgresMain
    - InitProcess
    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:
    - strspn
    - MemoryContextSwitchTo
    - pg_usleep
    - gai_strerror
    - set_ps_display
    - errhint
    - sigprocmask
    - errdetail
    - strlen
    - pfree
    - InitializeTimeouts
    - pg_getnameinfo_all
    - ProcessStartupPacket
    - GetBackendTypeDesc
    - ReserveExternalFD
    - proc_exit
    - errmsg
    - init_ps_display
    - appendStringInfoString
    - elog
    - check_on_shmem_exit_lists_are_empty
    - IS_INJECTION_POINT_ATTACHED
    - disable_timeout
    - MemoryContextStrdup
    - PG_PROTOCOL
    - initStringInfo
    - appendStringInfo
    - ProcessSSLStartup
    - RegisterTimeout
    - errmsg_internal
    - ereport
    - pqsignal
    - INJECTION_POINT
    - pq_init
    - enable_timeout_after
    - errcode
    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:
    - errmsg
    - Assert
    - pq_endmsgread
    - ereport
    - pq_startmsgread
    - secure_open_server
    - pq_peekbyte
    - errcode
    linkageType: ''
    returnType: int
    signature: int ProcessSSLStartup(Port *port)
  - BBCount: 40
    BranchProfiles: []
    Callsites:
    - Dst: pq_startmsgread
      Src: /src/postgres/src/backend/tcop/backend_startup.c:499,1
    - Dst: pq_getbytes
      Src: /src/postgres/src/backend/tcop/backend_startup.c:507,1
    - Dst: pq_getbytes
      Src: /src/postgres/src/backend/tcop/backend_startup.c:522,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:526,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:527,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:528,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/backend/tcop/backend_startup.c:532,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:538,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:539,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:540,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tcop/backend_startup.c:549,1
    - Dst: pq_getbytes
      Src: /src/postgres/src/backend/tcop/backend_startup.c:552,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:554,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:555,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:556,1
    - Dst: pq_endmsgread
      Src: /src/postgres/src/backend/tcop/backend_startup.c:559,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/backend/tcop/backend_startup.c:565,1
    - Dst: ProcessCancelRequestPacket
      Src: /src/postgres/src/backend/tcop/backend_startup.c:569,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:596,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:597,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:599,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:600,1
    - Dst: secure_write
      Src: /src/postgres/src/backend/tcop/backend_startup.c:603,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:607,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/tcop/backend_startup.c:608,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:609,1
    - Dst: secure_open_server
      Src: /src/postgres/src/backend/tcop/backend_startup.c:614,1
    - Dst: pq_buffer_remaining_data
      Src: /src/postgres/src/backend/tcop/backend_startup.c:624,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:625,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:626,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:627,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/backend_startup.c:628,1
    - Dst: ProcessStartupPacket
      Src: /src/postgres/src/backend/tcop/backend_startup.c:635,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:650,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:651,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:653,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:654,1
    - Dst: secure_write
      Src: /src/postgres/src/backend/tcop/backend_startup.c:657,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:661,1
    - Dst: errcode_for_socket_access
      Src: /src/postgres/src/backend/tcop/backend_startup.c:662,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:663,1
    - Dst: secure_open_gssapi
      Src: /src/postgres/src/backend/tcop/backend_startup.c:668,1
    - Dst: pq_buffer_remaining_data
      Src: /src/postgres/src/backend/tcop/backend_startup.c:678,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:679,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:680,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:681,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/backend_startup.c:682,1
    - Dst: ProcessStartupPacket
      Src: /src/postgres/src/backend/tcop/backend_startup.c:689,1
    - Dst: Min
      Src: /src/postgres/src/backend/tcop/backend_startup.c:702,1
    - Dst: PG_PROTOCOL_MAJOR
      Src: /src/postgres/src/backend/tcop/backend_startup.c:705,1
    - Dst: PG_PROTOCOL_MAJOR
      Src: /src/postgres/src/backend/tcop/backend_startup.c:705,1
    - Dst: PG_PROTOCOL_MAJOR
      Src: /src/postgres/src/backend/tcop/backend_startup.c:706,1
    - Dst: PG_PROTOCOL_MAJOR
      Src: /src/postgres/src/backend/tcop/backend_startup.c:706,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:707,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:708,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:709,1
    - Dst: PG_PROTOCOL_MAJOR
      Src: /src/postgres/src/backend/tcop/backend_startup.c:710,1
    - Dst: PG_PROTOCOL_MINOR
      Src: /src/postgres/src/backend/tcop/backend_startup.c:710,1
    - Dst: PG_PROTOCOL_MAJOR
      Src: /src/postgres/src/backend/tcop/backend_startup.c:711,1
    - Dst: PG_PROTOCOL_MAJOR
      Src: /src/postgres/src/backend/tcop/backend_startup.c:712,1
    - Dst: PG_PROTOCOL_MINOR
      Src: /src/postgres/src/backend/tcop/backend_startup.c:713,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/backend_startup.c:719,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tcop/backend_startup.c:741,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tcop/backend_startup.c:746,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/backend_startup.c:747,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tcop/backend_startup.c:748,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/backend_startup.c:749,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tcop/backend_startup.c:750,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/backend_startup.c:751,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tcop/backend_startup.c:752,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tcop/backend_startup.c:761,1
    - Dst: parse_bool
      Src: /src/postgres/src/backend/tcop/backend_startup.c:766,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:767,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:768,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:769,1
    - Dst: errhint
      Src: /src/postgres/src/backend/tcop/backend_startup.c:772,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/tcop/backend_startup.c:774,1
    - Dst: lappend
      Src: /src/postgres/src/backend/tcop/backend_startup.c:782,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/backend_startup.c:782,1
    - Dst: lappend
      Src: /src/postgres/src/backend/tcop/backend_startup.c:787,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/backend_startup.c:788,1
    - Dst: lappend
      Src: /src/postgres/src/backend/tcop/backend_startup.c:789,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/backend_startup.c:790,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tcop/backend_startup.c:798,1
    - Dst: pg_clean_ascii
      Src: /src/postgres/src/backend/tcop/backend_startup.c:800,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tcop/backend_startup.c:803,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:811,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:812,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:813,1
    - Dst: PG_PROTOCOL_MINOR
      Src: /src/postgres/src/backend/tcop/backend_startup.c:821,1
    - Dst: PG_PROTOCOL_MINOR
      Src: /src/postgres/src/backend/tcop/backend_startup.c:821,1
    - Dst: SendNegotiateProtocolVersion
      Src: /src/postgres/src/backend/tcop/backend_startup.c:823,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:828,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:829,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:830,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/backend_startup.c:834,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tcop/backend_startup.c:840,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tcop/backend_startup.c:842,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/backend_startup.c:864,1
    CyclomaticComplexity: 59
    EdgeCount: 59
    ICount: 127
    argCount: 3
    argNames:
    - port
    - ssl_done
    - gss_done
    argTypes:
    - Port*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 867
      start: 491
    functionDepth: 5
    functionLinenumber: 491
    functionLinenumberEnd: 867
    functionName: ProcessStartupPacket
    functionSourceFile: /src/postgres/src/backend/tcop/backend_startup.c
    functionUses: 2
    functionsReached:
    - MemoryContextSwitchTo
    - pq_endmsgread
    - pstrdup
    - errhint
    - ProcessCancelRequestPacket
    - errdetail
    - strlen
    - Min
    - pg_ntoh32
    - pg_clean_ascii
    - ProcessStartupPacket
    - secure_open_server
    - strcmp
    - secure_write
    - errmsg
    - pq_startmsgread
    - lappend
    - PG_PROTOCOL_MINOR
    - palloc
    - strncmp
    - pq_buffer_remaining_data
    - errcode_for_socket_access
    - pq_getbytes
    - PG_PROTOCOL_MAJOR
    - ereport
    - secure_open_gssapi
    - parse_bool
    - SendNegotiateProtocolVersion
    - errcode
    linkageType: ''
    returnType: int
    signature: int ProcessStartupPacket(Port *port, bool ssl_done, bool gss_done)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:882,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:883,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:884,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/backend_startup.c:890,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/backend_startup.c:891,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/backend_startup.c:892,1
    - Dst: SendCancelRequest
      Src: /src/postgres/src/backend/tcop/backend_startup.c:897,1
    - Dst: pg_ntoh32
      Src: /src/postgres/src/backend/tcop/backend_startup.c:897,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - port
    - pkt
    - pktlen
    argTypes:
    - Port*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 898
      start: 874
    functionDepth: 1
    functionLinenumber: 874
    functionLinenumberEnd: 898
    functionName: ProcessCancelRequestPacket
    functionSourceFile: /src/postgres/src/backend/tcop/backend_startup.c
    functionUses: 1
    functionsReached:
    - errmsg
    - pg_ntoh32
    - ereport
    - errcode
    - SendCancelRequest
    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:922,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/tcop/backend_startup.c:923,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/tcop/backend_startup.c:924,1
    - Dst: list_length
      Src: /src/postgres/src/backend/tcop/backend_startup.c:924,1
    - Dst: foreach
      Src: /src/postgres/src/backend/tcop/backend_startup.c:925,1
    - Dst: pq_sendstring
      Src: /src/postgres/src/backend/tcop/backend_startup.c:926,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/tcop/backend_startup.c:926,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/tcop/backend_startup.c:927,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - unrecognized_protocol_options
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 916
    functionDepth: 4
    functionLinenumber: 916
    functionLinenumberEnd: 930
    functionName: SendNegotiateProtocolVersion
    functionSourceFile: /src/postgres/src/backend/tcop/backend_startup.c
    functionUses: 1
    functionsReached:
    - foreach
    - list_length
    - pq_beginmessage
    - pq_sendint32
    - pq_sendstring
    - pq_endmessage
    - lfirst
    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:949,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 946
    functionDepth: 0
    functionLinenumber: 946
    functionLinenumberEnd: 950
    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:959,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 960
      start: 956
    functionDepth: 0
    functionLinenumber: 956
    functionLinenumberEnd: 960
    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:1003,1
    - Dst: linitial
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1011,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1013,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1017,1
    - Dst: list_length
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1020,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1022,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1042,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1043,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1047,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1054,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 2
    argNames:
    - elemlist
    - flags
    argTypes:
    - List*
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 975
    functionDepth: 2
    functionLinenumber: 975
    functionLinenumberEnd: 1061
    functionName: validate_log_connections_options
    functionSourceFile: /src/postgres/src/backend/tcop/backend_startup.c
    functionUses: 0
    functionsReached:
    - GUC_check_errdetail
    - lengthof
    - linitial
    - list_length
    - pg_strcasecmp
    - lfirst
    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:1042,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1043,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1047,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1054,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1058
      start: 1032
    functionDepth: 2
    functionLinenumber: 1032
    functionLinenumberEnd: 1058
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tcop/backend_startup.c
    functionUses: 316
    functionsReached:
    - GUC_check_errdetail
    - pg_strcasecmp
    - lfirst
    - lengthof
    linkageType: ''
    returnType: void
    signature: void foreach(l, elemlist)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1076,1
    - Dst: SplitIdentifierString
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1078,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1080,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1081,1
    - Dst: list_free
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1082,1
    - Dst: validate_log_connections_options
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1087,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1090,1
    - Dst: list_free
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1091,1
    - Dst: guc_malloc
      Src: /src/postgres/src/backend/tcop/backend_startup.c:1100,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1106
      start: 1067
    functionDepth: 3
    functionLinenumber: 1067
    functionLinenumberEnd: 1106
    functionName: check_log_connections
    functionSourceFile: /src/postgres/src/backend/tcop/backend_startup.c
    functionUses: 0
    functionsReached:
    - GUC_check_errdetail
    - pfree
    - pstrdup
    - validate_log_connections_options
    - guc_malloc
    - SplitIdentifierString
    - list_free
    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: 1115
      start: 1111
    functionDepth: 0
    functionLinenumber: 1111
    functionLinenumberEnd: 1115
    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: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/tcop/postgres.c:208,1
    - Dst: VALGRIND_PRINTF
      Src: /src/postgres/src/backend/tcop/postgres.c:210,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - query
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 213
    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: 217
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 217
    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:243,1
    - Dst: fflush
      Src: /src/postgres/src/backend/tcop/postgres.c:244,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:246,1
    - Dst: interactive_getc
      Src: /src/postgres/src/backend/tcop/postgres.c:251,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/tcop/postgres.c:286,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/tcop/postgres.c:293,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/tcop/postgres.c:305,1
    - Dst: printf
      Src: /src/postgres/src/backend/tcop/postgres.c:311,1
    - Dst: fflush
      Src: /src/postgres/src/backend/tcop/postgres.c:312,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 29
    argCount: 1
    argNames:
    - inBuf
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 235
    functionDepth: 2
    functionLinenumber: 235
    functionLinenumberEnd: 315
    functionName: InteractiveBackend
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - printf
    - fflush
    - resetStringInfo
    - appendStringInfoChar
    - interactive_getc
    linkageType: ''
    returnType: int
    signature: int InteractiveBackend(StringInfo inBuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:334,1
    - Dst: getc
      Src: /src/postgres/src/backend/tcop/postgres.c:336,1
    - Dst: ProcessClientReadInterrupt
      Src: /src/postgres/src/backend/tcop/postgres.c:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 323
    functionDepth: 1
    functionLinenumber: 323
    functionLinenumberEnd: 341
    functionName: interactive_getc
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 1
    functionsReached:
    - getc
    - CHECK_FOR_INTERRUPTS
    - ProcessClientReadInterrupt
    linkageType: ''
    returnType: int
    signature: int interactive_getc(void)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: HOLD_CANCEL_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:360,1
    - Dst: pq_startmsgread
      Src: /src/postgres/src/backend/tcop/postgres.c:361,1
    - Dst: pq_getbyte
      Src: /src/postgres/src/backend/tcop/postgres.c:362,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/tcop/postgres.c:366,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:367,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:368,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:369,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:378,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:379,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/tcop/postgres.c:380,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:453,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:454,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:455,1
    - Dst: pq_getmessage
      Src: /src/postgres/src/backend/tcop/postgres.c:465,1
    - Dst: RESUME_CANCEL_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:467,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 61
    argCount: 1
    argNames:
    - inBuf
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 351
    functionDepth: 5
    functionLinenumber: 351
    functionLinenumberEnd: 470
    functionName: SocketBackend
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pq_getbyte
    - errmsg_internal
    - ereport
    - pq_startmsgread
    - HOLD_CANCEL_INTERRUPTS
    - IsTransactionState
    - pq_getmessage
    - RESUME_CANCEL_INTERRUPTS
    - errcode
    linkageType: ''
    returnType: int
    signature: int SocketBackend(StringInfo inBuf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SocketBackend
      Src: /src/postgres/src/backend/tcop/postgres.c:485,1
    - Dst: InteractiveBackend
      Src: /src/postgres/src/backend/tcop/postgres.c:487,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - inBuf
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 479
    functionDepth: 6
    functionLinenumber: 479
    functionLinenumberEnd: 489
    functionName: ReadCommand
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - SocketBackend
    - InteractiveBackend
    linkageType: ''
    returnType: int
    signature: int ReadCommand(StringInfo inBuf)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:508,1
    - Dst: ProcessCatchupInterrupt
      Src: /src/postgres/src/backend/tcop/postgres.c:512,1
    - Dst: ProcessNotifyInterrupt
      Src: /src/postgres/src/backend/tcop/postgres.c:516,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:529,1
    - Dst: SetLatch
      Src: /src/postgres/src/backend/tcop/postgres.c:531,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - blocked
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 500
    functionDepth: 1
    functionLinenumber: 500
    functionLinenumberEnd: 535
    functionName: ProcessClientReadInterrupt
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 2
    functionsReached:
    - ProcessNotifyInterrupt
    - SetLatch
    - CHECK_FOR_INTERRUPTS
    - ProcessCatchupInterrupt
    linkageType: ''
    returnType: void
    signature: void ProcessClientReadInterrupt(bool blocked)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:579,1
    - Dst: SetLatch
      Src: /src/postgres/src/backend/tcop/postgres.c:583,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - blocked
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 587
    functionName: ProcessClientWriteInterrupt
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 1
    functionsReached:
    - CHECK_FOR_INTERRUPTS
    - SetLatch
    linkageType: ''
    returnType: void
    signature: void ProcessClientWriteInterrupt(bool blocked)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: TRACE_POSTGRESQL_QUERY_PARSE_START
      Src: /src/postgres/src/backend/tcop/postgres.c:607,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:610,1
    - Dst: raw_parser
      Src: /src/postgres/src/backend/tcop/postgres.c:612,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:615,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/tcop/postgres.c:622,1
    - Dst: equal
      Src: /src/postgres/src/backend/tcop/postgres.c:625,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/postgres.c:626,1
    - Dst: nodeToStringWithLocations
      Src: /src/postgres/src/backend/tcop/postgres.c:637,1
    - Dst: stringToNodeWithLocations
      Src: /src/postgres/src/backend/tcop/postgres.c:638,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:640,1
    - Dst: equal
      Src: /src/postgres/src/backend/tcop/postgres.c:642,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/postgres.c:643,1
    - Dst: TRACE_POSTGRESQL_QUERY_PARSE_DONE
      Src: /src/postgres/src/backend/tcop/postgres.c:650,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - query_string
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 602
    functionDepth: 1
    functionLinenumber: 602
    functionLinenumberEnd: 653
    functionName: pg_parse_query
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 2
    functionsReached:
    - ResetUsage
    - pfree
    - equal
    - stringToNodeWithLocations
    - raw_parser
    - TRACE_POSTGRESQL_QUERY_PARSE_DONE
    - elog
    - copyObject
    - nodeToStringWithLocations
    - TRACE_POSTGRESQL_QUERY_PARSE_START
    - 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:674,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:680,1
    - Dst: parse_analyze_fixedparams
      Src: /src/postgres/src/backend/tcop/postgres.c:682,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:686,1
    - Dst: pg_rewrite_query
      Src: /src/postgres/src/backend/tcop/postgres.c:691,1
    - Dst: TRACE_POSTGRESQL_QUERY_REWRITE_DONE
      Src: /src/postgres/src/backend/tcop/postgres.c:693,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: 696
      start: 664
    functionDepth: 1
    functionLinenumber: 664
    functionLinenumberEnd: 696
    functionName: pg_analyze_and_rewrite_fixedparams
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 2
    functionsReached:
    - ResetUsage
    - TRACE_POSTGRESQL_QUERY_REWRITE_DONE
    - parse_analyze_fixedparams
    - pg_rewrite_query
    - TRACE_POSTGRESQL_QUERY_REWRITE_START
    - 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:713,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:719,1
    - Dst: parse_analyze_varparams
      Src: /src/postgres/src/backend/tcop/postgres.c:721,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:732,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:733,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:734,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:739,1
    - Dst: pg_rewrite_query
      Src: /src/postgres/src/backend/tcop/postgres.c:744,1
    - Dst: TRACE_POSTGRESQL_QUERY_REWRITE_DONE
      Src: /src/postgres/src/backend/tcop/postgres.c:746,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: 749
      start: 703
    functionDepth: 1
    functionLinenumber: 703
    functionLinenumberEnd: 749
    functionName: pg_analyze_and_rewrite_varparams
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - ResetUsage
    - errmsg
    - TRACE_POSTGRESQL_QUERY_REWRITE_DONE
    - ereport
    - pg_rewrite_query
    - parse_analyze_varparams
    - TRACE_POSTGRESQL_QUERY_REWRITE_START
    - errcode
    - 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:767,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:773,1
    - Dst: parse_analyze_withcb
      Src: /src/postgres/src/backend/tcop/postgres.c:775,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:779,1
    - Dst: pg_rewrite_query
      Src: /src/postgres/src/backend/tcop/postgres.c:784,1
    - Dst: TRACE_POSTGRESQL_QUERY_REWRITE_DONE
      Src: /src/postgres/src/backend/tcop/postgres.c:786,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: 789
      start: 757
    functionDepth: 1
    functionLinenumber: 757
    functionLinenumberEnd: 789
    functionName: pg_analyze_and_rewrite_withcb
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 1
    functionsReached:
    - ResetUsage
    - TRACE_POSTGRESQL_QUERY_REWRITE_DONE
    - parse_analyze_withcb
    - pg_rewrite_query
    - TRACE_POSTGRESQL_QUERY_REWRITE_START
    - 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:803,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:807,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/tcop/postgres.c:812,1
    - Dst: QueryRewrite
      Src: /src/postgres/src/backend/tcop/postgres.c:817,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:821,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/tcop/postgres.c:830,1
    - Dst: equal
      Src: /src/postgres/src/backend/tcop/postgres.c:832,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/postgres.c:833,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/tcop/postgres.c:846,1
    - Dst: nodeToStringWithLocations
      Src: /src/postgres/src/backend/tcop/postgres.c:847,1
    - Dst: stringToNodeWithLocations
      Src: /src/postgres/src/backend/tcop/postgres.c:848,1
    - Dst: lappend
      Src: /src/postgres/src/backend/tcop/postgres.c:856,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:857,1
    - Dst: equal
      Src: /src/postgres/src/backend/tcop/postgres.c:861,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/postgres.c:862,1
    - Dst: elog_node_display
      Src: /src/postgres/src/backend/tcop/postgres.c:870,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 1
    argNames:
    - query
    argTypes:
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 874
      start: 797
    functionDepth: 1
    functionLinenumber: 797
    functionLinenumberEnd: 874
    functionName: pg_rewrite_query
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 4
    functionsReached:
    - ResetUsage
    - QueryRewrite
    - pfree
    - equal
    - lfirst_node
    - stringToNodeWithLocations
    - elog_node_display
    - list_make1
    - elog
    - lappend
    - copyObject
    - nodeToStringWithLocations
    - 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:846,1
    - Dst: nodeToStringWithLocations
      Src: /src/postgres/src/backend/tcop/postgres.c:847,1
    - Dst: stringToNodeWithLocations
      Src: /src/postgres/src/backend/tcop/postgres.c:848,1
    - Dst: lappend
      Src: /src/postgres/src/backend/tcop/postgres.c:856,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:857,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 844
    functionDepth: 1
    functionLinenumber: 844
    functionLinenumberEnd: 858
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 316
    functionsReached:
    - pfree
    - lfirst_node
    - stringToNodeWithLocations
    - lappend
    - nodeToStringWithLocations
    linkageType: ''
    returnType: void
    signature: void foreach(lc, querytree_list)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/postgres.c:892,1
    - Dst: ActiveSnapshotSet
      Src: /src/postgres/src/backend/tcop/postgres.c:892,1
    - Dst: TRACE_POSTGRESQL_QUERY_PLAN_START
      Src: /src/postgres/src/backend/tcop/postgres.c:894,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:897,1
    - Dst: planner
      Src: /src/postgres/src/backend/tcop/postgres.c:900,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:903,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/tcop/postgres.c:910,1
    - Dst: equal
      Src: /src/postgres/src/backend/tcop/postgres.c:918,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/postgres.c:919,1
    - Dst: nodeToStringWithLocations
      Src: /src/postgres/src/backend/tcop/postgres.c:931,1
    - Dst: stringToNodeWithLocations
      Src: /src/postgres/src/backend/tcop/postgres.c:932,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:933,1
    - Dst: equal
      Src: /src/postgres/src/backend/tcop/postgres.c:941,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/postgres.c:942,1
    - Dst: elog_node_display
      Src: /src/postgres/src/backend/tcop/postgres.c:954,1
    - Dst: TRACE_POSTGRESQL_QUERY_PLAN_DONE
      Src: /src/postgres/src/backend/tcop/postgres.c:956,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 4
    argNames:
    - querytree
    - query_string
    - cursorOptions
    - boundParams
    argTypes:
    - Query*
    - char*
    - int
    - ParamListInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 881
    functionDepth: 2
    functionLinenumber: 881
    functionLinenumberEnd: 959
    functionName: pg_plan_query
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - ResetUsage
    - planner
    - Assert
    - pfree
    - equal
    - stringToNodeWithLocations
    - elog_node_display
    - TRACE_POSTGRESQL_QUERY_PLAN_DONE
    - elog
    - copyObject
    - nodeToStringWithLocations
    - ActiveSnapshotSet
    - TRACE_POSTGRESQL_QUERY_PLAN_START
    - ShowUsage
    linkageType: ''
    returnType: PlannedStmt
    signature: "PlannedStmt *\npg_plan_query(Query *querytree, const char *query_string,
      int cursorOptions,\n\t\t\t  ParamListInfo boundParams)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/tcop/postgres.c:978,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/tcop/postgres.c:984,1
    - Dst: pg_plan_query
      Src: /src/postgres/src/backend/tcop/postgres.c:994,1
    - Dst: lappend
      Src: /src/postgres/src/backend/tcop/postgres.c:998,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 4
    argNames:
    - querytrees
    - query_string
    - cursorOptions
    - boundParams
    argTypes:
    - List*
    - char*
    - int
    - ParamListInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1002
      start: 969
    functionDepth: 3
    functionLinenumber: 969
    functionLinenumberEnd: 1002
    functionName: pg_plan_queries
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 2
    functionsReached:
    - pg_plan_query
    - makeNode
    - lappend
    - 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:978,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/tcop/postgres.c:984,1
    - Dst: pg_plan_query
      Src: /src/postgres/src/backend/tcop/postgres.c:994,1
    - Dst: lappend
      Src: /src/postgres/src/backend/tcop/postgres.c:998,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 999
      start: 976
    functionDepth: 3
    functionLinenumber: 976
    functionLinenumberEnd: 999
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 316
    functionsReached:
    - pg_plan_query
    - makeNode
    - lappend
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(query_list, querytrees)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/tcop/postgres.c:1027,1
    - Dst: TRACE_POSTGRESQL_QUERY_START
      Src: /src/postgres/src/backend/tcop/postgres.c:1029,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:1036,1
    - Dst: start_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:1045,1
    - Dst: drop_unnamed_stmt
      Src: /src/postgres/src/backend/tcop/postgres.c:1053,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1058,1
    - Dst: pg_parse_query
      Src: /src/postgres/src/backend/tcop/postgres.c:1064,1
    - Dst: check_log_statement
      Src: /src/postgres/src/backend/tcop/postgres.c:1067,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1069,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1070,1
    - Dst: errhidestmt
      Src: /src/postgres/src/backend/tcop/postgres.c:1071,1
    - Dst: errdetail_execute
      Src: /src/postgres/src/backend/tcop/postgres.c:1072,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1079,1
    - Dst: list_length
      Src: /src/postgres/src/backend/tcop/postgres.c:1089,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/tcop/postgres.c:1096,1
    - Dst: pgstat_report_query_id
      Src: /src/postgres/src/backend/tcop/postgres.c:1109,1
    - Dst: pgstat_report_plan_id
      Src: /src/postgres/src/backend/tcop/postgres.c:1110,1
    - Dst: CreateCommandTag
      Src: /src/postgres/src/backend/tcop/postgres.c:1118,1
    - Dst: GetCommandTagNameAndLen
      Src: /src/postgres/src/backend/tcop/postgres.c:1119,1
    - Dst: set_ps_display_with_len
      Src: /src/postgres/src/backend/tcop/postgres.c:1121,1
    - Dst: BeginCommand
      Src: /src/postgres/src/backend/tcop/postgres.c:1123,1
    - Dst: IsAbortedTransactionBlockState
      Src: /src/postgres/src/backend/tcop/postgres.c:1133,1
    - Dst: IsTransactionExitStmt
      Src: /src/postgres/src/backend/tcop/postgres.c:1134,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1135,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:1136,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1137,1
    - Dst: errdetail_abort
      Src: /src/postgres/src/backend/tcop/postgres.c:1139,1
    - Dst: start_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:1142,1
    - Dst: BeginImplicitTransactionBlock
      Src: /src/postgres/src/backend/tcop/postgres.c:1152,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:1155,1
    - Dst: analyze_requires_snapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1160,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1162,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1162,1
    - Dst: lnext
      Src: /src/postgres/src/backend/tcop/postgres.c:1178,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/tcop/postgres.c:1181,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1184,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1187,1
    - Dst: pg_analyze_and_rewrite_fixedparams
      Src: /src/postgres/src/backend/tcop/postgres.c:1189,1
    - Dst: pg_plan_queries
      Src: /src/postgres/src/backend/tcop/postgres.c:1192,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1206,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:1209,1
    - Dst: CreatePortal
      Src: /src/postgres/src/backend/tcop/postgres.c:1215,1
    - Dst: PortalDefineQuery
      Src: /src/postgres/src/backend/tcop/postgres.c:1224,1
    - Dst: PortalStart
      Src: /src/postgres/src/backend/tcop/postgres.c:1234,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/postgres.c:1243,1
    - Dst: GetPortalByName
      Src: /src/postgres/src/backend/tcop/postgres.c:1249,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/backend/tcop/postgres.c:1251,1
    - Dst: PortalSetResultFormat
      Src: /src/postgres/src/backend/tcop/postgres.c:1256,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/tcop/postgres.c:1261,1
    - Dst: SetRemoteDestReceiverParams
      Src: /src/postgres/src/backend/tcop/postgres.c:1263,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1268,1
    - Dst: PortalRun
      Src: /src/postgres/src/backend/tcop/postgres.c:1273,1
    - Dst: DestReceiver*::rDestroy
      Src: /src/postgres/src/backend/tcop/postgres.c:1280,1
    - Dst: PortalDrop
      Src: /src/postgres/src/backend/tcop/postgres.c:1282,1
    - Dst: lnext
      Src: /src/postgres/src/backend/tcop/postgres.c:1284,1
    - Dst: EndImplicitTransactionBlock
      Src: /src/postgres/src/backend/tcop/postgres.c:1296,1
    - Dst: finish_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:1297,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/postgres.c:1299,1
    - Dst: finish_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:1305,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/postgres.c:1314,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/tcop/postgres.c:1320,1
    - Dst: disable_statement_timeout
      Src: /src/postgres/src/backend/tcop/postgres.c:1327,1
    - Dst: EndCommand
      Src: /src/postgres/src/backend/tcop/postgres.c:1336,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/tcop/postgres.c:1340,1
    - Dst: finish_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:1348,1
    - Dst: NullCommand
      Src: /src/postgres/src/backend/tcop/postgres.c:1354,1
    - Dst: check_log_duration
      Src: /src/postgres/src/backend/tcop/postgres.c:1359,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1362,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1363,1
    - Dst: errhidestmt
      Src: /src/postgres/src/backend/tcop/postgres.c:1364,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1367,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1368,1
    - Dst: errhidestmt
      Src: /src/postgres/src/backend/tcop/postgres.c:1370,1
    - Dst: errdetail_execute
      Src: /src/postgres/src/backend/tcop/postgres.c:1371,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:1376,1
    - Dst: TRACE_POSTGRESQL_QUERY_DONE
      Src: /src/postgres/src/backend/tcop/postgres.c:1378,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 92
    argCount: 1
    argNames:
    - query_string
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1381
      start: 1010
    functionDepth: 4
    functionLinenumber: 1010
    functionLinenumberEnd: 1381
    functionName: exec_simple_query
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 1
    functionsReached:
    - ResetUsage
    - MemoryContextSwitchTo
    - CHECK_FOR_INTERRUPTS
    - list_length
    - PortalDefineQuery
    - check_log_duration
    - PortalSetResultFormat
    - drop_unnamed_stmt
    - errdetail_execute
    - PortalDrop
    - errhidestmt
    - pg_parse_query
    - PopActiveSnapshot
    - check_log_statement
    - pg_analyze_and_rewrite_fixedparams
    - MemoryContextDelete
    - finish_xact_command
    - start_xact_command
    - CreateDestReceiver
    - GetTransactionSnapshot
    - pgstat_report_query_id
    - pgstat_report_activity
    - set_ps_display_with_len
    - PushActiveSnapshot
    - CreateCommandTag
    - TRACE_POSTGRESQL_QUERY_DONE
    - EndImplicitTransactionBlock
    - ShowUsage
    - errmsg
    - lfirst_node
    - BeginImplicitTransactionBlock
    - CommandCounterIncrement
    - lnext
    - IsA
    - SetRemoteDestReceiverParams
    - errdetail_abort
    - CreatePortal
    - TRACE_POSTGRESQL_QUERY_START
    - analyze_requires_snapshot
    - PortalRun
    - EndCommand
    - GetPortalByName
    - PortalStart
    - Assert
    - NullCommand
    - IsTransactionExitStmt
    - BeginCommand
    - ereport
    - pg_plan_queries
    - pgstat_report_plan_id
    - DestReceiver*::rDestroy
    - AllocSetContextCreate
    - GetCommandTagNameAndLen
    - PortalIsValid
    - IsAbortedTransactionBlockState
    - errcode
    - disable_statement_timeout
    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:1096,1
    - Dst: pgstat_report_query_id
      Src: /src/postgres/src/backend/tcop/postgres.c:1109,1
    - Dst: pgstat_report_plan_id
      Src: /src/postgres/src/backend/tcop/postgres.c:1110,1
    - Dst: CreateCommandTag
      Src: /src/postgres/src/backend/tcop/postgres.c:1118,1
    - Dst: GetCommandTagNameAndLen
      Src: /src/postgres/src/backend/tcop/postgres.c:1119,1
    - Dst: set_ps_display_with_len
      Src: /src/postgres/src/backend/tcop/postgres.c:1121,1
    - Dst: BeginCommand
      Src: /src/postgres/src/backend/tcop/postgres.c:1123,1
    - Dst: IsAbortedTransactionBlockState
      Src: /src/postgres/src/backend/tcop/postgres.c:1133,1
    - Dst: IsTransactionExitStmt
      Src: /src/postgres/src/backend/tcop/postgres.c:1134,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1135,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:1136,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1137,1
    - Dst: errdetail_abort
      Src: /src/postgres/src/backend/tcop/postgres.c:1139,1
    - Dst: start_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:1142,1
    - Dst: BeginImplicitTransactionBlock
      Src: /src/postgres/src/backend/tcop/postgres.c:1152,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:1155,1
    - Dst: analyze_requires_snapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1160,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1162,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1162,1
    - Dst: lnext
      Src: /src/postgres/src/backend/tcop/postgres.c:1178,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/tcop/postgres.c:1181,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1184,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1187,1
    - Dst: pg_analyze_and_rewrite_fixedparams
      Src: /src/postgres/src/backend/tcop/postgres.c:1189,1
    - Dst: pg_plan_queries
      Src: /src/postgres/src/backend/tcop/postgres.c:1192,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1206,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:1209,1
    - Dst: CreatePortal
      Src: /src/postgres/src/backend/tcop/postgres.c:1215,1
    - Dst: PortalDefineQuery
      Src: /src/postgres/src/backend/tcop/postgres.c:1224,1
    - Dst: PortalStart
      Src: /src/postgres/src/backend/tcop/postgres.c:1234,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/postgres.c:1243,1
    - Dst: GetPortalByName
      Src: /src/postgres/src/backend/tcop/postgres.c:1249,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/backend/tcop/postgres.c:1251,1
    - Dst: PortalSetResultFormat
      Src: /src/postgres/src/backend/tcop/postgres.c:1256,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/tcop/postgres.c:1261,1
    - Dst: SetRemoteDestReceiverParams
      Src: /src/postgres/src/backend/tcop/postgres.c:1263,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1268,1
    - Dst: PortalRun
      Src: /src/postgres/src/backend/tcop/postgres.c:1273,1
    - Dst: DestReceiver*::rDestroy
      Src: /src/postgres/src/backend/tcop/postgres.c:1280,1
    - Dst: PortalDrop
      Src: /src/postgres/src/backend/tcop/postgres.c:1282,1
    - Dst: lnext
      Src: /src/postgres/src/backend/tcop/postgres.c:1284,1
    - Dst: EndImplicitTransactionBlock
      Src: /src/postgres/src/backend/tcop/postgres.c:1296,1
    - Dst: finish_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:1297,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/postgres.c:1299,1
    - Dst: finish_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:1305,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/postgres.c:1314,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/tcop/postgres.c:1320,1
    - Dst: disable_statement_timeout
      Src: /src/postgres/src/backend/tcop/postgres.c:1327,1
    - Dst: EndCommand
      Src: /src/postgres/src/backend/tcop/postgres.c:1336,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/tcop/postgres.c:1340,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 61
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1341
      start: 1094
    functionDepth: 4
    functionLinenumber: 1094
    functionLinenumberEnd: 1341
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 316
    functionsReached:
    - MemoryContextSwitchTo
    - CHECK_FOR_INTERRUPTS
    - PortalDefineQuery
    - PortalSetResultFormat
    - PortalDrop
    - PopActiveSnapshot
    - pg_analyze_and_rewrite_fixedparams
    - MemoryContextDelete
    - finish_xact_command
    - start_xact_command
    - CreateDestReceiver
    - GetTransactionSnapshot
    - pgstat_report_query_id
    - set_ps_display_with_len
    - PushActiveSnapshot
    - CreateCommandTag
    - EndImplicitTransactionBlock
    - IsAbortedTransactionBlockState
    - errmsg
    - lfirst_node
    - BeginImplicitTransactionBlock
    - CommandCounterIncrement
    - lnext
    - IsA
    - SetRemoteDestReceiverParams
    - errdetail_abort
    - CreatePortal
    - PortalRun
    - analyze_requires_snapshot
    - EndCommand
    - GetPortalByName
    - PortalStart
    - Assert
    - BeginCommand
    - ereport
    - pg_plan_queries
    - pgstat_report_plan_id
    - DestReceiver*::rDestroy
    - AllocSetContextCreate
    - GetCommandTagNameAndLen
    - PortalIsValid
    - IsTransactionExitStmt
    - errcode
    - disable_statement_timeout
    linkageType: ''
    returnType: void
    signature: void foreach(parsetree_item, parsetree_list)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/tcop/postgres.c:1409,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/tcop/postgres.c:1411,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:1414,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1416,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/tcop/postgres.c:1417,1
    - Dst: start_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:1427,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1446,1
    - Dst: drop_unnamed_stmt
      Src: /src/postgres/src/backend/tcop/postgres.c:1451,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/tcop/postgres.c:1454,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1457,1
    - Dst: pg_parse_query
      Src: /src/postgres/src/backend/tcop/postgres.c:1464,1
    - Dst: list_length
      Src: /src/postgres/src/backend/tcop/postgres.c:1471,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1472,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:1473,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1474,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/tcop/postgres.c:1480,1
    - Dst: IsAbortedTransactionBlockState
      Src: /src/postgres/src/backend/tcop/postgres.c:1490,1
    - Dst: IsTransactionExitStmt
      Src: /src/postgres/src/backend/tcop/postgres.c:1491,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1492,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:1493,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1494,1
    - Dst: errdetail_abort
      Src: /src/postgres/src/backend/tcop/postgres.c:1496,1
    - Dst: CreateCachedPlan
      Src: /src/postgres/src/backend/tcop/postgres.c:1502,1
    - Dst: CreateCommandTag
      Src: /src/postgres/src/backend/tcop/postgres.c:1503,1
    - Dst: analyze_requires_snapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1508,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1510,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1510,1
    - Dst: pg_analyze_and_rewrite_varparams
      Src: /src/postgres/src/backend/tcop/postgres.c:1519,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1527,1
    - Dst: CreateCachedPlan
      Src: /src/postgres/src/backend/tcop/postgres.c:1533,1
    - Dst: MemoryContextSetParent
      Src: /src/postgres/src/backend/tcop/postgres.c:1545,1
    - Dst: CompleteCachedPlan
      Src: /src/postgres/src/backend/tcop/postgres.c:1548,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:1559,1
    - Dst: StorePreparedStatement
      Src: /src/postgres/src/backend/tcop/postgres.c:1566,1
    - Dst: SaveCachedPlan
      Src: /src/postgres/src/backend/tcop/postgres.c:1573,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1577,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/tcop/postgres.c:1584,1
    - Dst: pq_putemptymessage
      Src: /src/postgres/src/backend/tcop/postgres.c:1590,1
    - Dst: check_log_duration
      Src: /src/postgres/src/backend/tcop/postgres.c:1595,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1598,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1599,1
    - Dst: errhidestmt
      Src: /src/postgres/src/backend/tcop/postgres.c:1600,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1603,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1604,1
    - Dst: errhidestmt
      Src: /src/postgres/src/backend/tcop/postgres.c:1608,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:1613,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 61
    argCount: 4
    argNames:
    - query_string
    - stmt_name
    - paramTypes
    - numParams
    argTypes:
    - char*
    - char*
    - Oid*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1616
      start: 1388
    functionDepth: 2
    functionLinenumber: 1388
    functionLinenumberEnd: 1616
    functionName: exec_parse_message
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - ResetUsage
    - MemoryContextSwitchTo
    - CompleteCachedPlan
    - CHECK_FOR_INTERRUPTS
    - StorePreparedStatement
    - list_length
    - set_ps_display
    - check_log_duration
    - pq_putemptymessage
    - drop_unnamed_stmt
    - CreateCachedPlan
    - PopActiveSnapshot
    - pg_parse_query
    - errhidestmt
    - start_xact_command
    - GetTransactionSnapshot
    - pgstat_report_activity
    - PushActiveSnapshot
    - CreateCommandTag
    - SaveCachedPlan
    - IsAbortedTransactionBlockState
    - errmsg
    - linitial_node
    - ShowUsage
    - pg_analyze_and_rewrite_varparams
    - CommandCounterIncrement
    - errdetail_abort
    - analyze_requires_snapshot
    - errmsg_internal
    - ereport
    - AllocSetContextCreate
    - IsTransactionExitStmt
    - errcode
    - MemoryContextSetParent
    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: 35
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/tcop/postgres.c:1648,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/tcop/postgres.c:1649,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1651,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/tcop/postgres.c:1652,1
    - Dst: FetchPreparedStatement
      Src: /src/postgres/src/backend/tcop/postgres.c:1661,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1669,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:1670,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1671,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/tcop/postgres.c:1679,1
    - Dst: foreach
      Src: /src/postgres/src/backend/tcop/postgres.c:1681,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/tcop/postgres.c:1683,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/tcop/postgres.c:1685,1
    - Dst: pgstat_report_query_id
      Src: /src/postgres/src/backend/tcop/postgres.c:1687,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/tcop/postgres.c:1692,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:1695,1
    - Dst: start_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:1703,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1706,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/tcop/postgres.c:1709,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tcop/postgres.c:1712,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/tcop/postgres.c:1714,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/tcop/postgres.c:1718,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1721,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:1722,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1723,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1727,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:1728,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1729,1
    - Dst: IsAbortedTransactionBlockState
      Src: /src/postgres/src/backend/tcop/postgres.c:1740,1
    - Dst: IsTransactionExitStmt
      Src: /src/postgres/src/backend/tcop/postgres.c:1742,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1744,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:1745,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1746,1
    - Dst: errdetail_abort
      Src: /src/postgres/src/backend/tcop/postgres.c:1748,1
    - Dst: CreatePortal
      Src: /src/postgres/src/backend/tcop/postgres.c:1755,1
    - Dst: CreatePortal
      Src: /src/postgres/src/backend/tcop/postgres.c:1757,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1765,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/postgres.c:1768,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/postgres.c:1772,1
    - Dst: analyze_requires_snapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1785,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1787,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:1787,1
    - Dst: makeParamList
      Src: /src/postgres/src/backend/tcop/postgres.c:1811,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/tcop/postgres.c:1826,1
    - Dst: unconstify
      Src: /src/postgres/src/backend/tcop/postgres.c:1840,1
    - Dst: pq_getmsgbytes
      Src: /src/postgres/src/backend/tcop/postgres.c:1840,1
    - Dst: initReadOnlyStringInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:1843,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:1864,1
    - Dst: pg_client_to_server
      Src: /src/postgres/src/backend/tcop/postgres.c:1873,1
    - Dst: OidInputFunctionCall
      Src: /src/postgres/src/backend/tcop/postgres.c:1878,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1893,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/tcop/postgres.c:1896,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/postgres.c:1899,1
    - Dst: pnstrdup
      Src: /src/postgres/src/backend/tcop/postgres.c:1910,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1915,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:1918,1
    - Dst: getTypeBinaryInputInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:1930,1
    - Dst: OidReceiveFunctionCall
      Src: /src/postgres/src/backend/tcop/postgres.c:1937,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1941,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:1942,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1943,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:1948,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:1949,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:1950,1
    - Dst: BuildParamLogString
      Src: /src/postgres/src/backend/tcop/postgres.c:1980,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:1988,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/tcop/postgres.c:2002,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tcop/postgres.c:2005,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/tcop/postgres.c:2007,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/tcop/postgres.c:2010,1
    - Dst: GetCachedPlan
      Src: /src/postgres/src/backend/tcop/postgres.c:2017,1
    - Dst: PortalDefineQuery
      Src: /src/postgres/src/backend/tcop/postgres.c:2025,1
    - Dst: foreach
      Src: /src/postgres/src/backend/tcop/postgres.c:2033,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/tcop/postgres.c:2035,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/tcop/postgres.c:2037,1
    - Dst: pgstat_report_plan_id
      Src: /src/postgres/src/backend/tcop/postgres.c:2039,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/tcop/postgres.c:2046,1
    - Dst: PortalStart
      Src: /src/postgres/src/backend/tcop/postgres.c:2051,1
    - Dst: PortalSetResultFormat
      Src: /src/postgres/src/backend/tcop/postgres.c:2056,1
    - Dst: pq_putemptymessage
      Src: /src/postgres/src/backend/tcop/postgres.c:2068,1
    - Dst: check_log_duration
      Src: /src/postgres/src/backend/tcop/postgres.c:2073,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:2076,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:2077,1
    - Dst: errhidestmt
      Src: /src/postgres/src/backend/tcop/postgres.c:2078,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:2081,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:2082,1
    - Dst: errhidestmt
      Src: /src/postgres/src/backend/tcop/postgres.c:2088,1
    - Dst: errdetail_params
      Src: /src/postgres/src/backend/tcop/postgres.c:2089,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:2094,1
    - Dst: valgrind_report_error_query
      Src: /src/postgres/src/backend/tcop/postgres.c:2096,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 166
    argCount: 1
    argNames:
    - input_message
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2099
      start: 1623
    functionDepth: 2
    functionLinenumber: 1623
    functionLinenumberEnd: 2099
    functionName: exec_bind_message
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - ResetUsage
    - pq_getmsgstring
    - valgrind_report_error_query
    - MemoryContextSwitchTo
    - pg_client_to_server
    - pstrdup
    - set_ps_display
    - PortalDefineQuery
    - unconstify
    - check_log_duration
    - PortalSetResultFormat
    - pq_putemptymessage
    - palloc0_array
    - palloc_array
    - PopActiveSnapshot
    - errhidestmt
    - pfree
    - makeParamList
    - pq_getmsgend
    - GetCachedPlan
    - start_xact_command
    - GetTransactionSnapshot
    - pgstat_report_query_id
    - pgstat_report_activity
    - foreach
    - PushActiveSnapshot
    - getTypeBinaryInputInfo
    - BuildParamLogString
    - IsAbortedTransactionBlockState
    - errmsg
    - ShowUsage
    - OidReceiveFunctionCall
    - lfirst_node
    - pnstrdup
    - INT64CONST
    - errdetail_abort
    - CreatePortal
    - analyze_requires_snapshot
    - PortalStart
    - pq_getmsgbytes
    - getTypeInputInfo
    - OidInputFunctionCall
    - errdetail_params
    - errmsg_internal
    - ereport
    - pgstat_report_plan_id
    - initReadOnlyStringInfo
    - FetchPreparedStatement
    - IsTransactionExitStmt
    - pq_getmsgint
    - errcode
    linkageType: ''
    returnType: void
    signature: void exec_bind_message(StringInfo input_message)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: GetPortalByName
      Src: /src/postgres/src/backend/tcop/postgres.c:2133,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/backend/tcop/postgres.c:2134,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:2135,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:2136,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:2137,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/postgres.c:2145,1
    - Dst: NullCommand
      Src: /src/postgres/src/backend/tcop/postgres.c:2146,1
    - Dst: IsTransactionStmtList
      Src: /src/postgres/src/backend/tcop/postgres.c:2151,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/postgres.c:2159,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tcop/postgres.c:2161,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/tcop/postgres.c:2171,1
    - Dst: foreach
      Src: /src/postgres/src/backend/tcop/postgres.c:2173,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/tcop/postgres.c:2175,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/tcop/postgres.c:2177,1
    - Dst: pgstat_report_query_id
      Src: /src/postgres/src/backend/tcop/postgres.c:2179,1
    - Dst: foreach
      Src: /src/postgres/src/backend/tcop/postgres.c:2184,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/tcop/postgres.c:2186,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/tcop/postgres.c:2188,1
    - Dst: pgstat_report_plan_id
      Src: /src/postgres/src/backend/tcop/postgres.c:2190,1
    - Dst: GetCommandTagNameAndLen
      Src: /src/postgres/src/backend/tcop/postgres.c:2195,1
    - Dst: set_ps_display_with_len
      Src: /src/postgres/src/backend/tcop/postgres.c:2197,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:2200,1
    - Dst: BeginCommand
      Src: /src/postgres/src/backend/tcop/postgres.c:2202,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/tcop/postgres.c:2208,1
    - Dst: SetRemoteDestReceiverParams
      Src: /src/postgres/src/backend/tcop/postgres.c:2210,1
    - Dst: start_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:2216,1
    - Dst: check_log_statement
      Src: /src/postgres/src/backend/tcop/postgres.c:2227,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:2229,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:2230,1
    - Dst: _
      Src: /src/postgres/src/backend/tcop/postgres.c:2232,1
    - Dst: _
      Src: /src/postgres/src/backend/tcop/postgres.c:2233,1
    - Dst: errhidestmt
      Src: /src/postgres/src/backend/tcop/postgres.c:2238,1
    - Dst: errdetail_params
      Src: /src/postgres/src/backend/tcop/postgres.c:2239,1
    - Dst: IsAbortedTransactionBlockState
      Src: /src/postgres/src/backend/tcop/postgres.c:2247,1
    - Dst: IsTransactionExitStmtList
      Src: /src/postgres/src/backend/tcop/postgres.c:2248,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:2249,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:2250,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:2251,1
    - Dst: errdetail_abort
      Src: /src/postgres/src/backend/tcop/postgres.c:2253,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:2256,1
    - Dst: PortalRun
      Src: /src/postgres/src/backend/tcop/postgres.c:2272,1
    - Dst: DestReceiver*::rDestroy
      Src: /src/postgres/src/backend/tcop/postgres.c:2279,1
    - Dst: finish_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:2296,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/tcop/postgres.c:2311,1
    - Dst: disable_statement_timeout
      Src: /src/postgres/src/backend/tcop/postgres.c:2323,1
    - Dst: EndCommand
      Src: /src/postgres/src/backend/tcop/postgres.c:2327,1
    - Dst: pq_putemptymessage
      Src: /src/postgres/src/backend/tcop/postgres.c:2333,1
    - Dst: check_log_duration
      Src: /src/postgres/src/backend/tcop/postgres.c:2345,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:2348,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:2349,1
    - Dst: errhidestmt
      Src: /src/postgres/src/backend/tcop/postgres.c:2350,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:2353,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:2354,1
    - Dst: _
      Src: /src/postgres/src/backend/tcop/postgres.c:2357,1
    - Dst: _
      Src: /src/postgres/src/backend/tcop/postgres.c:2358,1
    - Dst: errhidestmt
      Src: /src/postgres/src/backend/tcop/postgres.c:2363,1
    - Dst: errdetail_params
      Src: /src/postgres/src/backend/tcop/postgres.c:2364,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/tcop/postgres.c:2369,1
    - Dst: valgrind_report_error_query
      Src: /src/postgres/src/backend/tcop/postgres.c:2371,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 87
    argCount: 2
    argNames:
    - portal_name
    - max_rows
    argTypes:
    - char*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2374
      start: 2106
    functionDepth: 3
    functionLinenumber: 2106
    functionLinenumberEnd: 2374
    functionName: exec_execute_message
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - ResetUsage
    - valgrind_report_error_query
    - CHECK_FOR_INTERRUPTS
    - pstrdup
    - PortalIsValid
    - check_log_duration
    - pq_putemptymessage
    - errhidestmt
    - check_log_statement
    - finish_xact_command
    - start_xact_command
    - CreateDestReceiver
    - pgstat_report_query_id
    - pgstat_report_activity
    - foreach
    - set_ps_display_with_len
    - _
    - ShowUsage
    - errmsg
    - lfirst_node
    - CommandCounterIncrement
    - SetRemoteDestReceiverParams
    - errdetail_abort
    - IsTransactionExitStmtList
    - PortalRun
    - EndCommand
    - GetPortalByName
    - Assert
    - NullCommand
    - errdetail_params
    - BeginCommand
    - ereport
    - pgstat_report_plan_id
    - DestReceiver*::rDestroy
    - GetCommandTagNameAndLen
    - IsTransactionStmtList
    - IsAbortedTransactionBlockState
    - INT64CONST
    - errcode
    - disable_statement_timeout
    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:2396,1
    - Dst: GetCommandLogLevel
      Src: /src/postgres/src/backend/tcop/postgres.c:2398,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - stmt_list
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2403
      start: 2383
    functionDepth: 2
    functionLinenumber: 2383
    functionLinenumberEnd: 2403
    functionName: check_log_statement
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 2
    functionsReached:
    - GetCommandLogLevel
    - lfirst
    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:2396,1
    - Dst: GetCommandLogLevel
      Src: /src/postgres/src/backend/tcop/postgres.c:2398,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2400
      start: 2394
    functionDepth: 2
    functionLinenumber: 2394
    functionLinenumberEnd: 2400
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 318
    functionsReached:
    - GetCommandLogLevel
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(stmt_item, stmt_list)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TimestampDifference
      Src: /src/postgres/src/backend/tcop/postgres.c:2435,1
    - Dst: GetCurrentStatementStartTimestamp
      Src: /src/postgres/src/backend/tcop/postgres.c:2435,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/tcop/postgres.c:2436,1
    - Dst: pg_prng_double
      Src: /src/postgres/src/backend/tcop/postgres.c:2463,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/tcop/postgres.c:2467,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 16
    argCount: 2
    argNames:
    - msec_str
    - was_logged
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2477
      start: 2422
    functionDepth: 3
    functionLinenumber: 2422
    functionLinenumberEnd: 2477
    functionName: check_log_duration
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 4
    functionsReached:
    - TimestampDifference
    - snprintf
    - pg_prng_double
    - GetCurrentTimestamp
    - GetCurrentStatementStartTimestamp
    linkageType: ''
    returnType: int
    signature: int check_log_duration(char *msec_str, bool was_logged)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/tcop/postgres.c:2492,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/postgres.c:2494,1
    - Dst: FetchPreparedStatement
      Src: /src/postgres/src/backend/tcop/postgres.c:2499,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:2502,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - raw_parsetree_list
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2509
      start: 2485
    functionDepth: 1
    functionLinenumber: 2485
    functionLinenumberEnd: 2509
    functionName: errdetail_execute
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 1
    functionsReached:
    - FetchPreparedStatement
    - errdetail
    - IsA
    - 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:2492,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/postgres.c:2494,1
    - Dst: FetchPreparedStatement
      Src: /src/postgres/src/backend/tcop/postgres.c:2499,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:2502,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2506
      start: 2490
    functionDepth: 1
    functionLinenumber: 2490
    functionLinenumberEnd: 2506
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 318
    functionsReached:
    - FetchPreparedStatement
    - errdetail
    - IsA
    - 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:2525,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:2527,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 1
    argNames:
    - params
    argTypes:
    - ParamListInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2531
      start: 2518
    functionDepth: 1
    functionLinenumber: 2518
    functionLinenumberEnd: 2531
    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: 2
    BranchProfiles: []
    Callsites:
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:2542,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2545
      start: 2538
    functionDepth: 1
    functionLinenumber: 2538
    functionLinenumberEnd: 2545
    functionName: errdetail_abort
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 5
    functionsReached:
    - errdetail
    linkageType: ''
    returnType: int
    signature: int errdetail_abort(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:2558,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:2561,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:2564,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:2567,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:2570,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:2573,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:2576,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 1
    argNames:
    - reason
    argTypes:
    - ProcSignalReason
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2584
      start: 2552
    functionDepth: 1
    functionLinenumber: 2552
    functionLinenumberEnd: 2584
    functionName: errdetail_recovery_conflict
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - errdetail
    linkageType: ''
    returnType: int
    signature: int errdetail_recovery_conflict(ProcSignalReason reason)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:2604,1
    - Dst: appendStringInfoStringQuoted
      Src: /src/postgres/src/backend/tcop/postgres.c:2605,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/tcop/postgres.c:2615,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/tcop/postgres.c:2618,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/tcop/postgres.c:2624,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/tcop/postgres.c:2627,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:2632,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2633
      start: 2591
    functionDepth: 3
    functionLinenumber: 2591
    functionLinenumberEnd: 2633
    functionName: bind_param_error_callback
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - initStringInfo
    - errcontext
    - pfree
    - 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:2649,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:2652,1
    - Dst: FetchPreparedStatement
      Src: /src/postgres/src/backend/tcop/postgres.c:2659,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:2667,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:2668,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:2669,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/postgres.c:2673,1
    - Dst: IsAbortedTransactionBlockState
      Src: /src/postgres/src/backend/tcop/postgres.c:2684,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:2686,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:2687,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:2688,1
    - Dst: errdetail_abort
      Src: /src/postgres/src/backend/tcop/postgres.c:2690,1
    - Dst: pq_beginmessage_reuse
      Src: /src/postgres/src/backend/tcop/postgres.c:2698,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/tcop/postgres.c:2699,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/tcop/postgres.c:2705,1
    - Dst: pq_endmessage_reuse
      Src: /src/postgres/src/backend/tcop/postgres.c:2707,1
    - Dst: CachedPlanGetTargetList
      Src: /src/postgres/src/backend/tcop/postgres.c:2717,1
    - Dst: SendRowDescriptionMessage
      Src: /src/postgres/src/backend/tcop/postgres.c:2719,1
    - Dst: pq_putemptymessage
      Src: /src/postgres/src/backend/tcop/postgres.c:2725,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 1
    argNames:
    - stmt_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2726
      start: 2640
    functionDepth: 3
    functionLinenumber: 2640
    functionLinenumberEnd: 2726
    functionName: exec_describe_statement_message
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pq_endmessage_reuse
    - Assert
    - MemoryContextSwitchTo
    - CachedPlanGetTargetList
    - start_xact_command
    - SendRowDescriptionMessage
    - ereport
    - pq_sendint16
    - errdetail_abort
    - pq_putemptymessage
    - FetchPreparedStatement
    - pq_sendint32
    - IsAbortedTransactionBlockState
    - pq_beginmessage_reuse
    - errcode
    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:2742,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:2745,1
    - Dst: GetPortalByName
      Src: /src/postgres/src/backend/tcop/postgres.c:2747,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/backend/tcop/postgres.c:2748,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:2749,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:2750,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:2751,1
    - Dst: IsAbortedTransactionBlockState
      Src: /src/postgres/src/backend/tcop/postgres.c:2761,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:2763,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:2764,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:2765,1
    - Dst: errdetail_abort
      Src: /src/postgres/src/backend/tcop/postgres.c:2767,1
    - Dst: SendRowDescriptionMessage
      Src: /src/postgres/src/backend/tcop/postgres.c:2773,1
    - Dst: FetchPortalTargetList
      Src: /src/postgres/src/backend/tcop/postgres.c:2775,1
    - Dst: pq_putemptymessage
      Src: /src/postgres/src/backend/tcop/postgres.c:2778,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - portal_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2779
      start: 2733
    functionDepth: 3
    functionLinenumber: 2733
    functionLinenumberEnd: 2779
    functionName: exec_describe_portal_message
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - errmsg
    - MemoryContextSwitchTo
    - FetchPortalTargetList
    - start_xact_command
    - SendRowDescriptionMessage
    - ereport
    - errdetail_abort
    - pq_putemptymessage
    - PortalIsValid
    - IsAbortedTransactionBlockState
    - errcode
    - 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:2790,1
    - Dst: BeginImplicitTransactionBlock
      Src: /src/postgres/src/backend/tcop/postgres.c:2803,1
    - Dst: enable_statement_timeout
      Src: /src/postgres/src/backend/tcop/postgres.c:2813,1
    - Dst: get_timeout_active
      Src: /src/postgres/src/backend/tcop/postgres.c:2819,1
    - Dst: enable_timeout_after
      Src: /src/postgres/src/backend/tcop/postgres.c:2820,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2822
      start: 2785
    functionDepth: 2
    functionLinenumber: 2785
    functionLinenumberEnd: 2822
    functionName: start_xact_command
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 7
    functionsReached:
    - BeginImplicitTransactionBlock
    - get_timeout_active
    - enable_statement_timeout
    - enable_timeout_after
    - StartTransactionCommand
    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:2828,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/tcop/postgres.c:2832,1
    - Dst: MemoryContextCheck
      Src: /src/postgres/src/backend/tcop/postgres.c:2837,1
    - Dst: MemoryContextStats
      Src: /src/postgres/src/backend/tcop/postgres.c:2842,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2847
      start: 2824
    functionDepth: 2
    functionLinenumber: 2824
    functionLinenumberEnd: 2847
    functionName: finish_xact_command
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 3
    functionsReached:
    - MemoryContextStats
    - MemoryContextCheck
    - CommitTransactionCommand
    - disable_statement_timeout
    linkageType: ''
    returnType: void
    signature: void finish_xact_command(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/postgres.c:2859,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 6
    argCount: 1
    argNames:
    - parsetree
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2870
      start: 2856
    functionDepth: 1
    functionLinenumber: 2856
    functionLinenumberEnd: 2870
    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:2876,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/tcop/postgres.c:2878,1
    - Dst: IsTransactionExitStmt
      Src: /src/postgres/src/backend/tcop/postgres.c:2881,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - pstmts
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2885
      start: 2873
    functionDepth: 2
    functionLinenumber: 2873
    functionLinenumberEnd: 2885
    functionName: IsTransactionExitStmtList
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 1
    functionsReached:
    - IsTransactionExitStmt
    - linitial_node
    - list_length
    linkageType: ''
    returnType: bool
    signature: bool IsTransactionExitStmtList(List *pstmts)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/tcop/postgres.c:2891,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/tcop/postgres.c:2893,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/postgres.c:2896,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - pstmts
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2900
      start: 2888
    functionDepth: 1
    functionLinenumber: 2888
    functionLinenumberEnd: 2900
    functionName: IsTransactionStmtList
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 1
    functionsReached:
    - IsA
    - linitial_node
    - list_length
    linkageType: ''
    returnType: bool
    signature: bool IsTransactionStmtList(List *pstmts)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DropCachedPlan
      Src: /src/postgres/src/backend/tcop/postgres.c:2912,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2914
      start: 2903
    functionDepth: 1
    functionLinenumber: 2903
    functionLinenumberEnd: 2914
    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:2931,1
    - Dst: sigprocmask
      Src: /src/postgres/src/backend/tcop/postgres.c:2932,1
    - Dst: HOLD_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:2939,1
    - Dst: GetQuitSignalReason
      Src: /src/postgres/src/backend/tcop/postgres.c:2976,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:2980,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:2981,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:2982,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:2986,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:2987,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:2988,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:2989,1
    - Dst: errhint
      Src: /src/postgres/src/backend/tcop/postgres.c:2993,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:2998,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:2999,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3000,1
    - Dst: _exit
      Src: /src/postgres/src/backend/tcop/postgres.c:3018,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3019
      start: 2928
    functionDepth: 1
    functionLinenumber: 2928
    functionLinenumberEnd: 3019
    functionName: quickdie
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - errmsg
    - _exit
    - GetQuitSignalReason
    - ereport
    - errhint
    - sigaddset
    - sigprocmask
    - HOLD_INTERRUPTS
    - errdetail
    - errcode
    linkageType: ''
    returnType: void
    signature: void quickdie(SIGNAL_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SetLatch
      Src: /src/postgres/src/backend/tcop/postgres.c:3039,1
    - Dst: ProcessInterrupts
      Src: /src/postgres/src/backend/tcop/postgres.c:3048,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3049
      start: 3025
    functionDepth: 1
    functionLinenumber: 3025
    functionLinenumberEnd: 3049
    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:3068,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3069
      start: 3055
    functionDepth: 1
    functionLinenumber: 3055
    functionLinenumberEnd: 3069
    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:3076,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3077,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3078,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:3079,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3082
      start: 3072
    functionDepth: 1
    functionLinenumber: 3072
    functionLinenumberEnd: 3082
    functionName: FloatExceptionHandler
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errdetail
    - errcode
    - ereport
    linkageType: ''
    returnType: void
    signature: void FloatExceptionHandler(SIGNAL_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - reason
    argTypes:
    - ProcSignalReason
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3095
      start: 3088
    functionDepth: 0
    functionLinenumber: 3088
    functionLinenumberEnd: 3095
    functionName: HandleRecoveryConflictInterrupt
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HandleRecoveryConflictInterrupt(ProcSignalReason reason)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: GetAwaitedLock
      Src: /src/postgres/src/backend/tcop/postgres.c:3110,1
    - Dst: HoldingBufferPinThatDelaysRecovery
      Src: /src/postgres/src/backend/tcop/postgres.c:3128,1
    - Dst: GetStartupBufferPinWaitBufId
      Src: /src/postgres/src/backend/tcop/postgres.c:3131,1
    - Dst: CheckDeadLockAlert
      Src: /src/postgres/src/backend/tcop/postgres.c:3132,1
    - Dst: IsTransactionOrTransactionBlock
      Src: /src/postgres/src/backend/tcop/postgres.c:3148,1
    - Dst: IsSubTransaction
      Src: /src/postgres/src/backend/tcop/postgres.c:3181,1
    - Dst: IsAbortedTransactionBlockState
      Src: /src/postgres/src/backend/tcop/postgres.c:3188,1
    - Dst: LockErrorCleanup
      Src: /src/postgres/src/backend/tcop/postgres.c:3219,1
    - Dst: pgstat_report_recovery_conflict
      Src: /src/postgres/src/backend/tcop/postgres.c:3220,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3221,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3222,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3223,1
    - Dst: errdetail_recovery_conflict
      Src: /src/postgres/src/backend/tcop/postgres.c:3224,1
    - Dst: pgstat_report_recovery_conflict
      Src: /src/postgres/src/backend/tcop/postgres.c:3239,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3240,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3241,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3244,1
    - Dst: errdetail_recovery_conflict
      Src: /src/postgres/src/backend/tcop/postgres.c:3245,1
    - Dst: errhint
      Src: /src/postgres/src/backend/tcop/postgres.c:3246,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/postgres.c:3251,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 41
    argCount: 1
    argNames:
    - reason
    argTypes:
    - ProcSignalReason
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3253
      start: 3100
    functionDepth: 2
    functionLinenumber: 3100
    functionLinenumberEnd: 3253
    functionName: ProcessRecoveryConflictInterrupt
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - GetStartupBufferPinWaitBufId
    - IsTransactionOrTransactionBlock
    - pgstat_report_recovery_conflict
    - LockErrorCleanup
    - ereport
    - CheckDeadLockAlert
    - IsSubTransaction
    - errdetail_recovery_conflict
    - errhint
    - elog
    - HoldingBufferPinThatDelaysRecovery
    - IsAbortedTransactionBlockState
    - GetAwaitedLock
    linkageType: ''
    returnType: void
    signature: void ProcessRecoveryConflictInterrupt(ProcSignalReason reason)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/postgres.c:3266,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/postgres.c:3267,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/postgres.c:3268,1
    - Dst: ProcessRecoveryConflictInterrupt
      Src: /src/postgres/src/backend/tcop/postgres.c:3279,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3282
      start: 3258
    functionDepth: 3
    functionLinenumber: 3258
    functionLinenumberEnd: 3282
    functionName: ProcessRecoveryConflictInterrupts
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - Assert
    - ProcessRecoveryConflictInterrupt
    linkageType: ''
    returnType: void
    signature: void ProcessRecoveryConflictInterrupts(void)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: LockErrorCleanup
      Src: /src/postgres/src/backend/tcop/postgres.c:3309,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3314,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3315,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3316,1
    - Dst: AmAutoVacuumWorkerProcess
      Src: /src/postgres/src/backend/tcop/postgres.c:3317,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3318,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3319,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3320,1
    - Dst: IsLogicalWorker
      Src: /src/postgres/src/backend/tcop/postgres.c:3321,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3322,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3323,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3324,1
    - Dst: IsLogicalLauncher
      Src: /src/postgres/src/backend/tcop/postgres.c:3325,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3327,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/tcop/postgres.c:3328,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/tcop/postgres.c:3334,1
    - Dst: AmWalReceiverProcess
      Src: /src/postgres/src/backend/tcop/postgres.c:3336,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3337,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3338,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3339,1
    - Dst: AmBackgroundWorkerProcess
      Src: /src/postgres/src/backend/tcop/postgres.c:3340,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3341,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3342,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3343,1
    - Dst: AmIoWorkerProcess
      Src: /src/postgres/src/backend/tcop/postgres.c:3345,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3347,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/tcop/postgres.c:3348,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/tcop/postgres.c:3350,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3353,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3354,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3355,1
    - Dst: pq_check_connection
      Src: /src/postgres/src/backend/tcop/postgres.c:3370,1
    - Dst: enable_timeout_after
      Src: /src/postgres/src/backend/tcop/postgres.c:3373,1
    - Dst: LockErrorCleanup
      Src: /src/postgres/src/backend/tcop/postgres.c:3381,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3384,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3385,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3386,1
    - Dst: get_timeout_indicator
      Src: /src/postgres/src/backend/tcop/postgres.c:3420,1
    - Dst: get_timeout_indicator
      Src: /src/postgres/src/backend/tcop/postgres.c:3421,1
    - Dst: get_timeout_finish_time
      Src: /src/postgres/src/backend/tcop/postgres.c:3430,1
    - Dst: get_timeout_finish_time
      Src: /src/postgres/src/backend/tcop/postgres.c:3430,1
    - Dst: LockErrorCleanup
      Src: /src/postgres/src/backend/tcop/postgres.c:3435,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3436,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3437,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3438,1
    - Dst: LockErrorCleanup
      Src: /src/postgres/src/backend/tcop/postgres.c:3442,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3443,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3444,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3445,1
    - Dst: AmAutoVacuumWorkerProcess
      Src: /src/postgres/src/backend/tcop/postgres.c:3447,1
    - Dst: LockErrorCleanup
      Src: /src/postgres/src/backend/tcop/postgres.c:3449,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3450,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3451,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3452,1
    - Dst: LockErrorCleanup
      Src: /src/postgres/src/backend/tcop/postgres.c:3462,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3463,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3464,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3465,1
    - Dst: ProcessRecoveryConflictInterrupts
      Src: /src/postgres/src/backend/tcop/postgres.c:3470,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/tcop/postgres.c:3483,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3484,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3485,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3486,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/tcop/postgres.c:3496,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3497,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3498,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3499,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/tcop/postgres.c:3509,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3510,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3511,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3512,1
    - Dst: IsTransactionOrTransactionBlock
      Src: /src/postgres/src/backend/tcop/postgres.c:3521,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/tcop/postgres.c:3524,1
    - Dst: ProcessProcSignalBarrier
      Src: /src/postgres/src/backend/tcop/postgres.c:3528,1
    - Dst: ProcessParallelMessages
      Src: /src/postgres/src/backend/tcop/postgres.c:3531,1
    - Dst: ProcessLogMemoryContextInterrupt
      Src: /src/postgres/src/backend/tcop/postgres.c:3534,1
    - Dst: ProcessParallelApplyMessages
      Src: /src/postgres/src/backend/tcop/postgres.c:3537,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 105
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3538
      start: 3297
    functionDepth: 4
    functionLinenumber: 3297
    functionLinenumberEnd: 3538
    functionName: ProcessInterrupts
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 1
    functionsReached:
    - AmWalReceiverProcess
    - IsTransactionOrTransactionBlock
    - ProcessProcSignalBarrier
    - IsLogicalLauncher
    - ProcessParallelApplyMessages
    - LockErrorCleanup
    - proc_exit
    - errmsg
    - pq_check_connection
    - ProcessLogMemoryContextInterrupt
    - AmBackgroundWorkerProcess
    - ProcessParallelMessages
    - AmIoWorkerProcess
    - get_timeout_indicator
    - get_timeout_finish_time
    - pgstat_report_stat
    - ProcessRecoveryConflictInterrupts
    - IsLogicalWorker
    - errmsg_internal
    - ereport
    - INJECTION_POINT
    - AmAutoVacuumWorkerProcess
    - enable_timeout_after
    - errcode
    linkageType: ''
    returnType: void
    signature: void ProcessInterrupts(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: WaitEventSetCanReportClosed
      Src: /src/postgres/src/backend/tcop/postgres.c:3546,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:3548,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - int*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3552
      start: 3543
    functionDepth: 1
    functionLinenumber: 3543
    functionLinenumberEnd: 3552
    functionName: check_client_connection_check_interval
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - GUC_check_errdetail
    - WaitEventSetCanReportClosed
    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:3569,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - bool*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3573
      start: 3564
    functionDepth: 0
    functionLinenumber: 3564
    functionLinenumberEnd: 3573
    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:3584,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - bool*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3590
      start: 3578
    functionDepth: 0
    functionLinenumber: 3578
    functionLinenumberEnd: 3590
    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:3596,1
    - Dst: get_timeout_active
      Src: /src/postgres/src/backend/tcop/postgres.c:3602,1
    - Dst: enable_timeout_after
      Src: /src/postgres/src/backend/tcop/postgres.c:3603,1
    - Dst: get_timeout_active
      Src: /src/postgres/src/backend/tcop/postgres.c:3604,1
    - Dst: disable_timeout
      Src: /src/postgres/src/backend/tcop/postgres.c:3605,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3607
      start: 3593
    functionDepth: 1
    functionLinenumber: 3593
    functionLinenumberEnd: 3607
    functionName: assign_transaction_timeout
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - enable_timeout_after
    - get_timeout_active
    - IsTransactionState
    - disable_timeout
    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:3621,1
    - Dst: SplitIdentifierString
      Src: /src/postgres/src/backend/tcop/postgres.c:3623,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:3626,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:3627,1
    - Dst: list_free
      Src: /src/postgres/src/backend/tcop/postgres.c:3628,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/tcop/postgres.c:3634,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tcop/postgres.c:3636,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tcop/postgres.c:3638,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:3642,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:3643,1
    - Dst: list_free
      Src: /src/postgres/src/backend/tcop/postgres.c:3644,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:3649,1
    - Dst: list_free
      Src: /src/postgres/src/backend/tcop/postgres.c:3650,1
    - Dst: guc_malloc
      Src: /src/postgres/src/backend/tcop/postgres.c:3653,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3659
      start: 3612
    functionDepth: 2
    functionLinenumber: 3612
    functionLinenumberEnd: 3659
    functionName: check_restrict_nonsystem_relation_kind
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - GUC_check_errdetail
    - pfree
    - pstrdup
    - guc_malloc
    - pg_strcasecmp
    - SplitIdentifierString
    - lfirst
    - list_free
    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:3634,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tcop/postgres.c:3636,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tcop/postgres.c:3638,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/tcop/postgres.c:3642,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:3643,1
    - Dst: list_free
      Src: /src/postgres/src/backend/tcop/postgres.c:3644,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3647
      start: 3632
    functionDepth: 2
    functionLinenumber: 3632
    functionLinenumberEnd: 3647
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 318
    functionsReached:
    - GUC_check_errdetail
    - pfree
    - pg_strcasecmp
    - lfirst
    - list_free
    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: 3670
      start: 3664
    functionDepth: 0
    functionLinenumber: 3664
    functionLinenumberEnd: 3670
    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:3685,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3686,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3689,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3693,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3694,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3697,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3699,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3701,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3703,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 3
    argNames:
    - debug_flag
    - context
    - source
    argTypes:
    - int
    - GucContext
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3704
      start: 3678
    functionDepth: 1
    functionLinenumber: 3678
    functionLinenumberEnd: 3704
    functionName: set_debug_options
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - sprintf
    - SetConfigOption
    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:3741,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 3
    argNames:
    - arg
    - context
    - source
    argTypes:
    - char*
    - GucContext
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3746
      start: 3707
    functionDepth: 1
    functionLinenumber: 3707
    functionLinenumberEnd: 3746
    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: 3767
      start: 3749
    functionDepth: 0
    functionLinenumber: 3749
    functionLinenumberEnd: 3767
    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:3803,1
    - Dst: getopt
      Src: /src/postgres/src/backend/tcop/postgres.c:3829,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3834,1
    - Dst: parse_dispatch_option
      Src: /src/postgres/src/backend/tcop/postgres.c:3855,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3856,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3857,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3858,1
    - Dst: ParseLongOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3866,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3870,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3871,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3872,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:3875,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:3876,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:3877,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3880,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:3881,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:3882,1
    - Dst: strdup
      Src: /src/postgres/src/backend/tcop/postgres.c:3888,1
    - Dst: set_debug_options
      Src: /src/postgres/src/backend/tcop/postgres.c:3892,1
    - Dst: atoi
      Src: /src/postgres/src/backend/tcop/postgres.c:3892,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3901,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3905,1
    - Dst: set_plan_disabling_options
      Src: /src/postgres/src/backend/tcop/postgres.c:3909,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3914,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3918,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3927,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3931,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3935,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3943,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3947,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3951,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/tcop/postgres.c:3957,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3961,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3965,1
    - Dst: get_stats_option_name
      Src: /src/postgres/src/backend/tcop/postgres.c:3974,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3977,1
    - Dst: atoi
      Src: /src/postgres/src/backend/tcop/postgres.c:3993,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/tcop/postgres.c:3997,1
    - Dst: strdup
      Src: /src/postgres/src/backend/tcop/postgres.c:4013,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:4022,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:4023,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:4024,1
    - Dst: errhint
      Src: /src/postgres/src/backend/tcop/postgres.c:4025,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:4027,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:4028,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:4029,1
    - Dst: errhint
      Src: /src/postgres/src/backend/tcop/postgres.c:4031,1
    CyclomaticComplexity: 54
    EdgeCount: 54
    ICount: 131
    argCount: 4
    argNames:
    - argc
    - argv
    - ctx
    - dbname
    argTypes:
    - int
    - char*[]
    - GucContext
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4042
      start: 3789
    functionDepth: 2
    functionLinenumber: 3789
    functionLinenumberEnd: 4042
    functionName: process_postgres_switches
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 1
    functionsReached:
    - errmsg
    - pfree
    - get_stats_option_name
    - SetConfigOption
    - atoi
    - parse_dispatch_option
    - ParseLongOption
    - set_plan_disabling_options
    - ereport
    - set_debug_options
    - errhint
    - strdup
    - strlcpy
    - getopt
    - strcmp
    - errcode
    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:4060,1
    - Dst: InitStandaloneProcess
      Src: /src/postgres/src/backend/tcop/postgres.c:4063,1
    - Dst: InitializeGUCOptions
      Src: /src/postgres/src/backend/tcop/postgres.c:4068,1
    - Dst: process_postgres_switches
      Src: /src/postgres/src/backend/tcop/postgres.c:4073,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:4080,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:4081,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:4082,1
    - Dst: SelectConfigFiles
      Src: /src/postgres/src/backend/tcop/postgres.c:4087,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/tcop/postgres.c:4088,1
    - Dst: checkDataDir
      Src: /src/postgres/src/backend/tcop/postgres.c:4094,1
    - Dst: ChangeToDataDir
      Src: /src/postgres/src/backend/tcop/postgres.c:4095,1
    - Dst: CreateDataDirLockFile
      Src: /src/postgres/src/backend/tcop/postgres.c:4100,1
    - Dst: LocalProcessControlFile
      Src: /src/postgres/src/backend/tcop/postgres.c:4103,1
    - Dst: process_shared_preload_libraries
      Src: /src/postgres/src/backend/tcop/postgres.c:4108,1
    - Dst: InitializeMaxBackends
      Src: /src/postgres/src/backend/tcop/postgres.c:4111,1
    - Dst: InitPostmasterChildSlots
      Src: /src/postgres/src/backend/tcop/postgres.c:4117,1
    - Dst: InitializeFastPathLocks
      Src: /src/postgres/src/backend/tcop/postgres.c:4120,1
    - Dst: process_shmem_requests
      Src: /src/postgres/src/backend/tcop/postgres.c:4125,1
    - Dst: InitializeShmemGUCs
      Src: /src/postgres/src/backend/tcop/postgres.c:4132,1
    - Dst: InitializeWalConsistencyChecking
      Src: /src/postgres/src/backend/tcop/postgres.c:4138,1
    - Dst: CreateSharedMemoryAndSemaphores
      Src: /src/postgres/src/backend/tcop/postgres.c:4144,1
    - Dst: set_max_safe_fds
      Src: /src/postgres/src/backend/tcop/postgres.c:4150,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/tcop/postgres.c:4156,1
    - Dst: InitProcess
      Src: /src/postgres/src/backend/tcop/postgres.c:4162,1
    - Dst: PostgresMain
      Src: /src/postgres/src/backend/tcop/postgres.c:4168,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 3
    argNames:
    - argc
    - argv
    - username
    argTypes:
    - int
    - char*[]
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4169
      start: 4054
    functionDepth: 4
    functionLinenumber: 4054
    functionLinenumberEnd: 4169
    functionName: PostgresSingleUserMain
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 2
    functionsReached:
    - InitializeShmemGUCs
    - InitializeGUCOptions
    - InitializeWalConsistencyChecking
    - process_postgres_switches
    - SelectConfigFiles
    - LocalProcessControlFile
    - CreateDataDirLockFile
    - process_shared_preload_libraries
    - set_max_safe_fds
    - checkDataDir
    - errmsg
    - ChangeToDataDir
    - proc_exit
    - CreateSharedMemoryAndSemaphores
    - PostgresMain
    - InitProcess
    - GetCurrentTimestamp
    - InitStandaloneProcess
    - Assert
    - InitializeMaxBackends
    - InitPostmasterChildSlots
    - ereport
    - InitializeFastPathLocks
    - process_shmem_requests
    - errcode
    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:4193,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/postgres.c:4194,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/postgres.c:4196,1
    - Dst: GetProcessingMode
      Src: /src/postgres/src/backend/tcop/postgres.c:4196,1
    - Dst: WalSndSignals
      Src: /src/postgres/src/backend/tcop/postgres.c:4214,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/tcop/postgres.c:4217,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/tcop/postgres.c:4218,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/tcop/postgres.c:4219,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/tcop/postgres.c:4230,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/tcop/postgres.c:4232,1
    - Dst: InitializeTimeouts
      Src: /src/postgres/src/backend/tcop/postgres.c:4233,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/tcop/postgres.c:4241,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/tcop/postgres.c:4242,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/tcop/postgres.c:4243,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/tcop/postgres.c:4244,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/tcop/postgres.c:4250,1
    - Dst: BaseInit
      Src: /src/postgres/src/backend/tcop/postgres.c:4255,1
    - Dst: sigprocmask
      Src: /src/postgres/src/backend/tcop/postgres.c:4258,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/postgres.c:4264,1
    - Dst: PG_PROTOCOL
      Src: /src/postgres/src/backend/tcop/postgres.c:4269,1
    - Dst: pg_strong_random
      Src: /src/postgres/src/backend/tcop/postgres.c:4271,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:4273,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:4274,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:4275,1
    - Dst: InitPostgres
      Src: /src/postgres/src/backend/tcop/postgres.c:4289,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/tcop/postgres.c:4300,1
    - Dst: SetProcessingMode
      Src: /src/postgres/src/backend/tcop/postgres.c:4304,1
    - Dst: BeginReportingGUCOptions
      Src: /src/postgres/src/backend/tcop/postgres.c:4310,1
    - Dst: on_proc_exit
      Src: /src/postgres/src/backend/tcop/postgres.c:4317,1
    - Dst: pgstat_report_connect
      Src: /src/postgres/src/backend/tcop/postgres.c:4319,1
    - Dst: InitWalSender
      Src: /src/postgres/src/backend/tcop/postgres.c:4323,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/postgres.c:4332,1
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/tcop/postgres.c:4333,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/tcop/postgres.c:4334,1
    - Dst: pq_sendbytes
      Src: /src/postgres/src/backend/tcop/postgres.c:4336,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/tcop/postgres.c:4337,1
    - Dst: printf
      Src: /src/postgres/src/backend/tcop/postgres.c:4343,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/tcop/postgres.c:4351,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/tcop/postgres.c:4361,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:4364,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:4365,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:4366,1
    - Dst: EventTriggerOnLogin
      Src: /src/postgres/src/backend/tcop/postgres.c:4369,1
    - Dst: sigsetjmp
      Src: /src/postgres/src/backend/tcop/postgres.c:4393,1
    - Dst: HOLD_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:4407,1
    - Dst: disable_all_timeouts
      Src: /src/postgres/src/backend/tcop/postgres.c:4420,1
    - Dst: pq_comm_reset
      Src: /src/postgres/src/backend/tcop/postgres.c:4429,1
    - Dst: EmitErrorReport
      Src: /src/postgres/src/backend/tcop/postgres.c:4432,1
    - Dst: valgrind_report_error_query
      Src: /src/postgres/src/backend/tcop/postgres.c:4438,1
    - Dst: AbortCurrentTransaction
      Src: /src/postgres/src/backend/tcop/postgres.c:4449,1
    - Dst: WalSndErrorCleanup
      Src: /src/postgres/src/backend/tcop/postgres.c:4452,1
    - Dst: PortalErrorCleanup
      Src: /src/postgres/src/backend/tcop/postgres.c:4454,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/tcop/postgres.c:4464,1
    - Dst: ReplicationSlotCleanup
      Src: /src/postgres/src/backend/tcop/postgres.c:4467,1
    - Dst: jit_reset_after_error
      Src: /src/postgres/src/backend/tcop/postgres.c:4469,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:4475,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/backend/tcop/postgres.c:4476,1
    - Dst: pq_is_reading_msg
      Src: /src/postgres/src/backend/tcop/postgres.c:4497,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:4498,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:4499,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:4500,1
    - Dst: RESUME_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:4503,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:4538,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/tcop/postgres.c:4539,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:4541,1
    - Dst: InvalidateCatalogSnapshotConditionally
      Src: /src/postgres/src/backend/tcop/postgres.c:4547,1
    - Dst: IsAbortedTransactionBlockState
      Src: /src/postgres/src/backend/tcop/postgres.c:4567,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/tcop/postgres.c:4569,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/tcop/postgres.c:4570,1
    - Dst: enable_timeout_after
      Src: /src/postgres/src/backend/tcop/postgres.c:4577,1
    - Dst: IsTransactionOrTransactionBlock
      Src: /src/postgres/src/backend/tcop/postgres.c:4581,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/tcop/postgres.c:4583,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/tcop/postgres.c:4584,1
    - Dst: enable_timeout_after
      Src: /src/postgres/src/backend/tcop/postgres.c:4591,1
    - Dst: ProcessNotifyInterrupt
      Src: /src/postgres/src/backend/tcop/postgres.c:4607,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/tcop/postgres.c:4622,1
    - Dst: get_timeout_active
      Src: /src/postgres/src/backend/tcop/postgres.c:4625,1
    - Dst: enable_timeout_after
      Src: /src/postgres/src/backend/tcop/postgres.c:4626,1
    - Dst: get_timeout_active
      Src: /src/postgres/src/backend/tcop/postgres.c:4632,1
    - Dst: disable_timeout
      Src: /src/postgres/src/backend/tcop/postgres.c:4633,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/tcop/postgres.c:4636,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/tcop/postgres.c:4637,1
    - Dst: enable_timeout_after
      Src: /src/postgres/src/backend/tcop/postgres.c:4643,1
    - Dst: ReportChangedGUCOptions
      Src: /src/postgres/src/backend/tcop/postgres.c:4649,1
    - Dst: IsExternalConnectionBackend
      Src: /src/postgres/src/backend/tcop/postgres.c:4658,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/tcop/postgres.c:4664,1
    - Dst: TimestampDifferenceMicroseconds
      Src: /src/postgres/src/backend/tcop/postgres.c:4667,1
    - Dst: TimestampDifferenceMicroseconds
      Src: /src/postgres/src/backend/tcop/postgres.c:4670,1
    - Dst: TimestampDifferenceMicroseconds
      Src: /src/postgres/src/backend/tcop/postgres.c:4673,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:4676,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:4677,1
    - Dst: ReadyForQuery
      Src: /src/postgres/src/backend/tcop/postgres.c:4683,1
    - Dst: ReadCommand
      Src: /src/postgres/src/backend/tcop/postgres.c:4698,1
    - Dst: disable_timeout
      Src: /src/postgres/src/backend/tcop/postgres.c:4710,1
    - Dst: disable_timeout
      Src: /src/postgres/src/backend/tcop/postgres.c:4715,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/postgres.c:4728,1
    - Dst: ProcessConfigFile
      Src: /src/postgres/src/backend/tcop/postgres.c:4738,1
    - Dst: SetCurrentStatementStartTimestamp
      Src: /src/postgres/src/backend/tcop/postgres.c:4755,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/tcop/postgres.c:4757,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/tcop/postgres.c:4758,1
    - Dst: exec_replication_command
      Src: /src/postgres/src/backend/tcop/postgres.c:4762,1
    - Dst: exec_simple_query
      Src: /src/postgres/src/backend/tcop/postgres.c:4763,1
    - Dst: exec_simple_query
      Src: /src/postgres/src/backend/tcop/postgres.c:4766,1
    - Dst: valgrind_report_error_query
      Src: /src/postgres/src/backend/tcop/postgres.c:4768,1
    - Dst: forbidden_in_wal_sender
      Src: /src/postgres/src/backend/tcop/postgres.c:4781,1
    - Dst: SetCurrentStatementStartTimestamp
      Src: /src/postgres/src/backend/tcop/postgres.c:4784,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/tcop/postgres.c:4786,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/tcop/postgres.c:4787,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/tcop/postgres.c:4788,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/tcop/postgres.c:4791,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/tcop/postgres.c:4793,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/tcop/postgres.c:4795,1
    - Dst: exec_parse_message
      Src: /src/postgres/src/backend/tcop/postgres.c:4797,1
    - Dst: valgrind_report_error_query
      Src: /src/postgres/src/backend/tcop/postgres.c:4800,1
    - Dst: forbidden_in_wal_sender
      Src: /src/postgres/src/backend/tcop/postgres.c:4805,1
    - Dst: SetCurrentStatementStartTimestamp
      Src: /src/postgres/src/backend/tcop/postgres.c:4808,1
    - Dst: exec_bind_message
      Src: /src/postgres/src/backend/tcop/postgres.c:4814,1
    - Dst: forbidden_in_wal_sender
      Src: /src/postgres/src/backend/tcop/postgres.c:4824,1
    - Dst: SetCurrentStatementStartTimestamp
      Src: /src/postgres/src/backend/tcop/postgres.c:4827,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/tcop/postgres.c:4829,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/tcop/postgres.c:4830,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/tcop/postgres.c:4831,1
    - Dst: exec_execute_message
      Src: /src/postgres/src/backend/tcop/postgres.c:4833,1
    - Dst: forbidden_in_wal_sender
      Src: /src/postgres/src/backend/tcop/postgres.c:4840,1
    - Dst: SetCurrentStatementStartTimestamp
      Src: /src/postgres/src/backend/tcop/postgres.c:4843,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/tcop/postgres.c:4846,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/tcop/postgres.c:4847,1
    - Dst: start_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:4850,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/postgres.c:4862,1
    - Dst: HandleFunctionRequest
      Src: /src/postgres/src/backend/tcop/postgres.c:4864,1
    - Dst: finish_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:4867,1
    - Dst: valgrind_report_error_query
      Src: /src/postgres/src/backend/tcop/postgres.c:4869,1
    - Dst: forbidden_in_wal_sender
      Src: /src/postgres/src/backend/tcop/postgres.c:4879,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/tcop/postgres.c:4881,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/tcop/postgres.c:4882,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/tcop/postgres.c:4883,1
    - Dst: DropPreparedStatement
      Src: /src/postgres/src/backend/tcop/postgres.c:4889,1
    - Dst: drop_unnamed_stmt
      Src: /src/postgres/src/backend/tcop/postgres.c:4893,1
    - Dst: GetPortalByName
      Src: /src/postgres/src/backend/tcop/postgres.c:4900,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/backend/tcop/postgres.c:4901,1
    - Dst: PortalDrop
      Src: /src/postgres/src/backend/tcop/postgres.c:4902,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:4906,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:4907,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:4908,1
    - Dst: pq_putemptymessage
      Src: /src/postgres/src/backend/tcop/postgres.c:4914,1
    - Dst: valgrind_report_error_query
      Src: /src/postgres/src/backend/tcop/postgres.c:4916,1
    - Dst: forbidden_in_wal_sender
      Src: /src/postgres/src/backend/tcop/postgres.c:4925,1
    - Dst: SetCurrentStatementStartTimestamp
      Src: /src/postgres/src/backend/tcop/postgres.c:4928,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/tcop/postgres.c:4930,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/tcop/postgres.c:4931,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/tcop/postgres.c:4932,1
    - Dst: exec_describe_statement_message
      Src: /src/postgres/src/backend/tcop/postgres.c:4937,1
    - Dst: exec_describe_portal_message
      Src: /src/postgres/src/backend/tcop/postgres.c:4940,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:4943,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:4944,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:4945,1
    - Dst: valgrind_report_error_query
      Src: /src/postgres/src/backend/tcop/postgres.c:4950,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/tcop/postgres.c:4955,1
    - Dst: pq_flush
      Src: /src/postgres/src/backend/tcop/postgres.c:4957,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/tcop/postgres.c:4961,1
    - Dst: EndImplicitTransactionBlock
      Src: /src/postgres/src/backend/tcop/postgres.c:4968,1
    - Dst: finish_xact_command
      Src: /src/postgres/src/backend/tcop/postgres.c:4969,1
    - Dst: valgrind_report_error_query
      Src: /src/postgres/src/backend/tcop/postgres.c:4970,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/tcop/postgres.c:5002,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:5016,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:5017,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:5018,1
    CyclomaticComplexity: 69
    EdgeCount: 69
    ICount: 287
    argCount: 2
    argNames:
    - dbname
    - username
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5022
      start: 4183
    functionDepth: 7
    functionLinenumber: 4183
    functionLinenumberEnd: 5022
    functionName: PostgresMain
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 2
    functionsReached:
    - valgrind_report_error_query
    - pq_getmsgstring
    - BaseInit
    - InitPostgres
    - exec_bind_message
    - exec_describe_statement_message
    - exec_simple_query
    - PortalDrop
    - pq_getmsgend
    - BeginReportingGUCOptions
    - start_xact_command
    - GetProcessingMode
    - pgstat_report_activity
    - ReadyForQuery
    - on_proc_exit
    - GetPortalByName
    - TimestampDifferenceMicroseconds
    - FlushErrorState
    - EmitErrorReport
    - HandleFunctionRequest
    - ReplicationSlotCleanup
    - initStringInfo
    - exec_execute_message
    - SetCurrentStatementStartTimestamp
    - CHECK_FOR_INTERRUPTS
    - pq_putemptymessage
    - drop_unnamed_stmt
    - pq_sendbytes
    - pq_comm_reset
    - proc_exit
    - errmsg
    - SetProcessingMode
    - forbidden_in_wal_sender
    - GetCurrentTimestamp
    - InitWalSender
    - pgstat_report_stat
    - disable_all_timeouts
    - ReplicationSlotRelease
    - disable_timeout
    - PG_PROTOCOL
    - printf
    - ProcessConfigFile
    - DropPreparedStatement
    - AllocSetContextCreate
    - IsAbortedTransactionBlockState
    - MemoryContextReset
    - pq_is_reading_msg
    - pq_beginmessage
    - ReadCommand
    - sigsetjmp
    - sigprocmask
    - HOLD_INTERRUPTS
    - palloc_array
    - IsTransactionOrTransactionBlock
    - exec_describe_portal_message
    - exec_parse_message
    - InvalidateCatalogSnapshotConditionally
    - AbortCurrentTransaction
    - exec_replication_command
    - WalSndErrorCleanup
    - Assert
    - ereport
    - EventTriggerOnLogin
    - pqsignal
    - enable_timeout_after
    - MemoryContextSwitchTo
    - IsExternalConnectionBackend
    - jit_reset_after_error
    - set_ps_display
    - pq_endmessage
    - MemoryContextDelete
    - InitializeTimeouts
    - finish_xact_command
    - pq_flush
    - WalSndSignals
    - ProcessNotifyInterrupt
    - pq_sendint32
    - EndImplicitTransactionBlock
    - pg_strong_random
    - pq_getmsgbyte
    - pgstat_report_connect
    - get_timeout_active
    - ReportChangedGUCOptions
    - PortalErrorCleanup
    - PortalIsValid
    - pq_getmsgint
    - errcode
    - RESUME_INTERRUPTS
    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:5037,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:5038,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:5039,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:5041,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/postgres.c:5042,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:5043,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - firstchar
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5045
      start: 5031
    functionDepth: 1
    functionLinenumber: 5031
    functionLinenumberEnd: 5045
    functionName: forbidden_in_wal_sender
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - ereport
    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:5054,1
    - Dst: gettimeofday
      Src: /src/postgres/src/backend/tcop/postgres.c:5055,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5056
      start: 5051
    functionDepth: 3
    functionLinenumber: 5051
    functionLinenumberEnd: 5056
    functionName: ResetUsage
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 14
    functionsReached:
    - getrusage
    - gettimeofday
    linkageType: ''
    returnType: void
    signature: void ResetUsage(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getrusage
      Src: /src/postgres/src/backend/tcop/postgres.c:5067,1
    - Dst: gettimeofday
      Src: /src/postgres/src/backend/tcop/postgres.c:5068,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tcop/postgres.c:5069,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tcop/postgres.c:5070,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:5091,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/tcop/postgres.c:5093,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:5094,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:5102,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:5116,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:5126,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:5132,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:5139,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/tcop/postgres.c:5146,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:5157,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/tcop/postgres.c:5158,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/tcop/postgres.c:5159,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/postgres.c:5161,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 1
    argNames:
    - title
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5162
      start: 5058
    functionDepth: 3
    functionLinenumber: 5058
    functionLinenumberEnd: 5162
    functionName: ShowUsage
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 14
    functionsReached:
    - initStringInfo
    - pfree
    - getrusage
    - appendStringInfo
    - errdetail_internal
    - appendStringInfoString
    - errmsg_internal
    - ereport
    - gettimeofday
    - memcpy
    linkageType: ''
    returnType: void
    signature: void ShowUsage(const char *title)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TimestampDifference
      Src: /src/postgres/src/backend/tcop/postgres.c:5178,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/tcop/postgres.c:5179,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/postgres.c:5188,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/postgres.c:5189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5194
      start: 5167
    functionDepth: 1
    functionLinenumber: 5167
    functionLinenumberEnd: 5194
    functionName: log_disconnections
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 0
    functionsReached:
    - GetCurrentTimestamp
    - TimestampDifference
    - ereport
    - 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:5207,1
    - Dst: get_timeout_active
      Src: /src/postgres/src/backend/tcop/postgres.c:5212,1
    - Dst: enable_timeout_after
      Src: /src/postgres/src/backend/tcop/postgres.c:5213,1
    - Dst: get_timeout_active
      Src: /src/postgres/src/backend/tcop/postgres.c:5217,1
    - Dst: disable_timeout
      Src: /src/postgres/src/backend/tcop/postgres.c:5218,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5220
      start: 5203
    functionDepth: 1
    functionLinenumber: 5203
    functionLinenumberEnd: 5220
    functionName: enable_statement_timeout
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 1
    functionsReached:
    - enable_timeout_after
    - Assert
    - get_timeout_active
    - disable_timeout
    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:5228,1
    - Dst: disable_timeout
      Src: /src/postgres/src/backend/tcop/postgres.c:5229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5230
      start: 5225
    functionDepth: 1
    functionLinenumber: 5225
    functionLinenumberEnd: 5230
    functionName: disable_statement_timeout
    functionSourceFile: /src/postgres/src/backend/tcop/postgres.c
    functionUses: 4
    functionsReached:
    - get_timeout_active
    - disable_timeout
    linkageType: ''
    returnType: void
    signature: void disable_statement_timeout(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      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: 16
    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: 100
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 100
    functionName: CreateQueryDesc
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 0
    functionsReached:
    - palloc
    - RegisterSnapshot
    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:109,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:112,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:113,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tcop/pquery.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - qdesc
    argTypes:
    - QueryDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 117
    functionName: FreeQueryDesc
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - UnregisterSnapshot
    linkageType: ''
    returnType: void
    signature: void FreeQueryDesc(QueryDesc *qdesc)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CreateQueryDesc
      Src: /src/postgres/src/backend/tcop/pquery.c:149,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:150,1
    - Dst: ExecutorStart
      Src: /src/postgres/src/backend/tcop/pquery.c:156,1
    - Dst: ExecutorRun
      Src: /src/postgres/src/backend/tcop/pquery.c:161,1
    - Dst: SetQueryCompletion
      Src: /src/postgres/src/backend/tcop/pquery.c:171,1
    - Dst: SetQueryCompletion
      Src: /src/postgres/src/backend/tcop/pquery.c:174,1
    - Dst: SetQueryCompletion
      Src: /src/postgres/src/backend/tcop/pquery.c:177,1
    - Dst: SetQueryCompletion
      Src: /src/postgres/src/backend/tcop/pquery.c:180,1
    - Dst: SetQueryCompletion
      Src: /src/postgres/src/backend/tcop/pquery.c:183,1
    - Dst: SetQueryCompletion
      Src: /src/postgres/src/backend/tcop/pquery.c:186,1
    - Dst: ExecutorFinish
      Src: /src/postgres/src/backend/tcop/pquery.c:194,1
    - Dst: ExecutorEnd
      Src: /src/postgres/src/backend/tcop/pquery.c:195,1
    - Dst: FreeQueryDesc
      Src: /src/postgres/src/backend/tcop/pquery.c:197,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 6
    argNames:
    - plan
    - sourceText
    - params
    - queryEnv
    - dest
    - qc
    argTypes:
    - PlannedStmt*
    - char*
    - ParamListInfo
    - QueryEnvironment*
    - DestReceiver*
    - QueryCompletion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 136
    functionDepth: 2
    functionLinenumber: 136
    functionLinenumberEnd: 198
    functionName: ProcessQuery
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 0
    functionsReached:
    - ExecutorRun
    - FreeQueryDesc
    - CreateQueryDesc
    - GetActiveSnapshot
    - ExecutorFinish
    - ExecutorEnd
    - ExecutorStart
    - SetQueryCompletion
    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:221,1
    - Dst: linitial
      Src: /src/postgres/src/backend/tcop/pquery.c:223,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:225,1
    - Dst: UtilityReturnsTuples
      Src: /src/postgres/src/backend/tcop/pquery.c:240,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:247,1
    - Dst: UtilityReturnsTuples
      Src: /src/postgres/src/backend/tcop/pquery.c:262,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/pquery.c:270,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/pquery.c:270,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/tcop/pquery.c:281,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:283,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:296,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/pquery.c:310,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/pquery.c:310,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 54
    argCount: 1
    argNames:
    - stmts
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 209
    functionDepth: 2
    functionLinenumber: 209
    functionLinenumberEnd: 317
    functionName: ChoosePortalStrategy
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 0
    functionsReached:
    - nodeTag
    - linitial
    - IsA
    - list_length
    - elog
    - UtilityReturnsTuples
    - lfirst
    linkageType: ''
    returnType: PortalStrategy
    signature: PortalStrategy ChoosePortalStrategy(List *stmts)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/tcop/pquery.c:281,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:283,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:296,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/pquery.c:310,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/tcop/pquery.c:310,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 311
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 318
    functionsReached:
    - nodeTag
    - elog
    - IsA
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, stmts)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FetchStatementTargetList
      Src: /src/postgres/src/backend/tcop/pquery.c:333,1
    - Dst: PortalGetPrimaryStmt
      Src: /src/postgres/src/backend/tcop/pquery.c:333,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - portal
    argTypes:
    - Portal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 334
    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:353,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:371,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:389,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/pquery.c:394,1
    - Dst: GetPortalByName
      Src: /src/postgres/src/backend/tcop/pquery.c:395,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/pquery.c:396,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/backend/tcop/pquery.c:396,1
    - Dst: FetchPortalTargetList
      Src: /src/postgres/src/backend/tcop/pquery.c:397,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:399,1
    - Dst: FetchPreparedStatement
      Src: /src/postgres/src/backend/tcop/pquery.c:404,1
    - Dst: FetchPreparedStatementTargetList
      Src: /src/postgres/src/backend/tcop/pquery.c:405,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 348
    functionDepth: 2
    functionLinenumber: 348
    functionLinenumberEnd: 408
    functionName: FetchStatementTargetList
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 1
    functionsReached:
    - Assert
    - FetchPortalTargetList
    - IsA
    - FetchPreparedStatement
    - PortalIsValid
    - FetchPreparedStatementTargetList
    - GetPortalByName
    linkageType: ''
    returnType: List
    signature: 'List *

      FetchStatementTargetList(Node *stmt)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/pquery.c:444,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/backend/tcop/pquery.c:444,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/pquery.c:445,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/tcop/pquery.c:453,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:460,1
    - Dst: ChoosePortalStrategy
      Src: /src/postgres/src/backend/tcop/pquery.c:468,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:479,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:481,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:481,1
    - Dst: CreateQueryDesc
      Src: /src/postgres/src/backend/tcop/pquery.c:496,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/tcop/pquery.c:496,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:498,1
    - Dst: ExecutorStart
      Src: /src/postgres/src/backend/tcop/pquery.c:518,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:537,1
    - Dst: PortalGetPrimaryStmt
      Src: /src/postgres/src/backend/tcop/pquery.c:550,1
    - Dst: ExecCleanTypeFromTL
      Src: /src/postgres/src/backend/tcop/pquery.c:552,1
    - Dst: PortalGetPrimaryStmt
      Src: /src/postgres/src/backend/tcop/pquery.c:570,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/pquery.c:572,1
    - Dst: UtilityTupleDescriptor
      Src: /src/postgres/src/backend/tcop/pquery.c:573,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/tcop/pquery.c:590,1
    - Dst: MarkPortalFailed
      Src: /src/postgres/src/backend/tcop/pquery.c:593,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/tcop/pquery.c:600,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/tcop/pquery.c:602,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:604,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 66
    argCount: 4
    argNames:
    - portal
    - params
    - eflags
    - snapshot
    argTypes:
    - Portal
    - ParamListInfo
    - int
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 433
    functionDepth: 5
    functionLinenumber: 433
    functionLinenumberEnd: 611
    functionName: PortalStart
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 3
    functionsReached:
    - MemoryContextSwitchTo
    - PopActiveSnapshot
    - PG_RE_THROW
    - GetTransactionSnapshot
    - PushActiveSnapshot
    - ChoosePortalStrategy
    - PortalGetPrimaryStmt
    - linitial_node
    - ExecCleanTypeFromTL
    - Assert
    - UtilityTupleDescriptor
    - PG_END_TRY
    - CreateQueryDesc
    - PG_TRY
    - GetActiveSnapshot
    - PG_CATCH
    - ExecutorStart
    - PortalIsValid
    - MarkPortalFailed
    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:634,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/pquery.c:640,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/pquery.c:641,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/pquery.c:642,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tcop/pquery.c:644,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - portal
    - nFormats
    - formats
    argTypes:
    - Portal
    - int
    - int16*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 623
    functionDepth: 1
    functionLinenumber: 623
    functionLinenumberEnd: 660
    functionName: PortalSetResultFormat
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 3
    functionsReached:
    - errmsg
    - memcpy
    - ereport
    - MemoryContextAlloc
    - errcode
    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:698,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/backend/tcop/pquery.c:698,1
    - Dst: TRACE_POSTGRESQL_QUERY_EXECUTE_START
      Src: /src/postgres/src/backend/tcop/pquery.c:700,1
    - Dst: InitializeQueryCompletion
      Src: /src/postgres/src/backend/tcop/pquery.c:704,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/pquery.c:708,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/tcop/pquery.c:710,1
    - Dst: MarkPortalActive
      Src: /src/postgres/src/backend/tcop/pquery.c:716,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/tcop/pquery.c:738,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:745,1
    - Dst: FillPortalStore
      Src: /src/postgres/src/backend/tcop/pquery.c:760,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:765,1
    - Dst: CopyQueryCompletion
      Src: /src/postgres/src/backend/tcop/pquery.c:774,1
    - Dst: PortalRunMulti
      Src: /src/postgres/src/backend/tcop/pquery.c:788,1
    - Dst: MarkPortalDone
      Src: /src/postgres/src/backend/tcop/pquery.c:792,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/pquery.c:799,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/tcop/pquery.c:805,1
    - Dst: MarkPortalFailed
      Src: /src/postgres/src/backend/tcop/pquery.c:808,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:812,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:814,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/tcop/pquery.c:822,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/tcop/pquery.c:824,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:827,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:829,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/tcop/pquery.c:838,1
    - Dst: TRACE_POSTGRESQL_QUERY_EXECUTE_DONE
      Src: /src/postgres/src/backend/tcop/pquery.c:840,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: 843
      start: 684
    functionDepth: 4
    functionLinenumber: 684
    functionLinenumberEnd: 843
    functionName: PortalRun
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 3
    functionsReached:
    - ResetUsage
    - MemoryContextSwitchTo
    - PortalRunSelect
    - PortalRunMulti
    - MarkPortalDone
    - MarkPortalActive
    - FillPortalStore
    - PG_RE_THROW
    - ShowUsage
    - elog
    - InitializeQueryCompletion
    - Assert
    - PG_END_TRY
    - PG_TRY
    - PG_CATCH
    - TRACE_POSTGRESQL_QUERY_EXECUTE_START
    - CopyQueryCompletion
    - PortalIsValid
    - TRACE_POSTGRESQL_QUERY_EXECUTE_DONE
    - MarkPortalFailed
    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:880,1
    - Dst: RunFromStore
      Src: /src/postgres/src/backend/tcop/pquery.c:917,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:920,1
    - Dst: ExecutorRun
      Src: /src/postgres/src/backend/tcop/pquery.c:921,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:923,1
    - Dst: ScanDirectionIsNoMovement
      Src: /src/postgres/src/backend/tcop/pquery.c:926,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tcop/pquery.c:938,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/pquery.c:939,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/pquery.c:940,1
    - Dst: errhint
      Src: /src/postgres/src/backend/tcop/pquery.c:941,1
    - Dst: RunFromStore
      Src: /src/postgres/src/backend/tcop/pquery.c:956,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:959,1
    - Dst: ExecutorRun
      Src: /src/postgres/src/backend/tcop/pquery.c:960,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:962,1
    - Dst: ScanDirectionIsNoMovement
      Src: /src/postgres/src/backend/tcop/pquery.c:965,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 58
    argCount: 4
    argNames:
    - portal
    - forward
    - count
    - dest
    argTypes:
    - Portal
    - bool
    - long
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 863
    functionDepth: 1
    functionLinenumber: 863
    functionLinenumberEnd: 985
    functionName: PortalRunSelect
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - Assert
    - ExecutorRun
    - ereport
    - PushActiveSnapshot
    - errhint
    - RunFromStore
    - PopActiveSnapshot
    - ScanDirectionIsNoMovement
    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:1000,1
    - Dst: PortalCreateHoldStore
      Src: /src/postgres/src/backend/tcop/pquery.c:1001,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/tcop/pquery.c:1002,1
    - Dst: SetTuplestoreDestReceiverParams
      Src: /src/postgres/src/backend/tcop/pquery.c:1003,1
    - Dst: PortalRunMulti
      Src: /src/postgres/src/backend/tcop/pquery.c:1021,1
    - Dst: PortalRunUtility
      Src: /src/postgres/src/backend/tcop/pquery.c:1026,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/tcop/pquery.c:1026,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/pquery.c:1031,1
    - Dst: CopyQueryCompletion
      Src: /src/postgres/src/backend/tcop/pquery.c:1038,1
    - Dst: DestReceiver*::rDestroy
      Src: /src/postgres/src/backend/tcop/pquery.c:1040,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - portal
    - isTopLevel
    argTypes:
    - Portal
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 994
    functionDepth: 2
    functionLinenumber: 994
    functionLinenumberEnd: 1041
    functionName: FillPortalStore
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 1
    functionsReached:
    - CreateDestReceiver
    - PortalCreateHoldStore
    - PortalRunUtility
    - PortalRunMulti
    - elog
    - CopyQueryCompletion
    - DestReceiver*::rDestroy
    - InitializeQueryCompletion
    - SetTuplestoreDestReceiverParams
    - linitial_node
    linkageType: ''
    returnType: void
    signature: void FillPortalStore(Portal portal, bool isTopLevel)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/tcop/pquery.c:1062,1
    - Dst: DestReceiver*::rStartup
      Src: /src/postgres/src/backend/tcop/pquery.c:1064,1
    - Dst: ScanDirectionIsNoMovement
      Src: /src/postgres/src/backend/tcop/pquery.c:1066,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/tcop/pquery.c:1072,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:1079,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/tcop/pquery.c:1081,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:1084,1
    - Dst: DestReceiver*::receiveSlot
      Src: /src/postgres/src/backend/tcop/pquery.c:1094,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/tcop/pquery.c:1097,1
    - Dst: DestReceiver*::rShutdown
      Src: /src/postgres/src/backend/tcop/pquery.c:1110,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/tcop/pquery.c:1112,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 4
    argNames:
    - portal
    - direction
    - count
    - dest
    argTypes:
    - Portal
    - ScanDirection
    - uint64
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1115
      start: 1055
    functionDepth: 1
    functionLinenumber: 1055
    functionLinenumberEnd: 1115
    functionName: RunFromStore
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - DestReceiver*::rShutdown
    - ExecDropSingleTupleTableSlot
    - DestReceiver*::rStartup
    - ScanDirectionIsForward
    - MakeSingleTupleTableSlot
    - tuplestore_gettupleslot
    - DestReceiver*::receiveSlot
    - ExecClearTuple
    - ScanDirectionIsNoMovement
    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:1129,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1131,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1136,1
    - Dst: PushActiveSnapshotWithLevel
      Src: /src/postgres/src/backend/tcop/pquery.c:1146,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1148,1
    - Dst: ProcessUtility
      Src: /src/postgres/src/backend/tcop/pquery.c:1153,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:1163,1
    - Dst: ActiveSnapshotSet
      Src: /src/postgres/src/backend/tcop/pquery.c:1171,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/pquery.c:1173,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1173,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1174,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: 1177
      start: 1121
    functionDepth: 2
    functionLinenumber: 1121
    functionLinenumberEnd: 1177
    functionName: PortalRunUtility
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 1
    functionsReached:
    - Assert
    - PlannedStmtRequiresSnapshot
    - MemoryContextSwitchTo
    - RegisterSnapshot
    - PushActiveSnapshotWithLevel
    - GetActiveSnapshot
    - GetTransactionSnapshot
    - ProcessUtility
    - ActiveSnapshotSet
    - PopActiveSnapshot
    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: 15
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/tcop/pquery.c:1212,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/tcop/pquery.c:1214,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/tcop/pquery.c:1219,1
    - Dst: TRACE_POSTGRESQL_QUERY_EXECUTE_START
      Src: /src/postgres/src/backend/tcop/pquery.c:1226,1
    - Dst: ResetUsage
      Src: /src/postgres/src/backend/tcop/pquery.c:1229,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1239,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1244,1
    - Dst: PushCopiedSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1257,1
    - Dst: UpdateActiveSnapshotCommandId
      Src: /src/postgres/src/backend/tcop/pquery.c:1267,1
    - Dst: ProcessQuery
      Src: /src/postgres/src/backend/tcop/pquery.c:1272,1
    - Dst: ProcessQuery
      Src: /src/postgres/src/backend/tcop/pquery.c:1281,1
    - Dst: ShowUsage
      Src: /src/postgres/src/backend/tcop/pquery.c:1289,1
    - Dst: TRACE_POSTGRESQL_QUERY_EXECUTE_DONE
      Src: /src/postgres/src/backend/tcop/pquery.c:1291,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/pquery.c:1308,1
    - Dst: PortalRunUtility
      Src: /src/postgres/src/backend/tcop/pquery.c:1310,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/pquery.c:1315,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:1315,1
    - Dst: PortalRunUtility
      Src: /src/postgres/src/backend/tcop/pquery.c:1317,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/pquery.c:1325,1
    - Dst: MemoryContextDeleteChildren
      Src: /src/postgres/src/backend/tcop/pquery.c:1327,1
    - Dst: lnext
      Src: /src/postgres/src/backend/tcop/pquery.c:1344,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/tcop/pquery.c:1345,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1350,1
    - Dst: CopyQueryCompletion
      Src: /src/postgres/src/backend/tcop/pquery.c:1367,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/pquery.c:1369,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 51
    argCount: 6
    argNames:
    - portal
    - isTopLevel
    - setHoldSnapshot
    - dest
    - altdest
    - qc
    argTypes:
    - Portal
    - bool
    - bool
    - DestReceiver*
    - DestReceiver*
    - QueryCompletion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1371
      start: 1184
    functionDepth: 4
    functionLinenumber: 1184
    functionLinenumberEnd: 1371
    functionName: PortalRunMulti
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 2
    functionsReached:
    - ResetUsage
    - CHECK_FOR_INTERRUPTS
    - MemoryContextDeleteChildren
    - PopActiveSnapshot
    - RegisterSnapshot
    - PortalRunUtility
    - GetTransactionSnapshot
    - foreach
    - PushCopiedSnapshot
    - ShowUsage
    - lfirst_node
    - ProcessQuery
    - CommandCounterIncrement
    - lnext
    - IsA
    - Assert
    - UpdateActiveSnapshotCommandId
    - TRACE_POSTGRESQL_QUERY_EXECUTE_START
    - CopyQueryCompletion
    - TRACE_POSTGRESQL_QUERY_EXECUTE_DONE
    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:1397,1
    - Dst: PortalIsValid
      Src: /src/postgres/src/backend/tcop/pquery.c:1397,1
    - Dst: MarkPortalActive
      Src: /src/postgres/src/backend/tcop/pquery.c:1402,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/tcop/pquery.c:1410,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:1417,1
    - Dst: DoPortalRunFetch
      Src: /src/postgres/src/backend/tcop/pquery.c:1422,1
    - Dst: FillPortalStore
      Src: /src/postgres/src/backend/tcop/pquery.c:1434,1
    - Dst: DoPortalRunFetch
      Src: /src/postgres/src/backend/tcop/pquery.c:1439,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/pquery.c:1443,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/tcop/pquery.c:1448,1
    - Dst: MarkPortalFailed
      Src: /src/postgres/src/backend/tcop/pquery.c:1451,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/tcop/pquery.c:1458,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/tcop/pquery.c:1460,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:1462,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 43
    argCount: 4
    argNames:
    - portal
    - fdirection
    - count
    - dest
    argTypes:
    - Portal
    - FetchDirection
    - long
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1472
      start: 1385
    functionDepth: 3
    functionLinenumber: 1385
    functionLinenumberEnd: 1472
    functionName: PortalRunFetch
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 1
    functionsReached:
    - DoPortalRunFetch
    - Assert
    - MemoryContextSwitchTo
    - PG_RE_THROW
    - PG_END_TRY
    - PG_TRY
    - PG_CATCH
    - elog
    - MarkPortalActive
    - FillPortalStore
    - PortalIsValid
    - MarkPortalFailed
    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:1491,1
    - Dst: DoPortalRewind
      Src: /src/postgres/src/backend/tcop/pquery.c:1544,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1546,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1556,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1559,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1562,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1573,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1575,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1576,1
    - Dst: DoPortalRewind
      Src: /src/postgres/src/backend/tcop/pquery.c:1582,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1583,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1593,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1594,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1603,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1604,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/pquery.c:1614,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1650,1
    - Dst: DoPortalRewind
      Src: /src/postgres/src/backend/tcop/pquery.c:1667,1
    - Dst: PortalRunSelect
      Src: /src/postgres/src/backend/tcop/pquery.c:1671,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 79
    argCount: 4
    argNames:
    - portal
    - fdirection
    - count
    - dest
    argTypes:
    - Portal
    - FetchDirection
    - long
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1672
      start: 1483
    functionDepth: 2
    functionLinenumber: 1483
    functionLinenumberEnd: 1672
    functionName: DoPortalRunFetch
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 1
    functionsReached:
    - DoPortalRewind
    - Assert
    - 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:1691,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tcop/pquery.c:1692,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tcop/pquery.c:1693,1
    - Dst: errhint
      Src: /src/postgres/src/backend/tcop/pquery.c:1694,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:1701,1
    - Dst: tuplestore_rescan
      Src: /src/postgres/src/backend/tcop/pquery.c:1702,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tcop/pquery.c:1703,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1710,1
    - Dst: ExecutorRewind
      Src: /src/postgres/src/backend/tcop/pquery.c:1711,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1712,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - portal
    argTypes:
    - Portal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1718
      start: 1677
    functionDepth: 1
    functionLinenumber: 1677
    functionLinenumberEnd: 1718
    functionName: DoPortalRewind
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 1
    functionsReached:
    - errmsg
    - PopActiveSnapshot
    - MemoryContextSwitchTo
    - ereport
    - ExecutorRewind
    - errhint
    - PushActiveSnapshot
    - tuplestore_rescan
    - errcode
    linkageType: ''
    returnType: void
    signature: void DoPortalRewind(Portal portal)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:1745,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:1746,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:1747,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:1748,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:1749,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:1751,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:1752,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:1753,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:1754,1
    - Dst: IsA
      Src: /src/postgres/src/backend/tcop/pquery.c:1755,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 6
    argCount: 1
    argNames:
    - pstmt
    argTypes:
    - PlannedStmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1759
      start: 1723
    functionDepth: 1
    functionLinenumber: 1723
    functionLinenumberEnd: 1759
    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:1781,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/tcop/pquery.c:1786,1
    - Dst: elog
      Src: /src/postgres/src/backend/tcop/pquery.c:1787,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tcop/pquery.c:1788,1
    - Dst: PushActiveSnapshotWithLevel
      Src: /src/postgres/src/backend/tcop/pquery.c:1796,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1796,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/tcop/pquery.c:1798,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1799
      start: 1771
    functionDepth: 1
    functionLinenumber: 1771
    functionLinenumberEnd: 1799
    functionName: EnsurePortalSnapshotExists
    functionSourceFile: /src/postgres/src/backend/tcop/pquery.c
    functionUses: 1
    functionsReached:
    - Assert
    - PushActiveSnapshotWithLevel
    - GetActiveSnapshot
    - GetTransactionSnapshot
    - elog
    - unlikely
    - ActiveSnapshotSet
    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: 6
    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:
    - Assert
    - pg_ulltoa_n
    - GetCommandTagNameAndLen
    - memcpy
    - 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:
    - errmsg
    - pfree
    - pq_sendbytes
    - getTypeOutputInfo
    - OidSendFunctionCall
    - pq_sendcountedtext
    - VARSIZE
    - VARDATA
    - ereport
    - OidOutputFunctionCall
    - pq_beginmessage
    - pq_sendint32
    - getTypeBinaryOutputInfo
    - pq_endmessage
    - errcode
    - strlen
    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:
    - errmsg
    - errcode
    - Assert
    - NameStr
    - ReleaseSysCache
    - HeapTupleIsValid
    - fmgr_info
    - GETSTRUCT
    - ereport
    - SearchSysCache1
    - elog
    - MemSet
    - strlcpy
    - memcpy
    - ObjectIdGetDatum
    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:
    - CHECK_FOR_INTERRUPTS
    - InvokeFunctionExecuteHook
    - check_log_duration
    - GetUserId
    - parse_fcall_arguments
    - object_aclcheck
    - PopActiveSnapshot
    - LOCAL_FCINFO
    - pq_getmsgend
    - GetTransactionSnapshot
    - SendFunctionResult
    - PushActiveSnapshot
    - FunctionCallInvoke
    - errmsg
    - InitFunctionCallInfoData
    - aclcheck_error
    - get_namespace_name
    - fetch_fp_info
    - get_func_name
    - ereport
    - InvokeNamespaceSearchHook
    - IsAbortedTransactionBlockState
    - pq_getmsgint
    - errcode
    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:
    - errmsg
    - pfree
    - pq_getmsgbytes
    - getTypeInputInfo
    - resetStringInfo
    - pg_client_to_server
    - OidInputFunctionCall
    - appendBinaryStringInfo
    - OidReceiveFunctionCall
    - ereport
    - getTypeBinaryInputInfo
    - initStringInfo
    - palloc
    - pq_getmsgint
    - errcode
    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:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 185
    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:209,1
    - Dst: InitStandaloneProcess
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:211,1
    - Dst: InitializeGUCOptions
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:214,1
    - Dst: Assert
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:217,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:218,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:219,1
    - Dst: getopt
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:223,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:228,1
    - Dst: parse_dispatch_option
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:238,1
    - Dst: ereport
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:239,1
    - Dst: errcode
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:240,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:241,1
    - Dst: ParseLongOption
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:249,1
    - Dst: ereport
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:253,1
    - Dst: errcode
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:254,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:255,1
    - Dst: ereport
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:258,1
    - Dst: errcode
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:259,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:260,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:264,1
    - Dst: pfree
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:265,1
    - Dst: pfree
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:266,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:270,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:277,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:278,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:280,1
    - Dst: pfree
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:282,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:286,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:292,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:295,1
    - Dst: write_stderr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:298,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:300,1
    - Dst: write_stderr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:307,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:308,1
    - Dst: SelectConfigFiles
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:312,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:313,1
    - Dst: checkDataDir
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:319,1
    - Dst: ChangeToDataDir
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:320,1
    - Dst: CreateDataDirLockFile
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:322,1
    - Dst: SetProcessingMode
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:324,1
    - Dst: InitializeMaxBackends
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:327,1
    - Dst: InitPostmasterChildSlots
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:334,1
    - Dst: InitializeFastPathLocks
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:336,1
    - Dst: CreateSharedMemoryAndSemaphores
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:338,1
    - Dst: set_max_safe_fds
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:344,1
    - Dst: SetProcessingMode
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:353,1
    - Dst: CheckerModeMain
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:354,1
    - Dst: abort
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:355,1
    - Dst: InitProcess
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:361,1
    - Dst: BaseInit
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:363,1
    - Dst: bootstrap_signals
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:365,1
    - Dst: BootStrapXLOG
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:366,1
    - Dst: pg_link_canary_is_frontend
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:372,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:373,1
    - Dst: InitPostgres
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:375,1
    - Dst: boot_yylex_init
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:384,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:385,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:390,1
    - Dst: boot_yyparse
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:391,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:392,1
    - Dst: RelationMapFinishBootstrap
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:398,1
    - Dst: cleanup
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:401,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:402,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 95
    argCount: 3
    argNames:
    - argc
    - argv
    - check_only
    argTypes:
    - int
    - char*[]
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 199
    functionDepth: 9
    functionLinenumber: 199
    functionLinenumberEnd: 403
    functionName: BootstrapModeMain
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 0
    functionsReached:
    - pg_link_canary_is_frontend
    - InitializeGUCOptions
    - BaseInit
    - pstrdup
    - InitPostgres
    - abort
    - getopt
    - psprintf
    - cleanup
    - pfree
    - SetConfigOption
    - parse_dispatch_option
    - SelectConfigFiles
    - RelationMapFinishBootstrap
    - bootstrap_signals
    - CreateDataDirLockFile
    - strcmp
    - set_max_safe_fds
    - StartTransactionCommand
    - checkDataDir
    - errmsg
    - proc_exit
    - ChangeToDataDir
    - SetProcessingMode
    - CreateSharedMemoryAndSemaphores
    - CheckerModeMain
    - ParseLongOption
    - boot_yylex_init
    - InitProcess
    - elog
    - write_stderr
    - strlcpy
    - InitStandaloneProcess
    - Assert
    - InitializeMaxBackends
    - CommitTransactionCommand
    - InitPostmasterChildSlots
    - boot_yyparse
    - ereport
    - BootStrapXLOG
    - InitializeFastPathLocks
    - errcode
    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:417,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:424,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:425,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:426,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 414
    functionDepth: 1
    functionLinenumber: 414
    functionLinenumberEnd: 428
    functionName: bootstrap_signals
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 1
    functionsReached:
    - pqsignal
    - Assert
    linkageType: ''
    returnType: void
    signature: void bootstrap_signals(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:446,1
    - Dst: populate_typ_list
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:454,1
    - Dst: closerel
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:457,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:459,1
    - Dst: table_openrv
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:462,1
    - Dst: makeRangeVar
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:462,1
    - Dst: RelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:463,1
    - Dst: AllocateAttribute
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:467,1
    - Dst: memmove
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:468,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:469,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:475,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:476,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - relname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 441
    functionDepth: 4
    functionLinenumber: 441
    functionLinenumberEnd: 480
    functionName: boot_openrel
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 0
    functionsReached:
    - AllocateAttribute
    - NameStr
    - populate_typ_list
    - RelationGetNumberOfAttributes
    - TupleDescAttr
    - memmove
    - elog
    - table_openrv
    - closerel
    - makeRangeVar
    - strlen
    linkageType: ''
    returnType: void
    signature: void boot_openrel(char *relname)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:493,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:493,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:494,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:495,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:498,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:503,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:506,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:507,1
    - Dst: table_close
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:508,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - relname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 486
    functionDepth: 3
    functionLinenumber: 486
    functionLinenumberEnd: 511
    functionName: closerel
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 1
    functionsReached:
    - table_close
    - strcmp
    - RelationGetRelationName
    - elog
    linkageType: ''
    returnType: void
    signature: void closerel(char *relname)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:530,1
    - Dst: closerel
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:531,1
    - Dst: AllocateAttribute
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:535,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:536,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:538,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:539,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:539,1
    - Dst: gettype
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:542,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:582,1
    - Dst: Assert
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:598,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 55
    argCount: 4
    argNames:
    - name
    - type
    - attnum
    - nullness
    argTypes:
    - char*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 523
    functionDepth: 4
    functionLinenumber: 523
    functionLinenumberEnd: 620
    functionName: DefineAttr
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 0
    functionsReached:
    - AllocateAttribute
    - Assert
    - NameStr
    - namestrcpy
    - elog
    - MemSet
    - OidIsValid
    - closerel
    - gettype
    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:637,1
    - Dst: CreateTupleDesc
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:639,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:640,1
    - Dst: pfree
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:641,1
    - Dst: simple_heap_insert
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:643,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:644,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:645,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 630
    functionDepth: 6
    functionLinenumber: 630
    functionLinenumberEnd: 652
    functionName: InsertOneTuple
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 0
    functionsReached:
    - heap_form_tuple
    - pfree
    - heap_freetuple
    - CreateTupleDesc
    - elog
    - simple_heap_insert
    linkageType: ''
    returnType: void
    signature: void InsertOneTuple(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:670,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:672,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:674,1
    - Dst: boot_get_type_io_data
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:676,1
    - Dst: OidInputFunctionCall
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:681,1
    - Dst: ereport
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:687,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:688,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:689,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - value
    - i
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 658
    functionDepth: 2
    functionLinenumber: 658
    functionLinenumberEnd: 690
    functionName: InsertOneValue
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 0
    functionsReached:
    - Assert
    - OidInputFunctionCall
    - TupleDescAttr
    - errmsg_internal
    - ereport
    - OidOutputFunctionCall
    - elog
    - boot_get_type_io_data
    linkageType: ''
    returnType: void
    signature: void InsertOneValue(char *value, int i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:699,1
    - Dst: Assert
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:700,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:701,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:702,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:704,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:704,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:705,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:706,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - i
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 696
    functionDepth: 2
    functionLinenumber: 696
    functionLinenumberEnd: 708
    functionName: InsertOneNull
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 0
    functionsReached:
    - Assert
    - NameStr
    - TupleDescAttr
    - PointerGetDatum
    - elog
    - RelationGetRelationName
    linkageType: ''
    returnType: void
    signature: void InsertOneNull(int i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: closerel
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:718,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 714
    functionDepth: 4
    functionLinenumber: 714
    functionLinenumberEnd: 719
    functionName: cleanup
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 50
    functionsReached:
    - closerel
    linkageType: ''
    returnType: void
    signature: void cleanup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:735,1
    - Dst: table_open
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:737,1
    - Dst: table_beginscan_catalog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:738,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:739,1
    - Dst: heap_getnext
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:740,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:742,1
    - Dst: palloc
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:745,1
    - Dst: lappend
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:746,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:749,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:751,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:752,1
    - Dst: table_close
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:753,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 727
    functionDepth: 7
    functionLinenumber: 727
    functionLinenumberEnd: 754
    functionName: populate_typ_list
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - table_open
    - table_beginscan_catalog
    - GETSTRUCT
    - table_close
    - heap_getnext
    - lappend
    - memcpy
    - palloc
    - 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:776,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:778,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:778,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:790,1
    - Dst: populate_typ_list
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:792,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:800,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:802,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:802,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:815,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:819,1
    - Dst: populate_typ_list
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:820,1
    - Dst: gettype
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:821,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:823,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 1
    argNames:
    - type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 767
    functionDepth: 8
    functionLinenumber: 767
    functionLinenumberEnd: 826
    functionName: gettype
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 2
    functionsReached:
    - NameStr
    - list_free_deep
    - populate_typ_list
    - elog
    - strncmp
    - lfirst
    - gettype
    linkageType: ''
    returnType: Oid
    signature: Oid gettype(char *type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:776,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:778,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:778,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 774
    functionDepth: 1
    functionLinenumber: 774
    functionLinenumberEnd: 783
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 319
    functionsReached:
    - NameStr
    - strncmp
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, Typ)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:800,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:802,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:802,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 798
    functionDepth: 1
    functionLinenumber: 798
    functionLinenumberEnd: 807
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 319
    functionsReached:
    - NameStr
    - strncmp
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, Typ)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:856,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:862,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:870,1
    - Dst: elog
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:889,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:898,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 8
    argNames:
    - typid
    - typlen
    - typbyval
    - typalign
    - typdelim
    - typioparam
    - typinput
    - typoutput
    argTypes:
    - Oid
    - int16*
    - bool*
    - char*
    - char*
    - Oid*
    - Oid*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 838
    functionDepth: 1
    functionLinenumber: 838
    functionLinenumberEnd: 906
    functionName: boot_get_type_io_data
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 1
    functionsReached:
    - OidIsValid
    - elog
    - 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)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:856,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 854
    functionDepth: 1
    functionLinenumber: 854
    functionLinenumberEnd: 859
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 319
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, Typ)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:919,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 915
    functionDepth: 1
    functionLinenumber: 915
    functionLinenumberEnd: 920
    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:948,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:952,1
    - Dst: palloc
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:954,1
    - Dst: palloc
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:957,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:959,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:962,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:966,1
    - Dst: Assert
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:969,1
    - Dst: Assert
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:970,1
    - Dst: Assert
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:971,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:976,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 3
    argNames:
    - heap
    - ind
    - indexInfo
    argTypes:
    - Oid
    - Oid
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 933
    functionDepth: 1
    functionLinenumber: 933
    functionLinenumberEnd: 977
    functionName: index_register
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - copyObject
    - AllocSetContextCreate
    - memcpy
    - palloc
    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:992,1
    - Dst: index_open
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:993,1
    - Dst: index_build
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:995,1
    - Dst: index_close
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:997,1
    - Dst: table_close
      Src: /src/postgres/src/backend/bootstrap/bootstrap.c:998,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 983
    functionDepth: 3
    functionLinenumber: 983
    functionLinenumberEnd: 1000
    functionName: build_indices
    functionSourceFile: /src/postgres/src/backend/bootstrap/bootstrap.c
    functionUses: 0
    functionsReached:
    - index_close
    - table_open
    - table_close
    - index_build
    - index_open
    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: 50
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 50
    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: 57
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 57
    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:94,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:96,1
    - Dst: generator_init
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:109,1
    - Dst: generator_next
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:111,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:116,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:124,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:124,1
    - Dst: ndistinct_for_combination
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:128,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:131,1
    - Dst: generator_free
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:134,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:138,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - totalrows
    - data
    argTypes:
    - double
    - StatsBuildData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 141
    functionName: statext_ndistinct_build
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 0
    functionsReached:
    - generator_init
    - Assert
    - generator_free
    - generator_next
    - ndistinct_for_combination
    - AttributeNumberIsValid
    - palloc
    - num_combinations
    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:155,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:156,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:156,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:157,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:158,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:160,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:163,1
    - Dst: statext_ndistinct_deserialize
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:167,1
    - Dst: DatumGetByteaPP
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:167,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:169,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - mvoid
    - inh
    argTypes:
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 172
    functionName: statext_ndistinct_load
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 0
    functionsReached:
    - SearchSysCache2
    - ReleaseSysCache
    - BoolGetDatum
    - HeapTupleIsValid
    - elog
    - SysCacheGetAttr
    - statext_ndistinct_deserialize
    - DatumGetByteaPP
    - ObjectIdGetDatum
    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:186,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:187,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:201,1
    - Dst: SizeOfItem
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:203,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:206,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:207,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:209,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:212,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:214,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:216,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:227,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:229,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:232,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:236,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:240,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 1
    argNames:
    - ndistinct
    argTypes:
    - MVNDistinct*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 243
    functionName: statext_ndistinct_serialize
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 0
    functionsReached:
    - Assert
    - VARDATA
    - memcpy
    - palloc
    - SET_VARSIZE
    - SizeOfItem
    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:262,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:263,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:264,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:267,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:270,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:272,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:274,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: elog
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:284,1
    - Dst: MinSizeOfItems
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:287,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:288,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:289,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:290,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:296,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:296,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:307,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:311,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:313,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:316,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:318,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:322,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:322,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:326,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:326,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 1
    argNames:
    - data
    argTypes:
    - bytea*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 329
    functionName: statext_ndistinct_deserialize
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 1
    functionsReached:
    - Assert
    - VARSIZE_ANY
    - memcpy
    - palloc0
    - elog
    - MinSizeOfItems
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - palloc
    - MAXALIGN
    linkageType: ''
    returnType: MVNDistinct
    signature: 'MVNDistinct *

      statext_ndistinct_deserialize(bytea *data)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:341,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:342,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:343,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 346
    functionName: pg_ndistinct_in
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_VOID
    - errcode
    - ereport
    linkageType: ''
    returnType: Datum
    signature: Datum pg_ndistinct_in(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:357,1
    - Dst: statext_ndistinct_deserialize
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:358,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:362,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:363,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:371,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:377,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:379,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:382,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:384,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 354
    functionDepth: 3
    functionLinenumber: 354
    functionLinenumberEnd: 385
    functionName: pg_ndistinct_out
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - appendStringInfoChar
    - appendStringInfoString
    - PG_RETURN_CSTRING
    - PG_GETARG_BYTEA_PP
    - statext_ndistinct_deserialize
    - initStringInfo
    linkageType: ''
    returnType: Datum
    signature: Datum pg_ndistinct_out(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:394,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:395,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:396,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 391
    functionDepth: 1
    functionLinenumber: 391
    functionLinenumberEnd: 399
    functionName: pg_ndistinct_recv
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_VOID
    - errcode
    - ereport
    linkageType: ''
    returnType: Datum
    signature: Datum pg_ndistinct_recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: byteasend
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 407
    functionDepth: 1
    functionLinenumber: 407
    functionLinenumberEnd: 411
    functionName: pg_ndistinct_send
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 0
    functionsReached:
    - byteasend
    linkageType: ''
    returnType: Datum
    signature: Datum pg_ndistinct_send(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: multi_sort_init
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:439,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:447,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:448,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:449,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:474,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:476,1
    - Dst: multi_sort_add_dimension
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:480,1
    - Dst: qsort_interruptible
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:491,1
    - Dst: multi_sort_compare
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:501,1
    - Dst: estimate_ndistinct
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:516,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 37
    argCount: 4
    argNames:
    - totalrows
    - data
    - k
    - combination
    argTypes:
    - double
    - StatsBuildData*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 424
    functionDepth: 1
    functionLinenumber: 424
    functionLinenumberEnd: 517
    functionName: ndistinct_for_combination
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 1
    functionsReached:
    - qsort_interruptible
    - multi_sort_init
    - multi_sort_add_dimension
    - palloc0
    - lookup_type_cache
    - elog
    - palloc
    - multi_sort_compare
    - estimate_ndistinct
    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:541,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - totalrows
    - numrows
    - d
    - f1
    argTypes:
    - double
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 542
    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:555,1
    - Dst: Min
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:558,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - n
    - k
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 549
    functionDepth: 1
    functionLinenumber: 549
    functionLinenumberEnd: 568
    functionName: n_choose_k
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 0
    functionsReached:
    - Min
    - Assert
    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: 578
      start: 574
    functionDepth: 0
    functionLinenumber: 574
    functionLinenumberEnd: 578
    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:593,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:596,1
    - Dst: n_choose_k
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:598,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:601,1
    - Dst: generate_combinations
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:608,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:611,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - n
    - k
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 588
    functionDepth: 2
    functionLinenumber: 588
    functionLinenumberEnd: 617
    functionName: generator_init
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 1
    functionsReached:
    - generate_combinations
    - n_choose_k
    - Assert
    - palloc
    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: 633
      start: 626
    functionDepth: 0
    functionLinenumber: 626
    functionLinenumberEnd: 633
    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:644,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:645,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - CombinationGenerator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 641
    functionDepth: 0
    functionLinenumber: 641
    functionLinenumberEnd: 646
    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:673,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:681,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - state
    - index
    - start
    - current
    argTypes:
    - CombinationGenerator*
    - int
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 656
    functionDepth: 1
    functionLinenumber: 656
    functionLinenumberEnd: 685
    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
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:694,1
    - Dst: generate_combinations_recurse
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:696,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mvdistinct.c:698,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - CombinationGenerator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 691
    functionDepth: 2
    functionLinenumber: 691
    functionLinenumberEnd: 699
    functionName: generate_combinations
    functionSourceFile: /src/postgres/src/backend/statistics/mvdistinct.c
    functionUses: 1
    functionsReached:
    - pfree
    - generate_combinations_recurse
    - palloc0
    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:127,1
    - Dst: fetch_statentries_for_relation
      Src: /src/postgres/src/backend/statistics/extended_stats.c:128,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/statistics/extended_stats.c:128,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/statistics/extended_stats.c:131,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/statistics/extended_stats.c:134,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:145,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/statistics/extended_stats.c:148,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:154,1
    - Dst: lookup_var_attr_stats
      Src: /src/postgres/src/backend/statistics/extended_stats.c:168,1
    - Dst: AmAutoVacuumWorkerProcess
      Src: /src/postgres/src/backend/statistics/extended_stats.c:172,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats.c:173,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats.c:174,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats.c:175,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/statistics/extended_stats.c:177,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/statistics/extended_stats.c:178,1
    - Dst: errtable
      Src: /src/postgres/src/backend/statistics/extended_stats.c:179,1
    - Dst: statext_compute_stattarget
      Src: /src/postgres/src/backend/statistics/extended_stats.c:184,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:185,1
    - Dst: make_build_data
      Src: /src/postgres/src/backend/statistics/extended_stats.c:197,1
    - Dst: foreach
      Src: /src/postgres/src/backend/statistics/extended_stats.c:200,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/statistics/extended_stats.c:202,1
    - Dst: statext_ndistinct_build
      Src: /src/postgres/src/backend/statistics/extended_stats.c:205,1
    - Dst: statext_dependencies_build
      Src: /src/postgres/src/backend/statistics/extended_stats.c:207,1
    - Dst: statext_mcv_build
      Src: /src/postgres/src/backend/statistics/extended_stats.c:209,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/extended_stats.c:217,1
    - Dst: build_expr_data
      Src: /src/postgres/src/backend/statistics/extended_stats.c:219,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:220,1
    - Dst: compute_expr_stats
      Src: /src/postgres/src/backend/statistics/extended_stats.c:222,1
    - Dst: serialize_expr_stats
      Src: /src/postgres/src/backend/statistics/extended_stats.c:224,1
    - Dst: statext_store
      Src: /src/postgres/src/backend/statistics/extended_stats.c:229,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/statistics/extended_stats.c:233,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/statistics/extended_stats.c:237,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/statistics/extended_stats.c:240,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/statistics/extended_stats.c:241,1
    - Dst: list_free
      Src: /src/postgres/src/backend/statistics/extended_stats.c:243,1
    - Dst: table_close
      Src: /src/postgres/src/backend/statistics/extended_stats.c:245,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: 246
      start: 110
    functionDepth: 3
    functionLinenumber: 110
    functionLinenumberEnd: 246
    functionName: BuildRelationExtStatistics
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - statext_compute_stattarget
    - MemoryContextReset
    - list_length
    - statext_ndistinct_build
    - RelationGetRelationName
    - bms_num_members
    - lfirst_int
    - MemoryContextDelete
    - RelationGetRelid
    - table_open
    - errtable
    - foreach
    - statext_dependencies_build
    - compute_expr_stats
    - errmsg
    - pgstat_progress_update_multi_param
    - build_expr_data
    - serialize_expr_stats
    - get_namespace_name
    - elog
    - lookup_var_attr_stats
    - table_close
    - lfirst
    - list_free
    - make_build_data
    - pgstat_progress_update_param
    - fetch_statentries_for_relation
    - ereport
    - statext_store
    - statext_mcv_build
    - AllocSetContextCreate
    - AmAutoVacuumWorkerProcess
    - errcode
    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:154,1
    - Dst: lookup_var_attr_stats
      Src: /src/postgres/src/backend/statistics/extended_stats.c:168,1
    - Dst: AmAutoVacuumWorkerProcess
      Src: /src/postgres/src/backend/statistics/extended_stats.c:172,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats.c:173,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats.c:174,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats.c:175,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/statistics/extended_stats.c:177,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/statistics/extended_stats.c:178,1
    - Dst: errtable
      Src: /src/postgres/src/backend/statistics/extended_stats.c:179,1
    - Dst: statext_compute_stattarget
      Src: /src/postgres/src/backend/statistics/extended_stats.c:184,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:185,1
    - Dst: make_build_data
      Src: /src/postgres/src/backend/statistics/extended_stats.c:197,1
    - Dst: foreach
      Src: /src/postgres/src/backend/statistics/extended_stats.c:200,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/statistics/extended_stats.c:202,1
    - Dst: statext_ndistinct_build
      Src: /src/postgres/src/backend/statistics/extended_stats.c:205,1
    - Dst: statext_dependencies_build
      Src: /src/postgres/src/backend/statistics/extended_stats.c:207,1
    - Dst: statext_mcv_build
      Src: /src/postgres/src/backend/statistics/extended_stats.c:209,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/extended_stats.c:217,1
    - Dst: build_expr_data
      Src: /src/postgres/src/backend/statistics/extended_stats.c:219,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:220,1
    - Dst: compute_expr_stats
      Src: /src/postgres/src/backend/statistics/extended_stats.c:222,1
    - Dst: serialize_expr_stats
      Src: /src/postgres/src/backend/statistics/extended_stats.c:224,1
    - Dst: statext_store
      Src: /src/postgres/src/backend/statistics/extended_stats.c:229,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/statistics/extended_stats.c:233,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/statistics/extended_stats.c:237,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 152
    functionDepth: 2
    functionLinenumber: 152
    functionLinenumberEnd: 238
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 321
    functionsReached:
    - errcode
    - statext_compute_stattarget
    - MemoryContextReset
    - list_length
    - statext_ndistinct_build
    - RelationGetRelationName
    - bms_num_members
    - lfirst_int
    - errtable
    - foreach
    - compute_expr_stats
    - errmsg
    - build_expr_data
    - serialize_expr_stats
    - get_namespace_name
    - elog
    - lookup_var_attr_stats
    - lfirst
    - make_build_data
    - pgstat_progress_update_param
    - ereport
    - statext_store
    - statext_mcv_build
    - AmAutoVacuumWorkerProcess
    - statext_dependencies_build
    linkageType: ''
    returnType: void
    signature: void foreach(lc, statslist)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/statistics/extended_stats.c:276,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/statistics/extended_stats.c:279,1
    - Dst: table_open
      Src: /src/postgres/src/backend/statistics/extended_stats.c:281,1
    - Dst: fetch_statentries_for_relation
      Src: /src/postgres/src/backend/statistics/extended_stats.c:282,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/statistics/extended_stats.c:282,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:286,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:289,1
    - Dst: lookup_var_attr_stats
      Src: /src/postgres/src/backend/statistics/extended_stats.c:296,1
    - Dst: statext_compute_stattarget
      Src: /src/postgres/src/backend/statistics/extended_stats.c:306,1
    - Dst: table_close
      Src: /src/postgres/src/backend/statistics/extended_stats.c:314,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/statistics/extended_stats.c:316,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/statistics/extended_stats.c:317,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - onerel
    - natts
    - vacattrstats
    argTypes:
    - Relation
    - int
    - VacAttrStats**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 261
    functionDepth: 3
    functionLinenumber: 261
    functionLinenumberEnd: 321
    functionName: ComputeExtStatisticsRows
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - RelationGetRelid
    - table_open
    - statext_compute_stattarget
    - fetch_statentries_for_relation
    - AllocSetContextCreate
    - lookup_var_attr_stats
    - table_close
    - bms_num_members
    - lfirst
    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:286,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:289,1
    - Dst: lookup_var_attr_stats
      Src: /src/postgres/src/backend/statistics/extended_stats.c:296,1
    - Dst: statext_compute_stattarget
      Src: /src/postgres/src/backend/statistics/extended_stats.c:306,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 312
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 321
    functionsReached:
    - lookup_var_attr_stats
    - statext_compute_stattarget
    - bms_num_members
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, lstats)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:376,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - stattarget
    - nattrs
    - stats
    argTypes:
    - int
    - int
    - VacAttrStats**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 379
    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:409,1
    - Dst: heap_attisnull
      Src: /src/postgres/src/backend/statistics/extended_stats.c:412,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - htup
    - type
    argTypes:
    - HeapTuple
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 385
    functionDepth: 3
    functionLinenumber: 385
    functionLinenumberEnd: 413
    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: ScanKeyInit
      Src: /src/postgres/src/backend/statistics/extended_stats.c:430,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:433,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/statistics/extended_stats.c:435,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/extended_stats.c:438,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/statistics/extended_stats.c:438,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/extended_stats.c:449,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/statistics/extended_stats.c:450,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/statistics/extended_stats.c:452,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/statistics/extended_stats.c:453,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:453,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:456,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:460,1
    - Dst: DatumGetInt16
      Src: /src/postgres/src/backend/statistics/extended_stats.c:461,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/statistics/extended_stats.c:464,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/statistics/extended_stats.c:466,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/statistics/extended_stats.c:467,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/statistics/extended_stats.c:468,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/statistics/extended_stats.c:469,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/extended_stats.c:470,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/statistics/extended_stats.c:471,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/statistics/extended_stats.c:472,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:474,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/statistics/extended_stats.c:478,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:482,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/extended_stats.c:489,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/statistics/extended_stats.c:490,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats.c:492,1
    - Dst: eval_const_expressions
      Src: /src/postgres/src/backend/statistics/extended_stats.c:502,1
    - Dst: fix_opfuncids
      Src: /src/postgres/src/backend/statistics/extended_stats.c:505,1
    - Dst: lappend
      Src: /src/postgres/src/backend/statistics/extended_stats.c:510,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/statistics/extended_stats.c:513,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 2
    argNames:
    - pg_statext
    - relid
    argTypes:
    - Relation
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 418
    functionDepth: 3
    functionLinenumber: 418
    functionLinenumberEnd: 516
    functionName: fetch_statentries_for_relation
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 2
    functionsReached:
    - HeapTupleIsValid
    - lappend_int
    - SysCacheGetAttrNotNull
    - pstrdup
    - SysCacheGetAttr
    - pfree
    - ARR_DIMS
    - NameStr
    - DatumGetArrayTypeP
    - GETSTRUCT
    - ScanKeyInit
    - DatumGetInt16
    - get_namespace_name
    - elog
    - eval_const_expressions
    - lappend
    - ARR_HASNULL
    - systable_endscan
    - ObjectIdGetDatum
    - bms_add_member
    - ARR_ELEMTYPE
    - Assert
    - systable_beginscan
    - stringToNode
    - fix_opfuncids
    - ARR_DATA_PTR
    - systable_getnext
    - ARR_NDIM
    - TextDatumGetCString
    - palloc0
    linkageType: ''
    returnType: List
    signature: 'List *

      fetch_statentries_for_relation(Relation pg_statext, Oid relid)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/extended_stats.c:535,1
    - Dst: exprType
      Src: /src/postgres/src/backend/statistics/extended_stats.c:547,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/statistics/extended_stats.c:548,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/statistics/extended_stats.c:549,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/statistics/extended_stats.c:551,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:552,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/extended_stats.c:553,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/extended_stats.c:554,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/statistics/extended_stats.c:555,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/statistics/extended_stats.c:581,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/statistics/extended_stats.c:582,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/statistics/extended_stats.c:582,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:583,1
    - Dst: std_typanalyze
      Src: /src/postgres/src/backend/statistics/extended_stats.c:585,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/statistics/extended_stats.c:589,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats.c:590,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 1
    argNames:
    - expr
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 524
    functionDepth: 1
    functionLinenumber: 524
    functionLinenumberEnd: 595
    functionName: examine_attribute
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 0
    functionsReached:
    - exprType
    - OidFunctionCall1
    - exprCollation
    - std_typanalyze
    - pfree
    - heap_freetuple
    - HeapTupleIsValid
    - exprTypmod
    - SearchSysCacheCopy1
    - GETSTRUCT
    - palloc0
    - PointerGetDatum
    - elog
    - OidIsValid
    - DatumGetBool
    - ObjectIdGetDatum
    linkageType: ''
    returnType: VacAttrStats
    signature: 'VacAttrStats *

      examine_attribute(Node *expr)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:611,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/extended_stats.c:616,1
    - Dst: exprType
      Src: /src/postgres/src/backend/statistics/extended_stats.c:628,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/statistics/extended_stats.c:629,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/statistics/extended_stats.c:637,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/statistics/extended_stats.c:639,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:640,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/extended_stats.c:641,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/extended_stats.c:642,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/statistics/extended_stats.c:644,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/statistics/extended_stats.c:666,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/statistics/extended_stats.c:667,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/statistics/extended_stats.c:667,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:668,1
    - Dst: std_typanalyze
      Src: /src/postgres/src/backend/statistics/extended_stats.c:670,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/statistics/extended_stats.c:674,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats.c:675,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - expr
    - stattarget
    argTypes:
    - Node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 603
    functionDepth: 1
    functionLinenumber: 603
    functionLinenumberEnd: 680
    functionName: examine_expression
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 0
    functionsReached:
    - exprType
    - OidFunctionCall1
    - Assert
    - exprCollation
    - std_typanalyze
    - pfree
    - heap_freetuple
    - HeapTupleIsValid
    - exprTypmod
    - SearchSysCacheCopy1
    - GETSTRUCT
    - palloc0
    - PointerGetDatum
    - elog
    - OidIsValid
    - DatumGetBool
    - ObjectIdGetDatum
    linkageType: ''
    returnType: VacAttrStats
    signature: 'VacAttrStats *

      examine_expression(Node *expr, int stattarget)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:699,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:699,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/extended_stats.c:701,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:704,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats.c:725,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:735,1
    - Dst: examine_attribute
      Src: /src/postgres/src/backend/statistics/extended_stats.c:737,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 689
    functionDepth: 1
    functionLinenumber: 689
    functionLinenumberEnd: 751
    functionName: lookup_var_attr_stats
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 4
    functionsReached:
    - lfirst
    - pfree
    - examine_attribute
    - list_length
    - palloc
    - bms_next_member
    - bms_num_members
    linkageType: ''
    returnType: VacAttrStats
    signature: "VacAttrStats **\nlookup_var_attr_stats(Bitmapset *attrs, List *exprs,\n\t\t\t\t\t
      \ int nvacatts, VacAttrStats **vacatts)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:735,1
    - Dst: examine_attribute
      Src: /src/postgres/src/backend/statistics/extended_stats.c:737,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 733
    functionDepth: 1
    functionLinenumber: 733
    functionLinenumberEnd: 748
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 321
    functionsReached:
    - examine_attribute
    - 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:768,1
    - Dst: memset
      Src: /src/postgres/src/backend/statistics/extended_stats.c:770,1
    - Dst: memset
      Src: /src/postgres/src/backend/statistics/extended_stats.c:771,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:774,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:777,1
    - Dst: statext_ndistinct_serialize
      Src: /src/postgres/src/backend/statistics/extended_stats.c:786,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:789,1
    - Dst: statext_dependencies_serialize
      Src: /src/postgres/src/backend/statistics/extended_stats.c:794,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:797,1
    - Dst: statext_mcv_serialize
      Src: /src/postgres/src/backend/statistics/extended_stats.c:801,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:804,1
    - Dst: RemoveStatisticsDataById
      Src: /src/postgres/src/backend/statistics/extended_stats.c:816,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/statistics/extended_stats.c:819,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:819,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:820,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/statistics/extended_stats.c:822,1
    - Dst: table_close
      Src: /src/postgres/src/backend/statistics/extended_stats.c:824,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: 825
      start: 758
    functionDepth: 5
    functionLinenumber: 758
    functionLinenumberEnd: 825
    functionName: statext_store
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 2
    functionsReached:
    - heap_form_tuple
    - CatalogTupleInsert
    - table_open
    - memset
    - BoolGetDatum
    - heap_freetuple
    - RelationGetDescr
    - statext_ndistinct_serialize
    - PointerGetDatum
    - RemoveStatisticsDataById
    - statext_mcv_serialize
    - table_close
    - ObjectIdGetDatum
    - statext_dependencies_serialize
    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:833,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/extended_stats.c:835,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ndims
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 828
    functionDepth: 1
    functionLinenumber: 828
    functionLinenumberEnd: 841
    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:857,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - mss
    - sortdim
    - oper
    - collation
    argTypes:
    - MultiSortSupport
    - int
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 847
    functionDepth: 1
    functionLinenumber: 847
    functionLinenumberEnd: 858
    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:873,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 861
    functionDepth: 2
    functionLinenumber: 861
    functionLinenumberEnd: 883
    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:890,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - dim
    - a
    - b
    - mss
    argTypes:
    - int
    - SortItem*
    - SortItem*
    - MultiSortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 886
    functionDepth: 2
    functionLinenumber: 886
    functionLinenumberEnd: 893
    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:904,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: 913
      start: 895
    functionDepth: 2
    functionLinenumber: 895
    functionLinenumberEnd: 913
    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:918,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 915
    functionDepth: 1
    functionLinenumber: 915
    functionLinenumberEnd: 921
    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:926,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - a
    - b
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 923
    functionDepth: 2
    functionLinenumber: 923
    functionLinenumberEnd: 927
    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:943,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/extended_stats.c:949,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:952,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:962,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/statistics/extended_stats.c:962,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:963,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:964,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:969,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - attrs
    - nexprs
    - numattrs
    argTypes:
    - Bitmapset*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 937
    functionDepth: 1
    functionLinenumber: 937
    functionLinenumberEnd: 973
    functionName: build_attnums_array
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 0
    functionsReached:
    - Assert
    - AttributeNumberIsValid
    - palloc
    - bms_next_member
    - bms_num_members
    linkageType: ''
    returnType: AttrNumber
    signature: 'AttrNumber *

      build_attnums_array(Bitmapset *attrs, int nexprs, int *numattrs)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1003,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1017,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1030,1
    - Dst: get_typlen
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1032,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1056,1
    - Dst: toast_raw_datum_size
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1073,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1079,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1079,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1099,1
    - Dst: qsort_interruptible
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1104,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: 1108
      start: 982
    functionDepth: 2
    functionLinenumber: 982
    functionLinenumberEnd: 1108
    functionName: build_sorted_items
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 0
    functionsReached:
    - toast_raw_datum_size
    - Assert
    - pfree
    - qsort_interruptible
    - PG_DETOAST_DATUM
    - palloc0
    - PointerGetDatum
    - palloc
    - get_typlen
    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:1121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - stats
    - requiredkind
    argTypes:
    - List*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1128
      start: 1114
    functionDepth: 1
    functionLinenumber: 1114
    functionLinenumberEnd: 1128
    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:1121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1125
      start: 1119
    functionDepth: 1
    functionLinenumber: 1119
    functionLinenumberEnd: 1125
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 321
    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:1144,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1146,1
    - Dst: equal
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1148,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - stat
    - expr
    argTypes:
    - StatisticExtInfo*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1155
      start: 1137
    functionDepth: 1
    functionLinenumber: 1137
    functionLinenumberEnd: 1155
    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:1172,1
    - Dst: stat_find_expression
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1175,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1180,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - stat
    - exprs
    - expr_idxs
    argTypes:
    - StatisticExtInfo*
    - List*
    - Bitmapset**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1185
      start: 1164
    functionDepth: 2
    functionLinenumber: 1164
    functionLinenumberEnd: 1185
    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:1172,1
    - Dst: stat_find_expression
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1175,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1180,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1181
      start: 1170
    functionDepth: 2
    functionLinenumber: 1170
    functionLinenumberEnd: 1181
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 322
    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:1218,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1249,1
    - Dst: stat_covers_expressions
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1250,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1254,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1255,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1258,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1258,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1260,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1261,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1267,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1267,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: 1285
      start: 1205
    functionDepth: 3
    functionLinenumber: 1205
    functionLinenumberEnd: 1285
    functionName: choose_best_statistics
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 0
    functionsReached:
    - bms_is_subset
    - bms_add_members
    - list_length
    - stat_covers_expressions
    - bms_num_members
    - lfirst
    - bms_free
    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:1218,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1249,1
    - Dst: stat_covers_expressions
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1250,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1254,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1255,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1258,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1258,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1260,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1261,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1267,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1267,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1215
    functionDepth: 3
    functionLinenumber: 1215
    functionLinenumberEnd: 1282
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 322
    functionsReached:
    - bms_is_subset
    - bms_add_members
    - list_length
    - stat_covers_expressions
    - bms_num_members
    - lfirst
    - bms_free
    linkageType: ''
    returnType: void
    signature: void foreach(lc, stats)
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1330,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1334,1
    - Dst: AttrNumberIsForUserDefinedAttr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1350,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1354,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1360,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1367,1
    - Dst: examine_opclause_args
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1371,1
    - Dst: get_oprrest
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1381,1
    - Dst: get_func_leakproof
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1408,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1408,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1412,1
    - Dst: statext_is_compatible_clause_internal
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1413,1
    - Dst: lappend
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1417,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1422,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1430,1
    - Dst: examine_opclause_args
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1434,1
    - Dst: get_oprrest
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1448,1
    - Dst: get_func_leakproof
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1475,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1475,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1479,1
    - Dst: statext_is_compatible_clause_internal
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1480,1
    - Dst: lappend
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1484,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1489,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1490,1
    - Dst: is_notclause
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1491,1
    - Dst: foreach
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1510,1
    - Dst: statext_is_compatible_clause_internal
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1516,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1517,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1526,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1531,1
    - Dst: statext_is_compatible_clause_internal
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1532,1
    - Dst: lappend
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1536,1
    - Dst: lappend
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1544,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 76
    argCount: 5
    argNames:
    - root
    - clause
    - relid
    - attnums
    - exprs
    argTypes:
    - PlannerInfo*
    - Node*
    - Index
    - Bitmapset**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1546
      start: 1324
    functionDepth: 2
    functionLinenumber: 1324
    functionLinenumberEnd: 1546
    functionName: statext_is_compatible_clause_internal
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 1
    functionsReached:
    - AttrNumberIsForUserDefinedAttr
    - examine_opclause_args
    - get_oprrest
    - get_func_leakproof
    - lfirst
    - is_orclause
    - IsA
    - get_opcode
    - list_length
    - foreach
    - lappend
    - statext_is_compatible_clause_internal
    - is_opclause
    - is_notclause
    - is_andclause
    - bms_add_member
    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)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: is_andclause
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1583,1
    - Dst: foreach
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1592,1
    - Dst: statext_is_compatible_clause
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1594,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1594,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1603,1
    - Dst: bms_get_singleton_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1612,1
    - Dst: statext_is_compatible_clause_internal
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1617,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1624,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1624,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1627,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1641,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1644,1
    - Dst: pull_varattnos
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1650,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1653,1
    - Dst: pg_attribute_aclcheck_all
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1661,1
    - Dst: pg_attribute_aclcheck
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1667,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 36
    argCount: 5
    argNames:
    - root
    - clause
    - relid
    - attnums
    - exprs
    argTypes:
    - PlannerInfo*
    - Node*
    - Index
    - Bitmapset**
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1676
      start: 1568
    functionDepth: 3
    functionLinenumber: 1568
    functionLinenumberEnd: 1676
    functionName: statext_is_compatible_clause
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 1
    functionsReached:
    - pg_attribute_aclcheck_all
    - GetUserId
    - statext_is_compatible_clause
    - bms_get_singleton_member
    - IsA
    - pg_class_aclcheck
    - foreach
    - pg_attribute_aclcheck
    - pull_varattnos
    - statext_is_compatible_clause_internal
    - OidIsValid
    - is_andclause
    - bms_next_member
    - lfirst
    - bms_add_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:1723,1
    - Dst: has_stats_of_kind
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1726,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1729,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1730,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1733,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1733,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1749,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1753,1
    - Dst: statext_is_compatible_clause
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1754,1
    - Dst: choose_best_statistics
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1776,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1778,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1788,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1825,1
    - Dst: stat_covers_expressions
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1826,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1836,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1838,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1839,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1840,1
    - Dst: lappend
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1843,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1843,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1844,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1850,1
    - Dst: list_free
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1853,1
    - Dst: statext_mcv_load
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1865,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1880,1
    - Dst: clause_selectivity_ext
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1897,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1907,1
    - Dst: mcv_clause_selectivity_or
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1914,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1930,1
    - Dst: mcv_combine_selectivities
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1933,1
    - Dst: mcv_combine_selectivities
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1938,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1945,1
    - Dst: clauselist_selectivity_ext
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1969,1
    - Dst: mcv_clauselist_selectivity
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1977,1
    - Dst: mcv_combine_selectivities
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1983,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: 1994
      start: 1712
    functionDepth: 5
    functionLinenumber: 1712
    functionLinenumberEnd: 1994
    functionName: statext_mcv_clauselist_selectivity
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 0
    functionsReached:
    - mcv_clause_selectivity_or
    - statext_is_compatible_clause
    - list_length
    - mcv_combine_selectivities
    - has_stats_of_kind
    - statext_mcv_load
    - bms_free
    - bms_is_subset
    - clauselist_selectivity_ext
    - clause_selectivity_ext
    - mcv_clauselist_selectivity
    - lappend
    - stat_covers_expressions
    - bms_is_member
    - palloc
    - lfirst
    - list_free
    - bms_add_member
    - Assert
    - planner_rt_fetch
    - choose_best_statistics
    - CLAMP_PROBABILITY
    - bms_membership
    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:1749,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1753,1
    - Dst: statext_is_compatible_clause
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1754,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1766
      start: 1747
    functionDepth: 4
    functionLinenumber: 1747
    functionLinenumberEnd: 1766
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 324
    functionsReached:
    - bms_is_member
    - lfirst
    - statext_is_compatible_clause
    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:1825,1
    - Dst: stat_covers_expressions
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1826,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1836,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1838,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1839,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1840,1
    - Dst: lappend
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1843,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1843,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1844,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1850,1
    - Dst: list_free
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1853,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1855
      start: 1797
    functionDepth: 3
    functionLinenumber: 1797
    functionLinenumberEnd: 1855
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 324
    functionsReached:
    - bms_is_subset
    - list_length
    - lappend
    - stat_covers_expressions
    - list_free
    - bms_membership
    - lfirst
    - bms_free
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: void foreach(l, clauses)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1880,1
    - Dst: clause_selectivity_ext
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1897,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1907,1
    - Dst: mcv_clause_selectivity_or
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1914,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1930,1
    - Dst: mcv_combine_selectivities
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1933,1
    - Dst: mcv_combine_selectivities
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1938,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/statistics/extended_stats.c:1945,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1948
      start: 1878
    functionDepth: 5
    functionLinenumber: 1878
    functionLinenumberEnd: 1948
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 324
    functionsReached:
    - mcv_clause_selectivity_or
    - mcv_combine_selectivities
    - clause_selectivity_ext
    - CLAMP_PROBABILITY
    - bms_is_member
    - lfirst
    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:2009,1
    - Dst: dependencies_clauselist_selectivity
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2032,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: 2037
      start: 2000
    functionDepth: 6
    functionLinenumber: 2000
    functionLinenumberEnd: 2037
    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:2062,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2062,1
    - Dst: linitial
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2064,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2065,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2068,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2071,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2074,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2080,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 4
    argNames:
    - args
    - exprp
    - cstp
    - expronleftp
    argTypes:
    - List*
    - Node**
    - Const**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2100
      start: 2051
    functionDepth: 1
    functionLinenumber: 2051
    functionLinenumberEnd: 2100
    functionName: examine_opclause_args
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 1
    functionsReached:
    - Assert
    - linitial
    - IsA
    - lsecond
    - list_length
    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:2115,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2118,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2134,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2141,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2142,1
    - Dst: ExecPrepareExpr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2145,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2148,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2148,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2155,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2156,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2168,1
    - Dst: ExecStoreHeapTuple
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2171,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2178,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2179,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2189,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2191,1
    - Dst: get_attribute_options
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2212,1
    - Dst: VacAttrStats*::compute_stats
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2217,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2231,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2233,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2234,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2235,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2238,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2239,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: 2240
      start: 2106
    functionDepth: 2
    functionLinenumber: 2106
    functionLinenumberEnd: 2240
    functionName: compute_expr_stats
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 2
    functionsReached:
    - MemoryContextSwitchTo
    - MemoryContextReset
    - datumCopy
    - GetPerTupleExprContext
    - CreateExecutorState
    - VacAttrStats*::compute_stats
    - ExecPrepareExpr
    - MemoryContextDelete
    - ExecStoreHeapTuple
    - FreeExecutorState
    - ExecDropSingleTupleTableSlot
    - ExecEvalExprSwitchContext
    - palloc
    - ResetExprContext
    - Assert
    - RelationGetDescr
    - MakeSingleTupleTableSlot
    - get_attribute_options
    - AllocSetContextCreate
    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: 2258
      start: 2249
    functionDepth: 0
    functionLinenumber: 2249
    functionLinenumberEnd: 2258
    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:2269,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2273,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2278,1
    - Dst: examine_expression
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - exprs
    - stattarget
    argTypes:
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2287
      start: 2265
    functionDepth: 2
    functionLinenumber: 2265
    functionLinenumberEnd: 2287
    functionName: build_expr_data
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 2
    functionsReached:
    - examine_expression
    - lfirst
    - palloc0
    - list_length
    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:2278,1
    - Dst: examine_expression
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2284
      start: 2276
    functionDepth: 2
    functionLinenumber: 2276
    functionLinenumberEnd: 2284
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 324
    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:2299,1
    - Dst: get_rel_type_id
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2302,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2303,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2304,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2305,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2306,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2321,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2337,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2338,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2339,1
    - Dst: Float4GetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2340,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2341,1
    - Dst: Float4GetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2342,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2346,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2351,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2356,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2366,1
    - Dst: Float4GetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2370,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2371,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2372,1
    - Dst: construct_array
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2387,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2393,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2402,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2402,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2404,1
    - Dst: heap_copy_tuple_as_datum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2405,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2405,1
    - Dst: table_close
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2411,1
    - Dst: makeArrayResult
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2413,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 58
    argCount: 2
    argNames:
    - exprdata
    - nexprs
    argTypes:
    - AnlExprData*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2414
      start: 2290
    functionDepth: 5
    functionLinenumber: 2290
    functionLinenumberEnd: 2414
    functionName: serialize_expr_stats
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 2
    functionsReached:
    - BoolGetDatum
    - makeArrayResult
    - construct_array
    - Float4GetDatum
    - table_open
    - Int32GetDatum
    - Int16GetDatum
    - errmsg
    - heap_form_tuple
    - heap_copy_tuple_as_datum
    - OidIsValid
    - palloc
    - table_close
    - ObjectIdGetDatum
    - construct_array_builtin
    - RelationGetDescr
    - ereport
    - accumArrayResult
    - PointerGetDatum
    - get_rel_type_id
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum serialize_expr_stats(AnlExprData *exprdata, int nexprs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2431,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2432,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2432,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2433,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2434,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2436,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2439,1
    - Dst: DatumGetExpandedArray
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2443,1
    - Dst: deconstruct_expanded_array
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2445,1
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2447,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2450,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2451,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2455,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2457,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - stxoid
    - inh
    - idx
    argTypes:
    - Oid
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2460
      start: 2420
    functionDepth: 2
    functionLinenumber: 2420
    functionLinenumberEnd: 2460
    functionName: statext_expressions_load
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - DatumGetExpandedArray
    - DatumGetHeapTupleHeader
    - SearchSysCache2
    - ReleaseSysCache
    - BoolGetDatum
    - HeapTupleIsValid
    - ItemPointerSetInvalid
    - elog
    - deconstruct_expanded_array
    - heap_copytuple
    - SysCacheGetAttr
    - ObjectIdGetDatum
    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:2483,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2483,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2487,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2488,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2489,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2492,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2493,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2496,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2497,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2499,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2503,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2507,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2511,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2515,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2519,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2524,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2527,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2530,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2539,1
    - Dst: foreach
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2548,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2550,1
    - Dst: examine_expression
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2553,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2564,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2566,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2575,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2576,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2579,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2579,1
    - Dst: ExecPrepareExprList
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2586,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2594,1
    - Dst: ExecStoreHeapTuple
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2597,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2599,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2604,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2611,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2612,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2629,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2630,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: 2633
      start: 2467
    functionDepth: 4
    functionLinenumber: 2467
    functionLinenumberEnd: 2633
    functionName: make_build_data
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 2
    functionsReached:
    - list_length
    - GetPerTupleExprContext
    - ExecEvalExpr
    - CreateExecutorState
    - bms_num_members
    - heap_getattr
    - ExecPrepareExprList
    - foreach
    - bms_next_member
    - ExecStoreHeapTuple
    - FreeExecutorState
    - ExecDropSingleTupleTableSlot
    - examine_expression
    - palloc
    - lfirst
    - ResetExprContext
    - Assert
    - RelationGetDescr
    - MakeSingleTupleTableSlot
    - MAXALIGN
    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:2604,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2611,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/statistics/extended_stats.c:2612,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2626
      start: 2600
    functionDepth: 1
    functionLinenumber: 2600
    functionLinenumberEnd: 2626
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/extended_stats.c
    functionUses: 325
    functionsReached:
    - GetPerTupleExprContext
    - ExecEvalExpr
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, exprstates)
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - 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: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:164,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:165,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:166,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:167,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:168,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:169,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:170,1
    - Dst: PG_ARGISNULL
      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:179,1
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:180,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:182,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:182,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:183,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:183,1
    - Dst: stats_lookup_relid
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:185,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:187,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:188,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:189,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:190,1
    - Dst: errhint
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:191,1
    - Dst: stats_lock_check_privileges
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:194,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:197,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:199,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:200,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:201,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:202,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:203,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:203,1
    - Dst: get_attnum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:204,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:207,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:208,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:209,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:212,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:214,1
    - Dst: get_attname
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:215,1
    - Dst: SearchSysCacheExistsAttName
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:218,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:219,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:220,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:221,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: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:234,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:235,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:236,1
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:239,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:240,1
    - Dst: stats_check_arg_array
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:247,1
    - Dst: stats_check_arg_array
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:253,1
    - Dst: stats_check_arg_array
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:258,1
    - Dst: stats_check_arg_pair
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:264,1
    - Dst: stats_check_arg_pair
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:271,1
    - Dst: stats_check_arg_pair
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:279,1
    - Dst: get_attr_stat_type
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:288,1
    - Dst: get_elem_stat_type
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:296,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:299,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:300,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:301,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:312,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:314,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:315,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:316,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:317,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:328,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:329,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:330,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:331,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:338,1
    - Dst: table_open
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:340,1
    - Dst: SearchSysCache3
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:342,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:345,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:346,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:346,1
    - Dst: init_empty_stats_tuple
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:348,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_ARGISNULL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:362,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:364,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:372,1
    - Dst: text_to_stavalues
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:373,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:375,1
    - Dst: set_stats_slot
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:381,1
    - Dst: text_to_stavalues
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:396,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:398,1
    - Dst: set_stats_slot
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:404,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:416,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:417,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:418,1
    - Dst: set_stats_slot
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:420,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:429,1
    - Dst: text_to_stavalues
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:433,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:435,1
    - Dst: set_stats_slot
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:441,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:453,1
    - Dst: set_stats_slot
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:455,1
    - Dst: text_to_stavalues
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:473,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:475,1
    - Dst: set_stats_slot
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:481,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:494,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:495,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:496,1
    - Dst: text_to_stavalues
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:501,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:503,1
    - Dst: set_stats_slot
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:508,1
    - Dst: upsert_pg_statistic
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:517,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:519,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:520,1
    - Dst: table_close
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:521,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 141
    argCount: 1
    argNames:
    - fcinfo
    argTypes:
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 137
    functionDepth: 4
    functionLinenumber: 137
    functionLinenumberEnd: 524
    functionName: attribute_statistics_update
    functionSourceFile: /src/postgres/src/backend/statistics/attribute_stats.c
    functionUses: 0
    functionsReached:
    - stats_lock_check_privileges
    - HeapTupleIsValid
    - heap_deform_tuple
    - upsert_pg_statistic
    - get_attname
    - errhint
    - PG_GETARG_BOOL
    - PG_GETARG_DATUM
    - SearchSysCacheExistsAttName
    - RecoveryInProgress
    - errdetail
    - SearchSysCache3
    - ReleaseSysCache
    - table_open
    - set_stats_slot
    - PG_GETARG_INT16
    - stats_check_required_arg
    - errmsg
    - stats_lookup_relid
    - fmgr_info
    - PG_ARGISNULL
    - init_empty_stats_tuple
    - get_attnum
    - OidIsValid
    - table_close
    - text_to_stavalues
    - get_elem_stat_type
    - stats_check_arg_pair
    - construct_array_builtin
    - TextDatumGetCString
    - RelationGetDescr
    - ereport
    - stats_check_arg_array
    - PointerGetDatum
    - get_attr_stat_type
    - errcode
    linkageType: ''
    returnType: bool
    signature: bool attribute_statistics_update(FunctionCallInfo fcinfo)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetIndexExpressions
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:543,1
    - Dst: list_head
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:556,1
    - Dst: lnext
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:560,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:563,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:565,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - rel
    - attnum
    argTypes:
    - Relation
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 532
    functionDepth: 2
    functionLinenumber: 532
    functionLinenumberEnd: 566
    functionName: get_attr_expr
    functionSourceFile: /src/postgres/src/backend/statistics/attribute_stats.c
    functionUses: 0
    functionsReached:
    - RelationGetIndexExpressions
    - list_head
    - lnext
    - elog
    - lfirst
    linkageType: ''
    returnType: Node
    signature: 'Node *

      get_attr_expr(Relation rel, int attnum)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: relation_open
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:577,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:583,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:583,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:584,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:587,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:588,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:589,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:590,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:591,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:593,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:596,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:597,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:598,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:599,1
    - Dst: get_attr_expr
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:601,1
    - Dst: exprType
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:617,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:618,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:620,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:623,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:625,1
    - Dst: type_is_multirange
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:631,1
    - Dst: get_multirange_range
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:632,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:635,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:647,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: 648
      start: 571
    functionDepth: 3
    functionLinenumber: 571
    functionLinenumberEnd: 648
    functionName: get_attr_stat_type
    functionSourceFile: /src/postgres/src/backend/statistics/attribute_stats.c
    functionUses: 1
    functionsReached:
    - type_is_multirange
    - HeapTupleIsValid
    - relation_close
    - RelationGetRelationName
    - exprType
    - SearchSysCache2
    - ReleaseSysCache
    - GETSTRUCT
    - lookup_type_cache
    - get_attr_expr
    - relation_open
    - Int16GetDatum
    - errmsg
    - OidIsValid
    - ObjectIdGetDatum
    - exprCollation
    - get_multirange_range
    - exprTypmod
    - ereport
    - errcode
    linkageType: ''
    returnType: void
    signature: "void get_attr_stat_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/attribute_stats.c:670,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:673,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:677,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:678,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: 684
      start: 653
    functionDepth: 1
    functionLinenumber: 653
    functionLinenumberEnd: 684
    functionName: get_elem_stat_type
    functionSourceFile: /src/postgres/src/backend/statistics/attribute_stats.c
    functionUses: 1
    functionsReached:
    - get_base_element_type
    - OidIsValid
    - lookup_type_cache
    linkageType: ''
    returnType: bool
    signature: "bool get_elem_stat_type(Oid atttypid, char atttyptype,\n\t\t\t\t   Oid
      *elemtypid, Oid *elem_eq_opr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:697,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:704,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:706,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:709,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:711,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:713,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:716,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:718,1
    - Dst: ThrowErrorData
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:723,1
    - Dst: array_contains_nulls
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:728,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:728,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:730,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:731,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:732,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 6
    argNames:
    - staname
    - array_in
    - d
    - typid
    - typmod
    - ok
    argTypes:
    - char*
    - FmgrInfo*
    - Datum
    - Oid
    - int32
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 693
    functionDepth: 2
    functionLinenumber: 693
    functionLinenumberEnd: 740
    functionName: text_to_stavalues
    functionSourceFile: /src/postgres/src/backend/statistics/attribute_stats.c
    functionUses: 1
    functionsReached:
    - errmsg
    - pfree
    - LOCAL_FCINFO
    - InitFunctionCallInfoData
    - DatumGetArrayTypeP
    - errcode
    - Int32GetDatum
    - TextDatumGetCString
    - array_contains_nulls
    - ereport
    - CStringGetDatum
    - ThrowErrorData
    - ObjectIdGetDatum
    - FunctionCallInvoke
    linkageType: ''
    returnType: Datum
    signature: "Datum text_to_stavalues(const char *staname, FmgrInfo *array_in, Datum
      d, Oid typid,\n\t\t\t\t  int32 typmod, bool *ok)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt16
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:764,1
    - Dst: DatumGetInt16
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:766,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:774,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:775,1
    - Dst: DatumGetInt16
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:782,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:784,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:787,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:789,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:792,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:794,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: 809
      start: 746
    functionDepth: 1
    functionLinenumber: 746
    functionLinenumberEnd: 809
    functionName: set_stats_slot
    functionSourceFile: /src/postgres/src/backend/statistics/attribute_stats.c
    functionUses: 1
    functionsReached:
    - errmsg
    - ereport
    - DatumGetObjectId
    - DatumGetInt16
    - Int16GetDatum
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: "void set_stats_slot(Datum *values, bool *nulls, bool *replaces,\n\t\t\t
      \  int16 stakind, Oid staop, Oid stacoll,\n\t\t\t   Datum stanumbers, bool stanumbers_isnull,\n\t\t\t
      \  Datum stavalues, bool stavalues_isnull)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:820,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:822,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:822,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:824,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:828,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:828,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:829,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:832,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:834,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: 835
      start: 814
    functionDepth: 6
    functionLinenumber: 814
    functionLinenumberEnd: 835
    functionName: upsert_pg_statistic
    functionSourceFile: /src/postgres/src/backend/statistics/attribute_stats.c
    functionUses: 1
    functionsReached:
    - heap_form_tuple
    - CatalogTupleInsert
    - heap_modify_tuple
    - heap_freetuple
    - HeapTupleIsValid
    - CatalogTupleUpdate
    - RelationGetDescr
    - CommandCounterIncrement
    linkageType: ''
    returnType: void
    signature: "void upsert_pg_statistic(Relation starel, HeapTuple oldtup,\n\t\t\t\t\tDatum
      *values, bool *nulls, bool *replaces)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:843,1
    - Dst: SearchSysCache3
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:848,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:849,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:850,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:851,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:853,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:855,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:856,1
    - Dst: table_close
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:860,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:862,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - reloid
    - attnum
    - stainherit
    argTypes:
    - Oid
    - AttrNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 840
    functionDepth: 3
    functionLinenumber: 840
    functionLinenumberEnd: 865
    functionName: delete_pg_statistic
    functionSourceFile: /src/postgres/src/backend/statistics/attribute_stats.c
    functionUses: 0
    functionsReached:
    - ReleaseSysCache
    - table_open
    - BoolGetDatum
    - HeapTupleIsValid
    - CommandCounterIncrement
    - table_close
    - Int16GetDatum
    - CatalogTupleDelete
    - ObjectIdGetDatum
    - SearchSysCache3
    linkageType: ''
    returnType: bool
    signature: bool delete_pg_statistic(Oid reloid, AttrNumber attnum, bool stainherit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:874,1
    - Dst: memset
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:875,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:879,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:881,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:883,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: 903
      start: 870
    functionDepth: 1
    functionLinenumber: 870
    functionLinenumberEnd: 903
    functionName: init_empty_stats_tuple
    functionSourceFile: /src/postgres/src/backend/statistics/attribute_stats.c
    functionUses: 1
    functionsReached:
    - memset
    - BoolGetDatum
    - Int16GetDatum
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: "void init_empty_stats_tuple(Oid reloid, int16 attnum, bool inherited,\n\t\t\t\t\t
      \  Datum *values, bool *nulls, bool *replaces)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:918,1
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:919,1
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:920,1
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:921,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:923,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:923,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:924,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:924,1
    - Dst: stats_lookup_relid
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:926,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:928,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:929,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:930,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:931,1
    - Dst: errhint
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:932,1
    - Dst: stats_lock_check_privileges
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:934,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:936,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:936,1
    - Dst: get_attnum
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:937,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:940,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:941,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:942,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:946,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:947,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:948,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:949,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:951,1
    - Dst: delete_pg_statistic
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:953,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:954,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 908
    functionDepth: 4
    functionLinenumber: 908
    functionLinenumberEnd: 955
    functionName: pg_clear_attribute_stats
    functionSourceFile: /src/postgres/src/backend/statistics/attribute_stats.c
    functionUses: 0
    functionsReached:
    - errmsg
    - stats_lookup_relid
    - errcode
    - stats_lock_check_privileges
    - get_rel_name
    - delete_pg_statistic
    - TextDatumGetCString
    - PG_RETURN_VOID
    - ereport
    - errhint
    - get_attnum
    - PG_GETARG_BOOL
    - PG_GETARG_DATUM
    - stats_check_required_arg
    - RecoveryInProgress
    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:986,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:989,1
    - Dst: stats_fill_fcinfo_from_arg_pairs
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:992,1
    - Dst: attribute_statistics_update
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:996,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/statistics/attribute_stats.c:999,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 983
    functionDepth: 5
    functionLinenumber: 983
    functionLinenumberEnd: 1000
    functionName: pg_restore_attribute_stats
    functionSourceFile: /src/postgres/src/backend/statistics/attribute_stats.c
    functionUses: 0
    functionsReached:
    - LOCAL_FCINFO
    - InitFunctionCallInfoData
    - PG_RETURN_BOOL
    - attribute_statistics_update
    - 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: 43
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 43
    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: 50
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 50
    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:110,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/statistics/dependencies.c:145,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/dependencies.c:147,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 4
    argNames:
    - state
    - index
    - start
    - current
    argTypes:
    - DependencyGenerator
    - int
    - AttrNumber
    - AttrNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 153
    functionName: generate_dependencies_recurse
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 1
    functionsReached:
    - generate_dependencies_recurse
    - memcpy
    - repalloc
    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
      Src: /src/postgres/src/backend/statistics/dependencies.c:159,1
    - Dst: generate_dependencies_recurse
      Src: /src/postgres/src/backend/statistics/dependencies.c:161,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - DependencyGenerator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 156
    functionDepth: 2
    functionLinenumber: 156
    functionLinenumberEnd: 164
    functionName: generate_dependencies
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 0
    functionsReached:
    - generate_dependencies_recurse
    - pfree
    - palloc0
    linkageType: ''
    returnType: void
    signature: void generate_dependencies(DependencyGenerator state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:177,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/dependencies.c:180,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/dependencies.c:181,1
    - Dst: generate_dependencies
      Src: /src/postgres/src/backend/statistics/dependencies.c:189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - n
    - k
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 172
    functionDepth: 3
    functionLinenumber: 172
    functionLinenumberEnd: 192
    functionName: DependencyGenerator_init
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 0
    functionsReached:
    - Assert
    - generate_dependencies
    - palloc
    - palloc0
    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:198,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - DependencyGenerator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 200
    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: 210
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 210
    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:237,1
    - Dst: multi_sort_init
      Src: /src/postgres/src/backend/statistics/dependencies.c:240,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/dependencies.c:246,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/statistics/dependencies.c:269,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/dependencies.c:271,1
    - Dst: multi_sort_add_dimension
      Src: /src/postgres/src/backend/statistics/dependencies.c:275,1
    - Dst: build_sorted_items
      Src: /src/postgres/src/backend/statistics/dependencies.c:285,1
    - Dst: multi_sort_compare_dims
      Src: /src/postgres/src/backend/statistics/dependencies.c:306,1
    - Dst: multi_sort_compare_dim
      Src: /src/postgres/src/backend/statistics/dependencies.c:321,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 3
    argNames:
    - data
    - k
    - dependency
    argTypes:
    - StatsBuildData*
    - int
    - AttrNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 220
    functionDepth: 3
    functionLinenumber: 220
    functionLinenumberEnd: 329
    functionName: dependency_degree
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 0
    functionsReached:
    - Assert
    - multi_sort_compare_dims
    - multi_sort_compare_dim
    - multi_sort_init
    - multi_sort_add_dimension
    - build_sorted_items
    - lookup_type_cache
    - elog
    - palloc
    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:357,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/statistics/dependencies.c:360,1
    - Dst: DependencyGenerator_init
      Src: /src/postgres/src/backend/statistics/dependencies.c:375,1
    - Dst: DependencyGenerator_next
      Src: /src/postgres/src/backend/statistics/dependencies.c:378,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/statistics/dependencies.c:385,1
    - Dst: dependency_degree
      Src: /src/postgres/src/backend/statistics/dependencies.c:388,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/statistics/dependencies.c:390,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/statistics/dependencies.c:391,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/dependencies.c:399,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/dependencies.c:412,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/statistics/dependencies.c:420,1
    - Dst: DependencyGenerator_free
      Src: /src/postgres/src/backend/statistics/dependencies.c:431,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/statistics/dependencies.c:434,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 1
    argNames:
    - data
    argTypes:
    - StatsBuildData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 347
    functionDepth: 4
    functionLinenumber: 347
    functionLinenumberEnd: 437
    functionName: statext_dependencies_build
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 2
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - DependencyGenerator_next
    - MemoryContextReset
    - dependency_degree
    - palloc0
    - DependencyGenerator_init
    - AllocSetContextCreate
    - repalloc
    - DependencyGenerator_free
    linkageType: ''
    returnType: MVDependencies
    signature: 'MVDependencies *

      statext_dependencies_build(StatsBuildData *data)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SizeOfItem
      Src: /src/postgres/src/backend/statistics/dependencies.c:456,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/dependencies.c:458,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/statistics/dependencies.c:459,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/statistics/dependencies.c:461,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/dependencies.c:464,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/dependencies.c:466,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/dependencies.c:468,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/dependencies.c:476,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/dependencies.c:479,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/dependencies.c:482,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:486,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:490,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 1
    argNames:
    - dependencies
    argTypes:
    - MVDependencies*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 443
    functionDepth: 1
    functionLinenumber: 443
    functionLinenumberEnd: 493
    functionName: statext_dependencies_serialize
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 1
    functionsReached:
    - Assert
    - palloc0
    - VARDATA
    - memcpy
    - SET_VARSIZE
    - SizeOfItem
    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:509,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/dependencies.c:510,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/statistics/dependencies.c:511,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/dependencies.c:514,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/statistics/dependencies.c:517,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/dependencies.c:520,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/dependencies.c:522,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/dependencies.c:524,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/dependencies.c:528,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/dependencies.c:532,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/dependencies.c:536,1
    - Dst: SizeOfItem
      Src: /src/postgres/src/backend/statistics/dependencies.c:539,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/statistics/dependencies.c:541,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/dependencies.c:542,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/statistics/dependencies.c:543,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/statistics/dependencies.c:546,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/dependencies.c:556,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/dependencies.c:560,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:564,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/dependencies.c:567,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/dependencies.c:574,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:580,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/statistics/dependencies.c:580,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:584,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/statistics/dependencies.c:584,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 39
    argCount: 1
    argNames:
    - data
    argTypes:
    - bytea*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 498
    functionDepth: 1
    functionLinenumber: 498
    functionLinenumberEnd: 587
    functionName: statext_dependencies_deserialize
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 0
    functionsReached:
    - Assert
    - VARSIZE_ANY
    - memcpy
    - palloc0
    - elog
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - repalloc
    - SizeOfItem
    linkageType: ''
    returnType: MVDependencies
    signature: 'MVDependencies *

      statext_dependencies_deserialize(bytea *data)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/statistics/dependencies.c:607,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - dependency
    - attnums
    argTypes:
    - MVDependency*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 594
    functionDepth: 1
    functionLinenumber: 594
    functionLinenumberEnd: 612
    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:626,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/dependencies.c:627,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/statistics/dependencies.c:628,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/dependencies.c:629,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/dependencies.c:630,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/statistics/dependencies.c:632,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/dependencies.c:635,1
    - Dst: statext_dependencies_deserialize
      Src: /src/postgres/src/backend/statistics/dependencies.c:639,1
    - Dst: DatumGetByteaPP
      Src: /src/postgres/src/backend/statistics/dependencies.c:639,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/statistics/dependencies.c:641,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - mvoid
    - inh
    argTypes:
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 618
    functionDepth: 2
    functionLinenumber: 618
    functionLinenumberEnd: 644
    functionName: statext_dependencies_load
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 0
    functionsReached:
    - SearchSysCache2
    - ReleaseSysCache
    - BoolGetDatum
    - HeapTupleIsValid
    - elog
    - SysCacheGetAttr
    - statext_dependencies_deserialize
    - DatumGetByteaPP
    - ObjectIdGetDatum
    linkageType: ''
    returnType: MVDependencies
    signature: 'MVDependencies *

      statext_dependencies_load(Oid mvoid, bool inh)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/dependencies.c:659,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/dependencies.c:660,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/dependencies.c:661,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/statistics/dependencies.c:663,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 652
    functionDepth: 1
    functionLinenumber: 652
    functionLinenumberEnd: 664
    functionName: pg_dependencies_in
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_VOID
    - errcode
    - ereport
    linkageType: ''
    returnType: Datum
    signature: Datum pg_dependencies_in(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/statistics/dependencies.c:672,1
    - Dst: statext_dependencies_deserialize
      Src: /src/postgres/src/backend/statistics/dependencies.c:673,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/statistics/dependencies.c:678,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/statistics/dependencies.c:679,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/statistics/dependencies.c:686,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/statistics/dependencies.c:688,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/statistics/dependencies.c:692,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/statistics/dependencies.c:694,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/statistics/dependencies.c:696,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/statistics/dependencies.c:698,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/statistics/dependencies.c:701,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/statistics/dependencies.c:703,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 669
    functionDepth: 3
    functionLinenumber: 669
    functionLinenumberEnd: 704
    functionName: pg_dependencies_out
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - appendStringInfoChar
    - appendStringInfoString
    - PG_RETURN_CSTRING
    - PG_GETARG_BYTEA_PP
    - statext_dependencies_deserialize
    - initStringInfo
    linkageType: ''
    returnType: Datum
    signature: Datum pg_dependencies_out(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/dependencies.c:712,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/dependencies.c:713,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/dependencies.c:714,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/statistics/dependencies.c:716,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 717
      start: 709
    functionDepth: 1
    functionLinenumber: 709
    functionLinenumberEnd: 717
    functionName: pg_dependencies_recv
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_VOID
    - errcode
    - ereport
    linkageType: ''
    returnType: Datum
    signature: Datum pg_dependencies_recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: byteasend
      Src: /src/postgres/src/backend/statistics/dependencies.c:728,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 725
    functionDepth: 1
    functionLinenumber: 725
    functionLinenumberEnd: 729
    functionName: pg_dependencies_send
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 0
    functionsReached:
    - byteasend
    linkageType: ''
    returnType: Datum
    signature: Datum pg_dependencies_send(PG_FUNCTION_ARGS)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/dependencies.c:746,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/statistics/dependencies.c:755,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/statistics/dependencies.c:761,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/dependencies.c:767,1
    - Dst: is_pseudo_constant_clause
      Src: /src/postgres/src/backend/statistics/dependencies.c:771,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/statistics/dependencies.c:771,1
    - Dst: linitial
      Src: /src/postgres/src/backend/statistics/dependencies.c:772,1
    - Dst: is_pseudo_constant_clause
      Src: /src/postgres/src/backend/statistics/dependencies.c:773,1
    - Dst: linitial
      Src: /src/postgres/src/backend/statistics/dependencies.c:773,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/statistics/dependencies.c:774,1
    - Dst: get_oprrest
      Src: /src/postgres/src/backend/statistics/dependencies.c:790,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/dependencies.c:795,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/dependencies.c:810,1
    - Dst: is_pseudo_constant_clause
      Src: /src/postgres/src/backend/statistics/dependencies.c:817,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/statistics/dependencies.c:817,1
    - Dst: linitial
      Src: /src/postgres/src/backend/statistics/dependencies.c:820,1
    - Dst: get_oprrest
      Src: /src/postgres/src/backend/statistics/dependencies.c:829,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/statistics/dependencies.c:834,1
    - Dst: foreach
      Src: /src/postgres/src/backend/statistics/dependencies.c:842,1
    - Dst: dependency_is_compatible_clause
      Src: /src/postgres/src/backend/statistics/dependencies.c:850,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/dependencies.c:850,1
    - Dst: is_notclause
      Src: /src/postgres/src/backend/statistics/dependencies.c:865,1
    - Dst: get_notclausearg
      Src: /src/postgres/src/backend/statistics/dependencies.c:871,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/dependencies.c:886,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/dependencies.c:890,1
    - Dst: AttrNumberIsForUserDefinedAttr
      Src: /src/postgres/src/backend/statistics/dependencies.c:905,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 60
    argCount: 3
    argNames:
    - clause
    - relid
    - attnum
    argTypes:
    - Node*
    - Index
    - AttrNumber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 910
      start: 740
    functionDepth: 3
    functionLinenumber: 740
    functionLinenumberEnd: 910
    functionName: dependency_is_compatible_clause
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 1
    functionsReached:
    - AttrNumberIsForUserDefinedAttr
    - get_oprrest
    - dependency_is_compatible_clause
    - is_pseudo_constant_clause
    - linitial
    - is_orclause
    - IsA
    - lsecond
    - list_length
    - foreach
    - get_notclausearg
    - is_opclause
    - is_notclause
    - bms_membership
    - lfirst
    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:937,1
    - Dst: dependency_is_fully_matched
      Src: /src/postgres/src/backend/statistics/dependencies.c:974,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 16
    argCount: 3
    argNames:
    - dependencies
    - ndependencies
    - attnums
    argTypes:
    - MVDependencies**
    - int
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 928
    functionDepth: 2
    functionLinenumber: 928
    functionLinenumberEnd: 980
    functionName: find_strongest_dependency
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 0
    functionsReached:
    - bms_num_members
    - dependency_is_fully_matched
    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:1044,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/dependencies.c:1052,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/dependencies.c:1053,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/statistics/dependencies.c:1057,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/dependencies.c:1065,1
    - Dst: lappend
      Src: /src/postgres/src/backend/statistics/dependencies.c:1070,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/statistics/dependencies.c:1071,1
    - Dst: clauselist_selectivity_ext
      Src: /src/postgres/src/backend/statistics/dependencies.c:1075,1
    - Dst: bms_member_index
      Src: /src/postgres/src/backend/statistics/dependencies.c:1116,1
    - Dst: bms_member_index
      Src: /src/postgres/src/backend/statistics/dependencies.c:1122,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/statistics/dependencies.c:1151,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:1153,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/statistics/dependencies.c:1154,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: 1157
      start: 1013
    functionDepth: 4
    functionLinenumber: 1013
    functionLinenumberEnd: 1157
    functionName: clauselist_apply_dependencies
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 0
    functionsReached:
    - lfirst
    - pfree
    - clauselist_selectivity_ext
    - bms_member_index
    - lappend
    - CLAMP_PROBABILITY
    - palloc
    - bms_next_member
    - bms_num_members
    - bms_free
    - 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:1065,1
    - Dst: lappend
      Src: /src/postgres/src/backend/statistics/dependencies.c:1070,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/statistics/dependencies.c:1071,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1073
      start: 1063
    functionDepth: 1
    functionLinenumber: 1063
    functionLinenumberEnd: 1073
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 326
    functionsReached:
    - lappend
    - lfirst
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: void foreach(l, clauses)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/dependencies.c:1174,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/statistics/dependencies.c:1183,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/statistics/dependencies.c:1189,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/dependencies.c:1195,1
    - Dst: is_pseudo_constant_clause
      Src: /src/postgres/src/backend/statistics/dependencies.c:1199,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/statistics/dependencies.c:1199,1
    - Dst: linitial
      Src: /src/postgres/src/backend/statistics/dependencies.c:1200,1
    - Dst: is_pseudo_constant_clause
      Src: /src/postgres/src/backend/statistics/dependencies.c:1201,1
    - Dst: linitial
      Src: /src/postgres/src/backend/statistics/dependencies.c:1201,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/statistics/dependencies.c:1202,1
    - Dst: get_oprrest
      Src: /src/postgres/src/backend/statistics/dependencies.c:1218,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/dependencies.c:1223,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/dependencies.c:1238,1
    - Dst: is_pseudo_constant_clause
      Src: /src/postgres/src/backend/statistics/dependencies.c:1245,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/statistics/dependencies.c:1245,1
    - Dst: linitial
      Src: /src/postgres/src/backend/statistics/dependencies.c:1248,1
    - Dst: get_oprrest
      Src: /src/postgres/src/backend/statistics/dependencies.c:1257,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/statistics/dependencies.c:1262,1
    - Dst: foreach
      Src: /src/postgres/src/backend/statistics/dependencies.c:1269,1
    - Dst: dependency_is_compatible_expression
      Src: /src/postgres/src/backend/statistics/dependencies.c:1277,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/dependencies.c:1277,1
    - Dst: equal
      Src: /src/postgres/src/backend/statistics/dependencies.c:1285,1
    - Dst: is_notclause
      Src: /src/postgres/src/backend/statistics/dependencies.c:1292,1
    - Dst: get_notclausearg
      Src: /src/postgres/src/backend/statistics/dependencies.c:1298,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/dependencies.c:1313,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/dependencies.c:1321,1
    - Dst: foreach
      Src: /src/postgres/src/backend/statistics/dependencies.c:1327,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/dependencies.c:1329,1
    - Dst: equal
      Src: /src/postgres/src/backend/statistics/dependencies.c:1331,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 59
    argCount: 4
    argNames:
    - clause
    - relid
    - statlist
    - expr
    argTypes:
    - Node*
    - Index
    - List*
    - Node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1167
    functionDepth: 3
    functionLinenumber: 1167
    functionLinenumberEnd: 1340
    functionName: dependency_is_compatible_expression
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 1
    functionsReached:
    - get_oprrest
    - is_pseudo_constant_clause
    - equal
    - linitial
    - dependency_is_compatible_expression
    - is_orclause
    - IsA
    - lsecond
    - list_length
    - foreach
    - get_notclausearg
    - is_opclause
    - is_notclause
    - bms_membership
    - lfirst
    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:1321,1
    - Dst: foreach
      Src: /src/postgres/src/backend/statistics/dependencies.c:1327,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/dependencies.c:1329,1
    - Dst: equal
      Src: /src/postgres/src/backend/statistics/dependencies.c:1331,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1337
      start: 1319
    functionDepth: 1
    functionLinenumber: 1319
    functionLinenumberEnd: 1337
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 328
    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:1390,1
    - Dst: has_stats_of_kind
      Src: /src/postgres/src/backend/statistics/dependencies.c:1397,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/dependencies.c:1400,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/dependencies.c:1401,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/dependencies.c:1409,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/dependencies.c:1409,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/dependencies.c:1431,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/statistics/dependencies.c:1438,1
    - Dst: dependency_is_compatible_clause
      Src: /src/postgres/src/backend/statistics/dependencies.c:1445,1
    - Dst: dependency_is_compatible_expression
      Src: /src/postgres/src/backend/statistics/dependencies.c:1449,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:1456,1
    - Dst: equal
      Src: /src/postgres/src/backend/statistics/dependencies.c:1461,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:1486,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/dependencies.c:1486,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/dependencies.c:1502,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:1511,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:1512,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:1525,1
    - Dst: AttrNumberIsForUserDefinedAttr
      Src: /src/postgres/src/backend/statistics/dependencies.c:1525,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/statistics/dependencies.c:1526,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/statistics/dependencies.c:1536,1
    - Dst: bms_membership
      Src: /src/postgres/src/backend/statistics/dependencies.c:1544,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/statistics/dependencies.c:1546,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:1547,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/dependencies.c:1562,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/dependencies.c:1563,1
    - Dst: foreach
      Src: /src/postgres/src/backend/statistics/dependencies.c:1567,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/dependencies.c:1569,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/statistics/dependencies.c:1591,1
    - Dst: AttrNumberIsForUserDefinedAttr
      Src: /src/postgres/src/backend/statistics/dependencies.c:1596,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/statistics/dependencies.c:1602,1
    - Dst: foreach
      Src: /src/postgres/src/backend/statistics/dependencies.c:1612,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/dependencies.c:1614,1
    - Dst: equal
      Src: /src/postgres/src/backend/statistics/dependencies.c:1617,1
    - Dst: statext_dependencies_load
      Src: /src/postgres/src/backend/statistics/dependencies.c:1629,1
    - Dst: AttrNumberIsForUserDefinedAttr
      Src: /src/postgres/src/backend/statistics/dependencies.c:1683,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/statistics/dependencies.c:1687,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:1700,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/statistics/dependencies.c:1700,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:1713,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/dependencies.c:1713,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/statistics/dependencies.c:1715,1
    - Dst: equal
      Src: /src/postgres/src/backend/statistics/dependencies.c:1724,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:1775,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/statistics/dependencies.c:1776,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:1777,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:1778,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/dependencies.c:1786,1
    - Dst: find_strongest_dependency
      Src: /src/postgres/src/backend/statistics/dependencies.c:1796,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/statistics/dependencies.c:1806,1
    - Dst: clauselist_apply_dependencies
      Src: /src/postgres/src/backend/statistics/dependencies.c:1814,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:1820,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:1822,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:1823,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/statistics/dependencies.c:1824,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:1825,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/dependencies.c:1826,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: 1829
      start: 1369
    functionDepth: 5
    functionLinenumber: 1369
    functionLinenumberEnd: 1829
    functionName: dependencies_clauselist_selectivity
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 1
    functionsReached:
    - find_strongest_dependency
    - list_length
    - pfree
    - dependency_is_compatible_clause
    - equal
    - has_stats_of_kind
    - foreach
    - clauselist_apply_dependencies
    - AttributeNumberIsValid
    - bms_next_member
    - statext_dependencies_load
    - bms_free
    - AttrNumberIsForUserDefinedAttr
    - bms_del_member
    - list_nth
    - bms_is_member
    - palloc
    - lfirst
    - bms_add_member
    - Assert
    - dependency_is_compatible_expression
    - planner_rt_fetch
    - bms_membership
    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:1431,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/statistics/dependencies.c:1438,1
    - Dst: dependency_is_compatible_clause
      Src: /src/postgres/src/backend/statistics/dependencies.c:1445,1
    - Dst: dependency_is_compatible_expression
      Src: /src/postgres/src/backend/statistics/dependencies.c:1449,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/dependencies.c:1456,1
    - Dst: equal
      Src: /src/postgres/src/backend/statistics/dependencies.c:1461,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1484
      start: 1429
    functionDepth: 4
    functionLinenumber: 1429
    functionLinenumberEnd: 1484
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/dependencies.c
    functionUses: 329
    functionsReached:
    - Assert
    - dependency_is_compatible_clause
    - equal
    - dependency_is_compatible_expression
    - bms_is_member
    - lfirst
    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: 55
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 55
    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: 72
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 72
    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: 90
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 90
    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: 101
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 101
    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: 163
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 163
    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:194,1
    - Dst: build_sorted_items
      Src: /src/postgres/src/backend/statistics/mcv.c:197,1
    - Dst: build_distinct_groups
      Src: /src/postgres/src/backend/statistics/mcv.c:208,1
    - Dst: get_mincount_for_mcv_list
      Src: /src/postgres/src/backend/statistics/mcv.c:237,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/mcv.c:269,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/mcv.c:273,1
    - Dst: build_column_frequencies
      Src: /src/postgres/src/backend/statistics/mcv.c:274,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/mcv.c:279,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/mcv.c:297,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/mcv.c:298,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:301,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:302,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:305,1
    - Dst: bsearch_arg
      Src: /src/postgres/src/backend/statistics/mcv.c:324,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:332,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:333,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:336,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:337,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 52
    argCount: 3
    argNames:
    - data
    - totalrows
    - stattarget
    argTypes:
    - StatsBuildData*
    - double
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 179
    functionDepth: 3
    functionLinenumber: 179
    functionLinenumberEnd: 340
    functionName: statext_mcv_build
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 2
    functionsReached:
    - get_mincount_for_mcv_list
    - Assert
    - build_column_frequencies
    - pfree
    - build_distinct_groups
    - bsearch_arg
    - build_sorted_items
    - palloc0
    - memcpy
    - palloc
    - build_mss
    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:353,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/statistics/mcv.c:361,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:363,1
    - Dst: multi_sort_add_dimension
      Src: /src/postgres/src/backend/statistics/mcv.c:366,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - data
    argTypes:
    - StatsBuildData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 346
    functionDepth: 2
    functionLinenumber: 346
    functionLinenumberEnd: 370
    functionName: build_mss
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 1
    functionsReached:
    - elog
    - multi_sort_init
    - multi_sort_add_dimension
    - 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:388,1
    - Dst: multi_sort_compare
      Src: /src/postgres/src/backend/statistics/mcv.c:388,1
    - Dst: multi_sort_compare
      Src: /src/postgres/src/backend/statistics/mcv.c:390,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - numrows
    - items
    - mss
    argTypes:
    - int
    - SortItem*
    - MultiSortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 378
    functionDepth: 3
    functionLinenumber: 378
    functionLinenumberEnd: 395
    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: 414
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 414
    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:429,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/mcv.c:431,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:440,1
    - Dst: multi_sort_compare
      Src: /src/postgres/src/backend/statistics/mcv.c:440,1
    - Dst: multi_sort_compare
      Src: /src/postgres/src/backend/statistics/mcv.c:443,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:453,1
    - Dst: qsort_interruptible
      Src: /src/postgres/src/backend/statistics/mcv.c:456,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 4
    argNames:
    - numrows
    - items
    - mss
    - ndistinct
    argTypes:
    - int
    - SortItem*
    - MultiSortSupport
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 423
    functionDepth: 4
    functionLinenumber: 423
    functionLinenumberEnd: 461
    functionName: build_distinct_groups
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 1
    functionsReached:
    - Assert
    - qsort_interruptible
    - count_distinct_groups
    - palloc
    - multi_sort_compare
    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:471,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 464
    functionDepth: 2
    functionLinenumber: 464
    functionLinenumberEnd: 474
    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:498,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:499,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/mcv.c:502,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:502,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:503,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:507,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:515,1
    - Dst: qsort_interruptible
      Src: /src/postgres/src/backend/statistics/mcv.c:527,1
    - Dst: sort_item_compare
      Src: /src/postgres/src/backend/statistics/mcv.c:538,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 489
    functionDepth: 3
    functionLinenumber: 489
    functionLinenumberEnd: 551
    functionName: build_column_frequencies
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 1
    functionsReached:
    - Assert
    - qsort_interruptible
    - sort_item_compare
    - palloc
    - MAXALIGN
    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:563,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/mcv.c:564,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/statistics/mcv.c:564,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/mcv.c:566,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:567,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/statistics/mcv.c:569,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:573,1
    - Dst: statext_mcv_deserialize
      Src: /src/postgres/src/backend/statistics/mcv.c:577,1
    - Dst: DatumGetByteaP
      Src: /src/postgres/src/backend/statistics/mcv.c:577,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/statistics/mcv.c:579,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - mvoid
    - inh
    argTypes:
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 557
    functionDepth: 1
    functionLinenumber: 557
    functionLinenumberEnd: 582
    functionName: statext_mcv_load
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 1
    functionsReached:
    - SearchSysCache2
    - ReleaseSysCache
    - BoolGetDatum
    - HeapTupleIsValid
    - DatumGetByteaP
    - elog
    - SysCacheGetAttr
    - statext_mcv_deserialize
    - ObjectIdGetDatum
    linkageType: ''
    returnType: MCVList
    signature: 'MCVList *

      statext_mcv_load(Oid mvoid, bool inh)'
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/mcv.c:638,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/mcv.c:639,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/mcv.c:649,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/mcv.c:652,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/statistics/mcv.c:664,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/mcv.c:671,1
    - Dst: PrepareSortSupportFromOrderingOp
      Src: /src/postgres/src/backend/statistics/mcv.c:693,1
    - Dst: qsort_interruptible
      Src: /src/postgres/src/backend/statistics/mcv.c:695,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:708,1
    - Dst: compare_datums_simple
      Src: /src/postgres/src/backend/statistics/mcv.c:708,1
    - Dst: compare_datums_simple
      Src: /src/postgres/src/backend/statistics/mcv.c:711,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:719,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:751,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/mcv.c:767,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/statistics/mcv.c:767,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/statistics/mcv.c:770,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:778,1
    - Dst: strlen
      Src: /src/postgres/src/backend/statistics/mcv.c:797,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/statistics/mcv.c:797,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:802,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:807,1
    - Dst: ITEM_SIZE
      Src: /src/postgres/src/backend/statistics/mcv.c:830,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/mcv.c:836,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/statistics/mcv.c:837,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/statistics/mcv.c:839,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:843,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:846,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:849,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:852,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:855,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:859,1
    - Dst: store_att_byval
      Src: /src/postgres/src/backend/statistics/mcv.c:885,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:887,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:893,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/statistics/mcv.c:893,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/statistics/mcv.c:898,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/statistics/mcv.c:898,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:901,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:905,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/statistics/mcv.c:905,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/statistics/mcv.c:905,1
    - Dst: strlen
      Src: /src/postgres/src/backend/statistics/mcv.c:910,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/statistics/mcv.c:910,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:913,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:917,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/statistics/mcv.c:917,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:922,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:926,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:935,1
    - Dst: ITEM_SIZE
      Src: /src/postgres/src/backend/statistics/mcv.c:935,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:938,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:941,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:944,1
    - Dst: bsearch_arg
      Src: /src/postgres/src/backend/statistics/mcv.c:956,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:960,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:967,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:971,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:976,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:980,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:982,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:983,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 134
    argCount: 2
    argNames:
    - mcvlist
    - stats
    argTypes:
    - MCVList*
    - VacAttrStats**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 620
    functionDepth: 3
    functionLinenumber: 620
    functionLinenumberEnd: 986
    functionName: statext_mcv_serialize
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 1
    functionsReached:
    - bsearch_arg
    - strlen
    - pfree
    - qsort_interruptible
    - DatumGetCString
    - lookup_type_cache
    - ITEM_SIZE
    - memcpy
    - DatumGetPointer
    - VARDATA
    - compare_datums_simple
    - VARSIZE_ANY_EXHDR
    - PG_DETOAST_DATUM
    - SET_VARSIZE
    - Assert
    - PrepareSortSupportFromOrderingOp
    - palloc0
    - PointerGetDatum
    - store_att_byval
    - VARDATA_ANY
    - MAXALIGN
    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:1030,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1031,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/statistics/mcv.c:1032,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/statistics/mcv.c:1035,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/statistics/mcv.c:1039,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/statistics/mcv.c:1040,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1043,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1046,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1049,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1052,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1056,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1060,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1064,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1067,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1071,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1073,1
    - Dst: SizeOfMCVList
      Src: /src/postgres/src/backend/statistics/mcv.c:1084,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/statistics/mcv.c:1091,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1092,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/statistics/mcv.c:1093,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1096,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/mcv.c:1100,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1102,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1112,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1113,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/statistics/mcv.c:1123,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1124,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/statistics/mcv.c:1125,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/mcv.c:1137,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/mcv.c:1141,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:1157,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:1160,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:1161,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:1164,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/statistics/mcv.c:1167,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: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:1175,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1193,1
    - Dst: fetch_att
      Src: /src/postgres/src/backend/statistics/mcv.c:1196,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1199,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1211,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/mcv.c:1215,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:1216,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1227,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/statistics/mcv.c:1231,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1232,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/statistics/mcv.c:1232,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/mcv.c:1236,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:1239,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1249,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1252,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/mcv.c:1256,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:1257,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1262,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1265,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1269,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1273,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:1281,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/statistics/mcv.c:1284,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1286,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1289,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1292,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/statistics/mcv.c:1300,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1310,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1314,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:1318,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:1320,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 129
    argCount: 1
    argNames:
    - data
    argTypes:
    - bytea*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1323
      start: 995
    functionDepth: 2
    functionLinenumber: 995
    functionLinenumberEnd: 1323
    functionName: statext_mcv_deserialize
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 1
    functionsReached:
    - SizeOfMCVList
    - VARSIZE_ANY
    - Assert
    - pfree
    - memcpy
    - palloc0
    - PointerGetDatum
    - VARDATA
    - elog
    - SET_VARSIZE
    - repalloc
    - VARDATA_ANY
    - palloc
    - 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:1343,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/statistics/mcv.c:1350,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/statistics/mcv.c:1353,1
    - Dst: statext_mcv_deserialize
      Src: /src/postgres/src/backend/statistics/mcv.c:1355,1
    - Dst: PG_GETARG_BYTEA_P
      Src: /src/postgres/src/backend/statistics/mcv.c:1355,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/statistics/mcv.c:1365,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/mcv.c:1366,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/mcv.c:1367,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/mcv.c:1368,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/backend/statistics/mcv.c:1370,1
    - Dst: TupleDescGetAttInMetadata
      Src: /src/postgres/src/backend/statistics/mcv.c:1376,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/statistics/mcv.c:1378,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/statistics/mcv.c:1382,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1400,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/statistics/mcv.c:1407,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/statistics/mcv.c:1408,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/statistics/mcv.c:1422,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/statistics/mcv.c:1423,1
    - Dst: FunctionCall1
      Src: /src/postgres/src/backend/statistics/mcv.c:1425,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/statistics/mcv.c:1426,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/statistics/mcv.c:1426,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/statistics/mcv.c:1428,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/statistics/mcv.c:1429,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/statistics/mcv.c:1435,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/statistics/mcv.c:1442,1
    - Dst: makeArrayResult
      Src: /src/postgres/src/backend/statistics/mcv.c:1443,1
    - Dst: makeArrayResult
      Src: /src/postgres/src/backend/statistics/mcv.c:1444,1
    - Dst: Float8GetDatum
      Src: /src/postgres/src/backend/statistics/mcv.c:1445,1
    - Dst: Float8GetDatum
      Src: /src/postgres/src/backend/statistics/mcv.c:1446,1
    - Dst: memset
      Src: /src/postgres/src/backend/statistics/mcv.c:1449,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/statistics/mcv.c:1452,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/statistics/mcv.c:1455,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/statistics/mcv.c:1457,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/statistics/mcv.c:1461,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1463
      start: 1337
    functionDepth: 5
    functionLinenumber: 1337
    functionLinenumberEnd: 1463
    functionName: pg_stats_ext_mcvlist_items
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 0
    functionsReached:
    - HeapTupleGetDatum
    - MemoryContextSwitchTo
    - getTypeOutputInfo
    - BoolGetDatum
    - makeArrayResult
    - Float8GetDatum
    - SRF_FIRSTCALL_INIT
    - SRF_RETURN_DONE
    - SRF_RETURN_NEXT
    - Int32GetDatum
    - get_call_result_type
    - statext_mcv_deserialize
    - cstring_to_text
    - DatumGetPointer
    - errmsg
    - PG_GETARG_BYTEA_P
    - TupleDescGetAttInMetadata
    - SRF_PERCALL_SETUP
    - heap_form_tuple
    - FunctionCall1
    - fmgr_info
    - SRF_IS_FIRSTCALL
    - Assert
    - memset
    - BlessTupleDesc
    - ereport
    - accumArrayResult
    - PointerGetDatum
    - errcode
    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:1478,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/mcv.c:1479,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/mcv.c:1480,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/statistics/mcv.c:1482,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1483
      start: 1471
    functionDepth: 1
    functionLinenumber: 1471
    functionLinenumberEnd: 1483
    functionName: pg_mcv_list_in
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_VOID
    - errcode
    - ereport
    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:1500,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1501
      start: 1497
    functionDepth: 1
    functionLinenumber: 1497
    functionLinenumberEnd: 1501
    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:1509,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/mcv.c:1510,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/mcv.c:1511,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/statistics/mcv.c:1513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1514
      start: 1506
    functionDepth: 1
    functionLinenumber: 1506
    functionLinenumberEnd: 1514
    functionName: pg_mcv_list_recv
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_VOID
    - errcode
    - ereport
    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:1525,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1526
      start: 1522
    functionDepth: 1
    functionLinenumber: 1522
    functionLinenumberEnd: 1526
    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:1539,1
    - Dst: bms_member_index
      Src: /src/postgres/src/backend/statistics/mcv.c:1547,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1550,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/statistics/mcv.c:1558,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/statistics/mcv.c:1561,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/mcv.c:1564,1
    - Dst: equal
      Src: /src/postgres/src/backend/statistics/mcv.c:1566,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1573,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 4
    argNames:
    - expr
    - keys
    - exprs
    - collid
    argTypes:
    - Node*
    - Bitmapset*
    - List*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1577
      start: 1534
    functionDepth: 1
    functionLinenumber: 1534
    functionLinenumberEnd: 1577
    functionName: mcv_match_expression
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 0
    functionsReached:
    - exprCollation
    - equal
    - IsA
    - bms_member_index
    - elog
    - bms_num_members
    - lfirst
    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:1564,1
    - Dst: equal
      Src: /src/postgres/src/backend/statistics/mcv.c:1566,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1570
      start: 1562
    functionDepth: 1
    functionLinenumber: 1562
    functionLinenumberEnd: 1570
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 329
    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:1607,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1608,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1609,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1610,1
    - Dst: palloc
      Src: /src/postgres/src/backend/statistics/mcv.c:1612,1
    - Dst: memset
      Src: /src/postgres/src/backend/statistics/mcv.c:1613,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/statistics/mcv.c:1621,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/mcv.c:1624,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/statistics/mcv.c:1631,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/statistics/mcv.c:1643,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/statistics/mcv.c:1643,1
    - Dst: examine_opclause_args
      Src: /src/postgres/src/backend/statistics/mcv.c:1646,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1647,1
    - Dst: mcv_match_expression
      Src: /src/postgres/src/backend/statistics/mcv.c:1650,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1662,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1671,1
    - Dst: RESULT_IS_FINAL
      Src: /src/postgres/src/backend/statistics/mcv.c:1680,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/statistics/mcv.c:1696,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/statistics/mcv.c:1696,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/statistics/mcv.c:1701,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/statistics/mcv.c:1701,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1707,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/mcv.c:1710,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/statistics/mcv.c:1731,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/statistics/mcv.c:1731,1
    - Dst: examine_opclause_args
      Src: /src/postgres/src/backend/statistics/mcv.c:1734,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1735,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1739,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/statistics/mcv.c:1747,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/statistics/mcv.c:1748,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/statistics/mcv.c:1748,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/statistics/mcv.c:1750,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/statistics/mcv.c:1751,1
    - Dst: mcv_match_expression
      Src: /src/postgres/src/backend/statistics/mcv.c:1757,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1777,1
    - Dst: RESULT_IS_FINAL
      Src: /src/postgres/src/backend/statistics/mcv.c:1786,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1798,1
    - Dst: RESULT_IS_FINAL
      Src: /src/postgres/src/backend/statistics/mcv.c:1807,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/statistics/mcv.c:1810,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/statistics/mcv.c:1810,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1815,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1819,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/mcv.c:1822,1
    - Dst: mcv_match_expression
      Src: /src/postgres/src/backend/statistics/mcv.c:1828,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1853,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/statistics/mcv.c:1856,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/statistics/mcv.c:1856,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1867,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1868,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/mcv.c:1868,1
    - Dst: mcv_get_match_bitmap
      Src: /src/postgres/src/backend/statistics/mcv.c:1871,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/statistics/mcv.c:1872,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1880,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:1882,1
    - Dst: is_notclause
      Src: /src/postgres/src/backend/statistics/mcv.c:1884,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1895,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1896,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/mcv.c:1896,1
    - Dst: mcv_get_match_bitmap
      Src: /src/postgres/src/backend/statistics/mcv.c:1899,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1908,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:1910,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/mcv.c:1912,1
    - Dst: bms_member_index
      Src: /src/postgres/src/backend/statistics/mcv.c:1919,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1921,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/statistics/mcv.c:1934,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1938,1
    - Dst: mcv_match_expression
      Src: /src/postgres/src/backend/statistics/mcv.c:1947,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/statistics/mcv.c:1960,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1963,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: 1969
      start: 1598
    functionDepth: 2
    functionLinenumber: 1598
    functionLinenumberEnd: 1969
    functionName: mcv_get_match_bitmap
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 1
    functionsReached:
    - examine_opclause_args
    - get_typlenbyvalalign
    - list_length
    - is_opclause
    - mcv_match_expression
    - deconstruct_array
    - pfree
    - DatumGetArrayTypeP
    - RESULT_MERGE
    - is_andclause
    - RESULT_IS_FINAL
    - FunctionCall2Coll
    - fmgr_info
    - IsA
    - get_opcode
    - elog
    - palloc
    - lfirst
    - is_notclause
    - ARR_ELEMTYPE
    - Assert
    - memset
    - is_orclause
    - bms_member_index
    - mcv_get_match_bitmap
    - DatumGetBool
    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:1621,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/mcv.c:1624,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/statistics/mcv.c:1631,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/statistics/mcv.c:1643,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/statistics/mcv.c:1643,1
    - Dst: examine_opclause_args
      Src: /src/postgres/src/backend/statistics/mcv.c:1646,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1647,1
    - Dst: mcv_match_expression
      Src: /src/postgres/src/backend/statistics/mcv.c:1650,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1662,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1671,1
    - Dst: RESULT_IS_FINAL
      Src: /src/postgres/src/backend/statistics/mcv.c:1680,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/statistics/mcv.c:1696,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/statistics/mcv.c:1696,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/statistics/mcv.c:1701,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/statistics/mcv.c:1701,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1707,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/mcv.c:1710,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/statistics/mcv.c:1731,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/statistics/mcv.c:1731,1
    - Dst: examine_opclause_args
      Src: /src/postgres/src/backend/statistics/mcv.c:1734,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1735,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/mcv.c:1739,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/statistics/mcv.c:1747,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/statistics/mcv.c:1748,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/statistics/mcv.c:1748,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/statistics/mcv.c:1750,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/statistics/mcv.c:1751,1
    - Dst: mcv_match_expression
      Src: /src/postgres/src/backend/statistics/mcv.c:1757,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1777,1
    - Dst: RESULT_IS_FINAL
      Src: /src/postgres/src/backend/statistics/mcv.c:1786,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1798,1
    - Dst: RESULT_IS_FINAL
      Src: /src/postgres/src/backend/statistics/mcv.c:1807,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/statistics/mcv.c:1810,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/statistics/mcv.c:1810,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1815,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1819,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/mcv.c:1822,1
    - Dst: mcv_match_expression
      Src: /src/postgres/src/backend/statistics/mcv.c:1828,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1853,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/statistics/mcv.c:1856,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/statistics/mcv.c:1856,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1867,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1868,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/mcv.c:1868,1
    - Dst: mcv_get_match_bitmap
      Src: /src/postgres/src/backend/statistics/mcv.c:1871,1
    - Dst: is_orclause
      Src: /src/postgres/src/backend/statistics/mcv.c:1872,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1880,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:1882,1
    - Dst: is_notclause
      Src: /src/postgres/src/backend/statistics/mcv.c:1884,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1895,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1896,1
    - Dst: list_length
      Src: /src/postgres/src/backend/statistics/mcv.c:1896,1
    - Dst: mcv_get_match_bitmap
      Src: /src/postgres/src/backend/statistics/mcv.c:1899,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1908,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:1910,1
    - Dst: IsA
      Src: /src/postgres/src/backend/statistics/mcv.c:1912,1
    - Dst: bms_member_index
      Src: /src/postgres/src/backend/statistics/mcv.c:1919,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/mcv.c:1921,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/statistics/mcv.c:1934,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1938,1
    - Dst: mcv_match_expression
      Src: /src/postgres/src/backend/statistics/mcv.c:1947,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/statistics/mcv.c:1960,1
    - Dst: RESULT_MERGE
      Src: /src/postgres/src/backend/statistics/mcv.c:1963,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 97
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1966
      start: 1619
    functionDepth: 3
    functionLinenumber: 1619
    functionLinenumberEnd: 1966
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 329
    functionsReached:
    - examine_opclause_args
    - get_typlenbyvalalign
    - list_length
    - is_opclause
    - mcv_match_expression
    - deconstruct_array
    - pfree
    - DatumGetArrayTypeP
    - RESULT_MERGE
    - is_andclause
    - RESULT_IS_FINAL
    - FunctionCall2Coll
    - fmgr_info
    - IsA
    - get_opcode
    - elog
    - lfirst
    - is_notclause
    - ARR_ELEMTYPE
    - Assert
    - is_orclause
    - bms_member_index
    - mcv_get_match_bitmap
    - DatumGetBool
    linkageType: ''
    returnType: void
    signature: void foreach(l, clauses)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/statistics/mcv.c:2016,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/statistics/mcv.c:2024,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: 2027
      start: 2005
    functionDepth: 1
    functionLinenumber: 2005
    functionLinenumberEnd: 2027
    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:2063,1
    - Dst: mcv_get_match_bitmap
      Src: /src/postgres/src/backend/statistics/mcv.c:2066,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: 2084
      start: 2047
    functionDepth: 3
    functionLinenumber: 2047
    functionLinenumberEnd: 2084
    functionName: mcv_clauselist_selectivity
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 2
    functionsReached:
    - mcv_get_match_bitmap
    - statext_mcv_load
    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
      Src: /src/postgres/src/backend/statistics/mcv.c:2137,1
    - Dst: mcv_get_match_bitmap
      Src: /src/postgres/src/backend/statistics/mcv.c:2140,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/statistics/mcv.c:2140,1
    - Dst: pfree
      Src: /src/postgres/src/backend/statistics/mcv.c:2172,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: 2175
      start: 2125
    functionDepth: 3
    functionLinenumber: 2125
    functionLinenumberEnd: 2175
    functionName: mcv_clause_selectivity_or
    functionSourceFile: /src/postgres/src/backend/statistics/mcv.c
    functionUses: 2
    functionsReached:
    - pfree
    - list_make1
    - mcv_get_match_bitmap
    - palloc0
    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: 13
    BranchProfiles: []
    Callsites:
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/relation_stats.c:86,1
    - Dst: stats_check_required_arg
      Src: /src/postgres/src/backend/statistics/relation_stats.c:87,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/relation_stats.c:89,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/relation_stats.c:89,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/relation_stats.c:90,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/relation_stats.c:90,1
    - Dst: stats_lookup_relid
      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: stats_lock_check_privileges
      Src: /src/postgres/src/backend/statistics/relation_stats.c:100,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/relation_stats.c:102,1
    - Dst: PG_GETARG_UINT32
      Src: /src/postgres/src/backend/statistics/relation_stats.c:104,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/relation_stats.c:108,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/statistics/relation_stats.c:110,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/relation_stats.c:113,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/relation_stats.c:114,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/relation_stats.c:115,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/relation_stats.c:122,1
    - Dst: PG_GETARG_UINT32
      Src: /src/postgres/src/backend/statistics/relation_stats.c:124,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/relation_stats.c:128,1
    - Dst: PG_GETARG_UINT32
      Src: /src/postgres/src/backend/statistics/relation_stats.c:130,1
    - Dst: table_open
      Src: /src/postgres/src/backend/statistics/relation_stats.c:138,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/statistics/relation_stats.c:140,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/statistics/relation_stats.c:140,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/statistics/relation_stats.c:141,1
    - Dst: elog
      Src: /src/postgres/src/backend/statistics/relation_stats.c:142,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/statistics/relation_stats.c:144,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/statistics/relation_stats.c:149,1
    - Dst: Float4GetDatum
      Src: /src/postgres/src/backend/statistics/relation_stats.c:156,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/statistics/relation_stats.c:163,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/statistics/relation_stats.c:170,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/statistics/relation_stats.c:176,1
    - Dst: heap_modify_tuple_by_cols
      Src: /src/postgres/src/backend/statistics/relation_stats.c:179,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/statistics/relation_stats.c:181,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/statistics/relation_stats.c:182,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/statistics/relation_stats.c:185,1
    - Dst: table_close
      Src: /src/postgres/src/backend/statistics/relation_stats.c:188,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/statistics/relation_stats.c:190,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 63
    argCount: 1
    argNames:
    - fcinfo
    argTypes:
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 63
    functionDepth: 6
    functionLinenumber: 63
    functionLinenumberEnd: 193
    functionName: relation_statistics_update
    functionSourceFile: /src/postgres/src/backend/statistics/relation_stats.c
    functionUses: 0
    functionsReached:
    - stats_lock_check_privileges
    - HeapTupleIsValid
    - errhint
    - PG_GETARG_DATUM
    - RecoveryInProgress
    - PG_GETARG_UINT32
    - Float4GetDatum
    - table_open
    - heap_freetuple
    - ReleaseSysCache
    - GETSTRUCT
    - stats_check_required_arg
    - errmsg
    - stats_lookup_relid
    - CommandCounterIncrement
    - PG_ARGISNULL
    - elog
    - table_close
    - ObjectIdGetDatum
    - heap_modify_tuple_by_cols
    - CatalogTupleUpdate
    - TextDatumGetCString
    - UInt32GetDatum
    - RelationGetDescr
    - ereport
    - SearchSysCache1
    - PG_GETARG_FLOAT4
    - errcode
    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:202,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/statistics/relation_stats.c:204,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/relation_stats.c:206,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/relation_stats.c:207,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: UInt32GetDatum
      Src: /src/postgres/src/backend/statistics/relation_stats.c:210,1
    - Dst: Float4GetDatum
      Src: /src/postgres/src/backend/statistics/relation_stats.c:212,1
    - Dst: UInt32GetDatum
      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: relation_statistics_update
      Src: /src/postgres/src/backend/statistics/relation_stats.c:219,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/statistics/relation_stats.c:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 199
    functionDepth: 7
    functionLinenumber: 199
    functionLinenumberEnd: 221
    functionName: pg_clear_relation_stats
    functionSourceFile: /src/postgres/src/backend/statistics/relation_stats.c
    functionUses: 0
    functionsReached:
    - LOCAL_FCINFO
    - InitFunctionCallInfoData
    - Float4GetDatum
    - UInt32GetDatum
    - PG_RETURN_VOID
    - PG_ARGISNULL
    - relation_statistics_update
    - PG_GETARG_DATUM
    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:226,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/statistics/relation_stats.c:229,1
    - Dst: stats_fill_fcinfo_from_arg_pairs
      Src: /src/postgres/src/backend/statistics/relation_stats.c:233,1
    - Dst: relation_statistics_update
      Src: /src/postgres/src/backend/statistics/relation_stats.c:237,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/statistics/relation_stats.c:240,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 223
    functionDepth: 7
    functionLinenumber: 223
    functionLinenumberEnd: 241
    functionName: pg_restore_relation_stats
    functionSourceFile: /src/postgres/src/backend/statistics/relation_stats.c
    functionUses: 0
    functionsReached:
    - LOCAL_FCINFO
    - InitFunctionCallInfoData
    - 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:41,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:42,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/stat_utils.c:43,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - fcinfo
    - arginfo
    - argnum
    argTypes:
    - FunctionCallInfo
    - struct StatsArgInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 46
    functionName: stats_check_required_arg
    functionSourceFile: /src/postgres/src/backend/statistics/stat_utils.c
    functionUses: 3
    functionsReached:
    - errmsg
    - errcode
    - PG_ARGISNULL
    - ereport
    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:62,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/statistics/stat_utils.c:65,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/statistics/stat_utils.c:65,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/statistics/stat_utils.c:67,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:69,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/stat_utils.c:70,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:71,1
    - Dst: array_contains_nulls
      Src: /src/postgres/src/backend/statistics/stat_utils.c:76,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:78,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/stat_utils.c:79,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:80,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - fcinfo
    - arginfo
    - argnum
    argTypes:
    - FunctionCallInfo
    - struct StatsArgInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 86
    functionName: stats_check_arg_array
    functionSourceFile: /src/postgres/src/backend/statistics/stat_utils.c
    functionUses: 1
    functionsReached:
    - errmsg
    - DatumGetArrayTypeP
    - ARR_NDIM
    - array_contains_nulls
    - PG_ARGISNULL
    - ereport
    - PG_GETARG_DATUM
    - errcode
    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:101,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/stat_utils.c:101,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/stat_utils.c:104,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/stat_utils.c:104,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/stat_utils.c:106,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/statistics/stat_utils.c:107,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:109,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/stat_utils.c:110,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:111,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: 119
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 119
    functionName: stats_check_arg_pair
    functionSourceFile: /src/postgres/src/backend/statistics/stat_utils.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - PG_ARGISNULL
    - ereport
    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: 13
    BranchProfiles: []
    Callsites:
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/statistics/stat_utils.c:149,1
    - Dst: IndexGetRelation
      Src: /src/postgres/src/backend/statistics/stat_utils.c:153,1
    - Dst: IndexGetRelation
      Src: /src/postgres/src/backend/statistics/stat_utils.c:158,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/statistics/stat_utils.c:165,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:176,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/stat_utils.c:177,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:178,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/statistics/stat_utils.c:179,1
    - Dst: errdetail_relkind_not_supported
      Src: /src/postgres/src/backend/statistics/stat_utils.c:180,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/statistics/stat_utils.c:183,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/stat_utils.c:187,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/statistics/stat_utils.c:188,1
    - Dst: Assert
      Src: /src/postgres/src/backend/statistics/stat_utils.c:190,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/statistics/stat_utils.c:193,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:197,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/stat_utils.c:198,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:199,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/statistics/stat_utils.c:201,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/statistics/stat_utils.c:201,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/statistics/stat_utils.c:203,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/statistics/stat_utils.c:203,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/statistics/stat_utils.c:204,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/statistics/stat_utils.c:208,1
    - Dst: get_relkind_objtype
      Src: /src/postgres/src/backend/statistics/stat_utils.c:209,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/statistics/stat_utils.c:210,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/statistics/stat_utils.c:214,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 1
    argNames:
    - reloid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 130
    functionDepth: 2
    functionLinenumber: 130
    functionLinenumberEnd: 215
    functionName: stats_lock_check_privileges
    functionSourceFile: /src/postgres/src/backend/statistics/stat_utils.c
    functionUses: 3
    functionsReached:
    - errmsg
    - errdetail_relkind_not_supported
    - Assert
    - IndexGetRelation
    - get_rel_relkind
    - GetUserId
    - RelationGetRelid
    - aclcheck_error
    - get_relkind_objtype
    - NameStr
    - pg_class_aclcheck
    - ereport
    - relation_close
    - object_ownercheck
    - relation_open
    - OidIsValid
    - RelationGetRelationName
    - errcode
    linkageType: ''
    returnType: void
    signature: void stats_lock_check_privileges(Oid reloid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/statistics/stat_utils.c:226,1
    - Dst: get_relname_relid
      Src: /src/postgres/src/backend/statistics/stat_utils.c:227,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/statistics/stat_utils.c:228,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:229,1
    - Dst: errcode
      Src: /src/postgres/src/backend/statistics/stat_utils.c:230,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:231,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - nspname
    - relname
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 235
    functionName: stats_lookup_relid
    functionSourceFile: /src/postgres/src/backend/statistics/stat_utils.c
    functionUses: 3
    functionsReached:
    - errmsg
    - get_relname_relid
    - ereport
    - OidIsValid
    - LookupExplicitNamespace
    - errcode
    linkageType: ''
    returnType: Oid
    signature: Oid stats_lookup_relid(const char *nspname, const char *relname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/statistics/stat_utils.c:248,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:251,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:252,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - argname
    - arginfo
    argTypes:
    - char*
    - struct StatsArgInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 242
    functionDepth: 2
    functionLinenumber: 242
    functionLinenumberEnd: 255
    functionName: get_arg_by_name
    functionSourceFile: /src/postgres/src/backend/statistics/stat_utils.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pg_strcasecmp
    - ereport
    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:265,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:266,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/statistics/stat_utils.c:267,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/statistics/stat_utils.c:268,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - argname
    - argtype
    - expectedtype
    argTypes:
    - char*
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 260
    functionDepth: 1
    functionLinenumber: 260
    functionLinenumberEnd: 273
    functionName: stats_check_arg_type
    functionSourceFile: /src/postgres/src/backend/statistics/stat_utils.c
    functionUses: 0
    functionsReached:
    - errmsg
    - format_type_be
    - ereport
    linkageType: ''
    returnType: bool
    signature: bool stats_check_arg_type(const char *argname, Oid argtype, Oid expectedtype)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: extract_variadic_args
      Src: /src/postgres/src/backend/statistics/stat_utils.c:302,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:306,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:307,1
    - Dst: errhint
      Src: /src/postgres/src/backend/statistics/stat_utils.c:308,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:321,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:322,1
    - Dst: ereport
      Src: /src/postgres/src/backend/statistics/stat_utils.c:325,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/statistics/stat_utils.c:326,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/statistics/stat_utils.c:327,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/statistics/stat_utils.c:328,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/statistics/stat_utils.c:333,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/statistics/stat_utils.c:342,1
    - Dst: get_arg_by_name
      Src: /src/postgres/src/backend/statistics/stat_utils.c:345,1
    - Dst: stats_check_arg_type
      Src: /src/postgres/src/backend/statistics/stat_utils.c:347,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: 359
      start: 284
    functionDepth: 3
    functionLinenumber: 284
    functionLinenumberEnd: 359
    functionName: stats_fill_fcinfo_from_arg_pairs
    functionSourceFile: /src/postgres/src/backend/statistics/stat_utils.c
    functionUses: 2
    functionsReached:
    - errmsg
    - TextDatumGetCString
    - format_type_be
    - stats_check_arg_type
    - ereport
    - errhint
    - get_arg_by_name
    - extract_variadic_args
    - pg_strcasecmp
    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: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetForeignDataWrapperExtended
      Src: /src/postgres/src/backend/foreign/foreign.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fdwid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 41
    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:58,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:58,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:60,1
    - Dst: elog
      Src: /src/postgres/src/backend/foreign/foreign.c:63,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/foreign/foreign.c:67,1
    - Dst: palloc
      Src: /src/postgres/src/backend/foreign/foreign.c:69,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/foreign/foreign.c:72,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/foreign/foreign.c:72,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/foreign/foreign.c:77,1
    - Dst: untransformRelOptions
      Src: /src/postgres/src/backend/foreign/foreign.c:84,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/foreign/foreign.c:86,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - fdwid
    - flags
    argTypes:
    - Oid
    - bits16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 49
    functionDepth: 2
    functionLinenumber: 49
    functionLinenumberEnd: 89
    functionName: GetForeignDataWrapperExtended
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 1
    functionsReached:
    - NameStr
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - pstrdup
    - SearchSysCache1
    - elog
    - untransformRelOptions
    - SysCacheGetAttr
    - palloc
    - ObjectIdGetDatum
    linkageType: ''
    returnType: ForeignDataWrapper
    signature: 'ForeignDataWrapper *

      GetForeignDataWrapperExtended(Oid fdwid, bits16 flags)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_foreign_data_wrapper_oid
      Src: /src/postgres/src/backend/foreign/foreign.c:99,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:101,1
    - Dst: GetForeignDataWrapper
      Src: /src/postgres/src/backend/foreign/foreign.c:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - fdwname
    - missing_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 96
    functionDepth: 2
    functionLinenumber: 96
    functionLinenumberEnd: 105
    functionName: GetForeignDataWrapperByName
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 0
    functionsReached:
    - get_foreign_data_wrapper_oid
    - GetForeignDataWrapper
    - OidIsValid
    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:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - serverid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 115
    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:132,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:132,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:134,1
    - Dst: elog
      Src: /src/postgres/src/backend/foreign/foreign.c:137,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/foreign/foreign.c:141,1
    - Dst: palloc
      Src: /src/postgres/src/backend/foreign/foreign.c:143,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/foreign/foreign.c:145,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/foreign/foreign.c:145,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/foreign/foreign.c:150,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/foreign/foreign.c:154,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/foreign/foreign.c:157,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/foreign/foreign.c:161,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/foreign/foreign.c:164,1
    - Dst: untransformRelOptions
      Src: /src/postgres/src/backend/foreign/foreign.c:171,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/foreign/foreign.c:173,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - serverid
    - flags
    argTypes:
    - Oid
    - bits16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 123
    functionDepth: 2
    functionLinenumber: 123
    functionLinenumberEnd: 176
    functionName: GetForeignServerExtended
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 1
    functionsReached:
    - NameStr
    - ReleaseSysCache
    - HeapTupleIsValid
    - TextDatumGetCString
    - GETSTRUCT
    - pstrdup
    - SearchSysCache1
    - elog
    - untransformRelOptions
    - SysCacheGetAttr
    - palloc
    - ObjectIdGetDatum
    linkageType: ''
    returnType: ForeignServer
    signature: 'ForeignServer *

      GetForeignServerExtended(Oid serverid, bits16 flags)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_foreign_server_oid
      Src: /src/postgres/src/backend/foreign/foreign.c:185,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:187,1
    - Dst: GetForeignServer
      Src: /src/postgres/src/backend/foreign/foreign.c:190,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - srvname
    - missing_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 191
    functionName: GetForeignServerByName
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 0
    functionsReached:
    - GetForeignServer
    - get_foreign_server_oid
    - OidIsValid
    linkageType: ''
    returnType: ForeignServer
    signature: 'ForeignServer *

      GetForeignServerByName(const char *srvname, bool missing_ok)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/foreign/foreign.c:208,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:209,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:210,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:212,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/foreign/foreign.c:215,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:216,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:217,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:220,1
    - Dst: GetForeignServer
      Src: /src/postgres/src/backend/foreign/foreign.c:222,1
    - Dst: ereport
      Src: /src/postgres/src/backend/foreign/foreign.c:224,1
    - Dst: errcode
      Src: /src/postgres/src/backend/foreign/foreign.c:225,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/foreign/foreign.c:226,1
    - Dst: MappingUserName
      Src: /src/postgres/src/backend/foreign/foreign.c:227,1
    - Dst: palloc
      Src: /src/postgres/src/backend/foreign/foreign.c:230,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/foreign/foreign.c:231,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/foreign/foreign.c:236,1
    - Dst: untransformRelOptions
      Src: /src/postgres/src/backend/foreign/foreign.c:243,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/foreign/foreign.c:245,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - userid
    - serverid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 200
    functionDepth: 2
    functionLinenumber: 200
    functionLinenumberEnd: 248
    functionName: GetUserMapping
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - SearchSysCache2
    - MappingUserName
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - ereport
    - GetForeignServer
    - untransformRelOptions
    - SysCacheGetAttr
    - palloc
    - ObjectIdGetDatum
    linkageType: ''
    returnType: UserMapping
    signature: 'UserMapping *

      GetUserMapping(Oid userid, Oid serverid)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/foreign/foreign.c:263,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:263,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:264,1
    - Dst: elog
      Src: /src/postgres/src/backend/foreign/foreign.c:265,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/foreign/foreign.c:266,1
    - Dst: palloc
      Src: /src/postgres/src/backend/foreign/foreign.c:268,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/foreign/foreign.c:273,1
    - Dst: untransformRelOptions
      Src: /src/postgres/src/backend/foreign/foreign.c:280,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/foreign/foreign.c:282,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 254
    functionDepth: 2
    functionLinenumber: 254
    functionLinenumberEnd: 285
    functionName: GetForeignTable
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 0
    functionsReached:
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - untransformRelOptions
    - SysCacheGetAttr
    - palloc
    - ObjectIdGetDatum
    linkageType: ''
    returnType: ForeignTable
    signature: 'ForeignTable *

      GetForeignTable(Oid relid)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/foreign/foreign.c:300,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:301,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:302,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:303,1
    - Dst: elog
      Src: /src/postgres/src/backend/foreign/foreign.c:304,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/foreign/foreign.c:306,1
    - Dst: untransformRelOptions
      Src: /src/postgres/src/backend/foreign/foreign.c:313,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/foreign/foreign.c:315,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - relid
    - attnum
    argTypes:
    - Oid
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 292
    functionDepth: 2
    functionLinenumber: 292
    functionLinenumberEnd: 318
    functionName: GetForeignColumnOptions
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 0
    functionsReached:
    - SearchSysCache2
    - ReleaseSysCache
    - HeapTupleIsValid
    - elog
    - untransformRelOptions
    - SysCacheGetAttr
    - Int16GetDatum
    - ObjectIdGetDatum
    linkageType: ''
    returnType: List
    signature: 'List *

      GetForeignColumnOptions(Oid relid, AttrNumber attnum)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/foreign/foreign.c:332,1
    - Dst: ereport
      Src: /src/postgres/src/backend/foreign/foreign.c:335,1
    - Dst: errcode
      Src: /src/postgres/src/backend/foreign/foreign.c:336,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/foreign/foreign.c:337,1
    - Dst: OidFunctionCall0
      Src: /src/postgres/src/backend/foreign/foreign.c:340,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/foreign/foreign.c:341,1
    - Dst: IsA
      Src: /src/postgres/src/backend/foreign/foreign.c:343,1
    - Dst: elog
      Src: /src/postgres/src/backend/foreign/foreign.c:344,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - fdwhandler
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 325
    functionDepth: 1
    functionLinenumber: 325
    functionLinenumberEnd: 348
    functionName: GetFdwRoutine
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 0
    functionsReached:
    - errmsg
    - OidFunctionCall0
    - IsA
    - ereport
    - unlikely
    - elog
    - DatumGetPointer
    - errcode
    linkageType: ''
    returnType: FdwRoutine
    signature: 'FdwRoutine *

      GetFdwRoutine(Oid fdwhandler)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/foreign/foreign.c:362,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:362,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:363,1
    - Dst: elog
      Src: /src/postgres/src/backend/foreign/foreign.c:364,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/foreign/foreign.c:365,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/foreign/foreign.c:367,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 355
    functionDepth: 1
    functionLinenumber: 355
    functionLinenumberEnd: 370
    functionName: GetForeignServerIdByRelId
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 1
    functionsReached:
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Oid
    signature: Oid GetForeignServerIdByRelId(Oid relid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/foreign/foreign.c:387,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:387,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:388,1
    - Dst: elog
      Src: /src/postgres/src/backend/foreign/foreign.c:389,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/foreign/foreign.c:390,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/foreign/foreign.c:392,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/foreign/foreign.c:395,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:395,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:396,1
    - Dst: elog
      Src: /src/postgres/src/backend/foreign/foreign.c:397,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/foreign/foreign.c:398,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:402,1
    - Dst: ereport
      Src: /src/postgres/src/backend/foreign/foreign.c:403,1
    - Dst: errcode
      Src: /src/postgres/src/backend/foreign/foreign.c:404,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/foreign/foreign.c:405,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/foreign/foreign.c:406,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/foreign/foreign.c:408,1
    - Dst: GetFdwRoutine
      Src: /src/postgres/src/backend/foreign/foreign.c:411,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - serverid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 377
    functionDepth: 2
    functionLinenumber: 377
    functionLinenumberEnd: 412
    functionName: GetFdwRoutineByServerId
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - NameStr
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - ereport
    - SearchSysCache1
    - GetFdwRoutine
    - elog
    - OidIsValid
    - ObjectIdGetDatum
    linkageType: ''
    returnType: FdwRoutine
    signature: 'FdwRoutine *

      GetFdwRoutineByServerId(Oid serverid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetForeignServerIdByRelId
      Src: /src/postgres/src/backend/foreign/foreign.c:425,1
    - Dst: GetFdwRoutineByServerId
      Src: /src/postgres/src/backend/foreign/foreign.c:428,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 419
    functionDepth: 3
    functionLinenumber: 419
    functionLinenumberEnd: 429
    functionName: GetFdwRoutineByRelId
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 3
    functionsReached:
    - GetFdwRoutineByServerId
    - GetForeignServerIdByRelId
    linkageType: ''
    returnType: FdwRoutine
    signature: 'FdwRoutine *

      GetFdwRoutineByRelId(Oid relid)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GetFdwRoutineByRelId
      Src: /src/postgres/src/backend/foreign/foreign.c:451,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/foreign/foreign.c:451,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/foreign/foreign.c:454,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/foreign/foreign.c:456,1
    - Dst: palloc
      Src: /src/postgres/src/backend/foreign/foreign.c:466,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/foreign/foreign.c:467,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - relation
    - makecopy
    argTypes:
    - Relation
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 442
    functionDepth: 4
    functionLinenumber: 442
    functionLinenumberEnd: 473
    functionName: GetFdwRoutineForRelation
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 2
    functionsReached:
    - RelationGetRelid
    - memcpy
    - MemoryContextAlloc
    - palloc
    - GetFdwRoutineByRelId
    linkageType: ''
    returnType: FdwRoutine
    signature: 'FdwRoutine *

      GetFdwRoutineForRelation(Relation relation, bool makecopy)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/foreign/foreign.c:494,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/foreign/foreign.c:496,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/foreign/foreign.c:498,1
    - Dst: foreach
      Src: /src/postgres/src/backend/foreign/foreign.c:504,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/foreign/foreign.c:506,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/foreign/foreign.c:508,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - tablename
    - stmt
    argTypes:
    - char*
    - ImportForeignSchemaStmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 482
    functionDepth: 1
    functionLinenumber: 482
    functionLinenumberEnd: 514
    functionName: IsImportableForeignTable
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 0
    functionsReached:
    - strcmp
    - lfirst
    - foreach
    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:525,1
    - Dst: untransformRelOptions
      Src: /src/postgres/src/backend/foreign/foreign.c:530,1
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/foreign/foreign.c:534,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/foreign/foreign.c:538,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:542,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:546,1
    - Dst: strVal
      Src: /src/postgres/src/backend/foreign/foreign.c:546,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/foreign/foreign.c:554,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 522
    functionDepth: 2
    functionLinenumber: 522
    functionLinenumberEnd: 559
    functionName: pg_options_to_table
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 0
    functionsReached:
    - tuplestore_putvalues
    - CStringGetTextDatum
    - untransformRelOptions
    - InitMaterializedSRF
    - strVal
    - PG_GETARG_DATUM
    - lfirst
    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:538,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:542,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:546,1
    - Dst: strVal
      Src: /src/postgres/src/backend/foreign/foreign.c:546,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/foreign/foreign.c:554,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 536
    functionDepth: 1
    functionLinenumber: 536
    functionLinenumberEnd: 556
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 330
    functionsReached:
    - CStringGetTextDatum
    - tuplestore_putvalues
    - strVal
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(cell, options)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/foreign/foreign.c:607,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - option
    - context
    argTypes:
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 601
    functionDepth: 0
    functionLinenumber: 601
    functionLinenumberEnd: 610
    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:628,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/foreign/foreign.c:628,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/foreign/foreign.c:629,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/foreign/foreign.c:635,1
    - Dst: is_conninfo_option
      Src: /src/postgres/src/backend/foreign/foreign.c:637,1
    - Dst: initClosestMatch
      Src: /src/postgres/src/backend/foreign/foreign.c:648,1
    - Dst: updateClosestMatch
      Src: /src/postgres/src/backend/foreign/foreign.c:654,1
    - Dst: getClosestMatch
      Src: /src/postgres/src/backend/foreign/foreign.c:658,1
    - Dst: ereport
      Src: /src/postgres/src/backend/foreign/foreign.c:659,1
    - Dst: errcode
      Src: /src/postgres/src/backend/foreign/foreign.c:660,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/foreign/foreign.c:661,1
    - Dst: errhint
      Src: /src/postgres/src/backend/foreign/foreign.c:663,1
    - Dst: errhint
      Src: /src/postgres/src/backend/foreign/foreign.c:665,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/foreign/foreign.c:667,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/foreign/foreign.c:671,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 625
    functionDepth: 2
    functionLinenumber: 625
    functionLinenumberEnd: 672
    functionName: postgresql_fdw_validator
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - is_conninfo_option
    - getClosestMatch
    - initClosestMatch
    - updateClosestMatch
    - PG_RETURN_BOOL
    - ereport
    - PG_GETARG_OID
    - untransformRelOptions
    - errhint
    - PG_GETARG_DATUM
    - lfirst
    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:635,1
    - Dst: is_conninfo_option
      Src: /src/postgres/src/backend/foreign/foreign.c:637,1
    - Dst: initClosestMatch
      Src: /src/postgres/src/backend/foreign/foreign.c:648,1
    - Dst: updateClosestMatch
      Src: /src/postgres/src/backend/foreign/foreign.c:654,1
    - Dst: getClosestMatch
      Src: /src/postgres/src/backend/foreign/foreign.c:658,1
    - Dst: ereport
      Src: /src/postgres/src/backend/foreign/foreign.c:659,1
    - Dst: errcode
      Src: /src/postgres/src/backend/foreign/foreign.c:660,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/foreign/foreign.c:661,1
    - Dst: errhint
      Src: /src/postgres/src/backend/foreign/foreign.c:663,1
    - Dst: errhint
      Src: /src/postgres/src/backend/foreign/foreign.c:665,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/foreign/foreign.c:667,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 633
    functionDepth: 1
    functionLinenumber: 633
    functionLinenumberEnd: 669
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 330
    functionsReached:
    - errmsg
    - errcode
    - is_conninfo_option
    - getClosestMatch
    - initClosestMatch
    - updateClosestMatch
    - PG_RETURN_BOOL
    - ereport
    - errhint
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(cell, options_list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetSysCacheOid1
      Src: /src/postgres/src/backend/foreign/foreign.c:686,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:688,1
    - Dst: OidIsValid
      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
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - fdwname
    - missing_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 681
    functionDepth: 2
    functionLinenumber: 681
    functionLinenumberEnd: 695
    functionName: get_foreign_data_wrapper_oid
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 1
    functionsReached:
    - errmsg
    - ereport
    - CStringGetDatum
    - OidIsValid
    - errcode
    - GetSysCacheOid1
    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:709,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/foreign/foreign.c:710,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/foreign/foreign.c:711,1
    - Dst: ereport
      Src: /src/postgres/src/backend/foreign/foreign.c:712,1
    - Dst: errcode
      Src: /src/postgres/src/backend/foreign/foreign.c:713,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/foreign/foreign.c:714,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - servername
    - missing_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 704
    functionDepth: 2
    functionLinenumber: 704
    functionLinenumberEnd: 716
    functionName: get_foreign_server_oid
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 1
    functionsReached:
    - errmsg
    - ereport
    - CStringGetDatum
    - OidIsValid
    - errcode
    - GetSysCacheOid1
    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:746,1
    - Dst: IS_JOIN_REL
      Src: /src/postgres/src/backend/foreign/foreign.c:746,1
    - Dst: foreach
      Src: /src/postgres/src/backend/foreign/foreign.c:748,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/foreign/foreign.c:750,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/foreign/foreign.c:761,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/foreign/foreign.c:763,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/foreign/foreign.c:770,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/foreign/foreign.c:772,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/foreign/foreign.c:779,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/foreign/foreign.c:781,1
    - Dst: IsA
      Src: /src/postgres/src/backend/foreign/foreign.c:806,1
    - Dst: IS_JOIN_REL
      Src: /src/postgres/src/backend/foreign/foreign.c:811,1
    - Dst: pathkeys_count_contained_in
      Src: /src/postgres/src/backend/foreign/foreign.c:824,1
    - Dst: IsA
      Src: /src/postgres/src/backend/foreign/foreign.c:832,1
    - Dst: IS_JOIN_REL
      Src: /src/postgres/src/backend/foreign/foreign.c:837,1
    - Dst: pathkeys_contained_in
      Src: /src/postgres/src/backend/foreign/foreign.c:850,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 49
    argCount: 1
    argNames:
    - joinrel
    argTypes:
    - RelOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 741
    functionDepth: 3
    functionLinenumber: 741
    functionLinenumberEnd: 860
    functionName: GetExistingLocalJoinPath
    functionSourceFile: /src/postgres/src/backend/foreign/foreign.c
    functionUses: 0
    functionsReached:
    - Assert
    - IS_JOIN_REL
    - pathkeys_count_contained_in
    - IsA
    - foreach
    - pathkeys_contained_in
    - memcpy
    - makeNode
    - lfirst
    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:
    - COPY_LOCATION_FIELD
    - makeNode
    - COPY_SCALAR_FIELD
    - datumCopy
    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:
    - nodeTag
    - COPY_STRING_FIELD
    - COPY_LOCATION_FIELD
    - COPY_SCALAR_FIELD
    - elog
    - makeNode
    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:
    - COPY_STRING_FIELD
    - ExtensibleNodeMethods*::nodeCopy
    - GetExtensibleNodeMethods
    - newNode
    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:
    - check_stack_depth
    - nodeTag
    - list_copy
    - elog
    - list_copy_deep
    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
    - datumIsEqual
    - COMPARE_SCALAR_FIELD
    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:
    - ExtensibleNodeMethods*::nodeEqual
    - GetExtensibleNodeMethods
    - COMPARE_STRING_FIELD
    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:
    - COMPARE_LOCATION_FIELD
    - equal
    - 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:
    - Assert
    - equal
    - lfirst_int
    - COMPARE_SCALAR_FIELD
    - elog
    - forboth
    - lfirst_oid
    - lfirst_xid
    - lfirst
    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: 121
    functionsReached:
    - nodeTag
    - elog
    - _equalList
    - check_stack_depth
    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:
    - makeString
    - makeNode
    - list_make1
    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: 17
    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
    - makeVar
    - exprCollation
    - exprTypmod
    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:
    - errmsg
    - exprType
    - makeVar
    - get_rel_name
    - Assert
    - exprCollation
    - linitial
    - ereport
    - list_length
    - OidIsValid
    - get_rel_type_id
    - errcode
    - type_is_rowtype
    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: 31
    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:
    - memcpy
    - makeNode
    - IsA
    - Assert
    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: 9
    functionsReached:
    - makeNode
    - PG_DETOAST_DATUM
    - PointerGetDatum
    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: 5
    functionsReached:
    - makeNode
    - pstrdup
    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: 2
    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:
    - makeNode
    - list_make1
    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:
    - makeString
    - makeTypeNameFromNameList
    - list_make1
    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
    - makeNode
    - pstrdup
    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_make2
    - makeNode
    - list_make1
    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: 1
    functionsReached:
    - makeNode
    - list_make1
    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: 3
    functionsReached:
    - make_andclause
    - linitial
    - makeBoolConst
    - list_length
    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: 6
    functionsReached:
    - DatumGetBool
    - IsA
    - is_andclause
    - list_make1
    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:
    - makeNode
    - Assert
    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:
    - makeNode
    - castNode
    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
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - expr
    - format
    - item_type
    - unique_keys
    - location
    argTypes:
    - Node*
    - JsonFormat*
    - JsonValueType
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 998
      start: 985
    functionDepth: 1
    functionLinenumber: 985
    functionLinenumberEnd: 998
    functionName: makeJsonIsPredicate
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 0
    functionsReached:
    - makeNode
    linkageType: ''
    returnType: Node
    signature: "Node *\nmakeJsonIsPredicate(Node *expr, JsonFormat *format, JsonValueType
      item_type,\n\t\t\t\t\tbool unique_keys, int location)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/makefuncs.c:1008,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/makefuncs.c:1010,1
    - Dst: makeStringConst
      Src: /src/postgres/src/backend/nodes/makefuncs.c:1011,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/nodes/makefuncs.c:1013,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: 1019
      start: 1004
    functionDepth: 2
    functionLinenumber: 1004
    functionLinenumberEnd: 1019
    functionName: makeJsonTablePathSpec
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 0
    functionsReached:
    - makeNode
    - makeStringConst
    - Assert
    - pstrdup
    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:1028,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/makefuncs.c:1030,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/makefuncs.c:1030,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - pathvalue
    - pathname
    argTypes:
    - Const*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1035
      start: 1025
    functionDepth: 1
    functionLinenumber: 1025
    functionLinenumberEnd: 1035
    functionName: makeJsonTablePath
    functionSourceFile: /src/postgres/src/backend/nodes/makefuncs.c
    functionUses: 0
    functionsReached:
    - makeNode
    - IsA
    - Assert
    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
    - isdigit
    - appendStringInfoString
    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:
    - double_to_shortest_decimal_buf
    - appendStringInfoString
    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: 331
    functionsReached:
    - appendStringInfo
    - appendStringInfoChar
    - lnext
    - IsA
    - lfirst_int
    - elog
    - outNode
    - lfirst_oid
    - lfirst_xid
    - lfirst
    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:
    - appendStringInfoChar
    - bms_next_member
    - appendStringInfo
    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:353,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/outfuncs.c:358,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/outfuncs.c:360,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/nodes/outfuncs.c:361,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/nodes/outfuncs.c:365,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/nodes/outfuncs.c:366,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:367,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/outfuncs.c:370,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/outfuncs.c:372,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/nodes/outfuncs.c:373,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 4
    argNames:
    - str
    - value
    - typlen
    - typbyval
    argTypes:
    - StringInfo
    - Datum
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 346
    functionDepth: 2
    functionLinenumber: 346
    functionLinenumberEnd: 376
    functionName: outDatum
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - datumGetSize
    - appendStringInfo
    - appendStringInfoChar
    - appendStringInfoString
    - PointerIsValid
    - 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:390,1
    - Dst: WRITE_OID_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:392,1
    - Dst: WRITE_INT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:393,1
    - Dst: WRITE_OID_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:394,1
    - Dst: WRITE_INT_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_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:397,1
    - Dst: WRITE_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:398,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:400,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:402,1
    - Dst: outDatum
      Src: /src/postgres/src/backend/nodes/outfuncs.c:404,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - str
    - node
    argTypes:
    - StringInfo
    - Const*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 387
    functionDepth: 3
    functionLinenumber: 387
    functionLinenumberEnd: 405
    functionName: _outConst
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - WRITE_BOOL_FIELD
    - WRITE_OID_FIELD
    - appendStringInfoString
    - WRITE_INT_FIELD
    - outDatum
    - WRITE_LOCATION_FIELD
    - WRITE_NODE_TYPE
    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:412,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:427,1
    - Dst: outToken
      Src: /src/postgres/src/backend/nodes/outfuncs.c:428,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:430,1
    - Dst: WRITE_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:431,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - str
    - node
    argTypes:
    - StringInfo
    - BoolExpr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 407
    functionDepth: 3
    functionLinenumber: 407
    functionLinenumberEnd: 432
    functionName: _outBoolExpr
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - appendStringInfoString
    - outToken
    - WRITE_LOCATION_FIELD
    - WRITE_NODE_TYPE
    - WRITE_NODE_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:439,1
    - Dst: WRITE_UINT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:441,1
    - Dst: WRITE_UINT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:442,1
    - Dst: WRITE_INT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:443,1
    - Dst: WRITE_ATTRNUMBER_ARRAY
      Src: /src/postgres/src/backend/nodes/outfuncs.c:444,1
    - Dst: WRITE_ATTRNUMBER_ARRAY
      Src: /src/postgres/src/backend/nodes/outfuncs.c:445,1
    - Dst: WRITE_OID_ARRAY
      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: WRITE_INT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:448,1
    - Dst: WRITE_INT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:449,1
    - Dst: WRITE_INT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:450,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: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:455,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/outfuncs.c:457,1
    - Dst: list_length
      Src: /src/postgres/src/backend/nodes/outfuncs.c:457,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - str
    - node
    argTypes:
    - StringInfo
    - ForeignKeyOptInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 434
    functionDepth: 2
    functionLinenumber: 434
    functionLinenumberEnd: 458
    functionName: _outForeignKeyOptInfo
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - appendStringInfo
    - appendStringInfoString
    - WRITE_ATTRNUMBER_ARRAY
    - WRITE_INT_FIELD
    - WRITE_OID_ARRAY
    - list_length
    - WRITE_NODE_TYPE
    - WRITE_UINT_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:470,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:472,1
    - Dst: WRITE_OID_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:473,1
    - Dst: WRITE_INT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:474,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:475,1
    - Dst: WRITE_NODE_ARRAY
      Src: /src/postgres/src/backend/nodes/outfuncs.c:476,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:477,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:479,1
    - Dst: WRITE_BITMAPSET_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:480,1
    - Dst: WRITE_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:481,1
    - Dst: WRITE_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:482,1
    - Dst: WRITE_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:483,1
    - Dst: WRITE_UINT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:484,1
    - Dst: WRITE_UINT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:485,1
    - Dst: WRITE_UINT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:486,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 2
    argNames:
    - str
    - node
    argTypes:
    - StringInfo
    - EquivalenceClass*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 460
    functionDepth: 1
    functionLinenumber: 460
    functionLinenumberEnd: 487
    functionName: _outEquivalenceClass
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - WRITE_BOOL_FIELD
    - WRITE_OID_FIELD
    - WRITE_NODE_ARRAY
    - WRITE_INT_FIELD
    - WRITE_BITMAPSET_FIELD
    - WRITE_NODE_TYPE
    - WRITE_UINT_FIELD
    - WRITE_NODE_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:494,1
    - Dst: WRITE_NODE_TYPE
      Src: /src/postgres/src/backend/nodes/outfuncs.c:496,1
    - Dst: WRITE_STRING_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:498,1
    - Dst: ExtensibleNodeMethods*::nodeOut
      Src: /src/postgres/src/backend/nodes/outfuncs.c:501,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - str
    - node
    argTypes:
    - StringInfo
    - ExtensibleNode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 489
    functionDepth: 1
    functionLinenumber: 489
    functionLinenumberEnd: 502
    functionName: _outExtensibleNode
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - WRITE_NODE_TYPE
    - GetExtensibleNodeMethods
    - WRITE_STRING_FIELD
    - ExtensibleNodeMethods*::nodeOut
    linkageType: ''
    returnType: void
    signature: void _outExtensibleNode(StringInfo str, const ExtensibleNode *node)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: WRITE_NODE_TYPE
      Src: /src/postgres/src/backend/nodes/outfuncs.c:507,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:509,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:510,1
    - Dst: WRITE_ENUM_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:511,1
    - Dst: WRITE_OID_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:516,1
    - Dst: WRITE_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:517,1
    - Dst: WRITE_CHAR_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:518,1
    - Dst: WRITE_INT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:519,1
    - Dst: WRITE_UINT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:520,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:521,1
    - Dst: WRITE_NODE_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_OID_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:527,1
    - Dst: WRITE_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:528,1
    - Dst: WRITE_CHAR_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:529,1
    - Dst: WRITE_INT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:530,1
    - Dst: WRITE_UINT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:531,1
    - Dst: WRITE_ENUM_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:534,1
    - Dst: WRITE_INT_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:537,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:538,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:539,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:542,1
    - Dst: WRITE_BOOL_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:549,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:550,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:551,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:552,1
    - Dst: WRITE_STRING_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:555,1
    - Dst: WRITE_UINT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:556,1
    - Dst: WRITE_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:557,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:558,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:559,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:560,1
    - Dst: WRITE_STRING_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:563,1
    - Dst: WRITE_FLOAT_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:564,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:565,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:566,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:567,1
    - Dst: WRITE_OID_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:569,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:575,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/outfuncs.c:578,1
    - Dst: WRITE_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:582,1
    - Dst: WRITE_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:583,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:584,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 72
    argCount: 2
    argNames:
    - str
    - node
    argTypes:
    - StringInfo
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 504
    functionDepth: 1
    functionLinenumber: 504
    functionLinenumberEnd: 585
    functionName: _outRangeTblEntry
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - WRITE_CHAR_FIELD
    - WRITE_BOOL_FIELD
    - WRITE_OID_FIELD
    - WRITE_STRING_FIELD
    - WRITE_ENUM_FIELD
    - WRITE_FLOAT_FIELD
    - WRITE_INT_FIELD
    - elog
    - WRITE_NODE_TYPE
    - WRITE_UINT_FIELD
    - WRITE_NODE_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:590,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:595,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:598,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:599,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:602,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:603,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:606,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:607,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:610,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:611,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:614,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:615,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:618,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:619,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:622,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:623,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:626,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:627,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:630,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:631,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:634,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:635,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:638,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:639,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:642,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:643,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:646,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:647,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/outfuncs.c:650,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:654,1
    - Dst: WRITE_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:655,1
    - Dst: WRITE_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:656,1
    - Dst: WRITE_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:657,1
    - Dst: WRITE_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:658,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 67
    argCount: 2
    argNames:
    - str
    - node
    argTypes:
    - StringInfo
    - A_Expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 587
    functionDepth: 2
    functionLinenumber: 587
    functionLinenumberEnd: 659
    functionName: _outA_Expr
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - appendStringInfoString
    - elog
    - WRITE_LOCATION_FIELD
    - WRITE_NODE_TYPE
    - WRITE_NODE_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:664,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - str
    - node
    argTypes:
    - StringInfo
    - Integer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 661
    functionDepth: 2
    functionLinenumber: 661
    functionLinenumberEnd: 665
    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:674,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - str
    - node
    argTypes:
    - StringInfo
    - Float*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 667
    functionDepth: 2
    functionLinenumber: 667
    functionLinenumberEnd: 675
    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:680,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - str
    - node
    argTypes:
    - StringInfo
    - Boolean*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 677
    functionDepth: 2
    functionLinenumber: 677
    functionLinenumberEnd: 681
    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:691,1
    - Dst: outToken
      Src: /src/postgres/src/backend/nodes/outfuncs.c:693,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/nodes/outfuncs.c:694,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - str
    - node
    argTypes:
    - StringInfo
    - String*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 683
    functionDepth: 3
    functionLinenumber: 683
    functionLinenumberEnd: 695
    functionName: _outString
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - appendStringInfoChar
    - outToken
    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:705,1
    - Dst: outToken
      Src: /src/postgres/src/backend/nodes/outfuncs.c:706,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - str
    - node
    argTypes:
    - StringInfo
    - BitString*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 697
    functionDepth: 3
    functionLinenumber: 697
    functionLinenumberEnd: 707
    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:712,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:715,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:718,1
    - Dst: outNode
      Src: /src/postgres/src/backend/nodes/outfuncs.c:719,1
    - Dst: WRITE_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/outfuncs.c:721,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - str
    - node
    argTypes:
    - StringInfo
    - A_Const*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 709
    functionDepth: 2
    functionLinenumber: 709
    functionLinenumberEnd: 722
    functionName: _outA_Const
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - WRITE_LOCATION_FIELD
    - WRITE_NODE_TYPE
    - appendStringInfoString
    - outNode
    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:733,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:736,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/outfuncs.c:737,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/outfuncs.c:737,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/outfuncs.c:737,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/outfuncs.c:738,1
    - Dst: _outList
      Src: /src/postgres/src/backend/nodes/outfuncs.c:739,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/outfuncs.c:741,1
    - Dst: _outInteger
      Src: /src/postgres/src/backend/nodes/outfuncs.c:742,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/outfuncs.c:743,1
    - Dst: _outFloat
      Src: /src/postgres/src/backend/nodes/outfuncs.c:744,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/outfuncs.c:745,1
    - Dst: _outBoolean
      Src: /src/postgres/src/backend/nodes/outfuncs.c:746,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/outfuncs.c:747,1
    - Dst: _outString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:748,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/outfuncs.c:749,1
    - Dst: _outBitString
      Src: /src/postgres/src/backend/nodes/outfuncs.c:750,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/outfuncs.c:751,1
    - Dst: outBitmapset
      Src: /src/postgres/src/backend/nodes/outfuncs.c:752,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/nodes/outfuncs.c:755,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/outfuncs.c:756,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/outfuncs.c:766,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/outfuncs.c:767,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/nodes/outfuncs.c:770,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 26
    argCount: 2
    argNames:
    - str
    - obj
    argTypes:
    - StringInfo
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 729
    functionDepth: 4
    functionLinenumber: 729
    functionLinenumberEnd: 772
    functionName: outNode
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 2
    functionsReached:
    - check_stack_depth
    - outBitmapset
    - _outString
    - nodeTag
    - appendStringInfoChar
    - appendStringInfoString
    - _outBoolean
    - IsA
    - _outBitString
    - elog
    - _outList
    - _outFloat
    - _outInteger
    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:793,1
    - Dst: outNode
      Src: /src/postgres/src/backend/nodes/outfuncs.c:794,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - obj
    - write_loc_fields
    argTypes:
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 783
    functionDepth: 5
    functionLinenumber: 783
    functionLinenumberEnd: 799
    functionName: nodeToStringInternal
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    functionsReached:
    - initStringInfo
    - outNode
    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:807,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - obj
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 808
      start: 804
    functionDepth: 6
    functionLinenumber: 804
    functionLinenumberEnd: 808
    functionName: nodeToString
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 0
    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: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: 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:827,1
    - Dst: outBitmapset
      Src: /src/postgres/src/backend/nodes/outfuncs.c:828,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - bms
    argTypes:
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 821
    functionDepth: 3
    functionLinenumber: 821
    functionLinenumberEnd: 830
    functionName: bmsToString
    functionSourceFile: /src/postgres/src/backend/nodes/outfuncs.c
    functionUses: 2
    functionsReached:
    - outBitmapset
    - initStringInfo
    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:
    - Max
    - Assert
    - palloc
    - pg_nextpower2_32
    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:
    - pfree
    - Assert
    - VALGRIND_MAKE_MEM_NOACCESS
    - memcpy
    - wipe_mem
    - GetMemoryChunkContext
    - Max
    - repalloc
    - MemoryContextAlloc
    - 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:
    - new_list
    - check_list_invariants
    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:
    - new_list
    - check_list_invariants
    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:
    - new_list
    - check_list_invariants
    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:
    - new_list
    - check_list_invariants
    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:
    - new_list
    - check_list_invariants
    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: 352
    functionsReached:
    - Assert
    - new_list
    - llast
    - IsPointerList
    - check_list_invariants
    - new_tail_cell
    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: 29
    functionsReached:
    - Assert
    - IsIntegerList
    - new_list
    - check_list_invariants
    - new_tail_cell
    - llast_int
    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: 27
    functionsReached:
    - IsOidList
    - llast_oid
    - Assert
    - new_list
    - check_list_invariants
    - new_tail_cell
    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:
    - Assert
    - IsXidList
    - new_list
    - check_list_invariants
    - new_tail_cell
    - llast_xid
    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
    - IsPointerList
    - list_make1
    - check_list_invariants
    - insert_new_cell
    - lfirst
    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:
    - Assert
    - list_make1_int
    - IsIntegerList
    - check_list_invariants
    - insert_new_cell
    - lfirst_int
    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:
    - IsOidList
    - Assert
    - list_make1_oid
    - check_list_invariants
    - insert_new_cell
    - lfirst_oid
    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
    - new_head_cell
    - linitial
    - new_list
    - IsPointerList
    - check_list_invariants
    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
    - new_head_cell
    - IsIntegerList
    - new_list
    - linitial_int
    - check_list_invariants
    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:
    - IsOidList
    - Assert
    - new_head_cell
    - new_list
    - check_list_invariants
    - linitial_oid
    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: 63
    functionsReached:
    - Assert
    - enlarge_list
    - list_copy
    - check_list_invariants
    - memcpy
    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:
    - Assert
    - list_copy
    - new_list
    - check_list_invariants
    - memcpy
    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: 44
    functionsReached:
    - Assert
    - equal
    - IsPointerList
    - check_list_invariants
    - lfirst
    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: 331
    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: 18
    functionsReached:
    - lfirst
    - Assert
    - IsPointerList
    - check_list_invariants
    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: 331
    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
    - lfirst_int
    - check_list_invariants
    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: 331
    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: 8
    functionsReached:
    - IsOidList
    - Assert
    - 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: 331
    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:
    - IsXidList
    - Assert
    - 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: 331
    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:
    - pfree
    - Assert
    - VALGRIND_MAKE_MEM_NOACCESS
    - memcpy
    - wipe_mem
    - GetMemoryChunkContext
    - memmove
    - check_list_invariants
    - MemoryContextAlloc
    - list_free
    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: 2
    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:
    - Assert
    - equal
    - IsPointerList
    - list_delete_cell
    - check_list_invariants
    - lfirst
    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: 331
    functionsReached:
    - list_delete_cell
    - equal
    - lfirst
    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:
    - Assert
    - IsPointerList
    - list_delete_cell
    - check_list_invariants
    - lfirst
    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: 331
    functionsReached:
    - list_delete_cell
    - lfirst
    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:
    - Assert
    - IsIntegerList
    - list_delete_cell
    - check_list_invariants
    - lfirst_int
    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: 331
    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:
    - IsOidList
    - Assert
    - list_delete_cell
    - 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: 331
    functionsReached:
    - list_delete_cell
    - lfirst_oid
    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:
    - list_delete_nth_cell
    - check_list_invariants
    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: 2
    functionsReached:
    - list_truncate
    - check_list_invariants
    - list_free
    - list_length
    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:
    - pfree
    - VALGRIND_MAKE_MEM_NOACCESS
    - memcpy
    - wipe_mem
    - GetMemoryChunkContext
    - memmove
    - list_length
    - check_list_invariants
    - MemoryContextAlloc
    - list_free
    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_copy
    - IsPointerList
    - lappend
    - check_list_invariants
    - list_member
    - lfirst
    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: 331
    functionsReached:
    - list_member
    - lappend
    - lfirst
    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
    - list_copy
    - IsPointerList
    - lappend
    - check_list_invariants
    - list_member_ptr
    - lfirst
    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: 331
    functionsReached:
    - list_member_ptr
    - lfirst
    - 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:
    - Assert
    - list_copy
    - IsIntegerList
    - lappend_int
    - list_member_int
    - check_list_invariants
    - lfirst_int
    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: 331
    functionsReached:
    - lappend_int
    - list_member_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:
    - IsOidList
    - Assert
    - list_copy
    - lappend_oid
    - list_member_oid
    - check_list_invariants
    - lfirst_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: 331
    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
    - IsPointerList
    - lappend
    - check_list_invariants
    - list_member
    - lfirst
    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: 331
    functionsReached:
    - list_member
    - lappend
    - lfirst
    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:
    - Assert
    - lappend_int
    - IsIntegerList
    - list_member_int
    - check_list_invariants
    - lfirst_int
    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: 331
    functionsReached:
    - lappend_int
    - list_member_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_copy
    - IsPointerList
    - lappend
    - check_list_invariants
    - list_member
    - lfirst
    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: 331
    functionsReached:
    - list_member
    - lappend
    - lfirst
    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
    - list_copy
    - IsPointerList
    - lappend
    - check_list_invariants
    - list_member_ptr
    - lfirst
    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: 331
    functionsReached:
    - list_member_ptr
    - lfirst
    - 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:
    - Assert
    - list_copy
    - IsIntegerList
    - lappend_int
    - list_member_int
    - check_list_invariants
    - lfirst_int
    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: 331
    functionsReached:
    - lappend_int
    - list_member_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:
    - IsOidList
    - Assert
    - list_copy
    - lappend_oid
    - list_member_oid
    - check_list_invariants
    - lfirst_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: 331
    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: 2
    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:
    - list_member_ptr
    - lappend
    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:
    - lappend_int
    - list_member_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
    - IsPointerList
    - lappend
    - check_list_invariants
    - list_member
    - lfirst
    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: 331
    functionsReached:
    - list_member
    - lappend
    - lfirst
    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
    - IsPointerList
    - lappend
    - check_list_invariants
    - list_member_ptr
    - lfirst
    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: 331
    functionsReached:
    - list_member_ptr
    - lfirst
    - 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:
    - Assert
    - lappend_int
    - IsIntegerList
    - list_member_int
    - check_list_invariants
    - lfirst_int
    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: 331
    functionsReached:
    - lappend_int
    - list_member_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:
    - IsOidList
    - Assert
    - lappend_oid
    - list_member_oid
    - check_list_invariants
    - lfirst_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: 331
    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:
    - IsOidList
    - Assert
    - 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:
    - lfirst
    - pfree
    - check_list_invariants
    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: 65
    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: 7
    functionsReached:
    - Assert
    - list_free_private
    - IsPointerList
    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:
    - memcpy
    - new_list
    - check_list_invariants
    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:
    - Min
    - new_list
    - check_list_invariants
    - memcpy
    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:
    - memcpy
    - new_list
    - check_list_invariants
    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
    - copyObjectImpl
    - new_list
    - IsA
    - check_list_invariants
    - lfirst
    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:
    - qsort
    - check_list_invariants
    - 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:
    - lfirst_oid
    - pg_cmp_u32
    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: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    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: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    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: 52
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 52
    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: 71
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 71
    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: 73
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 73
    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:86,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - a
    argTypes:
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 94
    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:111,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - a
    argTypes:
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 115
    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:127,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:127,1
    - Dst: BITMAPSET_SIZE
      Src: /src/postgres/src/backend/nodes/bitmapset.c:132,1
    - Dst: palloc
      Src: /src/postgres/src/backend/nodes/bitmapset.c:133,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/bitmapset.c:134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - a
    argTypes:
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 121
    functionDepth: 2
    functionLinenumber: 121
    functionLinenumberEnd: 136
    functionName: bms_copy
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 34
    functionsReached:
    - Assert
    - BITMAPSET_SIZE
    - bms_is_valid_set
    - memcpy
    - palloc
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      bms_copy(const Bitmapset *a)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:146,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:146,1
    - 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
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 172
    functionName: bms_equal
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 47
    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:187,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:187,1
    - 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
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 210
    functionName: bms_compare
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 2
    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:223,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:224,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:225,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/nodes/bitmapset.c:226,1
    - Dst: BITMAPSET_SIZE
      Src: /src/postgres/src/backend/nodes/bitmapset.c:226,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - x
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 231
    functionName: bms_make_singleton
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 25
    functionsReached:
    - BITNUM
    - WORDNUM
    - BITMAPSET_SIZE
    - palloc0
    - elog
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      bms_make_singleton(int x)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/bitmapset.c:242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - a
    argTypes:
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 243
    functionName: bms_free
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 33
    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:258,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:258,1
    - 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: bms_copy
      Src: /src/postgres/src/backend/nodes/bitmapset.c:263,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/nodes/bitmapset.c:265,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/nodes/bitmapset.c:269,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/nodes/bitmapset.c:274,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 250
    functionDepth: 3
    functionLinenumber: 250
    functionLinenumberEnd: 285
    functionName: bms_union
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 40
    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:300,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:300,1
    - 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: bms_copy
      Src: /src/postgres/src/backend/nodes/bitmapset.c:310,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/nodes/bitmapset.c:315,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/bitmapset.c:332,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 291
    functionDepth: 3
    functionLinenumber: 291
    functionLinenumberEnd: 339
    functionName: bms_intersect
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 11
    functionsReached:
    - pfree
    - Assert
    - 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:351,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:351,1
    - 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: bms_copy
      Src: /src/postgres/src/backend/nodes/bitmapset.c:358,1
    - Dst: bms_nonempty_difference
      Src: /src/postgres/src/backend/nodes/bitmapset.c:365,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/nodes/bitmapset.c:369,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:402,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 345
    functionDepth: 3
    functionLinenumber: 345
    functionLinenumberEnd: 406
    functionName: bms_difference
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 14
    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: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:416,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:416,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:417,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:417,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 411
    functionDepth: 2
    functionLinenumber: 411
    functionLinenumberEnd: 437
    functionName: bms_is_subset
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 81
    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:451,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:451,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:452,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:452,1
    - Dst: Min
      Src: /src/postgres/src/backend/nodes/bitmapset.c:466,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 444
    functionDepth: 2
    functionLinenumber: 444
    functionLinenumberEnd: 504
    functionName: bms_subset_compare
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 5
    functionsReached:
    - Min
    - Assert
    - 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:515,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:515,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/bitmapset.c:519,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:523,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:524,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - x
    - a
    argTypes:
    - int
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 509
    functionDepth: 2
    functionLinenumber: 509
    functionLinenumberEnd: 530
    functionName: bms_is_member
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 92
    functionsReached:
    - Assert
    - BITNUM
    - WORDNUM
    - bms_is_valid_set
    - elog
    linkageType: ''
    returnType: bool
    signature: bool bms_is_member(int x, const Bitmapset *a)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:547,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:547,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/nodes/bitmapset.c:550,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:553,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:554,1
    - Dst: bmw_popcount
      Src: /src/postgres/src/backend/nodes/bitmapset.c:563,1
    - Dst: bmw_popcount
      Src: /src/postgres/src/backend/nodes/bitmapset.c:573,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - a
    - x
    argTypes:
    - Bitmapset*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 538
    functionDepth: 3
    functionLinenumber: 538
    functionLinenumberEnd: 576
    functionName: bms_member_index
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 4
    functionsReached:
    - Assert
    - BITNUM
    - WORDNUM
    - bms_is_valid_set
    - bmw_popcount
    - bms_is_member
    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:587,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:587,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:588,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:588,1
    - Dst: Min
      Src: /src/postgres/src/backend/nodes/bitmapset.c:594,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 581
    functionDepth: 2
    functionLinenumber: 581
    functionLinenumberEnd: 602
    functionName: bms_overlap
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 59
    functionsReached:
    - Min
    - Assert
    - 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:614,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:614,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/bitmapset.c:621,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/bitmapset.c:624,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:625,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:626,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 607
    functionDepth: 2
    functionLinenumber: 607
    functionLinenumberEnd: 633
    functionName: bms_overlap_list
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 2
    functionsReached:
    - Assert
    - BITNUM
    - WORDNUM
    - bms_is_valid_set
    - elog
    - lfirst_int
    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:621,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/bitmapset.c:624,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:625,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:626,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 619
    functionDepth: 1
    functionLinenumber: 619
    functionLinenumberEnd: 630
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 331
    functionsReached:
    - BITNUM
    - elog
    - lfirst_int
    - WORDNUM
    linkageType: ''
    returnType: void
    signature: void foreach(lc, b)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:645,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:645,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:646,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:646,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 640
    functionDepth: 2
    functionLinenumber: 640
    functionLinenumberEnd: 664
    functionName: bms_nonempty_difference
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 6
    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:678,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:678,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/bitmapset.c:681,1
    - Dst: HAS_MULTIPLE_ONES
      Src: /src/postgres/src/backend/nodes/bitmapset.c:691,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/bitmapset.c:692,1
    - Dst: bmw_rightmost_one_pos
      Src: /src/postgres/src/backend/nodes/bitmapset.c:694,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:699,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - a
    argTypes:
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 671
    functionDepth: 2
    functionLinenumber: 671
    functionLinenumberEnd: 701
    functionName: bms_singleton_member
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 5
    functionsReached:
    - Assert
    - bms_is_valid_set
    - bmw_rightmost_one_pos
    - elog
    - HAS_MULTIPLE_ONES
    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:721,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:721,1
    - Dst: HAS_MULTIPLE_ONES
      Src: /src/postgres/src/backend/nodes/bitmapset.c:734,1
    - Dst: bmw_rightmost_one_pos
      Src: /src/postgres/src/backend/nodes/bitmapset.c:737,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:742,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - a
    - member
    argTypes:
    - Bitmapset*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 714
    functionDepth: 2
    functionLinenumber: 714
    functionLinenumberEnd: 745
    functionName: bms_get_singleton_member
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 12
    functionsReached:
    - bmw_rightmost_one_pos
    - Assert
    - HAS_MULTIPLE_ONES
    - bms_is_valid_set
    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:757,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:757,1
    - Dst: bmw_popcount
      Src: /src/postgres/src/backend/nodes/bitmapset.c:770,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - a
    argTypes:
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 750
    functionDepth: 2
    functionLinenumber: 750
    functionLinenumberEnd: 773
    functionName: bms_num_members
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 23
    functionsReached:
    - Assert
    - bmw_popcount
    - bms_is_valid_set
    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:787,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:787,1
    - Dst: HAS_MULTIPLE_ONES
      Src: /src/postgres/src/backend/nodes/bitmapset.c:800,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - a
    argTypes:
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 780
    functionDepth: 2
    functionLinenumber: 780
    functionLinenumberEnd: 806
    functionName: bms_membership
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 27
    functionsReached:
    - Assert
    - HAS_MULTIPLE_ONES
    - bms_is_valid_set
    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:820,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:820,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/bitmapset.c:823,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/nodes/bitmapset.c:825,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:827,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:828,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/nodes/bitmapset.c:836,1
    - Dst: BITMAPSET_SIZE
      Src: /src/postgres/src/backend/nodes/bitmapset.c:836,1
    - Dst: bms_copy_and_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:854,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - a
    - x
    argTypes:
    - Bitmapset*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 814
    functionDepth: 2
    functionLinenumber: 814
    functionLinenumberEnd: 858
    functionName: bms_add_member
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 86
    functionsReached:
    - Assert
    - BITNUM
    - WORDNUM
    - bms_make_singleton
    - BITMAPSET_SIZE
    - bms_is_valid_set
    - elog
    - repalloc
    - bms_copy_and_free
    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:873,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:873,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/bitmapset.c:876,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:880,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:881,1
    - Dst: bms_copy_and_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:884,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/nodes/bitmapset.c:888,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/bitmapset.c:907,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - a
    - x
    argTypes:
    - Bitmapset*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 867
    functionDepth: 2
    functionLinenumber: 867
    functionLinenumberEnd: 911
    functionName: bms_del_member
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 19
    functionsReached:
    - pfree
    - Assert
    - BITNUM
    - WORDNUM
    - bms_is_valid_set
    - elog
    - unlikely
    - bms_copy_and_free
    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:924,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:924,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:925,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:925,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/nodes/bitmapset.c:929,1
    - Dst: bms_copy_and_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:933,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/nodes/bitmapset.c:941,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/bitmapset.c:957,1
    - Dst: bms_copy_and_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:960,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 916
    functionDepth: 3
    functionLinenumber: 916
    functionLinenumberEnd: 964
    functionName: bms_add_members
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 42
    functionsReached:
    - pfree
    - Assert
    - bms_copy
    - bms_is_valid_set
    - bms_copy_and_free
    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:976,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:976,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:977,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:977,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/nodes/bitmapset.c:980,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/bitmapset.c:983,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/nodes/bitmapset.c:988,1
    - Dst: BITMAPSET_SIZE
      Src: /src/postgres/src/backend/nodes/bitmapset.c:988,1
    - Dst: bms_copy_and_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1004,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1008
      start: 971
    functionDepth: 3
    functionLinenumber: 971
    functionLinenumberEnd: 1008
    functionName: bms_replace_members
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - bms_copy
    - BITMAPSET_SIZE
    - bms_is_valid_set
    - repalloc
    - bms_copy_and_free
    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:1027,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1027,1
    - Dst: bms_copy_and_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1033,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1040,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1041,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1045,1
    - Dst: BITMAPSET_SIZE
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1045,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1055,1
    - Dst: BITMAPSET_SIZE
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1055,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1065,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1067,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1068,1
    - Dst: bms_copy_and_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1098,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 3
    argNames:
    - a
    - lower
    - upper
    argTypes:
    - Bitmapset*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1102
      start: 1018
    functionDepth: 2
    functionLinenumber: 1018
    functionLinenumberEnd: 1102
    functionName: bms_add_range
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 1
    functionsReached:
    - Assert
    - BITNUM
    - WORDNUM
    - BITMAPSET_SIZE
    - bms_is_valid_set
    - palloc0
    - elog
    - repalloc
    - bms_copy_and_free
    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:1115,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1115,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1116,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1116,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1123,1
    - Dst: Min
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1128,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1142,1
    - Dst: bms_copy_and_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1150,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1154
      start: 1108
    functionDepth: 2
    functionLinenumber: 1108
    functionLinenumberEnd: 1154
    functionName: bms_int_members
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 6
    functionsReached:
    - pfree
    - Assert
    - Min
    - bms_is_valid_set
    - bms_copy_and_free
    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:1165,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1165,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1166,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1166,1
    - Dst: bms_copy_and_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1174,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1211,1
    - Dst: bms_copy_and_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1220,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1224
      start: 1160
    functionDepth: 2
    functionLinenumber: 1160
    functionLinenumberEnd: 1224
    functionName: bms_del_members
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 12
    functionsReached:
    - pfree
    - Assert
    - bms_copy_and_free
    - 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:1237,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1237,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1238,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1238,1
    - Dst: bms_copy_and_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1244,1
    - Dst: bms_copy_and_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1252,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1277,1
    - Dst: bms_copy_and_free
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1280,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1284
      start: 1229
    functionDepth: 2
    functionLinenumber: 1229
    functionLinenumberEnd: 1284
    functionName: bms_join
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 9
    functionsReached:
    - pfree
    - Assert
    - bms_copy_and_free
    - 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:1312,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1312,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1318,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1319,1
    - Dst: bmw_rightmost_one_pos
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1331,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - a
    - prevbit
    argTypes:
    - Bitmapset*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1339
      start: 1305
    functionDepth: 2
    functionLinenumber: 1305
    functionLinenumberEnd: 1339
    functionName: bms_next_member
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 43
    functionsReached:
    - Assert
    - BITNUM
    - WORDNUM
    - bms_is_valid_set
    - bmw_rightmost_one_pos
    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:1373,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1373,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1388,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1390,1
    - Dst: bmw_leftmost_one_pos
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1402,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - a
    - prevbit
    argTypes:
    - Bitmapset*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1410
      start: 1366
    functionDepth: 2
    functionLinenumber: 1366
    functionLinenumberEnd: 1410
    functionName: bms_prev_member
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 0
    functionsReached:
    - Assert
    - BITNUM
    - WORDNUM
    - bms_is_valid_set
    - bmw_leftmost_one_pos
    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:1418,1
    - Dst: bms_is_valid_set
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1418,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1422,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1422,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - a
    argTypes:
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1424
      start: 1415
    functionDepth: 2
    functionLinenumber: 1415
    functionLinenumberEnd: 1424
    functionName: bms_hash_value
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 0
    functionsReached:
    - DatumGetUInt32
    - hash_any
    - Assert
    - bms_is_valid_set
    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:1434,1
    - Dst: bms_hash_value
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key
    - keysize
    argTypes:
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1436
      start: 1431
    functionDepth: 3
    functionLinenumber: 1431
    functionLinenumberEnd: 1436
    functionName: bitmap_hash
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 0
    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:1444,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/nodes/bitmapset.c:1445,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - key1
    - key2
    - keysize
    argTypes:
    - void*
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1447
      start: 1441
    functionDepth: 3
    functionLinenumber: 1441
    functionLinenumberEnd: 1447
    functionName: bitmap_match
    functionSourceFile: /src/postgres/src/backend/nodes/bitmapset.c
    functionUses: 0
    functionsReached:
    - bms_equal
    - Assert
    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: 70
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 70
    functionName: WORDNUM
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 12
    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: 71
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 71
    functionName: BITNUM
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 12
    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: 238
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 238
    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: 239
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 239
    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:260,1
    - Dst: tbm_calculate_entries
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - maxbytes
    - dsa
    argTypes:
    - Size
    - dsa_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 274
    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:283,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:284,1
    - Dst: pagetable_create
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:286,1
    - Dst: pagetable_insert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:295,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:298,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:300,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - tbm
    argTypes:
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 305
    functionName: tbm_create_pagetable
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached:
    - pagetable_insert
    - Assert
    - pagetable_create
    - memcpy
    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:314,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:316,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:318,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:319,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - tbm
    argTypes:
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 320
    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:332,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:337,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:339,1
    - Dst: pg_atomic_sub_fetch_u32
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:340,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:341,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:343,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:345,1
    - Dst: pg_atomic_sub_fetch_u32
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:346,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:347,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:349,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:351,1
    - Dst: pg_atomic_sub_fetch_u32
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:352,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:353,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:356,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - dsa
    - dp
    argTypes:
    - dsa_area*
    - dsa_pointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 329
    functionDepth: 2
    functionLinenumber: 329
    functionLinenumberEnd: 357
    functionName: tbm_free_shared_area
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached:
    - DsaPointerIsValid
    - pg_atomic_sub_fetch_u32
    - dsa_get_address
    - 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*
    - ItemPointer
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 365
    functionDepth: 3
    functionLinenumber: 365
    functionLinenumberEnd: 423
    functionName: tbm_add_tuples
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 9
    functionsReached:
    - Assert
    - BITNUM
    - tbm_get_pageentry
    - ItemPointerGetOffsetNumber
    - WORDNUM
    - elog
    - tbm_lossify
    - tbm_page_is_lossy
    - ItemPointerGetBlockNumber
    linkageType: ''
    returnType: void
    signature: "void tbm_add_tuples(TIDBitmap *tbm, const ItemPointer 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_lossify
    - tbm_mark_page_lossy
    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:
    - tbm_union_page
    - Assert
    - pagetable_start_iterate
    - pagetable_iterate
    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:490,1
    - Dst: tbm_page_is_lossy
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:497,1
    - Dst: tbm_get_pageentry
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:504,1
    - Dst: tbm_lossify
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:520,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 2
    argNames:
    - a
    - bpage
    argTypes:
    - TIDBitmap*
    - PagetableEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 469
    functionDepth: 1
    functionLinenumber: 469
    functionLinenumberEnd: 521
    functionName: tbm_union_page
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 1
    functionsReached:
    - tbm_lossify
    - tbm_mark_page_lossy
    - tbm_page_is_lossy
    - tbm_get_pageentry
    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:531,1
    - Dst: tbm_intersect_page
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:538,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:541,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:544,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:553,1
    - Dst: pagetable_start_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:554,1
    - Dst: pagetable_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:555,1
    - Dst: tbm_intersect_page
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:557,1
    - Dst: pagetable_delete
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:565,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:566,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - TIDBitmap*
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 528
    functionDepth: 1
    functionLinenumber: 528
    functionLinenumberEnd: 570
    functionName: tbm_intersect
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached:
    - Assert
    - tbm_intersect_page
    - pagetable_iterate
    - pagetable_delete
    - elog
    - pagetable_start_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:604,1
    - Dst: tbm_find_pageentry
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:605,1
    - Dst: tbm_page_is_lossy
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:622,1
    - Dst: tbm_find_pageentry
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:637,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:641,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 39
    argCount: 3
    argNames:
    - a
    - apage
    - b
    argTypes:
    - TIDBitmap*
    - PagetableEntry*
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 577
    functionDepth: 1
    functionLinenumber: 577
    functionLinenumberEnd: 653
    functionName: tbm_intersect_page
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 1
    functionsReached:
    - Assert
    - tbm_find_pageentry
    - tbm_page_is_lossy
    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: 662
      start: 658
    functionDepth: 0
    functionLinenumber: 658
    functionLinenumberEnd: 662
    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:682,1
    - Dst: palloc
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:688,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:713,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:717,1
    - Dst: pagetable_start_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:721,1
    - Dst: pagetable_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:722,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:729,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:730,1
    - Dst: qsort
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:732,1
    - Dst: qsort
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:735,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 1
    argNames:
    - tbm
    argTypes:
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 742
      start: 677
    functionDepth: 1
    functionLinenumber: 677
    functionLinenumberEnd: 742
    functionName: tbm_begin_private_iterate
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 1
    functionsReached:
    - Assert
    - qsort
    - pagetable_iterate
    - pagetable_start_iterate
    - MemoryContextAlloc
    - palloc
    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:762,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:763,1
    - Dst: dsa_allocate0
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:769,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:770,1
    - Dst: dsa_allocate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:791,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:793,1
    - Dst: pg_atomic_init_u32
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:794,1
    - Dst: dsa_allocate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:798,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:800,1
    - Dst: pg_atomic_init_u32
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:801,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:813,1
    - Dst: pagetable_start_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:815,1
    - Dst: pagetable_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:816,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:825,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:826,1
    - Dst: dsa_allocate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:835,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:837,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:838,1
    - Dst: pg_atomic_init_u32
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:843,1
    - Dst: qsort_arg
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:845,1
    - Dst: qsort_arg
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:848,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:864,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:865,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:866,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: pg_atomic_add_fetch_u32
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:878,1
    - Dst: LWLockInitialize
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:881,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 64
    argCount: 1
    argNames:
    - tbm
    argTypes:
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 753
    functionDepth: 2
    functionLinenumber: 753
    functionLinenumberEnd: 891
    functionName: tbm_prepare_shared_iterate
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached:
    - LWLockInitialize
    - Assert
    - dsa_allocate
    - pagetable_iterate
    - pg_atomic_add_fetch_u32
    - dsa_allocate0
    - dsa_get_address
    - pg_atomic_init_u32
    - pagetable_start_iterate
    - memcpy
    - qsort_arg
    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: 932
      start: 900
    functionDepth: 0
    functionLinenumber: 900
    functionLinenumberEnd: 932
    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:944,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:945,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - chunk
    - schunkbitp
    argTypes:
    - PagetableEntry*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 937
    functionDepth: 0
    functionLinenumber: 937
    functionLinenumberEnd: 953
    functionName: tbm_advance_schunkbit
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached:
    - BITNUM
    - WORDNUM
    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:981,1
    - Dst: tbm_advance_schunkbit
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:992,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 2
    argNames:
    - iterator
    - tbmres
    argTypes:
    - TBMPrivateIterator*
    - TBMIterateResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 976
    functionDepth: 1
    functionLinenumber: 976
    functionLinenumberEnd: 1047
    functionName: tbm_private_iterate
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 1
    functionsReached:
    - tbm_advance_schunkbit
    - Assert
    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:1072,1
    - Dst: tbm_advance_schunkbit
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1083,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1115,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1130,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1135,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 2
    argNames:
    - iterator
    - tbmres
    argTypes:
    - TBMSharedIterator*
    - TBMIterateResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1140
      start: 1056
    functionDepth: 1
    functionLinenumber: 1056
    functionLinenumberEnd: 1140
    functionName: tbm_shared_iterate
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached:
    - tbm_advance_schunkbit
    - LWLockRelease
    - LWLockAcquire
    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:1152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - iterator
    argTypes:
    - TBMPrivateIterator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1153
      start: 1149
    functionDepth: 0
    functionLinenumber: 1149
    functionLinenumberEnd: 1153
    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:1164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - iterator
    argTypes:
    - TBMSharedIterator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1165
      start: 1161
    functionDepth: 0
    functionLinenumber: 1161
    functionLinenumberEnd: 1165
    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:1185,1
    - Dst: pagetable_lookup
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1189,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - tbm
    - pageno
    argTypes:
    - TIDBitmap*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1195
      start: 1172
    functionDepth: 1
    functionLinenumber: 1172
    functionLinenumberEnd: 1195
    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:1226,1
    - Dst: pagetable_insert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1230,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1238,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - tbm
    - pageno
    argTypes:
    - TIDBitmap*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1247
      start: 1205
    functionDepth: 2
    functionLinenumber: 1205
    functionLinenumberEnd: 1247
    functionName: tbm_get_pageentry
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 2
    functionsReached:
    - pagetable_insert
    - MemSet
    - tbm_create_pagetable
    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:1262,1
    - Dst: pagetable_lookup
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1267,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1271,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1272,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - tbm
    - pageno
    argTypes:
    - TIDBitmap*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1278
      start: 1252
    functionDepth: 1
    functionLinenumber: 1252
    functionLinenumberEnd: 1278
    functionName: tbm_page_is_lossy
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 3
    functionsReached:
    - BITNUM
    - Assert
    - pagetable_lookup
    - WORDNUM
    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:1298,1
    - Dst: pagetable_delete
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1309,1
    - Dst: pagetable_insert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1318,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1325,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1338,1
    - Dst: WORDNUM
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1350,1
    - Dst: BITNUM
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1351,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 2
    argNames:
    - tbm
    - pageno
    argTypes:
    - TIDBitmap*
    - BlockNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1353
      start: 1286
    functionDepth: 2
    functionLinenumber: 1286
    functionLinenumberEnd: 1353
    functionName: tbm_mark_page_lossy
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 2
    functionsReached:
    - BITNUM
    - WORDNUM
    - pagetable_delete
    - MemSet
    - pagetable_insert
    - tbm_create_pagetable
    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:1373,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1374,1
    - Dst: pagetable_start_iterate_at
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1376,1
    - Dst: pagetable_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1377,1
    - Dst: tbm_mark_page_lossy
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1390,1
    - Dst: Min
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1421,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 1
    argNames:
    - tbm
    argTypes:
    - TIDBitmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1422
      start: 1358
    functionDepth: 3
    functionLinenumber: 1358
    functionLinenumberEnd: 1422
    functionName: tbm_lossify
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 3
    functionsReached:
    - Min
    - Assert
    - pagetable_iterate
    - pagetable_start_iterate_at
    - tbm_mark_page_lossy
    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:1433,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - left
    - right
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1434
      start: 1427
    functionDepth: 1
    functionLinenumber: 1427
    functionLinenumberEnd: 1434
    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: 1453
      start: 1441
    functionDepth: 0
    functionLinenumber: 1441
    functionLinenumberEnd: 1453
    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
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1474,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1476,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:1483,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1485,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - dsa
    - dp
    argTypes:
    - dsa_area*
    - dsa_pointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1488
      start: 1464
    functionDepth: 1
    functionLinenumber: 1464
    functionLinenumberEnd: 1488
    functionName: tbm_attach_shared_iterate
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached:
    - dsa_get_address
    - palloc0
    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:1503,1
    - Dst: dsa_allocate_extended
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1511,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1514,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - pagetable
    - size
    argTypes:
    - pagetable_hash*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1517
      start: 1496
    functionDepth: 1
    functionLinenumber: 1496
    functionLinenumberEnd: 1517
    functionName: pagetable_allocate
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached:
    - dsa_get_address
    - dsa_allocate_extended
    - MemoryContextAllocExtended
    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:1531,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1532,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1534,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - pagetable
    - pointer
    argTypes:
    - pagetable_hash*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1537
      start: 1524
    functionDepth: 1
    functionLinenumber: 1524
    functionLinenumberEnd: 1537
    functionName: pagetable_free
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached:
    - DsaPointerIsValid
    - pfree
    - 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:1557,1
    - Dst: Max
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - maxbytes
    argTypes:
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1561
      start: 1544
    functionDepth: 0
    functionLinenumber: 1544
    functionLinenumberEnd: 1561
    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:1579,1
    - Dst: tbm_attach_shared_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1582,1
    - Dst: tbm_begin_private_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1587,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - tbm
    - dsa
    - dsp
    argTypes:
    - TIDBitmap*
    - dsa_area*
    - dsa_pointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1591
      start: 1573
    functionDepth: 2
    functionLinenumber: 1573
    functionLinenumberEnd: 1591
    functionName: tbm_begin_iterate
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached:
    - DsaPointerIsValid
    - tbm_attach_shared_iterate
    - 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:1599,1
    - Dst: tbm_exhausted
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1599,1
    - Dst: tbm_end_shared_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1602,1
    - Dst: tbm_end_private_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1604,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - iterator
    argTypes:
    - TBMIterator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1610
      start: 1596
    functionDepth: 1
    functionLinenumber: 1596
    functionLinenumberEnd: 1610
    functionName: tbm_end_iterate
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 0
    functionsReached:
    - tbm_end_shared_iterate
    - Assert
    - 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:1619,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1620,1
    - Dst: tbm_shared_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1623,1
    - Dst: tbm_private_iterate
      Src: /src/postgres/src/backend/nodes/tidbitmap.c:1625,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - iterator
    - tbmres
    argTypes:
    - TBMIterator*
    - TBMIterateResult*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1626
      start: 1616
    functionDepth: 2
    functionLinenumber: 1616
    functionLinenumberEnd: 1626
    functionName: tbm_iterate
    functionSourceFile: /src/postgres/src/backend/nodes/tidbitmap.c
    functionUses: 1
    functionsReached:
    - tbm_private_iterate
    - Assert
    - 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: 9
    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:
    - isdigit
    - strncmp
    - strtoint
    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:
    - makeFloat
    - lappend_int
    - strtoul
    - strtol
    - parseNodeString
    - makeBoolean
    - pg_strtok
    - nodeRead
    - memcpy
    - makeString
    - makeBitString
    - atoi
    - makeInteger
    - debackslash
    - elog
    - lappend_xid
    - lappend
    - nodeTokenType
    - palloc
    - bms_add_member
    - lappend_oid
    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: 48
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 48
    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: 53
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 53
    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: 58
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 58
    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: 61
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 61
    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: 67
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 67
    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: 73
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 73
    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: 79
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 79
    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: 85
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 85
    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: 91
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 91
    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: 97
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 97
    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: 104
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 104
    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: 110
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 110
    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: 116
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 116
    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: 122
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 122
    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: 129
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 129
    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: 134
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 134
    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: 142
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 142
    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: 148
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 148
    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: 154
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 154
    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: 159
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 159
    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: 164
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 164
    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: 169
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 169
    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: 175
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 175
    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: 184
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 184
    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: 186
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 186
    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:195,1
    - Dst: debackslash
      Src: /src/postgres/src/backend/nodes/readfuncs.c:197,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - token
    - length
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 198
    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:213,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:215,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:217,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:219,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:221,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:223,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:225,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:232,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:234,1
    - Dst: strtol
      Src: /src/postgres/src/backend/nodes/readfuncs.c:237,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:239,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/nodes/readfuncs.c:240,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 208
    functionDepth: 3
    functionLinenumber: 208
    functionLinenumberEnd: 244
    functionName: _readBitmapset
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached:
    - pg_strtok
    - READ_TEMP_LOCALS
    - elog
    - strtol
    - bms_add_member
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      _readBitmapset(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _readBitmapset
      Src: /src/postgres/src/backend/nodes/readfuncs.c:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 250
    functionDepth: 4
    functionLinenumber: 250
    functionLinenumberEnd: 254
    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:267,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_OID_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:271,1
    - Dst: READ_INT_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:272,1
    - Dst: READ_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:273,1
    - Dst: READ_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:274,1
    - Dst: READ_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:275,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:277,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:279,1
    - Dst: readDatum
      Src: /src/postgres/src/backend/nodes/readfuncs.c:281,1
    - Dst: READ_DONE
      Src: /src/postgres/src/backend/nodes/readfuncs.c:283,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 284
    functionName: _readConst
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached:
    - pg_strtok
    - readDatum
    - READ_INT_FIELD
    - READ_DONE
    - READ_LOCATION_FIELD
    - READ_LOCALS
    - READ_BOOL_FIELD
    - READ_OID_FIELD
    linkageType: ''
    returnType: Const
    signature: 'Const *

      _readConst(void)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: READ_LOCALS
      Src: /src/postgres/src/backend/nodes/readfuncs.c:289,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:292,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:293,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: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:298,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:301,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:303,1
    - Dst: READ_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:304,1
    - Dst: READ_DONE
      Src: /src/postgres/src/backend/nodes/readfuncs.c:306,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 307
    functionName: _readBoolExpr
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached:
    - pg_strtok
    - READ_NODE_FIELD
    - READ_DONE
    - READ_LOCATION_FIELD
    - elog
    - READ_LOCALS
    - strncmp
    linkageType: ''
    returnType: BoolExpr
    signature: 'BoolExpr *

      _readBoolExpr(void)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: READ_LOCALS
      Src: /src/postgres/src/backend/nodes/readfuncs.c:312,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:315,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:316,1
    - Dst: nodeRead
      Src: /src/postgres/src/backend/nodes/readfuncs.c:320,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/readfuncs.c:323,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/readfuncs.c:326,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/readfuncs.c:329,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/readfuncs.c:332,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/readfuncs.c:335,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/readfuncs.c:338,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:341,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/readfuncs.c:342,1
    - Dst: READ_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:347,1
    - Dst: READ_DONE
      Src: /src/postgres/src/backend/nodes/readfuncs.c:349,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 309
    functionDepth: 7
    functionLinenumber: 309
    functionLinenumberEnd: 350
    functionName: _readA_Const
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached:
    - pg_strtok
    - nodeTag
    - READ_DONE
    - READ_LOCATION_FIELD
    - nodeRead
    - elog
    - READ_LOCALS
    - memcpy
    - strncmp
    linkageType: ''
    returnType: A_Const
    signature: 'A_Const *

      _readA_Const(void)'
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: READ_LOCALS
      Src: /src/postgres/src/backend/nodes/readfuncs.c:355,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:357,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:358,1
    - Dst: READ_ENUM_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:359,1
    - Dst: READ_OID_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:364,1
    - Dst: READ_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:365,1
    - Dst: READ_CHAR_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:366,1
    - Dst: READ_INT_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:367,1
    - Dst: READ_UINT_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:368,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:369,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:372,1
    - Dst: READ_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:373,1
    - Dst: READ_OID_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:375,1
    - Dst: READ_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:376,1
    - Dst: READ_CHAR_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:377,1
    - Dst: READ_INT_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:378,1
    - Dst: READ_UINT_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:379,1
    - Dst: READ_ENUM_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:382,1
    - Dst: READ_INT_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:386,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:387,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:390,1
    - Dst: READ_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:391,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:394,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_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:408,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:409,1
    - Dst: READ_STRING_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:412,1
    - Dst: READ_UINT_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:413,1
    - Dst: READ_BOOL_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_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:416,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:417,1
    - Dst: READ_STRING_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:420,1
    - Dst: READ_FLOAT_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_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:423,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:424,1
    - Dst: READ_OID_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:426,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:432,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:435,1
    - Dst: READ_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:440,1
    - Dst: READ_BOOL_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:441,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:442,1
    - Dst: READ_DONE
      Src: /src/postgres/src/backend/nodes/readfuncs.c:444,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 78
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 352
    functionDepth: 1
    functionLinenumber: 352
    functionLinenumberEnd: 445
    functionName: _readRangeTblEntry
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached:
    - READ_STRING_FIELD
    - READ_NODE_FIELD
    - READ_CHAR_FIELD
    - READ_INT_FIELD
    - READ_UINT_FIELD
    - READ_DONE
    - READ_FLOAT_FIELD
    - elog
    - READ_LOCALS
    - READ_BOOL_FIELD
    - READ_ENUM_FIELD
    - READ_OID_FIELD
    linkageType: ''
    returnType: RangeTblEntry
    signature: 'RangeTblEntry *

      _readRangeTblEntry(void)'
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: READ_LOCALS
      Src: /src/postgres/src/backend/nodes/readfuncs.c:450,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:452,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:454,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:457,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:459,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:462,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:464,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:467,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:469,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:472,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:474,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:477,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:479,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:482,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:484,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:487,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:489,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:492,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:494,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:497,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:499,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:502,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:504,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:507,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:509,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:512,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:514,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:517,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/nodes/readfuncs.c:519,1
    - Dst: nodeRead
      Src: /src/postgres/src/backend/nodes/readfuncs.c:522,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:525,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:527,1
    - Dst: READ_NODE_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:528,1
    - Dst: READ_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:529,1
    - Dst: READ_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:530,1
    - Dst: READ_LOCATION_FIELD
      Src: /src/postgres/src/backend/nodes/readfuncs.c:531,1
    - Dst: READ_DONE
      Src: /src/postgres/src/backend/nodes/readfuncs.c:533,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 66
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 447
    functionDepth: 7
    functionLinenumber: 447
    functionLinenumberEnd: 534
    functionName: _readA_Expr
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached:
    - pg_strtok
    - READ_NODE_FIELD
    - READ_DONE
    - READ_LOCATION_FIELD
    - nodeRead
    - elog
    - READ_LOCALS
    - strncmp
    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:543,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:545,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:546,1
    - Dst: nullable_string
      Src: /src/postgres/src/backend/nodes/readfuncs.c:548,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:550,1
    - Dst: GetExtensibleNodeMethods
      Src: /src/postgres/src/backend/nodes/readfuncs.c:551,1
    - Dst: newNode
      Src: /src/postgres/src/backend/nodes/readfuncs.c:553,1
    - Dst: ExtensibleNodeMethods*::nodeRead
      Src: /src/postgres/src/backend/nodes/readfuncs.c:558,1
    - Dst: READ_DONE
      Src: /src/postgres/src/backend/nodes/readfuncs.c:560,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 536
    functionDepth: 7
    functionLinenumber: 536
    functionLinenumberEnd: 561
    functionName: _readExtensibleNode
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 0
    functionsReached:
    - pg_strtok
    - nullable_string
    - GetExtensibleNodeMethods
    - ExtensibleNodeMethods*::nodeRead
    - READ_TEMP_LOCALS
    - READ_DONE
    - elog
    - newNode
    linkageType: ''
    returnType: ExtensibleNode
    signature: 'ExtensibleNode *

      _readExtensibleNode(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: READ_TEMP_LOCALS
      Src: /src/postgres/src/backend/nodes/readfuncs.c:575,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/nodes/readfuncs.c:578,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:580,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:587,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 572
    functionDepth: 1
    functionLinenumber: 572
    functionLinenumberEnd: 589
    functionName: parseNodeString
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 1
    functionsReached:
    - check_stack_depth
    - elog
    - READ_TEMP_LOCALS
    - pg_strtok
    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: 584
      start: 582
    functionDepth: 0
    functionLinenumber: 582
    functionLinenumberEnd: 584
    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:612,1
    - Dst: atoui
      Src: /src/postgres/src/backend/nodes/readfuncs.c:613,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:615,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:617,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:623,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:628,1
    - Dst: atoi
      Src: /src/postgres/src/backend/nodes/readfuncs.c:629,1
    - Dst: palloc
      Src: /src/postgres/src/backend/nodes/readfuncs.c:636,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:639,1
    - Dst: atoi
      Src: /src/postgres/src/backend/nodes/readfuncs.c:640,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/nodes/readfuncs.c:642,1
    - Dst: pg_strtok
      Src: /src/postgres/src/backend/nodes/readfuncs.c:645,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/readfuncs.c:647,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 1
    argNames:
    - typbyval
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 599
    functionDepth: 1
    functionLinenumber: 599
    functionLinenumberEnd: 651
    functionName: readDatum
    functionSourceFile: /src/postgres/src/backend/nodes/readfuncs.c
    functionUses: 1
    functionsReached:
    - pg_strtok
    - atoi
    - PointerGetDatum
    - elog
    - 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: 671
      start: 661
    functionDepth: 0
    functionLinenumber: 661
    functionLinenumberEnd: 671
    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:94,1
    - Dst: strlen
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:94,1
    - Dst: strlen
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:98,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:100,1
    - Dst: strlen
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:100,1
    - Dst: strlen
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:106,1
    - Dst: scanner_isspace
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:119,1
    - Dst: scanner_isspace
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:121,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - query
    - location
    - len
    argTypes:
    - char*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 128
    functionName: CleanQuerytext
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - scanner_isspace
    - strlen
    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:141,1
    - Dst: IsQueryIdEnabled
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:141,1
    - Dst: InitJumble
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:143,1
    - Dst: DoJumble
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:145,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:151,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:154,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:156,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - query
    argTypes:
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 160
    functionName: JumbleQuery
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - DoJumble
    - IsQueryIdEnabled
    - InitJumble
    - INT64CONST
    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: 173
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 173
    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
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:184,1
    - Dst: palloc
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:187,1
    - Dst: palloc
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 201
    functionName: InitJumble
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 1
    functionsReached:
    - palloc
    linkageType: ''
    returnType: JumbleState
    signature: 'JumbleState *

      InitJumble(void)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _jumbleNode
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:212,1
    - Dst: FlushPendingNulls
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:216,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:223,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:223,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - jstate
    - node
    argTypes:
    - JumbleState*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 208
    functionDepth: 2
    functionLinenumber: 208
    functionLinenumberEnd: 226
    functionName: DoJumble
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 1
    functionsReached:
    - FlushPendingNulls
    - DatumGetInt64
    - _jumbleNode
    - hash_any_extended
    linkageType: ''
    returnType: int64
    signature: int64 DoJumble(JumbleState *jstate, Node *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:241,1
    - Dst: likely
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:248,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:250,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:269,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:273,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:273,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:275,1
    - Dst: Min
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:278,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:279,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 3
    argNames:
    - jstate
    - item
    - size
    argTypes:
    - JumbleState*
    - unsigned char*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 233
    functionDepth: 2
    functionLinenumber: 233
    functionLinenumberEnd: 290
    functionName: AppendJumbleInternal
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached:
    - Min
    - Assert
    - likely
    - DatumGetInt64
    - unlikely
    - memcpy
    - hash_any_extended
    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:300,1
    - Dst: AppendJumbleInternal
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:302,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - jstate
    - value
    - size
    argTypes:
    - JumbleState*
    - unsigned char*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 296
    functionDepth: 3
    functionLinenumber: 296
    functionLinenumberEnd: 303
    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: 313
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 313
    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:323,1
    - Dst: AppendJumbleInternal
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:325,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - jstate
    - value
    argTypes:
    - JumbleState*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 319
    functionDepth: 3
    functionLinenumber: 319
    functionLinenumberEnd: 326
    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:337,1
    - Dst: AppendJumbleInternal
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:339,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - jstate
    - value
    argTypes:
    - JumbleState*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 333
    functionDepth: 3
    functionLinenumber: 333
    functionLinenumberEnd: 340
    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:351,1
    - Dst: AppendJumbleInternal
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:353,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - jstate
    - value
    argTypes:
    - JumbleState*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 347
    functionDepth: 3
    functionLinenumber: 347
    functionLinenumberEnd: 354
    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:365,1
    - Dst: AppendJumbleInternal
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:367,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - jstate
    - value
    argTypes:
    - JumbleState*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 361
    functionDepth: 3
    functionLinenumber: 361
    functionLinenumberEnd: 368
    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:379,1
    - Dst: AppendJumbleInternal
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - jstate
    argTypes:
    - JumbleState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 376
    functionDepth: 3
    functionLinenumber: 376
    functionLinenumberEnd: 384
    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:408,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:418,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: 424
      start: 397
    functionDepth: 1
    functionLinenumber: 397
    functionLinenumberEnd: 424
    functionName: RecordConstLocation
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached:
    - repalloc
    - Assert
    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:440,1
    - Dst: castNode
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:456,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:478,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:480,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:482,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:484,1
    - Dst: stack_is_too_deep
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:485,1
    - Dst: IsSquashableConstant
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:487,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 1
    argNames:
    - element
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 436
    functionDepth: 1
    functionLinenumber: 436
    functionLinenumberEnd: 498
    functionName: IsSquashableConstant
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 1
    functionsReached:
    - nodeTag
    - stack_is_too_deep
    - IsA
    - foreach
    - castNode
    - IsSquashableConstant
    - foreach_current_index
    - lfirst
    linkageType: ''
    returnType: bool
    signature: bool IsSquashableConstant(Node *element)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:516,1
    - Dst: IsSquashableConstant
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:521,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:521,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - elements
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 510
    functionDepth: 2
    functionLinenumber: 510
    functionLinenumberEnd: 526
    functionName: IsSquashableConstantList
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached:
    - IsSquashableConstant
    - lfirst
    - list_length
    linkageType: ''
    returnType: bool
    signature: bool IsSquashableConstantList(List *elements)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsSquashableConstant
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:521,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:521,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 519
    functionDepth: 2
    functionLinenumber: 519
    functionLinenumberEnd: 523
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 332
    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: 530
      start: 528
    functionDepth: 0
    functionLinenumber: 528
    functionLinenumberEnd: 530
    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: 532
      start: 530
    functionDepth: 0
    functionLinenumber: 530
    functionLinenumberEnd: 532
    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: 534
      start: 532
    functionDepth: 0
    functionLinenumber: 532
    functionLinenumberEnd: 534
    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: 547
      start: 534
    functionDepth: 0
    functionLinenumber: 534
    functionLinenumberEnd: 547
    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: 554
      start: 547
    functionDepth: 0
    functionLinenumber: 547
    functionLinenumberEnd: 554
    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: 557
      start: 555
    functionDepth: 0
    functionLinenumber: 555
    functionLinenumberEnd: 557
    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:570,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:575,1
    - Dst: JUMBLE_FIELD
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:581,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:583,1
    - Dst: _jumbleList
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:591,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:596,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:597,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:602,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - jstate
    - node
    argTypes:
    - JumbleState*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 560
    functionDepth: 1
    functionLinenumber: 560
    functionLinenumberEnd: 603
    functionName: _jumbleNode
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 1
    functionsReached:
    - check_stack_depth
    - nodeTag
    - Assert
    - _jumbleList
    - AppendJumbleNull
    - elog
    - JUMBLE_FIELD
    linkageType: ''
    returnType: void
    signature: void _jumbleNode(JumbleState *jstate, Node *node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:614,1
    - Dst: _jumbleNode
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:615,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:615,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:618,1
    - Dst: AppendJumble32
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:619,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:619,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:622,1
    - Dst: AppendJumble32
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:623,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:623,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:626,1
    - Dst: AppendJumble32
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:627,1
    - Dst: lfirst_xid
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:627,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:630,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - jstate
    - node
    argTypes:
    - JumbleState*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 605
    functionDepth: 4
    functionLinenumber: 605
    functionLinenumberEnd: 634
    functionName: _jumbleList
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 1
    functionsReached:
    - AppendJumble32
    - _jumbleNode
    - lfirst_int
    - foreach
    - elog
    - lfirst_oid
    - lfirst_xid
    - lfirst
    linkageType: ''
    returnType: void
    signature: void _jumbleList(JumbleState *jstate, Node *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsSquashableConstantList
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:651,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:653,1
    - Dst: RecordConstLocation
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:659,1
    - Dst: _jumbleNode
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:671,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - jstate
    - elements
    - node
    argTypes:
    - JumbleState*
    - List*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 646
    functionDepth: 3
    functionLinenumber: 646
    functionLinenumberEnd: 673
    functionName: _jumbleElements
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached:
    - RecordConstLocation
    - IsA
    - IsSquashableConstantList
    - _jumbleNode
    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:684,1
    - Dst: JUMBLE_FIELD
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:685,1
    - Dst: JUMBLE_FIELD
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:686,1
    - Dst: RecordConstLocation
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:695,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - jstate
    - node
    argTypes:
    - JumbleState*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 679
    functionDepth: 2
    functionLinenumber: 679
    functionLinenumberEnd: 707
    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:714,1
    - Dst: JUMBLE_FIELD
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:717,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:718,1
    - Dst: JUMBLE_FIELD
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:721,1
    - Dst: JUMBLE_STRING
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:724,1
    - Dst: JUMBLE_FIELD
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:727,1
    - Dst: JUMBLE_STRING
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:730,1
    - Dst: JUMBLE_STRING
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:733,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:736,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:737,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 2
    argNames:
    - jstate
    - node
    argTypes:
    - JumbleState*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 709
    functionDepth: 1
    functionLinenumber: 709
    functionLinenumberEnd: 741
    functionName: _jumbleA_Const
    functionSourceFile: /src/postgres/src/backend/nodes/queryjumblefuncs.c
    functionUses: 0
    functionsReached:
    - nodeTag
    - elog
    - JUMBLE_FIELD
    - 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:748,1
    - Dst: JUMBLE_STRING
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:749,1
    - Dst: JUMBLE_NODE
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:756,1
    - Dst: JUMBLE_FIELD
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:757,1
    - Dst: JUMBLE_LOCATION
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:758,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - jstate
    - node
    argTypes:
    - JumbleState*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 759
      start: 743
    functionDepth: 1
    functionLinenumber: 743
    functionLinenumberEnd: 759
    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:769,1
    - Dst: JUMBLE_STRING
      Src: /src/postgres/src/backend/nodes/queryjumblefuncs.c:774,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - jstate
    - rte
    - expr
    argTypes:
    - JumbleState*
    - RangeTblEntry*
    - Alias*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 764
    functionDepth: 1
    functionLinenumber: 764
    functionLinenumberEnd: 775
    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: 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:
    - errmsg
    - hash_create
    - ereport
    - hash_search
    - elog
    - errcode
    - strlen
    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
    - errcode
    - ereport
    - hash_search
    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:
    - makeParamList
    - get_typlenbyval
    - ParamListInfo::paramFetch
    - datumCopy
    - 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:
    - makeNode
    - ParamListInfo::paramFetch
    - get_typcollation
    - OidIsValid
    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:185,1
    - Dst: add_size
      Src: /src/postgres/src/backend/nodes/params.c:191,1
    - Dst: add_size
      Src: /src/postgres/src/backend/nodes/params.c:192,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/params.c:195,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/nodes/params.c:196,1
    - Dst: add_size
      Src: /src/postgres/src/backend/nodes/params.c:203,1
    - Dst: datumEstimateSpace
      Src: /src/postgres/src/backend/nodes/params.c:204,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - paramLI
    argTypes:
    - ParamListInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 208
    functionName: EstimateParamListSpace
    functionSourceFile: /src/postgres/src/backend/nodes/params.c
    functionUses: 0
    functionsReached:
    - get_typlenbyval
    - ParamListInfo::paramFetch
    - datumEstimateSpace
    - OidIsValid
    - add_size
    linkageType: ''
    returnType: Size
    signature: Size EstimateParamListSpace(ParamListInfo paramLI)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/params.c:239,1
    - Dst: ParamListInfo::paramFetch
      Src: /src/postgres/src/backend/nodes/params.c:253,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/params.c:260,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/params.c:264,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/params.c:268,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/nodes/params.c:269,1
    - Dst: datumSerialize
      Src: /src/postgres/src/backend/nodes/params.c:276,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - paramLI
    - start_address
    argTypes:
    - ParamListInfo
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 279
    functionName: SerializeParamList
    functionSourceFile: /src/postgres/src/backend/nodes/params.c
    functionUses: 0
    functionsReached:
    - ParamListInfo::paramFetch
    - get_typlenbyval
    - OidIsValid
    - memcpy
    - datumSerialize
    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:297,1
    - Dst: makeParamList
      Src: /src/postgres/src/backend/nodes/params.c:300,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/params.c:307,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/nodes/params.c:311,1
    - Dst: datumRestore
      Src: /src/postgres/src/backend/nodes/params.c:315,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - start_address
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 291
    functionDepth: 1
    functionLinenumber: 291
    functionLinenumberEnd: 319
    functionName: RestoreParamList
    functionSourceFile: /src/postgres/src/backend/nodes/params.c
    functionUses: 0
    functionsReached:
    - memcpy
    - makeParamList
    - datumRestore
    linkageType: ''
    returnType: ParamListInfo
    signature: ParamListInfo RestoreParamList(char **start_address)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsAbortedTransactionBlockState
      Src: /src/postgres/src/backend/nodes/params.c:353,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/nodes/params.c:357,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/nodes/params.c:360,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/nodes/params.c:363,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/nodes/params.c:369,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/params.c:374,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/nodes/params.c:375,1
    - Dst: appendStringInfoStringQuoted
      Src: /src/postgres/src/backend/nodes/params.c:379,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/nodes/params.c:387,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/nodes/params.c:388,1
    - Dst: appendStringInfoStringQuoted
      Src: /src/postgres/src/backend/nodes/params.c:389,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/nodes/params.c:394,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/nodes/params.c:395,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - params
    - knownTextValues
    - maxlen
    argTypes:
    - ParamListInfo
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 334
    functionDepth: 3
    functionLinenumber: 334
    functionLinenumberEnd: 398
    functionName: BuildParamLogString
    functionSourceFile: /src/postgres/src/backend/nodes/params.c
    functionUses: 2
    functionsReached:
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - appendStringInfo
    - getTypeOutputInfo
    - appendStringInfoString
    - appendStringInfoStringQuoted
    - OidOutputFunctionCall
    - AllocSetContextCreate
    - OidIsValid
    - initStringInfo
    - IsAbortedTransactionBlockState
    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:417,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/nodes/params.c:420,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 406
    functionDepth: 0
    functionLinenumber: 406
    functionLinenumberEnd: 422
    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:
    - lfirst_node
    - list_nth_cell
    - list_length
    - elog
    - lappend
    - lfirst
    - bms_add_member
    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:
    - bms_add_members
    - lfirst_node
    - list_length
    - lappend
    - lfirst
    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: 14
    functionsReached:
    - lfirst
    - bms_add_members
    - 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:
    - lfirst_node
    - list_length
    - list_truncate
    - bms_int_members
    - lfirst
    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: 14
    functionsReached:
    - bms_int_members
    - lfirst
    - 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: 0
    functionsReached:
    - bms_is_member
    - elog
    - list_nth_node
    - 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
    - lfirst_node
    - bms_add_member
    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: 14
    functionsReached:
    - bms_overlap
    - foreach_current_index
    - lfirst_node
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: void forboth(lca, a, lcb, b)
  - BBCount: 63
    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:288,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:288,1
    CyclomaticComplexity: 66
    EdgeCount: 66
    ICount: 196
    argCount: 1
    argNames:
    - expr
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 293
    functionName: exprType
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 69
    functionsReached:
    - nodeTag
    - exprType
    - Assert
    - get_promoted_array_type
    - errmsg
    - linitial
    - format_type_be
    - IsA
    - ereport
    - elog
    - OidIsValid
    - errcode
    - linitial_node
    linkageType: ''
    returnType: Oid
    signature: Oid exprType(const Node *expr)
  - BBCount: 54
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:306,1
    - Dst: exprIsLengthCoercion
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:321,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:326,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:335,1
    - Dst: linitial
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:335,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:349,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:350,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:351,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:352,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:353,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:378,1
    - Dst: linitial
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:378,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:388,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:402,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:404,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:407,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:409,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:411,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:413,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:434,1
    - Dst: linitial
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:434,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:441,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:443,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:445,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:447,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:464,1
    - Dst: linitial
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:464,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:466,1
    - Dst: linitial
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:466,1
    - Dst: for_each_from
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:469,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:471,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:473,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:475,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:492,1
    - Dst: linitial
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:492,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:494,1
    - Dst: linitial
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:494,1
    - Dst: for_each_from
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:497,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:499,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:501,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:503,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:512,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:526,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:536,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:538,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 146
    argCount: 1
    argNames:
    - expr
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 300
    functionDepth: 2
    functionLinenumber: 300
    functionLinenumberEnd: 543
    functionName: exprTypmod
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 30
    functionsReached:
    - nodeTag
    - exprType
    - Assert
    - lfirst_node
    - linitial
    - exprTypmod
    - IsA
    - foreach
    - exprIsLengthCoercion
    - for_each_from
    - elog
    - lfirst
    - linitial_node
    linkageType: ''
    returnType: int32
    signature: int32 exprTypmod(const Node *expr)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:566,1
    - Dst: list_length
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:584,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:588,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:589,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:598,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:603,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 24
    argCount: 2
    argNames:
    - expr
    - coercedTypmod
    argTypes:
    - Node*
    - int32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 556
    functionDepth: 1
    functionLinenumber: 556
    functionLinenumberEnd: 621
    functionName: exprIsLengthCoercion
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 1
    functionsReached:
    - lsecond
    - IsA
    - DatumGetInt32
    - list_length
    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:644,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:647,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:653,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:660,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:661,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:662,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:670,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: 680
      start: 635
    functionDepth: 3
    functionLinenumber: 635
    functionLinenumberEnd: 680
    functionName: applyRelabelType
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 4
    functionsReached:
    - exprType
    - exprCollation
    - exprTypmod
    - IsA
    - copyObject
    - makeNode
    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:691,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:691,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:691,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - expr
    - typmod
    argTypes:
    - Node*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 693
      start: 688
    functionDepth: 4
    functionLinenumber: 688
    functionLinenumberEnd: 693
    functionName: relabel_to_typmod
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 0
    functionsReached:
    - exprType
    - exprCollation
    - applyRelabelType
    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:709,1
    - Dst: strip_implicit_coercions
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:714,1
    - Dst: linitial
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:714,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:716,1
    - Dst: strip_implicit_coercions
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:721,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:723,1
    - Dst: strip_implicit_coercions
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:728,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:730,1
    - Dst: strip_implicit_coercions
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:735,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:737,1
    - Dst: strip_implicit_coercions
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:742,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:744,1
    - Dst: strip_implicit_coercions
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:749,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 28
    argCount: 1
    argNames:
    - node
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 704
    functionDepth: 1
    functionLinenumber: 704
    functionLinenumberEnd: 752
    functionName: strip_implicit_coercions
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 1
    functionsReached:
    - strip_implicit_coercions
    - IsA
    - linitial
    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:765,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - clause
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 762
    functionDepth: 1
    functionLinenumber: 762
    functionLinenumberEnd: 766
    functionName: expression_returns_set
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 8
    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:773,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:781,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:797,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:799,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:801,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:804,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 768
    functionDepth: 1
    functionLinenumber: 768
    functionLinenumberEnd: 806
    functionName: expression_returns_set_walker
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 1
    functionsReached:
    - IsA
    - expression_tree_walker
    linkageType: ''
    returnType: bool
    signature: bool expression_returns_set_walker(Node *node, void *context)
  - BBCount: 59
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:828,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:858,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:888,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:889,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:890,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:891,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:892,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:925,1
    - Dst: linitial
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:925,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:994,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1001,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1022,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1053,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1056,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1059,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1062,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1062,1
    CyclomaticComplexity: 62
    EdgeCount: 62
    ICount: 183
    argCount: 1
    argNames:
    - expr
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1067
      start: 820
    functionDepth: 1
    functionLinenumber: 820
    functionLinenumberEnd: 1067
    functionName: exprCollation
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 55
    functionsReached:
    - nodeTag
    - exprCollation
    - Assert
    - linitial
    - IsA
    - elog
    - linitial_node
    linkageType: ''
    returnType: Oid
    signature: Oid exprCollation(const Node *expr)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1083,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 1
    argNames:
    - expr
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 1075
    functionDepth: 1
    functionLinenumber: 1075
    functionLinenumberEnd: 1114
    functionName: exprInputCollation
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 0
    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:1126,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1141,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1141,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1156,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1156,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1169,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1169,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1173,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1173,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1187,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1188,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1189,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1190,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1191,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1191,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1196,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1196,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1206,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1206,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1219,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1219,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1229,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1229,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1233,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1233,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1242,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1247,1
    - Dst: exprSetCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1252,1
    - Dst: exprSetCollation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1260,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1262,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1262,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1267,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1267,1
    - Dst: exprSetCollation
      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:1290,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1290,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1303,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1303,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1307,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1307,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1310,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1310,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 147
    argCount: 2
    argNames:
    - expr
    - collation
    argTypes:
    - Node*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1313
      start: 1123
    functionDepth: 2
    functionLinenumber: 1123
    functionLinenumberEnd: 1313
    functionName: exprSetCollation
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 1
    functionsReached:
    - nodeTag
    - Assert
    - exprCollation
    - IsA
    - elog
    - exprSetCollation
    - OidIsValid
    - linitial_node
    linkageType: ''
    returnType: void
    signature: void exprSetCollation(Node *expr, Oid collation)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1326,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 2
    argNames:
    - expr
    - inputcollation
    argTypes:
    - Node*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1355
      start: 1323
    functionDepth: 1
    functionLinenumber: 1323
    functionLinenumberEnd: 1355
    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: 91
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1394,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1427,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1434,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1435,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1443,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1444,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1454,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1455,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1463,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1464,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1476,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1477,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1485,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1485,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1491,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1495,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1502,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1503,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1511,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1512,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1520,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1521,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1529,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1530,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1535,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1555,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1574,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1575,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1582,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1595,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1596,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1600,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1607,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1608,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1616,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1617,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1625,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1626,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1636,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1640,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1644,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1652,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1654,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1654,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1666,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1667,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1685,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1686,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1698,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1708,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1709,1
    - Dst: leftmostLoc
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1710,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1715,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1719,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1766,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1781,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1784,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1788,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1792,1
    CyclomaticComplexity: 90
    EdgeCount: 90
    ICount: 292
    argCount: 1
    argNames:
    - expr
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1812
      start: 1387
    functionDepth: 1
    functionLinenumber: 1387
    functionLinenumberEnd: 1812
    functionName: exprLocation
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 2
    functionsReached:
    - nodeTag
    - exprLocation
    - leftmostLoc
    - foreach
    - lfirst
    linkageType: ''
    returnType: int
    signature: int exprLocation(const Node *expr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Min
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1827,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - loc1
    - loc2
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1828
      start: 1819
    functionDepth: 0
    functionLinenumber: 1819
    functionLinenumberEnd: 1828
    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:1844,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1845
      start: 1840
    functionDepth: 1
    functionLinenumber: 1840
    functionLinenumberEnd: 1845
    functionName: fix_opfuncids
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 7
    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:1852,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1853,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1854,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1855,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1856,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1857,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1858,1
    - Dst: set_sa_opfuncid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1859,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1860,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1861
      start: 1847
    functionDepth: 1
    functionLinenumber: 1847
    functionLinenumberEnd: 1861
    functionName: fix_opfuncids_walker
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 1
    functionsReached:
    - set_sa_opfuncid
    - IsA
    - expression_tree_walker
    - set_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:1875,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - opexpr
    argTypes:
    - OpExpr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1876
      start: 1871
    functionDepth: 1
    functionLinenumber: 1871
    functionLinenumberEnd: 1876
    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:1886,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - opexpr
    argTypes:
    - ScalarArrayOpExpr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1887
      start: 1882
    functionDepth: 1
    functionLinenumber: 1882
    functionLinenumberEnd: 1887
    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:1913,1
    - Dst: checker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1919,1
    - Dst: checker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1927,1
    - Dst: checker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1935,1
    - Dst: set_opfuncid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1946,1
    - Dst: checker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1947,1
    - Dst: set_sa_opfuncid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1955,1
    - Dst: checker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1956,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1968,1
    - Dst: checker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1970,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1973,1
    - Dst: exprType
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1973,1
    - Dst: checker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1975,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1984,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1986,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1986,1
    - Dst: checker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:1988,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 51
    argCount: 3
    argNames:
    - node
    - checker
    - context
    argTypes:
    - Node*
    - check_function_callback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1997
      start: 1909
    functionDepth: 2
    functionLinenumber: 1909
    functionLinenumberEnd: 1997
    functionName: check_functions_in_node
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 6
    functionsReached:
    - nodeTag
    - checker
    - getTypeInputInfo
    - exprType
    - getTypeOutputInfo
    - set_sa_opfuncid
    - get_opcode
    - foreach
    - set_opfuncid
    - lfirst_oid
    linkageType: ''
    returnType: bool
    signature: "bool check_functions_in_node(Node *node, check_function_callback checker,\n\t\t\t\t\t\tvoid
      *context)"
  - BBCount: 182
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2115,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2117,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2135,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2141,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2143,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2145,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2147,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2149,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2157,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2166,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2168,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2170,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2178,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2187,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2189,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2192,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2195,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2203,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2208,1
    - Dst: LIST_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: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2231,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2239,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2246,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2254,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2257,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2262,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2264,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2269,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2271,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2276,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2278,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2283,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2285,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2290,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2292,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2297,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2300,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2302,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2304,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2306,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2309,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2314,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2317,1
    - Dst: WALK
      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:2329,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2331,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2336,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2339,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2347,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2349,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2357,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2359,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2361,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2366,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2371,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2373,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2375,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2378,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2380,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2388,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:2397,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2399,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2407,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2409,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2411,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2413,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2421,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2423,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2435,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2438,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2440,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2448,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2450,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2458,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2466,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2474,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2482,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2484,1
    - Dst: 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:2496,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:2515,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2517,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2519,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2527,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2532,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2534,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2534,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2542,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2544,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2552,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2554,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2556,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2558,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2560,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2568,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2570,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2578,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2589,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2591,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2593,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2605,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2607,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2617,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2619,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2624,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2626,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2628,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2633,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2638,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2640,1
    - Dst: LIST_WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2645,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2647,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2655,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2657,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2659,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2661,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2663,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2665,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2667,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2672,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2673,1
    CyclomaticComplexity: 146
    EdgeCount: 146
    ICount: 401
    argCount: 3
    argNames:
    - node
    - walker
    - context
    argTypes:
    - Node*
    - tree_walker_callback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2680
      start: 2092
    functionDepth: 1
    functionLinenumber: 2092
    functionLinenumberEnd: 2680
    functionName: expression_tree_walker_impl
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 0
    functionsReached:
    - check_stack_depth
    - nodeTag
    - lfirst_node
    - foreach
    - WALK
    - elog
    - LIST_WALK
    - lfirst
    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: 2108
      start: 2107
    functionDepth: 0
    functionLinenumber: 2107
    functionLinenumberEnd: 2108
    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: 2110
      start: 2109
    functionDepth: 0
    functionLinenumber: 2109
    functionLinenumberEnd: 2110
    functionName: LIST_WALK
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_WALK(l)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2703,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2703,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2712,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2714,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2716,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2718,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2720,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2722,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2724,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2726,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2728,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2730,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2732,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2742,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2744,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2746,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2748,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2759,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2761,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2763,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2765,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2784,1
    - Dst: range_table_walker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2789,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 50
    argCount: 4
    argNames:
    - query
    - walker
    - context
    - flags
    argTypes:
    - Query*
    - tree_walker_callback
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2793
      start: 2697
    functionDepth: 1
    functionLinenumber: 2697
    functionLinenumberEnd: 2793
    functionName: query_tree_walker_impl
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - lfirst_node
    - IsA
    - foreach
    - WALK
    - range_table_walker
    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:2810,1
    - Dst: range_table_entry_walker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2812,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: 2816
      start: 2800
    functionDepth: 1
    functionLinenumber: 2800
    functionLinenumberEnd: 2816
    functionName: range_table_walker_impl
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 0
    functionsReached:
    - lfirst_node
    - range_table_entry_walker
    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:2810,1
    - Dst: range_table_entry_walker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2812,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2814
      start: 2808
    functionDepth: 1
    functionLinenumber: 2808
    functionLinenumberEnd: 2814
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 338
    functionsReached:
    - lfirst_node
    - range_table_entry_walker
    linkageType: ''
    returnType: void
    signature: void foreach(rt, rtable)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2833,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2839,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2844,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2849,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2853,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2857,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2861,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2871,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2876,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2880,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 47
    argCount: 4
    argNames:
    - rte
    - walker
    - context
    - flags
    argTypes:
    - RangeTblEntry*
    - tree_walker_callback
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2884
      start: 2821
    functionDepth: 1
    functionLinenumber: 2821
    functionLinenumberEnd: 2884
    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: 81
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2970,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2972,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2984,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:2994,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3011,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3017,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3018,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3026,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3028,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3029,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3030,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3031,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3032,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3033,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3042,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3043,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3054,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3055,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3065,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3066,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3067,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3076,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3077,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3086,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3087,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3089,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3091,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3093,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3104,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3105,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3114,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3115,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3124,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3125,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3134,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3135,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3144,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3145,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3154,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3155,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3164,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3165,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: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3181,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3190,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3192,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3194,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: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3226,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3227,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3236,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3237,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3246,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3247,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3256,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3257,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3258,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3267,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3268,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3277,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3278,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3287,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3288,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3289,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3290,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3299,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3300,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3301,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3310,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3311,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3320,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3321,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3331,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3332,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3333,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3342,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3343,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3352,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3353,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3362,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3363,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3365,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3374,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3375,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3384,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3385,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3386,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3387,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3396,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3397,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3398,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3399,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3400,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3409,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3410,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3411,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3420,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3421,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3422,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3423,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3425,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3426,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3435,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3436,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3445,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3446,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3455,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3456,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3465,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3466,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3475,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3476,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3485,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3486,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3498,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3499,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3500,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3501,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3502,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3511,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3512,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3513,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3522,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3528,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3530,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3531,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3541,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3542,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3543,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3544,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3553,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3554,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3569,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3571,1
    - Dst: mutator
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3572,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3572,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3583,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3584,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3585,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3594,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3595,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3596,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3597,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3598,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3599,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3609,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3610,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3611,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3621,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3622,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3629,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3635,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3636,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3637,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3638,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3648,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3649,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3650,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3660,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3661,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3662,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3671,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3672,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3682,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3683,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3692,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3693,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3703,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3704,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3714,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3715,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3725,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3726,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3727,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3736,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3737,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3738,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3739,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3740,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3741,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3742,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3743,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3748,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3749,1
    CyclomaticComplexity: 62
    EdgeCount: 62
    ICount: 462
    argCount: 3
    argNames:
    - node
    - mutator
    - context
    argTypes:
    - Node*
    - tree_mutator_callback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3754
      start: 2949
    functionDepth: 6
    functionLinenumber: 2949
    functionLinenumberEnd: 3754
    functionName: expression_tree_mutator_impl
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 0
    functionsReached:
    - check_stack_depth
    - nodeTag
    - mutator
    - MUTATE
    - FLATCOPY
    - list_copy
    - foreach
    - elog
    - lappend
    - copyObject
    - lfirst
    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: 2962
      start: 2959
    functionDepth: 0
    functionLinenumber: 2959
    functionLinenumberEnd: 2962
    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: 2965
      start: 2963
    functionDepth: 0
    functionLinenumber: 2963
    functionLinenumberEnd: 2965
    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:3782,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3782,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3788,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3792,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3793,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3794,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3795,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3796,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3797,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3798,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3799,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3800,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3801,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3802,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: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3814,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3815,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3827,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3829,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3832,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3833,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3834,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3836,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3854,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3856,1
    - Dst: range_table_mutator
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3857,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 37
    argCount: 4
    argNames:
    - query
    - mutator
    - context
    - flags
    argTypes:
    - Query*
    - tree_mutator_callback
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3860
      start: 3776
    functionDepth: 6
    functionLinenumber: 3776
    functionLinenumberEnd: 3860
    functionName: query_tree_mutator_impl
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - MUTATE
    - lfirst_node
    - FLATCOPY
    - IsA
    - foreach
    - lappend
    - copyObject
    - range_table_mutator
    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: 14
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3878,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3881,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3885,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3891,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3895,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3900,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3904,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3908,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3911,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3914,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3923,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3927,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3931,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3932,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 42
    argCount: 4
    argNames:
    - rtable
    - mutator
    - context
    - flags
    argTypes:
    - List*
    - tree_mutator_callback
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3935
      start: 3867
    functionDepth: 6
    functionLinenumber: 3867
    functionLinenumberEnd: 3935
    functionName: range_table_mutator_impl
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 0
    functionsReached:
    - MUTATE
    - FLATCOPY
    - lappend
    - copyObject
    - 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: 14
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3878,1
    - Dst: FLATCOPY
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3881,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3885,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3891,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3895,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3900,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3904,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3908,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3911,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3914,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3923,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3927,1
    - Dst: MUTATE
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3931,1
    - Dst: lappend
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3932,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3933
      start: 3876
    functionDepth: 6
    functionLinenumber: 3876
    functionLinenumberEnd: 3933
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 340
    functionsReached:
    - MUTATE
    - FLATCOPY
    - lappend
    - copyObject
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(rt, rtable)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3951,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3952,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3957,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: 3958
      start: 3945
    functionDepth: 1
    functionLinenumber: 3945
    functionLinenumberEnd: 3958
    functionName: query_or_expression_tree_walker_impl
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 0
    functionsReached:
    - WALK
    - IsA
    - query_tree_walker
    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:3974,1
    - Dst: query_tree_mutator
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3975,1
    - Dst: mutator
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:3980,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: 3981
      start: 3968
    functionDepth: 1
    functionLinenumber: 3968
    functionLinenumberEnd: 3981
    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: 244
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4014,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4016,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4038,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4040,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4045,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4048,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4056,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4059,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4061,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4063,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4065,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4068,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4074,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4076,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4078,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4083,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4086,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4091,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4096,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4098,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4100,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4108,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4110,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4118,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4120,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4128,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4130,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4138,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4140,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4142,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4144,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4149,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4151,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4156,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4158,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4160,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4162,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4164,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4166,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4174,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4182,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4184,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4186,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4188,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4190,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4198,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4200,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4202,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4204,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4209,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:4218,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4220,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4222,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4224,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4233,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4237,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4242,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4244,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4244,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4252,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4254,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4256,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4258,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4260,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4262,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4270,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4272,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4274,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4276,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4278,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4286,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4288,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4290,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4292,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4294,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4296,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4304,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4306,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4308,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4310,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4312,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4314,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4322,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:4334,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4336,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4344,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4346,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4348,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4350,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4352,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4354,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4356,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4358,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4360,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4362,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4364,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4366,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4368,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4370,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4372,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4374,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4382,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4384,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4392,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4394,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4403,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4414,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4416,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4418,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4420,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4426,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4431,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4433,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4441,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4443,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4448,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4453,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4455,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4460,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:4472,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4474,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:4493,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4495,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4503,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4505,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4507,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4515,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4518,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4520,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4528,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4530,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4532,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4534,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4536,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4544,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4546,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4554,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4556,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4565,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4567,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4569,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4578,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4584,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4586,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4591,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4593,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4598,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4603,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4605,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4613,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4615,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4617,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4623,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4628,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4630,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4638,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4640,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4648,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4650,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4658,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4660,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4668,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4670,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4672,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4674,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4682,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4684,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:4702,1
    - Dst: WALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4704,1
    - Dst: elog
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4709,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4710,1
    CyclomaticComplexity: 211
    EdgeCount: 211
    ICount: 532
    argCount: 3
    argNames:
    - node
    - walker
    - context
    argTypes:
    - Node*
    - tree_walker_callback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4714
      start: 3999
    functionDepth: 1
    functionLinenumber: 3999
    functionLinenumberEnd: 4714
    functionName: raw_expression_tree_walker_impl
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 0
    functionsReached:
    - check_stack_depth
    - nodeTag
    - lfirst_node
    - foreach
    - WALK
    - elog
    - lfirst
    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:4734,1
    - Dst: planstate_walk_subplans
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4737,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4741,1
    - Dst: PSWALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4743,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4743,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4748,1
    - Dst: PSWALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4750,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4750,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4755,1
    - Dst: planstate_walk_members
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4758,1
    - Dst: planstate_walk_members
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4764,1
    - Dst: planstate_walk_members
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4770,1
    - Dst: planstate_walk_members
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4776,1
    - Dst: PSWALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4782,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4786,1
    - Dst: PSWALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4788,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4788,1
    - Dst: planstate_walk_subplans
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4797,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: 4801
      start: 4722
    functionDepth: 1
    functionLinenumber: 4722
    functionLinenumberEnd: 4801
    functionName: planstate_tree_walker_impl
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 0
    functionsReached:
    - check_stack_depth
    - nodeTag
    - planstate_walk_subplans
    - planstate_walk_members
    - foreach
    - PSWALK
    - outerPlanState
    - innerPlanState
    - lfirst
    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: 4732
      start: 4731
    functionDepth: 0
    functionLinenumber: 4731
    functionLinenumberEnd: 4732
    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:4815,1
    - Dst: PSWALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4817,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: 4822
      start: 4806
    functionDepth: 1
    functionLinenumber: 4806
    functionLinenumberEnd: 4822
    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:4815,1
    - Dst: PSWALK
      Src: /src/postgres/src/backend/nodes/nodeFuncs.c:4817,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4819
      start: 4813
    functionDepth: 1
    functionLinenumber: 4813
    functionLinenumberEnd: 4819
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/nodeFuncs.c
    functionUses: 342
    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:4837,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: 4842
      start: 4828
    functionDepth: 1
    functionLinenumber: 4828
    functionLinenumberEnd: 4842
    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: 68
    functionsReached:
    - pfree
    - printf
    - fflush
    - nodeToStringWithLocations
    - format_node_dump
    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:
    - pfree
    - printf
    - fflush
    - pretty_format_node_dump
    - nodeToStringWithLocations
    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: 2
    functionsReached:
    - pfree
    - errdetail_internal
    - pretty_format_node_dump
    - errmsg_internal
    - ereport
    - nodeToStringWithLocations
    - format_node_dump
    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:
    - initStringInfo
    - appendStringInfo
    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:
    - initStringInfo
    - Min
    - appendStringInfo
    linkageType: ''
    returnType: char
    signature: 'char *

      pretty_format_node_dump(const char *dump)'
  - BBCount: 12
    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
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 40
    argCount: 1
    argNames:
    - rtable
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 317
    functionName: print_rt
    functionSourceFile: /src/postgres/src/backend/nodes/print.c
    functionUses: 0
    functionsReached:
    - printf
    - lfirst
    linkageType: ''
    returnType: void
    signature: void print_rt(const List *rtable)
  - BBCount: 12
    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
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 316
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/print.c
    functionUses: 342
    functionsReached:
    - printf
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, rtable)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:329,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/print.c:333,1
    - Dst: Assert
      Src: /src/postgres/src/backend/nodes/print.c:357,1
    - Dst: list_length
      Src: /src/postgres/src/backend/nodes/print.c:358,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/nodes/print.c:359,1
    - Dst: get_rte_attribute_name
      Src: /src/postgres/src/backend/nodes/print.c:361,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:365,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/print.c:367,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:376,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/nodes/print.c:380,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/nodes/print.c:383,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:384,1
    - Dst: pfree
      Src: /src/postgres/src/backend/nodes/print.c:385,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/print.c:387,1
    - Dst: get_opname
      Src: /src/postgres/src/backend/nodes/print.c:392,1
    - Dst: list_length
      Src: /src/postgres/src/backend/nodes/print.c:393,1
    - Dst: print_expr
      Src: /src/postgres/src/backend/nodes/print.c:395,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/nodes/print.c:395,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:396,1
    - Dst: print_expr
      Src: /src/postgres/src/backend/nodes/print.c:397,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/nodes/print.c:397,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:401,1
    - Dst: print_expr
      Src: /src/postgres/src/backend/nodes/print.c:402,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/nodes/print.c:402,1
    - Dst: IsA
      Src: /src/postgres/src/backend/nodes/print.c:405,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/nodes/print.c:411,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:412,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/print.c:413,1
    - Dst: print_expr
      Src: /src/postgres/src/backend/nodes/print.c:415,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/print.c:415,1
    - Dst: lnext
      Src: /src/postgres/src/backend/nodes/print.c:416,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:417,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:419,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:422,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 61
    argCount: 2
    argNames:
    - expr
    - rtable
    argTypes:
    - Node*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 324
    functionDepth: 2
    functionLinenumber: 324
    functionLinenumberEnd: 423
    functionName: print_expr
    functionSourceFile: /src/postgres/src/backend/nodes/print.c
    functionUses: 1
    functionsReached:
    - print_expr
    - printf
    - Assert
    - pfree
    - getTypeOutputInfo
    - get_rte_attribute_name
    - get_opname
    - IsA
    - get_func_name
    - list_length
    - get_leftop
    - OidOutputFunctionCall
    - get_rightop
    - foreach
    - lnext
    - rt_fetch
    - lfirst
    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:434,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/print.c:437,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:447,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/print.c:448,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/print.c:450,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:455,1
    - Dst: print_expr
      Src: /src/postgres/src/backend/nodes/print.c:456,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:458,1
    - Dst: lnext
      Src: /src/postgres/src/backend/nodes/print.c:459,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:460,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:462,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - pathkeys
    - rtable
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 429
    functionDepth: 3
    functionLinenumber: 429
    functionLinenumberEnd: 463
    functionName: print_pathkeys
    functionSourceFile: /src/postgres/src/backend/nodes/print.c
    functionUses: 0
    functionsReached:
    - print_expr
    - printf
    - lnext
    - foreach
    - lfirst
    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:437,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:447,1
    - Dst: foreach
      Src: /src/postgres/src/backend/nodes/print.c:448,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/print.c:450,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:455,1
    - Dst: print_expr
      Src: /src/postgres/src/backend/nodes/print.c:456,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:458,1
    - Dst: lnext
      Src: /src/postgres/src/backend/nodes/print.c:459,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:460,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 435
    functionDepth: 3
    functionLinenumber: 435
    functionLinenumberEnd: 461
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/print.c
    functionUses: 345
    functionsReached:
    - print_expr
    - printf
    - lnext
    - foreach
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(i, pathkeys)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:474,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/nodes/print.c:477,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:479,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:482,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:484,1
    - Dst: print_expr
      Src: /src/postgres/src/backend/nodes/print.c:485,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
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - tlist
    - rtable
    argTypes:
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 469
    functionDepth: 3
    functionLinenumber: 469
    functionLinenumberEnd: 489
    functionName: print_tl
    functionSourceFile: /src/postgres/src/backend/nodes/print.c
    functionUses: 0
    functionsReached:
    - print_expr
    - printf
    - lfirst
    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:477,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:479,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:482,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:484,1
    - Dst: print_expr
      Src: /src/postgres/src/backend/nodes/print.c:485,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:486,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 475
    functionDepth: 3
    functionLinenumber: 475
    functionLinenumberEnd: 487
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/nodes/print.c
    functionUses: 345
    functionsReached:
    - print_expr
    - printf
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(tl, tlist)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/nodes/print.c:498,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:500,1
    - Dst: printf
      Src: /src/postgres/src/backend/nodes/print.c:505,1
    - Dst: debugtup
      Src: /src/postgres/src/backend/nodes/print.c:509,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 495
    functionDepth: 4
    functionLinenumber: 495
    functionLinenumberEnd: 510
    functionName: print_slot
    functionSourceFile: /src/postgres/src/backend/nodes/print.c
    functionUses: 0
    functionsReached:
    - printf
    - debugtup
    - TupIsNull
    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:
    - malloc
    - GetFullPathName
    - GetLastError
    - elog
    - strcpy
    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:
    - OpenFileMapping
    - GetSharedMemName
    - free
    - CloseHandle
    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:
    - errmsg
    - errcode
    - AdjustTokenPrivileges
    - GetCurrentProcess
    - LookupPrivilegeValue
    - GetLastError
    - ereport
    - errhint
    - _
    - CloseHandle
    - errdetail
    - 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:
    - CreateFileMapping
    - MapViewOfFileEx
    - errhint
    - Sleep
    - CloseHandle
    - errdetail
    - SetConfigOption
    - DuplicateHandle
    - GetSharedMemName
    - errmsg
    - on_shmem_exit
    - GetCurrentProcess
    - GetLargePageMinimum
    - elog
    - getpid
    - EnableLockPagesPrivilege
    - Assert
    - SetLastError
    - GetLastError
    - ereport
    - errmsg_internal
    - PointerGetDatum
    - VirtualAlloc
    - errcode
    - free
    - MAXALIGN
    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:
    - Assert
    - GetLastError
    - dsm_set_control_handle
    - MapViewOfFileEx
    - elog
    - VirtualFree
    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:
    - GetLastError
    - elog
    - UnmapViewOfFile
    - CloseHandle
    - VirtualFree
    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
    - DatumGetPointer
    - PGSharedMemoryDetach
    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: 2
    argCount: 1
    argNames:
    - maxSemas
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 35
    functionName: PGSemaphoreShmemSize
    functionSourceFile: /src/postgres/src/backend/port/win32_sema.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Size
    signature: Size PGSemaphoreShmemSize(int maxSemas)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/postgres/src/backend/port/win32_sema.c:49,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/win32_sema.c:51,1
    - Dst: on_shmem_exit
      Src: /src/postgres/src/backend/port/win32_sema.c:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - maxSemas
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 56
    functionName: PGReserveSemaphores
    functionSourceFile: /src/postgres/src/backend/port/win32_sema.c
    functionUses: 0
    functionsReached:
    - elog
    - malloc
    - on_shmem_exit
    linkageType: ''
    returnType: void
    signature: void PGReserveSemaphores(int maxSemas)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CloseHandle
      Src: /src/postgres/src/backend/port/win32_sema.c:69,1
    - Dst: free
      Src: /src/postgres/src/backend/port/win32_sema.c:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 71
    functionName: ReleaseSemaphores
    functionSourceFile: /src/postgres/src/backend/port/win32_sema.c
    functionUses: 0
    functionsReached:
    - free
    - CloseHandle
    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:85,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/win32_sema.c:88,1
    - Dst: ZeroMemory
      Src: /src/postgres/src/backend/port/win32_sema.c:90,1
    - Dst: CreateSemaphore
      Src: /src/postgres/src/backend/port/win32_sema.c:96,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32_sema.c:103,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/win32_sema.c:104,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_sema.c:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 108
    functionName: PGSemaphoreCreate
    functionSourceFile: /src/postgres/src/backend/port/win32_sema.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - ZeroMemory
    - ereport
    - GetLastError
    - elog
    - CreateSemaphore
    linkageType: ''
    returnType: PGSemaphore
    signature: PGSemaphore PGSemaphoreCreate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PGSemaphoreTryLock
      Src: /src/postgres/src/backend/port/win32_sema.c:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - sema
    argTypes:
    - PGSemaphore
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 124
    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:155,1
    - Dst: WaitForMultipleObjectsEx
      Src: /src/postgres/src/backend/port/win32_sema.c:157,1
    - Dst: pgwin32_dispatch_queued_signals
      Src: /src/postgres/src/backend/port/win32_sema.c:162,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32_sema.c:179,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/win32_sema.c:180,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_sema.c:181,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/win32_sema.c:184,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - sema
    argTypes:
    - PGSemaphore
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 188
    functionName: PGSemaphoreLock
    functionSourceFile: /src/postgres/src/backend/port/win32_sema.c
    functionUses: 1
    functionsReached:
    - errmsg
    - WaitForMultipleObjectsEx
    - CHECK_FOR_INTERRUPTS
    - GetLastError
    - ereport
    - pgwin32_dispatch_queued_signals
    - elog
    linkageType: ''
    returnType: void
    signature: void PGSemaphoreLock(PGSemaphore sema)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReleaseSemaphore
      Src: /src/postgres/src/backend/port/win32_sema.c:198,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32_sema.c:199,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/win32_sema.c:200,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_sema.c:201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - sema
    argTypes:
    - PGSemaphore
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 202
    functionName: PGSemaphoreUnlock
    functionSourceFile: /src/postgres/src/backend/port/win32_sema.c
    functionUses: 1
    functionsReached:
    - errmsg
    - ereport
    - GetLastError
    - ReleaseSemaphore
    linkageType: ''
    returnType: void
    signature: void PGSemaphoreUnlock(PGSemaphore sema)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: WaitForSingleObject
      Src: /src/postgres/src/backend/port/win32_sema.c:214,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32_sema.c:229,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/win32_sema.c:230,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32_sema.c:231,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - sema
    argTypes:
    - PGSemaphore
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 235
    functionName: PGSemaphoreTryLock
    functionSourceFile: /src/postgres/src/backend/port/win32_sema.c
    functionUses: 1
    functionsReached:
    - errmsg
    - WaitForSingleObject
    - GetLastError
    - ereport
    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: 1
    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: 1
    functionLinenumber: 33
    functionLinenumberEnd: 59
    functionName: pg_atomic_compare_exchange_u64_impl
    functionSourceFile: /src/postgres/src/backend/port/atomics.c
    functionUses: 6
    functionsReached:
    - SpinLockRelease
    - SpinLockAcquire
    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: 1
    functionLinenumber: 61
    functionLinenumberEnd: 71
    functionName: pg_atomic_fetch_add_u64_impl
    functionSourceFile: /src/postgres/src/backend/port/atomics.c
    functionUses: 4
    functionsReached:
    - SpinLockRelease
    - SpinLockAcquire
    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:97,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/sysv_sema.c:119,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/sysv_sema.c:120,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/port/sysv_sema.c:121,1
    - Dst: errhint
      Src: /src/postgres/src/backend/port/sysv_sema.c:125,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - semKey
    - numSems
    argTypes:
    - IpcSemaphoreKey
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 136
    functionName: InternalIpcSemaphoreCreate
    functionSourceFile: /src/postgres/src/backend/port/sysv_sema.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - errhint
    - semget
    - errdetail
    linkageType: ''
    returnType: IpcSemaphoreId
    signature: IpcSemaphoreId InternalIpcSemaphoreCreate(IpcSemaphoreKey semKey, int
      numSems)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: semctl
      Src: /src/postgres/src/backend/port/sysv_sema.c:147,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/sysv_sema.c:151,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/port/sysv_sema.c:152,1
    - Dst: errhint
      Src: /src/postgres/src/backend/port/sysv_sema.c:155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - semId
    - semNum
    - value
    argTypes:
    - IpcSemaphoreId
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 159
    functionName: IpcSemaphoreInitialize
    functionSourceFile: /src/postgres/src/backend/port/sysv_sema.c
    functionUses: 0
    functionsReached:
    - errhint
    - semctl
    - errmsg_internal
    - ereport
    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:171,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_sema.c:172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - semId
    argTypes:
    - IpcSemaphoreId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 173
    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:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - semId
    - semNum
    argTypes:
    - IpcSemaphoreId
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 184
    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:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - semId
    - semNum
    argTypes:
    - IpcSemaphoreId
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 195
    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:220,1
    - Dst: semget
      Src: /src/postgres/src/backend/port/sysv_sema.c:225,1
    - Dst: IpcSemaphoreGetValue
      Src: /src/postgres/src/backend/port/sysv_sema.c:228,1
    - Dst: IpcSemaphoreGetLastPID
      Src: /src/postgres/src/backend/port/sysv_sema.c:235,1
    - Dst: getpid
      Src: /src/postgres/src/backend/port/sysv_sema.c:238,1
    - Dst: kill
      Src: /src/postgres/src/backend/port/sysv_sema.c:240,1
    - Dst: semctl
      Src: /src/postgres/src/backend/port/sysv_sema.c:251,1
    - Dst: InternalIpcSemaphoreCreate
      Src: /src/postgres/src/backend/port/sysv_sema.c:257,1
    - Dst: IpcSemaphoreInitialize
      Src: /src/postgres/src/backend/port/sysv_sema.c:274,1
    - Dst: PGSemaphoreUnlock
      Src: /src/postgres/src/backend/port/sysv_sema.c:277,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 29
    argCount: 1
    argNames:
    - numSems
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 207
    functionDepth: 2
    functionLinenumber: 207
    functionLinenumberEnd: 280
    functionName: IpcSemaphoreCreate
    functionSourceFile: /src/postgres/src/backend/port/sysv_sema.c
    functionUses: 1
    functionsReached:
    - IpcSemaphoreGetValue
    - InternalIpcSemaphoreCreate
    - IpcSemaphoreGetLastPID
    - kill
    - getpid
    - semctl
    - PGSemaphoreUnlock
    - IpcSemaphoreInitialize
    - semget
    linkageType: ''
    returnType: IpcSemaphoreId
    signature: IpcSemaphoreId IpcSemaphoreCreate(int numSems)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mul_size
      Src: /src/postgres/src/backend/port/sysv_sema.c:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - maxSemas
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 290
    functionName: PGSemaphoreShmemSize
    functionSourceFile: /src/postgres/src/backend/port/sysv_sema.c
    functionUses: 0
    functionsReached:
    - mul_size
    linkageType: ''
    returnType: Size
    signature: Size PGSemaphoreShmemSize(int maxSemas)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/postgres/src/backend/port/sysv_sema.c:320,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/sysv_sema.c:321,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/port/sysv_sema.c:322,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/sysv_sema.c:323,1
    - Dst: ShmemAllocUnlocked
      Src: /src/postgres/src/backend/port/sysv_sema.c:331,1
    - Dst: PGSemaphoreShmemSize
      Src: /src/postgres/src/backend/port/sysv_sema.c:331,1
    - Dst: malloc
      Src: /src/postgres/src/backend/port/sysv_sema.c:337,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_sema.c:339,1
    - Dst: on_shmem_exit
      Src: /src/postgres/src/backend/port/sysv_sema.c:344,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - maxSemas
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 309
    functionDepth: 1
    functionLinenumber: 309
    functionLinenumberEnd: 345
    functionName: PGReserveSemaphores
    functionSourceFile: /src/postgres/src/backend/port/sysv_sema.c
    functionUses: 0
    functionsReached:
    - errmsg
    - malloc
    - on_shmem_exit
    - stat
    - ereport
    - elog
    - ShmemAllocUnlocked
    - PGSemaphoreShmemSize
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void PGReserveSemaphores(int maxSemas)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IpcSemaphoreKill
      Src: /src/postgres/src/backend/port/sysv_sema.c:358,1
    - Dst: free
      Src: /src/postgres/src/backend/port/sysv_sema.c:359,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - status
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 352
    functionDepth: 2
    functionLinenumber: 352
    functionLinenumberEnd: 360
    functionName: ReleaseSemaphores
    functionSourceFile: /src/postgres/src/backend/port/sysv_sema.c
    functionUses: 0
    functionsReached:
    - IpcSemaphoreKill
    - free
    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:373,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_sema.c:379,1
    - Dst: IpcSemaphoreCreate
      Src: /src/postgres/src/backend/port/sysv_sema.c:380,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_sema.c:386,1
    - Dst: IpcSemaphoreInitialize
      Src: /src/postgres/src/backend/port/sysv_sema.c:392,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 367
    functionDepth: 3
    functionLinenumber: 367
    functionLinenumberEnd: 395
    functionName: PGSemaphoreCreate
    functionSourceFile: /src/postgres/src/backend/port/sysv_sema.c
    functionUses: 0
    functionsReached:
    - IpcSemaphoreInitialize
    - Assert
    - elog
    - IpcSemaphoreCreate
    linkageType: ''
    returnType: PGSemaphore
    signature: PGSemaphore PGSemaphoreCreate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IpcSemaphoreInitialize
      Src: /src/postgres/src/backend/port/sysv_sema.c:405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sema
    argTypes:
    - PGSemaphore
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 402
    functionDepth: 2
    functionLinenumber: 402
    functionLinenumberEnd: 406
    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:434,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_sema.c:438,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - sema
    argTypes:
    - PGSemaphore
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 413
    functionDepth: 1
    functionLinenumber: 413
    functionLinenumberEnd: 439
    functionName: PGSemaphoreLock
    functionSourceFile: /src/postgres/src/backend/port/sysv_sema.c
    functionUses: 1
    functionsReached:
    - semop
    - elog
    linkageType: ''
    returnType: void
    signature: void PGSemaphoreLock(PGSemaphore sema)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: semop
      Src: /src/postgres/src/backend/port/sysv_sema.c:464,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_sema.c:468,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - sema
    argTypes:
    - PGSemaphore
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 446
    functionDepth: 1
    functionLinenumber: 446
    functionLinenumberEnd: 469
    functionName: PGSemaphoreUnlock
    functionSourceFile: /src/postgres/src/backend/port/sysv_sema.c
    functionUses: 2
    functionsReached:
    - semop
    - elog
    linkageType: ''
    returnType: void
    signature: void PGSemaphoreUnlock(PGSemaphore sema)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: semop
      Src: /src/postgres/src/backend/port/sysv_sema.c:493,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_sema.c:508,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 1
    argNames:
    - sema
    argTypes:
    - PGSemaphore
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 476
    functionDepth: 1
    functionLinenumber: 476
    functionLinenumberEnd: 512
    functionName: PGSemaphoreTryLock
    functionSourceFile: /src/postgres/src/backend/port/sysv_sema.c
    functionUses: 1
    functionsReached:
    - semop
    - elog
    linkageType: ''
    returnType: bool
    signature: bool PGSemaphoreTryLock(PGSemaphore sema)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/postgres/src/backend/port/sysv_shmem.c:139,1
    - Dst: strtoul
      Src: /src/postgres/src/backend/port/sysv_shmem.c:142,1
    - Dst: shmget
      Src: /src/postgres/src/backend/port/sysv_shmem.c:156,1
    - Dst: shmget
      Src: /src/postgres/src/backend/port/sysv_shmem.c:186,1
    - Dst: shmctl
      Src: /src/postgres/src/backend/port/sysv_shmem.c:207,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:208,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/sysv_shmem.c:223,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/sysv_shmem.c:224,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/port/sysv_shmem.c:225,1
    - Dst: errhint
      Src: /src/postgres/src/backend/port/sysv_shmem.c:229,1
    - Dst: errhint
      Src: /src/postgres/src/backend/port/sysv_shmem.c:236,1
    - Dst: errhint
      Src: /src/postgres/src/backend/port/sysv_shmem.c:242,1
    - Dst: on_shmem_exit
      Src: /src/postgres/src/backend/port/sysv_shmem.c:252,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/port/sysv_shmem.c:252,1
    - Dst: shmat
      Src: /src/postgres/src/backend/port/sysv_shmem.c:255,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:258,1
    - Dst: on_shmem_exit
      Src: /src/postgres/src/backend/port/sysv_shmem.c:262,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/port/sysv_shmem.c:262,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/port/sysv_shmem.c:272,1
    - Dst: AddToDataDirLockFile
      Src: /src/postgres/src/backend/port/sysv_shmem.c:274,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 32
    argCount: 2
    argNames:
    - memKey
    - size
    argTypes:
    - IpcMemoryKey
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 278
    functionName: InternalIpcMemoryCreate
    functionSourceFile: /src/postgres/src/backend/port/sysv_shmem.c
    functionUses: 0
    functionsReached:
    - getenv
    - errmsg
    - on_shmem_exit
    - Int32GetDatum
    - strtoul
    - shmget
    - AddToDataDirLockFile
    - ereport
    - PointerGetDatum
    - shmat
    - elog
    - errhint
    - shmctl
    - sprintf
    - errdetail
    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:289,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/port/sysv_shmem.c:289,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:290,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/port/sysv_shmem.c:290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - status
    - shmaddr
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 285
    functionDepth: 1
    functionLinenumber: 285
    functionLinenumberEnd: 291
    functionName: IpcMemoryDetach
    functionSourceFile: /src/postgres/src/backend/port/sysv_shmem.c
    functionUses: 0
    functionsReached:
    - shmdt
    - elog
    - 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:300,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/port/sysv_shmem.c:300,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:301,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/port/sysv_shmem.c:302,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - status
    - shmId
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 303
    functionName: IpcMemoryDelete
    functionSourceFile: /src/postgres/src/backend/port/sysv_shmem.c
    functionUses: 0
    functionsReached:
    - elog
    - DatumGetInt32
    - shmctl
    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:322,1
    - Dst: shmdt
      Src: /src/postgres/src/backend/port/sysv_shmem.c:323,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:324,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - id1
    - id2
    argTypes:
    - unsigned long
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 316
    functionDepth: 1
    functionLinenumber: 316
    functionLinenumberEnd: 336
    functionName: PGSharedMemoryIsInUse
    functionSourceFile: /src/postgres/src/backend/port/sysv_shmem.c
    functionUses: 0
    functionsReached:
    - shmdt
    - elog
    - PGSharedMemoryAttach
    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:360,1
    - Dst: stat
      Src: /src/postgres/src/backend/port/sysv_shmem.c:408,1
    - Dst: shmat
      Src: /src/postgres/src/backend/port/sysv_shmem.c:411,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 3
    argNames:
    - shmId
    - attachAt
    - addr
    argTypes:
    - IpcMemoryId
    - void*
    - PGShmemHeader**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 346
    functionDepth: 1
    functionLinenumber: 346
    functionLinenumberEnd: 454
    functionName: PGSharedMemoryAttach
    functionSourceFile: /src/postgres/src/backend/port/sysv_shmem.c
    functionUses: 1
    functionsReached:
    - stat
    - shmat
    - shmctl
    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:496,1
    - Dst: fgets
      Src: /src/postgres/src/backend/port/sysv_shmem.c:503,1
    - Dst: sscanf
      Src: /src/postgres/src/backend/port/sysv_shmem.c:505,1
    - Dst: FreeFile
      Src: /src/postgres/src/backend/port/sysv_shmem.c:515,1
    - Dst: pg_ceil_log2_64
      Src: /src/postgres/src/backend/port/sysv_shmem.c:552,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 2
    argNames:
    - hugepagesize
    - mmap_flags
    argTypes:
    - Size*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 478
    functionDepth: 3
    functionLinenumber: 478
    functionLinenumberEnd: 572
    functionName: GetHugePageSize
    functionSourceFile: /src/postgres/src/backend/port/sysv_shmem.c
    functionUses: 0
    functionsReached:
    - FreeFile
    - pg_ceil_log2_64
    - sscanf
    - fgets
    - AllocateFile
    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:584,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - int*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 577
    functionDepth: 0
    functionLinenumber: 577
    functionLinenumberEnd: 589
    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:607,1
    - Dst: GetHugePageSize
      Src: /src/postgres/src/backend/port/sysv_shmem.c:617,1
    - Dst: mmap
      Src: /src/postgres/src/backend/port/sysv_shmem.c:622,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:626,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/port/sysv_shmem.c:636,1
    - Dst: mmap
      Src: /src/postgres/src/backend/port/sysv_shmem.c:646,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/sysv_shmem.c:654,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/sysv_shmem.c:655,1
    - Dst: errhint
      Src: /src/postgres/src/backend/port/sysv_shmem.c:657,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 1
    argNames:
    - size
    argTypes:
    - Size*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 598
    functionDepth: 1
    functionLinenumber: 598
    functionLinenumberEnd: 668
    functionName: CreateAnonymousSegment
    functionSourceFile: /src/postgres/src/backend/port/sysv_shmem.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - mmap
    - SetConfigOption
    - GetHugePageSize
    - ereport
    - elog
    - errhint
    linkageType: ''
    returnType: void
    signature: 'void *

      CreateAnonymousSegment(Size *size)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: munmap
      Src: /src/postgres/src/backend/port/sysv_shmem.c:680,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:681,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - status
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 674
    functionDepth: 1
    functionLinenumber: 674
    functionLinenumberEnd: 685
    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:714,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/sysv_shmem.c:715,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/port/sysv_shmem.c:716,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/sysv_shmem.c:717,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/sysv_shmem.c:723,1
    - Dst: errcode
      Src: /src/postgres/src/backend/port/sysv_shmem.c:724,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/sysv_shmem.c:725,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/sysv_shmem.c:730,1
    - Dst: errcode
      Src: /src/postgres/src/backend/port/sysv_shmem.c:731,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/sysv_shmem.c:732,1
    - Dst: Assert
      Src: /src/postgres/src/backend/port/sysv_shmem.c:735,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/port/sysv_shmem.c:735,1
    - Dst: CreateAnonymousSegment
      Src: /src/postgres/src/backend/port/sysv_shmem.c:739,1
    - Dst: on_shmem_exit
      Src: /src/postgres/src/backend/port/sysv_shmem.c:743,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/port/sysv_shmem.c:753,1
    - Dst: InternalIpcMemoryCreate
      Src: /src/postgres/src/backend/port/sysv_shmem.c:772,1
    - Dst: shmget
      Src: /src/postgres/src/backend/port/sysv_shmem.c:783,1
    - Dst: PGSharedMemoryAttach
      Src: /src/postgres/src/backend/port/sysv_shmem.c:790,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/sysv_shmem.c:796,1
    - Dst: errcode
      Src: /src/postgres/src/backend/port/sysv_shmem.c:797,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/sysv_shmem.c:798,1
    - Dst: errhint
      Src: /src/postgres/src/backend/port/sysv_shmem.c:801,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:811,1
    - Dst: dsm_cleanup_using_control_segment
      Src: /src/postgres/src/backend/port/sysv_shmem.c:832,1
    - Dst: shmctl
      Src: /src/postgres/src/backend/port/sysv_shmem.c:833,1
    - Dst: shmdt
      Src: /src/postgres/src/backend/port/sysv_shmem.c:838,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:839,1
    - Dst: getpid
      Src: /src/postgres/src/backend/port/sysv_shmem.c:844,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/port/sysv_shmem.c:856,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/port/sysv_shmem.c:871,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 64
    argCount: 2
    argNames:
    - size
    - shim
    argTypes:
    - Size
    - PGShmemHeader**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 873
      start: 699
    functionDepth: 2
    functionLinenumber: 699
    functionLinenumberEnd: 873
    functionName: PGSharedMemoryCreate
    functionSourceFile: /src/postgres/src/backend/port/sysv_shmem.c
    functionUses: 0
    functionsReached:
    - errhint
    - errcode_for_file_access
    - SetConfigOption
    - shmget
    - InternalIpcMemoryCreate
    - memcpy
    - errmsg
    - on_shmem_exit
    - stat
    - CreateAnonymousSegment
    - elog
    - getpid
    - shmctl
    - Assert
    - PGSharedMemoryAttach
    - ereport
    - shmdt
    - dsm_cleanup_using_control_segment
    - errcode
    - MAXALIGN
    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:897,1
    - Dst: Assert
      Src: /src/postgres/src/backend/port/sysv_shmem.c:898,1
    - Dst: PGSharedMemoryDetach
      Src: /src/postgres/src/backend/port/sysv_shmem.c:902,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:906,1
    - Dst: shmget
      Src: /src/postgres/src/backend/port/sysv_shmem.c:907,1
    - Dst: PGSharedMemoryAttach
      Src: /src/postgres/src/backend/port/sysv_shmem.c:911,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:913,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:916,1
    - Dst: dsm_set_control_handle
      Src: /src/postgres/src/backend/port/sysv_shmem.c:918,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 889
    functionDepth: 2
    functionLinenumber: 889
    functionLinenumberEnd: 921
    functionName: PGSharedMemoryReAttach
    functionSourceFile: /src/postgres/src/backend/port/sysv_shmem.c
    functionUses: 0
    functionsReached:
    - Assert
    - PGSharedMemoryDetach
    - shmget
    - PGSharedMemoryAttach
    - dsm_set_control_handle
    - elog
    linkageType: ''
    returnType: void
    signature: void PGSharedMemoryReAttach(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/port/sysv_shmem.c:941,1
    - Dst: Assert
      Src: /src/postgres/src/backend/port/sysv_shmem.c:942,1
    - Dst: PGSharedMemoryDetach
      Src: /src/postgres/src/backend/port/sysv_shmem.c:946,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 938
    functionDepth: 1
    functionLinenumber: 938
    functionLinenumberEnd: 953
    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:974,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:980,1
    - Dst: munmap
      Src: /src/postgres/src/backend/port/sysv_shmem.c:986,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/sysv_shmem.c:987,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 969
    functionDepth: 1
    functionLinenumber: 969
    functionLinenumberEnd: 991
    functionName: PGSharedMemoryDetach
    functionSourceFile: /src/postgres/src/backend/port/sysv_shmem.c
    functionUses: 4
    functionsReached:
    - shmdt
    - elog
    - 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
    - snprintf
    - sem_unlink
    - sem_open
    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_close
    - sem_destroy
    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: 3
    argCount: 1
    argNames:
    - maxSemas
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 174
    functionName: PGSemaphoreShmemSize
    functionSourceFile: /src/postgres/src/backend/port/posix_sema.c
    functionUses: 1
    functionsReached:
    - mul_size
    linkageType: ''
    returnType: Size
    signature: Size PGSemaphoreShmemSize(int maxSemas)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/postgres/src/backend/port/posix_sema.c:206,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/posix_sema.c:207,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/port/posix_sema.c:208,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/posix_sema.c:209,1
    - Dst: malloc
      Src: /src/postgres/src/backend/port/posix_sema.c:213,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/posix_sema.c:215,1
    - Dst: ShmemAllocUnlocked
      Src: /src/postgres/src/backend/port/posix_sema.c:223,1
    - Dst: PGSemaphoreShmemSize
      Src: /src/postgres/src/backend/port/posix_sema.c:223,1
    - Dst: on_shmem_exit
      Src: /src/postgres/src/backend/port/posix_sema.c:230,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - maxSemas
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 231
    functionName: PGReserveSemaphores
    functionSourceFile: /src/postgres/src/backend/port/posix_sema.c
    functionUses: 0
    functionsReached:
    - errmsg
    - malloc
    - on_shmem_exit
    - stat
    - ereport
    - elog
    - ShmemAllocUnlocked
    - PGSemaphoreShmemSize
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void PGReserveSemaphores(int maxSemas)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PosixSemaphoreKill
      Src: /src/postgres/src/backend/port/posix_sema.c:245,1
    - Dst: free
      Src: /src/postgres/src/backend/port/posix_sema.c:246,1
    - Dst: PosixSemaphoreKill
      Src: /src/postgres/src/backend/port/posix_sema.c:251,1
    - Dst: PG_SEM_REF
      Src: /src/postgres/src/backend/port/posix_sema.c:251,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - status
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 238
    functionDepth: 2
    functionLinenumber: 238
    functionLinenumberEnd: 253
    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:267,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/posix_sema.c:270,1
    - Dst: PosixSemaphoreCreate
      Src: /src/postgres/src/backend/port/posix_sema.c:273,1
    - Dst: PG_SEM_REF
      Src: /src/postgres/src/backend/port/posix_sema.c:279,1
    - Dst: PosixSemaphoreCreate
      Src: /src/postgres/src/backend/port/posix_sema.c:280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 260
    functionDepth: 2
    functionLinenumber: 260
    functionLinenumberEnd: 286
    functionName: PGSemaphoreCreate
    functionSourceFile: /src/postgres/src/backend/port/posix_sema.c
    functionUses: 0
    functionsReached:
    - PosixSemaphoreCreate
    - Assert
    - PG_SEM_REF
    - elog
    linkageType: ''
    returnType: PGSemaphore
    signature: PGSemaphore PGSemaphoreCreate(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sem_trywait
      Src: /src/postgres/src/backend/port/posix_sema.c:302,1
    - Dst: PG_SEM_REF
      Src: /src/postgres/src/backend/port/posix_sema.c:302,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/posix_sema.c:308,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 10
    argCount: 1
    argNames:
    - sema
    argTypes:
    - PGSemaphore
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 311
    functionName: PGSemaphoreReset
    functionSourceFile: /src/postgres/src/backend/port/posix_sema.c
    functionUses: 0
    functionsReached:
    - elog
    - PG_SEM_REF
    - sem_trywait
    linkageType: ''
    returnType: void
    signature: void PGSemaphoreReset(PGSemaphore sema)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sem_wait
      Src: /src/postgres/src/backend/port/posix_sema.c:326,1
    - Dst: PG_SEM_REF
      Src: /src/postgres/src/backend/port/posix_sema.c:326,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/posix_sema.c:330,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - sema
    argTypes:
    - PGSemaphore
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 331
    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:351,1
    - Dst: PG_SEM_REF
      Src: /src/postgres/src/backend/port/posix_sema.c:351,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/posix_sema.c:355,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - sema
    argTypes:
    - PGSemaphore
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 356
    functionName: PGSemaphoreUnlock
    functionSourceFile: /src/postgres/src/backend/port/posix_sema.c
    functionUses: 2
    functionsReached:
    - elog
    - PG_SEM_REF
    - sem_post
    linkageType: ''
    returnType: void
    signature: void PGSemaphoreUnlock(PGSemaphore sema)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sem_trywait
      Src: /src/postgres/src/backend/port/posix_sema.c:375,1
    - Dst: PG_SEM_REF
      Src: /src/postgres/src/backend/port/posix_sema.c:375,1
    - Dst: elog
      Src: /src/postgres/src/backend/port/posix_sema.c:383,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - sema
    argTypes:
    - PGSemaphore
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 363
    functionDepth: 1
    functionLinenumber: 363
    functionLinenumberEnd: 387
    functionName: PGSemaphoreTryLock
    functionSourceFile: /src/postgres/src/backend/port/posix_sema.c
    functionUses: 1
    functionsReached:
    - elog
    - PG_SEM_REF
    - sem_trywait
    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:
    - WSAGetLastError
    - errmsg_internal
    - ereport
    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:
    - UNBLOCKED_SIGNAL_QUEUE
    - pgwin32_dispatch_queued_signals
    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:
    - WaitForMultipleObjectsEx
    - TranslateSocketError
    - WSAGetLastError
    - CreateEvent
    - WSAEventSelect
    - GetLastError
    - errmsg_internal
    - ereport
    - isDataGram
    - pgwin32_dispatch_queued_signals
    - ResetEvent
    - WSASend
    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:
    - TranslateSocketError
    - ioctlsocket
    - closesocket
    - WSASocket
    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:
    - WSAAccept
    - pgwin32_poll_signals
    - TranslateSocketError
    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:
    - WSAGetLastError
    - TranslateSocketError
    - pgwin32_waitforsinglesocket
    - WSAConnect
    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
    - WSAGetLastError
    - pgwin32_poll_signals
    - pg_usleep
    - errmsg_internal
    - ereport
    - pgwin32_waitforsinglesocket
    - WSARecv
    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
    - WSAGetLastError
    - pgwin32_poll_signals
    - WSASend
    - pgwin32_waitforsinglesocket
    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:
    - WaitForMultipleObjectsEx
    - Assert
    - TranslateSocketError
    - WSACreateEvent
    - memcpy
    - FD_ISSET
    - WSAGetLastError
    - pgwin32_poll_signals
    - WSAEventSelect
    - WSACloseEvent
    - ZeroMemory
    - pgwin32_dispatch_queued_signals
    - WSAEnumNetworkEvents
    - elog
    - FD_SET
    - FD_ZERO
    - WSASend
    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:96,1
    - Dst: GetCurrentProcess
      Src: /src/postgres/src/backend/port/win32/crashdump.c:105,1
    - Dst: GetProcessId
      Src: /src/postgres/src/backend/port/win32/crashdump.c:106,1
    - Dst: GetCurrentThreadId
      Src: /src/postgres/src/backend/port/win32/crashdump.c:111,1
    - Dst: LoadLibrary
      Src: /src/postgres/src/backend/port/win32/crashdump.c:116,1
    - Dst: write_stderr
      Src: /src/postgres/src/backend/port/win32/crashdump.c:119,1
    - Dst: GetProcAddress
      Src: /src/postgres/src/backend/port/win32/crashdump.c:123,1
    - Dst: write_stderr
      Src: /src/postgres/src/backend/port/win32/crashdump.c:127,1
    - Dst: GetProcAddress
      Src: /src/postgres/src/backend/port/win32/crashdump.c:140,1
    - Dst: GetTickCount
      Src: /src/postgres/src/backend/port/win32/crashdump.c:147,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/port/win32/crashdump.c:148,1
    - Dst: CreateFile
      Src: /src/postgres/src/backend/port/win32/crashdump.c:153,1
    - Dst: write_stderr
      Src: /src/postgres/src/backend/port/win32/crashdump.c:158,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32/crashdump.c:159,1
    - Dst: write_stderr
      Src: /src/postgres/src/backend/port/win32/crashdump.c:165,1
    - Dst: write_stderr
      Src: /src/postgres/src/backend/port/win32/crashdump.c:167,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32/crashdump.c:168,1
    - Dst: CloseHandle
      Src: /src/postgres/src/backend/port/win32/crashdump.c:170,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 1
    argNames:
    - pExceptionInfo
    argTypes:
    - struct _EXCEPTION_POINTERS*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 174
    functionName: crashDumpHandler
    functionSourceFile: /src/postgres/src/backend/port/win32/crashdump.c
    functionUses: 0
    functionsReached:
    - LoadLibrary
    - CreateFile
    - GetCurrentThreadId
    - GetCurrentProcess
    - snprintf
    - GetLastError
    - GetProcAddress
    - write_stderr
    - GetProcessId
    - CloseHandle
    - GetFileAttributesA
    - GetTickCount
    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:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 181
    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:
    - EnterCriticalSection
    - Assert
    - LeaveCriticalSection
    - WaitForSingleObjectEx
    - ResetEvent
    - pg_queue_signal
    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:
    - EnterCriticalSection
    - Assert
    - InitializeCriticalSection
    - CreateEvent
    - GetLastError
    - errmsg_internal
    - ereport
    - LeaveCriticalSection
    - CreateThread
    - MemSet
    - SetEvent
    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: 27
    functionsReached:
    - unlikely
    - WaitForSingleObject
    - SleepEx
    - pgwin32_dispatch_queued_signals
    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:
    - InitializeCriticalSection
    - CreateEvent
    - SetConsoleCtrlHandler
    - GetLastError
    - errmsg_internal
    - ereport
    - CreateThread
    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:147,1
    - Dst: sigmask
      Src: /src/postgres/src/backend/port/win32/signal.c:151,1
    - Dst: sigprocmask
      Src: /src/postgres/src/backend/port/win32/signal.c:153,1
    - Dst: sig
      Src: /src/postgres/src/backend/port/win32/signal.c:154,1
    - Dst: sigprocmask
      Src: /src/postgres/src/backend/port/win32/signal.c:155,1
    - Dst: EnterCriticalSection
      Src: /src/postgres/src/backend/port/win32/signal.c:157,1
    - Dst: ResetEvent
      Src: /src/postgres/src/backend/port/win32/signal.c:165,1
    - Dst: LeaveCriticalSection
      Src: /src/postgres/src/backend/port/win32/signal.c:166,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 167
    functionName: pgwin32_dispatch_queued_signals
    functionSourceFile: /src/postgres/src/backend/port/win32/signal.c
    functionUses: 5
    functionsReached:
    - EnterCriticalSection
    - Assert
    - sigmask
    - LeaveCriticalSection
    - UNBLOCKED_SIGNAL_QUEUE
    - sig
    - ResetEvent
    - sigprocmask
    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:199,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - how
    - set
    - oset
    argTypes:
    - int
    - sigset_t*
    - sigset_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 170
    functionDepth: 2
    functionLinenumber: 170
    functionLinenumberEnd: 202
    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: 223
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 223
    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:232,1
    - Dst: CreateNamedPipe
      Src: /src/postgres/src/backend/port/win32/signal.c:234,1
    - Dst: ereport
      Src: /src/postgres/src/backend/port/win32/signal.c:239,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/port/win32/signal.c:240,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32/signal.c:241,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - pid
    argTypes:
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 244
    functionName: pgwin32_create_signal_listener
    functionSourceFile: /src/postgres/src/backend/port/win32/signal.c
    functionUses: 0
    functionsReached:
    - errmsg
    - snprintf
    - CreateNamedPipe
    - GetLastError
    - ereport
    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:261,1
    - Dst: EnterCriticalSection
      Src: /src/postgres/src/backend/port/win32/signal.c:265,1
    - Dst: sigmask
      Src: /src/postgres/src/backend/port/win32/signal.c:266,1
    - Dst: LeaveCriticalSection
      Src: /src/postgres/src/backend/port/win32/signal.c:267,1
    - Dst: SetEvent
      Src: /src/postgres/src/backend/port/win32/signal.c:269,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - signum
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 258
    functionDepth: 1
    functionLinenumber: 258
    functionLinenumberEnd: 270
    functionName: pg_queue_signal
    functionSourceFile: /src/postgres/src/backend/port/win32/signal.c
    functionUses: 1
    functionsReached:
    - EnterCriticalSection
    - Assert
    - sigmask
    - LeaveCriticalSection
    - SetEvent
    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:280,1
    - Dst: GetCurrentProcessId
      Src: /src/postgres/src/backend/port/win32/signal.c:280,1
    - Dst: CreateNamedPipe
      Src: /src/postgres/src/backend/port/win32/signal.c:289,1
    - Dst: write_stderr
      Src: /src/postgres/src/backend/port/win32/signal.c:295,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32/signal.c:295,1
    - Dst: SleepEx
      Src: /src/postgres/src/backend/port/win32/signal.c:296,1
    - Dst: ConnectNamedPipe
      Src: /src/postgres/src/backend/port/win32/signal.c:306,1
    - Dst: GetLastError
      Src: /src/postgres/src/backend/port/win32/signal.c:306,1
    - Dst: ReadFile
      Src: /src/postgres/src/backend/port/win32/signal.c:315,1
    - Dst: pg_queue_signal
      Src: /src/postgres/src/backend/port/win32/signal.c:327,1
    - Dst: WriteFile
      Src: /src/postgres/src/backend/port/win32/signal.c:333,1
    - Dst: FlushFileBuffers
      Src: /src/postgres/src/backend/port/win32/signal.c:342,1
    - Dst: DisconnectNamedPipe
      Src: /src/postgres/src/backend/port/win32/signal.c:354,1
    - Dst: CloseHandle
      Src: /src/postgres/src/backend/port/win32/signal.c:366,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - param
    argTypes:
    - LPVOID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 273
    functionDepth: 2
    functionLinenumber: 273
    functionLinenumberEnd: 371
    functionName: pg_signal_thread
    functionSourceFile: /src/postgres/src/backend/port/win32/signal.c
    functionUses: 0
    functionsReached:
    - DisconnectNamedPipe
    - pg_queue_signal
    - CreateNamedPipe
    - snprintf
    - GetLastError
    - WriteFile
    - write_stderr
    - SleepEx
    - GetCurrentProcessId
    - CloseHandle
    - ReadFile
    - ConnectNamedPipe
    - FlushFileBuffers
    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:384,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - dwCtrlType
    argTypes:
    - DWORD
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 376
    functionDepth: 2
    functionLinenumber: 376
    functionLinenumberEnd: 388
    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
      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:
    - OidFunctionCall1
    - TupleDescGetAttInMetadata
    - MemoryContextSwitchTo
    - lookup_ts_parser_cache
    - elog
    - OidIsValid
    - get_call_result_type
    - palloc
    - 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:
    - HeapTupleGetDatum
    - sprintf
    - BuildTupleFromCStrings
    - pfree
    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_PERCALL_SETUP
    - tt_process_call
    - tt_setup_firstcall
    - PG_GETARG_OID
    - SRF_RETURN_DONE
    - SRF_FIRSTCALL_INIT
    - SRF_IS_FIRSTCALL
    - SRF_RETURN_NEXT
    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_PERCALL_SETUP
    - tt_process_call
    - tt_setup_firstcall
    - PG_GETARG_TEXT_PP
    - textToQualifiedNameList
    - SRF_RETURN_DONE
    - SRF_FIRSTCALL_INIT
    - SRF_IS_FIRSTCALL
    - SRF_RETURN_NEXT
    - get_ts_parser_oid
    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
      Src: /src/postgres/src/backend/tsearch/wparser.c:176,1
    - Dst: palloc
      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: 1
    functionLinenumber: 161
    functionLinenumberEnd: 213
    functionName: prs_setup_firstcall
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser.c
    functionUses: 0
    functionsReached:
    - TupleDescGetAttInMetadata
    - MemoryContextSwitchTo
    - memcpy
    - Int32GetDatum
    - DatumGetInt32
    - FunctionCall1
    - PointerGetDatum
    - lookup_ts_parser_cache
    - elog
    - FunctionCall3
    - FunctionCall2
    - get_call_result_type
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - palloc
    - repalloc
    - 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:
    - HeapTupleGetDatum
    - sprintf
    - BuildTupleFromCStrings
    - pfree
    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: 3
    functionLinenumber: 241
    functionLinenumberEnd: 261
    functionName: ts_parse_byid
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser.c
    functionUses: 0
    functionsReached:
    - prs_setup_firstcall
    - SRF_PERCALL_SETUP
    - PG_FREE_IF_COPY
    - PG_GETARG_TEXT_PP
    - prs_process_call
    - PG_GETARG_OID
    - SRF_RETURN_DONE
    - SRF_FIRSTCALL_INIT
    - SRF_IS_FIRSTCALL
    - SRF_RETURN_NEXT
    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: 3
    functionLinenumber: 263
    functionLinenumberEnd: 285
    functionName: ts_parse_byname
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser.c
    functionUses: 0
    functionsReached:
    - prs_setup_firstcall
    - SRF_PERCALL_SETUP
    - PG_GETARG_TEXT_PP
    - prs_process_call
    - textToQualifiedNameList
    - SRF_RETURN_DONE
    - SRF_FIRSTCALL_INIT
    - SRF_IS_FIRSTCALL
    - SRF_RETURN_NEXT
    - get_ts_parser_oid
    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
      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: 1
    functionLinenumber: 287
    functionLinenumberEnd: 336
    functionName: ts_headline_byid_opt
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser.c
    functionUses: 0
    functionsReached:
    - generateHeadline
    - PG_RETURN_POINTER
    - hlparsetext
    - pfree
    - lookup_ts_config_cache
    - PG_GETARG_OID
    - errmsg
    - PG_GETARG_POINTER
    - OidIsValid
    - deserialize_deflist
    - FunctionCall3
    - VARSIZE_ANY_EXHDR
    - PG_NARGS
    - palloc
    - PG_GETARG_TSQUERY
    - PG_FREE_IF_COPY
    - memset
    - PG_GETARG_TEXT_PP
    - ereport
    - PointerGetDatum
    - lookup_ts_parser_cache
    - VARDATA_ANY
    - errcode
    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_GETARG_DATUM
    - PG_RETURN_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:
    - getTSCurrentConfig
    - DirectFunctionCall3
    - PG_RETURN_DATUM
    - PG_GETARG_DATUM
    - 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:
    - getTSCurrentConfig
    - PG_RETURN_DATUM
    - DirectFunctionCall4
    - PG_GETARG_DATUM
    - ObjectIdGetDatum
    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
      Src: /src/postgres/src/backend/tsearch/wparser.c:376,1
    - Dst: memset
      Src: /src/postgres/src/backend/tsearch/wparser.c:378,1
    - Dst: palloc
      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:
    - pfree
    - lookup_ts_config_cache
    - PG_GETARG_OID
    - PG_GETARG_TEXT_P
    - errmsg
    - PG_GETARG_POINTER
    - OidIsValid
    - deserialize_deflist
    - PG_NARGS
    - palloc
    - PG_GETARG_JSONB_P
    - PG_GETARG_TSQUERY
    - transform_jsonb_string_values
    - PG_FREE_IF_COPY
    - memset
    - PG_RETURN_JSONB_P
    - palloc0
    - PointerGetDatum
    - ereport
    - lookup_ts_parser_cache
    - errcode
    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:
    - getTSCurrentConfig
    - DirectFunctionCall3
    - PG_RETURN_DATUM
    - PG_GETARG_DATUM
    - 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_GETARG_DATUM
    - PG_RETURN_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:
    - getTSCurrentConfig
    - PG_RETURN_DATUM
    - DirectFunctionCall4
    - PG_GETARG_DATUM
    - ObjectIdGetDatum
    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
      Src: /src/postgres/src/backend/tsearch/wparser.c:453,1
    - Dst: memset
      Src: /src/postgres/src/backend/tsearch/wparser.c:455,1
    - Dst: palloc
      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:
    - transform_json_string_values
    - pfree
    - lookup_ts_config_cache
    - PG_GETARG_OID
    - PG_GETARG_TEXT_P
    - errmsg
    - PG_GETARG_POINTER
    - OidIsValid
    - deserialize_deflist
    - PG_RETURN_TEXT_P
    - PG_NARGS
    - palloc
    - PG_GETARG_TSQUERY
    - PG_FREE_IF_COPY
    - memset
    - palloc0
    - PointerGetDatum
    - ereport
    - lookup_ts_parser_cache
    - errcode
    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:
    - getTSCurrentConfig
    - DirectFunctionCall3
    - PG_RETURN_DATUM
    - PG_GETARG_DATUM
    - 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_GETARG_DATUM
    - PG_RETURN_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:
    - getTSCurrentConfig
    - PG_RETURN_DATUM
    - DirectFunctionCall4
    - PG_GETARG_DATUM
    - ObjectIdGetDatum
    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:
    - FunctionCall3
    - generateHeadline
    - PointerGetDatum
    - hlparsetext
    linkageType: ''
    returnType: text
    signature: 'text *

      headline_json_value(void *_state, char *elem_value, int elem_len)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:81,1
    - Dst: repalloc
      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
      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:
    - repalloc
    - memcpy
    - palloc
    linkageType: ''
    returnType: void
    signature: void newLexeme(DictThesaurus *d, char *b, char *e, uint32 idsubst,
      uint16 posinsubst)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:121,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:126,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:140,1
    - Dst: repalloc
      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:
    - repalloc
    - memcpy
    - palloc
    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:175,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
      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
      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
      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
      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
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 76
    argCount: 2
    argNames:
    - filename
    - d
    argTypes:
    - char*
    - DictThesaurus*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 300
    functionName: thesaurusRead
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_thesaurus.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - t_iseq
    - pg_mblen
    - newLexeme
    - tsearch_readline
    - ereport
    - addWrd
    - elog
    - tsearch_readline_end
    - isspace
    - get_tsearch_config_filename
    - errcode
    - tsearch_readline_begin
    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:308,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:311,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:315,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: 331
      start: 302
    functionDepth: 0
    functionLinenumber: 302
    functionLinenumberEnd: 331
    functionName: addCompiledLexeme
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_thesaurus.c
    functionUses: 0
    functionsReached:
    - repalloc
    - palloc
    - pstrdup
    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: 353
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 353
    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:368,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - TheLexeme*
    - TheLexeme*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 369
    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:374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 371
    functionDepth: 1
    functionLinenumber: 371
    functionLinenumberEnd: 375
    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:384,1
    - Dst: cmpLexemeInfo
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:387,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 377
    functionDepth: 1
    functionLinenumber: 377
    functionLinenumberEnd: 388
    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
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:396,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:403,1
    - Dst: addCompiledLexeme
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:404,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:407,1
    - Dst: FunctionCall4
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:407,1
    - Dst: PointerGetDatum
      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: Int32GetDatum
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:410,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:410,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:411,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:414,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:415,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:416,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:420,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:421,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:422,1
    - Dst: errhint
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:425,1
    - Dst: addCompiledLexeme
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:446,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:455,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:460,1
    - Dst: qsort
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:467,1
    - Dst: cmpLexeme
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:474,1
    - Dst: cmpLexemeInfo
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:476,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:482,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:485,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:497,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 55
    argCount: 1
    argNames:
    - d
    argTypes:
    - DictThesaurus*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 390
    functionDepth: 1
    functionLinenumber: 390
    functionLinenumberEnd: 499
    functionName: compileTheLexeme
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_thesaurus.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - qsort
    - cmpLexeme
    - palloc
    - Int32GetDatum
    - FunctionCall4
    - addCompiledLexeme
    - PointerGetDatum
    - ereport
    - cmpLexemeInfo
    - errhint
    - repalloc
    - strcmp
    - DatumGetPointer
    - errcode
    - strlen
    linkageType: ''
    returnType: void
    signature: void compileTheLexeme(DictThesaurus *d)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:513,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:531,1
    - Dst: FunctionCall4
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:531,1
    - Dst: PointerGetDatum
      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: Int32GetDatum
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:534,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:534,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:535,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:549,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:554,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:565,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:566,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:567,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:572,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:573,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:574,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:579,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:584,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:585,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:586,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:591,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 43
    argCount: 1
    argNames:
    - d
    argTypes:
    - DictThesaurus*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 501
    functionDepth: 1
    functionLinenumber: 501
    functionLinenumberEnd: 593
    functionName: compileTheSubstitute
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_thesaurus.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - Int32GetDatum
    - FunctionCall4
    - pstrdup
    - PointerGetDatum
    - ereport
    - repalloc
    - palloc
    - DatumGetPointer
    - errcode
    - strlen
    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:598,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:605,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:609,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:611,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:614,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:615,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:616,1
    - Dst: thesaurusRead
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:617,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:617,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:620,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:623,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:624,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:625,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:626,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:626,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:630,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:631,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:632,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:638,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:639,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:640,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:642,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:643,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:644,1
    - Dst: stringToQualifiedNameList
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:646,1
    - Dst: get_ts_dict_oid
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:647,1
    - Dst: lookup_ts_dictionary_cache
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:648,1
    - Dst: compileTheLexeme
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:650,1
    - Dst: compileTheSubstitute
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:651,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:653,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 595
    functionDepth: 2
    functionLinenumber: 595
    functionLinenumberEnd: 654
    functionName: thesaurus_init
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_thesaurus.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - PG_GETARG_POINTER
    - thesaurusRead
    - compileTheLexeme
    - lookup_ts_dictionary_cache
    - defGetString
    - compileTheSubstitute
    - ereport
    - palloc0
    - pstrdup
    - stringToQualifiedNameList
    - get_ts_dict_oid
    - strcmp
    - lfirst
    - PG_RETURN_POINTER
    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:609,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:611,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:614,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:615,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:616,1
    - Dst: thesaurusRead
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:617,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:617,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:620,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:623,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:624,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:625,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:626,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:626,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:630,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:631,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:632,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 607
    functionDepth: 2
    functionLinenumber: 607
    functionLinenumberEnd: 635
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_thesaurus.c
    functionUses: 345
    functionsReached:
    - errmsg
    - lfirst
    - thesaurusRead
    - defGetString
    - ereport
    - pstrdup
    - strcmp
    - errcode
    linkageType: ''
    returnType: void
    signature: void foreach(l, dictoptions)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bsearch
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:668,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - d
    - lexeme
    argTypes:
    - DictThesaurus*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 656
    functionDepth: 0
    functionLinenumber: 656
    functionLinenumberEnd: 673
    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: 693
      start: 675
    functionDepth: 0
    functionLinenumber: 675
    functionLinenumberEnd: 693
    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:739,1
    - Dst: matchIdSubst
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:739,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: 750
      start: 695
    functionDepth: 1
    functionLinenumber: 695
    functionLinenumberEnd: 750
    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
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:758,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:762,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ts
    argTypes:
    - TheSubstitute*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 752
    functionDepth: 0
    functionLinenumber: 752
    functionLinenumberEnd: 768
    functionName: copyTSLexeme
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_thesaurus.c
    functionUses: 0
    functionsReached:
    - palloc
    - pstrdup
    linkageType: ''
    returnType: TSLexeme
    signature: 'TSLexeme *

      copyTSLexeme(TheSubstitute *ts)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:776,1
    - Dst: copyTSLexeme
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:780,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - d
    - info
    - curpos
    - moreres
    argTypes:
    - DictThesaurus*
    - LexemeInfo*
    - uint16
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 770
    functionDepth: 1
    functionLinenumber: 770
    functionLinenumberEnd: 785
    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:790,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:791,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:798,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:799,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:802,1
    - Dst: lookup_ts_dictionary_cache
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:809,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:811,1
    - Dst: FunctionCall4
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:811,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:812,1
    - Dst: PG_GETARG_DATUM
      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: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:815,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:836,1
    - Dst: findTheLexeme
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:838,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:844,1
    - Dst: findVariant
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:848,1
    - Dst: findTheLexeme
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:853,1
    - Dst: findVariant
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:855,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:867,1
    - Dst: checkMatch
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:870,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:873,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_thesaurus.c:878,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 879
      start: 787
    functionDepth: 2
    functionLinenumber: 787
    functionLinenumberEnd: 879
    functionName: thesaurus_lexize
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_thesaurus.c
    functionUses: 0
    functionsReached:
    - pfree
    - palloc
    - PG_GETARG_POINTER
    - FunctionCall4
    - PointerGetDatum
    - checkMatch
    - elog
    - PG_GETARG_DATUM
    - PG_NARGS
    - findTheLexeme
    - lookup_ts_dictionary_cache
    - DatumGetPointer
    - findVariant
    - PG_RETURN_POINTER
    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
    - palloc0
    - MAXALIGN
    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:
    - cpalloc
    - strlen
    - strcpy
    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:
    - MemoryContextSwitchTo
    - str_tolower
    - strlen
    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:
    - strcmp
    - Assert
    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
      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
    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
      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
    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:
    - strcmp
    - strbcmp
    linkageType: ''
    returnType: int
    signature: int cmpaffix(const void *s1, const void *s2)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: COPYCHAR
      Src: /src/postgres/src/backend/tsearch/spell.c:367,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/spell.c:368,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/spell.c:371,1
    - Dst: strtol
      Src: /src/postgres/src/backend/tsearch/spell.c:379,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:381,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:382,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:383,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:385,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:386,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:387,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/tsearch/spell.c:389,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/tsearch/spell.c:395,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:398,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:399,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:400,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:404,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:407,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:408,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:409,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:413,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:415,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:416,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:417,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/spell.c:421,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/spell.c:426,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:435,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:436,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:437,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 48
    argCount: 3
    argNames:
    - Conf
    - sflagset
    - sflag
    argTypes:
    - IspellDict*
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 441
    functionName: getNextFlagFromString
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - errmsg
    - t_iseq
    - pg_mblen
    - isdigit
    - COPYCHAR
    - ereport
    - strtol
    - elog
    - isspace
    - sprintf
    - errcode
    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:464,1
    - Dst: getNextFlagFromString
      Src: /src/postgres/src/backend/tsearch/spell.c:470,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/spell.c:472,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - Conf
    - affix
    - affixflag
    argTypes:
    - IspellDict*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 455
    functionDepth: 2
    functionLinenumber: 455
    functionLinenumberEnd: 478
    functionName: IsAffixFlagInUse
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - strcmp
    - Assert
    - getNextFlagFromString
    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:495,1
    - Dst: tmpalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:500,1
    - Dst: tmpalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:503,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:503,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/tsearch/spell.c:504,1
    - Dst: cpstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:506,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - Conf
    - word
    - flag
    argTypes:
    - IspellDict*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 487
    functionDepth: 2
    functionLinenumber: 487
    functionLinenumberEnd: 508
    functionName: NIAddSpell
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - tmpalloc
    - cpstrdup
    - repalloc
    - strlen
    - strcpy
    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:524,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:525,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:526,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:527,1
    - Dst: tsearch_readline
      Src: /src/postgres/src/backend/tsearch/spell.c:530,1
    - Dst: findchar
      Src: /src/postgres/src/backend/tsearch/spell.c:540,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/spell.c:547,1
    - Dst: isprint
      Src: /src/postgres/src/backend/tsearch/spell.c:547,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:547,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:563,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/spell.c:568,1
    - Dst: lowerstr_ctx
      Src: /src/postgres/src/backend/tsearch/spell.c:570,1
    - Dst: NIAddSpell
      Src: /src/postgres/src/backend/tsearch/spell.c:572,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:573,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:575,1
    - Dst: tsearch_readline_end
      Src: /src/postgres/src/backend/tsearch/spell.c:577,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 2
    argNames:
    - Conf
    - filename
    argTypes:
    - IspellDict*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 518
    functionDepth: 3
    functionLinenumber: 518
    functionLinenumberEnd: 578
    functionName: NIImportDictionary
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - isprint
    - pg_mblen
    - tsearch_readline
    - ereport
    - lowerstr_ctx
    - NIAddSpell
    - tsearch_readline_end
    - findchar
    - isspace
    - errcode
    - tsearch_readline_begin
    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:642,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 30
    argCount: 4
    argNames:
    - Conf
    - word
    - affixflag
    - flag
    argTypes:
    - IspellDict*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 603
    functionDepth: 3
    functionLinenumber: 603
    functionLinenumberEnd: 658
    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:689,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/spell.c:694,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/spell.c:701,1
    - Dst: RS_isRegis
      Src: /src/postgres/src/backend/tsearch/spell.c:707,1
    - Dst: RS_compile
      Src: /src/postgres/src/backend/tsearch/spell.c:711,1
    - Dst: tmpalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:725,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:725,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/tsearch/spell.c:727,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/tsearch/spell.c:729,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:731,1
    - Dst: tmpalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:732,1
    - Dst: pg_mb2wchar_with_len
      Src: /src/postgres/src/backend/tsearch/spell.c:733,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/spell.c:740,1
    - Dst: pg_regcomp
      Src: /src/postgres/src/backend/tsearch/spell.c:741,1
    - Dst: pg_regerror
      Src: /src/postgres/src/backend/tsearch/spell.c:748,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:749,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:750,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:751,1
    - Dst: cpstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:761,1
    - Dst: cpstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:764,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:765,1
    - Dst: cpstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:766,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: 770
      start: 678
    functionDepth: 2
    functionLinenumber: 678
    functionLinenumberEnd: 770
    functionName: NIAddAffix
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - errmsg
    - tmpalloc
    - palloc
    - RS_isRegis
    - sprintf
    - pg_regerror
    - pg_regcomp
    - ereport
    - RS_compile
    - cpstrdup
    - repalloc
    - strcmp
    - pg_mb2wchar_with_len
    - errcode
    - strlen
    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: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:802,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:804,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/spell.c:806,1
    - Dst: COPYCHAR
      Src: /src/postgres/src/backend/tsearch/spell.c:810,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:819,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/spell.c:826,1
    - Dst: COPYCHAR
      Src: /src/postgres/src/backend/tsearch/spell.c:830,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/spell.c:836,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 2
    argNames:
    - str
    - next
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 792
    functionDepth: 1
    functionLinenumber: 792
    functionLinenumberEnd: 842
    functionName: get_nextfield
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - isspace
    - t_iseq
    - COPYCHAR
    - pg_mblen
    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:873,1
    - Dst: get_nextfield
      Src: /src/postgres/src/backend/tsearch/spell.c:877,1
    - Dst: get_nextfield
      Src: /src/postgres/src/backend/tsearch/spell.c:881,1
    - Dst: get_nextfield
      Src: /src/postgres/src/backend/tsearch/spell.c:885,1
    - Dst: get_nextfield
      Src: /src/postgres/src/backend/tsearch/spell.c:889,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/spell.c:893,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: 906
      start: 858
    functionDepth: 2
    functionLinenumber: 858
    functionLinenumberEnd: 906
    functionName: parse_ooaffentry
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - get_nextfield
    - elog
    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: 23
    BranchProfiles: []
    Callsites:
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:928,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:930,1
    - Dst: COPYCHAR
      Src: /src/postgres/src/backend/tsearch/spell.c:932,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/spell.c:933,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:939,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:944,1
    - Dst: COPYCHAR
      Src: /src/postgres/src/backend/tsearch/spell.c:946,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/spell.c:947,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:952,1
    - Dst: t_isalpha
      Src: /src/postgres/src/backend/tsearch/spell.c:956,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:956,1
    - Dst: COPYCHAR
      Src: /src/postgres/src/backend/tsearch/spell.c:958,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/spell.c:959,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:962,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:963,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:964,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:965,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:969,1
    - Dst: t_isalpha
      Src: /src/postgres/src/backend/tsearch/spell.c:974,1
    - Dst: COPYCHAR
      Src: /src/postgres/src/backend/tsearch/spell.c:976,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/spell.c:977,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:979,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:980,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:981,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:982,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:986,1
    - Dst: t_isalpha
      Src: /src/postgres/src/backend/tsearch/spell.c:990,1
    - Dst: COPYCHAR
      Src: /src/postgres/src/backend/tsearch/spell.c:992,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/spell.c:993,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:996,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:997,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:998,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:999,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:1003,1
    - Dst: t_isalpha
      Src: /src/postgres/src/backend/tsearch/spell.c:1008,1
    - Dst: COPYCHAR
      Src: /src/postgres/src/backend/tsearch/spell.c:1010,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/spell.c:1011,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:1013,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1014,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1015,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1016,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/spell.c:1019,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/spell.c:1021,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 75
    argCount: 4
    argNames:
    - str
    - mask
    - find
    - repl
    argTypes:
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1027
      start: 914
    functionDepth: 1
    functionLinenumber: 914
    functionLinenumberEnd: 1027
    functionName: parse_affentry
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - errmsg
    - t_iseq
    - pg_mblen
    - COPYCHAR
    - t_isalpha
    - ereport
    - elog
    - isspace
    - errcode
    linkageType: ''
    returnType: bool
    signature: bool parse_affentry(char *str, char *mask, char *find, char *repl)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/postgres/src/backend/tsearch/spell.c:1042,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1044,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1045,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1046,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1048,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1049,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1050,1
    - Dst: cpstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:1055,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 4
    argNames:
    - Conf
    - entry
    - s
    - val
    argTypes:
    - IspellDict*
    - CompoundAffixFlag*
    - char*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1032
    functionDepth: 2
    functionLinenumber: 1032
    functionLinenumberEnd: 1059
    functionName: setCompoundAffixFlagValue
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - strtol
    - cpstrdup
    - errcode
    linkageType: ''
    returnType: void
    signature: "void setCompoundAffixFlagValue(IspellDict *Conf, CompoundAffixFlag
      *entry,\n\t\t\t\t\t\t  char *s, uint32 val)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:1076,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/spell.c:1077,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1080,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1081,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1082,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:1086,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/spell.c:1088,1
    - Dst: COPYCHAR
      Src: /src/postgres/src/backend/tsearch/spell.c:1089,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:1102,1
    - Dst: tmpalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:1109,1
    - Dst: setCompoundAffixFlagValue
      Src: /src/postgres/src/backend/tsearch/spell.c:1115,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 3
    argNames:
    - Conf
    - s
    - val
    argTypes:
    - IspellDict*
    - char*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1119
      start: 1068
    functionDepth: 3
    functionLinenumber: 1068
    functionLinenumberEnd: 1119
    functionName: addCompoundAffixFlagValue
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - errmsg
    - tmpalloc
    - pg_mblen
    - setCompoundAffixFlagValue
    - COPYCHAR
    - ereport
    - isspace
    - repalloc
    - errcode
    linkageType: ''
    returnType: void
    signature: void addCompoundAffixFlagValue(IspellDict *Conf, char *s, uint32 val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getNextFlagFromString
      Src: /src/postgres/src/backend/tsearch/spell.c:1140,1
    - Dst: setCompoundAffixFlagValue
      Src: /src/postgres/src/backend/tsearch/spell.c:1141,1
    - Dst: bsearch
      Src: /src/postgres/src/backend/tsearch/spell.c:1144,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - Conf
    - s
    argTypes:
    - IspellDict*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1152
      start: 1125
    functionDepth: 3
    functionLinenumber: 1125
    functionLinenumberEnd: 1152
    functionName: getCompoundAffixFlagValue
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - setCompoundAffixFlagValue
    - bsearch
    - getNextFlagFromString
    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:1170,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1172,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1173,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1174,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1184,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1185,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1186,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - Conf
    - s
    argTypes:
    - IspellDict*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1191
      start: 1161
    functionDepth: 1
    functionLinenumber: 1161
    functionLinenumberEnd: 1191
    functionName: getAffixFlagSet
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - errmsg
    - strtol
    - errcode
    - ereport
    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:1224,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1225,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1226,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1227,1
    - Dst: tsearch_readline
      Src: /src/postgres/src/backend/tsearch/spell.c:1230,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:1232,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:1232,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:1234,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1238,1
    - Dst: addCompoundAffixFlagValue
      Src: /src/postgres/src/backend/tsearch/spell.c:1239,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1239,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1241,1
    - Dst: addCompoundAffixFlagValue
      Src: /src/postgres/src/backend/tsearch/spell.c:1242,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1242,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1244,1
    - Dst: addCompoundAffixFlagValue
      Src: /src/postgres/src/backend/tsearch/spell.c:1245,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1245,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1248,1
    - Dst: addCompoundAffixFlagValue
      Src: /src/postgres/src/backend/tsearch/spell.c:1249,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1249,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1251,1
    - Dst: addCompoundAffixFlagValue
      Src: /src/postgres/src/backend/tsearch/spell.c:1252,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1252,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1254,1
    - Dst: addCompoundAffixFlagValue
      Src: /src/postgres/src/backend/tsearch/spell.c:1255,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1255,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1257,1
    - Dst: addCompoundAffixFlagValue
      Src: /src/postgres/src/backend/tsearch/spell.c:1258,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1259,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1261,1
    - Dst: addCompoundAffixFlagValue
      Src: /src/postgres/src/backend/tsearch/spell.c:1262,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: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1267,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:1269,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/spell.c:1270,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1274,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1276,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1278,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1279,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1280,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1281,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:1287,1
    - Dst: tsearch_readline_end
      Src: /src/postgres/src/backend/tsearch/spell.c:1289,1
    - Dst: qsort
      Src: /src/postgres/src/backend/tsearch/spell.c:1292,1
    - Dst: tsearch_readline_begin
      Src: /src/postgres/src/backend/tsearch/spell.c:1295,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1296,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1297,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1298,1
    - Dst: tsearch_readline
      Src: /src/postgres/src/backend/tsearch/spell.c:1301,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:1305,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:1305,1
    - Dst: parse_ooaffentry
      Src: /src/postgres/src/backend/tsearch/spell.c:1308,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:1311,1
    - Dst: lowerstr_ctx
      Src: /src/postgres/src/backend/tsearch/spell.c:1312,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1315,1
    - Dst: atoi
      Src: /src/postgres/src/backend/tsearch/spell.c:1321,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1323,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1324,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1325,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/tsearch/spell.c:1330,1
    - Dst: cpstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:1342,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1346,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1347,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1348,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1355,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1355,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1358,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1371,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:1372,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:1372,1
    - Dst: strchr
      Src: /src/postgres/src/backend/tsearch/spell.c:1388,1
    - Dst: getCompoundAffixFlagValue
      Src: /src/postgres/src/backend/tsearch/spell.c:1389,1
    - Dst: getAffixFlagSet
      Src: /src/postgres/src/backend/tsearch/spell.c:1390,1
    - Dst: lowerstr_ctx
      Src: /src/postgres/src/backend/tsearch/spell.c:1393,1
    - Dst: strchr
      Src: /src/postgres/src/backend/tsearch/spell.c:1394,1
    - Dst: lowerstr_ctx
      Src: /src/postgres/src/backend/tsearch/spell.c:1396,1
    - Dst: lowerstr_ctx
      Src: /src/postgres/src/backend/tsearch/spell.c:1397,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:1398,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/spell.c:1400,1
    - Dst: NIAddAffix
      Src: /src/postgres/src/backend/tsearch/spell.c:1403,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:1405,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:1406,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:1407,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:1411,1
    - Dst: tsearch_readline_end
      Src: /src/postgres/src/backend/tsearch/spell.c:1414,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:1416,1
    CyclomaticComplexity: 52
    EdgeCount: 52
    ICount: 111
    argCount: 2
    argNames:
    - Conf
    - filename
    argTypes:
    - IspellDict*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1417
      start: 1199
    functionDepth: 4
    functionLinenumber: 1199
    functionLinenumberEnd: 1417
    functionName: NIImportOOAffixes
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - pg_mblen
    - tsearch_readline
    - addCompoundAffixFlagValue
    - getCompoundAffixFlagValue
    - cpstrdup
    - tsearch_readline_end
    - strlen
    - tsearch_readline_begin
    - pfree
    - t_iseq
    - getAffixFlagSet
    - STRNCMP
    - errmsg
    - qsort
    - atoi
    - isspace
    - NIAddAffix
    - lowerstr_ctx
    - ereport
    - palloc0
    - parse_ooaffentry
    - errcode
    - strchr
    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:1444,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1445,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1446,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1447,1
    - Dst: tsearch_readline
      Src: /src/postgres/src/backend/tsearch/spell.c:1454,1
    - Dst: str_tolower
      Src: /src/postgres/src/backend/tsearch/spell.c:1456,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1456,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1462,1
    - Dst: findchar2
      Src: /src/postgres/src/backend/tsearch/spell.c:1465,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:1468,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/spell.c:1469,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:1470,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/spell.c:1471,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/spell.c:1473,1
    - Dst: addCompoundAffixFlagValue
      Src: /src/postgres/src/backend/tsearch/spell.c:1475,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1482,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1489,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1496,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:1501,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/spell.c:1502,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/spell.c:1523,1
    - Dst: COPYCHAR
      Src: /src/postgres/src/backend/tsearch/spell.c:1525,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:1530,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1538,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1539,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1540,1
    - Dst: STRNCMP
      Src: /src/postgres/src/backend/tsearch/spell.c:1541,1
    - Dst: parse_affentry
      Src: /src/postgres/src/backend/tsearch/spell.c:1547,1
    - Dst: NIAddAffix
      Src: /src/postgres/src/backend/tsearch/spell.c:1550,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:1553,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:1554,1
    - Dst: tsearch_readline_end
      Src: /src/postgres/src/backend/tsearch/spell.c:1556,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1561,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1562,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1563,1
    - Dst: tsearch_readline_end
      Src: /src/postgres/src/backend/tsearch/spell.c:1564,1
    - Dst: NIImportOOAffixes
      Src: /src/postgres/src/backend/tsearch/spell.c:1566,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 92
    argCount: 2
    argNames:
    - Conf
    - filename
    argTypes:
    - IspellDict*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1567
      start: 1428
    functionDepth: 5
    functionLinenumber: 1428
    functionLinenumberEnd: 1567
    functionName: NIImportAffixes
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - findchar2
    - NIAddAffix
    - pg_mblen
    - NIImportOOAffixes
    - COPYCHAR
    - tsearch_readline
    - ereport
    - str_tolower
    - addCompoundAffixFlagValue
    - tsearch_readline_end
    - STRNCMP
    - parse_affentry
    - isspace
    - strlen
    - errcode
    - tsearch_readline_begin
    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:1580,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:1592,1
    - Dst: cpalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:1599,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1599,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1600,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/tsearch/spell.c:1603,1
    - Dst: cpalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:1608,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1608,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1609,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/tsearch/spell.c:1612,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 3
    argNames:
    - Conf
    - a1
    - a2
    argTypes:
    - IspellDict*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1620
      start: 1575
    functionDepth: 1
    functionLinenumber: 1575
    functionLinenumberEnd: 1620
    functionName: MergeAffix
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - Assert
    - cpalloc
    - repalloc
    - sprintf
    - strlen
    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:1629,1
    - Dst: getCompoundAffixFlagValue
      Src: /src/postgres/src/backend/tsearch/spell.c:1631,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - Conf
    - affix
    argTypes:
    - IspellDict*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1633
      start: 1626
    functionDepth: 4
    functionLinenumber: 1626
    functionLinenumberEnd: 1633
    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:1663,1
    - Dst: mkSPNode
      Src: /src/postgres/src/backend/tsearch/spell.c:1676,1
    - Dst: makeCompoundFlags
      Src: /src/postgres/src/backend/tsearch/spell.c:1696,1
    - Dst: MergeAffix
      Src: /src/postgres/src/backend/tsearch/spell.c:1698,1
    - Dst: makeCompoundFlags
      Src: /src/postgres/src/backend/tsearch/spell.c:1704,1
    - Dst: mkSPNode
      Src: /src/postgres/src/backend/tsearch/spell.c:1716,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 39
    argCount: 4
    argNames:
    - Conf
    - low
    - high
    - level
    argTypes:
    - IspellDict*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1719
      start: 1643
    functionDepth: 5
    functionLinenumber: 1643
    functionLinenumberEnd: 1719
    functionName: mkSPNode
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 1
    functionsReached:
    - cpalloc0
    - makeCompoundFlags
    - mkSPNode
    - MergeAffix
    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:1747,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1749,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1750,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1751,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1754,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1755,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1756,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/tsearch/spell.c:1758,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/spell.c:1758,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/spell.c:1759,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/spell.c:1760,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/spell.c:1761,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1774,1
    - Dst: qsort
      Src: /src/postgres/src/backend/tsearch/spell.c:1781,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/spell.c:1788,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/tsearch/spell.c:1797,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/spell.c:1803,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/spell.c:1806,1
    - Dst: cpstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:1807,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:1812,1
    - Dst: qsort
      Src: /src/postgres/src/backend/tsearch/spell.c:1819,1
    - Dst: mkSPNode
      Src: /src/postgres/src/backend/tsearch/spell.c:1820,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 40
    argCount: 1
    argNames:
    - Conf
    argTypes:
    - IspellDict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1821
      start: 1725
    functionDepth: 6
    functionLinenumber: 1725
    functionLinenumberEnd: 1821
    functionName: NISortDictionary
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - qsort
    - isdigit
    - ereport
    - palloc0
    - strtol
    - cpstrdup
    - isspace
    - strcmp
    - mkSPNode
    - errcode
    - strlen
    linkageType: ''
    returnType: void
    signature: void NISortDictionary(IspellDict *Conf)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: GETCHAR
      Src: /src/postgres/src/backend/tsearch/spell.c:1847,1
    - Dst: GETCHAR
      Src: /src/postgres/src/backend/tsearch/spell.c:1850,1
    - Dst: tmpalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:1856,1
    - Dst: cpalloc0
      Src: /src/postgres/src/backend/tsearch/spell.c:1859,1
    - Dst: GETCHAR
      Src: /src/postgres/src/backend/tsearch/spell.c:1867,1
    - Dst: mkANode
      Src: /src/postgres/src/backend/tsearch/spell.c:1872,1
    - Dst: cpalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:1876,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tsearch/spell.c:1877,1
    - Dst: GETCHAR
      Src: /src/postgres/src/backend/tsearch/spell.c:1883,1
    - Dst: GETCHAR
      Src: /src/postgres/src/backend/tsearch/spell.c:1885,1
    - Dst: mkANode
      Src: /src/postgres/src/backend/tsearch/spell.c:1893,1
    - Dst: cpalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:1897,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tsearch/spell.c:1898,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:1902,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: 1905
      start: 1834
    functionDepth: 1
    functionLinenumber: 1834
    functionLinenumberEnd: 1905
    functionName: mkANode
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 1
    functionsReached:
    - pfree
    - tmpalloc
    - cpalloc
    - cpalloc0
    - mkANode
    - memcpy
    - 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:1918,1
    - Dst: cpalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:1943,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - Conf
    - issuffix
    - startsuffix
    argTypes:
    - IspellDict*
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1953
      start: 1911
    functionDepth: 1
    functionLinenumber: 1911
    functionLinenumberEnd: 1953
    functionName: mkVoidAffix
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - cpalloc
    - palloc0
    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:1971,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - Conf
    - affixflag
    argTypes:
    - IspellDict*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1975
      start: 1965
    functionDepth: 3
    functionLinenumber: 1965
    functionLinenumberEnd: 1975
    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:1993,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/spell.c:1994,1
    - Dst: isAffixInUse
      Src: /src/postgres/src/backend/tsearch/spell.c:2004,1
    - Dst: strbncmp
      Src: /src/postgres/src/backend/tsearch/spell.c:2010,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:2023,1
    - Dst: mkANode
      Src: /src/postgres/src/backend/tsearch/spell.c:2026,1
    - Dst: mkANode
      Src: /src/postgres/src/backend/tsearch/spell.c:2027,1
    - Dst: mkVoidAffix
      Src: /src/postgres/src/backend/tsearch/spell.c:2028,1
    - Dst: mkVoidAffix
      Src: /src/postgres/src/backend/tsearch/spell.c:2029,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 1
    argNames:
    - Conf
    argTypes:
    - IspellDict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2030
      start: 1980
    functionDepth: 4
    functionLinenumber: 1980
    functionLinenumberEnd: 2030
    functionName: NISortAffixes
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - qsort
    - strbncmp
    - mkANode
    - mkVoidAffix
    - repalloc
    - palloc
    - isAffixInUse
    linkageType: ''
    returnType: void
    signature: void NISortAffixes(IspellDict *Conf)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: GETWCHAR
      Src: /src/postgres/src/backend/tsearch/spell.c:2054,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: 2073
      start: 2032
    functionDepth: 1
    functionLinenumber: 2032
    functionLinenumberEnd: 2073
    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: 20
    BranchProfiles: []
    Callsites:
    - Dst: strcpy
      Src: /src/postgres/src/backend/tsearch/spell.c:2115,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/tsearch/spell.c:2116,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:2126,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/tsearch/spell.c:2128,1
    - Dst: strcat
      Src: /src/postgres/src/backend/tsearch/spell.c:2129,1
    - Dst: RS_execute
      Src: /src/postgres/src/backend/tsearch/spell.c:2139,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:2149,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/spell.c:2150,1
    - Dst: pg_mb2wchar_with_len
      Src: /src/postgres/src/backend/tsearch/spell.c:2151,1
    - Dst: pg_regexec
      Src: /src/postgres/src/backend/tsearch/spell.c:2153,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:2156,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:2159,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 50
    argCount: 6
    argNames:
    - word
    - len
    - Affix
    - flagflags
    - newword
    - baselen
    argTypes:
    - char*
    - size_t
    - AFFIX*
    - int
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2163
      start: 2075
    functionDepth: 1
    functionLinenumber: 2075
    functionLinenumberEnd: 2163
    functionName: CheckAffix
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - pfree
    - strcat
    - pg_regexec
    - RS_execute
    - palloc
    - pg_mb2wchar_with_len
    - strlen
    - 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:2170,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:2172,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - forms
    - cur
    - word
    argTypes:
    - char**
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2178
      start: 2165
    functionDepth: 0
    functionLinenumber: 2165
    functionLinenumberEnd: 2178
    functionName: addToResult
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pstrdup
    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:2187,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/spell.c:2200,1
    - Dst: FindWord
      Src: /src/postgres/src/backend/tsearch/spell.c:2205,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:2207,1
    - Dst: FindAffixes
      Src: /src/postgres/src/backend/tsearch/spell.c:2217,1
    - Dst: CheckAffix
      Src: /src/postgres/src/backend/tsearch/spell.c:2222,1
    - Dst: FindWord
      Src: /src/postgres/src/backend/tsearch/spell.c:2225,1
    - Dst: addToResult
      Src: /src/postgres/src/backend/tsearch/spell.c:2226,1
    - Dst: FindAffixes
      Src: /src/postgres/src/backend/tsearch/spell.c:2241,1
    - Dst: CheckAffix
      Src: /src/postgres/src/backend/tsearch/spell.c:2247,1
    - Dst: FindWord
      Src: /src/postgres/src/backend/tsearch/spell.c:2250,1
    - Dst: addToResult
      Src: /src/postgres/src/backend/tsearch/spell.c:2251,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:2256,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:2270,1
    - Dst: addToResult
      Src: /src/postgres/src/backend/tsearch/spell.c:2271,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:2284,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 56
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2288
      start: 2180
    functionDepth: 4
    functionLinenumber: 2180
    functionLinenumberEnd: 2288
    functionName: NormalizeSubWord
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - addToResult
    - pfree
    - FindWord
    - CheckAffix
    - pstrdup
    - FindAffixes
    - palloc
    - strlen
    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:2311,1
    - Dst: strstr
      Src: /src/postgres/src/backend/tsearch/spell.c:2327,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 4
    argNames:
    - ptr
    - word
    - len
    - CheckInPlace
    argTypes:
    - CMPDAffix**
    - char*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2338
      start: 2298
    functionDepth: 0
    functionLinenumber: 2298
    functionLinenumberEnd: 2338
    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
      Src: /src/postgres/src/backend/tsearch/spell.c:2343,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/spell.c:2351,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:2354,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/spell.c:2359,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - s
    - makedup
    argTypes:
    - SplitVar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2363
      start: 2340
    functionDepth: 0
    functionLinenumber: 2340
    functionLinenumberEnd: 2363
    functionName: CopyVar
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - palloc
    - pstrdup
    linkageType: ''
    returnType: SplitVar
    signature: 'SplitVar *

      CopyVar(SplitVar *s, int makedup)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: repalloc
      Src: /src/postgres/src/backend/tsearch/spell.c:2371,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - v
    - word
    argTypes:
    - SplitVar*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2376
      start: 2365
    functionDepth: 0
    functionLinenumber: 2365
    functionLinenumberEnd: 2376
    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:2394,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/spell.c:2396,1
    - Dst: memset
      Src: /src/postgres/src/backend/tsearch/spell.c:2397,1
    - Dst: CopyVar
      Src: /src/postgres/src/backend/tsearch/spell.c:2398,1
    - Dst: CheckCompoundAffixes
      Src: /src/postgres/src/backend/tsearch/spell.c:2404,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tsearch/spell.c:2423,1
    - Dst: NormalizeSubWord
      Src: /src/postgres/src/backend/tsearch/spell.c:2432,1
    - Dst: CopyVar
      Src: /src/postgres/src/backend/tsearch/spell.c:2436,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:2447,1
    - Dst: SplitToVariants
      Src: /src/postgres/src/backend/tsearch/spell.c:2451,1
    - Dst: word::word
      Src: /src/postgres/src/backend/tsearch/spell.c:2451,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:2453,1
    - Dst: AddStem
      Src: /src/postgres/src/backend/tsearch/spell.c:2495,1
    - Dst: pnstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:2495,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:2496,1
    - Dst: SplitToVariants
      Src: /src/postgres/src/backend/tsearch/spell.c:2506,1
    - Dst: AddStem
      Src: /src/postgres/src/backend/tsearch/spell.c:2509,1
    - Dst: pnstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:2509,1
    - Dst: AddStem
      Src: /src/postgres/src/backend/tsearch/spell.c:2523,1
    - Dst: pnstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:2523,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:2524,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: 2526
      start: 2378
    functionDepth: 5
    functionLinenumber: 2378
    functionLinenumberEnd: 2526
    functionName: SplitToVariants
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 1
    functionsReached:
    - check_stack_depth
    - pfree
    - pnstrdup
    - memset
    - word::word
    - CheckCompoundAffixes
    - AddStem
    - NormalizeSubWord
    - CopyVar
    - memcpy
    - palloc
    - SplitToVariants
    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
      Src: /src/postgres/src/backend/tsearch/spell.c:2532,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: 2542
      start: 2528
    functionDepth: 0
    functionLinenumber: 2528
    functionLinenumberEnd: 2542
    functionName: addNorm
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - palloc
    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:2552,1
    - Dst: addNorm
      Src: /src/postgres/src/backend/tsearch/spell.c:2560,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:2563,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/spell.c:2568,1
    - Dst: SplitToVariants
      Src: /src/postgres/src/backend/tsearch/spell.c:2570,1
    - Dst: NormalizeSubWord
      Src: /src/postgres/src/backend/tsearch/spell.c:2577,1
    - Dst: addNorm
      Src: /src/postgres/src/backend/tsearch/spell.c:2587,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/spell.c:2587,1
    - Dst: addNorm
      Src: /src/postgres/src/backend/tsearch/spell.c:2590,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:2595,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:2597,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:2602,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:2604,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/spell.c:2605,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 2
    argNames:
    - Conf
    - word
    argTypes:
    - IspellDict*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2611
      start: 2544
    functionDepth: 6
    functionLinenumber: 2544
    functionLinenumberEnd: 2611
    functionName: NINormalizeWord
    functionSourceFile: /src/postgres/src/backend/tsearch/spell.c
    functionUses: 0
    functionsReached:
    - pfree
    - pstrdup
    - NormalizeSubWord
    - addNorm
    - SplitToVariants
    - strlen
    linkageType: ''
    returnType: TSLexeme
    signature: 'TSLexeme *

      NINormalizeWord(IspellDict *Conf, const char *word)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: t_isalpha
      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
      Src: /src/postgres/src/backend/tsearch/regis.c:51,1
    - Dst: t_isalpha
      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
      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:
    - elog
    - t_iseq
    - t_isalpha
    - pg_mblen
    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
      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: COPYCHAR
      Src: /src/postgres/src/backend/tsearch/regis.c:105,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/regis.c:107,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/regis.c:109,1
    - Dst: newRegisNode
      Src: /src/postgres/src/backend/tsearch/regis.c:112,1
    - Dst: newRegisNode
      Src: /src/postgres/src/backend/tsearch/regis.c:114,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/regis.c:119,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/regis.c:123,1
    - Dst: t_isalpha
      Src: /src/postgres/src/backend/tsearch/regis.c:128,1
    - Dst: COPYCHAR
      Src: /src/postgres/src/backend/tsearch/regis.c:130,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/regis.c:131,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/regis.c:135,1
    - Dst: t_isalpha
      Src: /src/postgres/src/backend/tsearch/regis.c:139,1
    - Dst: COPYCHAR
      Src: /src/postgres/src/backend/tsearch/regis.c:141,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/regis.c:142,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/regis.c:144,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/regis.c:147,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/regis.c:150,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/regis.c:151,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/regis.c:155,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 53
    argCount: 3
    argNames:
    - r
    - issuffix
    - str
    argTypes:
    - Regis*
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 163
    functionName: RS_compile
    functionSourceFile: /src/postgres/src/backend/tsearch/regis.c
    functionUses: 1
    functionsReached:
    - t_iseq
    - pg_mblen
    - memset
    - COPYCHAR
    - t_isalpha
    - newRegisNode
    - elog
    - strlen
    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:174,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - r
    argTypes:
    - Regis*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 179
    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
      Src: /src/postgres/src/backend/tsearch/regis.c:190,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/regis.c:193,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - str
    - c
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 210
    functionName: mb_strchr
    functionSourceFile: /src/postgres/src/backend/tsearch/regis.c
    functionUses: 0
    functionsReached:
    - pg_mblen
    linkageType: ''
    returnType: bool
    signature: bool mb_strchr(char *str, char *c)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/regis.c:222,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/regis.c:233,1
    - Dst: mb_strchr
      Src: /src/postgres/src/backend/tsearch/regis.c:242,1
    - Dst: mb_strchr
      Src: /src/postgres/src/backend/tsearch/regis.c:246,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/regis.c:250,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/regis.c:253,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 2
    argNames:
    - r
    - str
    argTypes:
    - Regis*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 212
    functionDepth: 2
    functionLinenumber: 212
    functionLinenumberEnd: 257
    functionName: RS_execute
    functionSourceFile: /src/postgres/src/backend/tsearch/regis.c
    functionUses: 1
    functionsReached:
    - elog
    - pg_mblen
    - 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:52,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:53,1
    - Dst: isspace
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:65,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:68,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:71,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 3
    argNames:
    - in
    - end
    - flags
    argTypes:
    - char*
    - char**
    - uint16*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 84
    functionName: findwrd
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_synonym.c
    functionUses: 0
    functionsReached:
    - isspace
    - t_iseq
    - pg_mblen
    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:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 90
    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:96,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:111,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:113,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:114,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:115,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:116,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:118,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:119,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:120,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:125,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:126,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:127,1
    - Dst: get_tsearch_config_filename
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:129,1
    - Dst: tsearch_readline_begin
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:131,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:132,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:133,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:134,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:137,1
    - Dst: tsearch_readline
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:139,1
    - Dst: findwrd
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:141,1
    - Dst: findwrd
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:154,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:172,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:177,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:183,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:184,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: str_tolower
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:189,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:189,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:192,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:198,1
    - Dst: tsearch_readline_end
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:201,1
    - Dst: qsort
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:204,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:208,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 58
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 209
    functionName: dsynonym_init
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_synonym.c
    functionUses: 0
    functionsReached:
    - tsearch_readline
    - pstrdup
    - str_tolower
    - tsearch_readline_end
    - strlen
    - tsearch_readline_begin
    - PG_RETURN_POINTER
    - pfree
    - strcmp
    - errmsg
    - qsort
    - PG_GETARG_POINTER
    - defGetString
    - findwrd
    - repalloc
    - palloc
    - lfirst
    - ereport
    - palloc0
    - defGetBoolean
    - get_tsearch_config_filename
    - errcode
    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:111,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:113,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:114,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:115,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:116,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:118,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:119,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:120,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 122
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_synonym.c
    functionUses: 345
    functionsReached:
    - errmsg
    - errcode
    - defGetString
    - ereport
    - defGetBoolean
    - strcmp
    - lfirst
    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:214,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:215,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:216,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:223,1
    - Dst: pnstrdup
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:226,1
    - Dst: str_tolower
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:228,1
    - Dst: bsearch
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:232,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:233,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:236,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:238,1
    - Dst: pnstrdup
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:239,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_synonym.c:242,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 243
    functionName: dsynonym_lexize
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_synonym.c
    functionUses: 0
    functionsReached:
    - pfree
    - pnstrdup
    - PG_GETARG_POINTER
    - str_tolower
    - palloc0
    - bsearch
    - PG_GETARG_INT32
    - PG_RETURN_POINTER
    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: 9
    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
      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:329,1
    - Dst: Min
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:334,1
    - Dst: Max
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:335,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:338,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:341,1
    - Dst: qsort_interruptible
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:352,1
    - Dst: qsort_interruptible
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:381,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:385,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:398,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:399,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:410,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:410,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:416,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 100
    argCount: 4
    argNames:
    - stats
    - fetchfunc
    - samplerows
    - totalrows
    argTypes:
    - VacAttrStats*
    - AnalyzeAttrFetchFunc
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 140
    functionDepth: 2
    functionLinenumber: 140
    functionLinenumberEnd: 446
    functionName: compute_tsvector_stats
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_typanalyze.c
    functionUses: 0
    functionsReached:
    - fetchfunc
    - VARSIZE_ANY
    - DatumGetTSVector
    - MemoryContextSwitchTo
    - vacuum_delay_point
    - cstring_to_text_with_len
    - pfree
    - Min
    - qsort_interruptible
    - hash_create
    - ARRPTR
    - Max
    - memcpy
    - DatumGetPointer
    - prune_lexemes_hashtable
    - hash_seq_search
    - hash_seq_init
    - STRPTR
    - TSVectorGetDatum
    - elog
    - palloc
    - Assert
    - hash_search
    - PointerGetDatum
    - hash_get_num_entries
    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:458,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:459,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:465,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:467,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:468,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - lexemes_tab
    - b_current
    argTypes:
    - HTAB*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 452
    functionDepth: 1
    functionLinenumber: 452
    functionLinenumberEnd: 471
    functionName: prune_lexemes_hashtable
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_typanalyze.c
    functionUses: 1
    functionsReached:
    - pfree
    - hash_seq_search
    - hash_seq_init
    - hash_search
    - elog
    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:482,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/tsearch/ts_typanalyze.c:482,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key
    - keysize
    argTypes:
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 477
    functionDepth: 2
    functionLinenumber: 477
    functionLinenumberEnd: 484
    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:493,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - key1
    - key2
    - keysize
    argTypes:
    - void*
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 489
    functionDepth: 1
    functionLinenumber: 489
    functionLinenumberEnd: 494
    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:511,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - key1
    - key2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 499
    functionDepth: 0
    functionLinenumber: 499
    functionLinenumberEnd: 512
    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: 524
      start: 517
    functionDepth: 0
    functionLinenumber: 517
    functionLinenumberEnd: 524
    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:535,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - e1
    - e2
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 529
    functionDepth: 1
    functionLinenumber: 529
    functionLinenumberEnd: 536
    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
      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: 1
    functionLinenumber: 26
    functionLinenumberEnd: 85
    functionName: ts_lexize
    functionSourceFile: /src/postgres/src/backend/tsearch/dict.c
    functionUses: 0
    functionsReached:
    - pfree
    - construct_array_builtin
    - palloc
    - Int32GetDatum
    - CStringGetTextDatum
    - PG_GETARG_TEXT_PP
    - FunctionCall4
    - PointerGetDatum
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - lookup_ts_dictionary_cache
    - DatumGetPointer
    - PG_RETURN_POINTER
    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
      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
      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
      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
      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:
    - pfree
    - qsort
    - palloc
    - repalloc
    - LIMITPOS
    - strncmp
    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:
    - errmsg
    - CALCDATASIZE
    - pfree
    - POSDATAPTR
    - uniqueWORD
    - STRPTR
    - ereport
    - palloc0
    - ARRPTR
    - elog
    - SET_VARSIZE
    - SHORTALIGN
    - memcpy
    - WEP_SETPOS
    - errcode
    - WEP_SETWEIGHT
    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
      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: 3
    functionLinenumber: 242
    functionLinenumberEnd: 267
    functionName: to_tsvector_byid
    functionSourceFile: /src/postgres/src/backend/tsearch/to_tsany.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TSVECTOR
    - PG_FREE_IF_COPY
    - parsetext
    - make_tsvector
    - PG_GETARG_TEXT_PP
    - PG_GETARG_OID
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - palloc
    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
    - PG_GETARG_TEXT_PP
    - PointerGetDatum
    - DirectFunctionCall2
    - ObjectIdGetDatum
    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_RETURN_TSVECTOR
    - PG_FREE_IF_COPY
    - jsonb_to_tsvector_worker
    - PG_GETARG_OID
    - PG_GETARG_JSONB_P
    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:
    - PG_RETURN_TSVECTOR
    - getTSCurrentConfig
    - PG_FREE_IF_COPY
    - jsonb_to_tsvector_worker
    - PG_GETARG_JSONB_P
    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:
    - PG_RETURN_TSVECTOR
    - PG_FREE_IF_COPY
    - parse_jsonb_index_flags
    - jsonb_to_tsvector_worker
    - PG_GETARG_OID
    - PG_GETARG_JSONB_P
    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:
    - PG_RETURN_TSVECTOR
    - getTSCurrentConfig
    - parse_jsonb_index_flags
    - PG_FREE_IF_COPY
    - jsonb_to_tsvector_worker
    - PG_GETARG_JSONB_P
    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:
    - iterate_json_values
    - make_tsvector
    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:
    - PG_RETURN_TSVECTOR
    - PG_FREE_IF_COPY
    - json_to_tsvector_worker
    - PG_GETARG_OID
    - PG_GETARG_TEXT_P
    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:
    - PG_RETURN_TSVECTOR
    - getTSCurrentConfig
    - PG_FREE_IF_COPY
    - json_to_tsvector_worker
    - PG_GETARG_TEXT_P
    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:
    - PG_RETURN_TSVECTOR
    - PG_FREE_IF_COPY
    - parse_jsonb_index_flags
    - json_to_tsvector_worker
    - PG_GETARG_OID
    - PG_GETARG_TEXT_P
    - PG_GETARG_JSONB_P
    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:
    - PG_RETURN_TSVECTOR
    - getTSCurrentConfig
    - parse_jsonb_index_flags
    - PG_FREE_IF_COPY
    - json_to_tsvector_worker
    - PG_GETARG_TEXT_P
    - PG_GETARG_JSONB_P
    linkageType: ''
    returnType: Datum
    signature: Datum json_to_tsvector(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      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
    - parsetext
    linkageType: ''
    returnType: void
    signature: void add_to_tsvector(void *_state, char *elem_value, int elem_len)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:501,1
    - Dst: palloc
      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:
    - Datum
    - 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:
    - pushValue
    - pfree
    - parsetext
    - pushOperator
    - palloc
    - pushStop
    - DatumGetPointer
    linkageType: ''
    returnType: void
    signature: void pushval_morph(Datum 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: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:597,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_TEXT_PP
    - PointerGetDatum
    - PG_GETARG_OID
    - PG_RETURN_TSQUERY
    - text_to_cstring
    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
    - PG_GETARG_TEXT_PP
    - PointerGetDatum
    - DirectFunctionCall2
    - ObjectIdGetDatum
    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: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:634,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_TEXT_PP
    - PointerGetDatum
    - PG_GETARG_OID
    - text_to_cstring
    - PG_RETURN_POINTER
    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
    - PG_GETARG_TEXT_PP
    - PointerGetDatum
    - DirectFunctionCall2
    - ObjectIdGetDatum
    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: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:672,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_TEXT_PP
    - PointerGetDatum
    - PG_GETARG_OID
    - PG_RETURN_TSQUERY
    - text_to_cstring
    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
    - PG_GETARG_TEXT_PP
    - PointerGetDatum
    - DirectFunctionCall2
    - ObjectIdGetDatum
    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: PointerGetDatum
      Src: /src/postgres/src/backend/tsearch/to_tsany.c:710,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_TEXT_PP
    - PointerGetDatum
    - PG_GETARG_OID
    - PG_RETURN_TSQUERY
    - text_to_cstring
    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
    - PG_GETARG_TEXT_PP
    - PointerGetDatum
    - DirectFunctionCall2
    - ObjectIdGetDatum
    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
      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:
    - errmsg
    - errcode
    - PG_GETARG_POINTER
    - defGetString
    - ereport
    - palloc0
    - readstoplist
    - defGetBoolean
    - strcmp
    - lfirst
    - PG_RETURN_POINTER
    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: 345
    functionsReached:
    - errmsg
    - lfirst
    - defGetString
    - ereport
    - readstoplist
    - defGetBoolean
    - strcmp
    - errcode
    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
      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
      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:
    - pfree
    - PG_GETARG_POINTER
    - str_tolower
    - palloc0
    - searchstoplist
    - PG_GETARG_INT32
    - PG_RETURN_POINTER
    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
      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:
    - palloc
    - LPLAddTail
    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:
    - LPLRemoveHead
    - LPLAddTail
    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: DatumGetObjectId
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:221,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: DatumGetObjectId
      Src: /src/postgres/src/backend/tsearch/ts_parse.c:278,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:
    - Int32GetDatum
    - FunctionCall4
    - RemoveHead
    - setCorrLex
    - PointerGetDatum
    - DatumGetObjectId
    - moveToWaste
    - lookup_ts_dictionary_cache
    - LexizeExec
    - DatumGetPointer
    - setNewTmpRes
    - strlen
    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:
    - FunctionCall2
    - LIMITPOS
    - errdetail
    - strlen
    - pfree
    - Int32GetDatum
    - LexizeInit
    - lookup_ts_config_cache
    - LexizeExec
    - DatumGetPointer
    - errmsg
    - DatumGetInt32
    - FunctionCall1
    - repalloc
    - FunctionCall3
    - ereport
    - PointerGetDatum
    - lookup_ts_parser_cache
    - LexizeAddLemm
    - errcode
    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:
    - repalloc
    - memcpy
    - palloc
    - memset
    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:
    - GETQUERY
    - memcpy
    - tsCompareString
    - repalloc
    - GETOPERAND
    - LIMITPOS
    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
    - hlfinditem
    - hladdword
    - strlen
    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:
    - errmsg
    - Int32GetDatum
    - LexizeInit
    - DatumGetInt32
    - FunctionCall1
    - ereport
    - PointerGetDatum
    - lookup_ts_config_cache
    - lookup_ts_parser_cache
    - FunctionCall2
    - LexizeAddLemm
    - FunctionCall3
    - errdetail
    - LexizeExec
    - DatumGetPointer
    - errcode
    - addHLParsedLex
    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: 1
    functionLinenumber: 606
    functionLinenumberEnd: 679
    functionName: generateHeadline
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_parse.c
    functionUses: 2
    functionsReached:
    - pfree
    - repalloc
    - memcpy
    - palloc
    - SET_VARSIZE
    linkageType: ''
    returnType: text
    signature: 'text *

      generateHeadline(HeadlineParsedText *prs)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:37,1
    - Dst: isalpha
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:42,1
    - Dst: TOUCHAR
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:42,1
    - Dst: char2wchar
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:44,1
    - Dst: iswalpha
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:46,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 47
    functionName: t_isalpha
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_locale.c
    functionUses: 3
    functionsReached:
    - isalpha
    - pg_mblen
    - char2wchar
    - TOUCHAR
    - iswalpha
    linkageType: ''
    returnType: int
    signature: int t_isalpha(const char *ptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:52,1
    - Dst: isalnum
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:57,1
    - Dst: TOUCHAR
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:57,1
    - Dst: char2wchar
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:59,1
    - Dst: iswalnum
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:61,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 62
    functionName: t_isalnum
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_locale.c
    functionUses: 0
    functionsReached:
    - pg_mblen
    - char2wchar
    - iswalnum
    - isalnum
    - TOUCHAR
    linkageType: ''
    returnType: int
    signature: int t_isalnum(const char *ptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AllocateFile
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:92,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - stp
    - filename
    argTypes:
    - tsearch_readline_state*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 88
    functionDepth: 3
    functionLinenumber: 88
    functionLinenumberEnd: 104
    functionName: tsearch_readline_begin
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_locale.c
    functionUses: 5
    functionsReached:
    - initStringInfo
    - AllocateFile
    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:123,1
    - Dst: pg_get_line_buf
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:128,1
    - Dst: pg_any_to_server
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:132,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:150,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - stp
    argTypes:
    - tsearch_readline_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 111
    functionDepth: 3
    functionLinenumber: 111
    functionLinenumberEnd: 151
    functionName: tsearch_readline
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_locale.c
    functionUses: 5
    functionsReached:
    - pfree
    - pg_any_to_server
    - pg_get_line_buf
    - pstrdup
    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:163,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:168,1
    - Dst: FreeFile
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:169,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - stp
    argTypes:
    - tsearch_readline_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 173
    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:191,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/tsearch/ts_locale.c:196,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 199
    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:
    - strspn
    - errmsg
    - palloc
    - snprintf
    - ereport
    - get_share_path
    - errcode
    - strlen
    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
      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
      Src: /src/postgres/src/backend/tsearch/ts_utils.c:108,1
    - Dst: repalloc
      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:
    - errmsg
    - pfree
    - wordop
    - qsort
    - pg_mblen
    - strlen
    - tsearch_readline
    - ereport
    - tsearch_readline_end
    - isspace
    - get_tsearch_config_filename
    - palloc
    - repalloc
    - errcode
    - tsearch_readline_begin
    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: Assert
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:115,1
    - Dst: tsquerysel
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:117,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:125,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:127,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:129,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 130
    functionName: tsmatchsel
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_selfuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - tsquerysel
    - PG_GETARG_POINTER
    - get_restriction_variable
    - IsA
    - PG_GETARG_INT32
    - CLAMP_PROBABILITY
    - ReleaseVariableStats
    - PG_RETURN_FLOAT8
    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:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 143
    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:156,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:162,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:167,1
    - Dst: get_attstatsslot
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:170,1
    - Dst: mcelem_tsquery_selec
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:178,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:180,1
    - Dst: tsquery_opr_selec_no_stats
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:185,1
    - Dst: tsquery_opr_selec_no_stats
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:196,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - vardata
    - constval
    argTypes:
    - VariableStatData*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 149
    functionDepth: 2
    functionLinenumber: 149
    functionLinenumberEnd: 201
    functionName: tsquerysel
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_selfuncs.c
    functionUses: 1
    functionsReached:
    - DatumGetTSQuery
    - HeapTupleIsValid
    - free_attstatsslot
    - GETSTRUCT
    - get_attstatsslot
    - tsquery_opr_selec_no_stats
    - mcelem_tsquery_selec
    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:224,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:229,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:236,1
    - Dst: VARATT_IS_COMPRESSED
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:236,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:236,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:237,1
    - Dst: tsquery_opr_selec
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:247,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:247,1
    - Dst: GETOPERAND
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:247,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:250,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: 253
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 253
    functionName: mcelem_tsquery_selec
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_selfuncs.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - tsquery_opr_selec
    - GETQUERY
    - VARATT_IS_COMPRESSED
    - VARATT_IS_EXTERNAL
    - tsquery_opr_selec_no_stats
    - GETOPERAND
    - palloc
    - DatumGetPointer
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity mcelem_tsquery_selec(TSQuery query, Datum *mcelem, int
      nmcelem,\n\t\t\t\t\t float4 *numbers, int nnumbers)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:284,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:327,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:330,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:330,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:340,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:341,1
    - Dst: Max
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:351,1
    - Dst: Min
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:351,1
    - Dst: bsearch
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:362,1
    - Dst: Min
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:380,1
    - Dst: tsquery_opr_selec
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:393,1
    - Dst: tsquery_opr_selec
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:399,1
    - Dst: tsquery_opr_selec
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:401,1
    - Dst: tsquery_opr_selec
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:407,1
    - Dst: tsquery_opr_selec
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:409,1
    - Dst: elog
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:415,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:422,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: 425
      start: 277
    functionDepth: 1
    functionLinenumber: 277
    functionLinenumberEnd: 425
    functionName: tsquery_opr_selec
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_selfuncs.c
    functionUses: 2
    functionsReached:
    - check_stack_depth
    - Min
    - tsquery_opr_selec
    - Max
    - elog
    - bsearch
    - CLAMP_PROBABILITY
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - strncmp
    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:442,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:451,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/tsearch/ts_selfuncs.c:451,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - e1
    - e2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 433
    functionDepth: 1
    functionLinenumber: 433
    functionLinenumberEnd: 452
    functionName: compare_lexeme_textfreq
    functionSourceFile: /src/postgres/src/backend/tsearch/ts_selfuncs.c
    functionUses: 0
    functionsReached:
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - strncmp
    linkageType: ''
    returnType: int
    signature: int compare_lexeme_textfreq(const void *e1, const void *e2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:274,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:277,1
    - Dst: memset
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:279,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - prev
    argTypes:
    - TParserPosition*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 286
    functionName: newTParserPosition
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - memset
    - memcpy
    - palloc
    linkageType: ''
    returnType: TParserPosition
    signature: 'TParserPosition *

      newTParserPosition(TParserPosition *prev)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:291,1
    - Dst: pg_database_encoding_max_length
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:293,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:311,1
    - Dst: pg_mb2wchar_with_len
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:312,1
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:316,1
    - Dst: char2wchar
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:317,1
    - Dst: newTParserPosition
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:324,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:328,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 2
    argNames:
    - str
    - len
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 332
    functionName: TParserInit
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - char2wchar
    - pg_database_encoding_max_length
    - palloc0
    - fprintf
    - newTParserPosition
    - palloc
    - pg_mb2wchar_with_len
    linkageType: ''
    returnType: TParser
    signature: 'TParser *

      TParserInit(char *str, int len)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:348,1
    - Dst: newTParserPosition
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:360,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:364,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - orig
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 345
    functionDepth: 1
    functionLinenumber: 345
    functionLinenumberEnd: 368
    functionName: TParserCopyInit
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - newTParserPosition
    - palloc0
    - fprintf
    linkageType: ''
    returnType: TParser
    signature: 'TParser *

      TParserCopyInit(const TParser *orig)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:378,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:383,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:385,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:388,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:390,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 391
    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:403,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:408,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:410,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 396
    functionDepth: 0
    functionLinenumber: 396
    functionLinenumberEnd: 411
    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: 449
      start: 424
    functionDepth: 0
    functionLinenumber: 424
    functionLinenumberEnd: 449
    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:469,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - prs
    - c
    argTypes:
    - TParser*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 466
    functionDepth: 1
    functionLinenumber: 466
    functionLinenumberEnd: 471
    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:476,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 473
    functionDepth: 1
    functionLinenumber: 473
    functionLinenumberEnd: 478
    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:483,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 480
    functionDepth: 2
    functionLinenumber: 480
    functionLinenumberEnd: 484
    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:489,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 486
    functionDepth: 2
    functionLinenumber: 486
    functionLinenumberEnd: 490
    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:495,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 492
    functionDepth: 0
    functionLinenumber: 492
    functionLinenumberEnd: 496
    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:501,1
    - Dst: p_isalpha
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:501,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 498
    functionDepth: 1
    functionLinenumber: 498
    functionLinenumberEnd: 502
    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: 531
      start: 504
    functionDepth: 0
    functionLinenumber: 504
    functionLinenumberEnd: 531
    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:539,1
    - Dst: p_isnotalnum
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:540,1
    - Dst: p_isalpha
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:541,1
    - Dst: p_isnotalpha
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:542,1
    - Dst: p_isdigit
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:543,1
    - Dst: p_isnotdigit
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:544,1
    - Dst: p_islower
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:545,1
    - Dst: p_isnotlower
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:546,1
    - Dst: p_isprint
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:547,1
    - Dst: p_isnotprint
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:548,1
    - Dst: p_ispunct
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:549,1
    - Dst: p_isnotpunct
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:550,1
    - Dst: p_isspace
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:551,1
    - Dst: p_isnotspace
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:552,1
    - Dst: p_isupper
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:553,1
    - Dst: p_isnotupper
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:554,1
    - Dst: p_isxdigit
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:555,1
    - Dst: p_isnotxdigit
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:556,1
    - Dst: p_isEOF
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:557,1
    - Dst: p_iseqC
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:558,1
    - Dst: p_isneC
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 536
    functionDepth: 3
    functionLinenumber: 536
    functionLinenumberEnd: 560
    functionName: _make_compiler_happy
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - p_isnotalnum
    - p_isnotpunct
    - p_isnotupper
    - p_isneC
    - p_ispunct
    - p_iseqC
    - p_isnotxdigit
    - p_isxdigit
    - p_isprint
    - p_isnotalpha
    - p_isupper
    - p_isnotprint
    - p_isEOF
    - p_isalpha
    - p_isnotdigit
    - p_isdigit
    - p_islower
    - p_isspace
    - p_isnotspace
    - p_isnotlower
    - p_isalnum
    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:569,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:573,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:575,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:579,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 563
    functionDepth: 2
    functionLinenumber: 563
    functionLinenumberEnd: 585
    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: 593
      start: 587
    functionDepth: 0
    functionLinenumber: 587
    functionLinenumberEnd: 593
    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: 600
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 600
    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: 609
      start: 602
    functionDepth: 0
    functionLinenumber: 602
    functionLinenumberEnd: 609
    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: 620
      start: 611
    functionDepth: 0
    functionLinenumber: 611
    functionLinenumberEnd: 620
    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: 626
      start: 622
    functionDepth: 0
    functionLinenumber: 622
    functionLinenumberEnd: 626
    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:631,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:640,1
    - Dst: TParserGet
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:642,1
    - Dst: TParserCopyClose
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:651,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 628
    functionDepth: 2
    functionLinenumber: 628
    functionLinenumberEnd: 654
    functionName: p_ishost
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - check_stack_depth
    - TParserCopyInit
    - TParserCopyClose
    - TParserGet
    linkageType: ''
    returnType: int
    signature: int p_ishost(TParser *prs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TParserCopyInit
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:659,1
    - Dst: newTParserPosition
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:662,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:669,1
    - Dst: TParserGet
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:671,1
    - Dst: TParserCopyClose
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:680,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 656
    functionDepth: 2
    functionLinenumber: 656
    functionLinenumberEnd: 683
    functionName: p_isURLPath
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - check_stack_depth
    - newTParserPosition
    - TParserCopyClose
    - TParserCopyInit
    - TParserGet
    linkageType: ''
    returnType: int
    signature: int p_isURLPath(TParser *prs)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pg_dsplen
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:697,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:706,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:943,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 691
    functionDepth: 1
    functionLinenumber: 691
    functionLinenumberEnd: 965
    functionName: p_isspecial
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - pg_dsplen
    - lengthof
    - GetDatabaseEncoding
    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: 1619
      start: 1617
    functionDepth: 0
    functionLinenumber: 1617
    functionLinenumberEnd: 1619
    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: 1622
      start: 1620
    functionDepth: 0
    functionLinenumber: 1620
    functionLinenumberEnd: 1622
    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:1714,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1716,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1731,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1733,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1734,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1735,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1746,1
    - Dst: TParserStateActionItem*::isclass
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1753,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1762,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1765,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1766,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1768,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1770,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1771,1
    - Dst: TParserStateActionItem*::special
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1789,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1794,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1806,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1808,1
    - Dst: newTParserPosition
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1813,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1819,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1821,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1831,1
    - Dst: Assert
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1839,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1847,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 91
    argCount: 1
    argNames:
    - prs
    argTypes:
    - TParser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1875
      start: 1709
    functionDepth: 1
    functionLinenumber: 1709
    functionLinenumberEnd: 1875
    functionName: TParserGet
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 2
    functionsReached:
    - TParserStateActionItem*::isclass
    - pfree
    - Assert
    - CHECK_FOR_INTERRUPTS
    - pg_mblen
    - TParserStateActionItem*::special
    - fprintf
    - newTParserPosition
    linkageType: ''
    returnType: bool
    signature: bool TParserGet(TParser *prs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1880,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1886,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1887,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1892,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1893
      start: 1877
    functionDepth: 1
    functionLinenumber: 1877
    functionLinenumberEnd: 1893
    functionName: prsd_lextype
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - palloc
    - PG_RETURN_POINTER
    - pstrdup
    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:1898,1
    - Dst: TParserInit
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1898,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1898,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1898,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1899
      start: 1895
    functionDepth: 2
    functionLinenumber: 1895
    functionLinenumberEnd: 1899
    functionName: prsd_start
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - TParserInit
    - PG_GETARG_INT32
    - PG_RETURN_POINTER
    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:1904,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1905,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1906,1
    - Dst: TParserGet
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1908,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1909,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1914,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1915
      start: 1901
    functionDepth: 2
    functionLinenumber: 1901
    functionLinenumberEnd: 1915
    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:1920,1
    - Dst: TParserClose
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1922,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1923,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1924
      start: 1917
    functionDepth: 1
    functionLinenumber: 1917
    functionLinenumberEnd: 1924
    functionName: prsd_end
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - TParserClose
    - PG_RETURN_VOID
    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: 1933
      start: 1932
    functionDepth: 0
    functionLinenumber: 1932
    functionLinenumberEnd: 1933
    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: 1934
      start: 1933
    functionDepth: 0
    functionLinenumber: 1933
    functionLinenumberEnd: 1934
    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: 1935
      start: 1934
    functionDepth: 0
    functionLinenumber: 1934
    functionLinenumberEnd: 1935
    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: 1936
      start: 1935
    functionDepth: 0
    functionLinenumber: 1935
    functionLinenumberEnd: 1936
    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: 1937
      start: 1936
    functionDepth: 0
    functionLinenumber: 1936
    functionLinenumberEnd: 1937
    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: 1938
      start: 1937
    functionDepth: 0
    functionLinenumber: 1937
    functionLinenumberEnd: 1938
    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: 1948
      start: 1946
    functionDepth: 0
    functionLinenumber: 1946
    functionLinenumberEnd: 1948
    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: 1953
      start: 1950
    functionDepth: 0
    functionLinenumber: 1950
    functionLinenumberEnd: 1953
    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
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:1997,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 3
    argNames:
    - opaque
    - val
    - data
    argTypes:
    - void*
    - QueryOperand*
    - ExecPhraseData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2013
      start: 1980
    functionDepth: 0
    functionLinenumber: 1980
    functionLinenumberEnd: 2013
    functionName: checkcondition_HL
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - palloc
    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:2055,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2088,1
    - Dst: Max
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2114,1
    - Dst: TS_execute
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2156,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2156,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: 2176
      start: 2031
    functionDepth: 1
    functionLinenumber: 2031
    functionLinenumberEnd: 2176
    functionName: hlCover
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - Max
    - lfirst
    - GETQUERY
    - TS_execute
    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:2055,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2073
      start: 2053
    functionDepth: 1
    functionLinenumber: 2053
    functionLinenumberEnd: 2073
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 345
    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:2088,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2104
      start: 2086
    functionDepth: 1
    functionLinenumber: 2086
    functionLinenumberEnd: 2104
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 345
    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:2195,1
    - Dst: HLIDSKIP
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2197,1
    - Dst: XMLHLIDSKIP
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2202,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 4
    argNames:
    - prs
    - highlightall
    - startpos
    - endpos
    argTypes:
    - HeadlineParsedText*
    - bool
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2208
      start: 2183
    functionDepth: 1
    functionLinenumber: 2183
    functionLinenumberEnd: 2208
    functionName: mark_fragment
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - XMLHLIDSKIP
    - HLIDSKIP
    - HLIDREPLACE
    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:2236,1
    - Dst: NONWORDTOKEN
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2244,1
    - Dst: INTERESTINGWORD
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2246,1
    - Dst: INTERESTINGWORD
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2256,1
    - Dst: NONWORDTOKEN
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2258,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: 2262
      start: 2219
    functionDepth: 1
    functionLinenumber: 2219
    functionLinenumberEnd: 2262
    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:2299,1
    - Dst: hlCover
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2302,1
    - Dst: get_next_fragment
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2316,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2320,1
    - Dst: NONWORDTOKEN
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2380,1
    - Dst: BADENDPOINT
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2388,1
    - Dst: NONWORDTOKEN
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2390,1
    - Dst: NONWORDTOKEN
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2398,1
    - Dst: BADENDPOINT
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2403,1
    - Dst: NONWORDTOKEN
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2405,1
    - Dst: mark_fragment
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2414,1
    - Dst: NONWORDTOKEN
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2440,1
    - Dst: mark_fragment
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2444,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2447,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: 2448
      start: 2270
    functionDepth: 2
    functionLinenumber: 2270
    functionLinenumberEnd: 2448
    functionName: mark_hl_fragments
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - pfree
    - BADENDPOINT
    - get_next_fragment
    - hlCover
    - mark_fragment
    - NONWORDTOKEN
    - repalloc
    - palloc
    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:2475,1
    - Dst: NONWORDTOKEN
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2488,1
    - Dst: INTERESTINGWORD
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2490,1
    - Dst: NONWORDTOKEN
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2506,1
    - Dst: INTERESTINGWORD
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2508,1
    - Dst: BADENDPOINT
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2512,1
    - Dst: NONWORDTOKEN
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2525,1
    - Dst: INTERESTINGWORD
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2527,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:2549,1
    - Dst: NONWORDTOKEN
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2551,1
    - Dst: INTERESTINGWORD
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2553,1
    - Dst: BADENDPOINT
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2575,1
    - Dst: BADENDPOINT
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2575,1
    - Dst: NONWORDTOKEN
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2594,1
    - Dst: mark_fragment
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2609,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: 2610
      start: 2453
    functionDepth: 2
    functionLinenumber: 2453
    functionLinenumberEnd: 2610
    functionName: mark_hl_words
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - BADENDPOINT
    - hlCover
    - INTERESTINGWORD
    - NONWORDTOKEN
    - mark_fragment
    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: 19
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2618,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2619,1
    - Dst: PG_GETARG_TSQUERY
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2620,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2637,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2638,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2640,1
    - Dst: pg_strtoint32
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2641,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2642,1
    - Dst: pg_strtoint32
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2643,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2644,1
    - Dst: pg_strtoint32
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2645,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2646,1
    - Dst: pg_strtoint32
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2647,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2648,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2649,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2650,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2651,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2652,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2653,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2654,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2655,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2656,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2657,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2658,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2659,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2660,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2662,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2663,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2664,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2672,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2673,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2674,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2676,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2677,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2678,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2680,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2681,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2682,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2684,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2685,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2686,1
    - Dst: TS_execute_locations
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2696,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2696,1
    - Dst: mark_hl_words
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2704,1
    - Dst: mark_hl_fragments
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2707,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2712,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2714,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2716,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2719,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2720,1
    - Dst: strlen
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2721,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2723,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 51
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2724
      start: 2615
    functionDepth: 3
    functionLinenumber: 2615
    functionLinenumberEnd: 2724
    functionName: prsd_headline
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_TSQUERY
    - errcode
    - GETQUERY
    - PG_GETARG_POINTER
    - defGetString
    - pstrdup
    - ereport
    - TS_execute_locations
    - mark_hl_words
    - mark_hl_fragments
    - PG_RETURN_POINTER
    - pg_strtoint32
    - pg_strcasecmp
    - lfirst
    - strlen
    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:2637,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2638,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2640,1
    - Dst: pg_strtoint32
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2641,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2642,1
    - Dst: pg_strtoint32
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2643,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2644,1
    - Dst: pg_strtoint32
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2645,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2646,1
    - Dst: pg_strtoint32
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2647,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2648,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2649,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2650,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2651,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2652,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2653,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2654,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2655,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2656,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2657,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2658,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2659,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2660,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2662,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2663,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/wparser_def.c:2664,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2666
      start: 2635
    functionDepth: 2
    functionLinenumber: 2635
    functionLinenumberEnd: 2666
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tsearch/wparser_def.c
    functionUses: 345
    functionsReached:
    - errmsg
    - errcode
    - defGetString
    - pstrdup
    - ereport
    - pg_strtoint32
    - pg_strcasecmp
    - lfirst
    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
      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:51,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:52,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:53,1
    - Dst: NIImportDictionary
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:54,1
    - Dst: get_tsearch_config_filename
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:55,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:55,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:59,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:62,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:63,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:64,1
    - Dst: NIImportAffixes
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:65,1
    - Dst: get_tsearch_config_filename
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:66,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:66,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:70,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:73,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:74,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:75,1
    - Dst: readstoplist
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:76,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:76,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:81,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:82,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:83,1
    - Dst: NISortDictionary
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:90,1
    - Dst: NISortAffixes
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:91,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:95,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:96,1
    - Dst: errmsg
      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: NIFinishBuild
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:106,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:108,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 30
    functionDepth: 7
    functionLinenumber: 30
    functionLinenumberEnd: 109
    functionName: dispell_init
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_ispell.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - NISortDictionary
    - NISortAffixes
    - NIFinishBuild
    - PG_GETARG_POINTER
    - defGetString
    - NIImportDictionary
    - NIStartBuild
    - palloc0
    - ereport
    - NIImportAffixes
    - readstoplist
    - get_tsearch_config_filename
    - strcmp
    - lfirst
    - PG_RETURN_POINTER
    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:51,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:52,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:53,1
    - Dst: NIImportDictionary
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:54,1
    - Dst: get_tsearch_config_filename
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:55,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:55,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:59,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:62,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:63,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:64,1
    - Dst: NIImportAffixes
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:65,1
    - Dst: get_tsearch_config_filename
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:66,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:66,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:70,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:73,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:74,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:75,1
    - Dst: readstoplist
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:76,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:76,1
    - Dst: ereport
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:81,1
    - Dst: errcode
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:82,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:83,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 44
    functionDepth: 7
    functionLinenumber: 44
    functionLinenumberEnd: 86
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_ispell.c
    functionUses: 345
    functionsReached:
    - errmsg
    - lfirst
    - defGetString
    - NIImportDictionary
    - ereport
    - readstoplist
    - NIImportAffixes
    - get_tsearch_config_filename
    - strcmp
    - errcode
    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:114,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:115,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:116,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:123,1
    - Dst: str_tolower
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:125,1
    - Dst: NINormalizeWord
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:126,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:129,1
    - Dst: searchstoplist
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:134,1
    - Dst: pfree
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:136,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:142,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/tsearch/dict_ispell.c:148,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 111
    functionDepth: 7
    functionLinenumber: 111
    functionLinenumberEnd: 149
    functionName: dispell_lexize
    functionSourceFile: /src/postgres/src/backend/tsearch/dict_ispell.c
    functionUses: 0
    functionsReached:
    - pfree
    - PG_GETARG_POINTER
    - str_tolower
    - NINormalizeWord
    - searchstoplist
    - PG_GETARG_INT32
    - memcpy
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum dispell_lexize(PG_FUNCTION_ARGS)
  - BBCount: 65
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaddress.c:932,1
    - Dst: get_relation_by_qualified_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:953,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:953,1
    - Dst: get_object_address_attribute
      Src: /src/postgres/src/backend/catalog/objectaddress.c:960,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:960,1
    - Dst: get_object_address_attrdef
      Src: /src/postgres/src/backend/catalog/objectaddress.c:966,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:966,1
    - Dst: get_object_address_relobject
      Src: /src/postgres/src/backend/catalog/objectaddress.c:974,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:974,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:983,1
    - Dst: get_object_address_type
      Src: /src/postgres/src/backend/catalog/objectaddress.c:984,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/catalog/objectaddress.c:985,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:987,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/catalog/objectaddress.c:987,1
    - Dst: get_domain_constraint_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:990,1
    - Dst: get_object_address_unqualified
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1008,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1009,1
    - Dst: get_object_address_type
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1013,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1013,1
    - Dst: LookupFuncWithArgs
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1020,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1020,1
    - Dst: LookupOperWithArgs
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1025,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1025,1
    - Dst: get_collation_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1030,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1030,1
    - Dst: get_conversion_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1035,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1035,1
    - Dst: get_object_address_opcf
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1040,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1040,1
    - Dst: get_object_address_opf_member
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1044,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1044,1
    - Dst: oidparse
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1048,1
    - Dst: LargeObjectExists
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1050,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1053,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1054,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1055,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1061,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1061,1
    - Dst: lsecond_node
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1062,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1062,1
    - Dst: LookupTypeNameOid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1066,1
    - Dst: LookupTypeNameOid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1067,1
    - Dst: get_cast_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1070,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1076,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1076,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1077,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1077,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1077,1
    - Dst: LookupTypeNameOid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1078,1
    - Dst: get_language_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1079,1
    - Dst: get_transform_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1083,1
    - Dst: get_ts_parser_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1089,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1089,1
    - Dst: get_ts_dict_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1094,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1094,1
    - Dst: get_ts_template_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1099,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1099,1
    - Dst: get_ts_config_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1104,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1104,1
    - Dst: get_object_address_usermapping
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1108,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1108,1
    - Dst: get_object_address_publication_schema
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1112,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1112,1
    - Dst: get_object_address_publication_rel
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1116,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1116,1
    - Dst: get_object_address_defacl
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1121,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1121,1
    - Dst: get_statistics_object_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1126,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1126,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1134,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1139,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1141,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1150,1
    - Dst: IsSharedRelation
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1158,1
    - Dst: UnlockSharedObject
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1159,1
    - Dst: UnlockDatabaseObject
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1163,1
    - Dst: IsSharedRelation
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1175,1
    - Dst: LockSharedObject
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1176,1
    - Dst: LockDatabaseObject
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1179,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1209,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 174
    argCount: 5
    argNames:
    - objtype
    - object
    - relp
    - lockmode
    - missing_ok
    argTypes:
    - ObjectType
    - Node*
    - Relation*
    - LOCKMODE
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1215
      start: 922
    functionDepth: 1
    functionLinenumber: 922
    functionLinenumberEnd: 1215
    functionName: get_object_address
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - get_object_address_type
    - get_object_address_opcf
    - LockDatabaseObject
    - castNode
    - get_object_address_usermapping
    - get_object_address_attribute
    - get_object_address_unqualified
    - IsSharedRelation
    - get_ts_dict_oid
    - get_ts_config_oid
    - get_object_address_publication_schema
    - get_object_address_publication_rel
    - LargeObjectExists
    - get_conversion_oid
    - lsecond
    - get_statistics_object_oid
    - get_ts_template_oid
    - UnlockDatabaseObject
    - get_relation_by_qualified_name
    - linitial_node
    - errmsg
    - get_ts_parser_oid
    - LockSharedObject
    - get_object_address_attrdef
    - get_object_address_relobject
    - get_cast_oid
    - get_collation_oid
    - LookupOperWithArgs
    - elog
    - UnlockSharedObject
    - strVal
    - LookupFuncWithArgs
    - get_language_oid
    - get_object_address_defacl
    - OidIsValid
    - lsecond_node
    - get_object_address_opf_member
    - Assert
    - ereport
    - oidparse
    - get_domain_constraint_oid
    - LookupTypeNameOid
    - get_transform_oid
    - errcode
    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:1231,1
    - Dst: makeString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1231,1
    - Dst: lcons
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1233,1
    - Dst: makeString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1233,1
    - Dst: lcons
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1235,1
    - Dst: makeString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1235,1
    - Dst: get_object_address
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1238,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: 1240
      start: 1224
    functionDepth: 6
    functionLinenumber: 1224
    functionLinenumberEnd: 1240
    functionName: get_object_address_rv
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - makeString
    - lcons
    - get_object_address
    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:1253,1
    - Dst: get_am_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1260,1
    - Dst: get_database_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1265,1
    - Dst: get_extension_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1270,1
    - Dst: get_tablespace_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1275,1
    - Dst: get_role_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1280,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1285,1
    - Dst: get_language_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1290,1
    - Dst: get_foreign_data_wrapper_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1295,1
    - Dst: get_foreign_server_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1300,1
    - Dst: get_event_trigger_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1305,1
    - Dst: ParameterAclLookup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1310,1
    - Dst: get_publication_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1315,1
    - Dst: get_subscription_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1320,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1324,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 75
    argCount: 3
    argNames:
    - objtype
    - strval
    - missing_ok
    argTypes:
    - ObjectType
    - String*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1332
      start: 1246
    functionDepth: 3
    functionLinenumber: 1246
    functionLinenumberEnd: 1332
    functionName: get_object_address_unqualified
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - get_foreign_data_wrapper_oid
    - get_namespace_oid
    - get_database_oid
    - get_extension_oid
    - get_role_oid
    - get_event_trigger_oid
    - get_subscription_oid
    - get_am_oid
    - ParameterAclLookup
    - get_foreign_server_oid
    - elog
    - strVal
    - get_language_oid
    - get_tablespace_oid
    - get_publication_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: 15
    BranchProfiles: []
    Callsites:
    - Dst: relation_openrv_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1349,1
    - Dst: makeRangeVarFromNameList
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1349,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1359,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1360,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1361,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1362,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1366,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1367,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1368,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1369,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1374,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1375,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1376,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1377,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1381,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1382,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1383,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1384,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1388,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1389,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1390,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1391,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1395,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1396,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1397,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1398,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1401,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1406,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 39
    argCount: 5
    argNames:
    - objtype
    - object
    - relp
    - lockmode
    - missing_ok
    argTypes:
    - ObjectType
    - List*
    - Relation*
    - LOCKMODE
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1410
      start: 1337
    functionDepth: 3
    functionLinenumber: 1337
    functionLinenumberEnd: 1410
    functionName: get_relation_by_qualified_name
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - errmsg
    - RelationGetRelationName
    - RelationGetRelid
    - relation_openrv_extended
    - ereport
    - elog
    - makeRangeVarFromNameList
    - errcode
    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:1431,1
    - Dst: llast
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1431,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1434,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1436,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1437,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1438,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1441,1
    - Dst: table_openrv_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1442,1
    - Dst: makeRangeVarFromNameList
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1442,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1446,1
    - Dst: get_rewrite_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1453,1
    - Dst: get_trigger_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1459,1
    - Dst: get_relation_constraint_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1465,1
    - Dst: get_relation_policy_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1472,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1477,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1481,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1484,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: 1493
      start: 1419
    functionDepth: 5
    functionLinenumber: 1419
    functionLinenumberEnd: 1493
    functionName: get_object_address_relobject
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - errmsg
    - list_copy_head
    - RelationGetRelid
    - llast
    - ereport
    - list_length
    - get_relation_constraint_oid
    - get_relation_policy_oid
    - get_rewrite_oid
    - strVal
    - elog
    - table_openrv_extended
    - OidIsValid
    - table_close
    - makeRangeVarFromNameList
    - errcode
    - get_trigger_oid
    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:1511,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1512,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1513,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1514,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1515,1
    - Dst: llast
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1515,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1516,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1516,1
    - Dst: relation_openrv
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1518,1
    - Dst: makeRangeVarFromNameList
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1518,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1519,1
    - Dst: get_attnum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1522,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1526,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1527,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1528,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1529,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1534,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: 1544
      start: 1498
    functionDepth: 5
    functionLinenumber: 1498
    functionLinenumberEnd: 1544
    functionName: get_object_address_attribute
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - errmsg
    - list_copy_head
    - RelationGetRelid
    - NameListToString
    - llast
    - relation_openrv
    - ereport
    - list_length
    - relation_close
    - get_attnum
    - strVal
    - makeRangeVarFromNameList
    - errcode
    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:1564,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1565,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1566,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1567,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1568,1
    - Dst: llast
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1568,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1569,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1569,1
    - Dst: relation_openrv
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1571,1
    - Dst: makeRangeVarFromNameList
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1571,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1572,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1574,1
    - Dst: get_attnum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1577,1
    - Dst: GetAttrDefaultOid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1580,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1581,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1584,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1585,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1586,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1587,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1592,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: 1602
      start: 1549
    functionDepth: 5
    functionLinenumber: 1549
    functionLinenumberEnd: 1602
    functionName: get_object_address_attrdef
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - errmsg
    - list_copy_head
    - RelationGetRelid
    - NameListToString
    - GetAttrDefaultOid
    - RelationGetDescr
    - llast
    - relation_openrv
    - ereport
    - list_length
    - relation_close
    - get_attnum
    - strVal
    - OidIsValid
    - makeRangeVarFromNameList
    - errcode
    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:1617,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1618,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1621,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1622,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1623,1
    - Dst: TypeNameToString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1624,1
    - Dst: typeTypeId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1627,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1631,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1632,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1633,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1634,1
    - Dst: TypeNameToString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1635,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1638,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - objtype
    - typename
    - missing_ok
    argTypes:
    - ObjectType
    - TypeName*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1641
      start: 1607
    functionDepth: 1
    functionLinenumber: 1607
    functionLinenumberEnd: 1641
    functionName: get_object_address_type
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - errmsg
    - LookupTypeName
    - ReleaseSysCache
    - HeapTupleIsValid
    - typeTypeId
    - GETSTRUCT
    - ereport
    - TypeNameToString
    - errcode
    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:1653,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1653,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1653,1
    - Dst: list_copy_tail
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1654,1
    - Dst: get_opclass_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1660,1
    - Dst: get_opfamily_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1665,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1669,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 3
    argNames:
    - objtype
    - object
    - missing_ok
    argTypes:
    - ObjectType
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1677
      start: 1646
    functionDepth: 5
    functionLinenumber: 1646
    functionLinenumberEnd: 1677
    functionName: get_object_address_opcf
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - get_opclass_oid
    - linitial
    - elog
    - strVal
    - get_index_am_oid
    - get_opfamily_oid
    - list_copy_tail
    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:1702,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1702,1
    - Dst: llast
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1702,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1702,1
    - Dst: list_copy_head
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1703,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1703,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1703,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1703,1
    - Dst: get_object_address_opcf
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1706,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1716,1
    - Dst: get_object_address_type
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1717,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1729,1
    - Dst: SearchSysCache4
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1732,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1733,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1734,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1735,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1736,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1737,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1740,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1741,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1742,1
    - Dst: TypeNameToString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1744,1
    - Dst: TypeNameToString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1745,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1746,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1750,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1751,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1760,1
    - Dst: SearchSysCache4
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1763,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1764,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1765,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1766,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1767,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1768,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1771,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1772,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1773,1
    - Dst: TypeNameToString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1775,1
    - Dst: TypeNameToString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1776,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1777,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1781,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1782,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1787,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 3
    argNames:
    - objtype
    - object
    - missing_ok
    argTypes:
    - ObjectType
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1791
      start: 1684
    functionDepth: 6
    functionLinenumber: 1684
    functionLinenumberEnd: 1791
    functionName: get_object_address_opf_member
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - get_object_address_type
    - get_object_address_opcf
    - HeapTupleIsValid
    - list_length
    - getObjectDescription
    - list_copy_head
    - SearchSysCache4
    - ObjectAddressSet
    - ReleaseSysCache
    - GETSTRUCT
    - Int16GetDatum
    - errmsg
    - atoi
    - linitial
    - lfirst_node
    - llast
    - elog
    - strVal
    - TypeNameToString
    - ObjectIdGetDatum
    - ereport
    - errcode
    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:1716,1
    - Dst: get_object_address_type
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1717,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1721
      start: 1712
    functionDepth: 2
    functionLinenumber: 1712
    functionLinenumberEnd: 1721
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 345
    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:1806,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1809,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1809,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1810,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1810,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1813,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1817,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1818,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1819,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1822,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1823,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1824,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1828,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1829,1
    - Dst: GetForeignServerByName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1833,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1837,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1838,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1839,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1842,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1843,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1844,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1845,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1848,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1849,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1850,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1855,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1857,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 2
    argNames:
    - object
    - missing_ok
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1860
      start: 1796
    functionDepth: 3
    functionLinenumber: 1796
    functionLinenumberEnd: 1860
    functionName: get_object_address_usermapping
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - errmsg
    - SearchSysCache2
    - ObjectAddressSet
    - linitial
    - ReleaseSysCache
    - HeapTupleIsValid
    - ObjectIdGetDatum
    - lsecond
    - ereport
    - GETSTRUCT
    - SearchSysCache1
    - GetForeignServerByName
    - CStringGetDatum
    - strVal
    - strcmp
    - errcode
    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:1877,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1879,1
    - Dst: relation_openrv_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1880,1
    - Dst: makeRangeVarFromNameList
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1880,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1886,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1886,1
    - Dst: GetPublicationByName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1889,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1892,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1898,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1899,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1899,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1900,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1901,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1904,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1905,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1906,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1907,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1908,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - object
    - relp
    - missing_ok
    argTypes:
    - List*
    - Relation*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1914
      start: 1867
    functionDepth: 3
    functionLinenumber: 1867
    functionLinenumberEnd: 1914
    functionName: get_object_address_publication_rel
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - RelationGetRelationName
    - ObjectAddressSet
    - linitial
    - RelationGetRelid
    - relation_openrv_extended
    - GetPublicationByName
    - lsecond
    - ereport
    - relation_close
    - strVal
    - OidIsValid
    - GetSysCacheOid2
    - makeRangeVarFromNameList
    - ObjectIdGetDatum
    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:1929,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1932,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1932,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1933,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1933,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1935,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1936,1
    - Dst: GetPublicationByName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1940,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1946,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1948,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1949,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1950,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1951,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1952,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1953,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - object
    - missing_ok
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1957
      start: 1920
    functionDepth: 1
    functionLinenumber: 1920
    functionLinenumberEnd: 1957
    functionName: get_object_address_publication_schema
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - get_namespace_oid
    - ObjectAddressSet
    - linitial
    - GetPublicationByName
    - lsecond
    - ereport
    - strVal
    - OidIsValid
    - GetSysCacheOid2
    - ObjectIdGetDatum
    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:1974,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1980,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1980,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1981,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1982,1
    - Dst: lthird
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1982,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1990,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:1990,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2012,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2013,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2014,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2015,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2028,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2029,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2030,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2032,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2033,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2041,1
    - Dst: SearchSysCache3
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2049,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2050,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2051,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2052,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2053,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2056,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2057,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2065,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2066,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2067,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2070,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2071,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2072,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 57
    argCount: 2
    argNames:
    - object
    - missing_ok
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2076
      start: 1962
    functionDepth: 2
    functionLinenumber: 1962
    functionLinenumberEnd: 2076
    functionName: get_object_address_defacl
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - HeapTupleIsValid
    - list_length
    - errhint
    - SearchSysCache3
    - get_namespace_oid
    - ObjectAddressSet
    - ReleaseSysCache
    - lsecond
    - GETSTRUCT
    - CStringGetDatum
    - errmsg
    - linitial
    - lthird
    - strVal
    - ObjectIdGetDatum
    - ereport
    - SearchSysCache1
    - CharGetDatum
    - errcode
    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:2091,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2096,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2097,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2098,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2099,1
    - Dst: makeString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2099,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2099,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - arr
    argTypes:
    - ArrayType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2103
      start: 2082
    functionDepth: 6
    functionLinenumber: 2082
    functionLinenumberEnd: 2103
    functionName: textarray_to_strvaluelist
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - errmsg
    - makeString
    - deconstruct_array_builtin
    - TextDatumGetCString
    - ereport
    - lappend
    - errcode
    linkageType: ''
    returnType: List
    signature: 'List *

      textarray_to_strvaluelist(ArrayType *arr)'
  - BBCount: 85
    BranchProfiles: []
    Callsites:
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2111,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2111,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2112,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2113,1
    - Dst: read_objtype_from_string
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2128,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2130,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2131,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2132,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2147,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2149,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2150,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2151,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2153,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2154,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2155,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2164,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:2170,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2171,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2172,1
    - Dst: makeFloat
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2173,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2173,1
    - Dst: textarray_to_strvaluelist
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2177,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2179,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2180,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2181,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2202,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2208,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2209,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2210,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2211,1
    - Dst: typeStringToTypeName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2212,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2212,1
    - Dst: textarray_to_strvaluelist
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2219,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2230,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: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2241,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2242,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2243,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2244,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2248,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2249,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2250,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2251,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2255,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2256,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2257,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2258,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2262,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2263,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2264,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2265,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2314,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2315,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2316,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2317,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2318,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2327,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2327,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2330,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2330,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2334,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2334,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2334,1
    - Dst: lcons
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2337,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2337,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2341,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2349,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2363,1
    - Dst: get_object_address
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2365,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2370,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2372,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2373,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2375,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2376,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2377,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2382,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2384,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2384,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 157
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2385
      start: 2108
    functionDepth: 7
    functionLinenumber: 2108
    functionLinenumberEnd: 2385
    functionName: pg_get_object_address
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - makeFloat
    - HeapTupleGetDatum
    - lcons
    - list_length
    - relation_close
    - PG_GETARG_DATUM
    - makeNode
    - deconstruct_array_builtin
    - Int32GetDatum
    - textarray_to_strvaluelist
    - get_call_result_type
    - errmsg
    - heap_form_tuple
    - linitial
    - get_object_address
    - PG_RETURN_DATUM
    - read_objtype_from_string
    - elog
    - lappend
    - ObjectIdGetDatum
    - PG_GETARG_ARRAYTYPE_P
    - list_make2
    - TextDatumGetCString
    - typeStringToTypeName
    - ereport
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum pg_get_object_address(PG_FUNCTION_ARGS)
  - BBCount: 68
    BranchProfiles: []
    Callsites:
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2407,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2407,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2408,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2409,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2414,1
    - Dst: aclcheck_error_type
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2415,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2422,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2423,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2424,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2425,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2428,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2430,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2436,1
    - Dst: aclcheck_error_type
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2437,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2445,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2446,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2447,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2447,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2459,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2460,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2461,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2470,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2471,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2472,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2472,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2476,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2477,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2478,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2479,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2485,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2485,1
    - Dst: lsecond_node
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2486,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2486,1
    - Dst: typenameTypeId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2487,1
    - Dst: typenameTypeId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2488,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2490,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2491,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2492,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2493,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2494,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2495,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2496,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2501,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2501,1
    - Dst: typenameTypeId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2502,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2504,1
    - Dst: aclcheck_error_type
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2505,1
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2516,1
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2518,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2519,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2520,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2521,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2522,1
    - Dst: has_createrole_privilege
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2527,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2528,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2529,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2530,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2531,1
    - Dst: is_admin_of_role
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2533,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2534,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2535,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2536,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2537,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2539,1
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2548,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2549,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2550,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2551,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2561,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 105
    argCount: 5
    argNames:
    - roleid
    - objtype
    - address
    - object
    - relation
    argTypes:
    - Oid
    - ObjectType
    - ObjectAddress
    - Node*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2564
      start: 2390
    functionDepth: 1
    functionLinenumber: 2390
    functionLinenumberEnd: 2564
    functionName: check_object_ownership
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - aclcheck_error_type
    - HeapTupleIsValid
    - castNode
    - RelationGetRelationName
    - errdetail
    - typenameTypeId
    - RelationGetRelid
    - ReleaseSysCache
    - has_createrole_privilege
    - GETSTRUCT
    - superuser_arg
    - linitial_node
    - errmsg
    - aclcheck_error
    - NameListToString
    - format_type_be
    - elog
    - strVal
    - lsecond_node
    - object_ownercheck
    - ObjectIdGetDatum
    - ereport
    - SearchSysCache1
    - is_admin_of_role
    - errcode
    - GetUserNameFromId
    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:2581,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2587,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2590,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2590,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2591,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2592,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2594,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2594,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2597,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - address
    argTypes:
    - ObjectAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2600
      start: 2572
    functionDepth: 1
    functionLinenumber: 2572
    functionLinenumberEnd: 2600
    functionName: get_object_namespace
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - Assert
    - ReleaseSysCache
    - HeapTupleIsValid
    - SysCacheGetAttrNotNull
    - SearchSysCache1
    - elog
    - DatumGetObjectId
    - get_object_property_data
    - 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:2613,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2615,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2618,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2619,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2620,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - objtype
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2623
      start: 2608
    functionDepth: 1
    functionLinenumber: 2608
    functionLinenumberEnd: 2623
    functionName: read_objtype_from_string
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - errmsg
    - lengthof
    - ereport
    - strcmp
    - errcode
    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:2631,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - class_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2634
      start: 2628
    functionDepth: 1
    functionLinenumber: 2628
    functionLinenumberEnd: 2634
    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:2639,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - class_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2642
      start: 2636
    functionDepth: 1
    functionLinenumber: 2636
    functionLinenumberEnd: 2642
    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:2647,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - class_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2650
      start: 2644
    functionDepth: 1
    functionLinenumber: 2644
    functionLinenumberEnd: 2650
    functionName: get_object_catcache_oid
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - get_object_property_data
    linkageType: ''
    returnType: int
    signature: int get_object_catcache_oid(Oid class_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_object_property_data
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2655,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - class_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2658
      start: 2652
    functionDepth: 1
    functionLinenumber: 2652
    functionLinenumberEnd: 2658
    functionName: get_object_catcache_name
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - get_object_property_data
    linkageType: ''
    returnType: int
    signature: int get_object_catcache_name(Oid class_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_object_property_data
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2663,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - class_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2666
      start: 2660
    functionDepth: 1
    functionLinenumber: 2660
    functionLinenumberEnd: 2666
    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:2671,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - class_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2674
      start: 2668
    functionDepth: 1
    functionLinenumber: 2668
    functionLinenumberEnd: 2674
    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:2679,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - class_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2682
      start: 2676
    functionDepth: 1
    functionLinenumber: 2676
    functionLinenumberEnd: 2682
    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:2687,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - class_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2690
      start: 2684
    functionDepth: 1
    functionLinenumber: 2684
    functionLinenumberEnd: 2690
    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:2695,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - class_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2698
      start: 2692
    functionDepth: 1
    functionLinenumber: 2692
    functionLinenumberEnd: 2698
    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:2710,1
    - Dst: get_relkind_objtype
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2719,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2719,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - class_id
    - object_id
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2723
      start: 2707
    functionDepth: 1
    functionLinenumber: 2707
    functionLinenumberEnd: 2723
    functionName: get_object_type
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - get_object_property_data
    - get_rel_relkind
    - get_relkind_objtype
    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:2728,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - class_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2731
      start: 2725
    functionDepth: 1
    functionLinenumber: 2725
    functionLinenumberEnd: 2731
    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:2742,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - class_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2749
      start: 2737
    functionDepth: 1
    functionLinenumber: 2737
    functionLinenumberEnd: 2749
    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:2767,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2776,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2777,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - class_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2780
      start: 2754
    functionDepth: 1
    functionLinenumber: 2754
    functionLinenumberEnd: 2780
    functionName: get_object_property_data
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 12
    functionsReached:
    - errmsg_internal
    - lengthof
    - ereport
    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:2793,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - catalog
    - oidcol
    - objectId
    argTypes:
    - Relation
    - AttrNumber
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2794
      start: 2789
    functionDepth: 1
    functionLinenumber: 2789
    functionLinenumberEnd: 2794
    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:2809,1
    - Dst: get_object_catcache_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2810,1
    - Dst: SearchSysCacheLockedCopy1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2815,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2816,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2818,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2819,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2820,1
    - Dst: get_object_oid_index
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2825,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2829,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2829,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2831,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2834,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2836,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2838,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2839,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2841,1
    - Dst: LockTuple
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2846,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2848,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2850,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 4
    argNames:
    - catalog
    - oidcol
    - objectId
    - locktup
    argTypes:
    - Relation
    - AttrNumber
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2854
      start: 2802
    functionDepth: 3
    functionLinenumber: 2802
    functionLinenumberEnd: 2854
    functionName: get_catalog_object_by_oid_extended
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - Assert
    - systable_beginscan
    - RelationGetRelid
    - get_object_catcache_oid
    - HeapTupleIsValid
    - systable_getnext
    - LockTuple
    - SearchSysCacheCopy1
    - ScanKeyInit
    - get_object_oid_index
    - OidIsValid
    - heap_copytuple
    - SearchSysCacheLockedCopy1
    - systable_endscan
    - ObjectIdGetDatum
    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:2870,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2871,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2872,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2875,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2880,1
    - Dst: get_publication_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2881,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2884,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2888,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2893,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2894,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2896,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2901,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: 2903
      start: 2863
    functionDepth: 1
    functionLinenumber: 2863
    functionLinenumberEnd: 2903
    functionName: getPublicationSchemaInfo
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - pfree
    - ReleaseSysCache
    - HeapTupleIsValid
    - get_namespace_name
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - get_publication_name
    - 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: 137
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2916,1
    - Dst: getRelationDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2922,1
    - Dst: get_attname
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2927,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2934,1
    - Dst: getRelationDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2935,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2937,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2937,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2939,1
    - Dst: format_procedure_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2946,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2952,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2952,1
    - Dst: format_type_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2959,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2965,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2965,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2977,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2979,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2982,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2984,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2987,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2989,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2992,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2995,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:2996,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3000,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3002,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3002,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3003,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3004,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3006,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3007,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3017,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3018,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3019,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3022,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3027,1
    - Dst: CollationIsVisible
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3030,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3033,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3035,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3035,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3036,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3037,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3038,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3047,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3048,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3049,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3052,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3057,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3059,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3063,1
    - Dst: getRelationDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3064,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3066,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3066,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3067,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3068,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3072,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3072,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3073,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3076,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3086,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3087,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3088,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3091,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3096,1
    - Dst: ConversionIsVisible
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3099,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3102,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3104,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3104,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3105,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3106,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3107,1
    - Dst: GetAttrDefaultColumnAddress
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3115,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3117,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3120,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3126,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3126,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3127,1
    - Dst: get_language_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3133,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3137,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3137,1
    - Dst: get_language_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3138,1
    - Dst: LargeObjectExists
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3143,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3145,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3145,1
    - Dst: format_operator_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3152,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3158,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3158,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3170,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3171,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3172,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3175,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3180,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3182,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3183,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3184,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3185,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3187,1
    - Dst: OpclassIsVisible
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3190,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3193,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3195,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3195,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3196,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3197,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3198,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3200,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3201,1
    - Dst: getOpFamilyDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3206,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3213,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3214,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3215,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3218,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3223,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3223,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3224,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3224,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3225,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3238,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3241,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3244,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3246,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3249,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3251,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3254,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3257,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3258,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3262,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3264,1
    - Dst: getOpFamilyDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3265,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3278,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3278,1
    - Dst: format_type_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3280,1
    - Dst: format_type_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3282,1
    - Dst: format_operator
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3285,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3287,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3289,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3290,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3303,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3306,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3309,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3311,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3314,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3316,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3319,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3322,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3323,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3327,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3329,1
    - Dst: getOpFamilyDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3330,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3343,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3343,1
    - Dst: format_type_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3345,1
    - Dst: format_type_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3347,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3350,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3352,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3354,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3355,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3368,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3370,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3373,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3375,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3378,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3380,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3383,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3386,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3387,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3391,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3393,1
    - Dst: getRelationDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3394,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3397,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3397,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3398,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3399,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3400,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3401,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3414,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3416,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3419,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3421,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3424,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3426,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3429,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3432,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3433,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3437,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3439,1
    - Dst: getRelationDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3440,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3443,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3443,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3444,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3445,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3446,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3447,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3455,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3459,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3463,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3463,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3473,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3474,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3475,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3478,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3483,1
    - Dst: StatisticsObjIsVisible
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3486,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3489,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3491,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3491,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3492,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3493,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3495,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3505,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3506,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3507,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3510,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3514,1
    - Dst: TSParserIsVisible
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3517,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3520,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3522,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3522,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3523,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3524,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3525,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3535,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3536,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3537,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3540,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3545,1
    - Dst: TSDictionaryIsVisible
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3548,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3551,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3553,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3553,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3554,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3555,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3556,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3566,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3567,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3568,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3571,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3576,1
    - Dst: TSTemplateIsVisible
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3579,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3582,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3584,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3584,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3585,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3586,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3587,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3597,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3598,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3599,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3602,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3607,1
    - Dst: TSConfigIsVisible
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3610,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3613,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3615,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3615,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3616,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3617,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3618,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3624,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3628,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3628,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3640,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3642,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3645,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3647,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3650,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3652,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3655,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3658,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3659,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3663,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3665,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3665,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3666,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3667,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3669,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3670,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3678,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3682,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3686,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3686,1
    - Dst: get_tablespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3694,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3698,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3702,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3702,1
    - Dst: GetForeignDataWrapperExtended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3710,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3713,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3713,1
    - Dst: GetForeignServerExtended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3721,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3723,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3723,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3735,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3736,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3737,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3740,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3745,1
    - Dst: GetForeignServer
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3747,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3749,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3751,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3752,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3756,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3756,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3771,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3773,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3776,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3778,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3781,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3783,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3786,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3789,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3790,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3794,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3796,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3798,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3799,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3807,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3808,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3811,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3812,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3817,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3818,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3821,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3822,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3827,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3828,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3831,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3832,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3837,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3838,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3841,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3842,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3846,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3847,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3848,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3852,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3853,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3854,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3860,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3861,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3864,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3865,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3870,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3871,1
    - Dst: get_extension_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3879,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3883,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3887,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3887,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3895,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3896,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3897,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3900,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3904,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3904,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3905,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3905,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3906,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3916,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3917,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3918,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3921,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3925,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3927,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3928,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3928,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3929,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3942,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3944,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3947,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3949,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3952,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3954,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3957,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3960,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3961,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3965,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3967,1
    - Dst: getRelationDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3968,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3971,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3971,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3972,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3973,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3974,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3975,1
    - Dst: get_publication_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3981,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3985,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3985,1
    - Dst: getPublicationSchemaInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3994,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3998,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:3998,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4000,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4001,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4012,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4013,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4014,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4017,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4022,1
    - Dst: get_publication_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4023,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4025,1
    - Dst: getRelationDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4026,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4029,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4029,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4031,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4032,1
    - Dst: get_subscription_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4038,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4042,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4042,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4051,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4052,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4053,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4056,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4061,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4063,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4063,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4064,1
    - Dst: get_language_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4065,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4067,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4072,1
    CyclomaticComplexity: 171
    EdgeCount: 171
    ICount: 557
    argCount: 2
    argNames:
    - object
    - missing_ok
    argTypes:
    - ObjectAddress*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4080
      start: 2911
    functionDepth: 3
    functionLinenumber: 2911
    functionLinenumberEnd: 4080
    functionName: getObjectDescription
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 4
    functionsReached:
    - get_tablespace_name
    - format_operator
    - HeapTupleIsValid
    - quote_qualified_identifier
    - SysCacheGetAttrNotNull
    - CollationIsVisible
    - format_procedure_extended
    - get_attname
    - getObjectDescription
    - TSParserIsVisible
    - get_language_name
    - ConversionIsVisible
    - GetForeignDataWrapperExtended
    - get_extension_name
    - getRelationDescription
    - format_type_extended
    - TSTemplateIsVisible
    - pfree
    - NameStr
    - ReleaseSysCache
    - table_open
    - LargeObjectExists
    - GETSTRUCT
    - ScanKeyInit
    - StatisticsObjIsVisible
    - getPublicationSchemaInfo
    - format_procedure
    - GetForeignServerExtended
    - _
    - get_subscription_name
    - format_type_be
    - get_namespace_name
    - OpclassIsVisible
    - getOpFamilyDescription
    - GetForeignServer
    - elog
    - OidIsValid
    - table_close
    - get_publication_name
    - systable_endscan
    - ObjectIdGetDatum
    - Assert
    - systable_beginscan
    - appendStringInfo
    - systable_getnext
    - TextDatumGetCString
    - TSDictionaryIsVisible
    - SearchSysCache1
    - GetAttrDefaultColumnAddress
    - TSConfigIsVisible
    - get_database_name
    - initStringInfo
    - GetUserNameFromId
    - format_operator_extended
    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:4094,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - classid
    - objid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4095
      start: 4085
    functionDepth: 4
    functionLinenumber: 4085
    functionLinenumberEnd: 4095
    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: 15
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4110,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4111,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4112,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4115,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4118,1
    - Dst: RelationIsVisible
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4121,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4124,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4126,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4126,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4132,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4132,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: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4141,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4141,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4145,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4145,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4149,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4149,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4153,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4153,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4157,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4157,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4161,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4161,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4166,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4166,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4171,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 44
    argCount: 3
    argNames:
    - buffer
    - relid
    - missing_ok
    argTypes:
    - StringInfo
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4172
      start: 4102
    functionDepth: 2
    functionLinenumber: 4102
    functionLinenumberEnd: 4172
    functionName: getRelationDescription
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - NameStr
    - ReleaseSysCache
    - appendStringInfo
    - HeapTupleIsValid
    - RelationIsVisible
    - get_namespace_name
    - GETSTRUCT
    - quote_qualified_identifier
    - SearchSysCache1
    - elog
    - _
    - ObjectIdGetDatum
    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:4186,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4186,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4187,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4190,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4193,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4195,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4195,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4196,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4197,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4199,1
    - Dst: OpfamilyIsVisible
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4202,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4205,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4207,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4207,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4208,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4209,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4210,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4212,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4213,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - buffer
    - opfid
    - missing_ok
    argTypes:
    - StringInfo
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4214
      start: 4177
    functionDepth: 2
    functionLinenumber: 4177
    functionLinenumberEnd: 4214
    functionName: getOpFamilyDescription
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - OpfamilyIsVisible
    - NameStr
    - ReleaseSysCache
    - appendStringInfo
    - HeapTupleIsValid
    - quote_qualified_identifier
    - get_namespace_name
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - _
    - ObjectIdGetDatum
    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:4222,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4223,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4224,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4229,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4229,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4230,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4236,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4239,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4241,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4241,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4242
      start: 4219
    functionDepth: 4
    functionLinenumber: 4219
    functionLinenumberEnd: 4242
    functionName: pg_describe_object
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - getObjectDescription
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - OidIsValid
    - PG_GETARG_INT32
    - PG_RETURN_TEXT_P
    - cstring_to_text
    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:4250,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4251,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4252,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4266,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4267,1
    - Dst: is_objectclass_supported
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4269,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4272,1
    - Dst: get_catalog_object_by_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4274,1
    - Dst: get_object_attnum_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4275,1
    - Dst: get_object_attnum_namespace
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4283,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4286,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4287,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4289,1
    - Dst: get_object_namensp_unique
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4297,1
    - Dst: get_object_attnum_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4299,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4304,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4305,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4307,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4309,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4309,1
    - Dst: DatumGetName
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4309,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4314,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4318,1
    - Dst: getObjectTypeDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4318,1
    - Dst: getObjectIdentity
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4325,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4328,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4330,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4330,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4332,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4341,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4350,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4356,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4358,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4358,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4359
      start: 4247
    functionDepth: 5
    functionLinenumber: 4247
    functionLinenumberEnd: 4359
    functionName: pg_identify_object
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - HeapTupleGetDatum
    - get_object_attnum_namespace
    - getObjectTypeDescription
    - get_object_namensp_unique
    - NameStr
    - heap_getattr
    - is_objectclass_supported
    - table_open
    - getObjectIdentity
    - get_catalog_object_by_oid
    - PG_GETARG_OID
    - get_call_result_type
    - get_object_attnum_name
    - heap_form_tuple
    - PG_RETURN_DATUM
    - get_namespace_name
    - DatumGetName
    - elog
    - OidIsValid
    - table_close
    - get_object_attnum_oid
    - CStringGetTextDatum
    - quote_identifier
    - RelationGetDescr
    - PG_GETARG_INT32
    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:4367,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4368,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4369,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4383,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4384,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4387,1
    - Dst: getObjectTypeDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4387,1
    - Dst: getObjectIdentityParts
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4391,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4399,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4403,1
    - Dst: strlist_to_textarray
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4403,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4405,1
    - Dst: construct_empty_array
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4405,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4410,1
    - Dst: strlist_to_textarray
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4410,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4412,1
    - Dst: construct_empty_array
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4412,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4416,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4418,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4418,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4419
      start: 4364
    functionDepth: 5
    functionLinenumber: 4364
    functionLinenumberEnd: 4419
    functionName: pg_identify_object_as_address
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - pfree
    - heap_form_tuple
    - HeapTupleGetDatum
    - strlist_to_textarray
    - CStringGetTextDatum
    - getObjectIdentityParts
    - PG_RETURN_DATUM
    - getObjectTypeDescription
    - PointerGetDatum
    - construct_empty_array
    - elog
    - PG_GETARG_OID
    - PG_GETARG_INT32
    - get_call_result_type
    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:4428,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4429,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4430,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4438,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4438,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4439,1
    - Dst: get_object_attnum_acl
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4444,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4448,1
    - Dst: SearchSysCacheCopyAttNum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4458,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4460,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4461,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4463,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4470,1
    - Dst: get_catalog_object_by_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4472,1
    - Dst: get_object_attnum_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4472,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4474,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4476,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4477,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4480,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4480,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4481,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4485,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4487,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4488
      start: 4425
    functionDepth: 4
    functionLinenumber: 4425
    functionLinenumberEnd: 4488
    functionName: pg_get_acl
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 0
    functionsReached:
    - heap_getattr
    - table_open
    - get_object_attnum_acl
    - HeapTupleIsValid
    - PG_RETURN_DATUM
    - RelationGetDescr
    - get_catalog_object_by_oid
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - OidIsValid
    - PG_GETARG_INT32
    - SysCacheGetAttr
    - table_close
    - SearchSysCacheCopyAttNum
    - get_object_attnum_oid
    linkageType: ''
    returnType: Datum
    signature: Datum pg_get_acl(PG_FUNCTION_ARGS)
  - BBCount: 43
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4501,1
    - Dst: getRelationTypeDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4506,1
    - Dst: getProcedureTypeDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4512,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4517,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4521,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4525,1
    - Dst: getConstraintTypeDescription
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4529,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4534,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4538,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4542,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4546,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4550,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4554,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4558,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4562,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4566,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4570,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4574,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4578,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4582,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4586,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4590,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4594,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4598,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4602,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4606,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4610,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4614,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4618,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4622,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4626,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4630,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4634,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4638,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4642,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4646,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4650,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4654,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4658,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4662,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4666,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4670,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4674,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4678,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 131
    argCount: 2
    argNames:
    - object
    - missing_ok
    argTypes:
    - ObjectAddress*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4681
      start: 4496
    functionDepth: 3
    functionLinenumber: 4496
    functionLinenumberEnd: 4681
    functionName: getObjectTypeDescription
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 2
    functionsReached:
    - getConstraintTypeDescription
    - Assert
    - getProcedureTypeDescription
    - appendStringInfoString
    - elog
    - getRelationTypeDescription
    - initStringInfo
    linkageType: ''
    returnType: char
    signature: 'char *

      getObjectTypeDescription(const ObjectAddress *object, bool missing_ok)'
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4693,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4694,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4695,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4698,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4701,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4704,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4710,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4714,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4717,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4720,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4723,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4726,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4729,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4732,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4736,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4741,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4743,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 43
    argCount: 4
    argNames:
    - buffer
    - relid
    - objectSubId
    - missing_ok
    argTypes:
    - StringInfo
    - Oid
    - int32
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4744
      start: 4686
    functionDepth: 2
    functionLinenumber: 4686
    functionLinenumberEnd: 4744
    functionName: getRelationTypeDescription
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - ReleaseSysCache
    - HeapTupleIsValid
    - appendStringInfoString
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - 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:4756,1
    - Dst: get_catalog_object_by_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4757,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4759,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4762,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4764,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4767,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4771,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4773,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4774,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4775,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4776,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4778,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4780,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - buffer
    - constroid
    - missing_ok
    argTypes:
    - StringInfo
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4781
      start: 4749
    functionDepth: 3
    functionLinenumber: 4749
    functionLinenumberEnd: 4781
    functionName: getConstraintTypeDescription
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - table_open
    - HeapTupleIsValid
    - appendStringInfoString
    - GETSTRUCT
    - get_catalog_object_by_oid
    - elog
    - 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:4793,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4794,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4795,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4798,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4801,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4804,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4807,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4809,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4811,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4813,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - buffer
    - procid
    - missing_ok
    argTypes:
    - StringInfo
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4814
      start: 4786
    functionDepth: 2
    functionLinenumber: 4786
    functionLinenumberEnd: 4814
    functionName: getProcedureTypeDescription
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - ReleaseSysCache
    - HeapTupleIsValid
    - appendStringInfoString
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - 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:4826,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - object
    - missing_ok
    argTypes:
    - ObjectAddress*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4827
      start: 4823
    functionDepth: 1
    functionLinenumber: 4823
    functionLinenumberEnd: 4827
    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: 170
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4845,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4853,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4853,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4853,1
    - Dst: get_attname
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4872,1
    - Dst: getRelationIdentity
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4880,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4887,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4888,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4890,1
    - Dst: format_procedure_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4898,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4904,1
    - Dst: format_procedure_parts
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4906,1
    - Dst: format_type_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4916,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4921,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4923,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4933,1
    - Dst: get_catalog_object_by_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4935,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4938,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4941,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4944,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4948,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4950,1
    - Dst: format_type_be_qualified
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4951,1
    - Dst: format_type_be_qualified
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4952,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4956,1
    - Dst: format_type_be_qualified
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4956,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4957,1
    - Dst: format_type_be_qualified
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4957,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4960,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4970,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4971,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4972,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4975,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4979,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4980,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4981,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4982,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4983,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4985,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4986,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4986,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4987,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4996,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4997,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:4998,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5001,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5005,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5007,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5009,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5010,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5010,1
    - Dst: getRelationIdentity
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5011,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5014,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5014,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5014,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5020,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5020,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5025,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5026,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5026,1
    - Dst: getObjectIdentityParts
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5027,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5031,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5031,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5031,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5034,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5044,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5045,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5046,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5049,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5053,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5054,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5055,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5056,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5057,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5059,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5060,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5060,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5061,1
    - Dst: GetAttrDefaultColumnAddress
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5069,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5071,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5074,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5079,1
    - Dst: getObjectIdentityParts
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5080,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5091,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5092,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5093,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5096,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5100,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5101,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5102,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5102,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5104,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5104,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5104,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5105,1
    - Dst: LargeObjectExists
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5110,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5112,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5115,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5115,1
    - Dst: format_operator_extended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5121,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5127,1
    - Dst: format_operator_parts
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5129,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5141,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5142,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5143,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5146,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5150,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5151,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5153,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5154,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5155,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5156,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5158,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5160,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5161,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5162,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5163,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5163,1
    - Dst: list_make3
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5165,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5165,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5165,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5167,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5167,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5169,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5170,1
    - Dst: getOpFamilyIdentity
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5175,1
    - Dst: get_am_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5183,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5187,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5191,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5191,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5193,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5208,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5211,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5214,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5216,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5219,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5221,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5224,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5227,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5228,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5232,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5234,1
    - Dst: getOpFamilyIdentity
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5235,1
    - Dst: format_type_be_qualified
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5238,1
    - Dst: format_type_be_qualified
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5239,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5243,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5244,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5245,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5248,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5252,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5254,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5255,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5270,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5273,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5276,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5278,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5281,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5283,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5286,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5289,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5290,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5294,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5296,1
    - Dst: getOpFamilyIdentity
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5297,1
    - Dst: format_type_be_qualified
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5300,1
    - Dst: format_type_be_qualified
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5301,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5305,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5306,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5307,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5310,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5314,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5316,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5317,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5327,1
    - Dst: get_catalog_object_by_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5329,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5332,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5335,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5338,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5342,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5344,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5345,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5345,1
    - Dst: getRelationIdentity
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5346,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5348,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5348,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5348,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5350,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5360,1
    - Dst: get_catalog_object_by_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5362,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5365,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5368,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5371,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5375,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5377,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5378,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5378,1
    - Dst: getRelationIdentity
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5379,1
    - Dst: lappend
      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: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5383,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5391,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5395,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5399,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5400,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5402,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5412,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5413,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5414,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5417,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5421,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5422,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5423,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5424,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5425,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5427,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5428,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5428,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5429,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5439,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5440,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5441,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5444,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5448,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5449,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5450,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5451,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5452,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5454,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5455,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5455,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5456,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5466,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5467,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5468,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5471,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5475,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5476,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5477,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5478,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5479,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5481,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5482,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5482,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5483,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5493,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5494,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5495,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5498,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5502,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5503,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5504,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5505,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5506,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5508,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5509,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5509,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5510,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5520,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5521,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5522,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5525,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5529,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5530,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5531,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5532,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5533,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5535,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5536,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5536,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5537,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5545,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5549,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5550,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5551,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5563,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5566,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5569,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5571,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5574,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5576,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5579,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5582,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5583,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5587,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5589,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5589,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5590,1
    - Dst: GetUserNameFromId
      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: get_database_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5602,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5606,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5611,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5612,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5613,1
    - Dst: get_tablespace_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5621,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5625,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5630,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5631,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5632,1
    - Dst: GetForeignDataWrapperExtended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5640,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5644,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5644,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5646,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5646,1
    - Dst: GetForeignServerExtended
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5655,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5659,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5660,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5662,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5662,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5675,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5676,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5677,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5680,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5684,1
    - Dst: GetForeignServer
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5686,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5688,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5690,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5691,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5697,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5697,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5698,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5698,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5701,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5702,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5717,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5719,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5722,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5724,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5727,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5729,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5732,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5735,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5736,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5740,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5742,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5743,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5745,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5747,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5749,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5750,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5752,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5760,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5764,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5768,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5772,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5776,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5780,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5787,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5789,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5790,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5790,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5793,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5794,1
    - Dst: get_extension_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5802,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5806,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5810,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5810,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5812,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5822,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5823,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5824,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5827,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5831,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5832,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5832,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5833,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5833,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5835,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5836,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5846,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5847,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5848,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5851,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5855,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5857,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5858,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5860,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5861,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5871,1
    - Dst: get_catalog_object_by_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5873,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5876,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5879,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5882,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5886,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5888,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5889,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5889,1
    - Dst: getRelationIdentity
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5890,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5892,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5892,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5892,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5894,1
    - Dst: get_publication_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5902,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5905,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5906,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5908,1
    - Dst: getPublicationSchemaInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5918,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5921,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5925,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5927,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5930,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5932,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5943,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5944,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5945,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5948,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5953,1
    - Dst: get_publication_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5954,1
    - Dst: getRelationIdentity
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5956,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5957,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5960,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5962,1
    - Dst: get_subscription_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5970,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5973,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5974,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5976,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5989,1
    - Dst: get_catalog_object_by_oid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5991,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5995,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:5998,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6001,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6005,1
    - Dst: format_type_be_qualified
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6007,1
    - Dst: get_language_name
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6008,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6010,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6015,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6016,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6016,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6019,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6024,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6035,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6043,1
    CyclomaticComplexity: 213
    EdgeCount: 213
    ICount: 641
    argCount: 4
    argNames:
    - object
    - objname
    - objargs
    - missing_ok
    argTypes:
    - ObjectAddress*
    - List**
    - List**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6050
      start: 4838
    functionDepth: 6
    functionLinenumber: 4838
    functionLinenumberEnd: 6050
    functionName: getObjectIdentityParts
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 3
    functionsReached:
    - format_type_be_qualified
    - get_tablespace_name
    - HeapTupleIsValid
    - getObjectIdentityParts
    - quote_qualified_identifier
    - SysCacheGetAttrNotNull
    - pstrdup
    - format_procedure_extended
    - get_attname
    - getOpFamilyIdentity
    - GetForeignDataWrapperExtended
    - get_language_name
    - get_extension_name
    - get_namespace_name_or_temp
    - format_type_extended
    - psprintf
    - pfree
    - NameStr
    - ReleaseSysCache
    - table_open
    - LargeObjectExists
    - GETSTRUCT
    - getRelationIdentity
    - get_catalog_object_by_oid
    - ScanKeyInit
    - getPublicationSchemaInfo
    - GetForeignServerExtended
    - _
    - PointerIsValid
    - format_procedure_parts
    - get_subscription_name
    - list_make3
    - appendStringInfoString
    - GetForeignServer
    - elog
    - lappend
    - OidIsValid
    - table_close
    - get_publication_name
    - systable_endscan
    - ObjectIdGetDatum
    - get_am_name
    - Assert
    - systable_beginscan
    - format_operator_parts
    - appendStringInfo
    - list_make2
    - systable_getnext
    - quote_identifier
    - TextDatumGetCString
    - list_make1
    - SearchSysCache1
    - GetAttrDefaultColumnAddress
    - get_database_name
    - initStringInfo
    - GetUserNameFromId
    - format_operator_extended
    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:6062,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6062,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6063,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6066,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6069,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6071,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6071,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6072,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6073,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6075,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6077,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6078,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6079,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6080,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6081,1
    - Dst: list_make3
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6084,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6084,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6084,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6085,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6086,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6086,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6088,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6089,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: 6090
      start: 6052
    functionDepth: 2
    functionLinenumber: 6052
    functionLinenumberEnd: 6090
    functionName: getOpFamilyIdentity
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - NameStr
    - ReleaseSysCache
    - appendStringInfo
    - list_make3
    - HeapTupleIsValid
    - quote_qualified_identifier
    - GETSTRUCT
    - pstrdup
    - SearchSysCache1
    - elog
    - get_namespace_name_or_temp
    - ObjectIdGetDatum
    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:6104,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6105,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6106,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6109,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6115,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6117,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6118,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6119,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6120,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6122,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6122,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6122,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6124,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: 6125
      start: 6096
    functionDepth: 2
    functionLinenumber: 6096
    functionLinenumberEnd: 6125
    functionName: getRelationIdentity
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - NameStr
    - ReleaseSysCache
    - list_make2
    - HeapTupleIsValid
    - appendStringInfoString
    - quote_qualified_identifier
    - GETSTRUCT
    - pstrdup
    - SearchSysCache1
    - elog
    - get_namespace_name_or_temp
    - 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:6143,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6146,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6148,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6148,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6149,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6149,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6153,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6158,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6164,1
    - Dst: construct_md_array
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6167,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6170,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - list
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6173
      start: 6130
    functionDepth: 1
    functionLinenumber: 6130
    functionLinenumberEnd: 6173
    functionName: strlist_to_textarray
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - MemoryContextDelete
    - CStringGetTextDatum
    - construct_md_array
    - list_length
    - AllocSetContextCreate
    - palloc
    - lfirst
    linkageType: ''
    returnType: ArrayType
    signature: 'ArrayType *

      strlist_to_textarray(List *list)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6153,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/objectaddress.c:6158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6162
      start: 6151
    functionDepth: 1
    functionLinenumber: 6151
    functionLinenumberEnd: 6162
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/objectaddress.c
    functionUses: 345
    functionsReached:
    - CStringGetTextDatum
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(cell, list)
  - BBCount: 11
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 1
    argNames:
    - relkind
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6210
      start: 6185
    functionDepth: 0
    functionLinenumber: 6185
    functionLinenumberEnd: 6210
    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:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - depender
    - referenced
    - behavior
    argTypes:
    - ObjectAddress*
    - ObjectAddress*
    - DependencyType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 50
    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:80,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_depend.c:83,1
    - Dst: Min
      Src: /src/postgres/src/backend/catalog/pg_depend.c:89,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/pg_depend.c:91,1
    - Dst: isObjectPinned
      Src: /src/postgres/src/backend/catalog/pg_depend.c:107,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/catalog/pg_depend.c:112,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_depend.c:112,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/catalog/pg_depend.c:117,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:123,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:124,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:125,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:126,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:127,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:128,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:129,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_depend.c:131,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/catalog/pg_depend.c:134,1
    - Dst: CatalogOpenIndexes
      Src: /src/postgres/src/backend/catalog/pg_depend.c:142,1
    - Dst: CatalogTuplesMultiInsertWithInfo
      Src: /src/postgres/src/backend/catalog/pg_depend.c:144,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: CatalogCloseIndexes
      Src: /src/postgres/src/backend/catalog/pg_depend.c:162,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:164,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/catalog/pg_depend.c:168,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_depend.c:169,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 47
    argCount: 4
    argNames:
    - depender
    - referenced
    - nreferenced
    - behavior
    argTypes:
    - ObjectAddress*
    - ObjectAddress*
    - int
    - DependencyType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 56
    functionDepth: 3
    functionLinenumber: 56
    functionLinenumberEnd: 170
    functionName: recordMultipleDependencies
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 1
    functionsReached:
    - CatalogTuplesMultiInsertWithInfo
    - CatalogOpenIndexes
    - Min
    - pfree
    - CatalogCloseIndexes
    - table_open
    - Int32GetDatum
    - ExecStoreVirtualTuple
    - ExecClearTuple
    - isObjectPinned
    - ExecDropSingleTupleTableSlot
    - table_close
    - palloc
    - ObjectIdGetDatum
    - memset
    - RelationGetDescr
    - IsBootstrapProcessingMode
    - MakeSingleTupleTableSlot
    - CharGetDatum
    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:197,1
    - Dst: getExtensionOfObject
      Src: /src/postgres/src/backend/catalog/pg_depend.c:214,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:215,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_depend.c:221,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_depend.c:222,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_depend.c:223,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/pg_depend.c:224,1
    - Dst: get_extension_name
      Src: /src/postgres/src/backend/catalog/pg_depend.c:225,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_depend.c:228,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_depend.c:229,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_depend.c:230,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/pg_depend.c:231,1
    - Dst: get_extension_name
      Src: /src/postgres/src/backend/catalog/pg_depend.c:232,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_depend.c:233,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_depend.c:241,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - object
    - isReplace
    argTypes:
    - ObjectAddress*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 192
    functionDepth: 4
    functionLinenumber: 192
    functionLinenumberEnd: 243
    functionName: recordDependencyOnCurrentExtension
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - ereport
    - getObjectDescription
    - recordDependencyOn
    - getExtensionOfObject
    - OidIsValid
    - get_extension_name
    - errdetail
    - errcode
    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:268,1
    - Dst: getExtensionOfObject
      Src: /src/postgres/src/backend/catalog/pg_depend.c:274,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_depend.c:279,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_depend.c:280,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_depend.c:281,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/pg_depend.c:282,1
    - Dst: get_extension_name
      Src: /src/postgres/src/backend/catalog/pg_depend.c:283,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_depend.c:284,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - object
    argTypes:
    - ObjectAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 257
    functionDepth: 4
    functionLinenumber: 257
    functionLinenumberEnd: 286
    functionName: checkMembershipInCurrentExtension
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - ereport
    - getObjectDescription
    - getExtensionOfObject
    - get_extension_name
    - errdetail
    - errcode
    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:310,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:312,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:315,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:316,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:319,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:321,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:324,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_depend.c:324,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:327,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_depend.c:330,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:334,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:336,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - classId
    - objectId
    - skipExtensionDeps
    argTypes:
    - Oid
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 300
    functionDepth: 3
    functionLinenumber: 300
    functionLinenumberEnd: 339
    functionName: deleteDependencyRecordsFor
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - GETSTRUCT
    - ScanKeyInit
    - systable_endscan
    - table_close
    - CatalogTupleDelete
    - ObjectIdGetDatum
    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:360,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:362,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:365,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:366,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:369,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:371,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:374,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_depend.c:374,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:376,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_depend.c:380,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:385,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:387,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - classId
    - objectId
    - refclassId
    - deptype
    argTypes:
    - Oid
    - Oid
    - Oid
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 350
    functionDepth: 3
    functionLinenumber: 350
    functionLinenumberEnd: 390
    functionName: deleteDependencyRecordsForClass
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - GETSTRUCT
    - ScanKeyInit
    - systable_endscan
    - table_close
    - CatalogTupleDelete
    - ObjectIdGetDatum
    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:407,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:409,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:412,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:413,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:416,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:418,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:421,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_depend.c:421,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:423,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_depend.c:429,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:434,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:436,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: 439
      start: 397
    functionDepth: 3
    functionLinenumber: 397
    functionLinenumberEnd: 439
    functionName: deleteDependencyRecordsForSpecific
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - GETSTRUCT
    - ScanKeyInit
    - systable_endscan
    - table_close
    - CatalogTupleDelete
    - ObjectIdGetDatum
    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: 5
    BranchProfiles: []
    Callsites:
    - Dst: isObjectPinned
      Src: /src/postgres/src/backend/catalog/pg_depend.c:481,1
    - Dst: isObjectPinned
      Src: /src/postgres/src/backend/catalog/pg_depend.c:485,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_depend.c:503,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_depend.c:508,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:511,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:514,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:515,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:518,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:520,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:523,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_depend.c:523,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:525,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_depend.c:531,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/catalog/pg_depend.c:535,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:536,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_depend.c:540,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_depend.c:542,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:549,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:551,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 36
    argCount: 5
    argNames:
    - classId
    - objectId
    - refClassId
    - oldRefObjectId
    - newRefObjectId
    argTypes:
    - Oid
    - Oid
    - Oid
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 456
    functionDepth: 3
    functionLinenumber: 456
    functionLinenumberEnd: 554
    functionName: changeDependencyFor
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - isObjectPinned
    - systable_beginscan
    - table_open
    - heap_freetuple
    - HeapTupleIsValid
    - systable_getnext
    - CatalogTupleUpdate
    - GETSTRUCT
    - ScanKeyInit
    - recordDependencyOn
    - systable_endscan
    - heap_copytuple
    - table_close
    - CatalogTupleDelete
    - ObjectIdGetDatum
    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:574,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:576,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:579,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:580,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:583,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:585,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:588,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_depend.c:588,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/catalog/pg_depend.c:593,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:594,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_depend.c:598,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_depend.c:600,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:605,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:607,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - classId
    - oldObjectId
    - newObjectId
    argTypes:
    - Oid
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 564
    functionDepth: 3
    functionLinenumber: 564
    functionLinenumberEnd: 610
    functionName: changeDependenciesOf
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - heap_freetuple
    - HeapTupleIsValid
    - systable_getnext
    - CatalogTupleUpdate
    - GETSTRUCT
    - ScanKeyInit
    - heap_copytuple
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    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:632,1
    - Dst: isObjectPinned
      Src: /src/postgres/src/backend/catalog/pg_depend.c:644,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_depend.c:645,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_depend.c:646,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_depend.c:647,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/pg_depend.c:648,1
    - Dst: isObjectPinned
      Src: /src/postgres/src/backend/catalog/pg_depend.c:656,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:659,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:662,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:663,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:666,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:668,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:671,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_depend.c:671,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_depend.c:674,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/catalog/pg_depend.c:680,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:681,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_depend.c:685,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_depend.c:687,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:693,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:695,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 3
    argNames:
    - refClassId
    - oldRefObjectId
    - newRefObjectId
    argTypes:
    - Oid
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 620
    functionDepth: 4
    functionLinenumber: 620
    functionLinenumberEnd: 698
    functionName: changeDependenciesOn
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - errmsg
    - isObjectPinned
    - systable_beginscan
    - table_open
    - ObjectIdGetDatum
    - HeapTupleIsValid
    - systable_getnext
    - CatalogTupleUpdate
    - heap_freetuple
    - GETSTRUCT
    - ereport
    - ScanKeyInit
    - getObjectDescription
    - systable_endscan
    - heap_copytuple
    - table_close
    - CatalogTupleDelete
    - errcode
    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:711,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - object
    argTypes:
    - ObjectAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 708
    functionDepth: 1
    functionLinenumber: 708
    functionLinenumberEnd: 712
    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: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_depend.c:740,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:742,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:745,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:746,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:749,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:751,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:754,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_depend.c:754,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:756,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:766,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:768,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - classId
    - objectId
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 731
    functionDepth: 3
    functionLinenumber: 731
    functionLinenumberEnd: 771
    functionName: getExtensionOfObject
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 2
    functionsReached:
    - systable_beginscan
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - GETSTRUCT
    - ScanKeyInit
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    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:786,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:788,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:791,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:792,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:795,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:797,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:800,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_depend.c:800,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:802,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:806,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:809,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:811,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - classId
    - objectId
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 814
      start: 777
    functionDepth: 6
    functionLinenumber: 777
    functionLinenumberEnd: 814
    functionName: getAutoExtensionsOfObject
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - lappend_oid
    - HeapTupleIsValid
    - systable_getnext
    - GETSTRUCT
    - ScanKeyInit
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    linkageType: ''
    returnType: List
    signature: 'List *

      getAutoExtensionsOfObject(Oid classId, Oid objectId)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_depend.c:836,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:838,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:841,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:842,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:845,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:847,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:850,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_depend.c:850,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:852,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:864,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:866,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - seqId
    - deptype
    - tableId
    - colId
    argTypes:
    - Oid
    - char
    - Oid*
    - int32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 827
    functionDepth: 3
    functionLinenumber: 827
    functionLinenumberEnd: 869
    functionName: sequenceIsOwned
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - GETSTRUCT
    - ScanKeyInit
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    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:885,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:887,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:890,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:891,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:894,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:896,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:899,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:901,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:904,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_depend.c:904,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:906,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/catalog/pg_depend.c:917,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:920,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:924,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:926,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 16
    argCount: 3
    argNames:
    - relid
    - attnum
    - deptype
    argTypes:
    - Oid
    - AttrNumber
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 876
    functionDepth: 6
    functionLinenumber: 876
    functionLinenumberEnd: 929
    functionName: getOwnedSequences_internal
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - get_rel_relkind
    - table_open
    - Int32GetDatum
    - HeapTupleIsValid
    - systable_getnext
    - lappend_oid
    - GETSTRUCT
    - ScanKeyInit
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    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:938,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 935
    functionDepth: 7
    functionLinenumber: 935
    functionLinenumberEnd: 939
    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:947,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/catalog/pg_depend.c:954,1
    - Dst: get_partition_ancestors
      Src: /src/postgres/src/backend/catalog/pg_depend.c:956,1
    - Dst: get_attname
      Src: /src/postgres/src/backend/catalog/pg_depend.c:957,1
    - Dst: llast_oid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:959,1
    - Dst: get_attnum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:960,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_depend.c:962,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/pg_depend.c:964,1
    - Dst: getOwnedSequences_internal
      Src: /src/postgres/src/backend/catalog/pg_depend.c:967,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/pg_depend.c:968,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_depend.c:969,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_depend.c:975,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:978,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - rel
    - attnum
    - missing_ok
    argTypes:
    - Relation
    - AttrNumber
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 979
      start: 944
    functionDepth: 7
    functionLinenumber: 944
    functionLinenumberEnd: 979
    functionName: getIdentitySequence
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - llast_oid
    - getOwnedSequences_internal
    - RelationGetRelid
    - list_length
    - get_attname
    - get_attnum
    - RelationGetForm
    - elog
    - linitial_oid
    - list_free
    - get_partition_ancestors
    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:997,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:999,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1002,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1003,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1006,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1007,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1010,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1012,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1015,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1015,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1017,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1032,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1033,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - indexId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1036
      start: 987
    functionDepth: 3
    functionLinenumber: 987
    functionLinenumberEnd: 1036
    functionName: get_index_constraint
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - Int32GetDatum
    - HeapTupleIsValid
    - systable_getnext
    - GETSTRUCT
    - ScanKeyInit
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    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:1053,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1055,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1058,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1059,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1062,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1063,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1066,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1068,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1071,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1071,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1073,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1083,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1087,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_depend.c:1088,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - indexId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1091
      start: 1043
    functionDepth: 6
    functionLinenumber: 1043
    functionLinenumberEnd: 1091
    functionName: get_index_ref_constraints
    functionSourceFile: /src/postgres/src/backend/catalog/pg_depend.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - Int32GetDatum
    - HeapTupleIsValid
    - systable_getnext
    - lappend_oid
    - GETSTRUCT
    - ScanKeyInit
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    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:259,1
    - Dst: fasthash_combine
      Src: /src/postgres/src/backend/catalog/namespace.c:262,1
    - Dst: fasthash_accum_cstring
      Src: /src/postgres/src/backend/catalog/namespace.c:268,1
    - Dst: fasthash_final32
      Src: /src/postgres/src/backend/catalog/namespace.c:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - key
    argTypes:
    - SearchPathCacheKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 253
    functionDepth: 6
    functionLinenumber: 253
    functionLinenumberEnd: 271
    functionName: spcachekey_hash
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - fasthash_combine
    - fasthash_init
    - fasthash_final32
    - fasthash_accum_cstring
    linkageType: ''
    returnType: uint32
    signature: uint32 spcachekey_hash(SearchPathCacheKey key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:277,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - SearchPathCacheKey
    - SearchPathCacheKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 278
    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: 285
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 285
    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: 286
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 286
    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:325,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/catalog/namespace.c:331,1
    - Dst: nsphash_create
      Src: /src/postgres/src/backend/catalog/namespace.c:335,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 305
    functionDepth: 1
    functionLinenumber: 305
    functionLinenumberEnd: 337
    functionName: spcache_init
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - MemoryContextReset
    - AllocSetContextCreate
    - nsphash_create
    linkageType: ''
    returnType: void
    signature: void spcache_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:348,1
    - Dst: nsphash_lookup
      Src: /src/postgres/src/backend/catalog/namespace.c:360,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - searchPath
    - roleid
    argTypes:
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 343
    functionDepth: 0
    functionLinenumber: 343
    functionLinenumberEnd: 365
    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:378,1
    - Dst: nsphash_lookup
      Src: /src/postgres/src/backend/catalog/namespace.c:394,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/catalog/namespace.c:400,1
    - Dst: nsphash_insert
      Src: /src/postgres/src/backend/catalog/namespace.c:401,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:402,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - searchPath
    - roleid
    argTypes:
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 373
    functionDepth: 1
    functionLinenumber: 373
    functionLinenumberEnd: 415
    functionName: spcache_insert
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - MemoryContextStrdup
    - Assert
    - nsphash_lookup
    - nsphash_insert
    - strcmp
    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:452,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:459,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/catalog/namespace.c:459,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:460,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:461,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:462,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:502,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:510,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:517,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:518,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:519,1
    - Dst: get_relname_relid
      Src: /src/postgres/src/backend/catalog/namespace.c:522,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:530,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:531,1
    - Dst: get_relname_relid
      Src: /src/postgres/src/backend/catalog/namespace.c:534,1
    - Dst: RelnameGetRelid
      Src: /src/postgres/src/backend/catalog/namespace.c:539,1
    - Dst: callback
      Src: /src/postgres/src/backend/catalog/namespace.c:553,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:578,1
    - Dst: UnlockRelationOid
      Src: /src/postgres/src/backend/catalog/namespace.c:579,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:589,1
    - Dst: AcceptInvalidationMessages
      Src: /src/postgres/src/backend/catalog/namespace.c:590,1
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/catalog/namespace.c:592,1
    - Dst: ConditionalLockRelationOid
      Src: /src/postgres/src/backend/catalog/namespace.c:593,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:598,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:599,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:600,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:603,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:604,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:605,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:626,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:631,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:632,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:633,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:636,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:637,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:638,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: 642
      start: 440
    functionDepth: 2
    functionLinenumber: 440
    functionLinenumberEnd: 642
    functionName: RangeVarGetRelidExtended
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - errmsg
    - LockRelationOid
    - Assert
    - get_relname_relid
    - UnlockRelationOid
    - ereport
    - ConditionalLockRelationOid
    - RelnameGetRelid
    - AcceptInvalidationMessages
    - OidIsValid
    - callback
    - get_database_name
    - strcmp
    - LookupExplicitNamespace
    - errcode
    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:663,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/catalog/namespace.c:663,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:664,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:665,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:666,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:674,1
    - Dst: AccessTempTableNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:677,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:681,1
    - Dst: AccessTempTableNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:687,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:693,1
    - Dst: AccessTempTableNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:697,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:701,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:702,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:703,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:704,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - newRelation
    argTypes:
    - RangeVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 653
    functionDepth: 1
    functionLinenumber: 653
    functionLinenumberEnd: 710
    functionName: RangeVarGetCreationNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - errmsg
    - get_namespace_oid
    - recomputeNamespacePath
    - ereport
    - AccessTempTableNamespace
    - OidIsValid
    - get_database_name
    - strcmp
    - errcode
    linkageType: ''
    returnType: Oid
    signature: Oid RangeVarGetCreationNamespace(const RangeVar *newRelation)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:755,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/catalog/namespace.c:755,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:756,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:757,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:758,1
    - Dst: RangeVarGetCreationNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:776,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:777,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:777,1
    - Dst: get_relname_relid
      Src: /src/postgres/src/backend/catalog/namespace.c:779,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/namespace.c:788,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/catalog/namespace.c:792,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/namespace.c:792,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/namespace.c:794,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/namespace.c:795,1
    - Dst: UnlockDatabaseObject
      Src: /src/postgres/src/backend/catalog/namespace.c:804,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:807,1
    - Dst: UnlockRelationOid
      Src: /src/postgres/src/backend/catalog/namespace.c:808,1
    - Dst: LockDatabaseObject
      Src: /src/postgres/src/backend/catalog/namespace.c:813,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:816,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/namespace.c:818,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/namespace.c:818,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/namespace.c:819,1
    - Dst: get_relkind_objtype
      Src: /src/postgres/src/backend/catalog/namespace.c:819,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/catalog/namespace.c:819,1
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/catalog/namespace.c:822,1
    - Dst: RangeVarAdjustRelationPersistence
      Src: /src/postgres/src/backend/catalog/namespace.c:835,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 43
    argCount: 3
    argNames:
    - relation
    - lockmode
    - existing_relation_id
    argTypes:
    - RangeVar*
    - LOCKMODE
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 738
    functionDepth: 2
    functionLinenumber: 738
    functionLinenumberEnd: 839
    functionName: RangeVarGetAndCheckCreationNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - UnlockRelationOid
    - LockDatabaseObject
    - RangeVarAdjustRelationPersistence
    - GetUserId
    - object_aclcheck
    - LockRelationOid
    - get_relname_relid
    - UnlockDatabaseObject
    - strcmp
    - get_rel_relkind
    - errmsg
    - aclcheck_error
    - get_relkind_objtype
    - get_namespace_name
    - OidIsValid
    - object_ownercheck
    - Assert
    - IsBootstrapProcessingMode
    - ereport
    - get_database_name
    - RangeVarGetCreationNamespace
    - errcode
    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:851,1
    - Dst: isAnyTempNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:853,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:854,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:855,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:856,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:858,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:859,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:860,1
    - Dst: isTempOrTempToastNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:864,1
    - Dst: isAnyTempNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:866,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:867,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:868,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:869,1
    - Dst: isAnyTempNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:872,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:873,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:874,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:875,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - newRelation
    - nspid
    argTypes:
    - RangeVar*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 845
    functionDepth: 1
    functionLinenumber: 845
    functionLinenumberEnd: 877
    functionName: RangeVarAdjustRelationPersistence
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - errmsg
    - ereport
    - isTempOrTempToastNamespace
    - isAnyTempNamespace
    - errcode
    linkageType: ''
    returnType: void
    signature: void RangeVarAdjustRelationPersistence(RangeVar *newRelation, Oid nspid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:890,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:894,1
    - Dst: get_relname_relid
      Src: /src/postgres/src/backend/catalog/namespace.c:896,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:897,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - relname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 884
    functionDepth: 1
    functionLinenumber: 884
    functionLinenumberEnd: 903
    functionName: RelnameGetRelid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 2
    functionsReached:
    - OidIsValid
    - lfirst_oid
    - get_relname_relid
    - recomputeNamespacePath
    linkageType: ''
    returnType: Oid
    signature: Oid RelnameGetRelid(const char *relname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:894,1
    - Dst: get_relname_relid
      Src: /src/postgres/src/backend/catalog/namespace.c:896,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:897,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 892
    functionDepth: 1
    functionLinenumber: 892
    functionLinenumberEnd: 899
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 345
    functionsReached:
    - lfirst_oid
    - OidIsValid
    - 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:915,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 916
      start: 912
    functionDepth: 1
    functionLinenumber: 912
    functionLinenumberEnd: 916
    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:932,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:932,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:933,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:940,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:942,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:944,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:953,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:962,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:968,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:976,1
    - Dst: get_relname_relid
      Src: /src/postgres/src/backend/catalog/namespace.c:976,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:984,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - relid
    - is_missing
    argTypes:
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 924
    functionDepth: 3
    functionLinenumber: 924
    functionLinenumberEnd: 987
    functionName: RelationIsVisibleExt
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - NameStr
    - ReleaseSysCache
    - recomputeNamespacePath
    - get_relname_relid
    - HeapTupleIsValid
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - list_member_oid
    - OidIsValid
    - lfirst_oid
    - ObjectIdGetDatum
    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:968,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:976,1
    - Dst: get_relname_relid
      Src: /src/postgres/src/backend/catalog/namespace.c:976,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 966
    functionDepth: 1
    functionLinenumber: 966
    functionLinenumberEnd: 981
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 345
    functionsReached:
    - lfirst_oid
    - OidIsValid
    - 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:997,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - typname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 998
      start: 994
    functionDepth: 1
    functionLinenumber: 994
    functionLinenumberEnd: 998
    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:1013,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:1017,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:1022,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1023,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1024,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:1025,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - typname
    - temp_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1031
      start: 1007
    functionDepth: 1
    functionLinenumber: 1007
    functionLinenumberEnd: 1031
    functionName: TypenameGetTypidExtended
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - recomputeNamespacePath
    - PointerGetDatum
    - OidIsValid
    - GetSysCacheOid2
    - lfirst_oid
    - 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:1017,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:1022,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1023,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1024,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:1025,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1027
      start: 1015
    functionDepth: 1
    functionLinenumber: 1015
    functionLinenumberEnd: 1027
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 345
    functionsReached:
    - PointerGetDatum
    - OidIsValid
    - GetSysCacheOid2
    - lfirst_oid
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TypeIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:1042,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - typid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1043
      start: 1039
    functionDepth: 1
    functionLinenumber: 1039
    functionLinenumberEnd: 1043
    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:1059,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1059,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:1060,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:1067,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:1069,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:1071,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:1080,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:1089,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:1095,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/namespace.c:1103,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1104,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1105,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:1113,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - typid
    - is_missing
    argTypes:
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1051
    functionDepth: 3
    functionLinenumber: 1051
    functionLinenumberEnd: 1116
    functionName: TypeIsVisibleExt
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - NameStr
    - ReleaseSysCache
    - recomputeNamespacePath
    - HeapTupleIsValid
    - GETSTRUCT
    - PointerGetDatum
    - SearchSysCache1
    - elog
    - list_member_oid
    - lfirst_oid
    - ObjectIdGetDatum
    - SearchSysCacheExists2
    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:1095,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/namespace.c:1103,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1104,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1105,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1110
      start: 1093
    functionDepth: 1
    functionLinenumber: 1093
    functionLinenumberEnd: 1110
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 345
    functionsReached:
    - lfirst_oid
    - ObjectIdGetDatum
    - SearchSysCacheExists2
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:1205,1
    - Dst: DeconstructQualifiedName
      Src: /src/postgres/src/backend/catalog/namespace.c:1208,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:1213,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:1214,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:1221,1
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/catalog/namespace.c:1225,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1225,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:1230,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:1241,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:1257,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/namespace.c:1277,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/namespace.c:1282,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/catalog/namespace.c:1284,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/catalog/namespace.c:1285,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/catalog/namespace.c:1287,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/catalog/namespace.c:1288,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:1289,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:1290,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/catalog/namespace.c:1291,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:1304,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:1312,1
    - Dst: MatchNamedCall
      Src: /src/postgres/src/backend/catalog/namespace.c:1329,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:1349,1
    - Dst: Max
      Src: /src/postgres/src/backend/catalog/namespace.c:1383,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/namespace.c:1385,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/catalog/namespace.c:1401,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:1423,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:1442,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:1458,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/namespace.c:1514,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:1536,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/namespace.c:1538,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/namespace.c:1545,1
    - Dst: ReleaseSysCacheList
      Src: /src/postgres/src/backend/catalog/namespace.c:1558,1
    CyclomaticComplexity: 71
    EdgeCount: 71
    ICount: 141
    argCount: 7
    argNames:
    - names
    - nargs
    - argnames
    - expand_variadic
    - expand_defaults
    - include_out_arguments
    - missing_ok
    argTypes:
    - List*
    - int
    - List*
    - bool
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1561
      start: 1191
    functionDepth: 2
    functionLinenumber: 1191
    functionLinenumberEnd: 1561
    functionName: FuncnameGetCandidates
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - SysCacheGetAttr
    - pfree
    - ARR_DIMS
    - DatumGetArrayTypeP
    - memcmp
    - DeconstructQualifiedName
    - GETSTRUCT
    - Max
    - CStringGetDatum
    - memcpy
    - LookupExplicitNamespace
    - ReleaseSysCacheList
    - recomputeNamespacePath
    - elog
    - OidIsValid
    - ARR_HASNULL
    - palloc
    - ARR_ELEMTYPE
    - Assert
    - ARR_DATA_PTR
    - ARR_NDIM
    - SearchSysCacheList1
    - MatchNamedCall
    - lfirst_oid
    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)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:1257,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1261
      start: 1255
    functionDepth: 1
    functionLinenumber: 1255
    functionLinenumberEnd: 1261
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 345
    functionsReached:
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(nsp, activeSearchPath)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:1589,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/namespace.c:1590,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:1601,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:1602,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:1603,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/namespace.c:1606,1
    - Dst: get_func_arg_info
      Src: /src/postgres/src/backend/catalog/namespace.c:1612,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:1614,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:1616,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/namespace.c:1619,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/namespace.c:1620,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/namespace.c:1632,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:1647,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:1666,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:1684,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 47
    argCount: 6
    argNames:
    - proctup
    - nargs
    - argnames
    - include_out_arguments
    - pronargs
    - argnumbers
    argTypes:
    - HeapTuple
    - int
    - List*
    - bool
    - int
    - int**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1687
      start: 1584
    functionDepth: 1
    functionLinenumber: 1584
    functionLinenumberEnd: 1687
    functionName: MatchNamedCall
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - strcmp
    - Assert
    - memset
    - GETSTRUCT
    - list_length
    - SysCacheGetAttr
    - palloc
    - get_func_arg_info
    - lfirst
    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)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/namespace.c:1632,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:1647,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1664
      start: 1630
    functionDepth: 1
    functionLinenumber: 1630
    functionLinenumberEnd: 1664
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 345
    functionsReached:
    - strcmp
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, argnames)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FunctionIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:1698,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - funcid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1699
      start: 1695
    functionDepth: 1
    functionLinenumber: 1695
    functionLinenumberEnd: 1699
    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:1715,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1715,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:1716,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:1723,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:1725,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:1727,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:1736,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:1746,1
    - Dst: FuncnameGetCandidates
      Src: /src/postgres/src/backend/catalog/namespace.c:1752,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/namespace.c:1752,1
    - Dst: makeString
      Src: /src/postgres/src/backend/catalog/namespace.c:1752,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:1757,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:1767,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 2
    argNames:
    - funcid
    - is_missing
    argTypes:
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1770
      start: 1707
    functionDepth: 3
    functionLinenumber: 1707
    functionLinenumberEnd: 1770
    functionName: FunctionIsVisibleExt
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - makeString
    - NameStr
    - ReleaseSysCache
    - recomputeNamespacePath
    - HeapTupleIsValid
    - FuncnameGetCandidates
    - memcmp
    - GETSTRUCT
    - list_make1
    - SearchSysCache1
    - elog
    - list_member_oid
    - ObjectIdGetDatum
    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:1793,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:1800,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:1801,1
    - Dst: SearchSysCache4
      Src: /src/postgres/src/backend/catalog/namespace.c:1805,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1806,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1807,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1808,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1809,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:1810,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:1812,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:1815,1
    - Dst: SearchSysCacheList3
      Src: /src/postgres/src/backend/catalog/namespace.c:1824,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1825,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1826,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1827,1
    - Dst: ReleaseSysCacheList
      Src: /src/postgres/src/backend/catalog/namespace.c:1832,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:1841,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:1845,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:1854,1
    - Dst: ReleaseSysCacheList
      Src: /src/postgres/src/backend/catalog/namespace.c:1860,1
    - Dst: ReleaseSysCacheList
      Src: /src/postgres/src/backend/catalog/namespace.c:1866,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 3
    argNames:
    - names
    - oprleft
    - oprright
    argTypes:
    - List*
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1868
      start: 1784
    functionDepth: 2
    functionLinenumber: 1784
    functionLinenumberEnd: 1868
    functionName: OpernameGetOprid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - ReleaseSysCacheList
    - SearchSysCacheList3
    - SearchSysCache4
    - ReleaseSysCache
    - recomputeNamespacePath
    - HeapTupleIsValid
    - DeconstructQualifiedName
    - GETSTRUCT
    - CStringGetDatum
    - OidIsValid
    - LookupExplicitNamespace
    - lfirst_oid
    - 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:1845,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:1854,1
    - Dst: ReleaseSysCacheList
      Src: /src/postgres/src/backend/catalog/namespace.c:1860,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1864
      start: 1843
    functionDepth: 1
    functionLinenumber: 1843
    functionLinenumberEnd: 1864
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 345
    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:1900,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:1905,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:1906,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:1913,1
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/catalog/namespace.c:1917,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:1917,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/namespace.c:1932,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:1937,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:1945,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:1962,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:2007,1
    - Dst: ReleaseSysCacheList
      Src: /src/postgres/src/backend/catalog/namespace.c:2037,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 63
    argCount: 3
    argNames:
    - names
    - oprkind
    - missing_schema_ok
    argTypes:
    - List*
    - char
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2040
      start: 1887
    functionDepth: 2
    functionLinenumber: 1887
    functionLinenumberEnd: 2040
    functionName: OpernameGetCandidates
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - Assert
    - ReleaseSysCacheList
    - palloc
    - recomputeNamespacePath
    - DeconstructQualifiedName
    - GETSTRUCT
    - CStringGetDatum
    - SearchSysCacheList1
    - OidIsValid
    - LookupExplicitNamespace
    - lfirst_oid
    linkageType: ''
    returnType: FuncCandidateList
    signature: FuncCandidateList OpernameGetCandidates(List *names, char oprkind,
      bool missing_schema_ok)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:1962,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1966
      start: 1960
    functionDepth: 1
    functionLinenumber: 1960
    functionLinenumberEnd: 1966
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 345
    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:2051,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - oprid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2052
      start: 2048
    functionDepth: 1
    functionLinenumber: 2048
    functionLinenumberEnd: 2052
    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:2068,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2068,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2069,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:2076,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:2078,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:2080,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2089,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:2099,1
    - Dst: OpernameGetOprid
      Src: /src/postgres/src/backend/catalog/namespace.c:2101,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/namespace.c:2101,1
    - Dst: makeString
      Src: /src/postgres/src/backend/catalog/namespace.c:2101,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:2106,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - oprid
    - is_missing
    argTypes:
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2109
      start: 2060
    functionDepth: 3
    functionLinenumber: 2060
    functionLinenumberEnd: 2109
    functionName: OperatorIsVisibleExt
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - makeString
    - OpernameGetOprid
    - NameStr
    - ReleaseSysCache
    - recomputeNamespacePath
    - HeapTupleIsValid
    - GETSTRUCT
    - list_make1
    - SearchSysCache1
    - elog
    - list_member_oid
    - ObjectIdGetDatum
    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:2126,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2130,1
    - Dst: GetSysCacheOid3
      Src: /src/postgres/src/backend/catalog/namespace.c:2135,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2136,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2137,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2138,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2139,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - amid
    - opcname
    argTypes:
    - Oid
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2145
      start: 2120
    functionDepth: 1
    functionLinenumber: 2120
    functionLinenumberEnd: 2145
    functionName: OpclassnameGetOpcid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - recomputeNamespacePath
    - GetSysCacheOid3
    - PointerGetDatum
    - OidIsValid
    - lfirst_oid
    - 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:2130,1
    - Dst: GetSysCacheOid3
      Src: /src/postgres/src/backend/catalog/namespace.c:2135,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2136,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2137,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2138,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2139,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2141
      start: 2128
    functionDepth: 1
    functionLinenumber: 2128
    functionLinenumberEnd: 2141
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 345
    functionsReached:
    - GetSysCacheOid3
    - PointerGetDatum
    - OidIsValid
    - lfirst_oid
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: OpclassIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:2156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - opcid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2157
      start: 2153
    functionDepth: 1
    functionLinenumber: 2153
    functionLinenumberEnd: 2157
    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:2173,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2173,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2174,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:2181,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:2183,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:2185,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2194,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:2204,1
    - Dst: OpclassnameGetOpcid
      Src: /src/postgres/src/backend/catalog/namespace.c:2206,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:2209,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - opcid
    - is_missing
    argTypes:
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2212
      start: 2165
    functionDepth: 3
    functionLinenumber: 2165
    functionLinenumberEnd: 2212
    functionName: OpclassIsVisibleExt
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - NameStr
    - ReleaseSysCache
    - recomputeNamespacePath
    - HeapTupleIsValid
    - OpclassnameGetOpcid
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - list_member_oid
    - ObjectIdGetDatum
    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:2228,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2232,1
    - Dst: GetSysCacheOid3
      Src: /src/postgres/src/backend/catalog/namespace.c:2237,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2238,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2239,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2240,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2241,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - amid
    - opfname
    argTypes:
    - Oid
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2247
      start: 2222
    functionDepth: 1
    functionLinenumber: 2222
    functionLinenumberEnd: 2247
    functionName: OpfamilynameGetOpfid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - recomputeNamespacePath
    - GetSysCacheOid3
    - PointerGetDatum
    - OidIsValid
    - lfirst_oid
    - 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:2232,1
    - Dst: GetSysCacheOid3
      Src: /src/postgres/src/backend/catalog/namespace.c:2237,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2238,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2239,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2240,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2241,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2243
      start: 2230
    functionDepth: 1
    functionLinenumber: 2230
    functionLinenumberEnd: 2243
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 345
    functionsReached:
    - GetSysCacheOid3
    - PointerGetDatum
    - OidIsValid
    - lfirst_oid
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: OpfamilyIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:2258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - opfid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2259
      start: 2255
    functionDepth: 1
    functionLinenumber: 2255
    functionLinenumberEnd: 2259
    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:2275,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2275,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2276,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:2283,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:2285,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:2287,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2296,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:2306,1
    - Dst: OpfamilynameGetOpfid
      Src: /src/postgres/src/backend/catalog/namespace.c:2308,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:2311,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - opfid
    - is_missing
    argTypes:
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2314
      start: 2267
    functionDepth: 3
    functionLinenumber: 2267
    functionLinenumberEnd: 2314
    functionName: OpfamilyIsVisibleExt
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - NameStr
    - ReleaseSysCache
    - recomputeNamespacePath
    - HeapTupleIsValid
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - list_member_oid
    - OpfamilynameGetOpfid
    - ObjectIdGetDatum
    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:2329,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2330,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2331,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2332,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2333,1
    - Dst: SearchSysCache3
      Src: /src/postgres/src/backend/catalog/namespace.c:2342,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2343,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2344,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2345,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2346,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:2348,1
    - Dst: is_encoding_supported_by_icu
      Src: /src/postgres/src/backend/catalog/namespace.c:2351,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:2360,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - collname
    - collnamespace
    - encoding
    argTypes:
    - char*
    - Oid
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2362
      start: 2321
    functionDepth: 2
    functionLinenumber: 2321
    functionLinenumberEnd: 2362
    functionName: lookup_collation
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - ReleaseSysCache
    - Int32GetDatum
    - HeapTupleIsValid
    - is_encoding_supported_by_icu
    - GETSTRUCT
    - GetSysCacheOid3
    - PointerGetDatum
    - OidIsValid
    - ObjectIdGetDatum
    - SearchSysCache3
    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:2375,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:2378,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2382,1
    - Dst: lookup_collation
      Src: /src/postgres/src/backend/catalog/namespace.c:2388,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2389,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - collname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2395
      start: 2372
    functionDepth: 3
    functionLinenumber: 2372
    functionLinenumberEnd: 2395
    functionName: CollationGetCollid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - recomputeNamespacePath
    - GetDatabaseEncoding
    - 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:2382,1
    - Dst: lookup_collation
      Src: /src/postgres/src/backend/catalog/namespace.c:2388,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2389,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2391
      start: 2380
    functionDepth: 3
    functionLinenumber: 2380
    functionLinenumberEnd: 2391
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 345
    functionsReached:
    - lookup_collation
    - lfirst_oid
    - OidIsValid
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CollationIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:2409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - collid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2410
      start: 2406
    functionDepth: 1
    functionLinenumber: 2406
    functionLinenumberEnd: 2410
    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:2426,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2426,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2427,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:2434,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:2436,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:2438,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2447,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:2458,1
    - Dst: CollationGetCollid
      Src: /src/postgres/src/backend/catalog/namespace.c:2460,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:2463,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - collid
    - is_missing
    argTypes:
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2466
      start: 2418
    functionDepth: 4
    functionLinenumber: 2418
    functionLinenumberEnd: 2466
    functionName: CollationIsVisibleExt
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - NameStr
    - ReleaseSysCache
    - recomputeNamespacePath
    - HeapTupleIsValid
    - GETSTRUCT
    - SearchSysCache1
    - CollationGetCollid
    - elog
    - list_member_oid
    - ObjectIdGetDatum
    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:2482,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2486,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:2491,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2492,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2493,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2494,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - conname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2500
      start: 2476
    functionDepth: 1
    functionLinenumber: 2476
    functionLinenumberEnd: 2500
    functionName: ConversionGetConid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - recomputeNamespacePath
    - PointerGetDatum
    - OidIsValid
    - GetSysCacheOid2
    - lfirst_oid
    - 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:2486,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:2491,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2492,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2493,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2494,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2496
      start: 2484
    functionDepth: 1
    functionLinenumber: 2484
    functionLinenumberEnd: 2496
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 345
    functionsReached:
    - PointerGetDatum
    - OidIsValid
    - GetSysCacheOid2
    - lfirst_oid
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ConversionIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:2511,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2512
      start: 2508
    functionDepth: 1
    functionLinenumber: 2508
    functionLinenumberEnd: 2512
    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:2528,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2528,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2529,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:2536,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:2538,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:2540,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2549,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:2559,1
    - Dst: ConversionGetConid
      Src: /src/postgres/src/backend/catalog/namespace.c:2561,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:2564,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - conid
    - is_missing
    argTypes:
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2567
      start: 2520
    functionDepth: 3
    functionLinenumber: 2520
    functionLinenumberEnd: 2567
    functionName: ConversionIsVisibleExt
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - NameStr
    - ReleaseSysCache
    - recomputeNamespacePath
    - HeapTupleIsValid
    - GETSTRUCT
    - SearchSysCache1
    - ConversionGetConid
    - elog
    - list_member_oid
    - ObjectIdGetDatum
    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:2584,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:2589,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2590,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:2593,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2594,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2595,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:2600,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2604,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:2608,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2609,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2610,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2611,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2616,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:2617,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:2618,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:2619,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/namespace.c:2620,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 2
    argNames:
    - names
    - missing_ok
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2623
      start: 2574
    functionDepth: 1
    functionLinenumber: 2574
    functionLinenumberEnd: 2623
    functionName: get_statistics_object_oid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - GetSysCacheOid2
    - recomputeNamespacePath
    - NameListToString
    - DeconstructQualifiedName
    - ereport
    - PointerGetDatum
    - OidIsValid
    - LookupExplicitNamespace
    - lfirst_oid
    - 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:2604,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:2608,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2609,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2610,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2611,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2613
      start: 2602
    functionDepth: 1
    functionLinenumber: 2602
    functionLinenumberEnd: 2613
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 345
    functionsReached:
    - PointerGetDatum
    - OidIsValid
    - GetSysCacheOid2
    - lfirst_oid
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StatisticsObjIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:2634,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stxid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2635
      start: 2631
    functionDepth: 1
    functionLinenumber: 2631
    functionLinenumberEnd: 2635
    functionName: StatisticsObjIsVisible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - StatisticsObjIsVisibleExt
    linkageType: ''
    returnType: bool
    signature: bool StatisticsObjIsVisible(Oid stxid)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/namespace.c:2651,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2651,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2652,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:2659,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:2661,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:2663,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2672,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:2681,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2687,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/namespace.c:2695,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2696,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2697,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:2705,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - stxid
    - is_missing
    argTypes:
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2708
      start: 2643
    functionDepth: 3
    functionLinenumber: 2643
    functionLinenumberEnd: 2708
    functionName: StatisticsObjIsVisibleExt
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - NameStr
    - ReleaseSysCache
    - recomputeNamespacePath
    - HeapTupleIsValid
    - GETSTRUCT
    - PointerGetDatum
    - SearchSysCache1
    - elog
    - list_member_oid
    - lfirst_oid
    - ObjectIdGetDatum
    - SearchSysCacheExists2
    linkageType: ''
    returnType: bool
    signature: bool StatisticsObjIsVisibleExt(Oid stxid, bool *is_missing)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2687,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/namespace.c:2695,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2696,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2697,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2702
      start: 2685
    functionDepth: 1
    functionLinenumber: 2685
    functionLinenumberEnd: 2702
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 345
    functionsReached:
    - lfirst_oid
    - ObjectIdGetDatum
    - SearchSysCacheExists2
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DeconstructQualifiedName
      Src: /src/postgres/src/backend/catalog/namespace.c:2725,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:2730,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2731,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:2734,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2735,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2736,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:2741,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2745,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:2750,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2751,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2752,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2753,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2758,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:2759,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:2760,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:2761,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/namespace.c:2762,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 2
    argNames:
    - names
    - missing_ok
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2765
      start: 2715
    functionDepth: 1
    functionLinenumber: 2715
    functionLinenumberEnd: 2765
    functionName: get_ts_parser_oid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 3
    functionsReached:
    - errmsg
    - errcode
    - GetSysCacheOid2
    - recomputeNamespacePath
    - NameListToString
    - DeconstructQualifiedName
    - ereport
    - PointerGetDatum
    - OidIsValid
    - LookupExplicitNamespace
    - lfirst_oid
    - 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:2745,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:2750,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2751,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2752,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2753,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2755
      start: 2743
    functionDepth: 1
    functionLinenumber: 2743
    functionLinenumberEnd: 2755
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 345
    functionsReached:
    - PointerGetDatum
    - OidIsValid
    - GetSysCacheOid2
    - lfirst_oid
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TSParserIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:2776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - prsId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2777
      start: 2773
    functionDepth: 1
    functionLinenumber: 2773
    functionLinenumberEnd: 2777
    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:2793,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2793,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2794,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:2801,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:2803,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:2805,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2814,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:2823,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2829,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/namespace.c:2840,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2841,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2842,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:2850,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 2
    argNames:
    - prsId
    - is_missing
    argTypes:
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2853
      start: 2785
    functionDepth: 3
    functionLinenumber: 2785
    functionLinenumberEnd: 2853
    functionName: TSParserIsVisibleExt
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - NameStr
    - ReleaseSysCache
    - recomputeNamespacePath
    - HeapTupleIsValid
    - GETSTRUCT
    - PointerGetDatum
    - SearchSysCache1
    - elog
    - list_member_oid
    - lfirst_oid
    - ObjectIdGetDatum
    - SearchSysCacheExists2
    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:2829,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/namespace.c:2840,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2841,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2842,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2847
      start: 2827
    functionDepth: 1
    functionLinenumber: 2827
    functionLinenumberEnd: 2847
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 345
    functionsReached:
    - lfirst_oid
    - ObjectIdGetDatum
    - SearchSysCacheExists2
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DeconstructQualifiedName
      Src: /src/postgres/src/backend/catalog/namespace.c:2870,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:2875,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2876,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:2879,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2880,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2881,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:2886,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2890,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:2895,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2896,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2897,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2898,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2903,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:2904,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:2905,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:2906,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/namespace.c:2907,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 2
    argNames:
    - names
    - missing_ok
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2910
      start: 2860
    functionDepth: 1
    functionLinenumber: 2860
    functionLinenumberEnd: 2910
    functionName: get_ts_dict_oid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 2
    functionsReached:
    - errmsg
    - errcode
    - GetSysCacheOid2
    - recomputeNamespacePath
    - NameListToString
    - DeconstructQualifiedName
    - ereport
    - PointerGetDatum
    - OidIsValid
    - LookupExplicitNamespace
    - lfirst_oid
    - 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:2890,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:2895,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2896,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2897,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2898,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2900
      start: 2888
    functionDepth: 1
    functionLinenumber: 2888
    functionLinenumberEnd: 2900
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 345
    functionsReached:
    - PointerGetDatum
    - OidIsValid
    - GetSysCacheOid2
    - lfirst_oid
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TSDictionaryIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:2921,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dictId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2922
      start: 2918
    functionDepth: 1
    functionLinenumber: 2918
    functionLinenumberEnd: 2922
    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:2938,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2938,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:2939,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:2946,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:2949,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:2951,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2960,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:2969,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:2975,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/namespace.c:2986,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2987,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2988,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:2996,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 2
    argNames:
    - dictId
    - is_missing
    argTypes:
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2999
      start: 2930
    functionDepth: 3
    functionLinenumber: 2930
    functionLinenumberEnd: 2999
    functionName: TSDictionaryIsVisibleExt
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - NameStr
    - ReleaseSysCache
    - recomputeNamespacePath
    - HeapTupleIsValid
    - GETSTRUCT
    - PointerGetDatum
    - SearchSysCache1
    - elog
    - list_member_oid
    - lfirst_oid
    - ObjectIdGetDatum
    - SearchSysCacheExists2
    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:2975,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/namespace.c:2986,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2987,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:2988,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2993
      start: 2973
    functionDepth: 1
    functionLinenumber: 2973
    functionLinenumberEnd: 2993
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 345
    functionsReached:
    - lfirst_oid
    - ObjectIdGetDatum
    - SearchSysCacheExists2
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DeconstructQualifiedName
      Src: /src/postgres/src/backend/catalog/namespace.c:3016,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:3021,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3022,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:3025,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3026,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3027,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:3032,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3036,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:3041,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3042,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3043,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3044,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3049,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:3050,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:3051,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:3052,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/namespace.c:3053,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 2
    argNames:
    - names
    - missing_ok
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3056
      start: 3006
    functionDepth: 1
    functionLinenumber: 3006
    functionLinenumberEnd: 3056
    functionName: get_ts_template_oid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - GetSysCacheOid2
    - recomputeNamespacePath
    - NameListToString
    - DeconstructQualifiedName
    - ereport
    - PointerGetDatum
    - OidIsValid
    - LookupExplicitNamespace
    - lfirst_oid
    - 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:3036,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:3041,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3042,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3043,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3044,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3046
      start: 3034
    functionDepth: 1
    functionLinenumber: 3034
    functionLinenumberEnd: 3046
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 345
    functionsReached:
    - PointerGetDatum
    - OidIsValid
    - GetSysCacheOid2
    - lfirst_oid
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TSTemplateIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:3067,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tmplId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3068
      start: 3064
    functionDepth: 1
    functionLinenumber: 3064
    functionLinenumberEnd: 3068
    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:3084,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3084,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3085,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:3092,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:3094,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:3096,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3105,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:3114,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3120,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/namespace.c:3131,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3132,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3133,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:3141,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 2
    argNames:
    - tmplId
    - is_missing
    argTypes:
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3144
      start: 3076
    functionDepth: 3
    functionLinenumber: 3076
    functionLinenumberEnd: 3144
    functionName: TSTemplateIsVisibleExt
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - NameStr
    - ReleaseSysCache
    - recomputeNamespacePath
    - HeapTupleIsValid
    - GETSTRUCT
    - PointerGetDatum
    - SearchSysCache1
    - elog
    - list_member_oid
    - lfirst_oid
    - ObjectIdGetDatum
    - SearchSysCacheExists2
    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:3120,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/namespace.c:3131,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3132,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3133,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3138
      start: 3118
    functionDepth: 1
    functionLinenumber: 3118
    functionLinenumberEnd: 3138
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 345
    functionsReached:
    - lfirst_oid
    - ObjectIdGetDatum
    - SearchSysCacheExists2
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DeconstructQualifiedName
      Src: /src/postgres/src/backend/catalog/namespace.c:3161,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:3166,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3167,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:3170,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3171,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3172,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:3177,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3181,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:3186,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3187,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3188,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3189,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3194,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:3195,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:3196,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:3197,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/namespace.c:3198,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 2
    argNames:
    - names
    - missing_ok
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3201
      start: 3151
    functionDepth: 1
    functionLinenumber: 3151
    functionLinenumberEnd: 3201
    functionName: get_ts_config_oid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - GetSysCacheOid2
    - recomputeNamespacePath
    - NameListToString
    - DeconstructQualifiedName
    - ereport
    - PointerGetDatum
    - OidIsValid
    - LookupExplicitNamespace
    - lfirst_oid
    - 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:3181,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:3186,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3187,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3188,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3189,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3191
      start: 3179
    functionDepth: 1
    functionLinenumber: 3179
    functionLinenumberEnd: 3191
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 345
    functionsReached:
    - PointerGetDatum
    - OidIsValid
    - GetSysCacheOid2
    - lfirst_oid
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TSConfigIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:3212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cfgid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3213
      start: 3209
    functionDepth: 1
    functionLinenumber: 3209
    functionLinenumberEnd: 3213
    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:3229,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3229,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3230,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:3237,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:3240,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:3242,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3251,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:3260,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3266,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/namespace.c:3277,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3278,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3279,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:3287,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 2
    argNames:
    - cfgid
    - is_missing
    argTypes:
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3290
      start: 3221
    functionDepth: 3
    functionLinenumber: 3221
    functionLinenumberEnd: 3290
    functionName: TSConfigIsVisibleExt
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - NameStr
    - ReleaseSysCache
    - recomputeNamespacePath
    - HeapTupleIsValid
    - GETSTRUCT
    - PointerGetDatum
    - SearchSysCache1
    - elog
    - list_member_oid
    - lfirst_oid
    - ObjectIdGetDatum
    - SearchSysCacheExists2
    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:3266,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/namespace.c:3277,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3278,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3279,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3284
      start: 3264
    functionDepth: 1
    functionLinenumber: 3264
    functionLinenumberEnd: 3284
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 345
    functionsReached:
    - lfirst_oid
    - ObjectIdGetDatum
    - SearchSysCacheExists2
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/namespace.c:3309,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3312,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/namespace.c:3312,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3315,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/namespace.c:3315,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3316,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/catalog/namespace.c:3316,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3319,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/namespace.c:3319,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3320,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/catalog/namespace.c:3320,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3321,1
    - Dst: lthird
      Src: /src/postgres/src/backend/catalog/namespace.c:3321,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:3326,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/catalog/namespace.c:3326,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:3327,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:3328,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:3329,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/namespace.c:3330,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:3333,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:3334,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:3335,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/namespace.c:3336,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - names
    - nspname_p
    - objname_p
    argTypes:
    - List*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3342
      start: 3300
    functionDepth: 1
    functionLinenumber: 3300
    functionLinenumberEnd: 3342
    functionName: DeconstructQualifiedName
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 8
    functionsReached:
    - errmsg
    - linitial
    - NameListToString
    - lsecond
    - ereport
    - lthird
    - list_length
    - strVal
    - get_database_name
    - strcmp
    - errcode
    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:3358,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3360,1
    - Dst: InvokeNamespaceSearchHook
      Src: /src/postgres/src/backend/catalog/namespace.c:3362,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3374,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - nspname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3375
      start: 3354
    functionDepth: 1
    functionLinenumber: 3354
    functionLinenumberEnd: 3375
    functionName: LookupNamespaceNoError
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - InvokeNamespaceSearchHook
    - strcmp
    - get_namespace_oid
    - OidIsValid
    linkageType: ''
    returnType: Oid
    signature: Oid LookupNamespaceNoError(const char *nspname)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:3391,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3393,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3403,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3404,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/catalog/namespace.c:3407,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/namespace.c:3407,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/namespace.c:3409,1
    - Dst: InvokeNamespaceSearchHook
      Src: /src/postgres/src/backend/catalog/namespace.c:3412,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - nspname
    - missing_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3415
      start: 3384
    functionDepth: 1
    functionLinenumber: 3384
    functionLinenumberEnd: 3415
    functionName: LookupExplicitNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 10
    functionsReached:
    - get_namespace_oid
    - aclcheck_error
    - OidIsValid
    - InvokeNamespaceSearchHook
    - strcmp
    - GetUserId
    - object_aclcheck
    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:3434,1
    - Dst: AccessTempTableNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:3437,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3441,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/catalog/namespace.c:3443,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/namespace.c:3443,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/namespace.c:3445,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - nspname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3449
      start: 3427
    functionDepth: 1
    functionLinenumber: 3427
    functionLinenumberEnd: 3449
    functionName: LookupCreationNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - get_namespace_oid
    - aclcheck_error
    - AccessTempTableNamespace
    - strcmp
    - GetUserId
    - object_aclcheck
    linkageType: ''
    returnType: Oid
    signature: Oid LookupCreationNamespace(const char *nspname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isAnyTempNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:3462,1
    - Dst: isAnyTempNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:3462,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:3463,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:3464,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:3465,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:3469,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:3470,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:3471,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 2
    argNames:
    - oldNspOid
    - nspOid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3472
      start: 3458
    functionDepth: 1
    functionLinenumber: 3458
    functionLinenumberEnd: 3472
    functionName: CheckSetNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - errmsg
    - isAnyTempNamespace
    - errcode
    - ereport
    linkageType: ''
    returnType: void
    signature: void CheckSetNamespace(Oid oldNspOid, Oid nspOid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DeconstructQualifiedName
      Src: /src/postgres/src/backend/catalog/namespace.c:3493,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:3498,1
    - Dst: AccessTempTableNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:3501,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3505,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:3511,1
    - Dst: AccessTempTableNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:3515,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3519,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:3520,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:3521,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:3522,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - names
    - objname_p
    argTypes:
    - List*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3526
      start: 3486
    functionDepth: 2
    functionLinenumber: 3486
    functionLinenumberEnd: 3526
    functionName: QualifiedNameGetCreationNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - errmsg
    - get_namespace_oid
    - recomputeNamespacePath
    - DeconstructQualifiedName
    - ereport
    - AccessTempTableNamespace
    - OidIsValid
    - strcmp
    - errcode
    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:3539,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:3540,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3541,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:3542,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:3543,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:3544,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - nspname
    - missing_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3547
      start: 3534
    functionDepth: 2
    functionLinenumber: 3534
    functionLinenumberEnd: 3547
    functionName: get_namespace_oid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 8
    functionsReached:
    - errmsg
    - ereport
    - CStringGetDatum
    - OidIsValid
    - errcode
    - GetSysCacheOid1
    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:3556,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/namespace.c:3558,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3561,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/namespace.c:3561,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3564,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/namespace.c:3564,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3565,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/catalog/namespace.c:3565,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3568,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/namespace.c:3568,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3569,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/catalog/namespace.c:3569,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3570,1
    - Dst: lthird
      Src: /src/postgres/src/backend/catalog/namespace.c:3570,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:3573,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:3574,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:3575,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/namespace.c:3576,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - names
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3581
      start: 3553
    functionDepth: 2
    functionLinenumber: 3553
    functionLinenumberEnd: 3581
    functionName: makeRangeVarFromNameList
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 7
    functionsReached:
    - errmsg
    - errcode
    - linitial
    - NameListToString
    - lsecond
    - ereport
    - list_length
    - lthird
    - strVal
    - makeRangeVar
    linkageType: ''
    returnType: RangeVar
    signature: 'RangeVar *

      makeRangeVarFromNameList(const List *names)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/namespace.c:3599,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/namespace.c:3603,1
    - Dst: list_head
      Src: /src/postgres/src/backend/catalog/namespace.c:3605,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/catalog/namespace.c:3606,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/namespace.c:3608,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/namespace.c:3609,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3609,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/namespace.c:3610,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/catalog/namespace.c:3611,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:3613,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/catalog/namespace.c:3614,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - names
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3618
      start: 3593
    functionDepth: 3
    functionLinenumber: 3593
    functionLinenumberEnd: 3618
    functionName: NameListToString
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 11
    functionsReached:
    - nodeTag
    - appendStringInfoChar
    - appendStringInfoString
    - list_head
    - IsA
    - elog
    - strVal
    - initStringInfo
    - lfirst
    linkageType: ''
    returnType: char
    signature: 'char *

      NameListToString(const List *names)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/namespace.c:3603,1
    - Dst: list_head
      Src: /src/postgres/src/backend/catalog/namespace.c:3605,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/catalog/namespace.c:3606,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/namespace.c:3608,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/namespace.c:3609,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3609,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/namespace.c:3610,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/catalog/namespace.c:3611,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:3613,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/catalog/namespace.c:3614,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3615
      start: 3601
    functionDepth: 2
    functionLinenumber: 3601
    functionLinenumberEnd: 3615
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 345
    functionsReached:
    - nodeTag
    - appendStringInfoChar
    - appendStringInfoString
    - list_head
    - IsA
    - elog
    - strVal
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, names)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/namespace.c:3633,1
    - Dst: list_head
      Src: /src/postgres/src/backend/catalog/namespace.c:3637,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/catalog/namespace.c:3638,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/namespace.c:3639,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/namespace.c:3639,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3639,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/namespace.c:3639,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - names
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3643
      start: 3627
    functionDepth: 3
    functionLinenumber: 3627
    functionLinenumberEnd: 3643
    functionName: NameListToQuotedString
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - appendStringInfoChar
    - appendStringInfoString
    - quote_identifier
    - list_head
    - strVal
    - initStringInfo
    - lfirst
    linkageType: ''
    returnType: char
    signature: 'char *

      NameListToQuotedString(const List *names)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_head
      Src: /src/postgres/src/backend/catalog/namespace.c:3637,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/catalog/namespace.c:3638,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/namespace.c:3639,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/catalog/namespace.c:3639,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/namespace.c:3639,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/namespace.c:3639,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3640
      start: 3635
    functionDepth: 2
    functionLinenumber: 3635
    functionLinenumberEnd: 3640
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 345
    functionsReached:
    - appendStringInfoChar
    - appendStringInfoString
    - quote_identifier
    - list_head
    - strVal
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, names)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3651,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - namespaceId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3654
      start: 3648
    functionDepth: 1
    functionLinenumber: 3648
    functionLinenumberEnd: 3654
    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:3663,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - namespaceId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3666
      start: 3660
    functionDepth: 1
    functionLinenumber: 3660
    functionLinenumberEnd: 3666
    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:3675,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - namespaceId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3679
      start: 3672
    functionDepth: 1
    functionLinenumber: 3672
    functionLinenumberEnd: 3679
    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:3693,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/catalog/namespace.c:3696,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/catalog/namespace.c:3697,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/namespace.c:3698,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - namespaceId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3700
      start: 3686
    functionDepth: 1
    functionLinenumber: 3686
    functionLinenumberEnd: 3700
    functionName: isAnyTempNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 2
    functionsReached:
    - pfree
    - get_namespace_name
    - strncmp
    linkageType: ''
    returnType: bool
    signature: bool isAnyTempNamespace(Oid namespaceId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isTempOrTempToastNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:3713,1
    - Dst: isAnyTempNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:3716,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - namespaceId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3717
      start: 3709
    functionDepth: 2
    functionLinenumber: 3709
    functionLinenumberEnd: 3717
    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:3734,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3734,1
    - Dst: GetTempNamespaceProcNumber
      Src: /src/postgres/src/backend/catalog/namespace.c:3736,1
    - Dst: ProcNumberGetProc
      Src: /src/postgres/src/backend/catalog/namespace.c:3743,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - namespaceId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3757
      start: 3728
    functionDepth: 1
    functionLinenumber: 3728
    functionLinenumberEnd: 3757
    functionName: checkTempNamespaceStatus
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - GetTempNamespaceProcNumber
    - Assert
    - OidIsValid
    - ProcNumberGetProc
    linkageType: ''
    returnType: TempNamespaceStatus
    signature: TempNamespaceStatus checkTempNamespaceStatus(Oid namespaceId)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/namespace.c:3772,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/catalog/namespace.c:3775,1
    - Dst: atoi
      Src: /src/postgres/src/backend/catalog/namespace.c:3776,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/catalog/namespace.c:3777,1
    - Dst: atoi
      Src: /src/postgres/src/backend/catalog/namespace.c:3778,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/namespace.c:3781,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - namespaceId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3783
      start: 3765
    functionDepth: 1
    functionLinenumber: 3765
    functionLinenumberEnd: 3783
    functionName: GetTempNamespaceProcNumber
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - pfree
    - get_namespace_name
    - atoi
    - strncmp
    linkageType: ''
    returnType: ProcNumber
    signature: ProcNumber GetTempNamespaceProcNumber(Oid namespaceId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:3793,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3793,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3795
      start: 3790
    functionDepth: 1
    functionLinenumber: 3790
    functionLinenumberEnd: 3795
    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: 3810
      start: 3804
    functionDepth: 0
    functionLinenumber: 3804
    functionLinenumberEnd: 3810
    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:3824,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:3825,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:3826,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - tempNamespaceId
    - tempToastNamespaceId
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3841
      start: 3820
    functionDepth: 1
    functionLinenumber: 3820
    functionLinenumberEnd: 3841
    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:3858,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/namespace.c:3860,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/catalog/namespace.c:3862,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/catalog/namespace.c:3863,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3864,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3866,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:3870,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3870,1
    - Dst: list_delete_first
      Src: /src/postgres/src/backend/catalog/namespace.c:3873,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/namespace.c:3878,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - context
    argTypes:
    - MemoryContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3881
      start: 3851
    functionDepth: 5
    functionLinenumber: 3851
    functionLinenumberEnd: 3881
    functionName: GetSearchPathMatcher
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - list_copy
    - recomputeNamespacePath
    - list_delete_first
    - palloc0
    - linitial_oid
    linkageType: ''
    returnType: SearchPathMatcher
    signature: 'SearchPathMatcher *

      GetSearchPathMatcher(MemoryContext context)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/namespace.c:3893,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/catalog/namespace.c:3894,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - SearchPathMatcher*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3900
      start: 3888
    functionDepth: 5
    functionLinenumber: 3888
    functionLinenumberEnd: 3900
    functionName: CopySearchPathMatcher
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - palloc
    - list_copy
    linkageType: ''
    returnType: SearchPathMatcher
    signature: 'SearchPathMatcher *

      CopySearchPathMatcher(SearchPathMatcher *path)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:3916,1
    - Dst: list_head
      Src: /src/postgres/src/backend/catalog/namespace.c:3923,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3928,1
    - Dst: lnext
      Src: /src/postgres/src/backend/catalog/namespace.c:3929,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3936,1
    - Dst: lnext
      Src: /src/postgres/src/backend/catalog/namespace.c:3937,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3942,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/namespace.c:3945,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3947,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:3947,1
    - Dst: lnext
      Src: /src/postgres/src/backend/catalog/namespace.c:3948,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 1
    argNames:
    - path
    argTypes:
    - SearchPathMatcher*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3962
      start: 3910
    functionDepth: 2
    functionLinenumber: 3910
    functionLinenumberEnd: 3962
    functionName: SearchPathMatchesCurrentEnvironment
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - recomputeNamespacePath
    - lnext
    - list_head
    - foreach
    - lfirst_oid
    linkageType: ''
    returnType: bool
    signature: bool SearchPathMatchesCurrentEnvironment(SearchPathMatcher *path)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/catalog/namespace.c:3975,1
    - Dst: DeconstructQualifiedName
      Src: /src/postgres/src/backend/catalog/namespace.c:3981,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:3986,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3987,1
    - Dst: lookup_collation
      Src: /src/postgres/src/backend/catalog/namespace.c:3990,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:3991,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:3997,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4001,1
    - Dst: lookup_collation
      Src: /src/postgres/src/backend/catalog/namespace.c:4006,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4007,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:4014,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:4015,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:4016,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/namespace.c:4017,1
    - Dst: GetDatabaseEncodingName
      Src: /src/postgres/src/backend/catalog/namespace.c:4017,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - collname
    - missing_ok
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4019
      start: 3970
    functionDepth: 4
    functionLinenumber: 3970
    functionLinenumberEnd: 4019
    functionName: get_collation_oid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - errmsg
    - GetDatabaseEncodingName
    - GetDatabaseEncoding
    - recomputeNamespacePath
    - NameListToString
    - DeconstructQualifiedName
    - ereport
    - lookup_collation
    - OidIsValid
    - LookupExplicitNamespace
    - lfirst_oid
    - errcode
    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:4001,1
    - Dst: lookup_collation
      Src: /src/postgres/src/backend/catalog/namespace.c:4006,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4007,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4009
      start: 3999
    functionDepth: 3
    functionLinenumber: 3999
    functionLinenumberEnd: 4009
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 346
    functionsReached:
    - lookup_collation
    - lfirst_oid
    - OidIsValid
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DeconstructQualifiedName
      Src: /src/postgres/src/backend/catalog/namespace.c:4034,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:4039,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4040,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:4043,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:4044,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:4045,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:4050,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4054,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:4059,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:4060,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:4061,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4062,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4068,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:4069,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:4070,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:4071,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/catalog/namespace.c:4072,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 2
    argNames:
    - conname
    - missing_ok
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4074
      start: 4024
    functionDepth: 4
    functionLinenumber: 4024
    functionLinenumberEnd: 4074
    functionName: get_conversion_oid
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - GetSysCacheOid2
    - recomputeNamespacePath
    - NameListToString
    - DeconstructQualifiedName
    - ereport
    - PointerGetDatum
    - OidIsValid
    - LookupExplicitNamespace
    - lfirst_oid
    - 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:4054,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/namespace.c:4059,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:4060,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:4061,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4062,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4064
      start: 4052
    functionDepth: 1
    functionLinenumber: 4052
    functionLinenumberEnd: 4064
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 346
    functionsReached:
    - PointerGetDatum
    - OidIsValid
    - GetSysCacheOid2
    - lfirst_oid
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:4085,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4089,1
    - Dst: FindDefaultConversion
      Src: /src/postgres/src/backend/catalog/namespace.c:4094,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4095,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - for_encoding
    - to_encoding
    argTypes:
    - int32
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4101
      start: 4079
    functionDepth: 1
    functionLinenumber: 4079
    functionLinenumberEnd: 4101
    functionName: FindDefaultConversionProc
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - lfirst_oid
    - OidIsValid
    - FindDefaultConversion
    - recomputeNamespacePath
    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:4089,1
    - Dst: FindDefaultConversion
      Src: /src/postgres/src/backend/catalog/namespace.c:4094,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4095,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4097
      start: 4087
    functionDepth: 1
    functionLinenumber: 4087
    functionLinenumberEnd: 4097
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 346
    functionsReached:
    - lfirst_oid
    - OidIsValid
    - FindDefaultConversion
    linkageType: ''
    returnType: void
    signature: void foreach(l, activeSearchPath)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/namespace.c:4116,1
    - Dst: SplitIdentifierString
      Src: /src/postgres/src/backend/catalog/namespace.c:4119,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/namespace.c:4123,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/namespace.c:4136,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:4139,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/namespace.c:4144,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:4144,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4145,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:4149,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:4149,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4150,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:4151,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4152,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/catalog/namespace.c:4153,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4155,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:4158,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4161,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4162,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4173,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4174,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/catalog/namespace.c:4175,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4177,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/namespace.c:4181,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/namespace.c:4182,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 3
    argNames:
    - searchPath
    - roleid
    - temp_missing
    argTypes:
    - char*
    - Oid
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4185
      start: 4106
    functionDepth: 6
    functionLinenumber: 4106
    functionLinenumberEnd: 4185
    functionName: preprocessNamespacePath
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - pfree
    - NameStr
    - get_namespace_oid
    - ReleaseSysCache
    - ObjectIdGetDatum
    - HeapTupleIsValid
    - lappend_oid
    - GETSTRUCT
    - pstrdup
    - SearchSysCache1
    - elog
    - OidIsValid
    - list_free
    - strcmp
    - SplitIdentifierString
    - lfirst
    - object_aclcheck
    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:4136,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:4139,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/namespace.c:4144,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/namespace.c:4144,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4145,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/namespace.c:4149,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/namespace.c:4149,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4150,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/namespace.c:4151,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4152,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/catalog/namespace.c:4153,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4155,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/namespace.c:4158,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4161,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4162,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4173,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4174,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/catalog/namespace.c:4175,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4177,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4179
      start: 4134
    functionDepth: 6
    functionLinenumber: 4134
    functionLinenumberEnd: 4179
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 346
    functionsReached:
    - NameStr
    - get_namespace_oid
    - ReleaseSysCache
    - ObjectIdGetDatum
    - HeapTupleIsValid
    - lappend_oid
    - GETSTRUCT
    - SearchSysCache1
    - OidIsValid
    - strcmp
    - lfirst
    - object_aclcheck
    linkageType: ''
    returnType: void
    signature: void foreach(l, namelist)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4205,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4207,1
    - Dst: InvokeNamespaceSearchHook
      Src: /src/postgres/src/backend/catalog/namespace.c:4209,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4210,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4222,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4229,1
    - Dst: lcons_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4230,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4232,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4233,1
    - Dst: lcons_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4234,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - oidlist
    - firstNS
    argTypes:
    - List*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4237
      start: 4197
    functionDepth: 6
    functionLinenumber: 4197
    functionLinenumberEnd: 4237
    functionName: finalNamespacePath
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - lappend_oid
    - lcons_oid
    - InvokeNamespaceSearchHook
    - list_member_oid
    - OidIsValid
    - linitial_oid
    - lfirst_oid
    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:4205,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4207,1
    - Dst: InvokeNamespaceSearchHook
      Src: /src/postgres/src/backend/catalog/namespace.c:4209,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4210,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4212
      start: 4203
    functionDepth: 6
    functionLinenumber: 4203
    functionLinenumberEnd: 4212
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 346
    functionsReached:
    - lappend_oid
    - InvokeNamespaceSearchHook
    - lfirst_oid
    - list_member_oid
    linkageType: ''
    returnType: void
    signature: void foreach(lc, oidlist)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: spcache_init
      Src: /src/postgres/src/backend/catalog/namespace.c:4249,1
    - Dst: spcache_insert
      Src: /src/postgres/src/backend/catalog/namespace.c:4251,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/namespace.c:4260,1
    - Dst: preprocessNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:4261,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/namespace.c:4263,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/namespace.c:4275,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/namespace.c:4278,1
    - Dst: finalNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:4279,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/namespace.c:4281,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - searchPath
    - roleid
    argTypes:
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4293
      start: 4243
    functionDepth: 7
    functionLinenumber: 4243
    functionLinenumberEnd: 4293
    functionName: cachedNamespacePath
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - spcache_init
    - preprocessNamespacePath
    - finalNamespacePath
    - spcache_insert
    - list_free
    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:4301,1
    - Dst: cachedNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:4309,1
    - Dst: equal
      Src: /src/postgres/src/backend/catalog/namespace.c:4313,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/namespace.c:4325,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/catalog/namespace.c:4326,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/namespace.c:4327,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/namespace.c:4330,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4351
      start: 4298
    functionDepth: 8
    functionLinenumber: 4298
    functionLinenumberEnd: 4351
    functionName: recomputeNamespacePath
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 34
    functionsReached:
    - MemoryContextSwitchTo
    - equal
    - list_copy
    - cachedNamespacePath
    - GetUserId
    - list_free
    linkageType: ''
    returnType: void
    signature: void recomputeNamespacePath(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4375,1
    - Dst: InitTempTableNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:4382,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - force
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4383
      start: 4361
    functionDepth: 1
    functionLinenumber: 4361
    functionLinenumberEnd: 4383
    functionName: AccessTempTableNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 3
    functionsReached:
    - InitTempTableNamespace
    - OidIsValid
    linkageType: ''
    returnType: void
    signature: void AccessTempTableNamespace(bool force)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:4396,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4396,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/catalog/namespace.c:4408,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/namespace.c:4408,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:4410,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:4411,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:4412,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/catalog/namespace.c:4413,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/catalog/namespace.c:4425,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:4426,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:4427,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:4428,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/catalog/namespace.c:4431,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/namespace.c:4432,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/namespace.c:4433,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/namespace.c:4434,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/catalog/namespace.c:4436,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4438,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4439,1
    - Dst: NamespaceCreate
      Src: /src/postgres/src/backend/catalog/namespace.c:4449,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/namespace.c:4452,1
    - Dst: RemoveTempRelations
      Src: /src/postgres/src/backend/catalog/namespace.c:4460,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/catalog/namespace.c:4468,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4471,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4472,1
    - Dst: NamespaceCreate
      Src: /src/postgres/src/backend/catalog/namespace.c:4474,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/namespace.c:4477,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/namespace.c:4501,1
    - Dst: GetCurrentSubTransactionId
      Src: /src/postgres/src/backend/catalog/namespace.c:4502,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4506
      start: 4389
    functionDepth: 3
    functionLinenumber: 4389
    functionLinenumberEnd: 4506
    functionName: InitTempTableNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - Assert
    - get_namespace_oid
    - RemoveTempRelations
    - RecoveryInProgress
    - CommandCounterIncrement
    - snprintf
    - GetCurrentSubTransactionId
    - ereport
    - IsParallelWorker
    - OidIsValid
    - get_database_name
    - NamespaceCreate
    - GetUserId
    - object_aclcheck
    linkageType: ''
    returnType: void
    signature: void InitTempTableNamespace(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: before_shmem_exit
      Src: /src/postgres/src/backend/catalog/namespace.c:4525,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - isCommit
    - parallel
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4547
      start: 4511
    functionDepth: 1
    functionLinenumber: 4511
    functionLinenumberEnd: 4547
    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: 4587
      start: 4557
    functionDepth: 0
    functionLinenumber: 4557
    functionLinenumberEnd: 4587
    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:4613,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - tempNamespaceId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4618
      start: 4597
    functionDepth: 1
    functionLinenumber: 4597
    functionLinenumberEnd: 4618
    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:4626,1
    - Dst: AbortOutOfAnyTransaction
      Src: /src/postgres/src/backend/catalog/namespace.c:4629,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/catalog/namespace.c:4630,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/catalog/namespace.c:4631,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/catalog/namespace.c:4631,1
    - Dst: RemoveTempRelations
      Src: /src/postgres/src/backend/catalog/namespace.c:4633,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/catalog/namespace.c:4635,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/catalog/namespace.c:4636,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4638
      start: 4623
    functionDepth: 6
    functionLinenumber: 4623
    functionLinenumberEnd: 4638
    functionName: RemoveTempRelationsCallback
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - PopActiveSnapshot
    - CommitTransactionCommand
    - GetTransactionSnapshot
    - AbortOutOfAnyTransaction
    - PushActiveSnapshot
    - OidIsValid
    - StartTransactionCommand
    - RemoveTempRelations
    linkageType: ''
    returnType: void
    signature: void RemoveTempRelationsCallback(int code, Datum arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/namespace.c:4646,1
    - Dst: RemoveTempRelations
      Src: /src/postgres/src/backend/catalog/namespace.c:4647,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4648
      start: 4643
    functionDepth: 2
    functionLinenumber: 4643
    functionLinenumberEnd: 4648
    functionName: ResetTempTableNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - RemoveTempRelations
    - OidIsValid
    linkageType: ''
    returnType: void
    signature: void ResetTempTableNamespace(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: spcache_init
      Src: /src/postgres/src/backend/catalog/namespace.c:4678,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/namespace.c:4680,1
    - Dst: spcache_lookup
      Src: /src/postgres/src/backend/catalog/namespace.c:4682,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/namespace.c:4690,1
    - Dst: SplitIdentifierString
      Src: /src/postgres/src/backend/catalog/namespace.c:4693,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/catalog/namespace.c:4696,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/namespace.c:4697,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/namespace.c:4698,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/namespace.c:4701,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/namespace.c:4702,1
    - Dst: spcache_insert
      Src: /src/postgres/src/backend/catalog/namespace.c:4706,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4709
      start: 4656
    functionDepth: 4
    functionLinenumber: 4656
    functionLinenumberEnd: 4709
    functionName: check_search_path
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - GUC_check_errdetail
    - pfree
    - spcache_lookup
    - spcache_init
    - pstrdup
    - spcache_insert
    - SplitIdentifierString
    - GetUserId
    - list_free
    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:4716,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/namespace.c:4716,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4728
      start: 4712
    functionDepth: 1
    functionLinenumber: 4712
    functionLinenumberEnd: 4728
    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:4738,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/namespace.c:4746,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4747,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/namespace.c:4748,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/namespace.c:4752,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/catalog/namespace.c:4766,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/catalog/namespace.c:4771,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/catalog/namespace.c:4776,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/catalog/namespace.c:4781,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4789
      start: 4735
    functionDepth: 1
    functionLinenumber: 4735
    functionLinenumberEnd: 4789
    functionName: InitializeSearchPath
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - CacheRegisterSyscacheCallback
    - MemoryContextSwitchTo
    - IsBootstrapProcessingMode
    - list_make1_oid
    - GetUserId
    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
    - int
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4805
      start: 4795
    functionDepth: 0
    functionLinenumber: 4795
    functionLinenumberEnd: 4805
    functionName: InvalidationCallback
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void InvalidationCallback(Datum arg, int cacheid, uint32 hashvalue)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:4823,1
    - Dst: AccessTempTableNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:4834,1
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:4835,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/catalog/namespace.c:4838,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4841,1
    - Dst: list_delete_first
      Src: /src/postgres/src/backend/catalog/namespace.c:4842,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - includeImplicit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4846
      start: 4818
    functionDepth: 9
    functionLinenumber: 4818
    functionLinenumberEnd: 4846
    functionName: fetch_search_path
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - list_copy
    - list_delete_first
    - recomputeNamespacePath
    - AccessTempTableNamespace
    - linitial_oid
    linkageType: ''
    returnType: List
    signature: 'List *

      fetch_search_path(bool includeImplicit)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: recomputeNamespacePath
      Src: /src/postgres/src/backend/catalog/namespace.c:4864,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/namespace.c:4868,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - sarray
    - sarray_len
    argTypes:
    - Oid*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4879
      start: 4858
    functionDepth: 9
    functionLinenumber: 4858
    functionLinenumberEnd: 4879
    functionName: fetch_search_path_array
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - lfirst_oid
    - recomputeNamespacePath
    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:4868,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4876
      start: 4866
    functionDepth: 1
    functionLinenumber: 4866
    functionLinenumberEnd: 4876
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 346
    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:4896,1
    - Dst: RelationIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:4900,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/namespace.c:4903,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:4904,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4905
      start: 4893
    functionDepth: 4
    functionLinenumber: 4893
    functionLinenumberEnd: 4905
    functionName: pg_table_is_visible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - PG_RETURN_BOOL
    - RelationIsVisibleExt
    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:4910,1
    - Dst: TypeIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:4914,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/namespace.c:4917,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:4918,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4919
      start: 4907
    functionDepth: 4
    functionLinenumber: 4907
    functionLinenumberEnd: 4919
    functionName: pg_type_is_visible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - PG_RETURN_BOOL
    - TypeIsVisibleExt
    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:4924,1
    - Dst: FunctionIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:4928,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/namespace.c:4931,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:4932,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4933
      start: 4921
    functionDepth: 4
    functionLinenumber: 4921
    functionLinenumberEnd: 4933
    functionName: pg_function_is_visible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - FunctionIsVisibleExt
    - PG_RETURN_NULL
    - 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:4938,1
    - Dst: OperatorIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:4942,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/namespace.c:4945,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:4946,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4947
      start: 4935
    functionDepth: 4
    functionLinenumber: 4935
    functionLinenumberEnd: 4947
    functionName: pg_operator_is_visible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - OperatorIsVisibleExt
    - PG_RETURN_NULL
    - 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:4952,1
    - Dst: OpclassIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:4956,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/namespace.c:4959,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:4960,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4961
      start: 4949
    functionDepth: 4
    functionLinenumber: 4949
    functionLinenumberEnd: 4961
    functionName: pg_opclass_is_visible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - PG_RETURN_BOOL
    - OpclassIsVisibleExt
    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:4966,1
    - Dst: OpfamilyIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:4970,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/namespace.c:4973,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:4974,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4975
      start: 4963
    functionDepth: 4
    functionLinenumber: 4963
    functionLinenumberEnd: 4975
    functionName: pg_opfamily_is_visible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - PG_RETURN_BOOL
    - OpfamilyIsVisibleExt
    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:4980,1
    - Dst: CollationIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:4984,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/namespace.c:4987,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:4988,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4989
      start: 4977
    functionDepth: 5
    functionLinenumber: 4977
    functionLinenumberEnd: 4989
    functionName: pg_collation_is_visible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - CollationIsVisibleExt
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - 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:4994,1
    - Dst: ConversionIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:4998,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/namespace.c:5001,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:5002,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5003
      start: 4991
    functionDepth: 4
    functionLinenumber: 4991
    functionLinenumberEnd: 5003
    functionName: pg_conversion_is_visible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - ConversionIsVisibleExt
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - 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:5008,1
    - Dst: StatisticsObjIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:5012,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/namespace.c:5015,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:5016,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5017
      start: 5005
    functionDepth: 4
    functionLinenumber: 5005
    functionLinenumberEnd: 5017
    functionName: pg_statistics_obj_is_visible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - StatisticsObjIsVisibleExt
    - PG_RETURN_NULL
    - PG_RETURN_BOOL
    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:5022,1
    - Dst: TSParserIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:5026,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/namespace.c:5029,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:5030,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5031
      start: 5019
    functionDepth: 4
    functionLinenumber: 5019
    functionLinenumberEnd: 5031
    functionName: pg_ts_parser_is_visible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - TSParserIsVisibleExt
    - PG_RETURN_NULL
    - 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:5036,1
    - Dst: TSDictionaryIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:5040,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/namespace.c:5043,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:5044,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5045
      start: 5033
    functionDepth: 4
    functionLinenumber: 5033
    functionLinenumberEnd: 5045
    functionName: pg_ts_dict_is_visible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - TSDictionaryIsVisibleExt
    - 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:5050,1
    - Dst: TSTemplateIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:5054,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/namespace.c:5057,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:5058,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5059
      start: 5047
    functionDepth: 4
    functionLinenumber: 5047
    functionLinenumberEnd: 5059
    functionName: pg_ts_template_is_visible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - PG_RETURN_BOOL
    - TSTemplateIsVisibleExt
    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:5064,1
    - Dst: TSConfigIsVisibleExt
      Src: /src/postgres/src/backend/catalog/namespace.c:5068,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/namespace.c:5071,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:5072,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5073
      start: 5061
    functionDepth: 4
    functionLinenumber: 5061
    functionLinenumberEnd: 5073
    functionName: pg_ts_config_is_visible
    functionSourceFile: /src/postgres/src/backend/catalog/namespace.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - 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:5078,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5079
      start: 5075
    functionDepth: 1
    functionLinenumber: 5075
    functionLinenumberEnd: 5079
    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:5084,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/namespace.c:5086,1
    - Dst: isOtherTempNamespace
      Src: /src/postgres/src/backend/catalog/namespace.c:5086,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5087
      start: 5081
    functionDepth: 3
    functionLinenumber: 5081
    functionLinenumberEnd: 5087
    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:49,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_range.c:51,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_range.c:53,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_range.c:54,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: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_range.c:61,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_range.c:61,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_range.c:63,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_range.c:64,1
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/pg_range.c:67,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_range.c:69,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_range.c:71,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_range.c:72,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_range.c:74,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_range.c:75,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_range.c:77,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_range.c:79,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_range.c:80,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_range.c:83,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_range.c:85,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_range.c:86,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_range.c:89,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_range.c:91,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_range.c:92,1
    - Dst: record_object_address_dependencies
      Src: /src/postgres/src/backend/catalog/pg_range.c:95,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/pg_range.c:96,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_range.c:102,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_range.c:104,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 38
    argCount: 7
    argNames:
    - rangeTypeOid
    - rangeSubType
    - rangeCollation
    - rangeSubOpclass
    - rangeCanonical
    - rangeSubDiff
    - multirangeTypeOid
    argTypes:
    - Oid
    - Oid
    - Oid
    - Oid
    - RegProcedure
    - RegProcedure
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 35
    functionDepth: 5
    functionLinenumber: 35
    functionLinenumberEnd: 105
    functionName: RangeCreate
    functionSourceFile: /src/postgres/src/backend/catalog/pg_range.c
    functionUses: 0
    functionsReached:
    - heap_form_tuple
    - new_object_addresses
    - add_exact_object_address
    - CatalogTupleInsert
    - table_open
    - memset
    - heap_freetuple
    - ObjectAddressSet
    - RelationGetDescr
    - record_object_address_dependencies
    - recordDependencyOn
    - OidIsValid
    - free_object_addresses
    - table_close
    - ObjectIdGetDatum
    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)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_range.c:120,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_range.c:122,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_range.c:125,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_range.c:127,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_range.c:130,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_range.c:130,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_range.c:132,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_range.c:135,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_range.c:137,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - rangeTypeOid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 112
    functionDepth: 3
    functionLinenumber: 112
    functionLinenumberEnd: 138
    functionName: RangeDelete
    functionSourceFile: /src/postgres/src/backend/catalog/pg_range.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - ScanKeyInit
    - systable_endscan
    - table_close
    - CatalogTupleDelete
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void RangeDelete(Oid rangeTypeOid)
  - BBCount: 12
    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: elog
      Src: /src/postgres/src/backend/catalog/pg_class.c:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 1
    argNames:
    - relkind
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 52
    functionName: errdetail_relkind_not_supported
    functionSourceFile: /src/postgres/src/backend/catalog/pg_class.c
    functionUses: 6
    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: PointerIsValid
      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: 5
    functionLinenumber: 56
    functionLinenumberEnd: 182
    functionName: TypeShellMake
    functionSourceFile: /src/postgres/src/backend/catalog/pg_type.c
    functionUses: 0
    functionsReached:
    - NameGetDatum
    - BoolGetDatum
    - CatalogTupleInsert
    - table_open
    - Int32GetDatum
    - ObjectAddressSet
    - heap_freetuple
    - Int16GetDatum
    - PointerIsValid
    - errmsg
    - heap_form_tuple
    - InvokeObjectPostCreateHook
    - GenerateTypeDependencies
    - OidIsValid
    - table_close
    - ObjectIdGetDatum
    - Assert
    - namestrcpy
    - IsBootstrapProcessingMode
    - ereport
    - CharGetDatum
    - GetNewOidWithIndex
    - errcode
    linkageType: ''
    returnType: ObjectAddress
    signature: ObjectAddress TypeShellMake(const char *typeName, Oid typeNamespace,
      Oid ownerId)
  - BBCount: 25
    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:292,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_type.c:293,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_type.c:294,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_type.c:300,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_type.c:301,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_type.c:309,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_type.c:310,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_type.c:311,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_type.c:315,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_type.c:316,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_type.c:317,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_type.c:323,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_type.c:324,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_type.c:325,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:337,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/pg_type.c:352,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:353,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:354,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:355,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:356,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:357,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:358,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:359,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:360,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:361,1
    - Dst: CharGetDatum
      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: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:372,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:373,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:374,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:375,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:376,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:377,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:378,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:379,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:380,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:387,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:395,1
    - Dst: get_user_default_acl
      Src: /src/postgres/src/backend/catalog/pg_type.c:405,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:408,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_type.c:418,1
    - Dst: SearchSysCacheCopy2
      Src: /src/postgres/src/backend/catalog/pg_type.c:420,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:421,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:422,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:423,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_type.c:425,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_type.c:432,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_type.c:433,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_type.c:434,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/pg_type.c:440,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:443,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_type.c:444,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/pg_type.c:451,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_type.c:452,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_type.c:457,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:466,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:471,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_type.c:472,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_type.c:473,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_type.c:474,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/pg_type.c:481,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:485,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_type.c:487,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_type.c:487,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_type.c:490,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/pg_type.c:496,1
    - Dst: GenerateTypeDependencies
      Src: /src/postgres/src/backend/catalog/pg_type.c:497,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/catalog/pg_type.c:500,1
    - Dst: InvokeObjectPostCreateHook
      Src: /src/postgres/src/backend/catalog/pg_type.c:510,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:512,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_type.c:517,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 109
    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: 520
      start: 194
    functionDepth: 6
    functionLinenumber: 194
    functionLinenumberEnd: 520
    functionName: TypeCreate
    functionSourceFile: /src/postgres/src/backend/catalog/pg_type.c
    functionUses: 0
    functionsReached:
    - NameGetDatum
    - errcode
    - BoolGetDatum
    - HeapTupleIsValid
    - CatalogTupleInsert
    - table_open
    - Int32GetDatum
    - heap_modify_tuple
    - ObjectAddressSet
    - GETSTRUCT
    - CStringGetDatum
    - Int16GetDatum
    - errmsg
    - heap_form_tuple
    - aclcheck_error
    - InvokeObjectPostCreateHook
    - elog
    - GenerateTypeDependencies
    - OidIsValid
    - table_close
    - ObjectIdGetDatum
    - namestrcpy
    - stringToNode
    - CStringGetTextDatum
    - CatalogTupleUpdate
    - RelationGetDescr
    - get_user_default_acl
    - ereport
    - PointerGetDatum
    - IsBootstrapProcessingMode
    - CharGetDatum
    - GetNewOidWithIndex
    - SearchSysCacheCopy2
    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:567,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/pg_type.c:578,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_type.c:579,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/catalog/pg_type.c:581,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/pg_type.c:581,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/pg_type.c:586,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_type.c:587,1
    - Dst: DatumGetAclPCopy
      Src: /src/postgres/src/backend/catalog/pg_type.c:589,1
    - Dst: deleteDependencyRecordsFor
      Src: /src/postgres/src/backend/catalog/pg_type.c:595,1
    - Dst: deleteSharedDependencyRecordsFor
      Src: /src/postgres/src/backend/catalog/pg_type.c:596,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:599,1
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/pg_type.c:611,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:615,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_type.c:617,1
    - Dst: recordDependencyOnOwner
      Src: /src/postgres/src/backend/catalog/pg_type.c:622,1
    - Dst: recordDependencyOnNewAcl
      Src: /src/postgres/src/backend/catalog/pg_type.c:625,1
    - Dst: recordDependencyOnCurrentExtension
      Src: /src/postgres/src/backend/catalog/pg_type.c:637,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:640,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:642,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_type.c:643,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:646,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:648,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_type.c:649,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:652,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:654,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_type.c:655,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:658,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:660,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_type.c:661,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:664,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:666,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_type.c:667,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:670,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:672,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_type.c:673,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:676,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:678,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_type.c:679,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:682,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:684,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_type.c:685,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:689,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:691,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_type.c:692,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:699,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:702,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_type.c:703,1
    - Dst: record_object_address_dependencies
      Src: /src/postgres/src/backend/catalog/pg_type.c:706,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/pg_type.c:707,1
    - Dst: recordDependencyOnExpr
      Src: /src/postgres/src/backend/catalog/pg_type.c:711,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:722,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:724,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_type.c:727,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_type.c:729,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:737,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_type.c:739,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_type.c:740,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: 753
      start: 556
    functionDepth: 5
    functionLinenumber: 556
    functionLinenumberEnd: 753
    functionName: GenerateTypeDependencies
    functionSourceFile: /src/postgres/src/backend/catalog/pg_type.c
    functionUses: 2
    functionsReached:
    - new_object_addresses
    - recordDependencyOnExpr
    - free_object_addresses
    - heap_getattr
    - ObjectAddressSet
    - DatumGetAclPCopy
    - recordDependencyOnOwner
    - GETSTRUCT
    - recordDependencyOnNewAcl
    - recordDependencyOn
    - recordDependencyOnCurrentExtension
    - OidIsValid
    - deleteDependencyRecordsFor
    - add_exact_object_address
    - stringToNode
    - record_object_address_dependencies
    - deleteSharedDependencyRecordsFor
    - TextDatumGetCString
    - RelationGetDescr
    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:773,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/pg_type.c:775,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:775,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:776,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_type.c:777,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_type.c:778,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_type.c:781,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/pg_type.c:786,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:787,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:788,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:797,1
    - Dst: get_typisdefined
      Src: /src/postgres/src/backend/catalog/pg_type.c:799,1
    - Dst: moveArrayTypeName
      Src: /src/postgres/src/backend/catalog/pg_type.c:800,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_type.c:803,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_type.c:804,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_type.c:805,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/pg_type.c:809,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_type.c:811,1
    - Dst: InvokeObjectPostAlterHook
      Src: /src/postgres/src/backend/catalog/pg_type.c:813,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_type.c:815,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_type.c:816,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:823,1
    - Dst: makeArrayTypeName
      Src: /src/postgres/src/backend/catalog/pg_type.c:825,1
    - Dst: RenameTypeInternal
      Src: /src/postgres/src/backend/catalog/pg_type.c:827,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_type.c:828,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - typeOid
    - newTypeName
    - typeNamespace
    argTypes:
    - Oid
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 764
    functionDepth: 3
    functionLinenumber: 764
    functionLinenumberEnd: 830
    functionName: RenameTypeInternal
    functionSourceFile: /src/postgres/src/backend/catalog/pg_type.c
    functionUses: 1
    functionsReached:
    - RenameTypeInternal
    - HeapTupleIsValid
    - SearchSysCacheCopy1
    - InvokeObjectPostAlterHook
    - pfree
    - table_open
    - heap_freetuple
    - GETSTRUCT
    - CStringGetDatum
    - errmsg
    - elog
    - OidIsValid
    - makeArrayTypeName
    - table_close
    - get_typisdefined
    - ObjectIdGetDatum
    - Assert
    - namestrcpy
    - CatalogTupleUpdate
    - ereport
    - GetSysCacheOid2
    - errcode
    - moveArrayTypeName
    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:861,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/pg_type.c:865,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:866,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:867,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_type.c:871,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/catalog/pg_type.c:872,1
    - Dst: makeObjectName
      Src: /src/postgres/src/backend/catalog/pg_type.c:873,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - typeName
    - typeNamespace
    argTypes:
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 839
    functionDepth: 2
    functionLinenumber: 839
    functionLinenumberEnd: 877
    functionName: makeArrayTypeName
    functionSourceFile: /src/postgres/src/backend/catalog/pg_type.c
    functionUses: 1
    functionsReached:
    - pfree
    - snprintf
    - CStringGetDatum
    - makeObjectName
    - ObjectIdGetDatum
    - SearchSysCacheExists2
    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:911,1
    - Dst: get_element_type
      Src: /src/postgres/src/backend/catalog/pg_type.c:915,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_type.c:916,1
    - Dst: get_array_type
      Src: /src/postgres/src/backend/catalog/pg_type.c:917,1
    - Dst: makeArrayTypeName
      Src: /src/postgres/src/backend/catalog/pg_type.c:926,1
    - Dst: RenameTypeInternal
      Src: /src/postgres/src/backend/catalog/pg_type.c:929,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/pg_type.c:935,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_type.c:937,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - typeOid
    - typeName
    - typeNamespace
    argTypes:
    - Oid
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 940
      start: 904
    functionDepth: 4
    functionLinenumber: 904
    functionLinenumberEnd: 940
    functionName: moveArrayTypeName
    functionSourceFile: /src/postgres/src/backend/catalog/pg_type.c
    functionUses: 1
    functionsReached:
    - pfree
    - RenameTypeInternal
    - CommandCounterIncrement
    - OidIsValid
    - makeArrayTypeName
    - get_element_type
    - get_typisdefined
    - get_array_type
    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:959,1
    - Dst: pnstrdup
      Src: /src/postgres/src/backend/catalog/pg_type.c:962,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/catalog/pg_type.c:964,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/catalog/pg_type.c:967,1
    - Dst: pnstrdup
      Src: /src/postgres/src/backend/catalog/pg_type.c:967,1
    - Dst: pg_mbcliplen
      Src: /src/postgres/src/backend/catalog/pg_type.c:970,1
    - Dst: strlen
      Src: /src/postgres/src/backend/catalog/pg_type.c:970,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/pg_type.c:972,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:973,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_type.c:974,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_type.c:975,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_type.c:976,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_type.c:977,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_type.c:978,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/pg_type.c:979,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/pg_type.c:981,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - rangeTypeName
    - typeNamespace
    argTypes:
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 949
    functionDepth: 2
    functionLinenumber: 949
    functionLinenumberEnd: 982
    functionName: makeMultirangeTypeName
    functionSourceFile: /src/postgres/src/backend/catalog/pg_type.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - pnstrdup
    - strstr
    - ereport
    - pstrdup
    - pg_mbcliplen
    - psprintf
    - SearchSysCacheExists2
    - CStringGetDatum
    - errhint
    - errdetail
    - ObjectIdGetDatum
    - strlen
    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: 5
    functionLinenumber: 42
    functionLinenumberEnd: 120
    functionName: NamespaceCreate
    functionSourceFile: /src/postgres/src/backend/catalog/pg_namespace.c
    functionUses: 1
    functionsReached:
    - NameGetDatum
    - SearchSysCacheExists1
    - CatalogTupleInsert
    - table_open
    - recordDependencyOnOwner
    - recordDependencyOnNewAcl
    - recordDependencyOnCurrentExtension
    - errmsg
    - heap_form_tuple
    - InvokeObjectPostCreateHook
    - elog
    - OidIsValid
    - table_close
    - ObjectIdGetDatum
    - Assert
    - namestrcpy
    - get_user_default_acl
    - ereport
    - PointerGetDatum
    - GetNewOidWithIndex
    - errcode
    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:41,1
    - Dst: GetSysCacheOid1
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:44,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:45,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:45,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:47,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:48,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:49,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:50,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:52,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - parameter
    - missing_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 55
    functionName: ParameterAclLookup
    functionSourceFile: /src/postgres/src/backend/catalog/pg_parameter_acl.c
    functionUses: 1
    functionsReached:
    - convert_GUC_name_for_parameter_acl
    - errmsg
    - pfree
    - ereport
    - PointerGetDatum
    - OidIsValid
    - cstring_to_text
    - errcode
    - GetSysCacheOid1
    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:82,1
    - Dst: convert_GUC_name_for_parameter_acl
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:85,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:93,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:94,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:95,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:98,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:100,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:100,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:102,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:103,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:106,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_parameter_acl.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - parameter
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 67
    functionDepth: 5
    functionLinenumber: 67
    functionLinenumberEnd: 110
    functionName: ParameterAclCreate
    functionSourceFile: /src/postgres/src/backend/catalog/pg_parameter_acl.c
    functionUses: 0
    functionsReached:
    - convert_GUC_name_for_parameter_acl
    - heap_form_tuple
    - CatalogTupleInsert
    - table_open
    - heap_freetuple
    - RelationGetDescr
    - PointerGetDatum
    - GetNewOidWithIndex
    - table_close
    - cstring_to_text
    - ObjectIdGetDatum
    - check_GUC_name_for_parameter_acl
    linkageType: ''
    returnType: Oid
    signature: Oid ParameterAclCreate(const char *parameter)
  - BBCount: 62
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_proc.c:152,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/catalog/pg_proc.c:152,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:156,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:157,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/catalog/pg_proc.c:158,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:165,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/pg_proc.c:172,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/catalog/pg_proc.c:174,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/catalog/pg_proc.c:175,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/catalog/pg_proc.c:177,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/catalog/pg_proc.c:178,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_proc.c:179,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/catalog/pg_proc.c:180,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_proc.c:181,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:190,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/pg_proc.c:197,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/catalog/pg_proc.c:199,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/catalog/pg_proc.c:200,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/catalog/pg_proc.c:201,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/catalog/pg_proc.c:202,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_proc.c:203,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/catalog/pg_proc.c:204,1
    - Dst: check_valid_polymorphic_signature
      Src: /src/postgres/src/backend/catalog/pg_proc.c:211,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:215,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:216,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:217,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/catalog/pg_proc.c:218,1
    - Dst: check_valid_internal_signature
      Src: /src/postgres/src/backend/catalog/pg_proc.c:224,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:228,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:229,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:230,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/catalog/pg_proc.c:231,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:236,1
    - Dst: check_valid_polymorphic_signature
      Src: /src/postgres/src/backend/catalog/pg_proc.c:245,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:249,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:250,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:251,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/catalog/pg_proc.c:252,1
    - Dst: check_valid_internal_signature
      Src: /src/postgres/src/backend/catalog/pg_proc.c:253,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:257,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:258,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:259,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/catalog/pg_proc.c:260,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_proc.c:278,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_proc.c:279,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_proc.c:282,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_proc.c:283,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_proc.c:289,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_proc.c:290,1
    - Dst: get_element_type
      Src: /src/postgres/src/backend/catalog/pg_proc.c:303,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_proc.c:304,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_proc.c:305,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_proc.c:310,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/pg_proc.c:327,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:328,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:329,1
    - Dst: ObjectIdGetDatum
      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: Float4GetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:332,1
    - Dst: Float4GetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:333,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:334,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:335,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:336,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:337,1
    - Dst: BoolGetDatum
      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: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:341,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:342,1
    - Dst: UInt16GetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:343,1
    - Dst: UInt16GetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:344,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/pg_proc.c:344,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:345,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:346,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:347,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:351,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:355,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:360,1
    - Dst: nodeToString
      Src: /src/postgres/src/backend/catalog/pg_proc.c:360,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:363,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:367,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:373,1
    - Dst: nodeToString
      Src: /src/postgres/src/backend/catalog/pg_proc.c:373,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:376,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_proc.c:382,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_proc.c:383,1
    - Dst: SearchSysCache3
      Src: /src/postgres/src/backend/catalog/pg_proc.c:386,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:387,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:388,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:389,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_proc.c:391,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_proc.c:394,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:400,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:401,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:402,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/catalog/pg_proc.c:404,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/pg_proc.c:405,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:410,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:411,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:412,1
    - Dst: errdetail
      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: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:437,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:438,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:440,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:441,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/pg_proc.c:447,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/catalog/pg_proc.c:449,1
    - Dst: build_function_result_tupdesc_t
      Src: /src/postgres/src/backend/catalog/pg_proc.c:460,1
    - Dst: build_function_result_tupdesc_d
      Src: /src/postgres/src/backend/catalog/pg_proc.c:461,1
    - Dst: equalRowTypes
      Src: /src/postgres/src/backend/catalog/pg_proc.c:468,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:469,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:470,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:471,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_proc.c:472,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/pg_proc.c:474,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/catalog/pg_proc.c:476,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/pg_proc.c:484,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/pg_proc.c:496,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:500,1
    - Dst: get_func_input_arg_names
      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:505,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/pg_proc.c:513,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:514,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:515,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:516,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/pg_proc.c:519,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/catalog/pg_proc.c:521,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/pg_proc.c:540,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:541,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:542,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:543,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/pg_proc.c:545,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/catalog/pg_proc.c:547,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_proc.c:549,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:551,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:551,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/pg_proc.c:551,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_proc.c:552,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/pg_proc.c:552,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/backend/catalog/pg_proc.c:555,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/pg_proc.c:556,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_proc.c:561,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_proc.c:562,1
    - Dst: exprType
      Src: /src/postgres/src/backend/catalog/pg_proc.c:564,1
    - Dst: exprType
      Src: /src/postgres/src/backend/catalog/pg_proc.c:564,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:565,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:566,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:567,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/pg_proc.c:569,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/catalog/pg_proc.c:571,1
    - Dst: lnext
      Src: /src/postgres/src/backend/catalog/pg_proc.c:572,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/pg_proc.c:585,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_proc.c:586,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_proc.c:588,1
    - Dst: get_user_default_acl
      Src: /src/postgres/src/backend/catalog/pg_proc.c:597,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:600,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/pg_proc.c:604,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:606,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_proc.c:607,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_proc.c:608,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_proc.c:613,1
    - Dst: deleteDependencyRecordsFor
      Src: /src/postgres/src/backend/catalog/pg_proc.c:622,1
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/pg_proc.c:624,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_proc.c:626,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_proc.c:629,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_proc.c:630,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_proc.c:633,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_proc.c:634,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_proc.c:637,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_proc.c:638,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_proc.c:643,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_proc.c:644,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_proc.c:650,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_proc.c:651,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_proc.c:655,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_proc.c:657,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_proc.c:658,1
    - Dst: record_object_address_dependencies
      Src: /src/postgres/src/backend/catalog/pg_proc.c:661,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/pg_proc.c:662,1
    - Dst: recordDependencyOnExpr
      Src: /src/postgres/src/backend/catalog/pg_proc.c:666,1
    - Dst: recordDependencyOnExpr
      Src: /src/postgres/src/backend/catalog/pg_proc.c:670,1
    - Dst: recordDependencyOnOwner
      Src: /src/postgres/src/backend/catalog/pg_proc.c:675,1
    - Dst: recordDependencyOnNewAcl
      Src: /src/postgres/src/backend/catalog/pg_proc.c:679,1
    - Dst: recordDependencyOnCurrentExtension
      Src: /src/postgres/src/backend/catalog/pg_proc.c:683,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_proc.c:685,1
    - Dst: InvokeObjectPostCreateHook
      Src: /src/postgres/src/backend/catalog/pg_proc.c:688,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_proc.c:690,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_proc.c:693,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/pg_proc.c:699,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/pg_proc.c:713,1
    - Dst: NewGUCNestLevel
      Src: /src/postgres/src/backend/catalog/pg_proc.c:716,1
    - Dst: ProcessGUCArray
      Src: /src/postgres/src/backend/catalog/pg_proc.c:717,1
    - Dst: superuser
      Src: /src/postgres/src/backend/catalog/pg_proc.c:718,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/catalog/pg_proc.c:724,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:724,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/backend/catalog/pg_proc.c:727,1
    - Dst: pgstat_create_function
      Src: /src/postgres/src/backend/catalog/pg_proc.c:732,1
    CyclomaticComplexity: 86
    EdgeCount: 86
    ICount: 245
    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: 735
      start: 97
    functionDepth: 7
    functionLinenumber: 97
    functionLinenumberEnd: 735
    functionName: ProcedureCreate
    functionSourceFile: /src/postgres/src/backend/catalog/pg_proc.c
    functionUses: 0
    functionsReached:
    - BoolGetDatum
    - HeapTupleIsValid
    - NewGUCNestLevel
    - ARR_DIMS
    - CatalogTupleInsert
    - check_valid_internal_signature
    - format_procedure
    - superuser
    - heap_form_tuple
    - InvokeObjectPostCreateHook
    - AtEOXact_GUC
    - lnext
    - ARR_HASNULL
    - get_element_type
    - stringToNode
    - ARR_DATA_PTR
    - RelationGetDescr
    - NameGetDatum
    - list_length
    - castNode
    - errhint
    - SysCacheGetAttr
    - OidFunctionCall1
    - ObjectAddressSet
    - table_open
    - heap_modify_tuple
    - heap_freetuple
    - list_nth_cell
    - recordDependencyOnNewAcl
    - equalRowTypes
    - errmsg
    - ObjectIdGetDatum
    - deleteDependencyRecordsFor
    - namestrcpy
    - record_object_address_dependencies
    - build_function_result_tupdesc_d
    - TextDatumGetCString
    - get_user_default_acl
    - CharGetDatum
    - UInt16GetDatum
    - nodeToString
    - build_function_result_tupdesc_t
    - free_object_addresses
    - exprType
    - Float4GetDatum
    - ReleaseSysCache
    - errdetail_internal
    - ProcessGUCArray
    - PointerIsValid
    - aclcheck_error
    - CommandCounterIncrement
    - elog
    - table_close
    - object_ownercheck
    - ARR_ELEMTYPE
    - add_exact_object_address
    - Assert
    - CStringGetTextDatum
    - ARR_NDIM
    - ereport
    - PointerGetDatum
    - new_object_addresses
    - SysCacheGetAttrNotNull
    - recordDependencyOnExpr
    - errdetail
    - SearchSysCache3
    - check_valid_polymorphic_signature
    - recordDependencyOnOwner
    - GETSTRUCT
    - recordDependencyOnCurrentExtension
    - strcmp
    - DatumGetPointer
    - pgstat_create_function
    - OidIsValid
    - errmsg_plural
    - lfirst
    - CatalogTupleUpdate
    - get_func_input_arg_names
    - GetNewOidWithIndex
    - errcode
    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:561,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_proc.c:562,1
    - Dst: exprType
      Src: /src/postgres/src/backend/catalog/pg_proc.c:564,1
    - Dst: exprType
      Src: /src/postgres/src/backend/catalog/pg_proc.c:564,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:565,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:566,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:567,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/pg_proc.c:569,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/catalog/pg_proc.c:571,1
    - Dst: lnext
      Src: /src/postgres/src/backend/catalog/pg_proc.c:572,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 559
    functionDepth: 2
    functionLinenumber: 559
    functionLinenumberEnd: 573
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_proc.c
    functionUses: 346
    functionsReached:
    - exprType
    - lfirst
    - errmsg
    - lnext
    - ereport
    - errhint
    - format_procedure
    - errcode
    linkageType: ''
    returnType: void
    signature: void foreach(oldlc, oldDefaults)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_proc.c:650,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_proc.c:651,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 648
    functionDepth: 1
    functionLinenumber: 648
    functionLinenumberEnd: 652
    functionName: foreach_oid
    functionSourceFile: /src/postgres/src/backend/catalog/pg_proc.c
    functionUses: 0
    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:748,1
    - Dst: CheckFunctionValidatorAccess
      Src: /src/postgres/src/backend/catalog/pg_proc.c:753,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/catalog/pg_proc.c:754,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/pg_proc.c:761,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:761,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_proc.c:762,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_proc.c:763,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_proc.c:765,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/pg_proc.c:766,1
    - Dst: fmgr_internal_function
      Src: /src/postgres/src/backend/catalog/pg_proc.c:768,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:769,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:770,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:771,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_proc.c:774,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/catalog/pg_proc.c:776,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 745
    functionDepth: 1
    functionLinenumber: 745
    functionLinenumberEnd: 777
    functionName: fmgr_internal_validator
    functionSourceFile: /src/postgres/src/backend/catalog/pg_proc.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - ReleaseSysCache
    - HeapTupleIsValid
    - PG_RETURN_VOID
    - TextDatumGetCString
    - SysCacheGetAttrNotNull
    - ereport
    - SearchSysCache1
    - fmgr_internal_function
    - PG_GETARG_OID
    - elog
    - CheckFunctionValidatorAccess
    - 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:791,1
    - Dst: CheckFunctionValidatorAccess
      Src: /src/postgres/src/backend/catalog/pg_proc.c:798,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/catalog/pg_proc.c:799,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/pg_proc.c:807,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:807,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_proc.c:808,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_proc.c:809,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_proc.c:811,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/pg_proc.c:812,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_proc.c:814,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/pg_proc.c:815,1
    - Dst: load_external_function
      Src: /src/postgres/src/backend/catalog/pg_proc.c:817,1
    - Dst: fetch_finfo_record
      Src: /src/postgres/src/backend/catalog/pg_proc.c:818,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_proc.c:820,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/catalog/pg_proc.c:822,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 788
    functionDepth: 1
    functionLinenumber: 788
    functionLinenumberEnd: 823
    functionName: fmgr_c_validator
    functionSourceFile: /src/postgres/src/backend/catalog/pg_proc.c
    functionUses: 0
    functionsReached:
    - ReleaseSysCache
    - load_external_function
    - HeapTupleIsValid
    - PG_RETURN_VOID
    - TextDatumGetCString
    - SysCacheGetAttrNotNull
    - SearchSysCache1
    - PG_GETARG_OID
    - elog
    - fetch_finfo_record
    - CheckFunctionValidatorAccess
    - 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:834,1
    - Dst: CheckFunctionValidatorAccess
      Src: /src/postgres/src/backend/catalog/pg_proc.c:848,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/catalog/pg_proc.c:849,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/pg_proc.c:851,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_proc.c:851,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_proc.c:852,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_proc.c:853,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_proc.c:854,1
    - Dst: get_typtype
      Src: /src/postgres/src/backend/catalog/pg_proc.c:858,1
    - Dst: IsPolymorphicType
      Src: /src/postgres/src/backend/catalog/pg_proc.c:861,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:862,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:863,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:864,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/pg_proc.c:865,1
    - Dst: get_typtype
      Src: /src/postgres/src/backend/catalog/pg_proc.c:872,1
    - Dst: IsPolymorphicType
      Src: /src/postgres/src/backend/catalog/pg_proc.c:874,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_proc.c:877,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:878,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_proc.c:879,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/pg_proc.c:880,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_proc.c:887,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/pg_proc.c:888,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_proc.c:893,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/pg_proc.c:902,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:908,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/pg_proc.c:908,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/pg_proc.c:909,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/pg_proc.c:910,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/pg_proc.c:910,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/pg_proc.c:912,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/catalog/pg_proc.c:917,1
    - Dst: AcquireRewriteLocks
      Src: /src/postgres/src/backend/catalog/pg_proc.c:926,1
    - Dst: pg_rewrite_query
      Src: /src/postgres/src/backend/catalog/pg_proc.c:927,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/pg_proc.c:928,1
    - Dst: pg_parse_query
      Src: /src/postgres/src/backend/catalog/pg_proc.c:942,1
    - Dst: prepare_sql_fn_parse_info
      Src: /src/postgres/src/backend/catalog/pg_proc.c:954,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/catalog/pg_proc.c:958,1
    - Dst: pg_analyze_and_rewrite_withcb
      Src: /src/postgres/src/backend/catalog/pg_proc.c:961,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/pg_proc.c:966,1
    - Dst: check_sql_fn_statements
      Src: /src/postgres/src/backend/catalog/pg_proc.c:977,1
    - Dst: get_func_result_type
      Src: /src/postgres/src/backend/catalog/pg_proc.c:979,1
    - Dst: check_sql_fn_retval
      Src: /src/postgres/src/backend/catalog/pg_proc.c:981,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_proc.c:990,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/catalog/pg_proc.c:992,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 56
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 831
    functionDepth: 6
    functionLinenumber: 831
    functionLinenumberEnd: 993
    functionName: fmgr_sql_validator
    functionSourceFile: /src/postgres/src/backend/catalog/pg_proc.c
    functionUses: 0
    functionsReached:
    - HeapTupleIsValid
    - SysCacheGetAttrNotNull
    - castNode
    - check_sql_fn_statements
    - pg_rewrite_query
    - get_typtype
    - SysCacheGetAttr
    - pg_analyze_and_rewrite_withcb
    - pg_parse_query
    - NameStr
    - ReleaseSysCache
    - AcquireRewriteLocks
    - GETSTRUCT
    - PG_GETARG_OID
    - get_func_result_type
    - CheckFunctionValidatorAccess
    - errmsg
    - lfirst_node
    - linitial
    - PG_RETURN_VOID
    - format_type_be
    - IsA
    - prepare_sql_fn_parse_info
    - IsPolymorphicType
    - elog
    - lappend
    - ObjectIdGetDatum
    - stringToNode
    - TextDatumGetCString
    - ereport
    - list_make1
    - SearchSysCache1
    - check_sql_fn_retval
    - errcode
    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:917,1
    - Dst: AcquireRewriteLocks
      Src: /src/postgres/src/backend/catalog/pg_proc.c:926,1
    - Dst: pg_rewrite_query
      Src: /src/postgres/src/backend/catalog/pg_proc.c:927,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/pg_proc.c:928,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 915
    functionDepth: 6
    functionLinenumber: 915
    functionLinenumberEnd: 929
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_proc.c
    functionUses: 346
    functionsReached:
    - pg_rewrite_query
    - lappend
    - lfirst_node
    - AcquireRewriteLocks
    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:958,1
    - Dst: pg_analyze_and_rewrite_withcb
      Src: /src/postgres/src/backend/catalog/pg_proc.c:961,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/pg_proc.c:966,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 956
    functionDepth: 6
    functionLinenumber: 956
    functionLinenumberEnd: 968
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_proc.c
    functionUses: 346
    functionsReached:
    - lappend
    - pg_analyze_and_rewrite_withcb
    - 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:1004,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1007,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 998
    functionDepth: 1
    functionLinenumber: 998
    functionLinenumberEnd: 1009
    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:1035,1
    - Dst: getinternalerrposition
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1038,1
    - Dst: match_prosrc_to_query
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1049,1
    - Dst: errposition
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1064,1
    - Dst: internalerrposition
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1066,1
    - Dst: internalerrquery
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1067,1
    - Dst: errposition
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1075,1
    - Dst: internalerrposition
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1076,1
    - Dst: internalerrquery
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1077,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - prosrc
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1081
      start: 1022
    functionDepth: 1
    functionLinenumber: 1022
    functionLinenumberEnd: 1081
    functionName: function_parse_error_transpose
    functionSourceFile: /src/postgres/src/backend/catalog/pg_proc.c
    functionUses: 2
    functionsReached:
    - match_prosrc_to_query
    - internalerrposition
    - errposition
    - getinternalerrposition
    - internalerrquery
    - geterrposition
    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:1099,1
    - Dst: strlen
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1100,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1108,1
    - Dst: pg_mbstrlen_with_len
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1118,1
    - Dst: match_prosrc_to_literal
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1122,1
    - Dst: pg_mbstrlen_with_len
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1131,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 3
    argNames:
    - prosrc
    - queryText
    - cursorpos
    argTypes:
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1137
      start: 1089
    functionDepth: 1
    functionLinenumber: 1089
    functionLinenumberEnd: 1137
    functionName: match_prosrc_to_query
    functionSourceFile: /src/postgres/src/backend/catalog/pg_proc.c
    functionUses: 1
    functionsReached:
    - pg_mbstrlen_with_len
    - match_prosrc_to_literal
    - strncmp
    - strlen
    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
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1184,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1185,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 4
    argNames:
    - prosrc
    - literal
    - cursorpos
    - newcursorpos
    argTypes:
    - char*
    - char*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1202
      start: 1147
    functionDepth: 1
    functionLinenumber: 1147
    functionLinenumberEnd: 1202
    functionName: match_prosrc_to_literal
    functionSourceFile: /src/postgres/src/backend/catalog/pg_proc.c
    functionUses: 1
    functionsReached:
    - strncmp
    - pg_mblen
    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:1207,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1213,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_proc.c:1215,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - datum
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1204
    functionDepth: 6
    functionLinenumber: 1204
    functionLinenumberEnd: 1217
    functionName: oid_array_to_list
    functionSourceFile: /src/postgres/src/backend/catalog/pg_proc.c
    functionUses: 2
    functionsReached:
    - lappend_oid
    - DatumGetArrayTypeP
    - deconstruct_array_builtin
    linkageType: ''
    returnType: List
    signature: 'List *

      oid_array_to_list(Datum datum)'
  - 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:
    - new_object_addresses
    - aclcheck_error_type
    - BoolGetDatum
    - HeapTupleIsValid
    - free_object_addresses
    - errdetail
    - GetUserId
    - object_aclcheck
    - ReleaseSysCache
    - check_valid_polymorphic_signature
    - errdetail_internal
    - lookup_agg_function
    - memcmp
    - table_open
    - Int32GetDatum
    - GETSTRUCT
    - heap_modify_tuple
    - CatalogTupleInsert
    - check_valid_internal_signature
    - LookupOperName
    - ObjectAddressSet
    - memcpy
    - Int16GetDatum
    - errmsg
    - heap_form_tuple
    - NameListToString
    - format_type_be
    - elog
    - IsBinaryCoercible
    - OidIsValid
    - errmsg_plural
    - table_close
    - ObjectIdGetDatum
    - ProcedureCreate
    - AGGKIND_IS_ORDERED_SET
    - func_strict
    - add_exact_object_address
    - Assert
    - CStringGetTextDatum
    - CatalogTupleUpdate
    - record_object_address_dependencies
    - ereport
    - PointerGetDatum
    - SearchSysCache1
    - CharGetDatum
    - errcode
    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:849,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:856,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:857,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:858,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:859,1
    - Dst: func_signature_string
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:860,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:863,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:864,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:865,1
    - Dst: func_signature_string
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:866,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:878,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:879,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:880,1
    - Dst: func_signature_string
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:881,1
    - Dst: enforce_generic_type_consistency
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:889,1
    - Dst: IsBinaryCoercible
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:901,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:902,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:903,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:904,1
    - Dst: func_signature_string
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:905,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:910,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:910,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:912,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/catalog/pg_aggregate.c:912,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: 915
      start: 826
    functionDepth: 1
    functionLinenumber: 826
    functionLinenumberEnd: 915
    functionName: lookup_agg_function
    functionSourceFile: /src/postgres/src/backend/catalog/pg_aggregate.c
    functionUses: 1
    functionsReached:
    - errmsg
    - GetUserId
    - enforce_generic_type_consistency
    - func_get_detail
    - aclcheck_error
    - get_func_name
    - func_signature_string
    - ereport
    - IsBinaryCoercible
    - OidIsValid
    - errcode
    - object_aclcheck
    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: 6
    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:119,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/pg_enum.c:129,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/pg_enum.c:142,1
    - Dst: qsort
      Src: /src/postgres/src/backend/catalog/pg_enum.c:149,1
    - Dst: CatalogOpenIndexes
      Src: /src/postgres/src/backend/catalog/pg_enum.c:152,1
    - Dst: Min
      Src: /src/postgres/src/backend/catalog/pg_enum.c:155,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/pg_enum.c:157,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/catalog/pg_enum.c:159,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_enum.c:159,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/pg_enum.c:165,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_enum.c:165,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/catalog/pg_enum.c:166,1
    - Dst: strlen
      Src: /src/postgres/src/backend/catalog/pg_enum.c:172,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_enum.c:173,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_enum.c:174,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_enum.c:175,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_enum.c:176,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/catalog/pg_enum.c:179,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_enum.c:181,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:184,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:185,1
    - Dst: Float4GetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:186,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/pg_enum.c:188,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:189,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/catalog/pg_enum.c:191,1
    - Dst: CatalogTuplesMultiInsertWithInfo
      Src: /src/postgres/src/backend/catalog/pg_enum.c:197,1
    - Dst: CatalogTuplesMultiInsertWithInfo
      Src: /src/postgres/src/backend/catalog/pg_enum.c:207,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_enum.c:211,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/catalog/pg_enum.c:213,1
    - Dst: CatalogCloseIndexes
      Src: /src/postgres/src/backend/catalog/pg_enum.c:214,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_enum.c:215,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 46
    argCount: 2
    argNames:
    - enumTypeOid
    - vals
    argTypes:
    - Oid
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 83
    functionDepth: 3
    functionLinenumber: 83
    functionLinenumberEnd: 216
    functionName: EnumValuesCreate
    functionSourceFile: /src/postgres/src/backend/catalog/pg_enum.c
    functionUses: 0
    functionsReached:
    - NameGetDatum
    - GetCurrentTransactionNestLevel
    - CatalogTuplesMultiInsertWithInfo
    - list_length
    - CatalogOpenIndexes
    - errdetail
    - strlen
    - Min
    - pfree
    - CatalogCloseIndexes
    - Float4GetDatum
    - table_open
    - ExecStoreVirtualTuple
    - ExecClearTuple
    - errmsg
    - qsort
    - ExecDropSingleTupleTableSlot
    - strVal
    - palloc
    - table_close
    - lfirst
    - ObjectIdGetDatum
    - namestrcpy
    - memset
    - RelationGetDescr
    - palloc0
    - hash_search
    - MakeSingleTupleTableSlot
    - ereport
    - init_uncommitted_enum_types
    - GetNewOidWithIndex
    - errcode
    linkageType: ''
    returnType: void
    signature: void EnumValuesCreate(Oid enumTypeOid, List *vals)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/pg_enum.c:165,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_enum.c:165,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/catalog/pg_enum.c:166,1
    - Dst: strlen
      Src: /src/postgres/src/backend/catalog/pg_enum.c:172,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_enum.c:173,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_enum.c:174,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_enum.c:175,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_enum.c:176,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/catalog/pg_enum.c:179,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_enum.c:181,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:184,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:185,1
    - Dst: Float4GetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:186,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/pg_enum.c:188,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:189,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/catalog/pg_enum.c:191,1
    - Dst: CatalogTuplesMultiInsertWithInfo
      Src: /src/postgres/src/backend/catalog/pg_enum.c:197,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 163
    functionDepth: 3
    functionLinenumber: 163
    functionLinenumberEnd: 203
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_enum.c
    functionUses: 346
    functionsReached:
    - errmsg
    - errcode
    - NameGetDatum
    - namestrcpy
    - Float4GetDatum
    - memset
    - ObjectIdGetDatum
    - CatalogTuplesMultiInsertWithInfo
    - ereport
    - palloc0
    - ExecStoreVirtualTuple
    - strVal
    - ExecClearTuple
    - errdetail
    - lfirst
    - strlen
    linkageType: ''
    returnType: void
    signature: void foreach(lc, vals)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_enum.c:231,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_enum.c:233,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:236,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_enum.c:238,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_enum.c:241,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_enum.c:241,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_enum.c:243,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_enum.c:246,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_enum.c:248,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - enumTypeOid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 223
    functionDepth: 3
    functionLinenumber: 223
    functionLinenumberEnd: 249
    functionName: EnumValuesDelete
    functionSourceFile: /src/postgres/src/backend/catalog/pg_enum.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - ScanKeyInit
    - systable_endscan
    - table_close
    - CatalogTupleDelete
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void EnumValuesDelete(Oid enumTypeOid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/postgres/src/backend/catalog/pg_enum.c:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 266
    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:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 283
    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:311,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_enum.c:312,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_enum.c:313,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_enum.c:314,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_enum.c:315,1
    - Dst: LockDatabaseObject
      Src: /src/postgres/src/backend/catalog/pg_enum.c:326,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/pg_enum.c:333,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:334,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:335,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_enum.c:336,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_enum.c:338,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_enum.c:341,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_enum.c:342,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_enum.c:343,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_enum.c:348,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_enum.c:349,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_enum.c:350,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_enum.c:354,1
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/catalog/pg_enum.c:360,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:361,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/pg_enum.c:365,1
    - Dst: qsort
      Src: /src/postgres/src/backend/catalog/pg_enum.c:369,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_enum.c:379,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_enum.c:397,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/pg_enum.c:399,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_enum.c:399,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_enum.c:403,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_enum.c:404,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_enum.c:405,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_enum.c:407,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_enum.c:439,1
    - Dst: RenumberEnumType
      Src: /src/postgres/src/backend/catalog/pg_enum.c:446,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_enum.c:448,1
    - Dst: ReleaseCatCacheList
      Src: /src/postgres/src/backend/catalog/pg_enum.c:449,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_enum.c:460,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_enum.c:461,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_enum.c:462,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_enum.c:463,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_enum.c:471,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_enum.c:472,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_enum.c:473,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/pg_enum.c:492,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_enum.c:505,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_enum.c:562,1
    - Dst: ReleaseCatCacheList
      Src: /src/postgres/src/backend/catalog/pg_enum.c:563,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_enum.c:566,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:567,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:568,1
    - Dst: Float4GetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:569,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/pg_enum.c:570,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:571,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_enum.c:572,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_enum.c:572,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_enum.c:573,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_enum.c:574,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_enum.c:576,1
    - Dst: GetCurrentTransactionNestLevel
      Src: /src/postgres/src/backend/catalog/pg_enum.c:589,1
    - Dst: EnumTypeUncommitted
      Src: /src/postgres/src/backend/catalog/pg_enum.c:590,1
    - Dst: init_uncommitted_enum_values
      Src: /src/postgres/src/backend/catalog/pg_enum.c:595,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/catalog/pg_enum.c:598,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: 599
      start: 291
    functionDepth: 5
    functionLinenumber: 291
    functionLinenumberEnd: 599
    functionName: AddEnumLabel
    functionSourceFile: /src/postgres/src/backend/catalog/pg_enum.c
    functionUses: 0
    functionsReached:
    - NameGetDatum
    - GetCurrentTransactionNestLevel
    - LockDatabaseObject
    - HeapTupleIsValid
    - errdetail
    - strlen
    - pfree
    - init_uncommitted_enum_values
    - NameStr
    - RenumberEnumType
    - SearchSysCache2
    - ReleaseSysCache
    - table_open
    - Float4GetDatum
    - CatalogTupleInsert
    - heap_freetuple
    - GETSTRUCT
    - CStringGetDatum
    - strcmp
    - errmsg
    - heap_form_tuple
    - qsort
    - EnumTypeUncommitted
    - OidIsValid
    - palloc
    - table_close
    - ObjectIdGetDatum
    - namestrcpy
    - memset
    - RelationGetDescr
    - ereport
    - hash_search
    - SearchSysCacheList1
    - GetNewOidWithIndex
    - ReleaseCatCacheList
    - errcode
    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:621,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_enum.c:622,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_enum.c:623,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_enum.c:624,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_enum.c:625,1
    - Dst: LockDatabaseObject
      Src: /src/postgres/src/backend/catalog/pg_enum.c:635,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_enum.c:637,1
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/catalog/pg_enum.c:640,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_enum.c:641,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_enum.c:654,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/pg_enum.c:655,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_enum.c:655,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/pg_enum.c:657,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_enum.c:657,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_enum.c:661,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_enum.c:662,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_enum.c:663,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_enum.c:666,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_enum.c:667,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_enum.c:668,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/catalog/pg_enum.c:672,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_enum.c:673,1
    - Dst: ReleaseCatCacheList
      Src: /src/postgres/src/backend/catalog/pg_enum.c:675,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/pg_enum.c:678,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_enum.c:679,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_enum.c:680,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_enum.c:682,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 3
    argNames:
    - enumTypeOid
    - oldVal
    - newVal
    argTypes:
    - Oid
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 606
    functionDepth: 3
    functionLinenumber: 606
    functionLinenumberEnd: 683
    functionName: RenameEnumLabel
    functionSourceFile: /src/postgres/src/backend/catalog/pg_enum.c
    functionUses: 0
    functionsReached:
    - errmsg
    - NameStr
    - namestrcpy
    - table_open
    - ObjectIdGetDatum
    - LockDatabaseObject
    - CatalogTupleUpdate
    - heap_freetuple
    - GETSTRUCT
    - ereport
    - table_close
    - ReleaseCatCacheList
    - SearchSysCacheList1
    - heap_copytuple
    - strcmp
    - errdetail
    - errcode
    - strlen
    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:699,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - typ_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 689
    functionDepth: 1
    functionLinenumber: 689
    functionLinenumberEnd: 701
    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:717,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - enum_id
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 707
    functionDepth: 1
    functionLinenumber: 707
    functionLinenumberEnd: 719
    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: 735
      start: 725
    functionDepth: 0
    functionLinenumber: 725
    functionLinenumberEnd: 735
    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:776,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_enum.c:777,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_enum.c:784,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_enum.c:787,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/pg_enum.c:791,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - pg_enum
    - existing
    - nelems
    argTypes:
    - Relation
    - HeapTuple*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 760
    functionDepth: 2
    functionLinenumber: 760
    functionLinenumberEnd: 792
    functionName: RenumberEnumType
    functionSourceFile: /src/postgres/src/backend/catalog/pg_enum.c
    functionUses: 1
    functionsReached:
    - heap_freetuple
    - CommandCounterIncrement
    - CatalogTupleUpdate
    - GETSTRUCT
    - heap_copytuple
    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:801,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_enum.c:802,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 796
    functionDepth: 1
    functionLinenumber: 796
    functionLinenumberEnd: 810
    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:818,1
    - Dst: hash_get_num_entries
      Src: /src/postgres/src/backend/catalog/pg_enum.c:820,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 812
    functionDepth: 1
    functionLinenumber: 812
    functionLinenumberEnd: 824
    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:835,1
    - Dst: EstimateUncommittedEnumsSpace
      Src: /src/postgres/src/backend/catalog/pg_enum.c:835,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/catalog/pg_enum.c:843,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/catalog/pg_enum.c:844,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/catalog/pg_enum.c:857,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/catalog/pg_enum.c:858,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_enum.c:869,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - space
    - size
    argTypes:
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 826
    functionDepth: 2
    functionLinenumber: 826
    functionLinenumberEnd: 870
    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:877,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_enum.c:878,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_enum.c:885,1
    - Dst: init_uncommitted_enum_types
      Src: /src/postgres/src/backend/catalog/pg_enum.c:888,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/catalog/pg_enum.c:891,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_enum.c:893,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_enum.c:896,1
    - Dst: init_uncommitted_enum_values
      Src: /src/postgres/src/backend/catalog/pg_enum.c:899,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/catalog/pg_enum.c:902,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_enum.c:904,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - space
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 872
    functionDepth: 2
    functionLinenumber: 872
    functionLinenumberEnd: 906
    functionName: RestoreUncommittedEnums
    functionSourceFile: /src/postgres/src/backend/catalog/pg_enum.c
    functionUses: 1
    functionsReached:
    - init_uncommitted_enum_values
    - Assert
    - hash_search
    - init_uncommitted_enum_types
    - OidIsValid
    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: 5
    functionLinenumber: 50
    functionLinenumberEnd: 397
    functionName: CreateConstraintEntry
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - NameGetDatum
    - new_object_addresses
    - BoolGetDatum
    - free_object_addresses
    - ObjectAddressSubSet
    - CatalogTupleInsert
    - table_open
    - ObjectAddressSet
    - Max
    - Int16GetDatum
    - heap_form_tuple
    - InvokeObjectPostCreateHookArg
    - recordDependencyOnSingleRelExpr
    - OidIsValid
    - table_close
    - palloc
    - ObjectIdGetDatum
    - add_exact_object_address
    - Assert
    - construct_array_builtin
    - namestrcpy
    - CStringGetTextDatum
    - record_object_address_dependencies
    - RelationGetDescr
    - PointerGetDatum
    - CharGetDatum
    - GetNewOidWithIndex
    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: 3
    functionLinenumber: 411
    functionLinenumberEnd: 447
    functionName: ConstraintNameIsUsed
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - ScanKeyInit
    - CStringGetDatum
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    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: 3
    functionLinenumber: 456
    functionLinenumberEnd: 485
    functionName: ConstraintNameExists
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - ScanKeyInit
    - CStringGetDatum
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    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: 3
    functionLinenumber: 512
    functionLinenumberEnd: 580
    functionName: ChooseConstraintName
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - pfree
    - systable_beginscan
    - table_open
    - ObjectIdGetDatum
    - HeapTupleIsValid
    - systable_getnext
    - snprintf
    - table_close
    - ScanKeyInit
    - CStringGetDatum
    - strlcpy
    - makeObjectName
    - strcmp
    - systable_endscan
    - lfirst
    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: 346
    functionsReached:
    - strcmp
    - lfirst
    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: 3
    functionLinenumber: 591
    functionLinenumberEnd: 633
    functionName: findNotNullConstraintAttnum
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - extractNotNullColumn
    - GETSTRUCT
    - ScanKeyInit
    - heap_copytuple
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    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: 4
    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: 3
    functionLinenumber: 657
    functionLinenumberEnd: 695
    functionName: findDomainNotNullConstraint
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - GETSTRUCT
    - ScanKeyInit
    - heap_copytuple
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    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:
    - ARR_ELEMTYPE
    - Assert
    - ARR_DIMS
    - DatumGetArrayTypeP
    - ARR_DATA_PTR
    - ARR_NDIM
    - SysCacheGetAttrNotNull
    - GETSTRUCT
    - elog
    - ARR_HASNULL
    linkageType: ''
    returnType: AttrNumber
    signature: AttrNumber extractNotNullColumn(HeapTuple constrTup)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: findNotNullConstraintAttnum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:746,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:747,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:753,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:754,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:761,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:762,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:763,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:764,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:764,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:765,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:773,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:774,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:775,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:776,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:776,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:777,1
    - Dst: pg_add_s16_overflow
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:782,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:784,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:785,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:786,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:796,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:798,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 5
    argNames:
    - relid
    - attnum
    - is_local
    - is_no_inherit
    - is_notvalid
    argTypes:
    - Oid
    - AttrNumber
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 740
    functionDepth: 4
    functionLinenumber: 740
    functionLinenumberEnd: 804
    functionName: AdjustNotNullInheritance
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - errmsg
    - NameStr
    - get_rel_name
    - table_open
    - HeapTupleIsValid
    - CatalogTupleUpdate
    - GETSTRUCT
    - findNotNullConstraintAttnum
    - ereport
    - errhint
    - table_close
    - pg_add_s16_overflow
    - errcode
    linkageType: ''
    returnType: bool
    signature: "bool AdjustNotNullInheritance(Oid relid, AttrNumber attnum,\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:825,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:826,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:829,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:830,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:833,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:833,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:835,1
    - Dst: extractNotNullColumn
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:843,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:849,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:853,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:853,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:862,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:868,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: list_make1
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:874,1
    - Dst: makeString
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:874,1
    - Dst: get_attname
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:874,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:880,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:884,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:885,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 41
    argCount: 3
    argNames:
    - relid
    - cooked
    - include_noinh
    argTypes:
    - Oid
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 816
    functionDepth: 6
    functionLinenumber: 816
    functionLinenumberEnd: 888
    functionName: RelationGetNotNullConstraints
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - makeString
    - systable_beginscan
    - NameStr
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - extractNotNullColumn
    - GETSTRUCT
    - ScanKeyInit
    - pstrdup
    - list_make1
    - get_attname
    - table_close
    - lappend
    - palloc
    - makeNode
    - systable_endscan
    - ObjectIdGetDatum
    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:901,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:903,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:903,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:904,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:905,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:906,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:911,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:919,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:932,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:933,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:934,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:935,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:936,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:938,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:941,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:942,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:945,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:947,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:949,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:953,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:955,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:965,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:968,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:971,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:972,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 1
    argNames:
    - conId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 894
    functionDepth: 3
    functionLinenumber: 894
    functionLinenumberEnd: 973
    functionName: RemoveConstraintById
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - ReleaseSysCache
    - table_open
    - heap_freetuple
    - HeapTupleIsValid
    - CatalogTupleUpdate
    - SearchSysCacheCopy1
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - OidIsValid
    - table_close
    - RelationGetRelationName
    - CatalogTupleDelete
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void RemoveConstraintById(Oid conId)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:992,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:994,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:994,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:995,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:996,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:997,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1002,1
    - Dst: ConstraintNameIsUsed
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1003,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1006,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1007,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1008,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1009,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1010,1
    - Dst: ConstraintNameIsUsed
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1011,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1014,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1015,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1016,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1017,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1020,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1022,1
    - Dst: InvokeObjectPostAlterHook
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1024,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1026,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1027,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - conId
    - newname
    argTypes:
    - Oid
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 985
    functionDepth: 4
    functionLinenumber: 985
    functionLinenumberEnd: 1028
    functionName: RenameConstraintById
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - get_rel_name
    - namestrcpy
    - table_open
    - heap_freetuple
    - HeapTupleIsValid
    - CatalogTupleUpdate
    - format_type_be
    - SearchSysCacheCopy1
    - GETSTRUCT
    - ereport
    - elog
    - OidIsValid
    - InvokeObjectPostAlterHook
    - table_close
    - ConstraintNameIsUsed
    - ObjectIdGetDatum
    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:1046,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1048,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1051,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1052,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1055,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1057,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1060,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1060,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1062,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1065,1
    - Dst: object_address_present
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1067,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1073,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1074,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1078,1
    - Dst: InvokeObjectPostAlterHook
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1087,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1089,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1092,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1094,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: 1095
      start: 1037
    functionDepth: 3
    functionLinenumber: 1037
    functionLinenumberEnd: 1095
    functionName: AlterConstraintNamespaces
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - add_exact_object_address
    - systable_beginscan
    - ObjectAddressSet
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - CatalogTupleUpdate
    - GETSTRUCT
    - ScanKeyInit
    - object_address_present
    - heap_copytuple
    - InvokeObjectPostAlterHook
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    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:1118,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1119,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1119,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1120,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1121,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1122,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1123,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1124,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1127,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1129,1
    - Dst: pg_add_s16_overflow
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1133,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1135,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1136,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1137,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1141,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1143,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1145,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1146,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1148,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1149,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1158,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1160,1
    - Dst: deleteDependencyRecordsForClass
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1162,1
    - Dst: deleteDependencyRecordsForClass
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1165,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1170,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1171,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 3
    argNames:
    - childConstrId
    - parentConstrId
    - childTableId
    argTypes:
    - Oid
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1172
      start: 1106
    functionDepth: 4
    functionLinenumber: 1106
    functionLinenumberEnd: 1172
    functionName: ConstraintSetParentConstraint
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - HeapTupleIsValid
    - deleteDependencyRecordsForClass
    - ObjectAddressSet
    - table_open
    - ReleaseSysCache
    - GETSTRUCT
    - recordDependencyOn
    - pg_add_s16_overflow
    - errmsg
    - elog
    - OidIsValid
    - table_close
    - ObjectIdGetDatum
    - Assert
    - CatalogTupleUpdate
    - ereport
    - SearchSysCache1
    - heap_copytuple
    - errcode
    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:1189,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1191,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1194,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1195,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1198,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1199,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1202,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1204,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1208,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1208,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1209,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1211,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1214,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1215,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1216,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1217,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1218,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1220,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - relid
    - conname
    - missing_ok
    argTypes:
    - Oid
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1223
      start: 1180
    functionDepth: 3
    functionLinenumber: 1180
    functionLinenumberEnd: 1223
    functionName: get_relation_constraint_oid
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - systable_beginscan
    - get_rel_name
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - GETSTRUCT
    - ScanKeyInit
    - ereport
    - CStringGetDatum
    - OidIsValid
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    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:1250,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1252,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1255,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1256,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1259,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1260,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1263,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1265,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1269,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1269,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1274,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1277,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1278,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1286,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1287,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1288,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1290,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1291,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1292,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1293,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1298,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1304,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1307,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1308,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1309,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1310,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1311,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1313,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: 1316
      start: 1237
    functionDepth: 4
    functionLinenumber: 1237
    functionLinenumberEnd: 1316
    functionName: get_relation_constraint_attnos
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - HeapTupleIsValid
    - ARR_DIMS
    - get_rel_name
    - DatumGetArrayTypeP
    - heap_getattr
    - table_open
    - GETSTRUCT
    - ScanKeyInit
    - CStringGetDatum
    - errmsg
    - elog
    - ARR_HASNULL
    - OidIsValid
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    - bms_add_member
    - ARR_ELEMTYPE
    - systable_beginscan
    - ARR_DATA_PTR
    - systable_getnext
    - ARR_NDIM
    - RelationGetDescr
    - ereport
    - errcode
    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:1335,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1337,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1341,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1342,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1344,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1348,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1362,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1364,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - relationId
    - indexId
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1366
      start: 1326
    functionDepth: 3
    functionLinenumber: 1326
    functionLinenumberEnd: 1366
    functionName: get_relation_idx_constraint_oid
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - systable_getnext
    - GETSTRUCT
    - ScanKeyInit
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    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:1382,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1384,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1387,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1388,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1391,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1392,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1395,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1397,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1401,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1401,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1402,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1404,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1407,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1408,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1409,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1410,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1411,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1413,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - typid
    - conname
    - missing_ok
    argTypes:
    - Oid
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1416
      start: 1373
    functionDepth: 3
    functionLinenumber: 1373
    functionLinenumberEnd: 1416
    functionName: get_domain_constraint_oid
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - systable_beginscan
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - format_type_be
    - GETSTRUCT
    - ScanKeyInit
    - ereport
    - CStringGetDatum
    - OidIsValid
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    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:1445,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1447,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1450,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1452,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1455,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1455,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1457,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1478,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1479,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1481,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1482,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1483,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1484,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1485,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1487,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1488,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1489,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1490,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1495,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1498,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1504,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1506,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 27
    argCount: 3
    argNames:
    - relid
    - deferrableOk
    - constraintOid
    argTypes:
    - Oid
    - bool
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1509
      start: 1432
    functionDepth: 4
    functionLinenumber: 1432
    functionLinenumberEnd: 1509
    functionName: get_primary_key_attnos
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - HeapTupleIsValid
    - ARR_DIMS
    - DatumGetArrayTypeP
    - heap_getattr
    - table_open
    - GETSTRUCT
    - ScanKeyInit
    - elog
    - ARR_HASNULL
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    - bms_add_member
    - ARR_ELEMTYPE
    - systable_beginscan
    - ARR_DATA_PTR
    - systable_getnext
    - ARR_NDIM
    - RelationGetDescr
    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:1534,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1536,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1537,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1538,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1539,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1540,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1541,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1543,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1544,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1544,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1545,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1546,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1548,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1550,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1551,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1552,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1553,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1554,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1555,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1556,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1556,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1557,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1558,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1562,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1564,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1566,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1567,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1568,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1569,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1570,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1571,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1571,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1572,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1573,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1578,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1580,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1581,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1582,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1583,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1584,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1585,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1586,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1586,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1587,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1588,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1593,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1595,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1596,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1597,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1598,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1599,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1600,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1601,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1601,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1602,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1603,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1608,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1618,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1619,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1620,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1621,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1622,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1623,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1624,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1624,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1625,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1626,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: 1633
      start: 1518
    functionDepth: 1
    functionLinenumber: 1518
    functionLinenumberEnd: 1633
    functionName: DeconstructFkConstraintRow
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - ARR_ELEMTYPE
    - pfree
    - ARR_DIMS
    - DatumGetArrayTypeP
    - ARR_DATA_PTR
    - ARR_NDIM
    - SysCacheGetAttrNotNull
    - elog
    - ARR_HASNULL
    - SysCacheGetAttr
    - memcpy
    - 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:1659,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1662,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1663,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1664,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1665,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1669,1
    - Dst: GetOperatorFromCompareType
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1677,1
    - Dst: GetOperatorFromCompareType
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1688,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1703,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 4
    argNames:
    - opclass
    - containedbyoperoid
    - aggedcontainedbyoperoid
    - intersectoperoid
    argTypes:
    - Oid
    - Oid*
    - Oid*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1705
      start: 1648
    functionDepth: 1
    functionLinenumber: 1648
    functionLinenumberEnd: 1705
    functionName: FindFKPeriodOpers
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - errmsg
    - GetOperatorFromCompareType
    - ereport
    - elog
    - errdetail
    - errcode
    - get_opclass_opfamily_and_input_type
    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:1734,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1742,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1744,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1747,1
    - Dst: bms_is_subset
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1751,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1754,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: 1759
      start: 1722
    functionDepth: 6
    functionLinenumber: 1722
    functionLinenumberEnd: 1759
    functionName: check_functional_grouping
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 0
    functionsReached:
    - bms_is_subset
    - lappend_oid
    - IsA
    - get_primary_key_attnos
    - lfirst
    - bms_add_member
    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:1742,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1744,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/catalog/pg_constraint.c:1747,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1749
      start: 1740
    functionDepth: 3
    functionLinenumber: 1740
    functionLinenumberEnd: 1749
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_constraint.c
    functionUses: 346
    functionsReached:
    - IsA
    - lfirst
    - bms_add_member
    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:
    - hash_create
    - Assert
    - hash_search
    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:
    - smgrcreate
    - Assert
    - ProcNumberForTempRelations
    - XLogIsNeeded
    - smgropen
    - IsInParallelMode
    - GetCurrentTransactionNestLevel
    - AddPendingSync
    - log_smgrcreate
    - elog
    - MemoryContextAlloc
    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:
    - XLogInsert
    - XLogRegisterData
    - 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
    - MemoryContextAlloc
    - GetCurrentTransactionNestLevel
    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:
    - pfree
    - RelFileLocatorEquals
    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:
    - Assert
    - START_CRIT_SECTION
    - smgrtruncate
    - XLogBeginInsert
    - FreeSpaceMapPrepareTruncateRel
    - XLogInsert
    - RelationGetSmgr
    - visibilitymap_prepare_truncate
    - RelationPreTruncate
    - XLogFlush
    - smgrexists
    - FreeSpaceMapVacuumRange
    - XLogRegisterData
    - END_CRIT_SECTION
    - BlockNumberIsValid
    - smgrnblocks
    - RelationNeedsWAL
    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:
    - errmsg
    - smgr_bulk_start_smgr
    - PageIsVerified
    - errcode
    - XLogIsNeeded
    - CHECK_FOR_INTERRUPTS
    - smgr_bulk_get_buf
    - relpathbackend
    - smgr_bulk_write
    - pgstat_prepare_report_checksum_failure
    - ereport
    - smgr_bulk_finish
    - pgstat_report_checksum_failures_in_db
    - smgrnblocks
    - 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:
    - mul_size
    - hash_get_num_entries
    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_seq_search
    - hash_create
    - hash_seq_init
    - hash_destroy
    - hash_search
    - MemSet
    - hash_get_num_entries
    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
      Src: /src/postgres/src/backend/catalog/storage.c:710,1
    - Dst: repalloc
      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:
    - pfree
    - smgrdounlinkall
    - smgropen
    - GetCurrentTransactionNestLevel
    - smgrclose
    - repalloc
    - palloc
    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
      Src: /src/postgres/src/backend/catalog/storage.c:832,1
    - Dst: repalloc
      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:
    - CreateFakeRelcacheEntry
    - pfree
    - Assert
    - hash_seq_search
    - smgropen
    - GetCurrentTransactionNestLevel
    - BlockNumberIsValid
    - log_newpage_range
    - hash_seq_init
    - smgrdosyncall
    - hash_search
    - smgrexists
    - repalloc
    - palloc
    - FreeFakeRelcacheEntry
    - smgrnblocks
    - AssertPendingSyncs_RelationCache
    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
      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
    - 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:
    - CreateFakeRelcacheEntry
    - smgropen
    - XLogRecGetData
    - smgrtruncate
    - START_CRIT_SECTION
    - FreeSpaceMapPrepareTruncateRel
    - XLogTruncateRelation
    - XLogRecHasAnyBlockRefs
    - XLogRecGetInfo
    - BlockNumberIsValid
    - FreeFakeRelcacheEntry
    - XLogFlush
    - visibilitymap_prepare_truncate
    - FreeSpaceMapVacuumRange
    - smgrexists
    - elog
    - smgrnblocks
    - smgrcreate
    - Assert
    - 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:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - relOid
    - reloptions
    - lockmode
    argTypes:
    - Oid
    - Datum
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 61
    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:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - relOid
    - reloptions
    - lockmode
    - OIDOldToast
    argTypes:
    - Oid
    - Datum
    - LOCKMODE
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 68
    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:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - relOid
    - reloptions
    argTypes:
    - Oid
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 75
    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:83,1
    - Dst: create_toast_table
      Src: /src/postgres/src/backend/catalog/toasting.c:86,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/toasting.c:89,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: 90
      start: 77
    functionDepth: 3
    functionLinenumber: 77
    functionLinenumberEnd: 90
    functionName: CheckAndCreateToastTable
    functionSourceFile: /src/postgres/src/backend/catalog/toasting.c
    functionUses: 3
    functionsReached:
    - create_toast_table
    - table_close
    - table_open
    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:102,1
    - Dst: makeRangeVar
      Src: /src/postgres/src/backend/catalog/toasting.c:102,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/toasting.c:106,1
    - Dst: create_toast_table
      Src: /src/postgres/src/backend/catalog/toasting.c:110,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/toasting.c:112,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/toasting.c:115,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - relName
    - toastOid
    - toastIndexOid
    argTypes:
    - char*
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 97
    functionDepth: 4
    functionLinenumber: 97
    functionLinenumberEnd: 116
    functionName: BootstrapToastTable
    functionSourceFile: /src/postgres/src/backend/catalog/toasting.c
    functionUses: 0
    functionsReached:
    - create_toast_table
    - elog
    - table_openrv
    - table_close
    - makeRangeVar
    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:131,1
    - Dst: needs_toast_table
      Src: /src/postgres/src/backend/catalog/toasting.c:161,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/toasting.c:184,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/toasting.c:193,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/catalog/toasting.c:198,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/catalog/toasting.c:200,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/catalog/toasting.c:204,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/catalog/toasting.c:205,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/catalog/toasting.c:209,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/catalog/toasting.c:213,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/toasting.c:223,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:228,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: isTempOrTempToastNamespace
      Src: /src/postgres/src/backend/catalog/toasting.c:236,1
    - Dst: GetTempToastNamespace
      Src: /src/postgres/src/backend/catalog/toasting.c:237,1
    - Dst: RelationIsMapped
      Src: /src/postgres/src/backend/catalog/toasting.c:245,1
    - Dst: heap_create_with_catalog
      Src: /src/postgres/src/backend/catalog/toasting.c:247,1
    - Dst: table_relation_toast_am
      Src: /src/postgres/src/backend/catalog/toasting.c:254,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/toasting.c:268,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/toasting.c:271,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/toasting.c:274,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/catalog/toasting.c:288,1
    - Dst: index_create
      Src: /src/postgres/src/backend/catalog/toasting.c:321,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/catalog/toasting.c:324,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/toasting.c:330,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/toasting.c:335,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/toasting.c:337,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/toasting.c:340,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/toasting.c:340,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/toasting.c:341,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/toasting.c:342,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/toasting.c:344,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/toasting.c:346,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/toasting.c:355,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/toasting.c:358,1
    - Dst: systable_inplace_update_begin
      Src: /src/postgres/src/backend/catalog/toasting.c:359,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/toasting.c:361,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/toasting.c:362,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/toasting.c:364,1
    - Dst: systable_inplace_update_finish
      Src: /src/postgres/src/backend/catalog/toasting.c:366,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/toasting.c:369,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/toasting.c:371,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/toasting.c:377,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/toasting.c:386,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/toasting.c:392,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 92
    argCount: 7
    argNames:
    - rel
    - toastOid
    - toastIndexOid
    - reloptions
    - lockmode
    - check
    - OIDOldToast
    argTypes:
    - Relation
    - Oid
    - Oid
    - Datum
    - LOCKMODE
    - bool
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 126
    functionDepth: 4
    functionLinenumber: 126
    functionLinenumberEnd: 395
    functionName: create_toast_table
    functionSourceFile: /src/postgres/src/backend/catalog/toasting.c
    functionUses: 2
    functionsReached:
    - HeapTupleIsValid
    - snprintf
    - SearchSysCacheCopy1
    - GetTempToastNamespace
    - makeNode
    - table_relation_toast_am
    - RelationGetRelid
    - table_open
    - index_create
    - heap_freetuple
    - GETSTRUCT
    - ScanKeyInit
    - recordDependencyOn
    - systable_inplace_update_finish
    - CreateTemplateTupleDesc
    - needs_toast_table
    - CommandCounterIncrement
    - TupleDescAttr
    - RelationIsMapped
    - TupleDescInitEntry
    - elog
    - heap_create_with_catalog
    - OidIsValid
    - table_close
    - ObjectIdGetDatum
    - Assert
    - list_make2
    - CatalogTupleUpdate
    - systable_inplace_update_begin
    - IsBootstrapProcessingMode
    - isTempOrTempToastNamespace
    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:413,1
    - Dst: IsCatalogRelation
      Src: /src/postgres/src/backend/catalog/toasting.c:422,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/toasting.c:422,1
    - Dst: table_relation_needs_toast_table
      Src: /src/postgres/src/backend/catalog/toasting.c:426,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 400
    functionDepth: 1
    functionLinenumber: 400
    functionLinenumberEnd: 427
    functionName: needs_toast_table
    functionSourceFile: /src/postgres/src/backend/catalog/toasting.c
    functionUses: 3
    functionsReached:
    - table_relation_needs_toast_table
    - IsBootstrapProcessingMode
    - IsCatalogRelation
    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:54,1
    - Dst: nodeToString
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:59,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:64,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:66,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:67,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:67,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:68,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:69,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:71,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:72,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:78,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:81,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:81,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:82,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:83,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:89,1
    - Dst: SearchSysCacheCopy2
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:90,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:91,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:91,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:92,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:93,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:94,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:95,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:96,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:99,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:102,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:102,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:105,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:107,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:108,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:117,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:120,1
    - Dst: recordDependencyOnSingleRelExpr
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:126,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:126,1
    - Dst: InvokeObjectPostCreateHookArg
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:138,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:139,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: 142
      start: 34
    functionDepth: 7
    functionLinenumber: 34
    functionLinenumberEnd: 142
    functionName: StoreAttrDefault
    functionSourceFile: /src/postgres/src/backend/catalog/pg_attrdef.c
    functionUses: 0
    functionsReached:
    - BoolGetDatum
    - HeapTupleIsValid
    - nodeToString
    - pfree
    - RelationGetRelid
    - table_open
    - CatalogTupleInsert
    - heap_freetuple
    - heap_modify_tuple
    - GETSTRUCT
    - recordDependencyOn
    - Int16GetDatum
    - DatumGetPointer
    - heap_form_tuple
    - InvokeObjectPostCreateHookArg
    - elog
    - recordDependencyOnSingleRelExpr
    - table_close
    - ObjectIdGetDatum
    - CStringGetTextDatum
    - CatalogTupleUpdate
    - RelationGetDescr
    - GetNewOidWithIndex
    - SearchSysCacheCopy2
    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:161,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:163,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:166,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:167,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:170,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:172,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:176,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:176,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:179,1
    - Dst: performDeletion
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:185,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:191,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:192,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:195,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: 197
      start: 151
    functionDepth: 3
    functionLinenumber: 151
    functionLinenumberEnd: 197
    functionName: RemoveAttrDefault
    functionSourceFile: /src/postgres/src/backend/catalog/pg_attrdef.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - performDeletion
    - GETSTRUCT
    - ScanKeyInit
    - elog
    - table_close
    - Int16GetDatum
    - systable_endscan
    - ObjectIdGetDatum
    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:219,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:222,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:225,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:227,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:230,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:231,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:232,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:234,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:235,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:238,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:241,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:243,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:244,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:247,1
    - Dst: SearchSysCacheCopy2
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:249,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:250,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:251,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:252,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:253,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:256,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:258,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:264,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:267,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 1
    argNames:
    - attrdefId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 206
    functionDepth: 3
    functionLinenumber: 206
    functionLinenumberEnd: 268
    functionName: RemoveAttrDefaultById
    functionSourceFile: /src/postgres/src/backend/catalog/pg_attrdef.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - systable_getnext
    - HeapTupleIsValid
    - CatalogTupleUpdate
    - GETSTRUCT
    - ScanKeyInit
    - relation_close
    - elog
    - systable_endscan
    - relation_open
    - SearchSysCacheCopy2
    - table_close
    - Int16GetDatum
    - CatalogTupleDelete
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void RemoveAttrDefaultById(Oid attrdefId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:286,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:287,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:291,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:292,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:296,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:297,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:300,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:300,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:302,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:307,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:308,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - relid
    - attnum
    argTypes:
    - Oid
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 277
    functionDepth: 3
    functionLinenumber: 277
    functionLinenumberEnd: 311
    functionName: GetAttrDefaultOid
    functionSourceFile: /src/postgres/src/backend/catalog/pg_attrdef.c
    functionUses: 1
    functionsReached:
    - systable_beginscan
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - GETSTRUCT
    - ScanKeyInit
    - table_close
    - Int16GetDatum
    - systable_endscan
    - ObjectIdGetDatum
    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:328,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:329,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:332,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:333,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:336,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:336,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:338,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:345,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_attrdef.c:346,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - attrdefoid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 319
    functionDepth: 3
    functionLinenumber: 319
    functionLinenumberEnd: 349
    functionName: GetAttrDefaultColumnAddress
    functionSourceFile: /src/postgres/src/backend/catalog/pg_attrdef.c
    functionUses: 2
    functionsReached:
    - systable_beginscan
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - GETSTRUCT
    - ScanKeyInit
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    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:
    - table_open
    - elog
    - OidIsValid
    - table_close
    - get_partition_parent_worker
    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: 3
    functionLinenumber: 84
    functionLinenumberEnd: 119
    functionName: get_partition_parent_worker
    functionSourceFile: /src/postgres/src/backend/catalog/partition.c
    functionUses: 1
    functionsReached:
    - systable_beginscan
    - Int32GetDatum
    - systable_getnext
    - HeapTupleIsValid
    - GETSTRUCT
    - ScanKeyInit
    - systable_endscan
    - ObjectIdGetDatum
    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:
    - get_partition_ancestors_worker
    - table_close
    - table_open
    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:
    - lappend_oid
    - get_partition_ancestors_worker
    - get_partition_parent_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:
    - ReleaseSysCache
    - RelationGetIndexList
    - HeapTupleIsValid
    - get_partition_parent
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - lfirst_oid
    - ObjectIdGetDatum
    - list_free
    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: 346
    functionsReached:
    - ReleaseSysCache
    - HeapTupleIsValid
    - get_partition_parent
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - lfirst_oid
    - ObjectIdGetDatum
    - list_free
    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
    - build_attrmap_by_name
    - RelationGetForm
    - 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: 1
    functionsReached:
    - bms_overlap
    - RelationGetPartitionKey
    - get_partition_col_attnum
    - list_head
    - lnext
    - get_partition_natts
    - pull_varattnos
    - bms_is_member
    - lfirst
    - get_partition_exprs
    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:
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - SearchSysCache1
    - 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:
    - table_open
    - heap_freetuple
    - HeapTupleIsValid
    - CatalogTupleUpdate
    - SearchSysCacheCopy1
    - GETSTRUCT
    - elog
    - table_close
    - ObjectIdGetDatum
    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:
    - make_ands_explicit
    - makeBoolExpr
    - list_make1
    - eval_const_expressions
    - make_ands_implicit
    - canonicalize_qual
    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:
    - strcmp
    - NameStr
    - lengthof
    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:304,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:304,1
    - Dst: IsCatalogNamespace
      Src: /src/postgres/src/backend/catalog/heap.c:316,1
    - Dst: IsToastNamespace
      Src: /src/postgres/src/backend/catalog/heap.c:317,1
    - Dst: IsNormalProcessingMode
      Src: /src/postgres/src/backend/catalog/heap.c:318,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:319,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:320,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:321,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/heap.c:322,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:323,1
    - Dst: RELKIND_HAS_TABLESPACE
      Src: /src/postgres/src/backend/catalog/heap.c:332,1
    - Dst: RELKIND_HAS_STORAGE
      Src: /src/postgres/src/backend/catalog/heap.c:336,1
    - Dst: RelFileNumberIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:344,1
    - Dst: RelationBuildLocalRelation
      Src: /src/postgres/src/backend/catalog/heap.c:363,1
    - Dst: RELKIND_HAS_TABLE_AM
      Src: /src/postgres/src/backend/catalog/heap.c:384,1
    - Dst: table_relation_set_new_filelocator
      Src: /src/postgres/src/backend/catalog/heap.c:385,1
    - Dst: RELKIND_HAS_STORAGE
      Src: /src/postgres/src/backend/catalog/heap.c:388,1
    - Dst: RelationCreateStorage
      Src: /src/postgres/src/backend/catalog/heap.c:389,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:391,1
    - Dst: recordDependencyOnTablespace
      Src: /src/postgres/src/backend/catalog/heap.c:400,1
    - Dst: pgstat_create_relation
      Src: /src/postgres/src/backend/catalog/heap.c:404,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: 407
      start: 284
    functionDepth: 3
    functionLinenumber: 284
    functionLinenumberEnd: 407
    functionName: heap_create
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - errcode
    - IsToastNamespace
    - RELKIND_HAS_TABLE_AM
    - errdetail
    - IsCatalogNamespace
    - recordDependencyOnTablespace
    - table_relation_set_new_filelocator
    - RELKIND_HAS_TABLESPACE
    - errmsg
    - pgstat_create_relation
    - RELKIND_HAS_STORAGE
    - get_namespace_name
    - RelationBuildLocalRelation
    - OidIsValid
    - IsNormalProcessingMode
    - Assert
    - ereport
    - RelFileNumberIsValid
    - RelationCreateStorage
    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: 5
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:461,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:462,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:463,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/heap.c:476,1
    - Dst: SystemAttributeByName
      Src: /src/postgres/src/backend/catalog/heap.c:478,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/heap.c:478,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:479,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:480,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:481,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/heap.c:482,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/heap.c:493,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/heap.c:493,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/heap.c:493,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: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:495,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:496,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:497,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/heap.c:498,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/heap.c:498,1
    - Dst: CheckAttributeType
      Src: /src/postgres/src/backend/catalog/heap.c:507,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/heap.c:507,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/heap.c:507,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/heap.c:508,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/heap.c:509,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/heap.c:511,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 18
    argCount: 3
    argNames:
    - tupdesc
    - relkind
    - flags
    argTypes:
    - TupleDesc
    - char
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 451
    functionDepth: 2
    functionLinenumber: 451
    functionLinenumberEnd: 513
    functionName: CheckAttributeNamesTypes
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - errmsg
    - NameStr
    - TupleDescAttr
    - ereport
    - CheckAttributeType
    - strcmp
    - errcode
    - SystemAttributeByName
    linkageType: ''
    returnType: void
    signature: "void CheckAttributeNamesTypes(TupleDesc tupdesc, char relkind,\n\t\t\t\t\t\t
      int flags)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: get_typtype
      Src: /src/postgres/src/backend/catalog/heap.c:549,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/catalog/heap.c:553,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:572,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:573,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:575,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/heap.c:576,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:578,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:579,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:593,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:594,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:595,1
    - Dst: CheckAttributeType
      Src: /src/postgres/src/backend/catalog/heap.c:600,1
    - Dst: getBaseType
      Src: /src/postgres/src/backend/catalog/heap.c:600,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/heap.c:619,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:620,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:621,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:622,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/heap.c:623,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/heap.c:625,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/catalog/heap.c:627,1
    - Dst: get_typ_typrelid
      Src: /src/postgres/src/backend/catalog/heap.c:627,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/heap.c:629,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/heap.c:633,1
    - Dst: CheckAttributeType
      Src: /src/postgres/src/backend/catalog/heap.c:637,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/heap.c:637,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/catalog/heap.c:643,1
    - Dst: list_delete_last
      Src: /src/postgres/src/backend/catalog/heap.c:645,1
    - Dst: CheckAttributeType
      Src: /src/postgres/src/backend/catalog/heap.c:652,1
    - Dst: get_range_subtype
      Src: /src/postgres/src/backend/catalog/heap.c:652,1
    - Dst: get_range_collation
      Src: /src/postgres/src/backend/catalog/heap.c:653,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:657,1
    - Dst: get_element_type
      Src: /src/postgres/src/backend/catalog/heap.c:657,1
    - Dst: CheckAttributeType
      Src: /src/postgres/src/backend/catalog/heap.c:662,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:671,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:672,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:673,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:674,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:680,1
    - Dst: type_is_collatable
      Src: /src/postgres/src/backend/catalog/heap.c:680,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:683,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:684,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:686,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/heap.c:687,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/heap.c:688,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:690,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:691,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:692,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/heap.c:693,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/heap.c:694,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 41
    argCount: 5
    argNames:
    - attname
    - atttypid
    - attcollation
    - containing_rowtypes
    - flags
    argTypes:
    - char*
    - Oid
    - Oid
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 543
    functionDepth: 6
    functionLinenumber: 543
    functionLinenumberEnd: 696
    functionName: CheckAttributeType
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 2
    functionsReached:
    - get_typ_typrelid
    - relation_close
    - errhint
    - get_typtype
    - errdetail
    - NameStr
    - get_range_collation
    - relation_open
    - type_is_collatable
    - get_range_subtype
    - CheckAttributeType
    - errmsg
    - list_delete_last
    - format_type_be
    - TupleDescAttr
    - list_member_oid
    - OidIsValid
    - get_element_type
    - check_stack_depth
    - lappend_oid
    - RelationGetDescr
    - ereport
    - errcode
    - getBaseType
    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:730,1
    - Dst: Min
      Src: /src/postgres/src/backend/catalog/heap.c:733,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/heap.c:735,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/catalog/heap.c:737,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/heap.c:741,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/catalog/heap.c:744,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/heap.c:746,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:750,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:752,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:754,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:755,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:756,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:757,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:758,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:759,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:760,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:761,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:762,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:763,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:764,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:765,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:766,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:767,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:768,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:769,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:770,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:771,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:772,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/catalog/heap.c:794,1
    - Dst: CatalogOpenIndexes
      Src: /src/postgres/src/backend/catalog/heap.c:806,1
    - Dst: CatalogTuplesMultiInsertWithInfo
      Src: /src/postgres/src/backend/catalog/heap.c:811,1
    - Dst: CatalogCloseIndexes
      Src: /src/postgres/src/backend/catalog/heap.c:820,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/catalog/heap.c:822,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/heap.c:823,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: 824
      start: 716
    functionDepth: 3
    functionLinenumber: 716
    functionLinenumberEnd: 824
    functionName: InsertPgAttributeTuples
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - NameGetDatum
    - BoolGetDatum
    - CatalogTuplesMultiInsertWithInfo
    - CatalogOpenIndexes
    - Min
    - pfree
    - CatalogCloseIndexes
    - Int32GetDatum
    - ExecStoreVirtualTuple
    - ExecClearTuple
    - Int16GetDatum
    - ExecDropSingleTupleTableSlot
    - TupleDescAttr
    - palloc
    - ObjectIdGetDatum
    - memset
    - RelationGetDescr
    - MakeSingleTupleTableSlot
    - CharGetDatum
    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: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:847,1
    - Dst: CatalogOpenIndexes
      Src: /src/postgres/src/backend/catalog/heap.c:849,1
    - Dst: InsertPgAttributeTuples
      Src: /src/postgres/src/backend/catalog/heap.c:851,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/heap.c:856,1
    - Dst: ObjectAddressSubSet
      Src: /src/postgres/src/backend/catalog/heap.c:859,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/heap.c:860,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/heap.c:861,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:864,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/heap.c:867,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/heap.c:869,1
    - Dst: CreateTupleDesc
      Src: /src/postgres/src/backend/catalog/heap.c:882,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/catalog/heap.c:882,1
    - Dst: InsertPgAttributeTuples
      Src: /src/postgres/src/backend/catalog/heap.c:884,1
    - Dst: FreeTupleDesc
      Src: /src/postgres/src/backend/catalog/heap.c:885,1
    - Dst: CatalogCloseIndexes
      Src: /src/postgres/src/backend/catalog/heap.c:891,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:893,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - new_rel_oid
    - tupdesc
    - relkind
    argTypes:
    - Oid
    - TupleDesc
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 833
    functionDepth: 4
    functionLinenumber: 833
    functionLinenumberEnd: 894
    functionName: AddNewAttributeTuples
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - CatalogCloseIndexes
    - ObjectAddressSubSet
    - ObjectAddressSet
    - table_open
    - CreateTupleDesc
    - lengthof
    - TupleDescAttr
    - recordDependencyOn
    - OidIsValid
    - CatalogOpenIndexes
    - FreeTupleDesc
    - table_close
    - InsertPgAttributeTuples
    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:922,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/heap.c:923,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:925,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:926,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:927,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:928,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:929,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:930,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:931,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:932,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:933,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:934,1
    - Dst: Float4GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:935,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:936,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:937,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:938,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:939,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:940,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:941,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:942,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:943,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:944,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:945,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:946,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:947,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:948,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:949,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:950,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:951,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:952,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:953,1
    - Dst: TransactionIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:954,1
    - Dst: MultiXactIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:955,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/heap.c:968,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/heap.c:968,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/heap.c:971,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/heap.c:973,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: 974
      start: 909
    functionDepth: 5
    functionLinenumber: 909
    functionLinenumberEnd: 974
    functionName: InsertPgClassTuple
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - NameGetDatum
    - heap_form_tuple
    - Float4GetDatum
    - CatalogTupleInsert
    - memset
    - Int32GetDatum
    - BoolGetDatum
    - RelationGetDescr
    - heap_freetuple
    - MultiXactIdGetDatum
    - CharGetDatum
    - TransactionIdGetDatum
    - Int16GetDatum
    - ObjectIdGetDatum
    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:1031,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: 1033
      start: 983
    functionDepth: 6
    functionLinenumber: 983
    functionLinenumberEnd: 1033
    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:1052,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: 1084
      start: 1042
    functionDepth: 7
    functionLinenumber: 1042
    functionLinenumberEnd: 1084
    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:1156,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:1161,1
    - Dst: IsNormalProcessingMode
      Src: /src/postgres/src/backend/catalog/heap.c:1161,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/heap.c:1161,1
    - Dst: CheckAttributeNamesTypes
      Src: /src/postgres/src/backend/catalog/heap.c:1168,1
    - Dst: get_relname_relid
      Src: /src/postgres/src/backend/catalog/heap.c:1175,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:1177,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:1178,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:1179,1
    - Dst: GetSysCacheOid2
      Src: /src/postgres/src/backend/catalog/heap.c:1187,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1188,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1189,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1190,1
    - Dst: moveArrayTypeName
      Src: /src/postgres/src/backend/catalog/heap.c:1192,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:1193,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:1194,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:1195,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/heap.c:1196,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:1205,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1213,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:1222,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:1223,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1228,1
    - Dst: RelFileNumberIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1233,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:1234,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:1235,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:1236,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1244,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:1245,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:1246,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:1247,1
    - Dst: RELKIND_HAS_STORAGE
      Src: /src/postgres/src/backend/catalog/heap.c:1252,1
    - Dst: RelFileNumberIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1254,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:1255,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:1256,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:1257,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1265,1
    - Dst: GetNewRelFileNumber
      Src: /src/postgres/src/backend/catalog/heap.c:1266,1
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/catalog/heap.c:1275,1
    - Dst: get_user_default_acl
      Src: /src/postgres/src/backend/catalog/heap.c:1289,1
    - Dst: get_user_default_acl
      Src: /src/postgres/src/backend/catalog/heap.c:1293,1
    - Dst: heap_create
      Src: /src/postgres/src/backend/catalog/heap.c:1313,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:1329,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:1329,1
    - Dst: AssignTypeArrayOid
      Src: /src/postgres/src/backend/catalog/heap.c:1351,1
    - Dst: AddNewRelationType
      Src: /src/postgres/src/backend/catalog/heap.c:1362,1
    - Dst: makeArrayTypeName
      Src: /src/postgres/src/backend/catalog/heap.c:1374,1
    - Dst: TypeCreate
      Src: /src/postgres/src/backend/catalog/heap.c:1376,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/heap.c:1409,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:1414,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:1415,1
    - Dst: AddNewRelationTuple
      Src: /src/postgres/src/backend/catalog/heap.c:1427,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1436,1
    - Dst: AddNewAttributeTuples
      Src: /src/postgres/src/backend/catalog/heap.c:1442,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/heap.c:1461,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/heap.c:1467,1
    - Dst: recordDependencyOnOwner
      Src: /src/postgres/src/backend/catalog/heap.c:1469,1
    - Dst: recordDependencyOnNewAcl
      Src: /src/postgres/src/backend/catalog/heap.c:1471,1
    - Dst: recordDependencyOnCurrentExtension
      Src: /src/postgres/src/backend/catalog/heap.c:1473,1
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/heap.c:1475,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/heap.c:1477,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/heap.c:1478,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/heap.c:1482,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/heap.c:1483,1
    - Dst: RELKIND_HAS_TABLE_AM
      Src: /src/postgres/src/backend/catalog/heap.c:1494,1
    - Dst: OidIsValid
      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: record_object_address_dependencies
      Src: /src/postgres/src/backend/catalog/heap.c:1501,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/heap.c:1502,1
    - Dst: InvokeObjectPostCreateHookArg
      Src: /src/postgres/src/backend/catalog/heap.c:1506,1
    - Dst: StoreConstraints
      Src: /src/postgres/src/backend/catalog/heap.c:1515,1
    - Dst: register_on_commit_action
      Src: /src/postgres/src/backend/catalog/heap.c:1521,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:1527,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:1528,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    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: 1531
      start: 1121
    functionDepth: 8
    functionLinenumber: 1121
    functionLinenumberEnd: 1531
    functionName: heap_create_with_catalog
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 1
    functionsReached:
    - heap_create
    - new_object_addresses
    - RELKIND_HAS_TABLE_AM
    - errhint
    - free_object_addresses
    - LockRelationOid
    - GetNewRelFileNumber
    - pfree
    - AddNewRelationTuple
    - RelationGetRelid
    - table_open
    - get_relname_relid
    - AddNewRelationType
    - ObjectAddressSet
    - recordDependencyOnOwner
    - StoreConstraints
    - recordDependencyOnNewAcl
    - CStringGetDatum
    - recordDependencyOnCurrentExtension
    - errmsg
    - TypeCreate
    - RELKIND_HAS_STORAGE
    - InvokeObjectPostCreateHookArg
    - elog
    - register_on_commit_action
    - AddNewAttributeTuples
    - OidIsValid
    - makeArrayTypeName
    - table_close
    - IsNormalProcessingMode
    - ObjectIdGetDatum
    - add_exact_object_address
    - Assert
    - record_object_address_dependencies
    - IsBootstrapProcessingMode
    - ereport
    - RelFileNumberIsValid
    - CheckAttributeNamesTypes
    - get_user_default_acl
    - PointerGetDatum
    - AssignTypeArrayOid
    - GetSysCacheOid2
    - errcode
    - moveArrayTypeName
    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:1550,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/heap.c:1552,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1555,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/heap.c:1557,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1560,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/heap.c:1560,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/heap.c:1561,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/heap.c:1563,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:1564,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1565
      start: 1542
    functionDepth: 3
    functionLinenumber: 1542
    functionLinenumberEnd: 1565
    functionName: RelationRemoveInheritance
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - ScanKeyInit
    - systable_endscan
    - table_close
    - CatalogTupleDelete
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void RelationRemoveInheritance(Oid relid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:1582,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/heap.c:1584,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1584,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1585,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:1586,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/heap.c:1589,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/heap.c:1591,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:1593,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1594
      start: 1575
    functionDepth: 3
    functionLinenumber: 1575
    functionLinenumberEnd: 1594
    functionName: DeleteRelationTuple
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - ReleaseSysCache
    - table_open
    - HeapTupleIsValid
    - SearchSysCache1
    - elog
    - table_close
    - CatalogTupleDelete
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void DeleteRelationTuple(Oid relid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:1613,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/heap.c:1616,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1619,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/heap.c:1621,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/heap.c:1625,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/heap.c:1626,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/heap.c:1629,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:1630,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1631
      start: 1604
    functionDepth: 3
    functionLinenumber: 1604
    functionLinenumberEnd: 1631
    functionName: DeleteAttributeTuples
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - systable_getnext
    - ScanKeyInit
    - systable_endscan
    - table_close
    - CatalogTupleDelete
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void DeleteAttributeTuples(Oid relid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:1650,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/heap.c:1653,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1656,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/heap.c:1657,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1660,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/heap.c:1662,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/heap.c:1666,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/heap.c:1667,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/heap.c:1670,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:1671,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1672
      start: 1641
    functionDepth: 3
    functionLinenumber: 1641
    functionLinenumberEnd: 1672
    functionName: DeleteSystemAttributeTuples
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - systable_getnext
    - ScanKeyInit
    - systable_endscan
    - table_close
    - Int16GetDatum
    - CatalogTupleDelete
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void DeleteSystemAttributeTuples(Oid relid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: relation_open
      Src: /src/postgres/src/backend/catalog/heap.c:1700,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:1702,1
    - Dst: SearchSysCacheCopy2
      Src: /src/postgres/src/backend/catalog/heap.c:1704,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1705,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1706,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1707,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:1708,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:1710,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/catalog/heap.c:1734,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/heap.c:1736,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/heap.c:1756,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/heap.c:1756,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/heap.c:1759,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:1767,1
    - Dst: RemoveStatistics
      Src: /src/postgres/src/backend/catalog/heap.c:1769,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/catalog/heap.c:1771,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 29
    argCount: 2
    argNames:
    - relid
    - attnum
    argTypes:
    - Oid
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1772
      start: 1682
    functionDepth: 6
    functionLinenumber: 1682
    functionLinenumberEnd: 1772
    functionName: RemoveAttributeById
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - namestrcpy
    - table_open
    - ObjectIdGetDatum
    - HeapTupleIsValid
    - heap_modify_tuple
    - snprintf
    - RelationGetDescr
    - GETSTRUCT
    - CatalogTupleUpdate
    - RemoveStatistics
    - relation_close
    - elog
    - relation_open
    - table_close
    - Int16GetDatum
    - SearchSysCacheCopy2
    linkageType: ''
    returnType: void
    signature: void RemoveAttributeById(Oid relid, AttrNumber attnum)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/heap.c:1801,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1801,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1802,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:1803,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:1804,1
    - Dst: get_partition_parent
      Src: /src/postgres/src/backend/catalog/heap.c:1811,1
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/catalog/heap.c:1812,1
    - Dst: get_default_partition_oid
      Src: /src/postgres/src/backend/catalog/heap.c:1818,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1819,1
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/catalog/heap.c:1820,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/heap.c:1823,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/catalog/heap.c:1828,1
    - Dst: CheckTableNotInUse
      Src: /src/postgres/src/backend/catalog/heap.c:1835,1
    - Dst: CheckTableForSerializableConflictIn
      Src: /src/postgres/src/backend/catalog/heap.c:1843,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:1853,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/heap.c:1855,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1855,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1856,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:1857,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/heap.c:1859,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/heap.c:1861,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:1862,1
    - Dst: RemovePartitionKeyByRelId
      Src: /src/postgres/src/backend/catalog/heap.c:1869,1
    - Dst: update_default_partition_oid
      Src: /src/postgres/src/backend/catalog/heap.c:1876,1
    - Dst: RELKIND_HAS_STORAGE
      Src: /src/postgres/src/backend/catalog/heap.c:1881,1
    - Dst: RelationDropStorage
      Src: /src/postgres/src/backend/catalog/heap.c:1882,1
    - Dst: pgstat_drop_relation
      Src: /src/postgres/src/backend/catalog/heap.c:1885,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/catalog/heap.c:1892,1
    - Dst: RemoveSubscriptionRel
      Src: /src/postgres/src/backend/catalog/heap.c:1897,1
    - Dst: remove_on_commit_action
      Src: /src/postgres/src/backend/catalog/heap.c:1902,1
    - Dst: RelationForgetRelation
      Src: /src/postgres/src/backend/catalog/heap.c:1911,1
    - Dst: RelationRemoveInheritance
      Src: /src/postgres/src/backend/catalog/heap.c:1916,1
    - Dst: RemoveStatistics
      Src: /src/postgres/src/backend/catalog/heap.c:1921,1
    - Dst: DeleteAttributeTuples
      Src: /src/postgres/src/backend/catalog/heap.c:1926,1
    - Dst: DeleteRelationTuple
      Src: /src/postgres/src/backend/catalog/heap.c:1931,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1933,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1940,1
    - Dst: CacheInvalidateRelcacheByRelid
      Src: /src/postgres/src/backend/catalog/heap.c:1941,1
    - Dst: CacheInvalidateRelcacheByRelid
      Src: /src/postgres/src/backend/catalog/heap.c:1947,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 44
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1950
      start: 1783
    functionDepth: 4
    functionLinenumber: 1783
    functionLinenumberEnd: 1950
    functionName: heap_drop_with_catalog
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - CheckTableForSerializableConflictIn
    - HeapTupleIsValid
    - relation_close
    - RelationForgetRelation
    - update_default_partition_oid
    - RemovePartitionKeyByRelId
    - CatalogTupleDelete
    - LockRelationOid
    - ReleaseSysCache
    - table_open
    - RelationDropStorage
    - GETSTRUCT
    - relation_open
    - RemoveSubscriptionRel
    - RELKIND_HAS_STORAGE
    - pgstat_drop_relation
    - remove_on_commit_action
    - elog
    - OidIsValid
    - get_default_partition_oid
    - table_close
    - ObjectIdGetDatum
    - DeleteAttributeTuples
    - RemoveStatistics
    - get_partition_parent
    - DeleteRelationTuple
    - CheckTableNotInUse
    - SearchSysCache1
    - CacheInvalidateRelcacheByRelid
    - RelationRemoveInheritance
    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:1967,1
    - Dst: RelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/catalog/heap.c:1968,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/heap.c:1977,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/heap.c:1978,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/heap.c:1979,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1981,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:1989,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/heap.c:1994,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1995,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:1996,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:1997,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:1998,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:2001,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/heap.c:2006,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/heap.c:2006,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/heap.c:2009,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/heap.c:2011,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/heap.c:2014,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:2021,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2022
      start: 1963
    functionDepth: 6
    functionLinenumber: 1963
    functionLinenumberEnd: 2022
    functionName: RelationClearMissing
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - RelationGetNumberOfAttributes
    - RelationGetRelid
    - table_open
    - memset
    - BoolGetDatum
    - SearchSysCache2
    - HeapTupleIsValid
    - heap_modify_tuple
    - GETSTRUCT
    - RelationGetDescr
    - CatalogTupleUpdate
    - heap_freetuple
    - ReleaseSysCache
    - elog
    - table_close
    - Int16GetDatum
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void RelationClearMissing(Relation rel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:2041,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:2044,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/heap.c:2046,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:2047,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2047,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:2048,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:2049,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:2050,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2051,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:2052,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:2055,1
    - Dst: construct_array
      Src: /src/postgres/src/backend/catalog/heap.c:2055,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:2063,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/heap.c:2069,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/heap.c:2069,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/heap.c:2071,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/heap.c:2074,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:2075,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - rel
    - attnum
    - missingval
    argTypes:
    - Relation
    - AttrNumber
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2076
      start: 2029
    functionDepth: 6
    functionLinenumber: 2029
    functionLinenumberEnd: 2076
    functionName: StoreAttrMissingVal
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - Assert
    - SearchSysCache2
    - RelationGetRelid
    - table_open
    - BoolGetDatum
    - HeapTupleIsValid
    - heap_modify_tuple
    - RelationGetDescr
    - CatalogTupleUpdate
    - GETSTRUCT
    - ReleaseSysCache
    - PointerGetDatum
    - elog
    - construct_array
    - table_close
    - Int16GetDatum
    - ObjectIdGetDatum
    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:2099,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:2104,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:2109,1
    - Dst: SearchSysCacheAttName
      Src: /src/postgres/src/backend/catalog/heap.c:2110,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:2111,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:2112,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:2114,1
    - Dst: OidFunctionCall3
      Src: /src/postgres/src/backend/catalog/heap.c:2117,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:2118,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:2119,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:2120,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:2123,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/heap.c:2128,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/heap.c:2128,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/heap.c:2130,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/heap.c:2133,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:2134,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:2135,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 3
    argNames:
    - relid
    - attname
    - value
    argTypes:
    - Oid
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2136
      start: 2085
    functionDepth: 6
    functionLinenumber: 2085
    functionLinenumberEnd: 2136
    functionName: SetAttrMissing
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - ReleaseSysCache
    - table_open
    - Int32GetDatum
    - HeapTupleIsValid
    - BoolGetDatum
    - heap_modify_tuple
    - RelationGetDescr
    - GETSTRUCT
    - OidFunctionCall3
    - CatalogTupleUpdate
    - elog
    - CStringGetDatum
    - table_close
    - ObjectIdGetDatum
    - SearchSysCacheAttName
    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:2160,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/catalog/heap.c:2169,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/heap.c:2170,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/heap.c:2177,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/heap.c:2180,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2200,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2201,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2202,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2203,1
    - Dst: CreateConstraintEntry
      Src: /src/postgres/src/backend/catalog/heap.c:2209,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/heap.c:2210,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2217,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/heap.c:2243,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: 2246
      start: 2146
    functionDepth: 7
    functionLinenumber: 2146
    functionLinenumberEnd: 2246
    functionName: StoreRelCheck
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - pfree
    - RelationGetRelid
    - nodeToString
    - ereport
    - list_length
    - CreateConstraintEntry
    - RelationGetNamespace
    - palloc
    - RelationGetRelationName
    - lfirst
    - pull_var_clause
    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:2180,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2188
      start: 2178
    functionDepth: 1
    functionLinenumber: 2178
    functionLinenumberEnd: 2188
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 346
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(vl, varList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:2260,1
    - Dst: CreateConstraintEntry
      Src: /src/postgres/src/backend/catalog/heap.c:2263,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/heap.c:2264,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2271,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: 2297
      start: 2253
    functionDepth: 6
    functionLinenumber: 2253
    functionLinenumberEnd: 2297
    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:2323,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/heap.c:2327,1
    - Dst: StoreAttrDefault
      Src: /src/postgres/src/backend/catalog/heap.c:2332,1
    - Dst: StoreRelCheck
      Src: /src/postgres/src/backend/catalog/heap.c:2337,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:2345,1
    - Dst: SetRelationNumChecks
      Src: /src/postgres/src/backend/catalog/heap.c:2351,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - rel
    - cooked_constraints
    - is_internal
    argTypes:
    - Relation
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2352
      start: 2309
    functionDepth: 8
    functionLinenumber: 2309
    functionLinenumberEnd: 2352
    functionName: StoreConstraints
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 1
    functionsReached:
    - SetRelationNumChecks
    - CommandCounterIncrement
    - StoreRelCheck
    - elog
    - StoreAttrDefault
    - 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:2327,1
    - Dst: StoreAttrDefault
      Src: /src/postgres/src/backend/catalog/heap.c:2332,1
    - Dst: StoreRelCheck
      Src: /src/postgres/src/backend/catalog/heap.c:2337,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:2345,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2348
      start: 2325
    functionDepth: 8
    functionLinenumber: 2325
    functionLinenumberEnd: 2348
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 346
    functionsReached:
    - StoreAttrDefault
    - StoreRelCheck
    - elog
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, cooked_constraints)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/heap.c:2408,1
    - Dst: make_parsestate
      Src: /src/postgres/src/backend/catalog/heap.c:2419,1
    - Dst: addRangeTableEntryForRelation
      Src: /src/postgres/src/backend/catalog/heap.c:2421,1
    - Dst: addNSItemToQuery
      Src: /src/postgres/src/backend/catalog/heap.c:2427,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/heap.c:2434,1
    - Dst: cookDefault
      Src: /src/postgres/src/backend/catalog/heap.c:2437,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/heap.c:2439,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/heap.c:2456,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/heap.c:2457,1
    - Dst: StoreAttrDefault
      Src: /src/postgres/src/backend/catalog/heap.c:2460,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/heap.c:2462,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:2473,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:2492,1
    - Dst: cookConstraint
      Src: /src/postgres/src/backend/catalog/heap.c:2498,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2499,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:2503,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/catalog/heap.c:2509,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/heap.c:2522,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2523,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2524,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2525,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:2530,1
    - Dst: MergeWithExistingConstraint
      Src: /src/postgres/src/backend/catalog/heap.c:2538,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/catalog/heap.c:2563,1
    - Dst: list_union
      Src: /src/postgres/src/backend/catalog/heap.c:2566,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/heap.c:2568,1
    - Dst: get_attname
      Src: /src/postgres/src/backend/catalog/heap.c:2569,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2569,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2570,1
    - Dst: ChooseConstraintName
      Src: /src/postgres/src/backend/catalog/heap.c:2575,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2575,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/heap.c:2578,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:2582,1
    - Dst: StoreRelCheck
      Src: /src/postgres/src/backend/catalog/heap.c:2589,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/heap.c:2596,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:2607,1
    - Dst: get_attnum
      Src: /src/postgres/src/backend/catalog/heap.c:2617,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2617,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2617,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2617,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2619,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2620,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2621,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2622,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2622,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2622,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2624,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2625,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2626,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2627,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2627,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:2629,1
    - Dst: AdjustNotNullInheritance
      Src: /src/postgres/src/backend/catalog/heap.c:2637,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2637,1
    - Dst: ConstraintNameIsUsed
      Src: /src/postgres/src/backend/catalog/heap.c:2648,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2649,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2651,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2652,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2653,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2654,1
    - Dst: ChooseConstraintName
      Src: /src/postgres/src/backend/catalog/heap.c:2658,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2658,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2659,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2659,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/heap.c:2661,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:2663,1
    - Dst: StoreRelNotNull
      Src: /src/postgres/src/backend/catalog/heap.c:2666,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/heap.c:2672,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:2684,1
    - Dst: SetRelationNumChecks
      Src: /src/postgres/src/backend/catalog/heap.c:2695,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: 2698
      start: 2384
    functionDepth: 8
    functionLinenumber: 2384
    functionLinenumberEnd: 2698
    functionName: AddRelationNewConstraints
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - SetRelationNumChecks
    - cookDefault
    - castNode
    - list_length
    - get_attname
    - ChooseConstraintName
    - StoreAttrDefault
    - addRangeTableEntryForRelation
    - RelationGetRelationName
    - list_union
    - NameStr
    - RelationGetRelid
    - StoreRelCheck
    - strcmp
    - ConstraintNameIsUsed
    - errmsg
    - cookConstraint
    - make_parsestate
    - StoreRelNotNull
    - linitial
    - TupleDescAttr
    - IsA
    - get_attnum
    - lappend
    - MergeWithExistingConstraint
    - RelationGetNamespace
    - strVal
    - palloc
    - addNSItemToQuery
    - Assert
    - stringToNode
    - AdjustNotNullInheritance
    - RelationGetDescr
    - ereport
    - errcode
    - pull_var_clause
    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:2434,1
    - Dst: cookDefault
      Src: /src/postgres/src/backend/catalog/heap.c:2437,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/heap.c:2439,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/heap.c:2456,1
    - Dst: castNode
      Src: /src/postgres/src/backend/catalog/heap.c:2457,1
    - Dst: StoreAttrDefault
      Src: /src/postgres/src/backend/catalog/heap.c:2460,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/heap.c:2462,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:2473,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2474
      start: 2432
    functionDepth: 8
    functionLinenumber: 2432
    functionLinenumberEnd: 2474
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 1
    functionsReached:
    - NameStr
    - TupleDescAttr
    - IsA
    - cookDefault
    - castNode
    - lappend
    - StoreAttrDefault
    - palloc
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(RawColumnDefault, colDef, newColDefaults)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:2492,1
    - Dst: cookConstraint
      Src: /src/postgres/src/backend/catalog/heap.c:2498,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2499,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:2503,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/catalog/heap.c:2509,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/heap.c:2522,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2523,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2524,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2525,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:2530,1
    - Dst: MergeWithExistingConstraint
      Src: /src/postgres/src/backend/catalog/heap.c:2538,1
    - Dst: pull_var_clause
      Src: /src/postgres/src/backend/catalog/heap.c:2563,1
    - Dst: list_union
      Src: /src/postgres/src/backend/catalog/heap.c:2566,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/heap.c:2568,1
    - Dst: get_attname
      Src: /src/postgres/src/backend/catalog/heap.c:2569,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2569,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2570,1
    - Dst: ChooseConstraintName
      Src: /src/postgres/src/backend/catalog/heap.c:2575,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2575,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/heap.c:2578,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:2582,1
    - Dst: StoreRelCheck
      Src: /src/postgres/src/backend/catalog/heap.c:2589,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/heap.c:2596,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:2607,1
    - Dst: get_attnum
      Src: /src/postgres/src/backend/catalog/heap.c:2617,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2617,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2617,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2617,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2619,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2620,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2621,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2622,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2622,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2622,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2624,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2625,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2626,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2627,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2627,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:2629,1
    - Dst: AdjustNotNullInheritance
      Src: /src/postgres/src/backend/catalog/heap.c:2637,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2637,1
    - Dst: ConstraintNameIsUsed
      Src: /src/postgres/src/backend/catalog/heap.c:2648,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2649,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2651,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2652,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2653,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2654,1
    - Dst: ChooseConstraintName
      Src: /src/postgres/src/backend/catalog/heap.c:2658,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2658,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2659,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2659,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/heap.c:2661,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:2663,1
    - Dst: StoreRelNotNull
      Src: /src/postgres/src/backend/catalog/heap.c:2666,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/heap.c:2672,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:2684,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 71
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2686
      start: 2482
    functionDepth: 8
    functionLinenumber: 2482
    functionLinenumberEnd: 2686
    functionName: foreach_node
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 15
    functionsReached:
    - list_length
    - get_attname
    - ChooseConstraintName
    - RelationGetRelationName
    - list_union
    - RelationGetRelid
    - StoreRelCheck
    - strcmp
    - ConstraintNameIsUsed
    - errmsg
    - cookConstraint
    - StoreRelNotNull
    - linitial
    - get_attnum
    - lappend
    - MergeWithExistingConstraint
    - RelationGetNamespace
    - strVal
    - palloc
    - Assert
    - stringToNode
    - AdjustNotNullInheritance
    - ereport
    - errcode
    - pull_var_clause
    linkageType: ''
    returnType: void
    signature: void foreach_node(Constraint, cdef, newConstraints)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/heap.c:2522,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2523,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2524,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2525,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2527
      start: 2520
    functionDepth: 1
    functionLinenumber: 2520
    functionLinenumberEnd: 2527
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 1
    functionsReached:
    - errmsg
    - strcmp
    - errcode
    - ereport
    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:2724,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/heap.c:2728,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:2731,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2731,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/heap.c:2732,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:2735,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/heap.c:2736,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:2739,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/heap.c:2741,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:2745,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/heap.c:2745,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:2747,1
    - Dst: fastgetattr
      Src: /src/postgres/src/backend/catalog/heap.c:2755,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:2759,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2760,1
    - Dst: equal
      Src: /src/postgres/src/backend/catalog/heap.c:2761,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/catalog/heap.c:2761,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/heap.c:2761,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2777,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2778,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2779,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2780,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2784,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2785,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2786,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2787,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2795,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2796,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2797,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2798,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:2817,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2818,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2819,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2820,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2823,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2824,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/catalog/heap.c:2827,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:2828,1
    - Dst: pg_add_s16_overflow
      Src: /src/postgres/src/backend/catalog/heap.c:2844,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2846,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2847,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2848,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:2853,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:2865,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/heap.c:2870,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/heap.c:2873,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:2874,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: 2877
      start: 2710
    functionDepth: 3
    functionLinenumber: 2710
    functionLinenumberEnd: 2877
    functionName: MergeWithExistingConstraint
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 2
    functionsReached:
    - HeapTupleIsValid
    - RelationGetRelationName
    - equal
    - RelationGetRelid
    - table_open
    - GETSTRUCT
    - ScanKeyInit
    - CStringGetDatum
    - pg_add_s16_overflow
    - errmsg
    - elog
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    - Assert
    - systable_beginscan
    - stringToNode
    - fastgetattr
    - systable_getnext
    - TextDatumGetCString
    - CatalogTupleUpdate
    - ereport
    - heap_copytuple
    - errcode
    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_length
      Src: /src/postgres/src/backend/catalog/heap.c:2924,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/catalog/heap.c:2931,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:2933,1
    - Dst: get_attnum
      Src: /src/postgres/src/backend/catalog/heap.c:2935,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:2935,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2936,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2936,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2938,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2939,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2940,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2941,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2941,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:2942,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2944,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2945,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2946,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2947,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2947,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/heap.c:2954,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/catalog/heap.c:2958,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/heap.c:2959,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: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2960,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2960,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2963,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2964,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2965,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:2966,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:2966,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/heap.c:2975,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/heap.c:2976,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:2977,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:2978,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:2979,1
    - Dst: list_delete_nth_cell
      Src: /src/postgres/src/backend/catalog/heap.c:2984,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3007,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3008,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3009,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:3010,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:3010,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:3011,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/catalog/heap.c:3014,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/heap.c:3027,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3028,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3029,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3030,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:3032,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:3036,1
    - Dst: ChooseConstraintName
      Src: /src/postgres/src/backend/catalog/heap.c:3039,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:3039,1
    - Dst: get_attname
      Src: /src/postgres/src/backend/catalog/heap.c:3040,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:3040,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/heap.c:3043,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:3045,1
    - Dst: StoreRelNotNull
      Src: /src/postgres/src/backend/catalog/heap.c:3047,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/catalog/heap.c:3051,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/heap.c:3068,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/catalog/heap.c:3074,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:3075,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:3076,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/heap.c:3084,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/catalog/heap.c:3088,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:3089,1
    - Dst: list_delete_nth_cell
      Src: /src/postgres/src/backend/catalog/heap.c:3096,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/heap.c:3107,1
    - Dst: ChooseConstraintName
      Src: /src/postgres/src/backend/catalog/heap.c:3117,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:3117,1
    - Dst: get_attname
      Src: /src/postgres/src/backend/catalog/heap.c:3118,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:3118,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/heap.c:3121,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:3123,1
    - Dst: StoreRelNotNull
      Src: /src/postgres/src/backend/catalog/heap.c:3126,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/catalog/heap.c:3129,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 76
    argCount: 3
    argNames:
    - rel
    - constraints
    - old_notnulls
    argTypes:
    - Relation
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3133
      start: 2893
    functionDepth: 7
    functionLinenumber: 2893
    functionLinenumberEnd: 3133
    functionName: AddRelationNotNullConstraints
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - list_delete_nth_cell
    - lappend_int
    - pstrdup
    - list_length
    - get_attname
    - list_nth_node
    - ChooseConstraintName
    - RelationGetRelationName
    - errdetail
    - RelationGetRelid
    - foreach_delete_current
    - strcmp
    - errmsg
    - StoreRelNotNull
    - linitial
    - get_attnum
    - lappend
    - list_nth
    - strVal
    - RelationGetNamespace
    - Assert
    - ereport
    - errcode
    linkageType: ''
    returnType: List
    signature: "List *\nAddRelationNotNullConstraints(Relation rel, List *constraints,\n\t\t\t\t\t\t\t
      \ List *old_notnulls)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3007,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3008,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3009,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/heap.c:3010,1
    - Dst: linitial
      Src: /src/postgres/src/backend/catalog/heap.c:3010,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:3011,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/catalog/heap.c:3014,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3016
      start: 2998
    functionDepth: 1
    functionLinenumber: 2998
    functionLinenumberEnd: 3016
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 1
    functionsReached:
    - errmsg
    - linitial
    - ereport
    - strVal
    - foreach_delete_current
    - errdetail
    - errcode
    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:3027,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3028,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3029,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3030,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/heap.c:3032,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3033
      start: 3025
    functionDepth: 1
    functionLinenumber: 3025
    functionLinenumberEnd: 3033
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 1
    functionsReached:
    - errmsg
    - ereport
    - strcmp
    - RelationGetRelationName
    - errcode
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(char, thisname, givennames)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/heap.c:3107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3112
      start: 3105
    functionDepth: 0
    functionLinenumber: 3105
    functionLinenumberEnd: 3112
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 1
    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:3152,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/heap.c:3153,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3154,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:3154,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:3155,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:3156,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:3157,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:3158,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/heap.c:3164,1
    - Dst: CacheInvalidateRelcache
      Src: /src/postgres/src/backend/catalog/heap.c:3169,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/heap.c:3172,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:3173,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - rel
    - numchecks
    argTypes:
    - Relation
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3174
      start: 3145
    functionDepth: 3
    functionLinenumber: 3145
    functionLinenumberEnd: 3174
    functionName: SetRelationNumChecks
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 2
    functionsReached:
    - RelationGetRelid
    - table_open
    - heap_freetuple
    - HeapTupleIsValid
    - CatalogTupleUpdate
    - CacheInvalidateRelcache
    - SearchSysCacheCopy1
    - GETSTRUCT
    - elog
    - table_close
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void SetRelationNumChecks(Relation rel, int numchecks)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/heap.c:3186,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/catalog/heap.c:3192,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:3193,1
    - Dst: get_attgenerated
      Src: /src/postgres/src/backend/catalog/heap.c:3198,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3199,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3200,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3201,1
    - Dst: get_attname
      Src: /src/postgres/src/backend/catalog/heap.c:3202,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:3203,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/catalog/heap.c:3204,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3207,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3208,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3209,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:3210,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/catalog/heap.c:3211,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/catalog/heap.c:3217,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3219
      start: 3179
    functionDepth: 1
    functionLinenumber: 3179
    functionLinenumberEnd: 3219
    functionName: check_nested_generated_walker
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - errmsg
    - get_attgenerated
    - expression_tree_walker
    - parser_errposition
    - IsA
    - ereport
    - get_attname
    - OidIsValid
    - rt_fetch
    - errdetail
    - errcode
    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:3224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pstate
    - node
    argTypes:
    - ParseState*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3225
      start: 3221
    functionDepth: 2
    functionLinenumber: 3221
    functionLinenumberEnd: 3225
    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: 3257
      start: 3253
    functionDepth: 0
    functionLinenumber: 3253
    functionLinenumberEnd: 3257
    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:3272,1
    - Dst: check_functions_in_node
      Src: /src/postgres/src/backend/catalog/heap.c:3274,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3275,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3276,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3277,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:3278,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/catalog/heap.c:3279,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/catalog/heap.c:3279,1
    - Dst: exprType
      Src: /src/postgres/src/backend/catalog/heap.c:3290,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3291,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3292,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3293,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:3294,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/catalog/heap.c:3295,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/catalog/heap.c:3295,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/catalog/heap.c:3298,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3299
      start: 3264
    functionDepth: 3
    functionLinenumber: 3264
    functionLinenumberEnd: 3299
    functionName: check_virtual_generated_security_walker
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - errmsg
    - exprType
    - exprLocation
    - expression_tree_walker
    - parser_errposition
    - IsA
    - ereport
    - check_functions_in_node
    - errdetail
    - errcode
    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:3304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pstate
    - node
    argTypes:
    - ParseState*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3305
      start: 3301
    functionDepth: 4
    functionLinenumber: 3301
    functionLinenumberEnd: 3305
    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:3329,1
    - Dst: transformExpr
      Src: /src/postgres/src/backend/catalog/heap.c:3334,1
    - Dst: check_nested_generated
      Src: /src/postgres/src/backend/catalog/heap.c:3339,1
    - Dst: contain_mutable_functions_after_planning
      Src: /src/postgres/src/backend/catalog/heap.c:3342,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3343,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3344,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3345,1
    - Dst: check_virtual_generated_security
      Src: /src/postgres/src/backend/catalog/heap.c:3349,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:3357,1
    - Dst: contain_var_clause
      Src: /src/postgres/src/backend/catalog/heap.c:3357,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:3365,1
    - Dst: exprType
      Src: /src/postgres/src/backend/catalog/heap.c:3367,1
    - Dst: coerce_to_target_type
      Src: /src/postgres/src/backend/catalog/heap.c:3369,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3375,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3376,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3377,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/heap.c:3380,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/heap.c:3381,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/heap.c:3382,1
    - Dst: assign_expr_collations
      Src: /src/postgres/src/backend/catalog/heap.c:3388,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: 3391
      start: 3319
    functionDepth: 5
    functionLinenumber: 3319
    functionLinenumberEnd: 3391
    functionName: cookDefault
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 2
    functionsReached:
    - errmsg
    - errcode
    - Assert
    - transformExpr
    - exprType
    - format_type_be
    - ereport
    - assign_expr_collations
    - check_virtual_generated_security
    - errhint
    - OidIsValid
    - coerce_to_target_type
    - check_nested_generated
    - contain_var_clause
    - contain_mutable_functions_after_planning
    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:3410,1
    - Dst: coerce_to_boolean
      Src: /src/postgres/src/backend/catalog/heap.c:3415,1
    - Dst: assign_expr_collations
      Src: /src/postgres/src/backend/catalog/heap.c:3420,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/heap.c:3426,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3427,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3428,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3429,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - pstate
    - raw_constraint
    - relname
    argTypes:
    - ParseState*
    - Node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3433
      start: 3400
    functionDepth: 1
    functionLinenumber: 3400
    functionLinenumberEnd: 3433
    functionName: cookConstraint
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 2
    functionsReached:
    - errmsg
    - transformExpr
    - coerce_to_boolean
    - ereport
    - list_length
    - assign_expr_collations
    - errcode
    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:3447,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/heap.c:3450,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3453,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/heap.c:3455,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:3458,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/heap.c:3458,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/catalog/heap.c:3463,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:3464,1
    - Dst: CatalogOpenIndexes
      Src: /src/postgres/src/backend/catalog/heap.c:3471,1
    - Dst: CatalogTupleInsertWithInfo
      Src: /src/postgres/src/backend/catalog/heap.c:3473,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/heap.c:3475,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/heap.c:3478,1
    - Dst: CatalogCloseIndexes
      Src: /src/postgres/src/backend/catalog/heap.c:3481,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:3482,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - fromrelid
    - torelid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3483
      start: 3438
    functionDepth: 3
    functionLinenumber: 3438
    functionLinenumberEnd: 3483
    functionName: CopyStatistics
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - CatalogCloseIndexes
    - table_open
    - heap_freetuple
    - HeapTupleIsValid
    - systable_getnext
    - CatalogTupleInsertWithInfo
    - GETSTRUCT
    - ScanKeyInit
    - heap_copytuple
    - CatalogOpenIndexes
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    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:3500,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/heap.c:3502,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3505,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/heap.c:3511,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3514,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/heap.c:3518,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:3522,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/heap.c:3522,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/heap.c:3523,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/heap.c:3525,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:3527,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - relid
    - attnum
    argTypes:
    - Oid
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3528
      start: 3491
    functionDepth: 3
    functionLinenumber: 3491
    functionLinenumberEnd: 3528
    functionName: RemoveStatistics
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 2
    functionsReached:
    - systable_beginscan
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - ScanKeyInit
    - systable_endscan
    - table_close
    - Int16GetDatum
    - CatalogTupleDelete
    - ObjectIdGetDatum
    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:3546,1
    - Dst: index_open
      Src: /src/postgres/src/backend/catalog/heap.c:3551,1
    - Dst: BuildDummyIndexInfo
      Src: /src/postgres/src/backend/catalog/heap.c:3561,1
    - Dst: RelationTruncate
      Src: /src/postgres/src/backend/catalog/heap.c:3566,1
    - Dst: index_build
      Src: /src/postgres/src/backend/catalog/heap.c:3570,1
    - Dst: index_close
      Src: /src/postgres/src/backend/catalog/heap.c:3573,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - heapRelation
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3575
      start: 3538
    functionDepth: 6
    functionLinenumber: 3538
    functionLinenumberEnd: 3575
    functionName: RelationTruncateIndexes
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - RelationTruncate
    - index_close
    - lfirst_oid
    - BuildDummyIndexInfo
    - index_build
    - index_open
    linkageType: ''
    returnType: void
    signature: void RelationTruncateIndexes(Relation heapRelation)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3546,1
    - Dst: index_open
      Src: /src/postgres/src/backend/catalog/heap.c:3551,1
    - Dst: BuildDummyIndexInfo
      Src: /src/postgres/src/backend/catalog/heap.c:3561,1
    - Dst: RelationTruncate
      Src: /src/postgres/src/backend/catalog/heap.c:3566,1
    - Dst: index_build
      Src: /src/postgres/src/backend/catalog/heap.c:3570,1
    - Dst: index_close
      Src: /src/postgres/src/backend/catalog/heap.c:3573,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3574
      start: 3544
    functionDepth: 6
    functionLinenumber: 3544
    functionLinenumberEnd: 3574
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 346
    functionsReached:
    - RelationTruncate
    - index_close
    - lfirst_oid
    - BuildDummyIndexInfo
    - index_build
    - index_open
    linkageType: ''
    returnType: void
    signature: void foreach(indlist, RelationGetIndexList(heapRelation))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3595,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:3598,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:3599,1
    - Dst: heap_truncate_check_FKs
      Src: /src/postgres/src/backend/catalog/heap.c:3603,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/heap.c:3608,1
    - Dst: heap_truncate_one_rel
      Src: /src/postgres/src/backend/catalog/heap.c:3611,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:3614,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - relids
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3616
      start: 3586
    functionDepth: 6
    functionLinenumber: 3586
    functionLinenumberEnd: 3616
    functionName: heap_truncate
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - heap_truncate_check_FKs
    - table_open
    - heap_truncate_one_rel
    - lappend
    - table_close
    - lfirst_oid
    - lfirst
    linkageType: ''
    returnType: void
    signature: void heap_truncate(List *relids)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3595,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:3598,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/heap.c:3599,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3600
      start: 3593
    functionDepth: 6
    functionLinenumber: 3593
    functionLinenumberEnd: 3600
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 346
    functionsReached:
    - lfirst_oid
    - lappend
    - table_open
    linkageType: ''
    returnType: void
    signature: void foreach(cell, relids)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/heap.c:3608,1
    - Dst: heap_truncate_one_rel
      Src: /src/postgres/src/backend/catalog/heap.c:3611,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:3614,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3615
      start: 3606
    functionDepth: 3
    functionLinenumber: 3606
    functionLinenumberEnd: 3615
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 346
    functionsReached:
    - table_close
    - heap_truncate_one_rel
    - lfirst
    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:3640,1
    - Dst: RelationTruncateIndexes
      Src: /src/postgres/src/backend/catalog/heap.c:3643,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:3647,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:3649,1
    - Dst: table_relation_nontransactional_truncate
      Src: /src/postgres/src/backend/catalog/heap.c:3651,1
    - Dst: RelationTruncateIndexes
      Src: /src/postgres/src/backend/catalog/heap.c:3652,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:3654,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3656
      start: 3627
    functionDepth: 7
    functionLinenumber: 3627
    functionLinenumberEnd: 3656
    functionName: heap_truncate_one_rel
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 2
    functionsReached:
    - table_open
    - table_relation_nontransactional_truncate
    - RelationTruncateIndexes
    - 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:3688,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3692,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:3692,1
    - Dst: heap_truncate_find_FKs
      Src: /src/postgres/src/backend/catalog/heap.c:3705,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3718,1
    - Dst: heap_truncate_find_FKs
      Src: /src/postgres/src/backend/catalog/heap.c:3721,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3721,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3725,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3727,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/heap.c:3729,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/heap.c:3730,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3733,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3734,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3735,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:3736,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3739,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3740,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3741,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:3742,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/heap.c:3744,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - relations
    - tempTables
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3750
      start: 3671
    functionDepth: 6
    functionLinenumber: 3671
    functionLinenumberEnd: 3750
    functionName: heap_truncate_check_FKs
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - get_rel_name
    - RelationGetRelid
    - lappend_oid
    - heap_truncate_find_FKs
    - list_make1_oid
    - ereport
    - errhint
    - list_member_oid
    - lfirst_oid
    - errdetail
    - lfirst
    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:3688,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3692,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:3692,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3693
      start: 3686
    functionDepth: 6
    functionLinenumber: 3686
    functionLinenumberEnd: 3693
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 346
    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:3718,1
    - Dst: heap_truncate_find_FKs
      Src: /src/postgres/src/backend/catalog/heap.c:3721,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3721,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3725,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3727,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/heap.c:3729,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/heap.c:3730,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3733,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3734,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3735,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:3736,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3739,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3740,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3741,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:3742,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/heap.c:3744,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3749
      start: 3716
    functionDepth: 3
    functionLinenumber: 3716
    functionLinenumberEnd: 3749
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 346
    functionsReached:
    - errmsg
    - get_rel_name
    - list_make1_oid
    - heap_truncate_find_FKs
    - ereport
    - errhint
    - list_member_oid
    - lfirst_oid
    - errdetail
    - errcode
    linkageType: ''
    returnType: void
    signature: void foreach(cell, oids)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3725,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3727,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/heap.c:3729,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/heap.c:3730,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3733,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3734,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3735,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:3736,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/heap.c:3739,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/heap.c:3740,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/heap.c:3741,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/heap.c:3742,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/heap.c:3744,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3748
      start: 3723
    functionDepth: 3
    functionLinenumber: 3723
    functionLinenumberEnd: 3748
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 346
    functionsReached:
    - errmsg
    - get_rel_name
    - ereport
    - errhint
    - list_member_oid
    - lfirst_oid
    - errdetail
    - errcode
    linkageType: ''
    returnType: void
    signature: void foreach(cell2, dependents)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: list_copy
      Src: /src/postgres/src/backend/catalog/heap.c:3779,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:3785,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/heap.c:3791,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:3794,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/heap.c:3794,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:3796,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3803,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:3812,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3813,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3814,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3820,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3821,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/heap.c:3824,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3835,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/heap.c:3837,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3840,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/heap.c:3842,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/heap.c:3845,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:3846,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:3848,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:3862,1
    - Dst: list_append_unique_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3863,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3865,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3867,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/heap.c:3872,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/heap.c:3875,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:3879,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/heap.c:3880,1
    - Dst: list_sort
      Src: /src/postgres/src/backend/catalog/heap.c:3883,1
    - Dst: list_deduplicate_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3884,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 41
    argCount: 1
    argNames:
    - relationIds
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3887
      start: 3766
    functionDepth: 7
    functionLinenumber: 3766
    functionLinenumberEnd: 3887
    functionName: heap_truncate_find_FKs
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 2
    functionsReached:
    - list_deduplicate_oid
    - list_append_unique_oid
    - systable_beginscan
    - table_open
    - list_copy
    - systable_getnext
    - HeapTupleIsValid
    - lappend_oid
    - list_sort
    - GETSTRUCT
    - ScanKeyInit
    - list_member_oid
    - OidIsValid
    - table_close
    - lfirst_oid
    - systable_endscan
    - ObjectIdGetDatum
    - list_free
    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:3835,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/heap.c:3837,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3840,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/heap.c:3842,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/heap.c:3845,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:3846,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:3848,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:3862,1
    - Dst: list_append_unique_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3863,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3865,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/heap.c:3867,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/heap.c:3872,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3873
      start: 3833
    functionDepth: 7
    functionLinenumber: 3833
    functionLinenumberEnd: 3873
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 346
    functionsReached:
    - list_append_unique_oid
    - systable_beginscan
    - lappend_oid
    - systable_getnext
    - HeapTupleIsValid
    - GETSTRUCT
    - ScanKeyInit
    - OidIsValid
    - list_member_oid
    - lfirst_oid
    - systable_endscan
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(cell, parent_cons)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:3915,1
    - Dst: buildint2vector
      Src: /src/postgres/src/backend/catalog/heap.c:3918,1
    - Dst: buildoidvector
      Src: /src/postgres/src/backend/catalog/heap.c:3919,1
    - Dst: buildoidvector
      Src: /src/postgres/src/backend/catalog/heap.c:3920,1
    - Dst: nodeToString
      Src: /src/postgres/src/backend/catalog/heap.c:3927,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3928,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/heap.c:3929,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:3934,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3940,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:3940,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3941,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3942,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3943,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3944,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3945,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:3946,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/heap.c:3949,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/heap.c:3949,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/heap.c:3951,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:3952,1
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/heap.c:3955,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/heap.c:3956,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:3956,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/heap.c:3961,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/heap.c:3962,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:3965,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/heap.c:3968,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/heap.c:3969,1
    - Dst: record_object_address_dependencies
      Src: /src/postgres/src/backend/catalog/heap.c:3973,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/heap.c:3974,1
    - Dst: ObjectAddressSubSet
      Src: /src/postgres/src/backend/catalog/heap.c:3987,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:3988,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/heap.c:3989,1
    - Dst: recordDependencyOnSingleRelExpr
      Src: /src/postgres/src/backend/catalog/heap.c:3999,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:4001,1
    - Dst: CacheInvalidateRelcache
      Src: /src/postgres/src/backend/catalog/heap.c:4011,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: 4012
      start: 3893
    functionDepth: 7
    functionLinenumber: 3893
    functionLinenumberEnd: 4012
    functionName: StorePartitionKey
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - new_object_addresses
    - buildint2vector
    - nodeToString
    - free_object_addresses
    - pfree
    - ObjectAddressSubSet
    - RelationGetRelid
    - table_open
    - CatalogTupleInsert
    - ObjectAddressSet
    - recordDependencyOn
    - Int16GetDatum
    - heap_form_tuple
    - buildoidvector
    - recordDependencyOnSingleRelExpr
    - OidIsValid
    - table_close
    - ObjectIdGetDatum
    - add_exact_object_address
    - Assert
    - CStringGetTextDatum
    - record_object_address_dependencies
    - CacheInvalidateRelcache
    - RelationGetDescr
    - PointerGetDatum
    - CharGetDatum
    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:4024,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/heap.c:4026,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:4026,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:4027,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:4028,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/heap.c:4031,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/heap.c:4033,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:4034,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4035
      start: 4018
    functionDepth: 3
    functionLinenumber: 4018
    functionLinenumberEnd: 4035
    functionName: RemovePartitionKeyByRelId
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 1
    functionsReached:
    - ReleaseSysCache
    - table_open
    - HeapTupleIsValid
    - SearchSysCache1
    - elog
    - table_close
    - CatalogTupleDelete
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void RemovePartitionKeyByRelId(Oid relid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/heap.c:4061,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/heap.c:4062,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/heap.c:4063,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:4063,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:4064,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/heap.c:4065,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:4066,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:4073,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:4074,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/heap.c:4075,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/heap.c:4077,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/heap.c:4082,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/heap.c:4083,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/heap.c:4084,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/heap.c:4085,1
    - Dst: nodeToString
      Src: /src/postgres/src/backend/catalog/heap.c:4085,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/heap.c:4088,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/heap.c:4088,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:4091,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/heap.c:4098,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/heap.c:4100,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/heap.c:4101,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/heap.c:4102,1
    - Dst: update_default_partition_oid
      Src: /src/postgres/src/backend/catalog/heap.c:4109,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:4109,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/heap.c:4110,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/heap.c:4113,1
    - Dst: get_default_oid_from_partdesc
      Src: /src/postgres/src/backend/catalog/heap.c:4122,1
    - Dst: RelationGetPartitionDesc
      Src: /src/postgres/src/backend/catalog/heap.c:4122,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/heap.c:4123,1
    - Dst: CacheInvalidateRelcacheByRelid
      Src: /src/postgres/src/backend/catalog/heap.c:4124,1
    - Dst: CacheInvalidateRelcache
      Src: /src/postgres/src/backend/catalog/heap.c:4126,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 3
    argNames:
    - rel
    - parent
    - bound
    argTypes:
    - Relation
    - Relation
    - PartitionBoundSpec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4127
      start: 4049
    functionDepth: 7
    functionLinenumber: 4049
    functionLinenumberEnd: 4127
    functionName: StorePartitionBound
    functionSourceFile: /src/postgres/src/backend/catalog/heap.c
    functionUses: 0
    functionsReached:
    - HeapTupleIsValid
    - nodeToString
    - SearchSysCacheCopy1
    - SysCacheGetAttr
    - update_default_partition_oid
    - RelationGetRelid
    - table_open
    - heap_modify_tuple
    - heap_freetuple
    - GETSTRUCT
    - CommandCounterIncrement
    - elog
    - OidIsValid
    - get_default_oid_from_partdesc
    - table_close
    - ObjectIdGetDatum
    - RelationGetPartitionDesc
    - Assert
    - memset
    - CStringGetTextDatum
    - CatalogTupleUpdate
    - RelationGetDescr
    - CacheInvalidateRelcache
    - CacheInvalidateRelcacheByRelid
    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: InvokeObjectPostAlterHookArg
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:155,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:158,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:161,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 51
    argCount: 3
    argNames:
    - databaseid
    - roleid
    - setstmt
    argTypes:
    - Oid
    - Oid
    - VariableSetStmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 23
    functionDepth: 6
    functionLinenumber: 23
    functionLinenumberEnd: 162
    functionName: AlterSetting
    functionSourceFile: /src/postgres/src/backend/catalog/pg_db_role_setting.c
    functionUses: 0
    functionsReached:
    - HeapTupleIsValid
    - CatalogTupleDelete
    - ExtractSetVariableArgs
    - DatumGetArrayTypeP
    - heap_getattr
    - CatalogTupleInsert
    - table_open
    - heap_modify_tuple
    - ScanKeyInit
    - heap_form_tuple
    - InvokeObjectPostAlterHookArg
    - GUCArrayAdd
    - table_close
    - systable_endscan
    - GUCArrayReset::GUCArrayReset
    - ObjectIdGetDatum
    - systable_beginscan
    - GUCArrayDelete
    - memset
    - systable_getnext
    - CatalogTupleUpdate
    - RelationGetDescr
    - PointerGetDatum
    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:178,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:180,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:182,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:186,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: table_beginscan_catalog
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:199,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:200,1
    - Dst: heap_getnext
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:200,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:202,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:204,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:206,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - databaseid
    - roleid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 169
    functionDepth: 7
    functionLinenumber: 169
    functionLinenumberEnd: 207
    functionName: DropSetting
    functionSourceFile: /src/postgres/src/backend/catalog/pg_db_role_setting.c
    functionUses: 0
    functionsReached:
    - table_open
    - table_beginscan_catalog
    - HeapTupleIsValid
    - ScanKeyInit
    - heap_getnext
    - OidIsValid
    - table_close
    - CatalogTupleDelete
    - 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:227,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:231,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:232,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:236,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:238,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:240,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:240,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:245,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:246,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:249,1
    - Dst: ProcessGUCArray
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:256,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_db_role_setting.c:260,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: 261
      start: 219
    functionDepth: 4
    functionLinenumber: 219
    functionLinenumberEnd: 261
    functionName: ApplySetting
    functionSourceFile: /src/postgres/src/backend/catalog/pg_db_role_setting.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - DatumGetArrayTypeP
    - heap_getattr
    - HeapTupleIsValid
    - systable_getnext
    - RelationGetDescr
    - ScanKeyInit
    - ProcessGUCArray
    - systable_endscan
    - ObjectIdGetDatum
    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:159,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/index.c:163,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/index.c:166,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:166,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:167,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:168,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:169,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/index.c:170,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/index.c:175,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 147
    functionDepth: 4
    functionLinenumber: 147
    functionLinenumberEnd: 178
    functionName: relationHasPrimaryKey
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - ReleaseSysCache
    - RelationGetIndexList
    - HeapTupleIsValid
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - lfirst_oid
    - ObjectIdGetDatum
    - list_free
    linkageType: ''
    returnType: bool
    signature: bool relationHasPrimaryKey(Relation rel)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/index.c:163,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/index.c:166,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:166,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:167,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:168,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:169,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/index.c:170,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 173
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 346
    functionsReached:
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - lfirst_oid
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(indexoidscan, indexoidlist)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: relationHasPrimaryKey
      Src: /src/postgres/src/backend/catalog/index.c:216,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:218,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:219,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:220,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/index.c:221,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:232,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:233,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:234,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:249,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:250,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:251,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/index.c:257,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:258,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:258,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/index.c:259,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:260,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:261,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:262,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:263,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:266,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:267,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:268,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/index.c:269,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/index.c:271,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: 273
      start: 201
    functionDepth: 5
    functionLinenumber: 201
    functionLinenumberEnd: 273
    functionName: index_check_primary_key
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - errmsg
    - NameStr
    - SearchSysCache2
    - RelationGetRelid
    - Int16GetDatum
    - ObjectIdGetDatum
    - HeapTupleIsValid
    - ReleaseSysCache
    - GETSTRUCT
    - ereport
    - elog
    - relationHasPrimaryKey
    - RelationGetRelationName
    - errcode
    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:290,1
    - Dst: list_head
      Src: /src/postgres/src/backend/catalog/index.c:291,1
    - Dst: GetIndexAmRoutineByAmId
      Src: /src/postgres/src/backend/catalog/index.c:299,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/index.c:302,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/catalog/index.c:303,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/catalog/index.c:308,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/index.c:316,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/catalog/index.c:322,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:331,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/index.c:332,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/index.c:332,1
    - Dst: lnext
      Src: /src/postgres/src/backend/catalog/index.c:333,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:345,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:348,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/index.c:349,1
    - Dst: AttrNumberGetAttrOffset
      Src: /src/postgres/src/backend/catalog/index.c:350,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:367,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/index.c:368,1
    - Dst: lnext
      Src: /src/postgres/src/backend/catalog/index.c:369,1
    - Dst: exprType
      Src: /src/postgres/src/backend/catalog/index.c:374,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/index.c:375,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:375,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:376,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:377,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:378,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/catalog/index.c:385,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/index.c:399,1
    - Dst: CheckAttributeType
      Src: /src/postgres/src/backend/catalog/index.c:410,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/index.c:410,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/index.c:431,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:431,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:432,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:433,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:434,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:435,1
    - Dst: get_base_element_type
      Src: /src/postgres/src/backend/catalog/index.c:449,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:450,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:451,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/index.c:455,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:462,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/index.c:464,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:464,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:465,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:466,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:467,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/index.c:478,1
    - Dst: populate_compact_attribute
      Src: /src/postgres/src/backend/catalog/index.c:481,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/index.c:484,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: 487
      start: 280
    functionDepth: 7
    functionLinenumber: 280
    functionLinenumberEnd: 487
    functionName: ConstructTupleDescriptor
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - HeapTupleIsValid
    - AttrNumberGetAttrOffset
    - exprType
    - pfree
    - NameStr
    - ReleaseSysCache
    - GETSTRUCT
    - RelationGetForm
    - CheckAttributeType
    - CreateTemplateTupleDesc
    - populate_compact_attribute
    - get_base_element_type
    - GetIndexAmRoutineByAmId
    - TupleDescAttr
    - list_head
    - lnext
    - elog
    - MemSet
    - OidIsValid
    - ObjectIdGetDatum
    - lfirst
    - Assert
    - namestrcpy
    - exprTypmod
    - RelationGetDescr
    - SearchSysCache1
    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:501,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/index.c:504,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - indexRelation
    - numatts
    - indexoid
    argTypes:
    - Relation
    - int
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 493
    functionDepth: 2
    functionLinenumber: 493
    functionLinenumberEnd: 505
    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:521,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:540,1
    - Dst: CatalogOpenIndexes
      Src: /src/postgres/src/backend/catalog/index.c:542,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/index.c:547,1
    - Dst: InsertPgAttributeTuples
      Src: /src/postgres/src/backend/catalog/index.c:549,1
    - Dst: CatalogCloseIndexes
      Src: /src/postgres/src/backend/catalog/index.c:551,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:553,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - indexRelation
    - attopts
    - stattargets
    argTypes:
    - Relation
    - Datum*
    - NullableDatum*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 511
    functionDepth: 4
    functionLinenumber: 511
    functionLinenumberEnd: 554
    functionName: AppendAttributeTuples
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - CatalogCloseIndexes
    - table_open
    - RelationGetDescr
    - CatalogOpenIndexes
    - palloc0_array
    - table_close
    - 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:592,1
    - Dst: buildoidvector
      Src: /src/postgres/src/backend/catalog/index.c:595,1
    - Dst: buildoidvector
      Src: /src/postgres/src/backend/catalog/index.c:596,1
    - Dst: buildint2vector
      Src: /src/postgres/src/backend/catalog/index.c:597,1
    - Dst: nodeToString
      Src: /src/postgres/src/backend/catalog/index.c:606,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/index.c:607,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/index.c:608,1
    - Dst: nodeToString
      Src: /src/postgres/src/backend/catalog/index.c:621,1
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/catalog/index.c:621,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/index.c:622,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/index.c:623,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:632,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:637,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:638,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/index.c:639,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/index.c:640,1
    - Dst: BoolGetDatum
      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: PointerGetDatum
      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: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/index.c:663,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/index.c:663,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/index.c:668,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:673,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/index.c:674,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: 675
      start: 562
    functionDepth: 7
    functionLinenumber: 562
    functionLinenumberEnd: 675
    functionName: UpdateIndexRelation
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - make_ands_explicit
    - pfree
    - heap_form_tuple
    - buildint2vector
    - CatalogTupleInsert
    - table_open
    - CStringGetTextDatum
    - BoolGetDatum
    - heap_freetuple
    - nodeToString
    - RelationGetDescr
    - PointerGetDatum
    - buildoidvector
    - table_close
    - Int16GetDatum
    - ObjectIdGetDatum
    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:748,1
    - Dst: RelFileNumberIsValid
      Src: /src/postgres/src/backend/catalog/index.c:765,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:768,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:771,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:776,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/index.c:784,1
    - Dst: RelationIsMapped
      Src: /src/postgres/src/backend/catalog/index.c:786,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:793,1
    - Dst: IsSystemRelation
      Src: /src/postgres/src/backend/catalog/index.c:796,1
    - Dst: IsNormalProcessingMode
      Src: /src/postgres/src/backend/catalog/index.c:797,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:798,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:799,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:800,1
    - Dst: get_collation_isdeterministic
      Src: /src/postgres/src/backend/catalog/index.c:831,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/index.c:835,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:835,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:836,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:837,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:838,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:839,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:840,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/index.c:841,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:841,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/index.c:842,1
    - Dst: IsCatalogRelation
      Src: /src/postgres/src/backend/catalog/index.c:852,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:853,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:854,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:855,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:862,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:863,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:864,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/index.c:870,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:871,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:872,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:873,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:879,1
    - Dst: get_relname_relid
      Src: /src/postgres/src/backend/catalog/index.c:887,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:891,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:892,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:893,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:895,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:899,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:900,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:901,1
    - Dst: ConstraintNameIsUsed
      Src: /src/postgres/src/backend/catalog/index.c:906,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:913,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:914,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:915,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/index.c:916,1
    - Dst: ConstructTupleDescriptor
      Src: /src/postgres/src/backend/catalog/index.c:922,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:935,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:940,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:941,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:942,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:943,1
    - Dst: RelFileNumberIsValid
      Src: /src/postgres/src/backend/catalog/index.c:950,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:951,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:952,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:953,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:962,1
    - Dst: GetNewRelFileNumber
      Src: /src/postgres/src/backend/catalog/index.c:967,1
    - Dst: heap_create
      Src: /src/postgres/src/backend/catalog/index.c:976,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:992,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:993,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:994,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:994,1
    - Dst: LockRelation
      Src: /src/postgres/src/backend/catalog/index.c:1001,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1011,1
    - Dst: InsertPgClassTuple
      Src: /src/postgres/src/backend/catalog/index.c:1016,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:1017,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:1022,1
    - Dst: InitializeAttributeOids
      Src: /src/postgres/src/backend/catalog/index.c:1028,1
    - Dst: AppendAttributeTuples
      Src: /src/postgres/src/backend/catalog/index.c:1035,1
    - Dst: UpdateIndexRelation
      Src: /src/postgres/src/backend/catalog/index.c:1045,1
    - Dst: CacheInvalidateRelcache
      Src: /src/postgres/src/backend/catalog/index.c:1057,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1060,1
    - Dst: StoreSingleInheritance
      Src: /src/postgres/src/backend/catalog/index.c:1062,1
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/catalog/index.c:1063,1
    - Dst: SetRelationHasSubclass
      Src: /src/postgres/src/backend/catalog/index.c:1064,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/index.c:1081,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/index.c:1087,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:1102,1
    - Dst: index_constraint_create
      Src: /src/postgres/src/backend/catalog/index.c:1106,1
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/index.c:1122,1
    - Dst: ObjectAddressSubSet
      Src: /src/postgres/src/backend/catalog/index.c:1129,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/index.c:1132,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/index.c:1145,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/index.c:1147,1
    - Dst: record_object_address_dependencies
      Src: /src/postgres/src/backend/catalog/index.c:1150,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/index.c:1151,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1160,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/index.c:1162,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/index.c:1163,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/index.c:1165,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/index.c:1166,1
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/index.c:1170,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1177,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/index.c:1179,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/index.c:1180,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/index.c:1187,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/index.c:1188,1
    - Dst: record_object_address_dependencies
      Src: /src/postgres/src/backend/catalog/index.c:1191,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/index.c:1192,1
    - Dst: recordDependencyOnSingleRelExpr
      Src: /src/postgres/src/backend/catalog/index.c:1197,1
    - Dst: recordDependencyOnSingleRelExpr
      Src: /src/postgres/src/backend/catalog/index.c:1207,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:1217,1
    - Dst: InvokeObjectPostCreateHookArg
      Src: /src/postgres/src/backend/catalog/index.c:1221,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/index.c:1228,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/index.c:1236,1
    - Dst: RelationInitIndexAccessInfo
      Src: /src/postgres/src/backend/catalog/index.c:1237,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:1239,1
    - Dst: index_opclass_options
      Src: /src/postgres/src/backend/catalog/index.c:1246,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/index.c:1259,1
    - Dst: index_register
      Src: /src/postgres/src/backend/catalog/index.c:1261,1
    - Dst: index_update_stats
      Src: /src/postgres/src/backend/catalog/index.c:1270,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/index.c:1274,1
    - Dst: index_build
      Src: /src/postgres/src/backend/catalog/index.c:1278,1
    - Dst: index_close
      Src: /src/postgres/src/backend/catalog/index.c:1285,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
    - bits16
    - bits16
    - bool
    - bool
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1288
      start: 725
    functionDepth: 8
    functionLinenumber: 725
    functionLinenumberEnd: 1288
    functionName: index_create
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 1
    functionsReached:
    - heap_create
    - new_object_addresses
    - InitializeAttributeOids
    - RelationInitIndexAccessInfo
    - HeapTupleIsValid
    - get_collation_isdeterministic
    - index_update_stats
    - free_object_addresses
    - RelationGetRelationName
    - index_build
    - LockRelationOid
    - GetNewRelFileNumber
    - NameStr
    - ObjectAddressSubSet
    - RelationGetRelid
    - table_open
    - ReleaseSysCache
    - get_relname_relid
    - AppendAttributeTuples
    - SetRelationHasSubclass
    - ObjectAddressSet
    - GETSTRUCT
    - index_close
    - recordDependencyOn
    - ConstraintNameIsUsed
    - InsertPgClassTuple
    - errmsg
    - CommandCounterIncrement
    - InvokeObjectPostCreateHookArg
    - ConstructTupleDescriptor
    - LockRelation
    - index_opclass_options
    - RelationIsMapped
    - elog
    - StoreSingleInheritance
    - recordDependencyOnSingleRelExpr
    - RelationGetNamespace
    - IsCatalogRelation
    - OidIsValid
    - index_constraint_create
    - table_close
    - IsNormalProcessingMode
    - ObjectIdGetDatum
    - add_exact_object_address
    - Assert
    - IsSystemRelation
    - record_object_address_dependencies
    - index_register
    - CacheInvalidateRelcache
    - IsBootstrapProcessingMode
    - ereport
    - RelFileNumberIsValid
    - SearchSysCache1
    - UpdateIndexRelation
    - errcode
    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 bits16 flags,\n\t\t\t bits16
      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: 7
    BranchProfiles: []
    Callsites:
    - Dst: index_open
      Src: /src/postgres/src/backend/catalog/index.c:1321,1
    - Dst: BuildIndexInfo
      Src: /src/postgres/src/backend/catalog/index.c:1324,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:1331,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:1332,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:1333,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/index.c:1336,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1336,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1337,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:1338,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/index.c:1339,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/index.c:1341,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/index.c:1343,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/index.c:1345,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/index.c:1348,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1348,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1349,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:1350,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/index.c:1351,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/index.c:1364,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/index.c:1366,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/catalog/index.c:1367,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/index.c:1368,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/index.c:1375,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/index.c:1377,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/catalog/index.c:1378,1
    - Dst: make_ands_implicit
      Src: /src/postgres/src/backend/catalog/index.c:1381,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/index.c:1382,1
    - Dst: makeIndexInfo
      Src: /src/postgres/src/backend/catalog/index.c:1390,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/index.c:1409,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/index.c:1410,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/index.c:1412,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/index.c:1412,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/catalog/index.c:1417,1
    - Dst: get_attoptions
      Src: /src/postgres/src/backend/catalog/index.c:1419,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/catalog/index.c:1422,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/index.c:1428,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1428,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1428,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1429,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:1430,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/index.c:1432,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/index.c:1433,1
    - Dst: index_create
      Src: /src/postgres/src/backend/catalog/index.c:1445,1
    - Dst: index_close
      Src: /src/postgres/src/backend/catalog/index.c:1468,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/index.c:1469,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/index.c:1470,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 52
    argCount: 4
    argNames:
    - heapRelation
    - oldIndexId
    - tablespaceOid
    - newName
    argTypes:
    - Relation
    - Oid
    - Oid
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1473
      start: 1299
    functionDepth: 9
    functionLinenumber: 1299
    functionLinenumberEnd: 1473
    functionName: index_concurrently_create_copy
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - makeIndexInfo
    - HeapTupleIsValid
    - SysCacheGetAttrNotNull
    - SysCacheGetAttr
    - palloc0_array
    - pfree
    - NameStr
    - SearchSysCache2
    - ReleaseSysCache
    - index_create
    - index_close
    - make_ands_implicit
    - Int16GetDatum
    - DatumGetPointer
    - BuildIndexInfo
    - errmsg
    - TupleDescAttr
    - elog
    - lappend
    - ObjectIdGetDatum
    - get_attoptions
    - stringToNode
    - TextDatumGetCString
    - RelationGetDescr
    - ereport
    - palloc0
    - SearchSysCache1
    - errcode
    - index_open
    linkageType: ''
    returnType: Oid
    signature: "Oid index_concurrently_create_copy(Relation heapRelation, Oid oldIndexId,\n\t\t\t\t\t\t\t
      \  Oid tablespaceOid, const char *newName)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:1496,1
    - Dst: ActiveSnapshotSet
      Src: /src/postgres/src/backend/catalog/index.c:1496,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:1499,1
    - Dst: GetUserIdAndSecContext
      Src: /src/postgres/src/backend/catalog/index.c:1506,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/catalog/index.c:1507,1
    - Dst: NewGUCNestLevel
      Src: /src/postgres/src/backend/catalog/index.c:1509,1
    - Dst: RestrictSearchPath
      Src: /src/postgres/src/backend/catalog/index.c:1510,1
    - Dst: index_open
      Src: /src/postgres/src/backend/catalog/index.c:1512,1
    - Dst: BuildIndexInfo
      Src: /src/postgres/src/backend/catalog/index.c:1519,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:1520,1
    - Dst: index_build
      Src: /src/postgres/src/backend/catalog/index.c:1525,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/backend/catalog/index.c:1528,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/catalog/index.c:1531,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:1534,1
    - Dst: index_close
      Src: /src/postgres/src/backend/catalog/index.c:1535,1
    - Dst: index_set_state_flags
      Src: /src/postgres/src/backend/catalog/index.c:1542,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 2
    argNames:
    - heapRelationId
    - indexRelationId
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1543
      start: 1484
    functionDepth: 3
    functionLinenumber: 1484
    functionLinenumberEnd: 1543
    functionName: index_concurrently_build
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - GetUserIdAndSecContext
    - SetUserIdAndSecContext
    - Assert
    - index_set_state_flags
    - RestrictSearchPath
    - table_open
    - AtEOXact_GUC
    - index_close
    - table_close
    - NewGUCNestLevel
    - ActiveSnapshotSet
    - index_build
    - index_open
    - BuildIndexInfo
    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:1576,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/catalog/index.c:1577,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:1580,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/index.c:1582,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1583,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1584,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:1585,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/index.c:1586,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1587,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1588,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:1589,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:1591,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:1592,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/index.c:1595,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/index.c:1595,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/catalog/index.c:1596,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/index.c:1603,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/index.c:1604,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/index.c:1606,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/index.c:1607,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:1610,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/index.c:1612,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1613,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1614,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:1615,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/index.c:1616,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1617,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1618,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:1619,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:1621,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:1622,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/index.c:1650,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/index.c:1651,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/index.c:1653,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/index.c:1654,1
    - Dst: get_index_ref_constraints
      Src: /src/postgres/src/backend/catalog/index.c:1660,1
    - Dst: get_index_constraint
      Src: /src/postgres/src/backend/catalog/index.c:1662,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1664,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/index.c:1665,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:1667,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:1668,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/index.c:1677,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/index.c:1680,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1681,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1682,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:1683,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:1685,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/index.c:1691,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/index.c:1694,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/index.c:1697,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1700,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/index.c:1702,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1705,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/index.c:1705,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:1707,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/catalog/index.c:1713,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:1714,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/index.c:1718,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/index.c:1720,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/index.c:1723,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1738,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/index.c:1741,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1744,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/index.c:1745,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1748,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/index.c:1749,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1752,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:1754,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/index.c:1756,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/index.c:1759,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/index.c:1761,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/index.c:1761,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/index.c:1763,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/index.c:1768,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:1769,1
    - Dst: get_rel_relispartition
      Src: /src/postgres/src/backend/catalog/index.c:1775,1
    - Dst: get_partition_ancestors
      Src: /src/postgres/src/backend/catalog/index.c:1777,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/catalog/index.c:1778,1
    - Dst: DeleteInheritsTuple
      Src: /src/postgres/src/backend/catalog/index.c:1780,1
    - Dst: StoreSingleInheritance
      Src: /src/postgres/src/backend/catalog/index.c:1781,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/index.c:1783,1
    - Dst: changeDependenciesOf
      Src: /src/postgres/src/backend/catalog/index.c:1791,1
    - Dst: changeDependenciesOn
      Src: /src/postgres/src/backend/catalog/index.c:1792,1
    - Dst: changeDependenciesOf
      Src: /src/postgres/src/backend/catalog/index.c:1794,1
    - Dst: changeDependenciesOn
      Src: /src/postgres/src/backend/catalog/index.c:1795,1
    - Dst: pgstat_copy_relation_stats
      Src: /src/postgres/src/backend/catalog/index.c:1798,1
    - Dst: CopyStatistics
      Src: /src/postgres/src/backend/catalog/index.c:1801,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:1804,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:1805,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:1806,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:1807,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/catalog/index.c:1810,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/catalog/index.c:1811,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 106
    argCount: 3
    argNames:
    - newIndexId
    - oldIndexId
    - oldName
    argTypes:
    - Oid
    - Oid
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1812
      start: 1551
    functionDepth: 7
    functionLinenumber: 1551
    functionLinenumberEnd: 1812
    functionName: index_concurrently_swap
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - DeleteInheritsTuple
    - HeapTupleIsValid
    - SearchSysCacheCopy1
    - pgstat_copy_relation_stats
    - relation_close
    - linitial_oid
    - NameStr
    - table_open
    - heap_freetuple
    - Int32GetDatum
    - heap_modify_tuple
    - GETSTRUCT
    - ScanKeyInit
    - get_index_ref_constraints
    - relation_open
    - CopyStatistics
    - get_rel_relispartition
    - get_index_constraint
    - elog
    - StoreSingleInheritance
    - OidIsValid
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    - list_free
    - systable_beginscan
    - namestrcpy
    - lappend_oid
    - CatalogTupleUpdate
    - systable_getnext
    - RelationGetDescr
    - changeDependenciesOf
    - changeDependenciesOn
    - heap_copytuple
    - lfirst_oid
    - get_partition_ancestors
    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:1677,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/index.c:1680,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1681,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1682,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:1683,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:1685,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/index.c:1691,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/index.c:1694,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/index.c:1697,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:1700,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/index.c:1702,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1705,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/index.c:1705,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:1707,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/catalog/index.c:1713,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:1714,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/index.c:1718,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/index.c:1720,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/index.c:1723,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1724
      start: 1670
    functionDepth: 3
    functionLinenumber: 1670
    functionLinenumberEnd: 1724
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 346
    functionsReached:
    - systable_beginscan
    - heap_freetuple
    - HeapTupleIsValid
    - CatalogTupleUpdate
    - systable_getnext
    - SearchSysCacheCopy1
    - GETSTRUCT
    - ScanKeyInit
    - elog
    - heap_copytuple
    - lfirst_oid
    - systable_endscan
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void foreach(lc, constraintOids)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:1834,1
    - Dst: index_open
      Src: /src/postgres/src/backend/catalog/index.c:1835,1
    - Dst: TransferPredicateLocksToHeapRelation
      Src: /src/postgres/src/backend/catalog/index.c:1836,1
    - Dst: index_set_state_flags
      Src: /src/postgres/src/backend/catalog/index.c:1843,1
    - Dst: CacheInvalidateRelcache
      Src: /src/postgres/src/backend/catalog/index.c:1850,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:1855,1
    - Dst: index_close
      Src: /src/postgres/src/backend/catalog/index.c:1856,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - heapId
    - indexId
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1857
      start: 1822
    functionDepth: 3
    functionLinenumber: 1822
    functionLinenumberEnd: 1857
    functionName: index_concurrently_set_dead
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - index_set_state_flags
    - index_close
    - table_open
    - TransferPredicateLocksToHeapRelation
    - CacheInvalidateRelcache
    - table_close
    - index_open
    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:1895,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:1913,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/index.c:1913,1
    - Dst: IsSystemRelation
      Src: /src/postgres/src/backend/catalog/index.c:1917,1
    - Dst: IsNormalProcessingMode
      Src: /src/postgres/src/backend/catalog/index.c:1918,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:1919,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:1920,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:1921,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:1926,1
    - Dst: deleteDependencyRecordsForClass
      Src: /src/postgres/src/backend/catalog/index.c:1938,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:1941,1
    - Dst: CreateConstraintEntry
      Src: /src/postgres/src/backend/catalog/index.c:1957,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:1965,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/index.c:1997,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/index.c:1998,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/index.c:1999,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:2005,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/index.c:2009,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/index.c:2010,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/index.c:2011,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:2012,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/index.c:2013,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/catalog/index.c:2023,1
    - Dst: SystemFuncName
      Src: /src/postgres/src/backend/catalog/index.c:2031,1
    - Dst: CreateTrigger
      Src: /src/postgres/src/backend/catalog/index.c:2043,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:2043,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:2065,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/index.c:2067,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:2068,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:2069,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:2070,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:2071,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/index.c:2088,1
    - Dst: CacheInvalidateRelcache
      Src: /src/postgres/src/backend/catalog/index.c:2097,1
    - Dst: InvokeObjectPostAlterHookArg
      Src: /src/postgres/src/backend/catalog/index.c:2099,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/index.c:2103,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:2104,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
    - bits16
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2108
      start: 1884
    functionDepth: 6
    functionLinenumber: 1884
    functionLinenumberEnd: 2108
    functionName: index_constraint_create
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 1
    functionsReached:
    - HeapTupleIsValid
    - SearchSysCacheCopy1
    - deleteDependencyRecordsForClass
    - CreateConstraintEntry
    - makeNode
    - RelationGetRelid
    - ObjectAddressSet
    - table_open
    - heap_freetuple
    - GETSTRUCT
    - recordDependencyOn
    - CreateTrigger
    - errmsg
    - elog
    - RelationGetNamespace
    - OidIsValid
    - InvokeObjectPostAlterHookArg
    - table_close
    - IsNormalProcessingMode
    - ObjectIdGetDatum
    - Assert
    - IsSystemRelation
    - CatalogTupleUpdate
    - CacheInvalidateRelcache
    - IsBootstrapProcessingMode
    - ereport
    - SystemFuncName
    - errcode
    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\tbits16
      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:2141,1
    - Dst: get_rel_persistence
      Src: /src/postgres/src/backend/catalog/index.c:2141,1
    - Dst: IndexGetRelation
      Src: /src/postgres/src/backend/catalog/index.c:2162,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:2164,1
    - Dst: index_open
      Src: /src/postgres/src/backend/catalog/index.c:2165,1
    - Dst: CheckTableNotInUse
      Src: /src/postgres/src/backend/catalog/index.c:2171,1
    - Dst: GetTopTransactionIdIfAny
      Src: /src/postgres/src/backend/catalog/index.c:2219,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:2220,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:2221,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:2222,1
    - Dst: index_set_state_flags
      Src: /src/postgres/src/backend/catalog/index.c:2227,1
    - Dst: CacheInvalidateRelcache
      Src: /src/postgres/src/backend/catalog/index.c:2234,1
    - Dst: SET_LOCKTAG_RELATION
      Src: /src/postgres/src/backend/catalog/index.c:2238,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:2241,1
    - Dst: index_close
      Src: /src/postgres/src/backend/catalog/index.c:2242,1
    - Dst: LockRelationIdForSession
      Src: /src/postgres/src/backend/catalog/index.c:2255,1
    - Dst: LockRelationIdForSession
      Src: /src/postgres/src/backend/catalog/index.c:2256,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/catalog/index.c:2258,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/catalog/index.c:2259,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/catalog/index.c:2260,1
    - Dst: WaitForLockers
      Src: /src/postgres/src/backend/catalog/index.c:2280,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/catalog/index.c:2286,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/catalog/index.c:2286,1
    - Dst: index_concurrently_set_dead
      Src: /src/postgres/src/backend/catalog/index.c:2289,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/catalog/index.c:2291,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/catalog/index.c:2297,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/catalog/index.c:2298,1
    - Dst: WaitForLockers
      Src: /src/postgres/src/backend/catalog/index.c:2304,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:2313,1
    - Dst: index_open
      Src: /src/postgres/src/backend/catalog/index.c:2314,1
    - Dst: TransferPredicateLocksToHeapRelation
      Src: /src/postgres/src/backend/catalog/index.c:2319,1
    - Dst: RELKIND_HAS_STORAGE
      Src: /src/postgres/src/backend/catalog/index.c:2325,1
    - Dst: RelationDropStorage
      Src: /src/postgres/src/backend/catalog/index.c:2326,1
    - Dst: pgstat_drop_relation
      Src: /src/postgres/src/backend/catalog/index.c:2329,1
    - Dst: index_close
      Src: /src/postgres/src/backend/catalog/index.c:2336,1
    - Dst: RelationForgetRelation
      Src: /src/postgres/src/backend/catalog/index.c:2338,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/catalog/index.c:2344,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/catalog/index.c:2344,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:2349,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/index.c:2351,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:2351,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:2352,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:2353,1
    - Dst: heap_attisnull
      Src: /src/postgres/src/backend/catalog/index.c:2355,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/index.c:2356,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/index.c:2358,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/index.c:2360,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:2361,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/catalog/index.c:2363,1
    - Dst: RemoveStatistics
      Src: /src/postgres/src/backend/catalog/index.c:2370,1
    - Dst: DeleteAttributeTuples
      Src: /src/postgres/src/backend/catalog/index.c:2375,1
    - Dst: DeleteRelationTuple
      Src: /src/postgres/src/backend/catalog/index.c:2380,1
    - Dst: DeleteInheritsTuple
      Src: /src/postgres/src/backend/catalog/index.c:2385,1
    - Dst: CacheInvalidateRelcache
      Src: /src/postgres/src/backend/catalog/index.c:2395,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:2400,1
    - Dst: UnlockRelationIdForSession
      Src: /src/postgres/src/backend/catalog/index.c:2407,1
    - Dst: UnlockRelationIdForSession
      Src: /src/postgres/src/backend/catalog/index.c:2408,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 60
    argCount: 3
    argNames:
    - indexId
    - concurrent
    - concurrent_lock_mode
    argTypes:
    - Oid
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2410
      start: 2121
    functionDepth: 4
    functionLinenumber: 2121
    functionLinenumberEnd: 2410
    functionName: index_drop
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_RELATION
    - GetTopTransactionIdIfAny
    - index_set_state_flags
    - IndexGetRelation
    - DeleteInheritsTuple
    - HeapTupleIsValid
    - RelationForgetRelation
    - heap_attisnull
    - CatalogTupleDelete
    - PopActiveSnapshot
    - index_close
    - table_open
    - RelationDropStorage
    - ReleaseSysCache
    - GetTransactionSnapshot
    - PushActiveSnapshot
    - UnlockRelationIdForSession
    - StartTransactionCommand
    - LockRelationIdForSession
    - errmsg
    - RELKIND_HAS_STORAGE
    - WaitForLockers
    - pgstat_drop_relation
    - elog
    - get_rel_persistence
    - table_close
    - ObjectIdGetDatum
    - index_concurrently_set_dead
    - Assert
    - DeleteAttributeTuples
    - CommitTransactionCommand
    - RemoveStatistics
    - TransferPredicateLocksToHeapRelation
    - CacheInvalidateRelcache
    - RelationGetDescr
    - DeleteRelationTuple
    - CheckTableNotInUse
    - ereport
    - SearchSysCache1
    - errcode
    - index_open
    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:2438,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:2439,1
    - Dst: makeIndexInfo
      Src: /src/postgres/src/backend/catalog/index.c:2445,1
    - Dst: RelationGetIndexExpressions
      Src: /src/postgres/src/backend/catalog/index.c:2448,1
    - Dst: RelationGetIndexPredicate
      Src: /src/postgres/src/backend/catalog/index.c:2449,1
    - Dst: RelationGetExclusionInfo
      Src: /src/postgres/src/backend/catalog/index.c:2464,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2471
      start: 2427
    functionDepth: 2
    functionLinenumber: 2427
    functionLinenumberEnd: 2471
    functionName: BuildIndexInfo
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 6
    functionsReached:
    - makeIndexInfo
    - RelationGetIndexExpressions
    - RelationGetRelid
    - elog
    - RelationGetIndexPredicate
    - RelationGetExclusionInfo
    linkageType: ''
    returnType: IndexInfo
    signature: 'IndexInfo *

      BuildIndexInfo(Relation index)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:2498,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:2499,1
    - Dst: makeIndexInfo
      Src: /src/postgres/src/backend/catalog/index.c:2505,1
    - Dst: RelationGetDummyIndexExpressions
      Src: /src/postgres/src/backend/catalog/index.c:2508,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - index
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2524
      start: 2487
    functionDepth: 2
    functionLinenumber: 2487
    functionLinenumberEnd: 2524
    functionName: BuildDummyIndexInfo
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 2
    functionsReached:
    - makeIndexInfo
    - elog
    - RelationGetRelid
    - RelationGetDummyIndexExpressions
    linkageType: ''
    returnType: IndexInfo
    signature: 'IndexInfo *

      BuildDummyIndexInfo(Relation index)'
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:2571,1
    - Dst: map_variable_attnos
      Src: /src/postgres/src/backend/catalog/index.c:2609,1
    - Dst: equal
      Src: /src/postgres/src/backend/catalog/index.c:2621,1
    - Dst: map_variable_attnos
      Src: /src/postgres/src/backend/catalog/index.c:2633,1
    - Dst: equal
      Src: /src/postgres/src/backend/catalog/index.c:2644,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: 2653
      start: 2536
    functionDepth: 3
    functionLinenumber: 2536
    functionLinenumberEnd: 2653
    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:2674,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:2679,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/index.c:2681,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/index.c:2682,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/index.c:2683,1
    - Dst: IndexAmTranslateCompareType
      Src: /src/postgres/src/backend/catalog/index.c:2693,1
    - Dst: get_opfamily_member
      Src: /src/postgres/src/backend/catalog/index.c:2698,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:2702,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:2703,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/catalog/index.c:2706,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - index
    - ii
    argTypes:
    - Relation
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2708
      start: 2668
    functionDepth: 4
    functionLinenumber: 2668
    functionLinenumberEnd: 2708
    functionName: BuildSpeculativeIndexInfo
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - IndexRelationGetNumberOfKeyAttributes
    - Assert
    - IndexAmTranslateCompareType
    - get_opcode
    - elog
    - OidIsValid
    - palloc
    - get_opfamily_member
    linkageType: ''
    returnType: void
    signature: void BuildSpeculativeIndexInfo(Relation index, IndexInfo *ii)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ExecPrepareExprList
      Src: /src/postgres/src/backend/catalog/index.c:2744,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:2746,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/catalog/index.c:2746,1
    - Dst: list_head
      Src: /src/postgres/src/backend/catalog/index.c:2748,1
    - Dst: slot_getsysattr
      Src: /src/postgres/src/backend/catalog/index.c:2757,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/catalog/index.c:2764,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:2772,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/catalog/index.c:2773,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/index.c:2773,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/catalog/index.c:2774,1
    - Dst: lnext
      Src: /src/postgres/src/backend/catalog/index.c:2776,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:2783,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: 2784
      start: 2729
    functionDepth: 3
    functionLinenumber: 2729
    functionLinenumberEnd: 2784
    functionName: FormIndexDatum
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 2
    functionsReached:
    - Assert
    - slot_getsysattr
    - ExecPrepareExprList
    - ExecEvalExprSwitchContext
    - list_head
    - lnext
    - GetPerTupleExprContext
    - elog
    - slot_getattr
    - lfirst
    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:2817,1
    - Dst: AutoVacuumingActive
      Src: /src/postgres/src/backend/catalog/index.c:2854,1
    - Dst: RelationGetNumberOfBlocks
      Src: /src/postgres/src/backend/catalog/index.c:2874,1
    - Dst: visibilitymap_count
      Src: /src/postgres/src/backend/catalog/index.c:2877,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:2908,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/index.c:2910,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:2913,1
    - Dst: systable_inplace_update_begin
      Src: /src/postgres/src/backend/catalog/index.c:2914,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:2917,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:2918,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:2919,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:2922,1
    - Dst: systable_inplace_update_finish
      Src: /src/postgres/src/backend/catalog/index.c:2962,1
    - Dst: systable_inplace_update_cancel
      Src: /src/postgres/src/backend/catalog/index.c:2967,1
    - Dst: CacheInvalidateRelcacheByTuple
      Src: /src/postgres/src/backend/catalog/index.c:2976,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/index.c:2979,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:2981,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 54
    argCount: 3
    argNames:
    - rel
    - hasindex
    - reltuples
    argTypes:
    - Relation
    - bool
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2982
      start: 2808
    functionDepth: 5
    functionLinenumber: 2808
    functionLinenumberEnd: 2982
    functionName: index_update_stats
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 1
    functionsReached:
    - CacheInvalidateRelcacheByTuple
    - Assert
    - RelationGetRelid
    - table_open
    - systable_inplace_update_cancel
    - HeapTupleIsValid
    - systable_inplace_update_begin
    - heap_freetuple
    - GETSTRUCT
    - ScanKeyInit
    - AutoVacuumingActive
    - table_close
    - elog
    - systable_inplace_update_finish
    - visibilitymap_count
    - RelationGetNumberOfBlocks
    - ObjectIdGetDatum
    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: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3016,1
    - Dst: RelationIsValid
      Src: /src/postgres/src/backend/catalog/index.c:3016,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3017,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/catalog/index.c:3017,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3018,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/catalog/index.c:3018,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3019,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/catalog/index.c:3019,1
    - Dst: IsNormalProcessingMode
      Src: /src/postgres/src/backend/catalog/index.c:3027,1
    - Dst: plan_create_index_workers
      Src: /src/postgres/src/backend/catalog/index.c:3030,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:3030,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:3031,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:3034,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/catalog/index.c:3035,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/index.c:3036,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/index.c:3037,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:3039,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/catalog/index.c:3040,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/index.c:3041,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/index.c:3042,1
    - Dst: GetUserIdAndSecContext
      Src: /src/postgres/src/backend/catalog/index.c:3050,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/catalog/index.c:3051,1
    - Dst: NewGUCNestLevel
      Src: /src/postgres/src/backend/catalog/index.c:3053,1
    - Dst: RestrictSearchPath
      Src: /src/postgres/src/backend/catalog/index.c:3054,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/catalog/index.c:3072,1
    - Dst: Relation::rd_indam::ambuild
      Src: /src/postgres/src/backend/catalog/index.c:3078,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3080,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/catalog/index.c:3080,1
    - Dst: smgrexists
      Src: /src/postgres/src/backend/catalog/index.c:3090,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/catalog/index.c:3090,1
    - Dst: smgrcreate
      Src: /src/postgres/src/backend/catalog/index.c:3092,1
    - Dst: RelationGetSmgr
      Src: /src/postgres/src/backend/catalog/index.c:3092,1
    - Dst: log_smgrcreate
      Src: /src/postgres/src/backend/catalog/index.c:3093,1
    - Dst: Relation::rd_indam::ambuildempty
      Src: /src/postgres/src/backend/catalog/index.c:3094,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:3129,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:3134,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/index.c:3136,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:3137,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:3138,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:3139,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:3140,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3143,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/index.c:3146,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/index.c:3148,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:3149,1
    - Dst: index_update_stats
      Src: /src/postgres/src/backend/catalog/index.c:3155,1
    - Dst: index_update_stats
      Src: /src/postgres/src/backend/catalog/index.c:3159,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/index.c:3164,1
    - Dst: IndexCheckExclusion
      Src: /src/postgres/src/backend/catalog/index.c:3173,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/backend/catalog/index.c:3176,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/catalog/index.c:3179,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 5
    argNames:
    - heapRelation
    - indexRelation
    - indexInfo
    - isreindex
    - parallel
    argTypes:
    - Relation
    - Relation
    - IndexInfo*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3180
      start: 3001
    functionDepth: 6
    functionLinenumber: 3001
    functionLinenumberEnd: 3180
    functionName: index_build
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 5
    functionsReached:
    - HeapTupleIsValid
    - SearchSysCacheCopy1
    - index_update_stats
    - NewGUCNestLevel
    - RelationGetRelationName
    - GetUserIdAndSecContext
    - SetUserIdAndSecContext
    - plan_create_index_workers
    - RelationGetRelid
    - table_open
    - heap_freetuple
    - GETSTRUCT
    - Relation::rd_indam::ambuild
    - PointerIsValid
    - RestrictSearchPath
    - pgstat_progress_update_multi_param
    - CommandCounterIncrement
    - AtEOXact_GUC
    - RelationGetSmgr
    - elog
    - smgrexists
    - table_close
    - IsNormalProcessingMode
    - ObjectIdGetDatum
    - IndexCheckExclusion
    - smgrcreate
    - Assert
    - RelationIsValid
    - Relation::rd_indam::ambuildempty
    - CatalogTupleUpdate
    - errmsg_internal
    - ereport
    - log_smgrcreate
    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)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ReindexIsCurrentlyProcessingIndex
      Src: /src/postgres/src/backend/catalog/index.c:3213,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/index.c:3213,1
    - Dst: ResetReindexProcessing
      Src: /src/postgres/src/backend/catalog/index.c:3214,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/catalog/index.c:3220,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/catalog/index.c:3221,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/catalog/index.c:3222,1
    - Dst: ExecPrepareQual
      Src: /src/postgres/src/backend/catalog/index.c:3228,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/catalog/index.c:3233,1
    - Dst: GetLatestSnapshot
      Src: /src/postgres/src/backend/catalog/index.c:3233,1
    - Dst: table_beginscan_strat
      Src: /src/postgres/src/backend/catalog/index.c:3234,1
    - Dst: table_scan_getnextslot
      Src: /src/postgres/src/backend/catalog/index.c:3241,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/catalog/index.c:3243,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/catalog/index.c:3250,1
    - Dst: FormIndexDatum
      Src: /src/postgres/src/backend/catalog/index.c:3257,1
    - Dst: check_exclusion_constraint
      Src: /src/postgres/src/backend/catalog/index.c:3266,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/catalog/index.c:3271,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/catalog/index.c:3274,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/catalog/index.c:3275,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/catalog/index.c:3277,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/catalog/index.c:3279,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 3
    argNames:
    - heapRelation
    - indexRelation
    - indexInfo
    argTypes:
    - Relation
    - Relation
    - IndexInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3284
      start: 3194
    functionDepth: 4
    functionLinenumber: 3194
    functionLinenumberEnd: 3284
    functionName: IndexCheckExclusion
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 1
    functionsReached:
    - table_slot_create
    - CHECK_FOR_INTERRUPTS
    - table_scan_getnextslot
    - ResetReindexProcessing
    - MemoryContextReset
    - GetPerTupleExprContext
    - CreateExecutorState
    - table_endscan
    - ExecPrepareQual
    - RelationGetRelid
    - RegisterSnapshot
    - FormIndexDatum
    - ExecQual
    - FreeExecutorState
    - ExecDropSingleTupleTableSlot
    - GetLatestSnapshot
    - check_exclusion_constraint
    - table_beginscan_strat
    - ReindexIsCurrentlyProcessingIndex
    - UnregisterSnapshot
    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:3374,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:3378,1
    - Dst: GetUserIdAndSecContext
      Src: /src/postgres/src/backend/catalog/index.c:3385,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/catalog/index.c:3386,1
    - Dst: NewGUCNestLevel
      Src: /src/postgres/src/backend/catalog/index.c:3388,1
    - Dst: RestrictSearchPath
      Src: /src/postgres/src/backend/catalog/index.c:3389,1
    - Dst: index_open
      Src: /src/postgres/src/backend/catalog/index.c:3391,1
    - Dst: BuildIndexInfo
      Src: /src/postgres/src/backend/catalog/index.c:3398,1
    - Dst: tuplesort_begin_datum
      Src: /src/postgres/src/backend/catalog/index.c:3421,1
    - Dst: index_bulk_delete
      Src: /src/postgres/src/backend/catalog/index.c:3428,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/catalog/index.c:3443,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/catalog/index.c:3445,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/catalog/index.c:3450,1
    - Dst: table_index_validate_scan
      Src: /src/postgres/src/backend/catalog/index.c:3452,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/catalog/index.c:3459,1
    - Dst: index_insert_cleanup
      Src: /src/postgres/src/backend/catalog/index.c:3462,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:3464,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/backend/catalog/index.c:3469,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/catalog/index.c:3472,1
    - Dst: index_close
      Src: /src/postgres/src/backend/catalog/index.c:3475,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:3476,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 34
    argCount: 3
    argNames:
    - heapId
    - indexId
    - snapshot
    argTypes:
    - Oid
    - Oid
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3477
      start: 3349
    functionDepth: 3
    functionLinenumber: 3349
    functionLinenumberEnd: 3477
    functionName: validate_index
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - table_index_validate_scan
    - NewGUCNestLevel
    - GetUserIdAndSecContext
    - SetUserIdAndSecContext
    - index_close
    - table_open
    - index_bulk_delete
    - tuplesort_begin_datum
    - index_insert_cleanup
    - tuplesort_end
    - BuildIndexInfo
    - pgstat_progress_update_multi_param
    - RestrictSearchPath
    - AtEOXact_GUC
    - elog
    - table_close
    - pgstat_progress_update_param
    - tuplesort_performsort
    - index_open
    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:3486,1
    - Dst: tuplesort_putdatum
      Src: /src/postgres/src/backend/catalog/index.c:3488,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/catalog/index.c:3488,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - itemptr
    - opaque
    argTypes:
    - ItemPointer
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3491
      start: 3482
    functionDepth: 2
    functionLinenumber: 3482
    functionLinenumberEnd: 3491
    functionName: validate_index_callback
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - tuplesort_putdatum
    - Int64GetDatum
    - itemptr_encode
    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:3510,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/index.c:3512,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:3513,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:3514,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:3515,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:3516,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3523,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3524,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3525,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3530,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3531,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3532,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3563,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3564,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3565,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/index.c:3572,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:3574,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 2
    argNames:
    - indexId
    - action
    argTypes:
    - Oid
    - IndexStateFlagsAction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3575
      start: 3502
    functionDepth: 3
    functionLinenumber: 3502
    functionLinenumberEnd: 3575
    functionName: index_set_state_flags
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 3
    functionsReached:
    - Assert
    - table_open
    - HeapTupleIsValid
    - CatalogTupleUpdate
    - SearchSysCacheCopy1
    - GETSTRUCT
    - elog
    - table_close
    - ObjectIdGetDatum
    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:3589,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:3589,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:3590,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:3594,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:3596,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:3597,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/index.c:3600,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - indexId
    - missing_ok
    argTypes:
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3602
      start: 3582
    functionDepth: 1
    functionLinenumber: 3582
    functionLinenumberEnd: 3602
    functionName: IndexGetRelation
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 6
    functionsReached:
    - Assert
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - 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:3624,1
    - Dst: IndexGetRelation
      Src: /src/postgres/src/backend/catalog/index.c:3630,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:3633,1
    - Dst: try_table_open
      Src: /src/postgres/src/backend/catalog/index.c:3637,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:3639,1
    - Dst: GetUserIdAndSecContext
      Src: /src/postgres/src/backend/catalog/index.c:3650,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/catalog/index.c:3651,1
    - Dst: NewGUCNestLevel
      Src: /src/postgres/src/backend/catalog/index.c:3653,1
    - Dst: RestrictSearchPath
      Src: /src/postgres/src/backend/catalog/index.c:3654,1
    - Dst: pgstat_progress_start_command
      Src: /src/postgres/src/backend/catalog/index.c:3667,1
    - Dst: pgstat_progress_update_multi_param
      Src: /src/postgres/src/backend/catalog/index.c:3669,1
    - Dst: try_index_open
      Src: /src/postgres/src/backend/catalog/index.c:3677,1
    - Dst: index_open
      Src: /src/postgres/src/backend/catalog/index.c:3679,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/backend/catalog/index.c:3685,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/catalog/index.c:3688,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:3691,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/catalog/index.c:3696,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/index.c:3707,1
    - Dst: EventTriggerCollectSimpleCommand
      Src: /src/postgres/src/backend/catalog/index.c:3708,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:3718,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/index.c:3719,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/index.c:3719,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/index.c:3720,1
    - Dst: RELATION_IS_OTHER_TEMP
      Src: /src/postgres/src/backend/catalog/index.c:3726,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:3727,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:3728,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:3729,1
    - Dst: IsToastNamespace
      Src: /src/postgres/src/backend/catalog/index.c:3736,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/index.c:3736,1
    - Dst: get_index_isvalid
      Src: /src/postgres/src/backend/catalog/index.c:3737,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:3738,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:3739,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:3740,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:3752,1
    - Dst: IsSystemRelation
      Src: /src/postgres/src/backend/catalog/index.c:3753,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:3754,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:3755,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:3756,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/index.c:3757,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:3760,1
    - Dst: CheckRelationTableSpaceMove
      Src: /src/postgres/src/backend/catalog/index.c:3761,1
    - Dst: CheckTableNotInUse
      Src: /src/postgres/src/backend/catalog/index.c:3768,1
    - Dst: SetRelationTableSpace
      Src: /src/postgres/src/backend/catalog/index.c:3774,1
    - Dst: RelationDropStorage
      Src: /src/postgres/src/backend/catalog/index.c:3779,1
    - Dst: RelationAssumeNewRelfilelocator
      Src: /src/postgres/src/backend/catalog/index.c:3780,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/index.c:3783,1
    - Dst: TransferPredicateLocksToHeapRelation
      Src: /src/postgres/src/backend/catalog/index.c:3790,1
    - Dst: BuildIndexInfo
      Src: /src/postgres/src/backend/catalog/index.c:3793,1
    - Dst: SetReindexProcessing
      Src: /src/postgres/src/backend/catalog/index.c:3807,1
    - Dst: RelationSetNewRelfilenumber
      Src: /src/postgres/src/backend/catalog/index.c:3810,1
    - Dst: index_build
      Src: /src/postgres/src/backend/catalog/index.c:3814,1
    - Dst: ResetReindexProcessing
      Src: /src/postgres/src/backend/catalog/index.c:3817,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:3854,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/index.c:3856,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/index.c:3857,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/index.c:3858,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:3859,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/index.c:3860,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/index.c:3875,1
    - Dst: CacheInvalidateRelcache
      Src: /src/postgres/src/backend/catalog/index.c:3884,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:3887,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:3892,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:3893,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/index.c:3894,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/catalog/index.c:3895,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/catalog/index.c:3896,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/backend/catalog/index.c:3899,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/catalog/index.c:3902,1
    - Dst: index_close
      Src: /src/postgres/src/backend/catalog/index.c:3905,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:3906,1
    - Dst: pgstat_progress_end_command
      Src: /src/postgres/src/backend/catalog/index.c:3909,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: 3910
      start: 3607
    functionDepth: 7
    functionLinenumber: 3607
    functionLinenumberEnd: 3910
    functionName: reindex_index
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 0
    functionsReached:
    - IndexGetRelation
    - ResetReindexProcessing
    - RelationAssumeNewRelfilelocator
    - IsToastNamespace
    - SearchSysCacheCopy1
    - HeapTupleIsValid
    - pgstat_progress_start_command
    - pg_rusage_show
    - NewGUCNestLevel
    - RelationGetRelationName
    - index_build
    - GetUserIdAndSecContext
    - SetUserIdAndSecContext
    - pgstat_progress_end_command
    - get_rel_name
    - try_index_open
    - ObjectAddressSet
    - table_open
    - EventTriggerCollectSimpleCommand
    - RelationDropStorage
    - errdetail_internal
    - index_close
    - GETSTRUCT
    - RelationSetNewRelfilenumber
    - CheckRelationTableSpaceMove
    - try_table_open
    - get_index_isvalid
    - BuildIndexInfo
    - errmsg
    - RestrictSearchPath
    - pgstat_progress_update_multi_param
    - AtEOXact_GUC
    - CommandCounterIncrement
    - SetReindexProcessing
    - get_namespace_name
    - elog
    - OidIsValid
    - RelationGetNamespace
    - table_close
    - ObjectIdGetDatum
    - RELATION_IS_OTHER_TEMP
    - SetRelationTableSpace
    - IsSystemRelation
    - pg_rusage_init
    - TransferPredicateLocksToHeapRelation
    - pgstat_progress_update_param
    - CatalogTupleUpdate
    - CacheInvalidateRelcache
    - ereport
    - CheckTableNotInUse
    - errcode
    - index_open
    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:3965,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/index.c:3967,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:3978,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/index.c:3979,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/index.c:3979,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/index.c:3980,1
    - Dst: RelationGetIndexList
      Src: /src/postgres/src/backend/catalog/index.c:3988,1
    - Dst: SetReindexPending
      Src: /src/postgres/src/backend/catalog/index.c:3993,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/index.c:3999,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:4016,1
    - Dst: reindex_relation
      Src: /src/postgres/src/backend/catalog/index.c:4028,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/index.c:4046,1
    - Dst: get_rel_namespace
      Src: /src/postgres/src/backend/catalog/index.c:4047,1
    - Dst: IsToastNamespace
      Src: /src/postgres/src/backend/catalog/index.c:4054,1
    - Dst: get_index_isvalid
      Src: /src/postgres/src/backend/catalog/index.c:4055,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:4057,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:4058,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:4059,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/index.c:4060,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/index.c:4061,1
    - Dst: RemoveReindexPending
      Src: /src/postgres/src/backend/catalog/index.c:4069,1
    - Dst: reindex_index
      Src: /src/postgres/src/backend/catalog/index.c:4073,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/index.c:4076,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:4079,1
    - Dst: ReindexIsProcessingIndex
      Src: /src/postgres/src/backend/catalog/index.c:4079,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/catalog/index.c:4082,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/index.c:4090,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 4
    argNames:
    - stmt
    - relid
    - flags
    - params
    argTypes:
    - ReindexStmt*
    - Oid
    - int
    - ReindexParams*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4095
      start: 3947
    functionDepth: 8
    functionLinenumber: 3947
    functionLinenumberEnd: 4095
    functionName: reindex_relation
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 1
    functionsReached:
    - IsToastNamespace
    - get_rel_namespace
    - RelationGetRelationName
    - get_rel_name
    - table_open
    - RelationGetIndexList
    - reindex_relation
    - try_table_open
    - get_index_isvalid
    - errmsg
    - RemoveReindexPending
    - CommandCounterIncrement
    - get_namespace_name
    - ReindexIsProcessingIndex
    - elog
    - RelationGetNamespace
    - OidIsValid
    - table_close
    - SetReindexPending
    - Assert
    - pgstat_progress_update_param
    - ereport
    - reindex_index
    - lfirst_oid
    - errcode
    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:4046,1
    - Dst: get_rel_namespace
      Src: /src/postgres/src/backend/catalog/index.c:4047,1
    - Dst: IsToastNamespace
      Src: /src/postgres/src/backend/catalog/index.c:4054,1
    - Dst: get_index_isvalid
      Src: /src/postgres/src/backend/catalog/index.c:4055,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/index.c:4057,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/index.c:4058,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/index.c:4059,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/index.c:4060,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/index.c:4061,1
    - Dst: RemoveReindexPending
      Src: /src/postgres/src/backend/catalog/index.c:4069,1
    - Dst: reindex_index
      Src: /src/postgres/src/backend/catalog/index.c:4073,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/index.c:4076,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/index.c:4079,1
    - Dst: ReindexIsProcessingIndex
      Src: /src/postgres/src/backend/catalog/index.c:4079,1
    - Dst: pgstat_progress_update_param
      Src: /src/postgres/src/backend/catalog/index.c:4082,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4085
      start: 4044
    functionDepth: 8
    functionLinenumber: 4044
    functionLinenumberEnd: 4085
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 346
    functionsReached:
    - errmsg
    - errcode
    - Assert
    - get_rel_name
    - RemoveReindexPending
    - CommandCounterIncrement
    - pgstat_progress_update_param
    - IsToastNamespace
    - get_namespace_name
    - ereport
    - ReindexIsProcessingIndex
    - reindex_index
    - get_rel_namespace
    - lfirst_oid
    - get_index_isvalid
    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: 4122
      start: 4118
    functionDepth: 0
    functionLinenumber: 4118
    functionLinenumberEnd: 4122
    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: 4132
      start: 4128
    functionDepth: 0
    functionLinenumber: 4128
    functionLinenumberEnd: 4132
    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:4143,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - indexOid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4144
      start: 4139
    functionDepth: 3
    functionLinenumber: 4139
    functionLinenumberEnd: 4144
    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:4153,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:4153,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:4153,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/index.c:4155,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:4156,1
    - Dst: RemoveReindexPending
      Src: /src/postgres/src/backend/catalog/index.c:4160,1
    - Dst: GetCurrentTransactionNestLevel
      Src: /src/postgres/src/backend/catalog/index.c:4162,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - heapOid
    - indexOid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4163
      start: 4150
    functionDepth: 1
    functionLinenumber: 4150
    functionLinenumberEnd: 4163
    functionName: SetReindexProcessing
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 1
    functionsReached:
    - Assert
    - RemoveReindexPending
    - GetCurrentTransactionNestLevel
    - elog
    - OidIsValid
    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: 4175
      start: 4169
    functionDepth: 0
    functionLinenumber: 4169
    functionLinenumberEnd: 4175
    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:4188,1
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/catalog/index.c:4189,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:4190,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/catalog/index.c:4191,1
    - Dst: GetCurrentTransactionNestLevel
      Src: /src/postgres/src/backend/catalog/index.c:4192,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - indexes
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4193
      start: 4183
    functionDepth: 5
    functionLinenumber: 4183
    functionLinenumberEnd: 4193
    functionName: SetReindexPending
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 1
    functionsReached:
    - list_copy
    - elog
    - GetCurrentTransactionNestLevel
    - IsInParallelMode
    linkageType: ''
    returnType: void
    signature: void SetReindexPending(List *indexes)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/catalog/index.c:4202,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/index.c:4203,1
    - Dst: list_delete_oid
      Src: /src/postgres/src/backend/catalog/index.c:4204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - indexOid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4206
      start: 4199
    functionDepth: 5
    functionLinenumber: 4199
    functionLinenumberEnd: 4206
    functionName: RemoveReindexPending
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 3
    functionsReached:
    - elog
    - list_delete_oid
    - IsInParallelMode
    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: 4235
      start: 4212
    functionDepth: 0
    functionLinenumber: 4212
    functionLinenumberEnd: 4235
    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:4245,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/index.c:4245,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4246
      start: 4241
    functionDepth: 1
    functionLinenumber: 4241
    functionLinenumberEnd: 4246
    functionName: EstimateReindexStateSpace
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 1
    functionsReached:
    - mul_size
    - list_length
    linkageType: ''
    returnType: Size
    signature: Size EstimateReindexStateSpace(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/index.c:4261,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/index.c:4262,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/index.c:4263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - maxsize
    - start_address
    argTypes:
    - Size
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4264
      start: 4252
    functionDepth: 1
    functionLinenumber: 4252
    functionLinenumberEnd: 4264
    functionName: SerializeReindexState
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 1
    functionsReached:
    - lfirst_oid
    - foreach
    - list_length
    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:4280,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/index.c:4281,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/index.c:4284,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/index.c:4286,1
    - Dst: GetCurrentTransactionNestLevel
      Src: /src/postgres/src/backend/catalog/index.c:4289,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - reindexstate
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4290
      start: 4270
    functionDepth: 6
    functionLinenumber: 4270
    functionLinenumberEnd: 4290
    functionName: RestoreReindexState
    functionSourceFile: /src/postgres/src/backend/catalog/index.c
    functionUses: 1
    functionsReached:
    - lappend_oid
    - Assert
    - MemoryContextSwitchTo
    - GetCurrentTransactionNestLevel
    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:
    - errmsg
    - pfree
    - ereport
    - ACLITEM_SET_PRIVS_GOPTIONS
    - aclupdate
    - lfirst_oid
    - errcode
    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: 347
    functionsReached:
    - errmsg
    - pfree
    - ereport
    - ACLITEM_SET_PRIVS_GOPTIONS
    - aclupdate
    - lfirst_oid
    - errcode
    linkageType: ''
    returnType: void
    signature: void foreach(j, grantees)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:285,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:295,1
    - Dst: pg_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:307,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/catalog/aclchk.c:308,1
    - Dst: aclcheck_error_col
      Src: /src/postgres/src/backend/catalog/aclchk.c:312,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/aclchk.c:314,1
    - Dst: ACL_OPTION_TO_PRIVS
      Src: /src/postgres/src/backend/catalog/aclchk.c:325,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:331,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:332,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:333,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:336,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:337,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:338,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:344,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:345,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:346,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:349,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:350,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:351,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:360,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:361,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:362,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:365,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:366,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:367,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:373,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:374,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:375,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:378,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:379,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:380,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 80
    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: 386
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 386
    functionName: restrict_and_check_grant
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ACL_GRANT_OPTION_FOR
    - aclcheck_error_col
    - aclcheck_error
    - ereport
    - elog
    - ACL_OPTION_TO_PRIVS
    - pg_aclmask
    - errcode
    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: 29
    BranchProfiles: []
    Callsites:
    - Dst: get_rolespec_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:403,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/aclchk.c:409,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:410,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:411,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:412,1
    - Dst: objectNamesToOids
      Src: /src/postgres/src/backend/catalog/aclchk.c:425,1
    - Dst: objectsInSchemaToOids
      Src: /src/postgres/src/backend/catalog/aclchk.c:429,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:433,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:449,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:451,1
    - Dst: get_rolespec_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:460,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:463,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: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:532,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:536,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:539,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:561,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:563,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:573,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:574,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:575,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/aclchk.c:576,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:581,1
    - Dst: string_to_privilege
      Src: /src/postgres/src/backend/catalog/aclchk.c:582,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:585,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:586,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:587,1
    - Dst: privilege_to_string
      Src: /src/postgres/src/backend/catalog/aclchk.c:587,1
    - Dst: ExecGrantStmt_oids
      Src: /src/postgres/src/backend/catalog/aclchk.c:593,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 121
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - GrantStmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 391
    functionDepth: 6
    functionLinenumber: 391
    functionLinenumberEnd: 594
    functionName: ExecuteGrantStmt
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 2
    functionsReached:
    - get_rolespec_oid
    - errmsg
    - GetUserId
    - lfirst
    - lappend_oid
    - ExecGrantStmt_oids
    - ereport
    - foreach
    - elog
    - lappend
    - privilege_to_string
    - objectsInSchemaToOids
    - string_to_privilege
    - gettext_noop
    - errcode
    - objectNamesToOids
    linkageType: ''
    returnType: void
    signature: void ExecuteGrantStmt(GrantStmt *stmt)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: ExecGrant_Relation
      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:615,1
    - Dst: ExecGrant_common
      Src: /src/postgres/src/backend/catalog/aclchk.c:618,1
    - Dst: ExecGrant_common
      Src: /src/postgres/src/backend/catalog/aclchk.c:621,1
    - Dst: ExecGrant_common
      Src: /src/postgres/src/backend/catalog/aclchk.c:626,1
    - Dst: ExecGrant_common
      Src: /src/postgres/src/backend/catalog/aclchk.c:629,1
    - Dst: ExecGrant_Largeobject
      Src: /src/postgres/src/backend/catalog/aclchk.c:632,1
    - Dst: ExecGrant_common
      Src: /src/postgres/src/backend/catalog/aclchk.c:635,1
    - Dst: ExecGrant_common
      Src: /src/postgres/src/backend/catalog/aclchk.c:638,1
    - Dst: ExecGrant_Parameter
      Src: /src/postgres/src/backend/catalog/aclchk.c:641,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:644,1
    - Dst: EventTriggerSupportsObjectType
      Src: /src/postgres/src/backend/catalog/aclchk.c:654,1
    - Dst: EventTriggerCollectGrant
      Src: /src/postgres/src/backend/catalog/aclchk.c:655,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 44
    argCount: 1
    argNames:
    - istmt
    argTypes:
    - InternalGrant*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 601
    functionDepth: 1
    functionLinenumber: 601
    functionLinenumberEnd: 656
    functionName: ExecGrantStmt_oids
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - ExecGrant_common
    - ExecGrant_Relation
    - ExecGrant_Parameter
    - ExecGrant_Largeobject
    - elog
    - EventTriggerCollectGrant
    - EventTriggerSupportsObjectType
    linkageType: ''
    returnType: void
    signature: void ExecGrantStmt_oids(InternalGrant *istmt)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/aclchk.c:670,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:679,1
    - Dst: get_object_address
      Src: /src/postgres/src/backend/catalog/aclchk.c:683,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:683,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:684,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:696,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:698,1
    - Dst: RangeVarGetRelid
      Src: /src/postgres/src/backend/catalog/aclchk.c:701,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:702,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:715,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:717,1
    - Dst: makeTypeNameFromNameList
      Src: /src/postgres/src/backend/catalog/aclchk.c:718,1
    - Dst: get_object_address
      Src: /src/postgres/src/backend/catalog/aclchk.c:722,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/aclchk.c:723,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:724,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:733,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/aclchk.c:745,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:745,1
    - Dst: ParameterAclLookup
      Src: /src/postgres/src/backend/catalog/aclchk.c:746,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:748,1
    - Dst: ParameterAclCreate
      Src: /src/postgres/src/backend/catalog/aclchk.c:750,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/aclchk.c:757,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:759,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:760,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 3
    argNames:
    - objtype
    - objnames
    - is_grant
    argTypes:
    - ObjectType
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 663
    functionDepth: 6
    functionLinenumber: 663
    functionLinenumberEnd: 766
    functionName: objectNamesToOids
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - makeTypeNameFromNameList
    - Assert
    - get_object_address
    - lappend_oid
    - CommandCounterIncrement
    - ParameterAclCreate
    - RangeVarGetRelid
    - foreach
    - ParameterAclLookup
    - strVal
    - OidIsValid
    - lfirst
    linkageType: ''
    returnType: List
    signature: 'List *

      objectNamesToOids(ObjectType objtype, List *objnames, bool is_grant)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/aclchk.c:783,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:783,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:787,1
    - Dst: getRelationsInNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:792,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/aclchk.c:793,1
    - Dst: getRelationsInNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:794,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/aclchk.c:795,1
    - Dst: getRelationsInNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:796,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/aclchk.c:797,1
    - Dst: getRelationsInNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:798,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/aclchk.c:799,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:804,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/aclchk.c:805,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:818,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:821,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:825,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:828,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:830,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:833,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:835,1
    - Dst: table_beginscan_catalog
      Src: /src/postgres/src/backend/catalog/aclchk.c:836,1
    - Dst: heap_getnext
      Src: /src/postgres/src/backend/catalog/aclchk.c:838,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:840,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:842,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:845,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:846,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:851,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 42
    argCount: 2
    argNames:
    - objtype
    - nspnames
    argTypes:
    - ObjectType
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 775
    functionDepth: 7
    functionLinenumber: 775
    functionLinenumberEnd: 857
    functionName: objectsInSchemaToOids
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - getRelationsInNamespace
    - list_concat
    - table_open
    - ObjectIdGetDatum
    - table_beginscan_catalog
    - lappend_oid
    - GETSTRUCT
    - ScanKeyInit
    - heap_getnext
    - table_close
    - elog
    - CharGetDatum
    - strVal
    - LookupExplicitNamespace
    - lfirst
    - table_endscan
    linkageType: ''
    returnType: List
    signature: 'List *

      objectsInSchemaToOids(ObjectType objtype, List *nspnames)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/aclchk.c:783,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:783,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:787,1
    - Dst: getRelationsInNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:792,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/aclchk.c:793,1
    - Dst: getRelationsInNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:794,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/aclchk.c:795,1
    - Dst: getRelationsInNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:796,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/aclchk.c:797,1
    - Dst: getRelationsInNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:798,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/aclchk.c:799,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:804,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/aclchk.c:805,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:818,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:821,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:825,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:828,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:830,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:833,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:835,1
    - Dst: table_beginscan_catalog
      Src: /src/postgres/src/backend/catalog/aclchk.c:836,1
    - Dst: heap_getnext
      Src: /src/postgres/src/backend/catalog/aclchk.c:838,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:840,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:842,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:845,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:846,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:851,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 781
    functionDepth: 7
    functionLinenumber: 781
    functionLinenumberEnd: 854
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 349
    functionsReached:
    - getRelationsInNamespace
    - list_concat
    - table_open
    - ObjectIdGetDatum
    - table_beginscan_catalog
    - lappend_oid
    - GETSTRUCT
    - ScanKeyInit
    - heap_getnext
    - table_close
    - elog
    - CharGetDatum
    - strVal
    - LookupExplicitNamespace
    - lfirst
    - table_endscan
    linkageType: ''
    returnType: void
    signature: void foreach(cell, nspnames)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:873,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:876,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:877,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:880,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:882,1
    - Dst: table_beginscan_catalog
      Src: /src/postgres/src/backend/catalog/aclchk.c:883,1
    - Dst: heap_getnext
      Src: /src/postgres/src/backend/catalog/aclchk.c:885,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:887,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:889,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:892,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:893,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - namespaceId
    - relkind
    argTypes:
    - Oid
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 864
    functionDepth: 7
    functionLinenumber: 864
    functionLinenumberEnd: 896
    functionName: getRelationsInNamespace
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 2
    functionsReached:
    - table_open
    - lappend_oid
    - table_beginscan_catalog
    - GETSTRUCT
    - ScanKeyInit
    - heap_getnext
    - CharGetDatum
    - table_close
    - ObjectIdGetDatum
    - table_endscan
    linkageType: ''
    returnType: List
    signature: 'List *

      getRelationsInNamespace(Oid namespaceId, char relkind)'
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:916,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:918,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:920,1
    - Dst: errorConflictingDefElem
      Src: /src/postgres/src/backend/catalog/aclchk.c:923,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:926,1
    - Dst: errorConflictingDefElem
      Src: /src/postgres/src/backend/catalog/aclchk.c:929,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:933,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:957,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:959,1
    - Dst: get_rolespec_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:968,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:971,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:982,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:986,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:990,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:994,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:998,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:1002,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:1006,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:1010,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:1013,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:1035,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:1037,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1041,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1042,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1043,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:1046,1
    - Dst: string_to_privilege
      Src: /src/postgres/src/backend/catalog/aclchk.c:1047,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1050,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1051,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1052,1
    - Dst: privilege_to_string
      Src: /src/postgres/src/backend/catalog/aclchk.c:1052,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/aclchk.c:1061,1
    - Dst: SetDefaultACLsInSchemas
      Src: /src/postgres/src/backend/catalog/aclchk.c:1063,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:1072,1
    - Dst: get_rolespec_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1074,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/catalog/aclchk.c:1076,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/aclchk.c:1076,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1077,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1078,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1079,1
    - Dst: SetDefaultACLsInSchemas
      Src: /src/postgres/src/backend/catalog/aclchk.c:1081,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 99
    argCount: 2
    argNames:
    - pstate
    - stmt
    argTypes:
    - ParseState*
    - AlterDefaultPrivilegesStmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1084
      start: 902
    functionDepth: 6
    functionLinenumber: 902
    functionLinenumberEnd: 1084
    functionName: ExecAlterDefaultPrivilegesStmt
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - get_rolespec_oid
    - errcode
    - errmsg
    - string_to_privilege
    - GetUserId
    - lappend_oid
    - errorConflictingDefElem
    - ereport
    - foreach
    - has_privs_of_role
    - SetDefaultACLsInSchemas
    - elog
    - privilege_to_string
    - strcmp
    - gettext_noop
    - lfirst
    linkageType: ''
    returnType: void
    signature: void ExecAlterDefaultPrivilegesStmt(ParseState *pstate, AlterDefaultPrivilegesStmt
      *stmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:1072,1
    - Dst: get_rolespec_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1074,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/catalog/aclchk.c:1076,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/aclchk.c:1076,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1077,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1078,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1079,1
    - Dst: SetDefaultACLsInSchemas
      Src: /src/postgres/src/backend/catalog/aclchk.c:1081,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1082
      start: 1070
    functionDepth: 1
    functionLinenumber: 1070
    functionLinenumberEnd: 1082
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 350
    functionsReached:
    - get_rolespec_oid
    - lfirst
    - errcode
    - errmsg
    - ereport
    - has_privs_of_role
    - SetDefaultACLsInSchemas
    - GetUserId
    linkageType: ''
    returnType: void
    signature: void foreach(rolecell, rolespecs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SetDefaultACL
      Src: /src/postgres/src/backend/catalog/aclchk.c:1099,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/aclchk.c:1108,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:1108,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1110,1
    - Dst: SetDefaultACL
      Src: /src/postgres/src/backend/catalog/aclchk.c:1124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - iacls
    - nspnames
    argTypes:
    - InternalDefaultACL*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1091
    functionDepth: 3
    functionLinenumber: 1091
    functionLinenumberEnd: 1127
    functionName: SetDefaultACLsInSchemas
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 2
    functionsReached:
    - SetDefaultACL
    - get_namespace_oid
    - lfirst
    - strVal
    linkageType: ''
    returnType: void
    signature: void SetDefaultACLsInSchemas(InternalDefaultACL *iacls, List *nspnames)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/aclchk.c:1108,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:1108,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1110,1
    - Dst: SetDefaultACL
      Src: /src/postgres/src/backend/catalog/aclchk.c:1124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1125
      start: 1106
    functionDepth: 3
    functionLinenumber: 1106
    functionLinenumberEnd: 1125
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 350
    functionsReached:
    - lfirst
    - SetDefaultACL
    - get_namespace_oid
    - strVal
    linkageType: ''
    returnType: void
    signature: void foreach(nspcell, nspnames)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:1150,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1158,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:1159,1
    - Dst: make_empty_acl
      Src: /src/postgres/src/backend/catalog/aclchk.c:1161,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1194,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1195,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1196,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1197,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1204,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1205,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1206,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1207,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:1214,1
    - Dst: SearchSysCache3
      Src: /src/postgres/src/backend/catalog/aclchk.c:1221,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1222,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1223,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1224,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1226,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:1231,1
    - Dst: DatumGetAclPCopy
      Src: /src/postgres/src/backend/catalog/aclchk.c:1235,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:1253,1
    - Dst: aclcopy
      Src: /src/postgres/src/backend/catalog/aclchk.c:1258,1
    - Dst: merge_acl_with_grant
      Src: /src/postgres/src/backend/catalog/aclchk.c:1268,1
    - Dst: aclitemsort
      Src: /src/postgres/src/backend/catalog/aclchk.c:1282,1
    - Dst: aclitemsort
      Src: /src/postgres/src/backend/catalog/aclchk.c:1283,1
    - Dst: aclequal
      Src: /src/postgres/src/backend/catalog/aclchk.c:1284,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:1297,1
    - Dst: performDeletion
      Src: /src/postgres/src/backend/catalog/aclchk.c:1300,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/aclchk.c:1313,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1315,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1316,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1317,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1318,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1319,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:1321,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:1321,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/aclchk.c:1322,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:1326,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1329,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:1332,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:1332,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/aclchk.c:1334,1
    - Dst: recordDependencyOnOwner
      Src: /src/postgres/src/backend/catalog/aclchk.c:1341,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1345,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/aclchk.c:1358,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:1365,1
    - Dst: updateAclDependencies
      Src: /src/postgres/src/backend/catalog/aclchk.c:1367,1
    - Dst: InvokeObjectPostCreateHook
      Src: /src/postgres/src/backend/catalog/aclchk.c:1374,1
    - Dst: InvokeObjectPostAlterHook
      Src: /src/postgres/src/backend/catalog/aclchk.c:1376,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1379,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:1380,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:1382,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/aclchk.c:1385,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 112
    argCount: 1
    argNames:
    - iacls
    argTypes:
    - InternalDefaultACL*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1386
      start: 1133
    functionDepth: 6
    functionLinenumber: 1133
    functionLinenumberEnd: 1386
    functionName: SetDefaultACL
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 2
    functionsReached:
    - HeapTupleIsValid
    - SysCacheGetAttr
    - InvokeObjectPostAlterHook
    - aclcopy
    - SearchSysCache3
    - CatalogTupleInsert
    - table_open
    - heap_modify_tuple
    - DatumGetAclPCopy
    - recordDependencyOnOwner
    - ReleaseSysCache
    - merge_acl_with_grant
    - GETSTRUCT
    - aclmembers
    - recordDependencyOn
    - aclitemsort
    - make_empty_acl
    - errmsg
    - heap_form_tuple
    - InvokeObjectPostCreateHook
    - CommandCounterIncrement
    - performDeletion
    - elog
    - OidIsValid
    - table_close
    - ObjectIdGetDatum
    - acldefault
    - updateAclDependencies
    - CatalogTupleUpdate
    - RelationGetDescr
    - ereport
    - PointerGetDatum
    - aclequal
    - CharGetDatum
    - GetNewOidWithIndex
    - errcode
    linkageType: ''
    returnType: void
    signature: void SetDefaultACL(InternalDefaultACL *iacls)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:1419,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:1421,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1424,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:1426,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/aclchk.c:1429,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1431,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:1432,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:1434,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:1461,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:1466,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:1467,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1472,1
    - Dst: SetDefaultACL
      Src: /src/postgres/src/backend/catalog/aclchk.c:1477,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:1520,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1524,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1528,1
    - Dst: ExecGrantStmt_oids
      Src: /src/postgres/src/backend/catalog/aclchk.c:1532,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 92
    argCount: 3
    argNames:
    - roleid
    - classid
    - objid
    argTypes:
    - Oid
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1534
      start: 1406
    functionDepth: 7
    functionLinenumber: 1406
    functionLinenumberEnd: 1534
    functionName: RemoveRoleFromObjectACL
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - SetDefaultACL
    - systable_beginscan
    - table_open
    - systable_getnext
    - HeapTupleIsValid
    - ExecGrantStmt_oids
    - GETSTRUCT
    - ScanKeyInit
    - list_make1_oid
    - elog
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    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:1554,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:1554,1
    - Dst: get_attnum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1557,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1559,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1560,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1561,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/aclchk.c:1562,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:1565,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: 1568
      start: 1544
    functionDepth: 1
    functionLinenumber: 1544
    functionLinenumberEnd: 1568
    functionName: expand_col_privileges
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - get_rel_name
    - ereport
    - get_attnum
    - elog
    - strVal
    - lfirst
    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:1554,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:1554,1
    - Dst: get_attnum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1557,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1559,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1560,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1561,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/aclchk.c:1562,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:1565,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1567
      start: 1552
    functionDepth: 1
    functionLinenumber: 1552
    functionLinenumberEnd: 1567
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 350
    functionsReached:
    - errmsg
    - errcode
    - get_rel_name
    - ereport
    - get_attnum
    - elog
    - strVal
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(cell, colnames)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/aclchk.c:1585,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/aclchk.c:1600,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1601,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1602,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1603,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:1604,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:1607,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:1609,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: 1617
      start: 1577
    functionDepth: 1
    functionLinenumber: 1577
    functionLinenumberEnd: 1617
    functionName: expand_all_col_privileges
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - Assert
    - SearchSysCache2
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - elog
    - Int16GetDatum
    - ObjectIdGetDatum
    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:1647,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1648,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1649,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1650,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:1651,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:1653,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:1659,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:1663,1
    - Dst: DatumGetAclPCopy
      Src: /src/postgres/src/backend/catalog/aclchk.c:1670,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:1672,1
    - Dst: aclconcat
      Src: /src/postgres/src/backend/catalog/aclchk.c:1681,1
    - Dst: select_best_grantor
      Src: /src/postgres/src/backend/catalog/aclchk.c:1684,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/aclchk.c:1684,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:1688,1
    - Dst: restrict_and_check_grant
      Src: /src/postgres/src/backend/catalog/aclchk.c:1699,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/aclchk.c:1704,1
    - Dst: merge_acl_with_grant
      Src: /src/postgres/src/backend/catalog/aclchk.c:1709,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:1719,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/catalog/aclchk.c:1730,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1732,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:1744,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:1744,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/aclchk.c:1747,1
    - Dst: recordExtensionInitPriv
      Src: /src/postgres/src/backend/catalog/aclchk.c:1750,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/catalog/aclchk.c:1751,1
    - Dst: updateAclDependencies
      Src: /src/postgres/src/backend/catalog/aclchk.c:1754,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:1760,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:1762,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: 1763
      start: 1623
    functionDepth: 6
    functionLinenumber: 1623
    functionLinenumberEnd: 1763
    functionName: ExecGrant_Attribute
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - HeapTupleIsValid
    - SysCacheGetAttr
    - GetUserId
    - pfree
    - NameStr
    - SearchSysCache2
    - ReleaseSysCache
    - heap_modify_tuple
    - DatumGetAclPCopy
    - merge_acl_with_grant
    - GETSTRUCT
    - ACL_NUM
    - aclmembers
    - Int16GetDatum
    - recordExtensionInitPriv
    - restrict_and_check_grant
    - elog
    - ObjectIdGetDatum
    - acldefault
    - updateAclDependencies
    - CatalogTupleUpdate
    - RelationGetDescr
    - PointerGetDatum
    - aclconcat
    - select_best_grantor
    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: 23
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:1775,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:1776,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:1778,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1780,1
    - Dst: SearchSysCacheLocked1
      Src: /src/postgres/src/backend/catalog/aclchk.c:1796,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:1796,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:1797,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:1798,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:1799,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1804,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1805,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1806,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/aclchk.c:1807,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1811,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1812,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1813,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/aclchk.c:1814,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1819,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1820,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1821,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/aclchk.c:1822,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1857,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1858,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1859,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/aclchk.c:1860,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:1874,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:1875,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:1876,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/catalog/aclchk.c:1888,1
    - Dst: expand_all_col_privileges
      Src: /src/postgres/src/backend/catalog/aclchk.c:1901,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:1913,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:1920,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:1923,1
    - Dst: DatumGetAclPCopy
      Src: /src/postgres/src/backend/catalog/aclchk.c:1932,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:1934,1
    - Dst: aclcopy
      Src: /src/postgres/src/backend/catalog/aclchk.c:1938,1
    - Dst: select_best_grantor
      Src: /src/postgres/src/backend/catalog/aclchk.c:1957,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/aclchk.c:1957,1
    - Dst: restrict_and_check_grant
      Src: /src/postgres/src/backend/catalog/aclchk.c:1976,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/aclchk.c:1979,1
    - Dst: merge_acl_with_grant
      Src: /src/postgres/src/backend/catalog/aclchk.c:1985,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:1998,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:2002,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:2004,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2004,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/aclchk.c:2007,1
    - Dst: UnlockTuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:2008,1
    - Dst: recordExtensionInitPriv
      Src: /src/postgres/src/backend/catalog/aclchk.c:2011,1
    - Dst: updateAclDependencies
      Src: /src/postgres/src/backend/catalog/aclchk.c:2014,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:2019,1
    - Dst: UnlockTuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:2022,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:2029,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/aclchk.c:2031,1
    - Dst: string_to_privilege
      Src: /src/postgres/src/backend/catalog/aclchk.c:2036,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:2039,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:2040,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:2041,1
    - Dst: privilege_to_string
      Src: /src/postgres/src/backend/catalog/aclchk.c:2042,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:2052,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:2053,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:2054,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2055,1
    - Dst: expand_col_privileges
      Src: /src/postgres/src/backend/catalog/aclchk.c:2060,1
    - Dst: ExecGrant_Attribute
      Src: /src/postgres/src/backend/catalog/aclchk.c:2075,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2077,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:2086,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:2087,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:2089,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/aclchk.c:2092,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:2095,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:2096,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 107
    argCount: 1
    argNames:
    - istmt
    argTypes:
    - InternalGrant*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2097
      start: 1768
    functionDepth: 7
    functionLinenumber: 1768
    functionLinenumberEnd: 2097
    functionName: ExecGrant_Relation
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - HeapTupleIsValid
    - SearchSysCacheLocked1
    - expand_all_col_privileges
    - SysCacheGetAttr
    - privilege_to_string
    - aclcopy
    - GetUserId
    - pfree
    - NameStr
    - ReleaseSysCache
    - table_open
    - heap_modify_tuple
    - DatumGetAclPCopy
    - merge_acl_with_grant
    - GETSTRUCT
    - foreach
    - aclmembers
    - ExecGrant_Attribute
    - recordExtensionInitPriv
    - errmsg
    - restrict_and_check_grant
    - CommandCounterIncrement
    - UnlockTuple
    - elog
    - expand_col_privileges
    - string_to_privilege
    - table_close
    - ObjectIdGetDatum
    - lfirst
    - acldefault
    - updateAclDependencies
    - CatalogTupleUpdate
    - RelationGetDescr
    - ereport
    - palloc0
    - PointerGetDatum
    - select_best_grantor
    - lfirst_oid
    - errcode
    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:2110,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:2112,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:2114,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:2116,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/catalog/aclchk.c:2128,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2128,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/catalog/aclchk.c:2129,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2129,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/catalog/aclchk.c:2130,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2130,1
    - Dst: SearchSysCacheLocked1
      Src: /src/postgres/src/backend/catalog/aclchk.c:2136,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:2136,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:2137,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:2138,1
    - Dst: get_object_class_descr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2138,1
    - Dst: object_check
      Src: /src/postgres/src/backend/catalog/aclchk.c:2144,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/aclchk.c:2150,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/aclchk.c:2150,1
    - Dst: get_object_attnum_owner
      Src: /src/postgres/src/backend/catalog/aclchk.c:2152,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2153,1
    - Dst: get_object_attnum_acl
      Src: /src/postgres/src/backend/catalog/aclchk.c:2155,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:2159,1
    - Dst: get_object_type
      Src: /src/postgres/src/backend/catalog/aclchk.c:2159,1
    - Dst: DatumGetAclPCopy
      Src: /src/postgres/src/backend/catalog/aclchk.c:2166,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:2168,1
    - Dst: select_best_grantor
      Src: /src/postgres/src/backend/catalog/aclchk.c:2172,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/aclchk.c:2172,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/aclchk.c:2176,1
    - Dst: get_object_attnum_name
      Src: /src/postgres/src/backend/catalog/aclchk.c:2177,1
    - Dst: restrict_and_check_grant
      Src: /src/postgres/src/backend/catalog/aclchk.c:2184,1
    - Dst: get_object_type
      Src: /src/postgres/src/backend/catalog/aclchk.c:2186,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2187,1
    - Dst: DatumGetName
      Src: /src/postgres/src/backend/catalog/aclchk.c:2187,1
    - Dst: merge_acl_with_grant
      Src: /src/postgres/src/backend/catalog/aclchk.c:2193,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:2202,1
    - Dst: get_object_attnum_acl
      Src: /src/postgres/src/backend/catalog/aclchk.c:2205,1
    - Dst: get_object_attnum_acl
      Src: /src/postgres/src/backend/catalog/aclchk.c:2206,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:2206,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:2208,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2208,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/aclchk.c:2211,1
    - Dst: UnlockTuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:2212,1
    - Dst: recordExtensionInitPriv
      Src: /src/postgres/src/backend/catalog/aclchk.c:2215,1
    - Dst: updateAclDependencies
      Src: /src/postgres/src/backend/catalog/aclchk.c:2218,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:2224,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:2226,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/aclchk.c:2229,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:2232,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 3
    argNames:
    - istmt
    - classid
    - default_privs
    argTypes:
    - InternalGrant*
    - Oid
    - AclMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2233
      start: 2099
    functionDepth: 6
    functionLinenumber: 2099
    functionLinenumberEnd: 2233
    functionName: ExecGrant_common
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - get_object_attnum_acl
    - HeapTupleIsValid
    - SysCacheGetAttrNotNull
    - SearchSysCacheLocked1
    - SysCacheGetAttr
    - palloc0_array
    - GetUserId
    - pfree
    - NameStr
    - ReleaseSysCache
    - table_open
    - heap_modify_tuple
    - DatumGetAclPCopy
    - merge_acl_with_grant
    - foreach
    - aclmembers
    - get_object_attnum_name
    - recordExtensionInitPriv
    - restrict_and_check_grant
    - get_object_catcache_oid
    - CommandCounterIncrement
    - DatumGetName
    - elog
    - object_check
    - UnlockTuple
    - table_close
    - get_object_attnum_owner
    - ObjectIdGetDatum
    - acldefault
    - updateAclDependencies
    - CatalogTupleUpdate
    - RelationGetDescr
    - get_object_type
    - get_object_class_descr
    - PointerGetDatum
    - DatumGetObjectId
    - select_best_grantor
    - lfirst_oid
    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:2240,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:2243,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:2244,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:2245,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2246,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/aclchk.c:2247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - istmt
    - tuple
    argTypes:
    - InternalGrant*
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2249
      start: 2235
    functionDepth: 1
    functionLinenumber: 2235
    functionLinenumberEnd: 2249
    functionName: ExecGrant_Language_check
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - errmsg
    - NameStr
    - GETSTRUCT
    - ereport
    - errdetail
    - errcode
    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:2260,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:2263,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:2265,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:2289,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:2292,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:2294,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/aclchk.c:2298,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:2299,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:2300,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:2302,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2309,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2311,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:2314,1
    - Dst: DatumGetAclPCopy
      Src: /src/postgres/src/backend/catalog/aclchk.c:2321,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:2323,1
    - Dst: select_best_grantor
      Src: /src/postgres/src/backend/catalog/aclchk.c:2327,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/aclchk.c:2327,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/catalog/aclchk.c:2335,1
    - Dst: restrict_and_check_grant
      Src: /src/postgres/src/backend/catalog/aclchk.c:2337,1
    - Dst: merge_acl_with_grant
      Src: /src/postgres/src/backend/catalog/aclchk.c:2345,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:2354,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:2359,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:2361,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2361,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/aclchk.c:2364,1
    - Dst: recordExtensionInitPriv
      Src: /src/postgres/src/backend/catalog/aclchk.c:2367,1
    - Dst: updateAclDependencies
      Src: /src/postgres/src/backend/catalog/aclchk.c:2370,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:2376,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:2378,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/aclchk.c:2381,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:2384,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 37
    argCount: 1
    argNames:
    - istmt
    argTypes:
    - InternalGrant*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2385
      start: 2251
    functionDepth: 6
    functionLinenumber: 2251
    functionLinenumberEnd: 2385
    functionName: ExecGrant_Largeobject
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - HeapTupleIsValid
    - snprintf
    - GetUserId
    - pfree
    - heap_getattr
    - table_open
    - heap_modify_tuple
    - DatumGetAclPCopy
    - merge_acl_with_grant
    - GETSTRUCT
    - ScanKeyInit
    - foreach
    - aclmembers
    - recordExtensionInitPriv
    - restrict_and_check_grant
    - CommandCounterIncrement
    - elog
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    - acldefault
    - systable_beginscan
    - updateAclDependencies
    - systable_getnext
    - CatalogTupleUpdate
    - RelationGetDescr
    - PointerGetDatum
    - select_best_grantor
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void ExecGrant_Largeobject(InternalGrant *istmt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:2392,1
    - Dst: IsTrueArrayType
      Src: /src/postgres/src/backend/catalog/aclchk.c:2395,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:2396,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:2397,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:2398,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/aclchk.c:2399,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:2401,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:2402,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:2403,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/aclchk.c:2404,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - istmt
    - tuple
    argTypes:
    - InternalGrant*
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2405
      start: 2387
    functionDepth: 1
    functionLinenumber: 2387
    functionLinenumberEnd: 2405
    functionName: ExecGrant_Type_check
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - errmsg
    - IsTrueArrayType
    - GETSTRUCT
    - ereport
    - errhint
    - errcode
    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:2416,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/aclchk.c:2418,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:2420,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:2437,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:2437,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:2438,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:2439,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/aclchk.c:2443,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/aclchk.c:2445,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2454,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:2460,1
    - Dst: DatumGetAclPCopy
      Src: /src/postgres/src/backend/catalog/aclchk.c:2467,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:2469,1
    - Dst: select_best_grantor
      Src: /src/postgres/src/backend/catalog/aclchk.c:2473,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/aclchk.c:2473,1
    - Dst: restrict_and_check_grant
      Src: /src/postgres/src/backend/catalog/aclchk.c:2482,1
    - Dst: merge_acl_with_grant
      Src: /src/postgres/src/backend/catalog/aclchk.c:2492,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:2501,1
    - Dst: aclequal
      Src: /src/postgres/src/backend/catalog/aclchk.c:2508,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:2508,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/aclchk.c:2510,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:2521,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:2523,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:2523,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/aclchk.c:2526,1
    - Dst: recordExtensionInitPriv
      Src: /src/postgres/src/backend/catalog/aclchk.c:2530,1
    - Dst: updateAclDependencies
      Src: /src/postgres/src/backend/catalog/aclchk.c:2534,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:2539,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:2540,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/aclchk.c:2543,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:2546,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 39
    argCount: 1
    argNames:
    - istmt
    argTypes:
    - InternalGrant*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2547
      start: 2407
    functionDepth: 6
    functionLinenumber: 2407
    functionLinenumberEnd: 2547
    functionName: ExecGrant_Parameter
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - HeapTupleIsValid
    - SysCacheGetAttrNotNull
    - SysCacheGetAttr
    - CatalogTupleDelete
    - GetUserId
    - pfree
    - ReleaseSysCache
    - table_open
    - heap_modify_tuple
    - DatumGetAclPCopy
    - merge_acl_with_grant
    - foreach
    - aclmembers
    - recordExtensionInitPriv
    - restrict_and_check_grant
    - CommandCounterIncrement
    - elog
    - table_close
    - ObjectIdGetDatum
    - acldefault
    - updateAclDependencies
    - CatalogTupleUpdate
    - TextDatumGetCString
    - RelationGetDescr
    - PointerGetDatum
    - SearchSysCache1
    - aclequal
    - select_best_grantor
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void ExecGrant_Parameter(InternalGrant *istmt)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2553,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2555,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2557,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2559,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2561,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2563,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2565,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2567,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2569,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2571,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2573,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2575,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2577,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2579,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2581,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/catalog/aclchk.c:2583,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:2585,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:2586,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:2587,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 35
    argCount: 1
    argNames:
    - privname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2589
      start: 2550
    functionDepth: 1
    functionLinenumber: 2550
    functionLinenumberEnd: 2589
    functionName: string_to_privilege
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 3
    functionsReached:
    - errmsg
    - strcmp
    - errcode
    - ereport
    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:2627,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 36
    argCount: 1
    argNames:
    - privilege
    argTypes:
    - AclMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2630
      start: 2591
    functionDepth: 1
    functionLinenumber: 2591
    functionLinenumberEnd: 2630
    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: 109
    BranchProfiles: []
    Callsites:
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2654,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2657,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2660,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2663,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2666,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2669,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2672,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2675,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2678,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2681,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2684,1
    - 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: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:2774,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:2777,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:2778,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:2779,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2789,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2792,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2795,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2798,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2801,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2804,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2807,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2810,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2813,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2816,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2819,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/catalog/aclchk.c:2822,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:2893,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:2912,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:2915,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:2916,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:2917,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:2921,1
    CyclomaticComplexity: 73
    EdgeCount: 73
    ICount: 258
    argCount: 3
    argNames:
    - aclerr
    - objtype
    - objectname
    argTypes:
    - AclResult
    - ObjectType
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2924
      start: 2638
    functionDepth: 1
    functionLinenumber: 2638
    functionLinenumberEnd: 2924
    functionName: aclcheck_error
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 14
    functionsReached:
    - errmsg
    - ereport
    - elog
    - gettext_noop
    - errcode
    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:2937,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:2938,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:2939,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/aclchk.c:2944,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:2947,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - aclerr
    - objtype
    - objectname
    - colname
    argTypes:
    - AclResult
    - ObjectType
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2950
      start: 2927
    functionDepth: 2
    functionLinenumber: 2927
    functionLinenumberEnd: 2950
    functionName: aclcheck_error_col
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - errmsg
    - aclcheck_error
    - ereport
    - elog
    - errcode
    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:2960,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/catalog/aclchk.c:2962,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/catalog/aclchk.c:2962,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - aclerr
    - typeOid
    argTypes:
    - AclResult
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2963
      start: 2957
    functionDepth: 2
    functionLinenumber: 2957
    functionLinenumberEnd: 2963
    functionName: aclcheck_error_type
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 2
    functionsReached:
    - get_element_type
    - format_type_be
    - aclcheck_error
    linkageType: ''
    returnType: void
    signature: void aclcheck_error_type(AclResult aclerr, Oid typeOid)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: pg_class_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:2977,1
    - Dst: pg_attribute_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:2978,1
    - Dst: pg_class_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:2981,1
    - Dst: object_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:2983,1
    - Dst: object_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:2985,1
    - Dst: object_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:2987,1
    - Dst: pg_largeobject_aclmask_snapshot
      Src: /src/postgres/src/backend/catalog/aclchk.c:2989,1
    - Dst: pg_parameter_acl_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:2992,1
    - Dst: object_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:2994,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:2996,1
    - Dst: object_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3000,1
    - Dst: object_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3002,1
    - Dst: object_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3004,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:3006,1
    - Dst: object_aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3010,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:3012,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 37
    argCount: 6
    argNames:
    - objtype
    - object_oid
    - attnum
    - roleid
    - mask
    - how
    argTypes:
    - ObjectType
    - Oid
    - AttrNumber
    - Oid
    - AclMode
    - AclMaskHow
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3017
      start: 2969
    functionDepth: 1
    functionLinenumber: 2969
    functionLinenumberEnd: 3017
    functionName: pg_aclmask
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - pg_largeobject_aclmask_snapshot
    - pg_parameter_acl_aclmask
    - elog
    - pg_class_aclmask
    - pg_attribute_aclmask
    - object_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:3034,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: 3035
      start: 3030
    functionDepth: 1
    functionLinenumber: 3030
    functionLinenumberEnd: 3035
    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:3058,1
    - Dst: pg_type_aclmask_ext
      Src: /src/postgres/src/backend/catalog/aclchk.c:3061,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/aclchk.c:3066,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/aclchk.c:3067,1
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3071,1
    - Dst: get_object_catcache_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:3078,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:3080,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3080,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:3081,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:3090,1
    - Dst: get_object_class_descr
      Src: /src/postgres/src/backend/catalog/aclchk.c:3091,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/aclchk.c:3094,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/aclchk.c:3094,1
    - Dst: get_object_attnum_owner
      Src: /src/postgres/src/backend/catalog/aclchk.c:3096,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:3098,1
    - Dst: get_object_attnum_acl
      Src: /src/postgres/src/backend/catalog/aclchk.c:3098,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:3103,1
    - Dst: get_object_type
      Src: /src/postgres/src/backend/catalog/aclchk.c:3103,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:3109,1
    - Dst: aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3112,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/aclchk.c:3115,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:3116,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3118,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: 3121
      start: 3041
    functionDepth: 2
    functionLinenumber: 3041
    functionLinenumberEnd: 3121
    functionName: object_aclmask_ext
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - get_object_attnum_acl
    - HeapTupleIsValid
    - SysCacheGetAttrNotNull
    - pg_namespace_aclmask_ext
    - SysCacheGetAttr
    - DatumGetAclP
    - pfree
    - ReleaseSysCache
    - superuser_arg
    - DatumGetPointer
    - get_object_catcache_oid
    - elog
    - get_object_attnum_owner
    - ObjectIdGetDatum
    - aclmask
    - acldefault
    - Assert
    - get_object_type
    - get_object_class_descr
    - SearchSysCache1
    - DatumGetObjectId
    - pg_type_aclmask_ext
    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:3135,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: 3137
      start: 3131
    functionDepth: 1
    functionLinenumber: 3131
    functionLinenumberEnd: 3137
    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:3159,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3160,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3161,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:3162,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:3171,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:3172,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3173,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:3177,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3186,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:3190,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:3191,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3192,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:3196,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3206,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:3217,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3217,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:3218,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3220,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:3228,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:3229,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3230,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:3233,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3237,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:3240,1
    - Dst: aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3242,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/aclchk.c:3245,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:3246,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3248,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: 3251
      start: 3142
    functionDepth: 1
    functionLinenumber: 3142
    functionLinenumberEnd: 3251
    functionName: pg_attribute_aclmask_ext
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - pfree
    - SearchSysCache2
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - ereport
    - SearchSysCache1
    - SysCacheGetAttr
    - DatumGetAclP
    - Int16GetDatum
    - DatumGetPointer
    - ObjectIdGetDatum
    - aclmask
    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:3260,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: 3261
      start: 3256
    functionDepth: 1
    functionLinenumber: 3256
    functionLinenumberEnd: 3261
    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: 12
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:3281,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3281,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:3282,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:3291,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:3292,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3293,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:3297,1
    - Dst: IsSystemClass
      Src: /src/postgres/src/backend/catalog/aclchk.c:3308,1
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3310,1
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3316,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3318,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:3327,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:3335,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:3338,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:3346,1
    - Dst: aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3349,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/aclchk.c:3352,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:3353,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3355,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/catalog/aclchk.c:3363,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/catalog/aclchk.c:3375,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/catalog/aclchk.c:3386,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 42
    argCount: 5
    argNames:
    - table_oid
    - roleid
    - mask
    - how
    - is_missing
    argTypes:
    - Oid
    - Oid
    - AclMode
    - AclMaskHow
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3390
      start: 3266
    functionDepth: 1
    functionLinenumber: 3266
    functionLinenumberEnd: 3390
    functionName: pg_class_aclmask_ext
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - errmsg
    - acldefault
    - pfree
    - ReleaseSysCache
    - ObjectIdGetDatum
    - HeapTupleIsValid
    - IsSystemClass
    - GETSTRUCT
    - ereport
    - SearchSysCache1
    - has_privs_of_role
    - superuser_arg
    - SysCacheGetAttr
    - DatumGetAclP
    - DatumGetPointer
    - errcode
    - aclmask
    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:3405,1
    - Dst: convert_GUC_name_for_parameter_acl
      Src: /src/postgres/src/backend/catalog/aclchk.c:3409,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/catalog/aclchk.c:3410,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:3413,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3413,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:3415,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:3426,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:3432,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:3438,1
    - Dst: aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3441,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/aclchk.c:3444,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:3445,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3447,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:3450,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:3451,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 4
    argNames:
    - name
    - roleid
    - mask
    - how
    argTypes:
    - char*
    - Oid
    - AclMode
    - AclMaskHow
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3454
      start: 3396
    functionDepth: 1
    functionLinenumber: 3396
    functionLinenumberEnd: 3454
    functionName: pg_parameter_aclmask
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - convert_GUC_name_for_parameter_acl
    - acldefault
    - pfree
    - ReleaseSysCache
    - HeapTupleIsValid
    - PointerGetDatum
    - SearchSysCache1
    - superuser_arg
    - SysCacheGetAttr
    - DatumGetAclP
    - cstring_to_text
    - DatumGetPointer
    - aclmask
    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:3470,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:3474,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3474,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:3475,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:3476,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:3477,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3478,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
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 4
    argNames:
    - acl_oid
    - roleid
    - mask
    - how
    argTypes:
    - Oid
    - Oid
    - AclMode
    - AclMaskHow
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3505
      start: 3460
    functionDepth: 1
    functionLinenumber: 3460
    functionLinenumberEnd: 3505
    functionName: pg_parameter_acl_aclmask
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - acldefault
    - pfree
    - ReleaseSysCache
    - HeapTupleIsValid
    - ereport
    - SearchSysCache1
    - superuser_arg
    - SysCacheGetAttr
    - DatumGetAclP
    - DatumGetPointer
    - ObjectIdGetDatum
    - aclmask
    linkageType: ''
    returnType: AclMode
    signature: AclMode pg_parameter_acl_aclmask(Oid acl_oid, Oid roleid, AclMode mask,
      AclMaskHow how)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3535,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:3541,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:3544,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3547,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:3549,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/aclchk.c:3553,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:3554,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:3555,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:3556,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3557,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:3559,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/aclchk.c:3561,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:3562,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:3567,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:3573,1
    - Dst: aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3576,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/aclchk.c:3579,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:3580,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:3582,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:3584,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 5
    argNames:
    - lobj_oid
    - roleid
    - mask
    - how
    - snapshot
    argTypes:
    - Oid
    - Oid
    - AclMode
    - AclMaskHow
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3587
      start: 3519
    functionDepth: 4
    functionLinenumber: 3519
    functionLinenumberEnd: 3587
    functionName: pg_largeobject_aclmask_snapshot
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - HeapTupleIsValid
    - DatumGetAclP
    - pfree
    - heap_getattr
    - table_open
    - GETSTRUCT
    - ScanKeyInit
    - superuser_arg
    - DatumGetPointer
    - errmsg
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    - aclmask
    - acldefault
    - systable_beginscan
    - systable_getnext
    - RelationGetDescr
    - ereport
    - errcode
    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: 9
    BranchProfiles: []
    Callsites:
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3605,1
    - Dst: isTempNamespace
      Src: /src/postgres/src/backend/catalog/aclchk.c:3627,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/catalog/aclchk.c:3629,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:3639,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3639,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:3640,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:3649,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:3650,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3651,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:3654,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:3656,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:3661,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:3667,1
    - Dst: aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3670,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/aclchk.c:3673,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:3674,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3676,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/catalog/aclchk.c:3685,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/catalog/aclchk.c:3686,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 5
    argNames:
    - nsp_oid
    - roleid
    - mask
    - how
    - is_missing
    argTypes:
    - Oid
    - Oid
    - AclMode
    - AclMaskHow
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3689
      start: 3592
    functionDepth: 2
    functionLinenumber: 3592
    functionLinenumberEnd: 3689
    functionName: pg_namespace_aclmask_ext
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - object_aclcheck_ext
    - acldefault
    - pfree
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - ereport
    - SearchSysCache1
    - isTempNamespace
    - has_privs_of_role
    - superuser_arg
    - SysCacheGetAttr
    - DatumGetAclP
    - DatumGetPointer
    - ObjectIdGetDatum
    - aclmask
    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:3707,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:3713,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3713,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:3714,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:3723,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:3724,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3725,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:3728,1
    - Dst: IsTrueArrayType
      Src: /src/postgres/src/backend/catalog/aclchk.c:3734,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3738,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:3740,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3740,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:3741,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:3750,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:3751,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3752,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:3755,1
    - Dst: get_multirange_range
      Src: /src/postgres/src/backend/catalog/aclchk.c:3765,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3767,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:3769,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3769,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:3770,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:3779,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:3780,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3781,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:3784,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:3792,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:3797,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:3803,1
    - Dst: aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3806,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/aclchk.c:3809,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:3810,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3812,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: 3815
      start: 3694
    functionDepth: 1
    functionLinenumber: 3694
    functionLinenumberEnd: 3815
    functionName: pg_type_aclmask_ext
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - acldefault
    - IsTrueArrayType
    - get_multirange_range
    - pfree
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - ereport
    - SearchSysCache1
    - superuser_arg
    - SysCacheGetAttr
    - DatumGetAclP
    - DatumGetPointer
    - ObjectIdGetDatum
    - aclmask
    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:3823,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - classid
    - objectid
    - roleid
    - mode
    argTypes:
    - Oid
    - Oid
    - Oid
    - AclMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3824
      start: 3820
    functionDepth: 1
    functionLinenumber: 3820
    functionLinenumberEnd: 3824
    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:3835,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: 3840
      start: 3830
    functionDepth: 3
    functionLinenumber: 3830
    functionLinenumberEnd: 3840
    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:3856,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: 3857
      start: 3852
    functionDepth: 1
    functionLinenumber: 3852
    functionLinenumberEnd: 3857
    functionName: pg_attribute_aclcheck
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 2
    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:3868,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: 3873
      start: 3864
    functionDepth: 2
    functionLinenumber: 3864
    functionLinenumberEnd: 3873
    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:3898,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: 3899
      start: 3894
    functionDepth: 1
    functionLinenumber: 3894
    functionLinenumberEnd: 3899
    functionName: pg_attribute_aclcheck_all
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    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:3920,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3920,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:3921,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/aclchk.c:3930,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/aclchk.c:3931,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/aclchk.c:3932,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:3935,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3940,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/aclchk.c:3956,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3957,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:3958,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:3965,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:3969,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3971,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:3975,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:3988,1
    - Dst: aclmask
      Src: /src/postgres/src/backend/catalog/aclchk.c:3990,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/catalog/aclchk.c:3993,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/aclchk.c:3994,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:3997,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: 4014
      start: 3905
    functionDepth: 1
    functionLinenumber: 3905
    functionLinenumberEnd: 4014
    functionName: pg_attribute_aclcheck_all_ext
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - errmsg
    - pfree
    - SearchSysCache2
    - ReleaseSysCache
    - ObjectIdGetDatum
    - HeapTupleIsValid
    - GETSTRUCT
    - ereport
    - SearchSysCache1
    - SysCacheGetAttr
    - DatumGetAclP
    - Int16GetDatum
    - DatumGetPointer
    - errcode
    - aclmask
    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:4026,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - table_oid
    - roleid
    - mode
    argTypes:
    - Oid
    - Oid
    - AclMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4027
      start: 4023
    functionDepth: 1
    functionLinenumber: 4023
    functionLinenumberEnd: 4027
    functionName: pg_class_aclcheck
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 3
    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:4037,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: 4042
      start: 4033
    functionDepth: 2
    functionLinenumber: 4033
    functionLinenumberEnd: 4042
    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:4051,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - name
    - roleid
    - mode
    argTypes:
    - char*
    - Oid
    - AclMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4055
      start: 4048
    functionDepth: 2
    functionLinenumber: 4048
    functionLinenumberEnd: 4055
    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:4064,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: 4069
      start: 4060
    functionDepth: 5
    functionLinenumber: 4060
    functionLinenumberEnd: 4069
    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:4081,1
    - Dst: get_object_catcache_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4088,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:4094,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4094,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4095,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:4096,1
    - Dst: get_object_class_descr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4097,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/aclchk.c:4099,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/aclchk.c:4099,1
    - Dst: get_object_attnum_owner
      Src: /src/postgres/src/backend/catalog/aclchk.c:4101,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4102,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:4113,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:4115,1
    - Dst: get_object_attnum_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4116,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4118,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:4120,1
    - Dst: get_object_oid_index
      Src: /src/postgres/src/backend/catalog/aclchk.c:4121,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/aclchk.c:4124,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4125,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:4126,1
    - Dst: get_object_class_descr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4127,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/aclchk.c:4129,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4129,1
    - Dst: get_object_attnum_owner
      Src: /src/postgres/src/backend/catalog/aclchk.c:4130,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4131,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/aclchk.c:4133,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:4135,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:4136,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/catalog/aclchk.c:4139,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 3
    argNames:
    - classid
    - objectid
    - roleid
    argTypes:
    - Oid
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4140
      start: 4074
    functionDepth: 4
    functionLinenumber: 4074
    functionLinenumberEnd: 4140
    functionName: object_ownercheck
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 8
    functionsReached:
    - HeapTupleIsValid
    - SysCacheGetAttrNotNull
    - heap_getattr
    - ReleaseSysCache
    - table_open
    - ScanKeyInit
    - superuser_arg
    - get_object_catcache_oid
    - elog
    - table_close
    - get_object_attnum_owner
    - get_object_attnum_oid
    - ObjectIdGetDatum
    - systable_endscan
    - Assert
    - systable_beginscan
    - systable_getnext
    - RelationGetDescr
    - get_object_class_descr
    - SearchSysCache1
    - has_privs_of_role
    - DatumGetObjectId
    - get_object_oid_index
    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:4160,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:4163,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4163,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4164,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:4166,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4167,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - roleid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4170
      start: 4153
    functionDepth: 1
    functionLinenumber: 4153
    functionLinenumberEnd: 4170
    functionName: has_createrole_privilege
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 1
    functionsReached:
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - SearchSysCache1
    - superuser_arg
    - 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:4179,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:4182,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4182,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4183,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:4185,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4186,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - roleid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4189
      start: 4172
    functionDepth: 1
    functionLinenumber: 4172
    functionLinenumberEnd: 4189
    functionName: has_bypassrls_privilege
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - SearchSysCache1
    - superuser_arg
    - 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:4202,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4203,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4204,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4205,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4207,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4212,1
    - Dst: DatumGetAclPCopy
      Src: /src/postgres/src/backend/catalog/aclchk.c:4216,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4217,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - roleId
    - nsp_oid
    - objtype
    argTypes:
    - Oid
    - Oid
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4221
      start: 4196
    functionDepth: 1
    functionLinenumber: 4196
    functionLinenumberEnd: 4221
    functionName: get_default_acl_internal
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - ReleaseSysCache
    - HeapTupleIsValid
    - DatumGetAclPCopy
    - CharGetDatum
    - SysCacheGetAttr
    - ObjectIdGetDatum
    - SearchSysCache3
    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:4244,1
    - Dst: get_default_acl_internal
      Src: /src/postgres/src/backend/catalog/aclchk.c:4279,1
    - Dst: get_default_acl_internal
      Src: /src/postgres/src/backend/catalog/aclchk.c:4280,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/catalog/aclchk.c:4287,1
    - Dst: aclmerge
      Src: /src/postgres/src/backend/catalog/aclchk.c:4294,1
    - Dst: aclitemsort
      Src: /src/postgres/src/backend/catalog/aclchk.c:4300,1
    - Dst: aclitemsort
      Src: /src/postgres/src/backend/catalog/aclchk.c:4301,1
    - Dst: aclequal
      Src: /src/postgres/src/backend/catalog/aclchk.c:4302,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 3
    argNames:
    - objtype
    - ownerId
    - nsp_oid
    argTypes:
    - ObjectType
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4306
      start: 4231
    functionDepth: 2
    functionLinenumber: 4231
    functionLinenumberEnd: 4306
    functionName: get_user_default_acl
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 4
    functionsReached:
    - aclmerge
    - acldefault
    - get_default_acl_internal
    - IsBootstrapProcessingMode
    - 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:4323,1
    - Dst: updateAclDependencies
      Src: /src/postgres/src/backend/catalog/aclchk.c:4326,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: 4330
      start: 4311
    functionDepth: 1
    functionLinenumber: 4311
    functionLinenumberEnd: 4330
    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:4355,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4355,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4356,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:4357,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:4358,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4369,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/aclchk.c:4387,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4388,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4389,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4391,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:4395,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4397,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4401,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4408,1
    - Dst: recordExtensionInitPrivWorker
      Src: /src/postgres/src/backend/catalog/aclchk.c:4412,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:4413,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4415,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4419,1
    - Dst: recordExtensionInitPrivWorker
      Src: /src/postgres/src/backend/catalog/aclchk.c:4424,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:4425,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4427,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:4444,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:4447,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4450,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:4452,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/aclchk.c:4456,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4457,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:4458,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4460,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4462,1
    - Dst: recordExtensionInitPrivWorker
      Src: /src/postgres/src/backend/catalog/aclchk.c:4466,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:4467,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:4469,1
    - Dst: get_object_attnum_acl
      Src: /src/postgres/src/backend/catalog/aclchk.c:4472,1
    - Dst: get_object_catcache_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4479,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:4480,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4480,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4481,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:4482,1
    - Dst: get_object_class_descr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4483,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4485,1
    - Dst: get_object_attnum_acl
      Src: /src/postgres/src/backend/catalog/aclchk.c:4486,1
    - Dst: recordExtensionInitPrivWorker
      Src: /src/postgres/src/backend/catalog/aclchk.c:4491,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:4492,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4494,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 55
    argCount: 2
    argNames:
    - objoid
    - classoid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4496
      start: 4338
    functionDepth: 4
    functionLinenumber: 4338
    functionLinenumberEnd: 4496
    functionName: recordExtObjInitPriv
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - get_object_attnum_acl
    - HeapTupleIsValid
    - SysCacheGetAttr
    - DatumGetAclP
    - SearchSysCache2
    - ReleaseSysCache
    - recordExtensionInitPrivWorker
    - table_open
    - heap_getattr
    - GETSTRUCT
    - ScanKeyInit
    - Int16GetDatum
    - get_object_catcache_oid
    - elog
    - systable_endscan
    - ObjectIdGetDatum
    - systable_beginscan
    - systable_getnext
    - RelationGetDescr
    - get_object_class_descr
    - SearchSysCache1
    linkageType: ''
    returnType: void
    signature: void recordExtObjInitPriv(Oid objoid, Oid classoid)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:4515,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4515,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4516,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:4517,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/aclchk.c:4518,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4529,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/aclchk.c:4546,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4547,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4548,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4550,1
    - Dst: recordExtensionInitPrivWorker
      Src: /src/postgres/src/backend/catalog/aclchk.c:4555,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4557,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4561,1
    - Dst: recordExtensionInitPrivWorker
      Src: /src/postgres/src/backend/catalog/aclchk.c:4565,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 2
    argNames:
    - objoid
    - classoid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4566
      start: 4502
    functionDepth: 1
    functionLinenumber: 4502
    functionLinenumberEnd: 4566
    functionName: removeExtObjInitPriv
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - SearchSysCache2
    - ReleaseSysCache
    - recordExtensionInitPrivWorker
    - HeapTupleIsValid
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - Int16GetDatum
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void removeExtObjInitPriv(Oid objoid, Oid classoid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: recordExtensionInitPrivWorker
      Src: /src/postgres/src/backend/catalog/aclchk.c:4599,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: 4600
      start: 4585
    functionDepth: 1
    functionLinenumber: 4585
    functionLinenumberEnd: 4600
    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:4629,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/aclchk.c:4632,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:4634,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4637,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:4638,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4641,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:4642,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4645,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:4647,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/aclchk.c:4651,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4654,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4664,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4665,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/aclchk.c:4666,1
    - Dst: DatumGetAclP
      Src: /src/postgres/src/backend/catalog/aclchk.c:4667,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:4668,1
    - Dst: updateInitAclDependencies
      Src: /src/postgres/src/backend/catalog/aclchk.c:4670,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/catalog/aclchk.c:4675,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4677,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:4680,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4680,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/aclchk.c:4683,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/aclchk.c:4688,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/catalog/aclchk.c:4702,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4705,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4706,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4707,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4711,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4713,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:4715,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4715,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/aclchk.c:4717,1
    - Dst: updateInitAclDependencies
      Src: /src/postgres/src/backend/catalog/aclchk.c:4723,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:4729,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/aclchk.c:4732,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:4734,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: 4735
      start: 4614
    functionDepth: 6
    functionLinenumber: 4614
    functionLinenumberEnd: 4735
    functionName: recordExtensionInitPrivWorker
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 3
    functionsReached:
    - HeapTupleIsValid
    - DatumGetAclP
    - CatalogTupleDelete
    - heap_getattr
    - CatalogTupleInsert
    - table_open
    - Int32GetDatum
    - heap_modify_tuple
    - ACL_NUM
    - ScanKeyInit
    - aclmembers
    - heap_form_tuple
    - updateInitAclDependencies
    - CommandCounterIncrement
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    - Assert
    - systable_beginscan
    - systable_getnext
    - CatalogTupleUpdate
    - RelationGetDescr
    - PointerGetDatum
    - CharGetDatum
    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:4761,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:4763,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4766,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:4767,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4770,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:4771,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4774,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:4776,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/aclchk.c:4780,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4782,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:4788,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:4789,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4794,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4795,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/aclchk.c:4796,1
    - Dst: DatumGetAclPCopy
      Src: /src/postgres/src/backend/catalog/aclchk.c:4797,1
    - Dst: aclnewowner
      Src: /src/postgres/src/backend/catalog/aclchk.c:4803,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/catalog/aclchk.c:4809,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/aclchk.c:4811,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4820,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:4823,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4823,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/aclchk.c:4825,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:4831,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:4832,1
    - Dst: updateInitAclDependencies
      Src: /src/postgres/src/backend/catalog/aclchk.c:4834,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:4838,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/aclchk.c:4841,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:4843,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: 4844
      start: 4742
    functionDepth: 6
    functionLinenumber: 4742
    functionLinenumberEnd: 4844
    functionName: ReplaceRoleInInitPriv
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - HeapTupleIsValid
    - CatalogTupleDelete
    - aclnewowner
    - heap_getattr
    - table_open
    - Int32GetDatum
    - DatumGetAclPCopy
    - heap_modify_tuple
    - ACL_NUM
    - ScanKeyInit
    - aclmembers
    - updateInitAclDependencies
    - CommandCounterIncrement
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    - Assert
    - systable_beginscan
    - systable_getnext
    - CatalogTupleUpdate
    - RelationGetDescr
    - PointerGetDatum
    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:4872,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:4874,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4877,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:4878,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4881,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/aclchk.c:4882,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4885,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:4887,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/aclchk.c:4891,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4893,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:4899,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:4900,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4905,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4906,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/aclchk.c:4907,1
    - Dst: DatumGetAclPCopy
      Src: /src/postgres/src/backend/catalog/aclchk.c:4908,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:4915,1
    - Dst: get_object_catcache_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4918,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/aclchk.c:4919,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4919,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4920,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/aclchk.c:4921,1
    - Dst: get_object_class_descr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4922,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/aclchk.c:4924,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/aclchk.c:4924,1
    - Dst: get_object_attnum_owner
      Src: /src/postgres/src/backend/catalog/aclchk.c:4926,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/aclchk.c:4927,1
    - Dst: merge_acl_with_grant
      Src: /src/postgres/src/backend/catalog/aclchk.c:4933,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/catalog/aclchk.c:4937,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/catalog/aclchk.c:4945,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/aclchk.c:4947,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/aclchk.c:4956,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/aclchk.c:4959,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/aclchk.c:4959,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/aclchk.c:4961,1
    - Dst: aclmembers
      Src: /src/postgres/src/backend/catalog/aclchk.c:4967,1
    - Dst: updateInitAclDependencies
      Src: /src/postgres/src/backend/catalog/aclchk.c:4969,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/aclchk.c:4973,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/aclchk.c:4976,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/aclchk.c:4978,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 4
    argNames:
    - roleid
    - classid
    - objid
    - objsubid
    argTypes:
    - Oid
    - Oid
    - Oid
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4979
      start: 4851
    functionDepth: 6
    functionLinenumber: 4851
    functionLinenumberEnd: 4979
    functionName: RemoveRoleFromInitPriv
    functionSourceFile: /src/postgres/src/backend/catalog/aclchk.c
    functionUses: 0
    functionsReached:
    - HeapTupleIsValid
    - SysCacheGetAttrNotNull
    - CatalogTupleDelete
    - heap_getattr
    - ReleaseSysCache
    - table_open
    - Int32GetDatum
    - DatumGetAclPCopy
    - heap_modify_tuple
    - merge_acl_with_grant
    - ACL_NUM
    - ScanKeyInit
    - aclmembers
    - updateInitAclDependencies
    - get_object_catcache_oid
    - CommandCounterIncrement
    - elog
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    - get_object_attnum_owner
    - Assert
    - systable_beginscan
    - systable_getnext
    - CatalogTupleUpdate
    - RelationGetDescr
    - get_object_class_descr
    - list_make1_oid
    - PointerGetDatum
    - SearchSysCache1
    - DatumGetObjectId
    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:
    - Assert
    - table_open
    - IsBootstrapProcessingMode
    - IsPinnedObject
    - shdepAddDependency
    - table_close
    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: 5
    functionLinenumber: 205
    functionLinenumberEnd: 305
    functionName: shdepChangeDep
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 0
    functionsReached:
    - CatalogTupleDelete
    - CatalogTupleInsert
    - shdepLockAndCheckObject
    - Int32GetDatum
    - heap_freetuple
    - GETSTRUCT
    - ScanKeyInit
    - heap_form_tuple
    - classIdGetDbId
    - elog
    - systable_endscan
    - ObjectIdGetDatum
    - systable_beginscan
    - memset
    - systable_getnext
    - CatalogTupleUpdate
    - RelationGetDescr
    - IsPinnedObject
    - CharGetDatum
    - heap_copytuple
    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: 6
    functionLinenumber: 315
    functionLinenumberEnd: 358
    functionName: changeDependencyOnOwner
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 0
    functionsReached:
    - table_close
    - shdepChangeDep
    - shdepDropDependency
    - table_open
    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: 6
    functionLinenumber: 390
    functionLinenumberEnd: 410
    functionName: changeDependencyOnTablespace
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 0
    functionsReached:
    - table_close
    - shdepChangeDep
    - shdepDropDependency
    - table_open
    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:
    - pfree
    - table_open
    - IsPinnedObject
    - shdepAddDependency
    - shdepDropDependency
    - table_close
    - getOidListDiff
    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
      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:
    - HeapTupleIsValid
    - ngettext
    - storeObjectDescription
    - getObjectDescription
    - pfree
    - table_open
    - GETSTRUCT
    - ScanKeyInit
    - errmsg
    - qsort
    - lappend
    - repalloc
    - table_close
    - palloc
    - systable_endscan
    - lfirst
    - ObjectIdGetDatum
    - systable_beginscan
    - list_free_deep
    - appendStringInfo
    - systable_getnext
    - ereport
    - IsPinnedObject
    - initStringInfo
    - errcode
    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: 354
    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: 354
    functionsReached:
    - lfirst
    - storeObjectDescription
    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
      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: 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: 3
    functionLinenumber: 894
    functionLinenumberEnd: 990
    functionName: copyTemplateDependencies
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 0
    functionsReached:
    - HeapTupleIsValid
    - CatalogTuplesMultiInsertWithInfo
    - CatalogOpenIndexes
    - pfree
    - CatalogCloseIndexes
    - table_open
    - GETSTRUCT
    - ScanKeyInit
    - ExecStoreVirtualTuple
    - ExecClearTuple
    - ExecDropSingleTupleTableSlot
    - table_close
    - palloc
    - systable_endscan
    - ObjectIdGetDatum
    - systable_beginscan
    - memset
    - systable_getnext
    - RelationGetDescr
    - MakeSingleTupleTableSlot
    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: 3
    functionLinenumber: 998
    functionLinenumberEnd: 1034
    functionName: dropDatabaseDependencies
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - ScanKeyInit
    - systable_endscan
    - shdepDropDependency
    - table_close
    - CatalogTupleDelete
    - ObjectIdGetDatum
    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_close
    - shdepDropDependency
    - table_open
    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: 5
    functionLinenumber: 1068
    functionLinenumberEnd: 1105
    functionName: shdepAddDependency
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 2
    functionsReached:
    - heap_form_tuple
    - CatalogTupleInsert
    - shdepLockAndCheckObject
    - memset
    - Int32GetDatum
    - heap_freetuple
    - classIdGetDbId
    - CharGetDatum
    - ObjectIdGetDatum
    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: 3
    functionLinenumber: 1123
    functionLinenumberEnd: 1180
    functionName: shdepDropDependency
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 5
    functionsReached:
    - systable_beginscan
    - Int32GetDatum
    - HeapTupleIsValid
    - systable_getnext
    - classIdGetDbId
    - ScanKeyInit
    - GETSTRUCT
    - systable_endscan
    - OidIsValid
    - CatalogTupleDelete
    - ObjectIdGetDatum
    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:
    - errmsg
    - get_tablespace_name
    - pfree
    - LockSharedObject
    - ObjectIdGetDatum
    - ereport
    - elog
    - get_database_name
    - SearchSysCacheExists1
    - errcode
    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: 4
    functionLinenumber: 1275
    functionLinenumberEnd: 1326
    functionName: storeObjectDescription
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 2
    functionsReached:
    - pfree
    - appendStringInfo
    - appendStringInfoChar
    - getObjectDescription
    - elog
    - _
    - ngettext
    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: 62
    argCount: 2
    argNames:
    - roleids
    - behavior
    argTypes:
    - List*
    - DropBehavior
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1521
      start: 1341
    functionDepth: 8
    functionLinenumber: 1341
    functionLinenumberEnd: 1521
    functionName: shdepDropOwned
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 0
    functionsReached:
    - new_object_addresses
    - AcquireDeletionLock
    - RemoveRoleFromObjectACL
    - getObjectDescription
    - free_object_addresses
    - table_open
    - sort_object_addresses
    - GETSTRUCT
    - ScanKeyInit
    - errmsg
    - RemoveRoleFromObjectPolicy
    - elog
    - table_close
    - performMultipleDeletions
    - systable_endscan
    - ObjectIdGetDatum
    - RemoveRoleFromInitPriv
    - add_exact_object_address
    - Assert
    - systable_beginscan
    - systable_getnext
    - ereport
    - IsPinnedObject
    - ReleaseDeletionLock
    - lfirst_oid
    - errcode
    - systable_recheck_tuple
    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: 55
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1505
      start: 1361
    functionDepth: 8
    functionLinenumber: 1361
    functionLinenumberEnd: 1505
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 354
    functionsReached:
    - AcquireDeletionLock
    - RemoveRoleFromObjectACL
    - getObjectDescription
    - GETSTRUCT
    - ScanKeyInit
    - errmsg
    - RemoveRoleFromObjectPolicy
    - elog
    - systable_endscan
    - ObjectIdGetDatum
    - RemoveRoleFromInitPriv
    - add_exact_object_address
    - Assert
    - systable_beginscan
    - systable_getnext
    - ereport
    - IsPinnedObject
    - ReleaseDeletionLock
    - lfirst_oid
    - errcode
    - systable_recheck_tuple
    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: 4
    functionLinenumber: 1529
    functionLinenumberEnd: 1639
    functionName: shdepReassignOwned
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - getObjectDescription
    - shdepReassignOwned_Owner
    - MemoryContextDelete
    - table_open
    - GETSTRUCT
    - ScanKeyInit
    - errmsg
    - CommandCounterIncrement
    - elog
    - shdepReassignOwned_InitAcl
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    - systable_beginscan
    - systable_getnext
    - ereport
    - IsPinnedObject
    - AllocSetContextCreate
    - lfirst_oid
    - errcode
    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: 4
    functionLinenumber: 1542
    functionLinenumberEnd: 1636
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_shdepend.c
    functionUses: 354
    functionsReached:
    - MemoryContextSwitchTo
    - getObjectDescription
    - shdepReassignOwned_Owner
    - MemoryContextDelete
    - GETSTRUCT
    - ScanKeyInit
    - errmsg
    - CommandCounterIncrement
    - elog
    - shdepReassignOwned_InitAcl
    - systable_endscan
    - ObjectIdGetDatum
    - systable_beginscan
    - systable_getnext
    - ereport
    - IsPinnedObject
    - AllocSetContextCreate
    - lfirst_oid
    - errcode
    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:
    - AlterObjectOwner_internal
    - AlterForeignServerOwner_oid
    - AlterEventTriggerOwner_oid
    - AlterPublicationOwner_oid
    - AlterTypeOwner_oid
    - AlterForeignDataWrapperOwner_oid
    - ATExecChangeOwner
    - AlterSchemaOwner_oid
    - elog
    - AlterSubscriptionOwner_oid
    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: 7
    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
    - Assert
    - ExecDropSingleTupleTableSlot
    - RelationGetRelid
    - FormIndexDatum
    - RelationGetDescr
    - index_insert
    - MakeSingleTupleTableSlot
    - ReindexIsProcessingIndex
    - HeapTupleIsHeapOnly
    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
    - TupleDescAttr
    - att_isnull
    - HeapTupleHasNulls
    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: 20
    functionsReached:
    - CatalogIndexInsert
    - CatalogCloseIndexes
    - CatalogOpenIndexes
    - simple_heap_insert
    - CatalogTupleCheckConstraints
    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:
    - CatalogIndexInsert
    - simple_heap_insert
    - 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:
    - CatalogIndexInsert
    - heap_multi_insert
    - heap_freetuple
    - ExecFetchSlotHeapTuple
    - GetCurrentCommandId
    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
    - ItemPointer
    - 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: 44
    functionsReached:
    - simple_heap_update
    - CatalogIndexInsert
    - CatalogCloseIndexes
    - CatalogOpenIndexes
    - CatalogTupleCheckConstraints
    linkageType: ''
    returnType: void
    signature: void CatalogTupleUpdate(Relation heapRel, ItemPointer 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
    - ItemPointer
    - 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, ItemPointer 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
    - ItemPointer
    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: 27
    functionsReached:
    - simple_heap_delete
    linkageType: ''
    returnType: void
    signature: void CatalogTupleDelete(Relation heapRel, ItemPointer 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:
    - NameGetDatum
    - BoolGetDatum
    - ObjectAddressSet
    - pg_encoding_to_char
    - Int32GetDatum
    - table_open
    - GetDatabaseEncoding
    - CatalogTupleInsert
    - recordDependencyOnOwner
    - heap_freetuple
    - recordDependencyOn
    - recordDependencyOnCurrentExtension
    - errmsg
    - heap_form_tuple
    - InvokeObjectPostCreateHook
    - checkMembershipInCurrentExtension
    - GetSysCacheOid3
    - OidIsValid
    - table_close
    - ObjectIdGetDatum
    - Assert
    - namestrcpy
    - memset
    - CStringGetTextDatum
    - RelationGetDescr
    - ereport
    - PointerGetDatum
    - CharGetDatum
    - GetNewOidWithIndex
    - errcode
    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:
    - IsSystemClass
    - RelationGetRelid
    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:89,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - relid
    - reltuple
    argTypes:
    - Oid
    - Form_pg_class
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 90
    functionName: IsSystemClass
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 2
    functionsReached:
    - IsCatalogRelationOid
    - IsToastClass
    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:106,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/catalog.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - relation
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 107
    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: 137
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 137
    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: 167
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 167
    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:185,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/catalog.c:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - relation
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 186
    functionName: IsInplaceUpdateRelation
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 2
    functionsReached:
    - IsInplaceUpdateOid
    - RelationGetRelid
    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: 197
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 197
    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:216,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/catalog/catalog.c:216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - relation
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 217
    functionName: IsToastRelation
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 2
    functionsReached:
    - IsToastNamespace
    - RelationGetNamespace
    linkageType: ''
    returnType: bool
    signature: bool IsToastRelation(Relation relation)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IsToastNamespace
      Src: /src/postgres/src/backend/catalog/catalog.c:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - reltuple
    argTypes:
    - Form_pg_class
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 231
    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: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - namespaceId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 246
    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:264,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - namespaceId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 260
    functionDepth: 2
    functionLinenumber: 260
    functionLinenumberEnd: 265
    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: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 284
    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: 359
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 359
    functionName: IsSharedRelation
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 4
    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: 421
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 421
    functionName: IsPinnedObject
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 9
    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:458,1
    - Dst: IsSystemRelation
      Src: /src/postgres/src/backend/catalog/catalog.c:458,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/catalog/catalog.c:461,1
    - Dst: GetNewObjectId
      Src: /src/postgres/src/backend/catalog/catalog.c:462,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/catalog.c:470,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/catalog.c:470,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/catalog/catalog.c:475,1
    - Dst: GetNewObjectId
      Src: /src/postgres/src/backend/catalog/catalog.c:477,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/catalog.c:479,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/catalog.c:482,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/catalog.c:485,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/catalog.c:488,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/catalog.c:488,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/catalog.c:490,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/catalog.c:503,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/catalog.c:504,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/catalog.c:505,1
    - Dst: errdetail_plural
      Src: /src/postgres/src/backend/catalog/catalog.c:506,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/catalog.c:530,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/catalog/catalog.c:531,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/catalog.c:534,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 3
    argNames:
    - relation
    - indexId
    - oidcolumn
    argTypes:
    - Relation
    - Oid
    - AttrNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 447
    functionDepth: 3
    functionLinenumber: 447
    functionLinenumberEnd: 538
    functionName: GetNewOidWithIndex
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 12
    functionsReached:
    - errmsg
    - errdetail_plural
    - Assert
    - systable_beginscan
    - IsSystemRelation
    - RelationGetRelid
    - CHECK_FOR_INTERRUPTS
    - HeapTupleIsValid
    - systable_getnext
    - IsBootstrapProcessingMode
    - ScanKeyInit
    - ereport
    - GetNewObjectId
    - errmsg_plural
    - RelationGetRelationName
    - systable_endscan
    - ObjectIdGetDatum
    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:569,1
    - Dst: ProcNumberForTempRelations
      Src: /src/postgres/src/backend/catalog/catalog.c:574,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/catalog.c:581,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/catalog/catalog.c:600,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/catalog.c:604,1
    - Dst: GetNewObjectId
      Src: /src/postgres/src/backend/catalog/catalog.c:607,1
    - Dst: relpath
      Src: /src/postgres/src/backend/catalog/catalog.c:610,1
    - Dst: access
      Src: /src/postgres/src/backend/catalog/catalog.c:612,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 3
    argNames:
    - reltablespace
    - pg_class
    - relpersistence
    argTypes:
    - Oid
    - Relation
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 556
    functionDepth: 4
    functionLinenumber: 556
    functionLinenumberEnd: 631
    functionName: GetNewRelFileNumber
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 2
    functionsReached:
    - Assert
    - ProcNumberForTempRelations
    - CHECK_FOR_INTERRUPTS
    - relpath
    - elog
    - GetNewObjectId
    - access
    - GetNewOidWithIndex
    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:643,1
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/catalog/catalog.c:644,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/catalog.c:645,1
    - Dst: superuser
      Src: /src/postgres/src/backend/catalog/catalog.c:659,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/catalog.c:660,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/catalog.c:661,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/catalog.c:662,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/catalog.c:665,1
    - Dst: index_open
      Src: /src/postgres/src/backend/catalog/catalog.c:666,1
    - Dst: IsSystemRelation
      Src: /src/postgres/src/backend/catalog/catalog.c:668,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/catalog.c:669,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/catalog.c:670,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/catalog.c:671,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/catalog.c:673,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/catalog.c:674,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/catalog.c:675,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/catalog.c:676,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/catalog.c:677,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/catalog.c:678,1
    - Dst: SearchSysCacheAttName
      Src: /src/postgres/src/backend/catalog/catalog.c:680,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/catalog.c:680,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/catalog.c:681,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/catalog.c:682,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/catalog.c:683,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/catalog.c:684,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/catalog.c:685,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/catalog.c:685,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/catalog.c:687,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/catalog.c:691,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/catalog.c:692,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/catalog.c:693,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/catalog.c:694,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/catalog/catalog.c:696,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/catalog.c:698,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/catalog.c:699,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/catalog.c:700,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/catalog.c:701,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/catalog.c:702,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/catalog.c:704,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/catalog.c:706,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/catalog.c:707,1
    - Dst: index_close
      Src: /src/postgres/src/backend/catalog/catalog.c:708,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/catalog/catalog.c:710,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 640
    functionDepth: 4
    functionLinenumber: 640
    functionLinenumberEnd: 711
    functionName: pg_nextoid
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 0
    functionsReached:
    - HeapTupleIsValid
    - RelationGetRelationName
    - NameStr
    - RelationGetRelid
    - table_open
    - ReleaseSysCache
    - index_close
    - GETSTRUCT
    - PG_GETARG_NAME
    - PG_GETARG_OID
    - superuser
    - SearchSysCacheAttName
    - errmsg
    - IndexRelationGetNumberOfKeyAttributes
    - PG_RETURN_OID
    - table_close
    - IsSystemRelation
    - ereport
    - GetNewOidWithIndex
    - errcode
    - index_open
    linkageType: ''
    returnType: Datum
    signature: Datum pg_nextoid(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: superuser
      Src: /src/postgres/src/backend/catalog/catalog.c:726,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/catalog.c:727,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/catalog.c:728,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/catalog.c:729,1
    - Dst: StopGeneratingPinnedObjectIds
      Src: /src/postgres/src/backend/catalog/catalog.c:732,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/catalog/catalog.c:734,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 719
    functionDepth: 3
    functionLinenumber: 719
    functionLinenumberEnd: 735
    functionName: pg_stop_making_pinned_objects
    functionSourceFile: /src/postgres/src/backend/catalog/catalog.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_VOID
    - StopGeneratingPinnedObjectIds
    - ereport
    - superuser
    - errcode
    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:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - parentrelId
    - lockmode
    argTypes:
    - Oid
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 62
    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:101,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:108,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:111,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:113,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:116,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:118,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:121,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:138,1
    - Dst: ActiveSnapshotSet
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:143,1
    - Dst: HeapTupleHeaderGetXmin
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:148,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:149,1
    - Dst: XidInMVCCSnapshot
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:151,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:166,1
    - Dst: TransactionIdFollows
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:168,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:181,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:185,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:190,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:192,1
    - Dst: qsort
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:201,1
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:213,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:220,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:220,1
    - Dst: UnlockRelationOid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:223,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:229,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:232,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: 235
      start: 81
    functionDepth: 6
    functionLinenumber: 81
    functionLinenumberEnd: 235
    functionName: find_inheritance_children_extended
    functionSourceFile: /src/postgres/src/backend/catalog/pg_inherits.c
    functionUses: 1
    functionsReached:
    - XidInMVCCSnapshot
    - UnlockRelationOid
    - SearchSysCacheExists1
    - TransactionIdFollows
    - LockRelationOid
    - pfree
    - table_open
    - GETSTRUCT
    - ScanKeyInit
    - ActiveSnapshotSet
    - has_subclass
    - HeapTupleHeaderGetXmin
    - qsort
    - elog
    - repalloc
    - table_close
    - palloc
    - systable_endscan
    - ObjectIdGetDatum
    - systable_beginscan
    - lappend_oid
    - systable_getnext
    - GetActiveSnapshot
    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:268,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:282,1
    - Dst: list_make1_int
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:283,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:287,1
    - Dst: find_inheritance_children
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:292,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:303,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:307,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:313,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:315,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:320,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:321,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:322,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:330,1
    - Dst: hash_destroy
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:332,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 3
    argNames:
    - parentrelId
    - lockmode
    - numparents
    argTypes:
    - Oid
    - LOCKMODE
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 254
    functionDepth: 6
    functionLinenumber: 254
    functionLinenumberEnd: 335
    functionName: find_all_inheritors
    functionSourceFile: /src/postgres/src/backend/catalog/pg_inherits.c
    functionUses: 2
    functionsReached:
    - find_inheritance_children
    - list_make1_int
    - lappend_oid
    - hash_create
    - list_nth_cell
    - lappend_int
    - hash_destroy
    - list_make1_oid
    - hash_search
    - list_length
    - lfirst_oid
    - lfirst_int
    - list_free
    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:287,1
    - Dst: find_inheritance_children
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:292,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:303,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:307,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:313,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:315,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:320,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:321,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:322,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 285
    functionDepth: 6
    functionLinenumber: 285
    functionLinenumberEnd: 325
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_inherits.c
    functionUses: 354
    functionsReached:
    - find_inheritance_children
    - lappend_oid
    - list_nth_cell
    - lappend_int
    - hash_search
    - list_length
    - lfirst_oid
    - lfirst_int
    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:303,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:307,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:313,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:315,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:320,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:321,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:322,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 301
    functionDepth: 6
    functionLinenumber: 301
    functionLinenumberEnd: 324
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_inherits.c
    functionUses: 354
    functionsReached:
    - lappend_oid
    - list_nth_cell
    - lappend_int
    - list_length
    - hash_search
    - lfirst_oid
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(lc, currentchildren)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:360,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:360,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:361,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:362,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:364,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:365,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - relationId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 354
    functionDepth: 1
    functionLinenumber: 354
    functionLinenumberEnd: 367
    functionName: has_subclass
    functionSourceFile: /src/postgres/src/backend/catalog/pg_inherits.c
    functionUses: 2
    functionsReached:
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - 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:384,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:385,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:386,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:387,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:389,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:389,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:390,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - relationId
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 376
    functionDepth: 3
    functionLinenumber: 376
    functionLinenumberEnd: 394
    functionName: has_superclass
    functionSourceFile: /src/postgres/src/backend/catalog/pg_inherits.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - ScanKeyInit
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    linkageType: ''
    returnType: bool
    signature: bool has_superclass(Oid relationId)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: typeOrDomainTypeRelid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:417,1
    - Dst: typeidTypeRelid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:420,1
    - Dst: has_subclass
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:425,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:431,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:434,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:444,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:455,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:463,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:465,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:468,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:470,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:473,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:475,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:486,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:489,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:496,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:498,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:499,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 2
    argNames:
    - subclassTypeId
    - superclassTypeId
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 405
    functionDepth: 6
    functionLinenumber: 405
    functionLinenumberEnd: 502
    functionName: typeInheritsFrom
    functionSourceFile: /src/postgres/src/backend/catalog/pg_inherits.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - lappend_oid
    - typeOrDomainTypeRelid
    - systable_getnext
    - GETSTRUCT
    - list_make1_oid
    - lfirst_oid
    - ScanKeyInit
    - list_member_oid
    - typeidTypeRelid
    - table_close
    - has_subclass
    - systable_endscan
    - ObjectIdGetDatum
    - list_free
    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:444,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:455,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:463,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:465,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:468,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:470,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:473,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:475,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:486,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:489,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 442
    functionDepth: 6
    functionLinenumber: 442
    functionLinenumberEnd: 493
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_inherits.c
    functionUses: 354
    functionsReached:
    - systable_beginscan
    - lappend_oid
    - systable_getnext
    - GETSTRUCT
    - ScanKeyInit
    - list_member_oid
    - lfirst_oid
    - systable_endscan
    - ObjectIdGetDatum
    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:515,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:520,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:521,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:522,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:523,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:525,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:527,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:527,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:529,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:531,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:533,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - relationId
    - parentOid
    - seqNumber
    argTypes:
    - Oid
    - Oid
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 507
    functionDepth: 7
    functionLinenumber: 507
    functionLinenumberEnd: 534
    functionName: StoreSingleInheritance
    functionSourceFile: /src/postgres/src/backend/catalog/pg_inherits.c
    functionUses: 2
    functionsReached:
    - heap_form_tuple
    - CatalogTupleInsert
    - table_open
    - Int32GetDatum
    - BoolGetDatum
    - memset
    - RelationGetDescr
    - heap_freetuple
    - table_close
    - ObjectIdGetDatum
    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:564,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:565,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:568,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:569,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:572,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:572,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:577,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:578,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:583,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:590,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:591,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:592,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:594,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:595,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:597,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:598,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:599,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:601,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:603,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:609,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:610,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: 613
      start: 551
    functionDepth: 7
    functionLinenumber: 551
    functionLinenumberEnd: 613
    functionName: DeleteInheritsTuple
    functionSourceFile: /src/postgres/src/backend/catalog/pg_inherits.c
    functionUses: 2
    functionsReached:
    - errmsg
    - errcode
    - systable_beginscan
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - GETSTRUCT
    - ScanKeyInit
    - ereport
    - errhint
    - systable_endscan
    - OidIsValid
    - CatalogTupleDelete
    - table_close
    - errdetail
    - ObjectIdGetDatum
    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:632,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:633,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:636,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:637,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:640,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:640,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:645,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:648,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:649,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_inherits.c:654,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - partoid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 619
    functionDepth: 3
    functionLinenumber: 619
    functionLinenumberEnd: 656
    functionName: PartitionHasPendingDetach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_inherits.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - GETSTRUCT
    - ScanKeyInit
    - elog
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    linkageType: ''
    returnType: bool
    signature: bool PartitionHasPendingDetach(Oid partoid)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: trackDroppedObjectsNeeded
      Src: /src/postgres/src/backend/catalog/dependency.c:193,1
    - Dst: EventTriggerSupportsObject
      Src: /src/postgres/src/backend/catalog/dependency.c:209,1
    - Dst: EventTriggerSQLDropAddObject
      Src: /src/postgres/src/backend/catalog/dependency.c:211,1
    - Dst: deleteOneObject
      Src: /src/postgres/src/backend/catalog/dependency.c:229,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 19
    argCount: 3
    argNames:
    - targetObjects
    - depRel
    - flags
    argTypes:
    - ObjectAddresses*
    - Relation*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 231
    functionName: deleteObjectsInList
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 0
    functionsReached:
    - trackDroppedObjectsNeeded
    - deleteOneObject
    - EventTriggerSQLDropAddObject
    - EventTriggerSupportsObject
    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:283,1
    - Dst: AcquireDeletionLock
      Src: /src/postgres/src/backend/catalog/dependency.c:289,1
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/dependency.c:295,1
    - Dst: findDependentObjects
      Src: /src/postgres/src/backend/catalog/dependency.c:297,1
    - Dst: reportDependentObjects
      Src: /src/postgres/src/backend/catalog/dependency.c:308,1
    - Dst: deleteObjectsInList
      Src: /src/postgres/src/backend/catalog/dependency.c:314,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/dependency.c:317,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/dependency.c:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - object
    - behavior
    - flags
    argTypes:
    - ObjectAddress*
    - DropBehavior
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 272
    functionDepth: 3
    functionLinenumber: 272
    functionLinenumberEnd: 320
    functionName: performDeletion
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 3
    functionsReached:
    - new_object_addresses
    - AcquireDeletionLock
    - table_open
    - deleteObjectsInList
    - free_object_addresses
    - reportDependentObjects
    - findDependentObjects
    - table_close
    linkageType: ''
    returnType: void
    signature: "void performDeletion(const ObjectAddress *object,\n\t\t\t\tDropBehavior
      behavior, int flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/dependency.c:347,1
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/dependency.c:357,1
    - Dst: AcquireDeletionLock
      Src: /src/postgres/src/backend/catalog/dependency.c:367,1
    - Dst: findDependentObjects
      Src: /src/postgres/src/backend/catalog/dependency.c:369,1
    - Dst: reportDependentObjects
      Src: /src/postgres/src/backend/catalog/dependency.c:384,1
    - Dst: deleteObjectsInList
      Src: /src/postgres/src/backend/catalog/dependency.c:390,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/dependency.c:393,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/dependency.c:395,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - objects
    - behavior
    - flags
    argTypes:
    - ObjectAddresses*
    - DropBehavior
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 331
    functionDepth: 3
    functionLinenumber: 331
    functionLinenumberEnd: 396
    functionName: performMultipleDeletions
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 1
    functionsReached:
    - new_object_addresses
    - AcquireDeletionLock
    - table_open
    - deleteObjectsInList
    - free_object_addresses
    - reportDependentObjects
    - findDependentObjects
    - table_close
    linkageType: ''
    returnType: void
    signature: "void performMultipleDeletions(const ObjectAddresses *objects,\n\t\t\t\t\t\t
      DropBehavior behavior, int flags)"
  - BBCount: 40
    BranchProfiles: []
    Callsites:
    - Dst: stack_address_present_add_flags
      Src: /src/postgres/src/backend/catalog/dependency.c:469,1
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/catalog/dependency.c:476,1
    - Dst: object_address_present_add_flags
      Src: /src/postgres/src/backend/catalog/dependency.c:487,1
    - Dst: IsPinnedObject
      Src: /src/postgres/src/backend/catalog/dependency.c:494,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/dependency.c:495,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/dependency.c:496,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/dependency.c:497,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:498,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/dependency.c:510,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:513,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/dependency.c:514,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:517,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/dependency.c:521,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:524,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/dependency.c:533,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/dependency.c:537,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/dependency.c:538,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:540,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/dependency.c:540,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/dependency.c:542,1
    - Dst: object_address_present
      Src: /src/postgres/src/backend/catalog/dependency.c:617,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/dependency.c:619,1
    - Dst: ReleaseDeletionLock
      Src: /src/postgres/src/backend/catalog/dependency.c:621,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:635,1
    - Dst: stack_address_present_add_flags
      Src: /src/postgres/src/backend/catalog/dependency.c:649,1
    - Dst: ReleaseDeletionLock
      Src: /src/postgres/src/backend/catalog/dependency.c:662,1
    - Dst: AcquireDeletionLock
      Src: /src/postgres/src/backend/catalog/dependency.c:663,1
    - Dst: systable_recheck_tuple
      Src: /src/postgres/src/backend/catalog/dependency.c:671,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/dependency.c:673,1
    - Dst: ReleaseDeletionLock
      Src: /src/postgres/src/backend/catalog/dependency.c:674,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/dependency.c:683,1
    - Dst: findDependentObjects
      Src: /src/postgres/src/backend/catalog/dependency.c:696,1
    - Dst: object_address_present_add_flags
      Src: /src/postgres/src/backend/catalog/dependency.c:720,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/dependency.c:722,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:723,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:724,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/dependency.c:764,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:765,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/dependency.c:770,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:778,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:782,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:783,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:785,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/dependency.c:787,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/dependency.c:788,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/dependency.c:789,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:790,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/dependency.c:791,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/dependency.c:804,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/dependency.c:807,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:810,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/dependency.c:811,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:814,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/dependency.c:817,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:820,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/dependency.c:826,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:829,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/dependency.c:829,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/dependency.c:831,1
    - Dst: AcquireDeletionLock
      Src: /src/postgres/src/backend/catalog/dependency.c:851,1
    - Dst: systable_recheck_tuple
      Src: /src/postgres/src/backend/catalog/dependency.c:860,1
    - Dst: ReleaseDeletionLock
      Src: /src/postgres/src/backend/catalog/dependency.c:863,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/dependency.c:892,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:893,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/catalog/dependency.c:904,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/dependency.c:913,1
    - Dst: qsort
      Src: /src/postgres/src/backend/catalog/dependency.c:921,1
    - Dst: findDependentObjects
      Src: /src/postgres/src/backend/catalog/dependency.c:937,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/dependency.c:946,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/dependency.c:962,1
    - Dst: add_exact_object_address_extra
      Src: /src/postgres/src/backend/catalog/dependency.c:963,1
    CyclomaticComplexity: 53
    EdgeCount: 53
    ICount: 151
    argCount: 7
    argNames:
    - object
    - objflags
    - flags
    - stack
    - targetObjects
    - pendingObjects
    - depRel
    argTypes:
    - ObjectAddress*
    - int
    - int
    - ObjectAddressStack*
    - ObjectAddresses*
    - ObjectAddresses*
    - Relation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 431
    functionDepth: 4
    functionLinenumber: 431
    functionLinenumberEnd: 964
    functionName: findDependentObjects
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 3
    functionsReached:
    - AcquireDeletionLock
    - add_exact_object_address_extra
    - HeapTupleIsValid
    - getObjectDescription
    - errhint
    - stack_address_present_add_flags
    - findDependentObjects
    - pfree
    - Int32GetDatum
    - GETSTRUCT
    - ScanKeyInit
    - errmsg
    - qsort
    - elog
    - OidIsValid
    - object_address_present_add_flags
    - repalloc
    - palloc
    - systable_endscan
    - ObjectIdGetDatum
    - check_stack_depth
    - systable_beginscan
    - memset
    - systable_getnext
    - ereport
    - IsPinnedObject
    - ReleaseDeletionLock
    - object_address_present
    - errcode
    - systable_recheck_tuple
    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:1011,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/dependency.c:1014,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/dependency.c:1015,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/dependency.c:1016,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:1017,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/dependency.c:1018,1
    - Dst: message_level_is_interesting
      Src: /src/postgres/src/backend/catalog/dependency.c:1028,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/dependency.c:1038,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/catalog/dependency.c:1039,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:1059,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/dependency.c:1081,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/catalog/dependency.c:1082,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:1087,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/catalog/dependency.c:1096,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/dependency.c:1097,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/dependency.c:1097,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/catalog/dependency.c:1105,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/dependency.c:1106,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/dependency.c:1106,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/dependency.c:1108,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/catalog/dependency.c:1120,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/dependency.c:1121,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/dependency.c:1121,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/catalog/dependency.c:1129,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/dependency.c:1130,1
    - Dst: _
      Src: /src/postgres/src/backend/catalog/dependency.c:1130,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/dependency.c:1134,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/catalog/dependency.c:1138,1
    - Dst: ngettext
      Src: /src/postgres/src/backend/catalog/dependency.c:1138,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/dependency.c:1148,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/dependency.c:1149,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/dependency.c:1150,1
    - Dst: getObjectDescription
      Src: /src/postgres/src/backend/catalog/dependency.c:1151,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/catalog/dependency.c:1152,1
    - Dst: errdetail_log
      Src: /src/postgres/src/backend/catalog/dependency.c:1153,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/dependency.c:1154,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/dependency.c:1156,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/dependency.c:1157,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/dependency.c:1158,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/catalog/dependency.c:1159,1
    - Dst: errdetail_log
      Src: /src/postgres/src/backend/catalog/dependency.c:1160,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/dependency.c:1161,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/dependency.c:1165,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/catalog/dependency.c:1166,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/catalog/dependency.c:1170,1
    - Dst: errdetail_log
      Src: /src/postgres/src/backend/catalog/dependency.c:1171,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/dependency.c:1176,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/catalog/dependency.c:1177,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/dependency.c:1180,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/dependency.c:1181,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 66
    argCount: 4
    argNames:
    - targetObjects
    - behavior
    - flags
    - origObject
    argTypes:
    - ObjectAddresses*
    - DropBehavior
    - int
    - ObjectAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1182
      start: 979
    functionDepth: 4
    functionLinenumber: 979
    functionLinenumberEnd: 1182
    functionName: reportDependentObjects
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 2
    functionsReached:
    - errmsg
    - pfree
    - appendStringInfo
    - appendStringInfoChar
    - ngettext
    - errdetail_internal
    - errmsg_internal
    - ereport
    - getObjectDescription
    - errhint
    - errdetail_log
    - _
    - errmsg_plural
    - initStringInfo
    - message_level_is_interesting
    - errcode
    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:1195,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/dependency.c:1197,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/dependency.c:1204,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:1204,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:1205,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/dependency.c:1206,1
    - Dst: get_object_class_descr
      Src: /src/postgres/src/backend/catalog/dependency.c:1207,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/dependency.c:1209,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/dependency.c:1211,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/dependency.c:1218,1
    - Dst: get_object_attnum_oid
      Src: /src/postgres/src/backend/catalog/dependency.c:1219,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:1221,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/dependency.c:1223,1
    - Dst: get_object_oid_index
      Src: /src/postgres/src/backend/catalog/dependency.c:1223,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/dependency.c:1227,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:1228,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/dependency.c:1229,1
    - Dst: get_object_class_descr
      Src: /src/postgres/src/backend/catalog/dependency.c:1230,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/dependency.c:1232,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/dependency.c:1234,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/dependency.c:1237,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - object
    argTypes:
    - ObjectAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1238
      start: 1188
    functionDepth: 7
    functionLinenumber: 1188
    functionLinenumberEnd: 1238
    functionName: DropObjectById
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - ReleaseSysCache
    - table_open
    - get_object_catcache_oid
    - HeapTupleIsValid
    - get_object_attnum_oid
    - systable_getnext
    - get_object_class_descr
    - ScanKeyInit
    - SearchSysCache1
    - elog
    - systable_endscan
    - get_object_oid_index
    - table_close
    - CatalogTupleDelete
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void DropObjectById(const ObjectAddress *object)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: InvokeObjectDropHookArg
      Src: /src/postgres/src/backend/catalog/dependency.c:1254,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/dependency.c:1263,1
    - Dst: doDeletion
      Src: /src/postgres/src/backend/catalog/dependency.c:1274,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/dependency.c:1280,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/dependency.c:1289,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:1292,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/dependency.c:1293,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:1296,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/dependency.c:1299,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:1302,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/dependency.c:1308,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:1311,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/dependency.c:1311,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/dependency.c:1313,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/dependency.c:1316,1
    - Dst: deleteSharedDependencyRecordsFor
      Src: /src/postgres/src/backend/catalog/dependency.c:1322,1
    - Dst: DeleteComments
      Src: /src/postgres/src/backend/catalog/dependency.c:1333,1
    - Dst: DeleteSecurityLabel
      Src: /src/postgres/src/backend/catalog/dependency.c:1334,1
    - Dst: DeleteInitPrivs
      Src: /src/postgres/src/backend/catalog/dependency.c:1335,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/catalog/dependency.c:1341,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 3
    argNames:
    - object
    - depRel
    - flags
    argTypes:
    - ObjectAddress*
    - Relation*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1346
      start: 1245
    functionDepth: 7
    functionLinenumber: 1245
    functionLinenumberEnd: 1346
    functionName: deleteOneObject
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 1
    functionsReached:
    - systable_beginscan
    - table_open
    - doDeletion
    - Int32GetDatum
    - HeapTupleIsValid
    - systable_getnext
    - deleteSharedDependencyRecordsFor
    - DeleteComments
    - ScanKeyInit
    - CommandCounterIncrement
    - DeleteSecurityLabel
    - systable_endscan
    - DeleteInitPrivs
    - table_close
    - CatalogTupleDelete
    - ObjectIdGetDatum
    - InvokeObjectDropHookArg
    linkageType: ''
    returnType: void
    signature: void deleteOneObject(const ObjectAddress *object, Relation *depRel,
      int flags)
  - BBCount: 46
    BranchProfiles: []
    Callsites:
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/catalog/dependency.c:1358,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/dependency.c:1366,1
    - Dst: index_drop
      Src: /src/postgres/src/backend/catalog/dependency.c:1367,1
    - Dst: RemoveAttributeById
      Src: /src/postgres/src/backend/catalog/dependency.c:1372,1
    - Dst: heap_drop_with_catalog
      Src: /src/postgres/src/backend/catalog/dependency.c:1375,1
    - Dst: DeleteSequenceTuple
      Src: /src/postgres/src/backend/catalog/dependency.c:1383,1
    - Dst: RemoveFunctionById
      Src: /src/postgres/src/backend/catalog/dependency.c:1388,1
    - Dst: RemoveTypeById
      Src: /src/postgres/src/backend/catalog/dependency.c:1392,1
    - Dst: RemoveConstraintById
      Src: /src/postgres/src/backend/catalog/dependency.c:1396,1
    - Dst: RemoveAttrDefaultById
      Src: /src/postgres/src/backend/catalog/dependency.c:1400,1
    - Dst: LargeObjectDrop
      Src: /src/postgres/src/backend/catalog/dependency.c:1404,1
    - Dst: RemoveOperatorById
      Src: /src/postgres/src/backend/catalog/dependency.c:1408,1
    - Dst: RemoveRewriteRuleById
      Src: /src/postgres/src/backend/catalog/dependency.c:1412,1
    - Dst: RemoveTriggerById
      Src: /src/postgres/src/backend/catalog/dependency.c:1416,1
    - Dst: RemoveStatisticsById
      Src: /src/postgres/src/backend/catalog/dependency.c:1420,1
    - Dst: RemoveTSConfigurationById
      Src: /src/postgres/src/backend/catalog/dependency.c:1424,1
    - Dst: RemoveExtensionById
      Src: /src/postgres/src/backend/catalog/dependency.c:1428,1
    - Dst: RemovePolicyById
      Src: /src/postgres/src/backend/catalog/dependency.c:1432,1
    - Dst: RemovePublicationSchemaById
      Src: /src/postgres/src/backend/catalog/dependency.c:1436,1
    - Dst: RemovePublicationRelById
      Src: /src/postgres/src/backend/catalog/dependency.c:1440,1
    - Dst: RemovePublicationById
      Src: /src/postgres/src/backend/catalog/dependency.c:1444,1
    - Dst: DropObjectById
      Src: /src/postgres/src/backend/catalog/dependency.c:1467,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/dependency.c:1478,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/dependency.c:1482,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 92
    argCount: 2
    argNames:
    - object
    - flags
    argTypes:
    - ObjectAddress*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1484
      start: 1351
    functionDepth: 8
    functionLinenumber: 1351
    functionLinenumberEnd: 1484
    functionName: doDeletion
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 1
    functionsReached:
    - DropObjectById
    - RemoveRewriteRuleById
    - RemovePublicationById
    - RemoveExtensionById
    - heap_drop_with_catalog
    - RemovePublicationRelById
    - RemoveFunctionById
    - RemoveTriggerById
    - RemoveConstraintById
    - get_rel_relkind
    - RemovePolicyById
    - RemoveTypeById
    - index_drop
    - LargeObjectDrop
    - RemoveOperatorById
    - elog
    - RemoveStatisticsById
    - DeleteSequenceTuple
    - RemoveTSConfigurationById
    - Assert
    - RemovePublicationSchemaById
    - RemoveAttributeById
    - RemoveAttrDefaultById
    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:1507,1
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/catalog/dependency.c:1509,1
    - Dst: LockSharedObject
      Src: /src/postgres/src/backend/catalog/dependency.c:1512,1
    - Dst: LockDatabaseObject
      Src: /src/postgres/src/backend/catalog/dependency.c:1517,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - object
    - flags
    argTypes:
    - ObjectAddress*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1520
      start: 1495
    functionDepth: 1
    functionLinenumber: 1495
    functionLinenumberEnd: 1520
    functionName: AcquireDeletionLock
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 5
    functionsReached:
    - LockRelationOid
    - LockSharedObject
    - LockDatabaseObject
    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:1531,1
    - Dst: UnlockDatabaseObject
      Src: /src/postgres/src/backend/catalog/dependency.c:1534,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - object
    argTypes:
    - ObjectAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1536
      start: 1527
    functionDepth: 1
    functionLinenumber: 1527
    functionLinenumberEnd: 1536
    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:1559,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/dependency.c:1562,1
    - Dst: find_expr_references_walker
      Src: /src/postgres/src/backend/catalog/dependency.c:1565,1
    - Dst: eliminate_duplicate_dependencies
      Src: /src/postgres/src/backend/catalog/dependency.c:1568,1
    - Dst: recordMultipleDependencies
      Src: /src/postgres/src/backend/catalog/dependency.c:1571,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/dependency.c:1575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - depender
    - expr
    - rtable
    - behavior
    argTypes:
    - ObjectAddress*
    - Node*
    - List*
    - DependencyType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1576
      start: 1552
    functionDepth: 4
    functionLinenumber: 1552
    functionLinenumberEnd: 1576
    functionName: recordDependencyOnExpr
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 2
    functionsReached:
    - eliminate_duplicate_dependencies
    - new_object_addresses
    - list_make1
    - find_expr_references_walker
    - free_object_addresses
    - recordMultipleDependencies
    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: 4
    BranchProfiles: []
    Callsites:
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/dependency.c:1605,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/dependency.c:1614,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/catalog/dependency.c:1614,1
    - Dst: find_expr_references_walker
      Src: /src/postgres/src/backend/catalog/dependency.c:1617,1
    - Dst: eliminate_duplicate_dependencies
      Src: /src/postgres/src/backend/catalog/dependency.c:1620,1
    - Dst: new_object_addresses
      Src: /src/postgres/src/backend/catalog/dependency.c:1631,1
    - Dst: add_exact_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1643,1
    - Dst: recordMultipleDependencies
      Src: /src/postgres/src/backend/catalog/dependency.c:1657,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/dependency.c:1669,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/dependency.c:1673,1
    - Dst: recordMultipleDependencies
      Src: /src/postgres/src/backend/catalog/dependency.c:1677,1
    - Dst: free_object_addresses
      Src: /src/postgres/src/backend/catalog/dependency.c:1681,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: 1682
      start: 1595
    functionDepth: 4
    functionLinenumber: 1595
    functionLinenumberEnd: 1682
    functionName: recordDependencyOnSingleRelExpr
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 4
    functionsReached:
    - add_exact_object_address
    - eliminate_duplicate_dependencies
    - new_object_addresses
    - list_make1
    - recordDependencyOn
    - find_expr_references_walker
    - free_object_addresses
    - recordMultipleDependencies
    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: 88
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:1703,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/dependency.c:1710,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/dependency.c:1711,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/catalog/dependency.c:1712,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/dependency.c:1713,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/dependency.c:1714,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/catalog/dependency.c:1715,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1733,1
    - Dst: process_function_rte_ref
      Src: /src/postgres/src/backend/catalog/dependency.c:1740,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:1753,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1759,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:1768,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1770,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/dependency.c:1785,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/catalog/dependency.c:1786,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:1787,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1788,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/dependency.c:1793,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/catalog/dependency.c:1794,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:1795,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1796,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/dependency.c:1800,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/catalog/dependency.c:1801,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:1802,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1803,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/dependency.c:1807,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/catalog/dependency.c:1808,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:1809,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1810,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/dependency.c:1814,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/catalog/dependency.c:1815,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:1816,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1817,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/dependency.c:1821,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/catalog/dependency.c:1822,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:1823,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1824,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/dependency.c:1828,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/catalog/dependency.c:1829,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:1830,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1831,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/catalog/dependency.c:1836,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/catalog/dependency.c:1837,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:1838,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1839,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/dependency.c:1848,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/dependency.c:1849,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/dependency.c:1850,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/dependency.c:1859,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/dependency.c:1860,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/dependency.c:1861,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:1868,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1873,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:1876,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1878,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:1881,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1885,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:1889,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1893,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:1897,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1901,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:1905,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1909,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:1913,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1917,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:1921,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1925,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:1929,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1933,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:1937,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1949,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:1953,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/dependency.c:1956,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:1958,1
    - Dst: getBaseType
      Src: /src/postgres/src/backend/catalog/dependency.c:1961,1
    - Dst: exprType
      Src: /src/postgres/src/backend/catalog/dependency.c:1961,1
    - Dst: get_typ_typrelid
      Src: /src/postgres/src/backend/catalog/dependency.c:1962,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:1973,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1974,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1977,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:1980,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1982,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:1985,1
    - Dst: get_typ_typrelid
      Src: /src/postgres/src/backend/catalog/dependency.c:1988,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:1991,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/dependency.c:1995,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:1996,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/catalog/dependency.c:1996,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2000,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2003,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2008,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2011,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2013,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:2021,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2024,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2026,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2029,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2034,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2037,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2039,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2043,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2048,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2051,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2055,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2058,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2062,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2065,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/dependency.c:2070,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2072,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/dependency.c:2072,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/dependency.c:2075,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2077,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/dependency.c:2077,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2082,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2086,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2089,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2093,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2096,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2100,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2101,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2105,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2109,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2111,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2112,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2116,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2120,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2121,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2123,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:2126,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2128,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2132,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2136,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:2139,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2140,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2142,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2143,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2147,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/dependency.c:2170,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/dependency.c:2172,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2177,1
    - Dst: lcons
      Src: /src/postgres/src/backend/catalog/dependency.c:2195,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/catalog/dependency.c:2198,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2200,1
    - Dst: find_expr_references_walker
      Src: /src/postgres/src/backend/catalog/dependency.c:2201,1
    - Dst: list_delete_first
      Src: /src/postgres/src/backend/catalog/dependency.c:2203,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/dependency.c:2214,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/dependency.c:2215,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/dependency.c:2216,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/dependency.c:2238,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/dependency.c:2239,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/catalog/dependency.c:2241,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/dependency.c:2244,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/dependency.c:2246,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2250,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/dependency.c:2259,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2261,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/dependency.c:2261,1
    - Dst: lcons
      Src: /src/postgres/src/backend/catalog/dependency.c:2266,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/catalog/dependency.c:2267,1
    - Dst: list_delete_first
      Src: /src/postgres/src/backend/catalog/dependency.c:2272,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2275,1
    - Dst: find_expr_references_walker
      Src: /src/postgres/src/backend/catalog/dependency.c:2280,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2283,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/dependency.c:2293,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2295,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/dependency.c:2295,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/dependency.c:2298,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/dependency.c:2300,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2302,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2303,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2307,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/dependency.c:2315,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2317,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/dependency.c:2317,1
    - Dst: foreach
      Src: /src/postgres/src/backend/catalog/dependency.c:2320,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/dependency.c:2322,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2324,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2325,1
    - Dst: IsA
      Src: /src/postgres/src/backend/catalog/dependency.c:2329,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2333,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/catalog/dependency.c:2338,1
    CyclomaticComplexity: 102
    EdgeCount: 102
    ICount: 255
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - find_expr_references_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2340
      start: 1697
    functionDepth: 6
    functionLinenumber: 1697
    functionLinenumberEnd: 2340
    functionName: find_expr_references_walker
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 3
    functionsReached:
    - add_object_address
    - get_typ_typrelid
    - list_delete_first
    - lcons
    - process_function_rte_ref
    - list_length
    - SearchSysCacheExists1
    - lfirst_int
    - query_tree_walker
    - exprType
    - foreach
    - errmsg
    - expression_tree_walker
    - IsA
    - list_nth
    - elog
    - OidIsValid
    - rt_fetch
    - ObjectIdGetDatum
    - lfirst
    - ereport
    - DatumGetObjectId
    - find_expr_references_walker
    - lfirst_oid
    - errcode
    - getBaseType
    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:2359,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/dependency.c:2361,1
    - Dst: get_expr_result_tupdesc
      Src: /src/postgres/src/backend/catalog/dependency.c:2372,1
    - Dst: get_typ_typrelid
      Src: /src/postgres/src/backend/catalog/dependency.c:2379,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/dependency.c:2381,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2382,1
    - Dst: add_object_address
      Src: /src/postgres/src/backend/catalog/dependency.c:2383,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/dependency.c:2399,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/dependency.c:2400,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/dependency.c:2401,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: 2403
      start: 2346
    functionDepth: 1
    functionLinenumber: 2346
    functionLinenumberEnd: 2403
    functionName: process_function_rte_ref
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - Assert
    - add_object_address
    - get_typ_typrelid
    - ereport
    - foreach
    - OidIsValid
    - get_expr_result_tupdesc
    - lfirst
    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: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/dependency.c:2420,1
    - Dst: qsort
      Src: /src/postgres/src/backend/catalog/dependency.c:2426,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - addrs
    argTypes:
    - ObjectAddresses*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2463
      start: 2408
    functionDepth: 1
    functionLinenumber: 2408
    functionLinenumberEnd: 2463
    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: 2505
      start: 2468
    functionDepth: 0
    functionLinenumber: 2468
    functionLinenumberEnd: 2505
    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
      Src: /src/postgres/src/backend/catalog/dependency.c:2517,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/dependency.c:2522,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2526
      start: 2512
    functionDepth: 0
    functionLinenumber: 2512
    functionLinenumberEnd: 2526
    functionName: new_object_addresses
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 13
    functionsReached:
    - palloc
    linkageType: ''
    returnType: ObjectAddresses
    signature: 'ObjectAddresses *

      new_object_addresses(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: repalloc
      Src: /src/postgres/src/backend/catalog/dependency.c:2542,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/dependency.c:2543,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - classId
    - objectId
    - subId
    - addrs
    argTypes:
    - Oid
    - Oid
    - int32
    - ObjectAddresses*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2551
      start: 2531
    functionDepth: 1
    functionLinenumber: 2531
    functionLinenumberEnd: 2551
    functionName: add_object_address
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 2
    functionsReached:
    - repalloc
    - Assert
    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:2569,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/dependency.c:2570,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - object
    - addrs
    argTypes:
    - ObjectAddress*
    - ObjectAddresses*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2576
      start: 2558
    functionDepth: 1
    functionLinenumber: 2558
    functionLinenumberEnd: 2576
    functionName: add_exact_object_address
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 13
    functionsReached:
    - repalloc
    - Assert
    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:2594,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/catalog/dependency.c:2601,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/catalog/dependency.c:2603,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - object
    - extra
    - addrs
    argTypes:
    - ObjectAddress*
    - ObjectAddressExtra*
    - ObjectAddresses*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2611
      start: 2583
    functionDepth: 0
    functionLinenumber: 2583
    functionLinenumberEnd: 2611
    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: 2638
      start: 2618
    functionDepth: 0
    functionLinenumber: 2618
    functionLinenumberEnd: 2638
    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: 2712
      start: 2644
    functionDepth: 0
    functionLinenumber: 2644
    functionLinenumberEnd: 2712
    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: 2761
      start: 2717
    functionDepth: 0
    functionLinenumber: 2717
    functionLinenumberEnd: 2761
    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:2772,1
    - Dst: recordMultipleDependencies
      Src: /src/postgres/src/backend/catalog/dependency.c:2773,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - depender
    - referenced
    - behavior
    argTypes:
    - ObjectAddress*
    - ObjectAddresses*
    - DependencyType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2776
      start: 2767
    functionDepth: 4
    functionLinenumber: 2767
    functionLinenumberEnd: 2776
    functionName: record_object_address_dependencies
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 8
    functionsReached:
    - eliminate_duplicate_dependencies
    - recordMultipleDependencies
    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:2790,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - addrs
    argTypes:
    - ObjectAddresses*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2793
      start: 2786
    functionDepth: 1
    functionLinenumber: 2786
    functionLinenumberEnd: 2793
    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:2801,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/dependency.c:2803,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/dependency.c:2804,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - addrs
    argTypes:
    - ObjectAddresses*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2805
      start: 2798
    functionDepth: 0
    functionLinenumber: 2798
    functionLinenumberEnd: 2805
    functionName: free_object_addresses
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 13
    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:2819,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/dependency.c:2821,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:2824,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/dependency.c:2825,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:2828,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/dependency.c:2831,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/catalog/dependency.c:2834,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/dependency.c:2840,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/dependency.c:2843,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/dependency.c:2843,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/dependency.c:2844,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/dependency.c:2846,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/dependency.c:2848,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - object
    argTypes:
    - ObjectAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2849
      start: 2810
    functionDepth: 7
    functionLinenumber: 2810
    functionLinenumberEnd: 2849
    functionName: DeleteInitPrivs
    functionSourceFile: /src/postgres/src/backend/catalog/dependency.c
    functionUses: 1
    functionsReached:
    - systable_beginscan
    - table_open
    - Int32GetDatum
    - HeapTupleIsValid
    - systable_getnext
    - ScanKeyInit
    - systable_endscan
    - table_close
    - CatalogTupleDelete
    - ObjectIdGetDatum
    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:
    - memset
    - Assert
    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:
    - memset
    - Assert
    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:
    - memset
    - Assert
    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:
    - memset
    - Assert
    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:
    - memset
    - Assert
    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:
    - memset
    - Assert
    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:
    - memset
    - Assert
    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:
    - memset
    - Assert
    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: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:46,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:50,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:50,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:55,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:58,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:58,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:61,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:62,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - publications
    - dest
    - quote_literal
    argTypes:
    - List*
    - StringInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 40
    functionDepth: 2
    functionLinenumber: 40
    functionLinenumberEnd: 66
    functionName: GetPublicationsStr
    functionSourceFile: /src/postgres/src/backend/catalog/pg_subscription.c
    functionUses: 0
    functionsReached:
    - Assert
    - appendStringInfoChar
    - appendStringInfoString
    - strVal
    - quote_literal_cstr
    - lfirst
    linkageType: ''
    returnType: void
    signature: void GetPublicationsStr(List *publications, StringInfo dest, bool quote_literal)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:50,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:50,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:55,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:58,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:58,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:61,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:62,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 65
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_subscription.c
    functionUses: 356
    functionsReached:
    - appendStringInfoChar
    - appendStringInfoString
    - strVal
    - quote_literal_cstr
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, publications)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:80,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:80,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:82,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:87,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:90,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:92,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:96,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:96,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:108,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:111,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:114,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:119,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:119,1
    - Dst: DatumGetName
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:119,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:124,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:127,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:130,1
    - Dst: textarray_to_stringlist
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:133,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:133,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:136,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:139,1
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:142,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:144,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 37
    argCount: 2
    argNames:
    - subid
    - missing_ok
    argTypes:
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 71
    functionDepth: 2
    functionLinenumber: 71
    functionLinenumberEnd: 147
    functionName: GetSubscription
    functionSourceFile: /src/postgres/src/backend/catalog/pg_subscription.c
    functionUses: 0
    functionsReached:
    - NameStr
    - DatumGetArrayTypeP
    - ReleaseSysCache
    - HeapTupleIsValid
    - TextDatumGetCString
    - SysCacheGetAttrNotNull
    - GETSTRUCT
    - pstrdup
    - SearchSysCache1
    - DatumGetName
    - elog
    - SysCacheGetAttr
    - superuser_arg
    - palloc
    - ObjectIdGetDatum
    - textarray_to_stringlist
    linkageType: ''
    returnType: Subscription
    signature: 'Subscription *

      GetSubscription(Oid subid, bool missing_ok)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:162,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:164,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:167,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:169,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:172,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:172,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:175,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - dbid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 153
    functionDepth: 3
    functionLinenumber: 153
    functionLinenumberEnd: 180
    functionName: CountDBSubscriptions
    functionSourceFile: /src/postgres/src/backend/catalog/pg_subscription.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - ScanKeyInit
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    linkageType: ''
    returnType: int
    signature: int CountDBSubscriptions(Oid dbid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:188,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:189,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:191,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:192,1
    - Dst: pfree
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:193,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - sub
    argTypes:
    - Subscription*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 185
    functionDepth: 4
    functionLinenumber: 185
    functionLinenumberEnd: 194
    functionName: FreeSubscription
    functionSourceFile: /src/postgres/src/backend/catalog/pg_subscription.c
    functionUses: 0
    functionsReached:
    - pfree
    - list_free_deep
    linkageType: ''
    returnType: void
    signature: void FreeSubscription(Subscription *sub)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:209,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:210,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:210,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:212,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:213,1
    - Dst: LockSharedObject
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:215,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:218,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:219,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:220,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:223,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:227,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:227,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:229,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:230,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:232,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - subid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 199
    functionDepth: 7
    functionLinenumber: 199
    functionLinenumberEnd: 233
    functionName: DisableSubscription
    functionSourceFile: /src/postgres/src/backend/catalog/pg_subscription.c
    functionUses: 0
    functionsReached:
    - LockSharedObject
    - table_open
    - memset
    - HeapTupleIsValid
    - BoolGetDatum
    - heap_modify_tuple
    - SearchSysCacheCopy1
    - RelationGetDescr
    - CatalogTupleUpdate
    - heap_freetuple
    - elog
    - table_close
    - ObjectIdGetDatum
    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:248,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:254,1
    - Dst: makeString
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:254,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:254,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - textarray
    argTypes:
    - ArrayType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 240
    functionDepth: 6
    functionLinenumber: 240
    functionLinenumberEnd: 257
    functionName: textarray_to_stringlist
    functionSourceFile: /src/postgres/src/backend/catalog/pg_subscription.c
    functionUses: 1
    functionsReached:
    - makeString
    - TextDatumGetCString
    - lappend
    - deconstruct_array_builtin
    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:275,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:277,1
    - Dst: SearchSysCacheCopy2
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:280,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:281,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:282,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:283,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:284,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:288,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:289,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:290,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:291,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:292,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:294,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:298,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:298,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:301,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:303,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:308,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:312,1
    - Dst: UnlockSharedObject
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:313,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: 315
      start: 266
    functionDepth: 7
    functionLinenumber: 266
    functionLinenumberEnd: 315
    functionName: AddSubscriptionRelState
    functionSourceFile: /src/postgres/src/backend/catalog/pg_subscription.c
    functionUses: 0
    functionsReached:
    - heap_form_tuple
    - LockSharedObject
    - CatalogTupleInsert
    - table_open
    - memset
    - HeapTupleIsValid
    - heap_freetuple
    - RelationGetDescr
    - elog
    - CharGetDatum
    - UnlockSharedObject
    - SearchSysCacheCopy2
    - LSNGetDatum
    - table_close
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: "void AddSubscriptionRelState(Oid subid, Oid relid, char state,\n\t\t\t\t\t\tXLogRecPtr
      sublsn, bool retain_lock)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LockSharedObject
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:330,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:332,1
    - Dst: SearchSysCacheCopy2
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:335,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:336,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:337,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:338,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:339,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:343,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:344,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:345,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:348,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:352,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:356,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:356,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:360,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:363,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 4
    argNames:
    - subid
    - relid
    - state
    - sublsn
    argTypes:
    - Oid
    - Oid
    - char
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 320
    functionDepth: 7
    functionLinenumber: 320
    functionLinenumberEnd: 364
    functionName: UpdateSubscriptionRelState
    functionSourceFile: /src/postgres/src/backend/catalog/pg_subscription.c
    functionUses: 0
    functionsReached:
    - LockSharedObject
    - table_open
    - memset
    - HeapTupleIsValid
    - heap_modify_tuple
    - RelationGetDescr
    - CatalogTupleUpdate
    - elog
    - CharGetDatum
    - SearchSysCacheCopy2
    - LSNGetDatum
    - table_close
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: "void UpdateSubscriptionRelState(Oid subid, Oid relid, char state,\n\t\t\t\t\t\t
      \  XLogRecPtr sublsn)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:384,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:387,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:388,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:389,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:391,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:393,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:399,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:402,1
    - Dst: DatumGetLSN
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:407,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:410,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:412,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - subid
    - relid
    - sublsn
    argTypes:
    - Oid
    - Oid
    - XLogRecPtr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 371
    functionDepth: 3
    functionLinenumber: 371
    functionLinenumberEnd: 415
    functionName: GetSubscriptionRelState
    functionSourceFile: /src/postgres/src/backend/catalog/pg_subscription.c
    functionUses: 0
    functionsReached:
    - SearchSysCache2
    - ReleaseSysCache
    - table_open
    - HeapTupleIsValid
    - GETSTRUCT
    - DatumGetLSN
    - SysCacheGetAttr
    - table_close
    - ObjectIdGetDatum
    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:430,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:432,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:434,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:438,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:441,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:443,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:447,1
    - Dst: table_beginscan_catalog
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:451,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:452,1
    - Dst: heap_getnext
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:452,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:456,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:465,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:467,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:468,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:469,1
    - Dst: get_subscription_name
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:470,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:471,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:472,1
    - Dst: errhint
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:478,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:483,1
    - Dst: table_endscan
      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: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - subid
    - relid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 421
    functionDepth: 7
    functionLinenumber: 421
    functionLinenumberEnd: 488
    functionName: RemoveSubscriptionRel
    functionSourceFile: /src/postgres/src/backend/catalog/pg_subscription.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - get_rel_name
    - get_subscription_name
    - table_open
    - table_beginscan_catalog
    - HeapTupleIsValid
    - GETSTRUCT
    - ScanKeyInit
    - heap_getnext
    - ereport
    - errhint
    - OidIsValid
    - CatalogTupleDelete
    - table_close
    - errdetail
    - ObjectIdGetDatum
    - table_endscan
    linkageType: ''
    returnType: void
    signature: void RemoveSubscriptionRel(Oid subid, Oid relid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:504,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:506,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:509,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:511,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:515,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:515,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:518,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - subid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 496
    functionDepth: 3
    functionLinenumber: 496
    functionLinenumberEnd: 522
    functionName: HasSubscriptionRelations
    functionSourceFile: /src/postgres/src/backend/catalog/pg_subscription.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - ScanKeyInit
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    linkageType: ''
    returnType: bool
    signature: bool HasSubscriptionRelations(Oid subid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:541,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:543,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:546,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:549,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:552,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:554,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:557,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:557,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:564,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:566,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:569,1
    - Dst: DatumGetLSN
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:574,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:576,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:580,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_subscription.c:581,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - subid
    - not_ready
    argTypes:
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 531
    functionDepth: 6
    functionLinenumber: 531
    functionLinenumberEnd: 584
    functionName: GetSubscriptionRelations
    functionSourceFile: /src/postgres/src/backend/catalog/pg_subscription.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - GETSTRUCT
    - ScanKeyInit
    - table_close
    - DatumGetLSN
    - CharGetDatum
    - lappend
    - SysCacheGetAttr
    - palloc
    - systable_endscan
    - ObjectIdGetDatum
    linkageType: ''
    returnType: List
    signature: 'List *

      GetSubscriptionRelations(Oid subid, bool not_ready)'
  - 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:
    - NameGetDatum
    - BoolGetDatum
    - FindDefaultConversion
    - CatalogTupleInsert
    - pg_encoding_to_char
    - table_open
    - Int32GetDatum
    - recordDependencyOnOwner
    - heap_freetuple
    - recordDependencyOn
    - recordDependencyOnCurrentExtension
    - errmsg
    - heap_form_tuple
    - InvokeObjectPostCreateHook
    - elog
    - table_close
    - ObjectIdGetDatum
    - namestrcpy
    - ereport
    - PointerGetDatum
    - GetNewOidWithIndex
    - errcode
    - SearchSysCacheExists2
    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:
    - ReleaseSysCacheList
    - SearchSysCacheList3
    - Int32GetDatum
    - GETSTRUCT
    - 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:46,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:52,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:53,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:55,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:58,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:61,1
    - Dst: get_user_default_acl
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:62,1
    - Dst: ObjectIdGetDatum
      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: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:70,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:74,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:74,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:77,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:79,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:81,1
    - Dst: recordDependencyOnNewAcl
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:84,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - loid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 35
    functionDepth: 7
    functionLinenumber: 35
    functionLinenumberEnd: 88
    functionName: LargeObjectCreate
    functionSourceFile: /src/postgres/src/backend/catalog/pg_largeobject.c
    functionUses: 0
    functionsReached:
    - heap_form_tuple
    - CatalogTupleInsert
    - table_open
    - memset
    - ObjectIdGetDatum
    - heap_freetuple
    - RelationGetDescr
    - get_user_default_acl
    - PointerGetDatum
    - recordDependencyOnNewAcl
    - OidIsValid
    - GetNewOidWithIndex
    - table_close
    - GetUserId
    linkageType: ''
    returnType: Oid
    signature: Oid LargeObjectCreate(Oid loid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:103,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:106,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:112,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:115,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:117,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:121,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:122,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:123,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:124,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:125,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:127,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:129,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:134,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:137,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:139,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:142,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:142,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:144,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:147,1
    - Dst: table_close
      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
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - loid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 94
    functionDepth: 7
    functionLinenumber: 94
    functionLinenumberEnd: 152
    functionName: LargeObjectDrop
    functionSourceFile: /src/postgres/src/backend/catalog/pg_largeobject.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - systable_beginscan
    - table_open
    - systable_getnext
    - HeapTupleIsValid
    - ScanKeyInit
    - ereport
    - systable_endscan
    - table_close
    - CatalogTupleDelete
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void LargeObjectDrop(Oid loid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LargeObjectExistsWithSnapshot
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - loid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 170
    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:184,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:187,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:189,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:192,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:196,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:197,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:200,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_largeobject.c:202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - loid
    - snapshot
    argTypes:
    - Oid
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 175
    functionDepth: 3
    functionLinenumber: 175
    functionLinenumberEnd: 205
    functionName: LargeObjectExistsWithSnapshot
    functionSourceFile: /src/postgres/src/backend/catalog/pg_largeobject.c
    functionUses: 1
    functionsReached:
    - systable_beginscan
    - table_open
    - systable_getnext
    - HeapTupleIsValid
    - ScanKeyInit
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    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:
    - new_object_addresses
    - HeapTupleIsValid
    - free_object_addresses
    - SearchSysCache2
    - CatalogTupleInsert
    - table_open
    - ObjectAddressSet
    - heap_freetuple
    - recordDependencyOnCurrentExtension
    - errmsg
    - heap_form_tuple
    - InvokeObjectPostCreateHook
    - format_type_be
    - OidIsValid
    - table_close
    - ObjectIdGetDatum
    - add_exact_object_address
    - record_object_address_dependencies
    - RelationGetDescr
    - ereport
    - CharGetDatum
    - GetNewOidWithIndex
    - errcode
    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:
    - strspn
    - strstr
    - strcmp
    - strlen
    - strchr
    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:
    - SearchSysCache4
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - RegProcedureIsValid
    - PointerGetDatum
    - 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:
    - RegProcedureIsValid
    - LookupOperName
    - OidIsValid
    - get_opcode
    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:
    - NameGetDatum
    - BoolGetDatum
    - GetUserId
    - CatalogTupleInsert
    - table_open
    - heap_freetuple
    - validOperatorName
    - errmsg
    - heap_form_tuple
    - InvokeObjectPostCreateHook
    - CommandCounterIncrement
    - table_close
    - ObjectIdGetDatum
    - namestrcpy
    - ereport
    - CharGetDatum
    - GetNewOidWithIndex
    - makeOperatorDependencies
    - errcode
    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:
    - NameGetDatum
    - OperatorUpd
    - BoolGetDatum
    - HeapTupleIsValid
    - SearchSysCacheCopy1
    - GetUserId
    - get_other_operator
    - CatalogTupleInsert
    - table_open
    - heap_modify_tuple
    - validOperatorName
    - errmsg
    - heap_form_tuple
    - aclcheck_error
    - NameListToString
    - InvokeObjectPostCreateHook
    - elog
    - OperatorValidateParams
    - OidIsValid
    - table_close
    - object_ownercheck
    - ObjectIdGetDatum
    - namestrcpy
    - CatalogTupleUpdate
    - RelationGetDescr
    - get_func_rettype
    - ereport
    - CharGetDatum
    - GetNewOidWithIndex
    - OperatorGet
    - makeOperatorDependencies
    - errcode
    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:
    - errmsg
    - errcode
    - OidIsValid
    - ereport
    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:
    - OperatorShellMake
    - OperatorLookup
    - aclcheck_error
    - get_namespace_name
    - QualifiedNameGetCreationNamespace
    - OidIsValid
    - strcmp
    - GetUserId
    - object_aclcheck
    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:
    - errmsg
    - errcode
    - NameStr
    - table_open
    - CommandCounterIncrement
    - HeapTupleIsValid
    - CatalogTupleUpdate
    - SearchSysCacheCopy1
    - GETSTRUCT
    - get_opname
    - ereport
    - OidIsValid
    - table_close
    - ObjectIdGetDatum
    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: 5
    functionLinenumber: 852
    functionLinenumberEnd: 945
    functionName: makeOperatorDependencies
    functionSourceFile: /src/postgres/src/backend/catalog/pg_operator.c
    functionUses: 2
    functionsReached:
    - add_exact_object_address
    - new_object_addresses
    - ObjectAddressSet
    - record_object_address_dependencies
    - deleteSharedDependencyRecordsFor
    - recordDependencyOnOwner
    - GETSTRUCT
    - OidIsValid
    - free_object_addresses
    - recordDependencyOnCurrentExtension
    - deleteDependencyRecordsFor
    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: 5
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/catalog/pg_publication.c:59,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/catalog/pg_publication.c:60,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:61,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:62,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:63,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/pg_publication.c:64,1
    - Dst: errdetail_relkind_not_supported
      Src: /src/postgres/src/backend/catalog/pg_publication.c:65,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/catalog/pg_publication.c:65,1
    - Dst: IsCatalogRelation
      Src: /src/postgres/src/backend/catalog/pg_publication.c:68,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:69,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:70,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:71,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/pg_publication.c:72,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_publication.c:73,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:77,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:78,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:79,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/pg_publication.c:80,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_publication.c:81,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: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/pg_publication.c:86,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_publication.c:87,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 1
    argNames:
    - targetrel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 88
    functionName: check_publication_add_relation
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errdetail_relkind_not_supported
    - ereport
    - RelationGetForm
    - IsCatalogRelation
    - RelationGetRelationName
    - errdetail
    - errcode
    linkageType: ''
    returnType: void
    signature: void check_publication_add_relation(Relation targetrel)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsCatalogNamespace
      Src: /src/postgres/src/backend/catalog/pg_publication.c:98,1
    - Dst: IsToastNamespace
      Src: /src/postgres/src/backend/catalog/pg_publication.c:98,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:99,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:100,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:101,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/pg_publication.c:102,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_publication.c:103,1
    - Dst: isAnyTempNamespace
      Src: /src/postgres/src/backend/catalog/pg_publication.c:106,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:107,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:108,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:109,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/pg_publication.c:110,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/catalog/pg_publication.c:111,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - schemaid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 94
    functionDepth: 3
    functionLinenumber: 94
    functionLinenumberEnd: 112
    functionName: check_publication_add_schema
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - IsCatalogNamespace
    - errmsg
    - IsToastNamespace
    - get_namespace_name
    - ereport
    - isAnyTempNamespace
    - errdetail
    - errcode
    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:138,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    argCount: 2
    argNames:
    - relid
    - reltuple
    argTypes:
    - Oid
    - Form_pg_class
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 141
    functionName: is_publishable_class
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - IsCatalogRelationOid
    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:149,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 146
    functionDepth: 2
    functionLinenumber: 146
    functionLinenumberEnd: 150
    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: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/catalog/pg_publication.c:162,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/pg_publication.c:166,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:166,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:167,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/catalog/pg_publication.c:168,1
    - Dst: is_publishable_class
      Src: /src/postgres/src/backend/catalog/pg_publication.c:169,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:169,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_publication.c:170,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/catalog/pg_publication.c:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 159
    functionDepth: 2
    functionLinenumber: 159
    functionLinenumberEnd: 172
    functionName: pg_relation_is_publishable
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - ReleaseSysCache
    - HeapTupleIsValid
    - PG_RETURN_BOOL
    - GETSTRUCT
    - SearchSysCache1
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - is_publishable_class
    - 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:185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ancestor
    - table_infos
    argTypes:
    - Oid
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 192
    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:185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 189
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 356
    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:207,1
    - Dst: get_rel_relispartition
      Src: /src/postgres/src/backend/catalog/pg_publication.c:209,1
    - Dst: get_partition_ancestors
      Src: /src/postgres/src/backend/catalog/pg_publication.c:210,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:214,1
    - Dst: is_ancestor_member_tableinfos
      Src: /src/postgres/src/backend/catalog/pg_publication.c:216,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/catalog/pg_publication.c:224,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - table_infos
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 197
    functionDepth: 4
    functionLinenumber: 197
    functionLinenumberEnd: 226
    functionName: filter_partitions
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - is_ancestor_member_tableinfos
    - get_rel_relispartition
    - foreach_delete_current
    - lfirst_oid
    - lfirst
    - 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:207,1
    - Dst: get_rel_relispartition
      Src: /src/postgres/src/backend/catalog/pg_publication.c:209,1
    - Dst: get_partition_ancestors
      Src: /src/postgres/src/backend/catalog/pg_publication.c:210,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:214,1
    - Dst: is_ancestor_member_tableinfos
      Src: /src/postgres/src/backend/catalog/pg_publication.c:216,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/catalog/pg_publication.c:224,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 202
    functionDepth: 4
    functionLinenumber: 202
    functionLinenumberEnd: 225
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 356
    functionsReached:
    - is_ancestor_member_tableinfos
    - get_rel_relispartition
    - foreach_delete_current
    - lfirst_oid
    - lfirst
    - 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:214,1
    - Dst: is_ancestor_member_tableinfos
      Src: /src/postgres/src/backend/catalog/pg_publication.c:216,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 212
    functionDepth: 2
    functionLinenumber: 212
    functionLinenumberEnd: 221
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 356
    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:241,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_publication.c:242,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:245,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_publication.c:247,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_publication.c:250,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:251,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_publication.c:253,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_publication.c:254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - pubid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 232
    functionDepth: 3
    functionLinenumber: 232
    functionLinenumberEnd: 257
    functionName: is_schema_publication
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - systable_getnext
    - HeapTupleIsValid
    - ScanKeyInit
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    linkageType: ''
    returnType: bool
    signature: bool is_schema_publication(Oid pubid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/catalog/pg_publication.c:277,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:278,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:279,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:280,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:286,1
    - Dst: pub_collist_to_bitmapset
      Src: /src/postgres/src/backend/catalog/pg_publication.c:294,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_publication.c:299,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - pub
    - relid
    - mcxt
    - cols
    argTypes:
    - Publication*
    - Oid
    - MemoryContext
    - Bitmapset**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 303
    functionName: check_and_fetch_column_list
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - pub_collist_to_bitmapset
    - SearchSysCache2
    - ReleaseSysCache
    - HeapTupleIsValid
    - SysCacheGetAttr
    - ObjectIdGetDatum
    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:313,1
    - Dst: find_all_inheritors
      Src: /src/postgres/src/backend/catalog/pg_publication.c:316,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/pg_publication.c:320,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:327,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/catalog/pg_publication.c:329,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:330,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_publication.c:334,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:337,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - result
    - pub_partopt
    - relid
    argTypes:
    - List*
    - PublicationPartOpt
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 309
    functionDepth: 7
    functionLinenumber: 309
    functionLinenumberEnd: 340
    functionName: GetPubPartitionOptionRelations
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - Assert
    - list_concat
    - lappend_oid
    - lfirst_oid
    - get_rel_relkind
    - find_all_inheritors
    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:327,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/catalog/pg_publication.c:329,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:330,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 325
    functionDepth: 6
    functionLinenumber: 325
    functionLinenumberEnd: 331
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 356
    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:365,1
    - Dst: GetRelationPublications
      Src: /src/postgres/src/backend/catalog/pg_publication.c:366,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:371,1
    - Dst: GetSchemaPublications
      Src: /src/postgres/src/backend/catalog/pg_publication.c:380,1
    - Dst: get_rel_namespace
      Src: /src/postgres/src/backend/catalog/pg_publication.c:380,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:381,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/pg_publication.c:390,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/pg_publication.c:391,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - puboid
    - ancestors
    - ancestor_level
    argTypes:
    - Oid
    - List*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 353
    functionDepth: 4
    functionLinenumber: 353
    functionLinenumberEnd: 395
    functionName: GetTopMostAncestorInPublication
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - GetSchemaPublications
    - list_member_oid
    - get_rel_namespace
    - lfirst_oid
    - list_free
    - GetRelationPublications
    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:365,1
    - Dst: GetRelationPublications
      Src: /src/postgres/src/backend/catalog/pg_publication.c:366,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:371,1
    - Dst: GetSchemaPublications
      Src: /src/postgres/src/backend/catalog/pg_publication.c:380,1
    - Dst: get_rel_namespace
      Src: /src/postgres/src/backend/catalog/pg_publication.c:380,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:381,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/pg_publication.c:390,1
    - Dst: list_free
      Src: /src/postgres/src/backend/catalog/pg_publication.c:391,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 363
    functionDepth: 4
    functionLinenumber: 363
    functionLinenumberEnd: 392
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 356
    functionsReached:
    - GetSchemaPublications
    - list_member_oid
    - get_rel_namespace
    - lfirst_oid
    - list_free
    - GetRelationPublications
    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:408,1
    - Dst: buildint2vector
      Src: /src/postgres/src/backend/catalog/pg_publication.c:412,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/catalog/pg_publication.c:414,1
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_publication.c:416,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - attrs
    argTypes:
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 404
    functionDepth: 3
    functionLinenumber: 404
    functionLinenumberEnd: 422
    functionName: attnumstoint2vector
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - bms_next_member
    - buildint2vector
    - bms_num_members
    - Assert
    linkageType: ''
    returnType: int2vector
    signature: 'int2vector *

      attnumstoint2vector(Bitmapset *attrs)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:436,1
    - Dst: GetPublication
      Src: /src/postgres/src/backend/catalog/pg_publication.c:439,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_publication.c:445,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/pg_publication.c:452,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:452,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:453,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_publication.c:455,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:460,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:461,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:462,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/pg_publication.c:463,1
    - Dst: check_publication_add_relation
      Src: /src/postgres/src/backend/catalog/pg_publication.c:466,1
    - Dst: pub_collist_validate
      Src: /src/postgres/src/backend/catalog/pg_publication.c:469,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_publication.c:472,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_publication.c:473,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/pg_publication.c:475,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:477,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:479,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:481,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:485,1
    - Dst: nodeToString
      Src: /src/postgres/src/backend/catalog/pg_publication.c:485,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:491,1
    - Dst: attnumstoint2vector
      Src: /src/postgres/src/backend/catalog/pg_publication.c:491,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_publication.c:495,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:495,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_publication.c:498,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_publication.c:499,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_publication.c:502,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_publication.c:505,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_publication.c:506,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_publication.c:509,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_publication.c:510,1
    - Dst: recordDependencyOnSingleRelExpr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:514,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/catalog/pg_publication.c:520,1
    - Dst: ObjectAddressSubSet
      Src: /src/postgres/src/backend/catalog/pg_publication.c:522,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_publication.c:523,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_publication.c:527,1
    - Dst: GetPubPartitionOptionRelations
      Src: /src/postgres/src/backend/catalog/pg_publication.c:537,1
    - Dst: InvalidatePublicationRels
      Src: /src/postgres/src/backend/catalog/pg_publication.c:540,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 41
    argCount: 3
    argNames:
    - pubid
    - pri
    - if_not_exists
    argTypes:
    - Oid
    - PublicationRelInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 427
    functionDepth: 8
    functionLinenumber: 427
    functionLinenumberEnd: 543
    functionName: publication_add_relation
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 1
    functionsReached:
    - nodeToString
    - attnumstoint2vector
    - RelationGetRelationName
    - ObjectAddressSubSet
    - RelationGetRelid
    - table_open
    - CatalogTupleInsert
    - heap_freetuple
    - ObjectAddressSet
    - recordDependencyOn
    - check_publication_add_relation
    - bms_next_member
    - errmsg
    - heap_form_tuple
    - InvalidatePublicationRels
    - recordDependencyOnSingleRelExpr
    - table_close
    - GetPubPartitionOptionRelations
    - ObjectIdGetDatum
    - pub_collist_validate
    - GetPublication
    - memset
    - CStringGetTextDatum
    - RelationGetDescr
    - ereport
    - PointerGetDatum
    - GetNewOidWithIndex
    - errcode
    - SearchSysCacheExists2
    linkageType: ''
    returnType: ObjectAddress
    signature: "ObjectAddress publication_add_relation(Oid pubid, PublicationRelInfo
      *pri,\n\t\t\t\t\t\t bool if_not_exists)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:560,1
    - Dst: strVal
      Src: /src/postgres/src/backend/catalog/pg_publication.c:564,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_publication.c:564,1
    - Dst: get_attnum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:565,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:565,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:568,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:569,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:570,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/pg_publication.c:571,1
    - Dst: AttrNumberIsForUserDefinedAttr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:573,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:574,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:575,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:576,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:579,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:580,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:581,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:582,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/catalog/pg_publication.c:585,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:586,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:587,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:588,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/catalog/pg_publication.c:591,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - targetrel
    - columns
    argTypes:
    - Relation
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 555
    functionDepth: 3
    functionLinenumber: 555
    functionLinenumberEnd: 595
    functionName: pub_collist_validate
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - AttrNumberIsForUserDefinedAttr
    - RelationGetRelid
    - RelationGetDescr
    - TupleDescAttr
    - ereport
    - get_attnum
    - strVal
    - bms_is_member
    - RelationGetRelationName
    - lfirst
    - bms_add_member
    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:564,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/catalog/pg_publication.c:564,1
    - Dst: get_attnum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:565,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:565,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:568,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:569,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:570,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/catalog/pg_publication.c:571,1
    - Dst: AttrNumberIsForUserDefinedAttr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:573,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:574,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:575,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:576,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:579,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:580,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:581,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:582,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/catalog/pg_publication.c:585,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:586,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:587,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:588,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/catalog/pg_publication.c:591,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 562
    functionDepth: 3
    functionLinenumber: 562
    functionLinenumberEnd: 592
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 356
    functionsReached:
    - errmsg
    - errcode
    - AttrNumberIsForUserDefinedAttr
    - RelationGetRelid
    - TupleDescAttr
    - ereport
    - get_attnum
    - strVal
    - bms_is_member
    - RelationGetRelationName
    - lfirst
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: void foreach(lc, columns)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/catalog/pg_publication.c:613,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/catalog/pg_publication.c:614,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/catalog/pg_publication.c:615,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/pg_publication.c:619,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/catalog/pg_publication.c:622,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/pg_publication.c:625,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - columns
    - pubcols
    - mcxt
    argTypes:
    - Bitmapset*
    - Datum
    - MemoryContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 604
    functionDepth: 3
    functionLinenumber: 604
    functionLinenumberEnd: 628
    functionName: pub_collist_to_bitmapset
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 1
    functionsReached:
    - ARR_DIMS
    - MemoryContextSwitchTo
    - DatumGetArrayTypeP
    - ARR_DATA_PTR
    - bms_add_member
    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:640,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:644,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/catalog/pg_publication.c:660,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 2
    argNames:
    - relation
    - include_gencols_type
    argTypes:
    - Relation
    - PublishGencolsType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 636
    functionDepth: 3
    functionLinenumber: 636
    functionLinenumberEnd: 664
    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:677,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_publication.c:682,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/pg_publication.c:689,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:690,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:691,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_publication.c:693,1
    - Dst: ereport
      Src: /src/postgres/src/backend/catalog/pg_publication.c:698,1
    - Dst: errcode
      Src: /src/postgres/src/backend/catalog/pg_publication.c:699,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/catalog/pg_publication.c:700,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/catalog/pg_publication.c:701,1
    - Dst: check_publication_add_schema
      Src: /src/postgres/src/backend/catalog/pg_publication.c:704,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_publication.c:707,1
    - Dst: memset
      Src: /src/postgres/src/backend/catalog/pg_publication.c:708,1
    - Dst: GetNewOidWithIndex
      Src: /src/postgres/src/backend/catalog/pg_publication.c:710,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:712,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:714,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:716,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_publication.c:718,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:718,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/catalog/pg_publication.c:721,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/catalog/pg_publication.c:722,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_publication.c:724,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_publication.c:727,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_publication.c:728,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/catalog/pg_publication.c:731,1
    - Dst: recordDependencyOn
      Src: /src/postgres/src/backend/catalog/pg_publication.c:732,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_publication.c:735,1
    - Dst: GetSchemaPublicationRelations
      Src: /src/postgres/src/backend/catalog/pg_publication.c:742,1
    - Dst: InvalidatePublicationRels
      Src: /src/postgres/src/backend/catalog/pg_publication.c:744,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 3
    argNames:
    - pubid
    - schemaid
    - if_not_exists
    argTypes:
    - Oid
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 669
    functionDepth: 7
    functionLinenumber: 669
    functionLinenumberEnd: 747
    functionName: publication_add_schema
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 1
    functionsReached:
    - CatalogTupleInsert
    - table_open
    - heap_freetuple
    - ObjectAddressSet
    - recordDependencyOn
    - errmsg
    - heap_form_tuple
    - InvalidatePublicationRels
    - get_namespace_name
    - table_close
    - ObjectIdGetDatum
    - GetPublication
    - memset
    - check_publication_add_schema
    - RelationGetDescr
    - ereport
    - GetNewOidWithIndex
    - GetSchemaPublicationRelations
    - errcode
    - SearchSysCacheExists2
    linkageType: ''
    returnType: ObjectAddress
    signature: ObjectAddress publication_add_schema(Oid pubid, Oid schemaid, bool
      if_not_exists)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/catalog/pg_publication.c:758,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:759,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:763,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:765,1
    - Dst: ReleaseSysCacheList
      Src: /src/postgres/src/backend/catalog/pg_publication.c:768,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - relid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 750
    functionDepth: 6
    functionLinenumber: 750
    functionLinenumberEnd: 771
    functionName: GetRelationPublications
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 2
    functionsReached:
    - ReleaseSysCacheList
    - lappend_oid
    - GETSTRUCT
    - SearchSysCacheList1
    - ObjectIdGetDatum
    linkageType: ''
    returnType: List
    signature: 'List *

      GetRelationPublications(Oid relid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_publication.c:789,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_publication.c:791,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:794,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_publication.c:796,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:800,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_publication.c:800,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:804,1
    - Dst: GetPubPartitionOptionRelations
      Src: /src/postgres/src/backend/catalog/pg_publication.c:805,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_publication.c:809,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_publication.c:810,1
    - Dst: list_sort
      Src: /src/postgres/src/backend/catalog/pg_publication.c:813,1
    - Dst: list_deduplicate_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:814,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - pubid
    - pub_partopt
    argTypes:
    - Oid
    - PublicationPartOpt
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 817
      start: 779
    functionDepth: 8
    functionLinenumber: 779
    functionLinenumberEnd: 817
    functionName: GetPublicationRelations
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - list_deduplicate_oid
    - systable_beginscan
    - table_open
    - HeapTupleIsValid
    - systable_getnext
    - list_sort
    - GETSTRUCT
    - ScanKeyInit
    - table_close
    - GetPubPartitionOptionRelations
    - systable_endscan
    - ObjectIdGetDatum
    linkageType: ''
    returnType: List
    signature: 'List *

      GetPublicationRelations(Oid pubid, PublicationPartOpt pub_partopt)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_publication.c:832,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_publication.c:834,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:837,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_publication.c:839,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:843,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_publication.c:843,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:845,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:847,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_publication.c:850,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_publication.c:851,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 822
    functionDepth: 6
    functionLinenumber: 822
    functionLinenumberEnd: 854
    functionName: GetAllTablesPublications
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - BoolGetDatum
    - HeapTupleIsValid
    - systable_getnext
    - lappend_oid
    - GETSTRUCT
    - ScanKeyInit
    - table_close
    - systable_endscan
    linkageType: ''
    returnType: List
    signature: 'List *

      GetAllTablesPublications(void)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_publication.c:872,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_publication.c:874,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:877,1
    - Dst: table_beginscan_catalog
      Src: /src/postgres/src/backend/catalog/pg_publication.c:879,1
    - Dst: heap_getnext
      Src: /src/postgres/src/backend/catalog/pg_publication.c:881,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:883,1
    - Dst: is_publishable_class
      Src: /src/postgres/src/backend/catalog/pg_publication.c:886,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:888,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/catalog/pg_publication.c:891,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_publication.c:895,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:898,1
    - Dst: table_beginscan_catalog
      Src: /src/postgres/src/backend/catalog/pg_publication.c:900,1
    - Dst: heap_getnext
      Src: /src/postgres/src/backend/catalog/pg_publication.c:902,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:904,1
    - Dst: is_publishable_class
      Src: /src/postgres/src/backend/catalog/pg_publication.c:907,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:909,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/catalog/pg_publication.c:912,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_publication.c:915,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 1
    argNames:
    - pubviaroot
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 863
    functionDepth: 7
    functionLinenumber: 863
    functionLinenumberEnd: 917
    functionName: GetAllTablesPublicationRelations
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - table_open
    - lappend_oid
    - table_beginscan_catalog
    - GETSTRUCT
    - ScanKeyInit
    - heap_getnext
    - CharGetDatum
    - is_publishable_class
    - table_close
    - table_endscan
    linkageType: ''
    returnType: List
    signature: 'List *

      GetAllTablesPublicationRelations(bool pubviaroot)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_publication.c:934,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_publication.c:936,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:939,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/catalog/pg_publication.c:941,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:944,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/catalog/pg_publication.c:944,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:948,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:950,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/catalog/pg_publication.c:953,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_publication.c:954,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - pubid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 924
    functionDepth: 6
    functionLinenumber: 924
    functionLinenumberEnd: 957
    functionName: GetPublicationSchemas
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - systable_beginscan
    - table_open
    - lappend_oid
    - HeapTupleIsValid
    - systable_getnext
    - GETSTRUCT
    - ScanKeyInit
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    linkageType: ''
    returnType: List
    signature: 'List *

      GetPublicationSchemas(Oid pubid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/catalog/pg_publication.c:970,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:971,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:975,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:977,1
    - Dst: ReleaseSysCacheList
      Src: /src/postgres/src/backend/catalog/pg_publication.c:980,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - schemaid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 962
    functionDepth: 6
    functionLinenumber: 962
    functionLinenumberEnd: 983
    functionName: GetSchemaPublications
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 2
    functionsReached:
    - ReleaseSysCacheList
    - lappend_oid
    - GETSTRUCT
    - SearchSysCacheList1
    - ObjectIdGetDatum
    linkageType: ''
    returnType: List
    signature: 'List *

      GetSchemaPublications(Oid schemaid)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/catalog/pg_publication.c:997,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:997,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_publication.c:999,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1001,1
    - Dst: table_beginscan_catalog
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1007,1
    - Dst: heap_getnext
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1008,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1010,1
    - Dst: is_publishable_class
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1014,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1017,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1019,1
    - Dst: GetPubPartitionOptionRelations
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1029,1
    - Dst: list_concat_unique_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1032,1
    - Dst: table_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: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - schemaid
    - pub_partopt
    argTypes:
    - Oid
    - PublicationPartOpt
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 988
    functionDepth: 8
    functionLinenumber: 988
    functionLinenumberEnd: 1039
    functionName: GetSchemaPublicationRelations
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 1
    functionsReached:
    - Assert
    - table_open
    - lappend_oid
    - table_beginscan_catalog
    - GETSTRUCT
    - ScanKeyInit
    - heap_getnext
    - list_concat_unique_oid
    - table_close
    - OidIsValid
    - is_publishable_class
    - GetPubPartitionOptionRelations
    - get_rel_relkind
    - table_endscan
    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:1049,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1054,1
    - Dst: GetSchemaPublicationRelations
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1057,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1058,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - pubid
    - pub_partopt
    argTypes:
    - Oid
    - PublicationPartOpt
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1062
      start: 1045
    functionDepth: 9
    functionLinenumber: 1045
    functionLinenumberEnd: 1062
    functionName: GetAllSchemaPublicationRelations
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - lfirst_oid
    - list_concat
    - GetPublicationSchemas
    - GetSchemaPublicationRelations
    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:1054,1
    - Dst: GetSchemaPublicationRelations
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1057,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1058,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1052
    functionDepth: 9
    functionLinenumber: 1052
    functionLinenumberEnd: 1059
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 356
    functionsReached:
    - lfirst_oid
    - list_concat
    - GetSchemaPublicationRelations
    linkageType: ''
    returnType: void
    signature: void foreach(cell, pubschemalist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1076,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1076,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1077,1
    - Dst: elog
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1078,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1080,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1082,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1084,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1084,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1093,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - pubid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 1069
    functionDepth: 1
    functionLinenumber: 1069
    functionLinenumberEnd: 1096
    functionName: GetPublication
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 2
    functionsReached:
    - NameStr
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - pstrdup
    - SearchSysCache1
    - elog
    - palloc
    - 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:1106,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1108,1
    - Dst: GetPublication
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - pubname
    - missing_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1109
      start: 1101
    functionDepth: 2
    functionLinenumber: 1101
    functionLinenumberEnd: 1109
    functionName: GetPublicationByName
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 2
    functionsReached:
    - OidIsValid
    - GetPublication
    - get_publication_oid
    linkageType: ''
    returnType: Publication
    signature: 'Publication *

      GetPublicationByName(const char *pubname, bool missing_ok)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1124,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1135,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1138,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1144,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1145,1
    - Dst: GetPublicationByName
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1154,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1154,1
    - Dst: GetAllTablesPublicationRelations
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1163,1
    - Dst: GetPublicationRelations
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1169,1
    - Dst: GetAllSchemaPublicationRelations
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1173,1
    - Dst: list_concat_unique_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1177,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1190,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1192,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1194,1
    - Dst: filter_partitions
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1211,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1214,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1215,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1217,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1219,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1221,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1224,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1227,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1231,1
    - Dst: list_length
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1234,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1239,1
    - Dst: get_rel_namespace
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1241,1
    - Dst: GetPublication
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1249,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1251,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1252,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1259,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1260,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1261,1
    - Dst: SearchSysCacheCopy2
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1262,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1263,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1264,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1266,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1269,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1274,1
    - Dst: table_open
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1287,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1290,1
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1293,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1297,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1321,1
    - Dst: buildint2vector
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1321,1
    - Dst: table_close
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1325,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1328,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1330,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1330,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1333,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 70
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1334
      start: 1116
    functionDepth: 10
    functionLinenumber: 1116
    functionLinenumberEnd: 1334
    functionName: pg_get_publication_tables
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 0
    functionsReached:
    - HeapTupleGetDatum
    - MemoryContextSwitchTo
    - buildint2vector
    - HeapTupleIsValid
    - GetAllTablesPublicationRelations
    - list_length
    - SysCacheGetAttr
    - SRF_FIRSTCALL_INIT
    - get_rel_namespace
    - SRF_RETURN_DONE
    - SRF_RETURN_NEXT
    - deconstruct_array_builtin
    - table_open
    - GetAllSchemaPublicationRelations
    - CreateTemplateTupleDesc
    - SRF_PERCALL_SETUP
    - heap_form_tuple
    - TupleDescAttr
    - TupleDescInitEntry
    - list_nth
    - lappend
    - SRF_IS_FIRSTCALL
    - palloc
    - table_close
    - filter_partitions
    - ObjectIdGetDatum
    - PG_GETARG_ARRAYTYPE_P
    - GetPublication
    - TextDatumGetCString
    - GetPublicationByName
    - GetPublicationRelations
    - BlessTupleDesc
    - RelationGetDescr
    - PointerGetDatum
    - list_concat_unique_oid
    - lfirst_oid
    - SearchSysCacheCopy2
    - SearchSysCacheExists2
    linkageType: ''
    returnType: Datum
    signature: Datum pg_get_publication_tables(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1190,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1192,1
    - Dst: lappend
      Src: /src/postgres/src/backend/catalog/pg_publication.c:1194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1195
      start: 1188
    functionDepth: 6
    functionLinenumber: 1188
    functionLinenumberEnd: 1195
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/catalog/pg_publication.c
    functionUses: 356
    functionsReached:
    - palloc
    - lfirst_oid
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(lc, pub_elem_tables)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/replication/slot.c:194,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/replication/slot.c:195,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 198
    functionName: ReplicationSlotsShmemSize
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - add_size
    - mul_size
    linkageType: ''
    returnType: Size
    signature: Size ReplicationSlotsShmemSize(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ShmemInitStruct
      Src: /src/postgres/src/backend/replication/slot.c:212,1
    - Dst: ReplicationSlotsShmemSize
      Src: /src/postgres/src/backend/replication/slot.c:212,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/replication/slot.c:220,1
    - Dst: ReplicationSlotsShmemSize
      Src: /src/postgres/src/backend/replication/slot.c:220,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/replication/slot.c:227,1
    - Dst: LWLockInitialize
      Src: /src/postgres/src/backend/replication/slot.c:228,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/backend/replication/slot.c:230,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 203
    functionDepth: 2
    functionLinenumber: 203
    functionLinenumberEnd: 233
    functionName: ReplicationSlotsShmemInit
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - LWLockInitialize
    - SpinLockInit
    - ReplicationSlotsShmemSize
    - MemSet
    - ConditionVariableInit
    - ShmemInitStruct
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotsShmemInit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: before_shmem_exit
      Src: /src/postgres/src/backend/replication/slot.c:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 242
    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:252,1
    - Dst: ReplicationSlotCleanup
      Src: /src/postgres/src/backend/replication/slot.c:255,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 247
    functionDepth: 1
    functionLinenumber: 247
    functionLinenumberEnd: 256
    functionName: ReplicationSlotShmemExit
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - ReplicationSlotCleanup
    - ReplicationSlotRelease
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotShmemExit(int code, Datum arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/slot.c:271,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:273,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:274,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:275,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/slot.c:280,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:282,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:283,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:284,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:295,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:296,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:297,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/slot.c:299,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 2
    argNames:
    - name
    - elevel
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 266
    functionDepth: 1
    functionLinenumber: 266
    functionLinenumberEnd: 304
    functionName: ReplicationSlotValidateName
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 1
    functionsReached:
    - errmsg
    - ereport
    - errhint
    - errcode
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool ReplicationSlotValidateName(const char *name, int elevel)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:331,1
    - Dst: ReplicationSlotValidateName
      Src: /src/postgres/src/backend/replication/slot.c:333,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/slot.c:345,1
    - Dst: IsSyncingReplicationSlots
      Src: /src/postgres/src/backend/replication/slot.c:345,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:346,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:347,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:348,1
    - Dst: IsSyncingReplicationSlots
      Src: /src/postgres/src/backend/replication/slot.c:357,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:358,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:359,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:360,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:370,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:377,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/slot.c:382,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:382,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:383,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:384,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:385,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:389,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:393,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:394,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:395,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/slot.c:396,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:404,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:405,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/slot.c:408,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/replication/slot.c:409,1
    - Dst: CreateSlotOnDisk
      Src: /src/postgres/src/backend/replication/slot.c:434,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:442,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:447,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:448,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:450,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:453,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:461,1
    - Dst: pgstat_create_replslot
      Src: /src/postgres/src/backend/replication/slot.c:462,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:468,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/slot.c:471,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 54
    argCount: 6
    argNames:
    - name
    - db_specific
    - persistency
    - two_phase
    - failover
    - synced
    argTypes:
    - char*
    - bool
    - ReplicationSlotPersistency
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 323
    functionDepth: 2
    functionLinenumber: 323
    functionLinenumberEnd: 472
    functionName: ReplicationSlotCreate
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - pgstat_create_replslot
    - SpinLockRelease
    - errhint
    - LWLockRelease
    - RecoveryInProgress
    - NameStr
    - SlotIsLogical
    - ReplicationSlotValidateName
    - strcmp
    - errmsg
    - CreateSlotOnDisk
    - SpinLockAcquire
    - Assert
    - namestrcpy
    - memset
    - ereport
    - ConditionVariableBroadcast
    - LWLockAcquire
    - errcode
    - IsSyncingReplicationSlots
    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
      failover, bool synced)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:486,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/slot.c:492,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:492,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:500,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - name
    - need_lock
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 479
    functionDepth: 1
    functionLinenumber: 479
    functionLinenumberEnd: 503
    functionName: SearchNamedReplicationSlot
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - LWLockRelease
    - strcmp
    - NameStr
    - LWLockAcquire
    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:515,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - slot
    argTypes:
    - ReplicationSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 512
    functionDepth: 1
    functionLinenumber: 512
    functionLinenumberEnd: 519
    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:540,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/replication/slot.c:543,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:543,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:544,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - index
    - name
    argTypes:
    - int
    - Name
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 528
    functionDepth: 1
    functionLinenumber: 528
    functionLinenumberEnd: 547
    functionName: ReplicationSlotName
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - LWLockRelease
    - namestrcpy
    - NameStr
    - LWLockAcquire
    linkageType: ''
    returnType: bool
    signature: bool ReplicationSlotName(int index, Name name)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:565,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:568,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:570,1
    - Dst: SearchNamedReplicationSlot
      Src: /src/postgres/src/backend/replication/slot.c:573,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:576,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:578,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:579,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:580,1
    - Dst: ConditionVariablePrepareToSleep
      Src: /src/postgres/src/backend/replication/slot.c:596,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:603,1
    - Dst: ReplicationSlotSetInactiveSince
      Src: /src/postgres/src/backend/replication/slot.c:607,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:608,1
    - Dst: ReplicationSlotSetInactiveSince
      Src: /src/postgres/src/backend/replication/slot.c:613,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:615,1
    - Dst: ConditionVariableSleep
      Src: /src/postgres/src/backend/replication/slot.c:627,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/replication/slot.c:629,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:633,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:634,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:635,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:636,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/replication/slot.c:639,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:650,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:651,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:652,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:653,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/slot.c:654,1
    - Dst: GetSlotInvalidationCauseName
      Src: /src/postgres/src/backend/replication/slot.c:655,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/slot.c:658,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:665,1
    - Dst: pgstat_acquire_replslot
      Src: /src/postgres/src/backend/replication/slot.c:666,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:671,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:672,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:673,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:674,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:675,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:676,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 45
    argCount: 3
    argNames:
    - name
    - nowait
    - error_if_invalid
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 559
    functionDepth: 2
    functionLinenumber: 559
    functionLinenumberEnd: 678
    functionName: ReplicationSlotAcquire
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - ReplicationSlotSetInactiveSince
    - SpinLockRelease
    - ConditionVariableSleep
    - LWLockRelease
    - errdetail
    - ConditionVariablePrepareToSleep
    - NameStr
    - ConditionVariableCancelSleep
    - SlotIsLogical
    - SearchNamedReplicationSlot
    - errmsg
    - GetSlotInvalidationCauseName
    - SpinLockAcquire
    - pgstat_acquire_replslot
    - Assert
    - ereport
    - ConditionVariableBroadcast
    - LWLockAcquire
    - errcode
    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:694,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/slot.c:698,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:698,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:699,1
    - Dst: ReplicationSlotDropAcquired
      Src: /src/postgres/src/backend/replication/slot.c:709,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/slot.c:718,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/slot.c:719,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:721,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:723,1
    - Dst: ReplicationSlotsComputeRequiredXmin
      Src: /src/postgres/src/backend/replication/slot.c:724,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/slot.c:731,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:739,1
    - Dst: ReplicationSlotSetInactiveSince
      Src: /src/postgres/src/backend/replication/slot.c:741,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:742,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/slot.c:743,1
    - Dst: ReplicationSlotSetInactiveSince
      Src: /src/postgres/src/backend/replication/slot.c:746,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:751,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:754,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:758,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:760,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:762,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/slot.c:765,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 686
    functionDepth: 2
    functionLinenumber: 686
    functionLinenumberEnd: 767
    functionName: ReplicationSlotRelease
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 2
    functionsReached:
    - errmsg
    - ReplicationSlotDropAcquired
    - Assert
    - NameStr
    - pfree
    - TransactionIdIsValid
    - pstrdup
    - SpinLockRelease
    - ReplicationSlotSetInactiveSince
    - ReplicationSlotsComputeRequiredXmin
    - ereport
    - SlotIsLogical
    - GetCurrentTimestamp
    - ConditionVariableBroadcast
    - LWLockRelease
    - LWLockAcquire
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotRelease(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:780,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:783,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:791,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:795,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:796,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:797,1
    - Dst: ReplicationSlotDropPtr
      Src: /src/postgres/src/backend/replication/slot.c:799,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/slot.c:801,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:805,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:808,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - synced_only
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 775
    functionDepth: 1
    functionLinenumber: 775
    functionLinenumberEnd: 809
    functionName: ReplicationSlotCleanup
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 2
    functionsReached:
    - Assert
    - ReplicationSlotDropPtr
    - SpinLockRelease
    - ConditionVariableBroadcast
    - LWLockRelease
    - LWLockAcquire
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotCleanup(bool synced_only)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:817,1
    - Dst: ReplicationSlotAcquire
      Src: /src/postgres/src/backend/replication/slot.c:819,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/slot.c:825,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:826,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:827,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:828,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/slot.c:829,1
    - Dst: ReplicationSlotDropAcquired
      Src: /src/postgres/src/backend/replication/slot.c:831,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - name
    - nowait
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 832
      start: 814
    functionDepth: 3
    functionLinenumber: 814
    functionLinenumberEnd: 832
    functionName: ReplicationSlotDrop
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ReplicationSlotDropAcquired
    - Assert
    - ReplicationSlotAcquire
    - RecoveryInProgress
    - ereport
    - errdetail
    - errcode
    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:843,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:844,1
    - Dst: ReplicationSlotAcquire
      Src: /src/postgres/src/backend/replication/slot.c:846,1
    - Dst: SlotIsPhysical
      Src: /src/postgres/src/backend/replication/slot.c:848,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:849,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:850,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:851,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/slot.c:854,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:861,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:862,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:863,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/slot.c:864,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:871,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:872,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:873,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:884,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:885,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:886,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:890,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:892,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:900,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:902,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/slot.c:909,1
    - Dst: ReplicationSlotSave
      Src: /src/postgres/src/backend/replication/slot.c:910,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/slot.c:913,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 3
    argNames:
    - name
    - failover
    - two_phase
    argTypes:
    - char*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 914
      start: 837
    functionDepth: 3
    functionLinenumber: 837
    functionLinenumberEnd: 914
    functionName: ReplicationSlotAlter
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - ReplicationSlotAcquire
    - RecoveryInProgress
    - ReplicationSlotMarkDirty
    - ereport
    - SlotIsPhysical
    - SpinLockRelease
    - ReplicationSlotSave
    - errdetail
    - errcode
    - ReplicationSlotRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: "void ReplicationSlotAlter(const char *name, const bool *failover,\n\t\t\t\t\t
      const bool *two_phase)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:924,1
    - Dst: ReplicationSlotDropPtr
      Src: /src/postgres/src/backend/replication/slot.c:929,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 919
    functionDepth: 1
    functionLinenumber: 919
    functionLinenumberEnd: 930
    functionName: ReplicationSlotDropAcquired
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 2
    functionsReached:
    - Assert
    - ReplicationSlotDropPtr
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotDropAcquired(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:947,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/slot.c:950,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:950,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/slot.c:951,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:951,1
    - Dst: rename
      Src: /src/postgres/src/backend/replication/slot.c:960,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/replication/slot.c:970,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/slot.c:971,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/slot.c:972,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/replication/slot.c:973,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:979,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:981,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/slot.c:984,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:986,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:987,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:988,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1001,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1004,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/slot.c:1005,1
    - Dst: ReplicationSlotsComputeRequiredXmin
      Src: /src/postgres/src/backend/replication/slot.c:1011,1
    - Dst: ReplicationSlotsComputeRequiredLSN
      Src: /src/postgres/src/backend/replication/slot.c:1012,1
    - Dst: rmtree
      Src: /src/postgres/src/backend/replication/slot.c:1019,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:1020,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:1021,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:1029,1
    - Dst: pgstat_drop_replslot
      Src: /src/postgres/src/backend/replication/slot.c:1030,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1036,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 1
    argNames:
    - slot
    argTypes:
    - ReplicationSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1037
      start: 936
    functionDepth: 4
    functionLinenumber: 936
    functionLinenumberEnd: 1037
    functionName: ReplicationSlotDropPtr
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 2
    functionsReached:
    - rename
    - SpinLockRelease
    - sprintf
    - LWLockRelease
    - errcode_for_file_access
    - START_CRIT_SECTION
    - NameStr
    - SlotIsLogical
    - END_CRIT_SECTION
    - fsync_fname
    - errmsg
    - ReplicationSlotsComputeRequiredXmin
    - SpinLockAcquire
    - ReplicationSlotsComputeRequiredLSN
    - rmtree
    - pgstat_drop_replslot
    - ereport
    - ConditionVariableBroadcast
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotDropPtr(ReplicationSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1048,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/slot.c:1050,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:1050,1
    - Dst: SaveSlotToPath
      Src: /src/postgres/src/backend/replication/slot.c:1051,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1052
      start: 1043
    functionDepth: 1
    functionLinenumber: 1043
    functionLinenumberEnd: 1052
    functionName: ReplicationSlotSave
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 1
    functionsReached:
    - SaveSlotToPath
    - Assert
    - NameStr
    - sprintf
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotSave(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1066,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1068,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1071,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1061
    functionDepth: 1
    functionLinenumber: 1061
    functionLinenumberEnd: 1072
    functionName: ReplicationSlotMarkDirty
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 1
    functionsReached:
    - Assert
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotMarkDirty(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1083,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1084,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1086,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1088,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/slot.c:1090,1
    - Dst: ReplicationSlotSave
      Src: /src/postgres/src/backend/replication/slot.c:1091,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1092
      start: 1078
    functionDepth: 2
    functionLinenumber: 1078
    functionLinenumberEnd: 1092
    functionName: ReplicationSlotPersist
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - Assert
    - ReplicationSlotMarkDirty
    - SpinLockRelease
    - ReplicationSlotSave
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotPersist(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1107,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1109,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1121,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1125,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/slot.c:1132,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/slot.c:1133,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/slot.c:1134,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/slot.c:1138,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/slot.c:1139,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/slot.c:1140,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1144,1
    - Dst: ProcArraySetReplicationSlotXmin
      Src: /src/postgres/src/backend/replication/slot.c:1146,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 1
    argNames:
    - already_locked
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1147
      start: 1100
    functionDepth: 2
    functionLinenumber: 1100
    functionLinenumberEnd: 1147
    functionName: ReplicationSlotsComputeRequiredXmin
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 2
    functionsReached:
    - Assert
    - TransactionIdIsValid
    - SpinLockRelease
    - ProcArraySetReplicationSlotXmin
    - LWLockRelease
    - LWLockAcquire
    - TransactionIdPrecedes
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotsComputeRequiredXmin(bool already_locked)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1162,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1164,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1176,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1181,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1209,1
    - Dst: XLogSetReplicationSlotMinimumLSN
      Src: /src/postgres/src/backend/replication/slot.c:1211,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1212
      start: 1156
    functionDepth: 2
    functionLinenumber: 1156
    functionLinenumberEnd: 1212
    functionName: ReplicationSlotsComputeRequiredLSN
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 1
    functionsReached:
    - Assert
    - XLogSetReplicationSlotMinimumLSN
    - SpinLockRelease
    - LWLockRelease
    - LWLockAcquire
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotsComputeRequiredLSN(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1235,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:1252,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1256,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1261,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1292,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1295
      start: 1226
    functionDepth: 1
    functionLinenumber: 1226
    functionLinenumberEnd: 1295
    functionName: ReplicationSlotsComputeLogicalRestartLSN
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 1
    functionsReached:
    - SpinLockRelease
    - SlotIsLogical
    - LWLockRelease
    - LWLockAcquire
    - SpinLockAcquire
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr ReplicationSlotsComputeLogicalRestartLSN(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1315,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:1327,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1337,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1341,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1343,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 3
    argNames:
    - dboid
    - nslots
    - nactive
    argTypes:
    - Oid
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1348
      start: 1305
    functionDepth: 1
    functionLinenumber: 1305
    functionLinenumberEnd: 1348
    functionName: ReplicationSlotsCountDBSlots
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - SpinLockRelease
    - SlotIsLogical
    - LWLockRelease
    - LWLockAcquire
    - SpinLockAcquire
    linkageType: ''
    returnType: bool
    signature: bool ReplicationSlotsCountDBSlots(Oid dboid, int *nslots, int *nactive)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1372,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:1386,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1396,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:1398,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1405,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:1429,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:1430,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:1431,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1443,1
    - Dst: ReplicationSlotDropAcquired
      Src: /src/postgres/src/backend/replication/slot.c:1444,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1447,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 1
    argNames:
    - dboid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1448
      start: 1363
    functionDepth: 2
    functionLinenumber: 1363
    functionLinenumberEnd: 1448
    functionName: ReplicationSlotsDropDBSlots
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ReplicationSlotDropAcquired
    - NameStr
    - ereport
    - SpinLockRelease
    - SlotIsLogical
    - LWLockRelease
    - LWLockAcquire
    - errcode
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotsDropDBSlots(Oid dboid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:1464,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:1465,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:1466,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:1469,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:1470,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:1471,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1472
      start: 1455
    functionDepth: 1
    functionLinenumber: 1455
    functionLinenumberEnd: 1472
    functionName: CheckSlotRequirements
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - ereport
    linkageType: ''
    returnType: void
    signature: void CheckSlotRequirements(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: has_rolreplication
      Src: /src/postgres/src/backend/replication/slot.c:1480,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/replication/slot.c:1480,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:1481,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:1482,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:1483,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/slot.c:1484,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1486
      start: 1477
    functionDepth: 1
    functionLinenumber: 1477
    functionLinenumberEnd: 1486
    functionName: CheckSlotPermissions
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - errmsg
    - GetUserId
    - has_rolreplication
    - ereport
    - errdetail
    - errcode
    linkageType: ''
    returnType: void
    signature: void CheckSlotPermissions(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1499,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1500,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1501,1
    - Dst: SlotIsPhysical
      Src: /src/postgres/src/backend/replication/slot.c:1530,1
    - Dst: GetRedoRecPtr
      Src: /src/postgres/src/backend/replication/slot.c:1531,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/slot.c:1532,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/replication/slot.c:1533,1
    - Dst: GetXLogInsertRecPtr
      Src: /src/postgres/src/backend/replication/slot.c:1535,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1537,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1539,1
    - Dst: ReplicationSlotsComputeRequiredLSN
      Src: /src/postgres/src/backend/replication/slot.c:1542,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/slot.c:1551,1
    - Dst: XLogGetLastRemovedSegno
      Src: /src/postgres/src/backend/replication/slot.c:1552,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/slot.c:1556,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:1556,1
    - Dst: LogStandbySnapshot
      Src: /src/postgres/src/backend/replication/slot.c:1561,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/replication/slot.c:1564,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1566
      start: 1494
    functionDepth: 5
    functionLinenumber: 1494
    functionLinenumberEnd: 1566
    functionName: ReplicationSlotReserveWal
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - ReplicationSlotsComputeRequiredLSN
    - Assert
    - XLByteToSeg
    - GetRedoRecPtr
    - SlotIsPhysical
    - SpinLockRelease
    - GetXLogReplayRecPtr
    - XLogFlush
    - SlotIsLogical
    - GetXLogInsertRecPtr
    - LogStandbySnapshot
    - XLogGetLastRemovedSegno
    - RecoveryInProgress
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void ReplicationSlotReserveWal(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/slot.c:1584,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/slot.c:1585,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/slot.c:1593,1
    - Dst: ngettext
      Src: /src/postgres/src/backend/replication/slot.c:1594,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/slot.c:1597,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/slot.c:1600,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/slot.c:1600,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/slot.c:1605,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/slot.c:1605,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/slot.c:1610,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/slot.c:1610,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/slot.c:1619,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/slot.c:1619,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/slot.c:1623,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/slot.c:1623,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/backend/replication/slot.c:1628,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:1631,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:1633,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:1634,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:1635,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:1636,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/replication/slot.c:1637,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/slot.c:1638,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/slot.c:1640,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/slot.c:1641,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: 1642
      start: 1571
    functionDepth: 3
    functionLinenumber: 1571
    functionLinenumberEnd: 1642
    functionName: ReportSlotInvalidation
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - errmsg
    - pfree
    - NameStr
    - appendStringInfo
    - pg_unreachable
    - errdetail_internal
    - appendStringInfoString
    - ereport
    - errhint
    - _
    - initStringInfo
    - ngettext
    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: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/slot.c:1660,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/slot.c:1662,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - ReplicationSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1663
      start: 1656
    functionDepth: 1
    functionLinenumber: 1656
    functionLinenumberEnd: 1663
    functionName: CanInvalidateIdleSlot
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - XLogRecPtrIsInvalid
    - RecoveryInProgress
    linkageType: ''
    returnType: bool
    signature: bool CanInvalidateIdleSlot(ReplicationSlot *s)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1681,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:1693,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/slot.c:1696,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/replication/slot.c:1697,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/slot.c:1700,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/replication/slot.c:1701,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:1709,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1715,1
    - Dst: CanInvalidateIdleSlot
      Src: /src/postgres/src/backend/replication/slot.c:1717,1
    - Dst: IS_INJECTION_POINT_ATTACHED
      Src: /src/postgres/src/backend/replication/slot.c:1725,1
    - Dst: TimestampDifferenceExceedsSeconds
      Src: /src/postgres/src/backend/replication/slot.c:1736,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 32
    argCount: 10
    argNames:
    - possible_causes
    - s
    - oldestLSN
    - dboid
    - snapshotConflictHorizon
    - initial_effective_xmin
    - initial_catalog_effective_xmin
    - initial_restart_lsn
    - inactive_since
    - now
    argTypes:
    - uint32
    - ReplicationSlot*
    - XLogRecPtr
    - Oid
    - TransactionId
    - TransactionId
    - TransactionId
    - XLogRecPtr
    - TimestampTz*
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1746
      start: 1672
    functionDepth: 2
    functionLinenumber: 1672
    functionLinenumberEnd: 1746
    functionName: DetermineSlotInvalidationCause
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - Assert
    - TransactionIdIsValid
    - TimestampDifferenceExceedsSeconds
    - CanInvalidateIdleSlot
    - SlotIsLogical
    - TransactionIdPrecedesOrEquals
    - IS_INJECTION_POINT_ATTACHED
    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
      \  TransactionId initial_effective_xmin,\n\t\t\t\t\t\t\t   TransactionId initial_catalog_effective_xmin,\n\t\t\t\t\t\t\t
      \  XLogRecPtr initial_restart_lsn,\n\t\t\t\t\t\t\t   TimestampTz *inactive_since,
      TimestampTz now)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1786,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/replication/slot.c:1786,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1791,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/slot.c:1801,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1811,1
    - Dst: DetermineSlotInvalidationCause
      Src: /src/postgres/src/backend/replication/slot.c:1836,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1851,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1857,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1859,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1891,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1900,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:1900,1
    - Dst: TimestampDifference
      Src: /src/postgres/src/backend/replication/slot.c:1910,1
    - Dst: ConditionVariablePrepareToSleep
      Src: /src/postgres/src/backend/replication/slot.c:1921,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1923,1
    - Dst: ReportSlotInvalidation
      Src: /src/postgres/src/backend/replication/slot.c:1940,1
    - Dst: SendProcSignal
      Src: /src/postgres/src/backend/replication/slot.c:1946,1
    - Dst: kill
      Src: /src/postgres/src/backend/replication/slot.c:1950,1
    - Dst: ConditionVariableSleep
      Src: /src/postgres/src/backend/replication/slot.c:1958,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:1966,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:1979,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/slot.c:1983,1
    - Dst: ReplicationSlotSave
      Src: /src/postgres/src/backend/replication/slot.c:1984,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/slot.c:1985,1
    - Dst: ReportSlotInvalidation
      Src: /src/postgres/src/backend/replication/slot.c:1987,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:1997,1
    - Dst: LWLockHeldByMe
      Src: /src/postgres/src/backend/replication/slot.c:1997,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 73
    argCount: 6
    argNames:
    - possible_causes
    - s
    - oldestLSN
    - dboid
    - snapshotConflictHorizon
    - invalidated
    argTypes:
    - uint32
    - ReplicationSlot*
    - XLogRecPtr
    - Oid
    - TransactionId
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2000
      start: 1761
    functionDepth: 4
    functionLinenumber: 1761
    functionLinenumberEnd: 2000
    functionName: InvalidatePossiblyObsoleteSlot
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - SpinLockRelease
    - ReportSlotInvalidation
    - LWLockHeldByMeInMode
    - SendProcSignal
    - ConditionVariableSleep
    - LWLockRelease
    - ConditionVariablePrepareToSleep
    - TimestampDifference
    - LWLockHeldByMe
    - SlotIsLogical
    - ReplicationSlotSave
    - GetCurrentTimestamp
    - ReplicationSlotRelease
    - SpinLockAcquire
    - Assert
    - ReplicationSlotMarkDirty
    - kill
    - LWLockAcquire
    - DetermineSlotInvalidationCause
    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
      *invalidated)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:2030,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/slot.c:2030,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:2031,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:2032,1
    - Dst: XLogSegNoOffsetToRecPtr
      Src: /src/postgres/src/backend/replication/slot.c:2037,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:2040,1
    - Dst: InvalidatePossiblyObsoleteSlot
      Src: /src/postgres/src/backend/replication/slot.c:2048,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2056,1
    - Dst: ReplicationSlotsComputeRequiredXmin
      Src: /src/postgres/src/backend/replication/slot.c:2063,1
    - Dst: ReplicationSlotsComputeRequiredLSN
      Src: /src/postgres/src/backend/replication/slot.c:2064,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 4
    argNames:
    - possible_causes
    - oldestSegno
    - dboid
    - snapshotConflictHorizon
    argTypes:
    - uint32
    - XLogSegNo
    - Oid
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2068
      start: 2022
    functionDepth: 5
    functionLinenumber: 2022
    functionLinenumberEnd: 2068
    functionName: InvalidateObsoleteReplicationSlots
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 3
    functionsReached:
    - ReplicationSlotsComputeRequiredLSN
    - Assert
    - InvalidatePossiblyObsoleteSlot
    - TransactionIdIsValid
    - ReplicationSlotsComputeRequiredXmin
    - XLogSegNoOffsetToRecPtr
    - LWLockRelease
    - LWLockAcquire
    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:2084,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:2093,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/slot.c:2104,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:2104,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:2114,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:2116,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2124,1
    - Dst: SaveSlotToPath
      Src: /src/postgres/src/backend/replication/slot.c:2134,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2136,1
    - Dst: ReplicationSlotsComputeRequiredLSN
      Src: /src/postgres/src/backend/replication/slot.c:2143,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 1
    argNames:
    - is_shutdown
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2144
      start: 2078
    functionDepth: 3
    functionLinenumber: 2078
    functionLinenumberEnd: 2144
    functionName: CheckPointReplicationSlots
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 1
    functionsReached:
    - ReplicationSlotsComputeRequiredLSN
    - NameStr
    - SpinLockRelease
    - elog
    - SlotIsLogical
    - SaveSlotToPath
    - sprintf
    - LWLockRelease
    - LWLockAcquire
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void CheckPointReplicationSlots(bool is_shutdown)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/replication/slot.c:2156,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/replication/slot.c:2159,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/replication/slot.c:2160,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/slot.c:2165,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/slot.c:2166,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/slot.c:2169,1
    - Dst: get_dirent_type
      Src: /src/postgres/src/backend/replication/slot.c:2170,1
    - Dst: pg_str_endswith
      Src: /src/postgres/src/backend/replication/slot.c:2177,1
    - Dst: rmtree
      Src: /src/postgres/src/backend/replication/slot.c:2179,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2181,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2182,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/slot.c:2186,1
    - Dst: RestoreSlotFromDisk
      Src: /src/postgres/src/backend/replication/slot.c:2191,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/replication/slot.c:2193,1
    - Dst: ReplicationSlotsComputeRequiredXmin
      Src: /src/postgres/src/backend/replication/slot.c:2200,1
    - Dst: ReplicationSlotsComputeRequiredLSN
      Src: /src/postgres/src/backend/replication/slot.c:2201,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2202
      start: 2150
    functionDepth: 4
    functionLinenumber: 2150
    functionLinenumberEnd: 2202
    functionName: StartupReplicationSlots
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 1
    functionsReached:
    - errmsg
    - ReplicationSlotsComputeRequiredLSN
    - ReadDir
    - AllocateDir
    - rmtree
    - FreeDir
    - snprintf
    - pg_str_endswith
    - get_dirent_type
    - ereport
    - ReplicationSlotsComputeRequiredXmin
    - elog
    - RestoreSlotFromDisk
    - strcmp
    - fsync_fname
    linkageType: ''
    returnType: void
    signature: void StartupReplicationSlots(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/slot.c:2224,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:2224,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/slot.c:2225,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:2225,1
    - Dst: stat
      Src: /src/postgres/src/backend/replication/slot.c:2234,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/backend/replication/slot.c:2234,1
    - Dst: rmtree
      Src: /src/postgres/src/backend/replication/slot.c:2235,1
    - Dst: MakePGDirectory
      Src: /src/postgres/src/backend/replication/slot.c:2238,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2239,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:2240,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2241,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/slot.c:2243,1
    - Dst: SaveSlotToPath
      Src: /src/postgres/src/backend/replication/slot.c:2247,1
    - Dst: rename
      Src: /src/postgres/src/backend/replication/slot.c:2250,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2251,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:2252,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2253,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/replication/slot.c:2261,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/slot.c:2263,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/slot.c:2264,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/replication/slot.c:2266,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - slot
    argTypes:
    - ReplicationSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2267
      start: 2211
    functionDepth: 4
    functionLinenumber: 2211
    functionLinenumberEnd: 2267
    functionName: CreateSlotOnDisk
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 1
    functionsReached:
    - errmsg
    - NameStr
    - START_CRIT_SECTION
    - rmtree
    - rename
    - stat
    - MakePGDirectory
    - S_ISDIR
    - ereport
    - END_CRIT_SECTION
    - SaveSlotToPath
    - sprintf
    - fsync_fname
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void CreateSlotOnDisk(ReplicationSlot *slot)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:2282,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2285,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:2291,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/slot.c:2294,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/slot.c:2296,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/slot.c:2297,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/replication/slot.c:2299,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2310,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2312,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:2313,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2314,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/backend/replication/slot.c:2320,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:2324,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/slot.c:2326,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2328,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/slot.c:2330,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/backend/replication/slot.c:2333,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/replication/slot.c:2336,1
    - Dst: write
      Src: /src/postgres/src/backend/replication/slot.c:2337,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/slot.c:2341,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/slot.c:2342,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2343,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2347,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:2348,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2349,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/slot.c:2353,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/replication/slot.c:2356,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/replication/slot.c:2357,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/slot.c:2361,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/slot.c:2362,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2363,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2365,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:2366,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2367,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/slot.c:2371,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/slot.c:2373,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2377,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2379,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:2380,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2381,1
    - Dst: rename
      Src: /src/postgres/src/backend/replication/slot.c:2387,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2391,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2393,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:2394,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2395,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/replication/slot.c:2403,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/slot.c:2405,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/slot.c:2406,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/slot.c:2407,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/replication/slot.c:2409,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:2415,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2420,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2422,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 72
    argCount: 3
    argNames:
    - slot
    - dir
    - elevel
    argTypes:
    - ReplicationSlot*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2423
      start: 2272
    functionDepth: 1
    functionLinenumber: 2272
    functionLinenumberEnd: 2423
    functionName: SaveSlotToPath
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 3
    functionsReached:
    - rename
    - SpinLockRelease
    - pgstat_report_wait_end
    - sprintf
    - pgstat_report_wait_start
    - LWLockRelease
    - errcode_for_file_access
    - COMP_CRC32C
    - START_CRIT_SECTION
    - FIN_CRC32C
    - memcpy
    - fsync_fname
    - pg_fsync
    - errmsg
    - write
    - CloseTransientFile
    - SpinLockAcquire
    - memset
    - INIT_CRC32C
    - ereport
    - OpenTransientFile
    - END_CRIT_SECTION
    - LWLockAcquire
    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:2444,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/slot.c:2445,1
    - Dst: unlink
      Src: /src/postgres/src/backend/replication/slot.c:2446,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2447,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:2448,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2449,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/slot.c:2451,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/slot.c:2453,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/replication/slot.c:2456,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2463,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:2464,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2465,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/replication/slot.c:2471,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/replication/slot.c:2472,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2473,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:2474,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2475,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/slot.c:2477,1
    - Dst: START_CRIT_SECTION
      Src: /src/postgres/src/backend/replication/slot.c:2480,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/slot.c:2481,1
    - Dst: END_CRIT_SECTION
      Src: /src/postgres/src/backend/replication/slot.c:2482,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/replication/slot.c:2485,1
    - Dst: read
      Src: /src/postgres/src/backend/replication/slot.c:2486,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/slot.c:2487,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2491,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:2492,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2493,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2495,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:2496,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2497,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2504,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:2505,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2506,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2511,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:2512,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2513,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2518,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:2519,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2520,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/replication/slot.c:2524,1
    - Dst: read
      Src: /src/postgres/src/backend/replication/slot.c:2525,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/slot.c:2528,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2532,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:2533,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2534,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2536,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:2537,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2538,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/slot.c:2542,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2543,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/slot.c:2544,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2545,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/backend/replication/slot.c:2548,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/slot.c:2549,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/backend/replication/slot.c:2552,1
    - Dst: EQ_CRC32C
      Src: /src/postgres/src/backend/replication/slot.c:2554,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2555,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2556,1
    - Dst: rmtree
      Src: /src/postgres/src/backend/replication/slot.c:2565,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2567,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2568,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/slot.c:2571,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2590,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:2591,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2592,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:2593,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/slot.c:2594,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2604,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:2605,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2606,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:2607,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/slot.c:2608,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2611,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:2612,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2613,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slot.c:2614,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/slot.c:2615,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/slot.c:2628,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/slot.c:2652,1
    - Dst: ReplicationSlotSetInactiveSince
      Src: /src/postgres/src/backend/replication/slot.c:2654,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2661,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2662,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/slot.c:2663,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 84
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2664
      start: 2428
    functionDepth: 4
    functionLinenumber: 2428
    functionLinenumberEnd: 2664
    functionName: RestoreSlotFromDisk
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 1
    functionsReached:
    - ReplicationSlotSetInactiveSince
    - errhint
    - pgstat_report_wait_end
    - sprintf
    - pgstat_report_wait_start
    - errcode_for_file_access
    - COMP_CRC32C
    - START_CRIT_SECTION
    - NameStr
    - FIN_CRC32C
    - EQ_CRC32C
    - read
    - memcpy
    - pg_fsync
    - errmsg
    - CloseTransientFile
    - elog
    - GetCurrentTimestamp
    - rmtree
    - INIT_CRC32C
    - ereport
    - OpenTransientFile
    - END_CRIT_SECTION
    - unlink
    - fsync_fname
    - errcode
    linkageType: ''
    returnType: void
    signature: void RestoreSlotFromDisk(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:2673,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/slot.c:2678,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:2682,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - cause_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2684
      start: 2670
    functionDepth: 1
    functionLinenumber: 2670
    functionLinenumberEnd: 2684
    functionName: GetSlotInvalidationCause
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - strcmp
    - Assert
    linkageType: ''
    returnType: ReplicationSlotInvalidationCause
    signature: ReplicationSlotInvalidationCause GetSlotInvalidationCause(const char
      *cause_name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:2700,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - cause
    argTypes:
    - ReplicationSlotInvalidationCause
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2702
      start: 2690
    functionDepth: 1
    functionLinenumber: 2690
    functionLinenumberEnd: 2702
    functionName: GetSlotInvalidationCauseName
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 1
    functionsReached:
    - Assert
    linkageType: ''
    returnType: char
    signature: 'char *

      GetSlotInvalidationCauseName(ReplicationSlotInvalidationCause cause)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SplitIdentifierString
      Src: /src/postgres/src/backend/replication/slot.c:2715,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/replication/slot.c:2719,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:2730,1
    - Dst: SearchNamedReplicationSlot
      Src: /src/postgres/src/backend/replication/slot.c:2736,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/replication/slot.c:2740,1
    - Dst: SlotIsPhysical
      Src: /src/postgres/src/backend/replication/slot.c:2746,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/replication/slot.c:2748,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2755,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - rawname
    - elemlist
    argTypes:
    - char*
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2759
      start: 2709
    functionDepth: 2
    functionLinenumber: 2709
    functionLinenumberEnd: 2759
    functionName: validate_sync_standby_slots
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - GUC_check_errdetail
    - LWLockRelease
    - SlotIsPhysical
    - SearchNamedReplicationSlot
    - SplitIdentifierString
    - LWLockAcquire
    linkageType: ''
    returnType: bool
    signature: bool validate_sync_standby_slots(char *rawname, List **elemlist)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SearchNamedReplicationSlot
      Src: /src/postgres/src/backend/replication/slot.c:2736,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/replication/slot.c:2740,1
    - Dst: SlotIsPhysical
      Src: /src/postgres/src/backend/replication/slot.c:2746,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/replication/slot.c:2748,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2753
      start: 2732
    functionDepth: 2
    functionLinenumber: 2732
    functionLinenumberEnd: 2753
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 1
    functionsReached:
    - GUC_check_errdetail
    - SearchNamedReplicationSlot
    - SlotIsPhysical
    linkageType: ''
    returnType: void
    signature: void foreach_ptr(char, name, *elemlist)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/slot.c:2778,1
    - Dst: validate_sync_standby_slots
      Src: /src/postgres/src/backend/replication/slot.c:2781,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/slot.c:2785,1
    - Dst: list_free
      Src: /src/postgres/src/backend/replication/slot.c:2786,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/slot.c:2793,1
    - Dst: guc_malloc
      Src: /src/postgres/src/backend/replication/slot.c:2796,1
    - Dst: list_length
      Src: /src/postgres/src/backend/replication/slot.c:2801,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/replication/slot.c:2806,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/slot.c:2807,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/slot.c:2812,1
    - Dst: list_free
      Src: /src/postgres/src/backend/replication/slot.c:2813,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2815
      start: 2764
    functionDepth: 4
    functionLinenumber: 2764
    functionLinenumberEnd: 2815
    functionName: check_synchronized_standby_slots
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - pfree
    - validate_sync_standby_slots
    - pstrdup
    - list_length
    - guc_malloc
    - list_free
    - strlen
    - 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:2806,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/slot.c:2807,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2808
      start: 2804
    functionDepth: 0
    functionLinenumber: 2804
    functionLinenumberEnd: 2808
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 1
    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: 2830
      start: 2820
    functionDepth: 0
    functionLinenumber: 2820
    functionLinenumberEnd: 2830
    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:2852,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/slot.c:2855,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - slot_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2859
      start: 2835
    functionDepth: 0
    functionLinenumber: 2835
    functionLinenumberEnd: 2859
    functionName: SlotExistsInSyncStandbySlots
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool SlotExistsInSyncStandbySlots(const char *slot_name)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/slot.c:2886,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/slot.c:2893,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:2901,1
    - Dst: SearchNamedReplicationSlot
      Src: /src/postgres/src/backend/replication/slot.c:2911,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2925,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:2926,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2927,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/slot.c:2929,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/slot.c:2931,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slot.c:2937,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2939,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:2940,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2941,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/slot.c:2943,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/slot.c:2945,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slot.c:2950,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2954,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2959,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:2960,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2961,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/slot.c:2963,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/slot.c:2965,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/slot.c:2970,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slot.c:2974,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slot.c:2975,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slot.c:2976,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/slot.c:2978,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/slot.c:2980,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:2987,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/slot.c:2989,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/slot.c:2995,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slot.c:2998,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slot.c:3008,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/slot.c:3008,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 45
    argCount: 2
    argNames:
    - wait_for_lsn
    - elevel
    argTypes:
    - XLogRecPtr
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3014
      start: 2868
    functionDepth: 2
    functionLinenumber: 2868
    functionLinenumberEnd: 3014
    functionName: StandbySlotsHaveCaughtup
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - Assert
    - ereport
    - SpinLockRelease
    - errhint
    - SlotIsLogical
    - SearchNamedReplicationSlot
    - errdetail
    - XLogRecPtrIsInvalid
    - LWLockRelease
    - LWLockAcquire
    - RecoveryInProgress
    - strlen
    - SpinLockAcquire
    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:3033,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/slot.c:3037,1
    - Dst: ProcessConfigFile
      Src: /src/postgres/src/backend/replication/slot.c:3042,1
    - Dst: StandbySlotsHaveCaughtup
      Src: /src/postgres/src/backend/replication/slot.c:3046,1
    - Dst: ConditionVariableTimedSleep
      Src: /src/postgres/src/backend/replication/slot.c:3054,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/replication/slot.c:3058,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - wait_for_lsn
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3059
      start: 3022
    functionDepth: 3
    functionLinenumber: 3022
    functionLinenumberEnd: 3059
    functionName: WaitForStandbyConfirmation
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - ProcessConfigFile
    - ConditionVariablePrepareToSleep
    - CHECK_FOR_INTERRUPTS
    - StandbySlotsHaveCaughtup
    - ConditionVariableCancelSleep
    - ConditionVariableTimedSleep
    linkageType: ''
    returnType: void
    signature: void WaitForStandbyConfirmation(XLogRecPtr wait_for_lsn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/replication/slot.c:3072,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - int*
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3078
      start: 3067
    functionDepth: 0
    functionLinenumber: 3067
    functionLinenumberEnd: 3078
    functionName: check_idle_replication_slot_timeout
    functionSourceFile: /src/postgres/src/backend/replication/slot.c
    functionUses: 0
    functionsReached:
    - GUC_check_errdetail
    linkageType: ''
    returnType: bool
    signature: bool check_idle_replication_slot_timeout(int *newval, void **extra,
      GucSource source)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slotfuncs.c:39,1
    - Dst: ReplicationSlotCreate
      Src: /src/postgres/src/backend/replication/slotfuncs.c:42,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/slotfuncs.c:49,1
    - Dst: ReplicationSlotReserveWal
      Src: /src/postgres/src/backend/replication/slotfuncs.c:50,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/slotfuncs.c:55,1
    - Dst: ReplicationSlotSave
      Src: /src/postgres/src/backend/replication/slotfuncs.c:56,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: 58
      start: 35
    functionDepth: 6
    functionLinenumber: 35
    functionLinenumberEnd: 58
    functionName: create_physical_replication_slot
    functionSourceFile: /src/postgres/src/backend/replication/slotfuncs.c
    functionUses: 0
    functionsReached:
    - ReplicationSlotCreate
    - Assert
    - ReplicationSlotReserveWal
    - ReplicationSlotMarkDirty
    - ReplicationSlotSave
    - XLogRecPtrIsInvalid
    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:67,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/replication/slotfuncs.c:68,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/replication/slotfuncs.c:69,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/replication/slotfuncs.c:76,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/slotfuncs.c:77,1
    - Dst: CheckSlotPermissions
      Src: /src/postgres/src/backend/replication/slotfuncs.c:79,1
    - Dst: CheckSlotRequirements
      Src: /src/postgres/src/backend/replication/slotfuncs.c:81,1
    - Dst: create_physical_replication_slot
      Src: /src/postgres/src/backend/replication/slotfuncs.c:83,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:83,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:88,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:93,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/replication/slotfuncs.c:99,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:100,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/slotfuncs.c:102,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/replication/slotfuncs.c:104,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 64
    functionDepth: 7
    functionLinenumber: 64
    functionLinenumberEnd: 105
    functionName: pg_create_physical_replication_slot
    functionSourceFile: /src/postgres/src/backend/replication/slotfuncs.c
    functionUses: 0
    functionsReached:
    - NameGetDatum
    - heap_form_tuple
    - create_physical_replication_slot
    - NameStr
    - HeapTupleGetDatum
    - PG_RETURN_DATUM
    - PG_GETARG_NAME
    - elog
    - CheckSlotPermissions
    - CheckSlotRequirements
    - PG_GETARG_BOOL
    - get_call_result_type
    - LSNGetDatum
    - ReplicationSlotRelease
    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:125,1
    - Dst: ReplicationSlotCreate
      Src: /src/postgres/src/backend/replication/slotfuncs.c:135,1
    - Dst: CreateInitDecodingContext
      Src: /src/postgres/src/backend/replication/slotfuncs.c:146,1
    - Dst: XL_ROUTINE
      Src: /src/postgres/src/backend/replication/slotfuncs.c:149,1
    - Dst: DecodingContextFindStartpoint
      Src: /src/postgres/src/backend/replication/slotfuncs.c:159,1
    - Dst: FreeDecodingContext
      Src: /src/postgres/src/backend/replication/slotfuncs.c:162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    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: 163
      start: 116
    functionDepth: 3
    functionLinenumber: 116
    functionLinenumberEnd: 163
    functionName: create_logical_replication_slot
    functionSourceFile: /src/postgres/src/backend/replication/slotfuncs.c
    functionUses: 1
    functionsReached:
    - ReplicationSlotCreate
    - Assert
    - CreateInitDecodingContext
    - DecodingContextFindStartpoint
    - FreeDecodingContext
    - XL_ROUTINE
    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:171,1
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/replication/slotfuncs.c:172,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/replication/slotfuncs.c:173,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/replication/slotfuncs.c:174,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/replication/slotfuncs.c:175,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/replication/slotfuncs.c:182,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/slotfuncs.c:183,1
    - Dst: CheckSlotPermissions
      Src: /src/postgres/src/backend/replication/slotfuncs.c:185,1
    - Dst: CheckLogicalDecodingRequirements
      Src: /src/postgres/src/backend/replication/slotfuncs.c:187,1
    - Dst: create_logical_replication_slot
      Src: /src/postgres/src/backend/replication/slotfuncs.c:189,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:189,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:190,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:197,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:198,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/slotfuncs.c:200,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/replication/slotfuncs.c:202,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:203,1
    - Dst: ReplicationSlotPersist
      Src: /src/postgres/src/backend/replication/slotfuncs.c:207,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/slotfuncs.c:208,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/replication/slotfuncs.c:210,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 168
    functionDepth: 5
    functionLinenumber: 168
    functionLinenumberEnd: 211
    functionName: pg_create_logical_replication_slot
    functionSourceFile: /src/postgres/src/backend/replication/slotfuncs.c
    functionUses: 0
    functionsReached:
    - NameGetDatum
    - heap_form_tuple
    - HeapTupleGetDatum
    - NameStr
    - memset
    - CheckLogicalDecodingRequirements
    - PG_RETURN_DATUM
    - ReplicationSlotPersist
    - PG_GETARG_NAME
    - elog
    - CheckSlotPermissions
    - PG_GETARG_BOOL
    - get_call_result_type
    - LSNGetDatum
    - create_logical_replication_slot
    - ReplicationSlotRelease
    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:220,1
    - Dst: CheckSlotPermissions
      Src: /src/postgres/src/backend/replication/slotfuncs.c:222,1
    - Dst: CheckSlotRequirements
      Src: /src/postgres/src/backend/replication/slotfuncs.c:224,1
    - Dst: ReplicationSlotDrop
      Src: /src/postgres/src/backend/replication/slotfuncs.c:226,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:226,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/replication/slotfuncs.c:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 217
    functionDepth: 4
    functionLinenumber: 217
    functionLinenumberEnd: 229
    functionName: pg_drop_replication_slot
    functionSourceFile: /src/postgres/src/backend/replication/slotfuncs.c
    functionUses: 0
    functionsReached:
    - NameStr
    - PG_RETURN_VOID
    - PG_GETARG_NAME
    - CheckSlotRequirements
    - CheckSlotPermissions
    - ReplicationSlotDrop
    linkageType: ''
    returnType: Datum
    signature: Datum pg_drop_replication_slot(PG_FUNCTION_ARGS)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/replication/slotfuncs.c:249,1
    - Dst: GetXLogWriteRecPtr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:251,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slotfuncs.c:253,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slotfuncs.c:268,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slotfuncs.c:270,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/slotfuncs.c:272,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/slotfuncs.c:273,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:276,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:281,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:284,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:286,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:291,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:293,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:294,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:297,1
    - Dst: TransactionIdGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:302,1
    - Dst: TransactionIdGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:307,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:312,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:317,1
    - Dst: GetWALAvailability
      Src: /src/postgres/src/backend/replication/slotfuncs.c:328,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:337,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:341,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:345,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/slotfuncs.c:360,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slotfuncs.c:364,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slotfuncs.c:367,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:370,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:375,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:393,1
    - Dst: XLogMBVarToSegs
      Src: /src/postgres/src/backend/replication/slotfuncs.c:396,1
    - Dst: XLogMBVarToSegs
      Src: /src/postgres/src/backend/replication/slotfuncs.c:398,1
    - Dst: Max
      Src: /src/postgres/src/backend/replication/slotfuncs.c:401,1
    - Dst: XLogSegNoOffsetToRecPtr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:402,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:404,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:407,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/slotfuncs.c:410,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:411,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:416,1
    - Dst: SlotIsPhysical
      Src: /src/postgres/src/backend/replication/slotfuncs.c:422,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:432,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:434,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:440,1
    - Dst: GetSlotInvalidationCauseName
      Src: /src/postgres/src/backend/replication/slotfuncs.c:440,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:442,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:444,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slotfuncs.c:446,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/replication/slotfuncs.c:448,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slotfuncs.c:452,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 104
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 235
    functionDepth: 3
    functionLinenumber: 235
    functionLinenumberEnd: 455
    functionName: pg_get_replication_slots
    functionSourceFile: /src/postgres/src/backend/replication/slotfuncs.c
    functionUses: 0
    functionsReached:
    - NameGetDatum
    - BoolGetDatum
    - SpinLockRelease
    - SlotIsPhysical
    - XLogSegNoOffsetToRecPtr
    - GetXLogWriteRecPtr
    - LWLockRelease
    - XLByteToSeg
    - Int32GetDatum
    - Int64GetDatum
    - Max
    - TimestampTzGetDatum
    - TransactionIdGetDatum
    - tuplestore_putvalues
    - GetSlotInvalidationCauseName
    - InitMaterializedSRF
    - LSNGetDatum
    - XLogRecPtrIsInvalid
    - GetWALAvailability
    - ObjectIdGetDatum
    - SpinLockAcquire
    - Assert
    - memset
    - CStringGetTextDatum
    - XLogMBVarToSegs
    - LWLockAcquire
    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:470,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slotfuncs.c:474,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slotfuncs.c:476,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/slotfuncs.c:484,1
    - Dst: PhysicalWakeupLogicalWalSnd
      Src: /src/postgres/src/backend/replication/slotfuncs.c:490,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - moveto
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 464
    functionDepth: 2
    functionLinenumber: 464
    functionLinenumberEnd: 494
    functionName: pg_physical_replication_slot_advance
    functionSourceFile: /src/postgres/src/backend/replication/slotfuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - PhysicalWakeupLogicalWalSnd
    - ReplicationSlotMarkDirty
    - 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:503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - moveto
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 500
    functionDepth: 1
    functionLinenumber: 500
    functionLinenumberEnd: 504
    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:512,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/replication/slotfuncs.c:513,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slotfuncs.c:522,1
    - Dst: CheckSlotPermissions
      Src: /src/postgres/src/backend/replication/slotfuncs.c:524,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/slotfuncs.c:526,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slotfuncs.c:527,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slotfuncs.c:528,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:529,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/replication/slotfuncs.c:532,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/slotfuncs.c:533,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/slotfuncs.c:539,1
    - Dst: Min
      Src: /src/postgres/src/backend/replication/slotfuncs.c:540,1
    - Dst: GetFlushRecPtr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:540,1
    - Dst: Min
      Src: /src/postgres/src/backend/replication/slotfuncs.c:542,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:542,1
    - Dst: ReplicationSlotAcquire
      Src: /src/postgres/src/backend/replication/slotfuncs.c:545,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:545,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/slotfuncs.c:548,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slotfuncs.c:549,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slotfuncs.c:550,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:551,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:552,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/slotfuncs.c:553,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/slotfuncs.c:561,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slotfuncs.c:567,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slotfuncs.c:568,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:569,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/slotfuncs.c:570,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/slotfuncs.c:570,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/slotfuncs.c:573,1
    - Dst: pg_logical_replication_slot_advance
      Src: /src/postgres/src/backend/replication/slotfuncs.c:574,1
    - Dst: pg_physical_replication_slot_advance
      Src: /src/postgres/src/backend/replication/slotfuncs.c:576,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:578,1
    - Dst: ReplicationSlotsComputeRequiredXmin
      Src: /src/postgres/src/backend/replication/slotfuncs.c:585,1
    - Dst: ReplicationSlotsComputeRequiredLSN
      Src: /src/postgres/src/backend/replication/slotfuncs.c:586,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/slotfuncs.c:588,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:591,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/replication/slotfuncs.c:594,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:595,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/replication/slotfuncs.c:597,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 509
    functionDepth: 5
    functionLinenumber: 509
    functionLinenumberEnd: 598
    functionName: pg_replication_slot_advance
    functionSourceFile: /src/postgres/src/backend/replication/slotfuncs.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - NameGetDatum
    - ReplicationSlotAcquire
    - HeapTupleGetDatum
    - PG_GETARG_LSN
    - GetXLogReplayRecPtr
    - errdetail
    - RecoveryInProgress
    - Min
    - NameStr
    - PG_GETARG_NAME
    - get_call_result_type
    - pg_physical_replication_slot_advance
    - errmsg
    - heap_form_tuple
    - PG_RETURN_DATUM
    - ReplicationSlotsComputeRequiredXmin
    - elog
    - CheckSlotPermissions
    - OidIsValid
    - LSNGetDatum
    - XLogRecPtrIsInvalid
    - ReplicationSlotRelease
    - ReplicationSlotsComputeRequiredLSN
    - Assert
    - pg_logical_replication_slot_advance
    - ereport
    - GetFlushRecPtr
    - errcode
    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:606,1
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/replication/slotfuncs.c:607,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/replication/slotfuncs.c:621,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/slotfuncs.c:622,1
    - Dst: CheckSlotPermissions
      Src: /src/postgres/src/backend/replication/slotfuncs.c:624,1
    - Dst: CheckLogicalDecodingRequirements
      Src: /src/postgres/src/backend/replication/slotfuncs.c:627,1
    - Dst: CheckSlotRequirements
      Src: /src/postgres/src/backend/replication/slotfuncs.c:629,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/slotfuncs.c:631,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/slotfuncs.c:648,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:648,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:648,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slotfuncs.c:651,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slotfuncs.c:653,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/slotfuncs.c:659,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slotfuncs.c:662,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slotfuncs.c:663,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:664,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:664,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slotfuncs.c:666,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:669,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slotfuncs.c:673,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slotfuncs.c:674,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:676,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:677,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:678,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:679,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/slotfuncs.c:682,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slotfuncs.c:683,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slotfuncs.c:684,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:685,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slotfuncs.c:689,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slotfuncs.c:690,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:691,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:692,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/replication/slotfuncs.c:695,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/replication/slotfuncs.c:696,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/replication/slotfuncs.c:697,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slotfuncs.c:699,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:700,1
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/replication/slotfuncs.c:700,1
    - Dst: create_logical_replication_slot
      Src: /src/postgres/src/backend/replication/slotfuncs.c:724,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:724,1
    - Dst: create_physical_replication_slot
      Src: /src/postgres/src/backend/replication/slotfuncs.c:733,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:733,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slotfuncs.c:753,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slotfuncs.c:755,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:766,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/slotfuncs.c:767,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/slotfuncs.c:781,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:781,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slotfuncs.c:782,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:783,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:784,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/slotfuncs.c:785,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/slotfuncs.c:788,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slotfuncs.c:789,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slotfuncs.c:790,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:791,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:792,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/slotfuncs.c:793,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slotfuncs.c:804,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:805,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/slotfuncs.c:806,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/slotfuncs.c:807,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/slotfuncs.c:810,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/slotfuncs.c:818,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/slotfuncs.c:820,1
    - Dst: ReplicationSlotsComputeRequiredXmin
      Src: /src/postgres/src/backend/replication/slotfuncs.c:821,1
    - Dst: ReplicationSlotsComputeRequiredLSN
      Src: /src/postgres/src/backend/replication/slotfuncs.c:822,1
    - Dst: ReplicationSlotSave
      Src: /src/postgres/src/backend/replication/slotfuncs.c:823,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:830,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/slotfuncs.c:831,1
    - Dst: XLogGetLastRemovedSegno
      Src: /src/postgres/src/backend/replication/slotfuncs.c:831,1
    - Dst: ReplicationSlotPersist
      Src: /src/postgres/src/backend/replication/slotfuncs.c:838,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:841,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/slotfuncs.c:843,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:845,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/replication/slotfuncs.c:851,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/replication/slotfuncs.c:852,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/slotfuncs.c:854,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/replication/slotfuncs.c:856,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 86
    argCount: 2
    argNames:
    - fcinfo
    - logical_slot
    argTypes:
    - FunctionCallInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 603
    functionDepth: 7
    functionLinenumber: 603
    functionLinenumberEnd: 857
    functionName: copy_replication_slot
    functionSourceFile: /src/postgres/src/backend/replication/slotfuncs.c
    functionUses: 0
    functionsReached:
    - NameGetDatum
    - HeapTupleGetDatum
    - SpinLockRelease
    - errhint
    - PG_GETARG_BOOL
    - XLogGetLastRemovedSegno
    - LWLockRelease
    - errdetail
    - XLByteToSeg
    - NameStr
    - CheckLogicalDecodingRequirements
    - PG_GETARG_NAME
    - CheckSlotRequirements
    - SlotIsLogical
    - ReplicationSlotSave
    - get_call_result_type
    - strcmp
    - errmsg
    - heap_form_tuple
    - PG_RETURN_DATUM
    - ReplicationSlotsComputeRequiredXmin
    - elog
    - CheckSlotPermissions
    - PG_NARGS
    - LSNGetDatum
    - XLogRecPtrIsInvalid
    - create_logical_replication_slot
    - ReplicationSlotRelease
    - SpinLockAcquire
    - ReplicationSlotsComputeRequiredLSN
    - Assert
    - create_physical_replication_slot
    - ReplicationSlotMarkDirty
    - ReplicationSlotPersist
    - ereport
    - LWLockAcquire
    - errcode
    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:863,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 860
    functionDepth: 8
    functionLinenumber: 860
    functionLinenumberEnd: 864
    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:869,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 866
    functionDepth: 8
    functionLinenumber: 866
    functionLinenumberEnd: 870
    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:875,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 872
    functionDepth: 8
    functionLinenumber: 872
    functionLinenumberEnd: 876
    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:881,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 878
    functionDepth: 8
    functionLinenumber: 878
    functionLinenumberEnd: 882
    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:887,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 884
    functionDepth: 8
    functionLinenumber: 884
    functionLinenumberEnd: 888
    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:901,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/slotfuncs.c:903,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slotfuncs.c:904,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slotfuncs.c:905,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:906,1
    - Dst: ValidateSlotSyncParams
      Src: /src/postgres/src/backend/replication/slotfuncs.c:908,1
    - Dst: load_file
      Src: /src/postgres/src/backend/replication/slotfuncs.c:911,1
    - Dst: CheckAndGetDbnameFromConninfo
      Src: /src/postgres/src/backend/replication/slotfuncs.c:913,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/slotfuncs.c:915,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/slotfuncs.c:917,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/slotfuncs.c:919,1
    - Dst: walrcv_connect
      Src: /src/postgres/src/backend/replication/slotfuncs.c:922,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/slotfuncs.c:924,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/slotfuncs.c:927,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/slotfuncs.c:928,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/slotfuncs.c:929,1
    - Dst: SyncReplicationSlots
      Src: /src/postgres/src/backend/replication/slotfuncs.c:932,1
    - Dst: walrcv_disconnect
      Src: /src/postgres/src/backend/replication/slotfuncs.c:934,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/replication/slotfuncs.c:936,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 937
      start: 894
    functionDepth: 3
    functionLinenumber: 894
    functionLinenumberEnd: 937
    functionName: pg_sync_replication_slots
    functionSourceFile: /src/postgres/src/backend/replication/slotfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - walrcv_disconnect
    - RecoveryInProgress
    - appendStringInfo
    - appendStringInfoString
    - PG_RETURN_VOID
    - CheckAndGetDbnameFromConninfo
    - ereport
    - ValidateSlotSyncParams
    - CheckSlotPermissions
    - walrcv_connect
    - SyncReplicationSlots
    - initStringInfo
    - load_file
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum pg_sync_replication_slots(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 51
    functionName: WalRcvShmemSize
    functionSourceFile: /src/postgres/src/backend/replication/walreceiverfuncs.c
    functionUses: 0
    functionsReached:
    - add_size
    linkageType: ''
    returnType: Size
    signature: Size WalRcvShmemSize(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ShmemInitStruct
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:60,1
    - Dst: WalRcvShmemSize
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:60,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:65,1
    - Dst: WalRcvShmemSize
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:65,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:67,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:68,1
    - Dst: pg_atomic_init_u64
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 54
    functionDepth: 2
    functionLinenumber: 54
    functionLinenumberEnd: 72
    functionName: WalRcvShmemInit
    functionSourceFile: /src/postgres/src/backend/replication/walreceiverfuncs.c
    functionUses: 0
    functionsReached:
    - SpinLockInit
    - MemSet
    - ConditionVariableInit
    - pg_atomic_init_u64
    - ShmemInitStruct
    - WalRcvShmemSize
    linkageType: ''
    returnType: void
    signature: void WalRcvShmemInit(void)
  - 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: 1
    functionLinenumber: 75
    functionLinenumberEnd: 120
    functionName: WalRcvRunning
    functionSourceFile: /src/postgres/src/backend/replication/walreceiverfuncs.c
    functionUses: 1
    functionsReached:
    - ConditionVariableBroadcast
    - SpinLockRelease
    - time
    - SpinLockAcquire
    linkageType: ''
    returnType: bool
    signature: bool WalRcvRunning(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:133,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:138,1
    - Dst: time
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:148,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:154,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:160,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:163,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 172
    functionName: WalRcvStreaming
    functionSourceFile: /src/postgres/src/backend/replication/walreceiverfuncs.c
    functionUses: 2
    functionsReached:
    - ConditionVariableBroadcast
    - SpinLockRelease
    - time
    - SpinLockAcquire
    linkageType: ''
    returnType: bool
    signature: bool WalRcvStreaming(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:190,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:209,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:213,1
    - Dst: kill
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:219,1
    - Dst: ConditionVariablePrepareToSleep
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:225,1
    - Dst: WalRcvRunning
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:226,1
    - Dst: ConditionVariableSleep
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:227,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:229,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 178
    functionDepth: 2
    functionLinenumber: 178
    functionLinenumberEnd: 230
    functionName: ShutdownWalRcv
    functionSourceFile: /src/postgres/src/backend/replication/walreceiverfuncs.c
    functionUses: 3
    functionsReached:
    - WalRcvRunning
    - ConditionVariablePrepareToSleep
    - ConditionVariableCancelSleep
    - kill
    - SpinLockRelease
    - ConditionVariableBroadcast
    - ConditionVariableSleep
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void ShutdownWalRcv(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:251,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:260,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:261,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:263,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:266,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:270,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:282,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:315,1
    - Dst: SendPostmasterSignal
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:318,1
    - Dst: SetLatch
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:320,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:320,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 5
    argNames:
    - tli
    - recptr
    - conninfo
    - slotname
    - create_temp_slot
    argTypes:
    - TimeLineID
    - XLogRecPtr
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 321
    functionName: RequestXLogStreaming
    functionSourceFile: /src/postgres/src/backend/replication/walreceiverfuncs.c
    functionUses: 1
    functionsReached:
    - XLogSegmentOffset
    - Assert
    - time
    - SpinLockRelease
    - strlcpy
    - SetLatch
    - GetPGProcByNumber
    - SendPostmasterSignal
    - SpinLockAcquire
    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:337,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:343,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - latestChunkStart
    - receiveTLI
    argTypes:
    - XLogRecPtr*
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 331
    functionDepth: 1
    functionLinenumber: 331
    functionLinenumberEnd: 346
    functionName: GetWalRcvFlushRecPtr
    functionSourceFile: /src/postgres/src/backend/replication/walreceiverfuncs.c
    functionUses: 3
    functionsReached:
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr GetWalRcvFlushRecPtr(XLogRecPtr *latestChunkStart, TimeLineID
      *receiveTLI)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 352
    functionDepth: 2
    functionLinenumber: 352
    functionLinenumberEnd: 358
    functionName: GetWalRcvWriteRecPtr
    functionSourceFile: /src/postgres/src/backend/replication/walreceiverfuncs.c
    functionUses: 0
    functionsReached:
    - pg_atomic_read_u64
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr GetWalRcvWriteRecPtr(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:372,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:374,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:376,1
    - Dst: GetCurrentChunkReplayStartTime
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:381,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:386,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:387,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 364
    functionDepth: 2
    functionLinenumber: 364
    functionLinenumberEnd: 388
    functionName: GetReplicationApplyDelay
    functionSourceFile: /src/postgres/src/backend/replication/walreceiverfuncs.c
    functionUses: 0
    functionsReached:
    - GetCurrentChunkReplayStartTime
    - TimestampDifferenceMilliseconds
    - SpinLockRelease
    - GetXLogReplayRecPtr
    - GetCurrentTimestamp
    - SpinLockAcquire
    linkageType: ''
    returnType: int
    signature: int GetReplicationApplyDelay(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:401,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:404,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/replication/walreceiverfuncs.c:406,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 394
    functionDepth: 1
    functionLinenumber: 394
    functionLinenumberEnd: 408
    functionName: GetReplicationTransferLatency
    functionSourceFile: /src/postgres/src/backend/replication/walreceiverfuncs.c
    functionUses: 0
    functionsReached:
    - TimestampDifferenceMilliseconds
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: int
    signature: int GetReplicationTransferLatency(void)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walreceiver.c:169,1
    - Dst: AuxiliaryProcessMainCommon
      Src: /src/postgres/src/backend/replication/walreceiver.c:172,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walreceiver.c:179,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiver.c:188,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walreceiver.c:189,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:198,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/walreceiver.c:199,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/walreceiver.c:200,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:212,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walreceiver.c:213,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/replication/walreceiver.c:221,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/replication/walreceiver.c:222,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walreceiver.c:231,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walreceiver.c:234,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:241,1
    - Dst: pg_atomic_write_u64
      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: walrcv_connect
      Src: /src/postgres/src/backend/replication/walreceiver.c:272,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:274,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walreceiver.c:275,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:276,1
    - Dst: walrcv_get_conninfo
      Src: /src/postgres/src/backend/replication/walreceiver.c:284,1
    - Dst: walrcv_get_senderinfo
      Src: /src/postgres/src/backend/replication/walreceiver.c:285,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiver.c:286,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/walreceiver.c:287,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/replication/walreceiver.c:289,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/walreceiver.c:291,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/replication/walreceiver.c:293,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:297,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/walreceiver.c:300,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/walreceiver.c:303,1
    - Dst: walrcv_identify_system
      Src: /src/postgres/src/backend/replication/walreceiver.c:316,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/walreceiver.c:318,1
    - Dst: GetSystemIdentifier
      Src: /src/postgres/src/backend/replication/walreceiver.c:319,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/walreceiver.c:320,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:322,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walreceiver.c:323,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:324,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/walreceiver.c:325,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:334,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walreceiver.c:335,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:336,1
    - Dst: WalRcvFetchTimeLineHistoryFiles
      Src: /src/postgres/src/backend/replication/walreceiver.c:349,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/walreceiver.c:358,1
    - Dst: walrcv_get_backend_pid
      Src: /src/postgres/src/backend/replication/walreceiver.c:360,1
    - Dst: walrcv_create_slot
      Src: /src/postgres/src/backend/replication/walreceiver.c:362,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiver.c:364,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/replication/walreceiver.c:365,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:366,1
    - Dst: walrcv_startstreaming
      Src: /src/postgres/src/backend/replication/walreceiver.c:385,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:388,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:389,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walreceiver.c:390,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:392,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:393,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walreceiver.c:394,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/replication/walreceiver.c:398,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/walreceiver.c:399,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walreceiver.c:402,1
    - Dst: WalRcvComputeNextWakeup
      Src: /src/postgres/src/backend/replication/walreceiver.c:404,1
    - Dst: XLogWalRcvSendReply
      Src: /src/postgres/src/backend/replication/walreceiver.c:407,1
    - Dst: XLogWalRcvSendHSFeedback
      Src: /src/postgres/src/backend/replication/walreceiver.c:408,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/walreceiver.c:425,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:426,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walreceiver.c:427,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:428,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/walreceiver.c:431,1
    - Dst: ProcessConfigFile
      Src: /src/postgres/src/backend/replication/walreceiver.c:436,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walreceiver.c:438,1
    - Dst: WalRcvComputeNextWakeup
      Src: /src/postgres/src/backend/replication/walreceiver.c:440,1
    - Dst: XLogWalRcvSendHSFeedback
      Src: /src/postgres/src/backend/replication/walreceiver.c:441,1
    - Dst: walrcv_receive
      Src: /src/postgres/src/backend/replication/walreceiver.c:445,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walreceiver.c:460,1
    - Dst: WalRcvComputeNextWakeup
      Src: /src/postgres/src/backend/replication/walreceiver.c:461,1
    - Dst: WalRcvComputeNextWakeup
      Src: /src/postgres/src/backend/replication/walreceiver.c:463,1
    - Dst: XLogWalRcvProcessMsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:464,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:471,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:472,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/walreceiver.c:473,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walreceiver.c:475,1
    - Dst: walrcv_receive
      Src: /src/postgres/src/backend/replication/walreceiver.c:479,1
    - Dst: XLogWalRcvSendReply
      Src: /src/postgres/src/backend/replication/walreceiver.c:483,1
    - Dst: XLogWalRcvFlush
      Src: /src/postgres/src/backend/replication/walreceiver.c:490,1
    - Dst: Min
      Src: /src/postgres/src/backend/replication/walreceiver.c:500,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walreceiver.c:503,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/replication/walreceiver.c:504,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walreceiver.c:517,1
    - Dst: WaitLatchOrSocket
      Src: /src/postgres/src/backend/replication/walreceiver.c:518,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/walreceiver.c:526,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/walreceiver.c:527,1
    - Dst: pg_memory_barrier
      Src: /src/postgres/src/backend/replication/walreceiver.c:538,1
    - Dst: XLogWalRcvSendReply
      Src: /src/postgres/src/backend/replication/walreceiver.c:539,1
    - Dst: pgstat_report_wal
      Src: /src/postgres/src/backend/replication/walreceiver.c:563,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walreceiver.c:569,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:571,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walreceiver.c:572,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:573,1
    - Dst: XLogWalRcvSendReply
      Src: /src/postgres/src/backend/replication/walreceiver.c:585,1
    - Dst: XLogWalRcvSendHSFeedback
      Src: /src/postgres/src/backend/replication/walreceiver.c:586,1
    - Dst: walrcv_endstreaming
      Src: /src/postgres/src/backend/replication/walreceiver.c:594,1
    - Dst: WalRcvFetchTimeLineHistoryFiles
      Src: /src/postgres/src/backend/replication/walreceiver.c:601,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:604,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:605,1
    - Dst: XLogWalRcvFlush
      Src: /src/postgres/src/backend/replication/walreceiver.c:616,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/replication/walreceiver.c:617,1
    - Dst: close
      Src: /src/postgres/src/backend/replication/walreceiver.c:618,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:619,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/walreceiver.c:620,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:621,1
    - Dst: XLogArchiveForceDone
      Src: /src/postgres/src/backend/replication/walreceiver.c:629,1
    - Dst: XLogArchiveNotify
      Src: /src/postgres/src/backend/replication/walreceiver.c:631,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walreceiver.c:635,1
    - Dst: WalRcvWaitForStartPosition
      Src: /src/postgres/src/backend/replication/walreceiver.c:636,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 186
    argCount: 2
    argNames:
    - startup_data
    - startup_data_len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 151
    functionDepth: 3
    functionLinenumber: 151
    functionLinenumberEnd: 639
    functionName: WalReceiverMain
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - walrcv_endstreaming
    - CHECK_FOR_INTERRUPTS
    - XLogArchiveForceDone
    - snprintf
    - GetSystemIdentifier
    - SpinLockRelease
    - GetXLogReplayRecPtr
    - AuxiliaryProcessMainCommon
    - walrcv_create_slot
    - XLogWalRcvFlush
    - sigprocmask
    - errdetail
    - RecoveryInProgress
    - errcode_for_file_access
    - ResetLatch
    - pfree
    - Min
    - walrcv_identify_system
    - pgstat_report_wal
    - XLogWalRcvProcessMsg
    - walrcv_get_backend_pid
    - strcmp
    - proc_exit
    - errmsg
    - on_shmem_exit
    - walrcv_get_conninfo
    - walrcv_startstreaming
    - XLogArchiveNotify
    - close
    - WalRcvFetchTimeLineHistoryFiles
    - XLogFileName
    - elog
    - walrcv_get_senderinfo
    - strlcpy
    - GetCurrentTimestamp
    - WalRcvWaitForStartPosition
    - load_file
    - pg_memory_barrier
    - SpinLockAcquire
    - initStringInfo
    - Assert
    - WalRcvComputeNextWakeup
    - XLogWalRcvSendReply
    - ProcessConfigFile
    - memset
    - walrcv_receive
    - ereport
    - PointerGetDatum
    - XLogWalRcvSendHSFeedback
    - pqsignal
    - TimestampDifferenceMilliseconds
    - walrcv_connect
    - ConditionVariableBroadcast
    - WaitLatchOrSocket
    - pg_atomic_write_u64
    - errcode
    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:650,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:654,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/walreceiver.c:656,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walreceiver.c:658,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:663,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walreceiver.c:665,1
    - Dst: WakeupRecovery
      Src: /src/postgres/src/backend/replication/walreceiver.c:671,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/walreceiver.c:674,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/walreceiver.c:676,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiver.c:678,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walreceiver.c:679,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:692,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:701,1
    - Dst: exit
      Src: /src/postgres/src/backend/replication/walreceiver.c:702,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:704,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/replication/walreceiver.c:706,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/walreceiver.c:714,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walreceiver.c:715,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walreceiver.c:716,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 2
    argNames:
    - startpoint
    - startpointTLI
    argTypes:
    - XLogRecPtr*
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 644
    functionDepth: 2
    functionLinenumber: 644
    functionLinenumberEnd: 718
    functionName: WalRcvWaitForStartPosition
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 1
    functionsReached:
    - ResetLatch
    - LSN_FORMAT_ARGS
    - Assert
    - CHECK_FOR_INTERRUPTS
    - WakeupRecovery
    - SpinLockAcquire
    - snprintf
    - SpinLockRelease
    - set_ps_display
    - elog
    - exit
    - WaitLatch
    - proc_exit
    linkageType: ''
    returnType: void
    signature: void WalRcvWaitForStartPosition(XLogRecPtr *startpoint, TimeLineID
      *startpointTLI)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: existsTimeLineHistory
      Src: /src/postgres/src/backend/replication/walreceiver.c:732,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:739,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:740,1
    - Dst: walrcv_readtimelinehistoryfile
      Src: /src/postgres/src/backend/replication/walreceiver.c:743,1
    - Dst: TLHistoryFileName
      Src: /src/postgres/src/backend/replication/walreceiver.c:750,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/walreceiver.c:751,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:752,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walreceiver.c:753,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/walreceiver.c:754,1
    - Dst: writeTimeLineHistoryFile
      Src: /src/postgres/src/backend/replication/walreceiver.c:760,1
    - Dst: XLogArchiveForceDone
      Src: /src/postgres/src/backend/replication/walreceiver.c:767,1
    - Dst: XLogArchiveNotify
      Src: /src/postgres/src/backend/replication/walreceiver.c:769,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/walreceiver.c:771,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/walreceiver.c:772,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - first
    - last
    argTypes:
    - TimeLineID
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 724
    functionDepth: 2
    functionLinenumber: 724
    functionLinenumberEnd: 775
    functionName: WalRcvFetchTimeLineHistoryFiles
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 1
    functionsReached:
    - errmsg
    - pfree
    - writeTimeLineHistoryFile
    - XLogArchiveNotify
    - XLogArchiveForceDone
    - existsTimeLineHistory
    - ereport
    - errmsg_internal
    - TLHistoryFileName
    - walrcv_readtimelinehistoryfile
    - strcmp
    - errcode
    linkageType: ''
    returnType: void
    signature: void WalRcvFetchTimeLineHistoryFiles(TimeLineID first, TimeLineID last)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/walreceiver.c:784,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walreceiver.c:786,1
    - Dst: XLogWalRcvFlush
      Src: /src/postgres/src/backend/replication/walreceiver.c:789,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiver.c:792,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walreceiver.c:793,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walreceiver.c:798,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:803,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/walreceiver.c:805,1
    - Dst: walrcv_disconnect
      Src: /src/postgres/src/backend/replication/walreceiver.c:809,1
    - Dst: WakeupRecovery
      Src: /src/postgres/src/backend/replication/walreceiver.c:812,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 813
      start: 780
    functionDepth: 2
    functionLinenumber: 780
    functionLinenumberEnd: 813
    functionName: WalRcvDie
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 0
    functionsReached:
    - Assert
    - walrcv_disconnect
    - WakeupRecovery
    - SpinLockRelease
    - ConditionVariableBroadcast
    - XLogWalRcvFlush
    - DatumGetPointer
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void WalRcvDie(int code, Datum arg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:835,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walreceiver.c:836,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/walreceiver.c:837,1
    - Dst: initReadOnlyStringInfo
      Src: /src/postgres/src/backend/replication/walreceiver.c:840,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/walreceiver.c:843,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/walreceiver.c:844,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/walreceiver.c:845,1
    - Dst: ProcessWalSndrMessage
      Src: /src/postgres/src/backend/replication/walreceiver.c:846,1
    - Dst: XLogWalRcvWrite
      Src: /src/postgres/src/backend/replication/walreceiver.c:850,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:859,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walreceiver.c:860,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/walreceiver.c:861,1
    - Dst: initReadOnlyStringInfo
      Src: /src/postgres/src/backend/replication/walreceiver.c:864,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: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/walreceiver.c:869,1
    - Dst: ProcessWalSndrMessage
      Src: /src/postgres/src/backend/replication/walreceiver.c:871,1
    - Dst: XLogWalRcvSendReply
      Src: /src/postgres/src/backend/replication/walreceiver.c:875,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:879,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walreceiver.c:880,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/walreceiver.c:881,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: 884
      start: 818
    functionDepth: 2
    functionLinenumber: 818
    functionLinenumberEnd: 884
    functionName: XLogWalRcvProcessMsg
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 1
    functionsReached:
    - pq_getmsgbyte
    - XLogWalRcvSendReply
    - errmsg_internal
    - ereport
    - pq_getmsgint64
    - initReadOnlyStringInfo
    - ProcessWalSndrMessage
    - errcode
    - 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:896,1
    - Dst: XLByteInSeg
      Src: /src/postgres/src/backend/replication/walreceiver.c:903,1
    - Dst: XLogWalRcvClose
      Src: /src/postgres/src/backend/replication/walreceiver.c:904,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/walreceiver.c:909,1
    - Dst: XLogFileInit
      Src: /src/postgres/src/backend/replication/walreceiver.c:910,1
    - Dst: XLogSegmentOffset
      Src: /src/postgres/src/backend/replication/walreceiver.c:915,1
    - Dst: pgstat_prepare_io_time
      Src: /src/postgres/src/backend/replication/walreceiver.c:928,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/replication/walreceiver.c:930,1
    - Dst: pg_pwrite
      Src: /src/postgres/src/backend/replication/walreceiver.c:931,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/walreceiver.c:932,1
    - Dst: pgstat_count_io_op_time
      Src: /src/postgres/src/backend/replication/walreceiver.c:934,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/replication/walreceiver.c:947,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:949,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/walreceiver.c:950,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:951,1
    - Dst: pg_atomic_write_u64
      Src: /src/postgres/src/backend/replication/walreceiver.c:966,1
    - Dst: XLByteInSeg
      Src: /src/postgres/src/backend/replication/walreceiver.c:974,1
    - Dst: XLogWalRcvClose
      Src: /src/postgres/src/backend/replication/walreceiver.c:975,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 4
    argNames:
    - buf
    - nbytes
    - recptr
    - tli
    argTypes:
    - char*
    - Size
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 889
    functionDepth: 8
    functionLinenumber: 889
    functionLinenumberEnd: 976
    functionName: XLogWalRcvWrite
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 1
    functionsReached:
    - XLogSegmentOffset
    - XLogWalRcvClose
    - XLByteToSeg
    - Assert
    - XLByteInSeg
    - pg_pwrite
    - errmsg
    - XLogFileInit
    - ereport
    - XLogFileName
    - pgstat_prepare_io_time
    - pgstat_report_wait_end
    - errcode_for_file_access
    - pg_atomic_write_u64
    - pgstat_report_wait_start
    - pgstat_count_io_op_time
    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:987,1
    - Dst: issue_xlog_fsync
      Src: /src/postgres/src/backend/replication/walreceiver.c:993,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiver.c:998,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:1005,1
    - Dst: WakeupRecovery
      Src: /src/postgres/src/backend/replication/walreceiver.c:1008,1
    - Dst: AllowCascadeReplication
      Src: /src/postgres/src/backend/replication/walreceiver.c:1009,1
    - Dst: WalSndWakeup
      Src: /src/postgres/src/backend/replication/walreceiver.c:1010,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/walreceiver.c:1017,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walreceiver.c:1018,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walreceiver.c:1019,1
    - Dst: XLogWalRcvSendReply
      Src: /src/postgres/src/backend/replication/walreceiver.c:1025,1
    - Dst: XLogWalRcvSendHSFeedback
      Src: /src/postgres/src/backend/replication/walreceiver.c:1026,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - dying
    - tli
    argTypes:
    - bool
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1029
      start: 984
    functionDepth: 3
    functionLinenumber: 984
    functionLinenumberEnd: 1029
    functionName: XLogWalRcvFlush
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 2
    functionsReached:
    - LSN_FORMAT_ARGS
    - WalSndWakeup
    - Assert
    - XLogWalRcvSendReply
    - WakeupRecovery
    - snprintf
    - SpinLockRelease
    - set_ps_display
    - XLogWalRcvSendHSFeedback
    - issue_xlog_fsync
    - AllowCascadeReplication
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void XLogWalRcvFlush(bool dying, TimeLineID tli)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walreceiver.c:1044,1
    - Dst: XLByteInSeg
      Src: /src/postgres/src/backend/replication/walreceiver.c:1044,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walreceiver.c:1045,1
    - Dst: XLogWalRcvFlush
      Src: /src/postgres/src/backend/replication/walreceiver.c:1051,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/replication/walreceiver.c:1053,1
    - Dst: close
      Src: /src/postgres/src/backend/replication/walreceiver.c:1060,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walreceiver.c:1061,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/walreceiver.c:1062,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walreceiver.c:1063,1
    - Dst: XLogArchiveForceDone
      Src: /src/postgres/src/backend/replication/walreceiver.c:1071,1
    - Dst: XLogArchiveNotify
      Src: /src/postgres/src/backend/replication/walreceiver.c:1073,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - recptr
    - tli
    argTypes:
    - XLogRecPtr
    - TimeLineID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1076
      start: 1039
    functionDepth: 4
    functionLinenumber: 1039
    functionLinenumberEnd: 1076
    functionName: XLogWalRcvClose
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 1
    functionsReached:
    - errmsg
    - Assert
    - XLByteInSeg
    - XLogArchiveNotify
    - XLogArchiveForceDone
    - close
    - ereport
    - XLogFileName
    - XLogWalRcvFlush
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void XLogWalRcvClose(XLogRecPtr recptr, TimeLineID tli)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walreceiver.c:1107,1
    - Dst: WalRcvComputeNextWakeup
      Src: /src/postgres/src/backend/replication/walreceiver.c:1125,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/replication/walreceiver.c:1130,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/walreceiver.c:1132,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/walreceiver.c:1133,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walreceiver.c:1134,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walreceiver.c:1135,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walreceiver.c:1136,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walreceiver.c:1137,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walreceiver.c:1137,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/walreceiver.c:1138,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walreceiver.c:1141,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walreceiver.c:1142,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walreceiver.c:1143,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walreceiver.c:1144,1
    - Dst: walrcv_send
      Src: /src/postgres/src/backend/replication/walreceiver.c:1147,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - force
    - requestReply
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1148
      start: 1091
    functionDepth: 3
    functionLinenumber: 1091
    functionLinenumberEnd: 1148
    functionName: XLogWalRcvSendReply
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 3
    functionsReached:
    - LSN_FORMAT_ARGS
    - WalRcvComputeNextWakeup
    - resetStringInfo
    - walrcv_send
    - GetXLogReplayRecPtr
    - elog
    - GetCurrentTimestamp
    - pq_sendint64
    - pq_sendbyte
    linkageType: ''
    returnType: void
    signature: void XLogWalRcvSendReply(bool force, bool requestReply)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walreceiver.c:1183,1
    - Dst: WalRcvComputeNextWakeup
      Src: /src/postgres/src/backend/replication/walreceiver.c:1190,1
    - Dst: HotStandbyActive
      Src: /src/postgres/src/backend/replication/walreceiver.c:1202,1
    - Dst: GetReplicationHorizons
      Src: /src/postgres/src/backend/replication/walreceiver.c:1211,1
    - Dst: ReadNextFullTransactionId
      Src: /src/postgres/src/backend/replication/walreceiver.c:1223,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/replication/walreceiver.c:1224,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/backend/replication/walreceiver.c:1225,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walreceiver.c:1232,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/walreceiver.c:1236,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/walreceiver.c:1237,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walreceiver.c:1238,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walreceiver.c:1238,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/walreceiver.c:1239,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/walreceiver.c:1240,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/walreceiver.c:1241,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/walreceiver.c:1242,1
    - Dst: walrcv_send
      Src: /src/postgres/src/backend/replication/walreceiver.c:1243,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/walreceiver.c:1244,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/walreceiver.c:1244,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 1
    argNames:
    - immed
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1248
      start: 1160
    functionDepth: 3
    functionLinenumber: 1160
    functionLinenumberEnd: 1248
    functionName: XLogWalRcvSendHSFeedback
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 2
    functionsReached:
    - EpochFromFullTransactionId
    - WalRcvComputeNextWakeup
    - resetStringInfo
    - XidFromFullTransactionId
    - TransactionIdIsValid
    - GetReplicationHorizons
    - HotStandbyActive
    - walrcv_send
    - ReadNextFullTransactionId
    - elog
    - GetCurrentTimestamp
    - pq_sendint32
    - pq_sendint64
    - pq_sendbyte
    linkageType: ''
    returnType: void
    signature: void XLogWalRcvSendHSFeedback(bool immed)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walreceiver.c:1260,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiver.c:1263,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:1269,1
    - Dst: message_level_is_interesting
      Src: /src/postgres/src/backend/replication/walreceiver.c:1271,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/walreceiver.c:1278,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/walreceiver.c:1278,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/walreceiver.c:1279,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/walreceiver.c:1279,1
    - Dst: GetReplicationApplyDelay
      Src: /src/postgres/src/backend/replication/walreceiver.c:1280,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walreceiver.c:1284,1
    - Dst: GetReplicationTransferLatency
      Src: /src/postgres/src/backend/replication/walreceiver.c:1287,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walreceiver.c:1289,1
    - Dst: GetReplicationTransferLatency
      Src: /src/postgres/src/backend/replication/walreceiver.c:1293,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/walreceiver.c:1295,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/walreceiver.c:1296,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - walEnd
    - sendTime
    argTypes:
    - XLogRecPtr
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1298
      start: 1256
    functionDepth: 3
    functionLinenumber: 1256
    functionLinenumberEnd: 1298
    functionName: ProcessWalSndrMessage
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 1
    functionsReached:
    - pfree
    - GetReplicationApplyDelay
    - pstrdup
    - SpinLockRelease
    - elog
    - GetCurrentTimestamp
    - timestamptz_to_str
    - GetReplicationTransferLatency
    - message_level_is_interesting
    - 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:1317,1
    - Dst: TimestampTzPlusMilliseconds
      Src: /src/postgres/src/backend/replication/walreceiver.c:1323,1
    - Dst: TimestampTzPlusSeconds
      Src: /src/postgres/src/backend/replication/walreceiver.c:1329,1
    - Dst: TimestampTzPlusSeconds
      Src: /src/postgres/src/backend/replication/walreceiver.c:1335,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 2
    argNames:
    - reason
    - now
    argTypes:
    - WalRcvWakeupReason
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1339
      start: 1308
    functionDepth: 1
    functionLinenumber: 1308
    functionLinenumberEnd: 1339
    functionName: WalRcvComputeNextWakeup
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 3
    functionsReached:
    - TimestampTzPlusSeconds
    - TimestampTzPlusMilliseconds
    linkageType: ''
    returnType: void
    signature: void WalRcvComputeNextWakeup(WalRcvWakeupReason reason, TimestampTz
      now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walreceiver.c:1356,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:1358,1
    - Dst: SetLatch
      Src: /src/postgres/src/backend/replication/walreceiver.c:1360,1
    - Dst: GetPGProcByNumber
      Src: /src/postgres/src/backend/replication/walreceiver.c:1360,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1361
      start: 1349
    functionDepth: 1
    functionLinenumber: 1349
    functionLinenumberEnd: 1361
    functionName: WalRcvForceReply
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 2
    functionsReached:
    - GetPGProcByNumber
    - SpinLockRelease
    - SetLatch
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void WalRcvForceReply(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - state
    argTypes:
    - WalRcvState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1386
      start: 1367
    functionDepth: 0
    functionLinenumber: 1367
    functionLinenumberEnd: 1386
    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:1416,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/replication/walreceiver.c:1428,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/replication/walreceiver.c:1429,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/replication/walreceiver.c:1431,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walreceiver.c:1432,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/replication/walreceiver.c:1439,1
    - Dst: pg_atomic_read_u64
      Src: /src/postgres/src/backend/replication/walreceiver.c:1447,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/replication/walreceiver.c:1450,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walreceiver.c:1451,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/replication/walreceiver.c:1453,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/replication/walreceiver.c:1454,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1457,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/replication/walreceiver.c:1459,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/replication/walreceiver.c:1459,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/walreceiver.c:1466,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1470,1
    - Dst: WalRcvGetStateString
      Src: /src/postgres/src/backend/replication/walreceiver.c:1470,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/walreceiver.c:1472,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1475,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1476,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/walreceiver.c:1477,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1480,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/walreceiver.c:1481,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1484,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1485,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1489,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1493,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/walreceiver.c:1494,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1497,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1501,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1505,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1509,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1513,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1517,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/replication/walreceiver.c:1521,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/replication/walreceiver.c:1521,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/replication/walreceiver.c:1521,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 67
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1522
      start: 1392
    functionDepth: 5
    functionLinenumber: 1392
    functionLinenumberEnd: 1522
    functionName: pg_stat_get_wal_receiver
    functionSourceFile: /src/postgres/src/backend/replication/walreceiver.c
    functionUses: 0
    functionsReached:
    - HeapTupleGetDatum
    - SpinLockRelease
    - GetUserId
    - Int32GetDatum
    - TimestampTzGetDatum
    - get_call_result_type
    - heap_form_tuple
    - PG_RETURN_DATUM
    - elog
    - strlcpy
    - LSNGetDatum
    - XLogRecPtrIsInvalid
    - SpinLockAcquire
    - memset
    - CStringGetTextDatum
    - palloc0
    - has_privs_of_role
    - PG_RETURN_NULL
    - pg_atomic_read_u64
    - WalRcvGetStateString
    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:285,1
    - Dst: InitWalSenderSlot
      Src: /src/postgres/src/backend/replication/walsender.c:288,1
    - Dst: CreateAuxProcessResourceOwner
      Src: /src/postgres/src/backend/replication/walsender.c:291,1
    - Dst: MarkPostmasterChildWalSender
      Src: /src/postgres/src/backend/replication/walsender.c:300,1
    - Dst: SendPostmasterSignal
      Src: /src/postgres/src/backend/replication/walsender.c:301,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:311,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:312,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:315,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/replication/walsender.c:319,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 320
    functionName: InitWalSender
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - Assert
    - RecoveryInProgress
    - MarkPostmasterChildWalSender
    - MemoryContextAllocZero
    - CreateAuxProcessResourceOwner
    - InitWalSenderSlot
    - LWLockRelease
    - LWLockAcquire
    - SendPostmasterSignal
    linkageType: ''
    returnType: void
    signature: void InitWalSender(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LWLockReleaseAll
      Src: /src/postgres/src/backend/replication/walsender.c:332,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/replication/walsender.c:333,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/walsender.c:334,1
    - Dst: pgaio_error_cleanup
      Src: /src/postgres/src/backend/replication/walsender.c:335,1
    - Dst: wal_segment_close
      Src: /src/postgres/src/backend/replication/walsender.c:338,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/walsender.c:341,1
    - Dst: ReplicationSlotCleanup
      Src: /src/postgres/src/backend/replication/walsender.c:343,1
    - Dst: IsTransactionOrTransactionBlock
      Src: /src/postgres/src/backend/replication/walsender.c:352,1
    - Dst: ReleaseAuxProcessResources
      Src: /src/postgres/src/backend/replication/walsender.c:353,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/walsender.c:356,1
    - Dst: WalSndSetState
      Src: /src/postgres/src/backend/replication/walsender.c:359,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 329
    functionDepth: 3
    functionLinenumber: 329
    functionLinenumberEnd: 360
    functionName: WalSndErrorCleanup
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - ReleaseAuxProcessResources
    - IsTransactionOrTransactionBlock
    - ConditionVariableCancelSleep
    - pgaio_error_cleanup
    - wal_segment_close
    - pgstat_report_wait_end
    - WalSndSetState
    - ReplicationSlotCleanup
    - LWLockReleaseAll
    - ReplicationSlotRelease
    - proc_exit
    linkageType: ''
    returnType: void
    signature: void WalSndErrorCleanup(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/walsender.c:375,1
    - Dst: abort
      Src: /src/postgres/src/backend/replication/walsender.c:376,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 365
    functionDepth: 1
    functionLinenumber: 365
    functionLinenumberEnd: 377
    functionName: WalSndShutdown
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - abort
    - proc_exit
    linkageType: ''
    returnType: void
    signature: void WalSndShutdown(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/walsender.c:402,1
    - Dst: GetSystemIdentifier
      Src: /src/postgres/src/backend/replication/walsender.c:403,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/walsender.c:405,1
    - Dst: GetStandbyFlushRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:407,1
    - Dst: GetFlushRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:409,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/walsender.c:411,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:411,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/walsender.c:418,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/replication/walsender.c:419,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/replication/walsender.c:421,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/walsender.c:422,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/replication/walsender.c:425,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/replication/walsender.c:428,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:429,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:431,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:433,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:435,1
    - Dst: begin_tup_output_tupdesc
      Src: /src/postgres/src/backend/replication/walsender.c:439,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:442,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/replication/walsender.c:445,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:448,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:452,1
    - Dst: do_tup_output
      Src: /src/postgres/src/backend/replication/walsender.c:457,1
    - Dst: end_tup_output
      Src: /src/postgres/src/backend/replication/walsender.c:459,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 382
    functionDepth: 4
    functionLinenumber: 382
    functionLinenumberEnd: 460
    functionName: IdentifySystem
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 5
    functionsReached:
    - LSN_FORMAT_ARGS
    - MemoryContextStrdup
    - CommitTransactionCommand
    - CreateDestReceiver
    - CStringGetTextDatum
    - Int64GetDatum
    - snprintf
    - end_tup_output
    - GetSystemIdentifier
    - begin_tup_output_tupdesc
    - GetFlushRecPtr
    - do_tup_output
    - get_database_name
    - CreateTemplateTupleDesc
    - GetStandbyFlushRecPtr
    - StartTransactionCommand
    - RecoveryInProgress
    - TupleDescInitBuiltinEntry
    linkageType: ''
    returnType: void
    signature: void IdentifySystem(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - 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:480,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/walsender.c:483,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:485,1
    - Dst: SearchNamedReplicationSlot
      Src: /src/postgres/src/backend/replication/walsender.c:486,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:489,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:497,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:499,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:500,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/walsender.c:502,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:503,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:504,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:505,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:509,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/walsender.c:514,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/walsender.c:518,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:519,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:520,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/walsender.c:526,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/walsender.c:536,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:537,1
    - Dst: GetWALInsertionTimeLine
      Src: /src/postgres/src/backend/replication/walsender.c:539,1
    - Dst: readTimeLineHistory
      Src: /src/postgres/src/backend/replication/walsender.c:541,1
    - Dst: tliOfPointInHistory
      Src: /src/postgres/src/backend/replication/walsender.c:542,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/replication/walsender.c:544,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:549,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/replication/walsender.c:552,1
    - Dst: begin_tup_output_tupdesc
      Src: /src/postgres/src/backend/replication/walsender.c:553,1
    - Dst: do_tup_output
      Src: /src/postgres/src/backend/replication/walsender.c:554,1
    - Dst: end_tup_output
      Src: /src/postgres/src/backend/replication/walsender.c:555,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - ReadReplicationSlotCmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 463
    functionDepth: 4
    functionLinenumber: 463
    functionLinenumberEnd: 556
    functionName: ReadReplicationSlot
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - tliOfPointInHistory
    - snprintf
    - SpinLockRelease
    - GetXLogReplayRecPtr
    - GetWALInsertionTimeLine
    - LWLockRelease
    - RecoveryInProgress
    - CreateDestReceiver
    - Int64GetDatum
    - do_tup_output
    - SearchNamedReplicationSlot
    - CreateTemplateTupleDesc
    - TupleDescInitBuiltinEntry
    - errmsg
    - OidIsValid
    - XLogRecPtrIsInvalid
    - begin_tup_output_tupdesc
    - SpinLockAcquire
    - Assert
    - memset
    - CStringGetTextDatum
    - end_tup_output
    - ereport
    - readTimeLineHistory
    - LWLockAcquire
    - errcode
    linkageType: ''
    returnType: void
    signature: void ReadReplicationSlot(ReadReplicationSlotCmd *cmd)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/replication/walsender.c:575,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/replication/walsender.c:581,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:582,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:583,1
    - Dst: TLHistoryFileName
      Src: /src/postgres/src/backend/replication/walsender.c:585,1
    - Dst: TLHistoryFilePath
      Src: /src/postgres/src/backend/replication/walsender.c:586,1
    - Dst: DestReceiver*::rStartup
      Src: /src/postgres/src/backend/replication/walsender.c:589,1
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/replication/walsender.c:592,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/replication/walsender.c:593,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/walsender.c:594,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/walsender.c:595,1
    - Dst: pq_sendbytes
      Src: /src/postgres/src/backend/replication/walsender.c:596,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/replication/walsender.c:598,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:600,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/walsender.c:601,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:602,1
    - Dst: lseek
      Src: /src/postgres/src/backend/replication/walsender.c:605,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:607,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/walsender.c:608,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:609,1
    - Dst: lseek
      Src: /src/postgres/src/backend/replication/walsender.c:610,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:611,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/walsender.c:612,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:613,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/walsender.c:615,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/replication/walsender.c:623,1
    - Dst: read
      Src: /src/postgres/src/backend/replication/walsender.c:624,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/walsender.c:625,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:627,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/walsender.c:628,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:629,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:632,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:633,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:634,1
    - Dst: pq_sendbytes
      Src: /src/postgres/src/backend/replication/walsender.c:637,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/walsender.c:641,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:642,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/walsender.c:643,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:644,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/replication/walsender.c:646,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - TimeLineHistoryCmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 562
    functionDepth: 4
    functionLinenumber: 562
    functionLinenumberEnd: 647
    functionName: SendTimeLineHistory
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - pq_sendint16
    - pgstat_report_wait_end
    - pq_beginmessage
    - pgstat_report_wait_start
    - pq_endmessage
    - strlen
    - errcode_for_file_access
    - pq_sendbytes
    - CreateDestReceiver
    - lseek
    - read
    - pq_sendint32
    - CreateTemplateTupleDesc
    - TupleDescInitBuiltinEntry
    - errmsg
    - CloseTransientFile
    - TLHistoryFilePath
    - DestReceiver*::rStartup
    - ereport
    - OpenTransientFile
    - TLHistoryFileName
    - errcode
    linkageType: ''
    returnType: void
    signature: void SendTimeLineHistory(TimeLineHistoryCmd *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:664,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:665,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/walsender.c:670,1
    - Dst: CreateIncrementalBackupInfo
      Src: /src/postgres/src/backend/replication/walsender.c:673,1
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/replication/walsender.c:676,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/walsender.c:677,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/replication/walsender.c:678,1
    - Dst: pq_endmessage_reuse
      Src: /src/postgres/src/backend/replication/walsender.c:679,1
    - Dst: pq_flush
      Src: /src/postgres/src/backend/replication/walsender.c:680,1
    - Dst: HandleUploadManifestPacket
      Src: /src/postgres/src/backend/replication/walsender.c:683,1
    - Dst: FinalizeIncrementalManifest
      Src: /src/postgres/src/backend/replication/walsender.c:687,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/replication/walsender.c:698,1
    - Dst: MemoryContextSetParent
      Src: /src/postgres/src/backend/replication/walsender.c:699,1
    - Dst: ReleaseAuxProcessResources
      Src: /src/postgres/src/backend/replication/walsender.c:704,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 652
    functionDepth: 5
    functionLinenumber: 652
    functionLinenumberEnd: 705
    functionName: UploadManifest
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - pq_endmessage_reuse
    - Assert
    - pq_flush
    - MemoryContextDelete
    - ReleaseAuxProcessResources
    - CreateIncrementalBackupInfo
    - MemoryContextSetParent
    - HandleUploadManifestPacket
    - pq_sendint16
    - pq_beginmessage
    - AllocSetContextCreate
    - pq_sendbyte
    - FinalizeIncrementalManifest
    linkageType: ''
    returnType: void
    signature: void UploadManifest(void)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: HOLD_CANCEL_INTERRUPTS
      Src: /src/postgres/src/backend/replication/walsender.c:725,1
    - Dst: pq_startmsgread
      Src: /src/postgres/src/backend/replication/walsender.c:727,1
    - Dst: pq_getbyte
      Src: /src/postgres/src/backend/replication/walsender.c:728,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:730,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:731,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:732,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:746,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:747,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:748,1
    - Dst: pq_getmessage
      Src: /src/postgres/src/backend/replication/walsender.c:755,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:756,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:757,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:758,1
    - Dst: RESUME_CANCEL_INTERRUPTS
      Src: /src/postgres/src/backend/replication/walsender.c:759,1
    - Dst: AppendIncrementalManifestData
      Src: /src/postgres/src/backend/replication/walsender.c:765,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:777,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:778,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:779,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/replication/walsender.c:780,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:784,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 38
    argCount: 3
    argNames:
    - buf
    - offset
    - ib
    argTypes:
    - StringInfo
    - off_t*
    - IncrementalBackupInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 718
    functionDepth: 5
    functionLinenumber: 718
    functionLinenumberEnd: 786
    functionName: HandleUploadManifestPacket
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - errmsg
    - pq_getmsgstring
    - Assert
    - pq_getbyte
    - ereport
    - pq_startmsgread
    - HOLD_CANCEL_INTERRUPTS
    - pq_getmessage
    - RESUME_CANCEL_INTERRUPTS
    - errcode
    - 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:803,1
    - Dst: XL_ROUTINE
      Src: /src/postgres/src/backend/replication/walsender.c:804,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:809,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:810,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:811,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/walsender.c:812,1
    - Dst: ReplicationSlotAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:825,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/walsender.c:826,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:827,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:828,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:829,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/walsender.c:842,1
    - Dst: GetStandbyFlushRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:844,1
    - Dst: GetFlushRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:846,1
    - Dst: readTimeLineHistory
      Src: /src/postgres/src/backend/replication/walsender.c:868,1
    - Dst: tliSwitchPoint
      Src: /src/postgres/src/backend/replication/walsender.c:869,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/replication/walsender.c:871,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/walsender.c:891,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:894,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:895,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:896,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/walsender.c:898,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:900,1
    - Dst: WalSndSetState
      Src: /src/postgres/src/backend/replication/walsender.c:926,1
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/replication/walsender.c:929,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/walsender.c:930,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/replication/walsender.c:931,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/replication/walsender.c:932,1
    - Dst: pq_flush
      Src: /src/postgres/src/backend/replication/walsender.c:933,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:941,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:942,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:943,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:944,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:951,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:953,1
    - Dst: SyncRepInitConfig
      Src: /src/postgres/src/backend/replication/walsender.c:955,1
    - Dst: WalSndLoop
      Src: /src/postgres/src/backend/replication/walsender.c:960,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/walsender.c:964,1
    - Dst: WalSndSetState
      Src: /src/postgres/src/backend/replication/walsender.c:965,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:967,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/walsender.c:971,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/walsender.c:986,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:987,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/replication/walsender.c:989,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/replication/walsender.c:996,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:997,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:999,1
    - Dst: begin_tup_output_tupdesc
      Src: /src/postgres/src/backend/replication/walsender.c:1003,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/replication/walsender.c:1005,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:1006,1
    - Dst: do_tup_output
      Src: /src/postgres/src/backend/replication/walsender.c:1009,1
    - Dst: end_tup_output
      Src: /src/postgres/src/backend/replication/walsender.c:1011,1
    - Dst: EndReplicationCommand
      Src: /src/postgres/src/backend/replication/walsender.c:1015,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 72
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - StartReplicationCmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1016
      start: 794
    functionDepth: 4
    functionLinenumber: 794
    functionLinenumberEnd: 1016
    functionName: StartReplication
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - ReplicationSlotAcquire
    - snprintf
    - SpinLockRelease
    - pq_sendint16
    - pq_beginmessage
    - GetStandbyFlushRecPtr
    - errdetail
    - RecoveryInProgress
    - pq_endmessage
    - pq_flush
    - CreateDestReceiver
    - Int64GetDatum
    - do_tup_output
    - SlotIsLogical
    - XL_ROUTINE
    - CreateTemplateTupleDesc
    - WalSndLoop
    - proc_exit
    - errmsg
    - TupleDescInitBuiltinEntry
    - XLogReaderAllocate
    - tliSwitchPoint
    - WalSndSetState
    - XLogRecPtrIsInvalid
    - begin_tup_output_tupdesc
    - ReplicationSlotRelease
    - SpinLockAcquire
    - Assert
    - list_free_deep
    - CStringGetTextDatum
    - end_tup_output
    - ereport
    - readTimeLineHistory
    - GetFlushRecPtr
    - EndReplicationCommand
    - SyncRepInitConfig
    - errcode
    - pq_sendbyte
    linkageType: ''
    returnType: void
    signature: void StartReplication(StartReplicationCmd *cmd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: WalSndWaitForWal
      Src: /src/postgres/src/backend/replication/walsender.c:1040,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/walsender.c:1054,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:1057,1
    - Dst: GetWALInsertionTimeLine
      Src: /src/postgres/src/backend/replication/walsender.c:1059,1
    - Dst: XLogReadDetermineTimeline
      Src: /src/postgres/src/backend/replication/walsender.c:1061,1
    - Dst: WALRead
      Src: /src/postgres/src/backend/replication/walsender.c:1073,1
    - Dst: WALReadRaiseError
      Src: /src/postgres/src/backend/replication/walsender.c:1081,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/walsender.c:1090,1
    - Dst: CheckXLogRemoved
      Src: /src/postgres/src/backend/replication/walsender.c:1091,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 5
    argNames:
    - state
    - targetPagePtr
    - reqLen
    - targetRecPtr
    - cur_page
    argTypes:
    - XLogReaderState*
    - XLogRecPtr
    - int
    - XLogRecPtr
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1094
      start: 1026
    functionDepth: 4
    functionLinenumber: 1026
    functionLinenumberEnd: 1094
    functionName: logical_read_xlog_page
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - WALReadRaiseError
    - XLByteToSeg
    - WalSndWaitForWal
    - WALRead
    - GetXLogReplayRecPtr
    - GetWALInsertionTimeLine
    - CheckXLogRemoved
    - XLogReadDetermineTimeline
    - RecoveryInProgress
    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:1112,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/walsender.c:1114,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/walsender.c:1116,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1121,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:1122,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1123,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/replication/walsender.c:1125,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/walsender.c:1128,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/walsender.c:1130,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/walsender.c:1132,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1135,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:1136,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1137,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/walsender.c:1140,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1143,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:1144,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1145,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/replication/walsender.c:1148,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/walsender.c:1150,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1153,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:1154,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1155,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/replication/walsender.c:1157,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/walsender.c:1159,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1162,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:1163,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1164,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/replication/walsender.c:1166,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walsender.c:1169,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: 1171
      start: 1099
    functionDepth: 1
    functionLinenumber: 1099
    functionLinenumberEnd: 1171
    functionName: parseCreateReplSlotOptions
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - lfirst
    - errmsg
    - defGetString
    - ereport
    - foreach
    - elog
    - defGetBoolean
    - strcmp
    - errcode
    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:1192,1
    - Dst: parseCreateReplSlotOptions
      Src: /src/postgres/src/backend/replication/walsender.c:1194,1
    - Dst: ReplicationSlotCreate
      Src: /src/postgres/src/backend/replication/walsender.c:1199,1
    - Dst: ReplicationSlotReserveWal
      Src: /src/postgres/src/backend/replication/walsender.c:1205,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/walsender.c:1207,1
    - Dst: ReplicationSlotSave
      Src: /src/postgres/src/backend/replication/walsender.c:1211,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:1219,1
    - Dst: CheckLogicalDecodingRequirements
      Src: /src/postgres/src/backend/replication/walsender.c:1221,1
    - Dst: ReplicationSlotCreate
      Src: /src/postgres/src/backend/replication/walsender.c:1230,1
    - Dst: IsTransactionBlock
      Src: /src/postgres/src/backend/replication/walsender.c:1240,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1241,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1243,1
    - Dst: IsTransactionBlock
      Src: /src/postgres/src/backend/replication/walsender.c:1250,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1251,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1253,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1257,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1259,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1262,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1264,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1268,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1270,1
    - Dst: IsSubTransaction
      Src: /src/postgres/src/backend/replication/walsender.c:1273,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1274,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1276,1
    - Dst: CreateInitDecodingContext
      Src: /src/postgres/src/backend/replication/walsender.c:1282,1
    - Dst: XL_ROUTINE
      Src: /src/postgres/src/backend/replication/walsender.c:1284,1
    - Dst: DecodingContextFindStartpoint
      Src: /src/postgres/src/backend/replication/walsender.c:1300,1
    - Dst: SnapBuildExportSnapshot
      Src: /src/postgres/src/backend/replication/walsender.c:1310,1
    - Dst: SnapBuildInitialSnapshot
      Src: /src/postgres/src/backend/replication/walsender.c:1316,1
    - Dst: RestoreTransactionSnapshot
      Src: /src/postgres/src/backend/replication/walsender.c:1317,1
    - Dst: FreeDecodingContext
      Src: /src/postgres/src/backend/replication/walsender.c:1321,1
    - Dst: ReplicationSlotPersist
      Src: /src/postgres/src/backend/replication/walsender.c:1324,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/walsender.c:1327,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:1328,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/replication/walsender.c:1330,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/replication/walsender.c:1339,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:1340,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:1342,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:1344,1
    - Dst: TupleDescInitBuiltinEntry
      Src: /src/postgres/src/backend/replication/walsender.c:1346,1
    - Dst: begin_tup_output_tupdesc
      Src: /src/postgres/src/backend/replication/walsender.c:1350,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/walsender.c:1353,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:1354,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:1357,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:1361,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:1367,1
    - Dst: do_tup_output
      Src: /src/postgres/src/backend/replication/walsender.c:1372,1
    - Dst: end_tup_output
      Src: /src/postgres/src/backend/replication/walsender.c:1373,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/walsender.c:1375,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 67
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - CreateReplicationSlotCmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1376
      start: 1176
    functionDepth: 6
    functionLinenumber: 1176
    functionLinenumberEnd: 1376
    functionName: CreateReplicationSlot
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 3
    functionsReached:
    - LSN_FORMAT_ARGS
    - snprintf
    - IsSubTransaction
    - SnapBuildInitialSnapshot
    - NameStr
    - ReplicationSlotReserveWal
    - CreateDestReceiver
    - CheckLogicalDecodingRequirements
    - IsTransactionBlock
    - DecodingContextFindStartpoint
    - do_tup_output
    - ReplicationSlotSave
    - XL_ROUTINE
    - RestoreTransactionSnapshot
    - SnapBuildExportSnapshot
    - CreateTemplateTupleDesc
    - TupleDescInitBuiltinEntry
    - errmsg
    - ReplicationSlotCreate
    - CreateInitDecodingContext
    - parseCreateReplSlotOptions
    - begin_tup_output_tupdesc
    - ReplicationSlotRelease
    - Assert
    - CStringGetTextDatum
    - end_tup_output
    - ReplicationSlotMarkDirty
    - ReplicationSlotPersist
    - ereport
    - FreeDecodingContext
    linkageType: ''
    returnType: void
    signature: void CreateReplicationSlot(CreateReplicationSlotCmd *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReplicationSlotDrop
      Src: /src/postgres/src/backend/replication/walsender.c:1384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - DropReplicationSlotCmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1385
      start: 1381
    functionDepth: 4
    functionLinenumber: 1381
    functionLinenumberEnd: 1385
    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:1399,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/walsender.c:1401,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1404,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:1405,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1406,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/replication/walsender.c:1408,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/walsender.c:1410,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1413,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:1414,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1415,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/replication/walsender.c:1417,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walsender.c:1420,1
    - Dst: ReplicationSlotAlter
      Src: /src/postgres/src/backend/replication/walsender.c:1423,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - AlterReplicationSlotCmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1426
      start: 1390
    functionDepth: 4
    functionLinenumber: 1390
    functionLinenumberEnd: 1426
    functionName: AlterReplicationSlot
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ReplicationSlotAlter
    - ereport
    - elog
    - defGetBoolean
    - foreach_ptr
    - strcmp
    - errcode
    linkageType: ''
    returnType: void
    signature: void AlterReplicationSlot(AlterReplicationSlotCmd *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CheckLogicalDecodingRequirements
      Src: /src/postgres/src/backend/replication/walsender.c:1439,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:1441,1
    - Dst: ReplicationSlotAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:1443,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/walsender.c:1450,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1452,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1453,1
    - Dst: CreateDecodingContext
      Src: /src/postgres/src/backend/replication/walsender.c:1465,1
    - Dst: XL_ROUTINE
      Src: /src/postgres/src/backend/replication/walsender.c:1466,1
    - Dst: WalSndSetState
      Src: /src/postgres/src/backend/replication/walsender.c:1473,1
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/replication/walsender.c:1476,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/walsender.c:1477,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/replication/walsender.c:1478,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/replication/walsender.c:1479,1
    - Dst: pq_flush
      Src: /src/postgres/src/backend/replication/walsender.c:1480,1
    - Dst: XLogBeginRead
      Src: /src/postgres/src/backend/replication/walsender.c:1483,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:1493,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:1495,1
    - Dst: SyncRepInitConfig
      Src: /src/postgres/src/backend/replication/walsender.c:1499,1
    - Dst: WalSndLoop
      Src: /src/postgres/src/backend/replication/walsender.c:1502,1
    - Dst: FreeDecodingContext
      Src: /src/postgres/src/backend/replication/walsender.c:1504,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/walsender.c:1505,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/walsender.c:1509,1
    - Dst: WalSndSetState
      Src: /src/postgres/src/backend/replication/walsender.c:1510,1
    - Dst: SetQueryCompletion
      Src: /src/postgres/src/backend/replication/walsender.c:1513,1
    - Dst: EndCommand
      Src: /src/postgres/src/backend/replication/walsender.c:1514,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 32
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - StartReplicationCmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1515
      start: 1432
    functionDepth: 4
    functionLinenumber: 1432
    functionLinenumberEnd: 1515
    functionName: StartLogicalReplication
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - ReplicationSlotAcquire
    - SpinLockRelease
    - pq_sendint16
    - pq_beginmessage
    - pq_endmessage
    - RecoveryInProgress
    - pq_flush
    - CheckLogicalDecodingRequirements
    - XLogBeginRead
    - XL_ROUTINE
    - CreateDecodingContext
    - WalSndLoop
    - proc_exit
    - errmsg
    - WalSndSetState
    - EndCommand
    - SetQueryCompletion
    - ReplicationSlotRelease
    - SpinLockAcquire
    - Assert
    - ereport
    - FreeDecodingContext
    - SyncRepInitConfig
    - pq_sendbyte
    linkageType: ''
    returnType: void
    signature: void StartLogicalReplication(StartReplicationCmd *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/walsender.c:1532,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/walsender.c:1534,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walsender.c:1535,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walsender.c:1536,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walsender.c:1542,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: 1543
      start: 1525
    functionDepth: 3
    functionLinenumber: 1525
    functionLinenumberEnd: 1543
    functionName: WalSndPrepareWrite
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - resetStringInfo
    - pq_sendint64
    - pq_sendbyte
    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:1563,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walsender.c:1564,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walsender.c:1565,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/walsender.c:1566,1
    - Dst: pq_putmessage_noblock
      Src: /src/postgres/src/backend/replication/walsender.c:1570,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/walsender.c:1572,1
    - Dst: pq_flush_if_writable
      Src: /src/postgres/src/backend/replication/walsender.c:1575,1
    - Dst: WalSndShutdown
      Src: /src/postgres/src/backend/replication/walsender.c:1576,1
    - Dst: TimestampTzPlusMilliseconds
      Src: /src/postgres/src/backend/replication/walsender.c:1579,1
    - Dst: pq_is_send_pending
      Src: /src/postgres/src/backend/replication/walsender.c:1581,1
    - Dst: ProcessPendingWrites
      Src: /src/postgres/src/backend/replication/walsender.c:1587,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: 1588
      start: 1552
    functionDepth: 2
    functionLinenumber: 1552
    functionLinenumberEnd: 1588
    functionName: WalSndWriteData
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - resetStringInfo
    - CHECK_FOR_INTERRUPTS
    - pq_is_send_pending
    - pq_flush_if_writable
    - WalSndShutdown
    - ProcessPendingWrites
    - GetCurrentTimestamp
    - pq_putmessage_noblock
    - memcpy
    - TimestampTzPlusMilliseconds
    - pq_sendint64
    linkageType: ''
    returnType: void
    signature: "void WalSndWriteData(LogicalDecodingContext *ctx, XLogRecPtr lsn,
      TransactionId xid,\n\t\t\t\tbool last_write)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ProcessRepliesIfAny
      Src: /src/postgres/src/backend/replication/walsender.c:1602,1
    - Dst: WalSndCheckTimeOut
      Src: /src/postgres/src/backend/replication/walsender.c:1605,1
    - Dst: WalSndKeepaliveIfNecessary
      Src: /src/postgres/src/backend/replication/walsender.c:1608,1
    - Dst: pq_is_send_pending
      Src: /src/postgres/src/backend/replication/walsender.c:1610,1
    - Dst: WalSndComputeSleeptime
      Src: /src/postgres/src/backend/replication/walsender.c:1613,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walsender.c:1613,1
    - Dst: WalSndWait
      Src: /src/postgres/src/backend/replication/walsender.c:1616,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/walsender.c:1620,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/walsender.c:1622,1
    - Dst: ProcessConfigFile
      Src: /src/postgres/src/backend/replication/walsender.c:1628,1
    - Dst: SyncRepInitConfig
      Src: /src/postgres/src/backend/replication/walsender.c:1629,1
    - Dst: pq_flush_if_writable
      Src: /src/postgres/src/backend/replication/walsender.c:1633,1
    - Dst: WalSndShutdown
      Src: /src/postgres/src/backend/replication/walsender.c:1634,1
    - Dst: SetLatch
      Src: /src/postgres/src/backend/replication/walsender.c:1638,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1639
      start: 1594
    functionDepth: 2
    functionLinenumber: 1594
    functionLinenumberEnd: 1639
    functionName: ProcessPendingWrites
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - ResetLatch
    - ProcessConfigFile
    - CHECK_FOR_INTERRUPTS
    - WalSndKeepaliveIfNecessary
    - pq_is_send_pending
    - ProcessRepliesIfAny
    - pq_flush_if_writable
    - WalSndShutdown
    - WalSndWait
    - WalSndComputeSleeptime
    - WalSndCheckTimeOut
    - GetCurrentTimestamp
    - SyncRepInitConfig
    - SetLatch
    linkageType: ''
    returnType: void
    signature: void ProcessPendingWrites(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walsender.c:1653,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/replication/walsender.c:1666,1
    - Dst: LagTrackerWrite
      Src: /src/postgres/src/backend/replication/walsender.c:1669,1
    - Dst: SyncRepRequested
      Src: /src/postgres/src/backend/replication/walsender.c:1682,1
    - Dst: WalSndKeepalive
      Src: /src/postgres/src/backend/replication/walsender.c:1685,1
    - Dst: pq_flush_if_writable
      Src: /src/postgres/src/backend/replication/walsender.c:1688,1
    - Dst: WalSndShutdown
      Src: /src/postgres/src/backend/replication/walsender.c:1689,1
    - Dst: pq_is_send_pending
      Src: /src/postgres/src/backend/replication/walsender.c:1692,1
    - Dst: TimestampTzPlusMilliseconds
      Src: /src/postgres/src/backend/replication/walsender.c:1704,1
    - Dst: ProcessPendingWrites
      Src: /src/postgres/src/backend/replication/walsender.c:1706,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: 1707
      start: 1648
    functionDepth: 3
    functionLinenumber: 1648
    functionLinenumberEnd: 1707
    functionName: WalSndUpdateProgress
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - pq_is_send_pending
    - SyncRepRequested
    - pq_flush_if_writable
    - WalSndShutdown
    - ProcessPendingWrites
    - WalSndKeepalive
    - GetCurrentTimestamp
    - TimestampDifferenceExceeds
    - LagTrackerWrite
    - TimestampTzPlusMilliseconds
    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:1716,1
    - Dst: SlotIsPhysical
      Src: /src/postgres/src/backend/replication/walsender.c:1716,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/walsender.c:1723,1
    - Dst: SlotExistsInSyncStandbySlots
      Src: /src/postgres/src/backend/replication/walsender.c:1726,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/walsender.c:1726,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/walsender.c:1727,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1728
      start: 1713
    functionDepth: 1
    functionLinenumber: 1713
    functionLinenumberEnd: 1728
    functionName: PhysicalWakeupLogicalWalSnd
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - Assert
    - NameStr
    - SlotExistsInSyncStandbySlots
    - SlotIsPhysical
    - ConditionVariableBroadcast
    - RecoveryInProgress
    linkageType: ''
    returnType: void
    signature: void PhysicalWakeupLogicalWalSnd(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: StandbySlotsHaveCaughtup
      Src: /src/postgres/src/backend/replication/walsender.c:1751,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - flushed_lsn
    - wait_event
    argTypes:
    - XLogRecPtr
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1759
      start: 1738
    functionDepth: 3
    functionLinenumber: 1738
    functionLinenumberEnd: 1759
    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:1782,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: 1783
      start: 1770
    functionDepth: 4
    functionLinenumber: 1770
    functionLinenumberEnd: 1783
    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: 14
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/walsender.c:1812,1
    - Dst: NeedToWaitForWal
      Src: /src/postgres/src/backend/replication/walsender.c:1813,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/walsender.c:1828,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/walsender.c:1830,1
    - Dst: ProcessConfigFile
      Src: /src/postgres/src/backend/replication/walsender.c:1836,1
    - Dst: SyncRepInitConfig
      Src: /src/postgres/src/backend/replication/walsender.c:1837,1
    - Dst: ProcessRepliesIfAny
      Src: /src/postgres/src/backend/replication/walsender.c:1841,1
    - Dst: XLogBackgroundFlush
      Src: /src/postgres/src/backend/replication/walsender.c:1849,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/walsender.c:1859,1
    - Dst: GetFlushRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:1860,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:1862,1
    - Dst: NeedToWaitForStandbys
      Src: /src/postgres/src/backend/replication/walsender.c:1875,1
    - Dst: WalSndKeepalive
      Src: /src/postgres/src/backend/replication/walsender.c:1892,1
    - Dst: NeedToWaitForWal
      Src: /src/postgres/src/backend/replication/walsender.c:1899,1
    - Dst: pq_flush_if_writable
      Src: /src/postgres/src/backend/replication/walsender.c:1911,1
    - Dst: WalSndShutdown
      Src: /src/postgres/src/backend/replication/walsender.c:1912,1
    - Dst: pq_is_send_pending
      Src: /src/postgres/src/backend/replication/walsender.c:1920,1
    - Dst: WalSndCheckTimeOut
      Src: /src/postgres/src/backend/replication/walsender.c:1924,1
    - Dst: WalSndKeepaliveIfNecessary
      Src: /src/postgres/src/backend/replication/walsender.c:1927,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walsender.c:1936,1
    - Dst: WalSndComputeSleeptime
      Src: /src/postgres/src/backend/replication/walsender.c:1937,1
    - Dst: pq_is_send_pending
      Src: /src/postgres/src/backend/replication/walsender.c:1941,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:1944,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/replication/walsender.c:1947,1
    - Dst: pgstat_flush_io
      Src: /src/postgres/src/backend/replication/walsender.c:1950,1
    - Dst: pgstat_flush_backend
      Src: /src/postgres/src/backend/replication/walsender.c:1951,1
    - Dst: WalSndWait
      Src: /src/postgres/src/backend/replication/walsender.c:1955,1
    - Dst: SetLatch
      Src: /src/postgres/src/backend/replication/walsender.c:1959,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 50
    argCount: 1
    argNames:
    - loc
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1961
      start: 1798
    functionDepth: 6
    functionLinenumber: 1798
    functionLinenumberEnd: 1961
    functionName: WalSndWaitForWal
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - CHECK_FOR_INTERRUPTS
    - ProcessRepliesIfAny
    - GetXLogReplayRecPtr
    - WalSndComputeSleeptime
    - RecoveryInProgress
    - NeedToWaitForWal
    - ResetLatch
    - NeedToWaitForStandbys
    - WalSndWait
    - TimestampDifferenceExceeds
    - SetLatch
    - pgstat_flush_backend
    - pgstat_flush_io
    - XLogBackgroundFlush
    - WalSndShutdown
    - WalSndCheckTimeOut
    - GetCurrentTimestamp
    - XLogRecPtrIsInvalid
    - ProcessConfigFile
    - Assert
    - WalSndKeepaliveIfNecessary
    - pq_is_send_pending
    - pq_flush_if_writable
    - GetFlushRecPtr
    - WalSndKeepalive
    - SyncRepInitConfig
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr WalSndWaitForWal(XLogRecPtr loc)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: WalSndSetState
      Src: /src/postgres/src/backend/replication/walsender.c:1986,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:1994,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:1995,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:1996,1
    - Dst: SnapBuildClearExportedSnapshot
      Src: /src/postgres/src/backend/replication/walsender.c:2002,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/walsender.c:2004,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/walsender.c:2025,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/walsender.c:2029,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/walsender.c:2031,1
    - Dst: replication_scanner_init
      Src: /src/postgres/src/backend/replication/walsender.c:2033,1
    - Dst: replication_scanner_is_replication_command
      Src: /src/postgres/src/backend/replication/walsender.c:2038,1
    - Dst: replication_scanner_finish
      Src: /src/postgres/src/backend/replication/walsender.c:2041,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/walsender.c:2043,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/walsender.c:2044,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:2048,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:2049,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:2050,1
    - Dst: replication_yyparse
      Src: /src/postgres/src/backend/replication/walsender.c:2059,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:2061,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:2062,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/walsender.c:2063,1
    - Dst: replication_scanner_finish
      Src: /src/postgres/src/backend/replication/walsender.c:2065,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/walsender.c:2073,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:2080,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:2081,1
    - Dst: IsAbortedTransactionBlockState
      Src: /src/postgres/src/backend/replication/walsender.c:2086,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:2087,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:2088,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:2089,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/walsender.c:2092,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/walsender.c:2098,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/walsender.c:2099,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/walsender.c:2100,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walsender.c:2106,1
    - Dst: IdentifySystem
      Src: /src/postgres/src/backend/replication/walsender.c:2107,1
    - Dst: EndReplicationCommand
      Src: /src/postgres/src/backend/replication/walsender.c:2108,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walsender.c:2113,1
    - Dst: ReadReplicationSlot
      Src: /src/postgres/src/backend/replication/walsender.c:2114,1
    - Dst: EndReplicationCommand
      Src: /src/postgres/src/backend/replication/walsender.c:2115,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walsender.c:2120,1
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/replication/walsender.c:2121,1
    - Dst: SendBaseBackup
      Src: /src/postgres/src/backend/replication/walsender.c:2122,1
    - Dst: EndReplicationCommand
      Src: /src/postgres/src/backend/replication/walsender.c:2123,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walsender.c:2128,1
    - Dst: CreateReplicationSlot
      Src: /src/postgres/src/backend/replication/walsender.c:2129,1
    - Dst: EndReplicationCommand
      Src: /src/postgres/src/backend/replication/walsender.c:2130,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walsender.c:2135,1
    - Dst: DropReplicationSlot
      Src: /src/postgres/src/backend/replication/walsender.c:2136,1
    - Dst: EndReplicationCommand
      Src: /src/postgres/src/backend/replication/walsender.c:2137,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walsender.c:2142,1
    - Dst: AlterReplicationSlot
      Src: /src/postgres/src/backend/replication/walsender.c:2143,1
    - Dst: EndReplicationCommand
      Src: /src/postgres/src/backend/replication/walsender.c:2144,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walsender.c:2152,1
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/replication/walsender.c:2153,1
    - Dst: StartReplication
      Src: /src/postgres/src/backend/replication/walsender.c:2156,1
    - Dst: StartLogicalReplication
      Src: /src/postgres/src/backend/replication/walsender.c:2158,1
    - Dst: EndReplicationCommand
      Src: /src/postgres/src/backend/replication/walsender.c:2161,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:2163,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walsender.c:2169,1
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/replication/walsender.c:2170,1
    - Dst: SendTimeLineHistory
      Src: /src/postgres/src/backend/replication/walsender.c:2171,1
    - Dst: EndReplicationCommand
      Src: /src/postgres/src/backend/replication/walsender.c:2172,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/replication/walsender.c:2177,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walsender.c:2181,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/walsender.c:2184,1
    - Dst: GetPGVariable
      Src: /src/postgres/src/backend/replication/walsender.c:2185,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/walsender.c:2186,1
    - Dst: EndReplicationCommand
      Src: /src/postgres/src/backend/replication/walsender.c:2187,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walsender.c:2193,1
    - Dst: PreventInTransactionBlock
      Src: /src/postgres/src/backend/replication/walsender.c:2194,1
    - Dst: UploadManifest
      Src: /src/postgres/src/backend/replication/walsender.c:2195,1
    - Dst: EndReplicationCommand
      Src: /src/postgres/src/backend/replication/walsender.c:2196,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walsender.c:2200,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/walsender.c:2208,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/walsender.c:2209,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 112
    argCount: 1
    argNames:
    - cmd_string
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2219
      start: 1969
    functionDepth: 7
    functionLinenumber: 1969
    functionLinenumberEnd: 2219
    functionName: exec_replication_command
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - replication_scanner_finish
    - MemoryContextSwitchTo
    - PreventInTransactionBlock
    - CHECK_FOR_INTERRUPTS
    - MemoryContextReset
    - set_ps_display
    - CreateDestReceiver
    - SendBaseBackup
    - replication_scanner_is_replication_command
    - pgstat_report_activity
    - replication_yyparse
    - StartReplication
    - IdentifySystem
    - StartTransactionCommand
    - errmsg
    - GetPGVariable
    - ReadReplicationSlot
    - SnapBuildClearExportedSnapshot
    - elog
    - UploadManifest
    - WalSndSetState
    - DropReplicationSlot
    - Assert
    - SendTimeLineHistory
    - CommitTransactionCommand
    - errmsg_internal
    - ereport
    - CreateReplicationSlot
    - StartLogicalReplication
    - AlterReplicationSlot
    - EndReplicationCommand
    - AllocSetContextCreate
    - replication_scanner_init
    - initStringInfo
    - IsAbortedTransactionBlockState
    - errcode
    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:2233,1
    - Dst: pq_startmsgread
      Src: /src/postgres/src/backend/replication/walsender.c:2242,1
    - Dst: pq_getbyte_if_available
      Src: /src/postgres/src/backend/replication/walsender.c:2243,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:2247,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:2248,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:2249,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/walsender.c:2250,1
    - Dst: pq_endmsgread
      Src: /src/postgres/src/backend/replication/walsender.c:2255,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:2270,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:2271,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:2272,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/walsender.c:2279,1
    - Dst: pq_getmessage
      Src: /src/postgres/src/backend/replication/walsender.c:2280,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:2282,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:2283,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:2284,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/walsender.c:2285,1
    - Dst: ProcessStandbyMessage
      Src: /src/postgres/src/backend/replication/walsender.c:2295,1
    - Dst: pq_putmessage_noblock
      Src: /src/postgres/src/backend/replication/walsender.c:2306,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/walsender.c:2318,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:2321,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 54
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2333
      start: 2225
    functionDepth: 5
    functionLinenumber: 2225
    functionLinenumberEnd: 2333
    functionName: ProcessRepliesIfAny
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 2
    functionsReached:
    - errmsg
    - Assert
    - resetStringInfo
    - ProcessStandbyMessage
    - pq_endmsgread
    - ereport
    - pq_startmsgread
    - pq_getmessage
    - GetCurrentTimestamp
    - pq_putmessage_noblock
    - pq_getbyte_if_available
    - errcode
    - proc_exit
    linkageType: ''
    returnType: void
    signature: void ProcessRepliesIfAny(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/walsender.c:2346,1
    - Dst: ProcessStandbyReplyMessage
      Src: /src/postgres/src/backend/replication/walsender.c:2351,1
    - Dst: ProcessStandbyHSFeedbackMessage
      Src: /src/postgres/src/backend/replication/walsender.c:2355,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:2359,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/walsender.c:2360,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:2361,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/walsender.c:2362,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2364
      start: 2338
    functionDepth: 2
    functionLinenumber: 2338
    functionLinenumberEnd: 2364
    functionName: ProcessStandbyMessage
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - pq_getmsgbyte
    - errmsg
    - ProcessStandbyHSFeedbackMessage
    - ereport
    - ProcessStandbyReplyMessage
    - errcode
    - proc_exit
    linkageType: ''
    returnType: void
    signature: void ProcessStandbyMessage(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:2375,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:2376,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:2382,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/walsender.c:2386,1
    - Dst: ReplicationSlotsComputeRequiredLSN
      Src: /src/postgres/src/backend/replication/walsender.c:2387,1
    - Dst: PhysicalWakeupLogicalWalSnd
      Src: /src/postgres/src/backend/replication/walsender.c:2388,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - lsn
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2397
      start: 2369
    functionDepth: 3
    functionLinenumber: 2369
    functionLinenumberEnd: 2397
    functionName: PhysicalConfirmReceivedLocation
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - ReplicationSlotsComputeRequiredLSN
    - Assert
    - ReplicationSlotMarkDirty
    - PhysicalWakeupLogicalWalSnd
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void PhysicalConfirmReceivedLocation(XLogRecPtr lsn)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/walsender.c:2419,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/walsender.c:2420,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/walsender.c:2421,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/walsender.c:2422,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/walsender.c:2423,1
    - Dst: message_level_is_interesting
      Src: /src/postgres/src/backend/replication/walsender.c:2425,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/walsender.c:2430,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/walsender.c:2430,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walsender.c:2432,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:2433,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:2434,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:2435,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/walsender.c:2439,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walsender.c:2443,1
    - Dst: LagTrackerRead
      Src: /src/postgres/src/backend/replication/walsender.c:2444,1
    - Dst: LagTrackerRead
      Src: /src/postgres/src/backend/replication/walsender.c:2445,1
    - Dst: LagTrackerRead
      Src: /src/postgres/src/backend/replication/walsender.c:2446,1
    - Dst: WalSndKeepalive
      Src: /src/postgres/src/backend/replication/walsender.c:2468,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:2477,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:2488,1
    - Dst: SyncRepReleaseWaiters
      Src: /src/postgres/src/backend/replication/walsender.c:2492,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/walsender.c:2499,1
    - Dst: LogicalConfirmReceivedLocation
      Src: /src/postgres/src/backend/replication/walsender.c:2500,1
    - Dst: PhysicalConfirmReceivedLocation
      Src: /src/postgres/src/backend/replication/walsender.c:2502,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2504
      start: 2402
    functionDepth: 4
    functionLinenumber: 2402
    functionLinenumberEnd: 2504
    functionName: ProcessStandbyReplyMessage
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - pq_getmsgbyte
    - LSN_FORMAT_ARGS
    - pfree
    - PhysicalConfirmReceivedLocation
    - LagTrackerRead
    - pstrdup
    - SpinLockRelease
    - LogicalConfirmReceivedLocation
    - elog
    - SlotIsLogical
    - pq_getmsgint64
    - timestamptz_to_str
    - GetCurrentTimestamp
    - WalSndKeepalive
    - SyncRepReleaseWaiters
    - message_level_is_interesting
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void ProcessStandbyReplyMessage(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:2513,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/walsender.c:2521,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/walsender.c:2522,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/walsender.c:2523,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/walsender.c:2529,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/walsender.c:2530,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/walsender.c:2531,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:2537,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/walsender.c:2541,1
    - Dst: ReplicationSlotsComputeRequiredXmin
      Src: /src/postgres/src/backend/replication/walsender.c:2542,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - feedbackXmin
    - feedbackCatalogXmin
    argTypes:
    - TransactionId
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2544
      start: 2507
    functionDepth: 3
    functionLinenumber: 2507
    functionLinenumberEnd: 2544
    functionName: PhysicalReplicationSlotNewXmin
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - ReplicationSlotMarkDirty
    - SpinLockRelease
    - ReplicationSlotsComputeRequiredXmin
    - TransactionIdIsNormal
    - TransactionIdPrecedes
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void PhysicalReplicationSlotNewXmin(TransactionId feedbackXmin, TransactionId
      feedbackCatalogXmin)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ReadNextFullTransactionId
      Src: /src/postgres/src/backend/replication/walsender.c:2563,1
    - Dst: XidFromFullTransactionId
      Src: /src/postgres/src/backend/replication/walsender.c:2564,1
    - Dst: EpochFromFullTransactionId
      Src: /src/postgres/src/backend/replication/walsender.c:2565,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/replication/walsender.c:2578,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - xid
    - epoch
    argTypes:
    - TransactionId
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2582
      start: 2556
    functionDepth: 2
    functionLinenumber: 2556
    functionLinenumberEnd: 2582
    functionName: TransactionIdInRecentPast
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - XidFromFullTransactionId
    - EpochFromFullTransactionId
    - ReadNextFullTransactionId
    - TransactionIdPrecedesOrEquals
    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:2601,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/walsender.c:2602,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/walsender.c:2603,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/walsender.c:2604,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/walsender.c:2605,1
    - Dst: message_level_is_interesting
      Src: /src/postgres/src/backend/replication/walsender.c:2607,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/walsender.c:2612,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/walsender.c:2612,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walsender.c:2614,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/walsender.c:2621,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:2631,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:2633,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/walsender.c:2640,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/walsender.c:2641,1
    - Dst: PhysicalReplicationSlotNewXmin
      Src: /src/postgres/src/backend/replication/walsender.c:2645,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/walsender.c:2653,1
    - Dst: TransactionIdInRecentPast
      Src: /src/postgres/src/backend/replication/walsender.c:2654,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/walsender.c:2657,1
    - Dst: TransactionIdInRecentPast
      Src: /src/postgres/src/backend/replication/walsender.c:2658,1
    - Dst: PhysicalReplicationSlotNewXmin
      Src: /src/postgres/src/backend/replication/walsender.c:2693,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/walsender.c:2696,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/walsender.c:2697,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2702
      start: 2587
    functionDepth: 4
    functionLinenumber: 2587
    functionLinenumberEnd: 2702
    functionName: ProcessStandbyHSFeedbackMessage
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - pfree
    - pstrdup
    - SpinLockRelease
    - elog
    - TransactionIdIsNormal
    - pq_getmsgint64
    - timestamptz_to_str
    - PhysicalReplicationSlotNewXmin
    - message_level_is_interesting
    - TransactionIdInRecentPast
    - pq_getmsgint
    - TransactionIdPrecedes
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void ProcessStandbyHSFeedbackMessage(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TimestampTzPlusMilliseconds
      Src: /src/postgres/src/backend/replication/walsender.c:2724,1
    - Dst: TimestampTzPlusMilliseconds
      Src: /src/postgres/src/backend/replication/walsender.c:2733,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/replication/walsender.c:2737,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - now
    argTypes:
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2741
      start: 2711
    functionDepth: 1
    functionLinenumber: 2711
    functionLinenumberEnd: 2741
    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:2764,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:2774,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:2775,1
    - Dst: WalSndShutdown
      Src: /src/postgres/src/backend/replication/walsender.c:2777,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2779
      start: 2755
    functionDepth: 2
    functionLinenumber: 2755
    functionLinenumberEnd: 2779
    functionName: WalSndCheckTimeOut
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 2
    functionsReached:
    - errmsg
    - WalSndShutdown
    - TimestampTzPlusMilliseconds
    - ereport
    linkageType: ''
    returnType: void
    signature: void WalSndCheckTimeOut(void)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walsender.c:2791,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/walsender.c:2801,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/walsender.c:2803,1
    - Dst: ProcessConfigFile
      Src: /src/postgres/src/backend/replication/walsender.c:2809,1
    - Dst: SyncRepInitConfig
      Src: /src/postgres/src/backend/replication/walsender.c:2810,1
    - Dst: ProcessRepliesIfAny
      Src: /src/postgres/src/backend/replication/walsender.c:2814,1
    - Dst: pq_is_send_pending
      Src: /src/postgres/src/backend/replication/walsender.c:2822,1
    - Dst: pq_is_send_pending
      Src: /src/postgres/src/backend/replication/walsender.c:2831,1
    - Dst: send_data
      Src: /src/postgres/src/backend/replication/walsender.c:2832,1
    - Dst: pq_flush_if_writable
      Src: /src/postgres/src/backend/replication/walsender.c:2837,1
    - Dst: WalSndShutdown
      Src: /src/postgres/src/backend/replication/walsender.c:2838,1
    - Dst: pq_is_send_pending
      Src: /src/postgres/src/backend/replication/walsender.c:2841,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:2853,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/walsender.c:2854,1
    - Dst: WalSndSetState
      Src: /src/postgres/src/backend/replication/walsender.c:2856,1
    - Dst: WalSndDone
      Src: /src/postgres/src/backend/replication/walsender.c:2867,1
    - Dst: WalSndCheckTimeOut
      Src: /src/postgres/src/backend/replication/walsender.c:2871,1
    - Dst: WalSndKeepaliveIfNecessary
      Src: /src/postgres/src/backend/replication/walsender.c:2874,1
    - Dst: pq_is_send_pending
      Src: /src/postgres/src/backend/replication/walsender.c:2887,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walsender.c:2902,1
    - Dst: WalSndComputeSleeptime
      Src: /src/postgres/src/backend/replication/walsender.c:2903,1
    - Dst: pq_is_send_pending
      Src: /src/postgres/src/backend/replication/walsender.c:2905,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/replication/walsender.c:2909,1
    - Dst: pgstat_flush_io
      Src: /src/postgres/src/backend/replication/walsender.c:2912,1
    - Dst: pgstat_flush_backend
      Src: /src/postgres/src/backend/replication/walsender.c:2913,1
    - Dst: WalSndWait
      Src: /src/postgres/src/backend/replication/walsender.c:2918,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 45
    argCount: 1
    argNames:
    - send_data
    argTypes:
    - WalSndSendDataCallback
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2921
      start: 2782
    functionDepth: 6
    functionLinenumber: 2782
    functionLinenumberEnd: 2921
    functionName: WalSndLoop
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 2
    functionsReached:
    - CHECK_FOR_INTERRUPTS
    - WalSndDone
    - ProcessRepliesIfAny
    - WalSndComputeSleeptime
    - ResetLatch
    - WalSndWait
    - TimestampDifferenceExceeds
    - pgstat_flush_backend
    - pgstat_flush_io
    - WalSndShutdown
    - GetCurrentTimestamp
    - WalSndCheckTimeOut
    - WalSndSetState
    - ProcessConfigFile
    - send_data
    - WalSndKeepaliveIfNecessary
    - pq_is_send_pending
    - errmsg_internal
    - pq_flush_if_writable
    - ereport
    - SyncRepInitConfig
    linkageType: ''
    returnType: void
    signature: void WalSndLoop(WalSndSendDataCallback send_data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:2933,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:2934,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:2944,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:2948,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:2985,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:2993,1
    - Dst: on_shmem_exit
      Src: /src/postgres/src/backend/replication/walsender.c:2996,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2997
      start: 2924
    functionDepth: 1
    functionLinenumber: 2924
    functionLinenumberEnd: 2997
    functionName: InitWalSenderSlot
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - Assert
    - on_shmem_exit
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void InitWalSenderSlot(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:3005,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:3009,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:3012,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3013
      start: 3000
    functionDepth: 1
    functionLinenumber: 3000
    functionLinenumberEnd: 3013
    functionName: WalSndKill
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - Assert
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void WalSndKill(int code, Datum arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/walsender.c:3051,1
    - Dst: XLogFilePath
      Src: /src/postgres/src/backend/replication/walsender.c:3056,1
    - Dst: BasicOpenFile
      Src: /src/postgres/src/backend/replication/walsender.c:3057,1
    - Dst: XLogFileName
      Src: /src/postgres/src/backend/replication/walsender.c:3070,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:3072,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/walsender.c:3073,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:3074,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/walsender.c:3078,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/walsender.c:3079,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/walsender.c:3080,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - state
    - nextSegNo
    - tli_p
    argTypes:
    - XLogReaderState*
    - XLogSegNo
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3082
      start: 3016
    functionDepth: 2
    functionLinenumber: 3016
    functionLinenumberEnd: 3082
    functionName: WalSndSegmentOpen
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - XLogFilePath
    - errmsg
    - XLByteToSeg
    - BasicOpenFile
    - ereport
    - XLogFileName
    - errcode_for_file_access
    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:3107,1
    - Dst: GetStandbyFlushRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:3148,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/walsender.c:3150,1
    - Dst: GetWALInsertionTimeLine
      Src: /src/postgres/src/backend/replication/walsender.c:3153,1
    - Dst: readTimeLineHistory
      Src: /src/postgres/src/backend/replication/walsender.c:3176,1
    - Dst: tliSwitchPoint
      Src: /src/postgres/src/backend/replication/walsender.c:3177,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:3179,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/replication/walsender.c:3180,1
    - Dst: GetFlushRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:3199,1
    - Dst: LagTrackerWrite
      Src: /src/postgres/src/backend/replication/walsender.c:3226,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walsender.c:3226,1
    - Dst: wal_segment_close
      Src: /src/postgres/src/backend/replication/walsender.c:3246,1
    - Dst: pq_putmessage_noblock
      Src: /src/postgres/src/backend/replication/walsender.c:3249,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walsender.c:3254,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:3255,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:3256,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:3261,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:3300,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/walsender.c:3305,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/walsender.c:3306,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walsender.c:3308,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walsender.c:3309,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walsender.c:3310,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/backend/replication/walsender.c:3316,1
    - Dst: WALReadFromBuffers
      Src: /src/postgres/src/backend/replication/walsender.c:3320,1
    - Dst: WALRead
      Src: /src/postgres/src/backend/replication/walsender.c:3328,1
    - Dst: WALReadRaiseError
      Src: /src/postgres/src/backend/replication/walsender.c:3336,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/walsender.c:3339,1
    - Dst: CheckXLogRemoved
      Src: /src/postgres/src/backend/replication/walsender.c:3340,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:3353,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:3356,1
    - Dst: wal_segment_close
      Src: /src/postgres/src/backend/replication/walsender.c:3360,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/walsender.c:3372,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walsender.c:3373,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walsender.c:3373,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/walsender.c:3374,1
    - Dst: pq_putmessage_noblock
      Src: /src/postgres/src/backend/replication/walsender.c:3377,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:3385,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:3387,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/walsender.c:3395,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/walsender.c:3396,1
    - Dst: set_ps_display
      Src: /src/postgres/src/backend/replication/walsender.c:3397,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 102
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3399
      start: 3094
    functionDepth: 4
    functionLinenumber: 3094
    functionLinenumberEnd: 3399
    functionName: XLogSendPhysical
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - snprintf
    - SpinLockRelease
    - set_ps_display
    - GetWALInsertionTimeLine
    - GetStandbyFlushRecPtr
    - RecoveryInProgress
    - enlargeStringInfo
    - XLByteToSeg
    - pq_putmessage_noblock
    - memcpy
    - LagTrackerWrite
    - WALReadRaiseError
    - resetStringInfo
    - wal_segment_close
    - elog
    - GetCurrentTimestamp
    - tliSwitchPoint
    - WalSndSetState
    - pq_sendint64
    - SpinLockAcquire
    - Assert
    - list_free_deep
    - WALRead
    - readTimeLineHistory
    - CheckXLogRemoved
    - GetFlushRecPtr
    - WALReadFromBuffers
    - pq_sendbyte
    linkageType: ''
    returnType: void
    signature: void XLogSendPhysical(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: XLogReadRecord
      Src: /src/postgres/src/backend/replication/walsender.c:3426,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/walsender.c:3430,1
    - Dst: LogicalDecodingProcessRecord
      Src: /src/postgres/src/backend/replication/walsender.c:3440,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:3461,1
    - Dst: GetFlushRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:3463,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:3482,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:3484,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3486
      start: 3404
    functionDepth: 4
    functionLinenumber: 3404
    functionLinenumberEnd: 3486
    functionName: XLogSendLogical
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - XLogReadRecord
    - SpinLockRelease
    - LogicalDecodingProcessRecord
    - GetXLogReplayRecPtr
    - GetFlushRecPtr
    - elog
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void XLogSendLogical(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: send_data
      Src: /src/postgres/src/backend/replication/walsender.c:3503,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/walsender.c:3510,1
    - Dst: pq_is_send_pending
      Src: /src/postgres/src/backend/replication/walsender.c:3514,1
    - Dst: SetQueryCompletion
      Src: /src/postgres/src/backend/replication/walsender.c:3519,1
    - Dst: EndCommand
      Src: /src/postgres/src/backend/replication/walsender.c:3520,1
    - Dst: pq_flush
      Src: /src/postgres/src/backend/replication/walsender.c:3521,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/walsender.c:3523,1
    - Dst: WalSndKeepalive
      Src: /src/postgres/src/backend/replication/walsender.c:3526,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - send_data
    argTypes:
    - WalSndSendDataCallback
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3527
      start: 3497
    functionDepth: 2
    functionLinenumber: 3497
    functionLinenumberEnd: 3527
    functionName: WalSndDone
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - send_data
    - pq_flush
    - pq_is_send_pending
    - WalSndKeepalive
    - XLogRecPtrIsInvalid
    - EndCommand
    - SetQueryCompletion
    - 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:3549,1
    - Dst: IsSyncingReplicationSlots
      Src: /src/postgres/src/backend/replication/walsender.c:3549,1
    - Dst: GetWalRcvFlushRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:3557,1
    - Dst: GetXLogReplayRecPtr
      Src: /src/postgres/src/backend/replication/walsender.c:3558,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - tli
    argTypes:
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3568
      start: 3540
    functionDepth: 2
    functionLinenumber: 3540
    functionLinenumberEnd: 3568
    functionName: GetStandbyFlushRecPtr
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 3
    functionsReached:
    - GetWalRcvFlushRecPtr
    - GetXLogReplayRecPtr
    - Assert
    - IsSyncingReplicationSlots
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr GetStandbyFlushRecPtr(TimeLineID *tli)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:3582,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:3585,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:3589,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3591
      start: 3573
    functionDepth: 1
    functionLinenumber: 3573
    functionLinenumberEnd: 3591
    functionName: WalSndRqstFileReload
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void WalSndRqstFileReload(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:3599,1
    - Dst: kill
      Src: /src/postgres/src/backend/replication/walsender.c:3608,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3611
      start: 3596
    functionDepth: 1
    functionLinenumber: 3596
    functionLinenumberEnd: 3611
    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:3622,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3623
      start: 3618
    functionDepth: 1
    functionLinenumber: 3618
    functionLinenumberEnd: 3623
    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:3630,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/walsender.c:3631,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/walsender.c:3632,1
    - Dst: InitializeTimeouts
      Src: /src/postgres/src/backend/replication/walsender.c:3634,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/walsender.c:3635,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/walsender.c:3636,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/walsender.c:3637,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/walsender.c:3641,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3642
      start: 3626
    functionDepth: 1
    functionLinenumber: 3626
    functionLinenumberEnd: 3642
    functionName: WalSndSignals
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - pqsignal
    - InitializeTimeouts
    linkageType: ''
    returnType: void
    signature: void WalSndSignals(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/replication/walsender.c:3651,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/replication/walsender.c:3651,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3654
      start: 3645
    functionDepth: 1
    functionLinenumber: 3645
    functionLinenumberEnd: 3654
    functionName: WalSndShmemSize
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - add_size
    - mul_size
    linkageType: ''
    returnType: Size
    signature: Size WalSndShmemSize(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ShmemInitStruct
      Src: /src/postgres/src/backend/replication/walsender.c:3664,1
    - Dst: WalSndShmemSize
      Src: /src/postgres/src/backend/replication/walsender.c:3664,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/replication/walsender.c:3669,1
    - Dst: WalSndShmemSize
      Src: /src/postgres/src/backend/replication/walsender.c:3669,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/replication/walsender.c:3672,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/replication/walsender.c:3678,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/backend/replication/walsender.c:3681,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/backend/replication/walsender.c:3682,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/backend/replication/walsender.c:3683,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3685
      start: 3657
    functionDepth: 2
    functionLinenumber: 3657
    functionLinenumberEnd: 3685
    functionName: WalSndShmemInit
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - WalSndShmemSize
    - SpinLockInit
    - MemSet
    - ConditionVariableInit
    - ShmemInitStruct
    - dlist_init
    linkageType: ''
    returnType: void
    signature: void WalSndShmemInit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/walsender.c:3712,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/walsender.c:3715,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - physical
    - logical
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3716
      start: 3702
    functionDepth: 1
    functionLinenumber: 3702
    functionLinenumberEnd: 3716
    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:3728,1
    - Dst: ConditionVariablePrepareToSleep
      Src: /src/postgres/src/backend/replication/walsender.c:3759,1
    - Dst: ConditionVariablePrepareToSleep
      Src: /src/postgres/src/backend/replication/walsender.c:3761,1
    - Dst: ConditionVariablePrepareToSleep
      Src: /src/postgres/src/backend/replication/walsender.c:3763,1
    - Dst: WaitEventSetWait
      Src: /src/postgres/src/backend/replication/walsender.c:3765,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/replication/walsender.c:3768,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/walsender.c:3769,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/replication/walsender.c:3772,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - socket_events
    - timeout
    - wait_event
    argTypes:
    - uint32
    - long
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3773
      start: 3723
    functionDepth: 1
    functionLinenumber: 3723
    functionLinenumberEnd: 3773
    functionName: WalSndWait
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 3
    functionsReached:
    - ConditionVariablePrepareToSleep
    - ModifyWaitEvent
    - ConditionVariableCancelSleep
    - WaitEventSetWait
    - proc_exit
    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:3791,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:3793,1
    - Dst: SendProcSignal
      Src: /src/postgres/src/backend/replication/walsender.c:3798,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3800
      start: 3781
    functionDepth: 1
    functionLinenumber: 3781
    functionLinenumberEnd: 3800
    functionName: WalSndInitStopping
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - SpinLockRelease
    - SendProcSignal
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void WalSndInitStopping(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:3819,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:3823,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:3830,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:3833,1
    - Dst: pg_usleep
      Src: /src/postgres/src/backend/replication/walsender.c:3840,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3842
      start: 3807
    functionDepth: 1
    functionLinenumber: 3807
    functionLinenumberEnd: 3842
    functionName: WalSndWaitStopping
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 1
    functionsReached:
    - SpinLockRelease
    - pg_usleep
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void WalSndWaitStopping(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:3850,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:3855,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:3857,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - state
    argTypes:
    - WalSndState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3858
      start: 3845
    functionDepth: 1
    functionLinenumber: 3845
    functionLinenumberEnd: 3858
    functionName: WalSndSetState
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 7
    functionsReached:
    - Assert
    - SpinLockRelease
    - SpinLockAcquire
    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: 3881
      start: 3864
    functionDepth: 0
    functionLinenumber: 3864
    functionLinenumberEnd: 3881
    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
      Src: /src/postgres/src/backend/replication/walsender.c:3886,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - offset
    argTypes:
    - TimeOffset
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3893
      start: 3883
    functionDepth: 0
    functionLinenumber: 3883
    functionLinenumberEnd: 3893
    functionName: offset_to_interval
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - palloc
    linkageType: ''
    returnType: Interval
    signature: 'Interval *

      offset_to_interval(TimeOffset offset)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/replication/walsender.c:3908,1
    - Dst: SyncRepGetCandidateStandbys
      Src: /src/postgres/src/backend/replication/walsender.c:3914,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/walsender.c:3936,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:3939,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/walsender.c:3953,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/walsender.c:3971,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/replication/walsender.c:3973,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/replication/walsender.c:3973,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/replication/walsender.c:3980,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:3984,1
    - Dst: WalSndGetStateString
      Src: /src/postgres/src/backend/replication/walsender.c:3984,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/walsender.c:3986,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/walsender.c:3988,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/walsender.c:3990,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/walsender.c:3992,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/walsender.c:3994,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/walsender.c:3996,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/walsender.c:3998,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/walsender.c:4000,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/walsender.c:4007,1
    - Dst: IntervalPGetDatum
      Src: /src/postgres/src/backend/replication/walsender.c:4012,1
    - Dst: offset_to_interval
      Src: /src/postgres/src/backend/replication/walsender.c:4012,1
    - Dst: IntervalPGetDatum
      Src: /src/postgres/src/backend/replication/walsender.c:4017,1
    - Dst: offset_to_interval
      Src: /src/postgres/src/backend/replication/walsender.c:4017,1
    - Dst: IntervalPGetDatum
      Src: /src/postgres/src/backend/replication/walsender.c:4022,1
    - Dst: offset_to_interval
      Src: /src/postgres/src/backend/replication/walsender.c:4022,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/walsender.c:4024,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:4038,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:4041,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:4041,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/walsender.c:4043,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/replication/walsender.c:4048,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/replication/walsender.c:4051,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 68
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4056
      start: 3899
    functionDepth: 2
    functionLinenumber: 3899
    functionLinenumberEnd: 4056
    functionName: pg_stat_get_wal_senders
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 0
    functionsReached:
    - tuplestore_putvalues
    - WalSndGetStateString
    - SyncRepGetCandidateStandbys
    - Int32GetDatum
    - CStringGetTextDatum
    - IntervalPGetDatum
    - SpinLockRelease
    - has_privs_of_role
    - InitMaterializedSRF
    - MemSet
    - offset_to_interval
    - TimestampTzGetDatum
    - LSNGetDatum
    - XLogRecPtrIsInvalid
    - GetUserId
    - SpinLockAcquire
    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:4073,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/walsender.c:4076,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/walsender.c:4077,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walsender.c:4078,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/walsender.c:4078,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/walsender.c:4079,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/walsender.c:4079,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/walsender.c:4080,1
    - Dst: pq_putmessage_noblock
      Src: /src/postgres/src/backend/replication/walsender.c:4083,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - requestReply
    - writePtr
    argTypes:
    - bool
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4088
      start: 4070
    functionDepth: 3
    functionLinenumber: 4070
    functionLinenumberEnd: 4088
    functionName: WalSndKeepalive
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 4
    functionsReached:
    - resetStringInfo
    - elog
    - GetCurrentTimestamp
    - pq_putmessage_noblock
    - XLogRecPtrIsInvalid
    - pq_sendint64
    - pq_sendbyte
    linkageType: ''
    returnType: void
    signature: void WalSndKeepalive(bool requestReply, XLogRecPtr writePtr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TimestampTzPlusMilliseconds
      Src: /src/postgres/src/backend/replication/walsender.c:4113,1
    - Dst: WalSndKeepalive
      Src: /src/postgres/src/backend/replication/walsender.c:4117,1
    - Dst: pq_flush_if_writable
      Src: /src/postgres/src/backend/replication/walsender.c:4120,1
    - Dst: WalSndShutdown
      Src: /src/postgres/src/backend/replication/walsender.c:4121,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4123
      start: 4093
    functionDepth: 4
    functionLinenumber: 4093
    functionLinenumberEnd: 4123
    functionName: WalSndKeepaliveIfNecessary
    functionSourceFile: /src/postgres/src/backend/replication/walsender.c
    functionUses: 3
    functionsReached:
    - WalSndShutdown
    - TimestampTzPlusMilliseconds
    - WalSndKeepalive
    - pq_flush_if_writable
    linkageType: ''
    returnType: void
    signature: void WalSndKeepaliveIfNecessary(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - lsn
    - local_flush_time
    argTypes:
    - XLogRecPtr
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4181
      start: 4131
    functionDepth: 0
    functionLinenumber: 4131
    functionLinenumberEnd: 4181
    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: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:4260,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/walsender.c:4290,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 3
    argNames:
    - head
    - lsn
    - now
    argTypes:
    - int
    - XLogRecPtr
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4292
      start: 4196
    functionDepth: 1
    functionLinenumber: 4196
    functionLinenumberEnd: 4292
    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: 94
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 94
    functionName: SyncStandbysDefined
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SyncStandbysDefined()
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/syncrep.c:157,1
    - Dst: SyncRepRequested
      Src: /src/postgres/src/backend/replication/syncrep.c:178,1
    - Dst: Min
      Src: /src/postgres/src/backend/replication/syncrep.c:187,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/syncrep.c:189,1
    - Dst: dlist_node_is_detached
      Src: /src/postgres/src/backend/replication/syncrep.c:189,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/syncrep.c:190,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/syncrep.c:192,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/syncrep.c:193,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/syncrep.c:212,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/syncrep.c:224,1
    - Dst: SyncStandbysDefined
      Src: /src/postgres/src/backend/replication/syncrep.c:227,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/syncrep.c:242,1
    - Dst: SyncRepQueueInsert
      Src: /src/postgres/src/backend/replication/syncrep.c:252,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/syncrep.c:253,1
    - Dst: SyncRepQueueIsOrderedByLSN
      Src: /src/postgres/src/backend/replication/syncrep.c:253,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/syncrep.c:254,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/syncrep.c:261,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/syncrep.c:261,1
    - Dst: set_ps_display_suffix
      Src: /src/postgres/src/backend/replication/syncrep.c:262,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/syncrep.c:276,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/syncrep.c:302,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/syncrep.c:303,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/syncrep.c:304,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/syncrep.c:305,1
    - Dst: SyncRepCancelWait
      Src: /src/postgres/src/backend/replication/syncrep.c:307,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/syncrep.c:320,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/syncrep.c:321,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/syncrep.c:322,1
    - Dst: SyncRepCancelWait
      Src: /src/postgres/src/backend/replication/syncrep.c:323,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/replication/syncrep.c:331,1
    - Dst: SyncRepCancelWait
      Src: /src/postgres/src/backend/replication/syncrep.c:342,1
    - Dst: pg_read_barrier
      Src: /src/postgres/src/backend/replication/syncrep.c:355,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/syncrep.c:356,1
    - Dst: dlist_node_is_detached
      Src: /src/postgres/src/backend/replication/syncrep.c:356,1
    - Dst: set_ps_display_remove_suffix
      Src: /src/postgres/src/backend/replication/syncrep.c:362,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 64
    argCount: 2
    argNames:
    - lsn
    - commit
    argTypes:
    - XLogRecPtr
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 147
    functionDepth: 2
    functionLinenumber: 147
    functionLinenumberEnd: 363
    functionName: SyncRepWaitForLSN
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 4
    functionsReached:
    - LSN_FORMAT_ARGS
    - SyncRepRequested
    - dlist_node_is_detached
    - sprintf
    - LWLockRelease
    - errdetail
    - ResetLatch
    - Min
    - SyncRepQueueInsert
    - SyncStandbysDefined
    - SyncRepCancelWait
    - errmsg
    - pg_read_barrier
    - SyncRepQueueIsOrderedByLSN
    - WaitLatch
    - Assert
    - set_ps_display_remove_suffix
    - set_ps_display_suffix
    - ereport
    - LWLockAcquire
    - errcode
    linkageType: ''
    returnType: void
    signature: void SyncRepWaitForLSN(XLogRecPtr lsn, bool commit)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/syncrep.c:377,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/syncrep.c:382,1
    - Dst: dlist_insert_after
      Src: /src/postgres/src/backend/replication/syncrep.c:390,1
    - Dst: dlist_push_head
      Src: /src/postgres/src/backend/replication/syncrep.c:399,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - mode
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 371
    functionDepth: 2
    functionLinenumber: 371
    functionLinenumberEnd: 400
    functionName: SyncRepQueueInsert
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 1
    functionsReached:
    - dlist_push_head
    - Assert
    - dlist_insert_after
    - dlist_container
    linkageType: ''
    returnType: void
    signature: void SyncRepQueueInsert(int mode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/syncrep.c:382,1
    - Dst: dlist_insert_after
      Src: /src/postgres/src/backend/replication/syncrep.c:390,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 380
    functionDepth: 1
    functionLinenumber: 380
    functionLinenumberEnd: 393
    functionName: dlist_reverse_foreach
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 0
    functionsReached:
    - dlist_insert_after
    - dlist_container
    linkageType: ''
    returnType: void
    signature: void dlist_reverse_foreach(iter, queue)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/syncrep.c:408,1
    - Dst: dlist_node_is_detached
      Src: /src/postgres/src/backend/replication/syncrep.c:409,1
    - Dst: dlist_delete_thoroughly
      Src: /src/postgres/src/backend/replication/syncrep.c:410,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/syncrep.c:412,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 405
    functionDepth: 2
    functionLinenumber: 405
    functionLinenumberEnd: 413
    functionName: SyncRepCancelWait
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 1
    functionsReached:
    - LWLockRelease
    - LWLockAcquire
    - dlist_delete_thoroughly
    - dlist_node_is_detached
    linkageType: ''
    returnType: void
    signature: void SyncRepCancelWait(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dlist_node_is_detached
      Src: /src/postgres/src/backend/replication/syncrep.c:422,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/syncrep.c:424,1
    - Dst: dlist_node_is_detached
      Src: /src/postgres/src/backend/replication/syncrep.c:427,1
    - Dst: dlist_delete_thoroughly
      Src: /src/postgres/src/backend/replication/syncrep.c:428,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/syncrep.c:430,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 415
    functionDepth: 2
    functionLinenumber: 415
    functionLinenumberEnd: 432
    functionName: SyncRepCleanupAtProcExit
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 0
    functionsReached:
    - LWLockRelease
    - LWLockAcquire
    - dlist_delete_thoroughly
    - dlist_node_is_detached
    linkageType: ''
    returnType: void
    signature: void SyncRepCleanupAtProcExit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SyncRepGetStandbyPriority
      Src: /src/postgres/src/backend/replication/syncrep.c:453,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/syncrep.c:456,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/syncrep.c:458,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/syncrep.c:460,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/syncrep.c:461,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 444
    functionDepth: 1
    functionLinenumber: 444
    functionLinenumberEnd: 464
    functionName: SyncRepInitConfig
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 5
    functionsReached:
    - SyncRepGetStandbyPriority
    - errmsg_internal
    - ereport
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void SyncRepInitConfig(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/syncrep.c:496,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/syncrep.c:506,1
    - Dst: SyncRepGetSyncRecPtr
      Src: /src/postgres/src/backend/replication/syncrep.c:516,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/syncrep.c:527,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/syncrep.c:528,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/syncrep.c:531,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/syncrep.c:532,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/syncrep.c:542,1
    - Dst: SyncRepWakeQueue
      Src: /src/postgres/src/backend/replication/syncrep.c:554,1
    - Dst: SyncRepWakeQueue
      Src: /src/postgres/src/backend/replication/syncrep.c:559,1
    - Dst: SyncRepWakeQueue
      Src: /src/postgres/src/backend/replication/syncrep.c:564,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/syncrep.c:567,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/syncrep.c:569,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/syncrep.c:570,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/syncrep.c:571,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/syncrep.c:572,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 473
    functionDepth: 1
    functionLinenumber: 473
    functionLinenumberEnd: 573
    functionName: SyncRepReleaseWaiters
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 1
    functionsReached:
    - errmsg
    - LSN_FORMAT_ARGS
    - ereport
    - SyncRepGetSyncRecPtr
    - elog
    - SyncRepWakeQueue
    - XLogRecPtrIsInvalid
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void SyncRepReleaseWaiters(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SyncRepGetCandidateStandbys
      Src: /src/postgres/src/backend/replication/syncrep.c:604,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/syncrep.c:623,1
    - Dst: SyncRepGetOldestSyncRecPtr
      Src: /src/postgres/src/backend/replication/syncrep.c:642,1
    - Dst: SyncRepGetNthLatestSyncRecPtr
      Src: /src/postgres/src/backend/replication/syncrep.c:647,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/syncrep.c:652,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: 654
      start: 585
    functionDepth: 1
    functionLinenumber: 585
    functionLinenumberEnd: 654
    functionName: SyncRepGetSyncRecPtr
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 1
    functionsReached:
    - SyncRepGetCandidateStandbys
    - pfree
    - SyncRepGetNthLatestSyncRecPtr
    - 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: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/syncrep.c:679,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/syncrep.c:681,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/syncrep.c:683,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: 686
      start: 659
    functionDepth: 1
    functionLinenumber: 659
    functionLinenumberEnd: 686
    functionName: SyncRepGetOldestSyncRecPtr
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 1
    functionsReached:
    - XLogRecPtrIsInvalid
    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:706,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/syncrep.c:708,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/syncrep.c:709,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/syncrep.c:710,1
    - Dst: qsort
      Src: /src/postgres/src/backend/replication/syncrep.c:720,1
    - Dst: qsort
      Src: /src/postgres/src/backend/replication/syncrep.c:721,1
    - Dst: qsort
      Src: /src/postgres/src/backend/replication/syncrep.c:722,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/syncrep.c:729,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/syncrep.c:730,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/syncrep.c:731,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: 732
      start: 692
    functionDepth: 1
    functionLinenumber: 692
    functionLinenumberEnd: 732
    functionName: SyncRepGetNthLatestSyncRecPtr
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - qsort
    - palloc
    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:743,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 737
    functionDepth: 1
    functionLinenumber: 737
    functionLinenumberEnd: 744
    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
      Src: /src/postgres/src/backend/replication/syncrep.c:761,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/syncrep.c:779,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/syncrep.c:786,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/syncrep.c:802,1
    - Dst: qsort
      Src: /src/postgres/src/backend/replication/syncrep.c:820,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 1
    argNames:
    - standbys
    argTypes:
    - SyncRepStandbyData**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 827
      start: 753
    functionDepth: 1
    functionLinenumber: 753
    functionLinenumberEnd: 827
    functionName: SyncRepGetCandidateStandbys
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 2
    functionsReached:
    - qsort
    - palloc
    - SpinLockRelease
    - XLogRecPtrIsInvalid
    - 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: 848
      start: 832
    functionDepth: 0
    functionLinenumber: 832
    functionLinenumberEnd: 848
    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:873,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/replication/syncrep.c:879,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/syncrep.c:880,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/syncrep.c:885,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 859
    functionDepth: 2
    functionLinenumber: 859
    functionLinenumberEnd: 896
    functionName: SyncRepGetStandbyPriority
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 1
    functionsReached:
    - SyncStandbysDefined
    - strcmp
    - pg_strcasecmp
    - strlen
    linkageType: ''
    returnType: int
    signature: int SyncRepGetStandbyPriority(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/syncrep.c:913,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/syncrep.c:914,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/replication/syncrep.c:914,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/syncrep.c:915,1
    - Dst: SyncRepQueueIsOrderedByLSN
      Src: /src/postgres/src/backend/replication/syncrep.c:915,1
    - Dst: dlist_foreach_modify
      Src: /src/postgres/src/backend/replication/syncrep.c:917,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/syncrep.c:919,1
    - Dst: dlist_delete_thoroughly
      Src: /src/postgres/src/backend/replication/syncrep.c:930,1
    - Dst: pg_write_barrier
      Src: /src/postgres/src/backend/replication/syncrep.c:937,1
    - Dst: SetLatch
      Src: /src/postgres/src/backend/replication/syncrep.c:948,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - all
    - mode
    argTypes:
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 906
    functionDepth: 1
    functionLinenumber: 906
    functionLinenumberEnd: 954
    functionName: SyncRepWakeQueue
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 1
    functionsReached:
    - Assert
    - dlist_foreach_modify
    - LWLockHeldByMeInMode
    - dlist_delete_thoroughly
    - pg_write_barrier
    - SyncRepQueueIsOrderedByLSN
    - dlist_container
    - SetLatch
    linkageType: ''
    returnType: int
    signature: int SyncRepWakeQueue(bool all, int mode)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SyncStandbysDefined
      Src: /src/postgres/src/backend/replication/syncrep.c:966,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/syncrep.c:971,1
    - Dst: SyncRepWakeQueue
      Src: /src/postgres/src/backend/replication/syncrep.c:983,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/syncrep.c:996,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/syncrep.c:1000,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/syncrep.c:1008,1
    - Dst: SyncStandbysDefined
      Src: /src/postgres/src/backend/replication/syncrep.c:1008,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/syncrep.c:1018,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1020
      start: 963
    functionDepth: 2
    functionLinenumber: 963
    functionLinenumberEnd: 1020
    functionName: SyncRepUpdateSyncStandbysDefined
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 0
    functionsReached:
    - Assert
    - SyncRepWakeQueue
    - SyncStandbysDefined
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void SyncRepUpdateSyncStandbysDefined(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/syncrep.c:1029,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/replication/syncrep.c:1033,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/syncrep.c:1035,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - mode
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1023
    functionDepth: 1
    functionLinenumber: 1023
    functionLinenumberEnd: 1048
    functionName: SyncRepQueueIsOrderedByLSN
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 2
    functionsReached:
    - dlist_foreach
    - Assert
    - dlist_container
    linkageType: ''
    returnType: bool
    signature: bool SyncRepQueueIsOrderedByLSN(int mode)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: syncrep_scanner_init
      Src: /src/postgres/src/backend/replication/syncrep.c:1071,1
    - Dst: syncrep_yyparse
      Src: /src/postgres/src/backend/replication/syncrep.c:1072,1
    - Dst: syncrep_scanner_finish
      Src: /src/postgres/src/backend/replication/syncrep.c:1073,1
    - Dst: GUC_check_errcode
      Src: /src/postgres/src/backend/replication/syncrep.c:1077,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/replication/syncrep.c:1079,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/replication/syncrep.c:1081,1
    - Dst: GUC_check_errmsg
      Src: /src/postgres/src/backend/replication/syncrep.c:1088,1
    - Dst: guc_malloc
      Src: /src/postgres/src/backend/replication/syncrep.c:1095,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/syncrep.c:1098,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 1057
    functionDepth: 1
    functionLinenumber: 1057
    functionLinenumberEnd: 1114
    functionName: check_synchronous_standby_names
    functionSourceFile: /src/postgres/src/backend/replication/syncrep.c
    functionUses: 0
    functionsReached:
    - GUC_check_errdetail
    - memcpy
    - GUC_check_errcode
    - syncrep_scanner_finish
    - syncrep_scanner_init
    - guc_malloc
    - syncrep_yyparse
    - GUC_check_errmsg
    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: 1120
      start: 1116
    functionDepth: 0
    functionLinenumber: 1116
    functionLinenumberEnd: 1120
    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: 1140
      start: 1122
    functionDepth: 0
    functionLinenumber: 1122
    functionLinenumberEnd: 1140
    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:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 128
    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: 7
    BranchProfiles: []
    Callsites:
    - Dst: libpqrcv_check_conninfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:161,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:171,1
    - Dst: GetDatabaseEncodingName
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:182,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:212,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:212,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:214,1
    - Dst: libpqsrv_connect_params
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:216,1
    - Dst: PQstatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:220,1
    - Dst: PQconnectionUsedPassword
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:223,1
    - Dst: libpqsrv_disconnect
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:225,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:226,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:228,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:229,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:230,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:231,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:232,1
    - Dst: libpqsrv_exec
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:243,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:246,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:248,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:249,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:249,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:250,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:250,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:253,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:262,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:262,1
    - Dst: libpqsrv_disconnect
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:266,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:267,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 53
    argCount: 6
    argNames:
    - conninfo
    - replication
    - logical
    - must_use_password
    - appname
    - err
    argTypes:
    - char*
    - bool
    - bool
    - bool
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 269
    functionName: libpqrcv_connect
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - GetDatabaseEncodingName
    - libpqsrv_exec
    - lengthof
    - PQresultStatus
    - errhint
    - errdetail
    - psprintf
    - libpqsrv_connect_params
    - pfree
    - pchomp
    - libpqrcv_check_conninfo
    - PQstatus
    - PQclear
    - _
    - errmsg
    - PQerrorMessage
    - libpqsrv_disconnect
    - Assert
    - palloc0
    - ereport
    - PQconnectionUsedPassword
    - errcode
    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:286,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:290,1
    - Dst: PQfreemem
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:292,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:293,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:294,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:295,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:308,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:318,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:320,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:321,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:322,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:323,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:327,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 2
    argNames:
    - conninfo
    - must_use_password
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 279
    functionDepth: 3
    functionLinenumber: 279
    functionLinenumberEnd: 328
    functionName: libpqrcv_check_conninfo
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 1
    functionsReached:
    - errmsg
    - PQconninfoFree
    - PQconninfoParse
    - PQfreemem
    - ereport
    - pstrdup
    - strcmp
    - errdetail
    - errcode
    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:342,1
    - Dst: initPQExpBuffer
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:344,1
    - Dst: PQconninfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:345,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:348,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:349,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:350,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:351,1
    - Dst: strchr
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:359,1
    - Dst: strchr
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:365,1
    - Dst: appendPQExpBuffer
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:367,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:373,1
    - Dst: PQExpBufferDataBroken
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:375,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:375,1
    - Dst: termPQExpBuffer
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:376,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - conn
    argTypes:
    - WalReceiverConn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 334
    functionDepth: 4
    functionLinenumber: 334
    functionLinenumberEnd: 378
    functionName: libpqrcv_get_conninfo
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PQconninfoFree
    - Assert
    - PQExpBufferDataBroken
    - PQconninfo
    - termPQExpBuffer
    - ereport
    - appendPQExpBuffer
    - pstrdup
    - _
    - errcode
    - initPQExpBuffer
    - strchr
    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:392,1
    - Dst: PQhost
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:394,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:395,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:396,1
    - Dst: PQport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:398,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:399,1
    - Dst: atoi
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:400,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - conn
    - sender_host
    - sender_port
    argTypes:
    - WalReceiverConn*
    - char**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 383
    functionDepth: 1
    functionLinenumber: 383
    functionLinenumberEnd: 401
    functionName: libpqrcv_get_senderinfo
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - Assert
    - PQhost
    - atoi
    - pstrdup
    - PQport
    - strlen
    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:417,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:420,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:422,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:423,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:424,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:425,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:427,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:427,1
    - Dst: PQnfields
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:434,1
    - Dst: PQntuples
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:434,1
    - Dst: PQntuples
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:436,1
    - Dst: PQnfields
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:437,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:439,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:440,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:441,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:442,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:443,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:446,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:446,1
    - Dst: pg_strtoint32
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:447,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:447,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:448,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - conn
    - primary_tli
    argTypes:
    - WalReceiverConn*
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 407
    functionDepth: 5
    functionLinenumber: 407
    functionLinenumberEnd: 451
    functionName: libpqrcv_identify_system
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pg_strtoint32
    - libpqsrv_exec
    - pchomp
    - PQerrorMessage
    - PQntuples
    - PQresultStatus
    - PQnfields
    - ereport
    - pstrdup
    - PQgetvalue
    - PQclear
    - errdetail
    - errcode
    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:459,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - WalReceiverConn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 456
    functionDepth: 1
    functionLinenumber: 456
    functionLinenumberEnd: 460
    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: 4
    BranchProfiles: []
    Callsites:
    - Dst: PQconninfoParse
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:474,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:478,1
    - Dst: PQfreemem
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:480,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:481,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:482,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:483,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:492,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:496,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:498,1
    - Dst: PQconninfoFree
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:502,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - connInfo
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 467
    functionDepth: 3
    functionLinenumber: 467
    functionLinenumberEnd: 504
    functionName: libpqrcv_get_dbname_from_conninfo
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - PQconninfoFree
    - PQconninfoParse
    - PQfreemem
    - ereport
    - pstrdup
    - strcmp
    - errcode
    linkageType: ''
    returnType: char
    signature: 'char *

      libpqrcv_get_dbname_from_conninfo(const char *connInfo)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:523,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:524,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:526,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:529,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:531,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:535,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:537,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:537,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:549,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:551,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:555,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:559,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:560,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:563,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:564,1
    - Dst: stringlist_to_identifierstr
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:568,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:570,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:571,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:572,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:573,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:573,1
    - Dst: PQescapeLiteral
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:574,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:575,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:577,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:578,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:579,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:580,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:580,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:581,1
    - Dst: PQfreemem
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:582,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:583,1
    - Dst: PQserverVersion
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:586,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:587,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:589,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:592,1
    - Dst: libpqsrv_exec
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:596,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:599,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:601,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:603,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:606,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:608,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:609,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:610,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:611,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:612,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:612,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:614,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 46
    argCount: 2
    argNames:
    - conn
    - options
    argTypes:
    - WalReceiverConn*
    - WalRcvStreamOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 516
    functionDepth: 5
    functionLinenumber: 516
    functionLinenumberEnd: 616
    functionName: libpqrcv_startstreaming
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - libpqsrv_exec
    - PQresultStatus
    - PQfreemem
    - strlen
    - pfree
    - pchomp
    - stringlist_to_identifierstr
    - PQclear
    - errmsg
    - PQserverVersion
    - PQerrorMessage
    - appendStringInfoString
    - PQescapeLiteral
    - Assert
    - appendStringInfo
    - appendStringInfoChar
    - ereport
    - initStringInfo
    - errcode
    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:631,1
    - Dst: PQflush
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:632,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:633,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:634,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:635,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:636,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:636,1
    - Dst: libpqsrv_get_result
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:648,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:650,1
    - Dst: PQnfields
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:656,1
    - Dst: PQntuples
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:656,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:657,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:658,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:659,1
    - Dst: pg_strtoint32
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:660,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:660,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:661,1
    - Dst: libpqsrv_get_result
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:664,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:667,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:669,1
    - Dst: PQendcopy
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:672,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:673,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:674,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:675,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:676,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:676,1
    - Dst: libpqsrv_get_result
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:679,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:683,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:684,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:685,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:686,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:687,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:687,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:688,1
    - Dst: libpqsrv_get_result
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:691,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:694,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:695,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:696,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:697,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:697,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 2
    argNames:
    - conn
    - next_tli
    argTypes:
    - WalReceiverConn*
    - TimeLineID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 622
    functionDepth: 5
    functionLinenumber: 622
    functionLinenumberEnd: 698
    functionName: libpqrcv_endstreaming
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pchomp
    - PQerrorMessage
    - PQntuples
    - PQresultStatus
    - PQnfields
    - PQputCopyEnd
    - ereport
    - PQgetvalue
    - PQendcopy
    - pg_strtoint32
    - PQclear
    - PQflush
    - errcode
    - libpqsrv_get_result
    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:711,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:716,1
    - Dst: libpqsrv_exec
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:717,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:720,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:722,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:723,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:724,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:725,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:727,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:727,1
    - Dst: PQnfields
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:729,1
    - Dst: PQntuples
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:729,1
    - Dst: PQntuples
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:731,1
    - Dst: PQnfields
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:732,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:734,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:735,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:736,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:737,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:738,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:741,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:741,1
    - Dst: PQgetlength
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:743,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:744,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:745,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:745,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:746,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 5
    argNames:
    - conn
    - tli
    - filename
    - content
    - len
    argTypes:
    - WalReceiverConn*
    - TimeLineID
    - char**
    - char**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 703
    functionDepth: 5
    functionLinenumber: 703
    functionLinenumberEnd: 747
    functionName: libpqrcv_readtimelinehistoryfile
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - libpqsrv_exec
    - pchomp
    - PQerrorMessage
    - PQntuples
    - PQresultStatus
    - PQnfields
    - snprintf
    - ereport
    - pstrdup
    - PQgetvalue
    - PQclear
    - memcpy
    - palloc
    - PQgetlength
    - errdetail
    - errcode
    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:755,1
    - Dst: PQfreemem
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:756,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:757,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - WalReceiverConn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 752
    functionDepth: 2
    functionLinenumber: 752
    functionLinenumberEnd: 758
    functionName: libpqrcv_disconnect
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - PQfreemem
    - libpqsrv_disconnect
    - pfree
    linkageType: ''
    returnType: void
    signature: void libpqrcv_disconnect(WalReceiverConn *conn)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PQfreemem
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:782,1
    - Dst: PQgetCopyData
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:786,1
    - Dst: PQconsumeInput
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:790,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:791,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:792,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:793,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:794,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:794,1
    - Dst: PQgetCopyData
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:797,1
    - Dst: PQsocket
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:801,1
    - Dst: libpqsrv_get_result
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:809,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:811,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:813,1
    - Dst: libpqsrv_get_result
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:816,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:820,1
    - Dst: PQstatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:827,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:830,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:831,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:832,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:833,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:838,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:840,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:845,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:846,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:847,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:848,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:849,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:849,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:853,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:854,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:855,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:856,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:856,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 3
    argNames:
    - conn
    - buffer
    - wait_fd
    argTypes:
    - WalReceiverConn*
    - char**
    - pgsocket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 776
    functionDepth: 2
    functionLinenumber: 776
    functionLinenumberEnd: 861
    functionName: libpqrcv_receive
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pchomp
    - PQerrorMessage
    - PQresultStatus
    - PQfreemem
    - PQsocket
    - ereport
    - PQconsumeInput
    - PQstatus
    - PQclear
    - PQgetCopyData
    - errcode
    - libpqsrv_get_result
    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:871,1
    - Dst: PQflush
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:872,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:873,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:874,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:875,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:876,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:876,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 3
    argNames:
    - conn
    - buffer
    - nbytes
    argTypes:
    - WalReceiverConn*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 868
    functionDepth: 3
    functionLinenumber: 868
    functionLinenumberEnd: 877
    functionName: libpqrcv_send
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pchomp
    - PQerrorMessage
    - ereport
    - PQflush
    - PQputCopyData
    - errcode
    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:894,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:896,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:898,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:901,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:905,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:907,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:910,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:912,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:914,1
    - Dst: appendStringInfoString
      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: appendStringInfoChar
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:923,1
    - Dst: appendStringInfoString
      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:937,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:946,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:949,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:952,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:958,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:963,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:965,1
    - Dst: libpqsrv_exec
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:968,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:971,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:973,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:975,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:976,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:977,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:978,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:979,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:979,1
    - Dst: DatumGetLSN
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:983,1
    - Dst: DirectFunctionCall1Coll
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:983,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:984,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:984,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:986,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:987,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:987,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:991,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 67
    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: 994
      start: 884
    functionDepth: 5
    functionLinenumber: 884
    functionLinenumberEnd: 994
    functionName: libpqrcv_create_slot
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - DirectFunctionCall1Coll
    - libpqsrv_exec
    - PQresultStatus
    - PQgetvalue
    - pstrdup
    - pfree
    - pchomp
    - CStringGetDatum
    - PQclear
    - errmsg
    - PQserverVersion
    - PQerrorMessage
    - appendStringInfoString
    - DatumGetLSN
    - appendStringInfo
    - appendStringInfoChar
    - ereport
    - PQgetisnull
    - initStringInfo
    - errcode
    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:1006,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1007,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1008,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1011,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1015,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1018,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1021,1
    - Dst: libpqsrv_exec
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1023,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1025,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1027,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1028,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1029,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1030,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1031,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1031,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1033,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 4
    argNames:
    - conn
    - slotname
    - failover
    - two_phase
    argTypes:
    - WalReceiverConn*
    - char*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1034
      start: 999
    functionDepth: 3
    functionLinenumber: 999
    functionLinenumberEnd: 1034
    functionName: libpqrcv_alter_slot
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - libpqsrv_exec
    - pchomp
    - PQerrorMessage
    - appendStringInfo
    - PQresultStatus
    - quote_identifier
    - appendStringInfoString
    - ereport
    - PQclear
    - initStringInfo
    - errcode
    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:1042,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - WalReceiverConn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1043
      start: 1039
    functionDepth: 1
    functionLinenumber: 1039
    functionLinenumberEnd: 1043
    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:1054,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1062,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1063,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1064,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1065,1
    - Dst: tuplestore_begin_heap
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1068,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1071,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1073,1
    - Dst: PQfname
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1074,1
    - Dst: TupleDescGetAttInMetadata
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1075,1
    - Dst: PQntuples
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1078,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1082,1
    - Dst: PQntuples
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1087,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1091,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1094,1
    - Dst: PQgetisnull
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1101,1
    - Dst: PQgetvalue
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1104,1
    - Dst: BuildTupleFromCStrings
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1108,1
    - Dst: tuplestore_puttuple
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1109,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1112,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1113,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1116,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 4
    argNames:
    - pgres
    - walres
    - nRetTypes
    - retTypes
    argTypes:
    - PGresult*
    - WalRcvExecResult*
    - int
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1117
      start: 1048
    functionDepth: 5
    functionLinenumber: 1048
    functionLinenumberEnd: 1117
    functionName: libpqrcv_processTuples
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - CHECK_FOR_INTERRUPTS
    - MemoryContextReset
    - tuplestore_begin_heap
    - PQgetvalue
    - errdetail
    - MemoryContextDelete
    - PQnfields
    - CreateTemplateTupleDesc
    - errmsg
    - TupleDescGetAttInMetadata
    - PQntuples
    - TupleDescInitEntry
    - PQfname
    - BuildTupleFromCStrings
    - ereport
    - tuplestore_puttuple
    - AllocSetContextCreate
    - PQgetisnull
    - errcode
    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
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1129,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1133,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1134,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1135,1
    - Dst: libpqsrv_exec
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1137,1
    - Dst: PQresultStatus
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1141,1
    - Dst: libpqrcv_processTuples
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1147,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1169,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1175,1
    - Dst: pchomp
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1182,1
    - Dst: PQerrorMessage
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1182,1
    - Dst: PQresultErrorField
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1183,1
    - Dst: MAKE_SQLSTATE
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1185,1
    - Dst: PQclear
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1193,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 44
    argCount: 4
    argNames:
    - conn
    - query
    - nRetTypes
    - retTypes
    argTypes:
    - WalReceiverConn*
    - char*
    - int
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1196
      start: 1124
    functionDepth: 6
    functionLinenumber: 1124
    functionLinenumberEnd: 1196
    functionName: libpqrcv_exec
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 0
    functionsReached:
    - errmsg
    - libpqsrv_exec
    - pchomp
    - PQerrorMessage
    - libpqrcv_processTuples
    - MAKE_SQLSTATE
    - PQresultStatus
    - ereport
    - palloc0
    - PQresultErrorField
    - _
    - PQclear
    - errcode
    linkageType: ''
    returnType: WalRcvExecResult
    signature: "WalRcvExecResult *\nlibpqrcv_exec(WalReceiverConn *conn, const char
      *query,\n\t\t\t  const int nRetTypes, const Oid *retTypes)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1213,1
    - Dst: strVal
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1217,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1217,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1223,1
    - Dst: PQescapeIdentifier
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1225,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1225,1
    - Dst: free
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1228,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1231,1
    - Dst: PQfreemem
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1232,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - conn
    - strings
    argTypes:
    - PGconn*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1236
      start: 1206
    functionDepth: 5
    functionLinenumber: 1206
    functionLinenumberEnd: 1236
    functionName: stringlist_to_identifierstr
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 1
    functionsReached:
    - PQescapeIdentifier
    - appendStringInfoChar
    - PQfreemem
    - appendStringInfoString
    - strVal
    - free
    - initStringInfo
    - lfirst
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      stringlist_to_identifierstr(PGconn *conn, List *strings)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strVal
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1217,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1217,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1223,1
    - Dst: PQescapeIdentifier
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1225,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1225,1
    - Dst: free
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1228,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1231,1
    - Dst: PQfreemem
      Src: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:1232,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1233
      start: 1215
    functionDepth: 5
    functionLinenumber: 1215
    functionLinenumberEnd: 1233
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
    functionUses: 358
    functionsReached:
    - PQescapeIdentifier
    - appendStringInfoChar
    - PQfreemem
    - appendStringInfoString
    - strVal
    - free
    - lfirst
    - strlen
    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: 286
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 286
    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:307,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:309,1
    - Dst: IsA
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:309,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:312,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:318,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:319,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:320,1
    - Dst: strtoul
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:324,1
    - Dst: strVal
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:324,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:326,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:327,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:328,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:331,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:332,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:333,1
    - Dst: strVal
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:334,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:338,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:341,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:342,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:343,1
    - Dst: SplitIdentifierString
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:346,1
    - Dst: strVal
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:346,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:348,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:349,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:350,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:352,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: defGetBoolean
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:360,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:362,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:365,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:366,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:367,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:370,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:372,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:375,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:376,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:377,1
    - Dst: defGetStreamingMode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:380,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:382,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:385,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:386,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:387,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:390,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:392,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:397,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:398,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:399,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:402,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:403,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:405,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:408,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:409,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:410,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:413,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:418,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:419,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:420,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:422,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:423,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:424,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 66
    argCount: 2
    argNames:
    - options
    - data
    argTypes:
    - List*
    - PGOutputData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 288
    functionDepth: 2
    functionLinenumber: 288
    functionLinenumberEnd: 425
    functionName: parse_output_parameters
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - Assert
    - strtoul
    - defGetString
    - IsA
    - ereport
    - elog
    - defGetBoolean
    - strVal
    - pg_strcasecmp
    - defGetStreamingMode
    - strcmp
    - SplitIdentifierString
    - lfirst
    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:307,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:309,1
    - Dst: IsA
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:309,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:312,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:318,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:319,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:320,1
    - Dst: strtoul
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:324,1
    - Dst: strVal
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:324,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:326,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:327,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:328,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:331,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:332,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:333,1
    - Dst: strVal
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:334,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:338,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:341,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:342,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:343,1
    - Dst: SplitIdentifierString
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:346,1
    - Dst: strVal
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:346,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:348,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:349,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:350,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:352,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: defGetBoolean
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:360,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:362,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:365,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:366,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:367,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:370,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:372,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:375,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:376,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:377,1
    - Dst: defGetStreamingMode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:380,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:382,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:385,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:386,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:387,1
    - Dst: defGetBoolean
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:390,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:392,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:397,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:398,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:399,1
    - Dst: defGetString
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:402,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:403,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:405,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:408,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:409,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:410,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:413,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 57
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 305
    functionDepth: 2
    functionLinenumber: 305
    functionLinenumberEnd: 414
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 358
    functionsReached:
    - errmsg
    - errcode
    - Assert
    - strtoul
    - defGetString
    - IsA
    - ereport
    - elog
    - defGetBoolean
    - strVal
    - pg_strcasecmp
    - defGetStreamingMode
    - strcmp
    - SplitIdentifierString
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, options)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:434,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:438,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:442,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:446,1
    - Dst: parse_output_parameters
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:463,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:467,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:468,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:469,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:473,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:474,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:475,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:488,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:489,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:490,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:494,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:495,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:496,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:499,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:500,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:501,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:513,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:514,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:515,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:518,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:519,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:520,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:534,1
    - Dst: CacheRegisterRelSyncCallback
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:537,1
    - Dst: init_rel_sync_cache
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:543,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 39
    argCount: 3
    argNames:
    - ctx
    - opt
    - is_init
    argTypes:
    - LogicalDecodingContext*
    - OutputPluginOptions*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 430
    functionDepth: 3
    functionLinenumber: 430
    functionLinenumberEnd: 554
    functionName: pgoutput_startup
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - errmsg
    - CacheRegisterSyscacheCallback
    - CacheRegisterRelSyncCallback
    - ereport
    - palloc0
    - AllocSetContextCreate
    - parse_output_parameters
    - init_rel_sync_cache
    - errcode
    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:569,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - txn
    argTypes:
    - LogicalDecodingContext*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 566
    functionDepth: 1
    functionLinenumber: 566
    functionLinenumberEnd: 573
    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:586,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:587,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:589,1
    - Dst: logicalrep_write_begin
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:590,1
    - Dst: send_repl_origin
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:593,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:596,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - txn
    argTypes:
    - LogicalDecodingContext*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 580
    functionDepth: 1
    functionLinenumber: 580
    functionLinenumberEnd: 597
    functionName: pgoutput_send_begin
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - Assert
    - logicalrep_write_begin
    - OutputPluginPrepareWrite
    - send_repl_origin
    - OutputPluginWrite
    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:609,1
    - Dst: OutputPluginUpdateProgress
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:616,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:617,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:622,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:626,1
    - Dst: logicalrep_write_commit
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:627,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:628,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - txn
    - commit_lsn
    argTypes:
    - LogicalDecodingContext*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 602
    functionDepth: 1
    functionLinenumber: 602
    functionLinenumberEnd: 629
    functionName: pgoutput_commit_txn
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - OutputPluginPrepareWrite
    - elog
    - OutputPluginUpdateProgress
    - OutputPluginWrite
    - logicalrep_write_commit
    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:639,1
    - Dst: logicalrep_write_begin_prepare
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:640,1
    - Dst: send_repl_origin
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:642,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:645,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - txn
    argTypes:
    - LogicalDecodingContext*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 634
    functionDepth: 1
    functionLinenumber: 634
    functionLinenumberEnd: 646
    functionName: pgoutput_begin_prepare_txn
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - send_repl_origin
    - OutputPluginWrite
    - OutputPluginPrepareWrite
    - logicalrep_write_begin_prepare
    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:655,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:657,1
    - Dst: logicalrep_write_prepare
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:658,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:659,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - txn
    - prepare_lsn
    argTypes:
    - LogicalDecodingContext*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 651
    functionDepth: 1
    functionLinenumber: 651
    functionLinenumberEnd: 660
    functionName: pgoutput_prepare_txn
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - OutputPluginUpdateProgress
    - logicalrep_write_prepare
    - OutputPluginWrite
    - OutputPluginPrepareWrite
    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:669,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:671,1
    - Dst: logicalrep_write_commit_prepared
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:672,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:673,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - txn
    - commit_lsn
    argTypes:
    - LogicalDecodingContext*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 665
    functionDepth: 1
    functionLinenumber: 665
    functionLinenumberEnd: 674
    functionName: pgoutput_commit_prepared_txn
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - OutputPluginUpdateProgress
    - OutputPluginWrite
    - logicalrep_write_commit_prepared
    - OutputPluginPrepareWrite
    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:685,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:687,1
    - Dst: logicalrep_write_rollback_prepared
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:688,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:690,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: 691
      start: 679
    functionDepth: 1
    functionLinenumber: 679
    functionLinenumberEnd: 691
    functionName: pgoutput_rollback_prepared_txn
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - logicalrep_write_rollback_prepared
    - OutputPluginUpdateProgress
    - OutputPluginWrite
    - OutputPluginPrepareWrite
    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:718,1
    - Dst: rbtxn_get_toptxn
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:719,1
    - Dst: get_schema_sent_in_streamed_txn
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:736,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:749,1
    - Dst: RelationIdGetRelation
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:751,1
    - Dst: send_relation_and_attrs
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:753,1
    - Dst: RelationClose
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:754,1
    - Dst: send_relation_and_attrs
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:757,1
    - Dst: set_schema_sent_in_streamed_txn
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:760,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 4
    argNames:
    - ctx
    - change
    - relation
    - relentry
    argTypes:
    - LogicalDecodingContext*
    - ReorderBufferChange*
    - Relation
    - RelationSyncEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 697
    functionDepth: 1
    functionLinenumber: 697
    functionLinenumberEnd: 763
    functionName: maybe_send_schema
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - get_schema_sent_in_streamed_txn
    - send_relation_and_attrs
    - rbtxn_get_toptxn
    - RelationGetRelid
    - set_schema_sent_in_streamed_txn
    - RelationClose
    - rbtxn_is_subtxn
    - RelationIdGetRelation
    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:773,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:788,1
    - Dst: logicalrep_should_publish_column
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:790,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:797,1
    - Dst: logicalrep_write_typ
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:798,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:799,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:802,1
    - Dst: logicalrep_write_rel
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:803,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:805,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 4
    argNames:
    - relation
    - xid
    - ctx
    - relentry
    argTypes:
    - Relation
    - TransactionId
    - LogicalDecodingContext*
    - RelationSyncEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 768
    functionDepth: 2
    functionLinenumber: 768
    functionLinenumberEnd: 806
    functionName: send_relation_and_attrs
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 1
    functionsReached:
    - RelationGetDescr
    - TupleDescAttr
    - OutputPluginPrepareWrite
    - logicalrep_write_rel
    - logicalrep_should_publish_column
    - OutputPluginWrite
    - logicalrep_write_typ
    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:819,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:821,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:823,1
    - Dst: addRTEPermissionInfo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:827,1
    - Dst: ExecInitRangeTable
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:829,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:829,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:830,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:832,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 835
      start: 812
    functionDepth: 2
    functionLinenumber: 812
    functionLinenumberEnd: 835
    functionName: create_estate_for_relation
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - RelationGetRelid
    - ExecInitRangeTable
    - bms_make_singleton
    - list_make1
    - addRTEPermissionInfo
    - CreateExecutorState
    - makeNode
    - GetCurrentCommandId
    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:849,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:851,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:853,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:854,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:860,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - state
    - econtext
    argTypes:
    - ExprState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 843
    functionDepth: 2
    functionLinenumber: 843
    functionLinenumberEnd: 861
    functionName: pgoutput_row_filter_exec_expr
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - DatumGetBool
    - Assert
    - 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:875,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:877,1
    - Dst: MemoryContextCopyAndSetIdentifier
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:881,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:882,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - data
    - entry
    argTypes:
    - PGOutputData*
    - RelationSyncEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 866
    functionDepth: 1
    functionLinenumber: 866
    functionLinenumberEnd: 883
    functionName: pgoutput_ensure_entry_cxt
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - RelationGetRelationName
    - AllocSetContextCreate
    - MemoryContextCopyAndSetIdentifier
    - RelationIdGetRelation
    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:898,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:917,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:929,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:930,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:931,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:936,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:937,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:938,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:940,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:943,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:952,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:976,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:977,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:979,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:980,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:982,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:983,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:985,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:993,1
    - Dst: RelationIdGetRelation
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1000,1
    - Dst: pgoutput_ensure_entry_cxt
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1002,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1008,1
    - Dst: create_estate_for_relation
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1009,1
    - Dst: foreach
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1018,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1019,1
    - Dst: expand_generated_columns_in_expr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1019,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1019,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1019,1
    - Dst: make_orclause
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1022,1
    - Dst: ExecPrepareExpr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1023,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1025,1
    - Dst: RelationClose
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1027,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 47
    argCount: 3
    argNames:
    - data
    - publications
    - entry
    argTypes:
    - PGOutputData*
    - List*
    - RelationSyncEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1029
      start: 888
    functionDepth: 6
    functionLinenumber: 888
    functionLinenumberEnd: 1029
    functionName: pgoutput_row_filter_init
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - HeapTupleIsValid
    - SysCacheGetAttr
    - make_orclause
    - get_rel_namespace
    - ExecPrepareExpr
    - SearchSysCache2
    - ReleaseSysCache
    - foreach
    - pgoutput_ensure_entry_cxt
    - RelationClose
    - create_estate_for_relation
    - lappend
    - lfirst
    - ObjectIdGetDatum
    - RelationIdGetRelation
    - list_free_deep
    - stringToNode
    - TextDatumGetCString
    - expand_generated_columns_in_expr
    - SearchSysCacheExists2
    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:917,1
    - Dst: SearchSysCacheExists2
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:929,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:930,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:931,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:936,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:937,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:938,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:940,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:943,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:952,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:976,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:977,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:979,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:980,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:982,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:983,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:985,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 915
    functionDepth: 6
    functionLinenumber: 915
    functionLinenumberEnd: 986
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 359
    functionsReached:
    - lfirst
    - SearchSysCache2
    - ReleaseSysCache
    - HeapTupleIsValid
    - TextDatumGetCString
    - lappend
    - SysCacheGetAttr
    - ObjectIdGetDatum
    - SearchSysCacheExists2
    linkageType: ''
    returnType: void
    signature: void foreach(lc, publications)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RelationIdGetRelation
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1039,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1040,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1047,1
    - Dst: check_and_fetch_column_list
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1074,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1083,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1084,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1085,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1086,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1086,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1087,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 3
    argNames:
    - data
    - publications
    - entry
    argTypes:
    - PGOutputData*
    - List*
    - RelationSyncEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 1035
    functionDepth: 2
    functionLinenumber: 1035
    functionLinenumberEnd: 1089
    functionName: check_and_init_gencol
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - errmsg
    - RelationGetDescr
    - TupleDescAttr
    - get_namespace_name
    - ereport
    - RelationGetNamespace
    - check_and_fetch_column_list
    - RelationGetRelationName
    - errcode
    - RelationIdGetRelation
    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:1074,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1083,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1084,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1085,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1086,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1086,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1087,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1088
      start: 1067
    functionDepth: 2
    functionLinenumber: 1067
    functionLinenumberEnd: 1088
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 2
    functionsReached:
    - errmsg
    - get_namespace_name
    - ereport
    - RelationGetNamespace
    - check_and_fetch_column_list
    - RelationGetRelationName
    - errcode
    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:1100,1
    - Dst: pgoutput_ensure_entry_cxt
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1104,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1121,1
    - Dst: check_and_fetch_column_list
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1125,1
    - Dst: list_length
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1142,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1144,1
    - Dst: pub_form_cols_map
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1146,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1148,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1159,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1160,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1161,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1162,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1163,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1163,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1164,1
    - Dst: RelationClose
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1174,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - data
    - publications
    - entry
    argTypes:
    - PGOutputData*
    - List*
    - RelationSyncEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1175
      start: 1094
    functionDepth: 4
    functionLinenumber: 1094
    functionLinenumberEnd: 1175
    functionName: pgoutput_column_list_init
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - MemoryContextSwitchTo
    - pgoutput_ensure_entry_cxt
    - pub_form_cols_map
    - get_namespace_name
    - ereport
    - list_length
    - RelationClose
    - bms_equal
    - RelationGetNamespace
    - check_and_fetch_column_list
    - RelationGetRelationName
    - lfirst
    - RelationIdGetRelation
    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:1121,1
    - Dst: check_and_fetch_column_list
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1125,1
    - Dst: list_length
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1142,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1144,1
    - Dst: pub_form_cols_map
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1146,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1148,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1159,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1160,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1161,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1162,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1163,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1163,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1164,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1165
      start: 1119
    functionDepth: 4
    functionLinenumber: 1119
    functionLinenumberEnd: 1165
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 359
    functionsReached:
    - errmsg
    - errcode
    - MemoryContextSwitchTo
    - pub_form_cols_map
    - get_namespace_name
    - ereport
    - list_length
    - bms_equal
    - RelationGetNamespace
    - check_and_fetch_column_list
    - RelationGetRelationName
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, publications)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1189,1
    - Dst: CreateTupleDescCopyConstr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1195,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1195,1
    - Dst: CreateTupleDescCopyConstr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1196,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1196,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1198,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1199,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1201,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1207,1
    - Dst: RelationIdGetRelation
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1209,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1210,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1211,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1214,1
    - Dst: build_attrmap_by_name_if_req
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1216,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1218,1
    - Dst: RelationClose
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - data
    - relation
    - entry
    argTypes:
    - PGOutputData*
    - Relation
    - RelationSyncEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1221
      start: 1181
    functionDepth: 4
    functionLinenumber: 1181
    functionLinenumberEnd: 1221
    functionName: init_tuple_slot
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - RelationGetRelid
    - RelationGetDescr
    - CreateTupleDescCopyConstr
    - RelationClose
    - MakeSingleTupleTableSlot
    - build_attrmap_by_name_if_req
    - RelationIdGetRelation
    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:1298,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1302,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1311,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1312,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1312,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1313,1
    - Dst: ResetPerTupleExprContext
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1315,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1317,1
    - Dst: pgoutput_row_filter_exec_expr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1337,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1346,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1348,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1349,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1352,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1360,1
    - Dst: VARATT_IS_EXTERNAL_ONDISK
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1375,1
    - Dst: VARATT_IS_EXTERNAL_ONDISK
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1376,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1380,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1381,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1383,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1385,1
    - Dst: pgoutput_row_filter_exec_expr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1395,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1399,1
    - Dst: pgoutput_row_filter_exec_expr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1405,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: 1447
      start: 1273
    functionDepth: 3
    functionLinenumber: 1273
    functionLinenumberEnd: 1447
    functionName: pgoutput_row_filter
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - Assert
    - slot_getallattrs
    - RelationGetDescr
    - get_namespace_name
    - pgoutput_row_filter_exec_expr
    - GetPerTupleExprContext
    - VARATT_IS_EXTERNAL_ONDISK
    - elog
    - MakeSingleTupleTableSlot
    - ExecStoreVirtualTuple
    - RelationGetNamespace
    - ResetPerTupleExprContext
    - TupleDescCompactAttr
    - memcpy
    - RelationGetRelationName
    - ExecClearTuple
    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:1469,1
    - Dst: get_rel_sync_entry
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1481,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1505,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1510,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1514,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1517,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1519,1
    - Dst: RelationIdGetRelation
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1520,1
    - Dst: ExecStoreHeapTuple
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1527,1
    - Dst: MakeTupleTableSlot
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1532,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1532,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1535,1
    - Dst: ExecStoreHeapTuple
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1542,1
    - Dst: MakeTupleTableSlot
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1547,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1547,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1550,1
    - Dst: pgoutput_row_filter
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1560,1
    - Dst: pgoutput_send_begin
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1571,1
    - Dst: maybe_send_schema
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1577,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1579,1
    - Dst: logicalrep_write_insert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1585,1
    - Dst: logicalrep_write_update
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1590,1
    - Dst: logicalrep_write_delete
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1595,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1600,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1603,1
    - Dst: RelationIsValid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1606,1
    - Dst: RelationClose
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1608,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1616,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1619,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1622,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1623,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 81
    argCount: 4
    argNames:
    - ctx
    - txn
    - relation
    - change
    argTypes:
    - LogicalDecodingContext*
    - ReorderBufferTXN*
    - Relation
    - ReorderBufferChange*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1624
      start: 1454
    functionDepth: 4
    functionLinenumber: 1454
    functionLinenumberEnd: 1624
    functionName: pgoutput_change
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - MemoryContextReset
    - get_rel_sync_entry
    - RelationGetRelid
    - maybe_send_schema
    - logicalrep_write_delete
    - OutputPluginWrite
    - ExecStoreHeapTuple
    - ExecDropSingleTupleTableSlot
    - MakeTupleTableSlot
    - is_publishable_relation
    - pgoutput_send_begin
    - OutputPluginPrepareWrite
    - RelationClose
    - elog
    - RelationIdGetRelation
    - execute_attr_map_slot
    - Assert
    - RelationIsValid
    - logicalrep_write_update
    - RelationGetDescr
    - pgoutput_row_filter
    - logicalrep_write_insert
    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:1643,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1645,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1651,1
    - Dst: is_publishable_relation
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1653,1
    - Dst: get_rel_sync_entry
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1656,1
    - Dst: pgoutput_send_begin
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1673,1
    - Dst: maybe_send_schema
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1675,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1680,1
    - Dst: logicalrep_write_truncate
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1681,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1687,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1690,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1691,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: 1692
      start: 1626
    functionDepth: 3
    functionLinenumber: 1626
    functionLinenumberEnd: 1692
    functionName: pgoutput_truncate
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - RelationGetRelid
    - MemoryContextReset
    - is_publishable_relation
    - palloc0
    - pgoutput_send_begin
    - maybe_send_schema
    - OutputPluginPrepareWrite
    - logicalrep_write_truncate
    - OutputPluginWrite
    - get_rel_sync_entry
    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:1721,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1724,1
    - Dst: logicalrep_write_message
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1725,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1732,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: 1733
      start: 1694
    functionDepth: 2
    functionLinenumber: 1694
    functionLinenumberEnd: 1733
    functionName: pgoutput_message
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - OutputPluginWrite
    - OutputPluginPrepareWrite
    - pgoutput_send_begin
    - logicalrep_write_message
    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*
    - RepOriginId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1749
      start: 1739
    functionDepth: 0
    functionLinenumber: 1739
    functionLinenumberEnd: 1749
    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
      \  RepOriginId origin_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_destroy
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1763,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - LogicalDecodingContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1766
      start: 1758
    functionDepth: 1
    functionLinenumber: 1758
    functionLinenumberEnd: 1766
    functionName: pgoutput_shutdown
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - hash_destroy
    linkageType: ''
    returnType: void
    signature: void pgoutput_shutdown(LogicalDecodingContext *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1784,1
    - Dst: GetPublicationByName
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1785,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1788,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1790,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1791,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1792,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1793,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1794,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - pubnames
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1798
      start: 1776
    functionDepth: 6
    functionLinenumber: 1776
    functionLinenumberEnd: 1798
    functionName: LoadPublications
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - lfirst
    - errmsg
    - GetPublicationByName
    - ereport
    - errhint
    - lappend
    - errdetail
    - errcode
    linkageType: ''
    returnType: List
    signature: 'List *

      LoadPublications(List *pubnames)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1784,1
    - Dst: GetPublicationByName
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1785,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1788,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1790,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1791,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1792,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1793,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1794,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1795
      start: 1782
    functionDepth: 6
    functionLinenumber: 1782
    functionLinenumberEnd: 1795
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 359
    functionsReached:
    - lfirst
    - errmsg
    - GetPublicationByName
    - ereport
    - errhint
    - lappend
    - errdetail
    - errcode
    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
    - int
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1809
      start: 1805
    functionDepth: 0
    functionLinenumber: 1805
    functionLinenumberEnd: 1809
    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, int cacheid, uint32 hashvalue)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1822,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1828,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1831,1
    - Dst: logicalrep_write_stream_start
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1832,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1832,1
    - Dst: send_repl_origin
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1834,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1837,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - txn
    argTypes:
    - struct LogicalDecodingContext*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1841
      start: 1814
    functionDepth: 1
    functionLinenumber: 1814
    functionLinenumberEnd: 1841
    functionName: pgoutput_stream_start
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - Assert
    - OutputPluginPrepareWrite
    - send_repl_origin
    - rbtxn_is_streamed
    - logicalrep_write_stream_start
    - OutputPluginWrite
    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:1853,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1855,1
    - Dst: logicalrep_write_stream_stop
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1856,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1857,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - txn
    argTypes:
    - struct LogicalDecodingContext*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1861
      start: 1846
    functionDepth: 1
    functionLinenumber: 1846
    functionLinenumberEnd: 1861
    functionName: pgoutput_stream_stop
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - Assert
    - logicalrep_write_stream_stop
    - OutputPluginPrepareWrite
    - 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:1880,1
    - Dst: rbtxn_get_toptxn
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1883,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1885,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1885,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1887,1
    - Dst: logicalrep_write_stream_abort
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1888,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1891,1
    - Dst: cleanup_rel_sync_cache
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1893,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - txn
    - abort_lsn
    argTypes:
    - struct LogicalDecodingContext*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1894
      start: 1867
    functionDepth: 1
    functionLinenumber: 1867
    functionLinenumberEnd: 1894
    functionName: pgoutput_stream_abort
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - Assert
    - rbtxn_get_toptxn
    - logicalrep_write_stream_abort
    - OutputPluginPrepareWrite
    - cleanup_rel_sync_cache
    - rbtxn_is_streamed
    - OutputPluginWrite
    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:1911,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1912,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1912,1
    - Dst: OutputPluginUpdateProgress
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1914,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1916,1
    - Dst: logicalrep_write_stream_commit
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1917,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1918,1
    - Dst: cleanup_rel_sync_cache
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1920,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - txn
    - commit_lsn
    argTypes:
    - struct LogicalDecodingContext*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1921
      start: 1900
    functionDepth: 1
    functionLinenumber: 1900
    functionLinenumberEnd: 1921
    functionName: pgoutput_stream_commit
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - Assert
    - logicalrep_write_stream_commit
    - OutputPluginPrepareWrite
    - cleanup_rel_sync_cache
    - rbtxn_is_streamed
    - OutputPluginUpdateProgress
    - OutputPluginWrite
    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:1933,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1933,1
    - Dst: OutputPluginUpdateProgress
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1935,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1936,1
    - Dst: logicalrep_write_stream_prepare
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1937,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1938,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - txn
    - prepare_lsn
    argTypes:
    - LogicalDecodingContext*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1939
      start: 1928
    functionDepth: 1
    functionLinenumber: 1928
    functionLinenumberEnd: 1939
    functionName: pgoutput_stream_prepare_txn
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - Assert
    - OutputPluginPrepareWrite
    - logicalrep_write_stream_prepare
    - rbtxn_is_streamed
    - OutputPluginUpdateProgress
    - 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:1963,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1967,1
    - Dst: CacheRegisterRelcacheCallback
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1974,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:1987,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - cachectx
    argTypes:
    - MemoryContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1992
      start: 1948
    functionDepth: 1
    functionLinenumber: 1948
    functionLinenumberEnd: 1992
    functionName: init_rel_sync_cache
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 1
    functionsReached:
    - CacheRegisterRelcacheCallback
    - hash_create
    - CacheRegisterSyscacheCallback
    - Assert
    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:2000,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - entry
    - xid
    argTypes:
    - RelationSyncEntry*
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2001
      start: 1997
    functionDepth: 3
    functionLinenumber: 1997
    functionLinenumberEnd: 2001
    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:2012,1
    - Dst: lappend_xid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2014,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2016,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - entry
    - xid
    argTypes:
    - RelationSyncEntry*
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2017
      start: 2007
    functionDepth: 6
    functionLinenumber: 2007
    functionLinenumberEnd: 2017
    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: 19
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2034,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2036,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2039,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2042,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2055,1
    - Dst: get_rel_namespace
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2065,1
    - Dst: GetRelationPublications
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2066,1
    - Dst: GetSchemaPublications
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2073,1
    - Dst: get_rel_relispartition
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2077,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2078,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2084,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2086,1
    - Dst: LoadPublications
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2087,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2088,1
    - Dst: list_free
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2100,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2102,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2116,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2118,1
    - Dst: FreeTupleDesc
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2124,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2130,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2132,1
    - Dst: FreeTupleDesc
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2138,1
    - Dst: free_attrmap
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2145,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2152,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2156,1
    - Dst: foreach
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2164,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2166,1
    - Dst: get_partition_ancestors
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2186,1
    - Dst: llast_oid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2188,1
    - Dst: list_length
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2189,1
    - Dst: get_partition_ancestors
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2207,1
    - Dst: GetTopMostAncestorInPublication
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2209,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2224,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2225,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2272,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2276,1
    - Dst: init_tuple_slot
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2290,1
    - Dst: pgoutput_row_filter_init
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2293,1
    - Dst: check_and_init_gencol
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2296,1
    - Dst: pgoutput_column_list_init
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2299,1
    - Dst: list_free
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2302,1
    - Dst: list_free
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2303,1
    - Dst: list_free
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2304,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 108
    argCount: 2
    argNames:
    - data
    - relation
    argTypes:
    - PGOutputData*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2310
      start: 2028
    functionDepth: 7
    functionLinenumber: 2028
    functionLinenumberEnd: 2310
    functionName: get_rel_sync_entry
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 2
    functionsReached:
    - llast_oid
    - MemoryContextSwitchTo
    - MemoryContextReset
    - pgoutput_row_filter_init
    - list_length
    - get_rel_namespace
    - MemoryContextDelete
    - RelationGetRelid
    - pgoutput_column_list_init
    - GetTopMostAncestorInPublication
    - foreach
    - FreeTupleDesc
    - get_rel_relispartition
    - LoadPublications
    - get_rel_relkind
    - bms_free
    - GetRelationPublications
    - ExecDropSingleTupleTableSlot
    - free_attrmap
    - GetSchemaPublications
    - lappend
    - list_member_oid
    - check_and_init_gencol
    - lfirst
    - list_free
    - Assert
    - memset
    - hash_search
    - init_tuple_slot
    - get_partition_ancestors
    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:2329,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2331,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2332,1
    - Dst: foreach_xid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2340,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2348,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - xid
    - is_commit
    argTypes:
    - TransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2353
      start: 2323
    functionDepth: 1
    functionLinenumber: 2323
    functionLinenumberEnd: 2353
    functionName: cleanup_rel_sync_cache
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 2
    functionsReached:
    - Assert
    - foreach_xid
    - hash_seq_search
    - hash_seq_init
    - foreach_delete_current
    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:2379,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2385,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2395,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2396,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - arg
    - relid
    argTypes:
    - Datum
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2401
      start: 2358
    functionDepth: 1
    functionLinenumber: 2358
    functionLinenumberEnd: 2401
    functionName: rel_sync_cache_relation_cb
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - hash_seq_init
    - hash_seq_search
    - OidIsValid
    - 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:2426,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2427,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - arg
    - cacheid
    - hashvalue
    argTypes:
    - Datum
    - int
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2431
      start: 2408
    functionDepth: 1
    functionLinenumber: 2408
    functionLinenumberEnd: 2431
    functionName: rel_sync_cache_publication_cb
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 0
    functionsReached:
    - hash_seq_init
    - hash_seq_search
    linkageType: ''
    returnType: void
    signature: void rel_sync_cache_publication_cb(Datum arg, int cacheid, uint32 hashvalue)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: replorigin_by_oid
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2452,1
    - Dst: OutputPluginWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2455,1
    - Dst: OutputPluginPrepareWrite
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2456,1
    - Dst: logicalrep_write_origin
      Src: /src/postgres/src/backend/replication/pgoutput/pgoutput.c:2458,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - ctx
    - origin_id
    - origin_lsn
    - send_origin
    argTypes:
    - LogicalDecodingContext*
    - RepOriginId
    - XLogRecPtr
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2461
      start: 2434
    functionDepth: 1
    functionLinenumber: 2434
    functionLinenumberEnd: 2461
    functionName: send_repl_origin
    functionSourceFile: /src/postgres/src/backend/replication/pgoutput/pgoutput.c
    functionUses: 3
    functionsReached:
    - logicalrep_write_origin
    - OutputPluginWrite
    - OutputPluginPrepareWrite
    - replorigin_by_oid
    linkageType: ''
    returnType: void
    signature: "void send_repl_origin(LogicalDecodingContext *ctx, RepOriginId 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:76,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/replication/logical/relation.c:79,1
    - Dst: hash_seq_term
      Src: /src/postgres/src/backend/replication/logical/relation.c:84,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/replication/logical/relation.c:94,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/replication/logical/relation.c:96,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - arg
    - reloid
    argTypes:
    - Datum
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 99
    functionName: logicalrep_relmap_invalidate_cb
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - hash_seq_init
    - hash_seq_search
    - 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:111,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/replication/logical/relation.c:120,1
    - Dst: CacheRegisterRelcacheCallback
      Src: /src/postgres/src/backend/replication/logical/relation.c:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 126
    functionName: logicalrep_relmap_init
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - CacheRegisterRelcacheCallback
    - hash_create
    - 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:138,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/relation.c:139,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/relation.c:146,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/relation.c:148,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/relation.c:149,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/replication/logical/relation.c:151,1
    - Dst: free_attrmap
      Src: /src/postgres/src/backend/replication/logical/relation.c:154,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - entry
    argTypes:
    - LogicalRepRelMapEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 155
    functionName: logicalrep_relmap_free_entry
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - free_attrmap
    - pfree
    - bms_free
    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:172,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/relation.c:177,1
    - Dst: logicalrep_relmap_free_entry
      Src: /src/postgres/src/backend/replication/logical/relation.c:181,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/relation.c:183,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/relation.c:186,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/relation.c:188,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/relation.c:189,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/relation.c:191,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/relation.c:192,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/relation.c:195,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/replication/logical/relation.c:199,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/relation.c:200,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - remoterel
    argTypes:
    - LogicalRepRelation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 163
    functionDepth: 3
    functionLinenumber: 163
    functionLinenumberEnd: 201
    functionName: logicalrep_relmap_update
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - logicalrep_relmap_init
    - bms_copy
    - memset
    - logicalrep_relmap_free_entry
    - pstrdup
    - hash_search
    - palloc
    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:215,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - remoterel
    - attname
    argTypes:
    - LogicalRepRelation*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 220
    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:233,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/replication/logical/relation.c:233,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/logical/relation.c:235,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/replication/logical/relation.c:237,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/relation.c:241,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/relation.c:241,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/relation.c:243,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/relation.c:243,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - remoterel
    - atts
    argTypes:
    - LogicalRepRelation*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 226
    functionDepth: 3
    functionLinenumber: 226
    functionLinenumberEnd: 247
    functionName: logicalrep_get_attrs_str
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - Assert
    - appendStringInfo
    - bms_is_empty
    - appendStringInfoString
    - _
    - initStringInfo
    - bms_next_member
    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:259,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/relation.c:260,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/relation.c:261,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/replication/logical/relation.c:262,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/replication/logical/relation.c:264,1
    - Dst: logicalrep_get_attrs_str
      Src: /src/postgres/src/backend/replication/logical/relation.c:267,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/replication/logical/relation.c:270,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/relation.c:271,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/relation.c:272,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/replication/logical/relation.c:273,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/replication/logical/relation.c:275,1
    - Dst: logicalrep_get_attrs_str
      Src: /src/postgres/src/backend/replication/logical/relation.c:278,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - remoterel
    - missingatts
    - generatedatts
    argTypes:
    - LogicalRepRelation*
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 254
    functionDepth: 4
    functionLinenumber: 254
    functionLinenumberEnd: 280
    functionName: logicalrep_report_missing_or_gen_attrs
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - bms_is_empty
    - ereport
    - logicalrep_get_attrs_str
    - errmsg_plural
    - bms_num_members
    - errcode
    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:304,1
    - Dst: RelationGetIndexAttrBitmap
      Src: /src/postgres/src/backend/replication/logical/relation.c:309,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/replication/logical/relation.c:321,1
    - Dst: AttrNumberIsForUserDefinedAttr
      Src: /src/postgres/src/backend/replication/logical/relation.c:325,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/relation.c:326,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/relation.c:327,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/relation.c:328,1
    - Dst: AttrNumberGetAttrOffset
      Src: /src/postgres/src/backend/replication/logical/relation.c:332,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/replication/logical/relation.c:335,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 1
    argNames:
    - entry
    argTypes:
    - LogicalRepRelMapEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 295
    functionDepth: 3
    functionLinenumber: 295
    functionLinenumberEnd: 341
    functionName: logicalrep_rel_mark_updatable
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - AttrNumberIsForUserDefinedAttr
    - errmsg
    - RelationGetIndexAttrBitmap
    - AttrNumberGetAttrOffset
    - ereport
    - bms_is_member
    - bms_next_member
    - errcode
    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:356,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/relation.c:359,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/relation.c:363,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/relation.c:370,1
    - Dst: try_table_open
      Src: /src/postgres/src/backend/replication/logical/relation.c:380,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/relation.c:389,1
    - Dst: free_attrmap
      Src: /src/postgres/src/backend/replication/logical/relation.c:410,1
    - Dst: RangeVarGetRelid
      Src: /src/postgres/src/backend/replication/logical/relation.c:415,1
    - Dst: makeRangeVar
      Src: /src/postgres/src/backend/replication/logical/relation.c:415,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/relation.c:418,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/relation.c:419,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/relation.c:420,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/relation.c:421,1
    - Dst: table_open
      Src: /src/postgres/src/backend/replication/logical/relation.c:423,1
    - Dst: CheckSubscriptionRelkind
      Src: /src/postgres/src/backend/replication/logical/relation.c:427,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/relation.c:435,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/relation.c:436,1
    - Dst: make_attrmap
      Src: /src/postgres/src/backend/replication/logical/relation.c:437,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/relation.c:438,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/replication/logical/relation.c:441,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/replication/logical/relation.c:445,1
    - Dst: logicalrep_rel_att_by_name
      Src: /src/postgres/src/backend/replication/logical/relation.c:453,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/relation.c:454,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/replication/logical/relation.c:461,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/replication/logical/relation.c:463,1
    - Dst: logicalrep_report_missing_or_gen_attrs
      Src: /src/postgres/src/backend/replication/logical/relation.c:467,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/replication/logical/relation.c:471,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/replication/logical/relation.c:472,1
    - Dst: logicalrep_rel_mark_updatable
      Src: /src/postgres/src/backend/replication/logical/relation.c:478,1
    - Dst: FindLogicalRepLocalIndex
      Src: /src/postgres/src/backend/replication/logical/relation.c:486,1
    - Dst: GetSubscriptionRelState
      Src: /src/postgres/src/backend/replication/logical/relation.c:493,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 58
    argCount: 2
    argNames:
    - remoteid
    - lockmode
    argTypes:
    - LogicalRepRelId
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 348
    functionDepth: 5
    functionLinenumber: 348
    functionLinenumberEnd: 498
    functionName: logicalrep_rel_open
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - CheckSubscriptionRelkind
    - makeRangeVar
    - make_attrmap
    - NameStr
    - logicalrep_relmap_init
    - logicalrep_rel_mark_updatable
    - table_open
    - RangeVarGetRelid
    - bms_add_range
    - logicalrep_report_missing_or_gen_attrs
    - FindLogicalRepLocalIndex
    - try_table_open
    - bms_free
    - errmsg
    - bms_del_member
    - logicalrep_rel_att_by_name
    - TupleDescAttr
    - GetSubscriptionRelState
    - free_attrmap
    - elog
    - OidIsValid
    - table_close
    - bms_add_member
    - RelationGetDescr
    - ereport
    - hash_search
    - errcode
    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:506,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - rel
    - lockmode
    argTypes:
    - LogicalRepRelMapEntry*
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 503
    functionDepth: 3
    functionLinenumber: 503
    functionLinenumberEnd: 508
    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:535,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/replication/logical/relation.c:538,1
    - Dst: hash_seq_term
      Src: /src/postgres/src/backend/replication/logical/relation.c:543,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/replication/logical/relation.c:553,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/replication/logical/relation.c:555,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - arg
    - reloid
    argTypes:
    - Datum
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 522
    functionDepth: 1
    functionLinenumber: 522
    functionLinenumberEnd: 558
    functionName: logicalrep_partmap_invalidate_cb
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - hash_seq_init
    - hash_seq_search
    - 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:580,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/replication/logical/relation.c:581,1
    - Dst: logicalrep_relmap_free_entry
      Src: /src/postgres/src/backend/replication/logical/relation.c:588,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/relation.c:590,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - remoterel
    argTypes:
    - LogicalRepRelation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 570
    functionDepth: 2
    functionLinenumber: 570
    functionLinenumberEnd: 592
    functionName: logicalrep_partmap_reset_relmap
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - memset
    - hash_seq_init
    - logicalrep_relmap_free_entry
    - hash_seq_search
    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:604,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/replication/logical/relation.c:613,1
    - Dst: CacheRegisterRelcacheCallback
      Src: /src/postgres/src/backend/replication/logical/relation.c:617,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 597
    functionDepth: 1
    functionLinenumber: 597
    functionLinenumberEnd: 619
    functionName: logicalrep_partmap_init
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - CacheRegisterRelcacheCallback
    - hash_create
    - 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:639,1
    - Dst: logicalrep_partmap_init
      Src: /src/postgres/src/backend/replication/logical/relation.c:645,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/relation.c:648,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/relation.c:670,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/relation.c:674,1
    - Dst: free_attrmap
      Src: /src/postgres/src/backend/replication/logical/relation.c:681,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/relation.c:691,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/relation.c:692,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/relation.c:694,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/relation.c:695,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/relation.c:698,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/replication/logical/relation.c:702,1
    - Dst: make_attrmap
      Src: /src/postgres/src/backend/replication/logical/relation.c:723,1
    - Dst: make_attrmap
      Src: /src/postgres/src/backend/replication/logical/relation.c:738,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/relation.c:739,1
    - Dst: logicalrep_rel_mark_updatable
      Src: /src/postgres/src/backend/replication/logical/relation.c:744,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/relation.c:747,1
    - Dst: FindLogicalRepLocalIndex
      Src: /src/postgres/src/backend/replication/logical/relation.c:758,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 50
    argCount: 3
    argNames:
    - root
    - partrel
    - map
    argTypes:
    - LogicalRepRelMapEntry*
    - Relation
    - AttrMap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 632
    functionDepth: 4
    functionLinenumber: 632
    functionLinenumberEnd: 764
    functionName: logicalrep_partition_open
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - RelationGetRelid
    - bms_copy
    - memset
    - memcpy
    - logicalrep_rel_mark_updatable
    - pstrdup
    - hash_search
    - free_attrmap
    - FindLogicalRepLocalIndex
    - logicalrep_partmap_init
    - palloc
    - make_attrmap
    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:778,1
    - Dst: index_open
      Src: /src/postgres/src/backend/replication/logical/relation.c:785,1
    - Dst: IsIndexUsableForReplicaIdentityFull
      Src: /src/postgres/src/backend/replication/logical/relation.c:786,1
    - Dst: index_close
      Src: /src/postgres/src/backend/replication/logical/relation.c:787,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - localrel
    - attrmap
    argTypes:
    - Relation
    - AttrMap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 775
    functionDepth: 2
    functionLinenumber: 775
    functionLinenumberEnd: 795
    functionName: FindUsableIndexForReplicaIdentityFull
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - index_close
    - IsIndexUsableForReplicaIdentityFull
    - index_open
    - RelationGetIndexList
    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:785,1
    - Dst: IsIndexUsableForReplicaIdentityFull
      Src: /src/postgres/src/backend/replication/logical/relation.c:786,1
    - Dst: index_close
      Src: /src/postgres/src/backend/replication/logical/relation.c:787,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 780
    functionDepth: 2
    functionLinenumber: 780
    functionLinenumberEnd: 792
    functionName: foreach_oid
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - index_close
    - IsIndexUsableForReplicaIdentityFull
    - index_open
    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:827,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/relation.c:830,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/relation.c:832,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/replication/logical/relation.c:832,1
    - Dst: get_opclass_family
      Src: /src/postgres/src/backend/replication/logical/relation.c:841,1
    - Dst: IndexAmTranslateCompareType
      Src: /src/postgres/src/backend/replication/logical/relation.c:842,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/replication/logical/relation.c:856,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/replication/logical/relation.c:856,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/relation.c:857,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/replication/logical/relation.c:863,1
    - Dst: AttrNumberGetAttrOffset
      Src: /src/postgres/src/backend/replication/logical/relation.c:871,1
    - Dst: AttrNumberGetAttrOffset
      Src: /src/postgres/src/backend/replication/logical/relation.c:872,1
    - Dst: GetIndexAmRoutineByAmId
      Src: /src/postgres/src/backend/replication/logical/relation.c:879,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 2
    argNames:
    - idxrel
    - attrmap
    argTypes:
    - Relation
    - AttrMap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 820
    functionDepth: 4
    functionLinenumber: 820
    functionLinenumberEnd: 883
    functionName: IsIndexUsableForReplicaIdentityFull
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 2
    functionsReached:
    - Assert
    - GetIndexAmRoutineByAmId
    - IndexAmTranslateCompareType
    - AttrNumberGetAttrOffset
    - TupleDescAttr
    - SysCacheGetAttrNotNull
    - lookup_type_cache
    - get_opclass_family
    - OidIsValid
    - AttributeNumberIsValid
    - heap_attisnull
    - 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:895,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/relation.c:897,1
    - Dst: RelationGetPrimaryKeyIndex
      Src: /src/postgres/src/backend/replication/logical/relation.c:898,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 890
    functionDepth: 1
    functionLinenumber: 890
    functionLinenumberEnd: 901
    functionName: GetRelationIdentityOrPK
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 0
    functionsReached:
    - RelationGetPrimaryKeyIndex
    - OidIsValid
    - RelationGetReplicaIndex
    linkageType: ''
    returnType: Oid
    signature: Oid GetRelationIdentityOrPK(Relation rel)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetRelationIdentityOrPK
      Src: /src/postgres/src/backend/replication/logical/relation.c:923,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/relation.c:924,1
    - Dst: FindUsableIndexForReplicaIdentityFull
      Src: /src/postgres/src/backend/replication/logical/relation.c:944,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - localrel
    - remoterel
    - attrMap
    argTypes:
    - Relation
    - LogicalRepRelation*
    - AttrMap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 948
      start: 907
    functionDepth: 3
    functionLinenumber: 907
    functionLinenumberEnd: 948
    functionName: FindLogicalRepLocalIndex
    functionSourceFile: /src/postgres/src/backend/replication/logical/relation.c
    functionUses: 2
    functionsReached:
    - FindUsableIndexForReplicaIdentityFull
    - GetRelationIdentityOrPK
    - OidIsValid
    linkageType: ''
    returnType: Oid
    signature: "Oid FindLogicalRepLocalIndex(Relation localrel, LogicalRepRelation
      *remoterel,\n\t\t\t\t\t\t AttrMap *attrMap)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/launcher.c:126,1
    - Dst: table_open
      Src: /src/postgres/src/backend/replication/logical/launcher.c:128,1
    - Dst: table_beginscan_catalog
      Src: /src/postgres/src/backend/replication/logical/launcher.c:129,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:131,1
    - Dst: heap_getnext
      Src: /src/postgres/src/backend/replication/logical/launcher.c:131,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/replication/logical/launcher.c:133,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/launcher.c:143,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/replication/logical/launcher.c:145,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/launcher.c:150,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/launcher.c:150,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/launcher.c:153,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/launcher.c:154,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/replication/logical/launcher.c:157,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/launcher.c:158,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/launcher.c:160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 111
    functionDepth: 7
    functionLinenumber: 111
    functionLinenumberEnd: 163
    functionName: get_subscription_list
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - NameStr
    - CommitTransactionCommand
    - table_open
    - table_beginscan_catalog
    - HeapTupleIsValid
    - GETSTRUCT
    - palloc0
    - heap_getnext
    - pstrdup
    - lappend
    - table_close
    - StartTransactionCommand
    - 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:187,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:189,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:195,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:199,1
    - Dst: GetBackgroundWorkerPid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:202,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:206,1
    - Dst: logicalrep_worker_cleanup
      Src: /src/postgres/src/backend/replication/logical/launcher.c:209,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:210,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/replication/logical/launcher.c:218,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/logical/launcher.c:224,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/launcher.c:225,1
    - Dst: SetLatch
      Src: /src/postgres/src/backend/replication/logical/launcher.c:235,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 3
    argNames:
    - worker
    - generation
    - handle
    argTypes:
    - LogicalRepWorker*
    - uint16
    - BackgroundWorkerHandle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 238
    functionName: WaitForReplicationWorkerAttach
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - ResetLatch
    - CHECK_FOR_INTERRUPTS
    - WaitLatch
    - GetBackgroundWorkerPid
    - logicalrep_worker_cleanup
    - LWLockRelease
    - LWLockAcquire
    - 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:252,1
    - Dst: LWLockHeldByMe
      Src: /src/postgres/src/backend/replication/logical/launcher.c:252,1
    - Dst: isParallelApplyWorker
      Src: /src/postgres/src/backend/replication/logical/launcher.c:260,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 11
    argCount: 3
    argNames:
    - subid
    - relid
    - only_running
    argTypes:
    - Oid
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 272
    functionName: logicalrep_worker_find
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - LWLockHeldByMe
    - Assert
    - isParallelApplyWorker
    linkageType: ''
    returnType: LogicalRepWorker
    signature: 'LogicalRepWorker *

      logicalrep_worker_find(Oid subid, Oid relid, bool only_running)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:285,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:287,1
    - Dst: LWLockHeldByMe
      Src: /src/postgres/src/backend/replication/logical/launcher.c:287,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/launcher.c:295,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:299,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 3
    argNames:
    - subid
    - only_running
    - acquire_lock
    argTypes:
    - Oid
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 278
    functionDepth: 6
    functionLinenumber: 278
    functionLinenumberEnd: 302
    functionName: logicalrep_workers_find
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - Assert
    - LWLockHeldByMe
    - lappend
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: List
    signature: 'List *

      logicalrep_workers_find(Oid subid, bool only_running, bool acquire_lock)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:332,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:333,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:333,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:334,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/launcher.c:336,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/launcher.c:337,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/launcher.c:342,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/launcher.c:343,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/launcher.c:344,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:350,1
    - Dst: logicalrep_sync_worker_count
      Src: /src/postgres/src/backend/replication/logical/launcher.c:366,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/launcher.c:368,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/replication/logical/launcher.c:388,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/launcher.c:391,1
    - Dst: logicalrep_worker_cleanup
      Src: /src/postgres/src/backend/replication/logical/launcher.c:395,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:411,1
    - Dst: logicalrep_pa_worker_count
      Src: /src/postgres/src/backend/replication/logical/launcher.c:415,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:424,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:434,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/launcher.c:435,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/launcher.c:436,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/launcher.c:437,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/logical/launcher.c:438,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/replication/logical/launcher.c:458,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/replication/logical/launcher.c:459,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/replication/logical/launcher.c:461,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:466,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/launcher.c:469,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:473,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:478,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:479,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:482,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:486,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:487,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:490,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/launcher.c:492,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:496,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:497,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:501,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/launcher.c:506,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:511,1
    - Dst: RegisterDynamicBackgroundWorker
      Src: /src/postgres/src/backend/replication/logical/launcher.c:513,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:516,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:517,1
    - Dst: logicalrep_worker_cleanup
      Src: /src/postgres/src/backend/replication/logical/launcher.c:518,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:519,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/launcher.c:521,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/launcher.c:522,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/launcher.c:523,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/logical/launcher.c:524,1
    - Dst: WaitForReplicationWorkerAttach
      Src: /src/postgres/src/backend/replication/logical/launcher.c:529,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 102
    argCount: 7
    argNames:
    - wtype
    - dbid
    - subid
    - subname
    - userid
    - relid
    - subworker_dsm
    argTypes:
    - LogicalRepWorkerType
    - Oid
    - Oid
    - char*
    - Oid
    - Oid
    - dsm_handle
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 309
    functionDepth: 2
    functionLinenumber: 309
    functionLinenumberEnd: 530
    functionName: logicalrep_worker_launch
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - WaitForReplicationWorkerAttach
    - logicalrep_pa_worker_count
    - snprintf
    - errhint
    - LWLockRelease
    - logicalrep_sync_worker_count
    - Int32GetDatum
    - TimestampDifferenceExceeds
    - memcpy
    - errmsg
    - TIMESTAMP_NOBEGIN
    - elog
    - OidIsValid
    - GetCurrentTimestamp
    - logicalrep_worker_cleanup
    - Assert
    - RegisterDynamicBackgroundWorker
    - memset
    - errmsg_internal
    - ereport
    - LWLockAcquire
    - errcode
    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)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:541,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/replication/logical/launcher.c:541,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:557,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/replication/logical/launcher.c:560,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/logical/launcher.c:566,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/launcher.c:567,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:571,1
    - Dst: kill
      Src: /src/postgres/src/backend/replication/logical/launcher.c:587,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:598,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/replication/logical/launcher.c:601,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/logical/launcher.c:607,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/launcher.c:608,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:611,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 2
    argNames:
    - worker
    - signo
    argTypes:
    - LogicalRepWorker*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 536
    functionDepth: 1
    functionLinenumber: 536
    functionLinenumberEnd: 613
    functionName: logicalrep_worker_stop_internal
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - ResetLatch
    - Assert
    - CHECK_FOR_INTERRUPTS
    - kill
    - LWLockHeldByMeInMode
    - WaitLatch
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void logicalrep_worker_stop_internal(LogicalRepWorker *worker, int
      signo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:623,1
    - Dst: logicalrep_worker_find
      Src: /src/postgres/src/backend/replication/logical/launcher.c:625,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:629,1
    - Dst: isParallelApplyWorker
      Src: /src/postgres/src/backend/replication/logical/launcher.c:629,1
    - Dst: logicalrep_worker_stop_internal
      Src: /src/postgres/src/backend/replication/logical/launcher.c:630,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:633,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - subid
    - relid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 618
    functionDepth: 2
    functionLinenumber: 618
    functionLinenumberEnd: 634
    functionName: logicalrep_worker_stop
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - Assert
    - isParallelApplyWorker
    - logicalrep_worker_stop_internal
    - LWLockRelease
    - LWLockAcquire
    - logicalrep_worker_find
    linkageType: ''
    returnType: void
    signature: void logicalrep_worker_stop(Oid subid, Oid relid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:649,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:652,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:654,1
    - Dst: shm_mq_detach
      Src: /src/postgres/src/backend/replication/logical/launcher.c:664,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:668,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:671,1
    - Dst: isParallelApplyWorker
      Src: /src/postgres/src/backend/replication/logical/launcher.c:671,1
    - Dst: logicalrep_worker_stop_internal
      Src: /src/postgres/src/backend/replication/logical/launcher.c:677,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:679,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - winfo
    argTypes:
    - ParallelApplyWorkerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 642
    functionDepth: 2
    functionLinenumber: 642
    functionLinenumberEnd: 680
    functionName: logicalrep_pa_worker_stop
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - Assert
    - isParallelApplyWorker
    - SpinLockRelease
    - logicalrep_worker_stop_internal
    - shm_mq_detach
    - LWLockRelease
    - LWLockAcquire
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void logicalrep_pa_worker_stop(ParallelApplyWorkerInfo *winfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:690,1
    - Dst: logicalrep_worker_find
      Src: /src/postgres/src/backend/replication/logical/launcher.c:692,1
    - Dst: logicalrep_worker_wakeup_ptr
      Src: /src/postgres/src/backend/replication/logical/launcher.c:695,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:697,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - subid
    - relid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 685
    functionDepth: 2
    functionLinenumber: 685
    functionLinenumberEnd: 698
    functionName: logicalrep_worker_wakeup
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - logicalrep_worker_wakeup_ptr
    - LWLockRelease
    - LWLockAcquire
    - logicalrep_worker_find
    linkageType: ''
    returnType: void
    signature: void logicalrep_worker_wakeup(Oid subid, Oid relid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:708,1
    - Dst: LWLockHeldByMe
      Src: /src/postgres/src/backend/replication/logical/launcher.c:708,1
    - Dst: SetLatch
      Src: /src/postgres/src/backend/replication/logical/launcher.c:710,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - worker
    argTypes:
    - LogicalRepWorker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 705
    functionDepth: 1
    functionLinenumber: 705
    functionLinenumberEnd: 711
    functionName: logicalrep_worker_wakeup_ptr
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 1
    functionsReached:
    - LWLockHeldByMe
    - Assert
    - SetLatch
    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:720,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:722,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:727,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/launcher.c:728,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/launcher.c:729,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/launcher.c:730,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:736,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/launcher.c:737,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/launcher.c:738,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/launcher.c:739,1
    - Dst: before_shmem_exit
      Src: /src/postgres/src/backend/replication/logical/launcher.c:744,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:746,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - slot
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 716
    functionDepth: 1
    functionLinenumber: 716
    functionLinenumberEnd: 747
    functionName: logicalrep_worker_attach
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - before_shmem_exit
    - ereport
    - LWLockRelease
    - LWLockAcquire
    - errcode
    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:757,1
    - Dst: pa_detach_all_error_mq
      Src: /src/postgres/src/backend/replication/logical/launcher.c:768,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:770,1
    - Dst: logicalrep_workers_find
      Src: /src/postgres/src/backend/replication/logical/launcher.c:772,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/launcher.c:775,1
    - Dst: isParallelApplyWorker
      Src: /src/postgres/src/backend/replication/logical/launcher.c:777,1
    - Dst: logicalrep_worker_stop_internal
      Src: /src/postgres/src/backend/replication/logical/launcher.c:778,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:781,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:785,1
    - Dst: logicalrep_worker_cleanup
      Src: /src/postgres/src/backend/replication/logical/launcher.c:787,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:789,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 753
    functionDepth: 7
    functionLinenumber: 753
    functionLinenumberEnd: 790
    functionName: logicalrep_worker_detach
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - am_leader_apply_worker
    - logicalrep_workers_find
    - isParallelApplyWorker
    - logicalrep_worker_stop_internal
    - logicalrep_worker_cleanup
    - pa_detach_all_error_mq
    - LWLockRelease
    - LWLockAcquire
    - lfirst
    linkageType: ''
    returnType: void
    signature: void logicalrep_worker_detach(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/launcher.c:775,1
    - Dst: isParallelApplyWorker
      Src: /src/postgres/src/backend/replication/logical/launcher.c:777,1
    - Dst: logicalrep_worker_stop_internal
      Src: /src/postgres/src/backend/replication/logical/launcher.c:778,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 773
    functionDepth: 2
    functionLinenumber: 773
    functionLinenumberEnd: 779
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 360
    functionsReached:
    - logicalrep_worker_stop_internal
    - isParallelApplyWorker
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, workers)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:798,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/replication/logical/launcher.c:798,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - worker
    argTypes:
    - LogicalRepWorker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 795
    functionDepth: 1
    functionLinenumber: 795
    functionLinenumberEnd: 809
    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: 820
      start: 816
    functionDepth: 0
    functionLinenumber: 816
    functionLinenumberEnd: 820
    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: 4
    BranchProfiles: []
    Callsites:
    - Dst: walrcv_disconnect
      Src: /src/postgres/src/backend/replication/logical/launcher.c:832,1
    - Dst: logicalrep_worker_detach
      Src: /src/postgres/src/backend/replication/logical/launcher.c:834,1
    - Dst: FileSetDeleteAll
      Src: /src/postgres/src/backend/replication/logical/launcher.c:838,1
    - Dst: LockReleaseAll
      Src: /src/postgres/src/backend/replication/logical/launcher.c:848,1
    - Dst: ApplyLauncherWakeup
      Src: /src/postgres/src/backend/replication/logical/launcher.c:850,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 827
    functionDepth: 8
    functionLinenumber: 827
    functionLinenumberEnd: 851
    functionName: logicalrep_worker_onexit
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - walrcv_disconnect
    - FileSetDeleteAll
    - logicalrep_worker_detach
    - LockReleaseAll
    - ApplyLauncherWakeup
    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:863,1
    - Dst: LWLockHeldByMe
      Src: /src/postgres/src/backend/replication/logical/launcher.c:863,1
    - Dst: isTablesyncWorker
      Src: /src/postgres/src/backend/replication/logical/launcher.c:870,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - subid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 875
      start: 857
    functionDepth: 1
    functionLinenumber: 857
    functionLinenumberEnd: 875
    functionName: logicalrep_sync_worker_count
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 1
    functionsReached:
    - LWLockHeldByMe
    - Assert
    - isTablesyncWorker
    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:887,1
    - Dst: LWLockHeldByMe
      Src: /src/postgres/src/backend/replication/logical/launcher.c:887,1
    - Dst: isParallelApplyWorker
      Src: /src/postgres/src/backend/replication/logical/launcher.c:897,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - subid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 881
    functionDepth: 1
    functionLinenumber: 881
    functionLinenumberEnd: 902
    functionName: logicalrep_pa_worker_count
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 1
    functionsReached:
    - LWLockHeldByMe
    - Assert
    - 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:917,1
    - Dst: add_size
      Src: /src/postgres/src/backend/replication/logical/launcher.c:918,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/replication/logical/launcher.c:918,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 908
    functionDepth: 1
    functionLinenumber: 908
    functionLinenumberEnd: 921
    functionName: ApplyLauncherShmemSize
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - add_size
    - mul_size
    - MAXALIGN
    linkageType: ''
    returnType: Size
    signature: Size ApplyLauncherShmemSize(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/launcher.c:942,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:946,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:947,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:948,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/launcher.c:950,1
    - Dst: RegisterBackgroundWorker
      Src: /src/postgres/src/backend/replication/logical/launcher.c:956,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 927
    functionDepth: 1
    functionLinenumber: 927
    functionLinenumberEnd: 957
    functionName: ApplyLauncherRegister
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - memset
    - RegisterBackgroundWorker
    - snprintf
    linkageType: ''
    returnType: void
    signature: void ApplyLauncherRegister(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ShmemInitStruct
      Src: /src/postgres/src/backend/replication/logical/launcher.c:969,1
    - Dst: ApplyLauncherShmemSize
      Src: /src/postgres/src/backend/replication/logical/launcher.c:970,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/launcher.c:977,1
    - Dst: ApplyLauncherShmemSize
      Src: /src/postgres/src/backend/replication/logical/launcher.c:977,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/launcher.c:987,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/replication/logical/launcher.c:988,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 963
    functionDepth: 2
    functionLinenumber: 963
    functionLinenumberEnd: 991
    functionName: ApplyLauncherShmemInit
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - memset
    - ShmemInitStruct
    - ApplyLauncherShmemSize
    - SpinLockInit
    linkageType: ''
    returnType: void
    signature: void ApplyLauncherShmemInit(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1009,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1012,1
    - Dst: dsa_create
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1017,1
    - Dst: dsa_pin
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1018,1
    - Dst: dsa_pin_mapping
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1019,1
    - Dst: dshash_create
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1020,1
    - Dst: dsa_get_handle
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1023,1
    - Dst: dshash_get_hash_table_handle
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1024,1
    - Dst: dsa_attach
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1029,1
    - Dst: dsa_pin_mapping
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1030,1
    - Dst: dshash_attach
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1031,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1035,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1036,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1037
      start: 998
    functionDepth: 1
    functionLinenumber: 998
    functionLinenumberEnd: 1037
    functionName: logicalrep_launcher_attach_dshmem
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - dsa_pin_mapping
    - dsa_get_handle
    - dsa_attach
    - dshash_get_hash_table_handle
    - dshash_attach
    - dshash_create
    - dsa_pin
    - dsa_create
    - LWLockRelease
    - LWLockAcquire
    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:1048,1
    - Dst: dshash_find_or_insert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1050,1
    - Dst: dshash_release_lock
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1052,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - subid
    - start_time
    argTypes:
    - Oid
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1053
      start: 1042
    functionDepth: 2
    functionLinenumber: 1042
    functionLinenumberEnd: 1053
    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:1064,1
    - Dst: dshash_find
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1066,1
    - Dst: dshash_release_lock
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1071,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - subid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 1058
    functionDepth: 2
    functionLinenumber: 1058
    functionLinenumberEnd: 1074
    functionName: ApplyLauncherGetWorkerStartTime
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - dshash_release_lock
    - logicalrep_launcher_attach_dshmem
    - dshash_find
    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:1087,1
    - Dst: dshash_delete_key
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1089,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - subid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 1084
    functionDepth: 2
    functionLinenumber: 1084
    functionLinenumberEnd: 1090
    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:1101,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - isCommit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1105
      start: 1095
    functionDepth: 1
    functionLinenumber: 1095
    functionLinenumberEnd: 1105
    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: 1119
      start: 1114
    functionDepth: 0
    functionLinenumber: 1114
    functionLinenumberEnd: 1119
    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:1125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1126
      start: 1121
    functionDepth: 1
    functionLinenumber: 1121
    functionLinenumberEnd: 1126
    functionName: ApplyLauncherWakeup
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 2
    functionsReached:
    - kill
    linkageType: ''
    returnType: void
    signature: void ApplyLauncherWakeup(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1134,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1135,1
    - Dst: before_shmem_exit
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1137,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1139,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1143,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1144,1
    - Dst: BackgroundWorkerUnblockSignals
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1145,1
    - Dst: BackgroundWorkerInitializeConnection
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1151,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1163,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1166,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1169,1
    - Dst: get_subscription_list
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1172,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1175,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1184,1
    - Dst: logicalrep_worker_find
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1185,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1186,1
    - Dst: ApplyLauncherGetWorkerStartTime
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1204,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1205,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1207,1
    - Dst: ApplyLauncherSetWorkerStartTime
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1209,1
    - Dst: logicalrep_worker_launch
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1210,1
    - Dst: Min
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1222,1
    - Dst: Min
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1228,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1234,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1236,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1239,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1246,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1247,1
    - Dst: ProcessConfigFile
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1253,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 44
    argCount: 1
    argNames:
    - main_arg
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1258
      start: 1131
    functionDepth: 8
    functionLinenumber: 1131
    functionLinenumberEnd: 1258
    functionName: ApplyLauncherMain
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - CHECK_FOR_INTERRUPTS
    - BackgroundWorkerInitializeConnection
    - get_subscription_list
    - ApplyLauncherSetWorkerStartTime
    - ApplyLauncherGetWorkerStartTime
    - LWLockRelease
    - logicalrep_worker_launch
    - ResetLatch
    - Min
    - MemoryContextDelete
    - GetCurrentTimestamp
    - BackgroundWorkerUnblockSignals
    - WaitLatch
    - lfirst
    - Assert
    - ProcessConfigFile
    - before_shmem_exit
    - errmsg_internal
    - ereport
    - TimestampDifferenceMilliseconds
    - pqsignal
    - AllocSetContextCreate
    - LWLockAcquire
    - logicalrep_worker_find
    linkageType: ''
    returnType: void
    signature: void ApplyLauncherMain(Datum main_arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1175,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1184,1
    - Dst: logicalrep_worker_find
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1185,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1186,1
    - Dst: ApplyLauncherGetWorkerStartTime
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1204,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1205,1
    - Dst: TimestampDifferenceMilliseconds
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1207,1
    - Dst: ApplyLauncherSetWorkerStartTime
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1209,1
    - Dst: logicalrep_worker_launch
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1210,1
    - Dst: Min
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1222,1
    - Dst: Min
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1228,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1231
      start: 1173
    functionDepth: 3
    functionLinenumber: 1173
    functionLinenumberEnd: 1231
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 360
    functionsReached:
    - lfirst
    - Min
    - TimestampDifferenceMilliseconds
    - GetCurrentTimestamp
    - ApplyLauncherSetWorkerStartTime
    - ApplyLauncherGetWorkerStartTime
    - LWLockRelease
    - LWLockAcquire
    - logicalrep_worker_find
    - logicalrep_worker_launch
    linkageType: ''
    returnType: void
    signature: void foreach(lc, sublist)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1267
      start: 1263
    functionDepth: 0
    functionLinenumber: 1263
    functionLinenumberEnd: 1267
    functionName: IsLogicalLauncher
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IsLogicalLauncher(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1279,1
    - Dst: isParallelApplyWorker
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1285,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1292,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - pid
    argTypes:
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1295
      start: 1273
    functionDepth: 1
    functionLinenumber: 1273
    functionLinenumberEnd: 1295
    functionName: GetLeaderApplyWorkerPid
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - LWLockRelease
    - isParallelApplyWorker
    - LWLockAcquire
    linkageType: ''
    returnType: pid_t
    signature: pid_t GetLeaderApplyWorkerPid(pid_t pid)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1304,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1304,1
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1308,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1311,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1321,1
    - Dst: IsBackendPid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1323,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1326,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1331,1
    - Dst: isTablesyncWorker
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1332,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1333,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1336,1
    - Dst: isParallelApplyWorker
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1338,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1339,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1343,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1346,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1350,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1354,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1355,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1358,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1362,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1367,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1370,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1373,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1377,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1380,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1387,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/launcher.c:1391,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1394
      start: 1300
    functionDepth: 1
    functionLinenumber: 1300
    functionLinenumberEnd: 1394
    functionName: pg_stat_get_subscription
    functionSourceFile: /src/postgres/src/backend/replication/logical/launcher.c
    functionUses: 0
    functionsReached:
    - tuplestore_putvalues
    - Int32GetDatum
    - CStringGetTextDatum
    - isParallelApplyWorker
    - PG_ARGISNULL
    - PG_GETARG_OID
    - InitMaterializedSRF
    - elog
    - IsBackendPid
    - OidIsValid
    - TimestampTzGetDatum
    - LSNGetDatum
    - memcpy
    - XLogRecPtrIsInvalid
    - LWLockRelease
    - LWLockAcquire
    - ObjectIdGetDatum
    - isTablesyncWorker
    linkageType: ''
    returnType: Datum
    signature: Datum pg_stat_get_subscription(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: slot_getsysattr
      Src: /src/postgres/src/backend/replication/logical/conflict.c:68,1
    - Dst: DatumGetTransactionId
      Src: /src/postgres/src/backend/replication/logical/conflict.c:70,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/conflict.c:71,1
    - Dst: TransactionIdGetCommitTsData
      Src: /src/postgres/src/backend/replication/logical/conflict.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - localslot
    - xmin
    - localorigin
    - localts
    argTypes:
    - TupleTableSlot*
    - TransactionId*
    - RepOriginId*
    - TimestampTz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 61
    functionDepth: 5
    functionLinenumber: 61
    functionLinenumberEnd: 85
    functionName: GetTupleTransactionInfo
    functionSourceFile: /src/postgres/src/backend/replication/logical/conflict.c
    functionUses: 0
    functionsReached:
    - Assert
    - slot_getsysattr
    - TransactionIdGetCommitTsData
    - DatumGetTransactionId
    linkageType: ''
    returnType: bool
    signature: "bool GetTupleTransactionInfo(TupleTableSlot *localslot, TransactionId
      *xmin,\n\t\t\t\t\t\tRepOriginId *localorigin, TimestampTz *localts)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:110,1
    - Dst: foreach_ptr
      Src: /src/postgres/src/backend/replication/logical/conflict.c:113,1
    - Dst: errdetail_apply_conflict
      Src: /src/postgres/src/backend/replication/logical/conflict.c:114,1
    - Dst: pgstat_report_subscription_conflict
      Src: /src/postgres/src/backend/replication/logical/conflict.c:122,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/conflict.c:124,1
    - Dst: errcode_apply_conflict
      Src: /src/postgres/src/backend/replication/logical/conflict.c:125,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/conflict.c:126,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/replication/logical/conflict.c:127,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/replication/logical/conflict.c:127,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/logical/conflict.c:128,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/replication/logical/conflict.c:130,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: 131
      start: 102
    functionDepth: 3
    functionLinenumber: 102
    functionLinenumberEnd: 131
    functionName: ReportApplyConflict
    functionSourceFile: /src/postgres/src/backend/replication/logical/conflict.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errdetail_apply_conflict
    - pgstat_report_subscription_conflict
    - errdetail_internal
    - get_namespace_name
    - ereport
    - errcode_apply_conflict
    - RelationGetNamespace
    - foreach_ptr
    - initStringInfo
    - RelationGetRelationName
    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:157,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/logical/conflict.c:158,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 1
    argNames:
    - relInfo
    argTypes:
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 137
    functionDepth: 6
    functionLinenumber: 137
    functionLinenumberEnd: 162
    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: 8
    BranchProfiles: []
    Callsites:
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/conflict.c:175,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/conflict.c:180,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/conflict.c:183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - type
    argTypes:
    - ConflictType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 185
    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: 17
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:209,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/conflict.c:217,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/conflict.c:217,1
    - Dst: CheckRelationOidLockedByMe
      Src: /src/postgres/src/backend/replication/logical/conflict.c:218,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:223,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:223,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/replication/logical/conflict.c:224,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:225,1
    - Dst: replorigin_by_oid
      Src: /src/postgres/src/backend/replication/logical/conflict.c:226,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:227,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:227,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/replication/logical/conflict.c:228,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:229,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:239,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:239,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/replication/logical/conflict.c:240,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:241,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:244,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:244,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/replication/logical/conflict.c:245,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:251,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:251,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:252,1
    - Dst: replorigin_by_oid
      Src: /src/postgres/src/backend/replication/logical/conflict.c:253,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:254,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:254,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:255,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:259,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:259,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:260,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/conflict.c:265,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:265,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:270,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:270,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:271,1
    - Dst: replorigin_by_oid
      Src: /src/postgres/src/backend/replication/logical/conflict.c:272,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:273,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:273,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:274,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:278,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:278,1
    - Dst: timestamptz_to_str
      Src: /src/postgres/src/backend/replication/logical/conflict.c:279,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/conflict.c:284,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:284,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/conflict.c:288,1
    - Dst: build_tuple_value_details
      Src: /src/postgres/src/backend/replication/logical/conflict.c:290,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:298,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/replication/logical/conflict.c:305,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/conflict.c:307,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 44
    argCount: 11
    argNames:
    - estate
    - relinfo
    - type
    - searchslot
    - localslot
    - remoteslot
    - indexoid
    - localxmin
    - localorigin
    - localts
    - err_msg
    argTypes:
    - EState*
    - ResultRelInfo*
    - ConflictType
    - TupleTableSlot*
    - TupleTableSlot*
    - TupleTableSlot*
    - Oid
    - TransactionId
    - RepOriginId
    - TimestampTz
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 197
    functionDepth: 3
    functionLinenumber: 197
    functionLinenumberEnd: 308
    functionName: errdetail_apply_conflict
    functionSourceFile: /src/postgres/src/backend/replication/logical/conflict.c
    functionUses: 1
    functionsReached:
    - Assert
    - get_rel_name
    - appendStringInfo
    - replorigin_by_oid
    - build_tuple_value_details
    - appendStringInfoString
    - appendStringInfoChar
    - CheckRelationOidLockedByMe
    - OidIsValid
    - _
    - timestamptz_to_str
    - initStringInfo
    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 RepOriginId localorigin, TimestampTz localts,\n\t\t\t\t\t\t
      StringInfo err_msg)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/logical/conflict.c:326,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/conflict.c:327,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/conflict.c:331,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:333,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/conflict.c:342,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/conflict.c:342,1
    - Dst: build_index_value_desc
      Src: /src/postgres/src/backend/replication/logical/conflict.c:344,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:347,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:347,1
    - Dst: ExecBuildSlotValueDescription
      Src: /src/postgres/src/backend/replication/logical/conflict.c:356,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/conflict.c:363,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:364,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:364,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:369,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:369,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/replication/logical/conflict.c:386,1
    - Dst: ExecGetInsertedCols
      Src: /src/postgres/src/backend/replication/logical/conflict.c:386,1
    - Dst: ExecGetUpdatedCols
      Src: /src/postgres/src/backend/replication/logical/conflict.c:387,1
    - Dst: ExecBuildSlotValueDescription
      Src: /src/postgres/src/backend/replication/logical/conflict.c:388,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/conflict.c:395,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:396,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:396,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:400,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:400,1
    - Dst: GetRelationIdentityOrPK
      Src: /src/postgres/src/backend/replication/logical/conflict.c:414,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/conflict.c:416,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/conflict.c:423,1
    - Dst: build_index_value_desc
      Src: /src/postgres/src/backend/replication/logical/conflict.c:424,1
    - Dst: ExecBuildSlotValueDescription
      Src: /src/postgres/src/backend/replication/logical/conflict.c:426,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/conflict.c:432,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:433,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/conflict.c:433,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:434,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:435,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:439,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/conflict.c:439,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:440,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/conflict.c:441,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/replication/logical/conflict.c:449,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 50
    argCount: 7
    argNames:
    - estate
    - relinfo
    - type
    - searchslot
    - localslot
    - remoteslot
    - indexoid
    argTypes:
    - EState*
    - ResultRelInfo*
    - ConflictType
    - TupleTableSlot*
    - TupleTableSlot*
    - TupleTableSlot*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 317
    functionDepth: 4
    functionLinenumber: 317
    functionLinenumberEnd: 451
    functionName: build_tuple_value_details
    functionSourceFile: /src/postgres/src/backend/replication/logical/conflict.c
    functionUses: 1
    functionsReached:
    - GetRelationIdentityOrPK
    - Assert
    - RelationGetRelid
    - appendStringInfo
    - ExecGetUpdatedCols
    - appendStringInfoChar
    - appendStringInfoString
    - RelationGetDescr
    - build_index_value_desc
    - ExecBuildSlotValueDescription
    - bms_union
    - OidIsValid
    - _
    - ExecGetInsertedCols
    - initStringInfo
    linkageType: ''
    returnType: char
    signature: "char *\nbuild_tuple_value_details(EState *estate, ResultRelInfo *relinfo,\n\t\t\t\t\t\t
      \ ConflictType type,\n\t\t\t\t\t\t  TupleTableSlot *searchslot,\n\t\t\t\t\t\t
      \ TupleTableSlot *localslot,\n\t\t\t\t\t\t  TupleTableSlot *remoteslot,\n\t\t\t\t\t\t
      \ Oid indexoid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/conflict.c:473,1
    - Dst: CheckRelationOidLockedByMe
      Src: /src/postgres/src/backend/replication/logical/conflict.c:473,1
    - Dst: index_open
      Src: /src/postgres/src/backend/replication/logical/conflict.c:475,1
    - Dst: TTS_IS_VIRTUAL
      Src: /src/postgres/src/backend/replication/logical/conflict.c:481,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/replication/logical/conflict.c:483,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/replication/logical/conflict.c:484,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/replication/logical/conflict.c:491,1
    - Dst: FormIndexDatum
      Src: /src/postgres/src/backend/replication/logical/conflict.c:498,1
    - Dst: BuildIndexInfo
      Src: /src/postgres/src/backend/replication/logical/conflict.c:498,1
    - Dst: BuildIndexValueDescription
      Src: /src/postgres/src/backend/replication/logical/conflict.c:500,1
    - Dst: index_close
      Src: /src/postgres/src/backend/replication/logical/conflict.c:502,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - estate
    - localrel
    - slot
    - indexoid
    argTypes:
    - EState*
    - Relation
    - TupleTableSlot*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 460
    functionDepth: 4
    functionLinenumber: 460
    functionLinenumberEnd: 505
    functionName: build_index_value_desc
    functionSourceFile: /src/postgres/src/backend/replication/logical/conflict.c
    functionUses: 1
    functionsReached:
    - Assert
    - table_slot_create
    - index_close
    - FormIndexDatum
    - BuildIndexInfo
    - CheckRelationOidLockedByMe
    - GetPerTupleExprContext
    - ExecCopySlot
    - BuildIndexValueDescription
    - index_open
    - TTS_IS_VIRTUAL
    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:268,1
    - Dst: maybe_reread_subscription
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:280,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:302,1
    - Dst: AllTablesyncsReady
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:312,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 264
    functionDepth: 2
    functionLinenumber: 264
    functionLinenumberEnd: 316
    functionName: pa_can_start
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - XLogRecPtrIsInvalid
    - am_leader_apply_worker
    - 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:348,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:349,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:350,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:351,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:353,1
    - Dst: shm_toc_estimate
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:354,1
    - Dst: dsm_create
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:357,1
    - Dst: shm_toc_estimate
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:357,1
    - Dst: shm_toc_create
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:361,1
    - Dst: dsm_segment_address
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:361,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:365,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:366,1
    - Dst: pg_atomic_init_u32
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:369,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:373,1
    - Dst: shm_mq_create
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:376,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:376,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:377,1
    - Dst: shm_mq_set_sender
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:378,1
    - Dst: shm_mq_attach
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:381,1
    - Dst: shm_mq_create
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:384,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:384,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:386,1
    - Dst: shm_mq_set_receiver
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:387,1
    - Dst: shm_mq_attach
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:390,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 29
    argCount: 1
    argNames:
    - winfo
    argTypes:
    - ParallelApplyWorkerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 326
    functionDepth: 2
    functionLinenumber: 326
    functionLinenumberEnd: 397
    functionName: pa_setup_dsm
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - shm_toc_create
    - shm_toc_initialize_estimator
    - shm_mq_create
    - shm_toc_estimate
    - SpinLockInit
    - shm_toc_estimate_chunk
    - shm_toc_insert
    - shm_mq_set_sender
    - shm_mq_set_receiver
    - shm_mq_attach
    - shm_toc_estimate_keys
    - pg_atomic_init_u32
    - dsm_segment_address
    - shm_toc_allocate
    - dsm_create
    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:414,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:426,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:428,1
    - Dst: pa_setup_dsm
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:431,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:433,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:434,1
    - Dst: logicalrep_worker_launch
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:438,1
    - Dst: dsm_segment_handle
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:444,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:448,1
    - Dst: pa_free_worker_info
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:452,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:456,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 403
    functionDepth: 6
    functionLinenumber: 403
    functionLinenumberEnd: 459
    functionName: pa_launch_parallel_worker
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - pfree
    - MemoryContextSwitchTo
    - dsm_segment_handle
    - palloc0
    - lappend
    - pa_setup_dsm
    - pa_free_worker_info
    - lfirst
    - logicalrep_worker_launch
    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:414,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 412
    functionDepth: 1
    functionLinenumber: 412
    functionLinenumberEnd: 418
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 360
    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:476,1
    - Dst: pa_launch_parallel_worker
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:479,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:488,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:493,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:499,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:501,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:504,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:507,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 469
    functionDepth: 7
    functionLinenumber: 469
    functionLinenumberEnd: 512
    functionName: pa_allocate_worker
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - pa_can_start
    - hash_create
    - hash_search
    - SpinLockRelease
    - elog
    - MemSet
    - pa_launch_parallel_worker
    - SpinLockAcquire
    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:523,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:534,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:538,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 517
    functionDepth: 1
    functionLinenumber: 517
    functionLinenumberEnd: 543
    functionName: pa_find_worker
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsValid
    - Assert
    - hash_search
    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:558,1
    - Dst: am_parallel_apply_worker
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:558,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:559,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:560,1
    - Dst: pa_get_xact_state
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:560,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:562,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:563,1
    - Dst: list_length
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:577,1
    - Dst: logicalrep_pa_worker_stop
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:580,1
    - Dst: pa_free_worker_info
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:581,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - winfo
    argTypes:
    - ParallelApplyWorkerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 555
    functionDepth: 3
    functionLinenumber: 555
    functionLinenumberEnd: 588
    functionName: pa_free_worker
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - Assert
    - am_parallel_apply_worker
    - hash_search
    - pa_get_xact_state
    - list_length
    - elog
    - logicalrep_pa_worker_stop
    - pa_free_worker_info
    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:597,1
    - Dst: shm_mq_detach
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:600,1
    - Dst: shm_mq_detach
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:603,1
    - Dst: stream_cleanup_files
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:607,1
    - Dst: dsm_detach
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:610,1
    - Dst: list_delete_ptr
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:613,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:615,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - winfo
    argTypes:
    - ParallelApplyWorkerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 594
    functionDepth: 5
    functionLinenumber: 594
    functionLinenumberEnd: 616
    functionName: pa_free_worker_info
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 2
    functionsReached:
    - pfree
    - Assert
    - stream_cleanup_files
    - list_delete_ptr
    - dsm_detach
    - shm_mq_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:628,1
    - Dst: shm_mq_detach
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:632,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 621
    functionDepth: 1
    functionLinenumber: 621
    functionLinenumberEnd: 636
    functionName: pa_detach_all_error_mq
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 1
    functionsReached:
    - shm_mq_detach
    - lfirst
    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:628,1
    - Dst: shm_mq_detach
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:632,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 626
    functionDepth: 1
    functionLinenumber: 626
    functionLinenumberEnd: 635
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 360
    functionsReached:
    - shm_mq_detach
    - lfirst
    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:646,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 641
    functionDepth: 1
    functionLinenumber: 641
    functionLinenumberEnd: 649
    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()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pa_get_fileset_state
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:662,1
    - Dst: pa_lock_stream
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:680,1
    - Dst: pa_unlock_stream
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:681,1
    - Dst: pa_get_fileset_state
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:683,1
    - Dst: pa_set_fileset_state
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:695,1
    - Dst: apply_spooled_messages
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:699,1
    - Dst: pa_set_fileset_state
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:702,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 657
    functionDepth: 1
    functionLinenumber: 657
    functionLinenumberEnd: 706
    functionName: pa_process_spooled_messages_if_required
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - pa_lock_stream
    - pa_set_fileset_state
    - apply_spooled_messages
    - pa_unlock_stream
    - pa_get_fileset_state
    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:714,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:718,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:719,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:722,1
    - Dst: ProcessConfigFile
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:728,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 711
    functionDepth: 1
    functionLinenumber: 711
    functionLinenumberEnd: 730
    functionName: ProcessParallelApplyInterrupts
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ProcessConfigFile
    - CHECK_FOR_INTERRUPTS
    - ereport
    - proc_exit
    linkageType: ''
    returnType: void
    signature: void ProcessParallelApplyInterrupts(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:744,1
    - Dst: ProcessParallelApplyInterrupts
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:761,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:764,1
    - Dst: shm_mq_receive
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:766,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:774,1
    - Dst: initReadOnlyStringInfo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:776,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:782,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:784,1
    - Dst: apply_dispatch
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:797,1
    - Dst: pa_process_spooled_messages_if_required
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:802,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:807,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:813,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:818,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:820,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:821,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:822,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:825,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:826,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:832,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 1
    argNames:
    - mqh
    argTypes:
    - shm_mq_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 733
    functionDepth: 2
    functionLinenumber: 733
    functionLinenumberEnd: 833
    functionName: LogicalParallelApplyLoop
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - pq_getmsgbyte
    - pa_process_spooled_messages_if_required
    - ResetLatch
    - MemoryContextSwitchTo
    - Assert
    - errmsg
    - MemoryContextReset
    - shm_mq_receive
    - ereport
    - elog
    - ProcessParallelApplyInterrupts
    - AllocSetContextCreate
    - initReadOnlyStringInfo
    - WaitLatch
    - apply_dispatch
    - errcode
    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:846,1
    - Dst: dsm_detach
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:850,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:850,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 843
    functionDepth: 1
    functionLinenumber: 843
    functionLinenumberEnd: 851
    functionName: pa_shutdown
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - DatumGetPointer
    - SendProcSignal
    - dsm_detach
    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:867,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:873,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:874,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:875,1
    - Dst: BackgroundWorkerUnblockSignals
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:876,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:885,1
    - Dst: dsm_attach
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:886,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:888,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:889,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:890,1
    - Dst: shm_toc_attach
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:892,1
    - Dst: dsm_segment_address
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:892,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:894,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:895,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:896,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:899,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:905,1
    - Dst: shm_mq_set_receiver
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:906,1
    - Dst: shm_mq_attach
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:907,1
    - Dst: logicalrep_worker_attach
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:914,1
    - Dst: before_shmem_exit
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:921,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:921,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:923,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:926,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:931,1
    - Dst: shm_mq_set_sender
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:932,1
    - Dst: shm_mq_attach
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:933,1
    - Dst: pq_redirect_to_shm_mq
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:935,1
    - Dst: pq_set_parallel_leader
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:936,1
    - Dst: InitializeLogRepWorker
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:942,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:947,1
    - Dst: ReplicationOriginNameForLogicalRep
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:948,1
    - Dst: replorigin_by_name
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:950,1
    - Dst: replorigin_session_setup
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:956,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:958,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:964,1
    - Dst: set_apply_error_context_origin
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:968,1
    - Dst: LogicalParallelApplyLoop
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:970,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:978,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 42
    argCount: 1
    argNames:
    - main_arg
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 979
      start: 856
    functionDepth: 3
    functionLinenumber: 856
    functionLinenumberEnd: 979
    functionName: ParallelApplyWorkerMain
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - pq_set_parallel_leader
    - CacheRegisterSyscacheCallback
    - SpinLockRelease
    - set_apply_error_context_origin
    - shm_mq_attach
    - logicalrep_worker_attach
    - replorigin_session_setup
    - LogicalParallelApplyLoop
    - shm_toc_lookup
    - dsm_segment_address
    - memcpy
    - StartTransactionCommand
    - errmsg
    - shm_toc_attach
    - DatumGetInt32
    - BackgroundWorkerUnblockSignals
    - SpinLockAcquire
    - InitializeLogRepWorker
    - Assert
    - pq_redirect_to_shm_mq
    - ReplicationOriginNameForLogicalRep
    - CommitTransactionCommand
    - replorigin_by_name
    - shm_mq_set_sender
    - before_shmem_exit
    - ereport
    - PointerGetDatum
    - shm_mq_set_receiver
    - pqsignal
    - dsm_attach
    - errcode
    linkageType: ''
    returnType: void
    signature: void ParallelApplyWorkerMain(Datum main_arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SetLatch
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:993,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 994
      start: 988
    functionDepth: 1
    functionLinenumber: 988
    functionLinenumberEnd: 994
    functionName: HandleParallelApplyMessageInterrupt
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - SetLatch
    linkageType: ''
    returnType: void
    signature: void HandleParallelApplyMessageInterrupt(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1005,1
    - Dst: pq_parse_errornotice
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1014,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1023,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1024,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1026,1
    - Dst: _
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1026,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1038,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1039,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1040,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1041,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1054,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - msg
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1000
    functionDepth: 2
    functionLinenumber: 1000
    functionLinenumberEnd: 1057
    functionName: ProcessParallelApplyMessage
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - pq_getmsgbyte
    - errcode
    - errmsg
    - errcontext
    - pstrdup
    - ereport
    - elog
    - _
    - pq_parse_errornotice
    - psprintf
    linkageType: ''
    returnType: void
    signature: void ProcessParallelApplyMessage(StringInfo msg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: HOLD_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1077,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1085,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1089,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1091,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1100,1
    - Dst: shm_mq_receive
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1111,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1119,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1120,1
    - Dst: ProcessParallelApplyMessage
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1121,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1122,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1125,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1126,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1127,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1130,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1133,1
    - Dst: RESUME_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1135,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1136
      start: 1062
    functionDepth: 3
    functionLinenumber: 1062
    functionLinenumberEnd: 1136
    functionName: ProcessParallelApplyMessages
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 1
    functionsReached:
    - errmsg
    - pfree
    - errcode
    - MemoryContextSwitchTo
    - appendBinaryStringInfo
    - MemoryContextReset
    - shm_mq_receive
    - ereport
    - AllocSetContextCreate
    - initStringInfo
    - ProcessParallelApplyMessage
    - HOLD_INTERRUPTS
    - lfirst
    - RESUME_INTERRUPTS
    linkageType: ''
    returnType: void
    signature: void ProcessParallelApplyMessages(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1100,1
    - Dst: shm_mq_receive
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1111,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1119,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1120,1
    - Dst: ProcessParallelApplyMessage
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1121,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1122,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1125,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1126,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1127,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1128
      start: 1095
    functionDepth: 3
    functionLinenumber: 1095
    functionLinenumberEnd: 1128
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 360
    functionsReached:
    - errmsg
    - pfree
    - errcode
    - appendBinaryStringInfo
    - shm_mq_receive
    - ereport
    - initStringInfo
    - ProcessParallelApplyMessage
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, ParallelApplyWorkerPool)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1152,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1152,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1153,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1159,1
    - Dst: shm_mq_send
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1173,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1178,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1179,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1180,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1182,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1185,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1192,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1193,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1197,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1198,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1198,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 3
    argNames:
    - winfo
    - nbytes
    - data
    argTypes:
    - ParallelApplyWorkerInfo*
    - Size
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1202
      start: 1145
    functionDepth: 1
    functionLinenumber: 1145
    functionLinenumberEnd: 1202
    functionName: pa_send_data
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ResetLatch
    - Assert
    - CHECK_FOR_INTERRUPTS
    - ereport
    - unlikely
    - IsTransactionState
    - GetCurrentTimestamp
    - TimestampDifferenceExceeds
    - WaitLatch
    - errcode
    - shm_mq_send
    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:1214,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1215,1
    - Dst: stream_start_internal
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1226,1
    - Dst: pa_lock_stream
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1234,1
    - Dst: pa_set_fileset_state
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1236,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - winfo
    - stream_locked
    argTypes:
    - ParallelApplyWorkerInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1237
      start: 1210
    functionDepth: 1
    functionLinenumber: 1210
    functionLinenumberEnd: 1237
    functionName: pa_switch_to_partial_serialize
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pa_lock_stream
    - pa_set_fileset_state
    - ereport
    - stream_start_internal
    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:1253,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1257,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1263,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1266,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - winfo
    - xact_state
    argTypes:
    - ParallelApplyWorkerInfo*
    - ParallelTransState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1268
      start: 1243
    functionDepth: 1
    functionLinenumber: 1243
    functionLinenumberEnd: 1268
    functionName: pa_wait_for_xact_state
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - ResetLatch
    - WaitLatch
    - CHECK_FOR_INTERRUPTS
    - pa_get_xact_state
    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:1282,1
    - Dst: pa_lock_transaction
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1289,1
    - Dst: pa_unlock_transaction
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1290,1
    - Dst: pa_get_xact_state
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1297,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1298,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1299,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1300,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - winfo
    argTypes:
    - ParallelApplyWorkerInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1301
      start: 1273
    functionDepth: 2
    functionLinenumber: 1273
    functionLinenumberEnd: 1301
    functionName: pa_wait_for_xact_finish
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - pa_get_xact_state
    - pa_unlock_transaction
    - pa_lock_transaction
    - pa_wait_for_xact_state
    - errcode
    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:1310,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - wshared
    - xact_state
    argTypes:
    - ParallelApplyWorkerShared*
    - ParallelTransState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1313
      start: 1306
    functionDepth: 1
    functionLinenumber: 1306
    functionLinenumberEnd: 1313
    functionName: pa_set_xact_state
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - SpinLockRelease
    - SpinLockAcquire
    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:1323,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - wshared
    argTypes:
    - ParallelApplyWorkerShared*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1328
      start: 1318
    functionDepth: 1
    functionLinenumber: 1318
    functionLinenumberEnd: 1328
    functionName: pa_get_xact_state
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 3
    functionsReached:
    - SpinLockRelease
    - SpinLockAcquire
    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: 1337
      start: 1333
    functionDepth: 0
    functionLinenumber: 1333
    functionLinenumberEnd: 1337
    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:1350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - suboid
    - xid
    - spname
    - szsp
    argTypes:
    - Oid
    - TransactionId
    - char*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1351
      start: 1347
    functionDepth: 0
    functionLinenumber: 1347
    functionLinenumberEnd: 1351
    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:1365,1
    - Dst: pa_savepoint_name
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1370,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1373,1
    - Dst: IsTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1376,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1378,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1379,1
    - Dst: BeginTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1381,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1382,1
    - Dst: DefineSavepoint
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1385,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1392,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1394,1
    - Dst: lappend_xid
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1395,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1396,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - current_xid
    - top_xid
    argTypes:
    - TransactionId
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1398
      start: 1361
    functionDepth: 6
    functionLinenumber: 1361
    functionLinenumberEnd: 1398
    functionName: pa_start_subtrans
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - BeginTransactionBlock
    - MemoryContextSwitchTo
    - DefineSavepoint
    - CommitTransactionCommand
    - list_member_xid
    - IsTransactionBlock
    - elog
    - lappend_xid
    - IsTransactionState
    - pa_savepoint_name
    - StartTransactionCommand
    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: 1409
      start: 1401
    functionDepth: 0
    functionLinenumber: 1401
    functionLinenumberEnd: 1409
    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:1434,1
    - Dst: pa_unlock_transaction
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1446,1
    - Dst: AbortCurrentTransaction
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1448,1
    - Dst: IsTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1450,1
    - Dst: EndTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1452,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1453,1
    - Dst: pa_reset_subtrans
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1456,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1458,1
    - Dst: pa_savepoint_name
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1466,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1468,1
    - Dst: list_length
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1477,1
    - Dst: lfirst_xid
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1479,1
    - Dst: list_nth_cell
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1479,1
    - Dst: RollbackToSavepoint
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1483,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1484,1
    - Dst: list_truncate
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1485,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 1
    argNames:
    - abort_data
    argTypes:
    - LogicalRepStreamAbortData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1490
      start: 1415
    functionDepth: 2
    functionLinenumber: 1415
    functionLinenumberEnd: 1490
    functionName: pa_stream_abort
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - pa_set_xact_state
    - RollbackToSavepoint
    - CommitTransactionCommand
    - list_nth_cell
    - pa_unlock_transaction
    - AbortCurrentTransaction
    - IsTransactionBlock
    - pgstat_report_activity
    - elog
    - list_length
    - pa_reset_subtrans
    - list_truncate
    - pa_savepoint_name
    - EndTransactionBlock
    - lfirst_xid
    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:1501,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1506,1
    - Dst: am_leader_apply_worker
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1506,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1507,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1511,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - wshared
    - fileset_state
    argTypes:
    - ParallelApplyWorkerShared*
    - PartialFileSetState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1512
      start: 1497
    functionDepth: 2
    functionLinenumber: 1497
    functionLinenumberEnd: 1512
    functionName: pa_set_fileset_state
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 2
    functionsReached:
    - Assert
    - am_leader_apply_worker
    - SpinLockRelease
    - SpinLockAcquire
    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:1522,1
    - Dst: am_parallel_apply_worker
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1522,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1524,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1526,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1529
      start: 1517
    functionDepth: 2
    functionLinenumber: 1517
    functionLinenumberEnd: 1529
    functionName: pa_get_fileset_state
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 2
    functionsReached:
    - Assert
    - am_parallel_apply_worker
    - SpinLockRelease
    - SpinLockAcquire
    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:1542,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - xid
    - lockmode
    argTypes:
    - TransactionId
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1544
      start: 1539
    functionDepth: 1
    functionLinenumber: 1539
    functionLinenumberEnd: 1544
    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:1549,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - xid
    - lockmode
    argTypes:
    - TransactionId
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1551
      start: 1546
    functionDepth: 1
    functionLinenumber: 1546
    functionLinenumberEnd: 1551
    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:1575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - xid
    - lockmode
    argTypes:
    - TransactionId
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1577
      start: 1572
    functionDepth: 1
    functionLinenumber: 1572
    functionLinenumberEnd: 1577
    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:1582,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - xid
    - lockmode
    argTypes:
    - TransactionId
    - LOCKMODE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1584
      start: 1579
    functionDepth: 1
    functionLinenumber: 1579
    functionLinenumberEnd: 1584
    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:1593,1
    - Dst: am_parallel_apply_worker
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1593,1
    - Dst: pg_atomic_read_u32
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1599,1
    - Dst: pa_has_spooled_message_pending
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1601,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1604,1
    - Dst: pg_atomic_sub_fetch_u32
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1607,1
    - Dst: pa_lock_stream
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1609,1
    - Dst: pa_unlock_stream
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1610,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1612
      start: 1590
    functionDepth: 2
    functionLinenumber: 1590
    functionLinenumberEnd: 1612
    functionName: pa_decr_and_wait_stream_block
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - pg_atomic_read_u32
    - Assert
    - pa_lock_stream
    - pg_atomic_sub_fetch_u32
    - pa_has_spooled_message_pending
    - am_parallel_apply_worker
    - pa_unlock_stream
    - elog
    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:1620,1
    - Dst: am_leader_apply_worker
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1620,1
    - Dst: pa_unlock_stream
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1626,1
    - Dst: pa_wait_for_xact_finish
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1633,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1635,1
    - Dst: store_flush_position
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1636,1
    - Dst: pa_free_worker
      Src: /src/postgres/src/backend/replication/logical/applyparallelworker.c:1638,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - winfo
    - remote_lsn
    argTypes:
    - ParallelApplyWorkerInfo*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1639
      start: 1617
    functionDepth: 4
    functionLinenumber: 1617
    functionLinenumberEnd: 1639
    functionName: pa_xact_finish
    functionSourceFile: /src/postgres/src/backend/replication/logical/applyparallelworker.c
    functionUses: 0
    functionsReached:
    - Assert
    - am_leader_apply_worker
    - pa_unlock_stream
    - pa_free_worker
    - XLogRecPtrIsInvalid
    - pa_wait_for_xact_finish
    - store_flush_position
    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:98,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/decode.c:105,1
    - Dst: ReorderBufferAssignChild
      Src: /src/postgres/src/backend/replication/logical/decode.c:107,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:109,1
    - Dst: GetRmgr
      Src: /src/postgres/src/backend/replication/logical/decode.c:113,1
    - Dst: XLogRecGetRmid
      Src: /src/postgres/src/backend/replication/logical/decode.c:113,1
    - Dst: RmgrData::rm_decode
      Src: /src/postgres/src/backend/replication/logical/decode.c:116,1
    - Dst: ReorderBufferProcessXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:120,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:120,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - record
    argTypes:
    - LogicalDecodingContext*
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 123
    functionName: LogicalDecodingProcessRecord
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 1
    functionsReached:
    - XLogRecGetTopXid
    - XLogRecGetRmid
    - ReorderBufferAssignChild
    - RmgrData::rm_decode
    - ReorderBufferProcessXid
    - TransactionIdIsValid
    - GetRmgr
    - XLogRecGetXid
    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:132,1
    - Dst: ReorderBufferProcessXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:134,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:134,1
    - Dst: SnapBuildSerializationPoint
      Src: /src/postgres/src/backend/replication/logical/decode.c:142,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/decode.c:155,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/decode.c:174,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/logical/decode.c:174,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/decode.c:175,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/decode.c:176,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/decode.c:177,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/decode.c:193,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 2
    argNames:
    - ctx
    - buf
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 195
    functionName: xlog_decode
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - Assert
    - ReorderBufferProcessXid
    - ereport
    - XLogRecGetData
    - XLogRecGetInfo
    - elog
    - SnapBuildSerializationPoint
    - XLogRecGetXid
    - RecoveryInProgress
    linkageType: ''
    returnType: void
    signature: void xlog_decode(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/replication/logical/decode.c:206,1
    - Dst: SnapBuildCurrentState
      Src: /src/postgres/src/backend/replication/logical/decode.c:212,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/decode.c:225,1
    - Dst: ParseCommitRecord
      Src: /src/postgres/src/backend/replication/logical/decode.c:226,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/replication/logical/decode.c:226,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/decode.c:228,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:229,1
    - Dst: FilterPrepare
      Src: /src/postgres/src/backend/replication/logical/decode.c:239,1
    - Dst: DecodeCommit
      Src: /src/postgres/src/backend/replication/logical/decode.c:242,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/decode.c:253,1
    - Dst: ParseAbortRecord
      Src: /src/postgres/src/backend/replication/logical/decode.c:254,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/replication/logical/decode.c:254,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/decode.c:256,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:257,1
    - Dst: FilterPrepare
      Src: /src/postgres/src/backend/replication/logical/decode.c:267,1
    - Dst: DecodeAbort
      Src: /src/postgres/src/backend/replication/logical/decode.c:270,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:286,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/decode.c:287,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/decode.c:294,1
    - Dst: ReorderBufferAddInvalidations
      Src: /src/postgres/src/backend/replication/logical/decode.c:297,1
    - Dst: ReorderBufferXidSetCatalogChanges
      Src: /src/postgres/src/backend/replication/logical/decode.c:301,1
    - Dst: ReorderBufferImmediateInvalidation
      Src: /src/postgres/src/backend/replication/logical/decode.c:305,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/decode.c:317,1
    - Dst: ParsePrepareRecord
      Src: /src/postgres/src/backend/replication/logical/decode.c:318,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/replication/logical/decode.c:318,1
    - Dst: FilterPrepare
      Src: /src/postgres/src/backend/replication/logical/decode.c:326,1
    - Dst: ReorderBufferProcessXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:329,1
    - Dst: DecodePrepare
      Src: /src/postgres/src/backend/replication/logical/decode.c:347,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/decode.c:351,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 55
    argCount: 2
    argNames:
    - ctx
    - buf
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 200
    functionDepth: 2
    functionLinenumber: 200
    functionLinenumberEnd: 353
    functionName: xact_decode
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 0
    functionsReached:
    - SnapBuildCurrentState
    - DecodeAbort
    - ParseCommitRecord
    - TransactionIdIsValid
    - ReorderBufferAddInvalidations
    - FilterPrepare
    - ReorderBufferProcessXid
    - ParsePrepareRecord
    - XLogRecGetInfo
    - XLogRecGetData
    - DecodePrepare
    - elog
    - DecodeCommit
    - ReorderBufferXidSetCatalogChanges
    - XLogRecGetXid
    - ParseAbortRecord
    - ReorderBufferImmediateInvalidation
    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:363,1
    - Dst: ReorderBufferProcessXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:365,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:365,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/decode.c:371,1
    - Dst: SnapBuildProcessRunningXacts
      Src: /src/postgres/src/backend/replication/logical/decode.c:373,1
    - Dst: ReorderBufferAbortOld
      Src: /src/postgres/src/backend/replication/logical/decode.c:384,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/decode.c:397,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - ctx
    - buf
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 399
    functionName: standby_decode
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 0
    functionsReached:
    - ReorderBufferAbortOld
    - SnapBuildProcessRunningXacts
    - ReorderBufferProcessXid
    - XLogRecGetData
    - XLogRecGetInfo
    - elog
    - XLogRecGetXid
    linkageType: ''
    returnType: void
    signature: void standby_decode(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/replication/logical/decode.c:407,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:408,1
    - Dst: ReorderBufferProcessXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:411,1
    - Dst: SnapBuildCurrentState
      Src: /src/postgres/src/backend/replication/logical/decode.c:421,1
    - Dst: SnapBuildProcessChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:427,1
    - Dst: DecodeMultiInsert
      Src: /src/postgres/src/backend/replication/logical/decode.c:429,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/decode.c:436,1
    - Dst: SnapBuildProcessNewCid
      Src: /src/postgres/src/backend/replication/logical/decode.c:437,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/decode.c:461,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - ctx
    - buf
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 404
    functionDepth: 1
    functionLinenumber: 404
    functionLinenumberEnd: 463
    functionName: heap2_decode
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 0
    functionsReached:
    - SnapBuildCurrentState
    - SnapBuildProcessChange
    - ReorderBufferProcessXid
    - DecodeMultiInsert
    - XLogRecGetInfo
    - XLogRecGetData
    - elog
    - SnapBuildProcessNewCid
    - XLogRecGetXid
    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:471,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:472,1
    - Dst: ReorderBufferProcessXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:475,1
    - Dst: SnapBuildCurrentState
      Src: /src/postgres/src/backend/replication/logical/decode.c:485,1
    - Dst: SnapBuildProcessChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:491,1
    - Dst: DecodeInsert
      Src: /src/postgres/src/backend/replication/logical/decode.c:493,1
    - Dst: SnapBuildProcessChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:503,1
    - Dst: DecodeUpdate
      Src: /src/postgres/src/backend/replication/logical/decode.c:505,1
    - Dst: SnapBuildProcessChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:509,1
    - Dst: DecodeDelete
      Src: /src/postgres/src/backend/replication/logical/decode.c:511,1
    - Dst: SnapBuildProcessChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:515,1
    - Dst: DecodeTruncate
      Src: /src/postgres/src/backend/replication/logical/decode.c:517,1
    - Dst: SnapBuildProcessChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:540,1
    - Dst: DecodeSpecConfirm
      Src: /src/postgres/src/backend/replication/logical/decode.c:542,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/decode.c:550,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 34
    argCount: 2
    argNames:
    - ctx
    - buf
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 468
    functionDepth: 1
    functionLinenumber: 468
    functionLinenumberEnd: 553
    functionName: heap_decode
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 0
    functionsReached:
    - SnapBuildCurrentState
    - DecodeDelete
    - SnapBuildProcessChange
    - ReorderBufferProcessXid
    - XLogRecGetInfo
    - DecodeInsert
    - DecodeUpdate
    - elog
    - DecodeSpecConfirm
    - XLogRecGetXid
    - DecodeTruncate
    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:579,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - xid
    - gid
    argTypes:
    - LogicalDecodingContext*
    - TransactionId
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 559
    functionDepth: 1
    functionLinenumber: 559
    functionLinenumberEnd: 580
    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:588,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - origin_id
    argTypes:
    - LogicalDecodingContext*
    - RepOriginId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 582
    functionDepth: 1
    functionLinenumber: 582
    functionLinenumberEnd: 589
    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, RepOriginId origin_id)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:599,1
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/replication/logical/decode.c:600,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:601,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/decode.c:606,1
    - Dst: ReorderBufferProcessXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:608,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:608,1
    - Dst: SnapBuildCurrentState
      Src: /src/postgres/src/backend/replication/logical/decode.c:611,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/decode.c:614,1
    - Dst: FilterByOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:617,1
    - Dst: SnapBuildProcessChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:621,1
    - Dst: SnapBuildCurrentState
      Src: /src/postgres/src/backend/replication/logical/decode.c:624,1
    - Dst: SnapBuildXactNeedsSkip
      Src: /src/postgres/src/backend/replication/logical/decode.c:625,1
    - Dst: SnapBuildGetOrBuildSnapshot
      Src: /src/postgres/src/backend/replication/logical/decode.c:657,1
    - Dst: ReorderBufferQueueMessage
      Src: /src/postgres/src/backend/replication/logical/decode.c:659,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 21
    argCount: 2
    argNames:
    - ctx
    - buf
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 594
    functionDepth: 2
    functionLinenumber: 594
    functionLinenumberEnd: 665
    functionName: logicalmsg_decode
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 0
    functionsReached:
    - SnapBuildCurrentState
    - SnapBuildXactNeedsSkip
    - SnapBuildProcessChange
    - ReorderBufferProcessXid
    - XLogRecGetOrigin
    - XLogRecGetInfo
    - elog
    - XLogRecGetData
    - SnapBuildGetOrBuildSnapshot
    - FilterByOrigin
    - XLogRecGetXid
    - ReorderBufferQueueMessage
    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:682,1
    - Dst: SnapBuildCommitTxn
      Src: /src/postgres/src/backend/replication/logical/decode.c:691,1
    - Dst: DecodeTXNNeedSkip
      Src: /src/postgres/src/backend/replication/logical/decode.c:712,1
    - Dst: ReorderBufferForget
      Src: /src/postgres/src/backend/replication/logical/decode.c:716,1
    - Dst: ReorderBufferForget
      Src: /src/postgres/src/backend/replication/logical/decode.c:718,1
    - Dst: ReorderBufferCommitChild
      Src: /src/postgres/src/backend/replication/logical/decode.c:726,1
    - Dst: ReorderBufferFinishPrepared
      Src: /src/postgres/src/backend/replication/logical/decode.c:736,1
    - Dst: SnapBuildGetTwoPhaseAt
      Src: /src/postgres/src/backend/replication/logical/decode.c:737,1
    - Dst: ReorderBufferCommit
      Src: /src/postgres/src/backend/replication/logical/decode.c:743,1
    - Dst: UpdateDecodingStats
      Src: /src/postgres/src/backend/replication/logical/decode.c:753,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: 754
      start: 675
    functionDepth: 1
    functionLinenumber: 675
    functionLinenumberEnd: 754
    functionName: DecodeCommit
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 1
    functionsReached:
    - ReorderBufferCommit
    - XLogRecGetOrigin
    - UpdateDecodingStats
    - ReorderBufferCommitChild
    - ReorderBufferFinishPrepared
    - SnapBuildCommitTxn
    - SnapBuildGetTwoPhaseAt
    - ReorderBufferForget
    - DecodeTXNNeedSkip
    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:778,1
    - Dst: ReorderBufferRememberPrepareInfo
      Src: /src/postgres/src/backend/replication/logical/decode.c:789,1
    - Dst: SnapBuildCurrentState
      Src: /src/postgres/src/backend/replication/logical/decode.c:795,1
    - Dst: ReorderBufferSkipPrepare
      Src: /src/postgres/src/backend/replication/logical/decode.c:797,1
    - Dst: DecodeTXNNeedSkip
      Src: /src/postgres/src/backend/replication/logical/decode.c:813,1
    - Dst: ReorderBufferSkipPrepare
      Src: /src/postgres/src/backend/replication/logical/decode.c:815,1
    - Dst: ReorderBufferInvalidate
      Src: /src/postgres/src/backend/replication/logical/decode.c:816,1
    - Dst: ReorderBufferCommitChild
      Src: /src/postgres/src/backend/replication/logical/decode.c:823,1
    - Dst: ReorderBufferPrepare
      Src: /src/postgres/src/backend/replication/logical/decode.c:828,1
    - Dst: UpdateDecodingStats
      Src: /src/postgres/src/backend/replication/logical/decode.c:836,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: 837
      start: 771
    functionDepth: 1
    functionLinenumber: 771
    functionLinenumberEnd: 837
    functionName: DecodePrepare
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 1
    functionsReached:
    - ReorderBufferRememberPrepareInfo
    - SnapBuildCurrentState
    - ReorderBufferInvalidate
    - XLogRecGetOrigin
    - UpdateDecodingStats
    - ReorderBufferCommitChild
    - ReorderBufferPrepare
    - ReorderBufferSkipPrepare
    - DecodeTXNNeedSkip
    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:854,1
    - Dst: DecodeTXNNeedSkip
      Src: /src/postgres/src/backend/replication/logical/decode.c:868,1
    - Dst: ReorderBufferFinishPrepared
      Src: /src/postgres/src/backend/replication/logical/decode.c:876,1
    - Dst: ReorderBufferAbort
      Src: /src/postgres/src/backend/replication/logical/decode.c:885,1
    - Dst: ReorderBufferAbort
      Src: /src/postgres/src/backend/replication/logical/decode.c:889,1
    - Dst: UpdateDecodingStats
      Src: /src/postgres/src/backend/replication/logical/decode.c:894,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: 895
      start: 846
    functionDepth: 1
    functionLinenumber: 846
    functionLinenumberEnd: 895
    functionName: DecodeAbort
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 1
    functionsReached:
    - XLogRecGetOrigin
    - UpdateDecodingStats
    - ReorderBufferFinishPrepared
    - ReorderBufferAbort
    - DecodeTXNNeedSkip
    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:913,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/replication/logical/decode.c:923,1
    - Dst: FilterByOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:928,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:928,1
    - Dst: ReorderBufferAllocChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:931,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:936,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/decode.c:938,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/replication/logical/decode.c:940,1
    - Dst: ReorderBufferAllocTupleBuf
      Src: /src/postgres/src/backend/replication/logical/decode.c:944,1
    - Dst: DecodeXLogTuple
      Src: /src/postgres/src/backend/replication/logical/decode.c:946,1
    - Dst: ReorderBufferQueueChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:950,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:950,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - ctx
    - buf
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 902
    functionDepth: 2
    functionLinenumber: 902
    functionLinenumberEnd: 953
    functionName: DecodeInsert
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 1
    functionsReached:
    - XLogRecGetOrigin
    - ReorderBufferAllocChange
    - DecodeXLogTuple
    - XLogRecGetBlockTag
    - XLogRecGetData
    - ReorderBufferAllocTupleBuf
    - ReorderBufferQueueChange
    - XLogRecGetXid
    - FilterByOrigin
    - memcpy
    - XLogRecGetBlockData
    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:970,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/replication/logical/decode.c:973,1
    - Dst: FilterByOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:978,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:978,1
    - Dst: ReorderBufferAllocChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:981,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:983,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/decode.c:984,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/replication/logical/decode.c:991,1
    - Dst: ReorderBufferAllocTupleBuf
      Src: /src/postgres/src/backend/replication/logical/decode.c:996,1
    - Dst: DecodeXLogTuple
      Src: /src/postgres/src/backend/replication/logical/decode.c:998,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/decode.c:1007,1
    - Dst: XLogRecGetDataLen
      Src: /src/postgres/src/backend/replication/logical/decode.c:1008,1
    - Dst: ReorderBufferAllocTupleBuf
      Src: /src/postgres/src/backend/replication/logical/decode.c:1012,1
    - Dst: DecodeXLogTuple
      Src: /src/postgres/src/backend/replication/logical/decode.c:1014,1
    - Dst: ReorderBufferQueueChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:1019,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:1019,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - ctx
    - buf
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1021
      start: 961
    functionDepth: 2
    functionLinenumber: 961
    functionLinenumberEnd: 1021
    functionName: DecodeUpdate
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 1
    functionsReached:
    - XLogRecGetOrigin
    - ReorderBufferAllocChange
    - DecodeXLogTuple
    - XLogRecGetDataLen
    - XLogRecGetBlockTag
    - XLogRecGetData
    - ReorderBufferAllocTupleBuf
    - ReorderBufferQueueChange
    - XLogRecGetXid
    - FilterByOrigin
    - memcpy
    - XLogRecGetBlockData
    linkageType: ''
    returnType: void
    signature: void DecodeUpdate(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/decode.c:1036,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/replication/logical/decode.c:1039,1
    - Dst: FilterByOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:1044,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:1044,1
    - Dst: ReorderBufferAllocChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:1047,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:1054,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/decode.c:1056,1
    - Dst: XLogRecGetDataLen
      Src: /src/postgres/src/backend/replication/logical/decode.c:1061,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/decode.c:1064,1
    - Dst: XLogRecGetDataLen
      Src: /src/postgres/src/backend/replication/logical/decode.c:1064,1
    - Dst: ReorderBufferAllocTupleBuf
      Src: /src/postgres/src/backend/replication/logical/decode.c:1067,1
    - Dst: DecodeXLogTuple
      Src: /src/postgres/src/backend/replication/logical/decode.c:1069,1
    - Dst: ReorderBufferQueueChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:1075,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:1075,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - ctx
    - buf
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1077
      start: 1028
    functionDepth: 2
    functionLinenumber: 1028
    functionLinenumberEnd: 1077
    functionName: DecodeDelete
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 1
    functionsReached:
    - Assert
    - XLogRecGetOrigin
    - ReorderBufferAllocChange
    - XLogRecGetDataLen
    - DecodeXLogTuple
    - XLogRecGetBlockTag
    - XLogRecGetData
    - ReorderBufferAllocTupleBuf
    - XLogRecGetXid
    - FilterByOrigin
    - memcpy
    - ReorderBufferQueueChange
    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:1089,1
    - Dst: FilterByOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:1096,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:1096,1
    - Dst: ReorderBufferAllocChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:1099,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:1101,1
    - Dst: ReorderBufferAllocRelids
      Src: /src/postgres/src/backend/replication/logical/decode.c:1107,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/decode.c:1109,1
    - Dst: ReorderBufferQueueChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:1111,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:1111,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - buf
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1113
      start: 1082
    functionDepth: 2
    functionLinenumber: 1082
    functionLinenumberEnd: 1113
    functionName: DecodeTruncate
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 1
    functionsReached:
    - XLogRecGetOrigin
    - ReorderBufferAllocChange
    - XLogRecGetData
    - XLogRecGetXid
    - FilterByOrigin
    - memcpy
    - ReorderBufferAllocRelids
    - ReorderBufferQueueChange
    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:1131,1
    - Dst: XLogRecGetBlockTag
      Src: /src/postgres/src/backend/replication/logical/decode.c:1141,1
    - Dst: FilterByOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:1146,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:1146,1
    - Dst: XLogRecGetBlockData
      Src: /src/postgres/src/backend/replication/logical/decode.c:1153,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/decode.c:1154,1
    - Dst: ReorderBufferAllocChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:1165,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:1167,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/decode.c:1169,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/replication/logical/decode.c:1171,1
    - Dst: ReorderBufferAllocTupleBuf
      Src: /src/postgres/src/backend/replication/logical/decode.c:1176,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/replication/logical/decode.c:1182,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/decode.c:1191,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/decode.c:1193,1
    - Dst: ReorderBufferQueueChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:1209,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:1209,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/decode.c:1215,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 2
    argNames:
    - ctx
    - buf
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1216
      start: 1120
    functionDepth: 2
    functionLinenumber: 1120
    functionLinenumberEnd: 1216
    functionName: DecodeMultiInsert
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 1
    functionsReached:
    - Assert
    - XLogRecGetOrigin
    - ReorderBufferAllocChange
    - memset
    - ItemPointerSetInvalid
    - SHORTALIGN
    - XLogRecGetBlockTag
    - XLogRecGetData
    - ReorderBufferAllocTupleBuf
    - ReorderBufferQueueChange
    - XLogRecGetXid
    - FilterByOrigin
    - memcpy
    - 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:1232,1
    - Dst: FilterByOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:1237,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:1237,1
    - Dst: ReorderBufferAllocChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:1240,1
    - Dst: XLogRecGetOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:1242,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/decode.c:1244,1
    - Dst: ReorderBufferQueueChange
      Src: /src/postgres/src/backend/replication/logical/decode.c:1248,1
    - Dst: XLogRecGetXid
      Src: /src/postgres/src/backend/replication/logical/decode.c:1248,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - buf
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1250
      start: 1224
    functionDepth: 2
    functionLinenumber: 1224
    functionLinenumberEnd: 1250
    functionName: DecodeSpecConfirm
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 1
    functionsReached:
    - XLogRecGetOrigin
    - ReorderBufferAllocChange
    - XLogRecGetBlockTag
    - XLogRecGetXid
    - FilterByOrigin
    - memcpy
    - ReorderBufferQueueChange
    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:1267,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/replication/logical/decode.c:1273,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/decode.c:1279,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/decode.c:1281,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/decode.c:1283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - data
    - len
    - tuple
    argTypes:
    - char*
    - Size
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1290
      start: 1260
    functionDepth: 2
    functionLinenumber: 1260
    functionLinenumberEnd: 1290
    functionName: DecodeXLogTuple
    functionSourceFile: /src/postgres/src/backend/replication/logical/decode.c
    functionUses: 3
    functionsReached:
    - memset
    - memcpy
    - Assert
    - ItemPointerSetInvalid
    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:1308,1
    - Dst: FilterByOrigin
      Src: /src/postgres/src/backend/replication/logical/decode.c:1310,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 4
    argNames:
    - ctx
    - buf
    - txn_dbid
    - origin_id
    argTypes:
    - LogicalDecodingContext*
    - XLogRecordBuffer*
    - Oid
    - RepOriginId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1325
      start: 1304
    functionDepth: 2
    functionLinenumber: 1304
    functionLinenumberEnd: 1325
    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, RepOriginId origin_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:193,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:194,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:195,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/logical/origin.c:197,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:198,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:199,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:200,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 2
    argNames:
    - check_origins
    - recoveryOK
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 201
    functionName: replorigin_check_prerequisites
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - errmsg
    - RecoveryInProgress
    - errcode
    - ereport
    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:211,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/replication/logical/origin.c:212,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 208
    functionDepth: 2
    functionLinenumber: 208
    functionLinenumberEnd: 213
    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:233,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/replication/logical/origin.c:235,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/replication/logical/origin.c:236,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/replication/logical/origin.c:238,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/replication/logical/origin.c:240,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:243,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:244,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:245,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - roname
    - missing_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 249
    functionName: replorigin_by_name
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 1
    functionsReached:
    - errmsg
    - ReleaseSysCache
    - CStringGetTextDatum
    - HeapTupleIsValid
    - GETSTRUCT
    - ereport
    - SearchSysCache1
    - errcode
    linkageType: ''
    returnType: RepOriginId
    signature: RepOriginId replorigin_by_name(const char *roname, bool missing_ok)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/logical/origin.c:272,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:273,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:274,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:275,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/origin.c:276,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/logical/origin.c:279,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:281,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/origin.c:281,1
    - Dst: InitDirtySnapshot
      Src: /src/postgres/src/backend/replication/logical/origin.c:298,1
    - Dst: table_open
      Src: /src/postgres/src/backend/replication/logical/origin.c:300,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:311,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/origin.c:311,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/origin.c:319,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/replication/logical/origin.c:321,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/logical/origin.c:324,1
    - Dst: systable_beginscan
      Src: /src/postgres/src/backend/replication/logical/origin.c:326,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/replication/logical/origin.c:331,1
    - Dst: systable_getnext
      Src: /src/postgres/src/backend/replication/logical/origin.c:331,1
    - Dst: systable_endscan
      Src: /src/postgres/src/backend/replication/logical/origin.c:333,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/origin.c:341,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/logical/origin.c:343,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/replication/logical/origin.c:346,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/origin.c:346,1
    - Dst: CatalogTupleInsert
      Src: /src/postgres/src/backend/replication/logical/origin.c:347,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/replication/logical/origin.c:348,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/origin.c:354,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:357,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:358,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:359,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/replication/logical/origin.c:361,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 1
    argNames:
    - roname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 256
    functionDepth: 7
    functionLinenumber: 256
    functionLinenumberEnd: 363
    functionName: replorigin_create
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - CHECK_FOR_INTERRUPTS
    - HeapTupleIsValid
    - IsTransactionState
    - errdetail
    - strlen
    - CatalogTupleInsert
    - table_open
    - heap_freetuple
    - ScanKeyInit
    - InitDirtySnapshot
    - errmsg
    - heap_form_tuple
    - CommandCounterIncrement
    - OidIsValid
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    - Assert
    - systable_beginscan
    - CStringGetTextDatum
    - systable_getnext
    - memset
    - RelationGetDescr
    - ereport
    - errcode
    linkageType: ''
    returnType: RepOriginId
    signature: RepOriginId replorigin_create(const char *roname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:377,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:391,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:392,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:393,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:406,1
    - Dst: ConditionVariableSleep
      Src: /src/postgres/src/backend/replication/logical/origin.c:408,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/replication/logical/origin.c:417,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/replication/logical/origin.c:418,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/replication/logical/origin.c:419,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:429,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/replication/logical/origin.c:430,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - roident
    - nowait
    argTypes:
    - RepOriginId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 368
    functionDepth: 3
    functionLinenumber: 368
    functionLinenumberEnd: 431
    functionName: replorigin_state_clear
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - errmsg
    - XLogBeginInsert
    - ConditionVariableCancelSleep
    - XLogInsert
    - ereport
    - XLogRegisterData
    - ConditionVariableSleep
    - LWLockRelease
    - LWLockAcquire
    - errcode
    linkageType: ''
    returnType: void
    signature: void replorigin_state_clear(RepOriginId roident, bool nowait)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:445,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/origin.c:445,1
    - Dst: table_open
      Src: /src/postgres/src/backend/replication/logical/origin.c:447,1
    - Dst: replorigin_by_name
      Src: /src/postgres/src/backend/replication/logical/origin.c:449,1
    - Dst: LockSharedObject
      Src: /src/postgres/src/backend/replication/logical/origin.c:452,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/replication/logical/origin.c:455,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/logical/origin.c:455,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/replication/logical/origin.c:456,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/origin.c:459,1
    - Dst: UnlockSharedObject
      Src: /src/postgres/src/backend/replication/logical/origin.c:465,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/origin.c:467,1
    - Dst: replorigin_state_clear
      Src: /src/postgres/src/backend/replication/logical/origin.c:471,1
    - Dst: CatalogTupleDelete
      Src: /src/postgres/src/backend/replication/logical/origin.c:476,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/replication/logical/origin.c:477,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/replication/logical/origin.c:479,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/origin.c:482,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 3
    argNames:
    - name
    - missing_ok
    - nowait
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 438
    functionDepth: 7
    functionLinenumber: 438
    functionLinenumberEnd: 483
    functionName: replorigin_drop_by_name
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - Assert
    - LockSharedObject
    - ReleaseSysCache
    - table_open
    - CommandCounterIncrement
    - replorigin_by_name
    - HeapTupleIsValid
    - replorigin_state_clear
    - SearchSysCache1
    - elog
    - UnlockSharedObject
    - IsTransactionState
    - table_close
    - CatalogTupleDelete
    - ObjectIdGetDatum
    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:498,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/origin.c:498,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:499,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:500,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/replication/logical/origin.c:502,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/logical/origin.c:503,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/replication/logical/origin.c:505,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/replication/logical/origin.c:507,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/replication/logical/origin.c:508,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/replication/logical/origin.c:509,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:518,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:519,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:520,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - roident
    - missing_ok
    - roname
    argTypes:
    - RepOriginId
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 525
    functionName: replorigin_by_oid
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 2
    functionsReached:
    - errmsg
    - errcode
    - Assert
    - text_to_cstring
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - ereport
    - SearchSysCache1
    - OidIsValid
    - ObjectIdGetDatum
    linkageType: ''
    returnType: bool
    signature: bool replorigin_by_oid(RepOriginId roident, bool missing_ok, char **roname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/replication/logical/origin.c:541,1
    - Dst: add_size
      Src: /src/postgres/src/backend/replication/logical/origin.c:543,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/replication/logical/origin.c:544,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 533
    functionDepth: 1
    functionLinenumber: 533
    functionLinenumberEnd: 546
    functionName: ReplicationOriginShmemSize
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - add_size
    - mul_size
    linkageType: ''
    returnType: Size
    signature: Size ReplicationOriginShmemSize(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ShmemInitStruct
      Src: /src/postgres/src/backend/replication/logical/origin.c:557,1
    - Dst: ReplicationOriginShmemSize
      Src: /src/postgres/src/backend/replication/logical/origin.c:558,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/replication/logical/origin.c:566,1
    - Dst: ReplicationOriginShmemSize
      Src: /src/postgres/src/backend/replication/logical/origin.c:566,1
    - Dst: LWLockInitialize
      Src: /src/postgres/src/backend/replication/logical/origin.c:572,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/backend/replication/logical/origin.c:574,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 548
    functionDepth: 2
    functionLinenumber: 548
    functionLinenumberEnd: 577
    functionName: ReplicationOriginShmemInit
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - LWLockInitialize
    - ReplicationOriginShmemSize
    - MemSet
    - ConditionVariableInit
    - ShmemInitStruct
    linkageType: ''
    returnType: void
    signature: void ReplicationOriginShmemInit(void)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/backend/replication/logical/origin.c:608,1
    - Dst: unlink
      Src: /src/postgres/src/backend/replication/logical/origin.c:611,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:612,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/origin.c:613,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:614,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/replication/logical/origin.c:621,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:624,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/origin.c:625,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:626,1
    - Dst: write
      Src: /src/postgres/src/backend/replication/logical/origin.c:631,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:636,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/origin.c:637,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:638,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/logical/origin.c:641,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:644,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/origin.c:657,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:659,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:666,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/replication/logical/origin.c:669,1
    - Dst: write
      Src: /src/postgres/src/backend/replication/logical/origin.c:672,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:678,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/origin.c:679,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:680,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/logical/origin.c:684,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:687,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/backend/replication/logical/origin.c:690,1
    - Dst: write
      Src: /src/postgres/src/backend/replication/logical/origin.c:692,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:697,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/origin.c:698,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:699,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/logical/origin.c:703,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:704,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/origin.c:705,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:706,1
    - Dst: durable_rename
      Src: /src/postgres/src/backend/replication/logical/origin.c:710,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 46
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 595
    functionDepth: 5
    functionLinenumber: 595
    functionLinenumberEnd: 711
    functionName: CheckPointReplicationOrigin
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 1
    functionsReached:
    - errmsg
    - write
    - COMP_CRC32C
    - durable_rename
    - CloseTransientFile
    - memset
    - FIN_CRC32C
    - INIT_CRC32C
    - ereport
    - XLogFlush
    - OpenTransientFile
    - unlink
    - LWLockRelease
    - LWLockAcquire
    - 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:736,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/backend/replication/logical/origin.c:743,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/origin.c:745,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/replication/logical/origin.c:747,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:756,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/origin.c:757,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:758,1
    - Dst: read
      Src: /src/postgres/src/backend/replication/logical/origin.c:762,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:766,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/origin.c:767,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:768,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:771,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:772,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:773,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/logical/origin.c:776,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:779,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:780,1
    - Dst: read
      Src: /src/postgres/src/backend/replication/logical/origin.c:790,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:802,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/origin.c:803,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:804,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:810,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/origin.c:811,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:812,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/logical/origin.c:816,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:819,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:820,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:821,1
    - Dst: ereport
      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: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/origin.c:831,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/backend/replication/logical/origin.c:835,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:837,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:838,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:839,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/logical/origin.c:842,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:843,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/origin.c:844,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:845,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 46
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 721
    functionDepth: 1
    functionLinenumber: 721
    functionLinenumberEnd: 847
    functionName: StartupReplicationOrigin
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 1
    functionsReached:
    - errmsg
    - COMP_CRC32C
    - Assert
    - LSN_FORMAT_ARGS
    - CloseTransientFile
    - FIN_CRC32C
    - INIT_CRC32C
    - ereport
    - OpenTransientFile
    - elog
    - read
    - errcode
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void StartupReplicationOrigin(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XLogRecGetInfo
      Src: /src/postgres/src/backend/replication/logical/origin.c:852,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/origin.c:859,1
    - Dst: replorigin_advance
      Src: /src/postgres/src/backend/replication/logical/origin.c:861,1
    - Dst: XLogRecGetData
      Src: /src/postgres/src/backend/replication/logical/origin.c:872,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/origin.c:891,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - record
    argTypes:
    - XLogReaderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 849
    functionDepth: 1
    functionLinenumber: 849
    functionLinenumberEnd: 893
    functionName: replorigin_redo
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - XLogRecGetInfo
    - replorigin_advance
    - elog
    - 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:919,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:933,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:960,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:965,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:966,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:967,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:976,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:977,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:978,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/logical/origin.c:980,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:985,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:987,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:988,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:992,1
    - Dst: XLogBeginInsert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1007,1
    - Dst: XLogRegisterData
      Src: /src/postgres/src/backend/replication/logical/origin.c:1008,1
    - Dst: XLogInsert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1010,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:1026,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:1032,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 44
    argCount: 5
    argNames:
    - node
    - remote_commit
    - local_commit
    - go_backward
    - wal_log
    argTypes:
    - RepOriginId
    - XLogRecPtr
    - XLogRecPtr
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 910
    functionDepth: 3
    functionLinenumber: 910
    functionLinenumberEnd: 1033
    functionName: replorigin_advance
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 4
    functionsReached:
    - errmsg
    - Assert
    - XLogBeginInsert
    - XLogInsert
    - ereport
    - errhint
    - XLogRegisterData
    - LWLockRelease
    - LWLockAcquire
    - errcode
    linkageType: ''
    returnType: void
    signature: "void replorigin_advance(RepOriginId 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:1044,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:1054,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:1059,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:1065,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/replication/logical/origin.c:1068,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - node
    - flush
    argTypes:
    - RepOriginId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1071
      start: 1036
    functionDepth: 5
    functionLinenumber: 1036
    functionLinenumberEnd: 1071
    functionName: replorigin_get_progress
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - LWLockRelease
    - LWLockAcquire
    - XLogFlush
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr replorigin_get_progress(RepOriginId node, bool flush)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:1085,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:1095,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/logical/origin.c:1098,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1099
      start: 1077
    functionDepth: 1
    functionLinenumber: 1077
    functionLinenumberEnd: 1099
    functionName: ReplicationOriginExitCleanup
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - LWLockRelease
    - LWLockAcquire
    - ConditionVariableBroadcast
    linkageType: ''
    returnType: void
    signature: void ReplicationOriginExitCleanup(int code, Datum arg)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: on_shmem_exit
      Src: /src/postgres/src/backend/replication/logical/origin.c:1128,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1132,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:1135,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:1136,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:1137,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:1140,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:1164,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:1165,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:1166,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:1177,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:1178,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:1179,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/logical/origin.c:1181,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1186,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1187,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1192,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/origin.c:1197,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:1200,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/logical/origin.c:1203,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 37
    argCount: 2
    argNames:
    - node
    - acquired_by
    argTypes:
    - RepOriginId
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1204
      start: 1119
    functionDepth: 1
    functionLinenumber: 1119
    functionLinenumberEnd: 1204
    functionName: replorigin_session_setup
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 1
    functionsReached:
    - errmsg
    - Assert
    - on_shmem_exit
    - ereport
    - errhint
    - elog
    - ConditionVariableBroadcast
    - LWLockRelease
    - LWLockAcquire
    - errcode
    linkageType: ''
    returnType: void
    signature: void replorigin_session_setup(RepOriginId node, int acquired_by)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1217,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:1220,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:1221,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:1222,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:1224,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:1230,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/replication/logical/origin.c:1232,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1233
      start: 1212
    functionDepth: 1
    functionLinenumber: 1212
    functionLinenumberEnd: 1233
    functionName: replorigin_session_reset
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - ereport
    - ConditionVariableBroadcast
    - LWLockRelease
    - LWLockAcquire
    - errcode
    linkageType: ''
    returnType: void
    signature: void replorigin_session_reset(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1244,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1245,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:1247,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:1252,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - remote_commit
    - local_commit
    argTypes:
    - XLogRecPtr
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1253
      start: 1241
    functionDepth: 1
    functionLinenumber: 1241
    functionLinenumberEnd: 1253
    functionName: replorigin_session_advance
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 5
    functionsReached:
    - Assert
    - LWLockRelease
    - LWLockAcquire
    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:1265,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:1267,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:1270,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/replication/logical/origin.c:1273,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - flush
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1259
    functionDepth: 5
    functionLinenumber: 1259
    functionLinenumberEnd: 1276
    functionName: replorigin_session_get_progress
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - Assert
    - LWLockRelease
    - LWLockAcquire
    - XLogFlush
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr replorigin_session_get_progress(bool flush)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: replorigin_check_prerequisites
      Src: /src/postgres/src/backend/replication/logical/origin.c:1297,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/replication/logical/origin.c:1299,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/origin.c:1299,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/replication/logical/origin.c:1299,1
    - Dst: IsReservedName
      Src: /src/postgres/src/backend/replication/logical/origin.c:1305,1
    - Dst: IsReservedOriginName
      Src: /src/postgres/src/backend/replication/logical/origin.c:1305,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: errdetail
      Src: /src/postgres/src/backend/replication/logical/origin.c:1310,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/replication/logical/origin.c:1318,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/origin.c:1319,1
    - Dst: replorigin_create
      Src: /src/postgres/src/backend/replication/logical/origin.c:1322,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/origin.c:1324,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/replication/logical/origin.c:1326,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1327
      start: 1291
    functionDepth: 8
    functionLinenumber: 1291
    functionLinenumberEnd: 1327
    functionName: pg_replication_origin_create
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - replorigin_create
    - pfree
    - IsReservedOriginName
    - IsReservedName
    - strncmp
    - ereport
    - PG_RETURN_OID
    - elog
    - PG_GETARG_DATUM
    - errdetail
    - replorigin_check_prerequisites
    - DatumGetPointer
    - text_to_cstring
    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:1337,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/replication/logical/origin.c:1339,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/origin.c:1339,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/replication/logical/origin.c:1339,1
    - Dst: replorigin_drop_by_name
      Src: /src/postgres/src/backend/replication/logical/origin.c:1341,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/origin.c:1343,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/replication/logical/origin.c:1345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1346
      start: 1332
    functionDepth: 8
    functionLinenumber: 1332
    functionLinenumberEnd: 1346
    functionName: pg_replication_origin_drop
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - pfree
    - PG_RETURN_VOID
    - replorigin_drop_by_name
    - PG_GETARG_DATUM
    - replorigin_check_prerequisites
    - DatumGetPointer
    - text_to_cstring
    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:1357,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/replication/logical/origin.c:1359,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/origin.c:1359,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/replication/logical/origin.c:1359,1
    - Dst: replorigin_by_name
      Src: /src/postgres/src/backend/replication/logical/origin.c:1360,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/origin.c:1362,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/origin.c:1364,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/replication/logical/origin.c:1365,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/replication/logical/origin.c:1366,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1367
      start: 1351
    functionDepth: 2
    functionLinenumber: 1351
    functionLinenumberEnd: 1367
    functionName: pg_replication_origin_oid
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - pfree
    - replorigin_by_name
    - PG_RETURN_OID
    - PG_RETURN_NULL
    - OidIsValid
    - PG_GETARG_DATUM
    - replorigin_check_prerequisites
    - DatumGetPointer
    - text_to_cstring
    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:1378,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/replication/logical/origin.c:1380,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/origin.c:1380,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/replication/logical/origin.c:1380,1
    - Dst: replorigin_by_name
      Src: /src/postgres/src/backend/replication/logical/origin.c:1381,1
    - Dst: replorigin_session_setup
      Src: /src/postgres/src/backend/replication/logical/origin.c:1382,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/origin.c:1386,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/replication/logical/origin.c:1388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1389
      start: 1372
    functionDepth: 2
    functionLinenumber: 1372
    functionLinenumberEnd: 1389
    functionName: pg_replication_origin_session_setup
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - pfree
    - replorigin_by_name
    - PG_RETURN_VOID
    - replorigin_session_setup
    - PG_GETARG_DATUM
    - replorigin_check_prerequisites
    - DatumGetPointer
    - text_to_cstring
    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:1397,1
    - Dst: replorigin_session_reset
      Src: /src/postgres/src/backend/replication/logical/origin.c:1399,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/replication/logical/origin.c:1405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1406
      start: 1394
    functionDepth: 2
    functionLinenumber: 1394
    functionLinenumberEnd: 1406
    functionName: pg_replication_origin_session_reset
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - replorigin_check_prerequisites
    - replorigin_session_reset
    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:1414,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/replication/logical/origin.c:1416,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1417
      start: 1411
    functionDepth: 2
    functionLinenumber: 1411
    functionLinenumberEnd: 1417
    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:1431,1
    - Dst: replorigin_check_prerequisites
      Src: /src/postgres/src/backend/replication/logical/origin.c:1433,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:1436,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:1437,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:1438,1
    - Dst: replorigin_session_get_progress
      Src: /src/postgres/src/backend/replication/logical/origin.c:1440,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/replication/logical/origin.c:1443,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/replication/logical/origin.c:1445,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1446
      start: 1427
    functionDepth: 6
    functionLinenumber: 1427
    functionLinenumberEnd: 1446
    functionName: pg_replication_origin_session_progress
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_LSN
    - ereport
    - PG_RETURN_NULL
    - PG_GETARG_BOOL
    - replorigin_session_get_progress
    - replorigin_check_prerequisites
    - errcode
    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:1451,1
    - Dst: replorigin_check_prerequisites
      Src: /src/postgres/src/backend/replication/logical/origin.c:1453,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/origin.c:1456,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/origin.c:1457,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/origin.c:1458,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/replication/logical/origin.c:1461,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/replication/logical/origin.c:1463,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1464
      start: 1448
    functionDepth: 2
    functionLinenumber: 1448
    functionLinenumberEnd: 1464
    functionName: pg_replication_origin_xact_setup
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_VOID
    - PG_GETARG_LSN
    - ereport
    - PG_GETARG_TIMESTAMPTZ
    - replorigin_check_prerequisites
    - errcode
    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:1469,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/replication/logical/origin.c:1474,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1475
      start: 1466
    functionDepth: 2
    functionLinenumber: 1466
    functionLinenumberEnd: 1475
    functionName: pg_replication_origin_xact_reset
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_VOID
    - replorigin_check_prerequisites
    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:1481,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/replication/logical/origin.c:1482,1
    - Dst: replorigin_check_prerequisites
      Src: /src/postgres/src/backend/replication/logical/origin.c:1485,1
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/replication/logical/origin.c:1488,1
    - Dst: replorigin_by_name
      Src: /src/postgres/src/backend/replication/logical/origin.c:1490,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/replication/logical/origin.c:1490,1
    - Dst: replorigin_advance
      Src: /src/postgres/src/backend/replication/logical/origin.c:1497,1
    - Dst: UnlockRelationOid
      Src: /src/postgres/src/backend/replication/logical/origin.c:1500,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/replication/logical/origin.c:1502,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1503
      start: 1478
    functionDepth: 4
    functionLinenumber: 1478
    functionLinenumberEnd: 1503
    functionName: pg_replication_origin_advance
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - LockRelationOid
    - replorigin_by_name
    - PG_GETARG_TEXT_PP
    - UnlockRelationOid
    - PG_RETURN_VOID
    - PG_GETARG_LSN
    - replorigin_advance
    - replorigin_check_prerequisites
    - text_to_cstring
    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:1521,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/replication/logical/origin.c:1523,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/origin.c:1523,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/replication/logical/origin.c:1523,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/replication/logical/origin.c:1524,1
    - Dst: replorigin_by_name
      Src: /src/postgres/src/backend/replication/logical/origin.c:1526,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/origin.c:1527,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/origin.c:1527,1
    - Dst: replorigin_get_progress
      Src: /src/postgres/src/backend/replication/logical/origin.c:1529,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/replication/logical/origin.c:1532,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/replication/logical/origin.c:1534,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1535
      start: 1513
    functionDepth: 6
    functionLinenumber: 1513
    functionLinenumberEnd: 1535
    functionName: pg_replication_origin_progress
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - Assert
    - replorigin_by_name
    - PG_RETURN_LSN
    - replorigin_get_progress
    - PG_RETURN_NULL
    - PG_GETARG_BOOL
    - OidIsValid
    - PG_GETARG_DATUM
    - replorigin_check_prerequisites
    - DatumGetPointer
    - text_to_cstring
    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:1546,1
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/replication/logical/origin.c:1548,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:1551,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/origin.c:1571,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/origin.c:1572,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/logical/origin.c:1574,1
    - Dst: replorigin_by_oid
      Src: /src/postgres/src/backend/replication/logical/origin.c:1581,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/replication/logical/origin.c:1584,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/origin.c:1588,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/logical/origin.c:1590,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/logical/origin.c:1593,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:1596,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/replication/logical/origin.c:1598,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/origin.c:1602,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1607
      start: 1538
    functionDepth: 2
    functionLinenumber: 1538
    functionLinenumberEnd: 1607
    functionName: pg_show_replication_origin_status
    functionSourceFile: /src/postgres/src/backend/replication/logical/origin.c
    functionUses: 0
    functionsReached:
    - tuplestore_putvalues
    - replorigin_by_oid
    - memset
    - CStringGetTextDatum
    - LWLockRelease
    - InitMaterializedSRF
    - LSNGetDatum
    - replorigin_check_prerequisites
    - LWLockAcquire
    - 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:197,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:200,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:202,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:212,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:224,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: 227
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 227
    functionName: AllocateSnapshotBuilder
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - AllocSetContextCreate
    - palloc0
    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:240,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - builder
    argTypes:
    - SnapBuild*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 246
    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:255,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:258,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:259,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:260,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:261,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:265,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:268,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:270,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - snap
    argTypes:
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 271
    functionName: SnapBuildFreeSnapshot
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - 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: 280
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 280
    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: 289
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 289
    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: 298
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 298
    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: 307
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 307
    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: 319
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 319
    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:331,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:334,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:335,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:336,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:340,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:344,1
    - Dst: SnapBuildFreeSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:348,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - snap
    argTypes:
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 327
    functionDepth: 2
    functionLinenumber: 327
    functionLinenumberEnd: 349
    functionName: SnapBuildSnapDecRefcount
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached:
    - Assert
    - elog
    - SnapBuildFreeSnapshot
    linkageType: ''
    returnType: void
    signature: void SnapBuildSnapDecRefcount(Snapshot snap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:365,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:371,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:396,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:396,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:397,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:397,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:406,1
    - Dst: qsort
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:411,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 1
    argNames:
    - builder
    argTypes:
    - SnapBuild*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 359
    functionDepth: 1
    functionLinenumber: 359
    functionLinenumberEnd: 430
    functionName: SnapBuildBuildSnapshot
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 0
    functionsReached:
    - Assert
    - qsort
    - MemoryContextAllocZero
    - TransactionIdIsNormal
    - memcpy
    linkageType: ''
    returnType: Snapshot
    signature: Snapshot SnapBuildBuildSnapshot(SnapBuild *builder)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:448,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:449,1
    - Dst: InvalidateCatalogSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:452,1
    - Dst: HaveRegisteredOrActiveSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:453,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:454,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:455,1
    - Dst: HistoricSnapshotActive
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:455,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:458,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:461,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:464,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:465,1
    - Dst: SnapBuildBuildSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:467,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:478,1
    - Dst: GetOldestSafeDecodingTransactionId
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:479,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:480,1
    - Dst: TransactionIdFollows
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:482,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:483,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:490,1
    - Dst: GetMaxSnapshotXidCount
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:490,1
    - Dst: NormalTransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:498,1
    - Dst: bsearch
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:506,1
    - Dst: GetMaxSnapshotXidCount
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:511,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:512,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:513,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:514,1
    - Dst: TransactionIdAdvance
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:519,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 1
    argNames:
    - builder
    argTypes:
    - SnapBuild*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 439
    functionDepth: 2
    functionLinenumber: 439
    functionLinenumberEnd: 528
    functionName: SnapBuildInitialSnapshot
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached:
    - HaveRegisteredOrActiveSnapshot
    - SnapBuildBuildSnapshot
    - InvalidateCatalogSnapshot
    - LWLockRelease
    - TransactionIdFollows
    - GetMaxSnapshotXidCount
    - NormalTransactionIdPrecedes
    - errmsg
    - GetOldestSafeDecodingTransactionId
    - TransactionIdIsValid
    - HistoricSnapshotActive
    - elog
    - bsearch
    - palloc
    - Assert
    - ereport
    - LWLockAcquire
    - errcode
    - TransactionIdAdvance
    linkageType: ''
    returnType: Snapshot
    signature: Snapshot SnapBuildInitialSnapshot(SnapBuild *builder)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IsTransactionOrTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:544,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:545,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:548,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:553,1
    - Dst: SnapBuildInitialSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:559,1
    - Dst: ExportSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:565,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:567,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:568,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - builder
    argTypes:
    - SnapBuild*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 538
    functionDepth: 3
    functionLinenumber: 538
    functionLinenumberEnd: 573
    functionName: SnapBuildExportSnapshot
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached:
    - IsTransactionOrTransactionBlock
    - ereport
    - SnapBuildInitialSnapshot
    - elog
    - ExportSnapshot
    - errmsg_plural
    - StartTransactionCommand
    linkageType: ''
    returnType: char
    signature: 'char *

      SnapBuildExportSnapshot(SnapBuild *builder)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:581,1
    - Dst: SnapBuildBuildSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:586,1
    - Dst: SnapBuildSnapIncRefcount
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:588,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - builder
    argTypes:
    - SnapBuild*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 578
    functionDepth: 2
    functionLinenumber: 578
    functionLinenumberEnd: 592
    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:608,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:609,1
    - Dst: AbortCurrentTransaction
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:618,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 599
    functionDepth: 2
    functionLinenumber: 599
    functionLinenumberEnd: 621
    functionName: SnapBuildClearExportedSnapshot
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached:
    - AbortCurrentTransaction
    - elog
    - IsTransactionState
    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: 631
      start: 626
    functionDepth: 0
    functionLinenumber: 626
    functionLinenumberEnd: 631
    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:654,1
    - Dst: ReorderBufferXidHasBaseSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:661,1
    - Dst: SnapBuildBuildSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:666,1
    - Dst: SnapBuildSnapIncRefcount
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:668,1
    - Dst: SnapBuildSnapIncRefcount
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:675,1
    - Dst: ReorderBufferSetBaseSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:676,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - builder
    - xid
    - lsn
    argTypes:
    - SnapBuild*
    - TransactionId
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 638
    functionDepth: 2
    functionLinenumber: 638
    functionLinenumberEnd: 681
    functionName: SnapBuildProcessChange
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 3
    functionsReached:
    - SnapBuildSnapIncRefcount
    - ReorderBufferSetBaseSnapshot
    - ReorderBufferXidHasBaseSnapshot
    - SnapBuildBuildSnapshot
    - TransactionIdPrecedes
    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:698,1
    - Dst: ReorderBufferAddNewTupleCids
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:700,1
    - Dst: Max
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:708,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:716,1
    - Dst: ReorderBufferAddNewCommandId
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:719,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: 720
      start: 688
    functionDepth: 1
    functionLinenumber: 688
    functionLinenumberEnd: 720
    functionName: SnapBuildProcessNewCid
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached:
    - ReorderBufferAddNewTupleCids
    - Max
    - elog
    - ReorderBufferAddNewCommandId
    - 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:742,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:744,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:746,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:746,1
    - Dst: ReorderBufferXidHasBaseSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:767,1
    - Dst: rbtxn_is_prepared
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:774,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:777,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:778,1
    - Dst: SnapBuildSnapIncRefcount
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:784,1
    - Dst: ReorderBufferAddSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:785,1
    - Dst: ReorderBufferGetInvalidations
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:810,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:815,1
    - Dst: ReorderBufferAddDistributedInvalidations
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:817,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - builder
    - lsn
    - xid
    argTypes:
    - SnapBuild*
    - XLogRecPtr
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 730
    functionDepth: 1
    functionLinenumber: 730
    functionLinenumberEnd: 823
    functionName: SnapBuildDistributeSnapshotAndInval
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - Assert
    - SnapBuildSnapIncRefcount
    - ReorderBufferAddSnapshot
    - ReorderBufferGetInvalidations
    - TransactionIdIsValid
    - dlist_foreach
    - rbtxn_is_prepared
    - ReorderBufferXidHasBaseSnapshot
    - elog
    - ReorderBufferAddDistributedInvalidations
    - dlist_container
    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:831,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:831,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:837,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:840,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - builder
    - xid
    argTypes:
    - SnapBuild*
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 850
      start: 828
    functionDepth: 1
    functionLinenumber: 828
    functionLinenumberEnd: 850
    functionName: SnapBuildAddCommittedTxn
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsValid
    - Assert
    - repalloc
    - elog
    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:870,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:875,1
    - Dst: NormalTransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:881,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:889,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:892,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:897,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:911,1
    - Dst: memmove
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:920,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:925,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:929,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 1
    argNames:
    - builder
    argTypes:
    - SnapBuild*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 862
    functionDepth: 2
    functionLinenumber: 862
    functionLinenumberEnd: 934
    functionName: SnapBuildPurgeOlderTxn
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 0
    functionsReached:
    - pfree
    - memcpy
    - memmove
    - TransactionIdIsNormal
    - elog
    - TransactionIdFollowsOrEquals
    - MemoryContextAlloc
    - NormalTransactionIdPrecedes
    linkageType: ''
    returnType: void
    signature: void SnapBuildPurgeOlderTxn(SnapBuild *builder)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:957,1
    - Dst: SnapBuildXidHasCatalogChanges
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:989,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:994,1
    - Dst: SnapBuildAddCommittedTxn
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:997,1
    - Dst: NormalTransactionIdFollows
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:999,1
    - Dst: SnapBuildAddCommittedTxn
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1011,1
    - Dst: NormalTransactionIdFollows
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1012,1
    - Dst: SnapBuildXidHasCatalogChanges
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1018,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1020,1
    - Dst: SnapBuildAddCommittedTxn
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1024,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1029,1
    - Dst: SnapBuildAddCommittedTxn
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1032,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1036,1
    - Dst: SnapBuildAddCommittedTxn
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1038,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1047,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1055,1
    - Dst: TransactionIdFollowsOrEquals
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1056,1
    - Dst: TransactionIdAdvance
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1059,1
    - Dst: SnapBuildSnapDecRefcount
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1078,1
    - Dst: SnapBuildBuildSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1080,1
    - Dst: ReorderBufferXidHasBaseSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1083,1
    - Dst: SnapBuildSnapIncRefcount
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1085,1
    - Dst: ReorderBufferSetBaseSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1086,1
    - Dst: SnapBuildSnapIncRefcount
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1091,1
    - Dst: SnapBuildDistributeSnapshotAndInval
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1097,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: 1099
      start: 939
    functionDepth: 3
    functionLinenumber: 939
    functionLinenumberEnd: 1099
    functionName: SnapBuildCommitTxn
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached:
    - NormalTransactionIdFollows
    - Assert
    - SnapBuildSnapIncRefcount
    - TransactionIdIsValid
    - ReorderBufferSetBaseSnapshot
    - SnapBuildAddCommittedTxn
    - SnapBuildSnapDecRefcount
    - SnapBuildDistributeSnapshotAndInval
    - elog
    - SnapBuildXidHasCatalogChanges
    - ReorderBufferXidHasBaseSnapshot
    - TransactionIdFollowsOrEquals
    - SnapBuildBuildSnapshot
    - TransactionIdPrecedes
    - TransactionIdAdvance
    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:1109,1
    - Dst: bsearch
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1121,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - builder
    - xid
    - xinfo
    argTypes:
    - SnapBuild*
    - TransactionId
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1123
      start: 1105
    functionDepth: 1
    functionLinenumber: 1105
    functionLinenumberEnd: 1123
    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:1149,1
    - Dst: SnapBuildSerialize
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1153,1
    - Dst: SnapBuildPurgeOlderTxn
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1170,1
    - Dst: ReorderBufferGetOldestXmin
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1181,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1184,1
    - Dst: LogicalIncreaseXminForSlot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1186,1
    - Dst: ReorderBufferGetOldestTXN
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1207,1
    - Dst: LogicalIncreaseRestartDecodingForSlot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1214,1
    - Dst: LogicalIncreaseRestartDecodingForSlot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1223,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 3
    argNames:
    - builder
    - lsn
    - running
    argTypes:
    - SnapBuild*
    - XLogRecPtr
    - xl_running_xacts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1225
      start: 1135
    functionDepth: 3
    functionLinenumber: 1135
    functionLinenumberEnd: 1225
    functionName: SnapBuildProcessRunningXacts
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached:
    - LogicalIncreaseXminForSlot
    - SnapBuildPurgeOlderTxn
    - LogicalIncreaseRestartDecodingForSlot
    - ReorderBufferGetOldestTXN
    - SnapBuildFindSnapshot
    - SnapBuildSerialize
    - ReorderBufferGetOldestXmin
    - elog
    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:1269,1
    - Dst: NormalTransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1270,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1273,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1274,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1275,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1276,1
    - Dst: SnapBuildWaitSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1280,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1306,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1306,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1307,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1307,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1312,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1313,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1314,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1315,1
    - Dst: SnapBuildRestore
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1326,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1358,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1358,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1359,1
    - Dst: TransactionIdIsNormal
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1359,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1361,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1362,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1363,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1364,1
    - Dst: SnapBuildWaitSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1367,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1379,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1385,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1386,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1387,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1388,1
    - Dst: SnapBuildWaitSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1391,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1403,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1409,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1410,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1411,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1412,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 43
    argCount: 3
    argNames:
    - builder
    - lsn
    - running
    argTypes:
    - SnapBuild*
    - XLogRecPtr
    - xl_running_xacts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1421
      start: 1237
    functionDepth: 2
    functionLinenumber: 1237
    functionLinenumberEnd: 1421
    functionName: SnapBuildFindSnapshot
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached:
    - LSN_FORMAT_ARGS
    - errmsg
    - Assert
    - SnapBuildRestore
    - errdetail_internal
    - errmsg_internal
    - ereport
    - TransactionIdIsNormal
    - SnapBuildWaitSnapshot
    - TransactionIdPrecedesOrEquals
    - NormalTransactionIdPrecedes
    - errdetail
    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:1448,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1449,1
    - Dst: TransactionIdFollows
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1451,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1454,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1463,1
    - Dst: LogStandbySnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1465,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - running
    - cutoff
    argTypes:
    - xl_running_xacts*
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1467
      start: 1434
    functionDepth: 3
    functionLinenumber: 1434
    functionLinenumberEnd: 1467
    functionName: SnapBuildWaitSnapshot
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached:
    - TransactionIdFollows
    - XactLockTableWait
    - elog
    - LogStandbySnapshot
    - TransactionIdIsCurrentTransactionId
    - 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:1487,1
    - Dst: SnapBuildSerialize
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1489,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - builder
    - lsn
    argTypes:
    - SnapBuild*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1490
      start: 1483
    functionDepth: 1
    functionLinenumber: 1483
    functionLinenumberEnd: 1490
    functionName: SnapBuildSerializationPoint
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached:
    - SnapBuildRestore
    - SnapBuildSerialize
    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:1512,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1513,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1524,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1532,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1534,1
    - Dst: stat
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1541,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1544,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1545,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1546,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1559,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1560,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1573,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1576,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1578,1
    - Dst: unlink
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1586,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1587,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1588,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1589,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1591,1
    - Dst: ReorderBufferGetCatalogChangesXacts
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1594,1
    - Dst: dclist_count
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1595,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1600,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1605,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1606,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1611,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1621,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1629,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1630,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1638,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1639,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1643,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1646,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1649,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1650,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1651,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1654,1
    - Dst: write
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1655,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1659,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1663,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1664,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1665,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1667,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1680,1
    - Dst: pg_fsync
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1681,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1685,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1687,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1688,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1689,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1691,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1693,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1694,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1695,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1696,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1698,1
    - Dst: rename
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1704,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1706,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1707,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1708,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1713,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1714,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1722,1
    - Dst: ReorderBufferSetRestartPoint
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1725,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1729,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1731,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 89
    argCount: 2
    argNames:
    - builder
    - lsn
    argTypes:
    - SnapBuild*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1732
      start: 1496
    functionDepth: 2
    functionLinenumber: 1496
    functionLinenumberEnd: 1732
    functionName: SnapBuildSerialize
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 2
    functionsReached:
    - LSN_FORMAT_ARGS
    - MemoryContextSwitchTo
    - rename
    - pgstat_report_wait_end
    - sprintf
    - pgstat_report_wait_start
    - errcode_for_file_access
    - COMP_CRC32C
    - pfree
    - FIN_CRC32C
    - dclist_count
    - memcpy
    - pg_fsync
    - errmsg
    - write
    - CloseTransientFile
    - stat
    - ReorderBufferGetCatalogChangesXacts
    - elog
    - Assert
    - ReorderBufferSetRestartPoint
    - INIT_CRC32C
    - ereport
    - palloc0
    - OpenTransientFile
    - unlink
    - fsync_fname
    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:1750,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1752,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1754,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1761,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1762,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1763,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1774,1
    - Dst: fsync_fname
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1775,1
    - Dst: SnapBuildRestoreContents
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1778,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1781,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1782,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1783,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1787,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1788,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1789,1
    - Dst: INIT_CRC32C
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1792,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1793,1
    - Dst: SnapBuildRestoreContents
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1798,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1799,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1805,1
    - Dst: SnapBuildRestoreContents
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1806,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1807,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1814,1
    - Dst: SnapBuildRestoreContents
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1815,1
    - Dst: COMP_CRC32C
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1816,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1819,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1820,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1821,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1822,1
    - Dst: FIN_CRC32C
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1824,1
    - Dst: EQ_CRC32C
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1827,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1828,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1829,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1830,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: 1834
      start: 1741
    functionDepth: 1
    functionLinenumber: 1741
    functionLinenumberEnd: 1834
    functionName: SnapBuildRestoreSnapshot
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - errmsg
    - COMP_CRC32C
    - CloseTransientFile
    - FIN_CRC32C
    - INIT_CRC32C
    - MemoryContextAllocZero
    - ereport
    - OpenTransientFile
    - EQ_CRC32C
    - sprintf
    - fsync_fname
    - errcode
    - SnapBuildRestoreContents
    - errcode_for_file_access
    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:1850,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1870,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1877,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1890,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1898,1
    - Dst: SnapBuildSnapDecRefcount
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1906,1
    - Dst: SnapBuildBuildSnapshot
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1908,1
    - Dst: SnapBuildSnapIncRefcount
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1909,1
    - Dst: ReorderBufferSetRestartPoint
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1911,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1913,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1915,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1916,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1917,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1918,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1923,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1925,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 44
    argCount: 2
    argNames:
    - builder
    - lsn
    argTypes:
    - SnapBuild*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1927
      start: 1840
    functionDepth: 3
    functionLinenumber: 1840
    functionLinenumberEnd: 1927
    functionName: SnapBuildRestore
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 2
    functionsReached:
    - errmsg
    - pfree
    - Assert
    - LSN_FORMAT_ARGS
    - SnapBuildSnapIncRefcount
    - ReorderBufferSetRestartPoint
    - ereport
    - SnapBuildRestoreSnapshot
    - TransactionIdPrecedes
    - SnapBuildBuildSnapshot
    - errdetail
    - SnapBuildSnapDecRefcount
    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:1937,1
    - Dst: read
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1938,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1939,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1944,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1949,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1950,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1951,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1954,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1955,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1956,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - fd
    - dest
    - size
    - path
    argTypes:
    - int
    - void*
    - Size
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1959
      start: 1932
    functionDepth: 1
    functionLinenumber: 1932
    functionLinenumberEnd: 1959
    functionName: SnapBuildRestoreContents
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached:
    - errmsg
    - CloseTransientFile
    - ereport
    - pgstat_report_wait_end
    - read
    - pgstat_report_wait_start
    - errcode
    - errcode_for_file_access
    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:1983,1
    - Dst: ReplicationSlotsComputeLogicalRestartLSN
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1986,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1992,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:1993,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2000,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2001,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2004,1
    - Dst: get_dirent_type
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2005,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2009,1
    - Dst: sscanf
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2022,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2024,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2025,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2034,1
    - Dst: unlink
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2041,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2043,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2044,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2045,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2051,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2052
      start: 1969
    functionDepth: 3
    functionLinenumber: 1969
    functionLinenumberEnd: 2052
    functionName: CheckPointSnapBuild
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 1
    functionsReached:
    - errmsg
    - ReadDir
    - AllocateDir
    - GetRedoRecPtr
    - FreeDir
    - snprintf
    - ReplicationSlotsComputeLogicalRestartLSN
    - sscanf
    - get_dirent_type
    - ereport
    - elog
    - unlink
    - strcmp
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void CheckPointSnapBuild(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2064,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2066,1
    - Dst: stat
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2068,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2071,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2072,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/snapbuild.c:2073,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - lsn
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2076
      start: 2057
    functionDepth: 1
    functionLinenumber: 2057
    functionLinenumberEnd: 2076
    functionName: SnapBuildSnapshotExists
    functionSourceFile: /src/postgres/src/backend/replication/logical/snapbuild.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - errmsg
    - stat
    - ereport
    - sprintf
    - errcode_for_file_access
    linkageType: ''
    returnType: bool
    signature: bool SnapBuildSnapshotExists(XLogRecPtr lsn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:149,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:151,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:152,1
    - Dst: XLogFlush
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:156,1
    - Dst: GetXLogWriteRecPtr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:156,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:158,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:159,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:160,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:162,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:163,1
    - Dst: logicalrep_worker_wakeup
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:166,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:169,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 142
    functionDepth: 5
    functionLinenumber: 142
    functionLinenumberEnd: 170
    functionName: finish_sync_worker
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - errmsg
    - get_rel_name
    - CommitTransactionCommand
    - ereport
    - XLogFlush
    - logicalrep_worker_wakeup
    - IsTransactionState
    - GetXLogWriteRecPtr
    - pgstat_report_stat
    - StartTransactionCommand
    - proc_exit
    linkageType: ''
    returnType: pg_noreturn
    signature: pg_noreturn finish_sync_worker(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:192,1
    - Dst: InvalidateCatalogSnapshot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:194,1
    - Dst: GetSubscriptionRelState
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:195,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:205,1
    - Dst: logicalrep_worker_find
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:206,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:208,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:212,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:216,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - relid
    - expected_state
    argTypes:
    - Oid
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 182
    functionDepth: 4
    functionLinenumber: 182
    functionLinenumberEnd: 220
    functionName: wait_for_relation_state_change
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - ResetLatch
    - CHECK_FOR_INTERRUPTS
    - GetSubscriptionRelState
    - InvalidateCatalogSnapshot
    - WaitLatch
    - LWLockRelease
    - LWLockAcquire
    - logicalrep_worker_find
    linkageType: ''
    returnType: bool
    signature: bool wait_for_relation_state_change(Oid relid, char expected_state)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:239,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:252,1
    - Dst: logicalrep_worker_find
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:253,1
    - Dst: logicalrep_worker_wakeup_ptr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:256,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:257,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:265,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:270,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - expected_state
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 230
    functionDepth: 2
    functionLinenumber: 230
    functionLinenumberEnd: 274
    functionName: wait_for_worker_state_change
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - ResetLatch
    - CHECK_FOR_INTERRUPTS
    - WaitLatch
    - logicalrep_worker_wakeup_ptr
    - LWLockRelease
    - LWLockAcquire
    - logicalrep_worker_find
    linkageType: ''
    returnType: bool
    signature: bool wait_for_worker_state_change(char expected_state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - arg
    - cacheid
    - hashvalue
    argTypes:
    - Datum
    - int
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 283
    functionName: invalidate_syncing_table_states
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void invalidate_syncing_table_states(Datum arg, int cacheid, uint32
      hashvalue)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:296,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:308,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:313,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:314,1
    - Dst: UpdateSubscriptionRelState
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:316,1
    - Dst: walrcv_endstreaming
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:325,1
    - Dst: ReplicationSlotNameForTablesync
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:334,1
    - Dst: ReplicationSlotDropAtPubNode
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:344,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:346,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:347,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:363,1
    - Dst: ReplicationOriginNameForLogicalRep
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:365,1
    - Dst: replorigin_session_reset
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:374,1
    - Dst: replorigin_drop_by_name
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:387,1
    - Dst: finish_sync_worker
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:389,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:392,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 1
    argNames:
    - current_lsn
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 293
    functionDepth: 8
    functionLinenumber: 293
    functionLinenumberEnd: 393
    functionName: process_syncing_tables_for_sync
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - walrcv_endstreaming
    - ReplicationOriginNameForLogicalRep
    - CommitTransactionCommand
    - finish_sync_worker
    - UpdateSubscriptionRelState
    - replorigin_drop_by_name
    - ReplicationSlotNameForTablesync
    - replorigin_session_reset
    - SpinLockRelease
    - IsTransactionState
    - ReplicationSlotDropAtPubNode
    - pgstat_report_stat
    - StartTransactionCommand
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void process_syncing_tables_for_sync(XLogRecPtr current_lsn)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:429,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:429,1
    - Dst: FetchTableStates
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:432,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:445,1
    - Dst: hash_destroy
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:455,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:464,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:481,1
    - Dst: ReplicationOriginNameForLogicalRep
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:496,1
    - Dst: replorigin_drop_by_name
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:500,1
    - Dst: UpdateSubscriptionRelState
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:505,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:517,1
    - Dst: logicalrep_worker_find
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:519,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:525,1
    - Dst: Max
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:536,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:538,1
    - Dst: logicalrep_worker_wakeup_ptr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:545,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:548,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:559,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:560,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:567,1
    - Dst: wait_for_relation_state_change
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:570,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:574,1
    - Dst: logicalrep_sync_worker_count
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:584,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:587,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:595,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:599,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:603,1
    - Dst: logicalrep_worker_launch
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:612,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:641,1
    - Dst: AllTablesyncsReady
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:642,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:644,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:645,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:651,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:652,1
    - Dst: ApplyLauncherForgetWorkerStartTime
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:661,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:663,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 76
    argCount: 1
    argNames:
    - current_lsn
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 416
    functionDepth: 8
    functionLinenumber: 416
    functionLinenumberEnd: 665
    functionName: process_syncing_tables_for_apply
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - hash_destroy
    - SpinLockRelease
    - wait_for_relation_state_change
    - IsTransactionState
    - LWLockRelease
    - logicalrep_sync_worker_count
    - logicalrep_worker_launch
    - hash_create
    - ApplyLauncherForgetWorkerStartTime
    - Max
    - TimestampDifferenceExceeds
    - StartTransactionCommand
    - proc_exit
    - errmsg
    - CommandCounterIncrement
    - AllTablesyncsReady
    - GetCurrentTimestamp
    - pgstat_report_stat
    - logicalrep_worker_wakeup_ptr
    - lfirst
    - SpinLockAcquire
    - Assert
    - ReplicationOriginNameForLogicalRep
    - CommitTransactionCommand
    - UpdateSubscriptionRelState
    - replorigin_drop_by_name
    - ereport
    - hash_search
    - FetchTableStates
    - LWLockAcquire
    - logicalrep_worker_find
    linkageType: ''
    returnType: void
    signature: void process_syncing_tables_for_apply(XLogRecPtr current_lsn)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:464,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:481,1
    - Dst: ReplicationOriginNameForLogicalRep
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:496,1
    - Dst: replorigin_drop_by_name
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:500,1
    - Dst: UpdateSubscriptionRelState
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:505,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:517,1
    - Dst: logicalrep_worker_find
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:519,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:525,1
    - Dst: Max
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:536,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:538,1
    - Dst: logicalrep_worker_wakeup_ptr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:545,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:548,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:559,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:560,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:567,1
    - Dst: wait_for_relation_state_change
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:570,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:574,1
    - Dst: logicalrep_sync_worker_count
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:584,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:587,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:595,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:599,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:603,1
    - Dst: logicalrep_worker_launch
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:612,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 462
    functionDepth: 8
    functionLinenumber: 462
    functionLinenumberEnd: 623
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 361
    functionsReached:
    - SpinLockRelease
    - wait_for_relation_state_change
    - LWLockRelease
    - logicalrep_sync_worker_count
    - logicalrep_worker_launch
    - Max
    - TimestampDifferenceExceeds
    - StartTransactionCommand
    - GetCurrentTimestamp
    - pgstat_report_stat
    - logicalrep_worker_wakeup_ptr
    - lfirst
    - SpinLockAcquire
    - ReplicationOriginNameForLogicalRep
    - CommitTransactionCommand
    - UpdateSubscriptionRelState
    - replorigin_drop_by_name
    - hash_search
    - LWLockAcquire
    - logicalrep_worker_find
    linkageType: ''
    returnType: void
    signature: void foreach(lc, table_states_not_ready)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: process_syncing_tables_for_sync
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:685,1
    - Dst: process_syncing_tables_for_apply
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:689,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:694,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - current_lsn
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 670
    functionDepth: 9
    functionLinenumber: 670
    functionLinenumberEnd: 696
    functionName: process_syncing_tables
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - process_syncing_tables_for_apply
    - elog
    - process_syncing_tables_for_sync
    linkageType: ''
    returnType: void
    signature: void process_syncing_tables(XLogRecPtr current_lsn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:709,1
    - Dst: makeString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:710,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rel
    argTypes:
    - LogicalRepRelMapEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 701
    functionDepth: 6
    functionLinenumber: 701
    functionLinenumberEnd: 715
    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:733,1
    - Dst: walrcv_receive
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:748,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:750,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:766,1
    - Dst: WaitLatchOrSocket
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:780,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:785,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 3
    argNames:
    - outbuf
    - minread
    - maxread
    argTypes:
    - void*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 721
    functionDepth: 1
    functionLinenumber: 721
    functionLinenumberEnd: 789
    functionName: copy_read_data
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - ResetLatch
    - CHECK_FOR_INTERRUPTS
    - walrcv_receive
    - WaitLatchOrSocket
    - memcpy
    linkageType: ''
    returnType: int
    signature: int copy_read_data(void *outbuf, int minread, int maxread)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: walrcv_server_version
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:814,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:820,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:821,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:827,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:828,1
    - Dst: walrcv_exec
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:829,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:830,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:833,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:834,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:835,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:838,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:839,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:840,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:841,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:842,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:845,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:845,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:846,1
    - Dst: DatumGetChar
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:847,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:847,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:848,1
    - Dst: DatumGetChar
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:849,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:849,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:850,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:852,1
    - Dst: walrcv_clear_result
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:853,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:869,1
    - Dst: GetPublicationsStr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:870,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:876,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:877,1
    - Dst: walrcv_exec
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:889,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:890,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:893,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:894,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:895,1
    - Dst: tuplestore_tuple_count
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:906,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:907,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:908,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:909,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:918,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:919,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:921,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:929,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:930,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:931,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:934,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:937,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:939,1
    - Dst: walrcv_clear_result
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:941,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:947,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:948,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:956,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:958,1
    - Dst: walrcv_exec
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:970,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:971,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:971,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:974,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:975,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:976,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:980,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:981,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:989,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:990,1
    - Dst: DatumGetInt16
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:995,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:995,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:996,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:999,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1001,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1005,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1005,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1006,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1009,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1009,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1010,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1012,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1012,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1013,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1018,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1018,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1019,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1024,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1027,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1029,1
    - Dst: walrcv_clear_result
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1033,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1057,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1060,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1061,1
    - Dst: walrcv_exec
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1070,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1073,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1074,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1084,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1085,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1087,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1090,1
    - Dst: makeString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1090,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1090,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1096,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1102,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1104,1
    - Dst: walrcv_clear_result
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1106,1
    - Dst: destroyStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1107,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1110,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 105
    argCount: 5
    argNames:
    - nspname
    - relname
    - lrel
    - qual
    - gencol_published
    argTypes:
    - char*
    - char*
    - LogicalRepRelation*
    - List**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1111
      start: 800
    functionDepth: 6
    functionLinenumber: 800
    functionLinenumberEnd: 1111
    functionName: fetch_remote_table_info
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - lengthof
    - makeStringInfo
    - quote_literal_cstr
    - pfree
    - walrcv_clear_result
    - ARR_DIMS
    - DatumGetArrayTypeP
    - destroyStringInfo
    - DatumGetChar
    - walrcv_exec
    - ExecClearTuple
    - slot_getattr
    - DatumGetInt16
    - errmsg
    - makeString
    - ExecDropSingleTupleTableSlot
    - resetStringInfo
    - GetPublicationsStr
    - walrcv_server_version
    - tuplestore_tuple_count
    - appendStringInfoString
    - elog
    - lappend
    - bms_is_member
    - bms_add_member
    - Assert
    - list_free_deep
    - ARR_DATA_PTR
    - appendStringInfo
    - TextDatumGetCString
    - ereport
    - tuplestore_gettupleslot
    - MakeSingleTupleTableSlot
    - palloc0
    - DatumGetObjectId
    - DatumGetBool
    - initStringInfo
    - errcode
    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:1133,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1133,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1133,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1134,1
    - Dst: logicalrep_relmap_update
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1138,1
    - Dst: logicalrep_rel_open
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1141,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1142,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1145,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1150,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1151,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1156,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1165,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1167,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1167,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1170,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1173,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1188,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1191,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1191,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1193,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1196,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1203,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1205,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1205,1
    - Dst: strVal
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1210,1
    - Dst: linitial
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1210,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1212,1
    - Dst: for_each_from
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1213,1
    - Dst: strVal
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1215,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1215,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1216,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1218,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1221,1
    - Dst: walrcv_server_version
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1228,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1231,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1232,1
    - Dst: makeDefElem
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1232,1
    - Dst: makeString
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1233,1
    - Dst: walrcv_exec
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1236,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1237,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1239,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1240,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1241,1
    - Dst: walrcv_clear_result
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1243,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1245,1
    - Dst: make_parsestate
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1247,1
    - Dst: addRangeTableEntryForRelation
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1248,1
    - Dst: make_copy_attnamelist
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1251,1
    - Dst: BeginCopyFrom
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1252,1
    - Dst: CopyFrom
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1255,1
    - Dst: logicalrep_rel_close
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1257,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 55
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1258
      start: 1118
    functionDepth: 7
    functionLinenumber: 1118
    functionLinenumberEnd: 1258
    functionName: copy_table
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - makeStringInfo
    - quote_qualified_identifier
    - logicalrep_rel_open
    - addRangeTableEntryForRelation
    - RelationGetRelationName
    - pfree
    - walrcv_clear_result
    - walrcv_exec
    - BeginCopyFrom
    - makeString
    - errmsg
    - make_parsestate
    - make_copy_attnamelist
    - linitial
    - appendStringInfoString
    - walrcv_server_version
    - get_namespace_name
    - for_each_from
    - RelationGetNamespace
    - strVal
    - CopyFrom
    - logicalrep_relmap_update
    - lfirst
    - makeDefElem
    - Assert
    - list_free_deep
    - logicalrep_rel_close
    - appendStringInfo
    - appendStringInfoChar
    - quote_identifier
    - fetch_remote_table_info
    - list_make1
    - ereport
    - initStringInfo
    - errcode
    linkageType: ''
    returnType: void
    signature: void copy_table(Relation rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1281,1
    - Dst: GetSystemIdentifier
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - suboid
    - relid
    - syncslotname
    - szslot
    argTypes:
    - Oid
    - Oid
    - char*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1283
      start: 1277
    functionDepth: 2
    functionLinenumber: 1277
    functionLinenumberEnd: 1283
    functionName: ReplicationSlotNameForTablesync
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 1
    functionsReached:
    - snprintf
    - GetSystemIdentifier
    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:1310,1
    - Dst: GetSubscriptionRelState
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1311,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1314,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1320,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1323,1
    - Dst: finish_sync_worker
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1334,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1338,1
    - Dst: ReplicationSlotNameForTablesync
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1339,1
    - Dst: walrcv_connect
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1350,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1354,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1355,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1356,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1359,1
    - Dst: ReplicationOriginNameForLogicalRep
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1364,1
    - Dst: ReplicationSlotDropAtPubNode
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1382,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1390,1
    - Dst: replorigin_by_name
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1396,1
    - Dst: replorigin_session_setup
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1397,1
    - Dst: replorigin_session_get_progress
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1399,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1401,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1406,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1409,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1412,1
    - Dst: UpdateSubscriptionRelState
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1413,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1417,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1418,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1420,1
    - Dst: table_open
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1428,1
    - Dst: walrcv_exec
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1435,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1439,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1440,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1441,1
    - Dst: walrcv_clear_result
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1443,1
    - Dst: walrcv_create_slot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1450,1
    - Dst: replorigin_by_name
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1460,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1461,1
    - Dst: replorigin_create
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1470,1
    - Dst: LockRelationOid
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1472,1
    - Dst: replorigin_advance
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1473,1
    - Dst: UnlockRelationOid
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1475,1
    - Dst: replorigin_session_setup
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1477,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1482,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1483,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1484,1
    - Dst: SwitchToUntrustedUser
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1494,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1500,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1500,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1500,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1503,1
    - Dst: get_relkind_objtype
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1504,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1505,1
    - Dst: check_enable_rls
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1514,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1514,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1515,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1516,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1517,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1518,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1518,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1519,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1522,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1522,1
    - Dst: copy_table
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1523,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1524,1
    - Dst: walrcv_exec
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1526,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1528,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1529,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1530,1
    - Dst: walrcv_clear_result
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1532,1
    - Dst: RestoreUserContext
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1535,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1537,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1540,1
    - Dst: UpdateSubscriptionRelState
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1546,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1551,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1555,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1557,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1562,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1565,1
    - Dst: wait_for_worker_state_change
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1571,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 91
    argCount: 1
    argNames:
    - origin_startpos
    argTypes:
    - XLogRecPtr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1573
      start: 1293
    functionDepth: 8
    functionLinenumber: 1293
    functionLinenumberEnd: 1573
    functionName: LogicalRepSyncTableStart
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - UnlockRelationOid
    - SpinLockRelease
    - replorigin_advance
    - walrcv_create_slot
    - replorigin_session_get_progress
    - RelationGetRelationName
    - replorigin_session_setup
    - GetUserId
    - PopActiveSnapshot
    - LockRelationOid
    - walrcv_clear_result
    - RelationGetRelid
    - table_open
    - GetTransactionSnapshot
    - ReplicationSlotNameForTablesync
    - pg_class_aclcheck
    - PushActiveSnapshot
    - walrcv_exec
    - ReplicationSlotDropAtPubNode
    - finish_sync_worker
    - StartTransactionCommand
    - errmsg
    - replorigin_create
    - aclcheck_error
    - get_relkind_objtype
    - CommandCounterIncrement
    - SwitchToUntrustedUser
    - GetSubscriptionRelState
    - elog
    - OidIsValid
    - copy_table
    - palloc
    - pgstat_report_stat
    - check_enable_rls
    - table_close
    - SpinLockAcquire
    - Assert
    - ReplicationOriginNameForLogicalRep
    - CommitTransactionCommand
    - replorigin_by_name
    - UpdateSubscriptionRelState
    - ereport
    - walrcv_connect
    - wait_for_worker_state_change
    - errcode
    - GetUserNameFromId
    - RestoreUserContext
    linkageType: ''
    returnType: char
    signature: 'char *

      LogicalRepSyncTableStart(XLogRecPtr *origin_startpos)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1600,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1603,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1605,1
    - Dst: GetSubscriptionRelations
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1610,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1613,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1616,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1617,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1617,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1618,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1620,1
    - Dst: HasSubscriptionRelations
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1630,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - started_tx
    argTypes:
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1644
      start: 1583
    functionDepth: 7
    functionLinenumber: 1583
    functionLinenumberEnd: 1644
    functionName: FetchTableStates
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - list_free_deep
    - HasSubscriptionRelations
    - lappend
    - IsTransactionState
    - memcpy
    - palloc
    - StartTransactionCommand
    - lfirst
    - GetSubscriptionRelations
    linkageType: ''
    returnType: bool
    signature: bool FetchTableStates(bool *started_tx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1616,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1617,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1617,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1618,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1619
      start: 1614
    functionDepth: 6
    functionLinenumber: 1614
    functionLinenumberEnd: 1619
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 361
    functionsReached:
    - memcpy
    - palloc
    - lappend
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, rstates)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1659,1
    - Dst: am_tablesync_worker
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1659,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1661,1
    - Dst: LogicalRepSyncTableStart
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1664,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1666,1
    - Dst: DisableSubscriptionAndExit
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1669,1
    - Dst: AbortOutOfAnyTransaction
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1677,1
    - Dst: pgstat_report_subscription_error
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1678,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1680,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1683,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1686,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1687,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 2
    argNames:
    - origin_startpos
    - slotname
    argTypes:
    - XLogRecPtr*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1688
      start: 1654
    functionDepth: 9
    functionLinenumber: 1654
    functionLinenumberEnd: 1688
    functionName: start_table_sync
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - MemoryContextStrdup
    - Assert
    - PG_RE_THROW
    - PG_END_TRY
    - pfree
    - PG_TRY
    - pgstat_report_subscription_error
    - PG_CATCH
    - DisableSubscriptionAndExit
    - am_tablesync_worker
    - AbortOutOfAnyTransaction
    - LogicalRepSyncTableStart
    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:1704,1
    - Dst: ReplicationOriginNameForLogicalRep
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1706,1
    - Dst: set_apply_error_context_origin
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1711,1
    - Dst: set_stream_options
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1713,1
    - Dst: walrcv_startstreaming
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1715,1
    - Dst: start_apply
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1718,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1719
      start: 1696
    functionDepth: 10
    functionLinenumber: 1696
    functionLinenumberEnd: 1719
    functionName: run_tablesync_worker
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - ReplicationOriginNameForLogicalRep
    - walrcv_startstreaming
    - set_apply_error_context_origin
    - start_table_sync
    - start_apply
    - set_stream_options
    linkageType: ''
    returnType: void
    signature: void run_tablesync_worker()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1725,1
    - Dst: SetupApplyOrSyncWorker
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1727,1
    - Dst: run_tablesync_worker
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1729,1
    - Dst: finish_sync_worker
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1731,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - main_arg
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1732
      start: 1722
    functionDepth: 11
    functionLinenumber: 1722
    functionLinenumberEnd: 1732
    functionName: TablesyncWorkerMain
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - DatumGetInt32
    - finish_sync_worker
    - run_tablesync_worker
    - SetupApplyOrSyncWorker
    linkageType: ''
    returnType: void
    signature: void TablesyncWorkerMain(Datum main_arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FetchTableStates
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1749,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1753,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1754,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1762
      start: 1742
    functionDepth: 8
    functionLinenumber: 1742
    functionLinenumberEnd: 1762
    functionName: AllTablesyncsReady
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 2
    functionsReached:
    - pgstat_report_stat
    - FetchTableStates
    - CommitTransactionCommand
    linkageType: ''
    returnType: bool
    signature: bool AllTablesyncsReady(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1776,1
    - Dst: table_open
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1780,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1781,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1781,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1782,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1783,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1788,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1789,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1790,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1793,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1796,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1796,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1798,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1800,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/tablesync.c:1801,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - suboid
    - new_state
    argTypes:
    - Oid
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1802
      start: 1767
    functionDepth: 7
    functionLinenumber: 1767
    functionLinenumberEnd: 1802
    functionName: UpdateTwoPhaseState
    functionSourceFile: /src/postgres/src/backend/replication/logical/tablesync.c
    functionUses: 0
    functionsReached:
    - Assert
    - table_open
    - memset
    - HeapTupleIsValid
    - heap_modify_tuple
    - RelationGetDescr
    - SearchSysCacheCopy1
    - CatalogTupleUpdate
    - heap_freetuple
    - elog
    - CharGetDatum
    - table_close
    - ObjectIdGetDatum
    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:
    - Assert
    - XLogBeginInsert
    - XLogInsert
    - GetCurrentTransactionId
    - XLogFlush
    - IsTransactionState
    - XLogRegisterData
    - XLogSetRecordFlags
    - strlen
    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:
    - XLogRecGetInfo
    - elog
    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: 201
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 201
    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: 206
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 206
    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: 212
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 212
    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:330,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:333,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:338,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:340,1
    - Dst: SlabContextCreate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:344,1
    - Dst: SlabContextCreate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:349,1
    - Dst: GenerationContextCreate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:364,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:374,1
    - Dst: pairingheap_allocate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:385,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:398,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:399,1
    - Dst: dclist_init
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:400,1
    - Dst: ReorderBufferCleanupSerializedTXNs
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:407,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 323
    functionDepth: 2
    functionLinenumber: 323
    functionLinenumberEnd: 410
    functionName: ReorderBufferAllocate
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - Assert
    - NameStr
    - dclist_init
    - memset
    - hash_create
    - ReorderBufferCleanupSerializedTXNs
    - GenerationContextCreate
    - AllocSetContextCreate
    - SlabContextCreate
    - MemoryContextAlloc
    - pairingheap_allocate
    - dlist_init
    linkageType: ''
    returnType: ReorderBuffer
    signature: 'ReorderBuffer *

      ReorderBufferAllocate(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:424,1
    - Dst: ReorderBufferCleanupSerializedTXNs
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:427,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rb
    argTypes:
    - ReorderBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 415
    functionDepth: 1
    functionLinenumber: 415
    functionLinenumberEnd: 428
    functionName: ReorderBufferFree
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - NameStr
    - MemoryContextDelete
    - ReorderBufferCleanupSerializedTXNs
    linkageType: ''
    returnType: void
    signature: void ReorderBufferFree(ReorderBuffer *rb)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:439,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:441,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:443,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:444,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:445,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - rb
    argTypes:
    - ReorderBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 433
    functionDepth: 1
    functionLinenumber: 433
    functionLinenumberEnd: 452
    functionName: ReorderBufferAllocTXN
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - memset
    - MemoryContextAlloc
    - dlist_init
    linkageType: ''
    returnType: ReorderBufferTXN
    signature: 'ReorderBufferTXN *

      ReorderBufferAllocTXN(ReorderBuffer *rb)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:471,1
    - Dst: hash_destroy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:477,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:483,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:489,1
    - Dst: ReorderBufferToastReset
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:494,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:497,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:499,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - rb
    - txn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 500
    functionName: ReorderBufferFreeTXN
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - ReorderBufferToastReset
    - pfree
    - Assert
    - 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:511,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - rb
    argTypes:
    - ReorderBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 505
    functionDepth: 1
    functionLinenumber: 505
    functionLinenumberEnd: 515
    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:526,1
    - Dst: ReorderBufferChangeSize
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:527,1
    - Dst: ReorderBufferFreeTupleBuf
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:538,1
    - Dst: ReorderBufferFreeTupleBuf
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:544,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:550,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:553,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:558,1
    - Dst: ReorderBufferFreeSnap
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:564,1
    - Dst: ReorderBufferFreeRelids
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:572,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:583,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 49
    argCount: 3
    argNames:
    - rb
    - change
    - upd_mem
    argTypes:
    - ReorderBuffer*
    - ReorderBufferChange*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 520
    functionDepth: 1
    functionLinenumber: 520
    functionLinenumberEnd: 584
    functionName: ReorderBufferFreeChange
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - pfree
    - ReorderBufferChangeSize
    - ReorderBufferFreeRelids
    - ReorderBufferChangeMemoryUpdate
    - ReorderBufferFreeSnap
    - ReorderBufferFreeTupleBuf
    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:598,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - rb
    - tuple_len
    argTypes:
    - ReorderBuffer*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 590
    functionDepth: 1
    functionLinenumber: 590
    functionLinenumberEnd: 603
    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:611,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 608
    functionDepth: 0
    functionLinenumber: 608
    functionLinenumberEnd: 612
    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:631,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - rb
    - nrelids
    argTypes:
    - ReorderBuffer*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 623
    functionDepth: 1
    functionLinenumber: 623
    functionLinenumberEnd: 634
    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:642,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rb
    - relids
    argTypes:
    - ReorderBuffer*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 639
    functionDepth: 0
    functionLinenumber: 639
    functionLinenumberEnd: 643
    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:659,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:659,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:664,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:693,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:702,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:703,1
    - Dst: ReorderBufferAllocTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:705,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:713,1
    - Dst: AssertTXNLsnOrder
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:714,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:727,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: 729
      start: 651
    functionDepth: 2
    functionLinenumber: 651
    functionLinenumberEnd: 729
    functionName: ReorderBufferTXNByXid
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - ReorderBufferAllocTXN
    - Assert
    - TransactionIdIsValid
    - dlist_push_tail
    - hash_search
    - AssertTXNLsnOrder
    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:750,1
    - Dst: rbtxn_get_toptxn
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:754,1
    - Dst: rbtxn_has_partial_change
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:772,1
    - Dst: IsInsertOrUpdate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:773,1
    - Dst: IsSpecInsert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:782,1
    - Dst: rbtxn_has_partial_change
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:784,1
    - Dst: IsSpecConfirmOrAbort
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:785,1
    - Dst: ReorderBufferCanStartStreaming
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:797,1
    - Dst: rbtxn_has_partial_change
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:798,1
    - Dst: rbtxn_is_serialized
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:799,1
    - Dst: rbtxn_has_streamable_change
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:800,1
    - Dst: ReorderBufferStreamTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:801,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: 802
      start: 739
    functionDepth: 1
    functionLinenumber: 739
    functionLinenumberEnd: 802
    functionName: ReorderBufferProcessPartialChange
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - IsInsertOrUpdate
    - rbtxn_has_streamable_change
    - rbtxn_has_partial_change
    - rbtxn_get_toptxn
    - ReorderBufferCanStartStreaming
    - IsSpecConfirmOrAbort
    - rbtxn_is_serialized
    - ReorderBufferStreamTXN
    - IsSpecInsert
    - ReorderBufferCanStream
    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:814,1
    - Dst: rbtxn_is_aborted
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:821,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:827,1
    - Dst: rbtxn_get_toptxn
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:843,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:851,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:852,1
    - Dst: ReorderBufferChangeMemoryUpdate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:857,1
    - Dst: ReorderBufferChangeSize
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:858,1
    - Dst: ReorderBufferProcessPartialChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:861,1
    - Dst: ReorderBufferCheckMemoryLimit
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:864,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: 865
      start: 808
    functionDepth: 3
    functionLinenumber: 808
    functionLinenumberEnd: 865
    functionName: ReorderBufferQueueChange
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 6
    functionsReached:
    - Assert
    - rbtxn_get_toptxn
    - ReorderBufferChangeSize
    - ReorderBufferCheckMemoryLimit
    - ReorderBufferFreeChange
    - dlist_push_tail
    - ReorderBufferChangeMemoryUpdate
    - ReorderBufferTXNByXid
    - rbtxn_is_aborted
    - ReorderBufferProcessPartialChange
    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:882,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:889,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:891,1
    - Dst: ReorderBufferAllocChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:893,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:895,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:897,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:898,1
    - Dst: ReorderBufferQueueChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:900,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:902,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:910,1
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:913,1
    - Dst: SetupHistoricSnapshot
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:916,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:917,1
    - Dst: ReorderBuffer*::message
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:919,1
    - Dst: TeardownHistoricSnapshot
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:921,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:923,1
    - Dst: TeardownHistoricSnapshot
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:925,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:926,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:928,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: 930
      start: 871
    functionDepth: 4
    functionLinenumber: 871
    functionLinenumberEnd: 930
    functionName: ReorderBufferQueueMessage
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - PG_RE_THROW
    - PG_END_TRY
    - PG_TRY
    - ReorderBufferAllocChange
    - PG_CATCH
    - pstrdup
    - SetupHistoricSnapshot
    - TeardownHistoricSnapshot
    - ReorderBufferTXNByXid
    - memcpy
    - palloc
    - ReorderBufferQueueChange
    - ReorderBuffer*::message
    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:959,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:962,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:964,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:968,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:972,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:976,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:979,1
    - Dst: rbtxn_is_known_subxact
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:979,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:984,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:986,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:991,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:992,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:996,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:999,1
    - Dst: rbtxn_is_known_subxact
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:999,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - rb
    argTypes:
    - ReorderBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 940
    functionDepth: 1
    functionLinenumber: 940
    functionLinenumberEnd: 1004
    functionName: AssertTXNLsnOrder
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - Assert
    - SnapBuildXactNeedsSkip
    - rbtxn_is_known_subxact
    - dlist_foreach
    - dlist_container
    linkageType: ''
    returnType: void
    signature: void AssertTXNLsnOrder(ReorderBuffer *rb)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1018,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1022,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1024,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1025,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1026,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1029,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1031,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - txn
    argTypes:
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1036
      start: 1011
    functionDepth: 1
    functionLinenumber: 1011
    functionLinenumberEnd: 1036
    functionName: AssertChangeLsnOrder
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - dlist_foreach
    - Assert
    - dlist_container
    linkageType: ''
    returnType: void
    signature: void AssertChangeLsnOrder(ReorderBufferTXN *txn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AssertTXNLsnOrder
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1047,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1049,1
    - Dst: dlist_head_element
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1052,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1054,1
    - Dst: rbtxn_is_known_subxact
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1054,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1055,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - rb
    argTypes:
    - ReorderBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1042
    functionDepth: 2
    functionLinenumber: 1042
    functionLinenumberEnd: 1057
    functionName: ReorderBufferGetOldestTXN
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - Assert
    - rbtxn_is_known_subxact
    - dlist_is_empty
    - dlist_head_element
    - AssertTXNLsnOrder
    linkageType: ''
    returnType: ReorderBufferTXN
    signature: 'ReorderBufferTXN *

      ReorderBufferGetOldestTXN(ReorderBuffer *rb)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AssertTXNLsnOrder
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1075,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1077,1
    - Dst: dlist_head_element
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1080,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - rb
    argTypes:
    - ReorderBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1070
    functionDepth: 2
    functionLinenumber: 1070
    functionLinenumberEnd: 1083
    functionName: ReorderBufferGetOldestXmin
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - dlist_head_element
    - AssertTXNLsnOrder
    - dlist_is_empty
    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: 1089
      start: 1085
    functionDepth: 0
    functionLinenumber: 1085
    functionLinenumberEnd: 1089
    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:1106,1
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1107,1
    - Dst: rbtxn_is_known_subxact
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1111,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1123,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1129,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1135,1
    - Dst: ReorderBufferTransferSnapToParent
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1139,1
    - Dst: AssertTXNLsnOrder
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1142,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 4
    argNames:
    - rb
    - xid
    - subxid
    - lsn
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - TransactionId
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1097
    functionDepth: 3
    functionLinenumber: 1097
    functionLinenumberEnd: 1143
    functionName: ReorderBufferAssignChild
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - ReorderBufferTransferSnapToParent
    - Assert
    - dlist_push_tail
    - rbtxn_is_known_subxact
    - AssertTXNLsnOrder
    - dlist_delete
    - ReorderBufferTXNByXid
    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:1167,1
    - Dst: SnapBuildSnapDecRefcount
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1180,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1181,1
    - Dst: dlist_insert_before
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1191,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1200,1
    - Dst: SnapBuildSnapDecRefcount
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1205,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1206,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - txn
    - subtxn
    argTypes:
    - ReorderBufferTXN*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1211
      start: 1163
    functionDepth: 3
    functionLinenumber: 1163
    functionLinenumberEnd: 1211
    functionName: ReorderBufferTransferSnapToParent
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - Assert
    - dlist_insert_before
    - SnapBuildSnapDecRefcount
    - dlist_delete
    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:1224,1
    - Dst: ReorderBufferAssignChild
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1240,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: 1241
      start: 1217
    functionDepth: 4
    functionLinenumber: 1217
    functionLinenumberEnd: 1241
    functionName: ReorderBufferCommitChild
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 2
    functionsReached:
    - ReorderBufferTXNByXid
    - ReorderBufferAssignChild
    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:1263,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1264,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - Datum
    - Datum
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1271
      start: 1259
    functionDepth: 1
    functionLinenumber: 1259
    functionLinenumberEnd: 1271
    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:1294,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1304,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1308,1
    - Dst: AssertChangeLsnOrder
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1311,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1319,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1324,1
    - Dst: binaryheap_allocate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1333,1
    - Dst: rbtxn_is_serialized
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1352,1
    - Dst: ReorderBufferSerializeTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1355,1
    - Dst: ReorderBufferRestoreChanges
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1356,1
    - Dst: dlist_head_element
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1360,1
    - Dst: binaryheap_add_unordered
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1367,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1367,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1371,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1375,1
    - Dst: rbtxn_is_serialized
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1381,1
    - Dst: ReorderBufferSerializeTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1384,1
    - Dst: ReorderBufferRestoreChanges
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1385,1
    - Dst: dlist_head_element
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1389,1
    - Dst: binaryheap_add_unordered
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1396,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1396,1
    - Dst: binaryheap_build
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1401,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 47
    argCount: 3
    argNames:
    - rb
    - txn
    - iter_state
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - ReorderBufferIterTXNState**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1402
      start: 1282
    functionDepth: 2
    functionLinenumber: 1282
    functionLinenumberEnd: 1402
    functionName: ReorderBufferIterTXNInit
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - ReorderBufferSerializeTXN
    - Int32GetDatum
    - binaryheap_add_unordered
    - MemoryContextAllocZero
    - AssertChangeLsnOrder
    - rbtxn_is_serialized
    - dlist_foreach
    - dlist_head_element
    - ReorderBufferRestoreChanges
    - binaryheap_build
    - binaryheap_allocate
    - dlist_container
    - dlist_init
    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:1418,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1421,1
    - Dst: binaryheap_first
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1421,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1425,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1427,1
    - Dst: dlist_pop_head_node
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1428,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1429,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1430,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1430,1
    - Dst: dlist_has_next
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1441,1
    - Dst: dlist_next_node
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1443,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1445,1
    - Dst: binaryheap_replace_first
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1451,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1451,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1462,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1463,1
    - Dst: ReorderBufferRestoreChanges
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1471,1
    - Dst: dlist_head_element
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1476,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1479,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1483,1
    - Dst: binaryheap_replace_first
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1487,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1487,1
    - Dst: binaryheap_remove_first
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1494,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 2
    argNames:
    - rb
    - state
    argTypes:
    - ReorderBuffer*
    - ReorderBufferIterTXNState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1497
      start: 1410
    functionDepth: 2
    functionLinenumber: 1410
    functionLinenumberEnd: 1497
    functionName: ReorderBufferIterTXNNext
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - Assert
    - binaryheap_empty
    - Int32GetDatum
    - DatumGetInt32
    - dlist_pop_head_node
    - ReorderBufferFreeChange
    - dlist_is_empty
    - binaryheap_first
    - binaryheap_replace_first
    - dlist_push_tail
    - dlist_head_element
    - elog
    - dlist_has_next
    - dlist_next_node
    - ReorderBufferRestoreChanges
    - dlist_delete
    - binaryheap_remove_first
    - dlist_container
    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:1511,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1515,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1519,1
    - Dst: dlist_pop_head_node
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1520,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1521,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1522,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1522,1
    - Dst: binaryheap_free
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1525,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1526,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - rb
    - state
    argTypes:
    - ReorderBuffer*
    - ReorderBufferIterTXNState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1527
      start: 1502
    functionDepth: 2
    functionLinenumber: 1502
    functionLinenumberEnd: 1527
    functionName: ReorderBufferIterTXNFinish
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - FileClose
    - dlist_pop_head_node
    - ReorderBufferFreeChange
    - dlist_is_empty
    - dlist_container
    - binaryheap_free
    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:1541,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1545,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1552,1
    - Dst: rbtxn_is_known_subxact
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1552,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1553,1
    - Dst: ReorderBufferCleanupTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1555,1
    - Dst: dlist_foreach_modify
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1559,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1563,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1566,1
    - Dst: ReorderBufferChangeSize
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1574,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1576,1
    - Dst: ReorderBufferChangeMemoryUpdate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1580,1
    - Dst: dlist_foreach_modify
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1586,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1590,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1593,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1594,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1596,1
    - Dst: SnapBuildSnapDecRefcount
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1604,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1605,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1613,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1613,1
    - Dst: ReorderBufferFreeSnap
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1614,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1626,1
    - Dst: rbtxn_has_catalog_changes
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1627,1
    - Dst: dclist_delete_from
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1628,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1631,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1632,1
    - Dst: rbtxn_is_serialized
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1635,1
    - Dst: ReorderBufferRestoreCleanup
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1636,1
    - Dst: ReorderBufferFreeTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1639,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 36
    argCount: 2
    argNames:
    - rb
    - txn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1640
      start: 1533
    functionDepth: 3
    functionLinenumber: 1533
    functionLinenumberEnd: 1640
    functionName: ReorderBufferCleanupTXN
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - Assert
    - rbtxn_has_catalog_changes
    - dclist_delete_from
    - ReorderBufferRestoreCleanup
    - dlist_foreach_modify
    - ReorderBufferChangeSize
    - ReorderBufferFreeChange
    - SnapBuildSnapDecRefcount
    - rbtxn_is_known_subxact
    - ReorderBufferChangeMemoryUpdate
    - rbtxn_is_streamed
    - hash_search
    - rbtxn_is_serialized
    - dlist_delete
    - ReorderBufferFreeSnap
    - ReorderBufferFreeTXN
    - dlist_container
    - ReorderBufferCleanupTXN
    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:1661,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1665,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1672,1
    - Dst: rbtxn_is_known_subxact
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1672,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1673,1
    - Dst: ReorderBufferMaybeMarkTXNStreamed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1675,1
    - Dst: ReorderBufferTruncateTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1676,1
    - Dst: dlist_foreach_modify
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1680,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1684,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1687,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1690,1
    - Dst: ReorderBufferChangeSize
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1698,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1700,1
    - Dst: ReorderBufferChangeMemoryUpdate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1704,1
    - Dst: dlist_foreach_modify
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1713,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1717,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1720,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1721,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1724,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1726,1
    - Dst: hash_destroy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1737,1
    - Dst: rbtxn_is_serialized
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1742,1
    - Dst: ReorderBufferRestoreCleanup
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1744,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 36
    argCount: 3
    argNames:
    - rb
    - txn
    - txn_prepared
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1758
      start: 1654
    functionDepth: 2
    functionLinenumber: 1654
    functionLinenumberEnd: 1758
    functionName: ReorderBufferTruncateTXN
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - Assert
    - ReorderBufferRestoreCleanup
    - ReorderBufferMaybeMarkTXNStreamed
    - dlist_foreach_modify
    - ReorderBufferChangeSize
    - ReorderBufferFreeChange
    - hash_destroy
    - rbtxn_is_known_subxact
    - ReorderBufferChangeMemoryUpdate
    - rbtxn_is_serialized
    - ReorderBufferTruncateTXN
    - dlist_delete
    - dlist_container
    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:1776,1
    - Dst: rbtxn_is_committed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1783,1
    - Dst: rbtxn_is_aborted
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1785,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1788,1
    - Dst: TransactionIdIsInProgress
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1795,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1798,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1804,1
    - Dst: rbtxn_is_aborted
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1804,1
    - Dst: ReorderBufferTruncateTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1814,1
    - Dst: rbtxn_is_prepared
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1814,1
    - Dst: ReorderBufferToastReset
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1815,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1818,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1824,1
    - Dst: rbtxn_is_committed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1824,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - rb
    - txn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1828
      start: 1772
    functionDepth: 3
    functionLinenumber: 1772
    functionLinenumberEnd: 1828
    functionName: ReorderBufferCheckAndTruncateAbortedTXN
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - TransactionIdIsInProgress
    - Assert
    - TransactionIdDidCommit
    - rbtxn_is_committed
    - unlikely
    - rbtxn_is_prepared
    - ReorderBufferTruncateTXN
    - ReorderBufferToastReset
    - rbtxn_is_aborted
    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:1840,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1840,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1852,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1855,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1862,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1864,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1867,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1871,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1875,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1888,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1894,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - rb
    - txn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1900
      start: 1834
    functionDepth: 2
    functionLinenumber: 1834
    functionLinenumberEnd: 1900
    functionName: ReorderBufferBuildTupleCidHash
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - Assert
    - ItemPointerCopy
    - rbtxn_has_catalog_changes
    - memset
    - hash_create
    - dlist_is_empty
    - hash_search
    - dlist_foreach
    - dlist_container
    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:1920,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1921,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1928,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1945,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1949,1
    - Dst: qsort
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1955,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: 1961
      start: 1907
    functionDepth: 1
    functionLinenumber: 1907
    functionLinenumberEnd: 1961
    functionName: ReorderBufferCopySnap
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - qsort
    - MemoryContextAllocZero
    - dlist_foreach
    - memcpy
    - dlist_container
    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:1970,1
    - Dst: SnapBuildSnapDecRefcount
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1972,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - rb
    - snap
    argTypes:
    - ReorderBuffer*
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1973
      start: 1966
    functionDepth: 3
    functionLinenumber: 1966
    functionLinenumberEnd: 1973
    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:1985,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1985,1
    - Dst: ReorderBufferStreamTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1987,1
    - Dst: rbtxn_is_prepared
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1989,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1995,1
    - Dst: rbtxn_sent_prepare
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1995,1
    - Dst: ReorderBuffer*::stream_prepare
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:1996,1
    - Dst: ReorderBufferTruncateTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2004,1
    - Dst: ReorderBuffer*::stream_commit
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2010,1
    - Dst: ReorderBufferCleanupTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2011,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - rb
    - txn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2013
      start: 1981
    functionDepth: 4
    functionLinenumber: 1981
    functionLinenumberEnd: 2013
    functionName: ReorderBufferStreamCommit
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - ReorderBuffer*::stream_prepare
    - Assert
    - ReorderBuffer*::stream_commit
    - rbtxn_is_streamed
    - ReorderBufferStreamTXN
    - rbtxn_is_prepared
    - ReorderBufferTruncateTXN
    - rbtxn_sent_prepare
    - ReorderBufferCleanupTXN
    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:2054,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2061,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2065
      start: 2047
    functionDepth: 3
    functionLinenumber: 2047
    functionLinenumberEnd: 2065
    functionName: SetupCheckXidLive
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - TransactionIdEquals
    - TransactionIdDidCommit
    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:2076,1
    - Dst: ReorderBuffer*::apply_change
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2078,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: 2079
      start: 2070
    functionDepth: 0
    functionLinenumber: 2070
    functionLinenumberEnd: 2079
    functionName: ReorderBufferApplyChange
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - ReorderBuffer*::stream_change
    - ReorderBuffer*::apply_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:2090,1
    - Dst: ReorderBuffer*::apply_truncate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2092,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: 2093
      start: 2084
    functionDepth: 0
    functionLinenumber: 2084
    functionLinenumberEnd: 2093
    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:2103,1
    - Dst: ReorderBuffer*::message
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - rb
    - txn
    - change
    - streaming
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - ReorderBufferChange*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2112
      start: 2098
    functionDepth: 0
    functionLinenumber: 2098
    functionLinenumberEnd: 2112
    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:2128,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: 2130
      start: 2118
    functionDepth: 2
    functionLinenumber: 2118
    functionLinenumberEnd: 2130
    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:2152,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - rb
    - txn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2154
      start: 2136
    functionDepth: 1
    functionLinenumber: 2136
    functionLinenumberEnd: 2154
    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: 3
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferTruncateTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2171,1
    - Dst: rbtxn_is_prepared
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2171,1
    - Dst: ReorderBufferToastReset
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2174,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2179,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2187,1
    - Dst: ReorderBuffer*::stream_stop
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2189,1
    - Dst: ReorderBufferSaveTXNSnapshot
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2190,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2194,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 6
    argNames:
    - rb
    - txn
    - snapshot_now
    - command_id
    - last_lsn
    - specinsert
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - Snapshot
    - CommandId
    - XLogRecPtr
    - ReorderBufferChange*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2195
      start: 2163
    functionDepth: 3
    functionLinenumber: 2163
    functionLinenumberEnd: 2195
    functionName: ReorderBufferResetTXN
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - ReorderBufferSaveTXNSnapshot
    - Assert
    - ReorderBufferFreeChange
    - rbtxn_is_streamed
    - rbtxn_is_prepared
    - ReorderBufferTruncateTXN
    - ReorderBufferToastReset
    - 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,\n\t\t\t\t\t  ReorderBufferChange *specinsert)"
  - BBCount: 56
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferBuildTupleCidHash
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2225,1
    - Dst: SetupHistoricSnapshot
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2228,1
    - Dst: IsTransactionOrTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2240,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2242,1
    - Dst: BeginInternalSubTransaction
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2249,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2251,1
    - Dst: rbtxn_is_prepared
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2259,1
    - Dst: ReorderBuffer*::begin_prepare
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2260,1
    - Dst: ReorderBuffer*::begin
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2262,1
    - Dst: ReorderBufferIterTXNInit
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2265,1
    - Dst: ReorderBufferIterTXNNext
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2266,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2271,1
    - Dst: ReorderBuffer*::stream_start
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2282,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2292,1
    - Dst: rbtxn_is_prepared
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2301,1
    - Dst: SetupCheckXidLive
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2304,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2317,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2318,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2326,1
    - Dst: RelidByRelfilenumber
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2328,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2348,1
    - Dst: relpathperm
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2349,1
    - Dst: RelationIdGetRelation
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2352,1
    - Dst: RelationIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2354,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2355,1
    - Dst: relpathperm
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2357,1
    - Dst: RelationIsLogicallyLogged
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2360,1
    - Dst: IsToastRelation
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2380,1
    - Dst: ReorderBufferToastReplace
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2382,1
    - Dst: ReorderBufferApplyChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2383,1
    - Dst: ReorderBufferToastReset
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2392,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2405,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2407,1
    - Dst: ReorderBufferToastAppendChunk
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2408,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2420,1
    - Dst: RelationIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2424,1
    - Dst: RelationClose
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2426,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2449,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2454,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2475,1
    - Dst: ReorderBufferToastReset
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2476,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2479,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2491,1
    - Dst: RelationIdGetRelation
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2497,1
    - Dst: RelationIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2499,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2500,1
    - Dst: RelationIsLogicallyLogged
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2502,1
    - Dst: ReorderBufferApplyTruncate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2509,1
    - Dst: RelationClose
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2514,1
    - Dst: ReorderBufferApplyMessage
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2520,1
    - Dst: ReorderBufferExecuteInvalidations
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2525,1
    - Dst: TeardownHistoricSnapshot
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2531,1
    - Dst: ReorderBufferFreeSnap
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2535,1
    - Dst: ReorderBufferCopySnap
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2537,1
    - Dst: ReorderBufferCopySnap
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2549,1
    - Dst: SetupHistoricSnapshot
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2558,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2562,1
    - Dst: ReorderBufferCopySnap
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2571,1
    - Dst: TeardownHistoricSnapshot
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2577,1
    - Dst: SetupHistoricSnapshot
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2578,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2584,1
    - Dst: ReorderBuffer*::update_progress_txn
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2602,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2608,1
    - Dst: ReorderBufferIterTXNFinish
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2611,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2623,1
    - Dst: ReorderBuffer*::stream_stop
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2636,1
    - Dst: rbtxn_is_prepared
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2646,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2648,1
    - Dst: rbtxn_sent_prepare
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2648,1
    - Dst: ReorderBuffer*::prepare
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2649,1
    - Dst: ReorderBuffer*::commit
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2653,1
    - Dst: GetCurrentTransactionIdIfAny
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2657,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2658,1
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2659,1
    - Dst: ReorderBufferSaveTXNSnapshot
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2666,1
    - Dst: ReorderBufferFreeSnap
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2668,1
    - Dst: TeardownHistoricSnapshot
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2671,1
    - Dst: AbortCurrentTransaction
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2679,1
    - Dst: rbtxn_distr_inval_overflowed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2682,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2684,1
    - Dst: InvalidateSystemCaches
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2685,1
    - Dst: ReorderBufferExecuteInvalidations
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2689,1
    - Dst: ReorderBufferExecuteInvalidations
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2690,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2695,1
    - Dst: rbtxn_is_prepared
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2711,1
    - Dst: ReorderBufferMaybeMarkTXNStreamed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2714,1
    - Dst: ReorderBufferTruncateTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2716,1
    - Dst: rbtxn_is_prepared
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2716,1
    - Dst: ReorderBufferCleanupTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2721,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2723,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2725,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2726,1
    - Dst: ReorderBufferIterTXNFinish
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2730,1
    - Dst: TeardownHistoricSnapshot
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2732,1
    - Dst: AbortCurrentTransaction
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2738,1
    - Dst: rbtxn_distr_inval_overflowed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2741,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2743,1
    - Dst: InvalidateSystemCaches
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2744,1
    - Dst: ReorderBufferExecuteInvalidations
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2748,1
    - Dst: ReorderBufferExecuteInvalidations
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2749,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2754,1
    - Dst: rbtxn_is_prepared
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2769,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2772,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2775,1
    - Dst: FreeErrorData
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2776,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2780,1
    - Dst: rbtxn_is_committed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2780,1
    - Dst: ReorderBufferMaybeMarkTXNStreamed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2785,1
    - Dst: ReorderBufferResetTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2788,1
    - Dst: ReorderBufferCleanupTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2794,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2795,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2796,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2799,1
    CyclomaticComplexity: 69
    EdgeCount: 69
    ICount: 226
    argCount: 6
    argNames:
    - rb
    - txn
    - commit_lsn
    - snapshot_now
    - command_id
    - streaming
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - XLogRecPtr
    - Snapshot
    - CommandId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2800
      start: 2209
    functionDepth: 4
    functionLinenumber: 2209
    functionLinenumberEnd: 2800
    functionName: ReorderBufferProcessTXN
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - rbtxn_distr_inval_overflowed
    - ReorderBufferApplyMessage
    - MemoryContextSwitchTo
    - CHECK_FOR_INTERRUPTS
    - BeginInternalSubTransaction
    - ReorderBufferBuildTupleCidHash
    - dlist_delete
    - GetCurrentTransactionIdIfAny
    - ReorderBufferSaveTXNSnapshot
    - PG_RE_THROW
    - IsTransactionOrTransactionBlock
    - GetCurrentTransactionId
    - ReorderBufferCopySnap
    - RollbackAndReleaseCurrentSubTransaction
    - rbtxn_is_streamed
    - relpathperm
    - RelationIsLogicallyLogged
    - ReorderBufferToastReset
    - ReorderBufferIterTXNFinish
    - rbtxn_sent_prepare
    - StartTransactionCommand
    - ReorderBufferToastReplace
    - ReorderBufferIterTXNInit
    - ReorderBufferCleanupTXN
    - CopyErrorData
    - ReorderBuffer*::stream_start
    - ReorderBuffer*::begin
    - ReorderBuffer*::begin_prepare
    - RelationClose
    - SetupHistoricSnapshot
    - AbortCurrentTransaction
    - ReorderBuffer*::update_progress_txn
    - rbtxn_is_prepared
    - elog
    - IsToastRelation
    - ReorderBufferFreeSnap
    - ReorderBuffer*::stream_stop
    - ReorderBuffer*::commit
    - RelationIdGetRelation
    - ReorderBuffer*::prepare
    - Assert
    - FreeErrorData
    - PG_END_TRY
    - RelationIsValid
    - ReorderBufferApplyTruncate
    - PG_TRY
    - ReorderBufferMaybeMarkTXNStreamed
    - RelidByRelfilenumber
    - FlushErrorState
    - ReorderBufferApplyChange
    - ReorderBufferFreeChange
    - palloc0
    - PG_CATCH
    - TeardownHistoricSnapshot
    - ReorderBufferResetTXN
    - rbtxn_is_committed
    - ReorderBufferToastAppendChunk
    - ReorderBufferExecuteInvalidations
    - SetupCheckXidLive
    - InvalidateSystemCaches
    - ReorderBufferTruncateTXN
    - ReorderBufferIterTXNNext
    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:2836,1
    - Dst: ReorderBufferStreamCommit
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2838,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2850,1
    - Dst: rbtxn_is_prepared
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2856,1
    - Dst: ReorderBufferCleanupTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2857,1
    - Dst: ReorderBufferProcessTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2864,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
    - RepOriginId
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2866
      start: 2812
    functionDepth: 5
    functionLinenumber: 2812
    functionLinenumberEnd: 2866
    functionName: ReorderBufferReplay
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - Assert
    - rbtxn_is_streamed
    - rbtxn_is_prepared
    - ReorderBufferStreamCommit
    - ReorderBufferProcessTXN
    - ReorderBufferCleanupTXN
    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\tRepOriginId origin_id, XLogRecPtr origin_lsn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2881,1
    - Dst: ReorderBufferReplay
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2888,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
    - RepOriginId
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2890
      start: 2873
    functionDepth: 6
    functionLinenumber: 2873
    functionLinenumberEnd: 2890
    functionName: ReorderBufferCommit
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - ReorderBufferTXNByXid
    - ReorderBufferReplay
    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\tRepOriginId
      origin_id, XLogRecPtr origin_lsn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2904,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2921,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
    - RepOriginId
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2925
      start: 2896
    functionDepth: 3
    functionLinenumber: 2896
    functionLinenumberEnd: 2925
    functionName: ReorderBufferRememberPrepareInfo
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - ReorderBufferTXNByXid
    - Assert
    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 RepOriginId origin_id, XLogRecPtr
      origin_lsn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2933,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2940,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - rb
    - xid
    argTypes:
    - ReorderBuffer*
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2942
      start: 2928
    functionDepth: 3
    functionLinenumber: 2928
    functionLinenumberEnd: 2942
    functionName: ReorderBufferSkipPrepare
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - ReorderBufferTXNByXid
    - Assert
    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:2955,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2967,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2968,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2970,1
    - Dst: ReorderBufferReplay
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2972,1
    - Dst: rbtxn_sent_prepare
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2980,1
    - Dst: ReorderBuffer*::prepare
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:2982,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - rb
    - xid
    - gid
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2985
      start: 2949
    functionDepth: 6
    functionLinenumber: 2949
    functionLinenumberEnd: 2985
    functionName: ReorderBufferPrepare
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - Assert
    - pstrdup
    - ReorderBufferReplay
    - ReorderBufferTXNByXid
    - rbtxn_sent_prepare
    - ReorderBuffer*::prepare
    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:3001,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3015,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3032,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3034,1
    - Dst: ReorderBufferReplay
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3043,1
    - Dst: ReorderBuffer*::commit_prepared
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3054,1
    - Dst: ReorderBuffer*::rollback_prepared
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3056,1
    - Dst: ReorderBufferExecuteInvalidations
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3059,1
    - Dst: ReorderBufferCleanupTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3061,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
    - RepOriginId
    - XLogRecPtr
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3062
      start: 2990
    functionDepth: 6
    functionLinenumber: 2990
    functionLinenumberEnd: 3062
    functionName: ReorderBufferFinishPrepared
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 2
    functionsReached:
    - Assert
    - ReorderBuffer*::rollback_prepared
    - ReorderBuffer*::commit_prepared
    - pstrdup
    - ReorderBufferExecuteInvalidations
    - ReorderBufferReplay
    - ReorderBufferTXNByXid
    - ReorderBufferCleanupTXN
    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, RepOriginId 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:3082,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3092,1
    - Dst: ReorderBuffer*::stream_abort
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3094,1
    - Dst: ReorderBufferImmediateInvalidation
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3104,1
    - Dst: ReorderBufferCleanupTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3112,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: 3113
      start: 3076
    functionDepth: 4
    functionLinenumber: 3076
    functionLinenumberEnd: 3113
    functionName: ReorderBufferAbort
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - ReorderBuffer*::stream_abort
    - rbtxn_is_streamed
    - ReorderBufferImmediateInvalidation
    - ReorderBufferTXNByXid
    - ReorderBufferCleanupTXN
    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:3134,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3138,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3140,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3142,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3145,1
    - Dst: ReorderBuffer*::stream_abort
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3146,1
    - Dst: ReorderBufferCleanupTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - rb
    - oldestRunningXid
    argTypes:
    - ReorderBuffer*
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3154
      start: 3122
    functionDepth: 4
    functionLinenumber: 3122
    functionLinenumberEnd: 3154
    functionName: ReorderBufferAbortOld
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - dlist_container
    - dlist_foreach_modify
    - ReorderBuffer*::stream_abort
    - rbtxn_is_streamed
    - elog
    - TransactionIdPrecedes
    - ReorderBufferCleanupTXN
    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:3174,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3182,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3182,1
    - Dst: ReorderBufferImmediateInvalidation
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3194,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3197,1
    - Dst: ReorderBufferCleanupTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3200,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - rb
    - xid
    - lsn
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3201
      start: 3169
    functionDepth: 4
    functionLinenumber: 3169
    functionLinenumberEnd: 3201
    functionName: ReorderBufferForget
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - Assert
    - rbtxn_is_streamed
    - ReorderBufferImmediateInvalidation
    - ReorderBufferTXNByXid
    - ReorderBufferCleanupTXN
    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:3216,1
    - Dst: ReorderBufferImmediateInvalidation
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3229,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3232,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - rb
    - xid
    - lsn
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3233
      start: 3211
    functionDepth: 3
    functionLinenumber: 3211
    functionLinenumberEnd: 3233
    functionName: ReorderBufferInvalidate
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - ReorderBufferTXNByXid
    - Assert
    - ReorderBufferImmediateInvalidation
    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:3246,1
    - Dst: BeginInternalSubTransaction
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3250,1
    - Dst: AbortCurrentTransaction
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3259,1
    - Dst: LocalExecuteInvalidationMessage
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3262,1
    - Dst: RollbackAndReleaseCurrentSubTransaction
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3265,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - rb
    - ninvalidations
    - invalidations
    argTypes:
    - ReorderBuffer*
    - uint32
    - SharedInvalidationMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3266
      start: 3242
    functionDepth: 3
    functionLinenumber: 3242
    functionLinenumberEnd: 3266
    functionName: ReorderBufferImmediateInvalidation
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 4
    functionsReached:
    - IsTransactionOrTransactionBlock
    - BeginInternalSubTransaction
    - RollbackAndReleaseCurrentSubTransaction
    - AbortCurrentTransaction
    - LocalExecuteInvalidationMessage
    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:3283,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - rb
    - xid
    - lsn
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3284
      start: 3278
    functionDepth: 3
    functionLinenumber: 3278
    functionLinenumberEnd: 3284
    functionName: ReorderBufferProcessXid
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 7
    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:3295,1
    - Dst: ReorderBufferQueueChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - rb
    - xid
    - lsn
    - snap
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - XLogRecPtr
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3301
      start: 3291
    functionDepth: 4
    functionLinenumber: 3291
    functionLinenumberEnd: 3301
    functionName: ReorderBufferAddSnapshot
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - ReorderBufferAllocChange
    - ReorderBufferQueueChange
    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:3316,1
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3322,1
    - Dst: rbtxn_is_known_subxact
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3323,1
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3324,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3326,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3330,1
    - Dst: AssertTXNLsnOrder
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3332,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - rb
    - xid
    - lsn
    - snap
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - XLogRecPtr
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3333
      start: 3309
    functionDepth: 3
    functionLinenumber: 3309
    functionLinenumberEnd: 3333
    functionName: ReorderBufferSetBaseSnapshot
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 2
    functionsReached:
    - Assert
    - dlist_push_tail
    - rbtxn_is_known_subxact
    - AssertTXNLsnOrder
    - ReorderBufferTXNByXid
    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:3344,1
    - Dst: ReorderBufferQueueChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - rb
    - xid
    - lsn
    - cid
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - XLogRecPtr
    - CommandId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3350
      start: 3340
    functionDepth: 4
    functionLinenumber: 3340
    functionLinenumberEnd: 3350
    functionName: ReorderBufferAddNewCommandId
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - ReorderBufferAllocChange
    - ReorderBufferQueueChange
    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:3376,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3391,1
    - Dst: rbtxn_get_toptxn
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3397,1
    - Dst: pairingheap_remove
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3411,1
    - Dst: pairingheap_add
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3412,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3416,1
    - Dst: pairingheap_remove
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3424,1
    - Dst: pairingheap_add
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3426,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3429,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: 3430
      start: 3368
    functionDepth: 1
    functionLinenumber: 3368
    functionLinenumberEnd: 3430
    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:3445,1
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3448,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3459,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: 3461
      start: 3439
    functionDepth: 3
    functionLinenumber: 3439
    functionLinenumberEnd: 3461
    functionName: ReorderBufferAddNewTupleCids
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - ReorderBufferTXNByXid
    - ReorderBufferAllocChange
    - dlist_push_tail
    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:3473,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3477,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3478,1
    - Dst: ReorderBufferQueueChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3481,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: 3482
      start: 3466
    functionDepth: 4
    functionLinenumber: 3466
    functionLinenumberEnd: 3482
    functionName: ReorderBufferQueueInvalidations
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - ReorderBufferAllocChange
    - palloc
    - ReorderBufferQueueChange
    - 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
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3499,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3500,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3506,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3508,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: 3512
      start: 3489
    functionDepth: 0
    functionLinenumber: 3489
    functionLinenumberEnd: 3512
    functionName: ReorderBufferAccumulateInvalidations
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - repalloc
    - memcpy
    - palloc
    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:3535,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3537,1
    - Dst: rbtxn_get_toptxn
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3544,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3546,1
    - Dst: ReorderBufferAccumulateInvalidations
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3548,1
    - Dst: ReorderBufferQueueInvalidations
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3552,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3554,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: 3555
      start: 3527
    functionDepth: 5
    functionLinenumber: 3527
    functionLinenumberEnd: 3555
    functionName: ReorderBufferAddInvalidations
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - rbtxn_get_toptxn
    - ReorderBufferAccumulateInvalidations
    - ReorderBufferQueueInvalidations
    - ReorderBufferTXNByXid
    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:3576,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3578,1
    - Dst: rbtxn_get_toptxn
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3585,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3587,1
    - Dst: rbtxn_distr_inval_overflowed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3589,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3605,1
    - Dst: ReorderBufferAccumulateInvalidations
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3611,1
    - Dst: ReorderBufferQueueInvalidations
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3617,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3619,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: 3620
      start: 3568
    functionDepth: 5
    functionLinenumber: 3568
    functionLinenumberEnd: 3620
    functionName: ReorderBufferAddDistributedInvalidations
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - rbtxn_distr_inval_overflowed
    - pfree
    - Assert
    - MemoryContextSwitchTo
    - rbtxn_get_toptxn
    - ReorderBufferAccumulateInvalidations
    - ReorderBufferQueueInvalidations
    - ReorderBufferTXNByXid
    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:3632,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - nmsgs
    - msgs
    argTypes:
    - uint32
    - SharedInvalidationMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3633
      start: 3626
    functionDepth: 1
    functionLinenumber: 3626
    functionLinenumberEnd: 3633
    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:3644,1
    - Dst: rbtxn_has_catalog_changes
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3646,1
    - Dst: dclist_push_tail
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3649,1
    - Dst: rbtxn_is_subtxn
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3658,1
    - Dst: rbtxn_get_toptxn
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3660,1
    - Dst: rbtxn_has_catalog_changes
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3662,1
    - Dst: dclist_push_tail
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3665,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - rb
    - xid
    - lsn
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3668
      start: 3638
    functionDepth: 3
    functionLinenumber: 3638
    functionLinenumberEnd: 3668
    functionName: ReorderBufferXidSetCatalogChanges
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 2
    functionsReached:
    - rbtxn_has_catalog_changes
    - rbtxn_get_toptxn
    - rbtxn_is_subtxn
    - dclist_push_tail
    - ReorderBufferTXNByXid
    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:3684,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3688,1
    - Dst: dclist_count
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3689,1
    - Dst: dclist_foreach
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3690,1
    - Dst: dclist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3692,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3696,1
    - Dst: rbtxn_has_catalog_changes
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3696,1
    - Dst: qsort
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3701,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3703,1
    - Dst: dclist_count
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3703,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - rb
    argTypes:
    - ReorderBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3705
      start: 3676
    functionDepth: 2
    functionLinenumber: 3676
    functionLinenumberEnd: 3705
    functionName: ReorderBufferGetCatalogChangesXacts
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - dclist_foreach
    - Assert
    - qsort
    - dclist_container
    - rbtxn_has_catalog_changes
    - dclist_count
    - palloc
    linkageType: ''
    returnType: TransactionId
    signature: 'TransactionId *

      ReorderBufferGetCatalogChangesXacts(ReorderBuffer *rb)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3716,1
    - Dst: rbtxn_has_catalog_changes
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3721,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - rb
    - xid
    argTypes:
    - ReorderBuffer*
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3722
      start: 3711
    functionDepth: 3
    functionLinenumber: 3711
    functionLinenumberEnd: 3722
    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:3733,1
    - Dst: rbtxn_is_known_subxact
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3741,1
    - Dst: ReorderBufferTXNByXid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3742,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - rb
    - xid
    argTypes:
    - ReorderBuffer*
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3746
      start: 3728
    functionDepth: 3
    functionLinenumber: 3728
    functionLinenumberEnd: 3746
    functionName: ReorderBufferXidHasBaseSnapshot
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 3
    functionsReached:
    - ReorderBufferTXNByXid
    - rbtxn_is_known_subxact
    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:3763,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3768,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - rb
    - sz
    argTypes:
    - ReorderBuffer*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3771
      start: 3758
    functionDepth: 1
    functionLinenumber: 3758
    functionLinenumberEnd: 3771
    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:3778,1
    - Dst: pairingheap_const_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3779,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - pairingheap_node*
    - pairingheap_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3786
      start: 3775
    functionDepth: 1
    functionLinenumber: 3775
    functionLinenumberEnd: 3786
    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:3797,1
    - Dst: pairingheap_first
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3798,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3800,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3801,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - rb
    argTypes:
    - ReorderBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3805
      start: 3791
    functionDepth: 1
    functionLinenumber: 3791
    functionLinenumberEnd: 3805
    functionName: ReorderBufferLargestTXN
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - pairingheap_first
    - pairingheap_container
    - Assert
    linkageType: ''
    returnType: ReorderBufferTXN
    signature: 'ReorderBufferTXN *

      ReorderBufferLargestTXN(ReorderBuffer *rb)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3840,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3844,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3847,1
    - Dst: rbtxn_is_known_subxact
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3847,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3849,1
    - Dst: rbtxn_has_partial_change
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3852,1
    - Dst: rbtxn_has_streamable_change
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3853,1
    - Dst: rbtxn_is_aborted
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3854,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 1
    argNames:
    - rb
    argTypes:
    - ReorderBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3867
      start: 3832
    functionDepth: 1
    functionLinenumber: 3832
    functionLinenumberEnd: 3867
    functionName: ReorderBufferLargestStreamableTopTXN
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - Assert
    - rbtxn_has_streamable_change
    - rbtxn_has_partial_change
    - rbtxn_is_known_subxact
    - dlist_foreach
    - rbtxn_is_aborted
    - dlist_container
    linkageType: ''
    returnType: ReorderBufferTXN
    signature: 'ReorderBufferTXN *

      ReorderBufferLargestStreamableTopTXN(ReorderBuffer *rb)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferCanStartStreaming
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3913,1
    - Dst: ReorderBufferLargestStreamableTopTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3914,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3917,1
    - Dst: rbtxn_is_toptxn
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3917,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3918,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3919,1
    - Dst: ReorderBufferCheckAndTruncateAbortedTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3922,1
    - Dst: ReorderBufferStreamTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3925,1
    - Dst: ReorderBufferLargestTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3933,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3936,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3937,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3938,1
    - Dst: ReorderBufferCheckAndTruncateAbortedTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3941,1
    - Dst: ReorderBufferSerializeTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3944,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3951,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3952,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3956,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 24
    argCount: 1
    argNames:
    - rb
    argTypes:
    - ReorderBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3957
      start: 3882
    functionDepth: 4
    functionLinenumber: 3882
    functionLinenumberEnd: 3957
    functionName: ReorderBufferCheckMemoryLimit
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - Assert
    - ReorderBufferCanStartStreaming
    - ReorderBufferSerializeTXN
    - ReorderBufferCheckAndTruncateAbortedTXN
    - ReorderBufferLargestTXN
    - rbtxn_is_toptxn
    - ReorderBufferStreamTXN
    - ReorderBufferLargestStreamableTopTXN
    linkageType: ''
    returnType: void
    signature: void ReorderBufferCheckMemoryLimit(ReorderBuffer *rb)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3972,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3976,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3980,1
    - Dst: ReorderBufferSerializeTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3981,1
    - Dst: dlist_foreach_modify
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3985,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3989,1
    - Dst: XLByteInSeg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:3996,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4001,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4003,1
    - Dst: ReorderBufferSerializedPath
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4009,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4013,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4017,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4018,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4019,1
    - Dst: ReorderBufferSerializeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4022,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4023,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4024,1
    - Dst: ReorderBufferChangeMemoryUpdate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4030,1
    - Dst: rbtxn_is_serialized
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4039,1
    - Dst: rbtxn_is_serialized_clear
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4039,1
    - Dst: UpdateDecodingStats
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4042,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4045,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4046,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4046,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4051,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 2
    argNames:
    - rb
    - txn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4052
      start: 3962
    functionDepth: 2
    functionLinenumber: 3962
    functionLinenumberEnd: 4052
    functionName: ReorderBufferSerializeTXN
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 3
    functionsReached:
    - ReorderBufferChangeMemoryUpdate
    - dlist_foreach
    - dlist_delete
    - rbtxn_is_serialized_clear
    - errcode_for_file_access
    - XLByteToSeg
    - errmsg
    - CloseTransientFile
    - UpdateDecodingStats
    - rbtxn_is_serialized
    - elog
    - Assert
    - XLByteInSeg
    - dlist_foreach_modify
    - ReorderBufferSerializeTXN
    - ReorderBufferFreeChange
    - ereport
    - dlist_is_empty
    - OpenTransientFile
    - ReorderBufferSerializedPath
    - ReorderBufferSerializeChange
    - dlist_container
    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:4064,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4067,1
    - Dst: ReorderBufferSerializeReserve
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4101,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4109,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4112,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4118,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4121,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4129,1
    - Dst: ReorderBufferSerializeReserve
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4133,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4141,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4143,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:4150,1
    - Dst: ReorderBufferSerializeReserve
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4164,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4169,1
    - Dst: ReorderBufferSerializeReserve
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4186,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4191,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4196,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4203,1
    - Dst: ReorderBufferSerializeReserve
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4219,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4225,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4241,1
    - Dst: write
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4242,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4246,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4250,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4251,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4252,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4255,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4268,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 108
    argCount: 4
    argNames:
    - rb
    - txn
    - fd
    - change
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - int
    - ReorderBufferChange*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4269
      start: 4057
    functionDepth: 2
    functionLinenumber: 4057
    functionLinenumberEnd: 4269
    functionName: ReorderBufferSerializeChange
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - write
    - errmsg
    - Assert
    - CloseTransientFile
    - ereport
    - pgstat_report_wait_end
    - ReorderBufferSerializeReserve
    - memcpy
    - pgstat_report_wait_start
    - strlen
    - 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: 4278
      start: 4272
    functionDepth: 0
    functionLinenumber: 4272
    functionLinenumberEnd: 4278
    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:4288,1
    - Dst: ReorderBufferCanStream
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4296,1
    - Dst: SnapBuildXactNeedsSkip
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4297,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - rb
    argTypes:
    - ReorderBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4301
      start: 4281
    functionDepth: 1
    functionLinenumber: 4281
    functionLinenumberEnd: 4301
    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:4316,1
    - Dst: rbtxn_is_toptxn
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4316,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4339,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4339,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4342,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4344,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4348,1
    - Dst: ReorderBufferTransferSnapToParent
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4349,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4358,1
    - Dst: ReorderBufferCopySnap
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4363,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: ReorderBufferCopySnap
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4385,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4389,1
    - Dst: ReorderBufferFreeSnap
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4390,1
    - Dst: rbtxn_is_streamed
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4400,1
    - Dst: ReorderBufferProcessTXN
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4404,1
    - Dst: UpdateDecodingStats
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4414,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4416,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4416,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4417,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4418,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 33
    argCount: 2
    argNames:
    - rb
    - txn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4419
      start: 4307
    functionDepth: 5
    functionLinenumber: 4307
    functionLinenumberEnd: 4419
    functionName: ReorderBufferStreamTXN
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 3
    functionsReached:
    - Assert
    - UpdateDecodingStats
    - ReorderBufferCopySnap
    - dlist_is_empty
    - rbtxn_is_toptxn
    - rbtxn_is_streamed
    - dlist_foreach
    - ReorderBufferTransferSnapToParent
    - ReorderBufferFreeSnap
    - ReorderBufferProcessTXN
    - dlist_container
    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:4463,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 44
    argCount: 1
    argNames:
    - change
    argTypes:
    - ReorderBufferChange*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4503
      start: 4424
    functionDepth: 0
    functionLinenumber: 4424
    functionLinenumberEnd: 4503
    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:4518,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4519,1
    - Dst: dlist_foreach_modify
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4522,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4525,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4527,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4528,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4531,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4531,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4533,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4540,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4548,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4550,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4550,1
    - Dst: ReorderBufferSerializedPath
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4556,1
    - Dst: PathNameOpenFile
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4559,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4571,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4572,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4573,1
    - Dst: ReorderBufferSerializeReserve
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4582,1
    - Dst: FileRead
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4583,1
    - Dst: FileClose
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4590,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4596,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4597,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4598,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4600,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4601,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4602,1
    - Dst: ReorderBufferSerializeReserve
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4610,1
    - Dst: FileRead
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4614,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4621,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4622,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4623,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4625,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4626,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4627,1
    - Dst: ReorderBufferRestoreChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4637,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 53
    argCount: 4
    argNames:
    - rb
    - txn
    - file
    - segno
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - TXNEntryFile*
    - XLogSegNo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4642
      start: 4509
    functionDepth: 2
    functionLinenumber: 4509
    functionLinenumberEnd: 4642
    functionName: ReorderBufferRestoreChanges
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 2
    functionsReached:
    - errmsg
    - Assert
    - XLByteToSeg
    - CHECK_FOR_INTERRUPTS
    - FileClose
    - dlist_foreach_modify
    - ReorderBufferSerializedPath
    - FileRead
    - ReorderBufferFreeChange
    - PathNameOpenFile
    - dlist_is_empty
    - ereport
    - ReorderBufferRestoreChange
    - dlist_delete
    - ReorderBufferSerializeReserve
    - dlist_container
    - errcode_for_file_access
    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:4661,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4664,1
    - Dst: ReorderBufferAllocTupleBuf
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4681,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4684,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4693,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4702,1
    - Dst: ReorderBufferAllocTupleBuf
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4706,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4709,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4718,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4728,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4730,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4732,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4733,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4737,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4739,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4741,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4753,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4756,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4772,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4776,1
    - Dst: ReorderBufferAllocRelids
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4788,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4789,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4801,1
    - Dst: ReorderBufferChangeMemoryUpdate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4812,1
    - Dst: ReorderBufferChangeSize
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4813,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 73
    argCount: 3
    argNames:
    - rb
    - txn
    - data
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4814
      start: 4652
    functionDepth: 2
    functionLinenumber: 4652
    functionLinenumberEnd: 4814
    functionName: ReorderBufferRestoreChange
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - Assert
    - memcpy
    - ReorderBufferAllocChange
    - ReorderBufferChangeSize
    - MemoryContextAllocZero
    - dlist_push_tail
    - ReorderBufferChangeMemoryUpdate
    - ReorderBufferAllocTupleBuf
    - MemoryContextAlloc
    - ReorderBufferAllocRelids
    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:4826,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4827,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4829,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4830,1
    - Dst: ReorderBufferSerializedPath
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4837,1
    - Dst: unlink
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4838,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4839,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4840,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4841,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - rb
    - txn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4843
      start: 4819
    functionDepth: 1
    functionLinenumber: 4819
    functionLinenumberEnd: 4843
    functionName: ReorderBufferRestoreCleanup
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 2
    functionsReached:
    - errmsg
    - XLByteToSeg
    - Assert
    - ereport
    - ReorderBufferSerializedPath
    - unlink
    - errcode_for_file_access
    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:4857,1
    - Dst: lstat
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4860,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4860,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4863,1
    - Dst: ReadDirExtended
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4864,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4867,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4869,1
    - Dst: unlink
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4873,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4874,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4875,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4876,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4880,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - slotname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4881
      start: 4849
    functionDepth: 1
    functionLinenumber: 4849
    functionLinenumberEnd: 4881
    functionName: ReorderBufferCleanupSerializedTXNs
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 2
    functionsReached:
    - errmsg
    - lstat
    - AllocateDir
    - FreeDir
    - snprintf
    - S_ISDIR
    - ereport
    - errcode_for_file_access
    - unlink
    - sprintf
    - strncmp
    - ReadDirExtended
    linkageType: ''
    returnType: void
    signature: void ReorderBufferCleanupSerializedTXNs(const char *slotname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XLogSegNoOffsetToRecPtr
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4894,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4896,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4898,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4899,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - path
    - slot
    - xid
    - segno
    argTypes:
    - char*
    - ReplicationSlot*
    - TransactionId
    - XLogSegNo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4900
      start: 4888
    functionDepth: 1
    functionLinenumber: 4888
    functionLinenumberEnd: 4900
    functionName: ReorderBufferSerializedPath
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 3
    functionsReached:
    - LSN_FORMAT_ARGS
    - XLogSegNoOffsetToRecPtr
    - snprintf
    - NameStr
    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:4912,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4913,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4915,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4916,1
    - Dst: ReplicationSlotValidateName
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4920,1
    - Dst: ReorderBufferCleanupSerializedTXNs
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4927,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4929,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4930
      start: 4906
    functionDepth: 2
    functionLinenumber: 4906
    functionLinenumberEnd: 4930
    functionName: StartupReorderBuffer
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - ReadDir
    - AllocateDir
    - FreeDir
    - ReorderBufferCleanupSerializedTXNs
    - ReplicationSlotValidateName
    - strcmp
    linkageType: ''
    returnType: void
    signature: void StartupReorderBuffer(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4945,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4950,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - rb
    - txn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4952
      start: 4940
    functionDepth: 1
    functionLinenumber: 4940
    functionLinenumberEnd: 4952
    functionName: ReorderBufferToastInitHash
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - hash_create
    - Assert
    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:4970,1
    - Dst: ReorderBufferToastInitHash
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4975,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4977,1
    - Dst: IsToastRelation
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4977,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4980,1
    - Dst: fastgetattr
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4980,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4981,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4982,1
    - Dst: fastgetattr
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4982,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4983,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4986,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4990,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4995,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:4998,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5002,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5005,1
    - Dst: fastgetattr
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5005,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5006,1
    - Dst: VARATT_IS_EXTENDED
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5009,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5010,1
    - Dst: VARATT_IS_SHORT
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5011,1
    - Dst: VARSIZE_SHORT
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5013,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5015,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5020,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 4
    argNames:
    - rb
    - txn
    - relation
    - change
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - Relation
    - ReorderBufferChange*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5021
      start: 4960
    functionDepth: 3
    functionLinenumber: 4960
    functionLinenumberEnd: 5021
    functionName: ReorderBufferToastAppendChunk
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - VARSIZE_SHORT
    - Assert
    - fastgetattr
    - VARATT_IS_EXTENDED
    - VARATT_IS_SHORT
    - RelationGetDescr
    - ReorderBufferToastInitHash
    - DatumGetInt32
    - VARSIZE
    - hash_search
    - dlist_push_tail
    - IsToastRelation
    - DatumGetObjectId
    - elog
    - DatumGetPointer
    - dlist_init
    linkageType: ''
    returnType: void
    signature: "void ReorderBufferToastAppendChunk(ReorderBuffer *rb, ReorderBufferTXN
      *txn,\n\t\t\t\t\t\t\t  Relation relation, ReorderBufferChange *change)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ReorderBufferChangeSize
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5073,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5075,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5078,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5080,1
    - Dst: RelationIdGetRelation
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5082,1
    - Dst: RelationIsValid
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5083,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5084,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5085,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5087,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5090,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5091,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5092,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5096,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5100,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5128,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5131,1
    - Dst: VARATT_EXTERNAL_GET_POINTER
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5134,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5140,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5148,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5152,1
    - Dst: dlist_foreach
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5157,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5164,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5166,1
    - Dst: fastgetattr
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5166,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5168,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5169,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5169,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5170,1
    - Dst: VARATT_IS_SHORT
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5170,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5172,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5172,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5173,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5174,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5175,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5177,1
    - Dst: VARATT_EXTERNAL_GET_EXTSIZE
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5177,1
    - Dst: VARATT_EXTERNAL_IS_COMPRESSED
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5180,1
    - Dst: SET_VARSIZE_COMPRESSED
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5181,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5183,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5185,1
    - Dst: SET_VARTAG_EXTERNAL
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5188,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5189,1
    - Dst: VARDATA_EXTERNAL
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5189,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5192,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5200,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5201,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5202,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5204,1
    - Dst: RelationClose
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5211,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5212,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5216,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5216,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5218,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5219,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5220,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5222,1
    - Dst: ReorderBufferChangeMemoryUpdate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5225,1
    - Dst: ReorderBufferChangeMemoryUpdate
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5227,1
    - Dst: ReorderBufferChangeSize
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5228,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 73
    argCount: 4
    argNames:
    - rb
    - txn
    - relation
    - change
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - Relation
    - ReorderBufferChange*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5229
      start: 5043
    functionDepth: 5
    functionLinenumber: 5043
    functionLinenumberEnd: 5229
    functionName: ReorderBufferToastReplace
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - VARATT_IS_SHORT
    - ReorderBufferChangeSize
    - heap_deform_tuple
    - VARATT_IS_EXTERNAL
    - SET_VARSIZE_COMPRESSED
    - ReorderBufferChangeMemoryUpdate
    - dlist_foreach
    - RelationGetRelationName
    - pfree
    - VARATT_EXTERNAL_GET_EXTSIZE
    - memcpy
    - DatumGetPointer
    - VARATT_EXTERNAL_GET_POINTER
    - heap_form_tuple
    - TupleDescAttr
    - VARSIZE
    - RelationClose
    - VARDATA
    - elog
    - SET_VARSIZE
    - RelationIdGetRelation
    - Assert
    - RelationIsValid
    - fastgetattr
    - VARATT_EXTERNAL_IS_COMPRESSED
    - memset
    - VARDATA_EXTERNAL
    - RelationGetDescr
    - SET_VARTAG_EXTERNAL
    - palloc0
    - hash_search
    - PointerGetDatum
    - dlist_container
    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:5244,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5245,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5250,1
    - Dst: dlist_foreach_modify
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5252,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5255,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5257,1
    - Dst: ReorderBufferFreeChange
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5258,1
    - Dst: hash_destroy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5262,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - rb
    - txn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5264
      start: 5234
    functionDepth: 2
    functionLinenumber: 5234
    functionLinenumberEnd: 5264
    functionName: ReorderBufferToastReset
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 4
    functionsReached:
    - pfree
    - hash_seq_search
    - dlist_foreach_modify
    - hash_seq_init
    - ReorderBufferFreeChange
    - hash_destroy
    - dlist_delete
    - dlist_container
    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:5311,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5312,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5314,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5318,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5319,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - tuplecid_data
    argTypes:
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5324
      start: 5305
    functionDepth: 3
    functionLinenumber: 5305
    functionLinenumberEnd: 5324
    functionName: DisplayMapping
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - hash_seq_search
    - ItemPointerGetOffsetNumber
    - hash_seq_init
    - elog
    - 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:5341,1
    - Dst: OpenTransientFile
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5342,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5344,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5345,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5346,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5356,1
    - Dst: pgstat_report_wait_start
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5359,1
    - Dst: read
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5360,1
    - Dst: pgstat_report_wait_end
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5361,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5364,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5365,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5366,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5371,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5372,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5373,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5378,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5383,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5390,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5394,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5403,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5404,1
    - Dst: CloseTransientFile
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5415,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5416,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5417,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5418,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 3
    argNames:
    - tuplecid_data
    - relid
    - fname
    argTypes:
    - HTAB*
    - Oid
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5419
      start: 5333
    functionDepth: 2
    functionLinenumber: 5333
    functionLinenumberEnd: 5419
    functionName: ApplyLogicalMappingFile
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ItemPointerCopy
    - Assert
    - CloseTransientFile
    - memset
    - ereport
    - hash_search
    - OpenTransientFile
    - pgstat_report_wait_end
    - read
    - sprintf
    - pgstat_report_wait_start
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void ApplyLogicalMappingFile(HTAB *tuplecid_data, Oid relid, const
      char *fname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bsearch
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5428,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - xid
    - xip
    - num
    argTypes:
    - TransactionId
    - TransactionId*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5430
      start: 5425
    functionDepth: 0
    functionLinenumber: 5425
    functionLinenumberEnd: 5430
    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:5438,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5439,1
    - Dst: pg_cmp_u64
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5441,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a_p
    - b_p
    argTypes:
    - ListCell*
    - ListCell*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5442
      start: 5435
    functionDepth: 1
    functionLinenumber: 5435
    functionLinenumberEnd: 5442
    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:5455,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5457,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5458,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5469,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5470,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5474,1
    - Dst: sscanf
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5477,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5480,1
    - Dst: TransactionIdDidCommit
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5493,1
    - Dst: TransactionIdInArray
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5497,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5501,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5503,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5504,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5506,1
    - Dst: list_sort
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5509,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5513,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5515,1
    - Dst: ApplyLogicalMappingFile
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5517,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5518,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 29
    argCount: 3
    argNames:
    - tuplecid_data
    - relid
    - snapshot
    argTypes:
    - HTAB*
    - Oid
    - Snapshot
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5520
      start: 5448
    functionDepth: 6
    functionLinenumber: 5448
    functionLinenumberEnd: 5520
    functionName: UpdateLogicalMappings
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 0
    functionsReached:
    - pfree
    - ReadDir
    - AllocateDir
    - palloc
    - FreeDir
    - list_sort
    - TransactionIdDidCommit
    - TransactionIdInArray
    - sscanf
    - ApplyLogicalMappingFile
    - IsSharedRelation
    - elog
    - lappend
    - strcmp
    - strncmp
    - lfirst
    - 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:5513,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5515,1
    - Dst: ApplyLogicalMappingFile
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5517,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5518,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5519
      start: 5511
    functionDepth: 3
    functionLinenumber: 5511
    functionLinenumberEnd: 5519
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 371
    functionsReached:
    - pfree
    - elog
    - ApplyLogicalMappingFile
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(file, files)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5550,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5552,1
    - Dst: BufferIsLocal
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5552,1
    - Dst: BufferGetTag
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5558,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5561,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5562,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5562,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5564,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5569,1
    - Dst: UpdateLogicalMappings
      Src: /src/postgres/src/backend/replication/logical/reorderbuffer.c:5579,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: 5592
      start: 5526
    functionDepth: 7
    functionLinenumber: 5526
    functionLinenumberEnd: 5592
    functionName: ResolveCminCmaxDuringDecoding
    functionSourceFile: /src/postgres/src/backend/replication/logical/reorderbuffer.c
    functionUses: 1
    functionsReached:
    - Assert
    - ItemPointerCopy
    - memset
    - BufferIsLocal
    - UpdateLogicalMappings
    - BufferGetTag
    - hash_search
    - 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:5606,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - rb
    - xid
    - msgs
    argTypes:
    - ReorderBuffer*
    - TransactionId
    - SharedInvalidationMessage**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5615
      start: 5600
    functionDepth: 3
    functionLinenumber: 5600
    functionLinenumberEnd: 5615
    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: 1
    functionLinenumber: 61
    functionLinenumberEnd: 93
    functionName: LogicalOutputWrite
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalfuncs.c
    functionUses: 0
    functionsReached:
    - pg_verify_mbstr
    - Assert
    - tuplestore_putvalues
    - GetDatabaseEncoding
    - memset
    - PointerGetDatum
    - elog
    - TransactionIdGetDatum
    - LSNGetDatum
    - cstring_to_text_with_len
    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
      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: XLogRecPtrIsInvalid
      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:266,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:275,1
    - Dst: LogicalConfirmReceivedLocation
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:291,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:306,1
    - Dst: FreeDecodingContext
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:310,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:312,1
    - Dst: InvalidateSystemCaches
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:313,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:315,1
    - Dst: InvalidateSystemCaches
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:318,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:320,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:322,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 81
    argCount: 3
    argNames:
    - fcinfo
    - confirm
    - binary
    argTypes:
    - FunctionCallInfo
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 98
    functionDepth: 6
    functionLinenumber: 98
    functionLinenumberEnd: 325
    functionName: pg_logical_slot_get_changes_guts
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalfuncs.c
    functionUses: 0
    functionsReached:
    - ReplicationSlotAcquire
    - MemoryContextSwitchTo
    - CHECK_FOR_INTERRUPTS
    - PG_GETARG_LSN
    - GetXLogReplayRecPtr
    - RecoveryInProgress
    - Min
    - PG_RE_THROW
    - NameStr
    - deconstruct_array_builtin
    - CheckLogicalDecodingRequirements
    - XLogBeginRead
    - PG_GETARG_NAME
    - format_procedure
    - XL_ROUTINE
    - CreateDecodingContext
    - errmsg
    - makeString
    - XLogReadRecord
    - PG_ARGISNULL
    - elog
    - CheckSlotPermissions
    - lappend
    - InitMaterializedSRF
    - XLogRecPtrIsInvalid
    - WaitForStandbyConfirmation
    - PG_GETARG_ARRAYTYPE_P
    - makeDefElem
    - ARR_ELEMTYPE
    - ReplicationSlotRelease
    - Assert
    - PG_END_TRY
    - PG_TRY
    - ARR_NDIM
    - array_contains_nulls
    - TextDatumGetCString
    - ReplicationSlotMarkDirty
    - ereport
    - palloc0
    - LogicalDecodingProcessRecord
    - LogicalConfirmReceivedLocation
    - GetFlushRecPtr
    - FreeDecodingContext
    - PG_CATCH
    - PG_GETARG_INT32
    - InvalidateSystemCaches
    - errcode
    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:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 330
    functionDepth: 7
    functionLinenumber: 330
    functionLinenumberEnd: 334
    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:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 339
    functionDepth: 7
    functionLinenumber: 339
    functionLinenumberEnd: 343
    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:351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 348
    functionDepth: 7
    functionLinenumber: 348
    functionLinenumberEnd: 352
    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:360,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 357
    functionDepth: 7
    functionLinenumber: 357
    functionLinenumberEnd: 361
    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:370,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:371,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:371,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:372,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:373,1
    - Dst: LogLogicalMessage
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:376,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:376,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:376,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/replication/logical/logicalfuncs.c:378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 367
    functionDepth: 6
    functionLinenumber: 367
    functionLinenumberEnd: 379
    functionName: pg_logical_emit_message_bytea
    functionSourceFile: /src/postgres/src/backend/replication/logical/logicalfuncs.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - PG_RETURN_LSN
    - PG_GETARG_BYTEA_PP
    - PG_GETARG_BOOL
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - LogLogicalMessage
    - text_to_cstring
    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:385,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 381
    functionDepth: 7
    functionLinenumber: 381
    functionLinenumberEnd: 386
    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: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 331
    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:424,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/worker.c:427,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/replication/logical/worker.c:432,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - suboid
    - relid
    - originname
    - szoriginname
    argTypes:
    - Oid
    - Oid
    - char*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 420
    functionDepth: 1
    functionLinenumber: 420
    functionLinenumberEnd: 434
    functionName: ReplicationOriginNameForLogicalRep
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 6
    functionsReached:
    - snprintf
    - OidIsValid
    linkageType: ''
    returnType: void
    signature: "void ReplicationOriginNameForLogicalRep(Oid suboid, Oid relid,\n\t\t\t\t\t\t\t\t
      \  char *originname, Size szoriginname)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:472,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:473,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:474,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/worker.c:476,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:487,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - rel
    argTypes:
    - LogicalRepRelMapEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 460
    functionDepth: 1
    functionLinenumber: 460
    functionLinenumberEnd: 491
    functionName: should_apply_changes_for_rel
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - elog
    - errdetail
    - errcode
    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:503,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/worker.c:505,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:507,1
    - Dst: maybe_reread_subscription
      Src: /src/postgres/src/backend/replication/logical/worker.c:508,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:511,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:511,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:513,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 500
    functionDepth: 2
    functionLinenumber: 500
    functionLinenumberEnd: 514
    functionName: begin_replication_step
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - SetCurrentStatementStartTimestamp
    - MemoryContextSwitchTo
    - GetTransactionSnapshot
    - maybe_reread_subscription
    - PushActiveSnapshot
    - IsTransactionState
    - StartTransactionCommand
    linkageType: ''
    returnType: void
    signature: void begin_replication_step(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:526,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/replication/logical/worker.c:528,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 523
    functionDepth: 2
    functionLinenumber: 523
    functionLinenumberEnd: 529
    functionName: end_replication_step
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - CommandCounterIncrement
    - PopActiveSnapshot
    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:559,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:565,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:565,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/worker.c:579,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:581,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:582,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:583,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:584,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:589,1
    - Dst: subxact_info_add
      Src: /src/postgres/src/backend/replication/logical/worker.c:592,1
    - Dst: stream_write_change
      Src: /src/postgres/src/backend/replication/logical/worker.c:595,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:599,1
    - Dst: pa_send_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:607,1
    - Dst: pa_switch_to_partial_serialize
      Src: /src/postgres/src/backend/replication/logical/worker.c:615,1
    - Dst: stream_write_change
      Src: /src/postgres/src/backend/replication/logical/worker.c:619,1
    - Dst: pa_start_subtrans
      Src: /src/postgres/src/backend/replication/logical/worker.c:629,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:633,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 2
    argNames:
    - action
    - s
    argTypes:
    - LogicalRepMsgType
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 551
    functionDepth: 7
    functionLinenumber: 551
    functionLinenumberEnd: 636
    functionName: handle_streamed_transaction
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - Assert
    - get_transaction_apply_action
    - TransactionIdIsValid
    - errmsg_internal
    - ereport
    - pa_send_data
    - elog
    - pa_switch_to_partial_serialize
    - stream_write_change
    - pa_start_subtrans
    - subxact_info_add
    - pq_getmsgint
    - errcode
    linkageType: ''
    returnType: bool
    signature: bool handle_streamed_transaction(LogicalRepMsgType action, StringInfo
      s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/replication/logical/worker.c:653,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/replication/logical/worker.c:656,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/replication/logical/worker.c:658,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/replication/logical/worker.c:660,1
    - Dst: addRTEPermissionInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:664,1
    - Dst: ExecInitRangeTable
      Src: /src/postgres/src/backend/replication/logical/worker.c:666,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/replication/logical/worker.c:666,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/replication/logical/worker.c:667,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/replication/logical/worker.c:669,1
    - Dst: InitResultRelInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:675,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/worker.c:686,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/replication/logical/worker.c:688,1
    - Dst: AfterTriggerBeginQuery
      Src: /src/postgres/src/backend/replication/logical/worker.c:691,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 1
    argNames:
    - rel
    argTypes:
    - LogicalRepRelMapEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 644
    functionDepth: 6
    functionLinenumber: 644
    functionLinenumberEnd: 696
    functionName: create_edata_for_relation
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - RelationGetRelid
    - ExecInitRangeTable
    - bms_make_singleton
    - palloc0
    - list_make1
    - lappend
    - addRTEPermissionInfo
    - InitResultRelInfo
    - CreateExecutorState
    - makeNode
    - AfterTriggerBeginQuery
    - GetCurrentCommandId
    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:708,1
    - Dst: ExecCleanupTupleRouting
      Src: /src/postgres/src/backend/replication/logical/worker.c:712,1
    - Dst: ExecResetTupleTable
      Src: /src/postgres/src/backend/replication/logical/worker.c:721,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/replication/logical/worker.c:722,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/worker.c:723,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - edata
    argTypes:
    - ApplyExecutionData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 702
    functionDepth: 1
    functionLinenumber: 702
    functionLinenumberEnd: 724
    functionName: finish_edata
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - FreeExecutorState
    - pfree
    - ExecResetTupleTable
    - 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:737,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/replication/logical/worker.c:746,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/worker.c:752,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/worker.c:753,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:755,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/replication/logical/worker.c:760,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/replication/logical/worker.c:760,1
    - Dst: build_column_default
      Src: /src/postgres/src/backend/replication/logical/worker.c:766,1
    - Dst: expression_planner
      Src: /src/postgres/src/backend/replication/logical/worker.c:771,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/replication/logical/worker.c:774,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/replication/logical/worker.c:782,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 3
    argNames:
    - rel
    - estate
    - slot
    argTypes:
    - LogicalRepRelMapEntry*
    - EState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 733
    functionDepth: 2
    functionLinenumber: 733
    functionLinenumberEnd: 783
    functionName: slot_fill_defaults
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - Assert
    - RelationGetDescr
    - TupleDescAttr
    - GetPerTupleExprContext
    - ExecInitExpr
    - ExecEvalExpr
    - build_column_default
    - palloc
    - expression_planner
    linkageType: ''
    returnType: void
    signature: "void slot_fill_defaults(LogicalRepRelMapEntry *rel, EState *estate,\n\t\t\t\t
      \  TupleTableSlot *slot)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/replication/logical/worker.c:797,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:800,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/replication/logical/worker.c:803,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:810,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:820,1
    - Dst: OidInputFunctionCall
      Src: /src/postgres/src/backend/replication/logical/worker.c:822,1
    - Dst: getTypeBinaryInputInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:837,1
    - Dst: OidReceiveFunctionCall
      Src: /src/postgres/src/backend/replication/logical/worker.c:839,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:844,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:845,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:846,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/replication/logical/worker.c:876,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 3
    argNames:
    - slot
    - rel
    - tupleData
    argTypes:
    - TupleTableSlot*
    - LogicalRepRelMapEntry*
    - LogicalRepTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 790
    functionDepth: 2
    functionLinenumber: 790
    functionLinenumberEnd: 877
    functionName: slot_store_data
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - getTypeInputInfo
    - OidInputFunctionCall
    - OidReceiveFunctionCall
    - TupleDescAttr
    - ereport
    - ExecStoreVirtualTuple
    - getTypeBinaryInputInfo
    - ExecClearTuple
    - errcode
    linkageType: ''
    returnType: void
    signature: "void slot_store_data(TupleTableSlot *slot, LogicalRepRelMapEntry *rel,\n\t\t\t\tLogicalRepTupleData
      *tupleData)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/replication/logical/worker.c:900,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:906,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/replication/logical/worker.c:907,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/worker.c:908,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/replication/logical/worker.c:909,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:912,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/replication/logical/worker.c:915,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:921,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:935,1
    - Dst: OidInputFunctionCall
      Src: /src/postgres/src/backend/replication/logical/worker.c:937,1
    - Dst: getTypeBinaryInputInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:952,1
    - Dst: OidReceiveFunctionCall
      Src: /src/postgres/src/backend/replication/logical/worker.c:954,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:959,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:960,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:961,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/replication/logical/worker.c:978,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 4
    argNames:
    - slot
    - srcslot
    - rel
    - tupleData
    argTypes:
    - TupleTableSlot*
    - TupleTableSlot*
    - LogicalRepRelMapEntry*
    - LogicalRepTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 979
      start: 891
    functionDepth: 3
    functionLinenumber: 891
    functionLinenumberEnd: 979
    functionName: slot_modify_data
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - getTypeInputInfo
    - OidInputFunctionCall
    - OidReceiveFunctionCall
    - slot_getallattrs
    - TupleDescAttr
    - ereport
    - ExecStoreVirtualTuple
    - getTypeBinaryInputInfo
    - ExecClearTuple
    - memcpy
    - errcode
    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:990,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:990,1
    - Dst: logicalrep_read_begin
      Src: /src/postgres/src/backend/replication/logical/worker.c:992,1
    - Dst: set_apply_error_context_xact
      Src: /src/postgres/src/backend/replication/logical/worker.c:993,1
    - Dst: maybe_start_skipping_changes
      Src: /src/postgres/src/backend/replication/logical/worker.c:997,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/worker.c:1001,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1002
      start: 984
    functionDepth: 1
    functionLinenumber: 984
    functionLinenumberEnd: 1002
    functionName: apply_handle_begin
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - Assert
    - TransactionIdIsValid
    - pgstat_report_activity
    - set_apply_error_context_xact
    - logicalrep_read_begin
    - maybe_start_skipping_changes
    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:1014,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:1017,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:1018,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1019,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:1020,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:1021,1
    - Dst: apply_handle_commit_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1023,1
    - Dst: process_syncing_tables
      Src: /src/postgres/src/backend/replication/logical/worker.c:1026,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/worker.c:1028,1
    - Dst: reset_apply_error_context_info
      Src: /src/postgres/src/backend/replication/logical/worker.c:1029,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1030
      start: 1009
    functionDepth: 10
    functionLinenumber: 1009
    functionLinenumberEnd: 1030
    functionName: apply_handle_commit
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - errmsg_internal
    - ereport
    - pgstat_report_activity
    - logicalrep_read_commit
    - apply_handle_commit_internal
    - reset_apply_error_context_info
    - errcode
    - process_syncing_tables
    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:1041,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:1042,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:1043,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1044,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:1047,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:1047,1
    - Dst: logicalrep_read_begin_prepare
      Src: /src/postgres/src/backend/replication/logical/worker.c:1049,1
    - Dst: set_apply_error_context_xact
      Src: /src/postgres/src/backend/replication/logical/worker.c:1050,1
    - Dst: maybe_start_skipping_changes
      Src: /src/postgres/src/backend/replication/logical/worker.c:1054,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/worker.c:1058,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1035
    functionDepth: 2
    functionLinenumber: 1035
    functionLinenumberEnd: 1059
    functionName: apply_handle_begin_prepare
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - Assert
    - logicalrep_read_begin_prepare
    - TransactionIdIsValid
    - errmsg_internal
    - ereport
    - am_tablesync_worker
    - pgstat_report_activity
    - set_apply_error_context_xact
    - errcode
    - maybe_start_skipping_changes
    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:1075,1
    - Dst: IsTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/worker.c:1082,1
    - Dst: BeginTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/worker.c:1084,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:1085,1
    - Dst: PrepareTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/worker.c:1095,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - prepare_data
    argTypes:
    - LogicalRepPreparedTxnData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 1064
    functionDepth: 2
    functionLinenumber: 1064
    functionLinenumberEnd: 1096
    functionName: apply_handle_prepare_internal
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - BeginTransactionBlock
    - CommitTransactionCommand
    - TwoPhaseTransactionGid
    - PrepareTransactionBlock
    - IsTransactionBlock
    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:1106,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:1109,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:1110,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1111,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:1112,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:1113,1
    - Dst: begin_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:1125,1
    - Dst: apply_handle_prepare_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1127,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:1129,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:1130,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/worker.c:1131,1
    - Dst: store_flush_position
      Src: /src/postgres/src/backend/replication/logical/worker.c:1143,1
    - Dst: process_syncing_tables
      Src: /src/postgres/src/backend/replication/logical/worker.c:1148,1
    - Dst: stop_skipping_changes
      Src: /src/postgres/src/backend/replication/logical/worker.c:1156,1
    - Dst: clear_subscription_skip_lsn
      Src: /src/postgres/src/backend/replication/logical/worker.c:1157,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/worker.c:1159,1
    - Dst: reset_apply_error_context_info
      Src: /src/postgres/src/backend/replication/logical/worker.c:1160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1161
      start: 1101
    functionDepth: 10
    functionLinenumber: 1101
    functionLinenumberEnd: 1161
    functionName: apply_handle_prepare
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - clear_subscription_skip_lsn
    - CommitTransactionCommand
    - reset_apply_error_context_info
    - apply_handle_prepare_internal
    - stop_skipping_changes
    - errmsg_internal
    - logicalrep_read_prepare
    - ereport
    - begin_replication_step
    - pgstat_report_activity
    - end_replication_step
    - pgstat_report_stat
    - errcode
    - process_syncing_tables
    - store_flush_position
    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:1178,1
    - Dst: set_apply_error_context_xact
      Src: /src/postgres/src/backend/replication/logical/worker.c:1179,1
    - Dst: TwoPhaseTransactionGid
      Src: /src/postgres/src/backend/replication/logical/worker.c:1182,1
    - Dst: begin_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:1186,1
    - Dst: FinishPreparedTransaction
      Src: /src/postgres/src/backend/replication/logical/worker.c:1195,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:1196,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:1197,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/worker.c:1198,1
    - Dst: store_flush_position
      Src: /src/postgres/src/backend/replication/logical/worker.c:1200,1
    - Dst: process_syncing_tables
      Src: /src/postgres/src/backend/replication/logical/worker.c:1204,1
    - Dst: clear_subscription_skip_lsn
      Src: /src/postgres/src/backend/replication/logical/worker.c:1206,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/worker.c:1208,1
    - Dst: reset_apply_error_context_info
      Src: /src/postgres/src/backend/replication/logical/worker.c:1209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1210
      start: 1172
    functionDepth: 10
    functionLinenumber: 1172
    functionLinenumberEnd: 1210
    functionName: apply_handle_commit_prepared
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - clear_subscription_skip_lsn
    - CommitTransactionCommand
    - TwoPhaseTransactionGid
    - reset_apply_error_context_info
    - begin_replication_step
    - pgstat_report_activity
    - logicalrep_read_commit_prepared
    - set_apply_error_context_xact
    - end_replication_step
    - FinishPreparedTransaction
    - pgstat_report_stat
    - process_syncing_tables
    - store_flush_position
    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:1227,1
    - Dst: set_apply_error_context_xact
      Src: /src/postgres/src/backend/replication/logical/worker.c:1228,1
    - Dst: TwoPhaseTransactionGid
      Src: /src/postgres/src/backend/replication/logical/worker.c:1231,1
    - Dst: LookupGXact
      Src: /src/postgres/src/backend/replication/logical/worker.c:1240,1
    - Dst: begin_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:1251,1
    - Dst: FinishPreparedTransaction
      Src: /src/postgres/src/backend/replication/logical/worker.c:1252,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:1253,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:1254,1
    - Dst: clear_subscription_skip_lsn
      Src: /src/postgres/src/backend/replication/logical/worker.c:1256,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/worker.c:1259,1
    - Dst: store_flush_position
      Src: /src/postgres/src/backend/replication/logical/worker.c:1266,1
    - Dst: process_syncing_tables
      Src: /src/postgres/src/backend/replication/logical/worker.c:1270,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/worker.c:1272,1
    - Dst: reset_apply_error_context_info
      Src: /src/postgres/src/backend/replication/logical/worker.c:1273,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1274
      start: 1221
    functionDepth: 10
    functionLinenumber: 1221
    functionLinenumberEnd: 1274
    functionName: apply_handle_rollback_prepared
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - logicalrep_read_rollback_prepared
    - clear_subscription_skip_lsn
    - CommitTransactionCommand
    - TwoPhaseTransactionGid
    - reset_apply_error_context_info
    - begin_replication_step
    - pgstat_report_activity
    - set_apply_error_context_xact
    - LookupGXact
    - end_replication_step
    - FinishPreparedTransaction
    - pgstat_report_stat
    - process_syncing_tables
    - store_flush_position
    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:1290,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:1291,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1292,1
    - Dst: am_tablesync_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:1295,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:1296,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:1297,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1298,1
    - Dst: logicalrep_read_stream_prepare
      Src: /src/postgres/src/backend/replication/logical/worker.c:1300,1
    - Dst: set_apply_error_context_xact
      Src: /src/postgres/src/backend/replication/logical/worker.c:1301,1
    - Dst: get_transaction_apply_action
      Src: /src/postgres/src/backend/replication/logical/worker.c:1303,1
    - Dst: apply_spooled_messages
      Src: /src/postgres/src/backend/replication/logical/worker.c:1313,1
    - Dst: apply_handle_prepare_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1317,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:1319,1
    - Dst: store_flush_position
      Src: /src/postgres/src/backend/replication/logical/worker.c:1325,1
    - Dst: stream_cleanup_files
      Src: /src/postgres/src/backend/replication/logical/worker.c:1330,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:1332,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:1336,1
    - Dst: pa_send_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:1338,1
    - Dst: pa_xact_finish
      Src: /src/postgres/src/backend/replication/logical/worker.c:1341,1
    - Dst: pa_switch_to_partial_serialize
      Src: /src/postgres/src/backend/replication/logical/worker.c:1349,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:1353,1
    - Dst: stream_open_and_write_change
      Src: /src/postgres/src/backend/replication/logical/worker.c:1355,1
    - Dst: pa_set_fileset_state
      Src: /src/postgres/src/backend/replication/logical/worker.c:1359,1
    - Dst: pa_xact_finish
      Src: /src/postgres/src/backend/replication/logical/worker.c:1362,1
    - Dst: stream_close_file
      Src: /src/postgres/src/backend/replication/logical/worker.c:1372,1
    - Dst: begin_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:1374,1
    - Dst: apply_handle_prepare_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1377,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:1379,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:1381,1
    - Dst: pa_set_xact_state
      Src: /src/postgres/src/backend/replication/logical/worker.c:1389,1
    - Dst: pa_unlock_transaction
      Src: /src/postgres/src/backend/replication/logical/worker.c:1390,1
    - Dst: pa_reset_subtrans
      Src: /src/postgres/src/backend/replication/logical/worker.c:1392,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:1394,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:1398,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/worker.c:1402,1
    - Dst: process_syncing_tables
      Src: /src/postgres/src/backend/replication/logical/worker.c:1405,1
    - Dst: stop_skipping_changes
      Src: /src/postgres/src/backend/replication/logical/worker.c:1411,1
    - Dst: clear_subscription_skip_lsn
      Src: /src/postgres/src/backend/replication/logical/worker.c:1412,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/worker.c:1414,1
    - Dst: reset_apply_error_context_info
      Src: /src/postgres/src/backend/replication/logical/worker.c:1416,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 54
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1417
      start: 1279
    functionDepth: 10
    functionLinenumber: 1279
    functionLinenumberEnd: 1417
    functionName: apply_handle_stream_prepare
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - errcode
    - clear_subscription_skip_lsn
    - stream_cleanup_files
    - set_apply_error_context_xact
    - end_replication_step
    - process_syncing_tables
    - stream_close_file
    - logicalrep_read_stream_prepare
    - pgstat_report_activity
    - pa_xact_finish
    - store_flush_position
    - get_transaction_apply_action
    - apply_handle_prepare_internal
    - pa_set_fileset_state
    - am_tablesync_worker
    - pa_unlock_transaction
    - elog
    - pgstat_report_stat
    - Assert
    - pa_set_xact_state
    - CommitTransactionCommand
    - stop_skipping_changes
    - errmsg_internal
    - ereport
    - apply_spooled_messages
    - pa_send_data
    - begin_replication_step
    - pa_reset_subtrans
    - pa_switch_to_partial_serialize
    - reset_apply_error_context_info
    - stream_open_and_write_change
    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:1433,1
    - Dst: am_tablesync_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:1433,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:1434,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:1435,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1436,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1437
      start: 1424
    functionDepth: 2
    functionLinenumber: 1424
    functionLinenumberEnd: 1437
    functionName: apply_handle_origin
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - errmsg_internal
    - ereport
    - am_tablesync_worker
    - IsTransactionState
    - errcode
    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:1448,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:1462,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/worker.c:1464,1
    - Dst: FileSetInit
      Src: /src/postgres/src/backend/replication/logical/worker.c:1465,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:1467,1
    - Dst: stream_open_file
      Src: /src/postgres/src/backend/replication/logical/worker.c:1471,1
    - Dst: subxact_info_read
      Src: /src/postgres/src/backend/replication/logical/worker.c:1475,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:1477,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - xid
    - first_segment
    argTypes:
    - TransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1478
      start: 1445
    functionDepth: 3
    functionLinenumber: 1445
    functionLinenumberEnd: 1478
    functionName: stream_start_internal
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - subxact_info_read
    - FileSetInit
    - begin_replication_step
    - end_replication_step
    - stream_open_file
    - palloc
    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:1494,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:1495,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1496,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:1499,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:1499,1
    - Dst: logicalrep_read_stream_start
      Src: /src/postgres/src/backend/replication/logical/worker.c:1505,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:1507,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:1508,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:1509,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1510,1
    - Dst: set_apply_error_context_xact
      Src: /src/postgres/src/backend/replication/logical/worker.c:1512,1
    - Dst: pa_allocate_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:1516,1
    - Dst: get_transaction_apply_action
      Src: /src/postgres/src/backend/replication/logical/worker.c:1518,1
    - Dst: stream_start_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1532,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:1536,1
    - Dst: pa_send_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:1544,1
    - Dst: pa_unlock_stream
      Src: /src/postgres/src/backend/replication/logical/worker.c:1551,1
    - Dst: pg_atomic_add_fetch_u32
      Src: /src/postgres/src/backend/replication/logical/worker.c:1557,1
    - Dst: pa_set_stream_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:1560,1
    - Dst: pa_switch_to_partial_serialize
      Src: /src/postgres/src/backend/replication/logical/worker.c:1568,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:1572,1
    - Dst: stream_start_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1580,1
    - Dst: stream_write_change
      Src: /src/postgres/src/backend/replication/logical/worker.c:1582,1
    - Dst: pa_set_stream_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:1585,1
    - Dst: pa_lock_transaction
      Src: /src/postgres/src/backend/replication/logical/worker.c:1592,1
    - Dst: pa_set_xact_state
      Src: /src/postgres/src/backend/replication/logical/worker.c:1593,1
    - Dst: logicalrep_worker_wakeup
      Src: /src/postgres/src/backend/replication/logical/worker.c:1599,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:1606,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/worker.c:1610,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 46
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1611
      start: 1483
    functionDepth: 8
    functionLinenumber: 1483
    functionLinenumberEnd: 1611
    functionName: apply_handle_stream_start
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - set_apply_error_context_xact
    - pa_unlock_stream
    - pgstat_report_activity
    - pa_lock_transaction
    - get_transaction_apply_action
    - TransactionIdIsValid
    - stream_start_internal
    - elog
    - pa_allocate_worker
    - logicalrep_read_stream_start
    - stream_write_change
    - Assert
    - pa_set_xact_state
    - errmsg_internal
    - ereport
    - pa_send_data
    - pa_set_stream_apply_worker
    - pg_atomic_add_fetch_u32
    - logicalrep_worker_wakeup
    - pa_switch_to_partial_serialize
    - errcode
    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:1626,1
    - Dst: stream_close_file
      Src: /src/postgres/src/backend/replication/logical/worker.c:1627,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:1630,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/worker.c:1630,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:1633,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/logical/worker.c:1636,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1637
      start: 1619
    functionDepth: 2
    functionLinenumber: 1619
    functionLinenumberEnd: 1637
    functionName: stream_stop_internal
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - Assert
    - stream_close_file
    - CommitTransactionCommand
    - MemoryContextReset
    - IsTransactionState
    - 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:1649,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:1650,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1651,1
    - Dst: get_transaction_apply_action
      Src: /src/postgres/src/backend/replication/logical/worker.c:1653,1
    - Dst: stream_stop_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1658,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:1662,1
    - Dst: pa_lock_stream
      Src: /src/postgres/src/backend/replication/logical/worker.c:1670,1
    - Dst: pa_send_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:1672,1
    - Dst: pa_set_stream_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:1674,1
    - Dst: pa_switch_to_partial_serialize
      Src: /src/postgres/src/backend/replication/logical/worker.c:1682,1
    - Dst: stream_write_change
      Src: /src/postgres/src/backend/replication/logical/worker.c:1686,1
    - Dst: stream_stop_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1687,1
    - Dst: pa_set_stream_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:1688,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:1692,1
    - Dst: pa_decr_and_wait_stream_block
      Src: /src/postgres/src/backend/replication/logical/worker.c:1718,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:1722,1
    - Dst: IsTransactionOrTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/worker.c:1733,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/worker.c:1734,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/worker.c:1736,1
    - Dst: reset_apply_error_context_info
      Src: /src/postgres/src/backend/replication/logical/worker.c:1738,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1739
      start: 1642
    functionDepth: 3
    functionLinenumber: 1642
    functionLinenumberEnd: 1739
    functionName: apply_handle_stream_stop
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - Assert
    - IsTransactionOrTransactionBlock
    - pa_lock_stream
    - get_transaction_apply_action
    - errmsg_internal
    - ereport
    - pa_send_data
    - stream_stop_internal
    - pa_set_stream_apply_worker
    - elog
    - pgstat_report_activity
    - pa_switch_to_partial_serialize
    - reset_apply_error_context_info
    - stream_write_change
    - errcode
    - 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:1753,1
    - Dst: begin_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:1778,1
    - Dst: subxact_info_read
      Src: /src/postgres/src/backend/replication/logical/worker.c:1779,1
    - Dst: cleanup_subxact_info
      Src: /src/postgres/src/backend/replication/logical/worker.c:1798,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:1799,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:1800,1
    - Dst: changes_filename
      Src: /src/postgres/src/backend/replication/logical/worker.c:1805,1
    - Dst: BufFileOpenFileSet
      Src: /src/postgres/src/backend/replication/logical/worker.c:1806,1
    - Dst: BufFileTruncateFileSet
      Src: /src/postgres/src/backend/replication/logical/worker.c:1810,1
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/replication/logical/worker.c:1812,1
    - Dst: subxact_info_write
      Src: /src/postgres/src/backend/replication/logical/worker.c:1818,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:1820,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:1821,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 2
    argNames:
    - xid
    - subxid
    argTypes:
    - TransactionId
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1823
      start: 1745
    functionDepth: 3
    functionLinenumber: 1745
    functionLinenumberEnd: 1823
    functionName: stream_abort_internal
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - cleanup_subxact_info
    - subxact_info_read
    - stream_cleanup_files
    - CommitTransactionCommand
    - begin_replication_step
    - BufFileTruncateFileSet
    - end_replication_step
    - BufFileClose
    - changes_filename
    - subxact_info_write
    - BufFileOpenFileSet
    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:1842,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:1843,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1844,1
    - Dst: logicalrep_read_stream_abort
      Src: /src/postgres/src/backend/replication/logical/worker.c:1847,1
    - Dst: set_apply_error_context_xact
      Src: /src/postgres/src/backend/replication/logical/worker.c:1854,1
    - Dst: get_transaction_apply_action
      Src: /src/postgres/src/backend/replication/logical/worker.c:1856,1
    - Dst: stream_abort_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:1866,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:1868,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:1872,1
    - Dst: pa_unlock_stream
      Src: /src/postgres/src/backend/replication/logical/worker.c:1891,1
    - Dst: pg_atomic_add_fetch_u32
      Src: /src/postgres/src/backend/replication/logical/worker.c:1892,1
    - Dst: pa_lock_stream
      Src: /src/postgres/src/backend/replication/logical/worker.c:1893,1
    - Dst: pa_send_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:1896,1
    - Dst: pa_xact_finish
      Src: /src/postgres/src/backend/replication/logical/worker.c:1919,1
    - Dst: pa_switch_to_partial_serialize
      Src: /src/postgres/src/backend/replication/logical/worker.c:1928,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:1932,1
    - Dst: stream_open_and_write_change
      Src: /src/postgres/src/backend/replication/logical/worker.c:1939,1
    - Dst: pa_set_fileset_state
      Src: /src/postgres/src/backend/replication/logical/worker.c:1944,1
    - Dst: pa_xact_finish
      Src: /src/postgres/src/backend/replication/logical/worker.c:1945,1
    - Dst: stream_close_file
      Src: /src/postgres/src/backend/replication/logical/worker.c:1956,1
    - Dst: pa_stream_abort
      Src: /src/postgres/src/backend/replication/logical/worker.c:1958,1
    - Dst: pa_decr_and_wait_stream_block
      Src: /src/postgres/src/backend/replication/logical/worker.c:1969,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:1971,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:1975,1
    - Dst: reset_apply_error_context_info
      Src: /src/postgres/src/backend/replication/logical/worker.c:1979,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 48
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1980
      start: 1828
    functionDepth: 5
    functionLinenumber: 1828
    functionLinenumberEnd: 1980
    functionName: apply_handle_stream_abort
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - errcode
    - pa_stream_abort
    - set_apply_error_context_xact
    - stream_close_file
    - pa_unlock_stream
    - pa_xact_finish
    - pa_lock_stream
    - get_transaction_apply_action
    - pa_set_fileset_state
    - logicalrep_read_stream_abort
    - elog
    - stream_abort_internal
    - pa_decr_and_wait_stream_block
    - Assert
    - errmsg_internal
    - ereport
    - pa_send_data
    - pg_atomic_add_fetch_u32
    - pa_switch_to_partial_serialize
    - reset_apply_error_context_info
    - stream_open_and_write_change
    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:1994,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/worker.c:1994,1
    - Dst: begin_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:1996,1
    - Dst: changes_filename
      Src: /src/postgres/src/backend/replication/logical/worker.c:1998,1
    - Dst: BufFileOpenFileSet
      Src: /src/postgres/src/backend/replication/logical/worker.c:2000,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/replication/logical/worker.c:2002,1
    - Dst: BufFileTell
      Src: /src/postgres/src/backend/replication/logical/worker.c:2003,1
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/replication/logical/worker.c:2005,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:2007,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:2010,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - stream_fileset
    - xid
    - fileno
    - offset
    argTypes:
    - FileSet*
    - TransactionId
    - int
    - off_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2012
      start: 1985
    functionDepth: 3
    functionLinenumber: 1985
    functionLinenumberEnd: 2012
    functionName: ensure_last_message
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - Assert
    - begin_replication_step
    - BufFileTell
    - elog
    - IsTransactionState
    - BufFileClose
    - end_replication_step
    - changes_filename
    - BufFileSeek
    - BufFileOpenFileSet
    linkageType: ''
    returnType: void
    signature: "void ensure_last_message(FileSet *stream_fileset, TransactionId xid,
      int fileno,\n\t\t\t\t\toff_t offset)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: am_parallel_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:2029,1
    - Dst: maybe_start_skipping_changes
      Src: /src/postgres/src/backend/replication/logical/worker.c:2030,1
    - Dst: begin_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:2033,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2040,1
    - Dst: changes_filename
      Src: /src/postgres/src/backend/replication/logical/worker.c:2043,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:2044,1
    - Dst: BufFileOpenFileSet
      Src: /src/postgres/src/backend/replication/logical/worker.c:2053,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/worker.c:2057,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2059,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/worker.c:2068,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:2070,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/worker.c:2083,1
    - Dst: BufFileReadMaybeEOF
      Src: /src/postgres/src/backend/replication/logical/worker.c:2086,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:2094,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/replication/logical/worker.c:2098,1
    - Dst: BufFileReadExact
      Src: /src/postgres/src/backend/replication/logical/worker.c:2101,1
    - Dst: BufFileTell
      Src: /src/postgres/src/backend/replication/logical/worker.c:2103,1
    - Dst: initReadOnlyStringInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2106,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2109,1
    - Dst: apply_dispatch
      Src: /src/postgres/src/backend/replication/logical/worker.c:2111,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/logical/worker.c:2113,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2115,1
    - Dst: ensure_last_message
      Src: /src/postgres/src/backend/replication/logical/worker.c:2126,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:2131,1
    - Dst: stream_close_file
      Src: /src/postgres/src/backend/replication/logical/worker.c:2136,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:2138,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 45
    argCount: 3
    argNames:
    - stream_fileset
    - xid
    - lsn
    argTypes:
    - FileSet*
    - TransactionId
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2142
      start: 2017
    functionDepth: 4
    functionLinenumber: 2017
    functionLinenumberEnd: 2142
    functionName: apply_spooled_messages
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 2
    functionsReached:
    - BufFileReadMaybeEOF
    - MemoryContextSwitchTo
    - CHECK_FOR_INTERRUPTS
    - MemoryContextReset
    - end_replication_step
    - ensure_last_message
    - changes_filename
    - stream_close_file
    - am_parallel_apply_worker
    - pgstat_report_activity
    - BufFileTell
    - apply_dispatch
    - elog
    - repalloc
    - palloc
    - BufFileReadExact
    - maybe_start_skipping_changes
    - begin_replication_step
    - initReadOnlyStringInfo
    - BufFileOpenFileSet
    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:2159,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:2160,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:2161,1
    - Dst: logicalrep_read_stream_commit
      Src: /src/postgres/src/backend/replication/logical/worker.c:2163,1
    - Dst: set_apply_error_context_xact
      Src: /src/postgres/src/backend/replication/logical/worker.c:2164,1
    - Dst: get_transaction_apply_action
      Src: /src/postgres/src/backend/replication/logical/worker.c:2166,1
    - Dst: apply_spooled_messages
      Src: /src/postgres/src/backend/replication/logical/worker.c:2176,1
    - Dst: apply_handle_commit_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:2179,1
    - Dst: stream_cleanup_files
      Src: /src/postgres/src/backend/replication/logical/worker.c:2182,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:2184,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:2188,1
    - Dst: pa_send_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:2190,1
    - Dst: pa_xact_finish
      Src: /src/postgres/src/backend/replication/logical/worker.c:2193,1
    - Dst: pa_switch_to_partial_serialize
      Src: /src/postgres/src/backend/replication/logical/worker.c:2201,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:2205,1
    - Dst: stream_open_and_write_change
      Src: /src/postgres/src/backend/replication/logical/worker.c:2207,1
    - Dst: pa_set_fileset_state
      Src: /src/postgres/src/backend/replication/logical/worker.c:2210,1
    - Dst: pa_xact_finish
      Src: /src/postgres/src/backend/replication/logical/worker.c:2213,1
    - Dst: stream_close_file
      Src: /src/postgres/src/backend/replication/logical/worker.c:2223,1
    - Dst: apply_handle_commit_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:2225,1
    - Dst: pa_set_xact_state
      Src: /src/postgres/src/backend/replication/logical/worker.c:2233,1
    - Dst: pa_unlock_transaction
      Src: /src/postgres/src/backend/replication/logical/worker.c:2234,1
    - Dst: pa_reset_subtrans
      Src: /src/postgres/src/backend/replication/logical/worker.c:2236,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:2238,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:2242,1
    - Dst: process_syncing_tables
      Src: /src/postgres/src/backend/replication/logical/worker.c:2247,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/worker.c:2249,1
    - Dst: reset_apply_error_context_info
      Src: /src/postgres/src/backend/replication/logical/worker.c:2251,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 43
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2252
      start: 2147
    functionDepth: 10
    functionLinenumber: 2147
    functionLinenumberEnd: 2252
    functionName: apply_handle_stream_commit
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - errcode
    - stream_cleanup_files
    - set_apply_error_context_xact
    - process_syncing_tables
    - logicalrep_read_stream_commit
    - stream_close_file
    - pgstat_report_activity
    - pa_xact_finish
    - get_transaction_apply_action
    - pa_set_fileset_state
    - pa_unlock_transaction
    - elog
    - apply_handle_commit_internal
    - Assert
    - pa_set_xact_state
    - errmsg_internal
    - ereport
    - apply_spooled_messages
    - pa_send_data
    - pa_reset_subtrans
    - pa_switch_to_partial_serialize
    - reset_apply_error_context_info
    - stream_open_and_write_change
    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:2260,1
    - Dst: stop_skipping_changes
      Src: /src/postgres/src/backend/replication/logical/worker.c:2262,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/worker.c:2268,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:2269,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/worker.c:2272,1
    - Dst: clear_subscription_skip_lsn
      Src: /src/postgres/src/backend/replication/logical/worker.c:2278,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:2287,1
    - Dst: IsTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/worker.c:2289,1
    - Dst: EndTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/worker.c:2291,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:2292,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/worker.c:2295,1
    - Dst: store_flush_position
      Src: /src/postgres/src/backend/replication/logical/worker.c:2297,1
    - Dst: AcceptInvalidationMessages
      Src: /src/postgres/src/backend/replication/logical/worker.c:2302,1
    - Dst: maybe_reread_subscription
      Src: /src/postgres/src/backend/replication/logical/worker.c:2303,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - commit_data
    argTypes:
    - LogicalRepCommitData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2307
      start: 2257
    functionDepth: 2
    functionLinenumber: 2257
    functionLinenumberEnd: 2307
    functionName: apply_handle_commit_internal
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 2
    functionsReached:
    - EndTransactionBlock
    - clear_subscription_skip_lsn
    - CommitTransactionCommand
    - stop_skipping_changes
    - maybe_reread_subscription
    - IsTransactionBlock
    - AcceptInvalidationMessages
    - IsTransactionState
    - pgstat_report_stat
    - is_skipping_changes
    - StartTransactionCommand
    - store_flush_position
    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:2322,1
    - Dst: logicalrep_read_rel
      Src: /src/postgres/src/backend/replication/logical/worker.c:2325,1
    - Dst: logicalrep_relmap_update
      Src: /src/postgres/src/backend/replication/logical/worker.c:2326,1
    - Dst: logicalrep_partmap_reset_relmap
      Src: /src/postgres/src/backend/replication/logical/worker.c:2329,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2330
      start: 2317
    functionDepth: 8
    functionLinenumber: 2317
    functionLinenumberEnd: 2330
    functionName: apply_handle_relation
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - handle_streamed_transaction
    - logicalrep_partmap_reset_relmap
    - logicalrep_relmap_update
    - logicalrep_read_rel
    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:2345,1
    - Dst: logicalrep_read_typ
      Src: /src/postgres/src/backend/replication/logical/worker.c:2348,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2349
      start: 2340
    functionDepth: 8
    functionLinenumber: 2340
    functionLinenumberEnd: 2349
    functionName: apply_handle_type
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - handle_streamed_transaction
    - logicalrep_read_typ
    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:2361,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/replication/logical/worker.c:2362,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/replication/logical/worker.c:2362,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/replication/logical/worker.c:2364,1
    - Dst: get_relkind_objtype
      Src: /src/postgres/src/backend/replication/logical/worker.c:2365,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/replication/logical/worker.c:2366,1
    - Dst: check_enable_rls
      Src: /src/postgres/src/backend/replication/logical/worker.c:2375,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:2376,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:2377,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:2378,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/replication/logical/worker.c:2379,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/replication/logical/worker.c:2379,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/logical/worker.c:2380,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - rel
    - mode
    argTypes:
    - Relation
    - AclMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2381
      start: 2355
    functionDepth: 2
    functionLinenumber: 2355
    functionLinenumberEnd: 2381
    functionName: TargetPrivilegesCheck
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - get_rel_name
    - RelationGetRelationName
    - RelationGetRelid
    - get_relkind_objtype
    - aclcheck_error
    - pg_class_aclcheck
    - ereport
    - check_enable_rls
    - GetUserId
    - GetUserNameFromId
    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:2404,1
    - Dst: handle_streamed_transaction
      Src: /src/postgres/src/backend/replication/logical/worker.c:2405,1
    - Dst: begin_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:2408,1
    - Dst: logicalrep_read_insert
      Src: /src/postgres/src/backend/replication/logical/worker.c:2410,1
    - Dst: logicalrep_rel_open
      Src: /src/postgres/src/backend/replication/logical/worker.c:2411,1
    - Dst: should_apply_changes_for_rel
      Src: /src/postgres/src/backend/replication/logical/worker.c:2412,1
    - Dst: logicalrep_rel_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:2418,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:2419,1
    - Dst: SwitchToUntrustedUser
      Src: /src/postgres/src/backend/replication/logical/worker.c:2429,1
    - Dst: create_edata_for_relation
      Src: /src/postgres/src/backend/replication/logical/worker.c:2435,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/replication/logical/worker.c:2437,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/worker.c:2438,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2442,1
    - Dst: GetPerTupleMemoryContext
      Src: /src/postgres/src/backend/replication/logical/worker.c:2442,1
    - Dst: slot_store_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:2443,1
    - Dst: slot_fill_defaults
      Src: /src/postgres/src/backend/replication/logical/worker.c:2444,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2445,1
    - Dst: apply_handle_tuple_routing
      Src: /src/postgres/src/backend/replication/logical/worker.c:2449,1
    - Dst: ExecOpenIndices
      Src: /src/postgres/src/backend/replication/logical/worker.c:2455,1
    - Dst: apply_handle_insert_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:2456,1
    - Dst: ExecCloseIndices
      Src: /src/postgres/src/backend/replication/logical/worker.c:2457,1
    - Dst: finish_edata
      Src: /src/postgres/src/backend/replication/logical/worker.c:2460,1
    - Dst: RestoreUserContext
      Src: /src/postgres/src/backend/replication/logical/worker.c:2466,1
    - Dst: logicalrep_rel_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:2468,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:2470,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2471
      start: 2387
    functionDepth: 8
    functionLinenumber: 2387
    functionLinenumberEnd: 2471
    functionName: apply_handle_insert
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - end_replication_step
    - logicalrep_rel_open
    - logicalrep_read_insert
    - apply_handle_insert_internal
    - ExecCloseIndices
    - slot_store_data
    - slot_fill_defaults
    - finish_edata
    - ExecInitExtraTupleSlot
    - SwitchToUntrustedUser
    - GetPerTupleMemoryContext
    - ExecOpenIndices
    - handle_streamed_transaction
    - logicalrep_rel_close
    - create_edata_for_relation
    - RelationGetDescr
    - begin_replication_step
    - should_apply_changes_for_rel
    - apply_handle_tuple_routing
    - is_skipping_changes
    - RestoreUserContext
    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:2486,1
    - Dst: RelationGetIndexList
      Src: /src/postgres/src/backend/replication/logical/worker.c:2488,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:2491,1
    - Dst: InitConflictIndexes
      Src: /src/postgres/src/backend/replication/logical/worker.c:2492,1
    - Dst: TargetPrivilegesCheck
      Src: /src/postgres/src/backend/replication/logical/worker.c:2495,1
    - Dst: ExecSimpleRelationInsert
      Src: /src/postgres/src/backend/replication/logical/worker.c:2496,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - edata
    - relinfo
    - remoteslot
    argTypes:
    - ApplyExecutionData*
    - ResultRelInfo*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2497
      start: 2478
    functionDepth: 7
    functionLinenumber: 2478
    functionLinenumberEnd: 2497
    functionName: apply_handle_insert_internal
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - Assert
    - ExecSimpleRelationInsert
    - RelationGetIndexList
    - TargetPrivilegesCheck
    - InitConflictIndexes
    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:2521,1
    - Dst: GetRelationIdentityOrPK
      Src: /src/postgres/src/backend/replication/logical/worker.c:2521,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:2523,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:2524,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:2525,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:2530,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:2531,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:2532,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - rel
    argTypes:
    - LogicalRepRelMapEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2537
      start: 2503
    functionDepth: 2
    functionLinenumber: 2503
    functionLinenumberEnd: 2537
    functionName: check_relation_updatable
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - errmsg
    - GetRelationIdentityOrPK
    - ereport
    - OidIsValid
    - errcode
    linkageType: ''
    returnType: void
    signature: void check_relation_updatable(LogicalRepRelMapEntry *rel)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: is_skipping_changes
      Src: /src/postgres/src/backend/replication/logical/worker.c:2564,1
    - Dst: handle_streamed_transaction
      Src: /src/postgres/src/backend/replication/logical/worker.c:2565,1
    - Dst: begin_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:2568,1
    - Dst: logicalrep_read_update
      Src: /src/postgres/src/backend/replication/logical/worker.c:2570,1
    - Dst: logicalrep_rel_open
      Src: /src/postgres/src/backend/replication/logical/worker.c:2572,1
    - Dst: should_apply_changes_for_rel
      Src: /src/postgres/src/backend/replication/logical/worker.c:2573,1
    - Dst: logicalrep_rel_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:2579,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:2580,1
    - Dst: check_relation_updatable
      Src: /src/postgres/src/backend/replication/logical/worker.c:2588,1
    - Dst: SwitchToUntrustedUser
      Src: /src/postgres/src/backend/replication/logical/worker.c:2596,1
    - Dst: create_edata_for_relation
      Src: /src/postgres/src/backend/replication/logical/worker.c:2599,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/replication/logical/worker.c:2601,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/worker.c:2602,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/replication/logical/worker.c:2613,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/replication/logical/worker.c:2616,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:2621,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/replication/logical/worker.c:2624,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2630,1
    - Dst: GetPerTupleMemoryContext
      Src: /src/postgres/src/backend/replication/logical/worker.c:2630,1
    - Dst: slot_store_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:2631,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2633,1
    - Dst: apply_handle_tuple_routing
      Src: /src/postgres/src/backend/replication/logical/worker.c:2637,1
    - Dst: apply_handle_update_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:2640,1
    - Dst: finish_edata
      Src: /src/postgres/src/backend/replication/logical/worker.c:2643,1
    - Dst: RestoreUserContext
      Src: /src/postgres/src/backend/replication/logical/worker.c:2649,1
    - Dst: logicalrep_rel_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:2651,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:2653,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2654
      start: 2544
    functionDepth: 8
    functionLinenumber: 2544
    functionLinenumberEnd: 2654
    functionName: apply_handle_update
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - end_replication_step
    - logicalrep_rel_open
    - logicalrep_read_update
    - slot_store_data
    - check_relation_updatable
    - finish_edata
    - ExecInitExtraTupleSlot
    - SwitchToUntrustedUser
    - TupleDescAttr
    - GetPerTupleMemoryContext
    - list_nth
    - apply_handle_update_internal
    - bms_add_member
    - handle_streamed_transaction
    - Assert
    - logicalrep_rel_close
    - create_edata_for_relation
    - RelationGetDescr
    - begin_replication_step
    - should_apply_changes_for_rel
    - apply_handle_tuple_routing
    - is_skipping_changes
    - RestoreUserContext
    linkageType: ''
    returnType: void
    signature: void apply_handle_update(StringInfo s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EvalPlanQualInit
      Src: /src/postgres/src/backend/replication/logical/worker.c:2677,1
    - Dst: ExecOpenIndices
      Src: /src/postgres/src/backend/replication/logical/worker.c:2678,1
    - Dst: FindReplTupleInLocalRel
      Src: /src/postgres/src/backend/replication/logical/worker.c:2680,1
    - Dst: GetTupleTransactionInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2696,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/replication/logical/worker.c:2703,1
    - Dst: slot_store_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:2704,1
    - Dst: ReportApplyConflict
      Src: /src/postgres/src/backend/replication/logical/worker.c:2708,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/replication/logical/worker.c:2710,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2714,1
    - Dst: GetPerTupleMemoryContext
      Src: /src/postgres/src/backend/replication/logical/worker.c:2714,1
    - Dst: slot_modify_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:2715,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2716,1
    - Dst: EvalPlanQualSetSlot
      Src: /src/postgres/src/backend/replication/logical/worker.c:2718,1
    - Dst: InitConflictIndexes
      Src: /src/postgres/src/backend/replication/logical/worker.c:2720,1
    - Dst: TargetPrivilegesCheck
      Src: /src/postgres/src/backend/replication/logical/worker.c:2723,1
    - Dst: ExecSimpleRelationUpdate
      Src: /src/postgres/src/backend/replication/logical/worker.c:2724,1
    - Dst: slot_store_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:2732,1
    - Dst: ReportApplyConflict
      Src: /src/postgres/src/backend/replication/logical/worker.c:2738,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/replication/logical/worker.c:2739,1
    - Dst: ExecCloseIndices
      Src: /src/postgres/src/backend/replication/logical/worker.c:2743,1
    - Dst: EvalPlanQualEnd
      Src: /src/postgres/src/backend/replication/logical/worker.c:2744,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 5
    argNames:
    - edata
    - relinfo
    - remoteslot
    - newtup
    - localindexoid
    argTypes:
    - ApplyExecutionData*
    - ResultRelInfo*
    - TupleTableSlot*
    - LogicalRepTupleData*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2745
      start: 2661
    functionDepth: 7
    functionLinenumber: 2661
    functionLinenumberEnd: 2745
    functionName: apply_handle_update_internal
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - ExecSimpleRelationUpdate
    - MemoryContextSwitchTo
    - EvalPlanQualInit
    - table_slot_create
    - ReportApplyConflict
    - FindReplTupleInLocalRel
    - GetTupleTransactionInfo
    - GetPerTupleMemoryContext
    - EvalPlanQualSetSlot
    - slot_store_data
    - InitConflictIndexes
    - list_make1
    - TargetPrivilegesCheck
    - ExecOpenIndices
    - ExecCloseIndices
    - slot_modify_data
    - EvalPlanQualEnd
    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:2769,1
    - Dst: handle_streamed_transaction
      Src: /src/postgres/src/backend/replication/logical/worker.c:2770,1
    - Dst: begin_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:2773,1
    - Dst: logicalrep_read_delete
      Src: /src/postgres/src/backend/replication/logical/worker.c:2775,1
    - Dst: logicalrep_rel_open
      Src: /src/postgres/src/backend/replication/logical/worker.c:2776,1
    - Dst: should_apply_changes_for_rel
      Src: /src/postgres/src/backend/replication/logical/worker.c:2777,1
    - Dst: logicalrep_rel_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:2783,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:2784,1
    - Dst: check_relation_updatable
      Src: /src/postgres/src/backend/replication/logical/worker.c:2792,1
    - Dst: SwitchToUntrustedUser
      Src: /src/postgres/src/backend/replication/logical/worker.c:2800,1
    - Dst: create_edata_for_relation
      Src: /src/postgres/src/backend/replication/logical/worker.c:2803,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/replication/logical/worker.c:2805,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/worker.c:2806,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2810,1
    - Dst: GetPerTupleMemoryContext
      Src: /src/postgres/src/backend/replication/logical/worker.c:2810,1
    - Dst: slot_store_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:2811,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2812,1
    - Dst: apply_handle_tuple_routing
      Src: /src/postgres/src/backend/replication/logical/worker.c:2816,1
    - Dst: ExecOpenIndices
      Src: /src/postgres/src/backend/replication/logical/worker.c:2822,1
    - Dst: apply_handle_delete_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:2823,1
    - Dst: ExecCloseIndices
      Src: /src/postgres/src/backend/replication/logical/worker.c:2825,1
    - Dst: finish_edata
      Src: /src/postgres/src/backend/replication/logical/worker.c:2828,1
    - Dst: RestoreUserContext
      Src: /src/postgres/src/backend/replication/logical/worker.c:2834,1
    - Dst: logicalrep_rel_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:2836,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:2838,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2839
      start: 2752
    functionDepth: 8
    functionLinenumber: 2752
    functionLinenumberEnd: 2839
    functionName: apply_handle_delete
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - apply_handle_delete_internal
    - logicalrep_read_delete
    - end_replication_step
    - logicalrep_rel_open
    - ExecCloseIndices
    - slot_store_data
    - check_relation_updatable
    - finish_edata
    - ExecInitExtraTupleSlot
    - SwitchToUntrustedUser
    - GetPerTupleMemoryContext
    - ExecOpenIndices
    - handle_streamed_transaction
    - logicalrep_rel_close
    - create_edata_for_relation
    - RelationGetDescr
    - begin_replication_step
    - should_apply_changes_for_rel
    - apply_handle_tuple_routing
    - is_skipping_changes
    - RestoreUserContext
    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:2860,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:2863,1
    - Dst: RelationGetIndexList
      Src: /src/postgres/src/backend/replication/logical/worker.c:2865,1
    - Dst: FindReplTupleInLocalRel
      Src: /src/postgres/src/backend/replication/logical/worker.c:2867,1
    - Dst: GetTupleTransactionInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2877,1
    - Dst: ReportApplyConflict
      Src: /src/postgres/src/backend/replication/logical/worker.c:2882,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/replication/logical/worker.c:2884,1
    - Dst: EvalPlanQualSetSlot
      Src: /src/postgres/src/backend/replication/logical/worker.c:2887,1
    - Dst: TargetPrivilegesCheck
      Src: /src/postgres/src/backend/replication/logical/worker.c:2890,1
    - Dst: ExecSimpleRelationDelete
      Src: /src/postgres/src/backend/replication/logical/worker.c:2891,1
    - Dst: ReportApplyConflict
      Src: /src/postgres/src/backend/replication/logical/worker.c:2899,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/replication/logical/worker.c:2900,1
    - Dst: EvalPlanQualEnd
      Src: /src/postgres/src/backend/replication/logical/worker.c:2904,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 4
    argNames:
    - edata
    - relinfo
    - remoteslot
    - localindexoid
    argTypes:
    - ApplyExecutionData*
    - ResultRelInfo*
    - TupleTableSlot*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2905
      start: 2846
    functionDepth: 6
    functionLinenumber: 2846
    functionLinenumberEnd: 2905
    functionName: apply_handle_delete_internal
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - Assert
    - EvalPlanQualInit
    - ReportApplyConflict
    - FindReplTupleInLocalRel
    - RelationGetIndexList
    - GetTupleTransactionInfo
    - TargetPrivilegesCheck
    - EvalPlanQualSetSlot
    - ExecSimpleRelationDelete
    - list_make1
    - EvalPlanQualEnd
    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:2928,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/replication/logical/worker.c:2930,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:2932,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:2932,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:2935,1
    - Dst: index_open
      Src: /src/postgres/src/backend/replication/logical/worker.c:2938,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:2941,1
    - Dst: GetRelationIdentityOrPK
      Src: /src/postgres/src/backend/replication/logical/worker.c:2941,1
    - Dst: IsIndexUsableForReplicaIdentityFull
      Src: /src/postgres/src/backend/replication/logical/worker.c:2943,1
    - Dst: index_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:2945,1
    - Dst: RelationFindReplTupleByIndex
      Src: /src/postgres/src/backend/replication/logical/worker.c:2948,1
    - Dst: RelationFindReplTupleSeq
      Src: /src/postgres/src/backend/replication/logical/worker.c:2953,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: 2957
      start: 2914
    functionDepth: 5
    functionLinenumber: 2914
    functionLinenumberEnd: 2957
    functionName: FindReplTupleInLocalRel
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 2
    functionsReached:
    - GetRelationIdentityOrPK
    - Assert
    - table_slot_create
    - index_close
    - TargetPrivilegesCheck
    - IsIndexUsableForReplicaIdentityFull
    - RelationFindReplTupleByIndex
    - RelationFindReplTupleSeq
    - OidIsValid
    - index_open
    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: 14
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/replication/logical/worker.c:2983,1
    - Dst: ExecSetupPartitionTupleRouting
      Src: /src/postgres/src/backend/replication/logical/worker.c:2990,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:2995,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:2996,1
    - Dst: GetPerTupleMemoryContext
      Src: /src/postgres/src/backend/replication/logical/worker.c:2996,1
    - Dst: ExecFindPartition
      Src: /src/postgres/src/backend/replication/logical/worker.c:2997,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:2999,1
    - Dst: CheckSubscriptionRelkind
      Src: /src/postgres/src/backend/replication/logical/worker.c:3007,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/replication/logical/worker.c:3008,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/replication/logical/worker.c:3008,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/logical/worker.c:3009,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/replication/logical/worker.c:3018,1
    - Dst: ExecGetRootToChildMap
      Src: /src/postgres/src/backend/replication/logical/worker.c:3019,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/replication/logical/worker.c:3023,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/replication/logical/worker.c:3028,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/replication/logical/worker.c:3029,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3031,1
    - Dst: logicalrep_partition_open
      Src: /src/postgres/src/backend/replication/logical/worker.c:3036,1
    - Dst: check_relation_updatable
      Src: /src/postgres/src/backend/replication/logical/worker.c:3038,1
    - Dst: apply_handle_insert_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:3044,1
    - Dst: apply_handle_delete_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:3049,1
    - Dst: FindReplTupleInLocalRel
      Src: /src/postgres/src/backend/replication/logical/worker.c:3071,1
    - Dst: slot_store_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:3080,1
    - Dst: ReportApplyConflict
      Src: /src/postgres/src/backend/replication/logical/worker.c:3086,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/replication/logical/worker.c:3088,1
    - Dst: GetTupleTransactionInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3097,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/replication/logical/worker.c:3105,1
    - Dst: slot_store_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:3106,1
    - Dst: ReportApplyConflict
      Src: /src/postgres/src/backend/replication/logical/worker.c:3110,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/replication/logical/worker.c:3112,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3119,1
    - Dst: GetPerTupleMemoryContext
      Src: /src/postgres/src/backend/replication/logical/worker.c:3119,1
    - Dst: slot_modify_data
      Src: /src/postgres/src/backend/replication/logical/worker.c:3120,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3122,1
    - Dst: EvalPlanQualInit
      Src: /src/postgres/src/backend/replication/logical/worker.c:3124,1
    - Dst: ExecPartitionCheck
      Src: /src/postgres/src/backend/replication/logical/worker.c:3131,1
    - Dst: InitConflictIndexes
      Src: /src/postgres/src/backend/replication/logical/worker.c:3141,1
    - Dst: EvalPlanQualSetSlot
      Src: /src/postgres/src/backend/replication/logical/worker.c:3143,1
    - Dst: TargetPrivilegesCheck
      Src: /src/postgres/src/backend/replication/logical/worker.c:3144,1
    - Dst: ExecSimpleRelationUpdate
      Src: /src/postgres/src/backend/replication/logical/worker.c:3146,1
    - Dst: convert_tuples_by_name
      Src: /src/postgres/src/backend/replication/logical/worker.c:3163,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/worker.c:3163,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/worker.c:3164,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/replication/logical/worker.c:3167,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/replication/logical/worker.c:3172,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/replication/logical/worker.c:3173,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3177,1
    - Dst: GetPerTupleMemoryContext
      Src: /src/postgres/src/backend/replication/logical/worker.c:3177,1
    - Dst: ExecFindPartition
      Src: /src/postgres/src/backend/replication/logical/worker.c:3178,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3181,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:3182,1
    - Dst: CheckSubscriptionRelkind
      Src: /src/postgres/src/backend/replication/logical/worker.c:3186,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/replication/logical/worker.c:3187,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/replication/logical/worker.c:3187,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/replication/logical/worker.c:3188,1
    - Dst: EvalPlanQualSetSlot
      Src: /src/postgres/src/backend/replication/logical/worker.c:3191,1
    - Dst: TargetPrivilegesCheck
      Src: /src/postgres/src/backend/replication/logical/worker.c:3192,1
    - Dst: ExecSimpleRelationDelete
      Src: /src/postgres/src/backend/replication/logical/worker.c:3193,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3201,1
    - Dst: GetPerTupleMemoryContext
      Src: /src/postgres/src/backend/replication/logical/worker.c:3201,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/replication/logical/worker.c:3204,1
    - Dst: ExecGetRootToChildMap
      Src: /src/postgres/src/backend/replication/logical/worker.c:3206,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/replication/logical/worker.c:3209,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/replication/logical/worker.c:3215,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/replication/logical/worker.c:3217,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3219,1
    - Dst: apply_handle_insert_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:3220,1
    - Dst: EvalPlanQualEnd
      Src: /src/postgres/src/backend/replication/logical/worker.c:3224,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:3229,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 95
    argCount: 4
    argNames:
    - edata
    - remoteslot
    - newtup
    - operation
    argTypes:
    - ApplyExecutionData*
    - TupleTableSlot*
    - LogicalRepTupleData*
    - CmdType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3232
      start: 2962
    functionDepth: 8
    functionLinenumber: 2962
    functionLinenumberEnd: 3232
    functionName: apply_handle_tuple_routing
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 3
    functionsReached:
    - MemoryContextSwitchTo
    - table_slot_create
    - ReportApplyConflict
    - apply_handle_delete_internal
    - InitConflictIndexes
    - ExecSetupPartitionTupleRouting
    - TargetPrivilegesCheck
    - CheckSubscriptionRelkind
    - logicalrep_partition_open
    - ExecGetRootToChildMap
    - makeNode
    - RelationGetRelationName
    - ExecSimpleRelationUpdate
    - apply_handle_insert_internal
    - FindReplTupleInLocalRel
    - slot_getallattrs
    - slot_store_data
    - ExecCopySlot
    - check_relation_updatable
    - convert_tuples_by_name
    - GetPerTupleMemoryContext
    - get_namespace_name
    - ExecPartitionCheck
    - elog
    - RelationGetNamespace
    - slot_modify_data
    - EvalPlanQualEnd
    - execute_attr_map_slot
    - Assert
    - EvalPlanQualInit
    - GetTupleTransactionInfo
    - ExecFindPartition
    - EvalPlanQualSetSlot
    - RelationGetDescr
    - ExecSimpleRelationDelete
    - list_make1
    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:3257,1
    - Dst: handle_streamed_transaction
      Src: /src/postgres/src/backend/replication/logical/worker.c:3258,1
    - Dst: begin_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:3261,1
    - Dst: logicalrep_read_truncate
      Src: /src/postgres/src/backend/replication/logical/worker.c:3263,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3267,1
    - Dst: logicalrep_rel_open
      Src: /src/postgres/src/backend/replication/logical/worker.c:3270,1
    - Dst: should_apply_changes_for_rel
      Src: /src/postgres/src/backend/replication/logical/worker.c:3271,1
    - Dst: logicalrep_rel_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:3277,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/worker.c:3281,1
    - Dst: TargetPrivilegesCheck
      Src: /src/postgres/src/backend/replication/logical/worker.c:3282,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/worker.c:3283,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3284,1
    - Dst: RelationIsLogicallyLogged
      Src: /src/postgres/src/backend/replication/logical/worker.c:3285,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3286,1
    - Dst: find_all_inheritors
      Src: /src/postgres/src/backend/replication/logical/worker.c:3295,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3301,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3304,1
    - Dst: table_open
      Src: /src/postgres/src/backend/replication/logical/worker.c:3308,1
    - Dst: RELATION_IS_OTHER_TEMP
      Src: /src/postgres/src/backend/replication/logical/worker.c:3314,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:3316,1
    - Dst: TargetPrivilegesCheck
      Src: /src/postgres/src/backend/replication/logical/worker.c:3320,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/worker.c:3321,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/worker.c:3322,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3323,1
    - Dst: RelationIsLogicallyLogged
      Src: /src/postgres/src/backend/replication/logical/worker.c:3325,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3326,1
    - Dst: ExecuteTruncateGuts
      Src: /src/postgres/src/backend/replication/logical/worker.c:3341,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/worker.c:3349,1
    - Dst: logicalrep_rel_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:3351,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/worker.c:3355,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:3357,1
    - Dst: end_replication_step
      Src: /src/postgres/src/backend/replication/logical/worker.c:3360,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3361
      start: 3239
    functionDepth: 8
    functionLinenumber: 3239
    functionLinenumberEnd: 3361
    functionName: apply_handle_truncate
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - is_skipping_changes
    - TargetPrivilegesCheck
    - end_replication_step
    - logicalrep_rel_open
    - find_all_inheritors
    - ExecuteTruncateGuts
    - table_open
    - RelationIsLogicallyLogged
    - logicalrep_read_truncate
    - lappend
    - list_member_oid
    - table_close
    - lfirst
    - handle_streamed_transaction
    - RELATION_IS_OTHER_TEMP
    - logicalrep_rel_close
    - lappend_oid
    - begin_replication_step
    - should_apply_changes_for_rel
    - lfirst_oid
    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:3267,1
    - Dst: logicalrep_rel_open
      Src: /src/postgres/src/backend/replication/logical/worker.c:3270,1
    - Dst: should_apply_changes_for_rel
      Src: /src/postgres/src/backend/replication/logical/worker.c:3271,1
    - Dst: logicalrep_rel_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:3277,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/worker.c:3281,1
    - Dst: TargetPrivilegesCheck
      Src: /src/postgres/src/backend/replication/logical/worker.c:3282,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/worker.c:3283,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3284,1
    - Dst: RelationIsLogicallyLogged
      Src: /src/postgres/src/backend/replication/logical/worker.c:3285,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3286,1
    - Dst: find_all_inheritors
      Src: /src/postgres/src/backend/replication/logical/worker.c:3295,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3301,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3304,1
    - Dst: table_open
      Src: /src/postgres/src/backend/replication/logical/worker.c:3308,1
    - Dst: RELATION_IS_OTHER_TEMP
      Src: /src/postgres/src/backend/replication/logical/worker.c:3314,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:3316,1
    - Dst: TargetPrivilegesCheck
      Src: /src/postgres/src/backend/replication/logical/worker.c:3320,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/worker.c:3321,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/worker.c:3322,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3323,1
    - Dst: RelationIsLogicallyLogged
      Src: /src/postgres/src/backend/replication/logical/worker.c:3325,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3326,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3329
      start: 3265
    functionDepth: 7
    functionLinenumber: 3265
    functionLinenumberEnd: 3329
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 371
    functionsReached:
    - RELATION_IS_OTHER_TEMP
    - logicalrep_rel_close
    - table_open
    - lappend_oid
    - TargetPrivilegesCheck
    - should_apply_changes_for_rel
    - RelationIsLogicallyLogged
    - lappend
    - list_member_oid
    - logicalrep_rel_open
    - table_close
    - lfirst_oid
    - find_all_inheritors
    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:3301,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3304,1
    - Dst: table_open
      Src: /src/postgres/src/backend/replication/logical/worker.c:3308,1
    - Dst: RELATION_IS_OTHER_TEMP
      Src: /src/postgres/src/backend/replication/logical/worker.c:3314,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:3316,1
    - Dst: TargetPrivilegesCheck
      Src: /src/postgres/src/backend/replication/logical/worker.c:3320,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/worker.c:3321,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/worker.c:3322,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3323,1
    - Dst: RelationIsLogicallyLogged
      Src: /src/postgres/src/backend/replication/logical/worker.c:3325,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:3326,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3327
      start: 3299
    functionDepth: 6
    functionLinenumber: 3299
    functionLinenumberEnd: 3327
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 371
    functionsReached:
    - RELATION_IS_OTHER_TEMP
    - table_open
    - lappend_oid
    - TargetPrivilegesCheck
    - RelationIsLogicallyLogged
    - lappend
    - list_member_oid
    - table_close
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(child, children)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/worker.c:3349,1
    - Dst: logicalrep_rel_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:3351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3352
      start: 3347
    functionDepth: 4
    functionLinenumber: 3347
    functionLinenumberEnd: 3352
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 371
    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:3355,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:3357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3358
      start: 3353
    functionDepth: 3
    functionLinenumber: 3353
    functionLinenumberEnd: 3358
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 371
    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:3370,1
    - Dst: apply_handle_begin
      Src: /src/postgres/src/backend/replication/logical/worker.c:3384,1
    - Dst: apply_handle_commit
      Src: /src/postgres/src/backend/replication/logical/worker.c:3388,1
    - Dst: apply_handle_insert
      Src: /src/postgres/src/backend/replication/logical/worker.c:3392,1
    - Dst: apply_handle_update
      Src: /src/postgres/src/backend/replication/logical/worker.c:3396,1
    - Dst: apply_handle_delete
      Src: /src/postgres/src/backend/replication/logical/worker.c:3400,1
    - Dst: apply_handle_truncate
      Src: /src/postgres/src/backend/replication/logical/worker.c:3404,1
    - Dst: apply_handle_relation
      Src: /src/postgres/src/backend/replication/logical/worker.c:3408,1
    - Dst: apply_handle_type
      Src: /src/postgres/src/backend/replication/logical/worker.c:3412,1
    - Dst: apply_handle_origin
      Src: /src/postgres/src/backend/replication/logical/worker.c:3416,1
    - Dst: apply_handle_stream_start
      Src: /src/postgres/src/backend/replication/logical/worker.c:3429,1
    - Dst: apply_handle_stream_stop
      Src: /src/postgres/src/backend/replication/logical/worker.c:3433,1
    - Dst: apply_handle_stream_abort
      Src: /src/postgres/src/backend/replication/logical/worker.c:3437,1
    - Dst: apply_handle_stream_commit
      Src: /src/postgres/src/backend/replication/logical/worker.c:3441,1
    - Dst: apply_handle_begin_prepare
      Src: /src/postgres/src/backend/replication/logical/worker.c:3445,1
    - Dst: apply_handle_prepare
      Src: /src/postgres/src/backend/replication/logical/worker.c:3449,1
    - Dst: apply_handle_commit_prepared
      Src: /src/postgres/src/backend/replication/logical/worker.c:3453,1
    - Dst: apply_handle_rollback_prepared
      Src: /src/postgres/src/backend/replication/logical/worker.c:3457,1
    - Dst: apply_handle_stream_prepare
      Src: /src/postgres/src/backend/replication/logical/worker.c:3461,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:3465,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:3466,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:3467,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 64
    argCount: 1
    argNames:
    - s
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3472
      start: 3367
    functionDepth: 11
    functionLinenumber: 3367
    functionLinenumberEnd: 3472
    functionName: apply_dispatch
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 2
    functionsReached:
    - apply_handle_stream_commit
    - apply_handle_type
    - apply_handle_begin_prepare
    - apply_handle_update
    - apply_handle_prepare
    - apply_handle_commit_prepared
    - apply_handle_origin
    - apply_handle_truncate
    - apply_handle_delete
    - apply_handle_rollback_prepared
    - apply_handle_begin
    - apply_handle_relation
    - errmsg
    - apply_handle_insert
    - apply_handle_stream_start
    - pq_getmsgbyte
    - apply_handle_stream_prepare
    - apply_handle_commit
    - ereport
    - apply_handle_stream_abort
    - errcode
    - apply_handle_stream_stop
    linkageType: ''
    returnType: void
    signature: void apply_dispatch(StringInfo s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetFlushRecPtr
      Src: /src/postgres/src/backend/replication/logical/worker.c:3492,1
    - Dst: dlist_foreach_modify
      Src: /src/postgres/src/backend/replication/logical/worker.c:3497,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/replication/logical/worker.c:3500,1
    - Dst: dlist_delete
      Src: /src/postgres/src/backend/replication/logical/worker.c:3507,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/worker.c:3508,1
    - Dst: dlist_tail_element
      Src: /src/postgres/src/backend/replication/logical/worker.c:3517,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/replication/logical/worker.c:3525,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 3
    argNames:
    - write
    - flush
    - have_pending_txes
    argTypes:
    - XLogRecPtr*
    - XLogRecPtr*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3526
      start: 3487
    functionDepth: 2
    functionLinenumber: 3487
    functionLinenumberEnd: 3526
    functionName: get_flush_position
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - pfree
    - dlist_foreach_modify
    - dlist_tail_element
    - dlist_is_empty
    - GetFlushRecPtr
    - dlist_delete
    - dlist_container
    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:3540,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3544,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/worker.c:3547,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/replication/logical/worker.c:3551,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3552,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - remote_lsn
    - local_lsn
    argTypes:
    - XLogRecPtr
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3553
      start: 3531
    functionDepth: 2
    functionLinenumber: 3531
    functionLinenumberEnd: 3553
    functionName: store_flush_position
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 6
    functionsReached:
    - palloc
    - am_parallel_apply_worker
    - MemoryContextSwitchTo
    - dlist_push_tail
    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:3562,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - last_lsn
    - send_time
    - reply
    argTypes:
    - XLogRecPtr
    - TimestampTz
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3568
      start: 3557
    functionDepth: 1
    functionLinenumber: 3557
    functionLinenumberEnd: 3568
    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: 21
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/worker.c:3576,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/logical/worker.c:3585,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/logical/worker.c:3593,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/replication/logical/worker.c:3598,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/worker.c:3619,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3621,1
    - Dst: walrcv_receive
      Src: /src/postgres/src/backend/replication/logical/worker.c:3623,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/worker.c:3630,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:3638,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:3639,1
    - Dst: ProcessConfigFile
      Src: /src/postgres/src/backend/replication/logical/worker.c:3651,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/worker.c:3655,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3659,1
    - Dst: initReadOnlyStringInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3661,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/logical/worker.c:3663,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/worker.c:3671,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/worker.c:3672,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/worker.c:3673,1
    - Dst: UpdateWorkerStats
      Src: /src/postgres/src/backend/replication/logical/worker.c:3681,1
    - Dst: apply_dispatch
      Src: /src/postgres/src/backend/replication/logical/worker.c:3683,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/worker.c:3691,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/worker.c:3692,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/logical/worker.c:3693,1
    - Dst: send_feedback
      Src: /src/postgres/src/backend/replication/logical/worker.c:3698,1
    - Dst: UpdateWorkerStats
      Src: /src/postgres/src/backend/replication/logical/worker.c:3699,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/logical/worker.c:3703,1
    - Dst: walrcv_receive
      Src: /src/postgres/src/backend/replication/logical/worker.c:3706,1
    - Dst: send_feedback
      Src: /src/postgres/src/backend/replication/logical/worker.c:3711,1
    - Dst: AcceptInvalidationMessages
      Src: /src/postgres/src/backend/replication/logical/worker.c:3720,1
    - Dst: maybe_reread_subscription
      Src: /src/postgres/src/backend/replication/logical/worker.c:3721,1
    - Dst: process_syncing_tables
      Src: /src/postgres/src/backend/replication/logical/worker.c:3724,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/replication/logical/worker.c:3728,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3729,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/replication/logical/worker.c:3742,1
    - Dst: WaitLatchOrSocket
      Src: /src/postgres/src/backend/replication/logical/worker.c:3747,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/logical/worker.c:3755,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/worker.c:3756,1
    - Dst: ProcessConfigFile
      Src: /src/postgres/src/backend/replication/logical/worker.c:3762,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/worker.c:3783,1
    - Dst: TimestampTzPlusMilliseconds
      Src: /src/postgres/src/backend/replication/logical/worker.c:3787,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:3791,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:3792,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:3793,1
    - Dst: TimestampTzPlusMilliseconds
      Src: /src/postgres/src/backend/replication/logical/worker.c:3798,1
    - Dst: send_feedback
      Src: /src/postgres/src/backend/replication/logical/worker.c:3808,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/worker.c:3818,1
    - Dst: pgstat_report_stat
      Src: /src/postgres/src/backend/replication/logical/worker.c:3819,1
    - Dst: walrcv_endstreaming
      Src: /src/postgres/src/backend/replication/logical/worker.c:3828,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 100
    argCount: 1
    argNames:
    - last_received
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3829
      start: 3573
    functionDepth: 12
    functionLinenumber: 3573
    functionLinenumberEnd: 3829
    functionName: LogicalRepApplyLoop
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - walrcv_endstreaming
    - MemoryContextSwitchTo
    - CHECK_FOR_INTERRUPTS
    - MemoryContextReset
    - maybe_reread_subscription
    - IsTransactionState
    - TimestampTzPlusMilliseconds
    - process_syncing_tables
    - ResetLatch
    - pgstat_report_activity
    - apply_dispatch
    - errmsg
    - UpdateWorkerStats
    - send_feedback
    - pq_getmsgint64
    - GetCurrentTimestamp
    - pgstat_report_stat
    - pq_getmsgbyte
    - ProcessConfigFile
    - walrcv_receive
    - ereport
    - dlist_is_empty
    - AcceptInvalidationMessages
    - AllocSetContextCreate
    - initReadOnlyStringInfo
    - WaitLatchOrSocket
    - errcode
    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:3863,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/worker.c:3878,1
    - Dst: TimestampDifferenceExceeds
      Src: /src/postgres/src/backend/replication/logical/worker.c:3884,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3891,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3893,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3894,1
    - Dst: resetStringInfo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3897,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/worker.c:3899,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/worker.c:3900,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/worker.c:3901,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/worker.c:3902,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/worker.c:3903,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/worker.c:3904,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:3906,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:3908,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:3909,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:3910,1
    - Dst: walrcv_send
      Src: /src/postgres/src/backend/replication/logical/worker.c:3912,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 35
    argCount: 3
    argNames:
    - recvpos
    - force
    - requestReply
    argTypes:
    - XLogRecPtr
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3921
      start: 3837
    functionDepth: 4
    functionLinenumber: 3837
    functionLinenumberEnd: 3921
    functionName: send_feedback
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - LSN_FORMAT_ARGS
    - MemoryContextSwitchTo
    - resetStringInfo
    - makeStringInfo
    - get_flush_position
    - walrcv_send
    - elog
    - GetCurrentTimestamp
    - TimestampDifferenceExceeds
    - pq_sendint64
    - pq_sendbyte
    linkageType: ''
    returnType: void
    signature: void send_feedback(XLogRecPtr recvpos, bool force, bool requestReply)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: am_parallel_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:3929,1
    - Dst: am_leader_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:3948,1
    - Dst: ApplyLauncherForgetWorkerStartTime
      Src: /src/postgres/src/backend/replication/logical/worker.c:3949,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/logical/worker.c:3951,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3952
      start: 3926
    functionDepth: 3
    functionLinenumber: 3926
    functionLinenumberEnd: 3952
    functionName: apply_worker_exit
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - ApplyLauncherForgetWorkerStartTime
    - am_parallel_apply_worker
    - am_leader_apply_worker
    - proc_exit
    linkageType: ''
    returnType: void
    signature: void apply_worker_exit(void)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/worker.c:3972,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:3974,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:3979,1
    - Dst: GetSubscription
      Src: /src/postgres/src/backend/replication/logical/worker.c:3981,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:3989,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:3990,1
    - Dst: am_leader_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:3994,1
    - Dst: ApplyLauncherForgetWorkerStartTime
      Src: /src/postgres/src/backend/replication/logical/worker.c:3995,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/logical/worker.c:3997,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:4003,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:4004,1
    - Dst: apply_worker_exit
      Src: /src/postgres/src/backend/replication/logical/worker.c:4007,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:4011,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:4014,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/worker.c:4023,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/worker.c:4024,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/worker.c:4025,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/worker.c:4029,1
    - Dst: equal
      Src: /src/postgres/src/backend/replication/logical/worker.c:4031,1
    - Dst: am_parallel_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:4033,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:4034,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:4035,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:4038,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:4039,1
    - Dst: apply_worker_exit
      Src: /src/postgres/src/backend/replication/logical/worker.c:4042,1
    - Dst: am_parallel_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:4051,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:4052,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:4053,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:4056,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:4057,1
    - Dst: apply_worker_exit
      Src: /src/postgres/src/backend/replication/logical/worker.c:4060,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:4066,1
    - Dst: FreeSubscription
      Src: /src/postgres/src/backend/replication/logical/worker.c:4071,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:4074,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/replication/logical/worker.c:4077,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:4081,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4084
      start: 3960
    functionDepth: 5
    functionLinenumber: 3960
    functionLinenumberEnd: 4084
    functionName: maybe_reread_subscription
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 4
    functionsReached:
    - errmsg
    - Assert
    - MemoryContextSwitchTo
    - am_leader_apply_worker
    - equal
    - SetConfigOption
    - GetSubscription
    - CommitTransactionCommand
    - ApplyLauncherForgetWorkerStartTime
    - am_parallel_apply_worker
    - ereport
    - elog
    - FreeSubscription
    - IsTransactionState
    - strcmp
    - StartTransactionCommand
    - apply_worker_exit
    - proc_exit
    linkageType: ''
    returnType: void
    signature: void maybe_reread_subscription(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - arg
    - cacheid
    - hashvalue
    argTypes:
    - Datum
    - int
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4093
      start: 4089
    functionDepth: 0
    functionLinenumber: 4089
    functionLinenumberEnd: 4093
    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, int cacheid, uint32 hashvalue)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:4111,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:4111,1
    - Dst: subxact_filename
      Src: /src/postgres/src/backend/replication/logical/worker.c:4114,1
    - Dst: cleanup_subxact_info
      Src: /src/postgres/src/backend/replication/logical/worker.c:4119,1
    - Dst: BufFileDeleteFileSet
      Src: /src/postgres/src/backend/replication/logical/worker.c:4120,1
    - Dst: BufFileOpenFileSet
      Src: /src/postgres/src/backend/replication/logical/worker.c:4129,1
    - Dst: BufFileCreateFileSet
      Src: /src/postgres/src/backend/replication/logical/worker.c:4132,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/replication/logical/worker.c:4137,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/replication/logical/worker.c:4138,1
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/replication/logical/worker.c:4140,1
    - Dst: cleanup_subxact_info
      Src: /src/postgres/src/backend/replication/logical/worker.c:4143,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - subid
    - xid
    argTypes:
    - Oid
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4144
      start: 4104
    functionDepth: 1
    functionLinenumber: 4104
    functionLinenumberEnd: 4144
    functionName: subxact_info_write
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 2
    functionsReached:
    - Assert
    - cleanup_subxact_info
    - TransactionIdIsValid
    - subxact_filename
    - BufFileCreateFileSet
    - BufFileDeleteFileSet
    - BufFileWrite
    - BufFileClose
    - BufFileOpenFileSet
    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:4161,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:4162,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:4163,1
    - Dst: subxact_filename
      Src: /src/postgres/src/backend/replication/logical/worker.c:4169,1
    - Dst: BufFileOpenFileSet
      Src: /src/postgres/src/backend/replication/logical/worker.c:4170,1
    - Dst: BufFileReadExact
      Src: /src/postgres/src/backend/replication/logical/worker.c:4176,1
    - Dst: my_log2
      Src: /src/postgres/src/backend/replication/logical/worker.c:4181,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:4189,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/worker.c:4190,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:4192,1
    - Dst: BufFileReadExact
      Src: /src/postgres/src/backend/replication/logical/worker.c:4195,1
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/replication/logical/worker.c:4197,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - subid
    - xid
    argTypes:
    - Oid
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4198
      start: 4153
    functionDepth: 1
    functionLinenumber: 4153
    functionLinenumberEnd: 4198
    functionName: subxact_info_read
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 2
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - subxact_filename
    - BufFileClose
    - palloc
    - BufFileOpenFileSet
    - BufFileReadExact
    - my_log2
    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:4211,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:4211,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:4212,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:4256,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/worker.c:4257,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:4258,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/replication/logical/worker.c:4263,1
    - Dst: BufFileTell
      Src: /src/postgres/src/backend/replication/logical/worker.c:4273,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 1
    argNames:
    - xid
    argTypes:
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4279
      start: 4204
    functionDepth: 1
    functionLinenumber: 4204
    functionLinenumberEnd: 4279
    functionName: subxact_info_add
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - TransactionIdIsValid
    - BufFileTell
    - repalloc
    - palloc
    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:4285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - path
    - subid
    - xid
    argTypes:
    - char*
    - Oid
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4286
      start: 4282
    functionDepth: 0
    functionLinenumber: 4282
    functionLinenumberEnd: 4286
    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:4292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - path
    - subid
    - xid
    argTypes:
    - char*
    - Oid
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4293
      start: 4289
    functionDepth: 0
    functionLinenumber: 4289
    functionLinenumberEnd: 4293
    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:4309,1
    - Dst: BufFileDeleteFileSet
      Src: /src/postgres/src/backend/replication/logical/worker.c:4310,1
    - Dst: subxact_filename
      Src: /src/postgres/src/backend/replication/logical/worker.c:4313,1
    - Dst: BufFileDeleteFileSet
      Src: /src/postgres/src/backend/replication/logical/worker.c:4314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - subid
    - xid
    argTypes:
    - Oid
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4315
      start: 4303
    functionDepth: 1
    functionLinenumber: 4303
    functionLinenumberEnd: 4315
    functionName: stream_cleanup_files
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 4
    functionsReached:
    - subxact_filename
    - BufFileDeleteFileSet
    - changes_filename
    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:4333,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:4333,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:4334,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:4334,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:4335,1
    - Dst: changes_filename
      Src: /src/postgres/src/backend/replication/logical/worker.c:4338,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:4339,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:4345,1
    - Dst: BufFileCreateFileSet
      Src: /src/postgres/src/backend/replication/logical/worker.c:4352,1
    - Dst: BufFileOpenFileSet
      Src: /src/postgres/src/backend/replication/logical/worker.c:4360,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/replication/logical/worker.c:4362,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:4365,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - subid
    - xid
    - first_segment
    argTypes:
    - Oid
    - TransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4366
      start: 4327
    functionDepth: 1
    functionLinenumber: 4327
    functionLinenumberEnd: 4366
    functionName: stream_open_file
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - TransactionIdIsValid
    - BufFileCreateFileSet
    - elog
    - OidIsValid
    - changes_filename
    - BufFileSeek
    - BufFileOpenFileSet
    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:4375,1
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/replication/logical/worker.c:4377,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4380
      start: 4372
    functionDepth: 1
    functionLinenumber: 4372
    functionLinenumberEnd: 4380
    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:4395,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/replication/logical/worker.c:4401,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/replication/logical/worker.c:4404,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/replication/logical/worker.c:4409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - action
    - s
    argTypes:
    - char
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4410
      start: 4390
    functionDepth: 1
    functionLinenumber: 4390
    functionLinenumberEnd: 4410
    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:4423,1
    - Dst: stream_start_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:4426,1
    - Dst: stream_write_change
      Src: /src/postgres/src/backend/replication/logical/worker.c:4428,1
    - Dst: stream_stop_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:4429,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - xid
    - action
    - s
    argTypes:
    - TransactionId
    - char
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4430
      start: 4420
    functionDepth: 4
    functionLinenumber: 4420
    functionLinenumberEnd: 4430
    functionName: stream_open_and_write_change
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 3
    functionsReached:
    - stream_stop_internal
    - Assert
    - stream_write_change
    - stream_start_internal
    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:4447,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/worker.c:4480,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - options
    - slotname
    - origin_startpos
    argTypes:
    - WalRcvStreamOptions*
    - char*
    - XLogRecPtr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4481
      start: 4436
    functionDepth: 1
    functionLinenumber: 4436
    functionLinenumberEnd: 4481
    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:4490,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4496
      start: 4486
    functionDepth: 0
    functionLinenumber: 4486
    functionLinenumberEnd: 4496
    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()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/replication/logical/worker.c:4508,1
    - Dst: LogicalRepApplyLoop
      Src: /src/postgres/src/backend/replication/logical/worker.c:4510,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/replication/logical/worker.c:4512,1
    - Dst: replorigin_reset
      Src: /src/postgres/src/backend/replication/logical/worker.c:4520,1
    - Dst: DisableSubscriptionAndExit
      Src: /src/postgres/src/backend/replication/logical/worker.c:4523,1
    - Dst: AbortOutOfAnyTransaction
      Src: /src/postgres/src/backend/replication/logical/worker.c:4531,1
    - Dst: pgstat_report_subscription_error
      Src: /src/postgres/src/backend/replication/logical/worker.c:4532,1
    - Dst: am_tablesync_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:4532,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/replication/logical/worker.c:4534,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/replication/logical/worker.c:4537,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - origin_startpos
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4538
      start: 4505
    functionDepth: 13
    functionLinenumber: 4505
    functionLinenumberEnd: 4538
    functionName: start_apply
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - PG_RE_THROW
    - PG_END_TRY
    - PG_TRY
    - pgstat_report_subscription_error
    - PG_CATCH
    - DisableSubscriptionAndExit
    - AbortOutOfAnyTransaction
    - am_tablesync_worker
    - replorigin_reset
    - LogicalRepApplyLoop
    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:4565,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:4566,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:4567,1
    - Dst: ReplicationOriginNameForLogicalRep
      Src: /src/postgres/src/backend/replication/logical/worker.c:4570,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:4572,1
    - Dst: replorigin_by_name
      Src: /src/postgres/src/backend/replication/logical/worker.c:4573,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:4574,1
    - Dst: replorigin_create
      Src: /src/postgres/src/backend/replication/logical/worker.c:4575,1
    - Dst: replorigin_session_setup
      Src: /src/postgres/src/backend/replication/logical/worker.c:4576,1
    - Dst: replorigin_session_get_progress
      Src: /src/postgres/src/backend/replication/logical/worker.c:4578,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:4579,1
    - Dst: walrcv_connect
      Src: /src/postgres/src/backend/replication/logical/worker.c:4585,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:4590,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/worker.c:4591,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:4592,1
    - Dst: walrcv_identify_system
      Src: /src/postgres/src/backend/replication/logical/worker.c:4599,1
    - Dst: set_apply_error_context_origin
      Src: /src/postgres/src/backend/replication/logical/worker.c:4601,1
    - Dst: set_stream_options
      Src: /src/postgres/src/backend/replication/logical/worker.c:4603,1
    - Dst: AllTablesyncsReady
      Src: /src/postgres/src/backend/replication/logical/worker.c:4615,1
    - Dst: walrcv_startstreaming
      Src: /src/postgres/src/backend/replication/logical/worker.c:4619,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:4621,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:4627,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:4627,1
    - Dst: UpdateTwoPhaseState
      Src: /src/postgres/src/backend/replication/logical/worker.c:4629,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:4631,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:4632,1
    - Dst: walrcv_startstreaming
      Src: /src/postgres/src/backend/replication/logical/worker.c:4636,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:4639,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/worker.c:4640,1
    - Dst: start_apply
      Src: /src/postgres/src/backend/replication/logical/worker.c:4648,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4649
      start: 4545
    functionDepth: 14
    functionLinenumber: 4545
    functionLinenumberEnd: 4649
    functionName: run_apply_worker
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - set_apply_error_context_origin
    - replorigin_session_get_progress
    - set_stream_options
    - replorigin_session_setup
    - PopActiveSnapshot
    - walrcv_identify_system
    - GetTransactionSnapshot
    - PushActiveSnapshot
    - StartTransactionCommand
    - errmsg
    - replorigin_create
    - walrcv_startstreaming
    - AllTablesyncsReady
    - start_apply
    - OidIsValid
    - ReplicationOriginNameForLogicalRep
    - CommitTransactionCommand
    - replorigin_by_name
    - errmsg_internal
    - ereport
    - walrcv_connect
    - UpdateTwoPhaseState
    - errcode
    linkageType: ''
    returnType: void
    signature: void run_apply_worker()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/replication/logical/worker.c:4664,1
    - Dst: BackgroundWorkerInitializeConnectionByOid
      Src: /src/postgres/src/backend/replication/logical/worker.c:4668,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/replication/logical/worker.c:4676,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/logical/worker.c:4679,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:4682,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:4683,1
    - Dst: GetSubscription
      Src: /src/postgres/src/backend/replication/logical/worker.c:4685,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:4688,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:4689,1
    - Dst: am_leader_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:4693,1
    - Dst: ApplyLauncherForgetWorkerStartTime
      Src: /src/postgres/src/backend/replication/logical/worker.c:4694,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/logical/worker.c:4696,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:4700,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:4704,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:4705,1
    - Dst: apply_worker_exit
      Src: /src/postgres/src/backend/replication/logical/worker.c:4708,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/replication/logical/worker.c:4712,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/replication/logical/worker.c:4719,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/replication/logical/worker.c:4723,1
    - Dst: am_tablesync_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:4727,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:4728,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:4729,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/replication/logical/worker.c:4731,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:4733,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:4734,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:4737,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4738
      start: 4658
    functionDepth: 4
    functionLinenumber: 4658
    functionLinenumberEnd: 4738
    functionName: InitializeLogRepWorker
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - errmsg
    - CacheRegisterSyscacheCallback
    - MemoryContextSwitchTo
    - am_leader_apply_worker
    - SetConfigOption
    - get_rel_name
    - GetSubscription
    - CommitTransactionCommand
    - ApplyLauncherForgetWorkerStartTime
    - ereport
    - am_tablesync_worker
    - BackgroundWorkerInitializeConnectionByOid
    - AllocSetContextCreate
    - StartTransactionCommand
    - apply_worker_exit
    - proc_exit
    linkageType: ''
    returnType: void
    signature: void InitializeLogRepWorker(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4749
      start: 4743
    functionDepth: 0
    functionLinenumber: 4743
    functionLinenumberEnd: 4749
    functionName: replorigin_reset
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void replorigin_reset(int code, Datum arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: logicalrep_worker_attach
      Src: /src/postgres/src/backend/replication/logical/worker.c:4756,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:4758,1
    - Dst: am_tablesync_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:4758,1
    - Dst: am_leader_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:4758,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/worker.c:4761,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/worker.c:4762,1
    - Dst: BackgroundWorkerUnblockSignals
      Src: /src/postgres/src/backend/replication/logical/worker.c:4763,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/worker.c:4772,1
    - Dst: load_file
      Src: /src/postgres/src/backend/replication/logical/worker.c:4775,1
    - Dst: InitializeLogRepWorker
      Src: /src/postgres/src/backend/replication/logical/worker.c:4777,1
    - Dst: before_shmem_exit
      Src: /src/postgres/src/backend/replication/logical/worker.c:4790,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:4793,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/replication/logical/worker.c:4800,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - worker_slot
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4803
      start: 4752
    functionDepth: 5
    functionLinenumber: 4752
    functionLinenumberEnd: 4803
    functionName: SetupApplyOrSyncWorker
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - InitializeLogRepWorker
    - Assert
    - CacheRegisterSyscacheCallback
    - am_leader_apply_worker
    - before_shmem_exit
    - am_tablesync_worker
    - pqsignal
    - elog
    - GetCurrentTimestamp
    - BackgroundWorkerUnblockSignals
    - logicalrep_worker_attach
    - load_file
    linkageType: ''
    returnType: void
    signature: void SetupApplyOrSyncWorker(int worker_slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/replication/logical/worker.c:4809,1
    - Dst: SetupApplyOrSyncWorker
      Src: /src/postgres/src/backend/replication/logical/worker.c:4813,1
    - Dst: run_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:4817,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/logical/worker.c:4819,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - main_arg
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4820
      start: 4806
    functionDepth: 15
    functionLinenumber: 4806
    functionLinenumberEnd: 4820
    functionName: ApplyWorkerMain
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - proc_exit
    - DatumGetInt32
    - run_apply_worker
    - SetupApplyOrSyncWorker
    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:4833,1
    - Dst: EmitErrorReport
      Src: /src/postgres/src/backend/replication/logical/worker.c:4835,1
    - Dst: AbortOutOfAnyTransaction
      Src: /src/postgres/src/backend/replication/logical/worker.c:4836,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/backend/replication/logical/worker.c:4837,1
    - Dst: RESUME_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/worker.c:4839,1
    - Dst: pgstat_report_subscription_error
      Src: /src/postgres/src/backend/replication/logical/worker.c:4842,1
    - Dst: am_tablesync_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:4843,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:4846,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:4852,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:4852,1
    - Dst: DisableSubscription
      Src: /src/postgres/src/backend/replication/logical/worker.c:4854,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:4855,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:4856,1
    - Dst: am_leader_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:4859,1
    - Dst: ApplyLauncherForgetWorkerStartTime
      Src: /src/postgres/src/backend/replication/logical/worker.c:4860,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:4863,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:4864,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/logical/worker.c:4867,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4868
      start: 4826
    functionDepth: 8
    functionLinenumber: 4826
    functionLinenumberEnd: 4868
    functionName: DisableSubscriptionAndExit
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 2
    functionsReached:
    - errmsg
    - am_leader_apply_worker
    - CommitTransactionCommand
    - pgstat_report_subscription_error
    - FlushErrorState
    - AbortOutOfAnyTransaction
    - GetTransactionSnapshot
    - am_tablesync_worker
    - ApplyLauncherForgetWorkerStartTime
    - EmitErrorReport
    - ereport
    - PushActiveSnapshot
    - proc_exit
    - HOLD_INTERRUPTS
    - StartTransactionCommand
    - PopActiveSnapshot
    - DisableSubscription
    - RESUME_INTERRUPTS
    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: 4877
      start: 4873
    functionDepth: 0
    functionLinenumber: 4873
    functionLinenumberEnd: 4877
    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:4885,1
    - Dst: am_parallel_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:4885,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4886
      start: 4882
    functionDepth: 2
    functionLinenumber: 4882
    functionLinenumberEnd: 4886
    functionName: IsLogicalParallelApplyWorker
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 1
    functionsReached:
    - am_parallel_apply_worker
    - IsLogicalWorker
    linkageType: ''
    returnType: bool
    signature: bool IsLogicalParallelApplyWorker(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:4895,1
    - Dst: is_skipping_changes
      Src: /src/postgres/src/backend/replication/logical/worker.c:4895,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:4896,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/worker.c:4897,1
    - Dst: likely
      Src: /src/postgres/src/backend/replication/logical/worker.c:4904,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/logical/worker.c:4904,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:4911,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:4912,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:4913,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - finish_lsn
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4914
      start: 4892
    functionDepth: 1
    functionLinenumber: 4892
    functionLinenumberEnd: 4914
    functionName: maybe_start_skipping_changes
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 3
    functionsReached:
    - errmsg
    - LSN_FORMAT_ARGS
    - Assert
    - likely
    - ereport
    - XLogRecPtrIsInvalid
    - is_skipping_changes
    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:4922,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:4925,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:4926,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:4927,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4931
      start: 4919
    functionDepth: 1
    functionLinenumber: 4919
    functionLinenumberEnd: 4931
    functionName: stop_skipping_changes
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 3
    functionsReached:
    - errmsg
    - LSN_FORMAT_ARGS
    - is_skipping_changes
    - ereport
    linkageType: ''
    returnType: void
    signature: void stop_skipping_changes(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: likely
      Src: /src/postgres/src/backend/replication/logical/worker.c:4950,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/logical/worker.c:4950,1
    - Dst: am_parallel_apply_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:4950,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/worker.c:4953,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:4955,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:4963,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:4963,1
    - Dst: LockSharedObject
      Src: /src/postgres/src/backend/replication/logical/worker.c:4969,1
    - Dst: table_open
      Src: /src/postgres/src/backend/replication/logical/worker.c:4972,1
    - Dst: SearchSysCacheCopy1
      Src: /src/postgres/src/backend/replication/logical/worker.c:4975,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/logical/worker.c:4976,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:4978,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/worker.c:4979,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/replication/logical/worker.c:4981,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/worker.c:5000,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/worker.c:5001,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/worker.c:5002,1
    - Dst: LSNGetDatum
      Src: /src/postgres/src/backend/replication/logical/worker.c:5005,1
    - Dst: heap_modify_tuple
      Src: /src/postgres/src/backend/replication/logical/worker.c:5008,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/replication/logical/worker.c:5008,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/replication/logical/worker.c:5010,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/worker.c:5013,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/worker.c:5014,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/worker.c:5015,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:5016,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:5017,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/replication/logical/worker.c:5020,1
    - Dst: table_close
      Src: /src/postgres/src/backend/replication/logical/worker.c:5021,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/replication/logical/worker.c:5023,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/worker.c:5026,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 1
    argNames:
    - finish_lsn
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5027
      start: 4941
    functionDepth: 7
    functionLinenumber: 4941
    functionLinenumberEnd: 5027
    functionName: clear_subscription_skip_lsn
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 5
    functionsReached:
    - LSN_FORMAT_ARGS
    - HeapTupleIsValid
    - SearchSysCacheCopy1
    - IsTransactionState
    - errdetail
    - PopActiveSnapshot
    - table_open
    - heap_modify_tuple
    - heap_freetuple
    - am_parallel_apply_worker
    - GetTransactionSnapshot
    - GETSTRUCT
    - PushActiveSnapshot
    - StartTransactionCommand
    - errmsg
    - LockSharedObject
    - likely
    - elog
    - LSNGetDatum
    - XLogRecPtrIsInvalid
    - table_close
    - ObjectIdGetDatum
    - CommitTransactionCommand
    - memset
    - CatalogTupleUpdate
    - RelationGetDescr
    - ereport
    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:5038,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/worker.c:5042,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/replication/logical/worker.c:5043,1
    - Dst: logicalrep_message_type
      Src: /src/postgres/src/backend/replication/logical/worker.c:5045,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/logical/worker.c:5046,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/replication/logical/worker.c:5047,1
    - Dst: logicalrep_message_type
      Src: /src/postgres/src/backend/replication/logical/worker.c:5049,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/replication/logical/worker.c:5052,1
    - Dst: logicalrep_message_type
      Src: /src/postgres/src/backend/replication/logical/worker.c:5054,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:5056,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/logical/worker.c:5062,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/replication/logical/worker.c:5063,1
    - Dst: logicalrep_message_type
      Src: /src/postgres/src/backend/replication/logical/worker.c:5065,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/replication/logical/worker.c:5070,1
    - Dst: logicalrep_message_type
      Src: /src/postgres/src/backend/replication/logical/worker.c:5072,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:5076,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/logical/worker.c:5080,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/replication/logical/worker.c:5081,1
    - Dst: logicalrep_message_type
      Src: /src/postgres/src/backend/replication/logical/worker.c:5083,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/replication/logical/worker.c:5089,1
    - Dst: logicalrep_message_type
      Src: /src/postgres/src/backend/replication/logical/worker.c:5091,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/worker.c:5096,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5099
      start: 5030
    functionDepth: 1
    functionLinenumber: 5030
    functionLinenumberEnd: 5099
    functionName: apply_error_callback
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - Assert
    - TransactionIdIsValid
    - errcontext
    - logicalrep_message_type
    - XLogRecPtrIsInvalid
    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: 5107
      start: 5102
    functionDepth: 0
    functionLinenumber: 5102
    functionLinenumberEnd: 5107
    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:5116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5117
      start: 5110
    functionDepth: 1
    functionLinenumber: 5110
    functionLinenumberEnd: 5117
    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:5131,1
    - Dst: list_append_unique_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:5133,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/worker.c:5134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - subid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5135
      start: 5126
    functionDepth: 7
    functionLinenumber: 5126
    functionLinenumberEnd: 5135
    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:5147,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/replication/logical/worker.c:5150,1
    - Dst: logicalrep_workers_find
      Src: /src/postgres/src/backend/replication/logical/worker.c:5154,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/worker.c:5157,1
    - Dst: logicalrep_worker_wakeup_ptr
      Src: /src/postgres/src/backend/replication/logical/worker.c:5159,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/worker.c:5162,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - isCommit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5167
      start: 5140
    functionDepth: 7
    functionLinenumber: 5140
    functionLinenumberEnd: 5167
    functionName: AtEOXact_LogicalRepWorkers
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 3
    functionsReached:
    - logicalrep_workers_find
    - LWLockRelease
    - logicalrep_worker_wakeup_ptr
    - lfirst_oid
    - LWLockAcquire
    - lfirst
    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:5150,1
    - Dst: logicalrep_workers_find
      Src: /src/postgres/src/backend/replication/logical/worker.c:5154,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/replication/logical/worker.c:5157,1
    - Dst: logicalrep_worker_wakeup_ptr
      Src: /src/postgres/src/backend/replication/logical/worker.c:5159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5161
      start: 5148
    functionDepth: 7
    functionLinenumber: 5148
    functionLinenumberEnd: 5161
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 371
    functionsReached:
    - logicalrep_worker_wakeup_ptr
    - lfirst_oid
    - lfirst
    - logicalrep_workers_find
    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:5157,1
    - Dst: logicalrep_worker_wakeup_ptr
      Src: /src/postgres/src/backend/replication/logical/worker.c:5159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5160
      start: 5155
    functionDepth: 2
    functionLinenumber: 5155
    functionLinenumberEnd: 5160
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 371
    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:5175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - originname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5177
      start: 5172
    functionDepth: 1
    functionLinenumber: 5172
    functionLinenumberEnd: 5177
    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:5192,1
    - Dst: pa_find_worker
      Src: /src/postgres/src/backend/replication/logical/worker.c:5203,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - xid
    - winfo
    argTypes:
    - TransactionId
    - ParallelApplyWorkerInfo**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5228
      start: 5187
    functionDepth: 2
    functionLinenumber: 5187
    functionLinenumberEnd: 5228
    functionName: get_transaction_apply_action
    functionSourceFile: /src/postgres/src/backend/replication/logical/worker.c
    functionUses: 6
    functionsReached:
    - pa_find_worker
    - am_parallel_apply_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_sendint32
    - pq_sendint64
    - pq_sendbyte
    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: 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:
    - pq_getmsgint
    - elog
    - 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:
    - pq_getmsgbyte
    - elog
    - 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_sendint32
    - pq_sendstring
    - pq_sendint64
    - pq_sendbyte
    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: 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: 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:
    - pq_getmsgstring
    - elog
    - pq_getmsgint64
    - strlcpy
    - 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:
    - Assert
    - TransactionIdIsValid
    - rbtxn_is_prepared
    - pq_sendint32
    - pq_sendstring
    - pq_sendint64
    - pq_sendbyte
    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: 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: 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:
    - pq_getmsgbyte
    - pq_getmsgstring
    - elog
    - pq_getmsgint64
    - strlcpy
    - pq_getmsgint
    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:
    - Assert
    - pq_sendint32
    - pq_sendstring
    - 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: 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: 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:
    - pq_getmsgbyte
    - pq_getmsgstring
    - elog
    - pq_getmsgint64
    - strlcpy
    - pq_getmsgint
    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:
    - Assert
    - pq_sendint32
    - pq_sendstring
    - 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: 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: 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:
    - pq_getmsgbyte
    - pq_getmsgstring
    - elog
    - pq_getmsgint64
    - strlcpy
    - pq_getmsgint
    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_sendstring
    - pq_sendint64
    - pq_sendbyte
    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
    - pq_getmsgint64
    - pstrdup
    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:
    - RelationGetRelid
    - TransactionIdIsValid
    - logicalrep_write_tuple
    - pq_sendint32
    - pq_sendbyte
    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:
    - pq_getmsgbyte
    - elog
    - pq_getmsgint
    - logicalrep_read_tuple
    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:
    - Assert
    - RelationGetRelid
    - TransactionIdIsValid
    - logicalrep_write_tuple
    - pq_sendint32
    - pq_sendbyte
    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:
    - pq_getmsgbyte
    - elog
    - pq_getmsgint
    - logicalrep_read_tuple
    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:
    - Assert
    - RelationGetRelid
    - TransactionIdIsValid
    - logicalrep_write_tuple
    - pq_sendint32
    - pq_sendbyte
    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:
    - pq_getmsgbyte
    - elog
    - pq_getmsgint
    - logicalrep_read_tuple
    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:
    - TransactionIdIsValid
    - pq_sendint32
    - pq_sendbyte
    - pq_sendint8
    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_sendbytes
    - TransactionIdIsValid
    - pq_sendint8
    - pq_sendint32
    - pq_sendstring
    - pq_sendint64
    - pq_sendbyte
    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:
    - RelationGetRelid
    - TransactionIdIsValid
    - logicalrep_write_attrs
    - RelationGetNamespace
    - logicalrep_write_namespace
    - pq_sendint32
    - pq_sendstring
    - RelationGetRelationName
    - pq_sendbyte
    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
      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:712,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - in
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 697
    functionDepth: 2
    functionLinenumber: 697
    functionLinenumberEnd: 715
    functionName: logicalrep_read_rel
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - pq_getmsgbyte
    - pq_getmsgstring
    - logicalrep_read_attrs
    - logicalrep_read_namespace
    - pstrdup
    - palloc
    - pq_getmsgint
    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:725,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:729,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:732,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:733,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/replication/logical/proto.c:735,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/logical/proto.c:735,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:736,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:737,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/replication/logical/proto.c:738,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:741,1
    - Dst: logicalrep_write_namespace
      Src: /src/postgres/src/backend/replication/logical/proto.c:744,1
    - Dst: pq_sendstring
      Src: /src/postgres/src/backend/replication/logical/proto.c:745,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/proto.c:745,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/replication/logical/proto.c:747,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - out
    - xid
    - typoid
    argTypes:
    - StringInfo
    - TransactionId
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 722
    functionDepth: 3
    functionLinenumber: 722
    functionLinenumberEnd: 748
    functionName: logicalrep_write_typ
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - NameStr
    - ReleaseSysCache
    - TransactionIdIsValid
    - HeapTupleIsValid
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - logicalrep_write_namespace
    - pq_sendint32
    - pq_sendstring
    - ObjectIdGetDatum
    - pq_sendbyte
    - getBaseType
    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:756,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/proto.c:759,1
    - Dst: logicalrep_read_namespace
      Src: /src/postgres/src/backend/replication/logical/proto.c:759,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/proto.c:760,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/replication/logical/proto.c:760,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - in
    - ltyp
    argTypes:
    - StringInfo
    - LogicalRepTyp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 753
    functionDepth: 2
    functionLinenumber: 753
    functionLinenumberEnd: 761
    functionName: logicalrep_read_typ
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - pq_getmsgstring
    - pq_getmsgint
    - logicalrep_read_namespace
    - pstrdup
    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:777,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/replication/logical/proto.c:781,1
    - Dst: logicalrep_should_publish_column
      Src: /src/postgres/src/backend/replication/logical/proto.c:783,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/replication/logical/proto.c:789,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/replication/logical/proto.c:791,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/replication/logical/proto.c:800,1
    - Dst: logicalrep_should_publish_column
      Src: /src/postgres/src/backend/replication/logical/proto.c:802,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:808,1
    - Dst: VARATT_IS_EXTERNAL_ONDISK
      Src: /src/postgres/src/backend/replication/logical/proto.c:812,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:819,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/replication/logical/proto.c:823,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/replication/logical/proto.c:823,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:824,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:825,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/replication/logical/proto.c:826,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:831,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:836,1
    - Dst: OidSendFunctionCall
      Src: /src/postgres/src/backend/replication/logical/proto.c:837,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/replication/logical/proto.c:838,1
    - Dst: pq_sendint
      Src: /src/postgres/src/backend/replication/logical/proto.c:839,1
    - Dst: pq_sendbytes
      Src: /src/postgres/src/backend/replication/logical/proto.c:840,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/replication/logical/proto.c:840,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/proto.c:841,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:847,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/replication/logical/proto.c:848,1
    - Dst: pq_sendcountedtext
      Src: /src/postgres/src/backend/replication/logical/proto.c:849,1
    - Dst: strlen
      Src: /src/postgres/src/backend/replication/logical/proto.c:849,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/proto.c:850,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/replication/logical/proto.c:853,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: 855
      start: 766
    functionDepth: 3
    functionLinenumber: 766
    functionLinenumberEnd: 855
    functionName: logicalrep_write_tuple
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 3
    functionsReached:
    - HeapTupleIsValid
    - pq_sendcountedtext
    - OidOutputFunctionCall
    - logicalrep_should_publish_column
    - pq_sendint16
    - strlen
    - pfree
    - pq_sendbytes
    - ReleaseSysCache
    - slot_getallattrs
    - pq_sendint
    - OidSendFunctionCall
    - GETSTRUCT
    - VARATT_IS_EXTERNAL_ONDISK
    - TupleDescAttr
    - VARSIZE
    - VARDATA
    - elog
    - OidIsValid
    - ObjectIdGetDatum
    - RelationGetDescr
    - SearchSysCache1
    - pq_sendbyte
    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:867,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/replication/logical/proto.c:870,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/proto.c:871,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:882,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/proto.c:895,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/proto.c:898,1
    - Dst: pq_copymsgbytes
      Src: /src/postgres/src/backend/replication/logical/proto.c:899,1
    - Dst: initStringInfoFromString
      Src: /src/postgres/src/backend/replication/logical/proto.c:909,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:912,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - in
    - tuple
    argTypes:
    - StringInfo
    - LogicalRepTupleData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 860
    functionDepth: 2
    functionLinenumber: 860
    functionLinenumberEnd: 915
    functionName: logicalrep_read_tuple
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 3
    functionsReached:
    - pq_getmsgbyte
    - initStringInfoFromString
    - palloc0
    - elog
    - pq_copymsgbytes
    - palloc
    - pq_getmsgint
    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:930,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/replication/logical/proto.c:935,1
    - Dst: logicalrep_should_publish_column
      Src: /src/postgres/src/backend/replication/logical/proto.c:937,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/replication/logical/proto.c:943,1
    - Dst: RelationGetIdentityKeyBitmap
      Src: /src/postgres/src/backend/replication/logical/proto.c:948,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/replication/logical/proto.c:953,1
    - Dst: logicalrep_should_publish_column
      Src: /src/postgres/src/backend/replication/logical/proto.c:956,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/replication/logical/proto.c:962,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:966,1
    - Dst: pq_sendstring
      Src: /src/postgres/src/backend/replication/logical/proto.c:969,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/proto.c:969,1
    - Dst: pq_sendint32
      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: bms_free
      Src: /src/postgres/src/backend/replication/logical/proto.c:978,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: 979
      start: 920
    functionDepth: 3
    functionLinenumber: 920
    functionLinenumberEnd: 979
    functionName: logicalrep_write_attrs
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - RelationGetIdentityKeyBitmap
    - NameStr
    - RelationGetDescr
    - TupleDescAttr
    - bms_free
    - logicalrep_should_publish_column
    - pq_sendint16
    - bms_is_member
    - pq_sendint32
    - pq_sendstring
    - pq_sendbyte
    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:993,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/proto.c:994,1
    - Dst: palloc
      Src: /src/postgres/src/backend/replication/logical/proto.c:995,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:1003,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/replication/logical/proto.c:1005,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/proto.c:1008,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/replication/logical/proto.c:1008,1
    - Dst: pq_getmsgint
      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
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - in
    - rel
    argTypes:
    - StringInfo
    - LogicalRepRelation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1021
      start: 984
    functionDepth: 3
    functionLinenumber: 984
    functionLinenumberEnd: 1021
    functionName: logicalrep_read_attrs
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - pq_getmsgbyte
    - pq_getmsgstring
    - pstrdup
    - palloc
    - pq_getmsgint
    - bms_add_member
    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:1030,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/replication/logical/proto.c:1033,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:1036,1
    - Dst: pq_sendstring
      Src: /src/postgres/src/backend/replication/logical/proto.c:1039,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - out
    - nspid
    argTypes:
    - StringInfo
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 1026
    functionDepth: 3
    functionLinenumber: 1026
    functionLinenumberEnd: 1041
    functionName: logicalrep_write_namespace
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 2
    functionsReached:
    - pq_sendstring
    - elog
    - get_namespace_name
    - pq_sendbyte
    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:1049,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - in
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1055
      start: 1046
    functionDepth: 2
    functionLinenumber: 1046
    functionLinenumberEnd: 1055
    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:1064,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/proto.c:1066,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:1066,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:1069,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:1072,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - out
    - xid
    - first_segment
    argTypes:
    - StringInfo
    - TransactionId
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1073
      start: 1060
    functionDepth: 3
    functionLinenumber: 1060
    functionLinenumberEnd: 1073
    functionName: logicalrep_write_stream_start
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - TransactionIdIsValid
    - pq_sendint32
    - Assert
    - pq_sendbyte
    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:1083,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/proto.c:1085,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:1086,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - in
    - first_segment
    argTypes:
    - StringInfo
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 1078
    functionDepth: 2
    functionLinenumber: 1078
    functionLinenumberEnd: 1089
    functionName: logicalrep_read_stream_start
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - pq_getmsgbyte
    - Assert
    - pq_getmsgint
    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:1097,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - out
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1098
      start: 1094
    functionDepth: 3
    functionLinenumber: 1094
    functionLinenumberEnd: 1098
    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:1109,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/proto.c:1111,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:1111,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:1114,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:1117,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:1120,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:1121,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:1122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - out
    - txn
    - commit_lsn
    argTypes:
    - StringInfo
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1123
      start: 1103
    functionDepth: 3
    functionLinenumber: 1103
    functionLinenumberEnd: 1123
    functionName: logicalrep_write_stream_commit
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - Assert
    - TransactionIdIsValid
    - pq_sendint32
    - pq_sendint64
    - pq_sendbyte
    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:1134,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/replication/logical/proto.c:1137,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/proto.c:1140,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:1143,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:1144,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:1145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - in
    - commit_data
    argTypes:
    - StringInfo
    - LogicalRepCommitData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1148
      start: 1128
    functionDepth: 2
    functionLinenumber: 1128
    functionLinenumberEnd: 1148
    functionName: logicalrep_read_stream_commit
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - pq_getmsgbyte
    - elog
    - pq_getmsgint
    - 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:1162,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/proto.c:1164,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:1164,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/proto.c:1164,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:1167,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/replication/logical/proto.c:1168,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:1172,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:1173,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: 1175
      start: 1157
    functionDepth: 3
    functionLinenumber: 1157
    functionLinenumberEnd: 1175
    functionName: logicalrep_write_stream_abort
    functionSourceFile: /src/postgres/src/backend/replication/logical/proto.c
    functionUses: 1
    functionsReached:
    - Assert
    - TransactionIdIsValid
    - pq_sendint32
    - pq_sendint64
    - pq_sendbyte
    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:1188,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/proto.c:1190,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/replication/logical/proto.c:1191,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:1195,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/replication/logical/proto.c:1196,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: 1203
      start: 1183
    functionDepth: 2
    functionLinenumber: 1183
    functionLinenumberEnd: 1203
    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:1260,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 43
    argCount: 1
    argNames:
    - action
    argTypes:
    - LogicalRepMsgType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1263
      start: 1208
    functionDepth: 0
    functionLinenumber: 1208
    functionLinenumberEnd: 1263
    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:1287,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: 1301
      start: 1278
    functionDepth: 3
    functionLinenumber: 1278
    functionLinenumberEnd: 1301
    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: 5
    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: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:126,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:127,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:128,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/logical/logical.c:130,1
    - Dst: GetActiveWalLevelOnStandby
      Src: /src/postgres/src/backend/replication/logical/logical.c:140,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:141,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:142,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:143,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 110
    functionDepth: 2
    functionLinenumber: 110
    functionLinenumberEnd: 145
    functionName: CheckLogicalDecodingRequirements
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 5
    functionsReached:
    - errmsg
    - errcode
    - ereport
    - GetActiveWalLevelOnStandby
    - CheckSlotRequirements
    - RecoveryInProgress
    linkageType: ''
    returnType: void
    signature: void CheckLogicalDecodingRequirements(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/replication/logical/logical.c:171,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/logical.c:174,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/replication/logical/logical.c:175,1
    - Dst: LoadOutputPlugin
      Src: /src/postgres/src/backend/replication/logical/logical.c:184,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/logical.c:184,1
    - Dst: IsTransactionOrTransactionBlock
      Src: /src/postgres/src/backend/replication/logical/logical.c:198,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logical.c:200,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:203,1
    - Dst: XLogReaderAllocate
      Src: /src/postgres/src/backend/replication/logical/logical.c:208,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:210,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:211,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:212,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/logical.c:213,1
    - Dst: ReorderBufferAllocate
      Src: /src/postgres/src/backend/replication/logical/logical.c:215,1
    - Dst: AllocateSnapshotBuilder
      Src: /src/postgres/src/backend/replication/logical/logical.c:217,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/replication/logical/logical.c:294,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/logical.c:303,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: 306
      start: 151
    functionDepth: 4
    functionLinenumber: 151
    functionLinenumberEnd: 306
    functionName: StartupDecodingContext
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - errmsg
    - LoadOutputPlugin
    - NameStr
    - MemoryContextSwitchTo
    - IsTransactionOrTransactionBlock
    - XLogReaderAllocate
    - ReorderBufferAllocate
    - makeStringInfo
    - palloc0
    - ereport
    - AllocateSnapshotBuilder
    - AllocSetContextCreate
    - errdetail
    - LWLockRelease
    - LWLockAcquire
    - errcode
    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:351,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:358,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:361,1
    - Dst: SlotIsPhysical
      Src: /src/postgres/src/backend/replication/logical/logical.c:364,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:365,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:366,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:367,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:370,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:371,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:372,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/logical.c:373,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/logical.c:375,1
    - Dst: GetTopTransactionIdIfAny
      Src: /src/postgres/src/backend/replication/logical/logical.c:376,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:377,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:378,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:379,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/replication/logical/logical.c:386,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logical.c:387,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:389,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/logical/logical.c:391,1
    - Dst: ReplicationSlotReserveWal
      Src: /src/postgres/src/backend/replication/logical/logical.c:392,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logical.c:395,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:397,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logical.c:425,1
    - Dst: GetOldestSafeDecodingTransactionId
      Src: /src/postgres/src/backend/replication/logical/logical.c:427,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logical.c:429,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:434,1
    - Dst: ReplicationSlotsComputeRequiredXmin
      Src: /src/postgres/src/backend/replication/logical/logical.c:436,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:438,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/logical/logical.c:440,1
    - Dst: ReplicationSlotSave
      Src: /src/postgres/src/backend/replication/logical/logical.c:441,1
    - Dst: StartupDecodingContext
      Src: /src/postgres/src/backend/replication/logical/logical.c:443,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/logical.c:449,1
    - Dst: startup_cb_wrapper
      Src: /src/postgres/src/backend/replication/logical/logical.c:451,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/logical.c:452,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 43
    argCount: 8
    argNames:
    - plugin
    - output_plugin_options
    - need_full_snapshot
    - restart_lsn
    - xl_routine
    - prepare_write
    - do_write
    - update_progress
    argTypes:
    - char*
    - List*
    - bool
    - XLogRecPtr
    - XLogReaderRoutine*
    - LogicalOutputPluginWriterPrepareWrite
    - LogicalOutputPluginWriterWrite
    - LogicalOutputPluginWriterUpdateProgress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 331
    functionDepth: 6
    functionLinenumber: 331
    functionLinenumberEnd: 465
    functionName: CreateInitDecodingContext
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 2
    functionsReached:
    - GetTopTransactionIdIfAny
    - MemoryContextSwitchTo
    - SlotIsPhysical
    - SpinLockRelease
    - IsTransactionState
    - LWLockRelease
    - NameStr
    - ReplicationSlotReserveWal
    - CheckLogicalDecodingRequirements
    - StartupDecodingContext
    - ReplicationSlotSave
    - errmsg
    - startup_cb_wrapper
    - GetOldestSafeDecodingTransactionId
    - ReplicationSlotsComputeRequiredXmin
    - elog
    - XLogRecPtrIsInvalid
    - SpinLockAcquire
    - namestrcpy
    - ReplicationSlotMarkDirty
    - ereport
    - LWLockAcquire
    - errcode
    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
      \ 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:515,1
    - Dst: SlotIsPhysical
      Src: /src/postgres/src/backend/replication/logical/logical.c:518,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:519,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:520,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:521,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:529,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:530,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:531,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/logical.c:532,1
    - Dst: RecoveryInProgress
      Src: /src/postgres/src/backend/replication/logical/logical.c:539,1
    - Dst: IsSyncingReplicationSlots
      Src: /src/postgres/src/backend/replication/logical/logical.c:539,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:540,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:541,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:542,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/logical.c:543,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/logical.c:544,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/logical/logical.c:545,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:548,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:549,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:570,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:571,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:572,1
    - Dst: StartupDecodingContext
      Src: /src/postgres/src/backend/replication/logical/logical.c:577,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/logical.c:583,1
    - Dst: startup_cb_wrapper
      Src: /src/postgres/src/backend/replication/logical/logical.c:585,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/replication/logical/logical.c:586,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logical.c:599,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:602,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/logical/logical.c:603,1
    - Dst: ReplicationSlotSave
      Src: /src/postgres/src/backend/replication/logical/logical.c:604,1
    - Dst: SnapBuildSetTwoPhaseAt
      Src: /src/postgres/src/backend/replication/logical/logical.c:605,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:610,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:611,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/logical.c:612,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/logical.c:613,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:614,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:615,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: 618
      start: 497
    functionDepth: 5
    functionLinenumber: 497
    functionLinenumberEnd: 618
    functionName: CreateDecodingContext
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 2
    functionsReached:
    - LSN_FORMAT_ARGS
    - MemoryContextSwitchTo
    - SlotIsPhysical
    - SpinLockRelease
    - errhint
    - errdetail
    - RecoveryInProgress
    - NameStr
    - ReplicationSlotSave
    - errmsg
    - startup_cb_wrapper
    - elog
    - SpinLockAcquire
    - SnapBuildSetTwoPhaseAt
    - Assert
    - ReplicationSlotMarkDirty
    - ereport
    - StartupDecodingContext
    - errcode
    - IsSyncingReplicationSlots
    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:626,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - LogicalDecodingContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 623
    functionDepth: 1
    functionLinenumber: 623
    functionLinenumberEnd: 627
    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:638,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:640,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:641,1
    - Dst: XLogReadRecord
      Src: /src/postgres/src/backend/replication/logical/logical.c:650,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:652,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:654,1
    - Dst: LogicalDecodingProcessRecord
      Src: /src/postgres/src/backend/replication/logical/logical.c:656,1
    - Dst: DecodingContextReady
      Src: /src/postgres/src/backend/replication/logical/logical.c:659,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/logical.c:662,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logical.c:665,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:669,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - LogicalDecodingContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 632
    functionDepth: 4
    functionLinenumber: 632
    functionLinenumberEnd: 670
    functionName: DecodingContextFindStartpoint
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 2
    functionsReached:
    - LSN_FORMAT_ARGS
    - XLogReadRecord
    - CHECK_FOR_INTERRUPTS
    - XLogBeginRead
    - SpinLockRelease
    - LogicalDecodingProcessRecord
    - DecodingContextReady
    - elog
    - SpinLockAcquire
    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:680,1
    - Dst: ReorderBufferFree
      Src: /src/postgres/src/backend/replication/logical/logical.c:682,1
    - Dst: FreeSnapshotBuilder
      Src: /src/postgres/src/backend/replication/logical/logical.c:683,1
    - Dst: XLogReaderFree
      Src: /src/postgres/src/backend/replication/logical/logical.c:684,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/replication/logical/logical.c:685,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - LogicalDecodingContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 676
    functionDepth: 2
    functionLinenumber: 676
    functionLinenumberEnd: 686
    functionName: FreeDecodingContext
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 4
    functionsReached:
    - MemoryContextDelete
    - shutdown_cb_wrapper
    - ReorderBufferFree
    - 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:695,1
    - Dst: struct LogicalDecodingContext*::prepare_write
      Src: /src/postgres/src/backend/replication/logical/logical.c:697,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - last_write
    argTypes:
    - struct LogicalDecodingContext*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 691
    functionDepth: 1
    functionLinenumber: 691
    functionLinenumberEnd: 699
    functionName: OutputPluginPrepareWrite
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 16
    functionsReached:
    - struct LogicalDecodingContext*::prepare_write
    - elog
    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:708,1
    - Dst: struct LogicalDecodingContext*::write
      Src: /src/postgres/src/backend/replication/logical/logical.c:710,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - last_write
    argTypes:
    - struct LogicalDecodingContext*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 704
    functionDepth: 1
    functionLinenumber: 704
    functionLinenumberEnd: 712
    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:724,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - skipped_xact
    argTypes:
    - struct LogicalDecodingContext*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 717
    functionDepth: 0
    functionLinenumber: 717
    functionLinenumberEnd: 726
    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:738,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:741,1
    - Dst: plugin_init
      Src: /src/postgres/src/backend/replication/logical/logical.c:744,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:747,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:749,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:751,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - callbacks
    - plugin
    argTypes:
    - OutputPluginCallbacks*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 732
    functionDepth: 1
    functionLinenumber: 732
    functionLinenumberEnd: 752
    functionName: LoadOutputPlugin
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 1
    functionsReached:
    - elog
    - plugin_init
    - load_external_function
    linkageType: ''
    returnType: void
    signature: void LoadOutputPlugin(OutputPluginCallbacks *callbacks, const char
      *plugin)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: errcontext
      Src: /src/postgres/src/backend/replication/logical/logical.c:761,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/logical.c:762,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/logical.c:763,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:765,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/replication/logical/logical.c:767,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/logical.c:768,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/logical.c:769,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 754
    functionDepth: 1
    functionLinenumber: 754
    functionLinenumberEnd: 771
    functionName: output_plugin_error_callback
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - errcontext
    - NameStr
    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:779,1
    - Dst: LogicalDecodingContext*::callbacks::startup_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:795,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - opt
    - is_init
    argTypes:
    - LogicalDecodingContext*
    - OutputPluginOptions*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 773
    functionDepth: 1
    functionLinenumber: 773
    functionLinenumberEnd: 799
    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:807,1
    - Dst: LogicalDecodingContext*::callbacks::shutdown_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:823,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - LogicalDecodingContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 827
      start: 801
    functionDepth: 1
    functionLinenumber: 801
    functionLinenumberEnd: 827
    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:841,1
    - Dst: LogicalDecodingContext*::callbacks::begin_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:859,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 2
    argNames:
    - cache
    - txn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 834
    functionDepth: 1
    functionLinenumber: 834
    functionLinenumberEnd: 863
    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:873,1
    - Dst: LogicalDecodingContext*::callbacks::commit_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:891,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 3
    argNames:
    - cache
    - txn
    - commit_lsn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 865
    functionDepth: 1
    functionLinenumber: 865
    functionLinenumberEnd: 895
    functionName: commit_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - LogicalDecodingContext*::callbacks::commit_cb
    - Assert
    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:911,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:914,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:936,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:937,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:938,1
    - Dst: LogicalDecodingContext*::callbacks::begin_prepare_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:942,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 2
    argNames:
    - cache
    - txn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 904
    functionDepth: 1
    functionLinenumber: 904
    functionLinenumberEnd: 946
    functionName: begin_prepare_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - ereport
    - LogicalDecodingContext*::callbacks::begin_prepare_cb
    - errcode
    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:956,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:959,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:981,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:982,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:983,1
    - Dst: LogicalDecodingContext*::callbacks::prepare_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:987,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - cache
    - txn
    - prepare_lsn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 948
    functionDepth: 1
    functionLinenumber: 948
    functionLinenumberEnd: 991
    functionName: prepare_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 1
    functionsReached:
    - errmsg
    - Assert
    - ereport
    - errcode
    - 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:1001,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1004,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:1026,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:1027,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:1028,1
    - Dst: LogicalDecodingContext*::callbacks::commit_prepared_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1032,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - cache
    - txn
    - commit_lsn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1036
      start: 993
    functionDepth: 1
    functionLinenumber: 993
    functionLinenumberEnd: 1036
    functionName: commit_prepared_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - ereport
    - errcode
    - LogicalDecodingContext*::callbacks::commit_prepared_cb
    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:1047,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1050,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:1072,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:1073,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:1074,1
    - Dst: LogicalDecodingContext*::callbacks::rollback_prepared_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1078,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: 1083
      start: 1038
    functionDepth: 1
    functionLinenumber: 1038
    functionLinenumberEnd: 1083
    functionName: rollback_prepared_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - ereport
    - LogicalDecodingContext*::callbacks::rollback_prepared_cb
    - errcode
    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:1093,1
    - Dst: LogicalDecodingContext*::callbacks::change_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 4
    argNames:
    - cache
    - txn
    - relation
    - change
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - Relation
    - ReorderBufferChange*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1122
      start: 1085
    functionDepth: 1
    functionLinenumber: 1085
    functionLinenumberEnd: 1122
    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:1132,1
    - Dst: LogicalDecodingContext*::callbacks::truncate_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1160,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: 1164
      start: 1124
    functionDepth: 1
    functionLinenumber: 1124
    functionLinenumberEnd: 1164
    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:1174,1
    - Dst: LogicalDecodingContext*::callbacks::filter_prepare_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 3
    argNames:
    - ctx
    - xid
    - gid
    argTypes:
    - LogicalDecodingContext*
    - TransactionId
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1196
      start: 1166
    functionDepth: 1
    functionLinenumber: 1166
    functionLinenumberEnd: 1196
    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:1205,1
    - Dst: LogicalDecodingContext*::callbacks::filter_by_origin_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 2
    argNames:
    - ctx
    - origin_id
    argTypes:
    - LogicalDecodingContext*
    - RepOriginId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1227
      start: 1198
    functionDepth: 1
    functionLinenumber: 1198
    functionLinenumberEnd: 1227
    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, RepOriginId
      origin_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1238,1
    - Dst: LogicalDecodingContext*::callbacks::message_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1259,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: 1264
      start: 1229
    functionDepth: 1
    functionLinenumber: 1229
    functionLinenumberEnd: 1264
    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:1274,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1277,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:1304,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:1305,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:1306,1
    - Dst: LogicalDecodingContext*::callbacks::stream_start_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1309,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - cache
    - txn
    - first_lsn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1313
      start: 1266
    functionDepth: 1
    functionLinenumber: 1266
    functionLinenumberEnd: 1313
    functionName: stream_start_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - ereport
    - LogicalDecodingContext*::callbacks::stream_start_cb
    - errcode
    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:1323,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1326,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:1353,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:1354,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:1355,1
    - Dst: LogicalDecodingContext*::callbacks::stream_stop_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1358,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - cache
    - txn
    - last_lsn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1362
      start: 1315
    functionDepth: 1
    functionLinenumber: 1315
    functionLinenumberEnd: 1362
    functionName: stream_stop_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - LogicalDecodingContext*::callbacks::stream_stop_cb
    - ereport
    - errcode
    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:1372,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1375,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:1394,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:1395,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:1396,1
    - Dst: LogicalDecodingContext*::callbacks::stream_abort_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1399,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - cache
    - txn
    - abort_lsn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1403
      start: 1364
    functionDepth: 1
    functionLinenumber: 1364
    functionLinenumberEnd: 1403
    functionName: stream_abort_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - LogicalDecodingContext*::callbacks::stream_abort_cb
    - ereport
    - errcode
    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:1413,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1419,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1420,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:1439,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:1440,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:1441,1
    - Dst: LogicalDecodingContext*::callbacks::stream_prepare_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1444,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 3
    argNames:
    - cache
    - txn
    - prepare_lsn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1448
      start: 1405
    functionDepth: 1
    functionLinenumber: 1405
    functionLinenumberEnd: 1448
    functionName: stream_prepare_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - LogicalDecodingContext*::callbacks::stream_prepare_cb
    - ereport
    - errcode
    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:1458,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1461,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:1480,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:1481,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:1482,1
    - Dst: LogicalDecodingContext*::callbacks::stream_commit_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1485,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - cache
    - txn
    - commit_lsn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1489
      start: 1450
    functionDepth: 1
    functionLinenumber: 1450
    functionLinenumberEnd: 1489
    functionName: stream_commit_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - LogicalDecodingContext*::callbacks::stream_commit_cb
    - ereport
    - errcode
    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:1499,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1502,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/logical.c:1529,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/logical.c:1530,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/logical.c:1531,1
    - Dst: LogicalDecodingContext*::callbacks::stream_change_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1534,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 4
    argNames:
    - cache
    - txn
    - relation
    - change
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - Relation
    - ReorderBufferChange*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1538
      start: 1491
    functionDepth: 1
    functionLinenumber: 1491
    functionLinenumberEnd: 1538
    functionName: stream_change_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - ereport
    - LogicalDecodingContext*::callbacks::stream_change_cb
    - errcode
    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:1549,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1552,1
    - Dst: LogicalDecodingContext*::callbacks::stream_message_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1574,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: 1579
      start: 1540
    functionDepth: 1
    functionLinenumber: 1540
    functionLinenumberEnd: 1579
    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:1590,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1593,1
    - Dst: LogicalDecodingContext*::callbacks::stream_truncate_cb
      Src: /src/postgres/src/backend/replication/logical/logical.c:1622,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: 1626
      start: 1581
    functionDepth: 1
    functionLinenumber: 1581
    functionLinenumberEnd: 1626
    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:1636,1
    - Dst: OutputPluginUpdateProgress
      Src: /src/postgres/src/backend/replication/logical/logical.c:1661,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 3
    argNames:
    - cache
    - txn
    - lsn
    argTypes:
    - ReorderBuffer*
    - ReorderBufferTXN*
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1665
      start: 1628
    functionDepth: 1
    functionLinenumber: 1628
    functionLinenumberEnd: 1665
    functionName: update_progress_txn_cb_wrapper
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - OutputPluginUpdateProgress
    - Assert
    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:1684,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logical.c:1686,1
    - Dst: TransactionIdPrecedesOrEquals
      Src: /src/postgres/src/backend/replication/logical/logical.c:1692,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:1725,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:1728,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:1729,1
    - Dst: LogicalConfirmReceivedLocation
      Src: /src/postgres/src/backend/replication/logical/logical.c:1733,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - current_lsn
    - xmin
    argTypes:
    - XLogRecPtr
    - TransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1734
      start: 1675
    functionDepth: 2
    functionLinenumber: 1675
    functionLinenumberEnd: 1734
    functionName: LogicalIncreaseXminForSlot
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 1
    functionsReached:
    - LSN_FORMAT_ARGS
    - Assert
    - SpinLockRelease
    - LogicalConfirmReceivedLocation
    - elog
    - TransactionIdPrecedesOrEquals
    - SpinLockAcquire
    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:1751,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1752,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1753,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logical.c:1755,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:1760,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:1771,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:1786,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:1788,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:1789,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:1790,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:1801,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:1803,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:1804,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:1805,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:1806,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:1807,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/logical.c:1808,1
    - Dst: LogicalConfirmReceivedLocation
      Src: /src/postgres/src/backend/replication/logical/logical.c:1813,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 2
    argNames:
    - current_lsn
    - restart_lsn
    argTypes:
    - XLogRecPtr
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1814
      start: 1743
    functionDepth: 1
    functionLinenumber: 1743
    functionLinenumberEnd: 1814
    functionName: LogicalIncreaseRestartDecodingForSlot
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 1
    functionsReached:
    - LSN_FORMAT_ARGS
    - Assert
    - SpinLockRelease
    - LogicalConfirmReceivedLocation
    - elog
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void LogicalIncreaseRestartDecodingForSlot(XLogRecPtr current_lsn,
      XLogRecPtr restart_lsn)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1822,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logical.c:1832,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/logical.c:1864,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:1877,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:1885,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/logical/logical.c:1894,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/logical/logical.c:1895,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/replication/logical/logical.c:1899,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/logical/logical.c:1902,1
    - Dst: ReplicationSlotSave
      Src: /src/postgres/src/backend/replication/logical/logical.c:1903,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:1904,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/logical.c:1915,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:1917,1
    - Dst: ReplicationSlotsComputeRequiredXmin
      Src: /src/postgres/src/backend/replication/logical/logical.c:1919,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:1925,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/logical.c:1934,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 45
    argCount: 1
    argNames:
    - lsn
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1936
      start: 1819
    functionDepth: 3
    functionLinenumber: 1819
    functionLinenumberEnd: 1936
    functionName: LogicalConfirmReceivedLocation
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 4
    functionsReached:
    - ReplicationSlotsComputeRequiredLSN
    - Assert
    - XLByteToSeg
    - TransactionIdIsValid
    - ReplicationSlotMarkDirty
    - SpinLockRelease
    - ReplicationSlotsComputeRequiredXmin
    - elog
    - INJECTION_POINT
    - ReplicationSlotSave
    - SpinLockAcquire
    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: 1946
      start: 1941
    functionDepth: 0
    functionLinenumber: 1941
    functionLinenumberEnd: 1946
    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:1981,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - LogicalDecodingContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1991
      start: 1951
    functionDepth: 1
    functionLinenumber: 1951
    functionLinenumberEnd: 1991
    functionName: UpdateDecodingStats
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 5
    functionsReached:
    - elog
    - pgstat_report_replslot
    linkageType: ''
    returnType: void
    signature: void UpdateDecodingStats(LogicalDecodingContext *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:2003,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/replication/logical/logical.c:2005,1
    - Dst: CreateDecodingContext
      Src: /src/postgres/src/backend/replication/logical/logical.c:2014,1
    - Dst: XL_ROUTINE
      Src: /src/postgres/src/backend/replication/logical/logical.c:2017,1
    - Dst: XLogBeginRead
      Src: /src/postgres/src/backend/replication/logical/logical.c:2026,1
    - Dst: InvalidateSystemCaches
      Src: /src/postgres/src/backend/replication/logical/logical.c:2029,1
    - Dst: XLogReadRecord
      Src: /src/postgres/src/backend/replication/logical/logical.c:2037,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:2040,1
    - Dst: LogicalDecodingProcessRecord
      Src: /src/postgres/src/backend/replication/logical/logical.c:2043,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/logical.c:2047,1
    - Dst: FreeDecodingContext
      Src: /src/postgres/src/backend/replication/logical/logical.c:2051,1
    - Dst: InvalidateSystemCaches
      Src: /src/postgres/src/backend/replication/logical/logical.c:2052,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/replication/logical/logical.c:2054,1
    - Dst: InvalidateSystemCaches
      Src: /src/postgres/src/backend/replication/logical/logical.c:2057,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/replication/logical/logical.c:2059,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/replication/logical/logical.c:2061,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 1
    argNames:
    - end_of_wal
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2064
      start: 1998
    functionDepth: 6
    functionLinenumber: 1998
    functionLinenumberEnd: 2064
    functionName: LogicalReplicationSlotHasPendingWal
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 0
    functionsReached:
    - Assert
    - XLogReadRecord
    - PG_RE_THROW
    - CHECK_FOR_INTERRUPTS
    - PG_END_TRY
    - PG_TRY
    - XLogBeginRead
    - PG_CATCH
    - LogicalDecodingProcessRecord
    - elog
    - FreeDecodingContext
    - InvalidateSystemCaches
    - XL_ROUTINE
    - CreateDecodingContext
    linkageType: ''
    returnType: bool
    signature: bool LogicalReplicationSlotHasPendingWal(XLogRecPtr end_of_wal)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/logical.c:2088,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/replication/logical/logical.c:2093,1
    - Dst: CreateDecodingContext
      Src: /src/postgres/src/backend/replication/logical/logical.c:2100,1
    - Dst: XL_ROUTINE
      Src: /src/postgres/src/backend/replication/logical/logical.c:2103,1
    - Dst: WaitForStandbyConfirmation
      Src: /src/postgres/src/backend/replication/logical/logical.c:2112,1
    - Dst: XLogBeginRead
      Src: /src/postgres/src/backend/replication/logical/logical.c:2118,1
    - Dst: InvalidateSystemCaches
      Src: /src/postgres/src/backend/replication/logical/logical.c:2121,1
    - Dst: XLogReadRecord
      Src: /src/postgres/src/backend/replication/logical/logical.c:2133,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/logical.c:2135,1
    - Dst: LogicalDecodingProcessRecord
      Src: /src/postgres/src/backend/replication/logical/logical.c:2144,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/logical.c:2146,1
    - Dst: DecodingContextReady
      Src: /src/postgres/src/backend/replication/logical/logical.c:2149,1
    - Dst: LogicalConfirmReceivedLocation
      Src: /src/postgres/src/backend/replication/logical/logical.c:2161,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/logical/logical.c:2176,1
    - Dst: FreeDecodingContext
      Src: /src/postgres/src/backend/replication/logical/logical.c:2182,1
    - Dst: InvalidateSystemCaches
      Src: /src/postgres/src/backend/replication/logical/logical.c:2184,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/replication/logical/logical.c:2186,1
    - Dst: InvalidateSystemCaches
      Src: /src/postgres/src/backend/replication/logical/logical.c:2189,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/replication/logical/logical.c:2191,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/replication/logical/logical.c:2193,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 2
    argNames:
    - moveto
    - found_consistent_snapshot
    argTypes:
    - XLogRecPtr
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2196
      start: 2080
    functionDepth: 6
    functionLinenumber: 2080
    functionLinenumberEnd: 2196
    functionName: LogicalSlotAdvanceAndCheckSnapState
    functionSourceFile: /src/postgres/src/backend/replication/logical/logical.c
    functionUses: 1
    functionsReached:
    - Assert
    - XLogReadRecord
    - PG_RE_THROW
    - CHECK_FOR_INTERRUPTS
    - PG_END_TRY
    - PG_TRY
    - XLogBeginRead
    - ReplicationSlotMarkDirty
    - PG_CATCH
    - LogicalConfirmReceivedLocation
    - LogicalDecodingProcessRecord
    - DecodingContextReady
    - elog
    - FreeDecodingContext
    - InvalidateSystemCaches
    - XL_ROUTINE
    - CreateDecodingContext
    - WaitForStandbyConfirmation
    linkageType: ''
    returnType: XLogRecPtr
    signature: "XLogRecPtr LogicalSlotAdvanceAndCheckSnapState(XLogRecPtr moveto,\n\t\t\t\t\t\t\t\t\tbool
      *found_consistent_snapshot)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:175,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:188,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:213,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:214,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:216,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:217,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:219,1
    - Dst: TransactionIdFollows
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:241,1
    - Dst: SnapBuildSnapshotExists
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:252,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:259,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:263,1
    - Dst: LogicalSlotAdvanceAndCheckSnapState
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:270,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:275,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:276,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:278,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:279,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:280,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:289,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:289,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:295,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:297,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:303,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:311,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:321,1
    - Dst: ReplicationSlotSave
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:322,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:333,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:335,1
    - Dst: ReplicationSlotsComputeRequiredXmin
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:337,1
    - Dst: ReplicationSlotsComputeRequiredLSN
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:338,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 52
    argCount: 4
    argNames:
    - remote_slot
    - remote_dbid
    - found_consistent_snapshot
    - remote_slot_precedes
    argTypes:
    - RemoteSlot*
    - Oid
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 166
    functionDepth: 7
    functionLinenumber: 166
    functionLinenumberEnd: 342
    functionName: update_local_synced_slot
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - SpinLockRelease
    - errdetail
    - TransactionIdFollows
    - NameStr
    - errdetail_internal
    - SnapBuildSnapshotExists
    - ReplicationSlotSave
    - strcmp
    - TransactionIdPrecedes
    - errmsg
    - LogicalSlotAdvanceAndCheckSnapState
    - ReplicationSlotsComputeRequiredXmin
    - SpinLockAcquire
    - ReplicationSlotsComputeRequiredLSN
    - Assert
    - namestrcpy
    - ReplicationSlotMarkDirty
    - errmsg_internal
    - ereport
    linkageType: ''
    returnType: bool
    signature: "bool update_local_synced_slot(RemoteSlot *remote_slot, Oid remote_dbid,\n\t\t\t\t\t\t
      bool *found_consistent_snapshot,\n\t\t\t\t\t\t bool *remote_slot_precedes)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:353,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:362,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:362,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:363,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:367,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 348
    functionDepth: 6
    functionLinenumber: 348
    functionLinenumberEnd: 370
    functionName: get_local_synced_slots
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - Assert
    - SlotIsLogical
    - lappend
    - LWLockRelease
    - LWLockAcquire
    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:387,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:387,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:395,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:399,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - local_slot
    - remote_slots
    argTypes:
    - ReplicationSlot*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 379
    functionDepth: 1
    functionLinenumber: 379
    functionLinenumberEnd: 406
    functionName: local_sync_slot_required
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - strcmp
    - NameStr
    - SpinLockRelease
    - SpinLockAcquire
    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:387,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:387,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:395,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:399,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 385
    functionDepth: 1
    functionLinenumber: 385
    functionLinenumberEnd: 403
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 3
    functionsReached:
    - strcmp
    - NameStr
    - SpinLockRelease
    - SpinLockAcquire
    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:435,1
    - Dst: local_sync_slot_required
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:440,1
    - Dst: LockSharedObject
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:449,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:461,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:463,1
    - Dst: ReplicationSlotAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:467,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:467,1
    - Dst: ReplicationSlotDropAcquired
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:468,1
    - Dst: UnlockSharedObject
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:471,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:474,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:475,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:476,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - remote_slot_list
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 432
    functionDepth: 7
    functionLinenumber: 432
    functionLinenumberEnd: 480
    functionName: drop_local_obsolete_slots
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - local_sync_slot_required
    - ReplicationSlotDropAcquired
    - ReplicationSlotAcquire
    - NameStr
    - LockSharedObject
    - errmsg
    - ereport
    - SpinLockRelease
    - UnlockSharedObject
    - get_local_synced_slots
    - SpinLockAcquire
    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:440,1
    - Dst: LockSharedObject
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:449,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:461,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:463,1
    - Dst: ReplicationSlotAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:467,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:467,1
    - Dst: ReplicationSlotDropAcquired
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:468,1
    - Dst: UnlockSharedObject
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:471,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:474,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:475,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:476,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 437
    functionDepth: 3
    functionLinenumber: 437
    functionLinenumberEnd: 479
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 3
    functionsReached:
    - local_sync_slot_required
    - ReplicationSlotDropAcquired
    - ReplicationSlotAcquire
    - NameStr
    - LockSharedObject
    - errmsg
    - ereport
    - SpinLockRelease
    - UnlockSharedObject
    - SpinLockAcquire
    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:496,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:497,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:497,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:501,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:503,1
    - Dst: ReplicationSlotsComputeRequiredLSN
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:506,1
    - Dst: XLByteToSeg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:508,1
    - Dst: XLogGetLastRemovedSegno
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:524,1
    - Dst: GetWalRcvFlushRecPtr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:530,1
    - Dst: XLogGetOldestSegno
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:531,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:534,1
    - Dst: XLogSegNoOffsetToRecPtr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:548,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - restart_lsn
    argTypes:
    - XLogRecPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 489
    functionDepth: 3
    functionLinenumber: 489
    functionLinenumberEnd: 550
    functionName: reserve_wal_for_local_slot
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - ReplicationSlotsComputeRequiredLSN
    - Assert
    - XLByteToSeg
    - GetWalRcvFlushRecPtr
    - SpinLockRelease
    - elog
    - XLogSegNoOffsetToRecPtr
    - XLogGetOldestSegno
    - XLogGetLastRemovedSegno
    - XLogRecPtrIsInvalid
    - SpinLockAcquire
    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:567,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:594,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:595,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:596,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:597,1
    - Dst: ReplicationSlotPersist
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:602,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:604,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:605,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - remote_slot
    - remote_dbid
    argTypes:
    - RemoteSlot*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 560
    functionDepth: 8
    functionLinenumber: 560
    functionLinenumberEnd: 609
    functionName: update_and_persist_local_synced_slot
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - errmsg
    - LSN_FORMAT_ARGS
    - ReplicationSlotPersist
    - ereport
    - update_local_synced_slot
    - errdetail
    linkageType: ''
    returnType: bool
    signature: bool update_and_persist_local_synced_slot(RemoteSlot *remote_slot,
      Oid remote_dbid)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: GetStandbyFlushRecPtr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:635,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:642,1
    - Dst: AmLogicalSlotSyncWorkerProcess
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:642,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:643,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:644,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:646,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:648,1
    - Dst: SearchNamedReplicationSlot
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:654,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:658,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:660,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:664,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:665,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:666,1
    - Dst: ReplicationSlotAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:686,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:688,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:697,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:699,1
    - Dst: ReplicationSlotMarkDirty
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:702,1
    - Dst: ReplicationSlotSave
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:703,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:711,1
    - Dst: update_and_persist_local_synced_slot
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:718,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:733,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:734,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:736,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:737,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:738,1
    - Dst: update_local_synced_slot
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:740,1
    - Dst: ReplicationSlotCreate
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:761,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:770,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:772,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:775,1
    - Dst: reserve_wal_for_local_slot
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:777,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:779,1
    - Dst: GetOldestSafeDecodingTransactionId
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:780,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:781,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:784,1
    - Dst: ReplicationSlotsComputeRequiredXmin
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:785,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:786,1
    - Dst: update_and_persist_local_synced_slot
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:788,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:793,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 57
    argCount: 2
    argNames:
    - remote_slot
    - remote_dbid
    argTypes:
    - RemoteSlot*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 796
      start: 624
    functionDepth: 9
    functionLinenumber: 624
    functionLinenumberEnd: 796
    functionName: synchronize_one_slot
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - ReplicationSlotAcquire
    - SpinLockRelease
    - GetStandbyFlushRecPtr
    - LWLockRelease
    - AmLogicalSlotSyncWorkerProcess
    - errdetail_internal
    - reserve_wal_for_local_slot
    - ReplicationSlotSave
    - SearchNamedReplicationSlot
    - errmsg
    - ReplicationSlotCreate
    - GetOldestSafeDecodingTransactionId
    - ReplicationSlotsComputeRequiredXmin
    - update_and_persist_local_synced_slot
    - ReplicationSlotRelease
    - SpinLockAcquire
    - Assert
    - namestrcpy
    - ReplicationSlotMarkDirty
    - errmsg_internal
    - ereport
    - update_local_synced_slot
    - LWLockAcquire
    - errcode
    linkageType: ''
    returnType: bool
    signature: bool synchronize_one_slot(RemoteSlot *remote_slot, Oid remote_dbid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:825,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:827,1
    - Dst: walrcv_exec
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:832,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:834,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:835,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:839,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:840,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:843,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:847,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:847,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:849,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:851,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:851,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:853,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:859,1
    - Dst: DatumGetLSN
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:861,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:863,1
    - Dst: DatumGetLSN
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:864,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:866,1
    - Dst: DatumGetTransactionId
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:868,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:870,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:870,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:872,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:874,1
    - Dst: DatumGetLSN
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:875,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:877,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:877,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:879,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:881,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:881,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:883,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:885,1
    - Dst: GetSlotInvalidationCause
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:887,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:887,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:890,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:903,1
    - Dst: XLogRecPtrIsInvalid
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:904,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:905,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:907,1
    - Dst: lappend
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:910,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:912,1
    - Dst: drop_local_obsolete_slots
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:916,1
    - Dst: get_database_oid
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:921,1
    - Dst: LockSharedObject
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:928,1
    - Dst: synchronize_one_slot
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:930,1
    - Dst: UnlockSharedObject
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:932,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:936,1
    - Dst: walrcv_clear_result
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:938,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:941,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 46
    argCount: 1
    argNames:
    - wrconn
    argTypes:
    - WalReceiverConn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 944
      start: 806
    functionDepth: 10
    functionLinenumber: 806
    functionLinenumberEnd: 944
    functionName: synchronize_slots
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - get_database_oid
    - DatumGetTransactionId
    - IsTransactionState
    - pfree
    - walrcv_clear_result
    - synchronize_one_slot
    - walrcv_exec
    - ExecClearTuple
    - slot_getattr
    - StartTransactionCommand
    - errmsg
    - LockSharedObject
    - TransactionIdIsValid
    - DatumGetLSN
    - UnlockSharedObject
    - lappend
    - drop_local_obsolete_slots
    - XLogRecPtrIsInvalid
    - Assert
    - list_free_deep
    - CommitTransactionCommand
    - TextDatumGetCString
    - ereport
    - tuplestore_gettupleslot
    - MakeSingleTupleTableSlot
    - palloc0
    - GetSlotInvalidationCause
    - DatumGetBool
    linkageType: ''
    returnType: bool
    signature: bool synchronize_slots(WalReceiverConn *wrconn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_database_oid
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:921,1
    - Dst: LockSharedObject
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:928,1
    - Dst: synchronize_one_slot
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:930,1
    - Dst: UnlockSharedObject
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:932,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 919
    functionDepth: 10
    functionLinenumber: 919
    functionLinenumberEnd: 933
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 3
    functionsReached:
    - synchronize_one_slot
    - UnlockSharedObject
    - LockSharedObject
    - get_database_oid
    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:965,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:966,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:970,1
    - Dst: IsTransactionState
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:973,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:975,1
    - Dst: walrcv_exec
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:979,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:980,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:983,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:984,1
    - Dst: errhint
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:986,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:988,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:989,1
    - Dst: elog
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:990,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:993,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:993,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:994,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1004,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1005,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1006,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1008,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1008,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1009,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1012,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1013,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1015,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1018,1
    - Dst: walrcv_clear_result
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1019,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1022,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 1
    argNames:
    - wrconn
    argTypes:
    - WalReceiverConn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 952
    functionDepth: 3
    functionLinenumber: 952
    functionLinenumberEnd: 1023
    functionName: validate_remote_info
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - errhint
    - IsTransactionState
    - quote_literal_cstr
    - pfree
    - walrcv_clear_result
    - walrcv_exec
    - ExecClearTuple
    - slot_getattr
    - StartTransactionCommand
    - errmsg
    - elog
    - Assert
    - CommitTransactionCommand
    - appendStringInfo
    - ereport
    - tuplestore_gettupleslot
    - MakeSingleTupleTableSlot
    - DatumGetBool
    - initStringInfo
    - errcode
    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:1039,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1041,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1042,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1048,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 1030
    functionDepth: 1
    functionLinenumber: 1030
    functionLinenumberEnd: 1051
    functionName: CheckAndGetDbnameFromConninfo
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 1
    functionsReached:
    - errmsg
    - walrcv_get_dbname_from_conninfo
    - errcode
    - ereport
    linkageType: ''
    returnType: char
    signature: 'char *

      CheckAndGetDbnameFromConninfo(void)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1067,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1068,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1069,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1079,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1080,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1082,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1093,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1094,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1096,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1107,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1108,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1110,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - elevel
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1057
    functionDepth: 1
    functionLinenumber: 1057
    functionLinenumberEnd: 1116
    functionName: ValidateSlotSyncParams
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - ereport
    linkageType: ''
    returnType: bool
    signature: bool ValidateSlotSyncParams(int elevel)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1127,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1128,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1134,1
    - Dst: ProcessConfigFile
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1137,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1139,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1140,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1141,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1142,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1146,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1148,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1149,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1156,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1157,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1165,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1168
      start: 1124
    functionDepth: 1
    functionLinenumber: 1124
    functionLinenumberEnd: 1168
    functionName: slotsync_reread_config
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - ProcessConfigFile
    - Assert
    - pstrdup
    - ereport
    - strcmp
    - proc_exit
    linkageType: ''
    returnType: void
    signature: void slotsync_reread_config(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1176,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1180,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1181,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1183,1
    - Dst: slotsync_reread_config
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1187,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - wrconn
    argTypes:
    - WalReceiverConn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1188
      start: 1173
    functionDepth: 2
    functionLinenumber: 1173
    functionLinenumberEnd: 1188
    functionName: ProcessSlotSyncInterrupts
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - errmsg
    - CHECK_FOR_INTERRUPTS
    - slotsync_reread_config
    - ereport
    - proc_exit
    linkageType: ''
    returnType: void
    signature: void ProcessSlotSyncInterrupts(WalReceiverConn *wrconn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1198,1
    - Dst: walrcv_disconnect
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1201
      start: 1195
    functionDepth: 1
    functionLinenumber: 1195
    functionLinenumberEnd: 1201
    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:1223,1
    - Dst: ReplicationSlotCleanup
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1226,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1228,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1243,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1244
      start: 1208
    functionDepth: 3
    functionLinenumber: 1208
    functionLinenumberEnd: 1244
    functionName: slotsync_worker_onexit
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - ReplicationSlotCleanup
    - SpinLockRelease
    - ReplicationSlotRelease
    - SpinLockAcquire
    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:1265,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1276,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1282,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - some_slot_updated
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1283
      start: 1254
    functionDepth: 1
    functionLinenumber: 1254
    functionLinenumberEnd: 1283
    functionName: wait_for_slot_activity
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - ResetLatch
    - Min
    - WaitLatch
    linkageType: ''
    returnType: void
    signature: void wait_for_slot_activity(bool some_slot_updated)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1292,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1295,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1303,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1304,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1305,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1306,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1311,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1312,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1313,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1314,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1325,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - worker_pid
    argTypes:
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1328
      start: 1289
    functionDepth: 1
    functionLinenumber: 1289
    functionLinenumberEnd: 1328
    functionName: check_and_set_sync_info
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - ereport
    - SpinLockRelease
    - errcode
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void check_and_set_sync_info(pid_t worker_pid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1336,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1341
      start: 1333
    functionDepth: 1
    functionLinenumber: 1333
    functionLinenumberEnd: 1341
    functionName: reset_syncing_flag
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void reset_syncing_flag()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1358,1
    - Dst: init_ps_display
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1362,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1364,1
    - Dst: GetProcessingMode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1364,1
    - Dst: InitProcess
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1370,1
    - Dst: BaseInit
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1375,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1377,1
    - Dst: sigsetjmp
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1388,1
    - Dst: HOLD_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1394,1
    - Dst: EmitErrorReport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1397,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1404,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1411,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1412,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1413,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1414,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1415,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1416,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1417,1
    - Dst: pqsignal
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1418,1
    - Dst: check_and_set_sync_info
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1420,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1422,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1422,1
    - Dst: before_shmem_exit
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1425,1
    - Dst: InitializeTimeouts
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1431,1
    - Dst: load_file
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1434,1
    - Dst: sigprocmask
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1439,1
    - Dst: SetConfigOption
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1449,1
    - Dst: CheckAndGetDbnameFromConninfo
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1451,1
    - Dst: InitPostgres
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1464,1
    - Dst: SetProcessingMode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1466,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1468,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1470,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1472,1
    - Dst: walrcv_connect
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1478,1
    - Dst: pfree
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1480,1
    - Dst: ereport
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1483,1
    - Dst: errcode
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1484,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1485,1
    - Dst: before_shmem_exit
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1495,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1495,1
    - Dst: validate_remote_info
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1502,1
    - Dst: ProcessSlotSyncInterrupts
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1509,1
    - Dst: synchronize_slots
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1511,1
    - Dst: wait_for_slot_activity
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1513,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1520,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 49
    argCount: 2
    argNames:
    - startup_data
    - startup_data_len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1521
      start: 1349
    functionDepth: 11
    functionLinenumber: 1349
    functionLinenumberEnd: 1521
    functionName: ReplSlotSyncWorkerMain
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - wait_for_slot_activity
    - BaseInit
    - CheckAndGetDbnameFromConninfo
    - validate_remote_info
    - InitPostgres
    - sigsetjmp
    - sigprocmask
    - HOLD_INTERRUPTS
    - pfree
    - InitializeTimeouts
    - SetConfigOption
    - ProcessSlotSyncInterrupts
    - GetProcessingMode
    - check_and_set_sync_info
    - proc_exit
    - errmsg
    - SetProcessingMode
    - init_ps_display
    - appendStringInfoString
    - InitProcess
    - load_file
    - Assert
    - appendStringInfo
    - before_shmem_exit
    - ereport
    - PointerGetDatum
    - EmitErrorReport
    - pqsignal
    - synchronize_slots
    - walrcv_connect
    - initStringInfo
    - errcode
    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:1545,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1547,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1556,1
    - Dst: SlotIsLogical
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1556,1
    - Dst: Assert
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1559,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1563,1
    - Dst: ReplicationSlotSetInactiveSince
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1565,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1569,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1570
      start: 1529
    functionDepth: 2
    functionLinenumber: 1529
    functionLinenumberEnd: 1570
    functionName: update_synced_slots_inactive_since
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - Assert
    - ReplicationSlotSetInactiveSince
    - SlotIsLogical
    - GetCurrentTimestamp
    - LWLockRelease
    - LWLockAcquire
    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:1584,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1594,1
    - Dst: update_synced_slots_inactive_since
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1595,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1601,1
    - Dst: kill
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1604,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1612,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1618,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1619,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1622,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1628,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1631,1
    - Dst: update_synced_slots_inactive_since
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1633,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1634
      start: 1579
    functionDepth: 3
    functionLinenumber: 1579
    functionLinenumberEnd: 1634
    functionName: ShutDownSlotSync
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 1
    functionsReached:
    - ResetLatch
    - CHECK_FOR_INTERRUPTS
    - kill
    - SpinLockRelease
    - update_synced_slots_inactive_since
    - WaitLatch
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void ShutDownSlotSync(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1650,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1660
      start: 1647
    functionDepth: 0
    functionLinenumber: 1647
    functionLinenumberEnd: 1660
    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: 1671
      start: 1667
    functionDepth: 0
    functionLinenumber: 1667
    functionLinenumberEnd: 1671
    functionName: IsSyncingReplicationSlots
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IsSyncingReplicationSlots(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1680
      start: 1676
    functionDepth: 0
    functionLinenumber: 1676
    functionLinenumberEnd: 1680
    functionName: SlotSyncShmemSize
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Size
    signature: Size SlotSyncShmemSize(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SlotSyncShmemSize
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1688,1
    - Dst: ShmemInitStruct
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1692,1
    - Dst: memset
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1696,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1698,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1700
      start: 1685
    functionDepth: 1
    functionLinenumber: 1685
    functionLinenumberEnd: 1700
    functionName: SlotSyncShmemInit
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - SlotSyncShmemSize
    - ShmemInitStruct
    - memset
    - SpinLockInit
    linkageType: ''
    returnType: void
    signature: void SlotSyncShmemInit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1708,1
    - Dst: ReplicationSlotRelease
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1722,1
    - Dst: ReplicationSlotCleanup
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1725,1
    - Dst: reset_syncing_flag
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1733,1
    - Dst: walrcv_disconnect
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1735,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1736
      start: 1705
    functionDepth: 3
    functionLinenumber: 1705
    functionLinenumberEnd: 1736
    functionName: slotsync_failure_callback
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 0
    functionsReached:
    - walrcv_disconnect
    - reset_syncing_flag
    - ReplicationSlotCleanup
    - DatumGetPointer
    - ReplicationSlotRelease
    linkageType: ''
    returnType: void
    signature: void slotsync_failure_callback(int code, Datum arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_ENSURE_ERROR_CLEANUP
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1745,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1745,1
    - Dst: check_and_set_sync_info
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1747,1
    - Dst: validate_remote_info
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1749,1
    - Dst: synchronize_slots
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1751,1
    - Dst: ReplicationSlotCleanup
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1754,1
    - Dst: reset_syncing_flag
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1757,1
    - Dst: PG_END_ENSURE_ERROR_CLEANUP
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1759,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/replication/logical/slotsync.c:1759,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - wrconn
    argTypes:
    - WalReceiverConn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1760
      start: 1742
    functionDepth: 11
    functionLinenumber: 1742
    functionLinenumberEnd: 1760
    functionName: SyncReplicationSlots
    functionSourceFile: /src/postgres/src/backend/replication/logical/slotsync.c
    functionUses: 1
    functionsReached:
    - validate_remote_info
    - synchronize_slots
    - PointerGetDatum
    - PG_END_ENSURE_ERROR_CLEANUP
    - PG_ENSURE_ERROR_CLEANUP
    - ReplicationSlotCleanup
    - check_and_set_sync_info
    - reset_syncing_flag
    linkageType: ''
    returnType: void
    signature: void SyncReplicationSlots(WalReceiverConn *wrconn)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ScanDirectionCombine
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:79,1
    - Dst: index_beginscan
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:92,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:111,1
    - Dst: index_getnext_tid
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:121,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:125,1
    - Dst: VM_ALL_VISIBLE
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:161,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:162,1
    - Dst: InstrCountTuples2
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:168,1
    - Dst: index_fetch_heap
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:169,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:172,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:181,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:206,1
    - Dst: ExecForceStoreHeapTuple
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:208,1
    - Dst: StoreIndexTuple
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:211,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:213,1
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:221,1
    - Dst: InstrCountFiltered2
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:224,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:238,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:239,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:240,1
    - Dst: PredicateLockPage
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:247,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:248,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:258,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 46
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexOnlyScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 60
    functionDepth: 4
    functionLinenumber: 60
    functionLinenumberEnd: 259
    functionName: IndexOnlyNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 0
    functionsReached:
    - index_getnext_tid
    - CHECK_FOR_INTERRUPTS
    - VM_ALL_VISIBLE
    - ScanDirectionCombine
    - index_fetch_heap
    - InstrCountTuples2
    - StoreIndexTuple
    - ExecClearTuple
    - ExecQualAndReset
    - errmsg
    - PredicateLockPage
    - index_rescan
    - elog
    - index_beginscan
    - Assert
    - InstrCountFiltered2
    - ereport
    - ItemPointerGetBlockNumber
    - ExecForceStoreHeapTuple
    - errcode
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      IndexOnlyNext(IndexOnlyScanState *node)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:279,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:281,1
    - Dst: index_deform_tuple
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:282,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:291,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:305,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:309,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:309,1
    - Dst: NameGetDatum
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:310,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:314,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - node
    - slot
    - itup
    - itupdesc
    argTypes:
    - IndexOnlyScanState*
    - TupleTableSlot*
    - IndexTuple
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 268
    functionDepth: 3
    functionLinenumber: 268
    functionLinenumberEnd: 315
    functionName: StoreIndexTuple
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 1
    functionsReached:
    - NameGetDatum
    - Assert
    - namestrcpy
    - DatumGetCString
    - index_deform_tuple
    - ExecStoreVirtualTuple
    - unlikely
    - ExecClearTuple
    - MemoryContextAlloc
    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:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - slot
    argTypes:
    - IndexOnlyScanState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 325
    functionDepth: 1
    functionLinenumber: 325
    functionLinenumberEnd: 330
    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:339,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:345,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:347,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 350
    functionName: ExecIndexOnlyScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 0
    functionsReached:
    - ExecReScan
    - ExecScan
    - castNode
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecIndexOnlyScan(PlanState *pstate)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:377,1
    - Dst: ExecIndexEvalRuntimeKeys
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:378,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:386,1
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:390,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexOnlyScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 363
    functionDepth: 2
    functionLinenumber: 363
    functionLinenumberEnd: 391
    functionName: ExecReScanIndexOnlyScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 0
    functionsReached:
    - ResetExprContext
    - index_rescan
    - ExecIndexEvalRuntimeKeys
    - ExecScanReScan
    linkageType: ''
    returnType: void
    signature: void ExecReScanIndexOnlyScan(IndexOnlyScanState *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ReleaseBuffer
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:413,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:422,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:426,1
    - Dst: index_endscan
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:442,1
    - Dst: index_close
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:444,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexOnlyScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 398
    functionDepth: 2
    functionLinenumber: 398
    functionLinenumberEnd: 445
    functionName: ExecEndIndexOnlyScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - index_close
    - ReleaseBuffer
    - index_endscan
    - IsParallelWorker
    linkageType: ''
    returnType: void
    signature: void ExecEndIndexOnlyScan(IndexOnlyScanState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:473,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:479,1
    - Dst: index_markpos
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:484,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexOnlyScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 454
    functionDepth: 2
    functionLinenumber: 454
    functionLinenumberEnd: 485
    functionName: ExecIndexOnlyMarkPos
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - elog
    - index_markpos
    linkageType: ''
    returnType: void
    signature: void ExecIndexOnlyMarkPos(IndexOnlyScanState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:502,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:508,1
    - Dst: index_restrpos
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:513,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexOnlyScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 491
    functionDepth: 2
    functionLinenumber: 491
    functionLinenumberEnd: 514
    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: 6
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:541,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:551,1
    - Dst: ExecOpenScanRelation
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:556,1
    - Dst: ExecTypeFromTL
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:568,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:569,1
    - Dst: ExecAllocTableSlot
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:577,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:578,1
    - Dst: table_slot_callbacks
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:579,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:585,1
    - Dst: ExecAssignScanProjectionInfoWithVarno
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:586,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:595,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:597,1
    - Dst: exec_rt_fetch
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:608,1
    - Dst: index_open
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:609,1
    - Dst: ExecIndexBuildScanKeys
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:622,1
    - Dst: ExecIndexBuildScanKeys
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:636,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:657,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:683,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:697,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:701,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 49
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - IndexOnlyScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 527
    functionDepth: 4
    functionLinenumber: 527
    functionLinenumberEnd: 713
    functionName: ExecInitIndexOnlyScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 0
    functionsReached:
    - ExecInitScanTupleSlot
    - ExecAssignExprContext
    - ExecIndexBuildScanKeys
    - palloc
    - ExecAllocTableSlot
    - ExecOpenScanRelation
    - ExecTypeFromTL
    - RelationGetDescr
    - TupleDescAttr
    - exec_rt_fetch
    - table_slot_callbacks
    - ExecInitQual
    - ExecAssignScanProjectionInfoWithVarno
    - ExecInitResultTypeTL
    - makeNode
    - index_open
    linkageType: ''
    returnType: IndexOnlyScanState
    signature: 'IndexOnlyScanState *

      ExecInitIndexOnlyScan(IndexOnlyScan *node, EState *estate, int eflags)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: index_parallelscan_estimate
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:741,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:747,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:748,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - IndexOnlyScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 727
    functionDepth: 2
    functionLinenumber: 727
    functionLinenumberEnd: 749
    functionName: ExecIndexOnlyScanEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 0
    functionsReached:
    - index_parallelscan_estimate
    - shm_toc_estimate_chunk
    - shm_toc_estimate_keys
    linkageType: ''
    returnType: void
    signature: "void ExecIndexOnlyScanEstimate(IndexOnlyScanState *node,\n\t\t\t\t\t\t
      \ ParallelContext *pcxt)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:772,1
    - Dst: index_parallelscan_initialize
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:773,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:778,1
    - Dst: index_beginscan_parallel
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:787,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:801,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - IndexOnlyScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 757
    functionDepth: 3
    functionLinenumber: 757
    functionLinenumberEnd: 804
    functionName: ExecIndexOnlyScanInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 0
    functionsReached:
    - index_beginscan_parallel
    - shm_toc_insert
    - index_rescan
    - index_parallelscan_initialize
    - 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:816,1
    - Dst: index_parallelrescan
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:817,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - IndexOnlyScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 812
    functionDepth: 2
    functionLinenumber: 812
    functionLinenumberEnd: 818
    functionName: ExecIndexOnlyScanReInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 0
    functionsReached:
    - index_parallelrescan
    - Assert
    linkageType: ''
    returnType: void
    signature: "void ExecIndexOnlyScanReInitializeDSM(IndexOnlyScanState *node,\n\t\t\t\t\t\t\t\t
      ParallelContext *pcxt)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:840,1
    - Dst: OffsetToPointer
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:844,1
    - Dst: index_beginscan_parallel
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:853,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:866,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - IndexOnlyScanState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 826
    functionDepth: 3
    functionLinenumber: 826
    functionLinenumberEnd: 869
    functionName: ExecIndexOnlyScanInitializeWorker
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexonlyscan.c
    functionUses: 0
    functionsReached:
    - index_rescan
    - OffsetToPointer
    - index_beginscan_parallel
    - shm_toc_lookup
    linkageType: ''
    returnType: void
    signature: "void ExecIndexOnlyScanInitializeWorker(IndexOnlyScanState *node,\n\t\t\t\t\t\t\t\t
      \ ParallelWorkerContext *pwcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:889,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeIndexonlyscan.c:890,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexOnlyScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 877
    functionDepth: 0
    functionLinenumber: 877
    functionLinenumberEnd: 891
    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:29,1
    - Dst: InstrStartNode
      Src: /src/postgres/src/backend/executor/execAsync.c:33,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAsync.c:35,1
    - Dst: ExecAsyncForeignScanRequest
      Src: /src/postgres/src/backend/executor/execAsync.c:38,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execAsync.c:42,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAsync.c:43,1
    - Dst: ExecAsyncResponse
      Src: /src/postgres/src/backend/executor/execAsync.c:46,1
    - Dst: InstrStopNode
      Src: /src/postgres/src/backend/executor/execAsync.c:50,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/execAsync.c:51,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - areq
    argTypes:
    - AsyncRequest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 52
    functionName: ExecAsyncRequest
    functionSourceFile: /src/postgres/src/backend/executor/execAsync.c
    functionUses: 0
    functionsReached:
    - nodeTag
    - ExecAsyncForeignScanRequest
    - ExecAsyncResponse
    - TupIsNull
    - elog
    - InstrStartNode
    - InstrStopNode
    - ExecReScan
    linkageType: ''
    returnType: void
    signature: void ExecAsyncRequest(AsyncRequest *areq)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: InstrStartNode
      Src: /src/postgres/src/backend/executor/execAsync.c:66,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAsync.c:68,1
    - Dst: ExecAsyncForeignScanConfigureWait
      Src: /src/postgres/src/backend/executor/execAsync.c:71,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execAsync.c:75,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAsync.c:76,1
    - Dst: InstrStopNode
      Src: /src/postgres/src/backend/executor/execAsync.c:81,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - areq
    argTypes:
    - AsyncRequest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 82
    functionName: ExecAsyncConfigureWait
    functionSourceFile: /src/postgres/src/backend/executor/execAsync.c
    functionUses: 0
    functionsReached:
    - nodeTag
    - ExecAsyncForeignScanConfigureWait
    - elog
    - InstrStartNode
    - InstrStopNode
    linkageType: ''
    returnType: void
    signature: void ExecAsyncConfigureWait(AsyncRequest *areq)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: InstrStartNode
      Src: /src/postgres/src/backend/executor/execAsync.c:92,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAsync.c:94,1
    - Dst: ExecAsyncForeignScanNotify
      Src: /src/postgres/src/backend/executor/execAsync.c:97,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execAsync.c:101,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAsync.c:102,1
    - Dst: ExecAsyncResponse
      Src: /src/postgres/src/backend/executor/execAsync.c:105,1
    - Dst: InstrStopNode
      Src: /src/postgres/src/backend/executor/execAsync.c:109,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/execAsync.c:110,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - areq
    argTypes:
    - AsyncRequest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 111
    functionName: ExecAsyncNotify
    functionSourceFile: /src/postgres/src/backend/executor/execAsync.c
    functionUses: 0
    functionsReached:
    - nodeTag
    - ExecAsyncResponse
    - TupIsNull
    - elog
    - InstrStartNode
    - InstrStopNode
    - ExecAsyncForeignScanNotify
    linkageType: ''
    returnType: void
    signature: void ExecAsyncNotify(AsyncRequest *areq)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAsync.c:119,1
    - Dst: ExecAsyncAppendResponse
      Src: /src/postgres/src/backend/executor/execAsync.c:122,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execAsync.c:126,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAsync.c:127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - areq
    argTypes:
    - AsyncRequest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 129
    functionName: ExecAsyncResponse
    functionSourceFile: /src/postgres/src/backend/executor/execAsync.c
    functionUses: 2
    functionsReached:
    - nodeTag
    - elog
    - ExecAsyncAppendResponse
    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: 141
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 141
    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: 154
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 154
    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:
    - InitFunctionCallInfoData
    - get_equality_op_for_ordering_op
    - SizeForFunctionCallInfo
    - get_opcode
    - castNode
    - palloc0
    - elog
    - fmgr_info_cxt
    - OidIsValid
    - palloc
    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: 3
    functionLinenumber: 211
    functionLinenumberEnd: 264
    functionName: isCurrentGroup
    functionSourceFile: /src/postgres/src/backend/executor/nodeIncrementalSort.c
    functionUses: 0
    functionsReached:
    - castNode
    - elog
    - DatumGetBool
    - slot_getattr
    - FunctionCallInvoke
    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: 4
    functionLinenumber: 285
    functionLinenumberEnd: 456
    functionName: switchToPresortedPrefixMode
    functionSourceFile: /src/postgres/src/backend/executor/nodeIncrementalSort.c
    functionUses: 0
    functionsReached:
    - castNode
    - tuplesort_begin_heap
    - tuplesort_reset
    - ScanDirectionIsForward
    - Min
    - TupIsNull
    - isCurrentGroup
    - ExecGetResultType
    - ExecCopySlot
    - ExecClearTuple
    - tuplesort_gettupleslot
    - SO2_printf
    - SO1_printf
    - outerPlanState
    - tuplesort_puttupleslot
    - INSTRUMENT_SORT_GROUP
    - SO_printf
    - tuplesort_performsort
    - tuplesort_set_bound
    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: 5
    functionLinenumber: 494
    functionLinenumberEnd: 966
    functionName: ExecIncrementalSort
    functionSourceFile: /src/postgres/src/backend/executor/nodeIncrementalSort.c
    functionUses: 0
    functionsReached:
    - CHECK_FOR_INTERRUPTS
    - castNode
    - tuplesort_begin_heap
    - tuplesort_reset
    - ScanDirectionIsForward
    - Min
    - TupIsNull
    - isCurrentGroup
    - ExecGetResultType
    - ExecCopySlot
    - ExecClearTuple
    - tuplesort_gettupleslot
    - SO2_printf
    - preparePresortedCols
    - SO1_printf
    - outerPlanState
    - tuplesort_puttupleslot
    - tuplesort_used_bound
    - Assert
    - INSTRUMENT_SORT_GROUP
    - ExecProcNode
    - SO_printf
    - switchToPresortedPrefixMode
    - tuplesort_performsort
    - tuplesort_set_bound
    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:
    - Assert
    - SO_printf
    - ExecInitResultTupleSlotTL
    - ExecCreateScanSlotFromOuterPlan
    - ExecInitNode
    - MakeSingleTupleTableSlot
    - ExecGetResultType
    - outerPlan
    - outerPlanState
    - makeNode
    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
    - ExecEndNode
    - outerPlanState
    - 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:
    - ExecClearTuple
    - tuplesort_reset
    - outerPlanState
    - ExecReScan
    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:
    - mul_size
    - shm_toc_estimate_chunk
    - shm_toc_estimate_keys
    - add_size
    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:
    - memset
    - shm_toc_allocate
    - shm_toc_insert
    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
    - CHECK_FOR_INTERRUPTS
    - ExecProcNode
    - TupIsNull
    - MemoryContextReset
    - castNode
    - outerPlanState
    - ExecProjectSRF
    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
    - MemoryContextSwitchTo
    - IsA
    - ExecStoreVirtualTuple
    - ExecMakeFunctionResultSet
    - ExecEvalExpr
    - ExecClearTuple
    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
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:271,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:273,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:282,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:284,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:287,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:288,1
    - Dst: ExecInitFunctionResultSet
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:291,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:296,1
    - Dst: expression_returns_set
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:296,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:297,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:304,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:314,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - ProjectSet*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 226
    functionDepth: 2
    functionLinenumber: 226
    functionLinenumberEnd: 319
    functionName: ExecInitProjectSet
    functionSourceFile: /src/postgres/src/backend/executor/nodeProjectSet.c
    functionUses: 0
    functionsReached:
    - Assert
    - palloc
    - ExecAssignExprContext
    - expression_returns_set
    - ExecInitResultTupleSlotTL
    - innerPlan
    - ExecInitNode
    - IsA
    - list_length
    - foreach
    - ExecInitFunctionResultSet
    - outerPlan
    - outerPlanState
    - AllocSetContextCreate
    - makeNode
    - ExecInitExpr
    - lfirst
    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:333,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - ProjectSetState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 327
    functionDepth: 1
    functionLinenumber: 327
    functionLinenumberEnd: 334
    functionName: ExecEndProjectSet
    functionSourceFile: /src/postgres/src/backend/executor/nodeProjectSet.c
    functionUses: 0
    functionsReached:
    - ExecEndNode
    - outerPlanState
    linkageType: ''
    returnType: void
    signature: void ExecEndProjectSet(ProjectSetState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:339,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeProjectSet.c:349,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - node
    argTypes:
    - ProjectSetState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 350
    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:
    - CHECK_FOR_INTERRUPTS
    - castNode
    - IsolationUsesXactSnapshot
    - EvalPlanQualBegin
    - RelationGetRelationName
    - TupIsNull
    - EvalPlanQualNext
    - ItemPointerSetInvalid
    - foreach
    - ExecClearTuple
    - DatumGetPointer
    - errmsg
    - table_tuple_lock
    - elog
    - outerPlanState
    - OidIsValid
    - EvalPlanQualEnd
    - lfirst
    - EvalPlanQualSlot
    - Assert
    - ExecProcNode
    - ExecGetJunkAttribute
    - FdwRoutine*::RefetchForeignRow
    - EvalPlanQualSetSlot
    - ereport
    - DatumGetObjectId
    - GetFdwRoutineForRelation
    - errcode
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\t\t\t/* return: a tuple or NULL */\nExecLockRows(PlanState
      *pstate)"
  - BBCount: 3
    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: bms_is_member
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:356,1
    - Dst: ExecFindRowMark
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:360,1
    - Dst: ExecBuildAuxRowMark
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:361,1
    - Dst: RowMarkRequiresRowShareLock
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:369,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:370,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:372,1
    - Dst: EvalPlanQualInit
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:376,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - LockRows*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 290
    functionDepth: 6
    functionLinenumber: 290
    functionLinenumberEnd: 380
    functionName: ExecInitLockRows
    functionSourceFile: /src/postgres/src/backend/executor/nodeLockRows.c
    functionUses: 0
    functionsReached:
    - ExecBuildAuxRowMark
    - Assert
    - ExecGetResultSlotOps
    - ExecFindRowMark
    - EvalPlanQualInit
    - lfirst_node
    - RowMarkRequiresRowShareLock
    - ExecInitNode
    - foreach
    - lappend
    - outerPlan
    - outerPlanState
    - ExecInitResultTypeTL
    - bms_is_member
    - makeNode
    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:393,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:394,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - LockRowsState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 389
    functionDepth: 1
    functionLinenumber: 389
    functionLinenumberEnd: 395
    functionName: ExecEndLockRows
    functionSourceFile: /src/postgres/src/backend/executor/nodeLockRows.c
    functionUses: 0
    functionsReached:
    - ExecEndNode
    - EvalPlanQualEnd
    - outerPlanState
    linkageType: ''
    returnType: void
    signature: void ExecEndLockRows(LockRowsState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:401,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeLockRows.c:408,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - LockRowsState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 398
    functionDepth: 1
    functionLinenumber: 398
    functionLinenumberEnd: 409
    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:62,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:73,1
    - Dst: ENL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:78,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:83,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:84,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:91,1
    - Dst: ENL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:97,1
    - Dst: ENL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:107,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:108,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:113,1
    - Dst: ENL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:115,1
    - Dst: ENL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:119,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:128,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:130,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:136,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:136,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:137,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:138,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:139,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:143,1
    - Dst: ENL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:150,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:151,1
    - Dst: ENL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:157,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:159,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:162,1
    - Dst: ENL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:164,1
    - Dst: ENL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:180,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:182,1
    - Dst: ENL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:189,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:191,1
    - Dst: InstrCountFiltered2
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:194,1
    - Dst: ENL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:211,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:213,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:232,1
    - Dst: ENL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:238,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:240,1
    - Dst: InstrCountFiltered2
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:243,1
    - Dst: InstrCountFiltered1
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:246,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:251,1
    - Dst: ENL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:253,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 70
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 59
    functionDepth: 4
    functionLinenumber: 59
    functionLinenumberEnd: 255
    functionName: ExecNestLoop
    functionSourceFile: /src/postgres/src/backend/executor/nodeNestloop.c
    functionUses: 0
    functionsReached:
    - CHECK_FOR_INTERRUPTS
    - castNode
    - ENL1_printf
    - TupIsNull
    - foreach
    - InstrCountFiltered1
    - ExecQual
    - slot_getattr
    - innerPlanState
    - IsA
    - outerPlanState
    - lfirst
    - ExecProject
    - bms_add_member
    - ResetExprContext
    - Assert
    - InstrCountFiltered2
    - ExecProcNode
    - ExecReScan
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecNestLoop(PlanState *pstate)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:267,1
    - Dst: NL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:269,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:275,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:285,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:296,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:296,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:296,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:301,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:301,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:301,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:306,1
    - Dst: ExecAssignProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:307,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:313,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:316,1
    - Dst: ExecInitNullTupleSlot
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:333,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:334,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:334,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:338,1
    - Dst: NL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:348,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - NestLoop*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 352
    functionName: ExecInitNestLoop
    functionSourceFile: /src/postgres/src/backend/executor/nodeNestloop.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExecAssignExprContext
    - ExecInitResultTupleSlotTL
    - innerPlan
    - NL1_printf
    - ExecInitNode
    - ExecAssignProjectionInfo
    - elog
    - ExecInitQual
    - outerPlan
    - outerPlanState
    - ExecGetResultType
    - innerPlanState
    - makeNode
    - ExecInitNullTupleSlot
    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:363,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:369,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:369,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:370,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:370,1
    - Dst: NL1_printf
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - NestLoopState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 360
    functionDepth: 1
    functionLinenumber: 360
    functionLinenumberEnd: 374
    functionName: ExecEndNestLoop
    functionSourceFile: /src/postgres/src/backend/executor/nodeNestloop.c
    functionUses: 0
    functionsReached:
    - ExecEndNode
    - NL1_printf
    - outerPlanState
    - innerPlanState
    linkageType: ''
    returnType: void
    signature: void ExecEndNestLoop(NestLoopState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:383,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeNestloop.c:390,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - NestLoopState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 380
    functionDepth: 1
    functionLinenumber: 380
    functionLinenumberEnd: 400
    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:59,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execSRF.c:74,1
    - Dst: ExecInitExprList
      Src: /src/postgres/src/backend/executor/execSRF.c:79,1
    - Dst: init_sexpr
      Src: /src/postgres/src/backend/executor/execSRF.c:81,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/execSRF.c:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - expr
    - econtext
    - parent
    argTypes:
    - Expr*
    - ExprContext*
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 90
    functionName: ExecInitTableFunctionResult
    functionSourceFile: /src/postgres/src/backend/executor/execSRF.c
    functionUses: 0
    functionsReached:
    - ExecInitExprList
    - IsA
    - init_sexpr
    - makeNode
    - ExecInitExpr
    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:132,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:133,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execSRF.c:135,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/backend/executor/execSRF.c:137,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execSRF.c:157,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execSRF.c:157,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execSRF.c:157,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execSRF.c:175,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execSRF.c:176,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execSRF.c:180,1
    - Dst: ExecEvalFuncArgs
      Src: /src/postgres/src/backend/executor/execSRF.c:181,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execSRF.c:202,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:208,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/execSRF.c:218,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/execSRF.c:225,1
    - Dst: pgstat_init_function_usage
      Src: /src/postgres/src/backend/executor/execSRF.c:230,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execSRF.c:234,1
    - Dst: pgstat_end_function_usage
      Src: /src/postgres/src/backend/executor/execSRF.c:236,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/execSRF.c:242,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:262,1
    - Dst: tuplestore_begin_heap
      Src: /src/postgres/src/backend/executor/execSRF.c:264,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/executor/execSRF.c:268,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/executor/execSRF.c:269,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:277,1
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/backend/executor/execSRF.c:287,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:292,1
    - Dst: lookup_rowtype_tupdesc_copy
      Src: /src/postgres/src/backend/executor/execSRF.c:300,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/executor/execSRF.c:300,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/executor/execSRF.c:301,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:303,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/executor/execSRF.c:311,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/executor/execSRF.c:312,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execSRF.c:313,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execSRF.c:314,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execSRF.c:315,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/executor/execSRF.c:322,1
    - Dst: tuplestore_puttuple
      Src: /src/postgres/src/backend/executor/execSRF.c:325,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execSRF.c:340,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/execSRF.c:341,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/executor/execSRF.c:342,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/executor/execSRF.c:348,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execSRF.c:363,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execSRF.c:364,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execSRF.c:365,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execSRF.c:371,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execSRF.c:372,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execSRF.c:373,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execSRF.c:378,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execSRF.c:379,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execSRF.c:380,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:397,1
    - Dst: tuplestore_begin_heap
      Src: /src/postgres/src/backend/executor/execSRF.c:399,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:401,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execSRF.c:408,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/execSRF.c:409,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/executor/execSRF.c:410,1
    - Dst: tupledesc_match
      Src: /src/postgres/src/backend/executor/execSRF.c:420,1
    - Dst: FreeTupleDesc
      Src: /src/postgres/src/backend/executor/execSRF.c:428,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:431,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 110
    argCount: 5
    argNames:
    - setexpr
    - econtext
    - argContext
    - expectedDesc
    - randomAccess
    argTypes:
    - SetExprState*
    - ExprContext*
    - MemoryContext
    - TupleDesc
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 100
    functionDepth: 4
    functionLinenumber: 100
    functionLinenumberEnd: 435
    functionName: ExecMakeTableFunctionResult
    functionSourceFile: /src/postgres/src/backend/executor/execSRF.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - CHECK_FOR_INTERRUPTS
    - ExecEvalFuncArgs
    - lookup_rowtype_tupdesc_copy
    - MemoryContextReset
    - tuplestore_begin_heap
    - list_length
    - ExecEvalExpr
    - HeapTupleHeaderGetTypMod
    - exprType
    - HeapTupleHeaderGetDatumLength
    - pgstat_end_function_usage
    - tupledesc_match
    - FreeTupleDesc
    - CreateTemplateTupleDesc
    - FunctionCallInvoke
    - errmsg
    - InitFunctionCallInfoData
    - DatumGetHeapTupleHeader
    - pgstat_init_function_usage
    - tuplestore_putvalues
    - TupleDescInitEntry
    - palloc
    - type_is_rowtype
    - ResetExprContext
    - Assert
    - SizeForFunctionCallInfo
    - memset
    - ereport
    - tuplestore_puttuple
    - HeapTupleHeaderGetTypeId
    - errcode
    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:447,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execSRF.c:457,1
    - Dst: ExecInitExprList
      Src: /src/postgres/src/backend/executor/execSRF.c:461,1
    - Dst: init_sexpr
      Src: /src/postgres/src/backend/executor/execSRF.c:462,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execSRF.c:465,1
    - Dst: ExecInitExprList
      Src: /src/postgres/src/backend/executor/execSRF.c:469,1
    - Dst: init_sexpr
      Src: /src/postgres/src/backend/executor/execSRF.c:470,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execSRF.c:474,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execSRF.c:475,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execSRF.c:478,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - expr
    - econtext
    - parent
    argTypes:
    - Expr*
    - ExprContext*
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 443
    functionDepth: 1
    functionLinenumber: 443
    functionLinenumberEnd: 481
    functionName: ExecInitFunctionResultSet
    functionSourceFile: /src/postgres/src/backend/executor/execSRF.c
    functionUses: 1
    functionsReached:
    - nodeTag
    - Assert
    - ExecInitExprList
    - IsA
    - elog
    - init_sexpr
    - makeNode
    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:514,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:532,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/execSRF.c:533,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:535,1
    - Dst: ExecFetchSlotHeapTupleDatum
      Src: /src/postgres/src/backend/executor/execSRF.c:544,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/execSRF.c:549,1
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/execSRF.c:553,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:574,1
    - Dst: ExecEvalFuncArgs
      Src: /src/postgres/src/backend/executor/execSRF.c:576,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:577,1
    - Dst: pgstat_init_function_usage
      Src: /src/postgres/src/backend/executor/execSRF.c:620,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execSRF.c:624,1
    - Dst: pgstat_end_function_usage
      Src: /src/postgres/src/backend/executor/execSRF.c:628,1
    - Dst: RegisterExprContextCallback
      Src: /src/postgres/src/backend/executor/execSRF.c:653,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execSRF.c:655,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execSRF.c:665,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execSRF.c:666,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execSRF.c:667,1
    - Dst: ExecPrepareTuplestoreResult
      Src: /src/postgres/src/backend/executor/execSRF.c:671,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execSRF.c:683,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execSRF.c:684,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execSRF.c:685,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: 689
      start: 496
    functionDepth: 3
    functionLinenumber: 496
    functionLinenumberEnd: 689
    functionName: ExecMakeFunctionResultSet
    functionSourceFile: /src/postgres/src/backend/executor/execSRF.c
    functionUses: 1
    functionsReached:
    - check_stack_depth
    - errmsg
    - MemoryContextSwitchTo
    - pgstat_init_function_usage
    - pgstat_end_function_usage
    - ExecEvalFuncArgs
    - RegisterExprContextCallback
    - tuplestore_end
    - ExecFetchSlotHeapTupleDatum
    - ereport
    - tuplestore_gettupleslot
    - PointerGetDatum
    - ExecPrepareTuplestoreResult
    - slot_getattr
    - errcode
    - FunctionCallInvoke
    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:701,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/execSRF.c:704,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/executor/execSRF.c:704,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/execSRF.c:706,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/execSRF.c:706,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/execSRF.c:707,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execSRF.c:715,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execSRF.c:716,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execSRF.c:717,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/executor/execSRF.c:718,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/executor/execSRF.c:724,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/execSRF.c:725,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execSRF.c:729,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execSRF.c:729,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execSRF.c:730,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execSRF.c:736,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execSRF.c:737,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execSRF.c:738,1
    - Dst: executor_errposition
      Src: /src/postgres/src/backend/executor/execSRF.c:739,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/executor/execSRF.c:740,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execSRF.c:743,1
    - Dst: get_expr_result_type
      Src: /src/postgres/src/backend/executor/execSRF.c:753,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:758,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execSRF.c:764,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/executor/execSRF.c:766,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/executor/execSRF.c:772,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/executor/execSRF.c:773,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:794,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    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: 803
      start: 695
    functionDepth: 4
    functionLinenumber: 695
    functionLinenumberEnd: 803
    functionName: init_sexpr
    functionSourceFile: /src/postgres/src/backend/executor/execSRF.c
    functionUses: 2
    functionsReached:
    - fmgr_info_set_expr
    - MemoryContextSwitchTo
    - CreateTupleDescCopy
    - executor_errposition
    - list_length
    - InvokeFunctionExecuteHook
    - GetUserId
    - object_aclcheck
    - get_expr_result_type
    - fmgr_info_cxt
    - CreateTemplateTupleDesc
    - errmsg
    - InitFunctionCallInfoData
    - exprLocation
    - aclcheck_error
    - TupleDescInitEntry
    - errmsg_plural
    - palloc
    - Assert
    - SizeForFunctionCallInfo
    - get_func_name
    - ereport
    - errcode
    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:812,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execSRF.c:812,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execSRF.c:816,1
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/execSRF.c:820,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 809
    functionDepth: 1
    functionLinenumber: 809
    functionLinenumberEnd: 828
    functionName: ShutdownSetExpr
    functionSourceFile: /src/postgres/src/backend/executor/execSRF.c
    functionUses: 0
    functionsReached:
    - ExecClearTuple
    - tuplestore_end
    - DatumGetPointer
    - castNode
    linkageType: ''
    returnType: void
    signature: void ShutdownSetExpr(Datum arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execSRF.c:844,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/execSRF.c:846,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execSRF.c:852,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - fcinfo
    - argList
    - econtext
    argTypes:
    - FunctionCallInfo
    - List*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 833
    functionDepth: 1
    functionLinenumber: 833
    functionLinenumberEnd: 853
    functionName: ExecEvalFuncArgs
    functionSourceFile: /src/postgres/src/backend/executor/execSRF.c
    functionUses: 2
    functionsReached:
    - Assert
    - ExecEvalExpr
    - lfirst
    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:844,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/execSRF.c:846,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 850
      start: 842
    functionDepth: 1
    functionLinenumber: 842
    functionLinenumberEnd: 850
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execSRF.c
    functionUses: 375
    functionsReached:
    - ExecEvalExpr
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(arg, argList)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:877,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/executor/execSRF.c:888,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execSRF.c:892,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execSRF.c:893,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execSRF.c:894,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/execSRF.c:899,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execSRF.c:901,1
    - Dst: tupledesc_match
      Src: /src/postgres/src/backend/executor/execSRF.c:911,1
    - Dst: FreeTupleDesc
      Src: /src/postgres/src/backend/executor/execSRF.c:919,1
    - Dst: RegisterExprContextCallback
      Src: /src/postgres/src/backend/executor/execSRF.c:925,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execSRF.c:927,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 4
    argNames:
    - sexpr
    - econtext
    - resultStore
    - resultDesc
    argTypes:
    - SetExprState*
    - ExprContext*
    - Tuplestorestate*
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 863
    functionDepth: 4
    functionLinenumber: 863
    functionLinenumberEnd: 930
    functionName: ExecPrepareTuplestoreResult
    functionSourceFile: /src/postgres/src/backend/executor/execSRF.c
    functionUses: 1
    functionsReached:
    - errmsg
    - MemoryContextSwitchTo
    - CreateTupleDescCopy
    - tupledesc_match
    - RegisterExprContextCallback
    - ereport
    - PointerGetDatum
    - MakeSingleTupleTableSlot
    - FreeTupleDesc
    - errcode
    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:948,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execSRF.c:949,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execSRF.c:950,1
    - Dst: errdetail_plural
      Src: /src/postgres/src/backend/executor/execSRF.c:951,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execSRF.c:958,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execSRF.c:959,1
    - Dst: IsBinaryCoercible
      Src: /src/postgres/src/backend/executor/execSRF.c:961,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execSRF.c:964,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execSRF.c:965,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execSRF.c:966,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execSRF.c:967,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execSRF.c:968,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execSRF.c:970,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execSRF.c:974,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execSRF.c:975,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execSRF.c:976,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execSRF.c:977,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 2
    argNames:
    - dst_tupdesc
    - src_tupdesc
    argTypes:
    - TupleDesc
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 942
    functionDepth: 2
    functionLinenumber: 942
    functionLinenumberEnd: 980
    functionName: tupledesc_match
    functionSourceFile: /src/postgres/src/backend/executor/execSRF.c
    functionUses: 2
    functionsReached:
    - errmsg
    - errdetail_plural
    - TupleDescAttr
    - format_type_be
    - ereport
    - IsBinaryCoercible
    - errdetail
    - errcode
    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
      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:
    - Assert
    - linitial
    - IsCTIDVar
    - IsA
    - palloc0
    - foreach
    - get_leftop
    - get_rightop
    - elog
    - lsecond
    - lappend
    - is_opclause
    - list_length
    - ExecInitExpr
    - lfirst
    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: 2
    functionLinenumber: 133
    functionLinenumberEnd: 277
    functionName: TidListEval
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidscan.c
    functionUses: 0
    functionsReached:
    - table_beginscan_tid
    - pfree
    - Assert
    - DatumGetArrayTypeP
    - qsort
    - ExecEvalExprSwitchContext
    - deconstruct_array_builtin
    - RelationGetRelid
    - qunique
    - foreach
    - list_length
    - table_tuple_tid_valid
    - execCurrentOf
    - repalloc
    - palloc
    - DatumGetPointer
    - lfirst
    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:
    - ItemPointerGetOffsetNumber
    - ItemPointerGetBlockNumber
    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: 3
    functionLinenumber: 311
    functionLinenumberEnd: 397
    functionName: TidNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidscan.c
    functionUses: 0
    functionsReached:
    - CHECK_FOR_INTERRUPTS
    - ScanDirectionIsBackward
    - TidListEval
    - table_tuple_fetch_row_version
    - ExecClearTuple
    - table_tuple_get_latest_tid
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      TidNext(TidScanState *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - slot
    argTypes:
    - TidScanState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 411
    functionName: TidRecheck
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidscan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool TidRecheck(TidScanState *node, TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:435,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:437,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 432
    functionDepth: 1
    functionLinenumber: 432
    functionLinenumberEnd: 440
    functionName: ExecTidScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidscan.c
    functionUses: 0
    functionsReached:
    - ExecScan
    - castNode
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecTidScan(PlanState *pstate)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:450,1
    - Dst: table_rescan
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:457,1
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:459,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - node
    argTypes:
    - TidScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 446
    functionDepth: 1
    functionLinenumber: 446
    functionLinenumberEnd: 460
    functionName: ExecReScanTidScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidscan.c
    functionUses: 0
    functionsReached:
    - ExecScanReScan
    - pfree
    - 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:473,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - TidScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 469
    functionDepth: 1
    functionLinenumber: 469
    functionLinenumberEnd: 474
    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:496,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:506,1
    - Dst: ExecOpenScanRelation
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:518,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:526,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:527,1
    - Dst: table_slot_callbacks
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:528,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:533,1
    - Dst: ExecAssignScanProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:534,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:540,1
    - Dst: TidExprListCreate
      Src: /src/postgres/src/backend/executor/nodeTidscan.c:542,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - TidScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 487
    functionDepth: 2
    functionLinenumber: 487
    functionLinenumberEnd: 548
    functionName: ExecInitTidScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidscan.c
    functionUses: 0
    functionsReached:
    - ExecInitScanTupleSlot
    - ExecAssignExprContext
    - ExecOpenScanRelation
    - RelationGetDescr
    - table_slot_callbacks
    - TidExprListCreate
    - ExecInitQual
    - ExecInitResultTypeTL
    - ExecAssignScanProjectionInfo
    - makeNode
    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:35,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:35,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:37,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: 4
    argCount: 1
    argNames:
    - rustate
    argTypes:
    - RecursiveUnionState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 59
    functionName: build_hash_table
    functionSourceFile: /src/postgres/src/backend/executor/nodeRecursiveunion.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExecGetResultType
    - outerPlanState
    - ExecGetCommonChildSlotOps
    - BuildTupleHashTable
    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:
    - ExecProcNode
    - CHECK_FOR_INTERRUPTS
    - TupIsNull
    - MemoryContextReset
    - tuplestore_clear
    - LookupTupleHashEntry
    - castNode
    - outerPlanState
    - innerPlanState
    - tuplestore_puttupleslot
    - bms_add_member
    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:217,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:221,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:231,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:232,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:241,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:247,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:259,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:259,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:259,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:260,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:260,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:260,1
    - Dst: execTuplesHashPrepare
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:268,1
    - Dst: build_hash_table
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:272,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 33
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - RecursiveUnion*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 276
    functionName: ExecInitRecursiveUnion
    functionSourceFile: /src/postgres/src/backend/executor/nodeRecursiveunion.c
    functionUses: 0
    functionsReached:
    - Assert
    - innerPlan
    - tuplestore_begin_heap
    - ExecInitNode
    - PointerGetDatum
    - build_hash_table
    - outerPlan
    - AllocSetContextCreate
    - outerPlanState
    - ExecInitResultTypeTL
    - innerPlanState
    - makeNode
    - execTuplesHashPrepare
    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:288,1
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:289,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:293,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:295,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:300,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:300,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:301,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:301,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - node
    argTypes:
    - RecursiveUnionState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 302
    functionName: ExecEndRecursiveUnion
    functionSourceFile: /src/postgres/src/backend/executor/nodeRecursiveunion.c
    functionUses: 0
    functionsReached:
    - MemoryContextDelete
    - tuplestore_end
    - ExecEndNode
    - outerPlanState
    - innerPlanState
    linkageType: ''
    returnType: void
    signature: void ExecEndRecursiveUnion(RecursiveUnionState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:313,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:314,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:321,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:329,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:333,1
    - Dst: ResetTupleHashTable
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:337,1
    - Dst: tuplestore_clear
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:342,1
    - Dst: tuplestore_clear
      Src: /src/postgres/src/backend/executor/nodeRecursiveunion.c:343,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - node
    argTypes:
    - RecursiveUnionState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 310
    functionDepth: 3
    functionLinenumber: 310
    functionLinenumberEnd: 344
    functionName: ExecReScanRecursiveUnion
    functionSourceFile: /src/postgres/src/backend/executor/nodeRecursiveunion.c
    functionUses: 0
    functionsReached:
    - ResetTupleHashTable
    - MemoryContextReset
    - tuplestore_clear
    - outerPlanState
    - ExecReScan
    - innerPlanState
    - 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:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 47
    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:58,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:66,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:71,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:73,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:89,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:91,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - BitmapOr*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 104
    functionName: ExecInitBitmapOr
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapOr.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExecInitNode
    - palloc0
    - foreach
    - list_length
    - makeNode
    - lfirst
    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:120,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:141,1
    - Dst: tbm_create
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:146,1
    - Dst: MultiExecProcNode
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:153,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:156,1
    - Dst: MultiExecProcNode
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:161,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:163,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:164,1
    - Dst: tbm_union
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:170,1
    - Dst: tbm_free
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:171,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:178,1
    - Dst: InstrStopNode
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:182,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapOrState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 110
    functionDepth: 2
    functionLinenumber: 110
    functionLinenumberEnd: 185
    functionName: MultiExecBitmapOr
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapOr.c
    functionUses: 0
    functionsReached:
    - tbm_create
    - tbm_union
    - MultiExecProcNode
    - tbm_free
    - IsA
    - elog
    - InstrStartNode
    - InstrStopNode
    linkageType: ''
    returnType: Node
    signature: 'Node *

      MultiExecBitmapOr(BitmapOrState *node)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:214,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapOrState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 216
    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:232,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeBitmapOr.c:239,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapOrState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 241
    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:68,1
    - Dst: convert_tuples_by_position
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:82,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:91,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:95,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:97,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:105,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 3
    argNames:
    - self
    - operation
    - typeinfo
    argTypes:
    - DestReceiver*
    - int
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 55
    functionDepth: 4
    functionLinenumber: 55
    functionLinenumberEnd: 115
    functionName: tstoreStartupReceiver
    functionSourceFile: /src/postgres/src/backend/executor/tstoreReceiver.c
    functionUses: 0
    functionsReached:
    - convert_tuples_by_position
    - Assert
    - MakeSingleTupleTableSlot
    - TupleDescCompactAttr
    - MemoryContextAlloc
    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:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - slot
    - self
    argTypes:
    - TupleTableSlot*
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 129
    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:146,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:157,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:161,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:161,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:163,1
    - Dst: detoast_external_attr
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:163,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:164,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:175,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:176,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:178,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:182,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:182,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - slot
    - self
    argTypes:
    - TupleTableSlot*
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 135
    functionDepth: 3
    functionLinenumber: 135
    functionLinenumberEnd: 185
    functionName: tstoreReceiveSlot_detoast
    functionSourceFile: /src/postgres/src/backend/executor/tstoreReceiver.c
    functionUses: 0
    functionsReached:
    - pfree
    - MemoryContextSwitchTo
    - tuplestore_putvalues
    - slot_getallattrs
    - VARATT_IS_EXTERNAL
    - PointerGetDatum
    - TupleDescCompactAttr
    - detoast_external_attr
    - 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:196,1
    - Dst: tuplestore_puttupleslot
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - slot
    - self
    argTypes:
    - TupleTableSlot*
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 191
    functionDepth: 4
    functionLinenumber: 191
    functionLinenumberEnd: 200
    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:212,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:215,1
    - Dst: free_conversion_map
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:218,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:221,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - self
    argTypes:
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 205
    functionDepth: 2
    functionLinenumber: 205
    functionLinenumberEnd: 223
    functionName: tstoreShutdownReceiver
    functionSourceFile: /src/postgres/src/backend/executor/tstoreReceiver.c
    functionUses: 0
    functionsReached:
    - pfree
    - ExecDropSingleTupleTableSlot
    - free_conversion_map
    linkageType: ''
    returnType: void
    signature: void tstoreShutdownReceiver(DestReceiver *self)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - self
    argTypes:
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 232
    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
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 251
    functionName: CreateTuplestoreDestReceiver
    functionSourceFile: /src/postgres/src/backend/executor/tstoreReceiver.c
    functionUses: 1
    functionsReached:
    - palloc0
    linkageType: ''
    returnType: DestReceiver
    signature: 'DestReceiver *

      CreateTuplestoreDestReceiver(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:275,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/tstoreReceiver.c:277,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: 283
      start: 265
    functionDepth: 1
    functionLinenumber: 265
    functionLinenumberEnd: 283
    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:
    - ExecQualAndReset
    - TupIsNull
    - CHECK_FOR_INTERRUPTS
    - ExecProcNode
    - castNode
    - outerPlanState
    - ExecCopySlot
    - ExecClearTuple
    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:
    - Assert
    - ExecAssignExprContext
    - ExecInitResultTupleSlotTL
    - execTuplesMatchPrepare
    - ExecInitNode
    - ExecGetResultType
    - outerPlan
    - outerPlanState
    - makeNode
    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:
    - ExecEndNode
    - outerPlanState
    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:
    - ExecClearTuple
    - outerPlanState
    - ExecReScan
    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:
    - ExecScan
    - castNode
    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:136,1
    - Dst: ExecAssignScanProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:137,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:143,1
    - Dst: ExecInitExprList
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:145,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:147,1
    - Dst: pg_prng_uint32
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:154,1
    - Dst: GetTsmRoutine
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:159,1
    - Dst: TsmRoutine*::InitSampleScan
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:164,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - SampleScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 92
    functionDepth: 3
    functionLinenumber: 92
    functionLinenumberEnd: 170
    functionName: ExecInitSampleScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSamplescan.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExecInitExprList
    - ExecInitScanTupleSlot
    - ExecAssignExprContext
    - ExecOpenScanRelation
    - RelationGetDescr
    - GetTsmRoutine
    - table_slot_callbacks
    - TsmRoutine*::InitSampleScan
    - ExecInitQual
    - outerPlan
    - ExecInitResultTypeTL
    - ExecAssignScanProjectionInfo
    - innerPlan
    - makeNode
    - ExecInitExpr
    - pg_prng_uint32
    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:185,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:191,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - SampleScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 192
    functionName: ExecEndSampleScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSamplescan.c
    functionUses: 0
    functionsReached:
    - SampleScanState*::tsmroutine::EndSampleScan
    - table_endscan
    linkageType: ''
    returnType: void
    signature: void ExecEndSampleScan(SampleScanState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - SampleScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 211
    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
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:231,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:231,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:234,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:236,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:238,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:242,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:243,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:244,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:250,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:254,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:255,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:256,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:270,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:270,1
    - Dst: TsmRoutine*::BeginSampleScan
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:283,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:285,1
    - Dst: table_beginscan_sampling
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:295,1
    - Dst: table_rescan_set_params
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:304,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:310,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 1
    argNames:
    - scanstate
    argTypes:
    - SampleScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 217
    functionDepth: 2
    functionLinenumber: 217
    functionLinenumberEnd: 314
    functionName: tablesample_init
    functionSourceFile: /src/postgres/src/backend/executor/nodeSamplescan.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - pfree
    - TsmRoutine*::BeginSampleScan
    - ExecEvalExprSwitchContext
    - ereport
    - foreach
    - list_length
    - table_beginscan_sampling
    - DatumGetUInt32
    - table_rescan_set_params
    - palloc
    - DirectFunctionCall1
    - lfirst
    linkageType: ''
    returnType: void
    signature: void tablesample_init(SampleScanState *scanstate)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:325,1
    - Dst: table_scan_sample_next_block
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:334,1
    - Dst: table_scan_sample_next_tuple
      Src: /src/postgres/src/backend/executor/nodeSamplescan.c:346,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - scanstate
    argTypes:
    - SampleScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 319
    functionDepth: 2
    functionLinenumber: 319
    functionLinenumberEnd: 363
    functionName: tablesample_getnext
    functionSourceFile: /src/postgres/src/backend/executor/nodeSamplescan.c
    functionUses: 1
    functionsReached:
    - ExecClearTuple
    - table_scan_sample_next_block
    - table_scan_sample_next_tuple
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      tablesample_getnext(SampleScanState *scanstate)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/executor/execIndexing.c:173,1
    - Dst: RelationGetIndexList
      Src: /src/postgres/src/backend/executor/execIndexing.c:179,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execIndexing.c:180,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execIndexing.c:185,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execIndexing.c:190,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execIndexing.c:191,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/execIndexing.c:207,1
    - Dst: index_open
      Src: /src/postgres/src/backend/executor/execIndexing.c:211,1
    - Dst: BuildIndexInfo
      Src: /src/postgres/src/backend/executor/execIndexing.c:214,1
    - Dst: BuildSpeculativeIndexInfo
      Src: /src/postgres/src/backend/executor/execIndexing.c:221,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/execIndexing.c:228,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - resultRelInfo
    - speculative
    argTypes:
    - ResultRelInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 159
    functionDepth: 5
    functionLinenumber: 159
    functionLinenumberEnd: 229
    functionName: ExecOpenIndices
    functionSourceFile: /src/postgres/src/backend/executor/execIndexing.c
    functionUses: 4
    functionsReached:
    - Assert
    - RelationGetIndexList
    - list_length
    - RelationGetForm
    - palloc
    - lfirst_oid
    - BuildSpeculativeIndexInfo
    - list_free
    - index_open
    - BuildIndexInfo
    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:207,1
    - Dst: index_open
      Src: /src/postgres/src/backend/executor/execIndexing.c:211,1
    - Dst: BuildIndexInfo
      Src: /src/postgres/src/backend/executor/execIndexing.c:214,1
    - Dst: BuildSpeculativeIndexInfo
      Src: /src/postgres/src/backend/executor/execIndexing.c:221,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 205
    functionDepth: 5
    functionLinenumber: 205
    functionLinenumberEnd: 226
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execIndexing.c
    functionUses: 379
    functionsReached:
    - lfirst_oid
    - BuildSpeculativeIndexInfo
    - index_open
    - BuildIndexInfo
    linkageType: ''
    returnType: void
    signature: void foreach(l, indexoidlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execIndexing.c:252,1
    - Dst: index_insert_cleanup
      Src: /src/postgres/src/backend/executor/execIndexing.c:255,1
    - Dst: index_close
      Src: /src/postgres/src/backend/executor/execIndexing.c:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - resultRelInfo
    argTypes:
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 237
    functionDepth: 2
    functionLinenumber: 237
    functionLinenumberEnd: 269
    functionName: ExecCloseIndices
    functionSourceFile: /src/postgres/src/backend/executor/execIndexing.c
    functionUses: 4
    functionsReached:
    - index_close
    - Assert
    - 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:443,1
    - Dst: index_insert
      Src: /src/postgres/src/backend/executor/execIndexing.c:449,1
    - Dst: check_exclusion_or_unique_constraint
      Src: /src/postgres/src/backend/executor/execIndexing.c:494,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/executor/execIndexing.c:511,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execIndexing.c:511,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 58
    argCount: 8
    argNames:
    - resultRelInfo
    - slot
    - estate
    - update
    - noDupErr
    - specConflict
    - arbiterIndexes
    - onlySummarizing
    argTypes:
    - ResultRelInfo*
    - TupleTableSlot*
    - EState*
    - bool
    - bool
    - bool*
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 308
    functionDepth: 6
    functionLinenumber: 308
    functionLinenumberEnd: 518
    functionName: ExecInsertIndexTuples
    functionSourceFile: /src/postgres/src/backend/executor/execIndexing.c
    functionUses: 0
    functionsReached:
    - Assert
    - check_exclusion_or_unique_constraint
    - ExecPrepareQual
    - RelationGetRelid
    - lappend_oid
    - FormIndexDatum
    - index_insert
    - ItemPointerIsValid
    - GetPerTupleExprContext
    - list_member_oid
    - ExecQual
    - index_unchanged_by_update
    linkageType: ''
    returnType: List
    signature: "List *\nExecInsertIndexTuples(ResultRelInfo *resultRelInfo,\n\t\t\t\t\t
      \ TupleTableSlot *slot,\n\t\t\t\t\t  EState *estate,\n\t\t\t\t\t  bool update,\n\t\t\t\t\t
      \ bool noDupErr,\n\t\t\t\t\t  bool *specConflict,\n\t\t\t\t\t  List *arbiterIndexes,\n\t\t\t\t\t
      \ bool onlySummarizing)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/executor/execIndexing.c:557,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/executor/execIndexing.c:558,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execIndexing.c:572,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/executor/execIndexing.c:601,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execIndexing.c:606,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execIndexing.c:607,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execIndexing.c:608,1
    - Dst: errtableconstraint
      Src: /src/postgres/src/backend/executor/execIndexing.c:609,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execIndexing.c:610,1
    - Dst: ExecPrepareQual
      Src: /src/postgres/src/backend/executor/execIndexing.c:626,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/execIndexing.c:631,1
    - Dst: FormIndexDatum
      Src: /src/postgres/src/backend/executor/execIndexing.c:639,1
    - Dst: check_exclusion_or_unique_constraint
      Src: /src/postgres/src/backend/executor/execIndexing.c:646,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execIndexing.c:656,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 39
    argCount: 6
    argNames:
    - resultRelInfo
    - slot
    - estate
    - conflictTid
    - tupleid
    - arbiterIndexes
    argTypes:
    - ResultRelInfo*
    - TupleTableSlot*
    - EState*
    - ItemPointer
    - ItemPointer
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 541
    functionDepth: 4
    functionLinenumber: 541
    functionLinenumberEnd: 659
    functionName: ExecCheckIndexConstraints
    functionSourceFile: /src/postgres/src/backend/executor/execIndexing.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errtableconstraint
    - check_exclusion_or_unique_constraint
    - ExecPrepareQual
    - FormIndexDatum
    - ItemPointerSetInvalid
    - ereport
    - GetPerTupleExprContext
    - elog
    - list_member_oid
    - ExecQual
    - RelationGetRelationName
    - errcode
    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
      \ ItemPointer tupleid, List *arbiterIndexes)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/executor/execIndexing.c:716,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execIndexing.c:754,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execIndexing.c:755,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/executor/execIndexing.c:756,1
    - Dst: ExecWithoutOverlapsNotEmpty
      Src: /src/postgres/src/backend/executor/execIndexing.c:758,1
    - Dst: InitDirtySnapshot
      Src: /src/postgres/src/backend/executor/execIndexing.c:784,1
    - Dst: ScanKeyEntryInitialize
      Src: /src/postgres/src/backend/executor/execIndexing.c:788,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/execIndexing.c:805,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execIndexing.c:807,1
    - Dst: index_beginscan
      Src: /src/postgres/src/backend/executor/execIndexing.c:818,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/execIndexing.c:819,1
    - Dst: index_getnext_slot
      Src: /src/postgres/src/backend/executor/execIndexing.c:821,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/executor/execIndexing.c:833,1
    - Dst: ItemPointerEquals
      Src: /src/postgres/src/backend/executor/execIndexing.c:834,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execIndexing.c:837,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execIndexing.c:838,1
    - Dst: FormIndexDatum
      Src: /src/postgres/src/backend/executor/execIndexing.c:847,1
    - Dst: index_recheck_constraint
      Src: /src/postgres/src/backend/executor/execIndexing.c:853,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/executor/execIndexing.c:872,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/executor/execIndexing.c:875,1
    - Dst: TransactionIdPrecedes
      Src: /src/postgres/src/backend/executor/execIndexing.c:879,1
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/executor/execIndexing.c:879,1
    - Dst: index_endscan
      Src: /src/postgres/src/backend/executor/execIndexing.c:883,1
    - Dst: SpeculativeInsertionWait
      Src: /src/postgres/src/backend/executor/execIndexing.c:885,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/executor/execIndexing.c:888,1
    - Dst: BuildIndexValueDescription
      Src: /src/postgres/src/backend/executor/execIndexing.c:905,1
    - Dst: BuildIndexValueDescription
      Src: /src/postgres/src/backend/executor/execIndexing.c:906,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execIndexing.c:909,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execIndexing.c:910,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execIndexing.c:911,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execIndexing.c:912,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execIndexing.c:914,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execIndexing.c:916,1
    - Dst: errtableconstraint
      Src: /src/postgres/src/backend/executor/execIndexing.c:917,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execIndexing.c:918,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execIndexing.c:920,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execIndexing.c:921,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execIndexing.c:922,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execIndexing.c:923,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execIndexing.c:925,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execIndexing.c:927,1
    - Dst: errtableconstraint
      Src: /src/postgres/src/backend/executor/execIndexing.c:928,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execIndexing.c:929,1
    - Dst: index_endscan
      Src: /src/postgres/src/backend/executor/execIndexing.c:932,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/execIndexing.c:944,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 71
    argCount: 11
    argNames:
    - heap
    - index
    - indexInfo
    - tupleid
    - values
    - isnull
    - estate
    - newIndex
    - waitMode
    - violationOK
    - conflictTid
    argTypes:
    - Relation
    - Relation
    - IndexInfo*
    - ItemPointer
    - Datum*
    - bool*
    - EState*
    - bool
    - CEOUC_WAIT_MODE
    - bool
    - ItemPointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 947
      start: 703
    functionDepth: 4
    functionLinenumber: 703
    functionLinenumberEnd: 947
    functionName: check_exclusion_or_unique_constraint
    functionSourceFile: /src/postgres/src/backend/executor/execIndexing.c
    functionUses: 2
    functionsReached:
    - errtableconstraint
    - table_slot_create
    - XactLockTableWait
    - GetPerTupleExprContext
    - ExecWithoutOverlapsNotEmpty
    - RelationGetRelationName
    - errdetail
    - FormIndexDatum
    - GetCurrentTransactionId
    - index_getnext_slot
    - lookup_type_cache
    - InitDirtySnapshot
    - index_recheck_constraint
    - TransactionIdPrecedes
    - IndexRelationGetNumberOfKeyAttributes
    - errmsg
    - ExecDropSingleTupleTableSlot
    - TransactionIdIsValid
    - ScanKeyEntryInitialize
    - TupleDescAttr
    - index_endscan
    - ItemPointerIsValid
    - index_rescan
    - ItemPointerEquals
    - elog
    - index_beginscan
    - RelationGetDescr
    - ereport
    - SpeculativeInsertionWait
    - BuildIndexValueDescription
    - errcode
    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 ItemPointer
      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:962,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 8
    argNames:
    - heap
    - index
    - indexInfo
    - tupleid
    - values
    - isnull
    - estate
    - newIndex
    argTypes:
    - Relation
    - Relation
    - IndexInfo*
    - ItemPointer
    - Datum*
    - bool*
    - EState*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 955
    functionDepth: 5
    functionLinenumber: 955
    functionLinenumberEnd: 966
    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   ItemPointer 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:977,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execIndexing.c:986,1
    - Dst: OidFunctionCall2Coll
      Src: /src/postgres/src/backend/executor/execIndexing.c:986,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: 994
      start: 972
    functionDepth: 1
    functionLinenumber: 972
    functionLinenumberEnd: 994
    functionName: index_recheck_constraint
    functionSourceFile: /src/postgres/src/backend/executor/execIndexing.c
    functionUses: 1
    functionsReached:
    - IndexRelationGetNumberOfKeyAttributes
    - OidFunctionCall2Coll
    - DatumGetBool
    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:1031,1
    - Dst: ExecGetExtraUpdatedCols
      Src: /src/postgres/src/backend/executor/execIndexing.c:1032,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execIndexing.c:1047,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execIndexing.c:1049,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/executor/execIndexing.c:1079,1
    - Dst: RelationGetIndexExpressions
      Src: /src/postgres/src/backend/executor/execIndexing.c:1089,1
    - Dst: index_expression_changed_walker
      Src: /src/postgres/src/backend/executor/execIndexing.c:1090,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/execIndexing.c:1092,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/executor/execIndexing.c:1094,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 4
    argNames:
    - resultRelInfo
    - estate
    - indexInfo
    - indexRelation
    argTypes:
    - ResultRelInfo*
    - EState*
    - IndexInfo*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1110
      start: 1003
    functionDepth: 4
    functionLinenumber: 1003
    functionLinenumberEnd: 1110
    functionName: index_unchanged_by_update
    functionSourceFile: /src/postgres/src/backend/executor/execIndexing.c
    functionUses: 1
    functionsReached:
    - RelationGetIndexExpressions
    - index_expression_changed_walker
    - bms_free
    - ExecGetExtraUpdatedCols
    - bms_union
    - bms_is_member
    - ExecGetUpdatedCols
    - list_free
    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:1123,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execIndexing.c:1127,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/executor/execIndexing.c:1138,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - node
    - allUpdatedCols
    argTypes:
    - Node*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1140
      start: 1117
    functionDepth: 3
    functionLinenumber: 1117
    functionLinenumberEnd: 1140
    functionName: index_expression_changed_walker
    functionSourceFile: /src/postgres/src/backend/executor/execIndexing.c
    functionUses: 1
    functionsReached:
    - bms_is_member
    - IsA
    - expression_tree_walker
    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:1156,1
    - Dst: RangeIsEmpty
      Src: /src/postgres/src/backend/executor/execIndexing.c:1157,1
    - Dst: DatumGetMultirangeTypeP
      Src: /src/postgres/src/backend/executor/execIndexing.c:1160,1
    - Dst: MultirangeIsEmpty
      Src: /src/postgres/src/backend/executor/execIndexing.c:1161,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execIndexing.c:1164,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/executor/execIndexing.c:1165,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execIndexing.c:1170,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execIndexing.c:1171,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execIndexing.c:1172,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/executor/execIndexing.c:1173,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execIndexing.c:1173,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: 1174
      start: 1146
    functionDepth: 2
    functionLinenumber: 1146
    functionLinenumberEnd: 1174
    functionName: ExecWithoutOverlapsNotEmpty
    functionSourceFile: /src/postgres/src/backend/executor/execIndexing.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - NameStr
    - MultirangeIsEmpty
    - ereport
    - elog
    - RangeIsEmpty
    - DatumGetRangeTypeP
    - RelationGetRelationName
    - DatumGetMultirangeTypeP
    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:255,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/functions.c:258,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/executor/functions.c:261,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/executor/functions.c:261,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/functions.c:276,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/functions.c:277,1
    - Dst: IsPolymorphicType
      Src: /src/postgres/src/backend/executor/functions.c:285,1
    - Dst: get_call_expr_argtype
      Src: /src/postgres/src/backend/executor/functions.c:287,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:289,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:290,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:291,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:292,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/executor/functions.c:310,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/functions.c:314,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/executor/functions.c:316,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/functions.c:320,1
    - Dst: get_func_input_arg_names
      Src: /src/postgres/src/backend/executor/functions.c:322,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 3
    argNames:
    - procedureTuple
    - call_expr
    - inputCollation
    argTypes:
    - HeapTuple
    - Node*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 333
    functionName: prepare_sql_fn_parse_info
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 3
    functionsReached:
    - errmsg
    - NameStr
    - get_call_expr_argtype
    - format_type_be
    - GETSTRUCT
    - palloc0
    - pstrdup
    - IsPolymorphicType
    - ereport
    - PointerGetDatum
    - get_func_input_arg_names
    - SysCacheGetAttr
    - memcpy
    - palloc
    - errcode
    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: 346
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 346
    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:386,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/functions.c:391,1
    - Dst: llast
      Src: /src/postgres/src/backend/executor/functions.c:391,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/functions.c:394,1
    - Dst: strVal
      Src: /src/postgres/src/backend/executor/functions.c:395,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/executor/functions.c:398,1
    - Dst: strVal
      Src: /src/postgres/src/backend/executor/functions.c:399,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/executor/functions.c:409,1
    - Dst: sql_fn_resolve_param_name
      Src: /src/postgres/src/backend/executor/functions.c:412,1
    - Dst: lthird
      Src: /src/postgres/src/backend/executor/functions.c:414,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:415,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/functions.c:415,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/executor/functions.c:417,1
    - Dst: sql_fn_resolve_param_name
      Src: /src/postgres/src/backend/executor/functions.c:423,1
    - Dst: sql_fn_resolve_param_name
      Src: /src/postgres/src/backend/executor/functions.c:433,1
    - Dst: sql_fn_resolve_param_name
      Src: /src/postgres/src/backend/executor/functions.c:439,1
    - Dst: ParseFuncOrColumn
      Src: /src/postgres/src/backend/executor/functions.c:452,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/executor/functions.c:453,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/executor/functions.c:454,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 3
    argNames:
    - pstate
    - cref
    - var
    argTypes:
    - ParseState*
    - ColumnRef*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 351
    functionDepth: 1
    functionLinenumber: 351
    functionLinenumberEnd: 462
    functionName: sql_fn_post_column_ref
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - Assert
    - linitial
    - llast
    - IsA
    - lsecond
    - list_length
    - sql_fn_resolve_param_name
    - lthird
    - list_make1
    - strVal
    - ParseFuncOrColumn
    - strcmp
    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:477,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - pstate
    - pref
    argTypes:
    - ParseState*
    - ParamRef*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 467
    functionDepth: 1
    functionLinenumber: 467
    functionLinenumberEnd: 478
    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:489,1
    - Dst: get_typcollation
      Src: /src/postgres/src/backend/executor/functions.c:494,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/functions.c:502,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/functions.c:502,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - pinfo
    - paramno
    - location
    argTypes:
    - SQLFunctionParseInfoPtr
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 483
    functionDepth: 1
    functionLinenumber: 483
    functionLinenumberEnd: 506
    functionName: sql_fn_make_param
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 1
    functionsReached:
    - makeNode
    - get_typcollation
    - OidIsValid
    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:524,1
    - Dst: sql_fn_make_param
      Src: /src/postgres/src/backend/executor/functions.c:525,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - pinfo
    - paramname
    - location
    argTypes:
    - SQLFunctionParseInfoPtr
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 513
    functionDepth: 2
    functionLinenumber: 513
    functionLinenumberEnd: 529
    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: 5
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/executor/functions.c:551,1
    - Dst: MemoryContextRegisterResetCallback
      Src: /src/postgres/src/backend/executor/functions.c:555,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:567,1
    - Dst: cached_function_compile
      Src: /src/postgres/src/backend/executor/functions.c:578,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:596,1
    - Dst: postquel_sub_params
      Src: /src/postgres/src/backend/executor/functions.c:609,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 2
    argNames:
    - fcinfo
    - lazyEvalOK
    argTypes:
    - FunctionCallInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 534
    functionDepth: 1
    functionLinenumber: 534
    functionLinenumberEnd: 621
    functionName: init_sql_fcache
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextRegisterResetCallback
    - postquel_sub_params
    - MemoryContextAllocZero
    - cached_function_compile
    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:643,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/functions.c:654,1
    - Dst: prepare_next_query
      Src: /src/postgres/src/backend/executor/functions.c:659,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/functions.c:664,1
    - Dst: GetCachedPlan
      Src: /src/postgres/src/backend/executor/functions.c:675,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/functions.c:683,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/functions.c:688,1
    - Dst: repalloc_array
      Src: /src/postgres/src/backend/executor/functions.c:691,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/functions.c:699,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/functions.c:701,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/functions.c:710,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:712,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:713,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:714,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/functions.c:716,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:717,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:718,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:720,1
    - Dst: CreateCommandName
      Src: /src/postgres/src/backend/executor/functions.c:721,1
    - Dst: CommandIsReadOnly
      Src: /src/postgres/src/backend/executor/functions.c:724,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:725,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:726,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:728,1
    - Dst: CreateCommandName
      Src: /src/postgres/src/backend/executor/functions.c:729,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/executor/functions.c:732,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/functions.c:781,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/functions.c:785,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:786,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/functions.c:788,1
    - Dst: get_sql_fn_result_tlist
      Src: /src/postgres/src/backend/executor/functions.c:795,1
    - Dst: ExecInitJunkFilterConversion
      Src: /src/postgres/src/backend/executor/functions.c:806,1
    - Dst: ExecInitJunkFilter
      Src: /src/postgres/src/backend/executor/functions.c:810,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/backend/executor/functions.c:825,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:830,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/backend/executor/functions.c:835,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 74
    argCount: 1
    argNames:
    - fcache
    argTypes:
    - SQLFunctionCachePtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 629
    functionDepth: 3
    functionLinenumber: 629
    functionLinenumberEnd: 869
    functionName: init_execution_state
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - ExecInitJunkFilterConversion
    - MemoryContextSwitchTo
    - MemoryContextReset
    - list_length
    - MemoryContextAlloc
    - GetCachedPlan
    - ExecInitJunkFilter
    - repalloc_array
    - foreach
    - prepare_next_query
    - foreach_current_index
    - ReleaseCachedPlan
    - errmsg
    - CreateCommandName
    - lfirst_node
    - IsA
    - list_nth
    - get_sql_fn_result_tlist
    - type_is_rowtype
    - BlessTupleDesc
    - ereport
    - MakeSingleTupleTableSlot
    - AllocSetContextCreate
    - CommandIsReadOnly
    - errcode
    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:886,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:887,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/executor/functions.c:902,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/executor/functions.c:904,1
    - Dst: CreateCachedPlanForQuery
      Src: /src/postgres/src/backend/executor/functions.c:905,1
    - Dst: CreateCommandTag
      Src: /src/postgres/src/backend/executor/functions.c:907,1
    - Dst: AcquireRewriteLocks
      Src: /src/postgres/src/backend/executor/functions.c:908,1
    - Dst: pg_rewrite_query
      Src: /src/postgres/src/backend/executor/functions.c:909,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/executor/functions.c:914,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/executor/functions.c:916,1
    - Dst: CreateCachedPlan
      Src: /src/postgres/src/backend/executor/functions.c:917,1
    - Dst: CreateCommandTag
      Src: /src/postgres/src/backend/executor/functions.c:919,1
    - Dst: pg_analyze_and_rewrite_withcb
      Src: /src/postgres/src/backend/executor/functions.c:920,1
    - Dst: check_sql_fn_statement
      Src: /src/postgres/src/backend/executor/functions.c:930,1
    - Dst: check_sql_stmt_retval
      Src: /src/postgres/src/backend/executor/functions.c:951,1
    - Dst: CompleteCachedPlan
      Src: /src/postgres/src/backend/executor/functions.c:961,1
    - Dst: SetPostRewriteHook
      Src: /src/postgres/src/backend/executor/functions.c:975,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:983,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/functions.c:984,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:985,1
    - Dst: SaveCachedPlan
      Src: /src/postgres/src/backend/executor/functions.c:991,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/functions.c:1001,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 1
    argNames:
    - func
    argTypes:
    - SQLFunctionHashEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 876
    functionDepth: 6
    functionLinenumber: 876
    functionLinenumberEnd: 1004
    functionName: prepare_next_query
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - CompleteCachedPlan
    - SaveCachedPlan
    - MemoryContextDelete
    - AcquireRewriteLocks
    - SetPostRewriteHook
    - list_length
    - pg_rewrite_query
    - lappend
    - copyObject
    - list_nth_node
    - CreateCommandTag
    - CreateCachedPlanForQuery
    - check_sql_stmt_retval
    - CreateCachedPlan
    - pg_analyze_and_rewrite_withcb
    - check_sql_fn_statement
    linkageType: ''
    returnType: void
    signature: void prepare_next_query(SQLFunctionHashEntry *func)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/executor/functions.c:1024,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/functions.c:1048,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/functions.c:1056,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/executor/functions.c:1065,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/executor/functions.c:1066,1
    - Dst: MemoryContextSetIdentifier
      Src: /src/postgres/src/backend/executor/functions.c:1067,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/executor/functions.c:1073,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1078,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/executor/functions.c:1079,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1080,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/executor/functions.c:1084,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1101,1
    - Dst: prepare_sql_fn_parse_info
      Src: /src/postgres/src/backend/executor/functions.c:1102,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/executor/functions.c:1104,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1105,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/functions.c:1112,1
    - Dst: get_typlen
      Src: /src/postgres/src/backend/executor/functions.c:1114,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/executor/functions.c:1119,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/executor/functions.c:1120,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/executor/functions.c:1121,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/executor/functions.c:1124,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/executor/functions.c:1133,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/executor/functions.c:1133,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/functions.c:1134,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/executor/functions.c:1135,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/functions.c:1135,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/executor/functions.c:1137,1
    - Dst: pg_parse_query
      Src: /src/postgres/src/backend/executor/functions.c:1143,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/functions.c:1151,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:1160,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:1161,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:1162,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:1163,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/functions.c:1164,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1167,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/executor/functions.c:1168,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1169,1
    - Dst: MemoryContextSetParent
      Src: /src/postgres/src/backend/executor/functions.c:1177,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: 1181
      start: 1016
    functionDepth: 4
    functionLinenumber: 1016
    functionLinenumberEnd: 1181
    functionName: sql_compile_callback
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - CreateTupleDescCopy
    - SysCacheGetAttrNotNull
    - castNode
    - list_length
    - SysCacheGetAttr
    - errdetail
    - pg_parse_query
    - NameStr
    - get_typlenbyval
    - GETSTRUCT
    - get_call_result_type
    - linitial_node
    - errmsg
    - format_type_be
    - prepare_sql_fn_parse_info
    - IsA
    - MemoryContextStrdup
    - stringToNode
    - TextDatumGetCString
    - list_make1
    - ereport
    - copyObject
    - AllocSetContextCreate
    - MemoryContextSetIdentifier
    - PG_GET_COLLATION
    - MemoryContextAlloc
    - errcode
    - MemoryContextSetParent
    - get_typlen
    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:1196,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/functions.c:1198,1
    - Dst: DropCachedPlan
      Src: /src/postgres/src/backend/executor/functions.c:1200,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/functions.c:1209,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - cfunc
    argTypes:
    - CachedFunction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1211
      start: 1189
    functionDepth: 1
    functionLinenumber: 1189
    functionLinenumberEnd: 1211
    functionName: sql_delete_callback
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - DropCachedPlan
    - MemoryContextDelete
    - lfirst
    - 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:1227,1
    - Dst: check_sql_stmt_retval
      Src: /src/postgres/src/backend/executor/functions.c:1239,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:1245,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:1246,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:1247,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - querytree_list
    - arg
    argTypes:
    - List*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1249
      start: 1219
    functionDepth: 1
    functionLinenumber: 1219
    functionLinenumberEnd: 1249
    functionName: sql_postrewrite_callback
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - errmsg
    - check_sql_fn_statement
    - ereport
    - check_sql_stmt_retval
    - errcode
    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:1258,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:1261,1
    - Dst: ActiveSnapshotSet
      Src: /src/postgres/src/backend/executor/functions.c:1261,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/functions.c:1276,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/functions.c:1291,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:1308,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1311,1
    - Dst: tuplestore_begin_heap
      Src: /src/postgres/src/backend/executor/functions.c:1312,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1318,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/executor/functions.c:1328,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:1331,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/functions.c:1336,1
    - Dst: CreateQueryDesc
      Src: /src/postgres/src/backend/executor/functions.c:1341,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/executor/functions.c:1343,1
    - Dst: ExecutorStart
      Src: /src/postgres/src/backend/executor/functions.c:1366,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1371,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 2
    argNames:
    - es
    - fcache
    argTypes:
    - execution_state*
    - SQLFunctionCachePtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1372
      start: 1252
    functionDepth: 2
    functionLinenumber: 1252
    functionLinenumberEnd: 1372
    functionName: postquel_start
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - CreateQueryDesc
    - CreateDestReceiver
    - GetActiveSnapshot
    - ExecutorStart
    - tuplestore_begin_heap
    - AllocSetContextCreate
    - ExecClearTuple
    - ActiveSnapshotSet
    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:1383,1
    - Dst: ProcessUtility
      Src: /src/postgres/src/backend/executor/functions.c:1387,1
    - Dst: ExecutorRun
      Src: /src/postgres/src/backend/executor/functions.c:1402,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1411,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - es
    - fcache
    argTypes:
    - execution_state*
    - SQLFunctionCachePtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1414
      start: 1376
    functionDepth: 2
    functionLinenumber: 1376
    functionLinenumberEnd: 1414
    functionName: postquel_getnext
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - ExecutorRun
    - MemoryContextSwitchTo
    - ProcessUtility
    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:1423,1
    - Dst: ExecutorFinish
      Src: /src/postgres/src/backend/executor/functions.c:1431,1
    - Dst: ExecutorEnd
      Src: /src/postgres/src/backend/executor/functions.c:1432,1
    - Dst: execution_state*::qd::dest::rDestroy
      Src: /src/postgres/src/backend/executor/functions.c:1435,1
    - Dst: FreeQueryDesc
      Src: /src/postgres/src/backend/executor/functions.c:1437,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1440,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/functions.c:1444,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - es
    - fcache
    argTypes:
    - execution_state*
    - SQLFunctionCachePtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1446
      start: 1417
    functionDepth: 2
    functionLinenumber: 1417
    functionLinenumberEnd: 1446
    functionName: postquel_end
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - execution_state*::qd::dest::rDestroy
    - MemoryContextSwitchTo
    - FreeQueryDesc
    - MemoryContextDelete
    - ExecutorFinish
    - ExecutorEnd
    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:1466,1
    - Dst: makeParamList
      Src: /src/postgres/src/backend/executor/functions.c:1467,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/functions.c:1469,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:1474,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/backend/executor/functions.c:1494,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - fcache
    - fcinfo
    argTypes:
    - SQLFunctionCachePtr
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1504
      start: 1449
    functionDepth: 1
    functionLinenumber: 1449
    functionLinenumberEnd: 1504
    functionName: postquel_sub_params
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 1
    functionsReached:
    - makeParamList
    - MemoryContextSwitchTo
    - Assert
    - MakeExpandedObjectReadOnly
    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:1529,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/functions.c:1537,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/functions.c:1540,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/functions.c:1544,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - slot
    - fcinfo
    - fcache
    argTypes:
    - TupleTableSlot*
    - FunctionCallInfo
    - SQLFunctionCachePtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1547
      start: 1512
    functionDepth: 3
    functionLinenumber: 1512
    functionLinenumberEnd: 1547
    functionName: postquel_get_single_result
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - ExecClearTuple
    - slot_getattr
    - ExecFetchSlotHeapTupleDatum
    - datumCopy
    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:1576,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:1579,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:1580,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:1581,1
    - Dst: init_sql_fcache
      Src: /src/postgres/src/backend/executor/functions.c:1598,1
    - Dst: init_execution_state
      Src: /src/postgres/src/backend/executor/functions.c:1623,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/executor/functions.c:1658,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/executor/functions.c:1661,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/executor/functions.c:1661,1
    - Dst: UpdateActiveSnapshotCommandId
      Src: /src/postgres/src/backend/executor/functions.c:1665,1
    - Dst: postquel_start
      Src: /src/postgres/src/backend/executor/functions.c:1668,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/executor/functions.c:1673,1
    - Dst: postquel_getnext
      Src: /src/postgres/src/backend/executor/functions.c:1677,1
    - Dst: postquel_end
      Src: /src/postgres/src/backend/executor/functions.c:1689,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/executor/functions.c:1717,1
    - Dst: init_execution_state
      Src: /src/postgres/src/backend/executor/functions.c:1721,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:1742,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:1744,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:1746,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/functions.c:1746,1
    - Dst: postquel_get_single_result
      Src: /src/postgres/src/backend/executor/functions.c:1748,1
    - Dst: RegisterExprContextCallback
      Src: /src/postgres/src/backend/executor/functions.c:1761,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/functions.c:1763,1
    - Dst: UnregisterExprContextCallback
      Src: /src/postgres/src/backend/executor/functions.c:1781,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/functions.c:1783,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:1798,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/executor/functions.c:1804,1
    - Dst: UnregisterExprContextCallback
      Src: /src/postgres/src/backend/executor/functions.c:1812,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/functions.c:1814,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/functions.c:1828,1
    - Dst: postquel_get_single_result
      Src: /src/postgres/src/backend/executor/functions.c:1829,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:1839,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/executor/functions.c:1847,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 114
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1859
      start: 1552
    functionDepth: 4
    functionLinenumber: 1552
    functionLinenumberEnd: 1859
    functionName: fmgr_sql
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - CreateTupleDescCopy
    - postquel_getnext
    - TTS_EMPTY
    - PopActiveSnapshot
    - GetTransactionSnapshot
    - postquel_start
    - PushActiveSnapshot
    - init_execution_state
    - errmsg
    - CommandCounterIncrement
    - IsA
    - postquel_end
    - init_sql_fcache
    - postquel_get_single_result
    - Assert
    - RegisterExprContextCallback
    - ereport
    - PointerGetDatum
    - UpdateActiveSnapshotCommandId
    - UnregisterExprContextCallback
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum fmgr_sql(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: geterrposition
      Src: /src/postgres/src/backend/executor/functions.c:1881,1
    - Dst: errposition
      Src: /src/postgres/src/backend/executor/functions.c:1884,1
    - Dst: internalerrposition
      Src: /src/postgres/src/backend/executor/functions.c:1885,1
    - Dst: internalerrquery
      Src: /src/postgres/src/backend/executor/functions.c:1886,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/executor/functions.c:1893,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1894
      start: 1865
    functionDepth: 1
    functionLinenumber: 1865
    functionLinenumberEnd: 1894
    functionName: sql_compile_error_callback
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - internalerrposition
    - errcontext
    - errposition
    - internalerrquery
    - geterrposition
    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:1908,1
    - Dst: errposition
      Src: /src/postgres/src/backend/executor/functions.c:1911,1
    - Dst: internalerrposition
      Src: /src/postgres/src/backend/executor/functions.c:1912,1
    - Dst: internalerrquery
      Src: /src/postgres/src/backend/executor/functions.c:1913,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/executor/functions.c:1921,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/executor/functions.c:1924,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1925
      start: 1899
    functionDepth: 1
    functionLinenumber: 1899
    functionLinenumberEnd: 1925
    functionName: sql_exec_error_callback
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - internalerrposition
    - errcontext
    - errposition
    - internalerrquery
    - geterrposition
    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:1940,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/executor/functions.c:1951,1
    - Dst: postquel_end
      Src: /src/postgres/src/backend/executor/functions.c:1953,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/executor/functions.c:1956,1
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/functions.c:1964,1
    - Dst: ReleaseCachedPlan
      Src: /src/postgres/src/backend/executor/functions.c:1969,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - arg
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1974
      start: 1937
    functionDepth: 3
    functionLinenumber: 1937
    functionLinenumberEnd: 1974
    functionName: ShutdownSQLFunction
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - tuplestore_end
    - PushActiveSnapshot
    - postquel_end
    - DatumGetPointer
    - PopActiveSnapshot
    - ReleaseCachedPlan
    linkageType: ''
    returnType: void
    signature: void ShutdownSQLFunction(Datum arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:1992,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1997
      start: 1984
    functionDepth: 1
    functionLinenumber: 1984
    functionLinenumberEnd: 1997
    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:2013,1
    - Dst: check_sql_fn_statement
      Src: /src/postgres/src/backend/executor/functions.c:2015,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - queryTreeLists
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2017
      start: 2005
    functionDepth: 1
    functionLinenumber: 2005
    functionLinenumberEnd: 2017
    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:2013,1
    - Dst: check_sql_fn_statement
      Src: /src/postgres/src/backend/executor/functions.c:2015,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2016
      start: 2011
    functionDepth: 1
    functionLinenumber: 2011
    functionLinenumberEnd: 2016
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 381
    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:2029,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/functions.c:2039,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:2044,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:2045,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:2046,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - queryTreeList
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2049
      start: 2022
    functionDepth: 1
    functionLinenumber: 2022
    functionLinenumberEnd: 2049
    functionName: check_sql_fn_statement
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 4
    functionsReached:
    - errmsg
    - lfirst_node
    - IsA
    - ereport
    - errcode
    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:2029,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/functions.c:2039,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:2044,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:2045,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:2046,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2048
      start: 2027
    functionDepth: 1
    functionLinenumber: 2027
    functionLinenumberEnd: 2048
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 381
    functionsReached:
    - errmsg
    - lfirst_node
    - IsA
    - ereport
    - errcode
    linkageType: ''
    returnType: void
    signature: void foreach(lc, queryTreeList)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: llast_node
      Src: /src/postgres/src/backend/executor/functions.c:2107,1
    - Dst: check_sql_stmt_retval
      Src: /src/postgres/src/backend/executor/functions.c:2111,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: 2114
      start: 2086
    functionDepth: 1
    functionLinenumber: 2086
    functionLinenumberEnd: 2114
    functionName: check_sql_fn_retval
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 3
    functionsReached:
    - check_sql_stmt_retval
    - llast_node
    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:2152,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:2193,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:2194,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:2195,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2196,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/functions.c:2197,1
    - Dst: ExecCleanTargetListLength
      Src: /src/postgres/src/backend/executor/functions.c:2214,1
    - Dst: get_typtype
      Src: /src/postgres/src/backend/executor/functions.c:2216,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:2231,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:2232,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:2233,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2234,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/functions.c:2235,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/functions.c:2238,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:2239,1
    - Dst: coerce_fn_result_column
      Src: /src/postgres/src/backend/executor/functions.c:2241,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:2245,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:2246,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:2247,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2248,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/functions.c:2249,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2250,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/functions.c:2250,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/functions.c:2292,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:2294,1
    - Dst: coerce_fn_result_column
      Src: /src/postgres/src/backend/executor/functions.c:2295,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/functions.c:2324,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:2335,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:2336,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:2337,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2338,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/functions.c:2339,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/functions.c:2340,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/executor/functions.c:2346,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/functions.c:2353,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/executor/functions.c:2354,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/functions.c:2355,1
    - Dst: coerce_fn_result_column
      Src: /src/postgres/src/backend/executor/functions.c:2363,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:2368,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:2369,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:2370,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2371,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/functions.c:2372,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2373,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/functions.c:2373,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2374,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/functions.c:2381,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:2382,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:2383,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:2384,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2385,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/functions.c:2386,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/executor/functions.c:2392,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/functions.c:2399,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/executor/functions.c:2400,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/functions.c:2401,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: Assert
      Src: /src/postgres/src/backend/executor/functions.c:2432,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/functions.c:2435,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/functions.c:2443,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/functions.c:2445,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/functions.c:2449,1
    - Dst: makeString
      Src: /src/postgres/src/backend/executor/functions.c:2450,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/functions.c:2454,1
    - Dst: makeAlias
      Src: /src/postgres/src/backend/executor/functions.c:2457,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/executor/functions.c:2461,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/functions.c:2463,1
    - Dst: makeFromExpr
      Src: /src/postgres/src/backend/executor/functions.c:2465,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/executor/functions.c:2465,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/functions.c:2474,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: 2478
      start: 2120
    functionDepth: 6
    functionLinenumber: 2120
    functionLinenumberEnd: 2478
    functionName: check_sql_stmt_retval
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 3
    functionsReached:
    - makeFromExpr
    - list_length
    - get_typtype
    - makeNode
    - errdetail
    - exprType
    - foreach
    - makeAlias
    - errmsg
    - ExecCleanTargetListLength
    - makeString
    - lfirst_node
    - linitial
    - format_type_be
    - TupleDescAttr
    - lappend
    - lfirst
    - makeTargetEntry
    - Assert
    - ereport
    - coerce_fn_result_column
    - makeConst
    - list_make1
    - TupleDescCompactAttr
    - errcode
    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:2152,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2159
      start: 2150
    functionDepth: 1
    functionLinenumber: 2150
    functionLinenumberEnd: 2159
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 382
    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:2324,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:2335,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:2336,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:2337,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2338,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/functions.c:2339,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/functions.c:2340,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/executor/functions.c:2346,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/functions.c:2353,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/executor/functions.c:2354,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/functions.c:2355,1
    - Dst: coerce_fn_result_column
      Src: /src/postgres/src/backend/executor/functions.c:2363,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/functions.c:2368,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/functions.c:2369,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/functions.c:2370,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2371,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/functions.c:2372,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2373,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/functions.c:2373,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/functions.c:2374,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2376
      start: 2322
    functionDepth: 6
    functionLinenumber: 2322
    functionLinenumberEnd: 2376
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 382
    functionsReached:
    - errmsg
    - lfirst
    - makeTargetEntry
    - exprType
    - format_type_be
    - TupleDescAttr
    - ereport
    - list_length
    - coerce_fn_result_column
    - lappend
    - makeConst
    - errdetail
    - errcode
    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:2511,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/functions.c:2513,1
    - Dst: assign_expr_collations
      Src: /src/postgres/src/backend/executor/functions.c:2520,1
    - Dst: makeVarFromTargetEntry
      Src: /src/postgres/src/backend/executor/functions.c:2523,1
    - Dst: makeVarFromTargetEntry
      Src: /src/postgres/src/backend/executor/functions.c:2528,1
    - Dst: coerce_to_target_type
      Src: /src/postgres/src/backend/executor/functions.c:2530,1
    - Dst: assign_expr_collations
      Src: /src/postgres/src/backend/executor/functions.c:2539,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/executor/functions.c:2545,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/functions.c:2546,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/functions.c:2548,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: 2550
      start: 2490
    functionDepth: 6
    functionLinenumber: 2490
    functionLinenumberEnd: 2550
    functionName: coerce_fn_result_column
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 2
    functionsReached:
    - exprType
    - makeTargetEntry
    - list_length
    - assign_expr_collations
    - lappend
    - coerce_to_target_type
    - makeVarFromTargetEntry
    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:2564,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 9
    argCount: 1
    argNames:
    - queryTreeList
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2581
      start: 2556
    functionDepth: 1
    functionLinenumber: 2556
    functionLinenumberEnd: 2581
    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:2564,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2568
      start: 2562
    functionDepth: 1
    functionLinenumber: 2562
    functionLinenumberEnd: 2568
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 382
    functionsReached:
    - lfirst_node
    linkageType: ''
    returnType: void
    signature: void foreach(lc, queryTreeList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/functions.c:2590,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2601
      start: 2587
    functionDepth: 0
    functionLinenumber: 2587
    functionLinenumberEnd: 2601
    functionName: CreateSQLFunctionDestReceiver
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 1
    functionsReached:
    - palloc0
    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: 2610
      start: 2606
    functionDepth: 0
    functionLinenumber: 2606
    functionLinenumberEnd: 2610
    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:2625,1
    - Dst: tuplestore_puttupleslot
      Src: /src/postgres/src/backend/executor/functions.c:2628,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/functions.c:2636,1
    - Dst: ExecFilterJunk
      Src: /src/postgres/src/backend/executor/functions.c:2639,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/functions.c:2640,1
    - Dst: ExecMaterializeSlot
      Src: /src/postgres/src/backend/executor/functions.c:2643,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - slot
    - self
    argTypes:
    - TupleTableSlot*
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2648
      start: 2615
    functionDepth: 1
    functionLinenumber: 2615
    functionLinenumberEnd: 2648
    functionName: sqlfunction_receive
    functionSourceFile: /src/postgres/src/backend/executor/functions.c
    functionUses: 0
    functionsReached:
    - Assert
    - TTS_EMPTY
    - ExecMaterializeSlot
    - ExecFilterJunk
    - 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: 2657
      start: 2653
    functionDepth: 0
    functionLinenumber: 2653
    functionLinenumberEnd: 2657
    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:2665,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - self
    argTypes:
    - DestReceiver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2666
      start: 2662
    functionDepth: 0
    functionLinenumber: 2662
    functionLinenumberEnd: 2666
    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: 6
    BranchProfiles: []
    Callsites:
    - Dst: MultiExecProcNode
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:71,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:71,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:73,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:74,1
    - Dst: BitmapShouldInitializeSharedState
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:76,1
    - Dst: MultiExecProcNode
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:82,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:82,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:83,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:84,1
    - Dst: tbm_prepare_shared_iterate
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:91,1
    - Dst: BitmapDoneInitializingSharedState
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:94,1
    - Dst: tbm_begin_iterate
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:97,1
    - Dst: table_beginscan_bm
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:109,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapHeapScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 62
    functionDepth: 3
    functionLinenumber: 62
    functionLinenumberEnd: 117
    functionName: BitmapTableScanSetup
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 0
    functionsReached:
    - table_beginscan_bm
    - MultiExecProcNode
    - tbm_prepare_shared_iterate
    - IsA
    - BitmapShouldInitializeSharedState
    - elog
    - outerPlanState
    - tbm_begin_iterate
    - BitmapDoneInitializingSharedState
    linkageType: ''
    returnType: void
    signature: void BitmapTableScanSetup(BitmapHeapScanState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BitmapTableScanSetup
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:136,1
    - Dst: table_scan_bitmap_next_tuple
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:138,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:146,1
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:155,1
    - Dst: InstrCountFiltered2
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:158,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:159,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:171,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapHeapScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 125
    functionDepth: 4
    functionLinenumber: 125
    functionLinenumberEnd: 172
    functionName: BitmapHeapNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 0
    functionsReached:
    - ExecQualAndReset
    - InstrCountFiltered2
    - BitmapTableScanSetup
    - CHECK_FOR_INTERRUPTS
    - table_scan_bitmap_next_tuple
    - ExecClearTuple
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      BitmapHeapNext(BitmapHeapScanState *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:183,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:185,1
    - Dst: ConditionVariableBroadcast
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - ParallelBitmapHeapState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 187
    functionName: BitmapDoneInitializingSharedState
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 1
    functionsReached:
    - ConditionVariableBroadcast
    - SpinLockRelease
    - SpinLockAcquire
    linkageType: ''
    returnType: void
    signature: void BitmapDoneInitializingSharedState(ParallelBitmapHeapState *pstate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - node
    - slot
    argTypes:
    - BitmapHeapScanState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 192
    functionDepth: 4
    functionLinenumber: 192
    functionLinenumberEnd: 205
    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:214,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 219
    functionName: ExecBitmapHeapScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 0
    functionsReached:
    - ExecScan
    - castNode
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecBitmapHeapScan(PlanState *pstate)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:228,1
    - Dst: tbm_exhausted
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:238,1
    - Dst: tbm_end_iterate
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:239,1
    - Dst: table_rescan
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:242,1
    - Dst: tbm_free
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:247,1
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:252,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:259,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapHeapScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 225
    functionDepth: 2
    functionLinenumber: 225
    functionLinenumberEnd: 260
    functionName: ExecReScanBitmapHeapScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 0
    functionsReached:
    - tbm_end_iterate
    - table_rescan
    - tbm_exhausted
    - tbm_free
    - outerPlanState
    - ExecReScan
    - ExecScanReScan
    linkageType: ''
    returnType: void
    signature: void ExecReScanBitmapHeapScan(BitmapHeapScanState *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:276,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:280,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:302,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:302,1
    - Dst: tbm_exhausted
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:310,1
    - Dst: tbm_end_iterate
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:311,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:316,1
    - Dst: tbm_free
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:323,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapHeapScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 266
    functionDepth: 2
    functionLinenumber: 266
    functionLinenumberEnd: 324
    functionName: ExecEndBitmapHeapScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - tbm_end_iterate
    - ExecEndNode
    - tbm_exhausted
    - tbm_free
    - IsParallelWorker
    - outerPlanState
    - table_endscan
    linkageType: ''
    returnType: void
    signature: void ExecEndBitmapHeapScan(BitmapHeapScanState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:339,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:345,1
    - Dst: IsMVCCSnapshot
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:345,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:350,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:358,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:369,1
    - Dst: ExecOpenScanRelation
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:374,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:379,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:379,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:379,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:384,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:385,1
    - Dst: table_slot_callbacks
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:386,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:391,1
    - Dst: ExecAssignScanProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:392,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:398,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:400,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - BitmapHeapScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 332
    functionDepth: 2
    functionLinenumber: 332
    functionLinenumberEnd: 408
    functionName: ExecInitBitmapHeapScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 0
    functionsReached:
    - IsMVCCSnapshot
    - Assert
    - ExecInitScanTupleSlot
    - ExecAssignExprContext
    - memset
    - ExecOpenScanRelation
    - RelationGetDescr
    - ExecInitNode
    - table_slot_callbacks
    - ExecInitQual
    - outerPlan
    - outerPlanState
    - ExecInitResultTypeTL
    - ExecAssignScanProjectionInfo
    - makeNode
    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:426,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:430,1
    - Dst: ConditionVariableSleep
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:437,1
    - Dst: ConditionVariableCancelSleep
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:440,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - ParallelBitmapHeapState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 419
    functionDepth: 1
    functionLinenumber: 419
    functionLinenumberEnd: 443
    functionName: BitmapShouldInitializeSharedState
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 1
    functionsReached:
    - ConditionVariableSleep
    - SpinLockRelease
    - ConditionVariableCancelSleep
    - SpinLockAcquire
    linkageType: ''
    returnType: bool
    signature: bool BitmapShouldInitializeSharedState(ParallelBitmapHeapState *pstate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:458,1
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:463,1
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:464,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:464,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:467,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:468,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - BitmapHeapScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 452
    functionDepth: 1
    functionLinenumber: 452
    functionLinenumberEnd: 469
    functionName: ExecBitmapHeapEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 0
    functionsReached:
    - shm_toc_estimate_chunk
    - shm_toc_estimate_keys
    - add_size
    - mul_size
    - MAXALIGN
    linkageType: ''
    returnType: void
    signature: "void ExecBitmapHeapEstimate(BitmapHeapScanState *node,\n\t\t\t\t\t
      \  ParallelContext *pcxt)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:491,1
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:494,1
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:495,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:495,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:498,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:500,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:507,1
    - Dst: ConditionVariableInit
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:510,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:517,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:521,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - BitmapHeapScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 477
    functionDepth: 1
    functionLinenumber: 477
    functionLinenumberEnd: 524
    functionName: ExecBitmapHeapInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 0
    functionsReached:
    - add_size
    - memset
    - SpinLockInit
    - shm_toc_insert
    - ConditionVariableInit
    - shm_toc_allocate
    - mul_size
    - MAXALIGN
    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:545,1
    - Dst: tbm_free_shared_area
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:546,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - BitmapHeapScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 532
    functionDepth: 3
    functionLinenumber: 532
    functionLinenumberEnd: 549
    functionName: ExecBitmapHeapReInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 0
    functionsReached:
    - DsaPointerIsValid
    - tbm_free_shared_area
    linkageType: ''
    returnType: void
    signature: "void ExecBitmapHeapReInitializeDSM(BitmapHeapScanState *node,\n\t\t\t\t\t\t\t
      \ ParallelContext *pcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:563,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:565,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:568,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - BitmapHeapScanState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 557
    functionDepth: 1
    functionLinenumber: 557
    functionLinenumberEnd: 572
    functionName: ExecBitmapHeapInitializeWorker
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - shm_toc_lookup
    - MAXALIGN
    linkageType: ''
    returnType: void
    signature: "void ExecBitmapHeapInitializeWorker(BitmapHeapScanState *node,\n\t\t\t\t\t\t\t
      \  ParallelWorkerContext *pwcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:592,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeBitmapHeapscan.c:593,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapHeapScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 580
    functionDepth: 0
    functionLinenumber: 580
    functionLinenumberEnd: 594
    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:50,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:50,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - WorkTableScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 60
    functionName: WorkTableScanNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeWorktablescan.c
    functionUses: 0
    functionsReached:
    - Assert
    - ScanDirectionIsForward
    - tuplestore_gettupleslot
    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: 70
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 70
    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:83,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:98,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:99,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:100,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:100,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:101,1
    - Dst: ExecAssignScanType
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:109,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:110,1
    - Dst: ExecAssignScanProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:116,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 122
    functionName: ExecWorkTableScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeWorktablescan.c
    functionUses: 0
    functionsReached:
    - Assert
    - castNode
    - ExecGetResultType
    - ExecScan
    - ExecAssignScanProjectionInfo
    - DatumGetPointer
    - ExecAssignScanType
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecWorkTableScan(PlanState *pstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:135,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:140,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:140,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:141,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:141,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:146,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:157,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:162,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:168,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - WorkTableScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 182
    functionName: ExecInitWorkTableScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeWorktablescan.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExecInitScanTupleSlot
    - ExecAssignExprContext
    - ExecInitQual
    - outerPlan
    - ExecInitResultTypeTL
    - innerPlan
    - makeNode
    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:194,1
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:196,1
    - Dst: tuplestore_rescan
      Src: /src/postgres/src/backend/executor/nodeWorktablescan.c:200,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - WorkTableScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 201
    functionName: ExecReScanWorkTableScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeWorktablescan.c
    functionUses: 0
    functionsReached:
    - ExecClearTuple
    - tuplestore_rescan
    - ExecScanReScan
    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:133,1
    - Dst: standard_ExecutorStart
      Src: /src/postgres/src/backend/executor/execMain.c:138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - queryDesc
    - eflags
    argTypes:
    - QueryDesc*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 139
    functionName: ExecutorStart
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 4
    functionsReached:
    - pgstat_report_query_id
    - standard_ExecutorStart
    linkageType: ''
    returnType: void
    signature: void ExecutorStart(QueryDesc *queryDesc, int eflags)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:148,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:149,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:152,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/executor/execMain.c:152,1
    - Dst: IsInParallelMode
      Src: /src/postgres/src/backend/executor/execMain.c:169,1
    - Dst: ExecCheckXactReadOnly
      Src: /src/postgres/src/backend/executor/execMain.c:171,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/executor/execMain.c:176,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:179,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execMain.c:191,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execMain.c:193,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:197,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/executor/execMain.c:218,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/executor/execMain.c:234,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execMain.c:238,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/executor/execMain.c:246,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/executor/execMain.c:247,1
    - Dst: AfterTriggerBeginQuery
      Src: /src/postgres/src/backend/executor/execMain.c:257,1
    - Dst: InitPlan
      Src: /src/postgres/src/backend/executor/execMain.c:262,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:264,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 43
    argCount: 2
    argNames:
    - queryDesc
    - eflags
    argTypes:
    - QueryDesc*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 265
    functionName: standard_ExecutorStart
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - IsInParallelMode
    - RegisterSnapshot
    - GetActiveSnapshot
    - palloc0
    - list_length
    - InitPlan
    - elog
    - CreateExecutorState
    - AfterTriggerBeginQuery
    - ExecCheckXactReadOnly
    - 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:304,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - queryDesc
    - direction
    - count
    argTypes:
    - QueryDesc*
    - ScanDirection
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 305
    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:318,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:322,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:323,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:326,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/executor/execMain.c:326,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:331,1
    - Dst: InstrStartNode
      Src: /src/postgres/src/backend/executor/execMain.c:335,1
    - Dst: DestReceiver*::rStartup
      Src: /src/postgres/src/backend/executor/execMain.c:352,1
    - Dst: ScanDirectionIsNoMovement
      Src: /src/postgres/src/backend/executor/execMain.c:366,1
    - Dst: ExecutePlan
      Src: /src/postgres/src/backend/executor/execMain.c:367,1
    - Dst: DestReceiver*::rShutdown
      Src: /src/postgres/src/backend/executor/execMain.c:384,1
    - Dst: InstrStopNode
      Src: /src/postgres/src/backend/executor/execMain.c:387,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:389,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - queryDesc
    - direction
    - count
    argTypes:
    - QueryDesc*
    - ScanDirection
    - uint64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 390
    functionName: standard_ExecutorRun
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - DestReceiver*::rShutdown
    - GetActiveSnapshot
    - DestReceiver*::rStartup
    - InstrStartNode
    - InstrStopNode
    - ExecutePlan
    - ScanDirectionIsNoMovement
    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:412,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - queryDesc
    argTypes:
    - QueryDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 406
    functionDepth: 1
    functionLinenumber: 406
    functionLinenumberEnd: 413
    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:422,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:426,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:427,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:430,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:433,1
    - Dst: InstrStartNode
      Src: /src/postgres/src/backend/executor/execMain.c:437,1
    - Dst: ExecPostprocessPlan
      Src: /src/postgres/src/backend/executor/execMain.c:440,1
    - Dst: AfterTriggerEndQuery
      Src: /src/postgres/src/backend/executor/execMain.c:444,1
    - Dst: InstrStopNode
      Src: /src/postgres/src/backend/executor/execMain.c:447,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:449,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - queryDesc
    argTypes:
    - QueryDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 415
    functionDepth: 1
    functionLinenumber: 415
    functionLinenumberEnd: 452
    functionName: standard_ExecutorFinish
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - InstrStartNode
    - ExecPostprocessPlan
    - AfterTriggerEndQuery
    - InstrStopNode
    linkageType: ''
    returnType: void
    signature: void standard_ExecutorFinish(QueryDesc *queryDesc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: standard_ExecutorEnd
      Src: /src/postgres/src/backend/executor/execMain.c:472,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - queryDesc
    argTypes:
    - QueryDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 466
    functionDepth: 1
    functionLinenumber: 466
    functionLinenumberEnd: 473
    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:482,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:486,1
    - Dst: pgstat_update_parallel_workers_stats
      Src: /src/postgres/src/backend/executor/execMain.c:489,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:497,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:503,1
    - Dst: ExecEndPlan
      Src: /src/postgres/src/backend/executor/execMain.c:505,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/executor/execMain.c:508,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/executor/execMain.c:509,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:514,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/executor/execMain.c:520,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - queryDesc
    argTypes:
    - QueryDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 475
    functionDepth: 1
    functionLinenumber: 475
    functionLinenumberEnd: 527
    functionName: standard_ExecutorEnd
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - FreeExecutorState
    - Assert
    - MemoryContextSwitchTo
    - pgstat_update_parallel_workers_stats
    - ExecEndPlan
    - UnregisterSnapshot
    linkageType: ''
    returnType: void
    signature: void standard_ExecutorEnd(QueryDesc *queryDesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:543,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:547,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:550,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:555,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/execMain.c:560,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:562,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - queryDesc
    argTypes:
    - QueryDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 536
    functionDepth: 1
    functionLinenumber: 536
    functionLinenumberEnd: 563
    functionName: ExecutorRewind
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - ExecReScan
    linkageType: ''
    returnType: void
    signature: void ExecutorRewind(QueryDesc *queryDesc)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execMain.c:595,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:605,1
    - Dst: getRTEPermissionInfo
      Src: /src/postgres/src/backend/executor/execMain.c:609,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:611,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execMain.c:611,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/execMain.c:612,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:617,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/executor/execMain.c:617,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execMain.c:617,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execMain.c:622,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:624,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execMain.c:624,1
    - Dst: ExecCheckOneRelPerms
      Src: /src/postgres/src/backend/executor/execMain.c:625,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/execMain.c:629,1
    - Dst: get_relkind_objtype
      Src: /src/postgres/src/backend/executor/execMain.c:630,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/executor/execMain.c:630,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/executor/execMain.c:631,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - rangeTable
    - rteperminfos
    - ereport_on_violation
    argTypes:
    - List*
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 582
    functionDepth: 3
    functionLinenumber: 582
    functionLinenumberEnd: 640
    functionName: ExecCheckPermissions
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 0
    functionsReached:
    - Assert
    - get_rel_name
    - lfirst_node
    - getRTEPermissionInfo
    - ExecCheckOneRelPerms
    - aclcheck_error
    - get_relkind_objtype
    - list_length
    - OidIsValid
    - bms_is_member
    - bms_num_members
    - get_rel_relkind
    - bms_add_member
    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:595,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:605,1
    - Dst: getRTEPermissionInfo
      Src: /src/postgres/src/backend/executor/execMain.c:609,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:611,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execMain.c:611,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/execMain.c:612,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 593
    functionDepth: 3
    functionLinenumber: 593
    functionLinenumberEnd: 614
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 382
    functionsReached:
    - Assert
    - lfirst_node
    - getRTEPermissionInfo
    - bms_is_member
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: void foreach(l, rangeTable)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execMain.c:622,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:624,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execMain.c:624,1
    - Dst: ExecCheckOneRelPerms
      Src: /src/postgres/src/backend/executor/execMain.c:625,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/execMain.c:629,1
    - Dst: get_relkind_objtype
      Src: /src/postgres/src/backend/executor/execMain.c:630,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/executor/execMain.c:630,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/executor/execMain.c:631,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 620
    functionDepth: 2
    functionLinenumber: 620
    functionLinenumberEnd: 634
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 382
    functionsReached:
    - Assert
    - get_rel_name
    - ExecCheckOneRelPerms
    - lfirst_node
    - aclcheck_error
    - get_relkind_objtype
    - OidIsValid
    - get_rel_relkind
    linkageType: ''
    returnType: void
    signature: void foreach(l, rteperminfos)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:656,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execMain.c:666,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/executor/execMain.c:667,1
    - Dst: pg_class_aclmask
      Src: /src/postgres/src/backend/executor/execMain.c:674,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/executor/execMain.c:701,1
    - Dst: pg_attribute_aclcheck_all
      Src: /src/postgres/src/backend/executor/execMain.c:703,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/execMain.c:708,1
    - Dst: pg_attribute_aclcheck_all
      Src: /src/postgres/src/backend/executor/execMain.c:716,1
    - Dst: pg_attribute_aclcheck
      Src: /src/postgres/src/backend/executor/execMain.c:722,1
    - Dst: ExecCheckPermissionsModified
      Src: /src/postgres/src/backend/executor/execMain.c:734,1
    - Dst: ExecCheckPermissionsModified
      Src: /src/postgres/src/backend/executor/execMain.c:741,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 30
    argCount: 1
    argNames:
    - perminfo
    argTypes:
    - RTEPermissionInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 646
    functionDepth: 3
    functionLinenumber: 646
    functionLinenumberEnd: 748
    functionName: ExecCheckOneRelPerms
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 2
    functionsReached:
    - pg_attribute_aclcheck_all
    - Assert
    - bms_is_empty
    - ExecCheckPermissionsModified
    - pg_attribute_aclcheck
    - pg_class_aclmask
    - OidIsValid
    - bms_next_member
    - GetUserId
    linkageType: ''
    returnType: bool
    signature: bool ExecCheckOneRelPerms(RTEPermissionInfo *perminfo)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/executor/execMain.c:766,1
    - Dst: pg_attribute_aclcheck_all
      Src: /src/postgres/src/backend/executor/execMain.c:768,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/execMain.c:773,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execMain.c:781,1
    - Dst: pg_attribute_aclcheck
      Src: /src/postgres/src/backend/executor/execMain.c:785,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - relOid
    - userid
    - modifiedCols
    - requiredPerms
    argTypes:
    - Oid
    - Oid
    - Bitmapset*
    - AclMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 755
    functionDepth: 3
    functionLinenumber: 755
    functionLinenumberEnd: 791
    functionName: ExecCheckPermissionsModified
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - pg_attribute_aclcheck_all
    - bms_is_empty
    - pg_attribute_aclcheck
    - elog
    - bms_next_member
    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:811,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execMain.c:813,1
    - Dst: isTempNamespace
      Src: /src/postgres/src/backend/executor/execMain.c:818,1
    - Dst: get_rel_namespace
      Src: /src/postgres/src/backend/executor/execMain.c:818,1
    - Dst: PreventCommandIfReadOnly
      Src: /src/postgres/src/backend/executor/execMain.c:821,1
    - Dst: CreateCommandName
      Src: /src/postgres/src/backend/executor/execMain.c:821,1
    - Dst: PreventCommandIfParallelMode
      Src: /src/postgres/src/backend/executor/execMain.c:825,1
    - Dst: CreateCommandName
      Src: /src/postgres/src/backend/executor/execMain.c:825,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 1
    argNames:
    - plannedstmt
    argTypes:
    - PlannedStmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 802
    functionDepth: 2
    functionLinenumber: 802
    functionLinenumberEnd: 826
    functionName: ExecCheckXactReadOnly
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - CreateCommandName
    - PreventCommandIfReadOnly
    - lfirst_node
    - foreach
    - isTempNamespace
    - PreventCommandIfParallelMode
    - get_rel_namespace
    linkageType: ''
    returnType: void
    signature: void ExecCheckXactReadOnly(PlannedStmt *plannedstmt)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: ExecCheckPermissions
      Src: /src/postgres/src/backend/executor/execMain.c:852,1
    - Dst: ExecInitRangeTable
      Src: /src/postgres/src/backend/executor/execMain.c:857,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/executor/execMain.c:858,1
    - Dst: ExecDoInitialPruning
      Src: /src/postgres/src/backend/executor/execMain.c:872,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execMain.c:880,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:881,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:883,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execMain.c:894,1
    - Dst: exec_rt_fetch
      Src: /src/postgres/src/backend/executor/execMain.c:898,1
    - Dst: ExecGetRangeTableRelation
      Src: /src/postgres/src/backend/executor/execMain.c:908,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execMain.c:915,1
    - Dst: CheckValidRowMarkRel
      Src: /src/postgres/src/backend/executor/execMain.c:922,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execMain.c:924,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/executor/execMain.c:934,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:937,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:957,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:959,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:961,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execMain.c:972,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/execMain.c:975,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execMain.c:977,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/execMain.c:988,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/execMain.c:993,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:1004,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:1006,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/execMain.c:1020,1
    - Dst: ExecInitJunkFilter
      Src: /src/postgres/src/backend/executor/execMain.c:1021,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 76
    argCount: 2
    argNames:
    - queryDesc
    - eflags
    argTypes:
    - QueryDesc*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1032
      start: 836
    functionDepth: 6
    functionLinenumber: 836
    functionLinenumberEnd: 1032
    functionName: InitPlan
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - bms_copy
    - exec_rt_fetch
    - ExecCheckPermissions
    - ExecDoInitialPruning
    - ExecInitJunkFilter
    - ItemPointerSetInvalid
    - foreach
    - ExecGetResultType
    - CheckValidRowMarkRel
    - ExecInitRangeTable
    - ExecInitExtraTupleSlot
    - ExecInitNode
    - elog
    - lappend
    - bms_is_member
    - palloc
    - ExecGetRangeTableRelation
    - lfirst
    - Assert
    - palloc0
    linkageType: ''
    returnType: void
    signature: void InitPlan(QueryDesc *queryDesc, int eflags)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:1055,1
    - Dst: IsInplaceUpdateRelation
      Src: /src/postgres/src/backend/executor/execMain.c:1056,1
    - Dst: CheckCmdReplicaIdentity
      Src: /src/postgres/src/backend/executor/execMain.c:1062,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1065,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1066,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1067,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1068,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1071,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1072,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1073,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1074,1
    - Dst: view_has_instead_trigger
      Src: /src/postgres/src/backend/executor/execMain.c:1084,1
    - Dst: error_view_not_updatable
      Src: /src/postgres/src/backend/executor/execMain.c:1085,1
    - Dst: MatViewIncrementalMaintenanceIsEnabled
      Src: /src/postgres/src/backend/executor/execMain.c:1089,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1090,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1091,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1092,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1093,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1102,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1103,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1104,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1105,1
    - Dst: FdwRoutine*::IsForeignRelUpdatable
      Src: /src/postgres/src/backend/executor/execMain.c:1107,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1108,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1109,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1110,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1111,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1115,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1116,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1117,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1118,1
    - Dst: FdwRoutine*::IsForeignRelUpdatable
      Src: /src/postgres/src/backend/executor/execMain.c:1120,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1121,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1122,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1123,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1124,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1128,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1129,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1130,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1131,1
    - Dst: FdwRoutine*::IsForeignRelUpdatable
      Src: /src/postgres/src/backend/executor/execMain.c:1133,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1134,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1135,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1136,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1137,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execMain.c:1140,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1145,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1146,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1147,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1148,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 51
    argCount: 3
    argNames:
    - resultRelInfo
    - operation
    - mergeActions
    argTypes:
    - ResultRelInfo*
    - CmdType
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1151
      start: 1047
    functionDepth: 2
    functionLinenumber: 1047
    functionLinenumberEnd: 1151
    functionName: CheckValidResultRel
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 0
    functionsReached:
    - errmsg
    - view_has_instead_trigger
    - Assert
    - FdwRoutine*::IsForeignRelUpdatable
    - MatViewIncrementalMaintenanceIsEnabled
    - CheckCmdReplicaIdentity
    - ereport
    - elog
    - error_view_not_updatable
    - RelationGetRelationName
    - errcode
    - IsInplaceUpdateRelation
    linkageType: ''
    returnType: void
    signature: "void CheckValidResultRel(ResultRelInfo *resultRelInfo, CmdType operation,\n\t\t\t\t\tList
      *mergeActions)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1172,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1173,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1174,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1175,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1179,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1180,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1181,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1182,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1186,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1187,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1188,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1189,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1194,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1195,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1196,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1197,1
    - Dst: GetFdwRoutineForRelation
      Src: /src/postgres/src/backend/executor/execMain.c:1201,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1203,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1204,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1205,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1206,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1209,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1210,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1211,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1212,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 2
    argNames:
    - rel
    - markType
    argTypes:
    - Relation
    - RowMarkType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1215
      start: 1159
    functionDepth: 5
    functionLinenumber: 1159
    functionLinenumberEnd: 1215
    functionName: CheckValidRowMarkRel
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - errmsg
    - ereport
    - GetFdwRoutineForRelation
    - RelationGetRelationName
    - errcode
    linkageType: ''
    returnType: void
    signature: void CheckValidRowMarkRel(Relation rel, RowMarkType markType)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MemSet
      Src: /src/postgres/src/backend/executor/execMain.c:1231,1
    - Dst: IsInplaceUpdateRelation
      Src: /src/postgres/src/backend/executor/execMain.c:1239,1
    - Dst: CopyTriggerDesc
      Src: /src/postgres/src/backend/executor/execMain.c:1241,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execMain.c:1247,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execMain.c:1249,1
    - Dst: InstrAlloc
      Src: /src/postgres/src/backend/executor/execMain.c:1251,1
    - Dst: GetFdwRoutineForRelation
      Src: /src/postgres/src/backend/executor/execMain.c:1260,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 53
    argCount: 5
    argNames:
    - resultRelInfo
    - resultRelationDesc
    - resultRelationIndex
    - partition_root_rri
    - instrument_options
    argTypes:
    - ResultRelInfo*
    - Relation
    - Index
    - ResultRelInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1304
      start: 1224
    functionDepth: 5
    functionLinenumber: 1224
    functionLinenumberEnd: 1304
    functionName: InitResultRelInfo
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - CopyTriggerDesc
    - InstrAlloc
    - palloc0
    - MemSet
    - GetFdwRoutineForRelation
    - IsInplaceUpdateRelation
    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:1335,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:1337,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execMain.c:1338,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:1346,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:1348,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execMain.c:1349,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:1354,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:1356,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execMain.c:1357,1
    - Dst: table_open
      Src: /src/postgres/src/backend/executor/execMain.c:1368,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:1373,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execMain.c:1374,1
    - Dst: InitResultRelInfo
      Src: /src/postgres/src/backend/executor/execMain.c:1375,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execMain.c:1381,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:1382,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 3
    argNames:
    - estate
    - relid
    - rootRelInfo
    argTypes:
    - EState*
    - Oid
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1390
      start: 1325
    functionDepth: 6
    functionLinenumber: 1325
    functionLinenumberEnd: 1390
    functionName: ExecGetTriggerResultRel
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - RelationGetRelid
    - table_open
    - foreach
    - lappend
    - InitResultRelInfo
    - makeNode
    - lfirst
    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:1409,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:1410,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execMain.c:1411,1
    - Dst: get_partition_ancestors
      Src: /src/postgres/src/backend/executor/execMain.c:1415,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execMain.c:1415,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/execMain.c:1420,1
    - Dst: table_open
      Src: /src/postgres/src/backend/executor/execMain.c:1437,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execMain.c:1438,1
    - Dst: InitResultRelInfo
      Src: /src/postgres/src/backend/executor/execMain.c:1441,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execMain.c:1443,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execMain.c:1445,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:1450,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - estate
    - resultRelInfo
    argTypes:
    - EState*
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1453
      start: 1401
    functionDepth: 6
    functionLinenumber: 1401
    functionLinenumberEnd: 1453
    functionName: ExecGetAncestorResultRels
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 0
    functionsReached:
    - Assert
    - RelationGetRelid
    - table_open
    - elog
    - lappend
    - InitResultRelInfo
    - makeNode
    - lfirst_oid
    - get_partition_ancestors
    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:1420,1
    - Dst: table_open
      Src: /src/postgres/src/backend/executor/execMain.c:1437,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execMain.c:1438,1
    - Dst: InitResultRelInfo
      Src: /src/postgres/src/backend/executor/execMain.c:1441,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execMain.c:1443,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1444
      start: 1418
    functionDepth: 6
    functionLinenumber: 1418
    functionLinenumberEnd: 1444
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 385
    functionsReached:
    - table_open
    - lappend
    - InitResultRelInfo
    - makeNode
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(lc, oids)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:1476,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:1478,1
    - Dst: ResetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execMain.c:1485,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/execMain.c:1487,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/execMain.c:1489,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - estate
    argTypes:
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1493
      start: 1461
    functionDepth: 2
    functionLinenumber: 1461
    functionLinenumberEnd: 1493
    functionName: ExecPostprocessPlan
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - TupIsNull
    - ExecProcNode
    - foreach
    - ResetPerTupleExprContext
    - lfirst
    linkageType: ''
    returnType: void
    signature: void ExecPostprocessPlan(EState *estate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/execMain.c:1515,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:1520,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:1522,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/execMain.c:1524,1
    - Dst: ExecResetTupleTable
      Src: /src/postgres/src/backend/executor/execMain.c:1533,1
    - Dst: ExecCloseResultRelations
      Src: /src/postgres/src/backend/executor/execMain.c:1539,1
    - Dst: ExecCloseRangeTableRelations
      Src: /src/postgres/src/backend/executor/execMain.c:1540,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - planstate
    - estate
    argTypes:
    - PlanState*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1541
      start: 1507
    functionDepth: 1
    functionLinenumber: 1507
    functionLinenumberEnd: 1541
    functionName: ExecEndPlan
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - ExecResetTupleTable
    - ExecEndNode
    - foreach
    - ExecCloseRangeTableRelations
    - ExecCloseResultRelations
    - 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:1558,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:1560,1
    - Dst: ExecCloseIndices
      Src: /src/postgres/src/backend/executor/execMain.c:1563,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:1564,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:1566,1
    - Dst: table_close
      Src: /src/postgres/src/backend/executor/execMain.c:1575,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:1580,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:1582,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:1589,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:1595,1
    - Dst: table_close
      Src: /src/postgres/src/backend/executor/execMain.c:1597,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - estate
    argTypes:
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1599
      start: 1546
    functionDepth: 3
    functionLinenumber: 1546
    functionLinenumberEnd: 1599
    functionName: ExecCloseResultRelations
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - Assert
    - ExecCloseIndices
    - foreach
    - table_close
    - lfirst
    linkageType: ''
    returnType: void
    signature: void ExecCloseResultRelations(EState *estate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_close
      Src: /src/postgres/src/backend/executor/execMain.c:1614,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - estate
    argTypes:
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1616
      start: 1606
    functionDepth: 3
    functionLinenumber: 1606
    functionLinenumberEnd: 1616
    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:1666,1
    - Dst: ResetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execMain.c:1674,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/execMain.c:1679,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/execMain.c:1685,1
    - Dst: ExecFilterJunk
      Src: /src/postgres/src/backend/executor/execMain.c:1697,1
    - Dst: DestReceiver*::receiveSlot
      Src: /src/postgres/src/backend/executor/execMain.c:1710,1
    - Dst: ExecShutdownNode
      Src: /src/postgres/src/backend/executor/execMain.c:1737,1
    - Dst: ExitParallelMode
      Src: /src/postgres/src/backend/executor/execMain.c:1740,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: 1741
      start: 1627
    functionDepth: 3
    functionLinenumber: 1627
    functionLinenumberEnd: 1741
    functionName: ExecutePlan
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - TupIsNull
    - ExecProcNode
    - EnterParallelMode
    - ExitParallelMode
    - ExecShutdownNode
    - DestReceiver*::receiveSlot
    - ExecFilterJunk
    - ResetPerTupleExprContext
    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:1765,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1766,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:1775,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/execMain.c:1776,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/executor/execMain.c:1785,1
    - Dst: expand_generated_columns_in_expr
      Src: /src/postgres/src/backend/executor/execMain.c:1786,1
    - Dst: ExecPrepareExpr
      Src: /src/postgres/src/backend/executor/execMain.c:1788,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:1790,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execMain.c:1797,1
    - Dst: ExecCheck
      Src: /src/postgres/src/backend/executor/execMain.c:1812,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 3
    argNames:
    - resultRelInfo
    - slot
    - estate
    argTypes:
    - ResultRelInfo*
    - TupleTableSlot*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1818
      start: 1749
    functionDepth: 3
    functionLinenumber: 1749
    functionLinenumberEnd: 1818
    functionName: ExecRelCheck
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - stringToNode
    - ExecPrepareExpr
    - expand_generated_columns_in_expr
    - ExecCheck
    - GetPerTupleExprContext
    - elog
    - palloc0_array
    - 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:1847,1
    - Dst: RelationGetPartitionQual
      Src: /src/postgres/src/backend/executor/execMain.c:1848,1
    - Dst: ExecPrepareCheck
      Src: /src/postgres/src/backend/executor/execMain.c:1850,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:1851,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execMain.c:1858,1
    - Dst: ExecCheck
      Src: /src/postgres/src/backend/executor/execMain.c:1867,1
    - Dst: ExecPartitionCheckEmitError
      Src: /src/postgres/src/backend/executor/execMain.c:1871,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - resultRelInfo
    - slot
    - estate
    - emitError
    argTypes:
    - ResultRelInfo*
    - TupleTableSlot*
    - EState*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1874
      start: 1827
    functionDepth: 1
    functionLinenumber: 1827
    functionLinenumberEnd: 1874
    functionName: ExecPartitionCheck
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - ExecPartitionCheckEmitError
    - ExecCheck
    - GetPerTupleExprContext
    - RelationGetPartitionQual
    - 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:1902,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execMain.c:1903,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execMain.c:1905,1
    - Dst: build_attrmap_by_name_if_req
      Src: /src/postgres/src/backend/executor/execMain.c:1907,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/executor/execMain.c:1914,1
    - Dst: MakeTupleTableSlot
      Src: /src/postgres/src/backend/executor/execMain.c:1915,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/executor/execMain.c:1916,1
    - Dst: ExecGetInsertedCols
      Src: /src/postgres/src/backend/executor/execMain.c:1916,1
    - Dst: ExecGetUpdatedCols
      Src: /src/postgres/src/backend/executor/execMain.c:1917,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execMain.c:1921,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execMain.c:1922,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/executor/execMain.c:1923,1
    - Dst: ExecGetInsertedCols
      Src: /src/postgres/src/backend/executor/execMain.c:1923,1
    - Dst: ExecGetUpdatedCols
      Src: /src/postgres/src/backend/executor/execMain.c:1924,1
    - Dst: ExecBuildSlotValueDescription
      Src: /src/postgres/src/backend/executor/execMain.c:1927,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:1932,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:1933,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:1934,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:1935,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execMain.c:1936,1
    - Dst: errtable
      Src: /src/postgres/src/backend/executor/execMain.c:1937,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - resultRelInfo
    - slot
    - estate
    argTypes:
    - ResultRelInfo*
    - TupleTableSlot*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1938
      start: 1880
    functionDepth: 4
    functionLinenumber: 1880
    functionLinenumberEnd: 1938
    functionName: ExecPartitionCheckEmitError
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - execute_attr_map_slot
    - errmsg
    - MakeTupleTableSlot
    - RelationGetRelid
    - RelationGetDescr
    - errtable
    - ereport
    - build_attrmap_by_name_if_req
    - bms_union
    - ExecBuildSlotValueDescription
    - ExecGetInsertedCols
    - ExecGetUpdatedCols
    - RelationGetRelationName
    - errdetail
    - errcode
    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:1956,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:1961,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execMain.c:1973,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execMain.c:1976,1
    - Dst: slot_attisnull
      Src: /src/postgres/src/backend/executor/execMain.c:1977,1
    - Dst: ReportNotNullViolationError
      Src: /src/postgres/src/backend/executor/execMain.c:1978,1
    - Dst: ExecRelGenVirtualNotNull
      Src: /src/postgres/src/backend/executor/execMain.c:1989,1
    - Dst: ReportNotNullViolationError
      Src: /src/postgres/src/backend/executor/execMain.c:1992,1
    - Dst: ExecRelCheck
      Src: /src/postgres/src/backend/executor/execMain.c:2002,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execMain.c:2016,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execMain.c:2019,1
    - Dst: build_attrmap_by_name_if_req
      Src: /src/postgres/src/backend/executor/execMain.c:2021,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/executor/execMain.c:2030,1
    - Dst: MakeTupleTableSlot
      Src: /src/postgres/src/backend/executor/execMain.c:2031,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/executor/execMain.c:2032,1
    - Dst: ExecGetInsertedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2032,1
    - Dst: ExecGetUpdatedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2033,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/executor/execMain.c:2037,1
    - Dst: ExecGetInsertedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2037,1
    - Dst: ExecGetUpdatedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2038,1
    - Dst: ExecBuildSlotValueDescription
      Src: /src/postgres/src/backend/executor/execMain.c:2039,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execMain.c:2039,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:2044,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:2045,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:2046,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:2047,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execMain.c:2048,1
    - Dst: errtableconstraint
      Src: /src/postgres/src/backend/executor/execMain.c:2049,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 3
    argNames:
    - resultRelInfo
    - slot
    - estate
    argTypes:
    - ResultRelInfo*
    - TupleTableSlot*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2052
      start: 1951
    functionDepth: 6
    functionLinenumber: 1951
    functionLinenumberEnd: 2052
    functionName: ExecConstraints
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 0
    functionsReached:
    - errtableconstraint
    - lappend_int
    - ExecRelCheck
    - bms_union
    - ReportNotNullViolationError
    - ExecGetUpdatedCols
    - RelationGetRelationName
    - errdetail
    - RelationGetRelid
    - ExecRelGenVirtualNotNull
    - errmsg
    - MakeTupleTableSlot
    - TupleDescAttr
    - slot_attisnull
    - execute_attr_map_slot
    - Assert
    - RelationGetDescr
    - ereport
    - build_attrmap_by_name_if_req
    - ExecBuildSlotValueDescription
    - ExecGetInsertedCols
    - errcode
    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:2080,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/execMain.c:2082,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execMain.c:2082,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/executor/execMain.c:2086,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execMain.c:2090,1
    - Dst: build_generation_expression
      Src: /src/postgres/src/backend/executor/execMain.c:2091,1
    - Dst: ExecPrepareExpr
      Src: /src/postgres/src/backend/executor/execMain.c:2097,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:2099,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execMain.c:2107,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/executor/execMain.c:2115,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:2118,1
    - Dst: ExecCheck
      Src: /src/postgres/src/backend/executor/execMain.c:2119,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: 2125
      start: 2065
    functionDepth: 1
    functionLinenumber: 2065
    functionLinenumberEnd: 2125
    functionName: ExecRelGenVirtualNotNull
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - ExecPrepareExpr
    - build_generation_expression
    - list_length
    - GetPerTupleExprContext
    - ExecCheck
    - foreach_current_index
    - palloc0_array
    - makeNode
    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:2086,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execMain.c:2090,1
    - Dst: build_generation_expression
      Src: /src/postgres/src/backend/executor/execMain.c:2091,1
    - Dst: ExecPrepareExpr
      Src: /src/postgres/src/backend/executor/execMain.c:2097,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2098
      start: 2084
    functionDepth: 1
    functionLinenumber: 2084
    functionLinenumberEnd: 2098
    functionName: foreach_int
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 0
    functionsReached:
    - build_generation_expression
    - foreach_current_index
    - makeNode
    - ExecPrepareExpr
    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:2115,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:2118,1
    - Dst: ExecCheck
      Src: /src/postgres/src/backend/executor/execMain.c:2119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2121
      start: 2113
    functionDepth: 1
    functionLinenumber: 2113
    functionLinenumberEnd: 2121
    functionName: foreach_int
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 0
    functionsReached:
    - foreach_current_index
    - Assert
    - 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:2138,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execMain.c:2139,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execMain.c:2140,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:2142,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execMain.c:2155,1
    - Dst: build_attrmap_by_name_if_req
      Src: /src/postgres/src/backend/executor/execMain.c:2157,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/executor/execMain.c:2166,1
    - Dst: MakeTupleTableSlot
      Src: /src/postgres/src/backend/executor/execMain.c:2167,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/executor/execMain.c:2168,1
    - Dst: ExecGetInsertedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2168,1
    - Dst: ExecGetUpdatedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2169,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/executor/execMain.c:2173,1
    - Dst: ExecGetInsertedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2173,1
    - Dst: ExecGetUpdatedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2174,1
    - Dst: ExecBuildSlotValueDescription
      Src: /src/postgres/src/backend/executor/execMain.c:2176,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execMain.c:2176,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:2181,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:2182,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:2183,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/executor/execMain.c:2184,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:2185,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execMain.c:2186,1
    - Dst: errtablecol
      Src: /src/postgres/src/backend/executor/execMain.c:2187,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - resultRelInfo
    - slot
    - estate
    - attnum
    argTypes:
    - ResultRelInfo*
    - TupleTableSlot*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2188
      start: 2130
    functionDepth: 4
    functionLinenumber: 2130
    functionLinenumberEnd: 2188
    functionName: ReportNotNullViolationError
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - execute_attr_map_slot
    - errmsg
    - Assert
    - NameStr
    - MakeTupleTableSlot
    - RelationGetRelid
    - RelationGetDescr
    - TupleDescAttr
    - ereport
    - build_attrmap_by_name_if_req
    - bms_union
    - ExecBuildSlotValueDescription
    - errtablecol
    - ExecGetInsertedCols
    - ExecGetUpdatedCols
    - RelationGetRelationName
    - errdetail
    - errcode
    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:2204,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execMain.c:2213,1
    - Dst: forboth
      Src: /src/postgres/src/backend/executor/execMain.c:2219,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:2222,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:2223,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/execMain.c:2239,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execMain.c:2260,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execMain.c:2263,1
    - Dst: build_attrmap_by_name_if_req
      Src: /src/postgres/src/backend/executor/execMain.c:2265,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/executor/execMain.c:2274,1
    - Dst: MakeTupleTableSlot
      Src: /src/postgres/src/backend/executor/execMain.c:2275,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/executor/execMain.c:2277,1
    - Dst: ExecGetInsertedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2277,1
    - Dst: ExecGetUpdatedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2278,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/executor/execMain.c:2282,1
    - Dst: ExecGetInsertedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2282,1
    - Dst: ExecGetUpdatedCols
      Src: /src/postgres/src/backend/executor/execMain.c:2283,1
    - Dst: ExecBuildSlotValueDescription
      Src: /src/postgres/src/backend/executor/execMain.c:2284,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execMain.c:2284,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:2290,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:2291,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:2292,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execMain.c:2294,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:2300,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:2301,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:2302,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:2305,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:2306,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:2307,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:2313,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:2314,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:2315,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:2318,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:2319,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:2320,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:2325,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:2326,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:2327,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:2330,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:2331,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:2332,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execMain.c:2336,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 44
    argCount: 4
    argNames:
    - kind
    - resultRelInfo
    - slot
    - estate
    argTypes:
    - WCOKind
    - ResultRelInfo*
    - TupleTableSlot*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2341
      start: 2199
    functionDepth: 4
    functionLinenumber: 2199
    functionLinenumberEnd: 2341
    functionName: ExecWithCheckOptions
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 0
    functionsReached:
    - execute_attr_map_slot
    - errcode
    - errmsg
    - MakeTupleTableSlot
    - RelationGetRelid
    - RelationGetDescr
    - ereport
    - ExecGetInsertedCols
    - GetPerTupleExprContext
    - build_attrmap_by_name_if_req
    - bms_union
    - ExecBuildSlotValueDescription
    - elog
    - ExecQual
    - forboth
    - ExecGetUpdatedCols
    - errdetail
    - lfirst
    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:2383,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/executor/execMain.c:2386,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/executor/execMain.c:2388,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/executor/execMain.c:2397,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/executor/execMain.c:2397,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/executor/execMain.c:2401,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/executor/execMain.c:2402,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/execMain.c:2408,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execMain.c:2415,1
    - Dst: pg_attribute_aclcheck
      Src: /src/postgres/src/backend/executor/execMain.c:2429,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/executor/execMain.c:2430,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execMain.c:2431,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/executor/execMain.c:2437,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/executor/execMain.c:2441,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/executor/execMain.c:2441,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/executor/execMain.c:2456,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/executor/execMain.c:2458,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/executor/execMain.c:2462,1
    - Dst: strlen
      Src: /src/postgres/src/backend/executor/execMain.c:2467,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/executor/execMain.c:2469,1
    - Dst: pg_mbcliplen
      Src: /src/postgres/src/backend/executor/execMain.c:2472,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/executor/execMain.c:2473,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/executor/execMain.c:2474,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/executor/execMain.c:2483,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/executor/execMain.c:2487,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/executor/execMain.c:2488,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: 2494
      start: 2362
    functionDepth: 3
    functionLinenumber: 2362
    functionLinenumberEnd: 2494
    functionName: ExecBuildSlotValueDescription
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 5
    functionsReached:
    - NameStr
    - getTypeOutputInfo
    - appendStringInfoChar
    - slot_getallattrs
    - appendStringInfoString
    - TupleDescAttr
    - appendBinaryStringInfo
    - pg_class_aclcheck
    - pg_attribute_aclcheck
    - OidOutputFunctionCall
    - pg_mbcliplen
    - bms_is_member
    - initStringInfo
    - check_enable_rls
    - GetUserId
    - strlen
    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:2512,1
    - Dst: RelationGetIndexAttrBitmap
      Src: /src/postgres/src/backend/executor/execMain.c:2513,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/executor/execMain.c:2516,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - estate
    - relinfo
    argTypes:
    - EState*
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2520
      start: 2501
    functionDepth: 3
    functionLinenumber: 2501
    functionLinenumberEnd: 2520
    functionName: ExecUpdateLockMode
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 0
    functionsReached:
    - bms_overlap
    - RelationGetIndexAttrBitmap
    - ExecGetAllUpdatedCols
    linkageType: ''
    returnType: LockTupleMode
    signature: LockTupleMode ExecUpdateLockMode(EState *estate, ResultRelInfo *relinfo)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execMain.c:2539,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 3
    argNames:
    - estate
    - rti
    - missing_ok
    argTypes:
    - EState*
    - Index
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2541
      start: 2527
    functionDepth: 1
    functionLinenumber: 2527
    functionLinenumberEnd: 2541
    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
      Src: /src/postgres/src/backend/executor/execMain.c:2553,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/executor/execMain.c:2562,1
    - Dst: ExecFindJunkAttributeInTlist
      Src: /src/postgres/src/backend/executor/execMain.c:2563,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/executor/execMain.c:2565,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execMain.c:2566,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/executor/execMain.c:2571,1
    - Dst: ExecFindJunkAttributeInTlist
      Src: /src/postgres/src/backend/executor/execMain.c:2572,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/executor/execMain.c:2574,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execMain.c:2575,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/executor/execMain.c:2581,1
    - Dst: ExecFindJunkAttributeInTlist
      Src: /src/postgres/src/backend/executor/execMain.c:2582,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/executor/execMain.c:2584,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execMain.c:2585,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - erm
    - targetlist
    argTypes:
    - ExecRowMark*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2589
      start: 2550
    functionDepth: 1
    functionLinenumber: 2550
    functionLinenumberEnd: 2589
    functionName: ExecBuildAuxRowMark
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - ExecFindJunkAttributeInTlist
    - snprintf
    - palloc0
    - elog
    - AttributeNumberIsValid
    linkageType: ''
    returnType: ExecAuxRowMark
    signature: 'ExecAuxRowMark *

      ExecBuildAuxRowMark(ExecRowMark *erm, List *targetlist)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:2627,1
    - Dst: EvalPlanQualBegin
      Src: /src/postgres/src/backend/executor/execMain.c:2632,1
    - Dst: EvalPlanQualSlot
      Src: /src/postgres/src/backend/executor/execMain.c:2638,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/execMain.c:2640,1
    - Dst: EvalPlanQualNext
      Src: /src/postgres/src/backend/executor/execMain.c:2653,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/execMain.c:2662,1
    - Dst: ExecMaterializeSlot
      Src: /src/postgres/src/backend/executor/execMain.c:2663,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execMain.c:2670,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - epqstate
    - relation
    - rti
    - inputslot
    argTypes:
    - EPQState*
    - Relation
    - Index
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2674
      start: 2620
    functionDepth: 2
    functionLinenumber: 2620
    functionLinenumberEnd: 2674
    functionName: EvalPlanQual
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 0
    functionsReached:
    - Assert
    - EvalPlanQualSlot
    - TupIsNull
    - EvalPlanQualNext
    - ExecMaterializeSlot
    - ExecCopySlot
    - ExecClearTuple
    - EvalPlanQualBegin
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nEvalPlanQual(EPQState *epqstate, Relation relation,\n\t\t\t
      Index rti, TupleTableSlot *inputslot)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execMain.c:2710,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: 2723
      start: 2689
    functionDepth: 0
    functionLinenumber: 2689
    functionLinenumberEnd: 2723
    functionName: EvalPlanQualInit
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 4
    functionsReached:
    - palloc0
    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:2735,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - epqstate
    - subplan
    - auxrowmarks
    argTypes:
    - EPQState*
    - Plan*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2740
      start: 2731
    functionDepth: 1
    functionLinenumber: 2731
    functionLinenumberEnd: 2740
    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:2754,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:2755,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:2762,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/execMain.c:2763,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:2764,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - epqstate
    - relation
    - rti
    argTypes:
    - EPQState*
    - Relation
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2768
      start: 2748
    functionDepth: 3
    functionLinenumber: 2748
    functionLinenumberEnd: 2768
    functionName: EvalPlanQualSlot
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 2
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - table_slot_create
    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:2784,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:2785,1
    - Dst: RowMarkRequiresRowShareLock
      Src: /src/postgres/src/backend/executor/execMain.c:2789,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execMain.c:2790,1
    - Dst: ExecGetJunkAttribute
      Src: /src/postgres/src/backend/executor/execMain.c:2797,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/executor/execMain.c:2804,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:2806,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execMain.c:2806,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:2816,1
    - Dst: ExecGetJunkAttribute
      Src: /src/postgres/src/backend/executor/execMain.c:2819,1
    - Dst: GetFdwRoutineForRelation
      Src: /src/postgres/src/backend/executor/execMain.c:2832,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execMain.c:2835,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execMain.c:2836,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execMain.c:2837,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execMain.c:2838,1
    - Dst: FdwRoutine*::RefetchForeignRow
      Src: /src/postgres/src/backend/executor/execMain.c:2840,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/execMain.c:2845,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execMain.c:2846,1
    - Dst: table_tuple_fetch_row_version
      Src: /src/postgres/src/backend/executor/execMain.c:2858,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execMain.c:2859,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execMain.c:2861,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:2867,1
    - Dst: ExecGetJunkAttribute
      Src: /src/postgres/src/backend/executor/execMain.c:2870,1
    - Dst: ExecStoreHeapTupleDatum
      Src: /src/postgres/src/backend/executor/execMain.c:2877,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 3
    argNames:
    - epqstate
    - rti
    - slot
    argTypes:
    - EPQState*
    - Index
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2880
      start: 2776
    functionDepth: 5
    functionLinenumber: 2776
    functionLinenumberEnd: 2880
    functionName: EvalPlanQualFetchRowMark
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - errmsg
    - Assert
    - ExecGetJunkAttribute
    - FdwRoutine*::RefetchForeignRow
    - RowMarkRequiresRowShareLock
    - TupIsNull
    - ExecStoreHeapTupleDatum
    - ereport
    - elog
    - DatumGetObjectId
    - table_tuple_fetch_row_version
    - OidIsValid
    - GetFdwRoutineForRelation
    - RelationGetRelationName
    - DatumGetPointer
    - errcode
    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:2893,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/execMain.c:2894,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:2895,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - epqstate
    argTypes:
    - EPQState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2898
      start: 2887
    functionDepth: 2
    functionLinenumber: 2887
    functionLinenumberEnd: 2898
    functionName: EvalPlanQualNext
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 2
    functionsReached:
    - MemoryContextSwitchTo
    - ExecProcNode
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      EvalPlanQualNext(EPQState *epqstate)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EvalPlanQualStart
      Src: /src/postgres/src/backend/executor/execMain.c:2912,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execMain.c:2927,1
    - Dst: ExecSetParamPlanMulti
      Src: /src/postgres/src/backend/executor/execMain.c:2940,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execMain.c:2941,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execMain.c:2943,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/execMain.c:2959,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - epqstate
    argTypes:
    - EPQState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2962
      start: 2903
    functionDepth: 3
    functionLinenumber: 2903
    functionLinenumberEnd: 2962
    functionName: EvalPlanQualBegin
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 2
    functionsReached:
    - ExecSetParamPlanMulti
    - list_length
    - GetPerTupleExprContext
    - memcpy
    - EvalPlanQualStart
    - 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:2979,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:2981,1
    - Dst: ExecSetParamPlanMulti
      Src: /src/postgres/src/backend/executor/execMain.c:3044,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execMain.c:3045,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execMain.c:3048,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execMain.c:3050,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:3077,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:3078,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:3080,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/execMain.c:3083,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execMain.c:3084,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execMain.c:3094,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:3095,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:3097,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/execMain.c:3106,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/execMain.c:3107,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:3109,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execMain.c:3111,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execMain.c:3113,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execMain.c:3117,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/execMain.c:3125,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:3127,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 48
    argCount: 2
    argNames:
    - epqstate
    - planTree
    argTypes:
    - EPQState*
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3128
      start: 2970
    functionDepth: 6
    functionLinenumber: 2970
    functionLinenumberEnd: 3128
    functionName: EvalPlanQualStart
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - memcpy
    - ExecSetParamPlanMulti
    - palloc0
    - list_length
    - GetPerTupleExprContext
    - foreach
    - ExecInitNode
    - lappend
    - lfirst_int
    - CreateExecutorState
    - palloc0_array
    - palloc_array
    - lfirst
    linkageType: ''
    returnType: void
    signature: void EvalPlanQualStart(EPQState *epqstate, Plan *planTree)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/executor/execMain.c:3157,1
    - Dst: ExecResetTupleTable
      Src: /src/postgres/src/backend/executor/execMain.c:3159,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:3167,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/execMain.c:3169,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execMain.c:3171,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execMain.c:3173,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/execMain.c:3175,1
    - Dst: ExecResetTupleTable
      Src: /src/postgres/src/backend/executor/execMain.c:3179,1
    - Dst: ExecCloseResultRelations
      Src: /src/postgres/src/backend/executor/execMain.c:3182,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execMain.c:3184,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/executor/execMain.c:3186,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 1
    argNames:
    - epqstate
    argTypes:
    - EPQState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3195
      start: 3141
    functionDepth: 4
    functionLinenumber: 3141
    functionLinenumberEnd: 3195
    functionName: EvalPlanQualEnd
    functionSourceFile: /src/postgres/src/backend/executor/execMain.c
    functionUses: 6
    functionsReached:
    - FreeExecutorState
    - MemoryContextSwitchTo
    - ExecResetTupleTable
    - memset
    - ExecEndNode
    - foreach
    - ExecCloseResultRelations
    - lfirst
    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:
    - errmsg
    - Assert
    - get_rel_name
    - slot_getsysattr
    - TupIsNull
    - RowMarkRequiresRowShareLock
    - IsA
    - ereport
    - ItemPointerIsValid
    - fetch_cursor_param_value
    - elog
    - DatumGetObjectId
    - search_plan_tree
    - PortalIsValid
    - DatumGetPointer
    - errcode
    - GetPortalByName
    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:
    - errmsg
    - ParamListInfo::paramFetch
    - TextDatumGetCString
    - format_type_be
    - ereport
    - OidIsValid
    - errcode
    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:
    - nodeTag
    - outerPlanState
    - search_plan_tree
    - RelationGetRelid
    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: 37
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 37
    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:59,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:60,1
    - Dst: IsCTIDVar
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:65,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:66,1
    - Dst: IsCTIDVar
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:67,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:69,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:73,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:75,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:93,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 2
    argNames:
    - expr
    - tidstate
    argTypes:
    - OpExpr*
    - TidRangeScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 56
    functionDepth: 2
    functionLinenumber: 56
    functionLinenumberEnd: 99
    functionName: MakeTidOpExpr
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 0
    functionsReached:
    - IsCTIDVar
    - get_leftop
    - get_rightop
    - elog
    - palloc
    - ExecInitExpr
    linkageType: ''
    returnType: TidOpExpr
    signature: 'TidOpExpr *

      MakeTidOpExpr(OpExpr *expr, TidRangeScanState *tidstate)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:112,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:114,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:117,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:118,1
    - Dst: MakeTidOpExpr
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:120,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - tidrangestate
    argTypes:
    - TidRangeScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 105
    functionDepth: 6
    functionLinenumber: 105
    functionLinenumberEnd: 125
    functionName: TidExprListCreate
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 1
    functionsReached:
    - MakeTidOpExpr
    - IsA
    - foreach
    - elog
    - lappend
    - lfirst
    linkageType: ''
    returnType: void
    signature: void TidExprListCreate(TidRangeScanState *tidrangestate)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:151,1
    - Dst: ItemPointerSet
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:152,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:154,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:156,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:162,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:162,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:174,1
    - Dst: ItemPointerInc
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:181,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:184,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:185,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:192,1
    - Dst: ItemPointerDec
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:199,1
    - Dst: ItemPointerCompare
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:202,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:203,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:207,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:208,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 1
    argNames:
    - node
    argTypes:
    - TidRangeScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 138
    functionDepth: 2
    functionLinenumber: 138
    functionLinenumberEnd: 211
    functionName: TidRangeEval
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 0
    functionsReached:
    - ItemPointerInc
    - ItemPointerCopy
    - ItemPointerSet
    - ExecEvalExprSwitchContext
    - ItemPointerCompare
    - foreach
    - ItemPointerDec
    - DatumGetPointer
    - lfirst
    linkageType: ''
    returnType: bool
    signature: bool TidRangeEval(TidRangeScanState *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TidRangeEval
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:240,1
    - Dst: table_beginscan_tidrange
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:245,1
    - Dst: table_rescan_tidrange
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:254,1
    - Dst: table_scan_getnextslot_tidrange
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:262,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:265,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - node
    argTypes:
    - TidRangeScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 221
    functionDepth: 3
    functionLinenumber: 221
    functionLinenumberEnd: 269
    functionName: TidRangeNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 0
    functionsReached:
    - table_beginscan_tidrange
    - table_scan_getnextslot_tidrange
    - TidRangeEval
    - ExecClearTuple
    - table_rescan_tidrange
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      TidRangeNext(TidRangeScanState *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - slot
    argTypes:
    - TidRangeScanState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 278
    functionName: TidRangeRecheck
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool TidRangeRecheck(TidRangeScanState *node, TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:298,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 295
    functionDepth: 1
    functionLinenumber: 295
    functionLinenumberEnd: 303
    functionName: ExecTidRangeScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 0
    functionsReached:
    - ExecScan
    - castNode
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecTidRangeScan(PlanState *pstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - TidRangeScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 309
    functionDepth: 1
    functionLinenumber: 309
    functionLinenumberEnd: 319
    functionName: ExecReScanTidRangeScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 0
    functionsReached:
    - ExecScanReScan
    linkageType: ''
    returnType: void
    signature: void ExecReScanTidRangeScan(TidRangeScanState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_endscan
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:334,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - TidRangeScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 328
    functionDepth: 1
    functionLinenumber: 328
    functionLinenumberEnd: 335
    functionName: ExecEndTidRangeScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 0
    functionsReached:
    - table_endscan
    linkageType: ''
    returnType: void
    signature: void ExecEndTidRangeScan(TidRangeScanState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:357,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:367,1
    - Dst: ExecOpenScanRelation
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:377,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:385,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:386,1
    - Dst: table_slot_callbacks
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:387,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:392,1
    - Dst: ExecAssignScanProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:393,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:399,1
    - Dst: TidExprListCreate
      Src: /src/postgres/src/backend/executor/nodeTidrangescan.c:401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - TidRangeScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 348
    functionDepth: 2
    functionLinenumber: 348
    functionLinenumberEnd: 407
    functionName: ExecInitTidRangeScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeTidrangescan.c
    functionUses: 0
    functionsReached:
    - ExecInitScanTupleSlot
    - ExecAssignExprContext
    - ExecOpenScanRelation
    - RelationGetDescr
    - table_slot_callbacks
    - TidExprListCreate
    - ExecInitQual
    - ExecInitResultTypeTL
    - ExecAssignScanProjectionInfo
    - makeNode
    linkageType: ''
    returnType: TidRangeScanState
    signature: 'TidRangeScanState *

      ExecInitTidRangeScan(TidRangeScan *node, EState *estate, int eflags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeHash.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 95
    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:109,1
    - Dst: MultiExecParallelHash
      Src: /src/postgres/src/backend/executor/nodeHash.c:112,1
    - Dst: MultiExecPrivateHash
      Src: /src/postgres/src/backend/executor/nodeHash.c:114,1
    - Dst: InstrStopNode
      Src: /src/postgres/src/backend/executor/nodeHash.c:118,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - node
    argTypes:
    - HashState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 128
    functionName: MultiExecHash
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - MultiExecParallelHash
    - InstrStartNode
    - InstrStopNode
    - MultiExecPrivateHash
    linkageType: ''
    returnType: Node
    signature: 'Node *

      MultiExecHash(HashState *node)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeHash.c:148,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeHash.c:165,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeHash.c:166,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeHash.c:171,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/nodeHash.c:173,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/nodeHash.c:178,1
    - Dst: ExecHashGetSkewBucket
      Src: /src/postgres/src/backend/executor/nodeHash.c:181,1
    - Dst: ExecHashSkewTableInsert
      Src: /src/postgres/src/backend/executor/nodeHash.c:185,1
    - Dst: ExecHashTableInsert
      Src: /src/postgres/src/backend/executor/nodeHash.c:192,1
    - Dst: ExecHashIncreaseNumBuckets
      Src: /src/postgres/src/backend/executor/nodeHash.c:200,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 1
    argNames:
    - node
    argTypes:
    - HashState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 137
    functionDepth: 2
    functionLinenumber: 137
    functionLinenumberEnd: 208
    functionName: MultiExecPrivateHash
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - ResetExprContext
    - ExecHashTableInsert
    - ExecProcNode
    - ExecEvalExprSwitchContext
    - TupIsNull
    - ExecHashIncreaseNumBuckets
    - DatumGetUInt32
    - outerPlanState
    - ExecHashGetSkewBucket
    - ExecHashSkewTableInsert
    linkageType: ''
    returnType: void
    signature: void MultiExecPrivateHash(HashState *node)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeHash.c:233,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:251,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:251,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:252,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHash.c:261,1
    - Dst: PHJ_GROW_BATCHES_PHASE
      Src: /src/postgres/src/backend/executor/nodeHash.c:275,1
    - Dst: BarrierAttach
      Src: /src/postgres/src/backend/executor/nodeHash.c:275,1
    - Dst: ExecParallelHashIncreaseNumBatches
      Src: /src/postgres/src/backend/executor/nodeHash.c:277,1
    - Dst: PHJ_GROW_BUCKETS_PHASE
      Src: /src/postgres/src/backend/executor/nodeHash.c:278,1
    - Dst: BarrierAttach
      Src: /src/postgres/src/backend/executor/nodeHash.c:278,1
    - Dst: ExecParallelHashIncreaseNumBuckets
      Src: /src/postgres/src/backend/executor/nodeHash.c:280,1
    - Dst: ExecParallelHashEnsureBatchAccessors
      Src: /src/postgres/src/backend/executor/nodeHash.c:281,1
    - Dst: ExecParallelHashTableSetCurrentBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:282,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeHash.c:287,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeHash.c:288,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeHash.c:292,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/nodeHash.c:294,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/nodeHash.c:294,1
    - Dst: ExecParallelHashTableInsert
      Src: /src/postgres/src/backend/executor/nodeHash.c:299,1
    - Dst: sts_end_write
      Src: /src/postgres/src/backend/executor/nodeHash.c:308,1
    - Dst: ExecParallelHashMergeCounters
      Src: /src/postgres/src/backend/executor/nodeHash.c:314,1
    - Dst: BarrierDetach
      Src: /src/postgres/src/backend/executor/nodeHash.c:316,1
    - Dst: BarrierDetach
      Src: /src/postgres/src/backend/executor/nodeHash.c:317,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHash.c:323,1
    - Dst: my_log2
      Src: /src/postgres/src/backend/executor/nodeHash.c:343,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:350,1
    - Dst: ExecParallelHashEnsureBatchAccessors
      Src: /src/postgres/src/backend/executor/nodeHash.c:351,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:358,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:358,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:359,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:360,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 44
    argCount: 1
    argNames:
    - node
    argTypes:
    - HashState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 218
    functionDepth: 2
    functionLinenumber: 218
    functionLinenumberEnd: 361
    functionName: MultiExecParallelHash
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - PHJ_GROW_BATCHES_PHASE
    - ExecParallelHashIncreaseNumBatches
    - TupIsNull
    - DatumGetUInt32
    - BarrierPhase
    - ExecParallelHashMergeCounters
    - ExecParallelHashIncreaseNumBuckets
    - my_log2
    - sts_end_write
    - ExecParallelHashEnsureBatchAccessors
    - ExecEvalExprSwitchContext
    - BarrierArriveAndWait
    - BarrierDetach
    - outerPlanState
    - BarrierAttach
    - ResetExprContext
    - Assert
    - ExecParallelHashTableSetCurrentBatch
    - ExecProcNode
    - ExecParallelHashTableInsert
    - PHJ_GROW_BUCKETS_PHASE
    linkageType: ''
    returnType: void
    signature: void MultiExecParallelHash(HashState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:375,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeHash.c:380,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeHash.c:392,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeHash.c:397,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeHash.c:397,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeHash.c:397,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeHash.c:403,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:406,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - Hash*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 369
    functionDepth: 1
    functionLinenumber: 369
    functionLinenumberEnd: 418
    functionName: ExecInitHash
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExecAssignExprContext
    - ExecInitResultTupleSlotTL
    - ExecInitNode
    - outerPlan
    - outerPlanState
    - makeNode
    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:434,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeHash.c:435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - HashState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 426
    functionDepth: 1
    functionLinenumber: 426
    functionLinenumberEnd: 436
    functionName: ExecEndHash
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - ExecEndNode
    - outerPlanState
    linkageType: ''
    returnType: void
    signature: void ExecEndHash(HashState *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeHash.c:465,1
    - Dst: ExecChooseHashTableSize
      Src: /src/postgres/src/backend/executor/nodeHash.c:474,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeHash.c:475,1
    - Dst: my_log2
      Src: /src/postgres/src/backend/executor/nodeHash.c:483,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:484,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/executor/nodeHash.c:493,1
    - Dst: printf
      Src: /src/postgres/src/backend/executor/nodeHash.c:528,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeHash.c:536,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeHash.c:540,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeHash.c:544,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:550,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:560,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeHash.c:562,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeHash.c:563,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:565,1
    - Dst: PrepareTempTablespaces
      Src: /src/postgres/src/backend/executor/nodeHash.c:569,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:572,1
    - Dst: BarrierAttach
      Src: /src/postgres/src/backend/executor/nodeHash.c:588,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:597,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHash.c:598,1
    - Dst: ExecParallelHashJoinSetUpBatches
      Src: /src/postgres/src/backend/executor/nodeHash.c:605,1
    - Dst: ExecParallelHashTableAlloc
      Src: /src/postgres/src/backend/executor/nodeHash.c:612,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:628,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeHash.c:630,1
    - Dst: ExecHashBuildSkewHash
      Src: /src/postgres/src/backend/executor/nodeHash.c:638,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:640,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 71
    argCount: 1
    argNames:
    - state
    argTypes:
    - HashState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 445
    functionDepth: 1
    functionLinenumber: 445
    functionLinenumberEnd: 644
    functionName: ExecHashTableCreate
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - BarrierAttach
    - printf
    - Assert
    - MemoryContextSwitchTo
    - ExecParallelHashJoinSetUpBatches
    - ExecChooseHashTableSize
    - ExecHashBuildSkewHash
    - ExecParallelHashTableAlloc
    - BarrierArriveAndWait
    - BarrierPhase
    - outerPlan
    - OidIsValid
    - palloc_object
    - AllocSetContextCreate
    - PrepareTempTablespaces
    - palloc0_array
    - my_log2
    linkageType: ''
    returnType: HashJoinTable
    signature: HashJoinTable ExecHashTableCreate(HashState *state)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeHash.c:685,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeHash.c:686,1
    - Dst: get_hash_memory_limit
      Src: /src/postgres/src/backend/executor/nodeHash.c:692,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeHash.c:705,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeHash.c:753,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeHash.c:774,1
    - Dst: pg_prevpower2_size_t
      Src: /src/postgres/src/backend/executor/nodeHash.c:776,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeHash.c:780,1
    - Dst: ceil
      Src: /src/postgres/src/backend/executor/nodeHash.c:782,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeHash.c:783,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeHash.c:786,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/executor/nodeHash.c:788,1
    - Dst: ExecChooseHashTableSize
      Src: /src/postgres/src/backend/executor/nodeHash.c:809,1
    - Dst: pg_nextpower2_size_t
      Src: /src/postgres/src/backend/executor/nodeHash.c:828,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeHash.c:829,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/executor/nodeHash.c:831,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:842,1
    - Dst: ceil
      Src: /src/postgres/src/backend/executor/nodeHash.c:845,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeHash.c:846,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/executor/nodeHash.c:848,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeHash.c:848,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:935,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:936,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 62
    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: 940
      start: 657
    functionDepth: 3
    functionLinenumber: 657
    functionLinenumberEnd: 940
    functionName: ExecChooseHashTableSize
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 3
    functionsReached:
    - Min
    - Assert
    - ExecChooseHashTableSize
    - pg_nextpower2_size_t
    - ceil
    - pg_prevpower2_size_t
    - get_hash_memory_limit
    - Max
    - pg_nextpower2_32
    - MAXALIGN
    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:964,1
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/executor/nodeHash.c:966,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/nodeHash.c:971,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeHash.c:974,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 949
    functionDepth: 1
    functionLinenumber: 949
    functionLinenumberEnd: 975
    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: 1016
      start: 991
    functionDepth: 0
    functionLinenumber: 991
    functionLinenumberEnd: 1016
    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:1038,1
    - Dst: ExecHashIncreaseBatchSize
      Src: /src/postgres/src/backend/executor/nodeHash.c:1042,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1046,1
    - Dst: printf
      Src: /src/postgres/src/backend/executor/nodeHash.c:1049,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:1055,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeHash.c:1058,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeHash.c:1059,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:1061,1
    - Dst: PrepareTempTablespaces
      Src: /src/postgres/src/backend/executor/nodeHash.c:1064,1
    - Dst: repalloc0_array
      Src: /src/postgres/src/backend/executor/nodeHash.c:1069,1
    - Dst: repalloc0_array
      Src: /src/postgres/src/backend/executor/nodeHash.c:1070,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1085,1
    - Dst: repalloc_array
      Src: /src/postgres/src/backend/executor/nodeHash.c:1091,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeHash.c:1100,1
    - Dst: HASH_CHUNK_DATA
      Src: /src/postgres/src/backend/executor/nodeHash.c:1116,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1117,1
    - Dst: ExecHashGetBucketAndBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1123,1
    - Dst: dense_alloc
      Src: /src/postgres/src/backend/executor/nodeHash.c:1131,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeHash.c:1132,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1141,1
    - Dst: ExecHashJoinSaveTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1142,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1142,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeHash.c:1152,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeHash.c:1155,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeHash.c:1159,1
    - Dst: printf
      Src: /src/postgres/src/backend/executor/nodeHash.c:1164,1
    - Dst: printf
      Src: /src/postgres/src/backend/executor/nodeHash.c:1180,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 56
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1184
      start: 1023
    functionDepth: 1
    functionLinenumber: 1023
    functionLinenumberEnd: 1184
    functionName: ExecHashIncreaseNumBatches
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - CHECK_FOR_INTERRUPTS
    - HASH_CHUNK_DATA
    - ExecHashIncreaseBatchSize
    - dense_alloc
    - PrepareTempTablespaces
    - palloc0_array
    - Min
    - pfree
    - repalloc_array
    - ExecHashGetBucketAndBatch
    - memcpy
    - ExecHashJoinSaveTuple
    - printf
    - Assert
    - repalloc0_array
    - memset
    - HJTUPLE_MINTUPLE
    - MAXALIGN
    linkageType: ''
    returnType: void
    signature: void ExecHashIncreaseNumBatches(HashJoinTable hashtable)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1196,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:1196,1
    - Dst: PHJ_GROW_BATCHES_PHASE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1203,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:1203,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHash.c:1213,1
    - Dst: ExecParallelHashCloseBatchAccessors
      Src: /src/postgres/src/backend/executor/nodeHash.c:1228,1
    - Dst: get_hash_memory_limit
      Src: /src/postgres/src/backend/executor/nodeHash.c:1238,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/executor/nodeHash.c:1247,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1259,1
    - Dst: ExecParallelHashJoinSetUpBatches
      Src: /src/postgres/src/backend/executor/nodeHash.c:1260,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1261,1
    - Dst: pg_prevpower2_32
      Src: /src/postgres/src/backend/executor/nodeHash.c:1289,1
    - Dst: ceil
      Src: /src/postgres/src/backend/executor/nodeHash.c:1291,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeHash.c:1292,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeHash.c:1294,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/executor/nodeHash.c:1295,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/executor/nodeHash.c:1296,1
    - Dst: dsa_allocate
      Src: /src/postgres/src/backend/executor/nodeHash.c:1298,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:1301,1
    - Dst: dsa_pointer_atomic_init
      Src: /src/postgres/src/backend/executor/nodeHash.c:1304,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:1312,1
    - Dst: dsa_pointer_atomic_write
      Src: /src/postgres/src/backend/executor/nodeHash.c:1314,1
    - Dst: ExecParallelHashCloseBatchAccessors
      Src: /src/postgres/src/backend/executor/nodeHash.c:1326,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHash.c:1332,1
    - Dst: ExecParallelHashEnsureBatchAccessors
      Src: /src/postgres/src/backend/executor/nodeHash.c:1338,1
    - Dst: ExecParallelHashTableSetCurrentBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1339,1
    - Dst: ExecParallelHashRepartitionFirst
      Src: /src/postgres/src/backend/executor/nodeHash.c:1341,1
    - Dst: ExecParallelHashRepartitionRest
      Src: /src/postgres/src/backend/executor/nodeHash.c:1342,1
    - Dst: ExecParallelHashMergeCounters
      Src: /src/postgres/src/backend/executor/nodeHash.c:1343,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHash.c:1345,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHash.c:1356,1
    - Dst: ExecParallelHashEnsureBatchAccessors
      Src: /src/postgres/src/backend/executor/nodeHash.c:1364,1
    - Dst: ExecParallelHashTableSetCurrentBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1365,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:1367,1
    - Dst: NthParallelHashJoinBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1382,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/executor/nodeHash.c:1406,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHash.c:1413,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 80
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1416
      start: 1191
    functionDepth: 3
    functionLinenumber: 1191
    functionLinenumberEnd: 1416
    functionName: ExecParallelHashIncreaseNumBatches
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - ExecParallelHashRepartitionFirst
    - PHJ_GROW_BATCHES_PHASE
    - dsa_free
    - Min
    - dsa_allocate
    - dsa_pointer_atomic_init
    - dsa_pointer_atomic_write
    - get_hash_memory_limit
    - BarrierPhase
    - Max
    - ExecParallelHashMergeCounters
    - pg_prevpower2_32
    - pg_nextpower2_32
    - ExecParallelHashEnsureBatchAccessors
    - ceil
    - BarrierArriveAndWait
    - ExecParallelHashRepartitionRest
    - NthParallelHashJoinBatch
    - ExecParallelHashJoinSetUpBatches
    - Assert
    - ExecParallelHashTableSetCurrentBatch
    - dsa_get_address
    - ExecParallelHashCloseBatchAccessors
    linkageType: ''
    returnType: void
    signature: void ExecParallelHashIncreaseNumBatches(HashJoinTable hashtable)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1429,1
    - Dst: ExecParallelHashPopChunkQueue
      Src: /src/postgres/src/backend/executor/nodeHash.c:1431,1
    - Dst: HASH_CHUNK_DATA
      Src: /src/postgres/src/backend/executor/nodeHash.c:1438,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1439,1
    - Dst: ExecHashGetBucketAndBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1445,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1448,1
    - Dst: ExecParallelHashTupleAlloc
      Src: /src/postgres/src/backend/executor/nodeHash.c:1453,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeHash.c:1457,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1457,1
    - Dst: ExecParallelHashPushTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1458,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeHash.c:1464,1
    - Dst: sts_puttuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1468,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeHash.c:1476,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1477,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/executor/nodeHash.c:1481,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeHash.c:1483,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1485
      start: 1423
    functionDepth: 1
    functionLinenumber: 1423
    functionLinenumberEnd: 1485
    functionName: ExecParallelHashRepartitionFirst
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - Assert
    - CHECK_FOR_INTERRUPTS
    - ExecHashGetBucketAndBatch
    - memcpy
    - HASH_CHUNK_DATA
    - ExecParallelHashTupleAlloc
    - sts_puttuple
    - ExecParallelHashPushTuple
    - ExecParallelHashPopChunkQueue
    - HJTUPLE_MINTUPLE
    - dsa_free
    - MAXALIGN
    linkageType: ''
    returnType: void
    signature: void ExecParallelHashRepartitionFirst(HashJoinTable hashtable)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:1501,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeHash.c:1502,1
    - Dst: NthParallelHashJoinBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1506,1
    - Dst: sts_attach
      Src: /src/postgres/src/backend/executor/nodeHash.c:1508,1
    - Dst: ParallelHashJoinBatchInner
      Src: /src/postgres/src/backend/executor/nodeHash.c:1508,1
    - Dst: sts_begin_parallel_scan
      Src: /src/postgres/src/backend/executor/nodeHash.c:1520,1
    - Dst: sts_parallel_scan_next
      Src: /src/postgres/src/backend/executor/nodeHash.c:1521,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeHash.c:1523,1
    - Dst: ExecHashGetBucketAndBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1528,1
    - Dst: sts_puttuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1536,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeHash.c:1539,1
    - Dst: sts_end_parallel_scan
      Src: /src/postgres/src/backend/executor/nodeHash.c:1541,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeHash.c:1544,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1545
      start: 1490
    functionDepth: 1
    functionLinenumber: 1490
    functionLinenumberEnd: 1545
    functionName: ExecParallelHashRepartitionRest
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - pfree
    - CHECK_FOR_INTERRUPTS
    - ParallelHashJoinBatchInner
    - sts_end_parallel_scan
    - sts_parallel_scan_next
    - dsa_get_address
    - sts_puttuple
    - NthParallelHashJoinBatch
    - MAXALIGN
    - ExecHashGetBucketAndBatch
    - palloc0_array
    - sts_begin_parallel_scan
    - sts_attach
    linkageType: ''
    returnType: void
    signature: void ExecParallelHashRepartitionRest(HashJoinTable hashtable)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/executor/nodeHash.c:1556,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeHash.c:1572,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1573
      start: 1550
    functionDepth: 1
    functionLinenumber: 1550
    functionLinenumberEnd: 1573
    functionName: ExecParallelHashMergeCounters
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 2
    functionsReached:
    - LWLockRelease
    - LWLockAcquire
    linkageType: ''
    returnType: void
    signature: void ExecParallelHashMergeCounters(HashJoinTable hashtable)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/backend/executor/nodeHash.c:1590,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1597,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1598,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1599,1
    - Dst: repalloc_array
      Src: /src/postgres/src/backend/executor/nodeHash.c:1608,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeHash.c:1611,1
    - Dst: HASH_CHUNK_DATA
      Src: /src/postgres/src/backend/executor/nodeHash.c:1622,1
    - Dst: ExecHashGetBucketAndBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1626,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeHash.c:1634,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1635,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeHash.c:1639,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1641
      start: 1580
    functionDepth: 1
    functionLinenumber: 1580
    functionLinenumberEnd: 1641
    functionName: ExecHashIncreaseNumBuckets
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - printf
    - Assert
    - CHECK_FOR_INTERRUPTS
    - memset
    - repalloc_array
    - HASH_CHUNK_DATA
    - ExecHashGetBucketAndBatch
    - HJTUPLE_MINTUPLE
    - MAXALIGN
    linkageType: ''
    returnType: void
    signature: void ExecHashIncreaseNumBuckets(HashJoinTable hashtable)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1651,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:1651,1
    - Dst: PHJ_GROW_BUCKETS_PHASE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1658,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:1658,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHash.c:1662,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/executor/nodeHash.c:1672,1
    - Dst: dsa_allocate
      Src: /src/postgres/src/backend/executor/nodeHash.c:1674,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:1676,1
    - Dst: dsa_pointer_atomic_init
      Src: /src/postgres/src/backend/executor/nodeHash.c:1679,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHash.c:1691,1
    - Dst: ExecParallelHashEnsureBatchAccessors
      Src: /src/postgres/src/backend/executor/nodeHash.c:1697,1
    - Dst: ExecParallelHashTableSetCurrentBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1698,1
    - Dst: ExecParallelHashPopChunkQueue
      Src: /src/postgres/src/backend/executor/nodeHash.c:1699,1
    - Dst: HASH_CHUNK_DATA
      Src: /src/postgres/src/backend/executor/nodeHash.c:1705,1
    - Dst: ExecHashGetBucketAndBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1710,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1712,1
    - Dst: ExecParallelHashPushTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1715,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeHash.c:1719,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1720,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeHash.c:1724,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHash.c:1726,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1729
      start: 1643
    functionDepth: 1
    functionLinenumber: 1643
    functionLinenumberEnd: 1729
    functionName: ExecParallelHashIncreaseNumBuckets
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - Assert
    - dsa_allocate
    - ExecParallelHashTableSetCurrentBatch
    - CHECK_FOR_INTERRUPTS
    - ExecParallelHashEnsureBatchAccessors
    - ExecHashGetBucketAndBatch
    - BarrierArriveAndWait
    - dsa_pointer_atomic_init
    - HASH_CHUNK_DATA
    - BarrierPhase
    - dsa_get_address
    - PHJ_GROW_BUCKETS_PHASE
    - ExecParallelHashPushTuple
    - ExecParallelHashPopChunkQueue
    - HJTUPLE_MINTUPLE
    - dsa_free
    - MAXALIGN
    linkageType: ''
    returnType: void
    signature: void ExecParallelHashIncreaseNumBuckets(HashJoinTable hashtable)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ExecFetchSlotMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1748,1
    - Dst: ExecHashGetBucketAndBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1752,1
    - Dst: dense_alloc
      Src: /src/postgres/src/backend/executor/nodeHash.c:1769,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeHash.c:1772,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1772,1
    - Dst: HeapTupleHeaderClearMatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1780,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1780,1
    - Dst: ExecHashIncreaseNumBatches
      Src: /src/postgres/src/backend/executor/nodeHash.c:1810,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1817,1
    - Dst: ExecHashJoinSaveTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1818,1
    - Dst: heap_free_minimal_tuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1825,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 3
    argNames:
    - hashtable
    - slot
    - hashvalue
    argTypes:
    - HashJoinTable
    - TupleTableSlot*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1826
      start: 1742
    functionDepth: 2
    functionLinenumber: 1742
    functionLinenumberEnd: 1826
    functionName: ExecHashTableInsert
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - Assert
    - ExecFetchSlotMinimalTuple
    - ExecHashJoinSaveTuple
    - memcpy
    - ExecHashIncreaseNumBatches
    - HeapTupleHeaderClearMatch
    - dense_alloc
    - ExecHashGetBucketAndBatch
    - HJTUPLE_MINTUPLE
    - heap_free_minimal_tuple
    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:1838,1
    - Dst: ExecHashGetBucketAndBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1844,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1851,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:1851,1
    - Dst: ExecParallelHashTupleAlloc
      Src: /src/postgres/src/backend/executor/nodeHash.c:1853,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeHash.c:1861,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1861,1
    - Dst: HeapTupleHeaderClearMatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1862,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1862,1
    - Dst: ExecParallelHashPushTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1865,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeHash.c:1870,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1872,1
    - Dst: ExecParallelHashTuplePrealloc
      Src: /src/postgres/src/backend/executor/nodeHash.c:1877,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1881,1
    - Dst: sts_puttuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1883,1
    - Dst: heap_free_minimal_tuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1889,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 3
    argNames:
    - hashtable
    - slot
    - hashvalue
    argTypes:
    - HashJoinTable
    - TupleTableSlot*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1890
      start: 1832
    functionDepth: 1
    functionLinenumber: 1832
    functionLinenumberEnd: 1890
    functionName: ExecParallelHashTableInsert
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - Assert
    - ExecFetchSlotMinimalTuple
    - ExecParallelHashTuplePrealloc
    - HeapTupleHeaderClearMatch
    - ExecParallelHashTupleAlloc
    - HJTUPLE_MINTUPLE
    - BarrierPhase
    - sts_puttuple
    - ExecParallelHashPushTuple
    - ExecHashGetBucketAndBatch
    - memcpy
    - heap_free_minimal_tuple
    - MAXALIGN
    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:1904,1
    - Dst: ExecHashGetBucketAndBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1910,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:1911,1
    - Dst: ExecParallelHashTupleAlloc
      Src: /src/postgres/src/backend/executor/nodeHash.c:1912,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeHash.c:1916,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1916,1
    - Dst: HeapTupleHeaderClearMatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:1917,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:1917,1
    - Dst: ExecParallelHashPushTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1918,1
    - Dst: heap_free_minimal_tuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:1922,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - hashtable
    - slot
    - hashvalue
    argTypes:
    - HashJoinTable
    - TupleTableSlot*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1923
      start: 1898
    functionDepth: 1
    functionLinenumber: 1898
    functionLinenumberEnd: 1923
    functionName: ExecParallelHashTableInsertCurrentBatch
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExecFetchSlotMinimalTuple
    - HeapTupleHeaderClearMatch
    - ExecParallelHashTupleAlloc
    - HJTUPLE_MINTUPLE
    - ExecParallelHashPushTuple
    - ExecHashGetBucketAndBatch
    - memcpy
    - heap_free_minimal_tuple
    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:1965,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - hashtable
    - hashvalue
    - bucketno
    - batchno
    argTypes:
    - HashJoinTable
    - uint32
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1973
      start: 1953
    functionDepth: 1
    functionLinenumber: 1953
    functionLinenumberEnd: 1973
    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:2015,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:2015,1
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/nodeHash.c:2020,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - hjstate
    - econtext
    argTypes:
    - HashJoinState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2034
      start: 1985
    functionDepth: 4
    functionLinenumber: 1985
    functionLinenumberEnd: 2034
    functionName: ExecScanHashBucket
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - ExecQualAndReset
    - HJTUPLE_MINTUPLE
    - ExecStoreMinimalTuple
    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:2060,1
    - Dst: ExecParallelHashFirstTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:2062,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:2072,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:2072,1
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/nodeHash.c:2077,1
    - Dst: ExecParallelHashNextTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:2084,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - hjstate
    - econtext
    argTypes:
    - HashJoinState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2091
      start: 2046
    functionDepth: 4
    functionLinenumber: 2046
    functionLinenumberEnd: 2091
    functionName: ExecParallelScanHashBucket
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - ExecQualAndReset
    - ExecParallelHashFirstTuple
    - ExecParallelHashNextTuple
    - ExecStoreMinimalTuple
    - HJTUPLE_MINTUPLE
    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: 2111
      start: 2097
    functionDepth: 0
    functionLinenumber: 2097
    functionLinenumberEnd: 2111
    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:2125,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:2125,1
    - Dst: BarrierArriveAndDetachExceptLast
      Src: /src/postgres/src/backend/executor/nodeHash.c:2135,1
    - Dst: sts_end_parallel_scan
      Src: /src/postgres/src/backend/executor/nodeHash.c:2141,1
    - Dst: sts_end_parallel_scan
      Src: /src/postgres/src/backend/executor/nodeHash.c:2142,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeHash.c:2149,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:2156,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:2156,1
    - Dst: ExecHashTableDetachBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:2165,1
    - Dst: ExecPrepHashTableForUnmatched
      Src: /src/postgres/src/backend/executor/nodeHash.c:2170,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - hjstate
    argTypes:
    - HashJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2173
      start: 2118
    functionDepth: 1
    functionLinenumber: 2118
    functionLinenumberEnd: 2173
    functionName: ExecParallelPrepHashTableForUnmatched
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - Assert
    - BarrierArriveAndDetachExceptLast
    - Max
    - BarrierPhase
    - ExecPrepHashTableForUnmatched
    - ExecHashTableDetachBatch
    - sts_end_parallel_scan
    linkageType: ''
    returnType: bool
    signature: bool ExecParallelPrepHashTableForUnmatched(HashJoinState *hjstate)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderHasMatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:2215,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:2215,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:2220,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:2220,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeHash.c:2230,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeHash.c:2240,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - hjstate
    - econtext
    argTypes:
    - HashJoinState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2247
      start: 2183
    functionDepth: 1
    functionLinenumber: 2183
    functionLinenumberEnd: 2247
    functionName: ExecScanHashTableForUnmatched
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - ResetExprContext
    - CHECK_FOR_INTERRUPTS
    - HeapTupleHeaderHasMatch
    - ExecStoreMinimalTuple
    - HJTUPLE_MINTUPLE
    linkageType: ''
    returnType: bool
    signature: bool ExecScanHashTableForUnmatched(HashJoinState *hjstate, ExprContext
      *econtext)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ExecParallelHashNextTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:2272,1
    - Dst: ExecParallelHashFirstTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:2274,1
    - Dst: HeapTupleHeaderHasMatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:2281,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:2281,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:2286,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:2286,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeHash.c:2296,1
    - Dst: ExecParallelHashNextTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:2302,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeHash.c:2306,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - hjstate
    - econtext
    argTypes:
    - HashJoinState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2313
      start: 2257
    functionDepth: 1
    functionLinenumber: 2257
    functionLinenumberEnd: 2313
    functionName: ExecParallelScanHashTableForUnmatched
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - ExecParallelHashFirstTuple
    - ExecParallelHashNextTuple
    - ResetExprContext
    - CHECK_FOR_INTERRUPTS
    - HeapTupleHeaderHasMatch
    - ExecStoreMinimalTuple
    - HJTUPLE_MINTUPLE
    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:2330,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:2331,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeHash.c:2334,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:2338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2342
      start: 2320
    functionDepth: 1
    functionLinenumber: 2320
    functionLinenumberEnd: 2342
    functionName: ExecHashTableReset
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - MemoryContextReset
    - palloc0_array
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: void
    signature: void ExecHashTableReset(HashJoinTable hashtable)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderClearMatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:2359,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:2359,1
    - Dst: HeapTupleHeaderClearMatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:2369,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:2369,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2371
      start: 2348
    functionDepth: 1
    functionLinenumber: 2348
    functionLinenumberEnd: 2371
    functionName: ExecHashTableResetMatchFlags
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - HJTUPLE_MINTUPLE
    - HeapTupleHeaderClearMatch
    linkageType: ''
    returnType: void
    signature: void ExecHashTableResetMatchFlags(HashJoinTable hashtable)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeHash.c:2377,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeHash.c:2384,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - HashState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2385
      start: 2374
    functionDepth: 1
    functionLinenumber: 2374
    functionLinenumberEnd: 2385
    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:2404,1
    - Dst: SearchSysCache3
      Src: /src/postgres/src/backend/executor/nodeHash.c:2413,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/executor/nodeHash.c:2414,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/executor/nodeHash.c:2415,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeHash.c:2416,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/executor/nodeHash.c:2417,1
    - Dst: get_attstatsslot
      Src: /src/postgres/src/backend/executor/nodeHash.c:2420,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/executor/nodeHash.c:2441,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/executor/nodeHash.c:2442,1
    - Dst: pg_nextpower2_32
      Src: /src/postgres/src/backend/executor/nodeHash.c:2458,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/executor/nodeHash.c:2471,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/executor/nodeHash.c:2474,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/nodeHash.c:2499,1
    - Dst: FunctionCall1Coll
      Src: /src/postgres/src/backend/executor/nodeHash.c:2499,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/nodeHash.c:2523,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/executor/nodeHash.c:2535,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/executor/nodeHash.c:2538,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 49
    argCount: 4
    argNames:
    - hashstate
    - hashtable
    - node
    - mcvsToUse
    argTypes:
    - HashState*
    - HashJoinTable
    - Hash*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2539
      start: 2396
    functionDepth: 3
    functionLinenumber: 2396
    functionLinenumberEnd: 2539
    functionName: ExecHashBuildSkewHash
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - ReleaseSysCache
    - BoolGetDatum
    - HeapTupleIsValid
    - free_attstatsslot
    - pg_nextpower2_32
    - MemoryContextAllocZero
    - get_attstatsslot
    - DatumGetUInt32
    - OidIsValid
    - FunctionCall1Coll
    - MemoryContextAlloc
    - Int16GetDatum
    - ObjectIdGetDatum
    - SearchSysCache3
    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: 2584
      start: 2548
    functionDepth: 0
    functionLinenumber: 2548
    functionLinenumberEnd: 2584
    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:2601,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/nodeHash.c:2607,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeHash.c:2610,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:2610,1
    - Dst: HeapTupleHeaderClearMatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:2611,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:2611,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:2616,1
    - Dst: ExecHashRemoveNextSkewBucket
      Src: /src/postgres/src/backend/executor/nodeHash.c:2624,1
    - Dst: ExecHashIncreaseNumBatches
      Src: /src/postgres/src/backend/executor/nodeHash.c:2628,1
    - Dst: heap_free_minimal_tuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:2631,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 4
    argNames:
    - hashtable
    - slot
    - hashvalue
    - bucketNumber
    argTypes:
    - HashJoinTable
    - TupleTableSlot*
    - uint32
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2632
      start: 2594
    functionDepth: 2
    functionLinenumber: 2594
    functionLinenumberEnd: 2632
    functionName: ExecHashSkewTableInsert
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - Assert
    - ExecFetchSlotMinimalTuple
    - memcpy
    - ExecHashIncreaseNumBatches
    - HeapTupleHeaderClearMatch
    - ExecHashRemoveNextSkewBucket
    - HJTUPLE_MINTUPLE
    - heap_free_minimal_tuple
    - MemoryContextAlloc
    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:2661,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHash.c:2676,1
    - Dst: dense_alloc
      Src: /src/postgres/src/backend/executor/nodeHash.c:2689,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeHash.c:2690,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeHash.c:2691,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:2702,1
    - Dst: ExecHashJoinSaveTuple
      Src: /src/postgres/src/backend/executor/nodeHash.c:2703,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeHash.c:2706,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeHash.c:2714,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeHash.c:2731,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeHash.c:2742,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeHash.c:2743,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 40
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2749
      start: 2640
    functionDepth: 2
    functionLinenumber: 2640
    functionLinenumberEnd: 2749
    functionName: ExecHashRemoveNextSkewBucket
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - ExecHashJoinSaveTuple
    - CHECK_FOR_INTERRUPTS
    - memcpy
    - dense_alloc
    - ExecHashGetBucketAndBatch
    - HJTUPLE_MINTUPLE
    linkageType: ''
    returnType: void
    signature: void ExecHashRemoveNextSkewBucket(HashJoinTable hashtable)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/nodeHash.c:2763,1
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/nodeHash.c:2764,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeHash.c:2765,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeHash.c:2766,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - HashState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2767
      start: 2754
    functionDepth: 1
    functionLinenumber: 2754
    functionLinenumberEnd: 2767
    functionName: ExecHashEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - mul_size
    - shm_toc_estimate_chunk
    - shm_toc_estimate_keys
    - add_size
    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:2784,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeHash.c:2787,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeHash.c:2790,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - HashState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2792
      start: 2773
    functionDepth: 1
    functionLinenumber: 2773
    functionLinenumberEnd: 2792
    functionName: ExecHashInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - memset
    - shm_toc_allocate
    - shm_toc_insert
    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:2813,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - HashState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2815
      start: 2798
    functionDepth: 1
    functionLinenumber: 2798
    functionLinenumberEnd: 2815
    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:2829,1
    - Dst: ExecHashAccumInstrumentation
      Src: /src/postgres/src/backend/executor/nodeHash.c:2832,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - HashState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2833
      start: 2824
    functionDepth: 1
    functionLinenumber: 2824
    functionLinenumberEnd: 2833
    functionName: ExecShutdownHash
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - ExecHashAccumInstrumentation
    - palloc0_object
    linkageType: ''
    returnType: void
    signature: void ExecShutdownHash(HashState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeHash.c:2851,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeHash.c:2852,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - HashState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2853
      start: 2839
    functionDepth: 0
    functionLinenumber: 2839
    functionLinenumberEnd: 2853
    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:2874,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeHash.c:2876,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeHash.c:2878,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeHash.c:2880,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeHash.c:2882,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - instrument
    - hashtable
    argTypes:
    - HashInstrumentation*
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2884
      start: 2870
    functionDepth: 0
    functionLinenumber: 2870
    functionLinenumberEnd: 2884
    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:2896,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/nodeHash.c:2904,1
    - Dst: HASH_CHUNK_DATA
      Src: /src/postgres/src/backend/executor/nodeHash.c:2925,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/nodeHash.c:2936,1
    - Dst: HASH_CHUNK_DATA
      Src: /src/postgres/src/backend/executor/nodeHash.c:2946,1
    - Dst: HASH_CHUNK_DATA
      Src: /src/postgres/src/backend/executor/nodeHash.c:2950,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 2
    argNames:
    - hashtable
    - size
    argTypes:
    - HashJoinTable
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2956
      start: 2889
    functionDepth: 1
    functionLinenumber: 2889
    functionLinenumberEnd: 2956
    functionName: dense_alloc
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 3
    functionsReached:
    - MemoryContextAlloc
    - HASH_CHUNK_DATA
    - MAXALIGN
    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:2980,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:2993,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:2993,1
    - Dst: HASH_CHUNK_DATA
      Src: /src/postgres/src/backend/executor/nodeHash.c:2995,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:2998,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:2999,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:2999,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/executor/nodeHash.c:3005,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeHash.c:3016,1
    - Dst: ExecParallelHashIncreaseNumBatches
      Src: /src/postgres/src/backend/executor/nodeHash.c:3020,1
    - Dst: ExecParallelHashIncreaseNumBuckets
      Src: /src/postgres/src/backend/executor/nodeHash.c:3022,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3037,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3038,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:3038,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeHash.c:3051,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeHash.c:3069,1
    - Dst: dsa_allocate
      Src: /src/postgres/src/backend/executor/nodeHash.c:3077,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:3082,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeHash.c:3104,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3106,1
    - Dst: HASH_CHUNK_DATA
      Src: /src/postgres/src/backend/executor/nodeHash.c:3106,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:3106,1
    - Dst: HASH_CHUNK_DATA
      Src: /src/postgres/src/backend/executor/nodeHash.c:3107,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 62
    argCount: 3
    argNames:
    - hashtable
    - size
    - shared
    argTypes:
    - HashJoinTable
    - size_t
    - dsa_pointer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3110
      start: 2969
    functionDepth: 4
    functionLinenumber: 2969
    functionLinenumberEnd: 3110
    functionName: ExecParallelHashTupleAlloc
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 3
    functionsReached:
    - Assert
    - dsa_allocate
    - ExecParallelHashIncreaseNumBatches
    - HASH_CHUNK_DATA
    - dsa_get_address
    - BarrierPhase
    - ExecParallelHashIncreaseNumBuckets
    - LWLockRelease
    - LWLockAcquire
    - 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:3125,1
    - Dst: dsa_allocate0
      Src: /src/postgres/src/backend/executor/nodeHash.c:3129,1
    - Dst: EstimateParallelHashJoinBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:3130,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:3132,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:3138,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeHash.c:3143,1
    - Dst: NthParallelHashJoinBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:3149,1
    - Dst: BarrierInit
      Src: /src/postgres/src/backend/executor/nodeHash.c:3156,1
    - Dst: BarrierAttach
      Src: /src/postgres/src/backend/executor/nodeHash.c:3160,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:3161,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHash.c:3162,1
    - Dst: BarrierDetach
      Src: /src/postgres/src/backend/executor/nodeHash.c:3163,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/executor/nodeHash.c:3170,1
    - Dst: sts_initialize
      Src: /src/postgres/src/backend/executor/nodeHash.c:3172,1
    - Dst: ParallelHashJoinBatchInner
      Src: /src/postgres/src/backend/executor/nodeHash.c:3172,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/executor/nodeHash.c:3179,1
    - Dst: sts_initialize
      Src: /src/postgres/src/backend/executor/nodeHash.c:3181,1
    - Dst: ParallelHashJoinBatchOuter
      Src: /src/postgres/src/backend/executor/nodeHash.c:3181,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:3191,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - hashtable
    - nbatch
    argTypes:
    - HashJoinTable
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3192
      start: 3117
    functionDepth: 1
    functionLinenumber: 3117
    functionLinenumberEnd: 3192
    functionName: ExecParallelHashJoinSetUpBatches
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 2
    functionsReached:
    - BarrierAttach
    - Assert
    - MemoryContextSwitchTo
    - sts_initialize
    - ParallelHashJoinBatchOuter
    - EstimateParallelHashJoinBatch
    - snprintf
    - BarrierArriveAndWait
    - ParallelHashJoinBatchInner
    - dsa_allocate0
    - dsa_get_address
    - BarrierPhase
    - NthParallelHashJoinBatch
    - BarrierInit
    - BarrierDetach
    - palloc0_array
    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:3205,1
    - Dst: sts_end_write
      Src: /src/postgres/src/backend/executor/nodeHash.c:3206,1
    - Dst: sts_end_parallel_scan
      Src: /src/postgres/src/backend/executor/nodeHash.c:3207,1
    - Dst: sts_end_parallel_scan
      Src: /src/postgres/src/backend/executor/nodeHash.c:3208,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeHash.c:3210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3212
      start: 3197
    functionDepth: 1
    functionLinenumber: 3197
    functionLinenumberEnd: 3212
    functionName: ExecParallelHashCloseBatchAccessors
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - pfree
    - sts_end_write
    - sts_end_parallel_scan
    linkageType: ''
    returnType: void
    signature: void ExecParallelHashCloseBatchAccessors(HashJoinTable hashtable)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ExecParallelHashCloseBatchAccessors
      Src: /src/postgres/src/backend/executor/nodeHash.c:3230,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3238,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/executor/nodeHash.c:3238,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:3244,1
    - Dst: palloc0_array
      Src: /src/postgres/src/backend/executor/nodeHash.c:3249,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:3253,1
    - Dst: NthParallelHashJoinBatch
      Src: /src/postgres/src/backend/executor/nodeHash.c:3259,1
    - Dst: sts_attach
      Src: /src/postgres/src/backend/executor/nodeHash.c:3266,1
    - Dst: ParallelHashJoinBatchInner
      Src: /src/postgres/src/backend/executor/nodeHash.c:3266,1
    - Dst: sts_attach
      Src: /src/postgres/src/backend/executor/nodeHash.c:3270,1
    - Dst: ParallelHashJoinBatchOuter
      Src: /src/postgres/src/backend/executor/nodeHash.c:3270,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHash.c:3276,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3277
      start: 3218
    functionDepth: 2
    functionLinenumber: 3218
    functionLinenumberEnd: 3277
    functionName: ExecParallelHashEnsureBatchAccessors
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 3
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - ParallelHashJoinBatchOuter
    - ParallelHashJoinBatchInner
    - dsa_get_address
    - NthParallelHashJoinBatch
    - DsaPointerIsValid
    - ExecParallelHashCloseBatchAccessors
    - palloc0_array
    - sts_attach
    linkageType: ''
    returnType: void
    signature: void ExecParallelHashEnsureBatchAccessors(HashJoinTable hashtable)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsa_allocate
      Src: /src/postgres/src/backend/executor/nodeHash.c:3291,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:3293,1
    - Dst: dsa_pointer_atomic_init
      Src: /src/postgres/src/backend/executor/nodeHash.c:3295,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - hashtable
    - batchno
    argTypes:
    - HashJoinTable
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3296
      start: 3282
    functionDepth: 1
    functionLinenumber: 3282
    functionLinenumberEnd: 3296
    functionName: ExecParallelHashTableAlloc
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - dsa_allocate
    - dsa_pointer_atomic_init
    - dsa_get_address
    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:3313,1
    - Dst: sts_end_parallel_scan
      Src: /src/postgres/src/backend/executor/nodeHash.c:3314,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3317,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:3317,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:3318,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:3331,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:3347,1
    - Dst: BarrierArriveAndDetachExceptLast
      Src: /src/postgres/src/backend/executor/nodeHash.c:3348,1
    - Dst: BarrierArriveAndDetach
      Src: /src/postgres/src/backend/executor/nodeHash.c:3349,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3358,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:3358,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/executor/nodeHash.c:3361,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:3364,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/executor/nodeHash.c:3367,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/executor/nodeHash.c:3370,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/executor/nodeHash.c:3372,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeHash.c:3383,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3389
      start: 3302
    functionDepth: 1
    functionLinenumber: 3302
    functionLinenumberEnd: 3389
    functionName: ExecHashTableDetachBatch
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - Assert
    - BarrierArriveAndDetach
    - BarrierArriveAndDetachExceptLast
    - Max
    - BarrierPhase
    - dsa_get_address
    - DsaPointerIsValid
    - dsa_free
    - sts_end_parallel_scan
    linkageType: ''
    returnType: void
    signature: void ExecHashTableDetachBatch(HashJoinTable hashtable)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3403,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:3404,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:3406,1
    - Dst: sts_end_write
      Src: /src/postgres/src/backend/executor/nodeHash.c:3415,1
    - Dst: sts_end_write
      Src: /src/postgres/src/backend/executor/nodeHash.c:3416,1
    - Dst: sts_end_parallel_scan
      Src: /src/postgres/src/backend/executor/nodeHash.c:3417,1
    - Dst: sts_end_parallel_scan
      Src: /src/postgres/src/backend/executor/nodeHash.c:3418,1
    - Dst: BarrierArriveAndDetach
      Src: /src/postgres/src/backend/executor/nodeHash.c:3423,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3429,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHash.c:3429,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/executor/nodeHash.c:3431,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/executor/nodeHash.c:3433,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3439
      start: 3394
    functionDepth: 1
    functionLinenumber: 3394
    functionLinenumberEnd: 3439
    functionName: ExecHashTableDetach
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 0
    functionsReached:
    - Assert
    - sts_end_write
    - BarrierArriveAndDetach
    - BarrierPhase
    - DsaPointerIsValid
    - dsa_free
    - sts_end_parallel_scan
    linkageType: ''
    returnType: void
    signature: void ExecHashTableDetach(HashJoinTable hashtable)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3450,1
    - Dst: dsa_pointer_atomic_read
      Src: /src/postgres/src/backend/executor/nodeHash.c:3451,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:3452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - hashtable
    - bucketno
    argTypes:
    - HashJoinTable
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3455
      start: 3444
    functionDepth: 1
    functionLinenumber: 3444
    functionLinenumberEnd: 3455
    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:3465,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:3466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - hashtable
    - tuple
    argTypes:
    - HashJoinTable
    - HashJoinTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3469
      start: 3460
    functionDepth: 1
    functionLinenumber: 3460
    functionLinenumberEnd: 3469
    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:3481,1
    - Dst: dsa_pointer_atomic_compare_exchange
      Src: /src/postgres/src/backend/executor/nodeHash.c:3482,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: 3487
      start: 3474
    functionDepth: 0
    functionLinenumber: 3474
    functionLinenumberEnd: 3487
    functionName: ExecParallelHashPushTuple
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 4
    functionsReached:
    - dsa_pointer_atomic_compare_exchange
    - dsa_pointer_atomic_read
    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:3495,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:3499,1
    - Dst: my_log2
      Src: /src/postgres/src/backend/executor/nodeHash.c:3502,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - hashtable
    - batchno
    argTypes:
    - HashJoinTable
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3506
      start: 3492
    functionDepth: 1
    functionLinenumber: 3492
    functionLinenumberEnd: 3506
    functionName: ExecParallelHashTableSetCurrentBatch
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 3
    functionsReached:
    - Assert
    - dsa_get_address
    - my_log2
    linkageType: ''
    returnType: void
    signature: void ExecParallelHashTableSetCurrentBatch(HashJoinTable hashtable,
      int batchno)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/executor/nodeHash.c:3519,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/executor/nodeHash.c:3520,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/nodeHash.c:3524,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeHash.c:3529,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - hashtable
    - shared
    argTypes:
    - HashJoinTable
    - dsa_pointer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3532
      start: 3513
    functionDepth: 1
    functionLinenumber: 3513
    functionLinenumberEnd: 3532
    functionName: ExecParallelHashPopChunkQueue
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 2
    functionsReached:
    - DsaPointerIsValid
    - LWLockRelease
    - dsa_get_address
    - LWLockAcquire
    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:3559,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3561,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3562,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHash.c:3563,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeHash.c:3563,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/executor/nodeHash.c:3565,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeHash.c:3573,1
    - Dst: ExecParallelHashIncreaseNumBatches
      Src: /src/postgres/src/backend/executor/nodeHash.c:3575,1
    - Dst: ExecParallelHashIncreaseNumBuckets
      Src: /src/postgres/src/backend/executor/nodeHash.c:3577,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeHash.c:3593,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeHash.c:3601,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 3
    argNames:
    - hashtable
    - batchno
    - size
    argTypes:
    - HashJoinTable
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3604
      start: 3554
    functionDepth: 4
    functionLinenumber: 3554
    functionLinenumberEnd: 3604
    functionName: ExecParallelHashTuplePrealloc
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 1
    functionsReached:
    - Assert
    - ExecParallelHashIncreaseNumBatches
    - Max
    - ExecParallelHashIncreaseNumBuckets
    - LWLockRelease
    - LWLockAcquire
    - 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:3624,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3627
      start: 3615
    functionDepth: 0
    functionLinenumber: 3615
    functionLinenumberEnd: 3627
    functionName: get_hash_memory_limit
    functionSourceFile: /src/postgres/src/backend/executor/nodeHash.c
    functionUses: 9
    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:
    - ExecCreateExprSetupSteps
    - ExecInitExprRec
    - ExecReadyExpr
    - ExprEvalPushStep
    - makeNode
    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:
    - ExecCreateExprSetupSteps
    - ExecInitExprRec
    - ExecReadyExpr
    - ExprEvalPushStep
    - makeNode
    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:
    - Assert
    - ExecCreateExprSetupSteps
    - ExecInitExprRec
    - lappend_int
    - ExecReadyExpr
    - IsA
    - ExprEvalPushStep
    - makeNode
    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: 3
    functionsReached:
    - ExecInitExprRec
    - ExprEvalPushStep
    - lappend_int
    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:
    - make_ands_explicit
    - Assert
    - ExecInitExpr
    - IsA
    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:
    - lappend
    - ExecInitExpr
    - lfirst
    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: 392
    functionsReached:
    - lappend
    - ExecInitExpr
    - lfirst
    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:
    - exprType
    - lfirst_node
    - ExecCreateExprSetupSteps
    - ExecInitExprRec
    - TupleDescAttr
    - ExecReadyExpr
    - IsA
    - ExprEvalPushStep
    - makeNode
    - get_typlen
    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: 392
    functionsReached:
    - exprType
    - lfirst_node
    - ExecInitExprRec
    - TupleDescAttr
    - IsA
    - ExprEvalPushStep
    - get_typlen
    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:
    - ExecInitExprRec
    - list_length
    - ExprEvalPushStep
    - makeNode
    - errdetail
    - lfirst_int
    - expr_setup_walker
    - exprType
    - ExecReadyExpr
    - errmsg
    - lfirst_node
    - TupleDescAttr
    - format_type_be
    - elog
    - bms_is_member
    - bms_add_member
    - Assert
    - ereport
    - TupleDescCompactAttr
    - ExecPushExprSetupSteps
    - errcode
    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: 392
    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: 392
    functionsReached:
    - lfirst_int
    - bms_add_member
    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: 15
    functionsReached:
    - errmsg
    - exprType
    - Assert
    - lfirst_node
    - ExecInitExprRec
    - TupleDescAttr
    - format_type_be
    - ereport
    - lfirst_int
    - ExprEvalPushStep
    - errdetail
    - errcode
    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
    - MemoryContextSwitchTo
    - expression_planner
    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:
    - MemoryContextSwitchTo
    - expression_planner
    - ExecInitQual
    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:
    - MemoryContextSwitchTo
    - expression_planner
    - ExecInitCheck
    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:
    - MemoryContextSwitchTo
    - ExecPrepareExpr
    - lfirst
    - lappend
    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: 392
    functionsReached:
    - lappend
    - ExecPrepareExpr
    - lfirst
    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:
    - DatumGetBool
    - Assert
    - 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
      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
      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
      Src: /src/postgres/src/backend/executor/execExpr.c:1524,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:1525,1
    - Dst: palloc
      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
      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
      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
      Src: /src/postgres/src/backend/executor/execExpr.c:1702,1
    - Dst: palloc
      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
      Src: /src/postgres/src/backend/executor/execExpr.c:1731,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1739,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:1749,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:1754,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execExpr.c:1759,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1765,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:1786,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:1787,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:1789,1
    - Dst: get_typlen
      Src: /src/postgres/src/backend/executor/execExpr.c:1796,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execExpr.c:1796,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1804,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:1817,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:1819,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:1840,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1848,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:1855,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1860,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:1866,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:1877,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:1880,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:1886,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:1888,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:1889,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1915,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:1922,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:1933,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:1935,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/executor/execExpr.c:1943,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:1950,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:1952,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:1954,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:1961,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:1968,1
    - Dst: ExecTypeFromExprList
      Src: /src/postgres/src/backend/executor/execExpr.c:1977,1
    - Dst: ExecTypeSetColNames
      Src: /src/postgres/src/backend/executor/execExpr.c:1979,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/backend/executor/execExpr.c:1981,1
    - Dst: lookup_rowtype_tupdesc_copy
      Src: /src/postgres/src/backend/executor/execExpr.c:1986,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:1997,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/execExpr.c:1998,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:2009,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:2011,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/execExpr.c:2013,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:2017,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execExpr.c:2019,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:2020,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execExpr.c:2030,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExpr.c:2031,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExpr.c:2032,1
    - Dst: errmsg
      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: exprType
      Src: /src/postgres/src/backend/executor/execExpr.c:2034,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExpr.c:2035,1
    - Dst: makeNullConst
      Src: /src/postgres/src/backend/executor/execExpr.c:2044,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2048,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2055,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:2062,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: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2079,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:2079,1
    - Dst: forfive
      Src: /src/postgres/src/backend/executor/execExpr.c:2081,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:2087,1
    - Dst: lfirst
      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: lfirst_oid
      Src: /src/postgres/src/backend/executor/execExpr.c:2091,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/executor/execExpr.c:2099,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/executor/execExpr.c:2103,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execExpr.c:2107,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExpr.c:2108,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:2112,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:2113,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:2113,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/execExpr.c:2114,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/execExpr.c:2115,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExpr.c:2116,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2127,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2129,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2140,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:2141,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/executor/execExpr.c:2152,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2154,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2160,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:2165,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:2169,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2187,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:2193,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:2195,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2198,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2203,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:2205,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:2218,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2220,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2221,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:2231,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/executor/execExpr.c:2239,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execExpr.c:2241,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExpr.c:2242,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExpr.c:2243,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExpr.c:2244,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExpr.c:2245,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:2255,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:2256,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:2256,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/execExpr.c:2257,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/execExpr.c:2258,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExpr.c:2259,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:2265,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:2267,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:2276,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:2278,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2280,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2287,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2298,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:2305,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:2306,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:2317,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:2319,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:2330,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:2332,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:2342,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:2344,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2346,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:2353,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:2355,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2357,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2364,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2372,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2373,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2374,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2375,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:2384,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2389,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2395,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/execExpr.c:2395,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:2401,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:2407,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:2408,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:2409,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:2414,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execExpr.c:2416,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:2418,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2428,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:2442,1
    - Dst: json_categorize_type
      Src: /src/postgres/src/backend/executor/execExpr.c:2450,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2458,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2469,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2481,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2486,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExpr.c:2492,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2500,1
    - Dst: ExecInitJsonExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:2503,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExpr.c:2527,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2534,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2538,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2552,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExpr.c:2577,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2581,1
    - Dst: ExecInitCoerceToDomain
      Src: /src/postgres/src/backend/executor/execExpr.c:2589,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2613,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2620,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2632,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2646,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2650,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExpr.c:2665,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execExpr.c:2666,1
    CyclomaticComplexity: 141
    EdgeCount: 141
    ICount: 763
    argCount: 4
    argNames:
    - node
    - state
    - resv
    - resnull
    argTypes:
    - Expr*
    - ExprState*
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2669
      start: 918
    functionDepth: 7
    functionLinenumber: 918
    functionLinenumberEnd: 2669
    functionName: ExecInitExprRec
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 9
    functionsReached:
    - fmgr_info_set_expr
    - makeNullConst
    - get_typlenbyvalalign
    - lookup_rowtype_tupdesc_copy
    - getTypeOutputInfo
    - ExecInitExprRec
    - lappend_int
    - ExecTypeSetColNames
    - list_length
    - ExprEvalPushStep
    - ExecInitSubscriptingRef
    - InvokeFunctionExecuteHook
    - castNode
    - forboth
    - makeNode
    - GetUserId
    - object_aclcheck
    - lfirst_int
    - exprType
    - Int32GetDatum
    - ExecInitJsonExpr
    - ExecReadyExpr
    - lsecond
    - foreach
    - lookup_type_cache
    - Max
    - get_opfamily_proc
    - nodeTag
    - errmsg
    - InitFunctionCallInfoData
    - ExecInitCoerceToDomain
    - linitial
    - aclcheck_error
    - TupleDescAttr
    - fmgr_info
    - IsA
    - lookup_rowtype_tupdesc
    - format_type_be
    - ExecInitSubPlanExpr
    - elog
    - lappend
    - OidIsValid
    - palloc
    - get_element_type
    - ExecInitExpr
    - lfirst
    - ObjectIdGetDatum
    - get_op_opfamily_properties
    - check_stack_depth
    - ExecInitWholeRowVar
    - Assert
    - ExecInitExprList
    - ReleaseTupleDesc
    - SizeForFunctionCallInfo
    - getTypeInputInfo
    - memset
    - BlessTupleDesc
    - get_func_name
    - json_categorize_type
    - ereport
    - palloc0
    - forfive
    - ParamListInfo::paramCompile
    - ExecInitFunc
    - ExecTypeFromExprList
    - lfirst_oid
    - errcode
    - get_typlen
    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: 393
    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:1886,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:1888,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:1889,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1891
      start: 1884
    functionDepth: 1
    functionLinenumber: 1884
    functionLinenumberEnd: 1891
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 393
    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:2165,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:2169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2175
      start: 2163
    functionDepth: 1
    functionLinenumber: 2163
    functionLinenumberEnd: 2175
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 393
    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:2218,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2220,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2223
      start: 2216
    functionDepth: 1
    functionLinenumber: 2216
    functionLinenumberEnd: 2223
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 393
    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:2414,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execExpr.c:2416,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:2418,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2428,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2433
      start: 2412
    functionDepth: 8
    functionLinenumber: 2412
    functionLinenumberEnd: 2433
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 393
    functionsReached:
    - exprType
    - ExecInitExprRec
    - IsA
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:2683,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/execExpr.c:2688,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execExpr.c:2692,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - es
    - s
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2693
      start: 2677
    functionDepth: 0
    functionLinenumber: 2677
    functionLinenumberEnd: 2693
    functionName: ExprEvalPushStep
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 10
    functionsReached:
    - repalloc
    - memcpy
    - palloc
    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:2707,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/execExpr.c:2715,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/executor/execExpr.c:2715,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/execExpr.c:2717,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/execExpr.c:2717,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/execExpr.c:2718,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExpr.c:2727,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExpr.c:2728,1
    - Dst: errmsg_plural
      Src: /src/postgres/src/backend/executor/execExpr.c:2729,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:2735,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:2736,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:2736,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/execExpr.c:2741,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/execExpr.c:2742,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExpr.c:2745,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExpr.c:2754,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExpr.c:2755,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExpr.c:2756,1
    - Dst: executor_errposition
      Src: /src/postgres/src/backend/executor/execExpr.c:2758,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/executor/execExpr.c:2759,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:2765,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:2767,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2780,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: 2810
      start: 2703
    functionDepth: 8
    functionLinenumber: 2703
    functionLinenumberEnd: 2810
    functionName: ExecInitFunc
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 1
    functionsReached:
    - fmgr_info_set_expr
    - executor_errposition
    - ExecInitExprRec
    - list_length
    - InvokeFunctionExecuteHook
    - GetUserId
    - object_aclcheck
    - errmsg
    - InitFunctionCallInfoData
    - exprLocation
    - aclcheck_error
    - fmgr_info
    - IsA
    - errmsg_plural
    - lfirst
    - SizeForFunctionCallInfo
    - get_func_name
    - ereport
    - palloc0
    - errcode
    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:2765,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:2767,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2780,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2785
      start: 2763
    functionDepth: 8
    functionLinenumber: 2763
    functionLinenumberEnd: 2785
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 393
    functionsReached:
    - ExecInitExprRec
    - IsA
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExpr.c:2831,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2846,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:2846,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:2846,1
    - Dst: forboth
      Src: /src/postgres/src/backend/executor/execExpr.c:2847,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:2849,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:2850,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:2852,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execExpr.c:2858,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2859,1
    - Dst: ExecInitSubPlan
      Src: /src/postgres/src/backend/executor/execExpr.c:2862,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execExpr.c:2865,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2873,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 4
    argNames:
    - subplan
    - state
    - resv
    - resnull
    argTypes:
    - SubPlan*
    - ExprState*
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2874
      start: 2820
    functionDepth: 8
    functionLinenumber: 2820
    functionLinenumberEnd: 2874
    functionName: ExecInitSubPlanExpr
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 1
    functionsReached:
    - lfirst
    - exprType
    - Assert
    - ExecInitSubPlan
    - ExecInitExprRec
    - list_length
    - ExprEvalPushStep
    - elog
    - lappend
    - forboth
    - lfirst_int
    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:2886,1
    - Dst: ExecPushExprSetupSteps
      Src: /src/postgres/src/backend/executor/execExpr.c:2889,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - node
    argTypes:
    - ExprState*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2890
      start: 2880
    functionDepth: 1
    functionLinenumber: 2880
    functionLinenumberEnd: 2890
    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:2916,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2917,1
    - Dst: ExecComputeSlotInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:2926,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2927,1
    - Dst: ExecComputeSlotInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:2936,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2937,1
    - Dst: ExecComputeSlotInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:2946,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2947,1
    - Dst: ExecComputeSlotInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:2956,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:2957,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:2967,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:2969,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:2971,1
    - Dst: ExecInitSubPlanExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:2974,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 52
    argCount: 2
    argNames:
    - state
    - info
    argTypes:
    - ExprState*
    - ExprSetupInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2977
      start: 2896
    functionDepth: 9
    functionLinenumber: 2896
    functionLinenumberEnd: 2977
    functionName: ExecPushExprSetupSteps
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 2
    functionsReached:
    - Assert
    - foreach
    - ExprEvalPushStep
    - ExecInitSubPlanExpr
    - ExecComputeSlotInfo
    - lfirst
    linkageType: ''
    returnType: void
    signature: void ExecPushExprSetupSteps(ExprState *state, ExprSetupInfo *info)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:2987,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/execExpr.c:2995,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/execExpr.c:2999,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/execExpr.c:3008,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/execExpr.c:3011,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/execExpr.c:3014,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:3023,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execExpr.c:3028,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:3038,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:3040,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:3042,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/executor/execExpr.c:3044,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 38
    argCount: 2
    argNames:
    - node
    - info
    argTypes:
    - Node*
    - ExprSetupInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3045
      start: 2982
    functionDepth: 6
    functionLinenumber: 2982
    functionLinenumberEnd: 3045
    functionName: expr_setup_walker
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 2
    functionsReached:
    - Max
    - lappend
    - IsA
    - expression_tree_walker
    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:3070,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/execExpr.c:3088,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/execExpr.c:3098,1
    - Dst: ExecGetResultSlotOps
      Src: /src/postgres/src/backend/executor/execExpr.c:3102,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/execExpr.c:3103,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/execExpr.c:3108,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/execExpr.c:3118,1
    - Dst: ExecGetResultSlotOps
      Src: /src/postgres/src/backend/executor/execExpr.c:3122,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/execExpr.c:3123,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 57
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3157
      start: 3061
    functionDepth: 1
    functionLinenumber: 3061
    functionLinenumberEnd: 3157
    functionName: ExecComputeSlotInfo
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 1
    functionsReached:
    - Assert
    - ExecGetResultSlotOps
    - ExecGetResultType
    - outerPlanState
    - innerPlanState
    linkageType: ''
    returnType: bool
    signature: bool ExecComputeSlotInfo(ExprState *state, ExprEvalStep *op)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execExpr.c:3198,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:3216,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:3218,1
    - Dst: ExecInitJunkFilter
      Src: /src/postgres/src/backend/executor/execExpr.c:3231,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/execExpr.c:3232,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 3
    argNames:
    - scratch
    - variable
    - state
    argTypes:
    - ExprEvalStep*
    - Var*
    - ExprState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3237
      start: 3163
    functionDepth: 1
    functionLinenumber: 3163
    functionLinenumberEnd: 3237
    functionName: ExecInitWholeRowVar
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 1
    functionsReached:
    - nodeTag
    - ExecInitExtraTupleSlot
    - ExecInitJunkFilter
    - foreach
    - lfirst
    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:3247,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:3248,1
    - Dst: getSubscriptingRoutines
      Src: /src/postgres/src/backend/executor/execExpr.c:3258,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExpr.c:3260,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExpr.c:3261,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExpr.c:3262,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExpr.c:3263,1
    - Dst: executor_errposition
      Src: /src/postgres/src/backend/executor/execExpr.c:3265,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/executor/execExpr.c:3266,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:3269,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/execExpr.c:3269,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/execExpr.c:3278,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/execExpr.c:3298,1
    - Dst: SubscriptRoutines*::exec_setup
      Src: /src/postgres/src/backend/executor/execExpr.c:3299,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:3307,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:3318,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:3319,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:3325,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:3327,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:3339,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:3348,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:3350,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:3362,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:3376,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:3377,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExpr.c:3388,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExpr.c:3389,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExpr.c:3390,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExpr.c:3391,1
    - Dst: isAssignmentIndirectionExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:3407,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExpr.c:3410,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExpr.c:3411,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExpr.c:3412,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExpr.c:3413,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:3417,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:3427,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:3437,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:3445,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:3451,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3455,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3460,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3461,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: 3465
      start: 3242
    functionDepth: 8
    functionLinenumber: 3242
    functionLinenumberEnd: 3465
    functionName: ExecInitSubscriptingRef
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 1
    functionsReached:
    - executor_errposition
    - ExecInitExprRec
    - lappend_int
    - list_length
    - ExprEvalPushStep
    - lfirst_int
    - foreach
    - errmsg
    - exprLocation
    - format_type_be
    - lfirst
    - SubscriptRoutines*::exec_setup
    - getSubscriptingRoutines
    - Assert
    - memset
    - isAssignmentIndirectionExpr
    - ereport
    - palloc0
    - errcode
    - MAXALIGN
    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:3451,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3455,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3460,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3461,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3464
      start: 3449
    functionDepth: 1
    functionLinenumber: 3449
    functionLinenumberEnd: 3464
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 396
    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:3489,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:3493,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:3496,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:3500,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:3503,1
    - Dst: isAssignmentIndirectionExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:3507,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:3509,1
    - Dst: isAssignmentIndirectionExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:3513,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 1
    argNames:
    - expr
    argTypes:
    - Expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3516
      start: 3484
    functionDepth: 1
    functionLinenumber: 3484
    functionLinenumberEnd: 3516
    functionName: isAssignmentIndirectionExpr
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 2
    functionsReached:
    - isAssignmentIndirectionExpr
    - IsA
    linkageType: ''
    returnType: bool
    signature: bool isAssignmentIndirectionExpr(Expr *expr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:3541,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:3561,1
    - Dst: InitDomainConstraintRef
      Src: /src/postgres/src/backend/executor/execExpr.c:3562,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:3572,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:3574,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:3584,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:3591,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:3593,1
    - Dst: get_typlen
      Src: /src/postgres/src/backend/executor/execExpr.c:3606,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:3611,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:3612,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:3620,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:3642,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:3651,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExpr.c:3655,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: 3660
      start: 3521
    functionDepth: 8
    functionLinenumber: 3521
    functionLinenumberEnd: 3660
    functionName: ExecInitCoerceToDomain
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 1
    functionsReached:
    - ExecInitExprRec
    - InitDomainConstraintRef
    - foreach
    - ExprEvalPushStep
    - elog
    - palloc
    - lfirst
    - get_typlen
    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:3680,1
    - Dst: DO_AGGSPLIT_COMBINE
      Src: /src/postgres/src/backend/executor/execExpr.c:3683,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: expr_setup_walker
      Src: /src/postgres/src/backend/executor/execExpr.c:3704,1
    - Dst: expr_setup_walker
      Src: /src/postgres/src/backend/executor/execExpr.c:3706,1
    - Dst: expr_setup_walker
      Src: /src/postgres/src/backend/executor/execExpr.c:3708,1
    - Dst: ExecPushExprSetupSteps
      Src: /src/postgres/src/backend/executor/execExpr.c:3711,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:3735,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:3740,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:3741,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3758,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3759,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:3759,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/execExpr.c:3762,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execExpr.c:3768,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:3774,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:3783,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExpr.c:3788,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:3805,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:3808,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3817,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:3830,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:3832,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:3845,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3850,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/execExpr.c:3859,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3861,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:3861,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:3863,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3869,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExpr.c:3883,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:3885,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:3887,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3891,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:3911,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:3912,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:3926,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:3927,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/execExpr.c:3938,1
    - Dst: ExecBuildAggTransCall
      Src: /src/postgres/src/backend/executor/execExpr.c:3943,1
    - Dst: ExecBuildAggTransCall
      Src: /src/postgres/src/backend/executor/execExpr.c:3963,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:3973,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3977,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3984,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3989,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3995,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3999,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4006,1
    - Dst: ExecReadyExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:4008,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: 4011
      start: 3676
    functionDepth: 10
    functionLinenumber: 3676
    functionLinenumberEnd: 4011
    functionName: ExecBuildAggTrans
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 0
    functionsReached:
    - expr_setup_walker
    - Assert
    - ExecBuildAggTransCall
    - linitial
    - ExecInitExprRec
    - lappend_int
    - DO_AGGSPLIT_COMBINE
    - ExecReadyExpr
    - lfirst_int
    - list_length
    - ExprEvalPushStep
    - PointerGetDatum
    - foreach
    - Max
    - OidIsValid
    - ExecPushExprSetupSteps
    - makeNode
    - lfirst
    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:3973,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3977,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3984,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3989,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3995,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:3999,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4000
      start: 3971
    functionDepth: 1
    functionLinenumber: 3971
    functionLinenumberEnd: 4000
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 398
    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:4040,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4111,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4118,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4119,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: 4122
      start: 4018
    functionDepth: 1
    functionLinenumber: 4018
    functionLinenumberEnd: 4122
    functionName: ExecBuildAggTransCall
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 1
    functionsReached:
    - ExprEvalPushStep
    - Assert
    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:4146,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4152,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:4162,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/execExpr.c:4166,1
    - Dst: ExecComputeSlotInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:4173,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4174,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/executor/execExpr.c:4193,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4197,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:4214,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:4214,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExpr.c:4217,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execExpr.c:4227,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4230,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4246,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4264,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4273,1
    - Dst: ExecReadyExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:4275,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: 4278
      start: 4140
    functionDepth: 4
    functionLinenumber: 4140
    functionLinenumberEnd: 4278
    functionName: ExecBuildHash32FromAttrs
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 0
    functionsReached:
    - Assert
    - InitFunctionCallInfoData
    - palloc
    - SizeForFunctionCallInfo
    - UInt32GetDatum
    - TupleDescAttr
    - ExecReadyExpr
    - palloc0
    - ExprEvalPushStep
    - Max
    - ExecComputeSlotInfo
    - makeNode
    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:4305,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:4313,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4315,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:4315,1
    - Dst: ExecCreateExprSetupSteps
      Src: /src/postgres/src/backend/executor/execExpr.c:4320,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:4328,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/executor/execExpr.c:4348,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4352,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:4364,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/executor/execExpr.c:4367,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/execExpr.c:4369,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:4374,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:4375,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:4375,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/execExpr.c:4377,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:4383,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4396,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExpr.c:4410,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4419,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4420,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4433,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4435,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4439,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4446,1
    - Dst: ExecReadyExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:4448,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 53
    argCount: 9
    argNames:
    - desc
    - ops
    - hashfunc_oids
    - collations
    - hash_exprs
    - opstrict
    - parent
    - init_value
    - keep_nulls
    argTypes:
    - TupleDesc
    - TupleTableSlotOps*
    - Oid*
    - List*
    - List*
    - bool*
    - PlanState*
    - uint32
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4451
      start: 4299
    functionDepth: 8
    functionLinenumber: 4299
    functionLinenumberEnd: 4451
    functionName: ExecBuildHash32Expr
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 0
    functionsReached:
    - Assert
    - InitFunctionCallInfoData
    - palloc
    - SizeForFunctionCallInfo
    - ExecCreateExprSetupSteps
    - ExecInitExprRec
    - UInt32GetDatum
    - lappend_int
    - fmgr_info
    - ExecReadyExpr
    - palloc0
    - list_length
    - ExprEvalPushStep
    - lfirst_int
    - foreach_current_index
    - makeNode
    - lfirst_oid
    - lfirst
    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, bool keep_nulls)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:4364,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/executor/execExpr.c:4367,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/execExpr.c:4369,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:4374,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:4375,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:4375,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/execExpr.c:4377,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:4383,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4396,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExpr.c:4410,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4419,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4420,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4428
      start: 4362
    functionDepth: 8
    functionLinenumber: 4362
    functionLinenumberEnd: 4428
    functionName: forboth
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 17
    functionsReached:
    - Assert
    - InitFunctionCallInfoData
    - SizeForFunctionCallInfo
    - ExecInitExprRec
    - lappend_int
    - fmgr_info
    - palloc0
    - ExprEvalPushStep
    - foreach_current_index
    - lfirst_oid
    - lfirst
    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:4433,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4435,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4439,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4441
      start: 4431
    functionDepth: 1
    functionLinenumber: 4431
    functionLinenumberEnd: 4441
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 398
    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:4473,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4501,1
    - Dst: ExecComputeSlotInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:4509,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4510,1
    - Dst: ExecComputeSlotInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:4517,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4518,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execExpr.c:4527,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execExpr.c:4528,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/execExpr.c:4536,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/executor/execExpr.c:4536,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/execExpr.c:4538,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/execExpr.c:4538,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/execExpr.c:4540,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:4543,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:4544,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:4544,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/execExpr.c:4545,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/execExpr.c:4546,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExpr.c:4547,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4557,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4566,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4576,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4583,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4584,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4591,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4593,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4594,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4601,1
    - Dst: ExecReadyExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:4603,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: 4606
      start: 4464
    functionDepth: 6
    functionLinenumber: 4464
    functionLinenumberEnd: 4606
    functionName: ExecBuildGroupingEqual
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 0
    functionsReached:
    - fmgr_info_set_expr
    - Assert
    - InitFunctionCallInfoData
    - SizeForFunctionCallInfo
    - aclcheck_error
    - lappend_int
    - TupleDescAttr
    - get_func_name
    - fmgr_info
    - palloc0
    - lfirst_int
    - ExprEvalPushStep
    - ExecReadyExpr
    - InvokeFunctionExecuteHook
    - ExecComputeSlotInfo
    - makeNode
    - GetUserId
    - object_aclcheck
    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:4591,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4593,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4594,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4596
      start: 4589
    functionDepth: 1
    functionLinenumber: 4589
    functionLinenumberEnd: 4596
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 398
    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:4632,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExpr.c:4634,1
    - Dst: ExecComputeSlotInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:4651,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4652,1
    - Dst: ExecComputeSlotInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:4659,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4660,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execExpr.c:4664,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/execExpr.c:4672,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/executor/execExpr.c:4672,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/execExpr.c:4674,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/execExpr.c:4674,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/execExpr.c:4676,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:4679,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:4680,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:4680,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/execExpr.c:4681,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/execExpr.c:4682,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExpr.c:4683,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4693,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4702,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4712,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4719,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4720,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4727,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4729,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4730,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4737,1
    - Dst: ExecReadyExpr
      Src: /src/postgres/src/backend/executor/execExpr.c:4739,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: 4742
      start: 4623
    functionDepth: 6
    functionLinenumber: 4623
    functionLinenumberEnd: 4742
    functionName: ExecBuildParamSetEqual
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 0
    functionsReached:
    - fmgr_info_set_expr
    - lappend_int
    - list_length
    - ExprEvalPushStep
    - InvokeFunctionExecuteHook
    - ExecComputeSlotInfo
    - makeNode
    - lfirst_int
    - GetUserId
    - object_aclcheck
    - ExecReadyExpr
    - InitFunctionCallInfoData
    - aclcheck_error
    - TupleDescAttr
    - fmgr_info
    - Assert
    - SizeForFunctionCallInfo
    - get_func_name
    - palloc0
    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:4727,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4729,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4730,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4732
      start: 4725
    functionDepth: 1
    functionLinenumber: 4725
    functionLinenumberEnd: 4732
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 398
    functionsReached:
    - Assert
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(lc, adjust_jumps)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:4752,1
    - Dst: get_typtype
      Src: /src/postgres/src/backend/executor/execExpr.c:4760,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExpr.c:4762,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:4770,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4775,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4779,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:4785,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4790,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4794,1
    - Dst: forboth
      Src: /src/postgres/src/backend/executor/execExpr.c:4798,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExpr.c:4801,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execExpr.c:4802,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExpr.c:4803,1
    - Dst: strlen
      Src: /src/postgres/src/backend/executor/execExpr.c:4806,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execExpr.c:4807,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/executor/execExpr.c:4808,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:4810,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execExpr.c:4812,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4820,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4829,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4838,1
    - Dst: ExecInitJsonCoercion
      Src: /src/postgres/src/backend/executor/execExpr.c:4859,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:4876,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:4877,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExpr.c:4878,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execExpr.c:4878,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/execExpr.c:4879,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/execExpr.c:4880,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExpr.c:4881,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/executor/execExpr.c:4887,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/executor/execExpr.c:4889,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4905,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:4923,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4932,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4937,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:4945,1
    - Dst: ExecInitJsonCoercion
      Src: /src/postgres/src/backend/executor/execExpr.c:4951,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:4960,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:4961,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4967,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4971,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:4974,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:4986,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execExpr.c:4995,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:5000,1
    - Dst: ExecInitExprRec
      Src: /src/postgres/src/backend/executor/execExpr.c:5008,1
    - Dst: ExecInitJsonCoercion
      Src: /src/postgres/src/backend/executor/execExpr.c:5014,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:5023,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExpr.c:5024,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:5031,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExpr.c:5037,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: 5043
      start: 4747
    functionDepth: 8
    functionLinenumber: 4747
    functionLinenumberEnd: 5043
    functionName: ExecInitJsonExpr
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 1
    functionsReached:
    - fmgr_info_set_expr
    - ExecInitExprRec
    - lappend_int
    - ExprEvalPushStep
    - get_typtype
    - forboth
    - lfirst_int
    - strlen
    - exprType
    - Int32GetDatum
    - InitFunctionCallInfoData
    - lfirst_node
    - fmgr_info
    - IsA
    - lappend
    - ExecInitJsonCoercion
    - palloc
    - lfirst
    - ObjectIdGetDatum
    - Assert
    - getTypeInputInfo
    - SizeForFunctionCallInfo
    - exprTypmod
    - palloc0
    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:4829,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4832
      start: 4827
    functionDepth: 1
    functionLinenumber: 4827
    functionLinenumberEnd: 4832
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 398
    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:5037,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5040
      start: 5035
    functionDepth: 1
    functionLinenumber: 5035
    functionLinenumberEnd: 5040
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 398
    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:5068,1
    - Dst: DomainHasConstraints
      Src: /src/postgres/src/backend/executor/execExpr.c:5070,1
    - Dst: ExprEvalPushStep
      Src: /src/postgres/src/backend/executor/execExpr.c:5071,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: 5072
      start: 5049
    functionDepth: 1
    functionLinenumber: 5049
    functionLinenumberEnd: 5072
    functionName: ExecInitJsonCoercion
    functionSourceFile: /src/postgres/src/backend/executor/execExpr.c
    functionUses: 1
    functionsReached:
    - ExprEvalPushStep
    - DomainHasConstraints
    - getBaseType
    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:
    - nodeTag
    - Assert
    - IsA
    - elog
    - ExecClearTuple
    - bms_next_member
    linkageType: ''
    returnType: void
    signature: void ExecScanReScan(ScanState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:67,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:76,1
    - Dst: ExecInitPartitionExecPruning
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:95,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:96,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:101,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:109,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:113,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:119,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:121,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:125,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:129,1
    - Dst: binaryheap_allocate
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:130,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:139,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:141,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:143,1
    - Dst: ExecGetCommonSlotOps
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:155,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:158,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:162,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:177,1
    - Dst: PrepareSortSupportFromOrderingOp
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:197,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 48
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - MergeAppend*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 64
    functionDepth: 3
    functionLinenumber: 64
    functionLinenumberEnd: 206
    functionName: ExecInitMergeAppend
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergeAppend.c
    functionUses: 0
    functionsReached:
    - binaryheap_allocate
    - Assert
    - palloc
    - PrepareSortSupportFromOrderingOp
    - ExecInitResultTupleSlotTL
    - bms_next_member
    - ExecInitNode
    - bms_add_range
    - list_length
    - palloc0
    - list_nth
    - ExecInitPartitionExecPruning
    - makeNode
    - bms_num_members
    - ExecGetCommonSlotOps
    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:217,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:221,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:227,1
    - Dst: ExecFindMatchingSubPlans
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:236,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:243,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:245,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:246,1
    - Dst: binaryheap_add_unordered
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:247,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:247,1
    - Dst: binaryheap_build
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:249,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:262,1
    - Dst: binaryheap_first
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:262,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:263,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:264,1
    - Dst: binaryheap_replace_first
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:265,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:265,1
    - Dst: binaryheap_remove_first
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:267,1
    - Dst: binaryheap_empty
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:270,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:273,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:277,1
    - Dst: binaryheap_first
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:277,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 214
    functionDepth: 3
    functionLinenumber: 214
    functionLinenumberEnd: 282
    functionName: ExecMergeAppend
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergeAppend.c
    functionUses: 0
    functionsReached:
    - ExecFindMatchingSubPlans
    - CHECK_FOR_INTERRUPTS
    - ExecProcNode
    - TupIsNull
    - Int32GetDatum
    - binaryheap_empty
    - binaryheap_add_unordered
    - DatumGetInt32
    - binaryheap_replace_first
    - castNode
    - binaryheap_first
    - binaryheap_remove_first
    - ExecClearTuple
    - binaryheap_build
    - bms_next_member
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecMergeAppend(PlanState *pstate)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:291,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:292,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:298,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:298,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:299,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:299,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:311,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:312,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:314,1
    - Dst: INVERT_COMPARE_RESULT
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:319,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - Datum
    - Datum
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 287
    functionDepth: 3
    functionLinenumber: 287
    functionLinenumberEnd: 324
    functionName: heap_compare_slots
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergeAppend.c
    functionUses: 0
    functionsReached:
    - Assert
    - TupIsNull
    - DatumGetInt32
    - ApplySortComparator
    - slot_getattr
    - INVERT_COMPARE_RESULT
    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:351,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - MergeAppendState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 334
    functionDepth: 1
    functionLinenumber: 334
    functionLinenumberEnd: 352
    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:365,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:368,1
    - Dst: UpdateChangedParamSet
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:381,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:388,1
    - Dst: binaryheap_reset
      Src: /src/postgres/src/backend/executor/nodeMergeAppend.c:390,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - node
    argTypes:
    - MergeAppendState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 354
    functionDepth: 3
    functionLinenumber: 354
    functionLinenumberEnd: 392
    functionName: ExecReScanMergeAppend
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergeAppend.c
    functionUses: 0
    functionsReached:
    - bms_overlap
    - ExecReScan
    - binaryheap_reset
    - UpdateChangedParamSet
    - bms_free
    linkageType: ''
    returnType: void
    signature: void ExecReScanMergeAppend(MergeAppendState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 42
    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:58,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:74,1
    - Dst: tbm_create
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:94,1
    - Dst: index_getbitmap
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:104,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:106,1
    - Dst: ExecIndexAdvanceArrayKeys
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:108,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:111,1
    - Dst: InstrStopNode
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:118,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapIndexScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 121
    functionName: MultiExecBitmapIndexScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c
    functionUses: 0
    functionsReached:
    - index_getbitmap
    - CHECK_FOR_INTERRUPTS
    - tbm_create
    - index_rescan
    - InstrStartNode
    - ExecIndexAdvanceArrayKeys
    - InstrStopNode
    - ExecReScan
    linkageType: ''
    returnType: Node
    signature: 'Node *

      MultiExecBitmapIndexScan(BitmapIndexScanState *node)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:141,1
    - Dst: ExecIndexEvalRuntimeKeys
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:152,1
    - Dst: ExecIndexEvalArrayKeys
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:157,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:165,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapIndexScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 130
    functionDepth: 2
    functionLinenumber: 130
    functionLinenumberEnd: 168
    functionName: ExecReScanBitmapIndexScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c
    functionUses: 0
    functionsReached:
    - ResetExprContext
    - index_rescan
    - ExecIndexEvalRuntimeKeys
    - ExecIndexEvalArrayKeys
    linkageType: ''
    returnType: void
    signature: void ExecReScanBitmapIndexScan(BitmapIndexScanState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:191,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:195,1
    - Dst: index_endscan
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:211,1
    - Dst: index_close
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:213,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapIndexScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 174
    functionDepth: 2
    functionLinenumber: 174
    functionLinenumberEnd: 214
    functionName: ExecEndBitmapIndexScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c
    functionUses: 0
    functionsReached:
    - IsParallelWorker
    - Assert
    - index_endscan
    - index_close
    linkageType: ''
    returnType: void
    signature: void ExecEndBitmapIndexScan(BitmapIndexScanState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:229,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:234,1
    - Dst: exec_rt_fetch
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:276,1
    - Dst: index_open
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:277,1
    - Dst: ExecIndexBuildScanKeys
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:289,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:311,1
    - Dst: index_beginscan_bitmap
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:324,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:335,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - BitmapIndexScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 222
    functionDepth: 4
    functionLinenumber: 222
    functionLinenumberEnd: 343
    functionName: ExecInitBitmapIndexScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExecAssignExprContext
    - ExecIndexBuildScanKeys
    - exec_rt_fetch
    - index_rescan
    - index_beginscan_bitmap
    - makeNode
    - index_open
    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:366,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:367,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - BitmapIndexScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 352
    functionDepth: 1
    functionLinenumber: 352
    functionLinenumberEnd: 368
    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:389,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:391,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:395,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - BitmapIndexScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 376
    functionDepth: 1
    functionLinenumber: 376
    functionLinenumberEnd: 397
    functionName: ExecBitmapIndexScanInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c
    functionUses: 0
    functionsReached:
    - memset
    - shm_toc_allocate
    - shm_toc_insert
    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:414,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - BitmapIndexScanState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 405
    functionDepth: 1
    functionLinenumber: 405
    functionLinenumberEnd: 415
    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:435,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c:436,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapIndexScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 423
    functionDepth: 0
    functionLinenumber: 423
    functionLinenumberEnd: 437
    functionName: ExecBitmapIndexScanRetrieveInstrumentation
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapIndexscan.c
    functionUses: 0
    functionsReached:
    - memcpy
    - palloc
    linkageType: ''
    returnType: void
    signature: void ExecBitmapIndexScanRetrieveInstrumentation(BitmapIndexScanState
      *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: table_beginscan
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:72,1
    - Dst: table_scan_getnextslot
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:81,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - node
    argTypes:
    - SeqScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 50
    functionDepth: 2
    functionLinenumber: 50
    functionLinenumberEnd: 84
    functionName: SeqNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - table_scan_getnextslot
    - table_beginscan
    linkageType: ''
    returnType: TupleTableSlot
    signature: '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: 97
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 97
    functionName: SeqRecheck
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool SeqRecheck(SeqScanState *node, TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:112,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:114,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:115,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:116,1
    - Dst: ExecScanExtended
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 124
    functionName: ExecSeqScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExecScanExtended
    - castNode
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecSeqScan(PlanState *pstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:132,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:134,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:135,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:136,1
    - Dst: ExecScanExtended
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 144
    functionName: ExecSeqScanWithQual
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExecScanExtended
    - castNode
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecSeqScanWithQual(PlanState *pstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:152,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:154,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:155,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:156,1
    - Dst: ExecScanExtended
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 164
    functionName: ExecSeqScanWithProject
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExecScanExtended
    - castNode
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecSeqScanWithProject(PlanState *pstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:173,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:175,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:176,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:177,1
    - Dst: ExecScanExtended
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 185
    functionName: ExecSeqScanWithQualProject
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExecScanExtended
    - castNode
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecSeqScanWithQualProject(PlanState *pstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:195,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 200
    functionName: ExecSeqScanEPQ
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - ExecScan
    - castNode
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecSeqScanEPQ(PlanState *pstate)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:215,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:215,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:216,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:216,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:221,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:230,1
    - Dst: ExecOpenScanRelation
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:236,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:241,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:242,1
    - Dst: table_slot_callbacks
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:243,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:248,1
    - Dst: ExecAssignScanProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:249,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:255,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - SeqScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 206
    functionDepth: 7
    functionLinenumber: 206
    functionLinenumberEnd: 280
    functionName: ExecInitSeqScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExecInitScanTupleSlot
    - ExecAssignExprContext
    - ExecOpenScanRelation
    - RelationGetDescr
    - table_slot_callbacks
    - ExecInitQual
    - outerPlan
    - ExecInitResultTypeTL
    - ExecAssignScanProjectionInfo
    - innerPlan
    - makeNode
    linkageType: ''
    returnType: SeqScanState
    signature: 'SeqScanState *

      ExecInitSeqScan(SeqScan *node, EState *estate, int eflags)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_endscan
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:302,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - node
    argTypes:
    - SeqScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 303
    functionName: ExecEndSeqScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - table_endscan
    linkageType: ''
    returnType: void
    signature: void ExecEndSeqScan(SeqScanState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: table_rescan
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:324,1
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:327,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - SeqScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 316
    functionDepth: 4
    functionLinenumber: 316
    functionLinenumberEnd: 328
    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:348,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:350,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - SeqScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 342
    functionDepth: 2
    functionLinenumber: 342
    functionLinenumberEnd: 352
    functionName: ExecSeqScanEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - table_parallelscan_estimate
    - shm_toc_estimate_chunk
    - shm_toc_estimate_keys
    linkageType: ''
    returnType: void
    signature: "void ExecSeqScanEstimate(SeqScanState *node,\n\t\t\t\t\tParallelContext
      *pcxt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:367,1
    - Dst: table_parallelscan_initialize
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:368,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:371,1
    - Dst: table_beginscan_parallel
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - SeqScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 360
    functionDepth: 2
    functionLinenumber: 360
    functionLinenumberEnd: 374
    functionName: ExecSeqScanInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - table_parallelscan_initialize
    - table_beginscan_parallel
    - shm_toc_allocate
    - shm_toc_insert
    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:389,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - SeqScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 382
    functionDepth: 1
    functionLinenumber: 382
    functionLinenumberEnd: 390
    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: 1
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:404,1
    - Dst: table_beginscan_parallel
      Src: /src/postgres/src/backend/executor/nodeSeqscan.c:406,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - SeqScanState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 398
    functionDepth: 2
    functionLinenumber: 398
    functionLinenumberEnd: 407
    functionName: ExecSeqScanInitializeWorker
    functionSourceFile: /src/postgres/src/backend/executor/nodeSeqscan.c
    functionUses: 0
    functionsReached:
    - table_beginscan_parallel
    - shm_toc_lookup
    linkageType: ''
    returnType: void
    signature: "void ExecSeqScanInitializeWorker(SeqScanState *node,\n\t\t\t\t\t\t\tParallelWorkerContext
      *pwcxt)"
  - 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: 153
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 153
    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:183,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:187,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:192,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:203,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:204,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:209,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:209,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:210,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:210,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:219,1
    - Dst: IndexAmTranslateStrategy
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:223,1
    - Dst: get_opfamily_method
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:223,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:224,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:236,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:237,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:241,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:244,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:244,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:249,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:253,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:254,1
    - Dst: PrepareSortSupportComparisonShim
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:257,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: 264
      start: 174
    functionDepth: 4
    functionLinenumber: 174
    functionLinenumberEnd: 264
    functionName: MJExamineQuals
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - OidFunctionCall1
    - IndexAmTranslateStrategy
    - Assert
    - PrepareSortSupportComparisonShim
    - linitial
    - IsA
    - palloc0
    - list_length
    - lsecond
    - PointerGetDatum
    - elog
    - OidIsValid
    - get_opfamily_method
    - get_opfamily_proc
    - ExecInitExpr
    - lfirst
    - get_op_opfamily_properties
    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:192,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:203,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:204,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:209,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:209,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:210,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:210,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:219,1
    - Dst: IndexAmTranslateStrategy
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:223,1
    - Dst: get_opfamily_method
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:223,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:224,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:236,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:237,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:241,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:244,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:244,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:249,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:253,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:254,1
    - Dst: PrepareSortSupportComparisonShim
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:257,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 190
    functionDepth: 4
    functionLinenumber: 190
    functionLinenumberEnd: 261
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 398
    functionsReached:
    - OidFunctionCall1
    - IndexAmTranslateStrategy
    - Assert
    - PrepareSortSupportComparisonShim
    - linitial
    - IsA
    - lsecond
    - PointerGetDatum
    - elog
    - OidIsValid
    - get_opfamily_method
    - get_opfamily_proc
    - ExecInitExpr
    - lfirst
    - get_op_opfamily_properties
    linkageType: ''
    returnType: void
    signature: void foreach(cl, mergeclauses)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:297,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:300,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:302,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:310,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:323,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - mergestate
    argTypes:
    - MergeJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 326
    functionName: MJEvalOuterValues
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - ExecEvalExpr
    - ResetExprContext
    - MemoryContextSwitchTo
    - TupIsNull
    linkageType: ''
    returnType: MJEvalResult
    signature: MJEvalResult MJEvalOuterValues(MergeJoinState *mergestate)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:344,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:347,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:349,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:357,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:370,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - mergestate
    - innerslot
    argTypes:
    - MergeJoinState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 335
    functionDepth: 1
    functionLinenumber: 335
    functionLinenumberEnd: 373
    functionName: MJEvalInnerValues
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - ExecEvalExpr
    - ResetExprContext
    - MemoryContextSwitchTo
    - TupIsNull
    linkageType: ''
    returnType: MJEvalResult
    signature: MJEvalResult MJEvalInnerValues(MergeJoinState *mergestate, TupleTableSlot
      *innerslot)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:398,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:400,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:415,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:436,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 1
    argNames:
    - mergestate
    argTypes:
    - MergeJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 385
    functionDepth: 2
    functionLinenumber: 385
    functionLinenumberEnd: 439
    functionName: MJCompare
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - ResetExprContext
    - MemoryContextSwitchTo
    - ApplySortComparator
    linkageType: ''
    returnType: int
    signature: int MJCompare(MergeJoinState *mergestate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:452,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:457,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:463,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:465,1
    - Dst: InstrCountFiltered2
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:468,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - node
    argTypes:
    - MergeJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 446
    functionDepth: 4
    functionLinenumber: 446
    functionLinenumberEnd: 471
    functionName: MJFillOuter
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - ResetExprContext
    - InstrCountFiltered2
    - ExecQual
    - MJ_printf
    - ExecProject
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      MJFillOuter(MergeJoinState *node)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:483,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:488,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:494,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:496,1
    - Dst: InstrCountFiltered2
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:499,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - node
    argTypes:
    - MergeJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 477
    functionDepth: 4
    functionLinenumber: 477
    functionLinenumberEnd: 502
    functionName: MJFillInner
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - ResetExprContext
    - InstrCountFiltered2
    - ExecQual
    - MJ_printf
    - ExecProject
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      MJFillInner(MergeJoinState *node)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:520,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:522,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:524,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - qual
    - is_const_false
    argTypes:
    - List*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 513
    functionDepth: 1
    functionLinenumber: 513
    functionLinenumberEnd: 528
    functionName: check_constant_qual
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - DatumGetBool
    - IsA
    - lfirst
    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:520,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:522,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:524,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 518
    functionDepth: 1
    functionLinenumber: 518
    functionLinenumberEnd: 526
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 398
    functionsReached:
    - DatumGetBool
    - IsA
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, qual)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:545,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:546,1
    - Dst: printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:547,1
    - Dst: MJ_debugtup
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:549,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - mergestate
    argTypes:
    - MergeJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 540
    functionDepth: 1
    functionLinenumber: 540
    functionLinenumberEnd: 550
    functionName: ExecMergeTupleDumpOuter
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - printf
    - MJ_debugtup
    - TupIsNull
    linkageType: ''
    returnType: void
    signature: void ExecMergeTupleDumpOuter(MergeJoinState *mergestate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:557,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:558,1
    - Dst: printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:559,1
    - Dst: MJ_debugtup
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:561,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - mergestate
    argTypes:
    - MergeJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 552
    functionDepth: 1
    functionLinenumber: 552
    functionLinenumberEnd: 562
    functionName: ExecMergeTupleDumpInner
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - printf
    - MJ_debugtup
    - TupIsNull
    linkageType: ''
    returnType: void
    signature: void ExecMergeTupleDumpInner(MergeJoinState *mergestate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:569,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:570,1
    - Dst: printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:571,1
    - Dst: MJ_debugtup
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:573,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - mergestate
    argTypes:
    - MergeJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 564
    functionDepth: 1
    functionLinenumber: 564
    functionLinenumberEnd: 574
    functionName: ExecMergeTupleDumpMarked
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - printf
    - MJ_debugtup
    - TupIsNull
    linkageType: ''
    returnType: void
    signature: void ExecMergeTupleDumpMarked(MergeJoinState *mergestate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:579,1
    - Dst: ExecMergeTupleDumpOuter
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:581,1
    - Dst: ExecMergeTupleDumpInner
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:582,1
    - Dst: ExecMergeTupleDumpMarked
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:583,1
    - Dst: printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:585,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - mergestate
    argTypes:
    - MergeJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 576
    functionDepth: 2
    functionLinenumber: 576
    functionLinenumberEnd: 586
    functionName: ExecMergeTupleDump
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - ExecMergeTupleDumpMarked
    - printf
    - ExecMergeTupleDumpInner
    - ExecMergeTupleDumpOuter
    linkageType: ''
    returnType: void
    signature: void ExecMergeTupleDump(MergeJoinState *mergestate)
  - BBCount: 74
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:596,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:609,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:614,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:615,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:626,1
    - Dst: MJ_dump
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:633,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:648,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:650,1
    - Dst: MJEvalOuterValues
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:654,1
    - Dst: MJFillOuter
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:671,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:678,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:696,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:698,1
    - Dst: MJEvalInnerValues
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:702,1
    - Dst: ExecMarkPos
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:715,1
    - Dst: MJFillInner
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:726,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:733,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:758,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:787,1
    - Dst: MJ_DEBUG_QUAL
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:788,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:820,1
    - Dst: MJ_DEBUG_QUAL
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:821,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:829,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:831,1
    - Dst: InstrCountFiltered2
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:834,1
    - Dst: InstrCountFiltered1
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:837,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:849,1
    - Dst: MJFillInner
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:861,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:874,1
    - Dst: MJ_DEBUG_PROC_NODE
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:876,1
    - Dst: MJEvalInnerValues
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:880,1
    - Dst: MJCompare
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:894,1
    - Dst: MJ_DEBUG_COMPARE
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:895,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:902,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:950,1
    - Dst: MJFillOuter
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:962,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:970,1
    - Dst: MJ_DEBUG_PROC_NODE
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:972,1
    - Dst: MJEvalOuterValues
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:976,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:988,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:990,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1040,1
    - Dst: MJEvalInnerValues
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1048,1
    - Dst: MJCompare
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1050,1
    - Dst: MJ_DEBUG_COMPARE
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1051,1
    - Dst: ExecRestrPos
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1078,1
    - Dst: MJEvalInnerValues
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1114,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1145,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1178,1
    - Dst: MJCompare
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1185,1
    - Dst: MJ_DEBUG_COMPARE
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1186,1
    - Dst: ExecMarkPos
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1191,1
    - Dst: MarkInnerTuple
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1193,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1212,1
    - Dst: MJFillOuter
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1224,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1232,1
    - Dst: MJ_DEBUG_PROC_NODE
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1234,1
    - Dst: MJEvalOuterValues
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1238,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1250,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1252,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1274,1
    - Dst: MJFillInner
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1286,1
    - Dst: ExecMarkPos
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1293,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1298,1
    - Dst: MJ_DEBUG_PROC_NODE
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1300,1
    - Dst: MJEvalInnerValues
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1304,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1320,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1322,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1342,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1344,1
    - Dst: MJFillInner
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1356,1
    - Dst: ExecMarkPos
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1363,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1368,1
    - Dst: MJ_DEBUG_PROC_NODE
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1370,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1373,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1375,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1388,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1390,1
    - Dst: MJFillOuter
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1402,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1410,1
    - Dst: MJ_DEBUG_PROC_NODE
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1412,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1415,1
    - Dst: MJ_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1417,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1428,1
    CyclomaticComplexity: 92
    EdgeCount: 92
    ICount: 303
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1432
      start: 593
    functionDepth: 5
    functionLinenumber: 593
    functionLinenumberEnd: 1432
    functionName: ExecMergeJoin
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - CHECK_FOR_INTERRUPTS
    - castNode
    - MarkInnerTuple
    - MJ_DEBUG_QUAL
    - TupIsNull
    - MJFillInner
    - MJCompare
    - InstrCountFiltered1
    - ExecQual
    - MJ_printf
    - innerPlanState
    - ExecRestrPos
    - MJEvalOuterValues
    - elog
    - MJ_DEBUG_COMPARE
    - outerPlanState
    - MJ_dump
    - MJEvalInnerValues
    - ExecProject
    - ResetExprContext
    - Assert
    - InstrCountFiltered2
    - ExecProcNode
    - MJ_DEBUG_PROC_NODE
    - ExecMarkPos
    - MJFillOuter
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecMergeJoin(PlanState *pstate)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1447,1
    - Dst: MJ1_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1449,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1455,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1467,1
    - Dst: CreateExprContext
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1474,1
    - Dst: CreateExprContext
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1475,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1484,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1487,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1487,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1487,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1488,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1488,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1489,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1489,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1489,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1493,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1493,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1509,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1509,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1519,1
    - Dst: ExecAssignProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1520,1
    - Dst: ExecGetResultSlotOps
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1525,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1525,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1526,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1533,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1535,1
    - Dst: ExecInitNullTupleSlot
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1557,1
    - Dst: ExecInitNullTupleSlot
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1564,1
    - Dst: check_constant_qual
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1570,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1572,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1573,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1574,1
    - Dst: ExecInitNullTupleSlot
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1580,1
    - Dst: ExecInitNullTupleSlot
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1582,1
    - Dst: check_constant_qual
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1588,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1590,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1591,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1592,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1595,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1602,1
    - Dst: MJExamineQuals
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1603,1
    - Dst: MJ1_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1622,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 68
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - MergeJoin*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1626
      start: 1438
    functionDepth: 7
    functionLinenumber: 1438
    functionLinenumberEnd: 1626
    functionName: ExecInitMergeJoin
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - list_length
    - ExecAssignProjectionInfo
    - makeNode
    - MJ1_printf
    - ExecAssignExprContext
    - ExecGetResultType
    - ExecInitQual
    - innerPlanState
    - errmsg
    - ExecGetResultSlotOps
    - ExecInitResultTupleSlotTL
    - ExecInitExtraTupleSlot
    - ExecInitNode
    - IsA
    - elog
    - outerPlan
    - CreateExprContext
    - outerPlanState
    - MJExamineQuals
    - ExecInitNullTupleSlot
    - Assert
    - ereport
    - innerPlan
    - errcode
    - check_constant_qual
    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:1638,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1644,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1644,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1645,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1645,1
    - Dst: MJ1_printf
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1647,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - MergeJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1649
      start: 1635
    functionDepth: 1
    functionLinenumber: 1635
    functionLinenumberEnd: 1649
    functionName: ExecEndMergeJoin
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - MJ1_printf
    - ExecEndNode
    - outerPlanState
    - innerPlanState
    linkageType: ''
    returnType: void
    signature: void ExecEndMergeJoin(MergeJoinState *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1654,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1655,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1657,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1670,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeMergejoin.c:1672,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - node
    argTypes:
    - MergeJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1673
      start: 1651
    functionDepth: 1
    functionLinenumber: 1651
    functionLinenumberEnd: 1673
    functionName: ExecReScanMergeJoin
    functionSourceFile: /src/postgres/src/backend/executor/nodeMergejoin.c
    functionUses: 0
    functionsReached:
    - ExecClearTuple
    - innerPlanState
    - outerPlanState
    - ExecReScan
    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:
    - errmsg
    - pfree
    - ExecFetchSlotMinimalTuple
    - ereport
    - errcode
    - shm_mq_send
    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:
    - shm_mq_detach
    - pfree
    linkageType: ''
    returnType: void
    signature: void tqueueDestroyReceiver(DestReceiver *self)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      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
    linkageType: ''
    returnType: DestReceiver
    signature: 'DestReceiver *

      CreateTupleQueueDestReceiver(shm_mq_handle *handle)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      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
    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:
    - Assert
    - shm_mq_receive
    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:
    - errmsg
    - Assert
    - TTS_EMPTY
    - ereport
    - errcode
    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:
    - errmsg
    - Assert
    - TTS_EMPTY
    - ereport
    - errcode
    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: 2
    functionLinenumber: 175
    functionLinenumberEnd: 266
    functionName: tts_virtual_materialize
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - att_addlength_datum
    - EOH_get_flat_size
    - EOH_flatten_into
    - memcpy
    - PointerGetDatum
    - VARATT_IS_EXTERNAL_EXPANDED
    - TTS_SHOULDFREE
    - TupleDescCompactAttr
    - MemoryContextAlloc
    - DatumGetPointer
    - DatumGetEOHP
    - att_nominal_alignby
    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: 3
    functionLinenumber: 268
    functionLinenumberEnd: 288
    functionName: tts_virtual_copyslot
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - tts_virtual_clear
    - slot_getallattrs
    - tts_virtual_materialize
    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: 5
    functionLinenumber: 290
    functionLinenumberEnd: 298
    functionName: tts_virtual_copy_heap_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - heap_form_tuple
    - TTS_EMPTY
    - Assert
    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: 5
    functionLinenumber: 300
    functionLinenumberEnd: 309
    functionName: tts_virtual_copy_minimal_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - TTS_EMPTY
    - Assert
    - heap_form_minimal_tuple
    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:
    - heap_freetuple
    - ItemPointerSetInvalid
    - TTS_SHOULDFREE
    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:
    - TTS_EMPTY
    - Assert
    - 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:
    - errmsg
    - Assert
    - TTS_EMPTY
    - ereport
    - heap_getsysattr
    - errcode
    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:
    - errmsg
    - Assert
    - TTS_EMPTY
    - ereport
    - HeapTupleHeaderGetRawXmin
    - TransactionIdIsCurrentTransactionId
    - errcode
    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: 5
    functionLinenumber: 398
    functionLinenumberEnd: 436
    functionName: tts_heap_materialize
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - heap_form_tuple
    - Assert
    - MemoryContextSwitchTo
    - TTS_EMPTY
    - heap_copytuple
    - TTS_SHOULDFREE
    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: 6
    functionLinenumber: 451
    functionLinenumberEnd: 461
    functionName: tts_heap_get_heap_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - TTS_EMPTY
    - Assert
    - 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: 6
    functionLinenumber: 463
    functionLinenumberEnd: 473
    functionName: tts_heap_copy_heap_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - TTS_EMPTY
    - Assert
    - heap_copytuple
    - tts_heap_materialize
    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: 6
    functionLinenumber: 475
    functionLinenumberEnd: 484
    functionName: tts_heap_copy_minimal_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - minimal_tuple_from_heap_tuple
    - tts_heap_materialize
    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:
    - heap_free_minimal_tuple
    - ItemPointerSetInvalid
    - 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:
    - TTS_EMPTY
    - Assert
    - 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:
    - errmsg
    - Assert
    - TTS_EMPTY
    - ereport
    - errcode
    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:
    - errmsg
    - Assert
    - TTS_EMPTY
    - ereport
    - errcode
    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: 5
    functionLinenumber: 586
    functionLinenumberEnd: 633
    functionName: tts_minimal_materialize
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - TTS_EMPTY
    - heap_form_minimal_tuple
    - heap_copy_minimal_tuple
    - TTS_SHOULDFREE
    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:
    - MemoryContextSwitchTo
    - ExecCopySlotMinimalTuple
    - ExecStoreMinimalTuple
    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: 6
    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: 6
    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: 6
    functionLinenumber: 670
    functionLinenumberEnd: 679
    functionName: tts_minimal_copy_minimal_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - tts_minimal_materialize
    - heap_copy_minimal_tuple
    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:
    - tts_minimal_clear
    - TTS_EMPTY
    - Assert
    - 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:
    - Assert
    - BufferIsValid
    - heap_freetuple
    - ReleaseBuffer
    - ItemPointerSetInvalid
    - TTS_SHOULDFREE
    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:
    - TTS_EMPTY
    - Assert
    - 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:
    - errmsg
    - Assert
    - TTS_EMPTY
    - ereport
    - heap_getsysattr
    - errcode
    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:
    - errmsg
    - Assert
    - TTS_EMPTY
    - ereport
    - HeapTupleHeaderGetRawXmin
    - TransactionIdIsCurrentTransactionId
    - errcode
    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: 5
    functionLinenumber: 803
    functionLinenumberEnd: 860
    functionName: tts_buffer_heap_materialize
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - heap_form_tuple
    - Assert
    - MemoryContextSwitchTo
    - BufferIsValid
    - likely
    - ReleaseBuffer
    - TTS_EMPTY
    - heap_copytuple
    - TTS_SHOULDFREE
    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:
    - Assert
    - MemoryContextSwitchTo
    - BufferIsValid
    - tts_buffer_heap_store_tuple
    - ExecCopySlotHeapTuple
    - TTS_SHOULDFREE
    - ExecClearTuple
    - memcpy
    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: 6
    functionLinenumber: 904
    functionLinenumberEnd: 915
    functionName: tts_buffer_heap_get_heap_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - TTS_EMPTY
    - Assert
    - 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: 6
    functionLinenumber: 917
    functionLinenumberEnd: 928
    functionName: tts_buffer_heap_copy_heap_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - TTS_EMPTY
    - Assert
    - 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: 6
    functionLinenumber: 930
    functionLinenumberEnd: 941
    functionName: tts_buffer_heap_copy_minimal_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - TTS_EMPTY
    - Assert
    - 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:
    - Assert
    - BufferIsValid
    - heap_freetuple
    - ReleaseBuffer
    - IncrBufferRefCount
    - TTS_SHOULDFREE
    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: 10
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/execTuples.c:1035,1
    - Dst: att_isnull
      Src: /src/postgres/src/backend/executor/execTuples.c:1037,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/executor/execTuples.c:1063,1
    - Dst: att_pointer_alignby
      Src: /src/postgres/src/backend/executor/execTuples.c:1067,1
    - Dst: att_nominal_alignby
      Src: /src/postgres/src/backend/executor/execTuples.c:1079,1
    - Dst: fetchatt
      Src: /src/postgres/src/backend/executor/execTuples.c:1085,1
    - Dst: att_addlength_pointer
      Src: /src/postgres/src/backend/executor/execTuples.c:1087,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 37
    argCount: 8
    argNames:
    - slot
    - tuple
    - attnum
    - natts
    - slow
    - hasnulls
    - offp
    - slowp
    argTypes:
    - TupleTableSlot*
    - HeapTuple
    - int
    - int
    - bool
    - bool
    - uint32*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1105
      start: 1018
    functionDepth: 2
    functionLinenumber: 1018
    functionLinenumberEnd: 1105
    functionName: slot_deform_heap_tuple_internal
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - att_isnull
    - att_addlength_pointer
    - att_pointer_alignby
    - TupleDescCompactAttr
    - fetchatt
    - att_nominal_alignby
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: "pg_attribute_always_inline slot_deform_heap_tuple_internal(TupleTableSlot
      *slot, HeapTuple tuple,\n\t\t\t\t\t\t\t\tint attnum, int natts, bool slow,\n\t\t\t\t\t\t\t\tbool
      hasnulls, uint32 *offp, bool *slowp)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHasNulls
      Src: /src/postgres/src/backend/executor/execTuples.c:1125,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/execTuples.c:1131,1
    - Dst: HeapTupleHeaderGetNatts
      Src: /src/postgres/src/backend/executor/execTuples.c:1131,1
    - Dst: TTS_SLOW
      Src: /src/postgres/src/backend/executor/execTuples.c:1148,1
    - Dst: slot_deform_heap_tuple_internal
      Src: /src/postgres/src/backend/executor/execTuples.c:1166,1
    - Dst: slot_deform_heap_tuple_internal
      Src: /src/postgres/src/backend/executor/execTuples.c:1175,1
    - Dst: slot_deform_heap_tuple_internal
      Src: /src/postgres/src/backend/executor/execTuples.c:1189,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 4
    argNames:
    - slot
    - tuple
    - offp
    - natts
    argTypes:
    - TupleTableSlot*
    - HeapTuple
    - uint32*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1208
      start: 1121
    functionDepth: 3
    functionLinenumber: 1121
    functionLinenumberEnd: 1208
    functionName: slot_deform_heap_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 3
    functionsReached:
    - Min
    - slot_deform_heap_tuple_internal
    - TTS_SLOW
    - HeapTupleHeaderGetNatts
    - HeapTupleHasNulls
    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 natts)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/execTuples.c:1315,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/execTuples.c:1316,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/execTuples.c:1317,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execTuples.c:1321,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/execTuples.c:1336,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/execTuples.c:1339,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/execTuples.c:1340,1
    - Dst: PinTupleDesc
      Src: /src/postgres/src/backend/executor/execTuples.c:1342,1
    - Dst: TupleTableSlot*::tts_ops::init
      Src: /src/postgres/src/backend/executor/execTuples.c:1348,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - tupleDesc
    - tts_ops
    argTypes:
    - TupleDesc
    - TupleTableSlotOps*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1351
      start: 1300
    functionDepth: 1
    functionLinenumber: 1300
    functionLinenumberEnd: 1351
    functionName: MakeTupleTableSlot
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 5
    functionsReached:
    - TupleTableSlot*::tts_ops::init
    - PinTupleDesc
    - palloc0
    - MAXALIGN
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nMakeTupleTableSlot(TupleDesc tupleDesc,\n\t\t\t\t
      \  const TupleTableSlotOps *tts_ops)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MakeTupleTableSlot
      Src: /src/postgres/src/backend/executor/execTuples.c:1363,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execTuples.c:1365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - tupleTable
    - desc
    - tts_ops
    argTypes:
    - List**
    - TupleDesc
    - TupleTableSlotOps*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1368
      start: 1359
    functionDepth: 6
    functionLinenumber: 1359
    functionLinenumberEnd: 1368
    functionName: ExecAllocTableSlot
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 1
    functionsReached:
    - lappend
    - MakeTupleTableSlot
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nExecAllocTableSlot(List **tupleTable, TupleDesc
      desc,\n\t\t\t\t   const TupleTableSlotOps *tts_ops)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execTuples.c:1387,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1390,1
    - Dst: TupleTableSlot*::tts_ops::release
      Src: /src/postgres/src/backend/executor/execTuples.c:1391,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/executor/execTuples.c:1394,1
    - Dst: TTS_FIXED
      Src: /src/postgres/src/backend/executor/execTuples.c:1401,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1404,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1406,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1408,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/execTuples.c:1414,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - tupleTable
    - shouldFree
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1415
      start: 1379
    functionDepth: 4
    functionLinenumber: 1379
    functionLinenumberEnd: 1415
    functionName: ExecResetTupleTable
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 3
    functionsReached:
    - ReleaseTupleDesc
    - pfree
    - lfirst_node
    - TTS_FIXED
    - TupleTableSlot*::tts_ops::release
    - ExecClearTuple
    - list_free
    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:1387,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1390,1
    - Dst: TupleTableSlot*::tts_ops::release
      Src: /src/postgres/src/backend/executor/execTuples.c:1391,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/executor/execTuples.c:1394,1
    - Dst: TTS_FIXED
      Src: /src/postgres/src/backend/executor/execTuples.c:1401,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1404,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1406,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1408,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1410
      start: 1385
    functionDepth: 1
    functionLinenumber: 1385
    functionLinenumberEnd: 1410
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 398
    functionsReached:
    - ReleaseTupleDesc
    - pfree
    - lfirst_node
    - TTS_FIXED
    - TupleTableSlot*::tts_ops::release
    - ExecClearTuple
    linkageType: ''
    returnType: void
    signature: void foreach(lc, tupleTable)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MakeTupleTableSlot
      Src: /src/postgres/src/backend/executor/execTuples.c:1430,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tupdesc
    - tts_ops
    argTypes:
    - TupleDesc
    - TupleTableSlotOps*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1433
      start: 1426
    functionDepth: 2
    functionLinenumber: 1426
    functionLinenumberEnd: 1433
    functionName: MakeSingleTupleTableSlot
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 19
    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:1446,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execTuples.c:1446,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1447,1
    - Dst: TupleTableSlot*::tts_ops::release
      Src: /src/postgres/src/backend/executor/execTuples.c:1448,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/executor/execTuples.c:1450,1
    - Dst: TTS_FIXED
      Src: /src/postgres/src/backend/executor/execTuples.c:1451,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1454,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1456,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1458,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1459
      start: 1442
    functionDepth: 1
    functionLinenumber: 1442
    functionLinenumberEnd: 1459
    functionName: ExecDropSingleTupleTableSlot
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 21
    functionsReached:
    - ReleaseTupleDesc
    - Assert
    - pfree
    - IsA
    - TTS_FIXED
    - TupleTableSlot*::tts_ops::release
    - ExecClearTuple
    linkageType: ''
    returnType: void
    signature: void ExecDropSingleTupleTableSlot(TupleTableSlot *slot)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1481,1
    - Dst: TTS_FIXED
      Src: /src/postgres/src/backend/executor/execTuples.c:1481,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1484,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/executor/execTuples.c:1491,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1494,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1496,1
    - Dst: PinTupleDesc
      Src: /src/postgres/src/backend/executor/execTuples.c:1502,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/execTuples.c:1509,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/execTuples.c:1511,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - slot
    - tupdesc
    argTypes:
    - TupleTableSlot*
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1512
      start: 1477
    functionDepth: 1
    functionLinenumber: 1477
    functionLinenumberEnd: 1512
    functionName: ExecSetSlotDescriptor
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - ReleaseTupleDesc
    - Assert
    - pfree
    - TTS_FIXED
    - PinTupleDesc
    - ExecClearTuple
    - MemoryContextAlloc
    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:1548,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1549,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1550,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execTuples.c:1552,1
    - Dst: TTS_IS_HEAPTUPLE
      Src: /src/postgres/src/backend/executor/execTuples.c:1552,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execTuples.c:1553,1
    - Dst: tts_heap_store_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1554,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - tuple
    - slot
    - shouldFree
    argTypes:
    - HeapTuple
    - TupleTableSlot*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1559
      start: 1540
    functionDepth: 4
    functionLinenumber: 1540
    functionLinenumberEnd: 1559
    functionName: ExecStoreHeapTuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 6
    functionsReached:
    - tts_heap_store_tuple
    - Assert
    - TTS_IS_HEAPTUPLE
    - elog
    - unlikely
    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:1588,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1589,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1590,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1591,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/executor/execTuples.c:1591,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execTuples.c:1593,1
    - Dst: TTS_IS_BUFFERTUPLE
      Src: /src/postgres/src/backend/executor/execTuples.c:1593,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execTuples.c:1594,1
    - Dst: tts_buffer_heap_store_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1595,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - tuple
    - slot
    - buffer
    argTypes:
    - HeapTuple
    - TupleTableSlot*
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1600
      start: 1580
    functionDepth: 3
    functionLinenumber: 1580
    functionLinenumberEnd: 1600
    functionName: ExecStoreBufferHeapTuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 7
    functionsReached:
    - Assert
    - BufferIsValid
    - TTS_IS_BUFFERTUPLE
    - tts_buffer_heap_store_tuple
    - elog
    - unlikely
    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:1614,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1615,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1616,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1617,1
    - Dst: BufferIsValid
      Src: /src/postgres/src/backend/executor/execTuples.c:1617,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execTuples.c:1619,1
    - Dst: TTS_IS_BUFFERTUPLE
      Src: /src/postgres/src/backend/executor/execTuples.c:1619,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execTuples.c:1620,1
    - Dst: tts_buffer_heap_store_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1621,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - tuple
    - slot
    - buffer
    argTypes:
    - HeapTuple
    - TupleTableSlot*
    - Buffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1626
      start: 1606
    functionDepth: 3
    functionLinenumber: 1606
    functionLinenumberEnd: 1626
    functionName: ExecStorePinnedBufferHeapTuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 2
    functionsReached:
    - Assert
    - BufferIsValid
    - TTS_IS_BUFFERTUPLE
    - tts_buffer_heap_store_tuple
    - elog
    - unlikely
    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:1642,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1643,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1644,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execTuples.c:1646,1
    - Dst: TTS_IS_MINIMALTUPLE
      Src: /src/postgres/src/backend/executor/execTuples.c:1646,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execTuples.c:1647,1
    - Dst: tts_minimal_store_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1648,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - mtup
    - slot
    - shouldFree
    argTypes:
    - MinimalTuple
    - TupleTableSlot*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1651
      start: 1634
    functionDepth: 4
    functionLinenumber: 1634
    functionLinenumberEnd: 1651
    functionName: ExecStoreMinimalTuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 5
    functionsReached:
    - Assert
    - tts_minimal_store_tuple
    - elog
    - 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:1662,1
    - Dst: ExecStoreHeapTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1664,1
    - Dst: TTS_IS_BUFFERTUPLE
      Src: /src/postgres/src/backend/executor/execTuples.c:1666,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1671,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execTuples.c:1673,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1674,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execTuples.c:1676,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1679,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1683,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1684,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1686,1
    - Dst: ExecMaterializeSlot
      Src: /src/postgres/src/backend/executor/execTuples.c:1690,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1691,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - tuple
    - slot
    - shouldFree
    argTypes:
    - HeapTuple
    - TupleTableSlot*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1694
      start: 1657
    functionDepth: 5
    functionLinenumber: 1657
    functionLinenumberEnd: 1694
    functionName: ExecForceStoreHeapTuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 1
    functionsReached:
    - ExecStoreHeapTuple
    - pfree
    - MemoryContextSwitchTo
    - TTS_IS_HEAPTUPLE
    - heap_deform_tuple
    - TTS_IS_BUFFERTUPLE
    - ExecStoreVirtualTuple
    - ExecMaterializeSlot
    - heap_copytuple
    - ExecClearTuple
    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:1705,1
    - Dst: tts_minimal_store_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1707,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1713,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1717,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1719,1
    - Dst: ExecMaterializeSlot
      Src: /src/postgres/src/backend/executor/execTuples.c:1723,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1724,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - mtup
    - slot
    - shouldFree
    argTypes:
    - MinimalTuple
    - TupleTableSlot*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1727
      start: 1700
    functionDepth: 4
    functionLinenumber: 1700
    functionLinenumberEnd: 1727
    functionName: ExecForceStoreMinimalTuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - pfree
    - tts_minimal_store_tuple
    - heap_deform_tuple
    - ExecStoreVirtualTuple
    - ExecMaterializeSlot
    - ExecClearTuple
    - 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:1746,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1747,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1748,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:1748,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1754
      start: 1740
    functionDepth: 1
    functionLinenumber: 1740
    functionLinenumberEnd: 1754
    functionName: ExecStoreVirtualTuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 13
    functionsReached:
    - TTS_EMPTY
    - Assert
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecStoreVirtualTuple(TupleTableSlot *slot)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1770,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1771,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1774,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/executor/execTuples.c:1779,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/execTuples.c:1781,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1784,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1785
      start: 1764
    functionDepth: 2
    functionLinenumber: 1764
    functionLinenumberEnd: 1785
    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:1800,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/executor/execTuples.c:1802,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1806,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1808,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1810,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - data
    - slot
    argTypes:
    - Datum
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1811
      start: 1794
    functionDepth: 4
    functionLinenumber: 1794
    functionLinenumberEnd: 1811
    functionName: ExecStoreHeapTupleDatum
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 1
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - DatumGetHeapTupleHeader
    - heap_deform_tuple
    - ExecStoreVirtualTuple
    - ExecClearTuple
    linkageType: ''
    returnType: void
    signature: void ExecStoreHeapTupleDatum(Datum data, TupleTableSlot *slot)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1838,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1839,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:1839,1
    - Dst: TupleTableSlot*::tts_ops::materialize
      Src: /src/postgres/src/backend/executor/execTuples.c:1843,1
    - Dst: TupleTableSlot*::tts_ops::copy_heap_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1849,1
    - Dst: TupleTableSlot*::tts_ops::get_heap_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1855,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - slot
    - materialize
    - shouldFree
    argTypes:
    - TupleTableSlot*
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1857
      start: 1832
    functionDepth: 1
    functionLinenumber: 1832
    functionLinenumberEnd: 1857
    functionName: ExecFetchSlotHeapTuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 10
    functionsReached:
    - Assert
    - TTS_EMPTY
    - TupleTableSlot*::tts_ops::get_heap_tuple
    - TupleTableSlot*::tts_ops::materialize
    - TupleTableSlot*::tts_ops::copy_heap_tuple
    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:1887,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:1888,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/execTuples.c:1888,1
    - Dst: TupleTableSlot*::tts_ops::get_minimal_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1894,1
    - Dst: TupleTableSlot*::tts_ops::copy_minimal_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:1900,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - slot
    - shouldFree
    argTypes:
    - TupleTableSlot*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1902
      start: 1880
    functionDepth: 1
    functionLinenumber: 1880
    functionLinenumberEnd: 1902
    functionName: ExecFetchSlotMinimalTuple
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 5
    functionsReached:
    - TupleTableSlot*::tts_ops::copy_minimal_tuple
    - TTS_EMPTY
    - Assert
    - 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:1920,1
    - Dst: heap_copy_tuple_as_datum
      Src: /src/postgres/src/backend/executor/execTuples.c:1924,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:1927,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1930
      start: 1911
    functionDepth: 4
    functionLinenumber: 1911
    functionLinenumberEnd: 1930
    functionName: ExecFetchSlotHeapTupleDatum
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 2
    functionsReached:
    - pfree
    - heap_copy_tuple_as_datum
    - ExecFetchSlotHeapTuple
    linkageType: ''
    returnType: Datum
    signature: Datum ExecFetchSlotHeapTupleDatum(TupleTableSlot *slot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecTypeFromTL
      Src: /src/postgres/src/backend/executor/execTuples.c:1946,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - planstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1949
      start: 1943
    functionDepth: 1
    functionLinenumber: 1943
    functionLinenumberEnd: 1949
    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:1972,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - planstate
    - tts_ops
    argTypes:
    - PlanState*
    - TupleTableSlotOps*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1979
      start: 1967
    functionDepth: 7
    functionLinenumber: 1967
    functionLinenumberEnd: 1979
    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:1991,1
    - Dst: ExecInitResultSlot
      Src: /src/postgres/src/backend/executor/execTuples.c:1992,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - planstate
    - tts_ops
    argTypes:
    - PlanState*
    - TupleTableSlotOps*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1993
      start: 1987
    functionDepth: 8
    functionLinenumber: 1987
    functionLinenumberEnd: 1993
    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:2003,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - estate
    - scanstate
    - tupledesc
    - tts_ops
    argTypes:
    - EState*
    - ScanState*
    - TupleDesc
    - TupleTableSlotOps*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2009
      start: 1999
    functionDepth: 7
    functionLinenumber: 1999
    functionLinenumberEnd: 2009
    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)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecAllocTableSlot
      Src: /src/postgres/src/backend/executor/execTuples.c:2024,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - estate
    - tupledesc
    - tts_ops
    argTypes:
    - EState*
    - TupleDesc
    - TupleTableSlotOps*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2025
      start: 2019
    functionDepth: 7
    functionLinenumber: 2019
    functionLinenumberEnd: 2025
    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:2039,1
    - Dst: ExecStoreAllNullTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:2041,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - estate
    - tupType
    - tts_ops
    argTypes:
    - EState*
    - TupleDesc
    - TupleTableSlotOps*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2042
      start: 2035
    functionDepth: 8
    functionLinenumber: 2035
    functionLinenumberEnd: 2042
    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: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/executor/execTuples.c:2067,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/execTuples.c:2069,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - slot
    - startAttNum
    - lastAttNum
    argTypes:
    - TupleTableSlot*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2085
      start: 2056
    functionDepth: 0
    functionLinenumber: 2056
    functionLinenumberEnd: 2085
    functionName: slot_getmissingattrs
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void slot_getmissingattrs(TupleTableSlot *slot, int startAttNum, int
      lastAttNum)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:2094,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:2095,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execTuples.c:2097,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execTuples.c:2098,1
    - Dst: TupleTableSlot*::tts_ops::getsomeattrs
      Src: /src/postgres/src/backend/executor/execTuples.c:2101,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execTuples.c:2107,1
    - Dst: slot_getmissingattrs
      Src: /src/postgres/src/backend/executor/execTuples.c:2109,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - slot
    - attnum
    argTypes:
    - TupleTableSlot*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2112
      start: 2090
    functionDepth: 1
    functionLinenumber: 2090
    functionLinenumberEnd: 2112
    functionName: slot_getsomeattrs_int
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 1
    functionsReached:
    - Assert
    - TupleTableSlot*::tts_ops::getsomeattrs
    - elog
    - unlikely
    - slot_getmissingattrs
    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:2129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - targetList
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2130
      start: 2126
    functionDepth: 1
    functionLinenumber: 2126
    functionLinenumberEnd: 2130
    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:2141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - targetList
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2142
      start: 2138
    functionDepth: 1
    functionLinenumber: 2138
    functionLinenumberEnd: 2142
    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:2153,1
    - Dst: ExecTargetListLength
      Src: /src/postgres/src/backend/executor/execTuples.c:2155,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/executor/execTuples.c:2156,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execTuples.c:2160,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/executor/execTuples.c:2164,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execTuples.c:2167,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/executor/execTuples.c:2168,1
    - Dst: TupleDescInitEntryCollation
      Src: /src/postgres/src/backend/executor/execTuples.c:2170,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/executor/execTuples.c:2172,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - targetList
    - skipjunk
    argTypes:
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2177
      start: 2144
    functionDepth: 4
    functionLinenumber: 2144
    functionLinenumberEnd: 2177
    functionName: ExecTypeFromTLInternal
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 2
    functionsReached:
    - ExecCleanTargetListLength
    - exprType
    - exprCollation
    - exprTypmod
    - TupleDescInitEntryCollation
    - TupleDescInitEntry
    - ExecTargetListLength
    - CreateTemplateTupleDesc
    - lfirst
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc ExecTypeFromTLInternal(List *targetList, bool skipjunk)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execTuples.c:2160,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/executor/execTuples.c:2164,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execTuples.c:2167,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/executor/execTuples.c:2168,1
    - Dst: TupleDescInitEntryCollation
      Src: /src/postgres/src/backend/executor/execTuples.c:2170,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/executor/execTuples.c:2172,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2174
      start: 2158
    functionDepth: 4
    functionLinenumber: 2158
    functionLinenumberEnd: 2174
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 398
    functionsReached:
    - exprType
    - exprCollation
    - exprTypmod
    - TupleDescInitEntryCollation
    - TupleDescInitEntry
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, targetList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/executor/execTuples.c:2192,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execTuples.c:2192,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execTuples.c:2196,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/executor/execTuples.c:2198,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execTuples.c:2201,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/executor/execTuples.c:2202,1
    - Dst: TupleDescInitEntryCollation
      Src: /src/postgres/src/backend/executor/execTuples.c:2204,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/executor/execTuples.c:2206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - exprList
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2211
      start: 2185
    functionDepth: 4
    functionLinenumber: 2185
    functionLinenumberEnd: 2211
    functionName: ExecTypeFromExprList
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 1
    functionsReached:
    - exprType
    - exprCollation
    - exprTypmod
    - list_length
    - TupleDescInitEntryCollation
    - TupleDescInitEntry
    - CreateTemplateTupleDesc
    - lfirst
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc ExecTypeFromExprList(List *exprList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execTuples.c:2196,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/executor/execTuples.c:2198,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execTuples.c:2201,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/executor/execTuples.c:2202,1
    - Dst: TupleDescInitEntryCollation
      Src: /src/postgres/src/backend/executor/execTuples.c:2204,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/executor/execTuples.c:2206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2208
      start: 2194
    functionDepth: 4
    functionLinenumber: 2194
    functionLinenumberEnd: 2208
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 398
    functionsReached:
    - exprType
    - exprCollation
    - exprTypmod
    - TupleDescInitEntryCollation
    - TupleDescInitEntry
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, exprList)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:2225,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execTuples.c:2226,1
    - Dst: strVal
      Src: /src/postgres/src/backend/executor/execTuples.c:2230,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execTuples.c:2230,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execTuples.c:2236,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/executor/execTuples.c:2247,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - typeInfo
    - namesList
    argTypes:
    - TupleDesc
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2249
      start: 2218
    functionDepth: 2
    functionLinenumber: 2218
    functionLinenumberEnd: 2249
    functionName: ExecTypeSetColNames
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 1
    functionsReached:
    - Assert
    - namestrcpy
    - TupleDescAttr
    - strVal
    - lfirst
    linkageType: ''
    returnType: void
    signature: void ExecTypeSetColNames(TupleDesc typeInfo, List *namesList)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strVal
      Src: /src/postgres/src/backend/executor/execTuples.c:2230,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execTuples.c:2230,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execTuples.c:2236,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/executor/execTuples.c:2247,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2248
      start: 2228
    functionDepth: 2
    functionLinenumber: 2228
    functionLinenumberEnd: 2248
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 398
    functionsReached:
    - lfirst
    - TupleDescAttr
    - namestrcpy
    - strVal
    linkageType: ''
    returnType: void
    signature: void foreach(lc, namesList)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assign_record_type_typmod
      Src: /src/postgres/src/backend/executor/execTuples.c:2264,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - tupdesc
    argTypes:
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2267
      start: 2259
    functionDepth: 1
    functionLinenumber: 2259
    functionLinenumberEnd: 2267
    functionName: BlessTupleDesc
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 11
    functionsReached:
    - assign_record_type_typmod
    linkageType: ''
    returnType: TupleDesc
    signature: TupleDesc BlessTupleDesc(TupleDesc tupdesc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execTuples.c:2286,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/backend/executor/execTuples.c:2289,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execTuples.c:2294,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execTuples.c:2295,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execTuples.c:2296,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execTuples.c:2300,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/executor/execTuples.c:2306,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/execTuples.c:2307,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - tupdesc
    argTypes:
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2316
      start: 2274
    functionDepth: 2
    functionLinenumber: 2274
    functionLinenumberEnd: 2316
    functionName: TupleDescGetAttInMetadata
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 8
    functionsReached:
    - getTypeInputInfo
    - BlessTupleDesc
    - TupleDescAttr
    - fmgr_info
    - palloc0
    - palloc
    linkageType: ''
    returnType: AttInMetadata
    signature: 'AttInMetadata *

      TupleDescGetAttInMetadata(TupleDesc tupdesc)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execTuples.c:2333,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execTuples.c:2334,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/execTuples.c:2342,1
    - Dst: InputFunctionCall
      Src: /src/postgres/src/backend/executor/execTuples.c:2345,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/executor/execTuples.c:2365,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:2371,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:2372,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - attinmeta
    - values
    argTypes:
    - AttInMetadata*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2375
      start: 2323
    functionDepth: 5
    functionLinenumber: 2323
    functionLinenumberEnd: 2375
    functionName: BuildTupleFromCStrings
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 5
    functionsReached:
    - heap_form_tuple
    - pfree
    - InputFunctionCall
    - TupleDescCompactAttr
    - palloc
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple BuildTupleFromCStrings(AttInMetadata *attinmeta, char **values)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleHeaderHasExternal
      Src: /src/postgres/src/backend/executor/execTuples.c:2419,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execTuples.c:2420,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/executor/execTuples.c:2423,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/executor/execTuples.c:2423,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/executor/execTuples.c:2424,1
    - Dst: toast_flatten_tuple_to_datum
      Src: /src/postgres/src/backend/executor/execTuples.c:2427,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/executor/execTuples.c:2428,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/executor/execTuples.c:2431,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTupleHeader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2434
      start: 2412
    functionDepth: 3
    functionLinenumber: 2412
    functionLinenumberEnd: 2434
    functionName: HeapTupleHeaderGetDatum
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 1
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - ReleaseTupleDesc
    - toast_flatten_tuple_to_datum
    - lookup_rowtype_tupdesc
    - PointerGetDatum
    - HeapTupleHeaderGetTypeId
    - HeapTupleHeaderHasExternal
    - HeapTupleHeaderGetTypMod
    linkageType: ''
    returnType: Datum
    signature: Datum HeapTupleHeaderGetDatum(HeapTupleHeader tuple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execTuples.c:2450,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/execTuples.c:2452,1
    - Dst: TupOutputState*::dest::rStartup
      Src: /src/postgres/src/backend/executor/execTuples.c:2455,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - dest
    - tupdesc
    - tts_ops
    argTypes:
    - DestReceiver*
    - TupleDesc
    - TupleTableSlotOps*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2458
      start: 2443
    functionDepth: 3
    functionLinenumber: 2443
    functionLinenumberEnd: 2458
    functionName: begin_tup_output_tupdesc
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 6
    functionsReached:
    - MakeSingleTupleTableSlot
    - TupOutputState*::dest::rStartup
    - palloc
    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:2470,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execTuples.c:2473,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execTuples.c:2474,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:2477,1
    - Dst: TupOutputState*::dest::receiveSlot
      Src: /src/postgres/src/backend/executor/execTuples.c:2480,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execTuples.c:2483,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - tstate
    - values
    - isnull
    argTypes:
    - TupOutputState*
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2484
      start: 2463
    functionDepth: 2
    functionLinenumber: 2463
    functionLinenumberEnd: 2484
    functionName: do_tup_output
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 7
    functionsReached:
    - ExecClearTuple
    - memcpy
    - ExecStoreVirtualTuple
    - TupOutputState*::dest::receiveSlot
    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:2502,1
    - Dst: strlen
      Src: /src/postgres/src/backend/executor/execTuples.c:2510,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execTuples.c:2514,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/executor/execTuples.c:2514,1
    - Dst: do_tup_output
      Src: /src/postgres/src/backend/executor/execTuples.c:2515,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:2516,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execTuples.c:2516,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - tstate
    - txt
    argTypes:
    - TupOutputState*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2519
      start: 2491
    functionDepth: 3
    functionLinenumber: 2491
    functionLinenumberEnd: 2519
    functionName: do_text_output_multiline
    functionSourceFile: /src/postgres/src/backend/executor/execTuples.c
    functionUses: 0
    functionsReached:
    - pfree
    - strchr
    - PointerGetDatum
    - do_tup_output
    - DatumGetPointer
    - strlen
    - cstring_to_text_with_len
    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:2524,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/execTuples.c:2526,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execTuples.c:2527,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - tstate
    argTypes:
    - TupOutputState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2528
      start: 2521
    functionDepth: 2
    functionLinenumber: 2521
    functionLinenumberEnd: 2528
    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:
    - CHECK_FOR_INTERRUPTS
    - castNode
    - tuplesort_begin_heap
    - ScanDirectionIsForward
    - tuplesort_get_stats
    - TupIsNull
    - ExecStoreVirtualTuple
    - IsParallelWorker
    - ExecGetResultType
    - tuplesort_begin_datum
    - ExecClearTuple
    - slot_getsomeattrs
    - tuplesort_gettupleslot
    - TupleDescAttr
    - SO1_printf
    - tuplesort_getdatum
    - outerPlanState
    - tuplesort_puttupleslot
    - Assert
    - ExecProcNode
    - tuplesort_putdatum
    - tuplesort_performsort
    - tuplesort_set_bound
    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:
    - ExecInitResultTupleSlotTL
    - ExecCreateScanSlotFromOuterPlan
    - ExecInitNode
    - SO1_printf
    - ExecGetResultType
    - outerPlan
    - outerPlanState
    - makeNode
    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
    - outerPlanState
    - tuplesort_end
    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:
    - tuplesort_rescan
    - outerPlanState
    - ExecReScan
    - ExecClearTuple
    - 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:
    - mul_size
    - shm_toc_estimate_chunk
    - shm_toc_estimate_keys
    - add_size
    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:
    - memset
    - shm_toc_allocate
    - shm_toc_insert
    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:94,1
    - Dst: tuplestore_rescan
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:105,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:111,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:112,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:125,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:137,1
    - Dst: ExecMakeTableFunctionResult
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:153,1
    - Dst: tuplestore_rescan
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:164,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:175,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:177,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:178,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:182,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:191,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:209,1
    - Dst: Int64GetDatumFast
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:231,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:240,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 52
    argCount: 1
    argNames:
    - node
    argTypes:
    - FunctionScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 58
    functionDepth: 5
    functionLinenumber: 58
    functionLinenumberEnd: 243
    functionName: FunctionNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeFunctionscan.c
    functionUses: 0
    functionsReached:
    - TupIsNull
    - slot_getallattrs
    - Int64GetDatumFast
    - tuplestore_gettupleslot
    - ExecStoreVirtualTuple
    - ExecClearTuple
    - tuplestore_rescan
    - ScanDirectionIsForward
    - ExecMakeTableFunctionResult
    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: 253
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 253
    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:267,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 272
    functionName: ExecFunctionScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeFunctionscan.c
    functionUses: 0
    functionsReached:
    - ExecScan
    - castNode
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecFunctionScan(PlanState *pstate)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:282,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:289,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:294,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:294,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:295,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:295,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:300,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:334,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:336,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:340,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:342,1
    - Dst: ExecInitTableFunctionResult
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:349,1
    - Dst: BuildDescFromLists
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:375,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:385,1
    - Dst: get_expr_result_type
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:392,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:400,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:402,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:407,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:408,1
    - Dst: TupleDescInitEntryCollation
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:414,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:416,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:421,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:435,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:454,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:465,1
    - Dst: TupleDescCopyEntry
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:474,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:480,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:488,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:494,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:500,1
    - Dst: ExecAssignScanProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:501,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:507,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:516,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 72
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - FunctionScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 278
    functionDepth: 8
    functionLinenumber: 278
    functionLinenumberEnd: 521
    functionName: ExecInitFunctionScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeFunctionscan.c
    functionUses: 0
    functionsReached:
    - CreateTupleDescCopy
    - BuildDescFromLists
    - list_length
    - ExecInitResultTypeTL
    - makeNode
    - ExecAssignExprContext
    - foreach
    - get_expr_result_type
    - ExecInitQual
    - ExecInitTableFunctionResult
    - CreateTemplateTupleDesc
    - TupleDescCopyEntry
    - ExecInitExtraTupleSlot
    - TupleDescInitEntryCollation
    - TupleDescInitEntry
    - elog
    - outerPlan
    - ExecAssignScanProjectionInfo
    - palloc
    - lfirst
    - Assert
    - exprCollation
    - ExecInitScanTupleSlot
    - BlessTupleDesc
    - AllocSetContextCreate
    - 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:543,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - FunctionScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 529
    functionDepth: 1
    functionLinenumber: 529
    functionLinenumberEnd: 547
    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:563,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:569,1
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:572,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:587,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:589,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:591,1
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:595,1
    - Dst: tuplestore_rescan
      Src: /src/postgres/src/backend/executor/nodeFunctionscan.c:611,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 1
    argNames:
    - node
    argTypes:
    - FunctionScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 555
    functionDepth: 4
    functionLinenumber: 555
    functionLinenumberEnd: 613
    functionName: ExecReScanFunctionScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeFunctionscan.c
    functionUses: 0
    functionsReached:
    - bms_overlap
    - tuplestore_end
    - foreach
    - ExecClearTuple
    - tuplestore_rescan
    - lfirst
    - ExecScanReScan
    linkageType: ''
    returnType: void
    signature: void ExecReScanFunctionScan(FunctionScanState *node)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:41,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:49,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:56,1
    - Dst: tuplestore_begin_heap
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:64,1
    - Dst: tuplestore_set_eflags
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:65,1
    - Dst: tuplestore_alloc_read_pointer
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:74,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:76,1
    - Dst: tuplestore_ateof
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:86,1
    - Dst: tuplestore_advance
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:98,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:110,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:133,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:134,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:135,1
    - Dst: tuplestore_puttupleslot
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:147,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:149,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:156,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 43
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 38
    functionDepth: 2
    functionLinenumber: 38
    functionLinenumberEnd: 157
    functionName: ExecMaterial
    functionSourceFile: /src/postgres/src/backend/executor/nodeMaterial.c
    functionUses: 0
    functionsReached:
    - Assert
    - tuplestore_alloc_read_pointer
    - CHECK_FOR_INTERRUPTS
    - ExecProcNode
    - TupIsNull
    - tuplestore_begin_heap
    - tuplestore_ateof
    - tuplestore_set_eflags
    - castNode
    - tuplestore_gettupleslot
    - tuplestore_advance
    - outerPlanState
    - ExecCopySlot
    - ExecClearTuple
    - tuplestore_puttupleslot
    - ScanDirectionIsForward
    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:172,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:215,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:216,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:216,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:224,1
    - Dst: ExecCreateScanSlotFromOuterPlan
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:230,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - Material*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 163
    functionDepth: 9
    functionLinenumber: 163
    functionLinenumberEnd: 233
    functionName: ExecInitMaterial
    functionSourceFile: /src/postgres/src/backend/executor/nodeMaterial.c
    functionUses: 0
    functionsReached:
    - ExecInitResultTupleSlotTL
    - ExecCreateScanSlotFromOuterPlan
    - ExecInitNode
    - outerPlan
    - outerPlanState
    - makeNode
    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:246,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:252,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:252,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - MaterialState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 239
    functionDepth: 1
    functionLinenumber: 239
    functionLinenumberEnd: 253
    functionName: ExecEndMaterial
    functionSourceFile: /src/postgres/src/backend/executor/nodeMaterial.c
    functionUses: 0
    functionsReached:
    - tuplestore_end
    - ExecEndNode
    - outerPlanState
    linkageType: ''
    returnType: void
    signature: void ExecEndMaterial(MaterialState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:264,1
    - Dst: tuplestore_copy_read_pointer
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:275,1
    - Dst: tuplestore_trim
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - MaterialState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 281
    functionName: ExecMaterialMarkPos
    functionSourceFile: /src/postgres/src/backend/executor/nodeMaterial.c
    functionUses: 0
    functionsReached:
    - Assert
    - tuplestore_copy_read_pointer
    - tuplestore_trim
    linkageType: ''
    returnType: void
    signature: void ExecMaterialMarkPos(MaterialState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:292,1
    - Dst: tuplestore_copy_read_pointer
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:303,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - MaterialState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 304
    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:315,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:317,1
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:342,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:345,1
    - Dst: tuplestore_rescan
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:349,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeMaterial.c:360,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - node
    argTypes:
    - MaterialState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 312
    functionDepth: 1
    functionLinenumber: 312
    functionLinenumberEnd: 363
    functionName: ExecReScanMaterial
    functionSourceFile: /src/postgres/src/backend/executor/nodeMaterial.c
    functionUses: 0
    functionsReached:
    - tuplestore_end
    - outerPlanState
    - ExecReScan
    - ExecClearTuple
    - tuplestore_rescan
    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:
    - ExecInitScanTupleSlot
    - ExecAssignExprContext
    - CustomScanState*::methods::BeginCustomScan
    - ExecInitResultTupleSlotTL
    - ExecOpenScanRelation
    - ExecTypeFromTL
    - RelationGetDescr
    - CustomScan*::methods::CreateCustomScanState
    - castNode
    - ExecInitQual
    - ExecAssignScanProjectionInfoWithVarno
    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
    - CHECK_FOR_INTERRUPTS
    - CustomScanState*::methods::ExecCustomScan
    - castNode
    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:
    - errmsg
    - CustomScanState*::methods::MarkPosCustomScan
    - errcode
    - ereport
    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:
    - errmsg
    - CustomScanState*::methods::RestrPosCustomScan
    - errcode
    - ereport
    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_keys
    - shm_toc_estimate_chunk
    - 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:
    - CustomExecMethods*::InitializeDSMCustomScan
    - shm_toc_allocate
    - shm_toc_insert
    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:97,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:105,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execUtils.c:107,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 174
    functionName: CreateExecutorState
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 13
    functionsReached:
    - makeNode
    - MemoryContextSwitchTo
    - AllocSetContextCreate
    linkageType: ''
    returnType: EState
    signature: 'EState *

      CreateExecutorState(void)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FreeExprContext
      Src: /src/postgres/src/backend/executor/execUtils.c:206,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/execUtils.c:206,1
    - Dst: jit_release_context
      Src: /src/postgres/src/backend/executor/execUtils.c:214,1
    - Dst: DestroyPartitionDirectory
      Src: /src/postgres/src/backend/executor/execUtils.c:221,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/execUtils.c:229,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - estate
    argTypes:
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 230
    functionName: FreeExecutorState
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 12
    functionsReached:
    - MemoryContextDelete
    - linitial
    - FreeExprContext
    - DestroyPartitionDirectory
    - jit_release_context
    linkageType: ''
    returnType: void
    signature: void FreeExecutorState(EState *estate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:244,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execUtils.c:246,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/execUtils.c:259,1
    - Dst: lcons
      Src: /src/postgres/src/backend/executor/execUtils.c:286,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 4
    argNames:
    - estate
    - minContextSize
    - initBlockSize
    - maxBlockSize
    argTypes:
    - EState*
    - Size
    - Size
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 236
    functionDepth: 6
    functionLinenumber: 236
    functionLinenumberEnd: 291
    functionName: CreateExprContextInternal
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 0
    functionsReached:
    - makeNode
    - MemoryContextSwitchTo
    - lcons
    - AllocSetContextCreate
    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:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - estate
    argTypes:
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 306
    functionDepth: 7
    functionLinenumber: 306
    functionLinenumberEnd: 310
    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:326,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/execUtils.c:329,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/execUtils.c:332,1
    - Dst: CreateExprContextInternal
      Src: /src/postgres/src/backend/executor/execUtils.c:334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - estate
    argTypes:
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 321
    functionDepth: 7
    functionLinenumber: 321
    functionLinenumberEnd: 336
    functionName: CreateWorkExprContext
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 0
    functionsReached:
    - CreateExprContextInternal
    - pg_prevpower2_size_t
    - Max
    - Min
    linkageType: ''
    returnType: ExprContext
    signature: 'ExprContext *

      CreateWorkExprContext(EState *estate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execUtils.c:362,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/execUtils.c:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 396
    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:421,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/execUtils.c:423,1
    - Dst: list_delete_ptr
      Src: /src/postgres/src/backend/executor/execUtils.c:427,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execUtils.c:430,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - econtext
    - isCommit
    argTypes:
    - ExprContext*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 415
    functionDepth: 5
    functionLinenumber: 415
    functionLinenumberEnd: 431
    functionName: FreeExprContext
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 3
    functionsReached:
    - list_delete_ptr
    - ShutdownExprContext
    - MemoryContextDelete
    - pfree
    linkageType: ''
    returnType: void
    signature: void FreeExprContext(ExprContext *econtext, bool isCommit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ShutdownExprContext
      Src: /src/postgres/src/backend/executor/execUtils.c:446,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/execUtils.c:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - econtext
    argTypes:
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 442
    functionDepth: 1
    functionLinenumber: 442
    functionLinenumberEnd: 449
    functionName: ReScanExprContext
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 0
    functionsReached:
    - MemoryContextReset
    - ShutdownExprContext
    linkageType: ''
    returnType: void
    signature: void ReScanExprContext(ExprContext *econtext)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CreateExprContext
      Src: /src/postgres/src/backend/executor/execUtils.c:461,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - estate
    argTypes:
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 457
    functionDepth: 8
    functionLinenumber: 457
    functionLinenumberEnd: 464
    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:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - estate
    - planstate
    argTypes:
    - EState*
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 484
    functionDepth: 8
    functionLinenumber: 484
    functionLinenumberEnd: 488
    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: 498
      start: 494
    functionDepth: 0
    functionLinenumber: 494
    functionLinenumberEnd: 498
    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:518,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - planstate
    - isfixed
    argTypes:
    - PlanState*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 503
    functionDepth: 1
    functionLinenumber: 503
    functionLinenumberEnd: 527
    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:543,1
    - Dst: ExecGetResultSlotOps
      Src: /src/postgres/src/backend/executor/execUtils.c:550,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - planstates
    - nplans
    argTypes:
    - PlanState**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 535
    functionDepth: 2
    functionLinenumber: 535
    functionLinenumberEnd: 557
    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:567,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/execUtils.c:568,1
    - Dst: ExecGetCommonSlotOps
      Src: /src/postgres/src/backend/executor/execUtils.c:569,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ps
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 562
    functionDepth: 3
    functionLinenumber: 562
    functionLinenumberEnd: 570
    functionName: ExecGetCommonChildSlotOps
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 1
    functionsReached:
    - innerPlanState
    - outerPlanState
    - ExecGetCommonSlotOps
    linkageType: ''
    returnType: TupleTableSlotOps
    signature: 'TupleTableSlotOps *

      ExecGetCommonChildSlotOps(PlanState *ps)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecBuildProjectionInfo
      Src: /src/postgres/src/backend/executor/execUtils.c:587,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - planstate
    - inputDesc
    argTypes:
    - PlanState*
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 582
    functionDepth: 3
    functionLinenumber: 582
    functionLinenumberEnd: 592
    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:606,1
    - Dst: ExecInitResultSlot
      Src: /src/postgres/src/backend/executor/execUtils.c:620,1
    - Dst: ExecAssignProjectionInfo
      Src: /src/postgres/src/backend/executor/execUtils.c:625,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - planstate
    - inputDesc
    - varno
    argTypes:
    - PlanState*
    - TupleDesc
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 602
    functionDepth: 8
    functionLinenumber: 602
    functionLinenumberEnd: 627
    functionName: ExecConditionalAssignProjectionInfo
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 2
    functionsReached:
    - ExecAssignProjectionInfo
    - tlist_matches_tupdesc
    - ExecInitResultSlot
    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:634,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execUtils.c:639,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execUtils.c:644,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execUtils.c:645,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execUtils.c:648,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execUtils.c:649,1
    - Dst: lnext
      Src: /src/postgres/src/backend/executor/execUtils.c:672,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 22
    argCount: 4
    argNames:
    - ps
    - tlist
    - varno
    - tupdesc
    argTypes:
    - PlanState*
    - List*
    - int
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 629
    functionDepth: 2
    functionLinenumber: 629
    functionLinenumberEnd: 679
    functionName: tlist_matches_tupdesc
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 1
    functionsReached:
    - Assert
    - TupleDescAttr
    - list_head
    - IsA
    - lnext
    - lfirst
    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:696,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - scanstate
    - tupDesc
    argTypes:
    - ScanState*
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 691
    functionDepth: 2
    functionLinenumber: 691
    functionLinenumberEnd: 697
    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:711,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/execUtils.c:712,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/execUtils.c:714,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - estate
    - scanstate
    - tts_ops
    argTypes:
    - EState*
    - ScanState*
    - TupleTableSlotOps*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 703
    functionDepth: 8
    functionLinenumber: 703
    functionLinenumberEnd: 715
    functionName: ExecCreateScanSlotFromOuterPlan
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 3
    functionsReached:
    - ExecInitScanTupleSlot
    - ExecGetResultType
    - outerPlanState
    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: list_member_int
      Src: /src/postgres/src/backend/executor/execUtils.c:731,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - estate
    - scanrelid
    argTypes:
    - EState*
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 728
    functionDepth: 3
    functionLinenumber: 728
    functionLinenumberEnd: 732
    functionName: ExecRelationIsTargetRelation
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 0
    functionsReached:
    - list_member_int
    linkageType: ''
    returnType: bool
    signature: bool ExecRelationIsTargetRelation(EState *estate, Index scanrelid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecGetRangeTableRelation
      Src: /src/postgres/src/backend/executor/execUtils.c:747,1
    - Dst: RelationIsScannable
      Src: /src/postgres/src/backend/executor/execUtils.c:755,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execUtils.c:756,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execUtils.c:757,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execUtils.c:758,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execUtils.c:759,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/execUtils.c:760,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - estate
    - scanrelid
    - eflags
    argTypes:
    - EState*
    - Index
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 741
    functionDepth: 1
    functionLinenumber: 741
    functionLinenumberEnd: 763
    functionName: ExecOpenScanRelation
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 7
    functionsReached:
    - errmsg
    - ExecGetRangeTableRelation
    - ereport
    - errhint
    - RelationIsScannable
    - RelationGetRelationName
    - errcode
    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:783,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execUtils.c:800,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: 808
      start: 772
    functionDepth: 1
    functionLinenumber: 772
    functionLinenumberEnd: 808
    functionName: ExecInitRangeTable
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 3
    functionsReached:
    - palloc0
    - list_length
    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:829,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execUtils.c:831,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execUtils.c:832,1
    - Dst: exec_rt_fetch
      Src: /src/postgres/src/backend/executor/execUtils.c:838,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execUtils.c:840,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/executor/execUtils.c:842,1
    - Dst: table_open
      Src: /src/postgres/src/backend/executor/execUtils.c:851,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execUtils.c:852,1
    - Dst: CheckRelationLockedByMe
      Src: /src/postgres/src/backend/executor/execUtils.c:853,1
    - Dst: table_open
      Src: /src/postgres/src/backend/executor/execUtils.c:862,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 3
    argNames:
    - estate
    - rti
    - isResultRel
    argTypes:
    - EState*
    - Index
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 824
    functionDepth: 4
    functionLinenumber: 824
    functionLinenumberEnd: 869
    functionName: ExecGetRangeTableRelation
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 2
    functionsReached:
    - CheckRelationLockedByMe
    - Assert
    - table_open
    - exec_rt_fetch
    - IsParallelWorker
    - elog
    - bms_is_member
    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:885,1
    - Dst: InitResultRelInfo
      Src: /src/postgres/src/backend/executor/execUtils.c:886,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execUtils.c:894,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execUtils.c:902,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - estate
    - resultRelInfo
    - rti
    argTypes:
    - EState*
    - ResultRelInfo*
    - Index
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 879
    functionDepth: 6
    functionLinenumber: 879
    functionLinenumberEnd: 903
    functionName: ExecInitResultRelation
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 0
    functionsReached:
    - lappend
    - InitResultRelInfo
    - ExecGetRangeTableRelation
    - palloc0
    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:918,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/executor/execUtils.c:919,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - newchg
    argTypes:
    - PlanState*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 909
    functionDepth: 4
    functionLinenumber: 909
    functionLinenumberEnd: 920
    functionName: UpdateChangedParamSet
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 2
    functionsReached:
    - bms_join
    - bms_intersect
    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:947,1
    - Dst: errposition
      Src: /src/postgres/src/backend/executor/execUtils.c:949,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - estate
    - location
    argTypes:
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 935
    functionDepth: 1
    functionLinenumber: 935
    functionLinenumberEnd: 950
    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:971,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - econtext
    - function
    - arg
    argTypes:
    - ExprContext*
    - ExprContextCallbackFunction
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 962
    functionDepth: 1
    functionLinenumber: 962
    functionLinenumberEnd: 980
    functionName: RegisterExprContextCallback
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 3
    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:1003,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - econtext
    - function
    - arg
    argTypes:
    - ExprContext*
    - ExprContextCallbackFunction
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1008
      start: 988
    functionDepth: 0
    functionLinenumber: 988
    functionLinenumberEnd: 1008
    functionName: UnregisterExprContextCallback
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 1
    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:1033,1
    - Dst: ExprContext_CB*::function
      Src: /src/postgres/src/backend/executor/execUtils.c:1042,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execUtils.c:1043,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:1046,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - econtext
    - isCommit
    argTypes:
    - ExprContext*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1019
    functionDepth: 1
    functionLinenumber: 1019
    functionLinenumberEnd: 1047
    functionName: ShutdownExprContext
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 2
    functionsReached:
    - pfree
    - MemoryContextSwitchTo
    - ExprContext_CB*::function
    linkageType: ''
    returnType: void
    signature: void ShutdownExprContext(ExprContext *econtext, bool isCommit)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execUtils.c:1072,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execUtils.c:1075,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/executor/execUtils.c:1084,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/executor/execUtils.c:1085,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/executor/execUtils.c:1086,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execUtils.c:1091,1
    - Dst: namestrcmp
      Src: /src/postgres/src/backend/executor/execUtils.c:1093,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execUtils.c:1101,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/executor/execUtils.c:1108,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/executor/execUtils.c:1109,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/executor/execUtils.c:1113,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/executor/execUtils.c:1118,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 3
    argNames:
    - tuple
    - attname
    - isNull
    argTypes:
    - HeapTupleHeader
    - char*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1121
      start: 1060
    functionDepth: 4
    functionLinenumber: 1060
    functionLinenumberEnd: 1121
    functionName: GetAttributeByName
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 2
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - ReleaseTupleDesc
    - namestrcmp
    - heap_getattr
    - TupleDescAttr
    - ItemPointerSetInvalid
    - lookup_rowtype_tupdesc
    - elog
    - HeapTupleHeaderGetTypeId
    - HeapTupleHeaderGetTypMod
    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:1134,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execUtils.c:1135,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execUtils.c:1138,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/executor/execUtils.c:1147,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/executor/execUtils.c:1148,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/executor/execUtils.c:1149,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/executor/execUtils.c:1156,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/executor/execUtils.c:1157,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/executor/execUtils.c:1161,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/executor/execUtils.c:1166,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - tuple
    - attrno
    - isNull
    argTypes:
    - HeapTupleHeader
    - AttrNumber
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1169
      start: 1123
    functionDepth: 4
    functionLinenumber: 1123
    functionLinenumberEnd: 1169
    functionName: GetAttributeByNum
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - ReleaseTupleDesc
    - heap_getattr
    - ItemPointerSetInvalid
    - lookup_rowtype_tupdesc
    - elog
    - HeapTupleHeaderGetTypMod
    - HeapTupleHeaderGetTypeId
    - AttributeNumberIsValid
    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:1178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - targetlist
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1179
      start: 1174
    functionDepth: 1
    functionLinenumber: 1174
    functionLinenumberEnd: 1179
    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:1192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - targetlist
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1198
      start: 1184
    functionDepth: 1
    functionLinenumber: 1184
    functionLinenumberEnd: 1198
    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:1192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1196
      start: 1190
    functionDepth: 1
    functionLinenumber: 1190
    functionLinenumberEnd: 1196
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 400
    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:1209,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/execUtils.c:1212,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execUtils.c:1213,1
    - Dst: table_slot_callbacks
      Src: /src/postgres/src/backend/executor/execUtils.c:1214,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:1216,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - estate
    - relInfo
    argTypes:
    - EState*
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1203
    functionDepth: 8
    functionLinenumber: 1203
    functionLinenumberEnd: 1220
    functionName: ExecGetTriggerOldSlot
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 0
    functionsReached:
    - table_slot_callbacks
    - ExecInitExtraTupleSlot
    - MemoryContextSwitchTo
    - RelationGetDescr
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecGetTriggerOldSlot(EState *estate, ResultRelInfo *relInfo)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:1231,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/execUtils.c:1234,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execUtils.c:1235,1
    - Dst: table_slot_callbacks
      Src: /src/postgres/src/backend/executor/execUtils.c:1236,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:1238,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - estate
    - relInfo
    argTypes:
    - EState*
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1242
      start: 1225
    functionDepth: 8
    functionLinenumber: 1225
    functionLinenumberEnd: 1242
    functionName: ExecGetTriggerNewSlot
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 0
    functionsReached:
    - table_slot_callbacks
    - ExecInitExtraTupleSlot
    - MemoryContextSwitchTo
    - RelationGetDescr
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecGetTriggerNewSlot(EState *estate, ResultRelInfo *relInfo)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:1253,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/execUtils.c:1256,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execUtils.c:1257,1
    - Dst: table_slot_callbacks
      Src: /src/postgres/src/backend/executor/execUtils.c:1258,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:1260,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - estate
    - relInfo
    argTypes:
    - EState*
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1264
      start: 1247
    functionDepth: 8
    functionLinenumber: 1247
    functionLinenumberEnd: 1264
    functionName: ExecGetReturningSlot
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 0
    functionsReached:
    - table_slot_callbacks
    - ExecInitExtraTupleSlot
    - MemoryContextSwitchTo
    - RelationGetDescr
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecGetReturningSlot(EState *estate, ResultRelInfo *relInfo)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:1278,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/execUtils.c:1281,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execUtils.c:1282,1
    - Dst: table_slot_callbacks
      Src: /src/postgres/src/backend/executor/execUtils.c:1283,1
    - Dst: ExecStoreAllNullTuple
      Src: /src/postgres/src/backend/executor/execUtils.c:1284,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:1288,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - estate
    - relInfo
    argTypes:
    - EState*
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1292
      start: 1272
    functionDepth: 8
    functionLinenumber: 1272
    functionLinenumberEnd: 1292
    functionName: ExecGetAllNullSlot
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - ExecInitExtraTupleSlot
    - RelationGetDescr
    - table_slot_callbacks
    - 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:1309,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execUtils.c:1309,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execUtils.c:1310,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - resultRelInfo
    argTypes:
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1318
      start: 1299
    functionDepth: 5
    functionLinenumber: 1299
    functionLinenumberEnd: 1318
    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:1329,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
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:1346,1
    - Dst: build_attrmap_by_name_if_req
      Src: /src/postgres/src/backend/executor/execUtils.c:1347,1
    - Dst: convert_tuples_by_name_attrmap
      Src: /src/postgres/src/backend/executor/execUtils.c:1351,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:1352,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - resultRelInfo
    - estate
    argTypes:
    - ResultRelInfo*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1357
      start: 1325
    functionDepth: 4
    functionLinenumber: 1325
    functionLinenumberEnd: 1357
    functionName: ExecGetRootToChildMap
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - convert_tuples_by_name_attrmap
    - RelationGetDescr
    - 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:1363,1
    - Dst: ExecGetRootToChildMap
      Src: /src/postgres/src/backend/executor/execUtils.c:1371,1
    - Dst: execute_attr_map_cols
      Src: /src/postgres/src/backend/executor/execUtils.c:1374,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - relinfo
    - estate
    argTypes:
    - ResultRelInfo*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1378
      start: 1360
    functionDepth: 5
    functionLinenumber: 1360
    functionLinenumberEnd: 1378
    functionName: ExecGetInsertedCols
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 5
    functionsReached:
    - ExecGetRootToChildMap
    - GetResultRTEPermissionInfo
    - execute_attr_map_cols
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      ExecGetInsertedCols(ResultRelInfo *relinfo, EState *estate)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GetResultRTEPermissionInfo
      Src: /src/postgres/src/backend/executor/execUtils.c:1384,1
    - Dst: ExecGetRootToChildMap
      Src: /src/postgres/src/backend/executor/execUtils.c:1392,1
    - Dst: execute_attr_map_cols
      Src: /src/postgres/src/backend/executor/execUtils.c:1395,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - relinfo
    - estate
    argTypes:
    - ResultRelInfo*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1399
      start: 1381
    functionDepth: 5
    functionLinenumber: 1381
    functionLinenumberEnd: 1399
    functionName: ExecGetUpdatedCols
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 6
    functionsReached:
    - ExecGetRootToChildMap
    - GetResultRTEPermissionInfo
    - execute_attr_map_cols
    linkageType: ''
    returnType: Bitmapset
    signature: 'Bitmapset *

      ExecGetUpdatedCols(ResultRelInfo *relinfo, EState *estate)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecInitGenerated
      Src: /src/postgres/src/backend/executor/execUtils.c:1407,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - relinfo
    - estate
    argTypes:
    - ResultRelInfo*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1409
      start: 1402
    functionDepth: 1
    functionLinenumber: 1402
    functionLinenumberEnd: 1409
    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:1423,1
    - Dst: GetPerTupleMemoryContext
      Src: /src/postgres/src/backend/executor/execUtils.c:1423,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/executor/execUtils.c:1425,1
    - Dst: ExecGetUpdatedCols
      Src: /src/postgres/src/backend/executor/execUtils.c:1425,1
    - Dst: ExecGetExtraUpdatedCols
      Src: /src/postgres/src/backend/executor/execUtils.c:1426,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execUtils.c:1428,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - relinfo
    - estate
    argTypes:
    - ResultRelInfo*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1431
      start: 1417
    functionDepth: 6
    functionLinenumber: 1417
    functionLinenumberEnd: 1431
    functionName: ExecGetAllUpdatedCols
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - GetPerTupleMemoryContext
    - ExecGetExtraUpdatedCols
    - bms_union
    - ExecGetUpdatedCols
    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:1474,1
    - Dst: getRTEPermissionInfo
      Src: /src/postgres/src/backend/executor/execUtils.c:1475,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - relinfo
    - estate
    argTypes:
    - ResultRelInfo*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1479
      start: 1437
    functionDepth: 4
    functionLinenumber: 1437
    functionLinenumberEnd: 1479
    functionName: GetResultRTEPermissionInfo
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 2
    functionsReached:
    - exec_rt_fetch
    - getRTEPermissionInfo
    linkageType: ''
    returnType: RTEPermissionInfo
    signature: 'RTEPermissionInfo *

      GetResultRTEPermissionInfo(ResultRelInfo *relinfo, EState *estate)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetResultRTEPermissionInfo
      Src: /src/postgres/src/backend/executor/execUtils.c:1491,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execUtils.c:1495,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execUtils.c:1496,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/executor/execUtils.c:1498,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - relInfo
    - estate
    argTypes:
    - ResultRelInfo*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1499
      start: 1488
    functionDepth: 5
    functionLinenumber: 1488
    functionLinenumberEnd: 1499
    functionName: ExecGetResultRelCheckAsUser
    functionSourceFile: /src/postgres/src/backend/executor/execUtils.c
    functionUses: 0
    functionsReached:
    - GetResultRTEPermissionInfo
    - elog
    - GetUserId
    - RelationGetRelid
    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:
    - Assert
    - MakeSingleTupleTableSlot
    - ExecSetSlotDescriptor
    - palloc
    - makeNode
    - lfirst
    - 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: 400
    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:
    - list_head
    - lnext
    - palloc0
    - MakeSingleTupleTableSlot
    - ExecSetSlotDescriptor
    - TupleDescCompactAttr
    - makeNode
    - lfirst
    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:
    - strcmp
    - lfirst
    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: 400
    functionsReached:
    - strcmp
    - lfirst
    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: 3
    functionLinenumber: 246
    functionLinenumberEnd: 304
    functionName: ExecFilterJunk
    functionSourceFile: /src/postgres/src/backend/executor/execJunk.c
    functionUses: 2
    functionsReached:
    - slot_getallattrs
    - ExecStoreVirtualTuple
    - 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: InstrAlloc
      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:
    - ExecInitIncrementalSort
    - ExecInitRecursiveUnion
    - ExecInitSort
    - ExecInitUnique
    - ExecInitModifyTable
    - ExecInitCteScan
    - ExecInitMemoize
    - ExecInitWorkTableScan
    - ExecInitSampleScan
    - ExecInitWindowAgg
    - ExecInitMergeAppend
    - ExecSetExecProcNode
    - ExecInitCustomScan
    - ExecInitGather
    - ExecInitBitmapOr
    - ExecInitIndexScan
    - foreach
    - ExecInitNestLoop
    - ExecInitHashJoin
    - ExecInitGatherMerge
    - ExecInitMergeJoin
    - nodeTag
    - ExecInitSetOp
    - ExecInitValuesScan
    - ExecInitAgg
    - ExecInitGroup
    - IsA
    - ExecInitBitmapAnd
    - ExecInitFunctionScan
    - elog
    - lappend
    - ExecInitForeignScan
    - ExecInitIndexOnlyScan
    - ExecInitTidScan
    - ExecInitProjectSet
    - ExecInitTableFuncScan
    - ExecInitMaterial
    - check_stack_depth
    - ExecInitHash
    - lfirst
    - Assert
    - InstrAlloc
    - ExecInitSubPlan
    - ExecInitBitmapHeapScan
    - ExecInitNamedTuplestoreScan
    - ExecInitTidRangeScan
    - ExecInitSeqScan
    - ExecInitBitmapIndexScan
    - ExecInitSubqueryScan
    - ExecInitLimit
    - ExecInitLockRows
    - ExecInitResult
    - ExecInitAppend
    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: 1
    BranchProfiles: []
    Callsites:
    - Dst: InstrStartNode
      Src: /src/postgres/src/backend/executor/execProcnode.c:483,1
    - Dst: PlanState*::ExecProcNodeReal
      Src: /src/postgres/src/backend/executor/execProcnode.c:485,1
    - Dst: InstrStopNode
      Src: /src/postgres/src/backend/executor/execProcnode.c:487,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/execProcnode.c:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 478
    functionDepth: 1
    functionLinenumber: 478
    functionLinenumberEnd: 490
    functionName: ExecProcNodeInstr
    functionSourceFile: /src/postgres/src/backend/executor/execProcnode.c
    functionUses: 0
    functionsReached:
    - InstrStartNode
    - PlanState*::ExecProcNodeReal
    - InstrStopNode
    - TupIsNull
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecProcNodeInstr(PlanState *node)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/executor/execProcnode.c:511,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/execProcnode.c:513,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:516,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execProcnode.c:518,1
    - Dst: MultiExecHash
      Src: /src/postgres/src/backend/executor/execProcnode.c:525,1
    - Dst: MultiExecBitmapIndexScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:529,1
    - Dst: MultiExecBitmapAnd
      Src: /src/postgres/src/backend/executor/execProcnode.c:533,1
    - Dst: MultiExecBitmapOr
      Src: /src/postgres/src/backend/executor/execProcnode.c:537,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execProcnode.c:541,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execProcnode.c:541,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 1
    argNames:
    - node
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 506
    functionDepth: 3
    functionLinenumber: 506
    functionLinenumberEnd: 547
    functionName: MultiExecProcNode
    functionSourceFile: /src/postgres/src/backend/executor/execProcnode.c
    functionUses: 2
    functionsReached:
    - check_stack_depth
    - nodeTag
    - MultiExecBitmapIndexScan
    - CHECK_FOR_INTERRUPTS
    - MultiExecBitmapAnd
    - elog
    - MultiExecHash
    - ExecReScan
    - MultiExecBitmapOr
    linkageType: ''
    returnType: Node
    signature: 'Node *

      MultiExecProcNode(PlanState *node)'
  - BBCount: 46
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/executor/execProcnode.c:575,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/executor/execProcnode.c:579,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execProcnode.c:583,1
    - Dst: ExecEndResult
      Src: /src/postgres/src/backend/executor/execProcnode.c:589,1
    - Dst: ExecEndProjectSet
      Src: /src/postgres/src/backend/executor/execProcnode.c:593,1
    - Dst: ExecEndModifyTable
      Src: /src/postgres/src/backend/executor/execProcnode.c:597,1
    - Dst: ExecEndAppend
      Src: /src/postgres/src/backend/executor/execProcnode.c:601,1
    - Dst: ExecEndMergeAppend
      Src: /src/postgres/src/backend/executor/execProcnode.c:605,1
    - Dst: ExecEndRecursiveUnion
      Src: /src/postgres/src/backend/executor/execProcnode.c:609,1
    - Dst: ExecEndBitmapAnd
      Src: /src/postgres/src/backend/executor/execProcnode.c:613,1
    - Dst: ExecEndBitmapOr
      Src: /src/postgres/src/backend/executor/execProcnode.c:617,1
    - Dst: ExecEndSeqScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:624,1
    - Dst: ExecEndSampleScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:628,1
    - Dst: ExecEndGather
      Src: /src/postgres/src/backend/executor/execProcnode.c:632,1
    - Dst: ExecEndGatherMerge
      Src: /src/postgres/src/backend/executor/execProcnode.c:636,1
    - Dst: ExecEndIndexScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:640,1
    - Dst: ExecEndIndexOnlyScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:644,1
    - Dst: ExecEndBitmapIndexScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:648,1
    - Dst: ExecEndBitmapHeapScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:652,1
    - Dst: ExecEndTidScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:656,1
    - Dst: ExecEndTidRangeScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:660,1
    - Dst: ExecEndSubqueryScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:664,1
    - Dst: ExecEndFunctionScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:668,1
    - Dst: ExecEndTableFuncScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:672,1
    - Dst: ExecEndCteScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:676,1
    - Dst: ExecEndForeignScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:680,1
    - Dst: ExecEndCustomScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:684,1
    - Dst: ExecEndNestLoop
      Src: /src/postgres/src/backend/executor/execProcnode.c:691,1
    - Dst: ExecEndMergeJoin
      Src: /src/postgres/src/backend/executor/execProcnode.c:695,1
    - Dst: ExecEndHashJoin
      Src: /src/postgres/src/backend/executor/execProcnode.c:699,1
    - Dst: ExecEndMaterial
      Src: /src/postgres/src/backend/executor/execProcnode.c:706,1
    - Dst: ExecEndSort
      Src: /src/postgres/src/backend/executor/execProcnode.c:710,1
    - Dst: ExecEndIncrementalSort
      Src: /src/postgres/src/backend/executor/execProcnode.c:714,1
    - Dst: ExecEndMemoize
      Src: /src/postgres/src/backend/executor/execProcnode.c:718,1
    - Dst: ExecEndGroup
      Src: /src/postgres/src/backend/executor/execProcnode.c:722,1
    - Dst: ExecEndAgg
      Src: /src/postgres/src/backend/executor/execProcnode.c:726,1
    - Dst: ExecEndWindowAgg
      Src: /src/postgres/src/backend/executor/execProcnode.c:730,1
    - Dst: ExecEndUnique
      Src: /src/postgres/src/backend/executor/execProcnode.c:734,1
    - Dst: ExecEndHash
      Src: /src/postgres/src/backend/executor/execProcnode.c:738,1
    - Dst: ExecEndSetOp
      Src: /src/postgres/src/backend/executor/execProcnode.c:742,1
    - Dst: ExecEndLockRows
      Src: /src/postgres/src/backend/executor/execProcnode.c:746,1
    - Dst: ExecEndLimit
      Src: /src/postgres/src/backend/executor/execProcnode.c:750,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execProcnode.c:760,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execProcnode.c:760,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 134
    argCount: 1
    argNames:
    - node
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 561
    functionDepth: 3
    functionLinenumber: 561
    functionLinenumberEnd: 763
    functionName: ExecEndNode
    functionSourceFile: /src/postgres/src/backend/executor/execProcnode.c
    functionUses: 15
    functionsReached:
    - ExecEndMergeJoin
    - ExecEndMemoize
    - ExecEndMergeAppend
    - ExecEndHash
    - ExecEndBitmapOr
    - ExecEndCteScan
    - ExecEndCustomScan
    - ExecEndTidScan
    - ExecEndBitmapAnd
    - ExecEndTidRangeScan
    - ExecEndFunctionScan
    - ExecEndBitmapIndexScan
    - ExecEndRecursiveUnion
    - ExecEndNestLoop
    - ExecEndSampleScan
    - ExecEndLimit
    - ExecEndTableFuncScan
    - ExecEndGroup
    - ExecEndWindowAgg
    - ExecEndModifyTable
    - bms_free
    - nodeTag
    - ExecEndAppend
    - ExecEndIndexOnlyScan
    - ExecEndAgg
    - ExecEndSetOp
    - ExecEndGatherMerge
    - ExecEndResult
    - elog
    - ExecEndSubqueryScan
    - ExecEndGather
    - ExecEndHashJoin
    - ExecEndForeignScan
    - ExecEndSort
    - check_stack_depth
    - ExecEndSeqScan
    - ExecEndMaterial
    - ExecEndLockRows
    - ExecEndIndexScan
    - ExecEndIncrementalSort
    - ExecEndUnique
    - ExecEndBitmapHeapScan
    - ExecEndProjectSet
    linkageType: ''
    returnType: void
    signature: void ExecEndNode(PlanState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecShutdownNode_walker
      Src: /src/postgres/src/backend/executor/execProcnode.c:774,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 771
    functionDepth: 1
    functionLinenumber: 771
    functionLinenumberEnd: 775
    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:783,1
    - Dst: InstrStartNode
      Src: /src/postgres/src/backend/executor/execProcnode.c:796,1
    - Dst: planstate_tree_walker
      Src: /src/postgres/src/backend/executor/execProcnode.c:798,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execProcnode.c:800,1
    - Dst: ExecShutdownGather
      Src: /src/postgres/src/backend/executor/execProcnode.c:803,1
    - Dst: ExecShutdownForeignScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:806,1
    - Dst: ExecShutdownCustomScan
      Src: /src/postgres/src/backend/executor/execProcnode.c:809,1
    - Dst: ExecShutdownGatherMerge
      Src: /src/postgres/src/backend/executor/execProcnode.c:812,1
    - Dst: ExecShutdownHash
      Src: /src/postgres/src/backend/executor/execProcnode.c:815,1
    - Dst: ExecShutdownHashJoin
      Src: /src/postgres/src/backend/executor/execProcnode.c:818,1
    - Dst: InstrStopNode
      Src: /src/postgres/src/backend/executor/execProcnode.c:826,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 32
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - PlanState*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 777
    functionDepth: 2
    functionLinenumber: 777
    functionLinenumberEnd: 829
    functionName: ExecShutdownNode_walker
    functionSourceFile: /src/postgres/src/backend/executor/execProcnode.c
    functionUses: 1
    functionsReached:
    - check_stack_depth
    - nodeTag
    - ExecShutdownForeignScan
    - ExecShutdownGatherMerge
    - ExecShutdownHashJoin
    - planstate_tree_walker
    - ExecShutdownGather
    - InstrStartNode
    - InstrStopNode
    - ExecShutdownHash
    - ExecShutdownCustomScan
    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:856,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execProcnode.c:879,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execProcnode.c:903,1
    - Dst: ExecSetTupleBound
      Src: /src/postgres/src/backend/executor/execProcnode.c:914,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execProcnode.c:916,1
    - Dst: ExecSetTupleBound
      Src: /src/postgres/src/backend/executor/execProcnode.c:927,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execProcnode.c:929,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/execProcnode.c:940,1
    - Dst: ExecSetTupleBound
      Src: /src/postgres/src/backend/executor/execProcnode.c:941,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/execProcnode.c:941,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execProcnode.c:943,1
    - Dst: ExecSetTupleBound
      Src: /src/postgres/src/backend/executor/execProcnode.c:952,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execProcnode.c:954,1
    - Dst: ExecSetTupleBound
      Src: /src/postgres/src/backend/executor/execProcnode.c:969,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/execProcnode.c:969,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execProcnode.c:971,1
    - Dst: ExecSetTupleBound
      Src: /src/postgres/src/backend/executor/execProcnode.c:978,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/execProcnode.c:978,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 2
    argNames:
    - tuples_needed
    - child_node
    argTypes:
    - int64
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 847
    functionDepth: 1
    functionLinenumber: 847
    functionLinenumberEnd: 987
    functionName: ExecSetTupleBound
    functionSourceFile: /src/postgres/src/backend/executor/execProcnode.c
    functionUses: 1
    functionsReached:
    - ExecSetTupleBound
    - outerPlanState
    - IsA
    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:197,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:203,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:206,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:209,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:210,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:211,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:212,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:213,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:226,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:228,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:229,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:230,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:231,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:243,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:245,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:246,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:247,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:248,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:254,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: format_type_be
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:259,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:261,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:261,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:265,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:266,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:267,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:268,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 2
    argNames:
    - resultRel
    - targetList
    argTypes:
    - Relation
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 194
    functionDepth: 2
    functionLinenumber: 194
    functionLinenumberEnd: 269
    functionName: ExecCheckPlanOutput
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - lfirst
    - errmsg
    - Assert
    - exprType
    - RelationGetDescr
    - TupleDescAttr
    - IsA
    - ereport
    - format_type_be
    - errdetail
    - errcode
    linkageType: ''
    returnType: void
    signature: void ExecCheckPlanOutput(Relation resultRel, List *targetList)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:203,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:206,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:209,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:210,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:211,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:212,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:213,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:226,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:228,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:229,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:230,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:231,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:243,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:245,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:246,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:247,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:248,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:254,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: format_type_be
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:259,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:261,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:261,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 201
    functionDepth: 2
    functionLinenumber: 201
    functionLinenumberEnd: 263
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 401
    functionsReached:
    - errmsg
    - lfirst
    - Assert
    - exprType
    - TupleDescAttr
    - format_type_be
    - IsA
    - ereport
    - errdetail
    - errcode
    linkageType: ''
    returnType: void
    signature: void foreach(lc, targetList)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:316,1
    - Dst: ExecGetAllNullSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:324,1
    - Dst: ExecGetAllNullSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:331,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:351,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 6
    argNames:
    - context
    - resultRelInfo
    - cmdType
    - oldSlot
    - newSlot
    - planSlot
    argTypes:
    - ModifyTableContext*
    - ResultRelInfo*
    - CmdType
    - TupleTableSlot*
    - TupleTableSlot*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 287
    functionDepth: 9
    functionLinenumber: 287
    functionLinenumberEnd: 352
    functionName: ExecProcessReturning
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - elog
    - ExecProject
    - ExecGetAllNullSlot
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nExecProcessReturning(ModifyTableContext *context,\n\t\t\t\t\t
      ResultRelInfo *resultRelInfo,\n\t\t\t\t\t CmdType cmdType,\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:367,1
    - Dst: table_tuple_satisfies_snapshot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:370,1
    - Dst: slot_getsysattr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:376,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:377,1
    - Dst: DatumGetTransactionId
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:378,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:386,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:387,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:388,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:389,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - estate
    - rel
    - slot
    argTypes:
    - EState*
    - Relation
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 362
    functionDepth: 3
    functionLinenumber: 362
    functionLinenumberEnd: 391
    functionName: ExecCheckTupleVisible
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - slot_getsysattr
    - ereport
    - DatumGetTransactionId
    - table_tuple_satisfies_snapshot
    - IsolationUsesXactSnapshot
    - TransactionIdIsCurrentTransactionId
    - errcode
    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:405,1
    - Dst: table_tuple_fetch_row_version
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:408,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:409,1
    - Dst: ExecCheckTupleVisible
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:410,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:411,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - estate
    - relinfo
    - tid
    - tempSlot
    argTypes:
    - EState*
    - ResultRelInfo*
    - ItemPointer
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 396
    functionDepth: 4
    functionLinenumber: 396
    functionLinenumberEnd: 412
    functionName: ExecCheckTIDVisible
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - ExecCheckTupleVisible
    - elog
    - table_tuple_fetch_row_version
    - IsolationUsesXactSnapshot
    - ExecClearTuple
    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:435,1
    - Dst: ExecGetUpdatedCols
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:454,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:462,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:464,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:469,1
    - Dst: build_column_default
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:476,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:478,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:479,1
    - Dst: pull_varattnos
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:489,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:491,1
    - Dst: ExecPrepareExpr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:498,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:505,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:513,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:521,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:531,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:537,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 42
    argCount: 3
    argNames:
    - resultRelInfo
    - estate
    - cmdtype
    argTypes:
    - ResultRelInfo*
    - EState*
    - CmdType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 429
    functionDepth: 6
    functionLinenumber: 429
    functionLinenumberEnd: 538
    functionName: ExecInitGenerated
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - bms_overlap
    - pfree
    - Assert
    - MemoryContextSwitchTo
    - ExecPrepareExpr
    - RelationGetDescr
    - TupleDescAttr
    - palloc0
    - elog
    - pull_varattnos
    - build_column_default
    - ExecGetUpdatedCols
    - RelationGetRelationName
    - bms_add_member
    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:549,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:551,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:558,1
    - Dst: ExecInitGenerated
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:567,1
    - Dst: ExecInitGenerated
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:575,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:577,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:581,1
    - Dst: GetPerTupleMemoryContext
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:581,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:583,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:584,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:586,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:587,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:591,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:598,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:598,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:602,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:609,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:617,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:621,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:622,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:623,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:624,1
    - Dst: ExecMaterializeSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:625,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:627,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 4
    argNames:
    - resultRelInfo
    - estate
    - slot
    - cmdtype
    argTypes:
    - ResultRelInfo*
    - EState*
    - TupleTableSlot*
    - CmdType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 543
    functionDepth: 7
    functionLinenumber: 543
    functionLinenumberEnd: 628
    functionName: ExecComputeStoredGenerated
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - slot_getallattrs
    - GetPerTupleMemoryContext
    - RelationGetDescr
    - TupleDescAttr
    - datumCopy
    - ExecInitGenerated
    - GetPerTupleExprContext
    - ExecStoreVirtualTuple
    - ExecMaterializeSlot
    - ExecEvalExpr
    - TupleDescCompactAttr
    - memcpy
    - palloc
    - ExecClearTuple
    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:644,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:651,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:653,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:656,1
    - Dst: ExecCheckPlanOutput
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:665,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:669,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:675,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:679,1
    - Dst: ExecBuildProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:682,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - mtstate
    - resultRelInfo
    argTypes:
    - ModifyTableState*
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 639
    functionDepth: 9
    functionLinenumber: 639
    functionLinenumberEnd: 690
    functionName: ExecInitInsertProjection
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - ExecCheckPlanOutput
    - table_slot_create
    - ExecAssignExprContext
    - RelationGetDescr
    - foreach
    - lappend
    - outerPlan
    - ExecBuildProjectionInfo
    - lfirst
    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:714,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:716,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:728,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:731,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:739,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:742,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:747,1
    - Dst: ExecBuildUpdateProjection
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:750,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - mtstate
    - resultRelInfo
    argTypes:
    - ModifyTableState*
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 759
      start: 709
    functionDepth: 9
    functionLinenumber: 709
    functionLinenumberEnd: 759
    functionName: ExecInitUpdateProjection
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - Assert
    - table_slot_create
    - ExecAssignExprContext
    - ExecBuildUpdateProjection
    - RelationGetDescr
    - 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:783,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:799,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - relinfo
    - planSlot
    argTypes:
    - ResultRelInfo*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 767
    functionDepth: 4
    functionLinenumber: 767
    functionLinenumberEnd: 800
    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:820,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:821,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:821,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:822,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:822,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:827,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - relinfo
    - planSlot
    - oldSlot
    argTypes:
    - ResultRelInfo*
    - TupleTableSlot*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 811
    functionDepth: 4
    functionLinenumber: 811
    functionLinenumberEnd: 828
    functionName: ExecGetUpdateNewTuple
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - TTS_EMPTY
    - Assert
    - ExecProject
    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: 38
    BranchProfiles: []
    Callsites:
    - Dst: ExecPrepareTupleRouting
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:877,1
    - Dst: ExecMaterializeSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:883,1
    - Dst: ExecOpenIndices
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:893,1
    - Dst: ExecPendingInserts
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:909,1
    - Dst: ExecBRInsertTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:911,1
    - Dst: ExecIRInsertTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:919,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:928,1
    - Dst: ExecComputeStoredGenerated
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:935,1
    - Dst: ExecBatchInsert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:952,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:960,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:964,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:966,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:980,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:982,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:985,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:988,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:994,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:997,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1011,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1011,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1014,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1017,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1019,1
    - Dst: list_member_ptr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1019,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1024,1
    - Dst: ResultRelInfo*::ri_FdwRoutine::ExecForeignInsert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1032,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1045,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1055,1
    - Dst: ExecComputeStoredGenerated
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1062,1
    - Dst: ExecWithCheckOptions
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1090,1
    - Dst: ExecConstraints
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1096,1
    - Dst: ExecPartitionCheck
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1107,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1118,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1135,1
    - Dst: ExecCheckIndexConstraints
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1137,1
    - Dst: ExecOnConflictUpdate
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1152,1
    - Dst: InstrCountTuples2
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1156,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1175,1
    - Dst: ExecCheckTIDVisible
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1176,1
    - Dst: ExecGetReturningSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1177,1
    - Dst: InstrCountTuples2
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1178,1
    - Dst: SpeculativeInsertionLockAcquire
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1189,1
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1189,1
    - Dst: table_tuple_insert_speculative
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1192,1
    - Dst: ExecInsertIndexTuples
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1199,1
    - Dst: table_tuple_complete_speculative
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1206,1
    - Dst: SpeculativeInsertionLockRelease
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1216,1
    - Dst: GetCurrentTransactionId
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1216,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1225,1
    - Dst: table_tuple_insert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1234,1
    - Dst: ExecInsertIndexTuples
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1240,1
    - Dst: ExecARUpdateTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1260,1
    - Dst: ExecARInsertTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1277,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1280,1
    - Dst: ExecWithCheckOptions
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1295,1
    - Dst: ExecGetRootToChildMap
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1319,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1322,1
    - Dst: ExecGetReturningSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1324,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1328,1
    - Dst: ExecProcessReturning
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1332,1
    - Dst: ExecMaterializeSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1342,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1343,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1345,1
    CyclomaticComplexity: 51
    EdgeCount: 51
    ICount: 142
    argCount: 6
    argNames:
    - context
    - resultRelInfo
    - slot
    - canSetTag
    - inserted_tuple
    - insert_destrel
    argTypes:
    - ModifyTableContext*
    - ResultRelInfo*
    - TupleTableSlot*
    - bool
    - TupleTableSlot**
    - ResultRelInfo**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1356
      start: 849
    functionDepth: 10
    functionLinenumber: 849
    functionLinenumberEnd: 1356
    functionName: ExecInsert
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - CHECK_FOR_INTERRUPTS
    - CreateTupleDescCopy
    - SpeculativeInsertionLockAcquire
    - table_tuple_insert
    - ExecARInsertTriggers
    - SpeculativeInsertionLockRelease
    - ExecMaterializeSlot
    - table_tuple_complete_speculative
    - ExecGetRootToChildMap
    - ResultRelInfo*::ri_FdwRoutine::ExecForeignInsert
    - ExecGetReturningSlot
    - ExecInsertIndexTuples
    - RelationGetRelid
    - ExecConstraints
    - GetCurrentTransactionId
    - ItemPointerSetInvalid
    - ExecOnConflictUpdate
    - InstrCountTuples2
    - ExecPendingInserts
    - ExecCopySlot
    - ExecIRInsertTriggers
    - ExecClearTuple
    - ExecProcessReturning
    - ExecPrepareTupleRouting
    - ExecComputeStoredGenerated
    - table_tuple_insert_speculative
    - ExecBRInsertTriggers
    - ExecPartitionCheck
    - ExecOpenIndices
    - ExecCheckTIDVisible
    - lappend
    - ExecWithCheckOptions
    - ExecBatchInsert
    - palloc
    - list_member_ptr
    - list_free
    - execute_attr_map_slot
    - Assert
    - ItemPointerCopy
    - ExecCheckIndexConstraints
    - MakeSingleTupleTableSlot
    - ExecARUpdateTriggers
    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: 3
    BranchProfiles: []
    Callsites:
    - Dst: ResultRelInfo*::ri_FdwRoutine::ExecForeignBatchInsert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1383,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1397,1
    - Dst: ExecARInsertTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1400,1
    - Dst: ExecWithCheckOptions
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1408,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1417,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1418,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: 1421
      start: 1366
    functionDepth: 5
    functionLinenumber: 1366
    functionLinenumberEnd: 1421
    functionName: ExecBatchInsert
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - ResultRelInfo*::ri_FdwRoutine::ExecForeignBatchInsert
    - RelationGetRelid
    - ExecARInsertTriggers
    - ExecWithCheckOptions
    - ExecClearTuple
    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:1432,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1435,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1436,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1438,1
    - Dst: ExecBatchInsert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1439,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1446,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1447,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - estate
    argTypes:
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1450
      start: 1426
    functionDepth: 6
    functionLinenumber: 1426
    functionLinenumberEnd: 1450
    functionName: ExecPendingInserts
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - Assert
    - ExecBatchInsert
    - forboth
    - lfirst
    - list_free
    linkageType: ''
    returnType: void
    signature: void ExecPendingInserts(EState *estate)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ExecPendingInserts
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1473,1
    - Dst: ExecBRDeleteTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1475,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: 1481
      start: 1459
    functionDepth: 7
    functionLinenumber: 1459
    functionLinenumberEnd: 1481
    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: 1
    BranchProfiles: []
    Callsites:
    - Dst: table_tuple_delete
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - context
    - resultRelInfo
    - tupleid
    - changingPart
    argTypes:
    - ModifyTableContext*
    - ResultRelInfo*
    - ItemPointer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1503
      start: 1490
    functionDepth: 1
    functionLinenumber: 1490
    functionLinenumberEnd: 1503
    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: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecARUpdateTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1530,1
    - Dst: ExecARDeleteTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1544,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 5
    argNames:
    - context
    - resultRelInfo
    - tupleid
    - oldtuple
    - changingPart
    argTypes:
    - ModifyTableContext*
    - ResultRelInfo*
    - ItemPointer
    - HeapTuple
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1546
      start: 1512
    functionDepth: 1
    functionLinenumber: 1512
    functionLinenumberEnd: 1546
    functionName: ExecDeleteEpilogue
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - ExecARUpdateTriggers
    - 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:1595,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1605,1
    - Dst: ExecIRDeleteTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1606,1
    - Dst: ExecGetReturningSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1619,1
    - Dst: ResultRelInfo*::ri_FdwRoutine::ExecForeignDelete
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1620,1
    - Dst: TTS_EMPTY
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1632,1
    - Dst: ExecStoreAllNullTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1633,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1635,1
    - Dst: ExecDeleteAct
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1649,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1683,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1684,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1685,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1686,1
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1699,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1700,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1701,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1702,1
    - Dst: EvalPlanQualBegin
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1708,1
    - Dst: EvalPlanQualSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1709,1
    - Dst: table_tuple_lock
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1712,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1722,1
    - Dst: EvalPlanQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1723,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1727,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1757,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1758,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1759,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1760,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1779,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1784,1
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1789,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1790,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1791,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1792,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1797,1
    - Dst: ExecDeleteEpilogue
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1819,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1842,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1842,1
    - Dst: ExecGetReturningSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1846,1
    - Dst: ExecForceStoreHeapTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1849,1
    - Dst: table_tuple_fetch_row_version
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1853,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1855,1
    - Dst: ExecGetChildToRootMap
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1872,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1878,1
    - Dst: ExecGetReturningSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1880,1
    - Dst: ItemPointerCopy
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1884,1
    - Dst: ExecProcessReturning
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1892,1
    - Dst: ExecMaterializeSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1899,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1901,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: 1907
      start: 1570
    functionDepth: 10
    functionLinenumber: 1570
    functionLinenumberEnd: 1907
    functionName: ExecDelete
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - ExecDeleteAct
    - TTS_EMPTY
    - ExecMaterializeSlot
    - ExecStoreAllNullTuple
    - errhint
    - table_tuple_fetch_row_version
    - IsolationUsesXactSnapshot
    - ExecGetChildToRootMap
    - ExecGetReturningSlot
    - EvalPlanQualBegin
    - TupIsNull
    - RelationGetRelid
    - ExecIRDeleteTriggers
    - ExecClearTuple
    - ExecProcessReturning
    - errmsg
    - ExecDeletePrologue
    - table_tuple_lock
    - elog
    - ResultRelInfo*::ri_FdwRoutine::ExecForeignDelete
    - execute_attr_map_slot
    - Assert
    - EvalPlanQualSlot
    - ItemPointerCopy
    - ExecDeleteEpilogue
    - ereport
    - ExecForceStoreHeapTuple
    - EvalPlanQual
    - errcode
    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:1956,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1957,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1958,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1959,1
    - Dst: ExecPartitionCheckEmitError
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1966,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1975,1
    - Dst: ExecSetupPartitionTupleRouting
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1978,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1985,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1986,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1988,1
    - Dst: ExecDelete
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:1995,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2033,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2041,1
    - Dst: ExecInitUpdateProjection
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2042,1
    - Dst: table_tuple_fetch_row_version
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2044,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2048,1
    - Dst: ExecGetUpdateNewTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2050,1
    - Dst: ExecGetChildToRootMap
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2061,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2063,1
    - Dst: ExecInsert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2069,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: 2081
      start: 1928
    functionDepth: 11
    functionLinenumber: 1928
    functionLinenumberEnd: 2081
    functionName: ExecCrossPartitionUpdate
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - table_slot_create
    - ExecSetupPartitionTupleRouting
    - table_tuple_fetch_row_version
    - ExecGetChildToRootMap
    - ExecInitUpdateProjection
    - errdetail
    - ExecInsert
    - TupIsNull
    - errmsg
    - elog
    - execute_attr_map_slot
    - ExecDelete
    - Assert
    - ExecGetUpdateNewTuple
    - ExecPartitionCheckEmitError
    - ereport
    - unlikely
    - errcode
    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:2100,1
    - Dst: ExecOpenIndices
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2108,1
    - Dst: ExecPendingInserts
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2116,1
    - Dst: ExecBRUpdateTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2118,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: 2124
      start: 2090
    functionDepth: 7
    functionLinenumber: 2090
    functionLinenumberEnd: 2124
    functionName: ExecUpdatePrologue
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - ExecMaterializeSlot
    - ExecBRUpdateTriggers
    - ExecPendingInserts
    - ExecOpenIndices
    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:2143,1
    - Dst: ExecComputeStoredGenerated
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2150,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - resultRelInfo
    - slot
    - estate
    argTypes:
    - ResultRelInfo*
    - TupleTableSlot*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2152
      start: 2132
    functionDepth: 8
    functionLinenumber: 2132
    functionLinenumberEnd: 2152
    functionName: ExecUpdatePrepareSlot
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - RelationGetRelid
    - ExecComputeStoredGenerated
    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:2187,1
    - Dst: ExecMaterializeSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2190,1
    - Dst: ExecPartitionCheck
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2201,1
    - Dst: ExecWithCheckOptions
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2211,1
    - Dst: ExecCrossPartitionUpdate
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2231,1
    - Dst: ExecCrossPartitionUpdateForeignKey
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2259,1
    - Dst: ExecConstraints
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2290,1
    - Dst: table_tuple_update
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2301,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: 2310
      start: 2167
    functionDepth: 12
    functionLinenumber: 2167
    functionLinenumberEnd: 2310
    functionName: ExecUpdateAct
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - ExecCrossPartitionUpdateForeignKey
    - ExecUpdatePrepareSlot
    - ExecConstraints
    - table_tuple_update
    - ExecCrossPartitionUpdate
    - ExecPartitionCheck
    - ExecMaterializeSlot
    - ExecWithCheckOptions
    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: 3
    BranchProfiles: []
    Callsites:
    - Dst: ExecInsertIndexTuples
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2328,1
    - Dst: ExecARUpdateTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2335,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2344,1
    - Dst: ExecWithCheckOptions
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2356,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 6
    argNames:
    - context
    - updateCxt
    - resultRelInfo
    - tupleid
    - oldtuple
    - slot
    argTypes:
    - ModifyTableContext*
    - UpdateContext*
    - ResultRelInfo*
    - ItemPointer
    - HeapTuple
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2358
      start: 2318
    functionDepth: 7
    functionLinenumber: 2318
    functionLinenumberEnd: 2358
    functionName: ExecUpdateEpilogue
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - ExecARUpdateTriggers
    - ExecWithCheckOptions
    - list_free
    - 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:2378,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2389,1
    - Dst: RI_FKey_trigger_type
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2404,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2413,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2414,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2415,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2416,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2417,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2418,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2419,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2420,1
    - Dst: ExecARUpdateTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2424,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: 2427
      start: 2365
    functionDepth: 7
    functionLinenumber: 2365
    functionLinenumberEnd: 2427
    functionName: ExecCrossPartitionUpdateForeignKey
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - lfirst
    - errmsg
    - ExecGetAncestorResultRels
    - ereport
    - RI_FKey_trigger_type
    - errhint
    - ExecARUpdateTriggers
    - RelationGetRelationName
    - errdetail
    - errcode
    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:2389,1
    - Dst: RI_FKey_trigger_type
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2404,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2413,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2414,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2415,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2416,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2417,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2418,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2419,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2420,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2421
      start: 2387
    functionDepth: 1
    functionLinenumber: 2387
    functionLinenumberEnd: 2421
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 402
    functionsReached:
    - errmsg
    - lfirst
    - ereport
    - RI_FKey_trigger_type
    - errhint
    - RelationGetRelationName
    - errdetail
    - errcode
    linkageType: ''
    returnType: void
    signature: void foreach(lc, ancestorRels)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2471,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2472,1
    - Dst: ExecUpdatePrologue
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2478,1
    - Dst: ExecIRUpdateTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2485,1
    - Dst: ExecUpdatePrepareSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2492,1
    - Dst: ResultRelInfo*::ri_FdwRoutine::ExecForeignUpdate
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2497,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2510,1
    - Dst: ExecUpdateAct
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2525,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2564,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2565,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2566,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2567,1
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2580,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2581,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2582,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2583,1
    - Dst: EvalPlanQualSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2589,1
    - Dst: table_tuple_lock
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2592,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2602,1
    - Dst: EvalPlanQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2604,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2608,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2613,1
    - Dst: ExecInitUpdateProjection
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2614,1
    - Dst: UnlockTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2619,1
    - Dst: LockTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2621,1
    - Dst: table_tuple_fetch_row_version
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2627,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2631,1
    - Dst: ExecGetUpdateNewTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2632,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2654,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2655,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2656,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2657,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2662,1
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2671,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2672,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2673,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2674,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2679,1
    - Dst: ExecUpdateEpilogue
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2688,1
    - Dst: ExecProcessReturning
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2693,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 79
    argCount: 7
    argNames:
    - context
    - resultRelInfo
    - tupleid
    - oldtuple
    - oldSlot
    - slot
    - canSetTag
    argTypes:
    - ModifyTableContext*
    - ResultRelInfo*
    - ItemPointer
    - HeapTuple
    - TupleTableSlot*
    - TupleTableSlot*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2697
      start: 2458
    functionDepth: 13
    functionLinenumber: 2458
    functionLinenumberEnd: 2697
    functionName: ExecUpdate
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - ExecUpdatePrepareSlot
    - ExecUpdatePrologue
    - errhint
    - table_tuple_fetch_row_version
    - IsolationUsesXactSnapshot
    - ExecIRUpdateTriggers
    - ExecInitUpdateProjection
    - TupIsNull
    - RelationGetRelid
    - LockTuple
    - ExecProcessReturning
    - errmsg
    - ExecUpdateAct
    - ResultRelInfo*::ri_FdwRoutine::ExecForeignUpdate
    - table_tuple_lock
    - elog
    - UnlockTuple
    - EvalPlanQualSlot
    - Assert
    - ExecGetUpdateNewTuple
    - ExecUpdateEpilogue
    - IsBootstrapProcessingMode
    - ereport
    - unlikely
    - EvalPlanQual
    - errcode
    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: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2736,1
    - Dst: ExecUpdateLockMode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2739,1
    - Dst: table_tuple_lock
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2747,1
    - Dst: slot_getsysattr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2776,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2779,1
    - Dst: DatumGetTransactionId
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2780,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2782,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2783,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2784,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2786,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2788,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2791,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2801,1
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2805,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2806,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2807,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2808,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2816,1
    - Dst: ItemPointerIndicatesMovedPartitions
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2816,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2825,1
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2829,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2830,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2831,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2832,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2835,1
    - Dst: ItemPointerIndicatesMovedPartitions
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2835,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2836,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2840,1
    - Dst: ExecCheckTupleVisible
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2858,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2871,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2873,1
    - Dst: InstrCountFiltered1
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2874,1
    - Dst: ExecWithCheckOptions
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2895,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2901,1
    - Dst: ExecUpdate
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2913,1
    - Dst: ExecMaterializeSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2927,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:2929,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 51
    argCount: 6
    argNames:
    - context
    - resultRelInfo
    - conflictTid
    - excludedSlot
    - canSetTag
    - returning
    argTypes:
    - ModifyTableContext*
    - ResultRelInfo*
    - ItemPointer
    - TupleTableSlot*
    - bool
    - TupleTableSlot**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2932
      start: 2710
    functionDepth: 14
    functionLinenumber: 2710
    functionLinenumberEnd: 2932
    functionName: ExecOnConflictUpdate
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - ExecUpdate
    - ExecUpdateLockMode
    - DatumGetTransactionId
    - ExecMaterializeSlot
    - errhint
    - ItemPointerIndicatesMovedPartitions
    - IsolationUsesXactSnapshot
    - ExecCheckTupleVisible
    - InstrCountFiltered1
    - ExecQual
    - ExecClearTuple
    - errmsg
    - table_tuple_lock
    - elog
    - ExecWithCheckOptions
    - TransactionIdIsCurrentTransactionId
    - ExecProject
    - Assert
    - slot_getsysattr
    - ereport
    - errcode
    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: 4
    BranchProfiles: []
    Callsites:
    - Dst: ExecMergeMatched
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3007,1
    - Dst: ExecMergeNotMatched
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3028,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: 3034
      start: 2937
    functionDepth: 1
    functionLinenumber: 2937
    functionLinenumberEnd: 3034
    functionName: ExecMerge
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - ExecMergeNotMatched
    - ExecMergeMatched
    linkageType: ''
    returnType: TupleTableSlot
    signature: "TupleTableSlot *\nExecMerge(ModifyTableContext *context, ResultRelInfo
      *resultRelInfo,\n\t\t  ItemPointer tupleid, HeapTuple oldtuple, bool canSetTag)"
  - BBCount: 56
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3081,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3106,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3107,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3110,1
    - Dst: ExecForceStoreHeapTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3111,1
    - Dst: LockTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3123,1
    - Dst: table_tuple_fetch_row_version
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3127,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3131,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3142,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3149,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3151,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3163,1
    - Dst: ExecWithCheckOptions
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3180,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3197,1
    - Dst: ExecUpdatePrologue
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3200,1
    - Dst: ExecIRUpdateTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3213,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3220,1
    - Dst: ExecUpdateAct
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3222,1
    - Dst: ExecUpdateEpilogue
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3245,1
    - Dst: ExecDeletePrologue
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3253,1
    - Dst: ExecIRDeleteTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3266,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3273,1
    - Dst: ExecDeleteAct
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3275,1
    - Dst: ExecDeleteEpilogue
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3281,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3293,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3326,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3327,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3328,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3329,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3331,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3332,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3333,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3335,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3337,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3340,1
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3344,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3345,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3346,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3347,1
    - Dst: ExecUpdateLockMode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3376,1
    - Dst: EvalPlanQualSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3379,1
    - Dst: table_tuple_lock
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3384,1
    - Dst: ItemPointerIndicatesMovedPartitions
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3403,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3404,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3405,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3406,1
    - Dst: EvalPlanQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3414,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3427,1
    - Dst: ExecGetJunkAttribute
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3435,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3448,1
    - Dst: UnlockTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3449,1
    - Dst: LockTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3451,1
    - Dst: table_tuple_fetch_row_version
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3455,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3459,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3462,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3496,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3497,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3498,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3499,1
    - Dst: TransactionIdIsCurrentTransactionId
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3501,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3502,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3503,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3505,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3507,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3510,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3515,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3525,1
    - Dst: ExecProcessReturning
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3535,1
    - Dst: ExecProcessReturning
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3544,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3556,1
    - Dst: ItemPointerIsValid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3572,1
    - Dst: UnlockTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3573,1
    CyclomaticComplexity: 70
    EdgeCount: 70
    ICount: 185
    argCount: 6
    argNames:
    - context
    - resultRelInfo
    - tupleid
    - oldtuple
    - canSetTag
    - matched
    argTypes:
    - ModifyTableContext*
    - ResultRelInfo*
    - ItemPointer
    - HeapTuple
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3576
      start: 3063
    functionDepth: 13
    functionLinenumber: 3063
    functionLinenumberEnd: 3576
    functionName: ExecMergeMatched
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - ExecDeleteAct
    - ExecUpdateLockMode
    - ExecUpdatePrologue
    - errhint
    - ItemPointerIndicatesMovedPartitions
    - table_tuple_fetch_row_version
    - IsolationUsesXactSnapshot
    - ExecIRUpdateTriggers
    - TupIsNull
    - LockTuple
    - ItemPointerSetInvalid
    - foreach
    - ExecIRDeleteTriggers
    - ExecQual
    - ExecProcessReturning
    - errmsg
    - ExecUpdateAct
    - ItemPointerIsValid
    - ExecDeletePrologue
    - table_tuple_lock
    - elog
    - ExecWithCheckOptions
    - UnlockTuple
    - TransactionIdIsCurrentTransactionId
    - lfirst
    - ExecProject
    - Assert
    - EvalPlanQualSlot
    - ExecGetJunkAttribute
    - ExecDeleteEpilogue
    - ExecUpdateEpilogue
    - ereport
    - ExecForceStoreHeapTuple
    - EvalPlanQual
    - errcode
    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:3613,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3624,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3637,1
    - Dst: ExecInsert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3640,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3648,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - context
    - resultRelInfo
    - canSetTag
    argTypes:
    - ModifyTableContext*
    - ResultRelInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3659
      start: 3581
    functionDepth: 11
    functionLinenumber: 3581
    functionLinenumberEnd: 3659
    functionName: ExecMergeNotMatched
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - ExecInsert
    - elog
    - ExecQual
    - lfirst
    - 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:3613,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3624,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3637,1
    - Dst: ExecInsert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3640,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3648,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3656
      start: 3611
    functionDepth: 11
    functionLinenumber: 3611
    functionLinenumberEnd: 3656
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 403
    functionsReached:
    - ExecInsert
    - elog
    - ExecQual
    - lfirst
    - ExecProject
    linkageType: ''
    returnType: void
    signature: void foreach(l, actionStates)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3681,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3694,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3699,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3702,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3705,1
    - Dst: ExecInitMergeTupleSlots
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3706,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3710,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3714,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3723,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3725,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3733,1
    - Dst: ExecCheckPlanOutput
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3740,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3768,1
    - Dst: ExecSetupPartitionTupleRouting
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3771,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3775,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3791,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3795,1
    - Dst: ExecBuildProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3799,1
    - Dst: ExecBuildUpdateProjection
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3808,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3823,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3858,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3858,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3859,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3866,1
    - Dst: build_attrmap_by_name
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3871,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3871,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3872,1
    - Dst: map_variable_attnos
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3876,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3879,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3885,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3886,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3886,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3889,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3901,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3901,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3902,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3909,1
    - Dst: build_attrmap_by_name
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3915,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3915,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3916,1
    - Dst: map_variable_attnos
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3920,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3923,1
    - Dst: ExecBuildProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3930,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3933,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 78
    argCount: 2
    argNames:
    - mtstate
    - estate
    argTypes:
    - ModifyTableState*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3936
      start: 3664
    functionDepth: 9
    functionLinenumber: 3664
    functionLinenumberEnd: 3936
    functionName: ExecInitMerge
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - ExecCheckPlanOutput
    - table_slot_create
    - ExecSetupPartitionTupleRouting
    - list_length
    - castNode
    - makeNode
    - ExecAssignExprContext
    - ExecBuildUpdateProjection
    - ExecInitQual
    - RelationGetForm
    - map_variable_attnos
    - lfirst_node
    - linitial
    - list_nth
    - ExecInitMergeTupleSlots
    - lappend
    - elog
    - lfirst
    - Assert
    - RelationGetDescr
    - build_attrmap_by_name
    - unlikely
    - ExecBuildProjectionInfo
    linkageType: ''
    returnType: void
    signature: void ExecInitMerge(ModifyTableState *mtstate, EState *estate)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3694,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3699,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3702,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3705,1
    - Dst: ExecInitMergeTupleSlots
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3706,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3710,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3714,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3723,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3725,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3733,1
    - Dst: ExecCheckPlanOutput
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3740,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3768,1
    - Dst: ExecSetupPartitionTupleRouting
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3771,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3775,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3791,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3795,1
    - Dst: ExecBuildProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3799,1
    - Dst: ExecBuildUpdateProjection
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3808,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3823,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3827
      start: 3692
    functionDepth: 7
    functionLinenumber: 3692
    functionLinenumberEnd: 3827
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 403
    functionsReached:
    - ExecCheckPlanOutput
    - table_slot_create
    - ExecBuildUpdateProjection
    - RelationGetDescr
    - ExecSetupPartitionTupleRouting
    - ExecInitMergeTupleSlots
    - list_nth
    - unlikely
    - ExecInitQual
    - lappend
    - ExecBuildProjectionInfo
    - elog
    - makeNode
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, mergeActionLists)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3714,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3723,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3725,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3733,1
    - Dst: ExecCheckPlanOutput
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3740,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3768,1
    - Dst: ExecSetupPartitionTupleRouting
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3771,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3775,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3791,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3795,1
    - Dst: ExecBuildProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3799,1
    - Dst: ExecBuildUpdateProjection
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3808,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3823,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3826
      start: 3712
    functionDepth: 7
    functionLinenumber: 3712
    functionLinenumberEnd: 3826
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 403
    functionsReached:
    - ExecCheckPlanOutput
    - table_slot_create
    - ExecBuildUpdateProjection
    - RelationGetDescr
    - ExecSetupPartitionTupleRouting
    - elog
    - ExecInitQual
    - lappend
    - ExecBuildProjectionInfo
    - makeNode
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, mergeActionList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3885,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3886,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3886,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3889,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3890
      start: 3883
    functionDepth: 7
    functionLinenumber: 3883
    functionLinenumberEnd: 3890
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 403
    functionsReached:
    - lappend
    - ExecInitQual
    - lfirst_node
    - castNode
    linkageType: ''
    returnType: void
    signature: void foreach(lc, wcoList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3950,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3953,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3956,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - mtstate
    - resultRelInfo
    argTypes:
    - ModifyTableState*
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3959
      start: 3944
    functionDepth: 3
    functionLinenumber: 3944
    functionLinenumberEnd: 3959
    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:3973,1
    - Dst: ExecBSUpdateTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3975,1
    - Dst: ExecBSUpdateTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3979,1
    - Dst: ExecBSDeleteTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3982,1
    - Dst: ExecBSInsertTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3986,1
    - Dst: ExecBSUpdateTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3988,1
    - Dst: ExecBSDeleteTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3990,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:3993,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 1
    argNames:
    - node
    argTypes:
    - ModifyTableState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3996
      start: 3964
    functionDepth: 1
    functionLinenumber: 3964
    functionLinenumberEnd: 3996
    functionName: fireBSTriggers
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - ExecBSInsertTriggers
    - ExecBSDeleteTriggers
    - elog
    - ExecBSUpdateTriggers
    linkageType: ''
    returnType: void
    signature: void fireBSTriggers(ModifyTableState *node)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ExecASUpdateTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4011,1
    - Dst: ExecASInsertTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4014,1
    - Dst: ExecASUpdateTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4018,1
    - Dst: ExecASDeleteTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4022,1
    - Dst: ExecASDeleteTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4027,1
    - Dst: ExecASUpdateTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4030,1
    - Dst: ExecASInsertTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4033,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4037,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 1
    argNames:
    - node
    argTypes:
    - ModifyTableState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4040
      start: 4001
    functionDepth: 1
    functionLinenumber: 4001
    functionLinenumberEnd: 4040
    functionName: fireASTriggers
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - elog
    - ExecASInsertTriggers
    - ExecASUpdateTriggers
    - ExecASDeleteTriggers
    linkageType: ''
    returnType: void
    signature: void fireASTriggers(ModifyTableState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MakeTransitionCaptureState
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4054,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4055,1
    - Dst: MakeTransitionCaptureState
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4060,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4061,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - mtstate
    - estate
    argTypes:
    - ModifyTableState*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4063
      start: 4046
    functionDepth: 1
    functionLinenumber: 4046
    functionLinenumberEnd: 4063
    functionName: ExecSetupTransitionCaptureState
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    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:4093,1
    - Dst: ExecGetRootToChildMap
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4116,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4121,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: 4126
      start: 4075
    functionDepth: 5
    functionLinenumber: 4075
    functionLinenumberEnd: 4126
    functionName: ExecPrepareTupleRouting
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - ExecGetRootToChildMap
    - ExecFindPartition
    - execute_attr_map_slot
    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: 36
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4138,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4152,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4164,1
    - Dst: fireBSTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4180,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4186,1
    - Dst: ResetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4205,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4213,1
    - Dst: ExecMergeNotMatched
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4224,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4241,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4245,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4253,1
    - Dst: ExecGetJunkAttribute
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4259,1
    - Dst: EvalPlanQualSetSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4273,1
    - Dst: ExecMerge
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4275,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4288,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4290,1
    - Dst: ExecLookupResultRelByOid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4294,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4304,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4314,1
    - Dst: ExecProcessReturning
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4317,1
    - Dst: EvalPlanQualSetSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4323,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4349,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4349,1
    - Dst: ExecGetJunkAttribute
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4350,1
    - Dst: EvalPlanQualSetSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4366,1
    - Dst: ExecMerge
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4368,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4381,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4384,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4405,1
    - Dst: ExecGetJunkAttribute
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4407,1
    - Dst: EvalPlanQualSetSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4423,1
    - Dst: ExecMerge
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4425,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4438,1
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4441,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4443,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4444,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4448,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4455,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4463,1
    - Dst: ExecInitInsertProjection
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4464,1
    - Dst: ExecGetInsertNewTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4465,1
    - Dst: ExecInsert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4466,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4474,1
    - Dst: ExecInitUpdateProjection
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4475,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4484,1
    - Dst: ExecForceStoreHeapTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4486,1
    - Dst: LockTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4495,1
    - Dst: table_tuple_fetch_row_version
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4498,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4501,1
    - Dst: ExecGetUpdateNewTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4503,1
    - Dst: ExecUpdate
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4507,1
    - Dst: UnlockTuple
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4510,1
    - Dst: ExecDelete
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4515,1
    - Dst: ExecMerge
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4520,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4525,1
    - Dst: ExecPendingInserts
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4541,1
    - Dst: fireASTriggers
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4546,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 144
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4551
      start: 4135
    functionDepth: 14
    functionLinenumber: 4135
    functionLinenumberEnd: 4551
    functionName: ExecModifyTable
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - ExecUpdate
    - ExecInitInsertProjection
    - ExecGetInsertNewTuple
    - CHECK_FOR_INTERRUPTS
    - castNode
    - fireBSTriggers
    - table_tuple_fetch_row_version
    - ResetPerTupleExprContext
    - ExecMergeNotMatched
    - ExecInitUpdateProjection
    - HeapTupleHeaderGetDatumLength
    - ExecInsert
    - TupIsNull
    - RelationGetRelid
    - LockTuple
    - ItemPointerSetInvalid
    - ExecPendingInserts
    - AttributeNumberIsValid
    - DatumGetPointer
    - ExecProcessReturning
    - DatumGetHeapTupleHeader
    - UnlockTuple
    - elog
    - outerPlanState
    - fireASTriggers
    - ExecMerge
    - ExecLookupResultRelByOid
    - ResetExprContext
    - Assert
    - ExecDelete
    - ExecProcNode
    - ExecGetJunkAttribute
    - ExecGetUpdateNewTuple
    - EvalPlanQualSetSlot
    - DatumGetObjectId
    - unlikely
    - ExecForceStoreHeapTuple
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecModifyTable(PlanState *pstate)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: hash_search
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4573,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4591,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4604,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: 4606
      start: 4563
    functionDepth: 1
    functionLinenumber: 4563
    functionLinenumberEnd: 4606
    functionName: ExecLookupResultRelByOid
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - elog
    - RelationGetRelid
    - hash_search
    linkageType: ''
    returnType: ResultRelInfo
    signature: "ResultRelInfo *\nExecLookupResultRelByOid(ModifyTableState *node,
      Oid resultoid,\n\t\t\t\t\t\t bool missing_ok, bool update_cache)"
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4616,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4618,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4633,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4652,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4654,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4657,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4662,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4668,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4671,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4675,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4679,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4683,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4687,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4689,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4693,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4695,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4699,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4701,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4706,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4707,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4712,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4723,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4750,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4750,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4751,1
    - Dst: ExecInitResultRelation
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4752,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4757,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4757,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4758,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4758,1
    - Dst: ExecInitResultRelation
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4760,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4761,1
    - Dst: EvalPlanQualInit
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4765,1
    - Dst: ExecSetupTransitionCaptureState
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4774,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4786,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4790,1
    - Dst: ExecInitResultRelation
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4794,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4807,1
    - Dst: CheckValidResultRel
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4812,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4821,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4821,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4835,1
    - Dst: ResultRelInfo*::ri_FdwRoutine::BeginForeignModify
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4837,1
    - Dst: ExecFindJunkAttributeInTlist
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4861,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4862,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4863,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4871,1
    - Dst: ExecFindJunkAttributeInTlist
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4880,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4883,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4884,1
    - Dst: ExecFindJunkAttributeInTlist
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4890,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4892,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4893,1
    - Dst: ExecFindJunkAttributeInTlist
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4905,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4906,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4906,1
    - Dst: ExecSetupPartitionTupleRouting
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4922,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4930,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4936,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4937,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4940,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4962,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4967,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4976,1
    - Dst: ExecBuildProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4980,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4991,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5001,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5011,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5017,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5027,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5037,1
    - Dst: ExecBuildUpdateProjection
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5042,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5055,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5068,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5070,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5080,1
    - Dst: ExecFindRowMark
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5084,1
    - Dst: ExecBuildAuxRowMark
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5085,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5086,1
    - Dst: ExecInitMerge
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5091,1
    - Dst: EvalPlanQualSetPlan
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5093,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5116,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5126,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5128,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5130,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5148,1
    - Dst: ResultRelInfo*::ri_FdwRoutine::GetForeignModifyBatchSize
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5156,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5157,1
    - Dst: lcons
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5173,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 185
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - ModifyTable*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5177
      start: 4612
    functionDepth: 11
    functionLinenumber: 4612
    functionLinenumberEnd: 5177
    functionName: ExecInitModifyTable
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - ExecInitMerge
    - ExecFindJunkAttributeInTlist
    - ResultRelInfo*::ri_FdwRoutine::GetForeignModifyBatchSize
    - table_slot_create
    - EvalPlanQualSetPlan
    - lappend_int
    - lcons
    - ExecSetupPartitionTupleRouting
    - list_length
    - CheckValidResultRel
    - list_nth_node
    - ExecInitResultTypeTL
    - makeNode
    - lfirst_int
    - ExecFindRowMark
    - ExecInitResultRelation
    - ExecAssignExprContext
    - ExecBuildUpdateProjection
    - ResultRelInfo*::ri_FdwRoutine::BeginForeignModify
    - RelationGetRelid
    - hash_create
    - foreach
    - ExecInitQual
    - AttributeNumberIsValid
    - ExecBuildAuxRowMark
    - lfirst_node
    - ExecInitResultTupleSlotTL
    - ExecInitNode
    - list_nth
    - lappend
    - outerPlan
    - outerPlanState
    - elog
    - bms_is_member
    - palloc
    - lfirst
    - Assert
    - EvalPlanQualInit
    - linitial_int
    - hash_search
    - ExecSetupTransitionCaptureState
    - ExecBuildProjectionInfo
    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:4786,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4790,1
    - Dst: ExecInitResultRelation
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4794,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4807,1
    - Dst: CheckValidResultRel
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4812,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4816
      start: 4784
    functionDepth: 7
    functionLinenumber: 4784
    functionLinenumberEnd: 4816
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 404
    functionsReached:
    - ExecInitResultRelation
    - list_nth
    - CheckValidResultRel
    - bms_is_member
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void foreach(l, resultRelations)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4930,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4936,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4937,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4940,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4946
      start: 4928
    functionDepth: 7
    functionLinenumber: 4928
    functionLinenumberEnd: 4946
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 404
    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:4936,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4937,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4940,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4941
      start: 4934
    functionDepth: 7
    functionLinenumber: 4934
    functionLinenumberEnd: 4941
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 404
    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:4976,1
    - Dst: ExecBuildProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:4980,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4983
      start: 4974
    functionDepth: 3
    functionLinenumber: 4974
    functionLinenumberEnd: 4983
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 404
    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:5203,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5213,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5214,1
    - Dst: ExecCleanupTupleRouting
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5224,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5227,1
    - Dst: EvalPlanQualEnd
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5233,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5238,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeModifyTable.c:5238,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 1
    argNames:
    - node
    argTypes:
    - ModifyTableState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5239
      start: 5187
    functionDepth: 5
    functionLinenumber: 5187
    functionLinenumberEnd: 5239
    functionName: ExecEndModifyTable
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 1
    functionsReached:
    - ExecDropSingleTupleTableSlot
    - ExecEndNode
    - outerPlanState
    - EvalPlanQualEnd
    - 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:5248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - ModifyTableState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5249
      start: 5241
    functionDepth: 1
    functionLinenumber: 5241
    functionLinenumberEnd: 5249
    functionName: ExecReScanModifyTable
    functionSourceFile: /src/postgres/src/backend/executor/nodeModifyTable.c
    functionUses: 0
    functionsReached:
    - elog
    linkageType: ''
    returnType: void
    signature: void ExecReScanModifyTable(ModifyTableState *node)
  - 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
    - MemoryContextSwitchTo
    - TupIsNull
    - ForeignScanState*::fdwroutine::IterateForeignScan
    - RelationGetRelid
    - ForeignScanState*::fdwroutine::IterateDirectModify
    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:
    - ResetExprContext
    - FdwRoutine*::RecheckForeignScan
    - 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:
    - ExecScan
    - castNode
    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:
    - CreateTupleDescCopy
    - ExecOpenScanRelation
    - ExecInitResultTypeTL
    - makeNode
    - ExecAssignExprContext
    - ExecInitQual
    - FdwRoutine*::BeginForeignScan
    - GetFdwRoutineByServerId
    - ExecInitNode
    - elog
    - outerPlan
    - outerPlanState
    - ExecAssignScanProjectionInfoWithVarno
    - Assert
    - ExecInitScanTupleSlot
    - ExecTypeFromTL
    - RelationGetDescr
    - GetFdwRoutineForRelation
    - FdwRoutine*::BeginDirectModify
    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:
    - ExecEndNode
    - ForeignScanState*::fdwroutine::EndForeignScan
    - outerPlanState
    - ForeignScanState*::fdwroutine::EndDirectModify
    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:
    - ForeignScanState*::fdwroutine::ReScanForeignScan
    - outerPlanState
    - ExecScanReScan
    - 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:
    - FdwRoutine*::EstimateDSMForeignScan
    - shm_toc_estimate_chunk
    - 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:
    - shm_toc_insert
    - shm_toc_allocate
    - FdwRoutine*::InitializeDSMForeignScan
    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:
    - FdwRoutine*::ForeignAsyncRequest
    - Assert
    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:
    - FdwRoutine*::ForeignAsyncNotify
    - Assert
    linkageType: ''
    returnType: void
    signature: void ExecAsyncForeignScanNotify(AsyncRequest *areq)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:74,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:74,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:79,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:93,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:99,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:104,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:105,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:105,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:120,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:120,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:126,1
    - Dst: ExecConditionalAssignProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:127,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:148,1
    - Dst: PrepareSortSupportFromOrderingOp
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:165,1
    - Dst: gather_merge_setup
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:170,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 37
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - GatherMerge*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 66
    functionDepth: 11
    functionLinenumber: 66
    functionLinenumberEnd: 173
    functionName: ExecInitGatherMerge
    functionSourceFile: /src/postgres/src/backend/executor/nodeGatherMerge.c
    functionUses: 1
    functionsReached:
    - Assert
    - ExecAssignExprContext
    - PrepareSortSupportFromOrderingOp
    - ExecInitNode
    - palloc0
    - ExecConditionalAssignProjectionInfo
    - ExecGetResultType
    - outerPlan
    - outerPlanState
    - ExecInitResultTypeTL
    - innerPlan
    - makeNode
    - 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:185,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:189,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:198,1
    - Dst: ExecInitParallelPlan
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:210,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:210,1
    - Dst: ExecParallelReinitialize
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:216,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:216,1
    - Dst: LaunchParallelWorkers
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:222,1
    - Dst: ExecParallelCreateReaders
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:236,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:240,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:241,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:263,1
    - Dst: gather_merge_getnext
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:269,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:270,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:281,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 182
    functionDepth: 4
    functionLinenumber: 182
    functionLinenumberEnd: 282
    functionName: ExecGatherMerge
    functionSourceFile: /src/postgres/src/backend/executor/nodeGatherMerge.c
    functionUses: 0
    functionsReached:
    - gather_merge_getnext
    - ResetExprContext
    - ExecParallelReinitialize
    - CHECK_FOR_INTERRUPTS
    - TupIsNull
    - castNode
    - LaunchParallelWorkers
    - outerPlanState
    - ExecParallelCreateReaders
    - memcpy
    - palloc
    - ExecInitParallelPlan
    - ExecProject
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecGatherMerge(PlanState *pstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:293,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:293,1
    - Dst: ExecShutdownGatherMerge
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - GatherMergeState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 290
    functionDepth: 4
    functionLinenumber: 290
    functionLinenumberEnd: 295
    functionName: ExecEndGatherMerge
    functionSourceFile: /src/postgres/src/backend/executor/nodeGatherMerge.c
    functionUses: 1
    functionsReached:
    - ExecEndNode
    - ExecShutdownGatherMerge
    - outerPlanState
    linkageType: ''
    returnType: void
    signature: void ExecEndGatherMerge(GatherMergeState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecShutdownGatherMergeWorkers
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:306,1
    - Dst: ExecParallelCleanup
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:311,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - GatherMergeState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 303
    functionDepth: 1
    functionLinenumber: 303
    functionLinenumberEnd: 314
    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:326,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:330,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - GatherMergeState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 322
    functionDepth: 1
    functionLinenumber: 322
    functionLinenumberEnd: 332
    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:344,1
    - Dst: ExecShutdownGatherMergeWorkers
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:347,1
    - Dst: gather_merge_clear_tuples
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:350,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:364,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:378,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - node
    argTypes:
    - GatherMergeState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 340
    functionDepth: 3
    functionLinenumber: 340
    functionLinenumberEnd: 379
    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:397,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:411,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeGatherMerge.c:415,1
    - Dst: palloc0
      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: 394
    functionDepth: 8
    functionLinenumber: 394
    functionLinenumberEnd: 433
    functionName: gather_merge_setup
    functionSourceFile: /src/postgres/src/backend/executor/nodeGatherMerge.c
    functionUses: 1
    functionsReached:
    - ExecInitExtraTupleSlot
    - binaryheap_allocate
    - palloc0
    - castNode
    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:
    - Assert
    - gather_merge_readnext
    - CHECK_FOR_INTERRUPTS
    - TupIsNull
    - Int32GetDatum
    - binaryheap_add_unordered
    - load_tuple_array
    - castNode
    - ExecClearTuple
    - binaryheap_reset
    - 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:
    - ExecClearTuple
    - pfree
    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
    - binaryheap_empty
    - Int32GetDatum
    - DatumGetInt32
    - binaryheap_replace_first
    - binaryheap_first
    - binaryheap_remove_first
    - gather_merge_readnext
    - gather_merge_init
    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:
    - Assert
    - ExecProcNode
    - TupIsNull
    - load_tuple_array
    - gm_readnext_tuple
    - outerPlanState
    - ExecStoreMinimalTuple
    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:
    - TupleQueueReaderNext
    - heap_copy_minimal_tuple
    - 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: 3
    functionLinenumber: 751
    functionLinenumberEnd: 788
    functionName: heap_compare_slots
    functionSourceFile: /src/postgres/src/backend/executor/nodeGatherMerge.c
    functionUses: 0
    functionsReached:
    - Assert
    - TupIsNull
    - DatumGetInt32
    - ApplySortComparator
    - slot_getattr
    - INVERT_COMPARE_RESULT
    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: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    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: 92
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 92
    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: 144
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 144
    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: 145
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 145
    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: 148
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 148
    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:167,1
    - Dst: pg_rotate_left32
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:174,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:181,1
    - Dst: datum_image_hash
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:183,1
    - Dst: pg_rotate_left32
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:197,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:203,1
    - Dst: FunctionCall1Coll
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:203,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:210,1
    - Dst: murmurhash32
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:211,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - tb
    - key
    argTypes:
    - struct memoize_hash*
    - MemoizeKey*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 157
    functionDepth: 2
    functionLinenumber: 157
    functionLinenumberEnd: 212
    functionName: MemoizeHash_hash
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - TupleDescCompactAttr
    - murmurhash32
    - FunctionCall1Coll
    - DatumGetUInt32
    - pg_rotate_left32
    - datum_image_hash
    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:230,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:238,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:240,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:241,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:258,1
    - Dst: datum_image_eq
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:259,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:267,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:274,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 3
    argNames:
    - tb
    - key1
    - key2
    argTypes:
    - struct memoize_hash*
    - MemoizeKey*
    - MemoizeKey*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 220
    functionDepth: 5
    functionLinenumber: 220
    functionLinenumberEnd: 276
    functionName: MemoizeHash_equal
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - slot_getallattrs
    - datum_image_eq
    - ExecQual
    - ExecStoreMinimalTuple
    - TupleDescCompactAttr
    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:285,1
    - Dst: memoize_create
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:292,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - mstate
    - size
    argTypes:
    - MemoizeState*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 293
    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:308,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:315,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:319,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:323,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:328,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:329,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:330,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:331,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:334,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - mstate
    - key
    argTypes:
    - MemoizeState*
    - MemoizeKey*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 301
    functionDepth: 5
    functionLinenumber: 301
    functionLinenumberEnd: 335
    functionName: prepare_probe_slot
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - slot_getallattrs
    - ExecStoreVirtualTuple
    - ExecEvalExpr
    - ExecStoreMinimalTuple
    - ExecClearTuple
    - memcpy
    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:353,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:356,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:357,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - mstate
    - entry
    argTypes:
    - MemoizeState*
    - MemoizeEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 367
    functionName: entry_purge_tuples
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached:
    - CACHE_TUPLE_BYTES
    - pfree
    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:378,1
    - Dst: entry_purge_tuples
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:381,1
    - Dst: EMPTY_ENTRY_MEMORY_BYTES
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:388,1
    - Dst: memoize_delete_item
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:391,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:393,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - mstate
    - entry
    argTypes:
    - MemoizeState*
    - MemoizeEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 373
    functionDepth: 2
    functionLinenumber: 373
    functionLinenumberEnd: 395
    functionName: remove_cache_entry
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached:
    - pfree
    - entry_purge_tuples
    - 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:414,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:420,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - mstate
    argTypes:
    - MemoizeState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 401
    functionDepth: 1
    functionLinenumber: 401
    functionLinenumberEnd: 428
    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:451,1
    - Dst: dlist_foreach_modify
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:454,1
    - Dst: dlist_container
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:456,1
    - Dst: prepare_probe_slot
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:463,1
    - Dst: memoize_lookup
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:476,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:483,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:484,1
    - Dst: remove_cache_entry
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:501,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - mstate
    - specialkey
    argTypes:
    - MemoizeState*
    - MemoizeKey*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 439
    functionDepth: 6
    functionLinenumber: 439
    functionLinenumberEnd: 513
    functionName: cache_reduce_memory
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached:
    - Assert
    - dlist_foreach_modify
    - remove_cache_entry
    - memoize_lookup
    - prepare_probe_slot
    - unlikely
    - elog
    - dlist_container
    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:535,1
    - Dst: memoize_insert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:541,1
    - Dst: dlist_move_tail
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:549,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:554,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:557,1
    - Dst: ExecCopySlotMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:558,1
    - Dst: EMPTY_ENTRY_MEMORY_BYTES
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:561,1
    - Dst: dlist_push_tail
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:571,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:575,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:589,1
    - Dst: cache_reduce_memory
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:589,1
    - Dst: prepare_probe_slot
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:606,1
    - Dst: memoize_lookup
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:609,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:610,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 2
    argNames:
    - mstate
    - found
    argTypes:
    - MemoizeState*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 527
    functionDepth: 7
    functionLinenumber: 527
    functionLinenumberEnd: 615
    functionName: cache_lookup
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - memoize_insert
    - cache_reduce_memory
    - memoize_lookup
    - dlist_push_tail
    - prepare_probe_slot
    - unlikely
    - ExecCopySlotMinimalTuple
    - dlist_move_tail
    - EMPTY_ENTRY_MEMORY_BYTES
    - palloc
    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:631,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:632,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:634,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:636,1
    - Dst: ExecCopySlotMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:637,1
    - Dst: CACHE_TUPLE_BYTES
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:641,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:658,1
    - Dst: cache_reduce_memory
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:668,1
    - Dst: prepare_probe_slot
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:685,1
    - Dst: memoize_lookup
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:688,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:689,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - mstate
    - slot
    argTypes:
    - MemoizeState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 624
    functionDepth: 7
    functionLinenumber: 624
    functionLinenumberEnd: 694
    functionName: cache_store_tuple
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - cache_reduce_memory
    - memoize_lookup
    - prepare_probe_slot
    - ExecCopySlotMinimalTuple
    - CACHE_TUPLE_BYTES
    - palloc
    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:699,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:704,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:710,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:720,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:723,1
    - Dst: build_hash_table
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:724,1
    - Dst: cache_lookup
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:740,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:760,1
    - Dst: entry_purge_tuples
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:784,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:788,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:789,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:790,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:799,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:812,1
    - Dst: cache_store_tuple
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:813,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:837,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:844,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:845,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:858,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:870,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:877,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:878,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:879,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:892,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:893,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:896,1
    - Dst: cache_store_tuple
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:896,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:910,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:923,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:924,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:925,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:932,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:945,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 94
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 696
    functionDepth: 8
    functionLinenumber: 696
    functionLinenumberEnd: 949
    functionName: ExecMemoize
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached:
    - ResetExprContext
    - Assert
    - CHECK_FOR_INTERRUPTS
    - ExecProcNode
    - TupIsNull
    - likely
    - build_hash_table
    - entry_purge_tuples
    - castNode
    - unlikely
    - elog
    - outerPlanState
    - ExecCopySlot
    - ExecStoreMinimalTuple
    - cache_store_tuple
    - cache_lookup
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecMemoize(PlanState *pstate)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:954,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:961,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:972,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:974,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:975,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:975,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:981,1
    - Dst: ExecCreateScanSlotFromOuterPlan
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:987,1
    - Dst: ExecTypeFromExprList
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:997,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:998,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1000,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1003,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1006,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1008,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1015,1
    - Dst: get_op_hash_functions
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1017,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1018,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1021,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1023,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1024,1
    - Dst: ExecBuildParamSetEqual
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1027,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1035,1
    - Dst: get_hash_memory_limit
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1039,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1042,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1046,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1068,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 41
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - Memoize*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1077
      start: 951
    functionDepth: 11
    functionLinenumber: 951
    functionLinenumberEnd: 1077
    functionName: ExecInitMemoize
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 1
    functionsReached:
    - ExecCreateScanSlotFromOuterPlan
    - get_op_hash_functions
    - makeNode
    - pfree
    - ExecAssignExprContext
    - get_hash_memory_limit
    - dlist_init
    - ExecInitResultTupleSlotTL
    - fmgr_info
    - ExecInitNode
    - get_opcode
    - list_nth
    - elog
    - outerPlan
    - outerPlanState
    - palloc
    - ExecInitExpr
    - Assert
    - memset
    - MakeSingleTupleTableSlot
    - AllocSetContextCreate
    - ExecTypeFromExprList
    - ExecBuildParamSetEqual
    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:1091,1
    - Dst: memoize_iterate
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1094,1
    - Dst: EMPTY_ENTRY_MEMORY_BYTES
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1098,1
    - Dst: CACHE_TUPLE_BYTES
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1101,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1107,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1108,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1117,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1125,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1127,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1131,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1136,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1136,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - node
    argTypes:
    - MemoizeState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1137
      start: 1079
    functionDepth: 4
    functionLinenumber: 1079
    functionLinenumberEnd: 1137
    functionName: ExecEndMemoize
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextDelete
    - memcpy
    - ExecEndNode
    - IsParallelWorker
    - outerPlanState
    - CACHE_TUPLE_BYTES
    - memoize_start_iterate
    - memoize_iterate
    - 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:1142,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1156,1
    - Dst: bms_nonempty_difference
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1162,1
    - Dst: cache_purge_all
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1163,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - node
    argTypes:
    - MemoizeState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1164
      start: 1139
    functionDepth: 3
    functionLinenumber: 1139
    functionLinenumberEnd: 1164
    functionName: ExecReScanMemoize
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached:
    - cache_purge_all
    - bms_nonempty_difference
    - outerPlanState
    - 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: 1176
      start: 1171
    functionDepth: 0
    functionLinenumber: 1171
    functionLinenumberEnd: 1176
    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:1198,1
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1199,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1200,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1201,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - MemoizeState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1202
      start: 1189
    functionDepth: 1
    functionLinenumber: 1189
    functionLinenumberEnd: 1202
    functionName: ExecMemoizeEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached:
    - mul_size
    - shm_toc_estimate_chunk
    - shm_toc_estimate_keys
    - add_size
    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:1221,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1223,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1225,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - MemoizeState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1227
      start: 1210
    functionDepth: 1
    functionLinenumber: 1210
    functionLinenumberEnd: 1227
    functionName: ExecMemoizeInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeMemoize.c
    functionUses: 0
    functionsReached:
    - memset
    - shm_toc_allocate
    - shm_toc_insert
    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:1239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - MemoizeState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1240
      start: 1235
    functionDepth: 1
    functionLinenumber: 1235
    functionLinenumberEnd: 1240
    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:1259,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeMemoize.c:1260,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - MemoizeState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1262
      start: 1248
    functionDepth: 0
    functionLinenumber: 1248
    functionLinenumberEnd: 1262
    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
      Src: /src/postgres/src/backend/executor/execPartition.c:229,1
    - Dst: ExecInitPartitionDispatchInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:239,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execPartition.c:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - estate
    - rel
    argTypes:
    - EState*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 243
    functionName: ExecSetupPartitionTupleRouting
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 6
    functionsReached:
    - RelationGetRelid
    - palloc0
    - ExecInitPartitionDispatchInfo
    linkageType: ''
    returnType: PartitionTupleRouting
    signature: 'PartitionTupleRouting *

      ExecSetupPartitionTupleRouting(EState *estate, Relation rel)'
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execPartition.c:276,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execPartition.c:284,1
    - Dst: GetPerTupleMemoryContext
      Src: /src/postgres/src/backend/executor/execPartition.c:284,1
    - Dst: ExecPartitionCheck
      Src: /src/postgres/src/backend/executor/execPartition.c:291,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/execPartition.c:300,1
    - Dst: FormPartitionKeyDatum
      Src: /src/postgres/src/backend/executor/execPartition.c:314,1
    - Dst: get_partition_for_tuple
      Src: /src/postgres/src/backend/executor/execPartition.c:321,1
    - Dst: ExecBuildSlotPartitionKeyDescription
      Src: /src/postgres/src/backend/executor/execPartition.c:325,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:327,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execPartition.c:327,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execPartition.c:327,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execPartition.c:328,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execPartition.c:329,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execPartition.c:330,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execPartition.c:331,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execPartition.c:333,1
    - Dst: errtable
      Src: /src/postgres/src/backend/executor/execPartition.c:335,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execPartition.c:345,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:348,1
    - Dst: ExecLookupResultRelByOid
      Src: /src/postgres/src/backend/executor/execPartition.c:358,1
    - Dst: CheckValidResultRel
      Src: /src/postgres/src/backend/executor/execPartition.c:364,1
    - Dst: ExecInitRoutingInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:370,1
    - Dst: ExecInitPartitionInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:376,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:381,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execPartition.c:391,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:394,1
    - Dst: ExecInitPartitionDispatchInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:413,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:418,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/executor/execPartition.c:435,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execPartition.c:438,1
    - Dst: ExecGetRootToChildMap
      Src: /src/postgres/src/backend/executor/execPartition.c:466,1
    - Dst: execute_attr_map_slot
      Src: /src/postgres/src/backend/executor/execPartition.c:469,1
    - Dst: ExecPartitionCheck
      Src: /src/postgres/src/backend/executor/execPartition.c:475,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execPartition.c:481,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execPartition.c:484,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: 487
      start: 264
    functionDepth: 5
    functionLinenumber: 264
    functionLinenumberEnd: 487
    functionName: ExecFindPartition
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 2
    functionsReached:
    - MemoryContextSwitchTo
    - CHECK_FOR_INTERRUPTS
    - GetPerTupleExprContext
    - ExecGetRootToChildMap
    - CheckValidResultRel
    - ExecBuildSlotPartitionKeyDescription
    - RelationGetRelationName
    - errdetail
    - RelationGetRelid
    - errtable
    - ExecInitPartitionInfo
    - ExecClearTuple
    - ExecInitRoutingInfo
    - FormPartitionKeyDatum
    - errmsg
    - get_partition_for_tuple
    - likely
    - GetPerTupleMemoryContext
    - ExecPartitionCheck
    - ExecInitPartitionDispatchInfo
    - OidIsValid
    - ExecLookupResultRelByOid
    - execute_attr_map_slot
    - Assert
    - ereport
    - errcode
    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: 22
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execPartition.c:514,1
    - Dst: table_open
      Src: /src/postgres/src/backend/executor/execPartition.c:516,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execPartition.c:518,1
    - Dst: InitResultRelInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:519,1
    - Dst: CheckValidResultRel
      Src: /src/postgres/src/backend/executor/execPartition.c:530,1
    - Dst: ExecOpenIndices
      Src: /src/postgres/src/backend/executor/execPartition.c:540,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:562,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:563,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:564,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:566,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:567,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:569,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:570,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/execPartition.c:581,1
    - Dst: build_attrmap_by_name
      Src: /src/postgres/src/backend/executor/execPartition.c:587,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:587,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:588,1
    - Dst: map_variable_attnos
      Src: /src/postgres/src/backend/executor/execPartition.c:591,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/executor/execPartition.c:594,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execPartition.c:600,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/execPartition.c:601,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execPartition.c:601,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execPartition.c:604,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:625,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:626,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:627,1
    - Dst: list_length
      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:632,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:633,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/execPartition.c:641,1
    - Dst: build_attrmap_by_name
      Src: /src/postgres/src/backend/executor/execPartition.c:648,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:648,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:649,1
    - Dst: map_variable_attnos
      Src: /src/postgres/src/backend/executor/execPartition.c:652,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/executor/execPartition.c:655,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:667,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:669,1
    - Dst: ExecBuildProjectionInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:672,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:673,1
    - Dst: ExecInitRoutingInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:677,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:685,1
    - Dst: RelationGetIndexList
      Src: /src/postgres/src/backend/executor/execPartition.c:700,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/execPartition.c:704,1
    - Dst: get_partition_ancestors
      Src: /src/postgres/src/backend/executor/execPartition.c:708,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execPartition.c:709,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/executor/execPartition.c:711,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/execPartition.c:711,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/executor/execPartition.c:712,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/execPartition.c:714,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:723,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:724,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execPartition.c:725,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execPartition.c:733,1
    - Dst: ExecGetRootToChildMap
      Src: /src/postgres/src/backend/executor/execPartition.c:736,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:738,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:739,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/execPartition.c:749,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/executor/execPartition.c:787,1
    - Dst: build_attrmap_by_name
      Src: /src/postgres/src/backend/executor/execPartition.c:790,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:790,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:791,1
    - Dst: map_variable_attnos
      Src: /src/postgres/src/backend/executor/execPartition.c:794,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/executor/execPartition.c:797,1
    - Dst: map_variable_attnos
      Src: /src/postgres/src/backend/executor/execPartition.c:801,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/executor/execPartition.c:804,1
    - Dst: adjust_partition_colnos
      Src: /src/postgres/src/backend/executor/execPartition.c:809,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/execPartition.c:814,1
    - Dst: ExecBuildUpdateProjection
      Src: /src/postgres/src/backend/executor/execPartition.c:819,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/executor/execPartition.c:837,1
    - Dst: map_variable_attnos
      Src: /src/postgres/src/backend/executor/execPartition.c:839,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/executor/execPartition.c:842,1
    - Dst: map_variable_attnos
      Src: /src/postgres/src/backend/executor/execPartition.c:846,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/executor/execPartition.c:849,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/execPartition.c:853,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execPartition.c:867,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execPartition.c:869,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/execPartition.c:883,1
    - Dst: build_attrmap_by_name
      Src: /src/postgres/src/backend/executor/execPartition.c:890,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:890,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:891,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execPartition.c:894,1
    - Dst: ExecInitMergeTupleSlots
      Src: /src/postgres/src/backend/executor/execPartition.c:895,1
    - Dst: map_variable_attnos
      Src: /src/postgres/src/backend/executor/execPartition.c:899,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/execPartition.c:899,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/executor/execPartition.c:902,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/execPartition.c:906,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/executor/execPartition.c:911,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execPartition.c:911,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execPartition.c:915,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execPartition.c:920,1
    - Dst: ExecBuildProjectionInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:933,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:936,1
    - Dst: adjust_partition_colnos_using_map
      Src: /src/postgres/src/backend/executor/execPartition.c:946,1
    - Dst: ExecBuildUpdateProjection
      Src: /src/postgres/src/backend/executor/execPartition.c:949,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:952,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execPartition.c:963,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: ExecInitQual
      Src: /src/postgres/src/backend/executor/execPartition.c:974,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execPartition.c:977,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 107
    argCount: 6
    argNames:
    - mtstate
    - estate
    - proute
    - dispatch
    - rootResultRelInfo
    - partidx
    argTypes:
    - ModifyTableState*
    - EState*
    - PartitionTupleRouting*
    - PartitionDispatch
    - ResultRelInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 497
    functionDepth: 7
    functionLinenumber: 497
    functionLinenumberEnd: 980
    functionName: ExecInitPartitionInfo
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - table_slot_create
    - list_length
    - castNode
    - ExecGetRootToChildMap
    - CheckValidResultRel
    - makeNode
    - adjust_partition_colnos
    - ExecBuildUpdateProjection
    - table_open
    - RelationGetIndexList
    - foreach
    - RelationGetForm
    - ExecInitQual
    - map_variable_attnos
    - ExecInitRoutingInfo
    - lfirst_node
    - linitial
    - ExecOpenIndices
    - elog
    - lappend
    - ExecInitMergeTupleSlots
    - InitResultRelInfo
    - list_member_oid
    - adjust_partition_colnos_using_map
    - lfirst
    - list_free
    - Assert
    - lappend_oid
    - RelationGetDescr
    - build_attrmap_by_name
    - unlikely
    - ExecBuildProjectionInfo
    - copyObject
    - lfirst_oid
    - get_partition_ancestors
    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:600,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/execPartition.c:601,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execPartition.c:601,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execPartition.c:604,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 598
    functionDepth: 7
    functionLinenumber: 598
    functionLinenumberEnd: 605
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 405
    functionsReached:
    - lappend
    - ExecInitQual
    - lfirst_node
    - castNode
    linkageType: ''
    returnType: void
    signature: void foreach(ll, wcoList)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/execPartition.c:704,1
    - Dst: get_partition_ancestors
      Src: /src/postgres/src/backend/executor/execPartition.c:708,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execPartition.c:709,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/executor/execPartition.c:711,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/execPartition.c:711,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/executor/execPartition.c:712,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/execPartition.c:714,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 702
    functionDepth: 6
    functionLinenumber: 702
    functionLinenumberEnd: 715
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 406
    functionsReached:
    - lappend_oid
    - foreach
    - list_member_oid
    - lfirst_oid
    - list_free
    - get_partition_ancestors
    linkageType: ''
    returnType: void
    signature: void foreach(lc, childIdxs)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: copyObject
      Src: /src/postgres/src/backend/executor/execPartition.c:911,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execPartition.c:911,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execPartition.c:915,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execPartition.c:920,1
    - Dst: ExecBuildProjectionInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:933,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:936,1
    - Dst: adjust_partition_colnos_using_map
      Src: /src/postgres/src/backend/executor/execPartition.c:946,1
    - Dst: ExecBuildUpdateProjection
      Src: /src/postgres/src/backend/executor/execPartition.c:949,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:952,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execPartition.c:963,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: ExecInitQual
      Src: /src/postgres/src/backend/executor/execPartition.c:974,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 908
    functionDepth: 7
    functionLinenumber: 908
    functionLinenumberEnd: 975
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 406
    functionsReached:
    - map_variable_attnos
    - ExecBuildUpdateProjection
    - RelationGetDescr
    - elog
    - ExecBuildProjectionInfo
    - lappend
    - copyObject
    - RelationGetForm
    - adjust_partition_colnos_using_map
    - ExecInitQual
    - makeNode
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, firstMergeActionList)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execPartition.c:1000,1
    - Dst: ExecGetRootToChildMap
      Src: /src/postgres/src/backend/executor/execPartition.c:1009,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/execPartition.c:1018,1
    - Dst: ResultRelInfo*::ri_FdwRoutine::BeginForeignInsert
      Src: /src/postgres/src/backend/executor/execPartition.c:1029,1
    - Dst: ResultRelInfo*::ri_FdwRoutine::GetForeignModifyBatchSize
      Src: /src/postgres/src/backend/executor/execPartition.c:1042,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:1046,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:1053,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execPartition.c:1064,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execPartition.c:1066,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/execPartition.c:1072,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/execPartition.c:1075,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execPartition.c:1084,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: 1085
      start: 988
    functionDepth: 5
    functionLinenumber: 988
    functionLinenumberEnd: 1085
    functionName: ExecInitRoutingInfo
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 2
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - ResultRelInfo*::ri_FdwRoutine::GetForeignModifyBatchSize
    - table_slot_create
    - ResultRelInfo*::ri_FdwRoutine::BeginForeignInsert
    - ExecGetRootToChildMap
    - repalloc
    - palloc
    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:1118,1
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/executor/execPartition.c:1119,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execPartition.c:1121,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execPartition.c:1128,1
    - Dst: table_open
      Src: /src/postgres/src/backend/executor/execPartition.c:1129,1
    - Dst: PartitionDirectoryLookup
      Src: /src/postgres/src/backend/executor/execPartition.c:1132,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execPartition.c:1134,1
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/executor/execPartition.c:1137,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:1142,1
    - Dst: build_attrmap_by_name_if_req
      Src: /src/postgres/src/backend/executor/execPartition.c:1153,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execPartition.c:1153,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/execPartition.c:1157,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/execPartition.c:1170,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execPartition.c:1182,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execPartition.c:1184,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/execPartition.c:1190,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/execPartition.c:1193,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execPartition.c:1206,1
    - Dst: InitResultRelInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:1208,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:1220,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execPartition.c:1224,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: 1227
      start: 1096
    functionDepth: 6
    functionLinenumber: 1096
    functionLinenumberEnd: 1227
    functionName: ExecInitPartitionDispatchInfo
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 2
    functionsReached:
    - RelationGetPartitionKey
    - MemoryContextSwitchTo
    - PartitionDirectoryLookup
    - Assert
    - RelationGetRelid
    - table_open
    - memset
    - RelationGetDescr
    - build_attrmap_by_name_if_req
    - MakeSingleTupleTableSlot
    - InitResultRelInfo
    - IsolationUsesXactSnapshot
    - repalloc
    - CreatePartitionDirectory
    - palloc
    - makeNode
    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:1252,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/execPartition.c:1255,1
    - Dst: ResultRelInfo*::ri_FdwRoutine::EndForeignInsert
      Src: /src/postgres/src/backend/executor/execPartition.c:1265,1
    - Dst: ExecCloseIndices
      Src: /src/postgres/src/backend/executor/execPartition.c:1275,1
    - Dst: table_close
      Src: /src/postgres/src/backend/executor/execPartition.c:1276,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 2
    argNames:
    - mtstate
    - proute
    argTypes:
    - ModifyTableState*
    - PartitionTupleRouting*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1278
      start: 1235
    functionDepth: 3
    functionLinenumber: 1235
    functionLinenumberEnd: 1278
    functionName: ExecCleanupTupleRouting
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 2
    functionsReached:
    - ExecCloseIndices
    - table_close
    - ExecDropSingleTupleTableSlot
    - ResultRelInfo*::ri_FdwRoutine::EndForeignInsert
    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:1309,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execPartition.c:1310,1
    - Dst: ExecPrepareExprList
      Src: /src/postgres/src/backend/executor/execPartition.c:1313,1
    - Dst: list_head
      Src: /src/postgres/src/backend/executor/execPartition.c:1316,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/execPartition.c:1326,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execPartition.c:1332,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/execPartition.c:1333,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execPartition.c:1333,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execPartition.c:1334,1
    - Dst: lnext
      Src: /src/postgres/src/backend/executor/execPartition.c:1336,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execPartition.c:1343,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: 1344
      start: 1296
    functionDepth: 7
    functionLinenumber: 1296
    functionLinenumberEnd: 1344
    functionName: FormPartitionKeyDatum
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 1
    functionsReached:
    - Assert
    - ExecPrepareExprList
    - ExecEvalExprSwitchContext
    - list_head
    - lnext
    - GetPerTupleExprContext
    - elog
    - slot_getattr
    - lfirst
    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:1422,1
    - Dst: partition_bound_accepts_nulls
      Src: /src/postgres/src/backend/executor/execPartition.c:1438,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/execPartition.c:1464,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/executor/execPartition.c:1464,1
    - Dst: partition_list_bsearch
      Src: /src/postgres/src/backend/executor/execPartition.c:1475,1
    - Dst: partition_rbound_datum_cmp
      Src: /src/postgres/src/backend/executor/execPartition.c:1515,1
    - Dst: partition_rbound_datum_cmp
      Src: /src/postgres/src/backend/executor/execPartition.c:1534,1
    - Dst: partition_range_datum_bsearch
      Src: /src/postgres/src/backend/executor/execPartition.c:1547,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execPartition.c:1565,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:1584,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 61
    argCount: 3
    argNames:
    - pd
    - values
    - isnull
    argTypes:
    - PartitionDispatch
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1604
      start: 1393
    functionDepth: 1
    functionLinenumber: 1393
    functionLinenumberEnd: 1604
    functionName: get_partition_for_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 1
    functionsReached:
    - Assert
    - partition_range_datum_bsearch
    - FunctionCall2Coll
    - DatumGetInt32
    - partition_list_bsearch
    - elog
    - compute_partition_hash_value
    - partition_rbound_datum_cmp
    - partition_bound_accepts_nulls
    linkageType: ''
    returnType: int
    signature: int get_partition_for_tuple(PartitionDispatch pd, Datum *values, bool
      *isnull)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/executor/execPartition.c:1620,1
    - Dst: get_partition_natts
      Src: /src/postgres/src/backend/executor/execPartition.c:1621,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/executor/execPartition.c:1623,1
    - Dst: check_enable_rls
      Src: /src/postgres/src/backend/executor/execPartition.c:1626,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/executor/execPartition.c:1630,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/executor/execPartition.c:1630,1
    - Dst: get_partition_col_attnum
      Src: /src/postgres/src/backend/executor/execPartition.c:1639,1
    - Dst: pg_attribute_aclcheck
      Src: /src/postgres/src/backend/executor/execPartition.c:1647,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/executor/execPartition.c:1647,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:1653,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:1654,1
    - Dst: pg_get_partkeydef_columns
      Src: /src/postgres/src/backend/executor/execPartition.c:1655,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:1669,1
    - Dst: get_partition_col_typid
      Src: /src/postgres/src/backend/executor/execPartition.c:1669,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/executor/execPartition.c:1671,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/executor/execPartition.c:1675,1
    - Dst: strlen
      Src: /src/postgres/src/backend/executor/execPartition.c:1678,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:1680,1
    - Dst: pg_mbcliplen
      Src: /src/postgres/src/backend/executor/execPartition.c:1683,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/executor/execPartition.c:1684,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/executor/execPartition.c:1685,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/executor/execPartition.c:1689,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 4
    argNames:
    - rel
    - values
    - isnull
    - maxfieldlen
    argTypes:
    - Relation
    - Datum*
    - bool*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1692
      start: 1613
    functionDepth: 3
    functionLinenumber: 1613
    functionLinenumberEnd: 1692
    functionName: ExecBuildSlotPartitionKeyDescription
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 1
    functionsReached:
    - getTypeOutputInfo
    - get_partition_natts
    - OidOutputFunctionCall
    - pg_mbcliplen
    - GetUserId
    - strlen
    - RelationGetPartitionKey
    - RelationGetRelid
    - pg_class_aclcheck
    - get_partition_col_typid
    - pg_get_partkeydef_columns
    - appendStringInfoString
    - pg_attribute_aclcheck
    - check_enable_rls
    - get_partition_col_attnum
    - appendStringInfo
    - appendBinaryStringInfo
    - appendStringInfoChar
    - initStringInfo
    linkageType: ''
    returnType: char
    signature: "char *\nExecBuildSlotPartitionKeyDescription(Relation rel,\n\t\t\t\t\t\t\t\t\t
      Datum *values,\n\t\t\t\t\t\t\t\t\t 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:1704,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:1706,1
    - Dst: adjust_partition_colnos_using_map
      Src: /src/postgres/src/backend/executor/execPartition.c:1708,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - colnos
    - leaf_part_rri
    argTypes:
    - List*
    - ResultRelInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1709
      start: 1701
    functionDepth: 6
    functionLinenumber: 1701
    functionLinenumberEnd: 1709
    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:1724,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execPartition.c:1728,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execPartition.c:1733,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execPartition.c:1735,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - colnos
    - attrMap
    argTypes:
    - List*
    - AttrMap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1740
      start: 1718
    functionDepth: 6
    functionLinenumber: 1718
    functionLinenumberEnd: 1740
    functionName: adjust_partition_colnos_using_map
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 3
    functionsReached:
    - elog
    - Assert
    - lappend_int
    - 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:1728,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execPartition.c:1733,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/executor/execPartition.c:1735,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1737
      start: 1726
    functionDepth: 6
    functionLinenumber: 1726
    functionLinenumberEnd: 1737
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 406
    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:1823,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execPartition.c:1825,1
    - Dst: CreatePartitionPruneState
      Src: /src/postgres/src/backend/executor/execPartition.c:1832,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execPartition.c:1834,1
    - Dst: ExecFindMatchingSubPlans
      Src: /src/postgres/src/backend/executor/execPartition.c:1842,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/executor/execPartition.c:1847,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execPartition.c:1849,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - estate
    argTypes:
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1852
      start: 1818
    functionDepth: 6
    functionLinenumber: 1818
    functionLinenumberEnd: 1852
    functionName: ExecDoInitialPruning
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 1
    functionsReached:
    - CreatePartitionPruneState
    - ExecFindMatchingSubPlans
    - bms_add_members
    - lfirst_node
    - foreach
    - lappend
    linkageType: ''
    returnType: void
    signature: void ExecDoInitialPruning(EState *estate)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/executor/execPartition.c:1886,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/executor/execPartition.c:1890,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execPartition.c:1891,1
    - Dst: bmsToString
      Src: /src/postgres/src/backend/executor/execPartition.c:1892,1
    - Dst: bmsToString
      Src: /src/postgres/src/backend/executor/execPartition.c:1893,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/execPartition.c:1900,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:1901,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/executor/execPartition.c:1905,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:1911,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/executor/execPartition.c:1912,1
    - Dst: InitExecPartitionPruneContexts
      Src: /src/postgres/src/backend/executor/execPartition.c:1929,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: 1934
      start: 1874
    functionDepth: 4
    functionLinenumber: 1874
    functionLinenumberEnd: 1934
    functionName: ExecInitPartitionExecPruning
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 1
    functionsReached:
    - bmsToString
    - Assert
    - InitExecPartitionPruneContexts
    - bms_add_range
    - list_nth
    - bms_equal
    - elog
    - list_nth_node
    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:1981,1
    - Dst: CreatePartitionDirectory
      Src: /src/postgres/src/backend/executor/execPartition.c:1986,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:1988,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:1989,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execPartition.c:1995,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/executor/execPartition.c:2002,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/execPartition.c:2014,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execPartition.c:2019,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execPartition.c:2021,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:2022,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execPartition.c:2028,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execPartition.c:2036,1
    - Dst: ExecGetRangeTableRelation
      Src: /src/postgres/src/backend/executor/execPartition.c:2048,1
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/executor/execPartition.c:2053,1
    - Dst: PartitionDirectoryLookup
      Src: /src/postgres/src/backend/executor/execPartition.c:2054,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execPartition.c:2076,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/executor/execPartition.c:2079,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execPartition.c:2084,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execPartition.c:2103,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execPartition.c:2104,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execPartition.c:2110,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/executor/execPartition.c:2166,1
    - Dst: InitPartitionPruneContext
      Src: /src/postgres/src/backend/executor/execPartition.c:2181,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/executor/execPartition.c:2200,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2211,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2217,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 80
    argCount: 3
    argNames:
    - estate
    - pruneinfo
    - all_leafpart_rtis
    argTypes:
    - EState*
    - PartitionPruneInfo*
    - Bitmapset**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2228
      start: 1968
    functionDepth: 8
    functionLinenumber: 1968
    functionLinenumberEnd: 2228
    functionName: CreatePartitionPruneState
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 1
    functionsReached:
    - bms_copy
    - list_length
    - RelationGetPartitionKey
    - PartitionDirectoryLookup
    - InitPartitionPruneContext
    - memcmp
    - foreach
    - memcpy
    - bms_next_member
    - lfirst_node
    - CreateExprContext
    - OidIsValid
    - palloc
    - ExecGetRangeTableRelation
    - bms_add_member
    - Assert
    - bms_add_members
    - AllocSetContextCreate
    - 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:2036,1
    - Dst: ExecGetRangeTableRelation
      Src: /src/postgres/src/backend/executor/execPartition.c:2048,1
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/executor/execPartition.c:2053,1
    - Dst: PartitionDirectoryLookup
      Src: /src/postgres/src/backend/executor/execPartition.c:2054,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execPartition.c:2076,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/executor/execPartition.c:2079,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execPartition.c:2084,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execPartition.c:2103,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execPartition.c:2104,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execPartition.c:2110,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/executor/execPartition.c:2166,1
    - Dst: InitPartitionPruneContext
      Src: /src/postgres/src/backend/executor/execPartition.c:2181,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/executor/execPartition.c:2200,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2211,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2217,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 58
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2223
      start: 2034
    functionDepth: 5
    functionLinenumber: 2034
    functionLinenumberEnd: 2223
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 408
    functionsReached:
    - RelationGetPartitionKey
    - PartitionDirectoryLookup
    - bms_add_members
    - lfirst_node
    - bms_copy
    - InitPartitionPruneContext
    - memcmp
    - OidIsValid
    - memcpy
    - palloc
    - bms_next_member
    - ExecGetRangeTableRelation
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, partrelpruneinfos)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:2245,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execPartition.c:2256,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execPartition.c:2264,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execPartition.c:2267,1
    - Dst: list_head
      Src: /src/postgres/src/backend/executor/execPartition.c:2268,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execPartition.c:2272,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:2275,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:2275,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2279,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execPartition.c:2284,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execPartition.c:2287,1
    - Dst: PruneCxtStateIdx
      Src: /src/postgres/src/backend/executor/execPartition.c:2289,1
    - Dst: ExecInitExprWithParams
      Src: /src/postgres/src/backend/executor/execPartition.c:2302,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/execPartition.c:2306,1
    - Dst: lnext
      Src: /src/postgres/src/backend/executor/execPartition.c:2308,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: 2312
      start: 2233
    functionDepth: 3
    functionLinenumber: 2233
    functionLinenumberEnd: 2312
    functionName: InitPartitionPruneContext
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 2
    functionsReached:
    - Assert
    - PruneCxtStateIdx
    - list_head
    - IsA
    - palloc0
    - list_length
    - ExecInitExprWithParams
    - lnext
    - bms_is_member
    - ExecInitExpr
    - lfirst
    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:2267,1
    - Dst: list_head
      Src: /src/postgres/src/backend/executor/execPartition.c:2268,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execPartition.c:2272,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:2275,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execPartition.c:2275,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2279,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execPartition.c:2284,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execPartition.c:2287,1
    - Dst: PruneCxtStateIdx
      Src: /src/postgres/src/backend/executor/execPartition.c:2289,1
    - Dst: ExecInitExprWithParams
      Src: /src/postgres/src/backend/executor/execPartition.c:2302,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/execPartition.c:2306,1
    - Dst: lnext
      Src: /src/postgres/src/backend/executor/execPartition.c:2308,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2311
      start: 2265
    functionDepth: 3
    functionLinenumber: 2265
    functionLinenumberEnd: 2311
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 408
    functionsReached:
    - Assert
    - PruneCxtStateIdx
    - list_head
    - IsA
    - ExecInitExprWithParams
    - list_length
    - lnext
    - bms_is_member
    - ExecInitExpr
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, pruning_steps)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:2348,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:2349,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/executor/execPartition.c:2356,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execPartition.c:2365,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2368,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:2370,1
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/executor/execPartition.c:2407,1
    - Dst: PartitionDirectoryLookup
      Src: /src/postgres/src/backend/executor/execPartition.c:2408,1
    - Dst: InitPartitionPruneContext
      Src: /src/postgres/src/backend/executor/execPartition.c:2411,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/executor/execPartition.c:2421,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:2439,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2444,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/executor/execPartition.c:2452,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2454,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2468,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2469,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/executor/execPartition.c:2472,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execPartition.c:2475,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: 2477
      start: 2335
    functionDepth: 4
    functionLinenumber: 2335
    functionLinenumberEnd: 2477
    functionName: InitExecPartitionPruneContexts
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 1
    functionsReached:
    - pfree
    - RelationGetPartitionKey
    - Assert
    - PartitionDirectoryLookup
    - InitPartitionPruneContext
    - bms_is_empty
    - palloc0
    - bms_next_member
    - bms_num_members
    - bms_free
    - 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:2506,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execPartition.c:2507,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execPartition.c:2513,1
    - Dst: find_matching_subplans_recurse
      Src: /src/postgres/src/backend/executor/execPartition.c:2530,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/execPartition.c:2539,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/executor/execPartition.c:2543,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execPartition.c:2545,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/executor/execPartition.c:2548,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/executor/execPartition.c:2550,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/execPartition.c:2552,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - prunestate
    - initial_prune
    - validsubplan_rtis
    argTypes:
    - PartitionPruneState*
    - bool
    - Bitmapset**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2555
      start: 2492
    functionDepth: 4
    functionLinenumber: 2492
    functionLinenumberEnd: 2555
    functionName: ExecFindMatchingSubPlans
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 2
    functionsReached:
    - ResetExprContext
    - Assert
    - MemoryContextSwitchTo
    - bms_add_members
    - bms_copy
    - MemoryContextReset
    - 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:2576,1
    - Dst: get_matching_partitions
      Src: /src/postgres/src/backend/executor/execPartition.c:2584,1
    - Dst: get_matching_partitions
      Src: /src/postgres/src/backend/executor/execPartition.c:2587,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2594,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2598,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/execPartition.c:2606,1
    - Dst: find_matching_subplans_recurse
      Src: /src/postgres/src/backend/executor/execPartition.c:2614,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: 2630
      start: 2565
    functionDepth: 3
    functionLinenumber: 2565
    functionLinenumberEnd: 2630
    functionName: find_matching_subplans_recurse
    functionSourceFile: /src/postgres/src/backend/executor/execPartition.c
    functionUses: 2
    functionsReached:
    - check_stack_depth
    - get_matching_partitions
    - find_matching_subplans_recurse
    - bms_next_member
    - bms_add_member
    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: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:219,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:225,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:226,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:229,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - winstate
    - perfuncstate
    - peraggstate
    argTypes:
    - WindowAggState*
    - WindowStatePerFunc
    - WindowStatePerAgg
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 235
    functionName: initialize_windowaggregate
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - MemoryContextReset
    - MemoryContextSwitchTo
    - datumCopy
    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:246,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:256,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:262,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:264,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:266,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:273,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:275,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:277,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:293,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:309,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:310,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:315,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:329,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:330,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:330,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:339,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:346,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:353,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:354,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:355,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:356,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:375,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:375,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:379,1
    - Dst: DatumIsReadWriteExpandedObject
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:380,1
    - Dst: MemoryContextGetParent
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:383,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:383,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:386,1
    - Dst: DatumIsReadWriteExpandedObject
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:392,1
    - Dst: DeleteExpandedObject
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:395,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:397,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:397,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:401,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 60
    argCount: 3
    argNames:
    - winstate
    - perfuncstate
    - peraggstate
    argTypes:
    - WindowAggState*
    - WindowStatePerFunc
    - WindowStatePerAgg
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 404
    functionName: advance_windowaggregate
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - DatumGetEOHP
    - datumCopy
    - ExecEvalExpr
    - pfree
    - LOCAL_FCINFO
    - DatumIsReadWriteExpandedObject
    - foreach
    - DeleteExpandedObject
    - DatumGetPointer
    - FunctionCallInvoke
    - errmsg
    - InitFunctionCallInfoData
    - OidIsValid
    - MemoryContextGetParent
    - lfirst
    - Assert
    - ereport
    - DatumGetBool
    - errcode
    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:423,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:433,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:439,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:441,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:443,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:450,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:452,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:454,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:470,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:477,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:488,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:498,1
    - Dst: initialize_windowaggregate
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:499,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:510,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:517,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:525,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:544,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:544,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:548,1
    - Dst: DatumIsReadWriteExpandedObject
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:549,1
    - Dst: MemoryContextGetParent
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:552,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:552,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:555,1
    - Dst: DatumIsReadWriteExpandedObject
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:561,1
    - Dst: DeleteExpandedObject
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:564,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:566,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:566,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:570,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 58
    argCount: 3
    argNames:
    - winstate
    - perfuncstate
    - peraggstate
    argTypes:
    - WindowAggState*
    - WindowStatePerFunc
    - WindowStatePerAgg
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 418
    functionDepth: 2
    functionLinenumber: 418
    functionLinenumberEnd: 575
    functionName: advance_windowaggregate_base
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - pfree
    - LOCAL_FCINFO
    - MemoryContextSwitchTo
    - Assert
    - InitFunctionCallInfoData
    - DatumGetEOHP
    - DatumIsReadWriteExpandedObject
    - MemoryContextGetParent
    - datumCopy
    - foreach
    - elog
    - ExecEvalExpr
    - DeleteExpandedObject
    - DatumGetBool
    - DatumGetPointer
    - initialize_windowaggregate
    - lfirst
    - FunctionCallInvoke
    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:589,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:594,1
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:596,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:601,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:606,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:631,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:634,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:642,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:648,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: 649
      start: 581
    functionDepth: 1
    functionLinenumber: 581
    functionLinenumberEnd: 649
    functionName: finalize_windowaggregate
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - LOCAL_FCINFO
    - MemoryContextSwitchTo
    - InitFunctionCallInfoData
    - MakeExpandedObjectReadOnly
    - OidIsValid
    - FunctionCallInvoke
    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:736,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:738,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:789,1
    - Dst: window_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:814,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:816,1
    - Dst: advance_windowaggregate_base
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:834,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:846,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:850,1
    - Dst: WinSetMarkPosition
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:865,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:878,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:884,1
    - Dst: initialize_windowaggregate
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:891,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:898,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:898,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:919,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:934,1
    - Dst: window_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:936,1
    - Dst: row_is_in_frame
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:945,1
    - Dst: advance_windowaggregate
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:965,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:972,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:976,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:980,1
    - Dst: finalize_windowaggregate
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:994,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1008,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1010,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1013,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 113
    argCount: 1
    argNames:
    - winstate
    argTypes:
    - WindowAggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1021
      start: 662
    functionDepth: 3
    functionLinenumber: 662
    functionLinenumberEnd: 1021
    functionName: eval_windowaggregates
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - MemoryContextReset
    - advance_windowaggregate
    - datumCopy
    - advance_windowaggregate_base
    - pfree
    - TupIsNull
    - WinSetMarkPosition
    - row_is_in_frame
    - ExecClearTuple
    - DatumGetPointer
    - elog
    - OidIsValid
    - initialize_windowaggregate
    - ResetExprContext
    - Assert
    - window_gettupleslot
    - update_frameheadpos
    - finalize_windowaggregate
    linkageType: ''
    returnType: void
    signature: void eval_windowaggregates(WindowAggState *winstate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1036,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1039,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1047,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1057,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1069,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1073,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - winstate
    - perfuncstate
    - result
    - isnull
    argTypes:
    - WindowAggState*
    - WindowStatePerFunc
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 1032
    functionDepth: 1
    functionLinenumber: 1032
    functionLinenumberEnd: 1074
    functionName: eval_windowfunction
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - LOCAL_FCINFO
    - MemoryContextSwitchTo
    - InitFunctionCallInfoData
    - datumCopy
    - FunctionCallInvoke
    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:1092,1
    - Dst: tuplestore_begin_heap
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1095,1
    - Dst: tuplestore_set_eflags
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1105,1
    - Dst: tuplestore_alloc_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1121,1
    - Dst: tuplestore_alloc_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1126,1
    - Dst: tuplestore_alloc_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1139,1
    - Dst: tuplestore_alloc_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1141,1
    - Dst: tuplestore_alloc_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1162,1
    - Dst: tuplestore_alloc_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1167,1
    - Dst: tuplestore_alloc_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1184,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 29
    argCount: 1
    argNames:
    - winstate
    argTypes:
    - WindowAggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1186
      start: 1084
    functionDepth: 1
    functionLinenumber: 1084
    functionLinenumberEnd: 1186
    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: 8
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1195,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1211,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1213,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1215,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1221,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1223,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1225,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1226,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1237,1
    - Dst: prepare_tuplestore
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1238,1
    - Dst: tuplestore_puttupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1273,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 44
    argCount: 1
    argNames:
    - winstate
    argTypes:
    - WindowAggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1275
      start: 1192
    functionDepth: 2
    functionLinenumber: 1192
    functionLinenumberEnd: 1275
    functionName: begin_partition
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - ExecProcNode
    - TupIsNull
    - unlikely
    - outerPlanState
    - ExecCopySlot
    - prepare_tuplestore
    - ExecClearTuple
    - 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:1302,1
    - Dst: tuplestore_in_memory
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1316,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1319,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1322,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1326,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1327,1
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1343,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1348,1
    - Dst: tuplestore_puttupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1362,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1367,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 36
    argCount: 2
    argNames:
    - winstate
    - pos
    argTypes:
    - WindowAggState*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1368
      start: 1281
    functionDepth: 4
    functionLinenumber: 1281
    functionLinenumberEnd: 1368
    functionName: spool_tuples
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - ExecQualAndReset
    - Assert
    - MemoryContextSwitchTo
    - tuplestore_in_memory
    - ExecProcNode
    - TupIsNull
    - outerPlanState
    - ExecCopySlot
    - 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:1395,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1396,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1400,1
    - Dst: tuplestore_clear
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1404,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - winstate
    argTypes:
    - WindowAggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1407
      start: 1375
    functionDepth: 1
    functionLinenumber: 1375
    functionLinenumberEnd: 1407
    functionName: release_partition
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - MemoryContextReset
    - tuplestore_clear
    linkageType: ''
    returnType: void
    signature: void release_partition(WindowAggState *winstate)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1430,1
    - Dst: update_frameheadpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1436,1
    - Dst: are_peers
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1457,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1461,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1467,1
    - Dst: update_frametailpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1479,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1484,1
    - Dst: update_grouptailpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1505,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 44
    argCount: 3
    argNames:
    - winstate
    - pos
    - slot
    argTypes:
    - WindowAggState*
    - int64
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1513
      start: 1425
    functionDepth: 2
    functionLinenumber: 1425
    functionLinenumberEnd: 1513
    functionName: row_is_in_frame
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 1
    functionsReached:
    - Assert
    - are_peers
    - update_grouptailpos
    - update_frameheadpos
    - DatumGetInt64
    - update_frametailpos
    linkageType: ''
    returnType: int
    signature: int row_is_in_frame(WindowAggState *winstate, int64 pos, TupleTableSlot
      *slot)
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1536,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1559,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1570,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1573,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1576,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1578,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1581,1
    - Dst: are_peers
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1583,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1588,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1589,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1596,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1603,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1615,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1636,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1651,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1654,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1657,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1659,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1662,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1669,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1671,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1691,1
    - Dst: FunctionCall5Coll
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1691,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1696,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1697,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1702,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1703,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1719,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1727,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1730,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1733,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1735,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1738,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1742,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1745,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1746,1
    - Dst: are_peers
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1749,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1753,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1757,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1760,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1762,1
    CyclomaticComplexity: 51
    EdgeCount: 51
    ICount: 115
    argCount: 1
    argNames:
    - winstate
    argTypes:
    - WindowAggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1763
      start: 1525
    functionDepth: 5
    functionLinenumber: 1525
    functionLinenumberEnd: 1763
    functionName: update_frameheadpos
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 2
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - TupIsNull
    - slot_getattr
    - are_peers
    - BoolGetDatum
    - FunctionCall5Coll
    - tuplestore_gettupleslot
    - elog
    - DatumGetInt64
    - ExecCopySlot
    - DatumGetBool
    - spool_tuples
    - ExecClearTuple
    - tuplestore_select_read_pointer
    linkageType: ''
    returnType: void
    signature: void update_frameheadpos(WindowAggState *winstate)
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1786,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1791,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1808,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1811,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1823,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1826,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1829,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1831,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1834,1
    - Dst: are_peers
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1837,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1842,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1843,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1850,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1857,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1869,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1890,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1905,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1908,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1911,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1913,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1916,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1923,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1925,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1945,1
    - Dst: FunctionCall5Coll
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1945,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1950,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1951,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1956,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1957,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1973,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1981,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1984,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1987,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1989,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1992,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1996,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:1999,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2000,1
    - Dst: are_peers
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2003,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2007,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2011,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2014,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2016,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 117
    argCount: 1
    argNames:
    - winstate
    argTypes:
    - WindowAggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2017
      start: 1775
    functionDepth: 5
    functionLinenumber: 1775
    functionLinenumberEnd: 2017
    functionName: update_frametailpos
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - TupIsNull
    - slot_getattr
    - are_peers
    - BoolGetDatum
    - FunctionCall5Coll
    - tuplestore_gettupleslot
    - elog
    - DatumGetInt64
    - ExecCopySlot
    - DatumGetBool
    - spool_tuples
    - ExecClearTuple
    - tuplestore_select_read_pointer
    linkageType: ''
    returnType: void
    signature: void update_frametailpos(WindowAggState *winstate)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2035,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2040,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2043,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2054,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2055,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2061,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2062,1
    - Dst: are_peers
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2066,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2070,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2073,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - winstate
    argTypes:
    - WindowAggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2074
      start: 2025
    functionDepth: 5
    functionLinenumber: 2025
    functionLinenumberEnd: 2074
    functionName: update_grouptailpos
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - are_peers
    - tuplestore_gettupleslot
    - ExecClearTuple
    - spool_tuples
    - tuplestore_select_read_pointer
    linkageType: ''
    returnType: void
    signature: void update_grouptailpos(WindowAggState *winstate)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2084,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2093,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2099,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2100,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2104,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2105,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2106,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2108,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2108,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2111,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2115,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2118,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2119,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2120,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2126,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2127,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2131,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2132,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2133,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2135,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2135,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2138,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2142,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2145,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2146,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2147,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2151
      start: 2081
    functionDepth: 2
    functionLinenumber: 2081
    functionLinenumberEnd: 2151
    functionName: calculate_frame_offsets
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - errmsg
    - exprType
    - Assert
    - get_typlenbyval
    - ExecEvalExprSwitchContext
    - datumCopy
    - ereport
    - castNode
    - DatumGetInt64
    - errcode
    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:2165,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2171,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2181,1
    - Dst: calculate_frame_offsets
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2182,1
    - Dst: begin_partition
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2190,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2207,1
    - Dst: release_partition
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2213,1
    - Dst: begin_partition
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2217,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2218,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2235,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2252,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2258,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2259,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2261,1
    - Dst: are_peers
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2262,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2269,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2273,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2275,1
    - Dst: eval_windowfunction
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2291,1
    - Dst: eval_windowaggregates
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2300,1
    - Dst: update_frameheadpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2314,1
    - Dst: update_frametailpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2316,1
    - Dst: update_grouptailpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2318,1
    - Dst: tuplestore_trim
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2323,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2332,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2342,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2403,1
    - Dst: InstrCountFiltered1
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2405,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 92
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2421
      start: 2162
    functionDepth: 6
    functionLinenumber: 2162
    functionLinenumberEnd: 2421
    functionName: ExecWindowAgg
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - CHECK_FOR_INTERRUPTS
    - release_partition
    - calculate_frame_offsets
    - castNode
    - tuplestore_select_read_pointer
    - begin_partition
    - tuplestore_trim
    - InstrCountFiltered1
    - ExecCopySlot
    - ExecQual
    - ExecClearTuple
    - update_frametailpos
    - eval_windowaggregates
    - are_peers
    - update_grouptailpos
    - elog
    - spool_tuples
    - ExecProject
    - ResetExprContext
    - Assert
    - tuplestore_gettupleslot
    - update_frameheadpos
    - unlikely
    - eval_windowfunction
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecWindowAgg(PlanState *pstate)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2448,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2453,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2466,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2469,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2473,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2484,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2489,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2492,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2502,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2518,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2519,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2519,1
    - Dst: ExecCreateScanSlotFromOuterPlan
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2525,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2536,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2538,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2540,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2542,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2557,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2562,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2569,1
    - Dst: ExecAssignProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2570,1
    - Dst: execTuplesMatchPrepare
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2575,1
    - Dst: execTuplesMatchPrepare
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2584,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2597,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2598,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2603,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2604,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2610,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2612,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2619,1
    - Dst: equal
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2625,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2626,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2643,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2643,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2646,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2647,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2648,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2653,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2656,1
    - Dst: initialize_peragg
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2671,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2676,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2684,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2686,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2697,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2712,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2714,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2718,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2719,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2720,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2721,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 115
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - WindowAgg*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2732
      start: 2430
    functionDepth: 11
    functionLinenumber: 2430
    functionLinenumberEnd: 2732
    functionName: ExecInitWindowAgg
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 1
    functionsReached:
    - fmgr_info_set_expr
    - ExecCreateScanSlotFromOuterPlan
    - list_length
    - ExecAssignProjectionInfo
    - InvokeFunctionExecuteHook
    - contain_volatile_functions
    - makeNode
    - GetUserId
    - object_aclcheck
    - get_typlenbyval
    - equal
    - ExecAssignExprContext
    - execTuplesMatchPrepare
    - foreach
    - ExecInitQual
    - fmgr_info_cxt
    - initialize_peragg
    - aclcheck_error
    - ExecInitResultTupleSlotTL
    - ExecInitExtraTupleSlot
    - fmgr_info
    - ExecInitNode
    - elog
    - outerPlan
    - outerPlanState
    - OidIsValid
    - ExecInitExpr
    - lfirst
    - Assert
    - get_func_name
    - palloc0
    - AllocSetContextCreate
    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:2746,1
    - Dst: release_partition
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2752,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2757,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2759,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2760,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2762,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2763,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2765,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2766,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - node
    argTypes:
    - WindowAggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2767
      start: 2738
    functionDepth: 4
    functionLinenumber: 2738
    functionLinenumberEnd: 2767
    functionName: ExecEndWindowAgg
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 1
    functionsReached:
    - pfree
    - MemoryContextDelete
    - tuplestore_end
    - ExecEndNode
    - release_partition
    - outerPlanState
    linkageType: ''
    returnType: void
    signature: void ExecEndWindowAgg(WindowAggState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2776,1
    - Dst: release_partition
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2783,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2786,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2787,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2788,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2789,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2790,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2792,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2794,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2797,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2798,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2805,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - node
    argTypes:
    - WindowAggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2806
      start: 2773
    functionDepth: 2
    functionLinenumber: 2773
    functionLinenumberEnd: 2806
    functionName: ExecReScanWindowAgg
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - release_partition
    - MemSet
    - outerPlanState
    - 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:2837,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2840,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2842,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2842,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2845,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2845,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2846,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2847,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2849,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2869,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2876,1
    - Dst: contain_subplans
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2878,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2913,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2914,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2915,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2916,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2918,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2919,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2921,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2924,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2925,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2926,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2928,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2930,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2933,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2934,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2935,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2938,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2940,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2943,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2944,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2945,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2955,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2956,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2957,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2958,1
    - Dst: resolve_aggregate_transtype
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2967,1
    - Dst: build_aggregate_transfn_expr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2973,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2985,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2986,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2988,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2990,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2991,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2994,1
    - Dst: build_aggregate_finalfn_expr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:2996,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3003,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3004,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3008,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3011,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3019,1
    - Dst: GetAggInitVal
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3025,1
    - Dst: IsBinaryCoercible
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3038,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3039,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3040,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3041,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3053,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3055,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3056,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3057,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3073,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3075,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3081,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 95
    argCount: 3
    argNames:
    - winstate
    - wfunc
    - peraggstate
    argTypes:
    - WindowAggState*
    - WindowFunc*
    - WindowStatePerAgg
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3084
      start: 2813
    functionDepth: 2
    functionLinenumber: 2813
    functionLinenumberEnd: 3084
    functionName: initialize_peragg
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 1
    functionsReached:
    - fmgr_info_set_expr
    - HeapTupleIsValid
    - list_length
    - InvokeFunctionExecuteHook
    - contain_volatile_functions
    - SysCacheGetAttr
    - build_aggregate_finalfn_expr
    - object_aclcheck
    - exprType
    - get_typlenbyval
    - ReleaseSysCache
    - contain_subplans
    - GETSTRUCT
    - foreach
    - format_procedure
    - build_aggregate_transfn_expr
    - errmsg
    - GetAggInitVal
    - aclcheck_error
    - fmgr_info
    - elog
    - IsBinaryCoercible
    - OidIsValid
    - ObjectIdGetDatum
    - lfirst
    - get_func_name
    - ereport
    - SearchSysCache1
    - AllocSetContextCreate
    - resolve_aggregate_transtype
    - errcode
    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:3094,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3095,1
    - Dst: OidInputFunctionCall
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3096,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3098,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - textInitVal
    - transtype
    argTypes:
    - Datum
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3100
      start: 3086
    functionDepth: 1
    functionLinenumber: 3086
    functionLinenumberEnd: 3100
    functionName: GetAggInitVal
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 2
    functionsReached:
    - pfree
    - getTypeInputInfo
    - OidInputFunctionCall
    - TextDatumGetCString
    linkageType: ''
    returnType: Datum
    signature: Datum GetAggInitVal(Datum textInitVal, Oid transtype)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - winstate
    - slot1
    - slot2
    argTypes:
    - WindowAggState*
    - TupleTableSlot*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3122
      start: 3108
    functionDepth: 4
    functionLinenumber: 3108
    functionLinenumberEnd: 3122
    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:3138,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3145,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3151,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3153,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3155,1
    - Dst: tuplestore_skiptuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3162,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3165,1
    - Dst: tuplestore_skiptuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3170,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3173,1
    - Dst: tuplestore_advance
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3185,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3199,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3200,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3205,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3206,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3210,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3212,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 3
    argNames:
    - winobj
    - pos
    - slot
    argTypes:
    - WindowObject
    - int64
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3215
      start: 3131
    functionDepth: 5
    functionLinenumber: 3131
    functionLinenumberEnd: 3215
    functionName: window_gettupleslot
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - CHECK_FOR_INTERRUPTS
    - tuplestore_skiptuples
    - tuplestore_gettupleslot
    - elog
    - tuplestore_advance
    - spool_tuples
    - tuplestore_select_read_pointer
    linkageType: ''
    returnType: bool
    signature: bool window_gettupleslot(WindowObject winobj, int64 pos, TupleTableSlot
      *slot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3238,1
    - Dst: WindowObjectIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3238,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3241,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - winobj
    - sz
    argTypes:
    - WindowObject
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3243
      start: 3235
    functionDepth: 1
    functionLinenumber: 3235
    functionLinenumberEnd: 3243
    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:3253,1
    - Dst: WindowObjectIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - winobj
    argTypes:
    - WindowObject
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3255
      start: 3250
    functionDepth: 1
    functionLinenumber: 3250
    functionLinenumberEnd: 3255
    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:3268,1
    - Dst: WindowObjectIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3268,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - winobj
    argTypes:
    - WindowObject
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3271
      start: 3265
    functionDepth: 5
    functionLinenumber: 3265
    functionLinenumberEnd: 3271
    functionName: WinGetPartitionRowCount
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - spool_tuples
    - Assert
    - WindowObjectIsValid
    linkageType: ''
    returnType: int64
    signature: int64 WinGetPartitionRowCount(WindowObject winobj)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3288,1
    - Dst: WindowObjectIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3288,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3292,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3293,1
    - Dst: tuplestore_skiptuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3296,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3301,1
    - Dst: tuplestore_skiptuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3304,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - winobj
    - markpos
    argTypes:
    - WindowObject
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3309
      start: 3283
    functionDepth: 1
    functionLinenumber: 3283
    functionLinenumberEnd: 3309
    functionName: WinSetMarkPosition
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 1
    functionsReached:
    - Assert
    - tuplestore_skiptuples
    - elog
    - WindowObjectIsValid
    - tuplestore_select_read_pointer
    linkageType: ''
    returnType: void
    signature: void WinSetMarkPosition(WindowObject winobj, int64 markpos)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3327,1
    - Dst: WindowObjectIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3327,1
    - Dst: window_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3342,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3343,1
    - Dst: window_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3345,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3346,1
    - Dst: are_peers
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3349,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3351,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3352,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - winobj
    - pos1
    - pos2
    argTypes:
    - WindowObject
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3355
      start: 3318
    functionDepth: 6
    functionLinenumber: 3318
    functionLinenumberEnd: 3355
    functionName: WinRowsArePeers
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - Assert
    - are_peers
    - window_gettupleslot
    - elog
    - ExecClearTuple
    - WindowObjectIsValid
    linkageType: ''
    returnType: bool
    signature: bool WinRowsArePeers(WindowObject winobj, int64 pos1, int64 pos2)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3386,1
    - Dst: WindowObjectIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3386,1
    - Dst: spool_tuples
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3400,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3404,1
    - Dst: window_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3409,1
    - Dst: WinSetMarkPosition
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3423,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3425,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3425,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 7
    argNames:
    - winobj
    - argno
    - relpos
    - seektype
    - set_mark
    - isnull
    - isout
    argTypes:
    - WindowObject
    - int
    - int
    - int
    - bool
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3428
      start: 3375
    functionDepth: 6
    functionLinenumber: 3375
    functionLinenumberEnd: 3428
    functionName: WinGetFuncArgInPartition
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - Assert
    - WinSetMarkPosition
    - window_gettupleslot
    - elog
    - ExecEvalExpr
    - list_nth
    - spool_tuples
    - WindowObjectIsValid
    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: 33
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3474,1
    - Dst: WindowObjectIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3474,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3482,1
    - Dst: update_frameheadpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3489,1
    - Dst: update_grouptailpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3516,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3520,1
    - Dst: update_grouptailpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3527,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3531,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3541,1
    - Dst: update_frametailpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3550,1
    - Dst: update_frameheadpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3572,1
    - Dst: update_grouptailpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3578,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3582,1
    - Dst: update_frameheadpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3587,1
    - Dst: update_grouptailpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3593,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3597,1
    - Dst: update_frameheadpos
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3605,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3611,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3618,1
    - Dst: window_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3623,1
    - Dst: row_is_in_frame
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3627,1
    - Dst: WinSetMarkPosition
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3633,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3635,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3635,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 115
    argCount: 7
    argNames:
    - winobj
    - argno
    - relpos
    - seektype
    - set_mark
    - isnull
    - isout
    argTypes:
    - WindowObject
    - int
    - int
    - int
    - bool
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3643
      start: 3463
    functionDepth: 6
    functionLinenumber: 3463
    functionLinenumberEnd: 3643
    functionName: WinGetFuncArgInFrame
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - Min
    - Assert
    - WinSetMarkPosition
    - update_grouptailpos
    - row_is_in_frame
    - window_gettupleslot
    - update_frameheadpos
    - elog
    - Max
    - ExecEvalExpr
    - list_nth
    - WindowObjectIsValid
    - update_frametailpos
    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:3664,1
    - Dst: WindowObjectIsValid
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3664,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3670,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeWindowAgg.c:3670,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - winobj
    - argno
    - isnull
    argTypes:
    - WindowObject
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3672
      start: 3658
    functionDepth: 3
    functionLinenumber: 3658
    functionLinenumberEnd: 3672
    functionName: WinGetFuncArgCurrent
    functionSourceFile: /src/postgres/src/backend/executor/nodeWindowAgg.c
    functionUses: 0
    functionsReached:
    - list_nth
    - Assert
    - 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: 110
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 110
    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:152,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execParallel.c:163,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/execParallel.c:165,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/execParallel.c:175,1
    - Dst: pgstat_get_my_query_id
      Src: /src/postgres/src/backend/executor/execParallel.c:177,1
    - Dst: pgstat_get_my_plan_id
      Src: /src/postgres/src/backend/executor/execParallel.c:178,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execParallel.c:201,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execParallel.c:203,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execParallel.c:207,1
    - Dst: nodeToString
      Src: /src/postgres/src/backend/executor/execParallel.c:220,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 37
    argCount: 2
    argNames:
    - plan
    - estate
    argTypes:
    - Plan*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 145
    functionDepth: 7
    functionLinenumber: 145
    functionLinenumberEnd: 221
    functionName: ExecSerializePlan
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - lfirst_node
    - nodeToString
    - foreach
    - lappend
    - copyObject
    - pgstat_get_my_query_id
    - pgstat_get_my_plan_id
    - makeNode
    - lfirst
    linkageType: ''
    returnType: char
    signature: 'char *

      ExecSerializePlan(Plan *plan, EState *estate)'
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execParallel.c:241,1
    - Dst: ExecSeqScanEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:245,1
    - Dst: ExecIndexScanEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:250,1
    - Dst: ExecIndexOnlyScanEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:255,1
    - Dst: ExecBitmapIndexScanEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:260,1
    - Dst: ExecForeignScanEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:265,1
    - Dst: ExecAppendEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:270,1
    - Dst: ExecCustomScanEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:275,1
    - Dst: ExecBitmapHeapEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:280,1
    - Dst: ExecHashJoinEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:285,1
    - Dst: ExecHashEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:290,1
    - Dst: ExecSortEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:294,1
    - Dst: ExecIncrementalSortEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:298,1
    - Dst: ExecAggEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:302,1
    - Dst: ExecMemoizeEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:306,1
    - Dst: planstate_tree_walker
      Src: /src/postgres/src/backend/executor/execParallel.c:312,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 57
    argCount: 2
    argNames:
    - planstate
    - e
    argTypes:
    - PlanState*
    - ExecParallelEstimateContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 232
    functionDepth: 3
    functionLinenumber: 232
    functionLinenumberEnd: 313
    functionName: ExecParallelEstimate
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - nodeTag
    - ExecIncrementalSortEstimate
    - ExecCustomScanEstimate
    - ExecBitmapHeapEstimate
    - ExecHashEstimate
    - planstate_tree_walker
    - ExecAppendEstimate
    - ExecIndexOnlyScanEstimate
    - ExecHashJoinEstimate
    - ExecSeqScanEstimate
    - ExecSortEstimate
    - ExecMemoizeEstimate
    - ExecBitmapIndexScanEstimate
    - ExecIndexScanEstimate
    - ExecForeignScanEstimate
    - ExecAggEstimate
    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:325,1
    - Dst: list_nth_oid
      Src: /src/postgres/src/backend/executor/execParallel.c:333,1
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/execParallel.c:336,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execParallel.c:339,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/executor/execParallel.c:340,1
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/execParallel.c:347,1
    - Dst: datumEstimateSpace
      Src: /src/postgres/src/backend/executor/execParallel.c:348,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - estate
    - params
    argTypes:
    - EState*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 318
    functionDepth: 3
    functionLinenumber: 318
    functionLinenumberEnd: 352
    functionName: EstimateParamExecSpace
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - get_typlenbyval
    - datumEstimateSpace
    - OidIsValid
    - list_nth_oid
    - add_size
    - bms_next_member
    linkageType: ''
    returnType: Size
    signature: Size EstimateParamExecSpace(EState *estate, Bitmapset *params)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EstimateParamExecSpace
      Src: /src/postgres/src/backend/executor/execParallel.c:373,1
    - Dst: dsa_allocate
      Src: /src/postgres/src/backend/executor/execParallel.c:374,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/execParallel.c:375,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/executor/execParallel.c:378,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execParallel.c:379,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/execParallel.c:384,1
    - Dst: list_nth_oid
      Src: /src/postgres/src/backend/executor/execParallel.c:391,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execParallel.c:395,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execParallel.c:399,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/executor/execParallel.c:400,1
    - Dst: datumSerialize
      Src: /src/postgres/src/backend/executor/execParallel.c:407,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 3
    argNames:
    - estate
    - params
    - area
    argTypes:
    - EState*
    - Bitmapset*
    - dsa_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 362
    functionDepth: 4
    functionLinenumber: 362
    functionLinenumberEnd: 412
    functionName: SerializeParamExecParams
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - dsa_allocate
    - get_typlenbyval
    - list_nth_oid
    - dsa_get_address
    - OidIsValid
    - memcpy
    - bms_next_member
    - bms_num_members
    - datumSerialize
    - EstimateParamExecSpace
    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:424,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execParallel.c:432,1
    - Dst: datumRestore
      Src: /src/postgres/src/backend/executor/execParallel.c:437,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - start_address
    - estate
    argTypes:
    - char*
    - EState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 440
    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: 24
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execParallel.c:470,1
    - Dst: ExecSeqScanInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:474,1
    - Dst: ExecIndexScanInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:479,1
    - Dst: ExecIndexOnlyScanInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:483,1
    - Dst: ExecBitmapIndexScanInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:488,1
    - Dst: ExecForeignScanInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:492,1
    - Dst: ExecAppendInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:497,1
    - Dst: ExecCustomScanInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:502,1
    - Dst: ExecBitmapHeapInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:507,1
    - Dst: ExecHashJoinInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:512,1
    - Dst: ExecHashInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:517,1
    - Dst: ExecSortInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:521,1
    - Dst: ExecIncrementalSortInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:525,1
    - Dst: ExecAggInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:529,1
    - Dst: ExecMemoizeInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:533,1
    - Dst: planstate_tree_walker
      Src: /src/postgres/src/backend/executor/execParallel.c:539,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 59
    argCount: 2
    argNames:
    - planstate
    - d
    argTypes:
    - PlanState*
    - ExecParallelInitializeDSMContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 446
    functionDepth: 4
    functionLinenumber: 446
    functionLinenumberEnd: 540
    functionName: ExecParallelInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - nodeTag
    - ExecSortInitializeDSM
    - ExecMemoizeInitializeDSM
    - ExecAppendInitializeDSM
    - planstate_tree_walker
    - ExecIndexScanInitializeDSM
    - ExecForeignScanInitializeDSM
    - ExecBitmapIndexScanInitializeDSM
    - ExecIncrementalSortInitializeDSM
    - ExecHashJoinInitializeDSM
    - ExecAggInitializeDSM
    - ExecHashInitializeDSM
    - ExecIndexOnlyScanInitializeDSM
    - ExecCustomScanInitializeDSM
    - ExecSeqScanInitializeDSM
    - 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:559,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/execParallel.c:567,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/execParallel.c:568,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/execParallel.c:571,1
    - Dst: shm_mq_create
      Src: /src/postgres/src/backend/executor/execParallel.c:578,1
    - Dst: shm_mq_set_receiver
      Src: /src/postgres/src/backend/executor/execParallel.c:582,1
    - Dst: shm_mq_attach
      Src: /src/postgres/src/backend/executor/execParallel.c:583,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/execParallel.c:588,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 592
    functionName: ExecParallelSetupTupleQueues
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - shm_mq_create
    - shm_toc_insert
    - shm_toc_lookup
    - shm_mq_set_receiver
    - shm_mq_attach
    - palloc
    - shm_toc_allocate
    - mul_size
    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:620,1
    - Dst: ExecSetParamPlanMulti
      Src: /src/postgres/src/backend/executor/execParallel.c:635,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execParallel.c:635,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execParallel.c:638,1
    - Dst: ExecSerializePlan
      Src: /src/postgres/src/backend/executor/execParallel.c:643,1
    - Dst: CreateParallelContext
      Src: /src/postgres/src/backend/executor/execParallel.c:646,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/execParallel.c:656,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/execParallel.c:658,1
    - Dst: strlen
      Src: /src/postgres/src/backend/executor/execParallel.c:661,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/execParallel.c:662,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/execParallel.c:663,1
    - Dst: strlen
      Src: /src/postgres/src/backend/executor/execParallel.c:666,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/execParallel.c:667,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/execParallel.c:668,1
    - Dst: EstimateParamListSpace
      Src: /src/postgres/src/backend/executor/execParallel.c:671,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/execParallel.c:672,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/execParallel.c:673,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/execParallel.c:682,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/execParallel.c:683,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/execParallel.c:684,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/execParallel.c:689,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/execParallel.c:690,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/execParallel.c:691,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/execParallel.c:694,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/execParallel.c:695,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/execParallel.c:696,1
    - Dst: ExecParallelEstimate
      Src: /src/postgres/src/backend/executor/execParallel.c:704,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/execParallel.c:712,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/execParallel.c:715,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/execParallel.c:716,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/execParallel.c:717,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/execParallel.c:718,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:732,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/execParallel.c:733,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execParallel.c:740,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/executor/execParallel.c:740,1
    - Dst: InitializeParallelDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:743,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/execParallel.c:754,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/execParallel.c:759,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/execParallel.c:762,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execParallel.c:763,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/execParallel.c:764,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/execParallel.c:767,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execParallel.c:768,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/execParallel.c:769,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/execParallel.c:772,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/execParallel.c:773,1
    - Dst: SerializeParamList
      Src: /src/postgres/src/backend/executor/execParallel.c:774,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/execParallel.c:777,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/execParallel.c:778,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/execParallel.c:779,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/execParallel.c:783,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/execParallel.c:784,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/execParallel.c:785,1
    - Dst: ExecParallelSetupTupleQueues
      Src: /src/postgres/src/backend/executor/execParallel.c:789,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/execParallel.c:804,1
    - Dst: GetInstrumentationArray
      Src: /src/postgres/src/backend/executor/execParallel.c:809,1
    - Dst: InstrInit
      Src: /src/postgres/src/backend/executor/execParallel.c:811,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/execParallel.c:812,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/execParallel.c:818,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/execParallel.c:821,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:838,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/execParallel.c:839,1
    - Dst: dsa_create_in_place
      Src: /src/postgres/src/backend/executor/execParallel.c:840,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/executor/execParallel.c:850,1
    - Dst: SerializeParamExecParams
      Src: /src/postgres/src/backend/executor/execParallel.c:852,1
    - Dst: ExecParallelInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:869,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execParallel.c:877,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: 881
      start: 598
    functionDepth: 8
    functionLinenumber: 598
    functionLinenumberEnd: 881
    functionName: ExecInitParallelPlan
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 1
    functionsReached:
    - CreateParallelContext
    - GetInstrumentationArray
    - ExecParallelInitializeDSM
    - GetPerTupleExprContext
    - ExecSerializePlan
    - dsa_create_in_place
    - shm_toc_allocate
    - strlen
    - dsa_minimum_size
    - bms_is_empty
    - ExecSetParamPlanMulti
    - ExecParallelSetupTupleQueues
    - shm_toc_estimate_keys
    - EstimateParamListSpace
    - memcpy
    - mul_size
    - InstrInit
    - elog
    - SerializeParamExecParams
    - Assert
    - memset
    - GetActiveSnapshot
    - InitializeParallelDSM
    - shm_toc_estimate_chunk
    - shm_toc_insert
    - palloc0
    - ExecParallelEstimate
    - SerializeParamList
    - MAXALIGN
    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:895,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execParallel.c:900,1
    - Dst: shm_mq_set_handle
      Src: /src/postgres/src/backend/executor/execParallel.c:904,1
    - Dst: CreateTupleQueueReader
      Src: /src/postgres/src/backend/executor/execParallel.c:906,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - pei
    argTypes:
    - ParallelExecutorInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 889
    functionDepth: 1
    functionLinenumber: 889
    functionLinenumberEnd: 909
    functionName: ExecParallelCreateReaders
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 1
    functionsReached:
    - shm_mq_set_handle
    - Assert
    - palloc
    - CreateTupleQueueReader
    linkageType: ''
    returnType: void
    signature: void ExecParallelCreateReaders(ParallelExecutorInfo *pei)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execParallel.c:924,1
    - Dst: ExecSetParamPlanMulti
      Src: /src/postgres/src/backend/executor/execParallel.c:931,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/executor/execParallel.c:931,1
    - Dst: ReinitializeParallelDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:933,1
    - Dst: ExecParallelSetupTupleQueues
      Src: /src/postgres/src/backend/executor/execParallel.c:934,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/execParallel.c:938,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/executor/execParallel.c:941,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/executor/execParallel.c:943,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/executor/execParallel.c:948,1
    - Dst: SerializeParamExecParams
      Src: /src/postgres/src/backend/executor/execParallel.c:950,1
    - Dst: ExecParallelReInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:957,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - planstate
    - pei
    - sendParams
    argTypes:
    - PlanState*
    - ParallelExecutorInfo*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 915
    functionDepth: 5
    functionLinenumber: 915
    functionLinenumberEnd: 959
    functionName: ExecParallelReinitialize
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 1
    functionsReached:
    - SerializeParamExecParams
    - Assert
    - ExecParallelReInitializeDSM
    - bms_is_empty
    - ExecParallelSetupTupleQueues
    - ExecSetParamPlanMulti
    - shm_toc_lookup
    - GetPerTupleExprContext
    - ReinitializeParallelDSM
    - DsaPointerIsValid
    - dsa_free
    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: 24
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execParallel.c:974,1
    - Dst: ExecSeqScanReInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:978,1
    - Dst: ExecIndexScanReInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:983,1
    - Dst: ExecIndexOnlyScanReInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:988,1
    - Dst: ExecForeignScanReInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:993,1
    - Dst: ExecAppendReInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:998,1
    - Dst: ExecCustomScanReInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:1002,1
    - Dst: ExecBitmapHeapReInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:1007,1
    - Dst: ExecHashJoinReInitializeDSM
      Src: /src/postgres/src/backend/executor/execParallel.c:1012,1
    - Dst: planstate_tree_walker
      Src: /src/postgres/src/backend/executor/execParallel.c:1027,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 46
    argCount: 2
    argNames:
    - planstate
    - pcxt
    argTypes:
    - PlanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 964
    functionDepth: 4
    functionLinenumber: 964
    functionLinenumberEnd: 1028
    functionName: ExecParallelReInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 1
    functionsReached:
    - nodeTag
    - ExecCustomScanReInitializeDSM
    - ExecIndexScanReInitializeDSM
    - ExecHashJoinReInitializeDSM
    - planstate_tree_walker
    - ExecForeignScanReInitializeDSM
    - ExecBitmapHeapReInitializeDSM
    - ExecIndexOnlyScanReInitializeDSM
    - ExecAppendReInitializeDSM
    - ExecSeqScanReInitializeDSM
    linkageType: ''
    returnType: bool
    signature: "bool ExecParallelReInitializeDSM(PlanState *planstate,\n\t\t\t\t\t\t\tParallelContext
      *pcxt)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execParallel.c:1050,1
    - Dst: GetInstrumentationArray
      Src: /src/postgres/src/backend/executor/execParallel.c:1053,1
    - Dst: InstrAggNode
      Src: /src/postgres/src/backend/executor/execParallel.c:1056,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execParallel.c:1065,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/execParallel.c:1066,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execParallel.c:1068,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execParallel.c:1069,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execParallel.c:1072,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execParallel.c:1075,1
    - Dst: ExecIndexScanRetrieveInstrumentation
      Src: /src/postgres/src/backend/executor/execParallel.c:1078,1
    - Dst: ExecIndexOnlyScanRetrieveInstrumentation
      Src: /src/postgres/src/backend/executor/execParallel.c:1081,1
    - Dst: ExecBitmapIndexScanRetrieveInstrumentation
      Src: /src/postgres/src/backend/executor/execParallel.c:1084,1
    - Dst: ExecSortRetrieveInstrumentation
      Src: /src/postgres/src/backend/executor/execParallel.c:1087,1
    - Dst: ExecIncrementalSortRetrieveInstrumentation
      Src: /src/postgres/src/backend/executor/execParallel.c:1090,1
    - Dst: ExecHashRetrieveInstrumentation
      Src: /src/postgres/src/backend/executor/execParallel.c:1093,1
    - Dst: ExecAggRetrieveInstrumentation
      Src: /src/postgres/src/backend/executor/execParallel.c:1096,1
    - Dst: ExecMemoizeRetrieveInstrumentation
      Src: /src/postgres/src/backend/executor/execParallel.c:1099,1
    - Dst: ExecBitmapHeapRetrieveInstrumentation
      Src: /src/postgres/src/backend/executor/execParallel.c:1102,1
    - Dst: planstate_tree_walker
      Src: /src/postgres/src/backend/executor/execParallel.c:1108,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 48
    argCount: 2
    argNames:
    - planstate
    - instrumentation
    argTypes:
    - PlanState*
    - SharedExecutorInstrumentation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1110
      start: 1034
    functionDepth: 1
    functionLinenumber: 1034
    functionLinenumberEnd: 1110
    functionName: ExecParallelRetrieveInstrumentation
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - nodeTag
    - ExecBitmapIndexScanRetrieveInstrumentation
    - ExecIncrementalSortRetrieveInstrumentation
    - MemoryContextSwitchTo
    - ExecHashRetrieveInstrumentation
    - ExecSortRetrieveInstrumentation
    - GetInstrumentationArray
    - ExecIndexOnlyScanRetrieveInstrumentation
    - ExecAggRetrieveInstrumentation
    - ExecMemoizeRetrieveInstrumentation
    - ExecBitmapHeapRetrieveInstrumentation
    - planstate_tree_walker
    - InstrAggNode
    - elog
    - ExecIndexScanRetrieveInstrumentation
    - memcpy
    - palloc
    - mul_size
    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:1130,1
    - Dst: InstrJitAgg
      Src: /src/postgres/src/backend/executor/execParallel.c:1135,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/executor/execParallel.c:1144,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/execParallel.c:1146,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execParallel.c:1148,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - planstate
    - shared_jit
    argTypes:
    - PlanState*
    - SharedJitInstrumentation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1149
      start: 1115
    functionDepth: 2
    functionLinenumber: 1115
    functionLinenumberEnd: 1149
    functionName: ExecParallelRetrieveJitInstrumentation
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - memcpy
    - MemoryContextAllocZero
    - InstrJitAgg
    - MemoryContextAlloc
    - mul_size
    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:1172,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execParallel.c:1173,1
    - Dst: DestroyTupleQueueReader
      Src: /src/postgres/src/backend/executor/execParallel.c:1184,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execParallel.c:1185,1
    - Dst: WaitForParallelWorkersToFinish
      Src: /src/postgres/src/backend/executor/execParallel.c:1190,1
    - Dst: InstrAccumParallelQuery
      Src: /src/postgres/src/backend/executor/execParallel.c:1197,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - pei
    argTypes:
    - ParallelExecutorInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1200
      start: 1155
    functionDepth: 2
    functionLinenumber: 1155
    functionLinenumberEnd: 1200
    functionName: ExecParallelFinish
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 1
    functionsReached:
    - InstrAccumParallelQuery
    - pfree
    - DestroyTupleQueueReader
    - shm_mq_detach
    - WaitForParallelWorkersToFinish
    linkageType: ''
    returnType: void
    signature: void ExecParallelFinish(ParallelExecutorInfo *pei)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ExecParallelRetrieveInstrumentation
      Src: /src/postgres/src/backend/executor/execParallel.c:1213,1
    - Dst: ExecParallelRetrieveJitInstrumentation
      Src: /src/postgres/src/backend/executor/execParallel.c:1218,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/executor/execParallel.c:1222,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/executor/execParallel.c:1224,1
    - Dst: dsa_detach
      Src: /src/postgres/src/backend/executor/execParallel.c:1229,1
    - Dst: DestroyParallelContext
      Src: /src/postgres/src/backend/executor/execParallel.c:1234,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execParallel.c:1237,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - pei
    argTypes:
    - ParallelExecutorInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1238
      start: 1208
    functionDepth: 3
    functionLinenumber: 1208
    functionLinenumberEnd: 1238
    functionName: ExecParallelCleanup
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 1
    functionsReached:
    - pfree
    - ExecParallelRetrieveJitInstrumentation
    - dsa_free
    - DestroyParallelContext
    - ExecParallelRetrieveInstrumentation
    - DsaPointerIsValid
    - dsa_detach
    linkageType: ''
    returnType: void
    signature: void ExecParallelCleanup(ParallelExecutorInfo *pei)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/execParallel.c:1250,1
    - Dst: shm_mq_set_sender
      Src: /src/postgres/src/backend/executor/execParallel.c:1253,1
    - Dst: CreateTupleQueueDestReceiver
      Src: /src/postgres/src/backend/executor/execParallel.c:1254,1
    - Dst: shm_mq_attach
      Src: /src/postgres/src/backend/executor/execParallel.c:1254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - seg
    - toc
    argTypes:
    - dsm_segment*
    - shm_toc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1255
      start: 1244
    functionDepth: 1
    functionLinenumber: 1244
    functionLinenumberEnd: 1255
    functionName: ExecParallelGetReceiver
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - shm_mq_attach
    - shm_mq_set_sender
    - CreateTupleQueueDestReceiver
    - shm_toc_lookup
    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:1271,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/execParallel.c:1274,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/executor/execParallel.c:1275,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/execParallel.c:1278,1
    - Dst: RestoreParamList
      Src: /src/postgres/src/backend/executor/execParallel.c:1279,1
    - Dst: CreateQueryDesc
      Src: /src/postgres/src/backend/executor/execParallel.c:1282,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/executor/execParallel.c:1284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - toc
    - receiver
    - instrument_options
    argTypes:
    - shm_toc*
    - DestReceiver*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1286
      start: 1260
    functionDepth: 3
    functionLinenumber: 1260
    functionLinenumberEnd: 1286
    functionName: ExecParallelGetQueryDesc
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - stringToNode
    - CreateQueryDesc
    - GetActiveSnapshot
    - shm_toc_lookup
    - RestoreParamList
    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:1300,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execParallel.c:1312,1
    - Dst: GetInstrumentationArray
      Src: /src/postgres/src/backend/executor/execParallel.c:1318,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execParallel.c:1320,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1320,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execParallel.c:1321,1
    - Dst: InstrAggNode
      Src: /src/postgres/src/backend/executor/execParallel.c:1322,1
    - Dst: planstate_tree_walker
      Src: /src/postgres/src/backend/executor/execParallel.c:1324,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - planstate
    - instrumentation
    argTypes:
    - PlanState*
    - SharedExecutorInstrumentation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1326
      start: 1292
    functionDepth: 1
    functionLinenumber: 1292
    functionLinenumberEnd: 1326
    functionName: ExecParallelReportInstrumentation
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - Assert
    - GetInstrumentationArray
    - planstate_tree_walker
    - InstrAggNode
    - IsParallelWorker
    - elog
    - InstrEndLoop
    linkageType: ''
    returnType: bool
    signature: "bool ExecParallelReportInstrumentation(PlanState *planstate,\n\t\t\t\t\t\t\t\t
      \ SharedExecutorInstrumentation *instrumentation)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execParallel.c:1339,1
    - Dst: ExecSeqScanInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1343,1
    - Dst: ExecIndexScanInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1347,1
    - Dst: ExecIndexOnlyScanInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1351,1
    - Dst: ExecBitmapIndexScanInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1356,1
    - Dst: ExecForeignScanInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1361,1
    - Dst: ExecAppendInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1366,1
    - Dst: ExecCustomScanInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1370,1
    - Dst: ExecBitmapHeapInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1375,1
    - Dst: ExecHashJoinInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1380,1
    - Dst: ExecHashInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1385,1
    - Dst: ExecSortInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1389,1
    - Dst: ExecIncrementalSortInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1393,1
    - Dst: ExecAggInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1398,1
    - Dst: ExecMemoizeInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1402,1
    - Dst: planstate_tree_walker
      Src: /src/postgres/src/backend/executor/execParallel.c:1408,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 56
    argCount: 2
    argNames:
    - planstate
    - pwcxt
    argTypes:
    - PlanState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1410
      start: 1333
    functionDepth: 4
    functionLinenumber: 1333
    functionLinenumberEnd: 1410
    functionName: ExecParallelInitializeWorker
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - nodeTag
    - ExecHashInitializeWorker
    - ExecIndexScanInitializeWorker
    - ExecIncrementalSortInitializeWorker
    - planstate_tree_walker
    - ExecMemoizeInitializeWorker
    - ExecForeignScanInitializeWorker
    - ExecBitmapIndexScanInitializeWorker
    - ExecIndexOnlyScanInitializeWorker
    - ExecHashJoinInitializeWorker
    - ExecAggInitializeWorker
    - ExecSeqScanInitializeWorker
    - ExecAppendInitializeWorker
    - ExecCustomScanInitializeWorker
    - ExecBitmapHeapInitializeWorker
    - ExecSortInitializeWorker
    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:1444,1
    - Dst: ExecParallelGetReceiver
      Src: /src/postgres/src/backend/executor/execParallel.c:1447,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/execParallel.c:1448,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/execParallel.c:1451,1
    - Dst: ExecParallelGetQueryDesc
      Src: /src/postgres/src/backend/executor/execParallel.c:1453,1
    - Dst: pgstat_report_activity
      Src: /src/postgres/src/backend/executor/execParallel.c:1459,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/execParallel.c:1462,1
    - Dst: dsa_attach_in_place
      Src: /src/postgres/src/backend/executor/execParallel.c:1463,1
    - Dst: ExecutorStart
      Src: /src/postgres/src/backend/executor/execParallel.c:1467,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/executor/execParallel.c:1471,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/executor/execParallel.c:1475,1
    - Dst: RestoreParamExecParams
      Src: /src/postgres/src/backend/executor/execParallel.c:1476,1
    - Dst: ExecParallelInitializeWorker
      Src: /src/postgres/src/backend/executor/execParallel.c:1480,1
    - Dst: ExecSetTupleBound
      Src: /src/postgres/src/backend/executor/execParallel.c:1483,1
    - Dst: InstrStartParallelQuery
      Src: /src/postgres/src/backend/executor/execParallel.c:1492,1
    - Dst: ExecutorRun
      Src: /src/postgres/src/backend/executor/execParallel.c:1498,1
    - Dst: ExecutorFinish
      Src: /src/postgres/src/backend/executor/execParallel.c:1503,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/execParallel.c:1506,1
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/execParallel.c:1507,1
    - Dst: InstrEndParallelQuery
      Src: /src/postgres/src/backend/executor/execParallel.c:1508,1
    - Dst: ExecParallelReportInstrumentation
      Src: /src/postgres/src/backend/executor/execParallel.c:1513,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execParallel.c:1519,1
    - Dst: ExecutorEnd
      Src: /src/postgres/src/backend/executor/execParallel.c:1525,1
    - Dst: dsa_detach
      Src: /src/postgres/src/backend/executor/execParallel.c:1528,1
    - Dst: FreeQueryDesc
      Src: /src/postgres/src/backend/executor/execParallel.c:1529,1
    - Dst: DestReceiver*::rDestroy
      Src: /src/postgres/src/backend/executor/execParallel.c:1530,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 39
    argCount: 2
    argNames:
    - seg
    - toc
    argTypes:
    - dsm_segment*
    - shm_toc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1531
      start: 1428
    functionDepth: 5
    functionLinenumber: 1428
    functionLinenumberEnd: 1531
    functionName: ParallelQueryMain
    functionSourceFile: /src/postgres/src/backend/executor/execParallel.c
    functionUses: 0
    functionsReached:
    - ExecutorRun
    - FreeQueryDesc
    - ExecutorFinish
    - InstrStartParallelQuery
    - shm_toc_lookup
    - pgstat_report_activity
    - DsaPointerIsValid
    - dsa_detach
    - ExecParallelReportInstrumentation
    - InstrEndParallelQuery
    - ExecParallelInitializeWorker
    - ExecParallelGetReceiver
    - Assert
    - dsa_attach_in_place
    - ExecParallelGetQueryDesc
    - dsa_get_address
    - ExecSetTupleBound
    - RestoreParamExecParams
    - ExecutorEnd
    - DestReceiver*::rDestroy
    - ExecutorStart
    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: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    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: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    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: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    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:72,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/executor/execGrouping.c:76,1
    - Dst: ExecBuildGroupingEqual
      Src: /src/postgres/src/backend/executor/execGrouping.c:79,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: 84
      start: 57
    functionDepth: 7
    functionLinenumber: 57
    functionLinenumberEnd: 84
    functionName: execTuplesMatchPrepare
    functionSourceFile: /src/postgres/src/backend/executor/execGrouping.c
    functionUses: 2
    functionsReached:
    - palloc
    - ExecBuildGroupingEqual
    - get_opcode
    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:104,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execGrouping.c:105,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/executor/execGrouping.c:114,1
    - Dst: get_op_hash_functions
      Src: /src/postgres/src/backend/executor/execGrouping.c:115,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execGrouping.c:117,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execGrouping.c:120,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/execGrouping.c:122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - numCols
    - eqOperators
    - eqFuncOids
    - hashFunctions
    argTypes:
    - int
    - Oid*
    - Oid**
    - FmgrInfo**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 124
    functionName: execTuplesHashPrepare
    functionSourceFile: /src/postgres/src/backend/executor/execGrouping.c
    functionUses: 1
    functionsReached:
    - Assert
    - fmgr_info
    - get_op_hash_functions
    - get_opcode
    - elog
    - palloc
    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: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execGrouping.c:183,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/execGrouping.c:184,1
    - Dst: get_hash_memory_limit
      Src: /src/postgres/src/backend/executor/execGrouping.c:188,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execGrouping.c:192,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execGrouping.c:194,1
    - Dst: murmurhash32
      Src: /src/postgres/src/backend/executor/execGrouping.c:216,1
    - Dst: tuplehash_create
      Src: /src/postgres/src/backend/executor/execGrouping.c:218,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/execGrouping.c:224,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/executor/execGrouping.c:224,1
    - Dst: ExecBuildHash32FromAttrs
      Src: /src/postgres/src/backend/executor/execGrouping.c:238,1
    - Dst: ExecBuildGroupingEqual
      Src: /src/postgres/src/backend/executor/execGrouping.c:248,1
    - Dst: CreateStandaloneExprContext
      Src: /src/postgres/src/backend/executor/execGrouping.c:261,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execGrouping.c:263,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 14
    argNames:
    - parent
    - inputDesc
    - inputOps
    - numCols
    - keyColIdx
    - eqfuncoids
    - hashfunctions
    - collations
    - nbuckets
    - additionalsize
    - metacxt
    - tablecxt
    - tempcxt
    - use_variable_hash_iv
    argTypes:
    - PlanState*
    - TupleDesc
    - TupleTableSlotOps*
    - int
    - AttrNumber*
    - Oid*
    - FmgrInfo*
    - Oid*
    - long
    - Size
    - MemoryContext
    - MemoryContext
    - MemoryContext
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 160
    functionDepth: 7
    functionLinenumber: 160
    functionLinenumberEnd: 266
    functionName: BuildTupleHashTable
    functionSourceFile: /src/postgres/src/backend/executor/execGrouping.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - ExecBuildGroupingEqual
    - CreateTupleDescCopy
    - murmurhash32
    - tuplehash_create
    - CreateStandaloneExprContext
    - MakeSingleTupleTableSlot
    - get_hash_memory_limit
    - ExecBuildHash32FromAttrs
    - palloc
    - MAXALIGN
    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\tlong nbuckets,\n\t\t\t\t\tSize additionalsize,\n\t\t\t\t\tMemoryContext
      metacxt,\n\t\t\t\t\tMemoryContext tablecxt,\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:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hashtable
    argTypes:
    - TupleHashTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 277
    functionName: ResetTupleHashTable
    functionSourceFile: /src/postgres/src/backend/executor/execGrouping.c
    functionUses: 1
    functionsReached:
    - tuplehash_reset
    linkageType: ''
    returnType: void
    signature: void ResetTupleHashTable(TupleHashTable hashtable)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execGrouping.c:303,1
    - Dst: TupleHashTableHash_internal
      Src: /src/postgres/src/backend/executor/execGrouping.c:310,1
    - Dst: LookupTupleHashEntry_internal
      Src: /src/postgres/src/backend/executor/execGrouping.c:311,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execGrouping.c:316,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execGrouping.c:318,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - hashtable
    - slot
    - isnew
    - hash
    argTypes:
    - TupleHashTable
    - TupleTableSlot*
    - bool*
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 294
    functionDepth: 1
    functionLinenumber: 294
    functionLinenumberEnd: 321
    functionName: LookupTupleHashEntry
    functionSourceFile: /src/postgres/src/backend/executor/execGrouping.c
    functionUses: 1
    functionsReached:
    - TupleHashTableHash_internal
    - Assert
    - MemoryContextSwitchTo
    - LookupTupleHashEntry_internal
    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:336,1
    - Dst: TupleHashTableHash_internal
      Src: /src/postgres/src/backend/executor/execGrouping.c:338,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execGrouping.c:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - hashtable
    - slot
    argTypes:
    - TupleHashTable
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 343
    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:357,1
    - Dst: LookupTupleHashEntry_internal
      Src: /src/postgres/src/backend/executor/execGrouping.c:364,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execGrouping.c:365,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execGrouping.c:367,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - hashtable
    - slot
    - isnew
    - hash
    argTypes:
    - TupleHashTable
    - TupleTableSlot*
    - bool*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 370
    functionName: LookupTupleHashEntryHash
    functionSourceFile: /src/postgres/src/backend/executor/execGrouping.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - LookupTupleHashEntry_internal
    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:391,1
    - Dst: tuplehash_lookup
      Src: /src/postgres/src/backend/executor/execGrouping.c:400,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execGrouping.c:401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - hashtable
    - slot
    - eqcomp
    - hashexpr
    argTypes:
    - TupleHashTable
    - TupleTableSlot*
    - ExprState*
    - ExprState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 404
    functionName: FindTupleHashEntry
    functionSourceFile: /src/postgres/src/backend/executor/execGrouping.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - tuplehash_lookup
    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:427,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/execGrouping.c:427,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/execGrouping.c:440,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execGrouping.c:441,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/execGrouping.c:441,1
    - Dst: murmurhash32
      Src: /src/postgres/src/backend/executor/execGrouping.c:451,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - tb
    - tuple
    argTypes:
    - struct tuplehash_hash*
    - MinimalTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 414
    functionDepth: 5
    functionLinenumber: 414
    functionLinenumberEnd: 452
    functionName: TupleHashTableHash_internal
    functionSourceFile: /src/postgres/src/backend/executor/execGrouping.c
    functionUses: 2
    functionsReached:
    - DatumGetUInt32
    - ExecEvalExpr
    - murmurhash32
    - ExecStoreMinimalTuple
    linkageType: ''
    returnType: uint32
    signature: "uint32 TupleHashTableHash_internal(struct tuplehash_hash *tb,\n\t\t\t\t\t\t\tconst
      MinimalTuple tuple)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tuplehash_insert_hash
      Src: /src/postgres/src/backend/executor/execGrouping.c:474,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execGrouping.c:486,1
    - Dst: ExecCopySlotMinimalTupleExtra
      Src: /src/postgres/src/backend/executor/execGrouping.c:498,1
    - Dst: tuplehash_lookup_hash
      Src: /src/postgres/src/backend/executor/execGrouping.c:504,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 4
    argNames:
    - hashtable
    - slot
    - isnew
    - hash
    argTypes:
    - TupleHashTable
    - TupleTableSlot*
    - bool*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 462
    functionDepth: 1
    functionLinenumber: 462
    functionLinenumberEnd: 508
    functionName: LookupTupleHashEntry_internal
    functionSourceFile: /src/postgres/src/backend/executor/execGrouping.c
    functionUses: 2
    functionsReached:
    - tuplehash_lookup_hash
    - MemoryContextSwitchTo
    - ExecCopySlotMinimalTupleExtra
    - tuplehash_insert_hash
    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:527,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/execGrouping.c:529,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execGrouping.c:530,1
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/execGrouping.c:536,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - tb
    - tuple1
    - tuple2
    argTypes:
    - struct tuplehash_hash*
    - MinimalTuple
    - MinimalTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 513
    functionDepth: 5
    functionLinenumber: 513
    functionLinenumberEnd: 537
    functionName: TupleHashTableMatch
    functionSourceFile: /src/postgres/src/backend/executor/execGrouping.c
    functionUses: 0
    functionsReached:
    - ExecQualAndReset
    - Assert
    - ExecStoreMinimalTuple
    linkageType: ''
    returnType: int
    signature: int TupleHashTableMatch(struct tuplehash_hash *tb, const MinimalTuple
      tuple1, const MinimalTuple tuple2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 46
    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:57,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:65,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:70,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:72,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:88,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:90,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - BitmapAnd*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 54
    functionDepth: 11
    functionLinenumber: 54
    functionLinenumberEnd: 103
    functionName: ExecInitBitmapAnd
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapAnd.c
    functionUses: 1
    functionsReached:
    - Assert
    - ExecInitNode
    - palloc0
    - foreach
    - list_length
    - makeNode
    - lfirst
    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:119,1
    - Dst: MultiExecProcNode
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:135,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:137,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:138,1
    - Dst: tbm_intersect
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:144,1
    - Dst: tbm_free
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:145,1
    - Dst: tbm_is_empty
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:155,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:160,1
    - Dst: InstrStopNode
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:164,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapAndState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 109
    functionDepth: 4
    functionLinenumber: 109
    functionLinenumberEnd: 167
    functionName: MultiExecBitmapAnd
    functionSourceFile: /src/postgres/src/backend/executor/nodeBitmapAnd.c
    functionUses: 1
    functionsReached:
    - tbm_intersect
    - MultiExecProcNode
    - tbm_free
    - IsA
    - elog
    - InstrStartNode
    - InstrStopNode
    - tbm_is_empty
    linkageType: ''
    returnType: Node
    signature: 'Node *

      MultiExecBitmapAnd(BitmapAndState *node)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:196,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapAndState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 177
    functionDepth: 4
    functionLinenumber: 177
    functionLinenumberEnd: 198
    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:214,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeBitmapAnd.c:221,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - BitmapAndState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 200
    functionDepth: 5
    functionLinenumber: 200
    functionLinenumberEnd: 223
    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:81,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execAmi.c:100,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execAmi.c:102,1
    - Dst: UpdateChangedParamSet
      Src: /src/postgres/src/backend/executor/execAmi.c:107,1
    - Dst: ExecReScanSetParamPlan
      Src: /src/postgres/src/backend/executor/execAmi.c:109,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execAmi.c:111,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execAmi.c:113,1
    - Dst: UpdateChangedParamSet
      Src: /src/postgres/src/backend/executor/execAmi.c:117,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/execAmi.c:120,1
    - Dst: UpdateChangedParamSet
      Src: /src/postgres/src/backend/executor/execAmi.c:121,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/execAmi.c:121,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/execAmi.c:122,1
    - Dst: UpdateChangedParamSet
      Src: /src/postgres/src/backend/executor/execAmi.c:123,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/execAmi.c:123,1
    - Dst: ReScanExprContext
      Src: /src/postgres/src/backend/executor/execAmi.c:128,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAmi.c:131,1
    - Dst: ExecReScanResult
      Src: /src/postgres/src/backend/executor/execAmi.c:134,1
    - Dst: ExecReScanProjectSet
      Src: /src/postgres/src/backend/executor/execAmi.c:138,1
    - Dst: ExecReScanModifyTable
      Src: /src/postgres/src/backend/executor/execAmi.c:142,1
    - Dst: ExecReScanAppend
      Src: /src/postgres/src/backend/executor/execAmi.c:146,1
    - Dst: ExecReScanMergeAppend
      Src: /src/postgres/src/backend/executor/execAmi.c:150,1
    - Dst: ExecReScanRecursiveUnion
      Src: /src/postgres/src/backend/executor/execAmi.c:154,1
    - Dst: ExecReScanBitmapAnd
      Src: /src/postgres/src/backend/executor/execAmi.c:158,1
    - Dst: ExecReScanBitmapOr
      Src: /src/postgres/src/backend/executor/execAmi.c:162,1
    - Dst: ExecReScanSeqScan
      Src: /src/postgres/src/backend/executor/execAmi.c:166,1
    - Dst: ExecReScanSampleScan
      Src: /src/postgres/src/backend/executor/execAmi.c:170,1
    - Dst: ExecReScanGather
      Src: /src/postgres/src/backend/executor/execAmi.c:174,1
    - Dst: ExecReScanGatherMerge
      Src: /src/postgres/src/backend/executor/execAmi.c:178,1
    - Dst: ExecReScanIndexScan
      Src: /src/postgres/src/backend/executor/execAmi.c:182,1
    - Dst: ExecReScanIndexOnlyScan
      Src: /src/postgres/src/backend/executor/execAmi.c:186,1
    - Dst: ExecReScanBitmapIndexScan
      Src: /src/postgres/src/backend/executor/execAmi.c:190,1
    - Dst: ExecReScanBitmapHeapScan
      Src: /src/postgres/src/backend/executor/execAmi.c:194,1
    - Dst: ExecReScanTidScan
      Src: /src/postgres/src/backend/executor/execAmi.c:198,1
    - Dst: ExecReScanTidRangeScan
      Src: /src/postgres/src/backend/executor/execAmi.c:202,1
    - Dst: ExecReScanSubqueryScan
      Src: /src/postgres/src/backend/executor/execAmi.c:206,1
    - Dst: ExecReScanFunctionScan
      Src: /src/postgres/src/backend/executor/execAmi.c:210,1
    - Dst: ExecReScanTableFuncScan
      Src: /src/postgres/src/backend/executor/execAmi.c:214,1
    - Dst: ExecReScanValuesScan
      Src: /src/postgres/src/backend/executor/execAmi.c:218,1
    - Dst: ExecReScanCteScan
      Src: /src/postgres/src/backend/executor/execAmi.c:222,1
    - Dst: ExecReScanNamedTuplestoreScan
      Src: /src/postgres/src/backend/executor/execAmi.c:226,1
    - Dst: ExecReScanWorkTableScan
      Src: /src/postgres/src/backend/executor/execAmi.c:230,1
    - Dst: ExecReScanForeignScan
      Src: /src/postgres/src/backend/executor/execAmi.c:234,1
    - Dst: ExecReScanCustomScan
      Src: /src/postgres/src/backend/executor/execAmi.c:238,1
    - Dst: ExecReScanNestLoop
      Src: /src/postgres/src/backend/executor/execAmi.c:242,1
    - Dst: ExecReScanMergeJoin
      Src: /src/postgres/src/backend/executor/execAmi.c:246,1
    - Dst: ExecReScanHashJoin
      Src: /src/postgres/src/backend/executor/execAmi.c:250,1
    - Dst: ExecReScanMaterial
      Src: /src/postgres/src/backend/executor/execAmi.c:254,1
    - Dst: ExecReScanMemoize
      Src: /src/postgres/src/backend/executor/execAmi.c:258,1
    - Dst: ExecReScanSort
      Src: /src/postgres/src/backend/executor/execAmi.c:262,1
    - Dst: ExecReScanIncrementalSort
      Src: /src/postgres/src/backend/executor/execAmi.c:266,1
    - Dst: ExecReScanGroup
      Src: /src/postgres/src/backend/executor/execAmi.c:270,1
    - Dst: ExecReScanAgg
      Src: /src/postgres/src/backend/executor/execAmi.c:274,1
    - Dst: ExecReScanWindowAgg
      Src: /src/postgres/src/backend/executor/execAmi.c:278,1
    - Dst: ExecReScanUnique
      Src: /src/postgres/src/backend/executor/execAmi.c:282,1
    - Dst: ExecReScanHash
      Src: /src/postgres/src/backend/executor/execAmi.c:286,1
    - Dst: ExecReScanSetOp
      Src: /src/postgres/src/backend/executor/execAmi.c:290,1
    - Dst: ExecReScanLockRows
      Src: /src/postgres/src/backend/executor/execAmi.c:294,1
    - Dst: ExecReScanLimit
      Src: /src/postgres/src/backend/executor/execAmi.c:298,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execAmi.c:302,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAmi.c:302,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/executor/execAmi.c:308,1
    CyclomaticComplexity: 53
    EdgeCount: 53
    ICount: 156
    argCount: 1
    argNames:
    - node
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 76
    functionDepth: 6
    functionLinenumber: 76
    functionLinenumberEnd: 311
    functionName: ExecReScan
    functionSourceFile: /src/postgres/src/backend/executor/execAmi.c
    functionUses: 25
    functionsReached:
    - ExecReScanMergeAppend
    - ExecReScanWorkTableScan
    - ExecReScanSetParamPlan
    - ExecReScanSort
    - ExecReScanForeignScan
    - ExecReScanLimit
    - InstrEndLoop
    - ExecReScanSeqScan
    - ExecReScanGatherMerge
    - ExecReScanBitmapIndexScan
    - ExecReScanModifyTable
    - ExecReScanAgg
    - ExecReScanIndexOnlyScan
    - ExecReScanTidRangeScan
    - ExecReScanGather
    - ExecReScanFunctionScan
    - ExecReScanSubqueryScan
    - foreach
    - ExecReScanBitmapOr
    - ExecReScanMaterial
    - ExecReScanUnique
    - ExecReScanSetOp
    - ExecReScanMemoize
    - ExecReScanTidScan
    - innerPlanState
    - ExecReScanBitmapHeapScan
    - ExecReScanIncrementalSort
    - UpdateChangedParamSet
    - ExecReScanRecursiveUnion
    - ExecReScanTableFuncScan
    - ExecReScanWindowAgg
    - nodeTag
    - bms_free
    - ExecReScanNestLoop
    - ReScanExprContext
    - ExecReScanLockRows
    - ExecReScanCustomScan
    - ExecReScanAppend
    - ExecReScanGroup
    - ExecReScanProjectSet
    - elog
    - outerPlanState
    - ExecReScanNamedTuplestoreScan
    - ExecReScanValuesScan
    - lfirst
    - ExecReScanIndexScan
    - ExecReScanHashJoin
    - ExecReScanMergeJoin
    - ExecReScanCteScan
    - ExecReScanSampleScan
    - ExecReScanHash
    - ExecReScanBitmapAnd
    - ExecReScanResult
    linkageType: ''
    returnType: void
    signature: void ExecReScan(PlanState *node)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAmi.c:329,1
    - Dst: ExecIndexMarkPos
      Src: /src/postgres/src/backend/executor/execAmi.c:332,1
    - Dst: ExecIndexOnlyMarkPos
      Src: /src/postgres/src/backend/executor/execAmi.c:336,1
    - Dst: ExecCustomMarkPos
      Src: /src/postgres/src/backend/executor/execAmi.c:340,1
    - Dst: ExecMaterialMarkPos
      Src: /src/postgres/src/backend/executor/execAmi.c:344,1
    - Dst: ExecSortMarkPos
      Src: /src/postgres/src/backend/executor/execAmi.c:348,1
    - Dst: ExecResultMarkPos
      Src: /src/postgres/src/backend/executor/execAmi.c:352,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execAmi.c:357,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAmi.c:357,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - node
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 326
    functionDepth: 3
    functionLinenumber: 326
    functionLinenumberEnd: 360
    functionName: ExecMarkPos
    functionSourceFile: /src/postgres/src/backend/executor/execAmi.c
    functionUses: 1
    functionsReached:
    - nodeTag
    - ExecIndexMarkPos
    - ExecIndexOnlyMarkPos
    - ExecMaterialMarkPos
    - elog
    - ExecSortMarkPos
    - ExecResultMarkPos
    - ExecCustomMarkPos
    linkageType: ''
    returnType: void
    signature: void ExecMarkPos(PlanState *node)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAmi.c:378,1
    - Dst: ExecIndexRestrPos
      Src: /src/postgres/src/backend/executor/execAmi.c:381,1
    - Dst: ExecIndexOnlyRestrPos
      Src: /src/postgres/src/backend/executor/execAmi.c:385,1
    - Dst: ExecCustomRestrPos
      Src: /src/postgres/src/backend/executor/execAmi.c:389,1
    - Dst: ExecMaterialRestrPos
      Src: /src/postgres/src/backend/executor/execAmi.c:393,1
    - Dst: ExecSortRestrPos
      Src: /src/postgres/src/backend/executor/execAmi.c:397,1
    - Dst: ExecResultRestrPos
      Src: /src/postgres/src/backend/executor/execAmi.c:401,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execAmi.c:405,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAmi.c:405,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - node
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 375
    functionDepth: 3
    functionLinenumber: 375
    functionLinenumberEnd: 408
    functionName: ExecRestrPos
    functionSourceFile: /src/postgres/src/backend/executor/execAmi.c
    functionUses: 1
    functionsReached:
    - nodeTag
    - ExecMaterialRestrPos
    - ExecCustomRestrPos
    - ExecResultRestrPos
    - ExecIndexOnlyRestrPos
    - ExecSortRestrPos
    - elog
    - ExecIndexRestrPos
    linkageType: ''
    returnType: void
    signature: void ExecRestrPos(PlanState *node)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execAmi.c:433,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execAmi.c:440,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execAmi.c:452,1
    - Dst: ExecSupportsMarkRestore
      Src: /src/postgres/src/backend/executor/execAmi.c:453,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execAmi.c:454,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execAmi.c:456,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execAmi.c:461,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execAmi.c:461,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execAmi.c:467,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execAmi.c:474,1
    - Dst: ExecSupportsMarkRestore
      Src: /src/postgres/src/backend/executor/execAmi.c:475,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/execAmi.c:475,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execAmi.c:482,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execAmi.c:489,1
    - Dst: ExecSupportsMarkRestore
      Src: /src/postgres/src/backend/executor/execAmi.c:490,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/execAmi.c:490,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 1
    argNames:
    - pathnode
    argTypes:
    - Path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 500
    functionName: ExecSupportsMarkRestore
    functionSourceFile: /src/postgres/src/backend/executor/execAmi.c
    functionUses: 2
    functionsReached:
    - Assert
    - linitial
    - IsA
    - list_length
    - castNode
    - ExecSupportsMarkRestore
    linkageType: ''
    returnType: bool
    signature: bool ExecSupportsMarkRestore(Path *pathnode)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/execAmi.c:524,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/execAmi.c:527,1
    - Dst: ExecSupportsBackwardScan
      Src: /src/postgres/src/backend/executor/execAmi.c:528,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/execAmi.c:528,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execAmi.c:540,1
    - Dst: ExecSupportsBackwardScan
      Src: /src/postgres/src/backend/executor/execAmi.c:542,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execAmi.c:542,1
    - Dst: IndexSupportsBackwardScan
      Src: /src/postgres/src/backend/executor/execAmi.c:557,1
    - Dst: IndexSupportsBackwardScan
      Src: /src/postgres/src/backend/executor/execAmi.c:560,1
    - Dst: ExecSupportsBackwardScan
      Src: /src/postgres/src/backend/executor/execAmi.c:563,1
    - Dst: ExecSupportsBackwardScan
      Src: /src/postgres/src/backend/executor/execAmi.c:591,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/execAmi.c:591,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 50
    argCount: 1
    argNames:
    - node
    argTypes:
    - Plan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 510
    functionDepth: 1
    functionLinenumber: 510
    functionLinenumberEnd: 596
    functionName: ExecSupportsBackwardScan
    functionSourceFile: /src/postgres/src/backend/executor/execAmi.c
    functionUses: 2
    functionsReached:
    - nodeTag
    - IndexSupportsBackwardScan
    - foreach
    - outerPlan
    - lfirst
    - ExecSupportsBackwardScan
    linkageType: ''
    returnType: bool
    signature: bool ExecSupportsBackwardScan(Plan *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/executor/execAmi.c:611,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/executor/execAmi.c:611,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/executor/execAmi.c:612,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execAmi.c:613,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/executor/execAmi.c:614,1
    - Dst: GetIndexAmRoutineByAmId
      Src: /src/postgres/src/backend/executor/execAmi.c:617,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execAmi.c:621,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/executor/execAmi.c:622,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - indexid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 602
    functionDepth: 3
    functionLinenumber: 602
    functionLinenumberEnd: 625
    functionName: IndexSupportsBackwardScan
    functionSourceFile: /src/postgres/src/backend/executor/execAmi.c
    functionUses: 1
    functionsReached:
    - pfree
    - GetIndexAmRoutineByAmId
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - 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:65,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - TableFuncScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 75
    functionName: TableFuncNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeTableFuncscan.c
    functionUses: 0
    functionsReached:
    - tfuncFetchRows
    - tuplestore_gettupleslot
    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: 85
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 85
    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:99,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 104
    functionName: ExecTableFuncScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeTableFuncscan.c
    functionUses: 0
    functionsReached:
    - ExecScan
    - castNode
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecTableFuncScan(PlanState *pstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:119,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:124,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:124,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:125,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:125,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:130,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:140,1
    - Dst: BuildDescFromLists
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:145,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:150,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:156,1
    - Dst: ExecAssignScanProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:157,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:163,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:170,1
    - Dst: ExecInitExprList
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:178,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:180,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:182,1
    - Dst: ExecInitExprList
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:184,1
    - Dst: ExecInitExprList
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:186,1
    - Dst: ExecInitExprList
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:188,1
    - Dst: ExecInitExprList
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:190,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:195,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:196,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:205,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:205,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:207,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 33
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - TableFuncScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 110
    functionDepth: 9
    functionLinenumber: 110
    functionLinenumberEnd: 211
    functionName: ExecInitTableFuncScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeTableFuncscan.c
    functionUses: 1
    functionsReached:
    - Assert
    - ExecInitExprList
    - getTypeInputInfo
    - ExecInitScanTupleSlot
    - ExecAssignExprContext
    - palloc
    - BuildDescFromLists
    - TupleDescAttr
    - fmgr_info
    - ExecInitQual
    - outerPlan
    - AllocSetContextCreate
    - ExecInitResultTypeTL
    - ExecAssignScanProjectionInfo
    - innerPlan
    - makeNode
    - ExecInitExpr
    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:226,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - node
    argTypes:
    - TableFuncScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 228
    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:242,1
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:243,1
    - Dst: tuplestore_end
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:252,1
    - Dst: tuplestore_rescan
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:258,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - node
    argTypes:
    - TableFuncScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 236
    functionDepth: 4
    functionLinenumber: 236
    functionLinenumberEnd: 259
    functionName: ExecReScanTableFuncScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeTableFuncscan.c
    functionUses: 1
    functionsReached:
    - ExecClearTuple
    - tuplestore_end
    - tuplestore_rescan
    - ExecScanReScan
    linkageType: ''
    returnType: void
    signature: void ExecReScanTableFuncScan(TableFuncScanState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:275,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:278,1
    - Dst: tuplestore_begin_heap
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:279,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:290,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:292,1
    - Dst: TableFuncRoutine*::InitOpaque
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:294,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:301,1
    - Dst: tfuncInitialize
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:306,1
    - Dst: tfuncLoadRows
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:312,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:315,1
    - Dst: TableFuncRoutine*::DestroyOpaque
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:318,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:319,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:321,1
    - Dst: TableFuncRoutine*::DestroyOpaque
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:327,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:331,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:332,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 2
    argNames:
    - tstate
    - econtext
    argTypes:
    - TableFuncScanState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 333
    functionName: tfuncFetchRows
    functionSourceFile: /src/postgres/src/backend/executor/nodeTableFuncscan.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - PG_RE_THROW
    - PG_END_TRY
    - PG_TRY
    - tfuncInitialize
    - MemoryContextReset
    - PG_CATCH
    - tuplestore_begin_heap
    - TableFuncRoutine*::InitOpaque
    - ExecEvalExpr
    - TableFuncRoutine*::DestroyOpaque
    - tfuncLoadRows
    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:356,1
    - Dst: forboth
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:359,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:361,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:362,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:366,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:368,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:369,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:370,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:371,1
    - Dst: strVal
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:374,1
    - Dst: TableFuncRoutine*::SetNamespace
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:376,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:385,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:387,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:388,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:389,1
    - Dst: TableFuncRoutine*::SetRowFilter
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:391,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:391,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:401,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:404,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:408,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:412,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:414,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:415,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:416,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:417,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:418,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:419,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:422,1
    - Dst: TableFuncRoutine*::SetColumnFilter
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:424,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 3
    argNames:
    - tstate
    - econtext
    - doc
    argTypes:
    - TableFuncScanState*
    - ExprContext*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 339
    functionDepth: 2
    functionLinenumber: 339
    functionLinenumberEnd: 429
    functionName: tfuncInitialize
    functionSourceFile: /src/postgres/src/backend/executor/nodeTableFuncscan.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - NameStr
    - lfirst_node
    - TableFuncRoutine*::SetRowFilter
    - TextDatumGetCString
    - TupleDescAttr
    - TableFuncRoutine*::SetDocument
    - ereport
    - foreach
    - TableFuncRoutine*::SetNamespace
    - TableFuncRoutine*::SetColumnFilter
    - ExecEvalExpr
    - strVal
    - forboth
    - errdetail
    - lfirst
    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:455,1
    - Dst: TableFuncRoutine*::FetchRow
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:460,1
    - Dst: list_head
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:462,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:465,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:467,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:475,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:480,1
    - Dst: TableFuncRoutine*::GetValue
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:487,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:496,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:499,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:504,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:505,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:506,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:507,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:508,1
    - Dst: lnext
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:515,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:518,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:520,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeTableFuncscan.c:523,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 2
    argNames:
    - tstate
    - econtext
    argTypes:
    - TableFuncScanState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 434
    functionDepth: 3
    functionLinenumber: 434
    functionLinenumberEnd: 524
    functionName: tfuncLoadRows
    functionSourceFile: /src/postgres/src/backend/executor/nodeTableFuncscan.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - MemoryContextSwitchTo
    - NameStr
    - CHECK_FOR_INTERRUPTS
    - tuplestore_putvalues
    - Int32GetDatum
    - MemoryContextReset
    - TupleDescAttr
    - list_head
    - TableFuncRoutine*::GetValue
    - bms_is_member
    - ereport
    - lnext
    - ExecEvalExpr
    - TableFuncRoutine*::FetchRow
    - ExecClearTuple
    - lfirst
    linkageType: ''
    returnType: void
    signature: void tfuncLoadRows(TableFuncScanState *tstate, ExprContext *econtext)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeGather.c:60,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeGather.c:60,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeGather.c:65,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeGather.c:80,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeGather.c:85,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGather.c:86,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeGather.c:86,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeGather.c:87,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGather.c:87,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeGather.c:101,1
    - Dst: ExecConditionalAssignProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeGather.c:102,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeGather.c:117,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeGather.c:124,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - Gather*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 52
    functionDepth: 11
    functionLinenumber: 52
    functionLinenumberEnd: 127
    functionName: ExecInitGather
    functionSourceFile: /src/postgres/src/backend/executor/nodeGather.c
    functionUses: 1
    functionsReached:
    - Assert
    - ExecAssignExprContext
    - ExecInitExtraTupleSlot
    - ExecInitNode
    - ExecConditionalAssignProjectionInfo
    - ExecGetResultType
    - outerPlan
    - outerPlanState
    - ExecInitResultTypeTL
    - innerPlan
    - makeNode
    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:139,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeGather.c:143,1
    - Dst: ExecInitParallelPlan
      Src: /src/postgres/src/backend/executor/nodeGather.c:166,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGather.c:166,1
    - Dst: ExecParallelReinitialize
      Src: /src/postgres/src/backend/executor/nodeGather.c:172,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGather.c:172,1
    - Dst: LaunchParallelWorkers
      Src: /src/postgres/src/backend/executor/nodeGather.c:181,1
    - Dst: ExecParallelCreateReaders
      Src: /src/postgres/src/backend/executor/nodeGather.c:195,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeGather.c:199,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeGather.c:200,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeGather.c:223,1
    - Dst: gather_getnext
      Src: /src/postgres/src/backend/executor/nodeGather.c:229,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeGather.c:230,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeGather.c:241,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 136
    functionDepth: 9
    functionLinenumber: 136
    functionLinenumberEnd: 242
    functionName: ExecGather
    functionSourceFile: /src/postgres/src/backend/executor/nodeGather.c
    functionUses: 0
    functionsReached:
    - ResetExprContext
    - ExecParallelReinitialize
    - CHECK_FOR_INTERRUPTS
    - TupIsNull
    - castNode
    - LaunchParallelWorkers
    - outerPlanState
    - ExecParallelCreateReaders
    - gather_getnext
    - memcpy
    - palloc
    - ExecInitParallelPlan
    - ExecProject
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecGather(PlanState *pstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeGather.c:253,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGather.c:253,1
    - Dst: ExecShutdownGather
      Src: /src/postgres/src/backend/executor/nodeGather.c:254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - GatherState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 250
    functionDepth: 4
    functionLinenumber: 250
    functionLinenumberEnd: 255
    functionName: ExecEndGather
    functionSourceFile: /src/postgres/src/backend/executor/nodeGather.c
    functionUses: 1
    functionsReached:
    - ExecEndNode
    - outerPlanState
    - ExecShutdownGather
    linkageType: ''
    returnType: void
    signature: void ExecEndGather(GatherState *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGather.c:265,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeGather.c:272,1
    - Dst: gather_readnext
      Src: /src/postgres/src/backend/executor/nodeGather.c:276,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/executor/nodeGather.c:278,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeGather.c:280,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeGather.c:294,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeGather.c:297,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeGather.c:304,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - gatherstate
    argTypes:
    - GatherState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 262
    functionDepth: 5
    functionLinenumber: 262
    functionLinenumberEnd: 305
    functionName: gather_getnext
    functionSourceFile: /src/postgres/src/backend/executor/nodeGather.c
    functionUses: 1
    functionsReached:
    - CHECK_FOR_INTERRUPTS
    - ExecProcNode
    - TupIsNull
    - HeapTupleIsValid
    - outerPlanState
    - ExecStoreMinimalTuple
    - ExecClearTuple
    - gather_readnext
    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:322,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeGather.c:332,1
    - Dst: TupleQueueReaderNext
      Src: /src/postgres/src/backend/executor/nodeGather.c:334,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeGather.c:342,1
    - Dst: ExecShutdownGatherWorkers
      Src: /src/postgres/src/backend/executor/nodeGather.c:346,1
    - Dst: memmove
      Src: /src/postgres/src/backend/executor/nodeGather.c:349,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/executor/nodeGather.c:385,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/executor/nodeGather.c:387,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 1
    argNames:
    - gatherstate
    argTypes:
    - GatherState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 310
    functionDepth: 2
    functionLinenumber: 310
    functionLinenumberEnd: 391
    functionName: gather_readnext
    functionSourceFile: /src/postgres/src/backend/executor/nodeGather.c
    functionUses: 1
    functionsReached:
    - ResetLatch
    - Assert
    - CHECK_FOR_INTERRUPTS
    - ExecShutdownGatherWorkers
    - memmove
    - TupleQueueReaderNext
    - WaitLatch
    linkageType: ''
    returnType: MinimalTuple
    signature: MinimalTuple gather_readnext(GatherState *gatherstate)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ExecParallelFinish
      Src: /src/postgres/src/backend/executor/nodeGather.c:403,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeGather.c:407,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - GatherState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 399
    functionDepth: 3
    functionLinenumber: 399
    functionLinenumberEnd: 409
    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:420,1
    - Dst: ExecParallelCleanup
      Src: /src/postgres/src/backend/executor/nodeGather.c:425,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - GatherState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 417
    functionDepth: 4
    functionLinenumber: 417
    functionLinenumberEnd: 428
    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:445,1
    - Dst: ExecShutdownGatherWorkers
      Src: /src/postgres/src/backend/executor/nodeGather.c:448,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeGather.c:461,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeGather.c:475,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - GatherState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 441
    functionDepth: 7
    functionLinenumber: 441
    functionLinenumberEnd: 476
    functionName: ExecReScanGather
    functionSourceFile: /src/postgres/src/backend/executor/nodeGather.c
    functionUses: 1
    functionsReached:
    - ExecShutdownGatherWorkers
    - ExecReScan
    - outerPlanState
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: void ExecReScanGather(GatherState *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ScanDirectionCombine
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:97,1
    - Dst: index_beginscan
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:109,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:123,1
    - Dst: index_getnext_slot
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:131,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:133,1
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:142,1
    - Dst: InstrCountFiltered2
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:145,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:158,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 79
    functionDepth: 4
    functionLinenumber: 79
    functionLinenumberEnd: 159
    functionName: IndexNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 0
    functionsReached:
    - ExecQualAndReset
    - InstrCountFiltered2
    - CHECK_FOR_INTERRUPTS
    - index_getnext_slot
    - index_rescan
    - ExecClearTuple
    - ScanDirectionCombine
    - index_beginscan
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      IndexNext(IndexScanState *node)'
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:192,1
    - Dst: ScanDirectionIsBackward
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:192,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:193,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:193,1
    - Dst: index_beginscan
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:205,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:219,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:226,1
    - Dst: pairingheap_is_empty
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:233,1
    - Dst: pairingheap_first
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:235,1
    - Dst: cmp_orderbyvals
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:238,1
    - Dst: reorderqueue_pop
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:246,1
    - Dst: ExecForceStoreHeapTuple
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:249,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:256,1
    - Dst: index_getnext_slot
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:263,1
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:280,1
    - Dst: InstrCountFiltered2
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:283,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:285,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:293,1
    - Dst: EvalOrderByExpressions
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:294,1
    - Dst: cmp_orderbyvals
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:305,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:311,1
    - Dst: cmp_orderbyvals
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:334,1
    - Dst: reorderqueue_push
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:341,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:355,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 66
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 168
    functionDepth: 6
    functionLinenumber: 168
    functionLinenumberEnd: 356
    functionName: IndexNextWithReorder
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 0
    functionsReached:
    - EvalOrderByExpressions
    - CHECK_FOR_INTERRUPTS
    - ScanDirectionIsBackward
    - pairingheap_is_empty
    - ScanDirectionIsForward
    - reorderqueue_push
    - reorderqueue_pop
    - index_getnext_slot
    - ExecClearTuple
    - ExecQualAndReset
    - cmp_orderbyvals
    - pairingheap_first
    - index_rescan
    - elog
    - index_beginscan
    - ResetExprContext
    - Assert
    - InstrCountFiltered2
    - ExecForceStoreHeapTuple
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      IndexNextWithReorder(IndexScanState *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:368,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:371,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:373,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:375,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - node
    - econtext
    argTypes:
    - IndexScanState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 361
    functionDepth: 1
    functionLinenumber: 361
    functionLinenumberEnd: 382
    functionName: EvalOrderByExpressions
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - ExecEvalExpr
    - MemoryContextSwitchTo
    - lfirst
    - foreach
    linkageType: ''
    returnType: void
    signature: void EvalOrderByExpressions(IndexScanState *node, ExprContext *econtext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - node
    - slot
    argTypes:
    - IndexScanState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 387
    functionDepth: 4
    functionLinenumber: 387
    functionLinenumberEnd: 400
    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:430,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: 436
      start: 406
    functionDepth: 0
    functionLinenumber: 406
    functionLinenumberEnd: 436
    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:451,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - pairingheap_node*
    - pairingheap_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 442
    functionDepth: 1
    functionLinenumber: 442
    functionLinenumberEnd: 454
    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:465,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:469,1
    - Dst: ExecCopySlotHeapTuple
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:470,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:472,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:474,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:478,1
    - Dst: pairingheap_add
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:485,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:487,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - node
    - slot
    - orderbyvals
    - orderbynulls
    argTypes:
    - IndexScanState*
    - TupleTableSlot*
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 459
    functionDepth: 2
    functionLinenumber: 459
    functionLinenumberEnd: 488
    functionName: reorderqueue_push
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - pairingheap_add
    - datumCopy
    - ExecCopySlotHeapTuple
    - palloc
    linkageType: ''
    returnType: void
    signature: "void reorderqueue_push(IndexScanState *node, TupleTableSlot *slot,\n\t\t\t\t
      \ Datum *orderbyvals, bool *orderbynulls)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pairingheap_remove_first
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:500,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:506,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:506,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:508,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:509,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:510,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 493
    functionDepth: 1
    functionLinenumber: 493
    functionLinenumberEnd: 513
    functionName: reorderqueue_pop
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - pairingheap_remove_first
    - DatumGetPointer
    - pfree
    linkageType: ''
    returnType: HeapTuple
    signature: HeapTuple reorderqueue_pop(IndexScanState *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:523,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:529,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:532,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:536,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 520
    functionDepth: 7
    functionLinenumber: 520
    functionLinenumberEnd: 539
    functionName: ExecIndexScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 0
    functionsReached:
    - ExecReScan
    - ExecScan
    - castNode
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecIndexScan(PlanState *pstate)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:566,1
    - Dst: ExecIndexEvalRuntimeKeys
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:567,1
    - Dst: pairingheap_is_empty
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:578,1
    - Dst: reorderqueue_pop
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:580,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:581,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:587,1
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:592,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 552
    functionDepth: 4
    functionLinenumber: 552
    functionLinenumberEnd: 593
    functionName: ExecReScanIndexScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - ResetExprContext
    - heap_freetuple
    - reorderqueue_pop
    - ExecIndexEvalRuntimeKeys
    - index_rescan
    - pairingheap_is_empty
    - ExecScanReScan
    linkageType: ''
    returnType: void
    signature: void ExecReScanIndexScan(IndexScanState *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:608,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:634,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:645,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:645,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:651,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - econtext
    - runtimeKeys
    - numRuntimeKeys
    argTypes:
    - ExprContext*
    - IndexRuntimeKeyInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 600
    functionDepth: 1
    functionLinenumber: 600
    functionLinenumberEnd: 652
    functionName: ExecIndexEvalRuntimeKeys
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 3
    functionsReached:
    - ExecEvalExpr
    - PG_DETOAST_DATUM
    - MemoryContextSwitchTo
    - PointerGetDatum
    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:671,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:691,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:699,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:701,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:701,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:703,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:704,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:729,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - econtext
    - arrayKeys
    - numArrayKeys
    argTypes:
    - ExprContext*
    - IndexArrayKeyInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 662
    functionDepth: 1
    functionLinenumber: 662
    functionLinenumberEnd: 732
    functionName: ExecIndexEvalArrayKeys
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - ARR_ELEMTYPE
    - deconstruct_array
    - get_typlenbyvalalign
    - MemoryContextSwitchTo
    - DatumGetArrayTypeP
    - ExecEvalExpr
    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: 779
      start: 741
    functionDepth: 0
    functionLinenumber: 741
    functionLinenumberEnd: 779
    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:803,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:807,1
    - Dst: index_endscan
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:823,1
    - Dst: index_close
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:825,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 786
    functionDepth: 2
    functionLinenumber: 786
    functionLinenumberEnd: 826
    functionName: ExecEndIndexScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - IsParallelWorker
    - Assert
    - 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:854,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:860,1
    - Dst: index_markpos
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:865,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 835
    functionDepth: 2
    functionLinenumber: 835
    functionLinenumberEnd: 866
    functionName: ExecIndexMarkPos
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - Assert
    - elog
    - index_markpos
    linkageType: ''
    returnType: void
    signature: void ExecIndexMarkPos(IndexScanState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:883,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:889,1
    - Dst: index_restrpos
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:894,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 872
    functionDepth: 2
    functionLinenumber: 872
    functionLinenumberEnd: 895
    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: 4
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:918,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:928,1
    - Dst: ExecOpenScanRelation
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:933,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:941,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:942,1
    - Dst: table_slot_callbacks
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:943,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:948,1
    - Dst: ExecAssignScanProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:949,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:962,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:964,1
    - Dst: ExecInitExprList
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:966,1
    - Dst: exec_rt_fetch
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:977,1
    - Dst: index_open
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:978,1
    - Dst: ExecIndexBuildScanKeys
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:990,1
    - Dst: ExecIndexBuildScanKeys
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1004,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1027,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1027,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1028,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1028,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1030,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1032,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1034,1
    - Dst: forboth
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1036,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1038,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1039,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1040,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1041,1
    - Dst: PrepareSortSupportFromOrderingOp
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1053,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1055,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1063,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1065,1
    - Dst: pairingheap_allocate
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1068,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1082,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 53
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - IndexScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1095
      start: 908
    functionDepth: 9
    functionLinenumber: 908
    functionLinenumberEnd: 1095
    functionName: ExecInitIndexScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - ExecOpenScanRelation
    - exec_rt_fetch
    - list_length
    - ExecInitResultTypeTL
    - forboth
    - ExecIndexBuildScanKeys
    - makeNode
    - exprType
    - get_typlenbyval
    - ExecAssignExprContext
    - table_slot_callbacks
    - ExecInitQual
    - ExecAssignScanProjectionInfo
    - pairingheap_allocate
    - palloc
    - lfirst
    - Assert
    - ExecInitExprList
    - exprCollation
    - ExecInitScanTupleSlot
    - PrepareSortSupportFromOrderingOp
    - RelationGetDescr
    - palloc0
    - lfirst_oid
    - index_open
    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:1175,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1176,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1190,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1200,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1213,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1214,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1226,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1228,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1231,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1233,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1235,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1239,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1247,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1258,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1260,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1263,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1265,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1281,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1287,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1292,1
    - Dst: TypeIsToastable
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1294,1
    - Dst: ScanKeyEntryInitialize
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1302,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1311,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1322,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1325,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1325,1
    - Dst: forfour
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1329,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1337,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1338,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1339,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1340,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1345,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1348,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1350,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1352,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1362,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1365,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1371,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1373,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1377,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1378,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1384,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1387,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1389,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1405,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1411,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1416,1
    - Dst: TypeIsToastable
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1418,1
    - Dst: ScanKeyEntryInitialize
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1426,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1444,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1449,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1451,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1458,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1460,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1467,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1469,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1472,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1474,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1476,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1480,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1488,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1496,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1498,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1501,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1507,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1523,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1529,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1534,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1552,1
    - Dst: ScanKeyEntryInitialize
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1561,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1570,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1576,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1583,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1586,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1588,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1590,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1606,1
    - Dst: ScanKeyEntryInitialize
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1612,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1622,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1623,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1626,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1631,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1648,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: 1649
      start: 1157
    functionDepth: 2
    functionLinenumber: 1157
    functionLinenumberEnd: 1649
    functionName: ExecIndexBuildScanKeys
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 3
    functionsReached:
    - list_length
    - pfree
    - RegProcedureIsValid
    - lsecond
    - forfour
    - TypeIsToastable
    - IndexRelationGetNumberOfKeyAttributes
    - nodeTag
    - linitial
    - ScanKeyEntryInitialize
    - IsA
    - get_leftop
    - elog
    - MemSet
    - repalloc
    - palloc
    - get_opfamily_proc
    - ExecInitExpr
    - lfirst
    - get_op_opfamily_properties
    - Assert
    - palloc0
    - PointerGetDatum
    - get_rightop
    - lfirst_oid
    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:1200,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1213,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1214,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1226,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1228,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1231,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1233,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1235,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1239,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1247,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1258,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1260,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1263,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1265,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1281,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1287,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1292,1
    - Dst: TypeIsToastable
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1294,1
    - Dst: ScanKeyEntryInitialize
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1302,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1311,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1322,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1325,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1325,1
    - Dst: forfour
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1329,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1337,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1338,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1339,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1340,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1345,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1348,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1350,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1352,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1362,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1365,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1371,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1373,1
    - Dst: RegProcedureIsValid
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1377,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1378,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1384,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1387,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1389,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1405,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1411,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1416,1
    - Dst: TypeIsToastable
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1418,1
    - Dst: ScanKeyEntryInitialize
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1426,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1444,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1449,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1451,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1458,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1460,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1467,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1469,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1472,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1474,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1476,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1480,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1488,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1496,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1498,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1501,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1507,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1523,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1529,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1534,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1552,1
    - Dst: ScanKeyEntryInitialize
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1561,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1570,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1576,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1583,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1586,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1588,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1590,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1606,1
    - Dst: ScanKeyEntryInitialize
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1612,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1622,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1623,1
    CyclomaticComplexity: 53
    EdgeCount: 53
    ICount: 175
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1624
      start: 1198
    functionDepth: 2
    functionLinenumber: 1198
    functionLinenumberEnd: 1624
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 418
    functionsReached:
    - list_length
    - RegProcedureIsValid
    - lsecond
    - forfour
    - TypeIsToastable
    - IndexRelationGetNumberOfKeyAttributes
    - nodeTag
    - linitial
    - ScanKeyEntryInitialize
    - IsA
    - get_leftop
    - elog
    - MemSet
    - repalloc
    - palloc
    - get_opfamily_proc
    - ExecInitExpr
    - lfirst
    - get_op_opfamily_properties
    - Assert
    - PointerGetDatum
    - get_rightop
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(qual_cell, quals)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: index_parallelscan_estimate
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1677,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1683,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1684,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - IndexScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1685
      start: 1663
    functionDepth: 2
    functionLinenumber: 1663
    functionLinenumberEnd: 1685
    functionName: ExecIndexScanEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - index_parallelscan_estimate
    - shm_toc_estimate_chunk
    - shm_toc_estimate_keys
    linkageType: ''
    returnType: void
    signature: "void ExecIndexScanEstimate(IndexScanState *node,\n\t\t\t\t\t  ParallelContext
      *pcxt)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1708,1
    - Dst: index_parallelscan_initialize
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1709,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1714,1
    - Dst: index_beginscan_parallel
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1723,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1735,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - IndexScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1738
      start: 1693
    functionDepth: 3
    functionLinenumber: 1693
    functionLinenumberEnd: 1738
    functionName: ExecIndexScanInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - index_beginscan_parallel
    - shm_toc_insert
    - index_rescan
    - index_parallelscan_initialize
    - 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:1750,1
    - Dst: index_parallelrescan
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1751,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - IndexScanState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1752
      start: 1746
    functionDepth: 2
    functionLinenumber: 1746
    functionLinenumberEnd: 1752
    functionName: ExecIndexScanReInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - index_parallelrescan
    - Assert
    linkageType: ''
    returnType: void
    signature: "void ExecIndexScanReInitializeDSM(IndexScanState *node,\n\t\t\t\t\t\t\t
      ParallelContext *pcxt)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1774,1
    - Dst: OffsetToPointer
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1778,1
    - Dst: index_beginscan_parallel
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1787,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1799,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - IndexScanState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1802
      start: 1760
    functionDepth: 3
    functionLinenumber: 1760
    functionLinenumberEnd: 1802
    functionName: ExecIndexScanInitializeWorker
    functionSourceFile: /src/postgres/src/backend/executor/nodeIndexscan.c
    functionUses: 1
    functionsReached:
    - index_rescan
    - OffsetToPointer
    - index_beginscan_parallel
    - shm_toc_lookup
    linkageType: ''
    returnType: void
    signature: "void ExecIndexScanInitializeWorker(IndexScanState *node,\n\t\t\t\t\t\t\t
      \ ParallelWorkerContext *pwcxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1822,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeIndexscan.c:1823,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - IndexScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1824
      start: 1810
    functionDepth: 0
    functionLinenumber: 1810
    functionLinenumberEnd: 1824
    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: 469
      start: 456
    functionDepth: 0
    functionLinenumber: 456
    functionLinenumberEnd: 469
    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:481,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/executor/nodeAgg.c:489,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/executor/nodeAgg.c:500,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:512,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/executor/nodeAgg.c:513,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeAgg.c:523,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeAgg.c:524,1
    - Dst: tuplesort_begin_heap
      Src: /src/postgres/src/backend/executor/nodeAgg.c:526,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - aggstate
    - newphase
    argTypes:
    - AggState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 478
    functionDepth: 1
    functionLinenumber: 478
    functionLinenumberEnd: 538
    functionName: initialize_phase
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExecGetResultType
    - tuplesort_begin_heap
    - outerPlanState
    - tuplesort_performsort
    - 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:556,1
    - Dst: tuplesort_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeAgg.c:557,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeAgg.c:563,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeAgg.c:563,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeAgg.c:565,1
    - Dst: tuplesort_puttupleslot
      Src: /src/postgres/src/backend/executor/nodeAgg.c:566,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 548
    functionDepth: 2
    functionLinenumber: 548
    functionLinenumberEnd: 569
    functionName: fetch_input_tuple
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - CHECK_FOR_INTERRUPTS
    - ExecProcNode
    - TupIsNull
    - tuplesort_gettupleslot
    - outerPlanState
    - tuplesort_puttupleslot
    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:593,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/nodeAgg.c:603,1
    - Dst: tuplesort_begin_datum
      Src: /src/postgres/src/backend/executor/nodeAgg.c:606,1
    - Dst: tuplesort_begin_heap
      Src: /src/postgres/src/backend/executor/nodeAgg.c:614,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:635,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeAgg.c:636,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:639,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - aggstate
    - pertrans
    - pergroupstate
    argTypes:
    - AggState*
    - AggStatePerTrans
    - AggStatePerGroup
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 579
    functionDepth: 2
    functionLinenumber: 579
    functionLinenumberEnd: 651
    functionName: initialize_aggregate
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - TupleDescAttr
    - datumCopy
    - 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:672,1
    - Dst: select_current_set
      Src: /src/postgres/src/backend/executor/nodeAgg.c:684,1
    - Dst: initialize_aggregate
      Src: /src/postgres/src/backend/executor/nodeAgg.c:691,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - aggstate
    - pergroups
    - numReset
    argTypes:
    - AggState*
    - AggStatePerGroup*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 666
    functionDepth: 3
    functionLinenumber: 666
    functionLinenumberEnd: 694
    functionName: initialize_aggregates
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - select_current_set
    - Max
    - initialize_aggregate
    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:741,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeAgg.c:742,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:747,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:763,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/nodeAgg.c:775,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeAgg.c:794,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeAgg.c:794,1
    - Dst: ExecAggCopyTransValue
      Src: /src/postgres/src/backend/executor/nodeAgg.c:795,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:803,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 3
    argNames:
    - aggstate
    - pertrans
    - pergroupstate
    argTypes:
    - AggState*
    - AggStatePerTrans
    - AggStatePerGroup
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 707
    functionDepth: 1
    functionLinenumber: 707
    functionLinenumberEnd: 804
    functionName: advance_transition_function
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - ExecAggCopyTransValue
    - datumCopy
    - DatumGetPointer
    - FunctionCallInvoke
    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:820,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 817
    functionDepth: 3
    functionLinenumber: 817
    functionLinenumberEnd: 822
    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:863,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/executor/nodeAgg.c:865,1
    - Dst: tuplesort_getdatum
      Src: /src/postgres/src/backend/executor/nodeAgg.c:877,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeAgg.c:884,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:885,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/nodeAgg.c:895,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/executor/nodeAgg.c:895,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:899,1
    - Dst: advance_transition_function
      Src: /src/postgres/src/backend/executor/nodeAgg.c:904,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:906,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:915,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeAgg.c:915,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/nodeAgg.c:917,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:929,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeAgg.c:929,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/executor/nodeAgg.c:931,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 30
    argCount: 3
    argNames:
    - aggstate
    - pertrans
    - pergroupstate
    argTypes:
    - AggState*
    - AggStatePerTrans
    - AggStatePerGroup
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 846
    functionDepth: 2
    functionLinenumber: 846
    functionLinenumberEnd: 933
    functionName: process_ordered_aggregate_single
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - MemoryContextSwitchTo
    - FunctionCall2Coll
    - MemoryContextReset
    - datumCopy
    - tuplesort_getdatum
    - advance_transition_function
    - DatumGetBool
    - tuplesort_performsort
    - DatumGetPointer
    - tuplesort_end
    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:964,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:966,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:968,1
    - Dst: tuplesort_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeAgg.c:970,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeAgg.c:973,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeAgg.c:981,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/nodeAgg.c:987,1
    - Dst: advance_transition_function
      Src: /src/postgres/src/backend/executor/nodeAgg.c:997,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1013,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1015,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1019,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1021,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 3
    argNames:
    - aggstate
    - pertrans
    - pergroupstate
    argTypes:
    - AggState*
    - AggStatePerTrans
    - AggStatePerGroup
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 947
    functionDepth: 3
    functionLinenumber: 947
    functionLinenumberEnd: 1026
    functionName: process_ordered_aggregate_multi
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - ResetExprContext
    - CHECK_FOR_INTERRUPTS
    - tuplesort_gettupleslot
    - slot_getsomeattrs
    - advance_transition_function
    - ExecQual
    - ExecClearTuple
    - tuplesort_performsort
    - 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:1050,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1057,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1066,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1068,1
    - Dst: ExecEvalExpr
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1070,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1080,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1087,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1094,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1118,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1120,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1129,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1135,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: 1136
      start: 1044
    functionDepth: 1
    functionLinenumber: 1044
    functionLinenumberEnd: 1136
    functionName: finalize_aggregate
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - LOCAL_FCINFO
    - MemoryContextSwitchTo
    - InitFunctionCallInfoData
    - MakeExpandedObjectReadOnly
    - foreach
    - ExecEvalExpr
    - OidIsValid
    - lfirst
    - FunctionCallInvoke
    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:1153,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1159,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1173,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1179,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1181,1
    - Dst: MakeExpandedObjectReadOnly
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1189,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1195,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: 1196
      start: 1144
    functionDepth: 1
    functionLinenumber: 1144
    functionLinenumberEnd: 1196
    functionName: finalize_partialaggregate
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - OidIsValid
    - FunctionCallInvoke
    - MakeExpandedObjectReadOnly
    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:1210,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1211,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - perhash
    - inputslot
    - hashslot
    argTypes:
    - AggStatePerHash
    - TupleTableSlot*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1221
      start: 1202
    functionDepth: 2
    functionLinenumber: 1202
    functionLinenumberEnd: 1221
    functionName: prepare_hash_slot
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - slot_getsomeattrs
    - ExecStoreVirtualTuple
    - 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:1256,1
    - Dst: ExecStoreAllNullTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1263,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1270,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1270,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1272,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1274,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1276,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - aggstate
    - slot
    - currentSet
    argTypes:
    - AggState*
    - TupleTableSlot*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1281
      start: 1247
    functionDepth: 3
    functionLinenumber: 1247
    functionLinenumberEnd: 1281
    functionName: prepare_projection_slot
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - slot_getsomeattrs
    - TTS_EMPTY
    - foreach
    - linitial_int
    - ExecStoreAllNullTuple
    - bms_is_member
    - lfirst_int
    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:1315,1
    - Dst: process_ordered_aggregate_single
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1319,1
    - Dst: process_ordered_aggregate_multi
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1323,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1334,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1334,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1340,1
    - Dst: DO_AGGSPLIT_SKIPFINAL
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1355,1
    - Dst: finalize_partialaggregate
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1356,1
    - Dst: finalize_aggregate
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1359,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 3
    argNames:
    - aggstate
    - peraggs
    - pergroup
    argTypes:
    - AggState*
    - AggStatePerAgg
    - AggStatePerGroup
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1362
      start: 1292
    functionDepth: 4
    functionLinenumber: 1292
    functionLinenumberEnd: 1362
    functionName: finalize_aggregates
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - finalize_partialaggregate
    - process_ordered_aggregate_multi
    - DO_AGGSPLIT_SKIPFINAL
    - finalize_aggregate
    - ExecClearTuple
    - DatumGetPointer
    - process_ordered_aggregate_single
    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:1377,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1383,1
    - Dst: InstrCountFiltered1
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1386,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1389
      start: 1369
    functionDepth: 4
    functionLinenumber: 1369
    functionLinenumberEnd: 1389
    functionName: project_aggregates
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - InstrCountFiltered1
    - ExecProject
    - ExecQual
    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:1406,1
    - Dst: find_cols_walker
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1407,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1411,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - aggstate
    - aggregated
    - unaggregated
    argTypes:
    - AggState*
    - Bitmapset**
    - Bitmapset**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1416
      start: 1395
    functionDepth: 3
    functionLinenumber: 1395
    functionLinenumberEnd: 1416
    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:1423,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1428,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1429,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1431,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1434,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1438,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1440,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1442,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1446,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - FindColsContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1447
      start: 1418
    functionDepth: 3
    functionLinenumber: 1418
    functionLinenumberEnd: 1447
    functionName: find_cols_walker
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - Assert
    - IsA
    - expression_tree_walker
    - 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:1478,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1482,1
    - Dst: hash_choose_num_buckets
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1487,1
    - Dst: IS_INJECTION_POINT_ATTACHED
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1492,1
    - Dst: TupleHashEntrySize
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1494,1
    - Dst: INJECTION_POINT_CACHED
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1495,1
    - Dst: build_hash_table
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1499,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1503
      start: 1465
    functionDepth: 1
    functionLinenumber: 1465
    functionLinenumberEnd: 1503
    functionName: build_hash_tables
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - Assert
    - INJECTION_POINT_CACHED
    - build_hash_table
    - hash_choose_num_buckets
    - TupleHashEntrySize
    - ResetTupleHashTable
    - IS_INJECTION_POINT_ATTACHED
    linkageType: ''
    returnType: void
    signature: void build_hash_tables(AggState *aggstate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1517,1
    - Dst: BuildTupleHashTable
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1528,1
    - Dst: DO_AGGSPLIT_SKIPFINAL
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1541,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - aggstate
    - setno
    - nbuckets
    argTypes:
    - AggState*
    - int
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1542
      start: 1508
    functionDepth: 8
    functionLinenumber: 1508
    functionLinenumberEnd: 1542
    functionName: build_hash_table
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 3
    functionsReached:
    - BuildTupleHashTable
    - Assert
    - DO_AGGSPLIT_SKIPFINAL
    linkageType: ''
    returnType: void
    signature: void build_hash_table(AggState *aggstate, int setno, long nbuckets)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1575,1
    - Dst: find_cols
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1581,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1582,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1590,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1599,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1620,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1622,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1624,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1625,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1635,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1638,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1640,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1644,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1659,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1664,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1675,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1675,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1677,1
    - Dst: ExecTypeFromTL
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1680,1
    - Dst: execTuplesHashPrepare
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1682,1
    - Dst: ExecAllocTableSlot
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1687,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1690,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1691,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1694,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 45
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1695
      start: 1569
    functionDepth: 7
    functionLinenumber: 1569
    functionLinenumberEnd: 1695
    functionName: find_hash_columns
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - bms_copy
    - bms_union
    - bms_num_members
    - lfirst_int
    - ExecAllocTableSlot
    - foreach
    - Max
    - find_cols
    - bms_next_member
    - bms_free
    - bms_del_member
    - list_nth
    - lappend
    - outerPlanState
    - bms_is_member
    - palloc
    - list_free
    - bms_add_member
    - ExecTypeFromTL
    - execTuplesHashPrepare
    linkageType: ''
    returnType: void
    signature: void find_hash_columns(AggState *aggstate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1706,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1714,1
    - Dst: pg_nextpower2_size_t
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1722,1
    - Dst: TupleHashEntrySize
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1727,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - numTrans
    - tupleWidth
    - transitionSpace
    argTypes:
    - int
    - Size
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1731
      start: 1700
    functionDepth: 1
    functionLinenumber: 1700
    functionLinenumberEnd: 1731
    functionName: hash_agg_entry_size
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - pg_nextpower2_size_t
    - TupleHashEntrySize
    - MAXALIGN
    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:1758,1
    - Dst: ExecBuildAggTrans
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1788,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - aggstate
    - minslot
    - nullcheck
    argTypes:
    - AggState*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1798
      start: 1751
    functionDepth: 11
    functionLinenumber: 1751
    functionLinenumberEnd: 1798
    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:1815,1
    - Dst: hash_choose_num_partitions
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1832,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: 1857
      start: 1808
    functionDepth: 1
    functionLinenumber: 1808
    functionLinenumberEnd: 1857
    functionName: hash_agg_set_limits
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - get_hash_memory_limit
    - hash_choose_num_partitions
    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:1870,1
    - Dst: MemoryContextMemAllocated
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1872,1
    - Dst: MemoryContextMemAllocated
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1874,1
    - Dst: IS_INJECTION_POINT_ATTACHED
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1882,1
    - Dst: INJECTION_POINT_CACHED
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1885,1
    - Dst: hash_agg_enter_spill_mode
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1902,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1903
      start: 1866
    functionDepth: 1
    functionLinenumber: 1866
    functionLinenumberEnd: 1903
    functionName: hash_agg_check_limits
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - MemoryContextMemAllocated
    - hash_agg_enter_spill_mode
    - IS_INJECTION_POINT_ATTACHED
    - 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:1913,1
    - Dst: hashagg_recompile_expressions
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1915,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1919,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1920,1
    - Dst: LogicalTapeSetCreate
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1924,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1926,1
    - Dst: hashagg_spill_init
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1933,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1938
      start: 1910
    functionDepth: 12
    functionLinenumber: 1910
    functionLinenumberEnd: 1938
    functionName: hash_agg_enter_spill_mode
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - Assert
    - hashagg_recompile_expressions
    - hashagg_spill_init
    - INJECTION_POINT
    - LogicalTapeSetCreate
    - palloc
    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:1960,1
    - Dst: MemoryContextMemAllocated
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1963,1
    - Dst: MemoryContextMemAllocated
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1966,1
    - Dst: LogicalTapeSetBlocks
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1981,1
    - Dst: TupleHashEntrySize
      Src: /src/postgres/src/backend/executor/nodeAgg.c:1991,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 3
    argNames:
    - aggstate
    - from_tape
    - npartitions
    argTypes:
    - AggState*
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1994
      start: 1946
    functionDepth: 1
    functionLinenumber: 1946
    functionLinenumberEnd: 1994
    functionName: hash_agg_update_metrics
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - MemoryContextMemAllocated
    - TupleHashEntrySize
    - LogicalTapeSetBlocks
    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:2008,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2018,1
    - Dst: pg_prevpower2_size_t
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2038,1
    - Dst: Min
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2041,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2044,1
    - Dst: BumpContextCreate
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2046,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2052
      start: 1999
    functionDepth: 8
    functionLinenumber: 1999
    functionLinenumberEnd: 2052
    functionName: hash_create_memory
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - Min
    - BumpContextCreate
    - pg_prevpower2_size_t
    - Max
    - AllocSetContextCreate
    - CreateWorkExprContext
    linkageType: ''
    returnType: void
    signature: void hash_create_memory(AggState *aggstate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2074,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - hashentrysize
    - ngroups
    - memory
    argTypes:
    - double
    - long
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2075
      start: 2057
    functionDepth: 0
    functionLinenumber: 2057
    functionLinenumberEnd: 2075
    functionName: hash_choose_num_buckets
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - Max
    linkageType: ''
    returnType: long
    signature: long hash_choose_num_buckets(double hashentrysize, long ngroups, Size
      memory)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: get_hash_memory_limit
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2086,1
    - Dst: my_log2
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2118,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: 2131
      start: 2082
    functionDepth: 1
    functionLinenumber: 2082
    functionLinenumberEnd: 2131
    functionName: hash_choose_num_partitions
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - get_hash_memory_limit
    - my_log2
    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:2144,1
    - Dst: TupleHashEntryGetAdditional
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2150,1
    - Dst: initialize_aggregate
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2161,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - aggstate
    - hashtable
    - entry
    argTypes:
    - AggState*
    - TupleHashTable
    - TupleHashEntry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2163
      start: 2136
    functionDepth: 3
    functionLinenumber: 2136
    functionLinenumberEnd: 2163
    functionName: initialize_hash_entry
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - TupleHashEntryGetAdditional
    - initialize_aggregate
    - hash_agg_check_limits
    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:2200,1
    - Dst: prepare_hash_slot
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2201,1
    - Dst: LookupTupleHashEntry
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2205,1
    - Dst: initialize_hash_entry
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2211,1
    - Dst: TupleHashEntryGetAdditional
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2212,1
    - Dst: hashagg_spill_init
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2220,1
    - Dst: hashagg_spill_tuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2224,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2228
      start: 2180
    functionDepth: 4
    functionLinenumber: 2180
    functionLinenumberEnd: 2228
    functionName: lookup_hash_entries
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - initialize_hash_entry
    - TupleHashEntryGetAdditional
    - hashagg_spill_init
    - LookupTupleHashEntry
    - select_current_set
    - hashagg_spill_tuple
    - prepare_hash_slot
    linkageType: ''
    returnType: void
    signature: void lookup_hash_entries(AggState *aggstate)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2246,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2249,1
    - Dst: agg_fill_hash_table
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2258,1
    - Dst: agg_retrieve_hash_table
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2261,1
    - Dst: agg_retrieve_direct
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2265,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2269,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2274
      start: 2243
    functionDepth: 1
    functionLinenumber: 2243
    functionLinenumberEnd: 2274
    functionName: ExecAgg
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - CHECK_FOR_INTERRUPTS
    - TupIsNull
    - agg_retrieve_hash_table
    - agg_retrieve_direct
    - agg_fill_hash_table
    - castNode
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecAgg(PlanState *pstate)'
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2291,1
    - Dst: ReScanExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2334,1
    - Dst: ReScanExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2354,1
    - Dst: initialize_phase
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2366,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2369,1
    - Dst: initialize_phase
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2379,1
    - Dst: ResetTupleHashIterator
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2381,1
    - Dst: select_current_set
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2383,1
    - Dst: agg_retrieve_hash_table
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2384,1
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2427,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2432,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2433,1
    - Dst: fetch_input_tuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2450,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2451,1
    - Dst: ExecCopySlotHeapTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2457,1
    - Dst: initialize_aggregates
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2507,1
    - Dst: ExecForceStoreHeapTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2516,1
    - Dst: lookup_hash_entries
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2536,1
    - Dst: advance_aggregates
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2540,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2543,1
    - Dst: fetch_input_tuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2545,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2546,1
    - Dst: hashagg_finish_initial_spills
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2553,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2576,1
    - Dst: ExecCopySlotHeapTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2579,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2597,1
    - Dst: prepare_projection_slot
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2601,1
    - Dst: select_current_set
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2603,1
    - Dst: finalize_aggregates
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2605,1
    - Dst: project_aggregates
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2613,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 111
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2620
      start: 2279
    functionDepth: 6
    functionLinenumber: 2279
    functionLinenumberEnd: 2620
    functionName: agg_retrieve_direct
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - advance_aggregates
    - prepare_projection_slot
    - hashagg_finish_initial_spills
    - TupIsNull
    - initialize_aggregates
    - select_current_set
    - Max
    - ExecCopySlotHeapTuple
    - ExecQual
    - lookup_hash_entries
    - ExecQualAndReset
    - agg_retrieve_hash_table
    - ReScanExprContext
    - project_aggregates
    - ResetTupleHashIterator
    - ResetExprContext
    - Assert
    - fetch_input_tuple
    - finalize_aggregates
    - initialize_phase
    - ExecForceStoreHeapTuple
    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:2637,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2638,1
    - Dst: lookup_hash_entries
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2645,1
    - Dst: advance_aggregates
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2648,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2654,1
    - Dst: hashagg_finish_initial_spills
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2658,1
    - Dst: select_current_set
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2662,1
    - Dst: ResetTupleHashIterator
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2663,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2665
      start: 2625
    functionDepth: 5
    functionLinenumber: 2625
    functionLinenumberEnd: 2665
    functionName: agg_fill_hash_table
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - advance_aggregates
    - fetch_input_tuple
    - ResetExprContext
    - hashagg_finish_initial_spills
    - TupIsNull
    - select_current_set
    - lookup_hash_entries
    - ResetTupleHashIterator
    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:2692,1
    - Dst: list_delete_last
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2693,1
    - Dst: hash_agg_set_limits
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2695,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2706,1
    - Dst: ReScanExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2710,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2711,1
    - Dst: ResetTupleHashTable
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2713,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2722,1
    - Dst: select_current_set
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2729,1
    - Dst: hashagg_recompile_expressions
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2740,1
    - Dst: INJECTION_POINT
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2742,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2754,1
    - Dst: hashagg_batch_read
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2756,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2760,1
    - Dst: prepare_hash_slot
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2763,1
    - Dst: LookupTupleHashEntryHash
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2766,1
    - Dst: initialize_hash_entry
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2772,1
    - Dst: TupleHashEntryGetAdditional
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2773,1
    - Dst: advance_aggregates
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2774,1
    - Dst: hashagg_spill_init
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2785,1
    - Dst: hashagg_spill_tuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2789,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2798,1
    - Dst: LogicalTapeClose
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2801,1
    - Dst: hashagg_spill_finish
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2809,1
    - Dst: hash_agg_update_metrics
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2810,1
    - Dst: hash_agg_update_metrics
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2813,1
    - Dst: select_current_set
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2818,1
    - Dst: ResetTupleHashIterator
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2819,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2822,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 58
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2825
      start: 2679
    functionDepth: 12
    functionLinenumber: 2679
    functionLinenumberEnd: 2825
    functionName: agg_refill_hash_table
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - advance_aggregates
    - CHECK_FOR_INTERRUPTS
    - MemoryContextReset
    - hashagg_spill_init
    - hashagg_batch_read
    - prepare_hash_slot
    - ExecStoreMinimalTuple
    - pfree
    - hashagg_recompile_expressions
    - hash_agg_update_metrics
    - select_current_set
    - hashagg_spill_tuple
    - ResetTupleHashTable
    - initialize_hash_entry
    - list_delete_last
    - hash_agg_set_limits
    - llast
    - ReScanExprContext
    - MemSet
    - ResetTupleHashIterator
    - ResetExprContext
    - Assert
    - TupleHashEntryGetAdditional
    - LookupTupleHashEntryHash
    - INJECTION_POINT
    - hashagg_spill_finish
    - LogicalTapeClose
    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:2841,1
    - Dst: agg_refill_hash_table
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2844,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2853
      start: 2834
    functionDepth: 13
    functionLinenumber: 2834
    functionLinenumberEnd: 2853
    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:2895,1
    - Dst: ScanTupleHashTable
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2900,1
    - Dst: select_current_set
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2911,1
    - Dst: ResetTupleHashIterator
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2915,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2932,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2938,1
    - Dst: TupleHashEntryGetTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2938,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2939,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2941,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2942,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2952,1
    - Dst: TupleHashEntryGetAdditional
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2954,1
    - Dst: prepare_projection_slot
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2962,1
    - Dst: finalize_aggregates
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2966,1
    - Dst: project_aggregates
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2968,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 37
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2975
      start: 2859
    functionDepth: 5
    functionLinenumber: 2859
    functionLinenumberEnd: 2975
    functionName: agg_retrieve_hash_table_in_memory
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - ResetExprContext
    - ScanTupleHashTable
    - prepare_projection_slot
    - CHECK_FOR_INTERRUPTS
    - TupleHashEntryGetAdditional
    - slot_getallattrs
    - memset
    - finalize_aggregates
    - TupleHashEntryGetTuple
    - ExecStoreVirtualTuple
    - select_current_set
    - ExecStoreMinimalTuple
    - ExecClearTuple
    - project_aggregates
    - 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:2990,1
    - Dst: IS_INJECTION_POINT_ATTACHED
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2994,1
    - Dst: INJECTION_POINT_CACHED
      Src: /src/postgres/src/backend/executor/nodeAgg.c:2998,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3002,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3003,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3004,1
    - Dst: LogicalTapeCreate
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3007,1
    - Dst: initHyperLogLog
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3017,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: 3018
      start: 2983
    functionDepth: 2
    functionLinenumber: 2983
    functionLinenumberEnd: 3018
    functionName: hashagg_spill_init
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 3
    functionsReached:
    - INJECTION_POINT_CACHED
    - LogicalTapeCreate
    - palloc0
    - hash_choose_num_partitions
    - IS_INJECTION_POINT_ATTACHED
    - initHyperLogLog
    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:3037,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3043,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3044,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3047,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3055,1
    - Dst: ExecFetchSlotMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3060,1
    - Dst: addHyperLogLog
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3074,1
    - Dst: hash_bytes_uint32
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3074,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3078,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3081,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3085,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 4
    argNames:
    - aggstate
    - spill
    - inputslot
    - hash
    argTypes:
    - AggState*
    - HashAggSpill*
    - TupleTableSlot*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3088
      start: 3026
    functionDepth: 3
    functionLinenumber: 3026
    functionLinenumberEnd: 3088
    functionName: hashagg_spill_tuple
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 2
    functionsReached:
    - LogicalTapeWrite
    - Assert
    - ExecFetchSlotMinimalTuple
    - pfree
    - slot_getsomeattrs
    - addHyperLogLog
    - ExecStoreVirtualTuple
    - hash_bytes_uint32
    - bms_is_member
    - ExecClearTuple
    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
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3100,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: 3109
      start: 3096
    functionDepth: 0
    functionLinenumber: 3096
    functionLinenumberEnd: 3109
    functionName: hashagg_batch_new
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - palloc0
    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:3124,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3128,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3129,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3130,1
    - Dst: LogicalTapeRead
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3135,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3137,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3138,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3139,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3142,1
    - Dst: LogicalTapeRead
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3145,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3149,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3150,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3151,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - batch
    - hashp
    argTypes:
    - HashAggBatch*
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3155
      start: 3115
    functionDepth: 1
    functionLinenumber: 3115
    functionLinenumberEnd: 3155
    functionName: hashagg_batch_read
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - errmsg_internal
    - ereport
    - LogicalTapeRead
    - 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:3177,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3185,1
    - Dst: hash_agg_update_metrics
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3189,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3191
      start: 3164
    functionDepth: 2
    functionLinenumber: 3164
    functionLinenumberEnd: 3191
    functionName: hashagg_finish_initial_spills
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 2
    functionsReached:
    - hashagg_spill_finish
    - hash_agg_update_metrics
    - pfree
    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:3217,1
    - Dst: freeHyperLogLog
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3218,1
    - Dst: LogicalTapeRewindForRead
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3221,1
    - Dst: hashagg_batch_new
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3223,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3226,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3230,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3231,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3232,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - aggstate
    - spill
    - setno
    argTypes:
    - AggState*
    - HashAggSpill*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3233
      start: 3198
    functionDepth: 6
    functionLinenumber: 3198
    functionLinenumberEnd: 3233
    functionName: hashagg_spill_finish
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 2
    functionsReached:
    - hashagg_batch_new
    - pfree
    - estimateHyperLogLog
    - freeHyperLogLog
    - lappend
    - 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:3250,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3251,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3253,1
    - Dst: list_free_deep
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3258,1
    - Dst: LogicalTapeSetClose
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3264,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - aggstate
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3267
      start: 3238
    functionDepth: 4
    functionLinenumber: 3238
    functionLinenumberEnd: 3267
    functionName: hashagg_reset_spill_state
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - pfree
    - list_free_deep
    - LogicalTapeSetClose
    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:3306,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3311,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3348,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3350,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3352,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3354,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3355,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3372,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3388,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3393,1
    - Dst: hash_create_memory
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3398,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3400,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3410,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3411,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3411,1
    - Dst: ExecGetResultSlotOps
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3417,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3417,1
    - Dst: ExecCreateScanSlotFromOuterPlan
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3421,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3431,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3456,1
    - Dst: ExecAssignProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3457,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3473,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3478,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3481,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3483,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3485,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3486,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3495,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3500,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3502,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3503,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3507,1
    - Dst: list_nth_node
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3514,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3515,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3515,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3523,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3532,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3546,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3550,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3558,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3562,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3563,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3566,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3568,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3568,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3573,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3581,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3586,1
    - Dst: palloc0
      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
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3658,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3659,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3661,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3662,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3669,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3677,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3690,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3693,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3695,1
    - Dst: hash_agg_entry_size
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3701,1
    - Dst: hash_agg_set_limits
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3714,1
    - Dst: find_hash_columns
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3718,1
    - Dst: build_hash_tables
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3722,1
    - Dst: initialize_phase
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3739,1
    - Dst: select_current_set
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3740,1
    - Dst: initialize_phase
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3745,1
    - Dst: select_current_set
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3746,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3753,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3755,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3772,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3774,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3786,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3787,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3788,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3789,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3791,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3794,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3794,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3797,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3798,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3799,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3803,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3803,1
    - Dst: DO_AGGSPLIT_SKIPFINAL
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3806,1
    - Dst: DO_AGGSPLIT_SERIALIZE
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3825,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3828,1
    - Dst: DO_AGGSPLIT_SKIPFINAL
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3828,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3830,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3831,1
    - Dst: DO_AGGSPLIT_DESERIALIZE
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3836,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3839,1
    - Dst: DO_AGGSPLIT_COMBINE
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3839,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3841,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3842,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3851,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3852,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3853,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3854,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3856,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3857,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3859,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3861,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3864,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3865,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3866,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3868,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3870,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3873,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3874,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3875,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3877,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3879,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3882,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3883,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3884,1
    - Dst: get_aggregate_argtypes
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3893,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3897,1
    - Dst: ExecInitExprList
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3906,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3913,1
    - Dst: build_aggregate_finalfn_expr
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3915,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3922,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3923,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3927,1
    - Dst: DO_AGGSPLIT_COMBINE
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3948,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3953,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3954,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3959,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3961,1
    - Dst: get_func_name
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3962,1
    - Dst: InvokeFunctionExecuteHook
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3963,1
    - Dst: SysCacheGetAttr
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3969,1
    - Dst: GetAggInitVal
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3975,1
    - Dst: DO_AGGSPLIT_COMBINE
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3977,1
    - Dst: build_pertrans_for_aggref
      Src: /src/postgres/src/backend/executor/nodeAgg.c:3990,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4003,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4004,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4005,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4006,1
    - Dst: AGGKIND_IS_ORDERED_SET
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4011,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4012,1
    - Dst: build_pertrans_for_aggref
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4016,1
    - Dst: IsBinaryCoercible
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4035,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4037,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4038,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4039,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4046,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4059,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4060,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4061,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4062,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4111,1
    - Dst: ExecBuildAggTrans
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4113,1
    CyclomaticComplexity: 78
    EdgeCount: 78
    ICount: 315
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - Agg*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4121
      start: 3278
    functionDepth: 11
    functionLinenumber: 3278
    functionLinenumberEnd: 4121
    functionName: ExecInitAgg
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - fmgr_info_set_expr
    - HeapTupleIsValid
    - ExecCreateScanSlotFromOuterPlan
    - build_hash_tables
    - list_length
    - ExecAssignProjectionInfo
    - castNode
    - InvokeFunctionExecuteHook
    - DO_AGGSPLIT_DESERIALIZE
    - list_nth_node
    - SysCacheGetAttr
    - find_hash_columns
    - makeNode
    - build_aggregate_finalfn_expr
    - GetUserId
    - object_aclcheck
    - DO_AGGSPLIT_SERIALIZE
    - get_typlenbyval
    - ExecAssignExprContext
    - ReleaseSysCache
    - execTuplesMatchPrepare
    - ExecBuildAggTrans
    - GETSTRUCT
    - foreach
    - select_current_set
    - Max
    - ExecInitQual
    - bms_next_member
    - errmsg
    - ExecGetResultSlotOps
    - GetAggInitVal
    - aclcheck_error
    - ExecInitResultTupleSlotTL
    - ExecInitExtraTupleSlot
    - hash_agg_set_limits
    - DO_AGGSPLIT_COMBINE
    - ExecInitNode
    - fmgr_info
    - build_pertrans_for_aggref
    - format_type_be
    - elog
    - outerPlan
    - outerPlanState
    - hash_create_memory
    - OidIsValid
    - IsBinaryCoercible
    - palloc
    - lfirst
    - ObjectIdGetDatum
    - bms_add_member
    - AGGKIND_IS_ORDERED_SET
    - hash_agg_entry_size
    - Assert
    - ExecInitExprList
    - bms_add_members
    - lcons_int
    - get_func_name
    - get_aggregate_argtypes
    - palloc0
    - initialize_phase
    - SearchSysCache1
    - ereport
    - DO_AGGSPLIT_SKIPFINAL
    - errcode
    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:4142,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4166,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4169,1
    - Dst: build_aggregate_transfn_expr
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4180,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4191,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4192,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4195,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4195,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4196,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4203,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4207,1
    - Dst: build_aggregate_serialfn_expr
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4209,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4211,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4212,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4215,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4215,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4216,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4223,1
    - Dst: build_aggregate_deserialfn_expr
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4225,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4227,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4228,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4231,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4231,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4232,1
    - Dst: AGGKIND_IS_ORDERED_SET
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4254,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4269,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4270,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4270,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4276,1
    - Dst: ExecTypeFromTL
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4291,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4293,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4303,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4306,1
    - Dst: DO_AGGSPLIT_COMBINE
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4306,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4311,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4319,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4325,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4327,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4329,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4331,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4336,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4337,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4340,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4340,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4344,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4348,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4355,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4356,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4356,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4358,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4361,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4362,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4366,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4366,1
    - Dst: execTuplesMatchPrepare
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4369,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4375,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4379,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: 4380
      start: 4133
    functionDepth: 8
    functionLinenumber: 4133
    functionLinenumberEnd: 4380
    functionName: build_pertrans_for_aggref
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - fmgr_info_set_expr
    - list_length
    - pfree
    - get_typlenbyval
    - execTuplesMatchPrepare
    - foreach
    - Max
    - build_aggregate_transfn_expr
    - build_aggregate_deserialfn_expr
    - build_aggregate_serialfn_expr
    - InitFunctionCallInfoData
    - ExecInitExtraTupleSlot
    - DO_AGGSPLIT_COMBINE
    - fmgr_info
    - get_opcode
    - OidIsValid
    - palloc
    - get_sortgroupclause_tle
    - lfirst
    - AGGKIND_IS_ORDERED_SET
    - Assert
    - exprCollation
    - SizeForFunctionCallInfo
    - ExecTypeFromTL
    - palloc0
    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:4336,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4337,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4340,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4340,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4347
      start: 4334
    functionDepth: 3
    functionLinenumber: 4334
    functionLinenumberEnd: 4347
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 423
    functionsReached:
    - lfirst
    - Assert
    - exprCollation
    - OidIsValid
    - get_sortgroupclause_tle
    linkageType: ''
    returnType: void
    signature: void foreach(lc, sortlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4391,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4392,1
    - Dst: OidInputFunctionCall
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4393,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - textInitVal
    - transtype
    argTypes:
    - Datum
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4397
      start: 4383
    functionDepth: 1
    functionLinenumber: 4383
    functionLinenumberEnd: 4397
    functionName: GetAggInitVal
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 3
    functionsReached:
    - pfree
    - getTypeInputInfo
    - OidInputFunctionCall
    - TextDatumGetCString
    linkageType: ''
    returnType: Datum
    signature: Datum GetAggInitVal(Datum textInitVal, Oid transtype)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4404,1
    - Dst: IsParallelWorker
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4412,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4416,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4426,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4428,1
    - Dst: hashagg_reset_spill_state
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4430,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4434,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4439,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4451,1
    - Dst: ReScanExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4457,1
    - Dst: ReScanExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4459,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4461,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4462,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 1
    argNames:
    - node
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4463
      start: 4399
    functionDepth: 5
    functionLinenumber: 4399
    functionLinenumberEnd: 4463
    functionName: ExecEndAgg
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextDelete
    - hashagg_reset_spill_state
    - ExecEndNode
    - ReScanExprContext
    - IsParallelWorker
    - Max
    - outerPlanState
    - tuplesort_end
    linkageType: ''
    returnType: void
    signature: void ExecEndAgg(AggState *node)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4469,1
    - Dst: Max
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4472,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4496,1
    - Dst: ResetTupleHashIterator
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4498,1
    - Dst: select_current_set
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4500,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4514,1
    - Dst: ReScanExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4530,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4536,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4539,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4542,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4543,1
    - Dst: hashagg_reset_spill_state
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4552,1
    - Dst: ReScanExprContext
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4558,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4559,1
    - Dst: build_hash_tables
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4561,1
    - Dst: hashagg_recompile_expressions
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4565,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4575,1
    - Dst: initialize_phase
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4580,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4587,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 50
    argCount: 1
    argNames:
    - node
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4588
      start: 4465
    functionDepth: 12
    functionLinenumber: 4465
    functionLinenumberEnd: 4588
    functionName: ExecReScanAgg
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - bms_overlap
    - hashagg_reset_spill_state
    - heap_freetuple
    - MemoryContextReset
    - hashagg_recompile_expressions
    - ReScanExprContext
    - build_hash_tables
    - initialize_phase
    - select_current_set
    - Max
    - MemSet
    - outerPlanState
    - ExecReScan
    - ExecClearTuple
    - 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:4616,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4627,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - fcinfo
    - aggcontext
    argTypes:
    - FunctionCallInfo
    - MemoryContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4638
      start: 4613
    functionDepth: 1
    functionLinenumber: 4613
    functionLinenumberEnd: 4638
    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:4660,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - fcinfo
    argTypes:
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4679
      start: 4657
    functionDepth: 1
    functionLinenumber: 4657
    functionLinenumberEnd: 4679
    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:4694,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - fcinfo
    argTypes:
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4701
      start: 4691
    functionDepth: 1
    functionLinenumber: 4691
    functionLinenumberEnd: 4701
    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:4720,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - fcinfo
    argTypes:
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4739
      start: 4717
    functionDepth: 1
    functionLinenumber: 4717
    functionLinenumberEnd: 4739
    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:4761,1
    - Dst: RegisterExprContextCallback
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4766,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4770,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - fcinfo
    - func
    - arg
    argTypes:
    - FunctionCallInfo
    - ExprContextCallbackFunction
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4771
      start: 4756
    functionDepth: 2
    functionLinenumber: 4756
    functionLinenumberEnd: 4771
    functionName: AggRegisterCallback
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 0
    functionsReached:
    - RegisterExprContextCallback
    - elog
    - 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:4794,1
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4795,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4796,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4797,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - AggState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4798
      start: 4785
    functionDepth: 1
    functionLinenumber: 4785
    functionLinenumberEnd: 4798
    functionName: ExecAggEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - mul_size
    - shm_toc_estimate_chunk
    - shm_toc_estimate_keys
    - add_size
    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:4817,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4819,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4821,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - AggState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4823
      start: 4806
    functionDepth: 1
    functionLinenumber: 4806
    functionLinenumberEnd: 4823
    functionName: ExecAggInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeAgg.c
    functionUses: 1
    functionsReached:
    - memset
    - shm_toc_allocate
    - shm_toc_insert
    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:4835,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - AggState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4836
      start: 4831
    functionDepth: 1
    functionLinenumber: 4831
    functionLinenumberEnd: 4836
    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:4855,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/nodeAgg.c:4856,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - AggState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4858
      start: 4844
    functionDepth: 0
    functionLinenumber: 4844
    functionLinenumberEnd: 4858
    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:64,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execReplication.c:66,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/executor/execReplication.c:69,1
    - Dst: AttributeNumberIsValid
      Src: /src/postgres/src/backend/executor/execReplication.c:79,1
    - Dst: get_opclass_input_type
      Src: /src/postgres/src/backend/executor/execReplication.c:92,1
    - Dst: get_opclass_family
      Src: /src/postgres/src/backend/executor/execReplication.c:93,1
    - Dst: IndexAmTranslateCompareType
      Src: /src/postgres/src/backend/executor/execReplication.c:94,1
    - Dst: get_opfamily_member
      Src: /src/postgres/src/backend/executor/execReplication.c:95,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execReplication.c:99,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execReplication.c:100,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/executor/execReplication.c:103,1
    - Dst: ScanKeyInit
      Src: /src/postgres/src/backend/executor/execReplication.c:106,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execReplication.c:122,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 4
    argNames:
    - skey
    - rel
    - idxrel
    - searchslot
    argTypes:
    - ScanKey
    - Relation
    - Relation
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 54
    functionDepth: 4
    functionLinenumber: 54
    functionLinenumberEnd: 125
    functionName: build_replindex_scan_key
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 0
    functionsReached:
    - IndexRelationGetNumberOfKeyAttributes
    - Assert
    - IndexAmTranslateCompareType
    - SysCacheGetAttrNotNull
    - get_opcode
    - ScanKeyInit
    - elog
    - get_opclass_family
    - AttributeNumberIsValid
    - OidIsValid
    - get_opclass_input_type
    - DatumGetPointer
    - get_opfamily_member
    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:144,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:145,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:146,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:147,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:149,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:150,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:151,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:156,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:157,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:158,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execReplication.c:162,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execReplication.c:165,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - res
    - tmfd
    argTypes:
    - TM_Result
    - TM_FailureData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 133
    functionDepth: 4
    functionLinenumber: 133
    functionLinenumberEnd: 170
    functionName: should_refetch_tuple
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - elog
    - ItemPointerIndicatesMovedPartitions
    - errcode
    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:195,1
    - Dst: GetRelationIdentityOrPK
      Src: /src/postgres/src/backend/executor/execReplication.c:197,1
    - Dst: InitDirtySnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:199,1
    - Dst: build_replindex_scan_key
      Src: /src/postgres/src/backend/executor/execReplication.c:202,1
    - Dst: index_beginscan
      Src: /src/postgres/src/backend/executor/execReplication.c:205,1
    - Dst: index_rescan
      Src: /src/postgres/src/backend/executor/execReplication.c:210,1
    - Dst: index_getnext_slot
      Src: /src/postgres/src/backend/executor/execReplication.c:213,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execReplication.c:222,1
    - Dst: tuples_equal
      Src: /src/postgres/src/backend/executor/execReplication.c:224,1
    - Dst: ExecMaterializeSlot
      Src: /src/postgres/src/backend/executor/execReplication.c:228,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/executor/execReplication.c:230,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/executor/execReplication.c:237,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/executor/execReplication.c:239,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:254,1
    - Dst: GetLatestSnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:254,1
    - Dst: table_tuple_lock
      Src: /src/postgres/src/backend/executor/execReplication.c:256,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:256,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/executor/execReplication.c:258,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:264,1
    - Dst: should_refetch_tuple
      Src: /src/postgres/src/backend/executor/execReplication.c:266,1
    - Dst: index_endscan
      Src: /src/postgres/src/backend/executor/execReplication.c:270,1
    - Dst: index_close
      Src: /src/postgres/src/backend/executor/execReplication.c:273,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: 276
      start: 178
    functionDepth: 5
    functionLinenumber: 178
    functionLinenumberEnd: 276
    functionName: RelationFindReplTupleByIndex
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 1
    functionsReached:
    - tuples_equal
    - XactLockTableWait
    - ExecMaterializeSlot
    - should_refetch_tuple
    - PopActiveSnapshot
    - index_close
    - index_getnext_slot
    - InitDirtySnapshot
    - PushActiveSnapshot
    - TransactionIdIsValid
    - index_endscan
    - table_tuple_lock
    - index_rescan
    - build_replindex_scan_key
    - index_beginscan
    - GetCurrentCommandId
    - GetRelationIdentityOrPK
    - GetLatestSnapshot
    - GetActiveSnapshot
    - palloc0
    - index_open
    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: 7
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execReplication.c:287,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/execReplication.c:290,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/execReplication.c:291,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execReplication.c:299,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/executor/execReplication.c:324,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execReplication.c:326,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:327,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:328,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:329,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execReplication.c:330,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execReplication.c:334,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/executor/execReplication.c:334,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 3
    argNames:
    - slot1
    - slot2
    - eq
    argTypes:
    - TupleTableSlot*
    - TupleTableSlot*
    - TypeCacheEntry**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 281
    functionDepth: 3
    functionLinenumber: 281
    functionLinenumberEnd: 342
    functionName: tuples_equal
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 2
    functionsReached:
    - errmsg
    - Assert
    - FunctionCall2Coll
    - slot_getallattrs
    - TupleDescAttr
    - format_type_be
    - ereport
    - lookup_type_cache
    - OidIsValid
    - DatumGetBool
    - errcode
    linkageType: ''
    returnType: bool
    signature: "bool tuples_equal(TupleTableSlot *slot1, TupleTableSlot *slot2,\n\t\t\t
      TypeCacheEntry **eq)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/executor/execReplication.c:364,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execReplication.c:366,1
    - Dst: equalTupleDescs
      Src: /src/postgres/src/backend/executor/execReplication.c:366,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execReplication.c:368,1
    - Dst: InitDirtySnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:371,1
    - Dst: table_beginscan
      Src: /src/postgres/src/backend/executor/execReplication.c:372,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/execReplication.c:373,1
    - Dst: table_rescan
      Src: /src/postgres/src/backend/executor/execReplication.c:378,1
    - Dst: table_scan_getnextslot
      Src: /src/postgres/src/backend/executor/execReplication.c:381,1
    - Dst: tuples_equal
      Src: /src/postgres/src/backend/executor/execReplication.c:383,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/execReplication.c:387,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/executor/execReplication.c:389,1
    - Dst: TransactionIdIsValid
      Src: /src/postgres/src/backend/executor/execReplication.c:396,1
    - Dst: XactLockTableWait
      Src: /src/postgres/src/backend/executor/execReplication.c:398,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:412,1
    - Dst: GetLatestSnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:412,1
    - Dst: table_tuple_lock
      Src: /src/postgres/src/backend/executor/execReplication.c:414,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:414,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/executor/execReplication.c:416,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:422,1
    - Dst: should_refetch_tuple
      Src: /src/postgres/src/backend/executor/execReplication.c:424,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/executor/execReplication.c:428,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/execReplication.c:429,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 4
    argNames:
    - rel
    - lockmode
    - searchslot
    - outslot
    argTypes:
    - Relation
    - LockTupleMode
    - TupleTableSlot*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 354
    functionDepth: 5
    functionLinenumber: 354
    functionLinenumberEnd: 432
    functionName: RelationFindReplTupleSeq
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 1
    functionsReached:
    - table_slot_create
    - tuples_equal
    - XactLockTableWait
    - table_scan_getnextslot
    - should_refetch_tuple
    - equalTupleDescs
    - PopActiveSnapshot
    - table_endscan
    - InitDirtySnapshot
    - PushActiveSnapshot
    - ExecCopySlot
    - ExecDropSingleTupleTableSlot
    - TransactionIdIsValid
    - table_tuple_lock
    - GetCurrentCommandId
    - Assert
    - table_beginscan
    - GetLatestSnapshot
    - table_rescan
    - GetActiveSnapshot
    - RelationGetDescr
    - palloc0
    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:445,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execReplication.c:452,1
    - Dst: BuildSpeculativeIndexInfo
      Src: /src/postgres/src/backend/executor/execReplication.c:454,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - resultRelInfo
    - conflictindex
    argTypes:
    - ResultRelInfo*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 437
    functionDepth: 5
    functionLinenumber: 437
    functionLinenumberEnd: 456
    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: 4
    BranchProfiles: []
    Callsites:
    - Dst: BuildConflictIndexInfo
      Src: /src/postgres/src/backend/executor/execReplication.c:483,1
    - Dst: ExecCheckIndexConstraints
      Src: /src/postgres/src/backend/executor/execReplication.c:486,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/executor/execReplication.c:488,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/executor/execReplication.c:491,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/executor/execReplication.c:497,1
    - Dst: PushActiveSnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:499,1
    - Dst: GetLatestSnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:499,1
    - Dst: table_tuple_lock
      Src: /src/postgres/src/backend/executor/execReplication.c:501,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:501,1
    - Dst: GetCurrentCommandId
      Src: /src/postgres/src/backend/executor/execReplication.c:503,1
    - Dst: PopActiveSnapshot
      Src: /src/postgres/src/backend/executor/execReplication.c:509,1
    - Dst: should_refetch_tuple
      Src: /src/postgres/src/backend/executor/execReplication.c:511,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: 515
      start: 467
    functionDepth: 6
    functionLinenumber: 467
    functionLinenumberEnd: 515
    functionName: FindConflictTuple
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 0
    functionsReached:
    - ExecDropSingleTupleTableSlot
    - GetLatestSnapshot
    - table_slot_create
    - BuildConflictIndexInfo
    - ExecCheckIndexConstraints
    - GetActiveSnapshot
    - list_make1_oid
    - table_tuple_lock
    - PushActiveSnapshot
    - should_refetch_tuple
    - PopActiveSnapshot
    - GetCurrentCommandId
    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:530,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/executor/execReplication.c:532,1
    - Dst: FindConflictTuple
      Src: /src/postgres/src/backend/executor/execReplication.c:533,1
    - Dst: palloc0_object
      Src: /src/postgres/src/backend/executor/execReplication.c:536,1
    - Dst: GetTupleTransactionInfo
      Src: /src/postgres/src/backend/executor/execReplication.c:541,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execReplication.c:544,1
    - Dst: ReportApplyConflict
      Src: /src/postgres/src/backend/executor/execReplication.c:550,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execReplication.c:551,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: 553
      start: 521
    functionDepth: 7
    functionLinenumber: 521
    functionLinenumberEnd: 553
    functionName: CheckAndReportConflict
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 0
    functionsReached:
    - palloc0_object
    - ReportApplyConflict
    - GetTupleTransactionInfo
    - list_length
    - lappend
    - FindConflictTuple
    - list_member_oid
    - foreach_oid
    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: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execReplication.c:569,1
    - Dst: CheckCmdReplicaIdentity
      Src: /src/postgres/src/backend/executor/execReplication.c:571,1
    - Dst: ExecBRInsertTriggers
      Src: /src/postgres/src/backend/executor/execReplication.c:577,1
    - Dst: ExecComputeStoredGenerated
      Src: /src/postgres/src/backend/executor/execReplication.c:590,1
    - Dst: ExecConstraints
      Src: /src/postgres/src/backend/executor/execReplication.c:595,1
    - Dst: ExecPartitionCheck
      Src: /src/postgres/src/backend/executor/execReplication.c:597,1
    - Dst: simple_table_tuple_insert
      Src: /src/postgres/src/backend/executor/execReplication.c:600,1
    - Dst: ExecInsertIndexTuples
      Src: /src/postgres/src/backend/executor/execReplication.c:605,1
    - Dst: CheckAndReportConflict
      Src: /src/postgres/src/backend/executor/execReplication.c:627,1
    - Dst: ExecARInsertTriggers
      Src: /src/postgres/src/backend/executor/execReplication.c:631,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/execReplication.c:640,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 3
    argNames:
    - resultRelInfo
    - estate
    - slot
    argTypes:
    - ResultRelInfo*
    - EState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 561
    functionDepth: 8
    functionLinenumber: 561
    functionLinenumberEnd: 642
    functionName: ExecSimpleRelationInsert
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 1
    functionsReached:
    - Assert
    - CheckAndReportConflict
    - CheckCmdReplicaIdentity
    - ExecComputeStoredGenerated
    - ExecARInsertTriggers
    - ExecConstraints
    - ExecBRInsertTriggers
    - ExecPartitionCheck
    - list_free
    - simple_table_tuple_insert
    - ExecInsertIndexTuples
    linkageType: ''
    returnType: void
    signature: "void ExecSimpleRelationInsert(ResultRelInfo *resultRelInfo,\n\t\t\t\t\t\t
      EState *estate, TupleTableSlot *slot)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execReplication.c:663,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execReplication.c:664,1
    - Dst: IsCatalogRelation
      Src: /src/postgres/src/backend/executor/execReplication.c:664,1
    - Dst: CheckCmdReplicaIdentity
      Src: /src/postgres/src/backend/executor/execReplication.c:666,1
    - Dst: ExecBRUpdateTriggers
      Src: /src/postgres/src/backend/executor/execReplication.c:672,1
    - Dst: ExecComputeStoredGenerated
      Src: /src/postgres/src/backend/executor/execReplication.c:687,1
    - Dst: ExecConstraints
      Src: /src/postgres/src/backend/executor/execReplication.c:692,1
    - Dst: ExecPartitionCheck
      Src: /src/postgres/src/backend/executor/execReplication.c:694,1
    - Dst: simple_table_tuple_update
      Src: /src/postgres/src/backend/executor/execReplication.c:696,1
    - Dst: ExecInsertIndexTuples
      Src: /src/postgres/src/backend/executor/execReplication.c:702,1
    - Dst: CheckAndReportConflict
      Src: /src/postgres/src/backend/executor/execReplication.c:714,1
    - Dst: ExecARUpdateTriggers
      Src: /src/postgres/src/backend/executor/execReplication.c:718,1
    - Dst: list_free
      Src: /src/postgres/src/backend/executor/execReplication.c:723,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 5
    argNames:
    - resultRelInfo
    - estate
    - epqstate
    - searchslot
    - slot
    argTypes:
    - ResultRelInfo*
    - EState*
    - EPQState*
    - TupleTableSlot*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 650
    functionDepth: 8
    functionLinenumber: 650
    functionLinenumberEnd: 725
    functionName: ExecSimpleRelationUpdate
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 2
    functionsReached:
    - Assert
    - CheckAndReportConflict
    - CheckCmdReplicaIdentity
    - ExecComputeStoredGenerated
    - ExecConstraints
    - ExecPartitionCheck
    - ExecARUpdateTriggers
    - ExecBRUpdateTriggers
    - IsCatalogRelation
    - simple_table_tuple_update
    - list_free
    - 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:742,1
    - Dst: ExecBRDeleteTriggers
      Src: /src/postgres/src/backend/executor/execReplication.c:748,1
    - Dst: simple_table_tuple_delete
      Src: /src/postgres/src/backend/executor/execReplication.c:755,1
    - Dst: ExecARDeleteTriggers
      Src: /src/postgres/src/backend/executor/execReplication.c:758,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - resultRelInfo
    - estate
    - epqstate
    - searchslot
    argTypes:
    - ResultRelInfo*
    - EState*
    - EPQState*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 733
    functionDepth: 3
    functionLinenumber: 733
    functionLinenumberEnd: 761
    functionName: ExecSimpleRelationDelete
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 2
    functionsReached:
    - ExecBRDeleteTriggers
    - simple_table_tuple_delete
    - ExecARDeleteTriggers
    - CheckCmdReplicaIdentity
    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:805,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:807,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:808,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:809,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execReplication.c:810,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execReplication.c:811,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:813,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:814,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:815,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execReplication.c:816,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execReplication.c:817,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:819,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:820,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:821,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execReplication.c:822,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execReplication.c:823,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:825,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:826,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:827,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execReplication.c:828,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execReplication.c:829,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:831,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:832,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:833,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execReplication.c:834,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execReplication.c:835,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:837,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:838,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:839,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execReplication.c:840,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execReplication.c:841,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execReplication.c:844,1
    - Dst: RelationGetReplicaIndex
      Src: /src/postgres/src/backend/executor/execReplication.c:844,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:857,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:858,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:859,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execReplication.c:860,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/execReplication.c:861,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:863,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:864,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:865,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/execReplication.c:866,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/execReplication.c:867,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 26
    argCount: 2
    argNames:
    - rel
    - cmd
    argTypes:
    - Relation
    - CmdType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 766
    functionDepth: 1
    functionLinenumber: 766
    functionLinenumberEnd: 868
    functionName: CheckCmdReplicaIdentity
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 4
    functionsReached:
    - errmsg
    - ereport
    - RelationBuildPublicationDesc
    - errhint
    - OidIsValid
    - RelationGetRelationName
    - errdetail
    - errcode
    - RelationGetReplicaIndex
    linkageType: ''
    returnType: void
    signature: void CheckCmdReplicaIdentity(Relation rel, CmdType cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execReplication.c:881,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execReplication.c:882,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execReplication.c:883,1
    - Dst: errdetail_relkind_not_supported
      Src: /src/postgres/src/backend/executor/execReplication.c:885,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 3
    argNames:
    - relkind
    - nspname
    - relname
    argTypes:
    - char
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 876
    functionDepth: 2
    functionLinenumber: 876
    functionLinenumberEnd: 886
    functionName: CheckSubscriptionRelkind
    functionSourceFile: /src/postgres/src/backend/executor/execReplication.c
    functionUses: 2
    functionsReached:
    - errmsg
    - errcode
    - ereport
    - errdetail_relkind_not_supported
    linkageType: ''
    returnType: void
    signature: "void CheckSubscriptionRelkind(char relkind, const char *nspname,\n\t\t\t\t\t\t
      const char *relname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:88,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:88,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:90,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: 4
    argCount: 1
    argNames:
    - setopstate
    argTypes:
    - SetOpState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 83
    functionDepth: 8
    functionLinenumber: 83
    functionLinenumberEnd: 112
    functionName: build_hash_table
    functionSourceFile: /src/postgres/src/backend/executor/nodeSetOp.c
    functionUses: 3
    functionsReached:
    - Assert
    - ExecGetResultType
    - outerPlanState
    - ExecGetCommonChildSlotOps
    - BuildTupleHashTable
    linkageType: ''
    returnType: void
    signature: void build_hash_table(SetOpState *setopstate)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:149,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 2
    argNames:
    - setopstate
    - pergroup
    argTypes:
    - SetOpState*
    - SetOpStatePerGroup
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 152
    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:162,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:166,1
    - Dst: setop_fill_hash_table
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:186,1
    - Dst: setop_retrieve_hash_table
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:187,1
    - Dst: setop_retrieve_sorted
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:190,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 191
    functionName: ExecSetOp
    functionSourceFile: /src/postgres/src/backend/executor/nodeSetOp.c
    functionUses: 0
    functionsReached:
    - setop_retrieve_hash_table
    - CHECK_FOR_INTERRUPTS
    - setop_fill_hash_table
    - castNode
    - setop_retrieve_sorted
    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:206,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:207,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:219,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:225,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:231,1
    - Dst: setop_load_group
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:250,1
    - Dst: setop_load_group
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:266,1
    - Dst: setop_compare_slots
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:275,1
    - Dst: set_output_count
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:309,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:319,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 49
    argCount: 1
    argNames:
    - setopstate
    argTypes:
    - SetOpState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 196
    functionDepth: 2
    functionLinenumber: 196
    functionLinenumberEnd: 321
    functionName: setop_retrieve_sorted
    functionSourceFile: /src/postgres/src/backend/executor/nodeSetOp.c
    functionUses: 1
    functionsReached:
    - setop_compare_slots
    - ExecProcNode
    - TupIsNull
    - setop_load_group
    - outerPlanState
    - set_output_count
    - ExecClearTuple
    - innerPlanState
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      setop_retrieve_sorted(SetOpState *setopstate)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:337,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:339,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:345,1
    - Dst: ExecCopySlotMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:345,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:357,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:358,1
    - Dst: setop_compare_slots
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:362,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:365,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - input
    - inputPlan
    - setopstate
    argTypes:
    - SetOpStatePerInput*
    - PlanState*
    - SetOpState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 330
    functionDepth: 5
    functionLinenumber: 330
    functionLinenumberEnd: 372
    functionName: setop_load_group
    functionSourceFile: /src/postgres/src/backend/executor/nodeSetOp.c
    functionUses: 1
    functionsReached:
    - setop_compare_slots
    - Assert
    - TupIsNull
    - ExecProcNode
    - ExecCopySlotMinimalTuple
    - ExecStoreMinimalTuple
    - ExecClearTuple
    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:382,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:383,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:394,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - s1
    - s2
    - setopstate
    argTypes:
    - TupleTableSlot*
    - TupleTableSlot*
    - SetOpState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 377
    functionDepth: 3
    functionLinenumber: 377
    functionLinenumberEnd: 401
    functionName: setop_compare_slots
    functionSourceFile: /src/postgres/src/backend/executor/nodeSetOp.c
    functionUses: 2
    functionsReached:
    - slot_getallattrs
    - ApplySortComparator
    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:417,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:418,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:432,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:433,1
    - Dst: LookupTupleHashEntry
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:438,1
    - Dst: TupleHashEntryGetAdditional
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:442,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:454,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:473,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:474,1
    - Dst: LookupTupleHashEntry
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:478,1
    - Dst: TupleHashEntryGetAdditional
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:485,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:491,1
    - Dst: ResetTupleHashIterator
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:497,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 1
    argNames:
    - setopstate
    argTypes:
    - SetOpState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 406
    functionDepth: 2
    functionLinenumber: 406
    functionLinenumberEnd: 498
    functionName: setop_fill_hash_table
    functionSourceFile: /src/postgres/src/backend/executor/nodeSetOp.c
    functionUses: 1
    functionsReached:
    - ResetExprContext
    - ExecProcNode
    - TupIsNull
    - TupleHashEntryGetAdditional
    - LookupTupleHashEntry
    - outerPlanState
    - innerPlanState
    - 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:522,1
    - Dst: ScanTupleHashTable
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:527,1
    - Dst: TupleHashEntryGetAdditional
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:539,1
    - Dst: set_output_count
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:540,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:545,1
    - Dst: TupleHashEntryGetTuple
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:545,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:552,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - setopstate
    argTypes:
    - SetOpState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 503
    functionDepth: 5
    functionLinenumber: 503
    functionLinenumberEnd: 554
    functionName: setop_retrieve_hash_table
    functionSourceFile: /src/postgres/src/backend/executor/nodeSetOp.c
    functionUses: 1
    functionsReached:
    - ScanTupleHashTable
    - TupleHashEntryGetAdditional
    - CHECK_FOR_INTERRUPTS
    - TupleHashEntryGetTuple
    - set_output_count
    - ExecStoreMinimalTuple
    - ExecClearTuple
    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:569,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:574,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:587,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:596,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:608,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:608,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:608,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:609,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:609,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:609,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:618,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:624,1
    - Dst: execTuplesHashPrepare
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:638,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:647,1
    - Dst: PrepareSortSupportFromOrderingOp
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:659,1
    - Dst: build_hash_table
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:666,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 40
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - SetOp*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 563
    functionDepth: 11
    functionLinenumber: 563
    functionLinenumberEnd: 671
    functionName: ExecInitSetOp
    functionSourceFile: /src/postgres/src/backend/executor/nodeSetOp.c
    functionUses: 1
    functionsReached:
    - Assert
    - ExecAssignExprContext
    - PrepareSortSupportFromOrderingOp
    - ExecInitResultTupleSlotTL
    - ExecInitExtraTupleSlot
    - innerPlan
    - ExecInitNode
    - palloc0
    - build_hash_table
    - outerPlan
    - outerPlanState
    - AllocSetContextCreate
    - innerPlanState
    - makeNode
    - execTuplesHashPrepare
    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:685,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:687,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:687,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:688,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:688,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - SetOpState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 680
    functionDepth: 4
    functionLinenumber: 680
    functionLinenumberEnd: 689
    functionName: ExecEndSetOp
    functionSourceFile: /src/postgres/src/backend/executor/nodeSetOp.c
    functionUses: 1
    functionsReached:
    - ExecEndNode
    - MemoryContextDelete
    - outerPlanState
    - innerPlanState
    linkageType: ''
    returnType: void
    signature: void ExecEndSetOp(SetOpState *node)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:695,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:696,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:698,1
    - Dst: ResetTupleHashIterator
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:720,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:726,1
    - Dst: ResetTupleHashTable
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:729,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:743,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeSetOp.c:745,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - node
    argTypes:
    - SetOpState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 692
    functionDepth: 7
    functionLinenumber: 692
    functionLinenumberEnd: 746
    functionName: ExecReScanSetOp
    functionSourceFile: /src/postgres/src/backend/executor/nodeSetOp.c
    functionUses: 1
    functionsReached:
    - MemoryContextReset
    - ExecReScan
    - outerPlanState
    - ResetTupleHashTable
    - ExecClearTuple
    - innerPlanState
    - ResetTupleHashIterator
    linkageType: ''
    returnType: void
    signature: void ExecReScanSetOp(SetOpState *node)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:45,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:47,1
    - Dst: tuplestore_ateof
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:54,1
    - Dst: tuplestore_advance
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:66,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:81,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:103,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:104,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:115,1
    - Dst: tuplestore_puttupleslot
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:124,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:132,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:138,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 1
    argNames:
    - node
    argTypes:
    - CteScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 30
    functionDepth: 2
    functionLinenumber: 30
    functionLinenumberEnd: 139
    functionName: CteScanNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeCtescan.c
    functionUses: 0
    functionsReached:
    - ExecProcNode
    - TupIsNull
    - tuplestore_ateof
    - tuplestore_gettupleslot
    - tuplestore_advance
    - ExecCopySlot
    - ExecClearTuple
    - tuplestore_puttupleslot
    - ScanDirectionIsForward
    - tuplestore_select_read_pointer
    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: 149
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 149
    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:162,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 167
    functionName: ExecCteScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeCtescan.c
    functionUses: 0
    functionsReached:
    - ExecScan
    - castNode
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecCteScan(PlanState *pstate)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:181,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:200,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:200,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:201,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:201,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:206,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:217,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:227,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:228,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:229,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:229,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:233,1
    - Dst: tuplestore_begin_heap
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:235,1
    - Dst: tuplestore_set_eflags
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:236,1
    - Dst: tuplestore_alloc_read_pointer
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:244,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:246,1
    - Dst: tuplestore_rescan
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:248,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:256,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:262,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:263,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:269,1
    - Dst: ExecAssignScanProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:270,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:276,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 34
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - CteScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 174
    functionDepth: 9
    functionLinenumber: 174
    functionLinenumberEnd: 279
    functionName: ExecInitCteScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeCtescan.c
    functionUses: 1
    functionsReached:
    - tuplestore_begin_heap
    - castNode
    - ExecInitResultTypeTL
    - makeNode
    - tuplestore_select_read_pointer
    - ExecAssignExprContext
    - ExecGetResultType
    - ExecInitQual
    - DatumGetPointer
    - tuplestore_alloc_read_pointer
    - tuplestore_set_eflags
    - list_nth
    - outerPlan
    - ExecAssignScanProjectionInfo
    - Assert
    - ExecInitScanTupleSlot
    - PointerGetDatum
    - tuplestore_rescan
    - innerPlan
    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:295,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - CteScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 298
    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:312,1
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:314,1
    - Dst: tuplestore_clear
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:326,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:336,1
    - Dst: tuplestore_rescan
      Src: /src/postgres/src/backend/executor/nodeCtescan.c:337,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - node
    argTypes:
    - CteScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 306
    functionDepth: 4
    functionLinenumber: 306
    functionLinenumberEnd: 339
    functionName: ExecReScanCteScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeCtescan.c
    functionUses: 1
    functionsReached:
    - tuplestore_clear
    - ExecClearTuple
    - tuplestore_rescan
    - ExecScanReScan
    - tuplestore_select_read_pointer
    linkageType: ''
    returnType: void
    signature: void ExecReScanCteScan(CteScanState *node)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeAppend.c:111,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:123,1
    - Dst: ExecInitPartitionExecPruning
      Src: /src/postgres/src/backend/executor/nodeAppend.c:147,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAppend.c:148,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/executor/nodeAppend.c:153,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/executor/nodeAppend.c:162,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeAppend.c:168,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:174,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/executor/nodeAppend.c:176,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAppend.c:181,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:195,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeAppend.c:197,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:206,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeAppend.c:216,1
    - Dst: ExecGetCommonSlotOps
      Src: /src/postgres/src/backend/executor/nodeAppend.c:232,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeAppend.c:235,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeAppend.c:239,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeAppend.c:259,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:262,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeAppend.c:266,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeAppend.c:278,1
    - Dst: classify_matching_subplans
      Src: /src/postgres/src/backend/executor/nodeAppend.c:281,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 78
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - Append*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 108
    functionDepth: 11
    functionLinenumber: 108
    functionLinenumberEnd: 294
    functionName: ExecInitAppend
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 1
    functionsReached:
    - Assert
    - palloc
    - ExecInitResultTupleSlotTL
    - bms_next_member
    - ExecInitNode
    - bms_add_range
    - list_length
    - palloc0
    - list_nth
    - classify_matching_subplans
    - ExecInitPartitionExecPruning
    - makeNode
    - bms_num_members
    - ExecGetCommonSlotOps
    - 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:305,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:314,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:315,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeAppend.c:319,1
    - Dst: ExecAppendAsyncBegin
      Src: /src/postgres/src/backend/executor/nodeAppend.c:323,1
    - Dst: AppendState*::choose_next_subplan
      Src: /src/postgres/src/backend/executor/nodeAppend.c:329,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeAppend.c:330,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:332,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeAppend.c:344,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/executor/nodeAppend.c:349,1
    - Dst: ExecAppendAsyncGetNext
      Src: /src/postgres/src/backend/executor/nodeAppend.c:351,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:353,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:354,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/executor/nodeAppend.c:354,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:360,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeAppend.c:366,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeAppend.c:368,1
    - Dst: ExecAppendAsyncEventWait
      Src: /src/postgres/src/backend/executor/nodeAppend.c:384,1
    - Dst: AppendState*::choose_next_subplan
      Src: /src/postgres/src/backend/executor/nodeAppend.c:387,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeAppend.c:388,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 32
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 302
    functionDepth: 2
    functionLinenumber: 302
    functionLinenumberEnd: 390
    functionName: ExecAppend
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExecAppendAsyncEventWait
    - CHECK_FOR_INTERRUPTS
    - ExecProcNode
    - TupIsNull
    - bms_is_empty
    - castNode
    - ExecAppendAsyncBegin
    - ExecClearTuple
    - ExecAppendAsyncGetNext
    - AppendState*::choose_next_subplan
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecAppend(PlanState *pstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeAppend.c:417,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - AppendState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 400
    functionDepth: 4
    functionLinenumber: 400
    functionLinenumberEnd: 418
    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:432,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/executor/nodeAppend.c:436,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/executor/nodeAppend.c:438,1
    - Dst: UpdateChangedParamSet
      Src: /src/postgres/src/backend/executor/nodeAppend.c:451,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeAppend.c:458,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:465,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/executor/nodeAppend.c:476,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 1
    argNames:
    - node
    argTypes:
    - AppendState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 420
    functionDepth: 7
    functionLinenumber: 420
    functionLinenumberEnd: 484
    functionName: ExecReScanAppend
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 1
    functionsReached:
    - bms_overlap
    - UpdateChangedParamSet
    - ExecReScan
    - bms_next_member
    - bms_free
    linkageType: ''
    returnType: void
    signature: void ExecReScanAppend(AppendState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_size
      Src: /src/postgres/src/backend/executor/nodeAppend.c:503,1
    - Dst: shm_toc_estimate_chunk
      Src: /src/postgres/src/backend/executor/nodeAppend.c:506,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeAppend.c:507,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - AppendState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 498
    functionDepth: 1
    functionLinenumber: 498
    functionLinenumberEnd: 508
    functionName: ExecAppendEstimate
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 1
    functionsReached:
    - add_size
    - shm_toc_estimate_chunk
    - 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:523,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/nodeAppend.c:524,1
    - Dst: LWLockInitialize
      Src: /src/postgres/src/backend/executor/nodeAppend.c:525,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:526,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - AppendState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 517
    functionDepth: 1
    functionLinenumber: 517
    functionLinenumberEnd: 530
    functionName: ExecAppendInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 1
    functionsReached:
    - memset
    - LWLockInitialize
    - shm_toc_allocate
    - shm_toc_insert
    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:544,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - pcxt
    argTypes:
    - AppendState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 538
    functionDepth: 0
    functionLinenumber: 538
    functionLinenumberEnd: 545
    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:557,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - pwcxt
    argTypes:
    - AppendState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 554
    functionDepth: 1
    functionLinenumber: 554
    functionLinenumberEnd: 559
    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:575,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:593,1
    - Dst: ExecFindMatchingSubPlans
      Src: /src/postgres/src/backend/executor/nodeAppend.c:598,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:606,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeAppend.c:608,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:609,1
    - Dst: bms_prev_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:611,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - node
    argTypes:
    - AppendState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 568
    functionDepth: 5
    functionLinenumber: 568
    functionLinenumberEnd: 624
    functionName: choose_next_subplan_locally
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExecFindMatchingSubPlans
    - bms_prev_member
    - bms_next_member
    - ScanDirectionIsForward
    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:640,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeAppend.c:640,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:643,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/executor/nodeAppend.c:645,1
    - Dst: ExecFindMatchingSubPlans
      Src: /src/postgres/src/backend/executor/nodeAppend.c:665,1
    - Dst: mark_invalid_subplans_as_finished
      Src: /src/postgres/src/backend/executor/nodeAppend.c:672,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeAppend.c:683,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeAppend.c:698,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 1
    argNames:
    - node
    argTypes:
    - AppendState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 634
    functionDepth: 5
    functionLinenumber: 634
    functionLinenumberEnd: 701
    functionName: choose_next_subplan_for_leader
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExecFindMatchingSubPlans
    - mark_invalid_subplans_as_finished
    - LWLockRelease
    - LWLockAcquire
    - ScanDirectionIsForward
    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:722,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeAppend.c:722,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:725,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/executor/nodeAppend.c:727,1
    - Dst: ExecFindMatchingSubPlans
      Src: /src/postgres/src/backend/executor/nodeAppend.c:741,1
    - Dst: mark_invalid_subplans_as_finished
      Src: /src/postgres/src/backend/executor/nodeAppend.c:744,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeAppend.c:750,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:762,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:775,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeAppend.c:793,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:800,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:809,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/executor/nodeAppend.c:829,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 45
    argCount: 1
    argNames:
    - node
    argTypes:
    - AppendState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 832
      start: 716
    functionDepth: 5
    functionLinenumber: 716
    functionLinenumberEnd: 832
    functionName: choose_next_subplan_for_worker
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExecFindMatchingSubPlans
    - mark_invalid_subplans_as_finished
    - bms_next_member
    - LWLockRelease
    - LWLockAcquire
    - ScanDirectionIsForward
    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:848,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:851,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/executor/nodeAppend.c:854,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:860,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - node
    argTypes:
    - AppendState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 842
    functionDepth: 3
    functionLinenumber: 842
    functionLinenumberEnd: 863
    functionName: mark_invalid_subplans_as_finished
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 2
    functionsReached:
    - bms_is_member
    - Assert
    - bms_num_members
    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:882,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeAppend.c:882,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:885,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:888,1
    - Dst: ExecFindMatchingSubPlans
      Src: /src/postgres/src/backend/executor/nodeAppend.c:894,1
    - Dst: classify_matching_subplans
      Src: /src/postgres/src/backend/executor/nodeAppend.c:897,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/executor/nodeAppend.c:901,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/executor/nodeAppend.c:902,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:910,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:914,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:915,1
    - Dst: ExecAsyncRequest
      Src: /src/postgres/src/backend/executor/nodeAppend.c:918,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - node
    argTypes:
    - AppendState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 876
    functionDepth: 5
    functionLinenumber: 876
    functionLinenumberEnd: 920
    functionName: ExecAppendAsyncBegin
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 1
    functionsReached:
    - Assert
    - ExecFindMatchingSubPlans
    - bms_is_empty
    - classify_matching_subplans
    - ExecAsyncRequest
    - bms_next_member
    - bms_num_members
    - ScanDirectionIsForward
    linkageType: ''
    returnType: void
    signature: void ExecAppendAsyncBegin(AppendState *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:934,1
    - Dst: ExecAppendAsyncRequest
      Src: /src/postgres/src/backend/executor/nodeAppend.c:937,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeAppend.c:942,1
    - Dst: ExecAppendAsyncEventWait
      Src: /src/postgres/src/backend/executor/nodeAppend.c:945,1
    - Dst: ExecAppendAsyncRequest
      Src: /src/postgres/src/backend/executor/nodeAppend.c:948,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:963,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeAppend.c:964,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - node
    - result
    argTypes:
    - AppendState*
    - TupleTableSlot**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 928
    functionDepth: 1
    functionLinenumber: 928
    functionLinenumberEnd: 969
    functionName: ExecAppendAsyncGetNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 1
    functionsReached:
    - ExecAppendAsyncEventWait
    - Assert
    - CHECK_FOR_INTERRUPTS
    - ExecAppendAsyncRequest
    - ExecClearTuple
    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:984,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:986,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1005,1
    - Dst: ExecAsyncRequest
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1010,1
    - Dst: bms_free
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1012,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - node
    - result
    argTypes:
    - AppendState*
    - TupleTableSlot**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 977
    functionDepth: 3
    functionLinenumber: 977
    functionLinenumberEnd: 1023
    functionName: ExecAppendAsyncRequest
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 1
    functionsReached:
    - Assert
    - bms_is_empty
    - ExecAsyncRequest
    - bms_next_member
    - bms_free
    linkageType: ''
    returnType: bool
    signature: bool ExecAppendAsyncRequest(AppendState *node, TupleTableSlot **result)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1041,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1043,1
    - Dst: CreateWaitEventSet
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1044,1
    - Dst: AddWaitEventToSet
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1045,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1050,1
    - Dst: ExecAsyncConfigureWait
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1055,1
    - Dst: GetNumRegisteredWaitEvents
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1062,1
    - Dst: FreeWaitEventSet
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1064,1
    - Dst: AddWaitEventToSet
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1081,1
    - Dst: WaitEventSetWait
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1092,1
    - Dst: FreeWaitEventSet
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1094,1
    - Dst: ExecAsyncNotify
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1122,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1129,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1130,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 1
    argNames:
    - node
    argTypes:
    - AppendState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1133
      start: 1031
    functionDepth: 3
    functionLinenumber: 1031
    functionLinenumberEnd: 1133
    functionName: ExecAppendAsyncEventWait
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 2
    functionsReached:
    - ResetLatch
    - Assert
    - CHECK_FOR_INTERRUPTS
    - AddWaitEventToSet
    - WaitEventSetWait
    - FreeWaitEventSet
    - ExecAsyncConfigureWait
    - GetNumRegisteredWaitEvents
    - CreateWaitEventSet
    - bms_next_member
    - ExecAsyncNotify
    linkageType: ''
    returnType: void
    signature: void ExecAppendAsyncEventWait(AppendState *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1148,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1148,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1154,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1159,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1162,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1168,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1175,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - areq
    argTypes:
    - AsyncRequest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1177
      start: 1141
    functionDepth: 3
    functionLinenumber: 1141
    functionLinenumberEnd: 1177
    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:1192,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1193,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1196,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1204,1
    - Dst: bms_intersect
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1211,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/executor/nodeAppend.c:1215,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - node
    argTypes:
    - AppendState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1187
    functionDepth: 4
    functionLinenumber: 1187
    functionLinenumberEnd: 1220
    functionName: classify_matching_subplans
    functionSourceFile: /src/postgres/src/backend/executor/nodeAppend.c
    functionUses: 2
    functionsReached:
    - bms_overlap
    - Assert
    - bms_del_members
    - bms_is_empty
    - bms_intersect
    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:
    - ExecScan
    - castNode
    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:140,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:149,1
    - Dst: ExecAssignScanProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:150,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - SubqueryScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 96
    functionDepth: 11
    functionLinenumber: 96
    functionLinenumberEnd: 159
    functionName: ExecInitSubqueryScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubqueryscan.c
    functionUses: 1
    functionsReached:
    - Assert
    - ExecGetResultSlotOps
    - ExecInitScanTupleSlot
    - ExecAssignExprContext
    - ExecInitNode
    - ExecGetResultType
    - outerPlan
    - ExecInitQual
    - ExecInitResultTypeTL
    - ExecAssignScanProjectionInfo
    - innerPlan
    - makeNode
    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:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - SubqueryScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 167
    functionDepth: 4
    functionLinenumber: 167
    functionLinenumberEnd: 174
    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:185,1
    - Dst: UpdateChangedParamSet
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:193,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeSubqueryscan.c:200,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - SubqueryScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 182
    functionDepth: 7
    functionLinenumber: 182
    functionLinenumberEnd: 201
    functionName: ExecReScanSubqueryScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubqueryscan.c
    functionUses: 1
    functionsReached:
    - UpdateChangedParamSet
    - ExecScanReScan
    - 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
    - CHECK_FOR_INTERRUPTS
    - ExecProcNode
    - TupIsNull
    - castNode
    - outerPlanState
    - ExecQual
    - ExecProject
    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:
    - elog
    - outerPlanState
    - 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:
    - elog
    - outerPlanState
    - ExecRestrPos
    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:
    - Assert
    - ExecAssignExprContext
    - ExecInitResultTupleSlotTL
    - innerPlan
    - ExecInitNode
    - ExecAssignProjectionInfo
    - ExecInitQual
    - outerPlan
    - outerPlanState
    - makeNode
    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:
    - ExecEndNode
    - outerPlanState
    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:71,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:78,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:80,1
    - Dst: ExecHashSubPlan
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:87,1
    - Dst: ExecScanSubPlan
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:89,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - node
    - econtext
    - isNull
    argTypes:
    - SubPlanState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 95
    functionName: ExecSubPlan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubplan.c
    functionUses: 0
    functionsReached:
    - ExecScanSubPlan
    - ExecHashSubPlan
    - elog
    - 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:111,1
    - Dst: buildSubPlanHash
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:118,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:126,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:133,1
    - Dst: slotNoNulls
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:157,1
    - Dst: FindTupleHashEntry
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:160,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:165,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:166,1
    - Dst: findPartialMatch
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:169,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:171,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:173,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:175,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:176,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:191,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:192,1
    - Dst: slotAllNulls
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:194,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:196,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:198,1
    - Dst: findPartialMatch
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:202,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:204,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:206,1
    - Dst: findPartialMatch
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:209,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:211,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:213,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:215,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:216,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 44
    argCount: 3
    argNames:
    - node
    - econtext
    - isNull
    argTypes:
    - SubPlanState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 100
    functionDepth: 4
    functionLinenumber: 100
    functionLinenumberEnd: 217
    functionName: ExecHashSubPlan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubplan.c
    functionUses: 1
    functionsReached:
    - slotAllNulls
    - BoolGetDatum
    - buildSubPlanHash
    - findPartialMatch
    - elog
    - FindTupleHashEntry
    - ExecClearTuple
    - slotNoNulls
    - ExecProject
    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:239,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:247,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:255,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:257,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:259,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:263,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:291,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:294,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:295,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:296,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:307,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:315,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:316,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:317,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:329,1
    - Dst: ExecCopySlotHeapTuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:330,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:332,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:341,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:342,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:343,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:355,1
    - Dst: ExecCopySlotHeapTuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:356,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:362,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:364,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:368,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:369,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:385,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:385,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:386,1
    - Dst: accumArrayResultAny
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:387,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:395,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:396,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:397,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:407,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:409,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:413,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:414,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:418,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:426,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:428,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:438,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:440,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:453,1
    - Dst: makeArrayResultAny
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:458,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:476,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:478,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:482,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 101
    argCount: 3
    argNames:
    - node
    - econtext
    - isNull
    argTypes:
    - SubPlanState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 222
    functionDepth: 7
    functionLinenumber: 222
    functionLinenumberEnd: 490
    functionName: ExecScanSubPlan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubplan.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - BoolGetDatum
    - lfirst_int
    - TupIsNull
    - heap_getattr
    - heap_freetuple
    - foreach
    - ExecCopySlotHeapTuple
    - makeArrayResultAny
    - slot_getattr
    - errmsg
    - ExecEvalExprSwitchContext
    - TupleDescAttr
    - bms_add_member
    - Assert
    - initArrayResultAny
    - ExecProcNode
    - accumArrayResultAny
    - ereport
    - ExecReScan
    - DatumGetBool
    - errcode
    linkageType: ''
    returnType: Datum
    signature: "Datum ExecScanSubPlan(SubPlanState *node,\n\t\t\t\tExprContext *econtext,\n\t\t\t\tbool
      *isNull)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:506,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:528,1
    - Dst: clamp_cardinality_to_long
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:532,1
    - Dst: ResetTupleHashTable
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:537,1
    - Dst: BuildTupleHashTable
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:539,1
    - Dst: ResetTupleHashTable
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:566,1
    - Dst: BuildTupleHashTable
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:568,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:590,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:595,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:601,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:602,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:603,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:613,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:615,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:619,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:620,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:624,1
    - Dst: slotNoNulls
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:629,1
    - Dst: LookupTupleHashEntry
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:631,1
    - Dst: LookupTupleHashEntry
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:636,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:644,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:654,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:656,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 45
    argCount: 2
    argNames:
    - node
    - econtext
    argTypes:
    - SubPlanState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 495
    functionDepth: 8
    functionLinenumber: 495
    functionLinenumberEnd: 657
    functionName: buildSubPlanHash
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubplan.c
    functionUses: 1
    functionsReached:
    - ResetExprContext
    - Assert
    - MemoryContextSwitchTo
    - ExecProcNode
    - TupIsNull
    - MemoryContextReset
    - LookupTupleHashEntry
    - ExecClearTuple
    - ExecReScan
    - foreach
    - clamp_cardinality_to_long
    - ResetTupleHashTable
    - BuildTupleHashTable
    - slot_getattr
    - slotNoNulls
    - lfirst_int
    - ExecProject
    linkageType: ''
    returnType: void
    signature: void buildSubPlanHash(SubPlanState *node, ExprContext *econtext)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:687,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:688,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:706,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:711,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:717,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:717,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:726,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: 729
      start: 673
    functionDepth: 3
    functionLinenumber: 673
    functionLinenumberEnd: 729
    functionName: execTuplesUnequal
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubplan.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - FunctionCall2Coll
    - MemoryContextReset
    - DatumGetBool
    - slot_getattr
    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:751,1
    - Dst: ScanTupleHashTable
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:752,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:754,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:756,1
    - Dst: TupleHashEntryGetTuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:756,1
    - Dst: execTuplesUnequal
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:757,1
    - Dst: TermTupleHashIterator
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:763,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - hashtable
    - slot
    - eqfunctions
    argTypes:
    - TupleHashTable
    - TupleTableSlot*
    - FmgrInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 742
    functionDepth: 5
    functionLinenumber: 742
    functionLinenumberEnd: 769
    functionName: findPartialMatch
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubplan.c
    functionUses: 1
    functionsReached:
    - ScanTupleHashTable
    - InitTupleHashIterator
    - CHECK_FOR_INTERRUPTS
    - execTuplesUnequal
    - TupleHashEntryGetTuple
    - TermTupleHashIterator
    - ExecStoreMinimalTuple
    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:785,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 777
    functionDepth: 3
    functionLinenumber: 777
    functionLinenumberEnd: 789
    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:805,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - slot
    argTypes:
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 797
    functionDepth: 3
    functionLinenumber: 797
    functionLinenumberEnd: 809
    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:828,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:834,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:842,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:849,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:855,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:885,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:887,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:914,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:919,1
    - Dst: CreateExprContext
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:923,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:938,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:941,1
    - Dst: is_andclause
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:943,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:946,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:951,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:952,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:955,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:959,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:960,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:961,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:962,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:963,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:964,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:966,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:971,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:978,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:978,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:981,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:982,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:986,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:989,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:990,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:994,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:998,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:999,1
    - Dst: get_compatible_hash_operators
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1002,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1004,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1006,1
    - Dst: get_op_hash_functions
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1009,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1011,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1013,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1014,1
    - Dst: ExecTypeFromTL
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1033,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1034,1
    - Dst: ExecBuildProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1035,1
    - Dst: ExecTypeFromTL
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1041,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1042,1
    - Dst: ExecBuildProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1043,1
    - Dst: ExecBuildHash32FromAttrs
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1050,1
    - Dst: ExecBuildGroupingEqual
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1063,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 81
    argCount: 2
    argNames:
    - subplan
    - parent
    argTypes:
    - SubPlan*
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1073
      start: 825
    functionDepth: 8
    functionLinenumber: 825
    functionLinenumberEnd: 1073
    functionName: ExecInitSubPlan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubplan.c
    functionUses: 2
    functionsReached:
    - fmgr_info_set_expr
    - get_op_hash_functions
    - castNode
    - list_length
    - makeNode
    - lfirst_int
    - lsecond
    - foreach
    - ExecBuildHash32FromAttrs
    - is_andclause
    - nodeTag
    - ExecBuildGroupingEqual
    - lfirst_node
    - linitial
    - ExecInitExtraTupleSlot
    - fmgr_info
    - IsA
    - get_opcode
    - list_nth
    - elog
    - lappend
    - CreateExprContext
    - palloc
    - ExecInitExpr
    - makeTargetEntry
    - Assert
    - ExecTypeFromTL
    - list_make1
    - PointerGetDatum
    - ExecBuildProjectionInfo
    - AllocSetContextCreate
    - get_compatible_hash_operators
    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:971,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:978,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:978,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:981,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:982,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:986,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:989,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:990,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:994,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:998,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:999,1
    - Dst: get_compatible_hash_operators
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1002,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1004,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1006,1
    - Dst: get_op_hash_functions
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1009,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1011,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1013,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1014,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 969
    functionDepth: 6
    functionLinenumber: 969
    functionLinenumberEnd: 1023
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubplan.c
    functionUses: 426
    functionsReached:
    - makeTargetEntry
    - fmgr_info_set_expr
    - Assert
    - lfirst_node
    - linitial
    - fmgr_info
    - lsecond
    - get_opcode
    - list_length
    - get_op_hash_functions
    - elog
    - lappend
    - get_compatible_hash_operators
    linkageType: ''
    returnType: void
    signature: void foreach(l, oplist)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1115,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1117,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1119,1
    - Dst: initArrayResultAny
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1129,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1135,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1141,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1142,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1143,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1151,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1155,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1168,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1168,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1169,1
    - Dst: accumArrayResultAny
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1170,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1180,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1181,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1182,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1193,1
    - Dst: ExecCopySlotHeapTuple
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1194,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1199,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1201,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1205,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1214,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1222,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1223,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1223,1
    - Dst: makeArrayResultAny
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1224,1
    - Dst: linitial_int
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1236,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1240,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1246,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1248,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1258,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 61
    argCount: 2
    argNames:
    - node
    - econtext
    argTypes:
    - SubPlanState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1262
      start: 1099
    functionDepth: 4
    functionLinenumber: 1099
    functionLinenumberEnd: 1262
    functionName: ExecSetParamPlan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubplan.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - BoolGetDatum
    - lfirst_int
    - pfree
    - TupIsNull
    - heap_getattr
    - heap_freetuple
    - foreach
    - ExecCopySlotHeapTuple
    - makeArrayResultAny
    - slot_getattr
    - DatumGetPointer
    - errmsg
    - TupleDescAttr
    - elog
    - Assert
    - initArrayResultAny
    - ExecProcNode
    - accumArrayResultAny
    - ereport
    - linitial_int
    - PointerGetDatum
    - errcode
    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:1281,1
    - Dst: ExecSetParamPlan
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1288,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1290,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - params
    - econtext
    argTypes:
    - Bitmapset*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1293
      start: 1275
    functionDepth: 5
    functionLinenumber: 1275
    functionLinenumberEnd: 1293
    functionName: ExecSetParamPlanMulti
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubplan.c
    functionUses: 4
    functionsReached:
    - ExecSetParamPlan
    - Assert
    - bms_next_member
    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:1308,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1310,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1311,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1312,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1326,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1328,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/executor/nodeSubplan.c:1334,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - node
    - parent
    argTypes:
    - SubPlanState*
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1336
      start: 1298
    functionDepth: 3
    functionLinenumber: 1298
    functionLinenumberEnd: 1336
    functionName: ExecReScanSetParamPlan
    functionSourceFile: /src/postgres/src/backend/executor/nodeSubplan.c
    functionUses: 1
    functionsReached:
    - bms_is_empty
    - foreach
    - elog
    - lfirst_int
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: void ExecReScanSetParamPlan(SubPlanState *node, PlanState *parent)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/instrument.c:36,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - n
    - instrument_options
    - async_mode
    argTypes:
    - int
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 54
    functionName: InstrAlloc
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 2
    functionsReached:
    - palloc0
    linkageType: ''
    returnType: Instrumentation
    signature: 'Instrumentation *

      InstrAlloc(int n, int instrument_options, bool async_mode)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/executor/instrument.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - instr
    - instrument_options
    argTypes:
    - Instrumentation*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 64
    functionName: InstrInit
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 1
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void InstrInit(Instrumentation *instr, int instrument_options)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: INSTR_TIME_SET_CURRENT_LAZY
      Src: /src/postgres/src/backend/executor/instrument.c:71,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/instrument.c:72,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - instr
    argTypes:
    - Instrumentation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 80
    functionName: InstrStartNode
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 11
    functionsReached:
    - elog
    - INSTR_TIME_SET_CURRENT_LAZY
    linkageType: ''
    returnType: void
    signature: void InstrStartNode(Instrumentation *instr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: INSTR_TIME_IS_ZERO
      Src: /src/postgres/src/backend/executor/instrument.c:95,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/instrument.c:96,1
    - Dst: INSTR_TIME_SET_CURRENT
      Src: /src/postgres/src/backend/executor/instrument.c:98,1
    - Dst: INSTR_TIME_ACCUM_DIFF
      Src: /src/postgres/src/backend/executor/instrument.c:99,1
    - Dst: INSTR_TIME_SET_ZERO
      Src: /src/postgres/src/backend/executor/instrument.c:101,1
    - Dst: BufferUsageAccumDiff
      Src: /src/postgres/src/backend/executor/instrument.c:106,1
    - Dst: WalUsageAccumDiff
      Src: /src/postgres/src/backend/executor/instrument.c:110,1
    - Dst: INSTR_TIME_GET_DOUBLE
      Src: /src/postgres/src/backend/executor/instrument.c:117,1
    - Dst: INSTR_TIME_GET_DOUBLE
      Src: /src/postgres/src/backend/executor/instrument.c:126,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - instr
    - nTuples
    argTypes:
    - Instrumentation*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 128
    functionName: InstrStopNode
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 11
    functionsReached:
    - INSTR_TIME_ACCUM_DIFF
    - elog
    - INSTR_TIME_GET_DOUBLE
    - INSTR_TIME_SET_ZERO
    - INSTR_TIME_SET_CURRENT
    - BufferUsageAccumDiff
    - WalUsageAccumDiff
    - INSTR_TIME_IS_ZERO
    linkageType: ''
    returnType: void
    signature: void InstrStopNode(Instrumentation *instr, double nTuples)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - instr
    - nTuples
    argTypes:
    - Instrumentation*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 136
    functionName: InstrUpdateTupleCount
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void InstrUpdateTupleCount(Instrumentation *instr, double nTuples)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INSTR_TIME_IS_ZERO
      Src: /src/postgres/src/backend/executor/instrument.c:148,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/instrument.c:149,1
    - Dst: INSTR_TIME_GET_DOUBLE
      Src: /src/postgres/src/backend/executor/instrument.c:152,1
    - Dst: INSTR_TIME_SET_ZERO
      Src: /src/postgres/src/backend/executor/instrument.c:161,1
    - Dst: INSTR_TIME_SET_ZERO
      Src: /src/postgres/src/backend/executor/instrument.c:162,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - instr
    argTypes:
    - Instrumentation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 165
    functionName: InstrEndLoop
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 2
    functionsReached:
    - elog
    - INSTR_TIME_GET_DOUBLE
    - INSTR_TIME_SET_ZERO
    - INSTR_TIME_IS_ZERO
    linkageType: ''
    returnType: void
    signature: void InstrEndLoop(Instrumentation *instr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: INSTR_TIME_ADD
      Src: /src/postgres/src/backend/executor/instrument.c:179,1
    - Dst: BufferUsageAdd
      Src: /src/postgres/src/backend/executor/instrument.c:192,1
    - Dst: WalUsageAdd
      Src: /src/postgres/src/backend/executor/instrument.c:195,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - dst
    - add
    argTypes:
    - Instrumentation*
    - Instrumentation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 196
    functionName: InstrAggNode
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 2
    functionsReached:
    - INSTR_TIME_ADD
    - BufferUsageAdd
    - WalUsageAdd
    linkageType: ''
    returnType: void
    signature: void InstrAggNode(Instrumentation *dst, Instrumentation *add)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 204
    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:210,1
    - Dst: BufferUsageAccumDiff
      Src: /src/postgres/src/backend/executor/instrument.c:211,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/instrument.c:212,1
    - Dst: WalUsageAccumDiff
      Src: /src/postgres/src/backend/executor/instrument.c:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - bufusage
    - walusage
    argTypes:
    - BufferUsage*
    - WalUsage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 214
    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:220,1
    - Dst: WalUsageAdd
      Src: /src/postgres/src/backend/executor/instrument.c:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - bufusage
    - walusage
    argTypes:
    - BufferUsage*
    - WalUsage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 222
    functionName: InstrAccumParallelQuery
    functionSourceFile: /src/postgres/src/backend/executor/instrument.c
    functionUses: 4
    functionsReached:
    - BufferUsageAdd
    - WalUsageAdd
    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:238,1
    - Dst: INSTR_TIME_ADD
      Src: /src/postgres/src/backend/executor/instrument.c:239,1
    - Dst: INSTR_TIME_ADD
      Src: /src/postgres/src/backend/executor/instrument.c:240,1
    - Dst: INSTR_TIME_ADD
      Src: /src/postgres/src/backend/executor/instrument.c:241,1
    - Dst: INSTR_TIME_ADD
      Src: /src/postgres/src/backend/executor/instrument.c:242,1
    - Dst: INSTR_TIME_ADD
      Src: /src/postgres/src/backend/executor/instrument.c:243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 2
    argNames:
    - dst
    - add
    argTypes:
    - BufferUsage*
    - BufferUsage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 244
    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:262,1
    - Dst: INSTR_TIME_ACCUM_DIFF
      Src: /src/postgres/src/backend/executor/instrument.c:264,1
    - Dst: INSTR_TIME_ACCUM_DIFF
      Src: /src/postgres/src/backend/executor/instrument.c:266,1
    - Dst: INSTR_TIME_ACCUM_DIFF
      Src: /src/postgres/src/backend/executor/instrument.c:268,1
    - Dst: INSTR_TIME_ACCUM_DIFF
      Src: /src/postgres/src/backend/executor/instrument.c:270,1
    - Dst: INSTR_TIME_ACCUM_DIFF
      Src: /src/postgres/src/backend/executor/instrument.c:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 3
    argNames:
    - dst
    - add
    - sub
    argTypes:
    - BufferUsage*
    - BufferUsage*
    - BufferUsage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 247
    functionDepth: 1
    functionLinenumber: 247
    functionLinenumberEnd: 274
    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: 5
    argCount: 2
    argNames:
    - dst
    - add
    argTypes:
    - WalUsage*
    - WalUsage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 284
    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: 5
    argCount: 3
    argNames:
    - dst
    - add
    - sub
    argTypes:
    - WalUsage*
    - WalUsage*
    - WalUsage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 293
    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: 8
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeGroup.c:38,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeGroup.c:43,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeGroup.c:66,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeGroup.c:68,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGroup.c:68,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeGroup.c:69,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeGroup.c:76,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeGroup.c:88,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeGroup.c:93,1
    - Dst: InstrCountFiltered1
      Src: /src/postgres/src/backend/executor/nodeGroup.c:96,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeGroup.c:111,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGroup.c:111,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeGroup.c:112,1
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/executor/nodeGroup.c:125,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/nodeGroup.c:134,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeGroup.c:141,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeGroup.c:146,1
    - Dst: InstrCountFiltered1
      Src: /src/postgres/src/backend/executor/nodeGroup.c:149,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 35
    functionDepth: 4
    functionLinenumber: 35
    functionLinenumberEnd: 151
    functionName: ExecGroup
    functionSourceFile: /src/postgres/src/backend/executor/nodeGroup.c
    functionUses: 0
    functionsReached:
    - ExecQualAndReset
    - TupIsNull
    - CHECK_FOR_INTERRUPTS
    - ExecProcNode
    - castNode
    - InstrCountFiltered1
    - outerPlanState
    - ExecCopySlot
    - ExecQual
    - ExecProject
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecGroup(PlanState *pstate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeGroup.c:167,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeGroup.c:172,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeGroup.c:181,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGroup.c:186,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeGroup.c:186,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeGroup.c:186,1
    - Dst: ExecGetResultSlotOps
      Src: /src/postgres/src/backend/executor/nodeGroup.c:191,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGroup.c:191,1
    - Dst: ExecCreateScanSlotFromOuterPlan
      Src: /src/postgres/src/backend/executor/nodeGroup.c:192,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeGroup.c:197,1
    - Dst: ExecAssignProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeGroup.c:198,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeGroup.c:204,1
    - Dst: execTuplesMatchPrepare
      Src: /src/postgres/src/backend/executor/nodeGroup.c:210,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeGroup.c:210,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGroup.c:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - Group*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 160
    functionDepth: 11
    functionLinenumber: 160
    functionLinenumberEnd: 218
    functionName: ExecInitGroup
    functionSourceFile: /src/postgres/src/backend/executor/nodeGroup.c
    functionUses: 1
    functionsReached:
    - Assert
    - ExecGetResultSlotOps
    - ExecAssignExprContext
    - ExecInitResultTupleSlotTL
    - execTuplesMatchPrepare
    - ExecCreateScanSlotFromOuterPlan
    - ExecInitNode
    - ExecAssignProjectionInfo
    - ExecInitQual
    - outerPlan
    - outerPlanState
    - ExecGetResultType
    - makeNode
    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:230,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeGroup.c:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - GroupState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 225
    functionDepth: 4
    functionLinenumber: 225
    functionLinenumberEnd: 232
    functionName: ExecEndGroup
    functionSourceFile: /src/postgres/src/backend/executor/nodeGroup.c
    functionUses: 1
    functionsReached:
    - ExecEndNode
    - outerPlanState
    linkageType: ''
    returnType: void
    signature: void ExecEndGroup(GroupState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeGroup.c:237,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeGroup.c:241,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeGroup.c:248,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - GroupState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 234
    functionDepth: 7
    functionLinenumber: 234
    functionLinenumberEnd: 249
    functionName: ExecReScanGroup
    functionSourceFile: /src/postgres/src/backend/executor/nodeGroup.c
    functionUses: 1
    functionsReached:
    - ExecClearTuple
    - outerPlanState
    - ExecReScan
    linkageType: ''
    returnType: void
    signature: void ExecReScanGroup(GroupState *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SPI_connect_ext
      Src: /src/postgres/src/backend/executor/spi.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 97
    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:108,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/spi.c:111,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:118,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/spi.c:123,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/spi.c:131,1
    - Dst: slist_init
      Src: /src/postgres/src/backend/executor/spi.c:137,1
    - Dst: GetCurrentSubTransactionId
      Src: /src/postgres/src/backend/executor/spi.c:140,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/spi.c:161,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/spi.c:164,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:168,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 39
    argCount: 1
    argNames:
    - options
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 179
    functionName: SPI_connect_ext
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 8
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - slist_init
    - GetCurrentSubTransactionId
    - elog
    - AllocSetContextCreate
    - repalloc
    - MemoryContextAlloc
    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:186,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:191,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/spi.c:194,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/spi.c:196,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 215
    functionName: SPI_finish
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 16
    functionsReached:
    - _SPI_begin_call
    - MemoryContextSwitchTo
    - MemoryContextDelete
    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: 224
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 224
    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:239,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/spi.c:240,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/spi.c:241,1
    - Dst: IsSubTransaction
      Src: /src/postgres/src/backend/executor/spi.c:253,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/spi.c:254,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/spi.c:255,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/spi.c:256,1
    - Dst: SaveTransactionCharacteristics
      Src: /src/postgres/src/backend/executor/spi.c:259,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/executor/spi.c:262,1
    - Dst: HoldPinnedPortals
      Src: /src/postgres/src/backend/executor/spi.c:272,1
    - Dst: ForgetPortalSnapshots
      Src: /src/postgres/src/backend/executor/spi.c:275,1
    - Dst: CommitTransactionCommand
      Src: /src/postgres/src/backend/executor/spi.c:278,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/executor/spi.c:281,1
    - Dst: RestoreTransactionCharacteristics
      Src: /src/postgres/src/backend/executor/spi.c:283,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:285,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/executor/spi.c:289,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:294,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/backend/executor/spi.c:295,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/backend/executor/spi.c:296,1
    - Dst: AbortCurrentTransaction
      Src: /src/postgres/src/backend/executor/spi.c:302,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/executor/spi.c:305,1
    - Dst: RestoreTransactionCharacteristics
      Src: /src/postgres/src/backend/executor/spi.c:307,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:309,1
    - Dst: ReThrowError
      Src: /src/postgres/src/backend/executor/spi.c:314,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/executor/spi.c:316,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 1
    argNames:
    - chain
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 226
    functionDepth: 2
    functionLinenumber: 226
    functionLinenumberEnd: 317
    functionName: _SPI_commit
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - errmsg
    - CopyErrorData
    - MemoryContextSwitchTo
    - RestoreTransactionCharacteristics
    - PG_END_TRY
    - CommitTransactionCommand
    - PG_TRY
    - HoldPinnedPortals
    - ReThrowError
    - FlushErrorState
    - PG_CATCH
    - ereport
    - IsSubTransaction
    - ForgetPortalSnapshots
    - AbortCurrentTransaction
    - SaveTransactionCharacteristics
    - StartTransactionCommand
    - errcode
    linkageType: ''
    returnType: void
    signature: void _SPI_commit(bool chain)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_commit
      Src: /src/postgres/src/backend/executor/spi.c:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 319
    functionDepth: 3
    functionLinenumber: 319
    functionLinenumberEnd: 323
    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:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 325
    functionDepth: 3
    functionLinenumber: 325
    functionLinenumberEnd: 329
    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:339,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/spi.c:340,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/spi.c:341,1
    - Dst: IsSubTransaction
      Src: /src/postgres/src/backend/executor/spi.c:344,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/spi.c:345,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/spi.c:346,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/spi.c:347,1
    - Dst: SaveTransactionCharacteristics
      Src: /src/postgres/src/backend/executor/spi.c:350,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/executor/spi.c:353,1
    - Dst: HoldPinnedPortals
      Src: /src/postgres/src/backend/executor/spi.c:364,1
    - Dst: ForgetPortalSnapshots
      Src: /src/postgres/src/backend/executor/spi.c:367,1
    - Dst: AbortCurrentTransaction
      Src: /src/postgres/src/backend/executor/spi.c:370,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/executor/spi.c:373,1
    - Dst: RestoreTransactionCharacteristics
      Src: /src/postgres/src/backend/executor/spi.c:375,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:377,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/executor/spi.c:381,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:386,1
    - Dst: CopyErrorData
      Src: /src/postgres/src/backend/executor/spi.c:387,1
    - Dst: FlushErrorState
      Src: /src/postgres/src/backend/executor/spi.c:388,1
    - Dst: AbortCurrentTransaction
      Src: /src/postgres/src/backend/executor/spi.c:395,1
    - Dst: StartTransactionCommand
      Src: /src/postgres/src/backend/executor/spi.c:398,1
    - Dst: RestoreTransactionCharacteristics
      Src: /src/postgres/src/backend/executor/spi.c:400,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:402,1
    - Dst: ReThrowError
      Src: /src/postgres/src/backend/executor/spi.c:407,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/executor/spi.c:409,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 1
    argNames:
    - chain
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 331
    functionDepth: 2
    functionLinenumber: 331
    functionLinenumberEnd: 410
    functionName: _SPI_rollback
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - errmsg
    - CopyErrorData
    - MemoryContextSwitchTo
    - RestoreTransactionCharacteristics
    - PG_END_TRY
    - PG_TRY
    - HoldPinnedPortals
    - ReThrowError
    - FlushErrorState
    - PG_CATCH
    - ereport
    - IsSubTransaction
    - ForgetPortalSnapshots
    - AbortCurrentTransaction
    - SaveTransactionCharacteristics
    - StartTransactionCommand
    - errcode
    linkageType: ''
    returnType: void
    signature: void _SPI_rollback(bool chain)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_rollback
      Src: /src/postgres/src/backend/executor/spi.c:415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 412
    functionDepth: 3
    functionLinenumber: 412
    functionLinenumberEnd: 416
    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:421,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 418
    functionDepth: 3
    functionLinenumber: 418
    functionLinenumberEnd: 422
    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:469,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/spi.c:470,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/spi.c:471,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/spi.c:472,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - isCommit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 427
    functionDepth: 1
    functionLinenumber: 427
    functionLinenumberEnd: 473
    functionName: AtEOXact_SPI
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 3
    functionsReached:
    - errmsg
    - errhint
    - errcode
    - ereport
    linkageType: ''
    returnType: void
    signature: void AtEOXact_SPI(bool isCommit)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/spi.c:503,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/spi.c:508,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/spi.c:529,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/spi.c:530,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/spi.c:531,1
    - Dst: errhint
      Src: /src/postgres/src/backend/executor/spi.c:532,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/executor/spi.c:549,1
    - Dst: slist_foreach_modify
      Src: /src/postgres/src/backend/executor/spi.c:553,1
    - Dst: slist_container
      Src: /src/postgres/src/backend/executor/spi.c:557,1
    - Dst: slist_delete_current
      Src: /src/postgres/src/backend/executor/spi.c:566,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/spi.c:571,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 42
    argCount: 2
    argNames:
    - isCommit
    - mySubid
    argTypes:
    - bool
    - SubTransactionId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 481
    functionDepth: 1
    functionLinenumber: 481
    functionLinenumberEnd: 575
    functionName: AtEOSubXact_SPI
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 2
    functionsReached:
    - errmsg
    - MemoryContextDelete
    - slist_foreach_modify
    - slist_container
    - MemoryContextReset
    - ereport
    - errhint
    - slist_delete_current
    - errcode
    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:588,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 580
    functionDepth: 1
    functionLinenumber: 580
    functionLinenumberEnd: 591
    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:605,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/spi.c:609,1
    - Dst: _SPI_prepare_oneshot_plan
      Src: /src/postgres/src/backend/executor/spi.c:614,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/spi.c:616,1
    - Dst: _SPI_execute_plan
      Src: /src/postgres/src/backend/executor/spi.c:620,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:624,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - src
    - read_only
    - tcount
    argTypes:
    - char*
    - bool
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 595
    functionDepth: 1
    functionLinenumber: 595
    functionLinenumberEnd: 626
    functionName: SPI_execute
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 5
    functionsReached:
    - memset
    - _SPI_execute_plan
    - _SPI_prepare_oneshot_plan
    - _SPI_begin_call
    - _SPI_end_call
    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:632,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - src
    - tcount
    argTypes:
    - char*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 629
    functionDepth: 2
    functionLinenumber: 629
    functionLinenumberEnd: 633
    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:646,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/spi.c:650,1
    - Dst: _SPI_prepare_oneshot_plan
      Src: /src/postgres/src/backend/executor/spi.c:660,1
    - Dst: _SPI_execute_plan
      Src: /src/postgres/src/backend/executor/spi.c:662,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:666,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - src
    - options
    argTypes:
    - char*
    - SPIExecuteOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 636
    functionDepth: 1
    functionLinenumber: 636
    functionLinenumberEnd: 668
    functionName: SPI_execute_extended
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 2
    functionsReached:
    - memset
    - _SPI_execute_plan
    - _SPI_prepare_oneshot_plan
    - _SPI_begin_call
    - _SPI_end_call
    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:684,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/spi.c:688,1
    - Dst: _SPI_convert_params
      Src: /src/postgres/src/backend/executor/spi.c:689,1
    - Dst: _SPI_execute_plan
      Src: /src/postgres/src/backend/executor/spi.c:694,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:698,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: 700
      start: 671
    functionDepth: 1
    functionLinenumber: 671
    functionLinenumberEnd: 700
    functionName: SPI_execute_plan
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 7
    functionsReached:
    - memset
    - _SPI_execute_plan
    - _SPI_convert_params
    - _SPI_begin_call
    - _SPI_end_call
    linkageType: ''
    returnType: int
    signature: "int SPI_execute_plan(SPIPlanPtr plan, 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:706,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - plan
    - Values
    - Nulls
    - tcount
    argTypes:
    - SPIPlanPtr
    - Datum*
    - char*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 703
    functionDepth: 2
    functionLinenumber: 703
    functionLinenumberEnd: 707
    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, Datum *Values, const char *Nulls, long
      tcount)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_begin_call
      Src: /src/postgres/src/backend/executor/spi.c:719,1
    - Dst: _SPI_execute_plan
      Src: /src/postgres/src/backend/executor/spi.c:723,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:727,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - plan
    - options
    argTypes:
    - SPIPlanPtr
    - SPIExecuteOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 710
    functionDepth: 1
    functionLinenumber: 710
    functionLinenumberEnd: 729
    functionName: SPI_execute_plan_extended
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 2
    functionsReached:
    - _SPI_begin_call
    - _SPI_execute_plan
    - _SPI_end_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:742,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/spi.c:746,1
    - Dst: _SPI_execute_plan
      Src: /src/postgres/src/backend/executor/spi.c:751,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:755,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: 757
      start: 732
    functionDepth: 1
    functionLinenumber: 732
    functionLinenumberEnd: 757
    functionName: SPI_execute_plan_with_paramlist
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 2
    functionsReached:
    - memset
    - _SPI_begin_call
    - _SPI_execute_plan
    - _SPI_end_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:787,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/spi.c:791,1
    - Dst: _SPI_convert_params
      Src: /src/postgres/src/backend/executor/spi.c:792,1
    - Dst: _SPI_execute_plan
      Src: /src/postgres/src/backend/executor/spi.c:797,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:801,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: 803
      start: 772
    functionDepth: 1
    functionLinenumber: 772
    functionLinenumberEnd: 803
    functionName: SPI_execute_snapshot
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - memset
    - _SPI_execute_plan
    - _SPI_convert_params
    - _SPI_begin_call
    - _SPI_end_call
    linkageType: ''
    returnType: int
    signature: "int SPI_execute_snapshot(SPIPlanPtr plan,\n\t\t\t\t\t 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:828,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/spi.c:832,1
    - Dst: _SPI_convert_params
      Src: /src/postgres/src/backend/executor/spi.c:841,1
    - Dst: _SPI_prepare_oneshot_plan
      Src: /src/postgres/src/backend/executor/spi.c:844,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/spi.c:846,1
    - Dst: _SPI_execute_plan
      Src: /src/postgres/src/backend/executor/spi.c:851,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:855,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: 857
      start: 811
    functionDepth: 1
    functionLinenumber: 811
    functionLinenumberEnd: 857
    functionName: SPI_execute_with_args
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - memset
    - _SPI_execute_plan
    - _SPI_convert_params
    - _SPI_begin_call
    - _SPI_prepare_oneshot_plan
    - _SPI_end_call
    linkageType: ''
    returnType: int
    signature: "int SPI_execute_with_args(const char *src,\n\t\t\t\t\t  int nargs,
      Oid *argtypes,\n\t\t\t\t\t  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:862,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - src
    - nargs
    - argtypes
    argTypes:
    - char*
    - int
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 859
    functionDepth: 1
    functionLinenumber: 859
    functionLinenumberEnd: 863
    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, Oid *argtypes)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _SPI_begin_call
      Src: /src/postgres/src/backend/executor/spi.c:878,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/spi.c:882,1
    - Dst: _SPI_prepare_plan
      Src: /src/postgres/src/backend/executor/spi.c:891,1
    - Dst: _SPI_make_plan_non_temp
      Src: /src/postgres/src/backend/executor/spi.c:894,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:896,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - src
    - nargs
    - argtypes
    - cursorOptions
    argTypes:
    - char*
    - int
    - Oid*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 865
    functionDepth: 1
    functionLinenumber: 865
    functionLinenumberEnd: 899
    functionName: SPI_prepare_cursor
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 1
    functionsReached:
    - _SPI_make_plan_non_temp
    - memset
    - _SPI_begin_call
    - _SPI_end_call
    - _SPI_prepare_plan
    linkageType: ''
    returnType: SPIPlanPtr
    signature: "SPIPlanPtr SPI_prepare_cursor(const char *src, int nargs, 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:914,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/spi.c:918,1
    - Dst: _SPI_prepare_plan
      Src: /src/postgres/src/backend/executor/spi.c:927,1
    - Dst: _SPI_make_plan_non_temp
      Src: /src/postgres/src/backend/executor/spi.c:930,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:932,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - src
    - options
    argTypes:
    - char*
    - SPIPrepareOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 935
      start: 901
    functionDepth: 1
    functionLinenumber: 901
    functionLinenumberEnd: 935
    functionName: SPI_prepare_extended
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 1
    functionsReached:
    - _SPI_make_plan_non_temp
    - memset
    - _SPI_begin_call
    - _SPI_end_call
    - _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:952,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/spi.c:956,1
    - Dst: _SPI_prepare_plan
      Src: /src/postgres/src/backend/executor/spi.c:965,1
    - Dst: _SPI_make_plan_non_temp
      Src: /src/postgres/src/backend/executor/spi.c:968,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:970,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 4
    argNames:
    - src
    - parserSetup
    - parserSetupArg
    - cursorOptions
    argTypes:
    - char*
    - ParserSetupHook
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 937
    functionDepth: 1
    functionLinenumber: 937
    functionLinenumberEnd: 973
    functionName: SPI_prepare_params
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - _SPI_make_plan_non_temp
    - memset
    - _SPI_begin_call
    - _SPI_end_call
    - _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:990,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/spi.c:992,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/spi.c:994,1
    - Dst: SaveCachedPlan
      Src: /src/postgres/src/backend/executor/spi.c:996,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - plan
    argTypes:
    - SPIPlanPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 975
    functionDepth: 1
    functionLinenumber: 975
    functionLinenumberEnd: 1000
    functionName: SPI_keepplan
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 4
    functionsReached:
    - SaveCachedPlan
    - lfirst
    - MemoryContextSetParent
    - 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:1013,1
    - Dst: _SPI_save_plan
      Src: /src/postgres/src/backend/executor/spi.c:1017,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:1019,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - plan
    argTypes:
    - SPIPlanPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1022
      start: 1002
    functionDepth: 1
    functionLinenumber: 1002
    functionLinenumberEnd: 1022
    functionName: SPI_saveplan
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - _SPI_save_plan
    - _SPI_begin_call
    - _SPI_end_call
    linkageType: ''
    returnType: SPIPlanPtr
    signature: SPIPlanPtr SPI_saveplan(SPIPlanPtr plan)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/spi.c:1033,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/spi.c:1035,1
    - Dst: DropCachedPlan
      Src: /src/postgres/src/backend/executor/spi.c:1037,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/spi.c:1041,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - plan
    argTypes:
    - SPIPlanPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 1024
    functionDepth: 1
    functionLinenumber: 1024
    functionLinenumberEnd: 1044
    functionName: SPI_freeplan
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 6
    functionsReached:
    - DropCachedPlan
    - MemoryContextDelete
    - lfirst
    - foreach
    linkageType: ''
    returnType: int
    signature: int SPI_freeplan(SPIPlanPtr plan)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:1064,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/executor/spi.c:1066,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:1068,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1071
      start: 1046
    functionDepth: 2
    functionLinenumber: 1046
    functionLinenumberEnd: 1071
    functionName: SPI_copytuple
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - heap_copytuple
    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:1094,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:1096,1
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/backend/executor/spi.c:1098,1
    - Dst: heap_copy_tuple_as_datum
      Src: /src/postgres/src/backend/executor/spi.c:1098,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:1100,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - tuple
    - tupdesc
    argTypes:
    - HeapTuple
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 1073
    functionDepth: 4
    functionLinenumber: 1073
    functionLinenumberEnd: 1103
    functionName: SPI_returntuple
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 1
    functionsReached:
    - assign_record_type_typmod
    - DatumGetHeapTupleHeader
    - MemoryContextSwitchTo
    - heap_copy_tuple_as_datum
    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:1128,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/spi.c:1133,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/spi.c:1134,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/executor/spi.c:1137,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/executor/spi.c:1150,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/spi.c:1166,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/spi.c:1167,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:1169,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: 1172
      start: 1105
    functionDepth: 5
    functionLinenumber: 1105
    functionLinenumberEnd: 1172
    functionName: SPI_modifytuple
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - heap_form_tuple
    - pfree
    - MemoryContextSwitchTo
    - heap_deform_tuple
    - palloc
    linkageType: ''
    returnType: HeapTuple
    signature: "HeapTuple SPI_modifytuple(Relation rel, HeapTuple tuple, int natts,
      int *attnum,\n\t\t\t\tDatum *Values, const char *Nulls)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/spi.c:1182,1
    - Dst: namestrcmp
      Src: /src/postgres/src/backend/executor/spi.c:1184,1
    - Dst: SystemAttributeByName
      Src: /src/postgres/src/backend/executor/spi.c:1189,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - tupdesc
    - fname
    argTypes:
    - TupleDesc
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1195
      start: 1174
    functionDepth: 2
    functionLinenumber: 1174
    functionLinenumberEnd: 1195
    functionName: SPI_fnumber
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 4
    functionsReached:
    - TupleDescAttr
    - namestrcmp
    - SystemAttributeByName
    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:1212,1
    - Dst: SystemAttributeDefinition
      Src: /src/postgres/src/backend/executor/spi.c:1214,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/executor/spi.c:1216,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/executor/spi.c:1216,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - tupdesc
    - fnumber
    argTypes:
    - TupleDesc
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1197
    functionDepth: 2
    functionLinenumber: 1197
    functionLinenumberEnd: 1217
    functionName: SPI_fname
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - TupleDescAttr
    - NameStr
    - pstrdup
    - SystemAttributeDefinition
    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:1237,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/spi.c:1242,1
    - Dst: SystemAttributeDefinition
      Src: /src/postgres/src/backend/executor/spi.c:1244,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/executor/spi.c:1246,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/executor/spi.c:1248,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - tuple
    - tupdesc
    - fnumber
    argTypes:
    - HeapTuple
    - TupleDesc
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1249
      start: 1219
    functionDepth: 4
    functionLinenumber: 1219
    functionLinenumberEnd: 1249
    functionName: SPI_getvalue
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - heap_getattr
    - getTypeOutputInfo
    - TupleDescAttr
    - OidOutputFunctionCall
    - SystemAttributeDefinition
    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:1264,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - tuple
    - tupdesc
    - fnumber
    - isnull
    argTypes:
    - HeapTuple
    - TupleDesc
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1265
      start: 1251
    functionDepth: 4
    functionLinenumber: 1251
    functionLinenumberEnd: 1265
    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:1284,1
    - Dst: SystemAttributeDefinition
      Src: /src/postgres/src/backend/executor/spi.c:1286,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/executor/spi.c:1288,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/executor/spi.c:1288,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/executor/spi.c:1290,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/executor/spi.c:1296,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/executor/spi.c:1296,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/executor/spi.c:1296,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/executor/spi.c:1297,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - tupdesc
    - fnumber
    argTypes:
    - TupleDesc
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1299
      start: 1267
    functionDepth: 2
    functionLinenumber: 1267
    functionLinenumberEnd: 1299
    functionName: SPI_gettype
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - NameStr
    - ReleaseSysCache
    - HeapTupleIsValid
    - TupleDescAttr
    - GETSTRUCT
    - pstrdup
    - SearchSysCache1
    - SystemAttributeDefinition
    - ObjectIdGetDatum
    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:1320,1
    - Dst: SystemAttributeDefinition
      Src: /src/postgres/src/backend/executor/spi.c:1322,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - tupdesc
    - fnumber
    argTypes:
    - TupleDesc
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1323
      start: 1307
    functionDepth: 2
    functionLinenumber: 1307
    functionLinenumberEnd: 1323
    functionName: SPI_gettypeid
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - TupleDescAttr
    - SystemAttributeDefinition
    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:1328,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/executor/spi.c:1328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1329
      start: 1325
    functionDepth: 1
    functionLinenumber: 1325
    functionLinenumberEnd: 1329
    functionName: SPI_getrelname
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 4
    functionsReached:
    - RelationGetRelationName
    - pstrdup
    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:1334,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/executor/spi.c:1334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1335
      start: 1331
    functionDepth: 1
    functionLinenumber: 1331
    functionLinenumberEnd: 1335
    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:1341,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/executor/spi.c:1343,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - size
    argTypes:
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1344
      start: 1337
    functionDepth: 1
    functionLinenumber: 1337
    functionLinenumberEnd: 1344
    functionName: SPI_palloc
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 1
    functionsReached:
    - MemoryContextAlloc
    - elog
    linkageType: ''
    returnType: void
    signature: 'void *

      SPI_palloc(Size size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: repalloc
      Src: /src/postgres/src/backend/executor/spi.c:1350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pointer
    - size
    argTypes:
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1351
      start: 1346
    functionDepth: 0
    functionLinenumber: 1346
    functionLinenumberEnd: 1351
    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:1357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pointer
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1358
      start: 1353
    functionDepth: 0
    functionLinenumber: 1353
    functionLinenumberEnd: 1358
    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:1367,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:1369,1
    - Dst: datumTransfer
      Src: /src/postgres/src/backend/executor/spi.c:1371,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:1373,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - value
    - typByVal
    - typLen
    argTypes:
    - Datum
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1376
      start: 1360
    functionDepth: 1
    functionLinenumber: 1360
    functionLinenumberEnd: 1376
    functionName: SPI_datumTransfer
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 2
    functionsReached:
    - datumTransfer
    - elog
    - 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:1382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tuple
    argTypes:
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1383
      start: 1378
    functionDepth: 1
    functionLinenumber: 1378
    functionLinenumberEnd: 1383
    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:1402,1
    - Dst: slist_container
      Src: /src/postgres/src/backend/executor/spi.c:1406,1
    - Dst: slist_delete_current
      Src: /src/postgres/src/backend/executor/spi.c:1409,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:1424,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/executor/spi.c:1435,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - tuptable
    argTypes:
    - SPITupleTable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1436
      start: 1385
    functionDepth: 1
    functionLinenumber: 1385
    functionLinenumberEnd: 1436
    functionName: SPI_freetuptable
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 12
    functionsReached:
    - MemoryContextDelete
    - slist_foreach_modify
    - slist_container
    - elog
    - 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:1453,1
    - Dst: SPI_cursor_open_internal
      Src: /src/postgres/src/backend/executor/spi.c:1456,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/spi.c:1460,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: 1463
      start: 1444
    functionDepth: 1
    functionLinenumber: 1444
    functionLinenumberEnd: 1463
    functionName: SPI_cursor_open
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 4
    functionsReached:
    - _SPI_convert_params
    - pfree
    - SPI_cursor_open_internal
    linkageType: ''
    returnType: Portal
    signature: "Portal SPI_cursor_open(const char *name, SPIPlanPtr plan,\n\t\t\t\tDatum
      *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:1483,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:1486,1
    - Dst: _SPI_begin_call
      Src: /src/postgres/src/backend/executor/spi.c:1488,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:1490,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/spi.c:1492,1
    - Dst: _SPI_convert_params
      Src: /src/postgres/src/backend/executor/spi.c:1502,1
    - Dst: _SPI_prepare_plan
      Src: /src/postgres/src/backend/executor/spi.c:1505,1
    - Dst: SPI_cursor_open_internal
      Src: /src/postgres/src/backend/executor/spi.c:1509,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:1512,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: 1515
      start: 1471
    functionDepth: 1
    functionLinenumber: 1471
    functionLinenumberEnd: 1515
    functionName: SPI_cursor_open_with_args
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - SPI_cursor_open_internal
    - memset
    - _SPI_convert_params
    - _SPI_begin_call
    - elog
    - _SPI_end_call
    - _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, Oid *argtypes,\n\t\t\t\t\t\t  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:1528,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: 1529
      start: 1524
    functionDepth: 1
    functionLinenumber: 1524
    functionLinenumberEnd: 1529
    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:1541,1
    - Dst: _SPI_begin_call
      Src: /src/postgres/src/backend/executor/spi.c:1543,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:1545,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/spi.c:1547,1
    - Dst: _SPI_prepare_plan
      Src: /src/postgres/src/backend/executor/spi.c:1557,1
    - Dst: SPI_cursor_open_internal
      Src: /src/postgres/src/backend/executor/spi.c:1561,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:1565,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - name
    - src
    - options
    argTypes:
    - char*
    - char*
    - SPIParseOpenOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1568
      start: 1532
    functionDepth: 1
    functionLinenumber: 1532
    functionLinenumberEnd: 1568
    functionName: SPI_cursor_parse_open
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 1
    functionsReached:
    - SPI_cursor_open_internal
    - memset
    - _SPI_begin_call
    - elog
    - _SPI_end_call
    - _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:1594,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/spi.c:1599,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/spi.c:1600,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/spi.c:1601,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/spi.c:1602,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/spi.c:1603,1
    - Dst: GetCommandTagName
      Src: /src/postgres/src/backend/executor/spi.c:1608,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/spi.c:1609,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/spi.c:1610,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/spi.c:1612,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/spi.c:1615,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/spi.c:1615,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/spi.c:1616,1
    - Dst: _SPI_begin_call
      Src: /src/postgres/src/backend/executor/spi.c:1619,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:1620,1
    - Dst: CreateNewPortal
      Src: /src/postgres/src/backend/executor/spi.c:1632,1
    - Dst: CreatePortal
      Src: /src/postgres/src/backend/executor/spi.c:1637,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/executor/spi.c:1641,1
    - Dst: GetCachedPlan
      Src: /src/postgres/src/backend/executor/spi.c:1662,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:1673,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/executor/spi.c:1674,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:1675,1
    - Dst: ReleaseCachedPlan
      Src: /src/postgres/src/backend/executor/spi.c:1676,1
    - Dst: PortalDefineQuery
      Src: /src/postgres/src/backend/executor/spi.c:1683,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/spi.c:1697,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/executor/spi.c:1698,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/executor/spi.c:1699,1
    - Dst: ExecSupportsBackwardScan
      Src: /src/postgres/src/backend/executor/spi.c:1700,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/executor/spi.c:1700,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/spi.c:1713,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/executor/spi.c:1714,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/executor/spi.c:1715,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/spi.c:1716,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/spi.c:1717,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/spi.c:1718,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/spi.c:1719,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/executor/spi.c:1738,1
    - Dst: CommandIsReadOnly
      Src: /src/postgres/src/backend/executor/spi.c:1740,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/spi.c:1741,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/spi.c:1742,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/spi.c:1744,1
    - Dst: CreateCommandName
      Src: /src/postgres/src/backend/executor/spi.c:1745,1
    - Dst: GetActiveSnapshot
      Src: /src/postgres/src/backend/executor/spi.c:1751,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/executor/spi.c:1754,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/executor/spi.c:1755,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:1765,1
    - Dst: copyParamList
      Src: /src/postgres/src/backend/executor/spi.c:1766,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:1767,1
    - Dst: PortalStart
      Src: /src/postgres/src/backend/executor/spi.c:1773,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/spi.c:1775,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:1781,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: 1785
      start: 1576
    functionDepth: 6
    functionLinenumber: 1576
    functionLinenumberEnd: 1785
    functionName: SPI_cursor_open_internal
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 4
    functionsReached:
    - MemoryContextSwitchTo
    - GetCommandTagName
    - list_length
    - PortalDefineQuery
    - errdetail
    - ExecSupportsBackwardScan
    - GetCachedPlan
    - GetTransactionSnapshot
    - ReleaseCachedPlan
    - linitial_node
    - errmsg
    - CreateNewPortal
    - CreateCommandName
    - lfirst_node
    - linitial
    - CommandCounterIncrement
    - elog
    - CreatePortal
    - SPI_is_cursor_plan
    - copyParamList
    - PortalStart
    - MemoryContextStrdup
    - Assert
    - GetActiveSnapshot
    - ereport
    - _SPI_begin_call
    - copyObject
    - _SPI_end_call
    - CommandIsReadOnly
    - errcode
    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:1738,1
    - Dst: CommandIsReadOnly
      Src: /src/postgres/src/backend/executor/spi.c:1740,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/spi.c:1741,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/spi.c:1742,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/spi.c:1744,1
    - Dst: CreateCommandName
      Src: /src/postgres/src/backend/executor/spi.c:1745,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1746
      start: 1736
    functionDepth: 2
    functionLinenumber: 1736
    functionLinenumberEnd: 1746
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 430
    functionsReached:
    - errmsg
    - CreateCommandName
    - lfirst_node
    - ereport
    - CommandIsReadOnly
    - errcode
    linkageType: ''
    returnType: void
    signature: void foreach(lc, stmt_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetPortalByName
      Src: /src/postgres/src/backend/executor/spi.c:1796,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1797
      start: 1793
    functionDepth: 1
    functionLinenumber: 1793
    functionLinenumberEnd: 1797
    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:1808,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/executor/spi.c:1810,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - portal
    - forward
    - count
    argTypes:
    - Portal
    - bool
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1812
      start: 1805
    functionDepth: 2
    functionLinenumber: 1805
    functionLinenumberEnd: 1812
    functionName: SPI_cursor_fetch
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 4
    functionsReached:
    - CreateDestReceiver
    - _SPI_cursor_operation
    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:1823,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - portal
    - forward
    - count
    argTypes:
    - Portal
    - bool
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1826
      start: 1820
    functionDepth: 1
    functionLinenumber: 1820
    functionLinenumberEnd: 1826
    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:1837,1
    - Dst: CreateDestReceiver
      Src: /src/postgres/src/backend/executor/spi.c:1839,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - portal
    - direction
    - count
    argTypes:
    - Portal
    - FetchDirection
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1841
      start: 1834
    functionDepth: 2
    functionLinenumber: 1834
    functionLinenumberEnd: 1841
    functionName: SPI_scroll_cursor_fetch
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 1
    functionsReached:
    - CreateDestReceiver
    - _SPI_cursor_operation
    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:1852,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - portal
    - direction
    - count
    argTypes:
    - Portal
    - FetchDirection
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1853
      start: 1849
    functionDepth: 1
    functionLinenumber: 1849
    functionLinenumberEnd: 1853
    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:1864,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:1865,1
    - Dst: PortalDrop
      Src: /src/postgres/src/backend/executor/spi.c:1867,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - portal
    argTypes:
    - Portal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1868
      start: 1861
    functionDepth: 1
    functionLinenumber: 1861
    functionLinenumberEnd: 1868
    functionName: SPI_cursor_close
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 8
    functionsReached:
    - PortalIsValid
    - PortalDrop
    - elog
    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: 1884
      start: 1874
    functionDepth: 0
    functionLinenumber: 1874
    functionLinenumberEnd: 1884
    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: 1898
      start: 1889
    functionDepth: 0
    functionLinenumber: 1889
    functionLinenumberEnd: 1898
    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:1920,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/spi.c:1925,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - plan
    argTypes:
    - SPIPlanPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1939
      start: 1909
    functionDepth: 1
    functionLinenumber: 1909
    functionLinenumberEnd: 1939
    functionName: SPI_is_cursor_plan
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 1
    functionsReached:
    - linitial
    - list_length
    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:1952,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/spi.c:1954,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/spi.c:1956,1
    - Dst: CachedPlanIsValid
      Src: /src/postgres/src/backend/executor/spi.c:1958,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - plan
    argTypes:
    - SPIPlanPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1962
      start: 1947
    functionDepth: 1
    functionLinenumber: 1947
    functionLinenumberEnd: 1962
    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:2042,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 67
    argCount: 1
    argNames:
    - code
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2044
      start: 1971
    functionDepth: 0
    functionLinenumber: 1971
    functionLinenumberEnd: 2044
    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:2059,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - plan
    argTypes:
    - SPIPlanPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2061
      start: 2056
    functionDepth: 1
    functionLinenumber: 2056
    functionLinenumberEnd: 2061
    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:2083,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/spi.c:2090,1
    - Dst: linitial
      Src: /src/postgres/src/backend/executor/spi.c:2092,1
    - Dst: GetCachedPlan
      Src: /src/postgres/src/backend/executor/spi.c:2103,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/spi.c:2106,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - plan
    argTypes:
    - SPIPlanPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2112
      start: 2075
    functionDepth: 1
    functionLinenumber: 2075
    functionLinenumberEnd: 2112
    functionName: SPI_plan_get_cached_plan
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 4
    functionsReached:
    - linitial
    - Assert
    - GetCachedPlan
    - list_length
    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:2130,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/spi.c:2133,1
    - Dst: _SPI_procmem
      Src: /src/postgres/src/backend/executor/spi.c:2137,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/spi.c:2139,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:2142,1
    - Dst: palloc0
      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
      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: 2122
    functionDepth: 4
    functionLinenumber: 2122
    functionLinenumberEnd: 2163
    functionName: spi_dest_startup
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - CreateTupleDescCopy
    - slist_push_head
    - GetCurrentSubTransactionId
    - palloc0
    - elog
    - AllocSetContextCreate
    - palloc
    - _SPI_procmem
    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:
    - ExecCopySlotHeapTuple
    - elog
    - MemoryContextSwitchTo
    - repalloc_huge
    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:
    - pg_analyze_and_rewrite_fixedparams
    - Assert
    - CompleteCachedPlan
    - lfirst_node
    - raw_parser
    - lappend
    - CreateCommandTag
    - CreateCachedPlan
    - pg_analyze_and_rewrite_withcb
    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: 431
    functionsReached:
    - pg_analyze_and_rewrite_fixedparams
    - Assert
    - CompleteCachedPlan
    - lfirst_node
    - lappend
    - CreateCommandTag
    - CreateCachedPlan
    - pg_analyze_and_rewrite_withcb
    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:
    - lfirst_node
    - raw_parser
    - lappend
    - CreateOneShotCachedPlan
    - CreateCommandTag
    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: 431
    functionsReached:
    - lappend
    - CreateCommandTag
    - lfirst_node
    - CreateOneShotCachedPlan
    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:
    - PlannedStmtRequiresSnapshot
    - CompleteCachedPlan
    - FreeQueryDesc
    - GetCommandTagName
    - ProcessUtility
    - IsSubTransaction
    - list_length
    - pg_analyze_and_rewrite_withcb
    - PopActiveSnapshot
    - pg_analyze_and_rewrite_fixedparams
    - GetCachedPlan
    - CreateDestReceiver
    - GetTransactionSnapshot
    - foreach
    - PushActiveSnapshot
    - PushCopiedSnapshot
    - ActiveSnapshotSet
    - ReleaseCachedPlan
    - linitial_node
    - errmsg
    - CreateCommandName
    - lfirst_node
    - CommandCounterIncrement
    - IsA
    - _SPI_pquery
    - EnsurePortalSnapshotExists
    - InitializeQueryCompletion
    - lfirst
    - Assert
    - CreateQueryDesc
    - GetActiveSnapshot
    - ereport
    - UpdateActiveSnapshotCommandId
    - SPI_freetuptable
    - CommandIsReadOnly
    - errcode
    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: 432
    functionsReached:
    - FreeQueryDesc
    - ProcessUtility
    - CreateDestReceiver
    - ActiveSnapshotSet
    - errmsg
    - CreateCommandName
    - lfirst_node
    - CommandCounterIncrement
    - IsA
    - _SPI_pquery
    - InitializeQueryCompletion
    - Assert
    - CreateQueryDesc
    - GetActiveSnapshot
    - ereport
    - UpdateActiveSnapshotCommandId
    - SPI_freetuptable
    - CommandIsReadOnly
    - errcode
    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, Oid *argtypes,\n\t\t\t\t\tDatum
      *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:
    - ResetUsage
    - ExecutorRun
    - ExecutorFinish
    - elog
    - ExecutorEnd
    - ShowUsage
    - ExecutorStart
    - _SPI_checktuples
    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
    - errposition
    - internalerrquery
    - geterrposition
    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:
    - PortalRunFetch
    - _SPI_begin_call
    - elog
    - _SPI_end_call
    - PortalIsValid
    - _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:
    - _SPI_execmem
    - GetCurrentSubTransactionId
    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
      Src: /src/postgres/src/backend/executor/spi.c:3165,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/spi.c:3173,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/spi.c:3174,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/spi.c:3187,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/spi.c:3189,1
    - Dst: CachedPlanSetParentContext
      Src: /src/postgres/src/backend/executor/spi.c:3191,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/spi.c:3194,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:3197,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 1
    argNames:
    - plan
    argTypes:
    - SPIPlanPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3203
      start: 3140
    functionDepth: 6
    functionLinenumber: 3140
    functionLinenumberEnd: 3203
    functionName: _SPI_make_plan_non_temp
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 3
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - CachedPlanSetParentContext
    - palloc0
    - foreach
    - lappend
    - AllocSetContextCreate
    - memcpy
    - palloc
    - lfirst
    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:3217,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/executor/spi.c:3224,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:3227,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/spi.c:3230,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/spi.c:3238,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/spi.c:3239,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/spi.c:3247,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/spi.c:3249,1
    - Dst: CopyCachedPlan
      Src: /src/postgres/src/backend/executor/spi.c:3252,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/spi.c:3253,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/spi.c:3256,1
    - Dst: MemoryContextSetParent
      Src: /src/postgres/src/backend/executor/spi.c:3264,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/spi.c:3266,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/spi.c:3268,1
    - Dst: SaveCachedPlan
      Src: /src/postgres/src/backend/executor/spi.c:3270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 28
    argCount: 1
    argNames:
    - plan
    argTypes:
    - SPIPlanPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3274
      start: 3208
    functionDepth: 6
    functionLinenumber: 3208
    functionLinenumberEnd: 3274
    functionName: _SPI_save_plan
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - palloc0
    - foreach
    - lappend
    - AllocSetContextCreate
    - CopyCachedPlan
    - SaveCachedPlan
    - memcpy
    - palloc
    - lfirst
    - MemoryContextSetParent
    linkageType: ''
    returnType: SPIPlanPtr
    signature: SPIPlanPtr _SPI_save_plan(SPIPlanPtr plan)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/spi.c:3283,1
    - Dst: get_ENR
      Src: /src/postgres/src/backend/executor/spi.c:3289,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3290
      start: 3279
    functionDepth: 1
    functionLinenumber: 3279
    functionLinenumberEnd: 3290
    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:3305,1
    - Dst: _SPI_find_ENR_by_name
      Src: /src/postgres/src/backend/executor/spi.c:3309,1
    - Dst: create_queryEnv
      Src: /src/postgres/src/backend/executor/spi.c:3315,1
    - Dst: register_ENR
      Src: /src/postgres/src/backend/executor/spi.c:3317,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:3321,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - enr
    argTypes:
    - EphemeralNamedRelation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3324
      start: 3296
    functionDepth: 3
    functionLinenumber: 3296
    functionLinenumberEnd: 3324
    functionName: SPI_register_relation
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - register_ENR
    - create_queryEnv
    - _SPI_begin_call
    - _SPI_find_ENR_by_name
    - _SPI_end_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:3339,1
    - Dst: _SPI_find_ENR_by_name
      Src: /src/postgres/src/backend/executor/spi.c:3343,1
    - Dst: unregister_ENR
      Src: /src/postgres/src/backend/executor/spi.c:3346,1
    - Dst: _SPI_end_call
      Src: /src/postgres/src/backend/executor/spi.c:3352,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3355
      start: 3330
    functionDepth: 3
    functionLinenumber: 3330
    functionLinenumberEnd: 3355
    functionName: SPI_unregister_relation
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 0
    functionsReached:
    - _SPI_begin_call
    - _SPI_find_ENR_by_name
    - _SPI_end_call
    - unregister_ENR
    linkageType: ''
    returnType: int
    signature: int SPI_unregister_relation(const char *name)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/spi.c:3372,1
    - Dst: tuplestore_tuple_count
      Src: /src/postgres/src/backend/executor/spi.c:3379,1
    - Dst: SPI_register_relation
      Src: /src/postgres/src/backend/executor/spi.c:3381,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/spi.c:3389,1
    - Dst: tuplestore_tuple_count
      Src: /src/postgres/src/backend/executor/spi.c:3396,1
    - Dst: SPI_register_relation
      Src: /src/postgres/src/backend/executor/spi.c:3398,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 1
    argNames:
    - tdata
    argTypes:
    - TriggerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3404
      start: 3363
    functionDepth: 4
    functionLinenumber: 3363
    functionLinenumberEnd: 3404
    functionName: SPI_register_trigger_data
    functionSourceFile: /src/postgres/src/backend/executor/spi.c
    functionUses: 5
    functionsReached:
    - palloc
    - SPI_register_relation
    - tuplestore_tuple_count
    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:
    - Assert
    - MemoryContextSwitchTo
    - ExecInitExprList
    - TupleDescCompactAttr
    - MakeExpandedObjectReadOnly
    - ReScanExprContext
    - list_length
    - ExecStoreVirtualTuple
    - ExecEvalExpr
    - ExecClearTuple
    - lfirst
    - ScanDirectionIsForward
    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: 434
    functionsReached:
    - TupleDescCompactAttr
    - ExecEvalExpr
    - lfirst
    - 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:
    - ExecScan
    - castNode
    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:
    - Assert
    - ExecInitExprList
    - ExecInitScanTupleSlot
    - ExecAssignExprContext
    - linitial
    - palloc
    - lfirst_node
    - contain_subplans
    - ExecAssignScanProjectionInfo
    - palloc0
    - list_length
    - foreach
    - ExecInitQual
    - outerPlan
    - ExecInitResultTypeTL
    - ExecTypeFromExprList
    - innerPlan
    - makeNode
    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:
    - ExecClearTuple
    - ExecScanReScan
    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: 189
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 189
    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: 191
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 191
    functionName: HJ_FILL_INNER
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HJ_FILL_INNER(hjstate)
  - BBCount: 42
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:223,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:240,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:241,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:250,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:263,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:272,1
    - Dst: HJ_FILL_INNER
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:297,1
    - Dst: HJ_FILL_OUTER
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:314,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:318,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:319,1
    - Dst: ExecHashTableCreate
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:335,1
    - Dst: MultiExecProcNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:344,1
    - Dst: HJ_FILL_OUTER
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:351,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:361,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:362,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:385,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:385,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:386,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:387,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:388,1
    - Dst: ExecParallelHashJoinPartitionOuter
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:395,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:396,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:399,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:410,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:410,1
    - Dst: ExecParallelHashJoinOuterGetTuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:428,1
    - Dst: ExecHashJoinOuterGetTuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:432,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:434,1
    - Dst: HJ_FILL_INNER
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:437,1
    - Dst: ExecParallelPrepHashTableForUnmatched
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:447,1
    - Dst: ExecPrepHashTableForUnmatched
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:454,1
    - Dst: ExecHashGetBucketAndBatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:471,1
    - Dst: ExecHashGetSkewBucket
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:473,1
    - Dst: ExecFetchSlotMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:485,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:492,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:493,1
    - Dst: ExecHashJoinSaveTuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:494,1
    - Dst: heap_free_minimal_tuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:499,1
    - Dst: ExecParallelScanHashBucket
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:517,1
    - Dst: ExecScanHashBucket
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:526,1
    - Dst: HeapTupleHeaderHasMatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:539,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:539,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:554,1
    - Dst: HeapTupleHeaderHasMatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:563,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:563,1
    - Dst: HeapTupleHeaderSetMatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:564,1
    - Dst: HJTUPLE_MINTUPLE
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:564,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:590,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:591,1
    - Dst: InstrCountFiltered2
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:593,1
    - Dst: InstrCountFiltered1
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:596,1
    - Dst: HJ_FILL_OUTER
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:609,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:617,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:618,1
    - Dst: InstrCountFiltered2
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:620,1
    - Dst: ExecParallelScanHashTableForUnmatched
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:632,1
    - Dst: ExecScanHashTableForUnmatched
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:633,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:646,1
    - Dst: ExecProject
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:647,1
    - Dst: InstrCountFiltered2
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:649,1
    - Dst: ExecParallelHashJoinNewBatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:659,1
    - Dst: ExecHashJoinNewBatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:664,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:671,1
    CyclomaticComplexity: 62
    EdgeCount: 62
    ICount: 157
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 220
    functionDepth: 5
    functionLinenumber: 220
    functionLinenumberEnd: 675
    functionName: 'TupleTableSlot *

      ExecHashJoinImpl(PlanState *pstate, bool parallel)'
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 0
    functionsReached:
    - CHECK_FOR_INTERRUPTS
    - ExecParallelHashJoinPartitionOuter
    - castNode
    - ExecParallelPrepHashTableForUnmatched
    - ExecParallelScanHashBucket
    - ExecHashJoinNewBatch
    - ExecParallelHashJoinOuterGetTuple
    - ExecScanHashBucket
    - HJ_FILL_OUTER
    - ExecFetchSlotMinimalTuple
    - ExecParallelHashJoinNewBatch
    - TupIsNull
    - ExecScanHashTableForUnmatched
    - HJ_FILL_INNER
    - InstrCountFiltered1
    - BarrierPhase
    - ExecQual
    - ExecHashTableCreate
    - innerPlanState
    - ExecHashGetBucketAndBatch
    - ExecHashJoinSaveTuple
    - ExecHashJoinOuterGetTuple
    - BarrierArriveAndWait
    - elog
    - outerPlanState
    - heap_free_minimal_tuple
    - ExecProject
    - ResetExprContext
    - Assert
    - HeapTupleHeaderSetMatch
    - ExecProcNode
    - InstrCountFiltered2
    - MultiExecProcNode
    - HeapTupleHeaderHasMatch
    - HJTUPLE_MINTUPLE
    - ExecPrepHashTableForUnmatched
    - ExecHashGetSkewBucket
    - ExecParallelScanHashTableForUnmatched
    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:690,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 683
    functionDepth: 0
    functionLinenumber: 683
    functionLinenumberEnd: 691
    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:706,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 699
    functionDepth: 0
    functionLinenumber: 699
    functionLinenumberEnd: 707
    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:726,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:731,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:748,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:757,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:758,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:760,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:760,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:761,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:761,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:762,1
    - Dst: ExecInitNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:762,1
    - Dst: ExecGetResultType
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:763,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:763,1
    - Dst: ExecInitResultTupleSlotTL
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:768,1
    - Dst: ExecAssignProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:769,1
    - Dst: ExecGetResultSlotOps
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:774,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:774,1
    - Dst: ExecInitExtraTupleSlot
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:775,1
    - Dst: ExecInitNullTupleSlot
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:794,1
    - Dst: ExecInitNullTupleSlot
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:799,1
    - Dst: ExecInitNullTupleSlot
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:803,1
    - Dst: ExecInitNullTupleSlot
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:805,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:808,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:820,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:841,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:843,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:844,1
    - Dst: palloc_array
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:845,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:851,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:853,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:854,1
    - Dst: get_op_hash_functions
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:856,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:859,1
    - Dst: op_strict
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:862,1
    - Dst: ExecBuildHash32Expr
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:874,1
    - Dst: HJ_FILL_OUTER
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:882,1
    - Dst: ExecBuildHash32Expr
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:886,1
    - Dst: HJ_FILL_INNER
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:894,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:900,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:902,1
    - Dst: linitial_oid
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:903,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:904,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:908,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:909,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:910,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:917,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:919,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:921,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 73
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - HashJoin*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 715
    functionDepth: 11
    functionLinenumber: 715
    functionLinenumberEnd: 939
    functionName: ExecInitHashJoin
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 1
    functionsReached:
    - op_strict
    - get_op_hash_functions
    - list_length
    - ExecAssignProjectionInfo
    - palloc_array
    - makeNode
    - linitial_oid
    - pfree
    - HJ_FILL_OUTER
    - ExecAssignExprContext
    - HJ_FILL_INNER
    - foreach
    - foreach_current_index
    - ExecGetResultType
    - ExecInitQual
    - innerPlanState
    - ExecGetResultSlotOps
    - ExecInitResultTupleSlotTL
    - ExecInitExtraTupleSlot
    - fmgr_info
    - ExecInitNode
    - elog
    - outerPlan
    - outerPlanState
    - OidIsValid
    - ExecInitNullTupleSlot
    - Assert
    - ExecBuildHash32Expr
    - palloc0
    - innerPlan
    - lfirst_oid
    linkageType: ''
    returnType: HashJoinState
    signature: 'HashJoinState *

      ExecInitHashJoin(HashJoin *node, EState *estate, int eflags)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecHashTableDestroy
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:955,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:962,1
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:962,1
    - Dst: ExecEndNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:963,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:963,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - HashJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 947
    functionDepth: 4
    functionLinenumber: 947
    functionLinenumberEnd: 964
    functionName: ExecEndHashJoin
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 1
    functionsReached:
    - ExecEndNode
    - ExecHashTableDestroy
    - outerPlanState
    - innerPlanState
    linkageType: ''
    returnType: void
    signature: void ExecEndHashJoin(HashJoinState *node)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:994,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:997,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:999,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1010,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1012,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1012,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1028,1
    - Dst: ExecHashJoinGetSavedTuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1042,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1046,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 3
    argNames:
    - outerNode
    - hjstate
    - hashvalue
    argTypes:
    - PlanState*
    - HashJoinState*
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1052
      start: 978
    functionDepth: 2
    functionLinenumber: 978
    functionLinenumberEnd: 1052
    functionName: ExecHashJoinOuterGetTuple
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 1
    functionsReached:
    - ResetExprContext
    - TupIsNull
    - ExecEvalExprSwitchContext
    - ExecProcNode
    - ExecHashJoinGetSavedTuple
    - 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: 5
    BranchProfiles: []
    Callsites:
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1073,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1075,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1083,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1085,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1085,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1096,1
    - Dst: sts_parallel_scan_next
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1103,1
    - Dst: ExecForceStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1107,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1114,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - outerNode
    - hjstate
    - hashvalue
    argTypes:
    - PlanState*
    - HashJoinState*
    - uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1121
      start: 1057
    functionDepth: 5
    functionLinenumber: 1057
    functionLinenumberEnd: 1121
    functionName: ExecParallelHashJoinOuterGetTuple
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 1
    functionsReached:
    - ResetExprContext
    - ExecProcNode
    - ExecEvalExprSwitchContext
    - TupIsNull
    - ExecForceStoreMinimalTuple
    - sts_parallel_scan_next
    - DatumGetUInt32
    - ExecClearTuple
    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:1149,1
    - Dst: HJ_FILL_OUTER
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1191,1
    - Dst: HJ_FILL_INNER
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1194,1
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1205,1
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1208,1
    - Dst: ExecHashTableReset
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1221,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1227,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1228,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1229,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1230,1
    - Dst: ExecHashJoinGetSavedTuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1232,1
    - Dst: ExecHashTableInsert
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1241,1
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1248,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1257,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1258,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1259,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1260,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 51
    argCount: 1
    argNames:
    - hjstate
    argTypes:
    - HashJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1264
      start: 1129
    functionDepth: 3
    functionLinenumber: 1129
    functionLinenumberEnd: 1264
    functionName: ExecHashJoinNewBatch
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 1
    functionsReached:
    - errmsg
    - ExecHashTableInsert
    - HJ_FILL_OUTER
    - ExecHashJoinGetSavedTuple
    - HJ_FILL_INNER
    - ereport
    - ExecHashTableReset
    - BufFileClose
    - BufFileSeek
    - errcode_for_file_access
    linkageType: ''
    returnType: bool
    signature: bool ExecHashJoinNewBatch(HashJoinState *hjstate)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ExecHashTableDetachBatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1285,1
    - Dst: pg_atomic_fetch_add_u32
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1294,1
    - Dst: BarrierAttach
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1308,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1313,1
    - Dst: ExecParallelHashTableAlloc
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1315,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1320,1
    - Dst: ExecParallelHashTableSetCurrentBatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1326,1
    - Dst: sts_begin_parallel_scan
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1328,1
    - Dst: sts_parallel_scan_next
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1329,1
    - Dst: ExecForceStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1332,1
    - Dst: ExecParallelHashTableInsertCurrentBatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1336,1
    - Dst: sts_end_parallel_scan
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1339,1
    - Dst: BarrierArriveAndWait
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1340,1
    - Dst: ExecParallelHashTableSetCurrentBatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1356,1
    - Dst: sts_begin_parallel_scan
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1357,1
    - Dst: ExecParallelHashTableSetCurrentBatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1374,1
    - Dst: ExecHashTableDetachBatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1376,1
    - Dst: BarrierDetach
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1385,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1391,1
    - Dst: BarrierPhase
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1392,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 46
    argCount: 1
    argNames:
    - hjstate
    argTypes:
    - HashJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1399
      start: 1270
    functionDepth: 5
    functionLinenumber: 1270
    functionLinenumberEnd: 1399
    functionName: ExecParallelHashJoinNewBatch
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 1
    functionsReached:
    - BarrierAttach
    - pg_atomic_fetch_add_u32
    - ExecParallelHashTableSetCurrentBatch
    - ExecParallelHashTableAlloc
    - BarrierArriveAndWait
    - ExecParallelHashTableInsertCurrentBatch
    - ExecForceStoreMinimalTuple
    - sts_parallel_scan_next
    - BarrierDetach
    - elog
    - BarrierPhase
    - ExecHashTableDetachBatch
    - sts_begin_parallel_scan
    - sts_end_parallel_scan
    linkageType: ''
    returnType: bool
    signature: bool ExecParallelHashJoinNewBatch(HashJoinState *hjstate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1435,1
    - Dst: BufFileCreateTemp
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1437,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1440,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1443,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1444,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - tuple
    - hashvalue
    - fileptr
    - hashtable
    argTypes:
    - MinimalTuple
    - uint32
    - BufFile**
    - HashJoinTable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1445
      start: 1413
    functionDepth: 1
    functionLinenumber: 1413
    functionLinenumberEnd: 1445
    functionName: ExecHashJoinSaveTuple
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 4
    functionsReached:
    - MemoryContextSwitchTo
    - BufFileWrite
    - BufFileCreateTemp
    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:1469,1
    - Dst: BufFileReadMaybeEOF
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1476,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1479,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1483,1
    - Dst: BufFileReadExact
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1485,1
    - Dst: ExecForceStoreMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1488,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 4
    argNames:
    - hjstate
    - file
    - hashvalue
    - tupleSlot
    argTypes:
    - HashJoinState*
    - BufFile*
    - uint32*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1490
      start: 1454
    functionDepth: 5
    functionLinenumber: 1454
    functionLinenumberEnd: 1490
    functionName: ExecHashJoinGetSavedTuple
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 2
    functionsReached:
    - BufFileReadMaybeEOF
    - CHECK_FOR_INTERRUPTS
    - ExecForceStoreMinimalTuple
    - ExecClearTuple
    - palloc
    - BufFileReadExact
    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: 8
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1496,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1497,1
    - Dst: HJ_FILL_INNER
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1518,1
    - Dst: ExecHashTableResetMatchFlags
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1519,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1538,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1540,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1545,1
    - Dst: ExecHashAccumInstrumentation
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1547,1
    - Dst: ExecHashTableDestroy
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1552,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1561,1
    - Dst: ExecReScan
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1579,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 1
    argNames:
    - node
    argTypes:
    - HashJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1580
      start: 1493
    functionDepth: 7
    functionLinenumber: 1493
    functionLinenumberEnd: 1580
    functionName: ExecReScanHashJoin
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 1
    functionsReached:
    - Assert
    - ExecHashAccumInstrumentation
    - ExecHashTableResetMatchFlags
    - HJ_FILL_INNER
    - palloc0
    - castNode
    - outerPlanState
    - ExecReScan
    - innerPlanState
    - ExecHashTableDestroy
    linkageType: ''
    returnType: void
    signature: void ExecReScanHashJoin(HashJoinState *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ExecHashTableDetachBatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1592,1
    - Dst: ExecHashTableDetach
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1593,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - HashJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1595
      start: 1582
    functionDepth: 2
    functionLinenumber: 1582
    functionLinenumberEnd: 1595
    functionName: ExecShutdownHashJoin
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 1
    functionsReached:
    - ExecHashTableDetachBatch
    - ExecHashTableDetach
    linkageType: ''
    returnType: void
    signature: void ExecShutdownHashJoin(HashJoinState *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: outerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1600,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1607,1
    - Dst: ExecProcNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1614,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1615,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1619,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1621,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1621,1
    - Dst: ExecFetchSlotMinimalTuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1630,1
    - Dst: ExecHashGetBucketAndBatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1632,1
    - Dst: sts_puttuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1634,1
    - Dst: heap_free_minimal_tuple
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1638,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1640,1
    - Dst: sts_end_write
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1645,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - hjstate
    argTypes:
    - HashJoinState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1646
      start: 1597
    functionDepth: 2
    functionLinenumber: 1597
    functionLinenumberEnd: 1646
    functionName: ExecParallelHashJoinPartitionOuter
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 1
    functionsReached:
    - ResetExprContext
    - Assert
    - ExecFetchSlotMinimalTuple
    - sts_end_write
    - ExecProcNode
    - TupIsNull
    - ExecEvalExprSwitchContext
    - CHECK_FOR_INTERRUPTS
    - DatumGetUInt32
    - sts_puttuple
    - outerPlanState
    - ExecHashGetBucketAndBatch
    - heap_free_minimal_tuple
    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:1651,1
    - Dst: shm_toc_estimate_keys
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1652,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - pcxt
    argTypes:
    - HashJoinState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1653
      start: 1648
    functionDepth: 1
    functionLinenumber: 1648
    functionLinenumberEnd: 1653
    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:1669,1
    - Dst: shm_toc_allocate
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1675,1
    - Dst: shm_toc_insert
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1676,1
    - Dst: pg_atomic_init_u32
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1690,1
    - Dst: LWLockInitialize
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1693,1
    - Dst: BarrierInit
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1695,1
    - Dst: BarrierInit
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1696,1
    - Dst: BarrierInit
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1697,1
    - Dst: SharedFileSetInit
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1700,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1703,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 2
    argNames:
    - state
    - pcxt
    argTypes:
    - HashJoinState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1705
      start: 1655
    functionDepth: 2
    functionLinenumber: 1655
    functionLinenumberEnd: 1705
    functionName: ExecHashJoinInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 1
    functionsReached:
    - LWLockInitialize
    - shm_toc_insert
    - SharedFileSetInit
    - pg_atomic_init_u32
    - BarrierInit
    - innerPlanState
    - ExecSetExecProcNode
    - shm_toc_allocate
    linkageType: ''
    returnType: void
    signature: void ExecHashJoinInitializeDSM(HashJoinState *state, ParallelContext
      *pcxt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: shm_toc_lookup
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1723,1
    - Dst: ExecHashTableDetachBatch
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1740,1
    - Dst: ExecHashTableDetach
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1741,1
    - Dst: SharedFileSetDeleteAll
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1745,1
    - Dst: BarrierInit
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1748,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - state
    - pcxt
    argTypes:
    - HashJoinState*
    - ParallelContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1749
      start: 1713
    functionDepth: 2
    functionLinenumber: 1713
    functionLinenumberEnd: 1749
    functionName: ExecHashJoinReInitializeDSM
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 1
    functionsReached:
    - SharedFileSetDeleteAll
    - shm_toc_lookup
    - ExecHashTableDetach
    - BarrierInit
    - ExecHashTableDetachBatch
    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:1758,1
    - Dst: SharedFileSetAttach
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1761,1
    - Dst: innerPlanState
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1764,1
    - Dst: ExecSetExecProcNode
      Src: /src/postgres/src/backend/executor/nodeHashjoin.c:1767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - state
    - pwcxt
    argTypes:
    - HashJoinState*
    - ParallelWorkerContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1768
      start: 1751
    functionDepth: 1
    functionLinenumber: 1751
    functionLinenumberEnd: 1768
    functionName: ExecHashJoinInitializeWorker
    functionSourceFile: /src/postgres/src/backend/executor/nodeHashjoin.c
    functionUses: 1
    functionsReached:
    - innerPlanState
    - ExecSetExecProcNode
    - shm_toc_lookup
    - SharedFileSetAttach
    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:36,1
    - Dst: ScanDirectionIsForward
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:36,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:42,1
    - Dst: tuplestore_gettupleslot
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - NamedTuplestoreScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 45
    functionName: NamedTuplestoreScanNext
    functionSourceFile: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c
    functionUses: 0
    functionsReached:
    - tuplestore_gettupleslot
    - Assert
    - 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: 56
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 56
    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:69,1
    - Dst: ExecScan
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pstate
    argTypes:
    - PlanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 74
    functionName: ExecNamedTuplestoreScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c
    functionUses: 0
    functionsReached:
    - ExecScan
    - castNode
    linkageType: ''
    returnType: TupleTableSlot
    signature: 'TupleTableSlot *

      ExecNamedTuplestoreScan(PlanState *pstate)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:88,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:93,1
    - Dst: outerPlan
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:93,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:94,1
    - Dst: innerPlan
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:94,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:99,1
    - Dst: get_ENR
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:104,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:106,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:109,1
    - Dst: ENRMetadataGetTupDesc
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:111,1
    - Dst: tuplestore_alloc_read_pointer
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:113,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:119,1
    - Dst: tuplestore_rescan
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:120,1
    - Dst: ExecAssignExprContext
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:134,1
    - Dst: ExecInitScanTupleSlot
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:139,1
    - Dst: ExecInitResultTypeTL
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:145,1
    - Dst: ExecAssignScanProjectionInfo
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:146,1
    - Dst: ExecInitQual
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:152,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 3
    argNames:
    - node
    - estate
    - eflags
    argTypes:
    - NamedTuplestoreScan*
    - EState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 81
    functionDepth: 9
    functionLinenumber: 81
    functionLinenumberEnd: 155
    functionName: ExecInitNamedTuplestoreScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c
    functionUses: 1
    functionsReached:
    - Assert
    - get_ENR
    - tuplestore_alloc_read_pointer
    - ExecInitScanTupleSlot
    - ExecAssignExprContext
    - ENRMetadataGetTupDesc
    - elog
    - ExecInitQual
    - outerPlan
    - ExecInitResultTypeTL
    - ExecAssignScanProjectionInfo
    - tuplestore_rescan
    - innerPlan
    - makeNode
    - tuplestore_select_read_pointer
    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:169,1
    - Dst: ExecScanReScan
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:171,1
    - Dst: tuplestore_select_read_pointer
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:176,1
    - Dst: tuplestore_rescan
      Src: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - NamedTuplestoreScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 163
    functionDepth: 4
    functionLinenumber: 163
    functionLinenumberEnd: 178
    functionName: ExecReScanNamedTuplestoreScan
    functionSourceFile: /src/postgres/src/backend/executor/nodeNamedtuplestorescan.c
    functionUses: 1
    functionsReached:
    - ExecClearTuple
    - tuplestore_rescan
    - ExecScanReScan
    - tuplestore_select_read_pointer
    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: 131
    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:
    - ExecQualAndReset
    - Assert
    - CHECK_FOR_INTERRUPTS
    - ExecProcNode
    - TupIsNull
    - castNode
    - elog
    - outerPlanState
    - ExecCopySlot
    - recompute_limits
    - ScanDirectionIsForward
    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:
    - errmsg
    - compute_tuples_needed
    - ExecEvalExprSwitchContext
    - ereport
    - DatumGetInt64
    - ExecSetTupleBound
    - outerPlanState
    - errcode
    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:
    - Assert
    - ExecGetResultSlotOps
    - ExecAssignExprContext
    - execTuplesMatchPrepare
    - ExecInitExtraTupleSlot
    - ExecInitNode
    - ExecGetResultType
    - outerPlan
    - outerPlanState
    - ExecInitResultTypeTL
    - makeNode
    - ExecInitExpr
    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:
    - ExecEndNode
    - outerPlanState
    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:
    - recompute_limits
    - outerPlanState
    - ExecReScan
    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: 119
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 119
    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: 120
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 120
    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: 121
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 121
    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: 125
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 125
    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: 126
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 126
    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: 127
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 127
    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: 128
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 128
    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: 136
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 136
    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: 142
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 142
    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: 231
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 231
    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: 232
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 232
    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: 235
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 235
    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:245,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:248,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:249,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:269,1
    - Dst: EEO_OPCODE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:440,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 102
    argCount: 1
    argNames:
    - state
    argTypes:
    - ExprState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 447
    functionName: ExecReadyInterpretedExpr
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 1
    functionsReached:
    - ExecInitInterpreter
    - EEO_OPCODE
    - Assert
    linkageType: ''
    returnType: void
    signature: void ExecReadyInterpretedExpr(ExprState *state)
  - BBCount: 62
    BranchProfiles: []
    Callsites:
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/backend/executor/execExprInterp.c:598,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/executor/execExprInterp.c:598,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:601,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:602,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:604,1
    - Dst: EEO_DISPATCH
      Src: /src/postgres/src/backend/executor/execExprInterp.c:617,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:630,1
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:636,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:638,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:640,1
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:645,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:647,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:649,1
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:654,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:656,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:658,1
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:663,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:665,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:667,1
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:672,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:674,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:676,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:689,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:693,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:702,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:706,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:715,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:719,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:728,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:732,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:741,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:745,1
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:750,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:751,1
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:756,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:757,1
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:762,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:763,1
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:768,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:769,1
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:774,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:775,1
    - Dst: ExecEvalWholeRowVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:781,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:783,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:795,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:796,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:800,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:812,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:813,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:817,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:829,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:830,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:834,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:846,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:847,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:851,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:863,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:864,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:868,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:875,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:879,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:886,1
    - Dst: MakeExpandedObjectReadOnlyInternal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:890,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:894,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:902,1
    - Dst: ExprEvalStep*::d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:926,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:930,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:941,1
    - Dst: ExprEvalStep*::d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:953,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:958,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:967,1
    - Dst: ExprEvalStep*::d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:977,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:982,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:991,1
    - Dst: ExprEvalStep*::d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1001,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1006,1
    - Dst: ExecEvalFuncExprFusage
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1012,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1014,1
    - Dst: ExecEvalFuncExprStrictFusage
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1020,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1022,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1053,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1057,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1060,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1069,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1089,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1120,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1124,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1127,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1136,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1156,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1167,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1167,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1169,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1178,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1182,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1183,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1191,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1197,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1204,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1206,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1213,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1215,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1221,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1222,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1224,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1229,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1232,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1237,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1240,1
    - Dst: ExecEvalRowNull
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1246,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1248,1
    - Dst: ExecEvalRowNotNull
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1254,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1256,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1265,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1270,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1277,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1281,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1281,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1283,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1290,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1294,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1294,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1296,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1303,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1308,1
    - Dst: ExecEvalParamExec
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1314,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1316,1
    - Dst: ExecEvalParamExtern
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1322,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1323,1
    - Dst: ExprEvalStep*::d::cparam::paramfunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1329,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1330,1
    - Dst: ExecEvalParamSet
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1336,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1337,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1345,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1353,1
    - Dst: MakeExpandedObjectReadOnlyInternal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1363,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1366,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1396,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1396,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1399,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1409,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1414,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1420,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1421,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1425,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1426,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1430,1
    - Dst: ExecEvalCoerceViaIOSafe
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1435,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1436,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1456,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1462,1
    - Dst: ExprEvalStep*::d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1471,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1473,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1473,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1477,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1487,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1492,1
    - Dst: ExprEvalStep*::d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1500,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1505,1
    - Dst: MakeExpandedObjectReadOnlyInternal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1530,1
    - Dst: ExprEvalStep*::d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1533,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1536,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1541,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1549,1
    - Dst: ExecEvalSQLValueFunction
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1558,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1560,1
    - Dst: ExecEvalCurrentOfExpr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1566,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1568,1
    - Dst: ExecEvalNextValueExpr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1577,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1579,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1593,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1596,1
    - Dst: ExecEvalArrayExpr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1602,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1604,1
    - Dst: ExecEvalArrayCoerce
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1610,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1612,1
    - Dst: ExecEvalRow
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1618,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1620,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1633,1
    - Dst: ExprEvalStep*::d::rowcompare_step::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1638,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1645,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1650,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1652,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1655,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1660,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1668,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1671,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1674,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1677,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1680,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1684,1
    - Dst: ExecEvalMinMax
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1690,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1692,1
    - Dst: ExecEvalFieldSelect
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1698,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1700,1
    - Dst: ExecEvalFieldStoreDeForm
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1706,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1708,1
    - Dst: ExecEvalFieldStoreForm
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1714,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1716,1
    - Dst: ExprEvalStep*::d::sbsref_subscript::subscriptfunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1722,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1724,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1729,1
    - Dst: EEO_CASE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1733,1
    - Dst: EEO_CASE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1734,1
    - Dst: ExprEvalStep*::d::sbsref::subscriptfunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1738,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1740,1
    - Dst: ExecEvalConvertRowtype
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1746,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1748,1
    - Dst: ExecEvalScalarArrayOp
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1754,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1756,1
    - Dst: ExecEvalHashedScalarArrayOp
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1762,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1764,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1772,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1780,1
    - Dst: ExecEvalConstraintNotNull
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1786,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1788,1
    - Dst: ExecEvalConstraintCheck
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1794,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1796,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1804,1
    - Dst: ExprEvalStep*::d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1816,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1822,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1838,1
    - Dst: ExprEvalStep*::d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1842,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1845,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1853,1
    - Dst: pg_rotate_left32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1855,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1863,1
    - Dst: ExprEvalStep*::d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1863,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1867,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1870,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1886,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1893,1
    - Dst: pg_rotate_left32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1895,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1898,1
    - Dst: ExprEvalStep*::d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1898,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1899,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1903,1
    - Dst: ExecEvalXmlExpr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1909,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1911,1
    - Dst: ExecEvalJsonConstructor
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1917,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1918,1
    - Dst: ExecEvalJsonIsPredicate
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1924,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1926,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1932,1
    - Dst: ExecEvalJsonExprPath
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1932,1
    - Dst: ExecEvalJsonCoercion
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1938,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1940,1
    - Dst: ExecEvalJsonCoercionFinish
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1946,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1948,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1959,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1964,1
    - Dst: ExecEvalGroupingFunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1970,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1972,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1982,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1987,1
    - Dst: ExecEvalMergeSupportFunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1993,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1995,1
    - Dst: ExecEvalSubPlan
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2001,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2003,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2011,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2020,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2027,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2029,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2031,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2033,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2047,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2052,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2054,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2063,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2066,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2067,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2078,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2080,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2089,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2094,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2096,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2113,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2118,1
    - Dst: ExecAggInitGroup
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2123,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2127,1
    - Dst: ExecAggPlainTransByVal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2130,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2135,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2141,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2146,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2148,1
    - Dst: ExecAggPlainTransByVal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2149,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2153,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2159,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2164,1
    - Dst: ExecAggPlainTransByVal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2166,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2170,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2176,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2181,1
    - Dst: ExecAggInitGroup
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2184,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2186,1
    - Dst: ExecAggPlainTransByRef
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2187,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2191,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2197,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2202,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2204,1
    - Dst: ExecAggPlainTransByRef
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2205,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2208,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2214,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2219,1
    - Dst: ExecAggPlainTransByRef
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2221,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2225,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2231,1
    - Dst: ExecEvalPreOrderedDistinctSingle
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2233,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2234,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2236,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2241,1
    - Dst: ExecEvalPreOrderedDistinctMulti
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2244,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2245,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2247,1
    - Dst: ExecEvalAggOrderedTransDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2254,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2256,1
    - Dst: ExecEvalAggOrderedTransTuple
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2263,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2265,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2271,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2277,1
    CyclomaticComplexity: 96
    EdgeCount: 96
    ICount: 657
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2279
      start: 459
    functionDepth: 2
    functionLinenumber: 459
    functionLinenumberEnd: 2279
    functionName: ExecInterpExpr
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - lengthof
    - MakeExpandedObjectReadOnlyInternal
    - ExecEvalRowNull
    - BoolGetDatum
    - ExecEvalJsonExprPath
    - ExecEvalGroupingFunc
    - pg_unreachable
    - castNode
    - ExecEvalArrayExpr
    - ExecEvalFieldStoreForm
    - ExecEvalFieldSelect
    - ExecEvalWholeRowVar
    - ExprEvalStep*::d::sbsref::subscriptfunc
    - ExecEvalSubPlan
    - StaticAssertDecl
    - ExecAggPlainTransByVal
    - EEO_CASE
    - ExecEvalConvertRowtype
    - ExecEvalRowNotNull
    - ExecEvalJsonConstructor
    - ExecEvalJsonCoercionFinish
    - ExecAggPlainTransByRef
    - DatumGetCString
    - ExecEvalArrayCoerce
    - ExecEvalRow
    - ExecEvalSysVar
    - ExecEvalConstraintNotNull
    - ExecEvalCoerceViaIOSafe
    - ExecEvalHashedScalarArrayOp
    - EEO_JUMP
    - ExecEvalFuncExprStrictFusage
    - ExecEvalCurrentOfExpr
    - ExecEvalParamExtern
    - DatumGetUInt32
    - ExecEvalPreOrderedDistinctMulti
    - EEO_DISPATCH
    - ExprEvalStep*::d::rowcompare_step::fn_addr
    - ExecEvalJsonCoercion
    - CheckOpSlotCompatibility
    - ExecEvalParamExec
    - FunctionCallInvoke
    - ExecEvalPreOrderedDistinctSingle
    - likely
    - slot_getsomeattrs
    - ExecAggInitGroup
    - DatumGetInt32
    - ExprEvalStep*::d::cparam::paramfunc
    - ExprEvalStep*::d::sbsref_subscript::subscriptfunc
    - ExecEvalScalarArrayOp
    - ExecEvalFuncExprFusage
    - pg_rotate_left32
    - EEO_NEXT
    - ExecEvalJsonIsPredicate
    - ExecEvalConstraintCheck
    - ExecEvalMinMax
    - Assert
    - ExprEvalStep*::d::func::fn_addr
    - ExecEvalParamSet
    - ExecEvalSQLValueFunction
    - UInt32GetDatum
    - ExecEvalNextValueExpr
    - PointerGetDatum
    - ExecEvalAggOrderedTransTuple
    - ExecEvalMergeSupportFunc
    - unlikely
    - ExecEvalAggOrderedTransDatum
    - DatumGetBool
    - ExprEvalStep*::d::hashdatum::fn_addr
    - ExecEvalXmlExpr
    - ExecEvalFieldStoreDeForm
    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:630,1
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:636,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:638,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:640,1
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:645,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:647,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:649,1
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:654,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:656,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:658,1
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:663,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:665,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:667,1
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:672,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:674,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:676,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:689,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:693,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:702,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:706,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:715,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:719,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:728,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:732,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:741,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:745,1
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:750,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:751,1
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:756,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:757,1
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:762,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:763,1
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:768,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:769,1
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:774,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:775,1
    - Dst: ExecEvalWholeRowVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:781,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:783,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:795,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:796,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:800,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:812,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:813,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:817,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:829,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:830,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:834,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:846,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:847,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:851,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:863,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:864,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:868,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:875,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:879,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:886,1
    - Dst: MakeExpandedObjectReadOnlyInternal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:890,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:894,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:902,1
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:926,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:930,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:941,1
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:953,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:958,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:967,1
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:977,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:982,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:991,1
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1001,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1006,1
    - Dst: ExecEvalFuncExprFusage
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1012,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1014,1
    - Dst: ExecEvalFuncExprStrictFusage
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1020,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1022,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1053,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1057,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1060,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1069,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1089,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1120,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1124,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1127,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1136,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1156,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1167,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1167,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1169,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1178,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1182,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1183,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1191,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1197,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1204,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1206,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1213,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1215,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1221,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1222,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1224,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1229,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1232,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1237,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1240,1
    - Dst: ExecEvalRowNull
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1246,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1248,1
    - Dst: ExecEvalRowNotNull
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1254,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1256,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1265,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1270,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1277,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1281,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1281,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1283,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1290,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1294,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1294,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1296,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1303,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1308,1
    - Dst: ExecEvalParamExec
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1314,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1316,1
    - Dst: ExecEvalParamExtern
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1322,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1323,1
    - Dst: d::cparam::paramfunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1329,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1330,1
    - Dst: ExecEvalParamSet
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1336,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1337,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1345,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1353,1
    - Dst: MakeExpandedObjectReadOnlyInternal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1363,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1366,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1396,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1396,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1399,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1409,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1414,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1420,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1421,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1425,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1426,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1430,1
    - Dst: ExecEvalCoerceViaIOSafe
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1435,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1436,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1456,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1462,1
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1471,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1473,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1473,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1477,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1487,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1492,1
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1500,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1505,1
    - Dst: MakeExpandedObjectReadOnlyInternal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1530,1
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1533,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1536,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1541,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1549,1
    - Dst: ExecEvalSQLValueFunction
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1558,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1560,1
    - Dst: ExecEvalCurrentOfExpr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1566,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1568,1
    - Dst: ExecEvalNextValueExpr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1577,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1579,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1593,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1596,1
    - Dst: ExecEvalArrayExpr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1602,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1604,1
    - Dst: ExecEvalArrayCoerce
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1610,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1612,1
    - Dst: ExecEvalRow
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1618,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1620,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1633,1
    - Dst: d::rowcompare_step::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1638,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1645,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1650,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1652,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1655,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1660,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1668,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1671,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1674,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1677,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1680,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1684,1
    - Dst: ExecEvalMinMax
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1690,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1692,1
    - Dst: ExecEvalFieldSelect
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1698,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1700,1
    - Dst: ExecEvalFieldStoreDeForm
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1706,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1708,1
    - Dst: ExecEvalFieldStoreForm
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1714,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1716,1
    - Dst: d::sbsref_subscript::subscriptfunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1722,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1724,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1729,1
    - Dst: EEO_CASE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1733,1
    - Dst: EEO_CASE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1734,1
    - Dst: d::sbsref::subscriptfunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1738,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1740,1
    - Dst: ExecEvalConvertRowtype
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1746,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1748,1
    - Dst: ExecEvalScalarArrayOp
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1754,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1756,1
    - Dst: ExecEvalHashedScalarArrayOp
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1762,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1764,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1772,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1780,1
    - Dst: ExecEvalConstraintNotNull
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1786,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1788,1
    - Dst: ExecEvalConstraintCheck
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1794,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1796,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1804,1
    - Dst: d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1816,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1822,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1838,1
    - Dst: d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1842,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1845,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1853,1
    - Dst: pg_rotate_left32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1855,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1863,1
    - Dst: d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1863,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1867,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1870,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1886,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1893,1
    - Dst: pg_rotate_left32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1895,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1898,1
    - Dst: d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1898,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1899,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1903,1
    - Dst: ExecEvalXmlExpr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1909,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1911,1
    - Dst: ExecEvalJsonConstructor
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1917,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1918,1
    - Dst: ExecEvalJsonIsPredicate
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1924,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1926,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1932,1
    - Dst: ExecEvalJsonExprPath
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1932,1
    - Dst: ExecEvalJsonCoercion
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1938,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1940,1
    - Dst: ExecEvalJsonCoercionFinish
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1946,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1948,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1959,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1964,1
    - Dst: ExecEvalGroupingFunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1970,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1972,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1982,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1987,1
    - Dst: ExecEvalMergeSupportFunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1993,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1995,1
    - Dst: ExecEvalSubPlan
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2001,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2003,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2011,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2020,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2027,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2029,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2031,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2033,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2047,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2052,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2054,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2063,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2066,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2067,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2078,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2080,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2089,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2094,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2096,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2113,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2118,1
    - Dst: ExecAggInitGroup
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2123,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2127,1
    - Dst: ExecAggPlainTransByVal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2130,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2135,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2141,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2146,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2148,1
    - Dst: ExecAggPlainTransByVal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2149,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2153,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2159,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2164,1
    - Dst: ExecAggPlainTransByVal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2166,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2170,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2176,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2181,1
    - Dst: ExecAggInitGroup
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2184,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2186,1
    - Dst: ExecAggPlainTransByRef
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2187,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2191,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2197,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2202,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2204,1
    - Dst: ExecAggPlainTransByRef
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2205,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2208,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2214,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2219,1
    - Dst: ExecAggPlainTransByRef
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2221,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2225,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2231,1
    - Dst: ExecEvalPreOrderedDistinctSingle
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2233,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2234,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2236,1
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2241,1
    - Dst: ExecEvalPreOrderedDistinctMulti
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2244,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2245,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2247,1
    - Dst: ExecEvalAggOrderedTransDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2254,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2256,1
    - Dst: ExecEvalAggOrderedTransTuple
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2263,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2265,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2271,1
    CyclomaticComplexity: 95
    EdgeCount: 95
    ICount: 640
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2274
      start: 620
    functionDepth: 2
    functionLinenumber: 620
    functionLinenumberEnd: 2274
    functionName: EEO_SWITCH
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - ExecEvalRowNull
    - MakeExpandedObjectReadOnlyInternal
    - BoolGetDatum
    - ExecEvalJsonExprPath
    - ExecEvalGroupingFunc
    - castNode
    - d::func::fn_addr
    - ExecEvalArrayExpr
    - ExecEvalFieldStoreForm
    - ExecEvalFieldSelect
    - d::cparam::paramfunc
    - ExecEvalWholeRowVar
    - ExecEvalSubPlan
    - ExecAggPlainTransByVal
    - EEO_CASE
    - ExecEvalConvertRowtype
    - ExecEvalRowNotNull
    - ExecEvalJsonConstructor
    - ExecEvalJsonCoercionFinish
    - ExecAggPlainTransByRef
    - DatumGetCString
    - ExecEvalArrayCoerce
    - ExecEvalRow
    - ExecEvalSysVar
    - d::sbsref_subscript::subscriptfunc
    - ExecEvalCoerceViaIOSafe
    - ExecEvalHashedScalarArrayOp
    - EEO_JUMP
    - ExecEvalFuncExprStrictFusage
    - ExecEvalCurrentOfExpr
    - ExecEvalConstraintNotNull
    - ExecEvalParamExtern
    - d::sbsref::subscriptfunc
    - DatumGetUInt32
    - ExecEvalPreOrderedDistinctMulti
    - ExecEvalJsonCoercion
    - CheckOpSlotCompatibility
    - ExecEvalParamExec
    - FunctionCallInvoke
    - ExecEvalPreOrderedDistinctSingle
    - likely
    - slot_getsomeattrs
    - ExecAggInitGroup
    - DatumGetInt32
    - ExecEvalScalarArrayOp
    - ExecEvalFuncExprFusage
    - d::rowcompare_step::fn_addr
    - d::hashdatum::fn_addr
    - pg_rotate_left32
    - EEO_NEXT
    - ExecEvalJsonIsPredicate
    - ExecEvalConstraintCheck
    - ExecEvalMinMax
    - Assert
    - ExecEvalParamSet
    - ExecEvalSQLValueFunction
    - UInt32GetDatum
    - ExecEvalNextValueExpr
    - PointerGetDatum
    - ExecEvalAggOrderedTransTuple
    - ExecEvalAggOrderedTransDatum
    - DatumGetBool
    - ExecEvalMergeSupportFunc
    - ExecEvalXmlExpr
    - ExecEvalFieldStoreDeForm
    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: 626
      start: 622
    functionDepth: 0
    functionLinenumber: 622
    functionLinenumberEnd: 626
    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:630,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 628
    functionDepth: 1
    functionLinenumber: 628
    functionLinenumberEnd: 632
    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:636,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:638,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:640,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 634
    functionDepth: 2
    functionLinenumber: 634
    functionLinenumberEnd: 641
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - slot_getsomeattrs
    - EEO_NEXT
    - CheckOpSlotCompatibility
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_INNER_FETCHSOME)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:645,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:647,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:649,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 643
    functionDepth: 2
    functionLinenumber: 643
    functionLinenumberEnd: 650
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - slot_getsomeattrs
    - EEO_NEXT
    - CheckOpSlotCompatibility
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_OUTER_FETCHSOME)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:654,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:656,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:658,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 652
    functionDepth: 2
    functionLinenumber: 652
    functionLinenumberEnd: 659
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - slot_getsomeattrs
    - EEO_NEXT
    - CheckOpSlotCompatibility
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_SCAN_FETCHSOME)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:663,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:665,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:667,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 661
    functionDepth: 2
    functionLinenumber: 661
    functionLinenumberEnd: 668
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - slot_getsomeattrs
    - EEO_NEXT
    - CheckOpSlotCompatibility
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_OLD_FETCHSOME)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CheckOpSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:672,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:674,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:676,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 670
    functionDepth: 2
    functionLinenumber: 670
    functionLinenumberEnd: 677
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - slot_getsomeattrs
    - EEO_NEXT
    - CheckOpSlotCompatibility
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_NEW_FETCHSOME)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:689,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:693,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 679
    functionDepth: 1
    functionLinenumber: 679
    functionLinenumberEnd: 694
    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:702,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:706,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 696
    functionDepth: 1
    functionLinenumber: 696
    functionLinenumberEnd: 707
    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:715,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:719,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 709
    functionDepth: 1
    functionLinenumber: 709
    functionLinenumberEnd: 720
    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:728,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:732,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 722
    functionDepth: 1
    functionLinenumber: 722
    functionLinenumberEnd: 733
    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:741,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:745,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 735
    functionDepth: 1
    functionLinenumber: 735
    functionLinenumberEnd: 746
    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:750,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:751,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 748
    functionDepth: 1
    functionLinenumber: 748
    functionLinenumberEnd: 752
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalSysVar
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_INNER_SYSVAR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:756,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:757,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 754
    functionDepth: 1
    functionLinenumber: 754
    functionLinenumberEnd: 758
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalSysVar
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_OUTER_SYSVAR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:762,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:763,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 760
    functionDepth: 1
    functionLinenumber: 760
    functionLinenumberEnd: 764
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalSysVar
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_SCAN_SYSVAR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:768,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:769,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 766
    functionDepth: 1
    functionLinenumber: 766
    functionLinenumberEnd: 770
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalSysVar
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_OLD_SYSVAR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalSysVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:774,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:775,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 776
      start: 772
    functionDepth: 1
    functionLinenumber: 772
    functionLinenumberEnd: 776
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalSysVar
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_NEW_SYSVAR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalWholeRowVar
      Src: /src/postgres/src/backend/executor/execExprInterp.c:781,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:783,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 778
    functionDepth: 1
    functionLinenumber: 778
    functionLinenumberEnd: 784
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalWholeRowVar
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_WHOLEROW)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:795,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:796,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:800,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 786
    functionDepth: 1
    functionLinenumber: 786
    functionLinenumberEnd: 801
    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:812,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:813,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:817,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 803
    functionDepth: 1
    functionLinenumber: 803
    functionLinenumberEnd: 818
    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:829,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:830,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:834,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 835
      start: 820
    functionDepth: 1
    functionLinenumber: 820
    functionLinenumberEnd: 835
    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:846,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:847,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:851,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 852
      start: 837
    functionDepth: 1
    functionLinenumber: 837
    functionLinenumberEnd: 852
    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:863,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:864,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:868,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 854
    functionDepth: 1
    functionLinenumber: 854
    functionLinenumberEnd: 869
    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:875,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:879,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 880
      start: 871
    functionDepth: 1
    functionLinenumber: 871
    functionLinenumberEnd: 880
    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:886,1
    - Dst: MakeExpandedObjectReadOnlyInternal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:890,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:894,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 882
    functionDepth: 1
    functionLinenumber: 882
    functionLinenumberEnd: 895
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - EEO_NEXT
    - MakeExpandedObjectReadOnlyInternal
    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:902,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 897
    functionDepth: 1
    functionLinenumber: 897
    functionLinenumberEnd: 903
    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:926,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:930,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 920
    functionDepth: 1
    functionLinenumber: 920
    functionLinenumberEnd: 931
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - d::func::fn_addr
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_FUNCEXPR)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:941,1
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:953,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:958,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 934
    functionDepth: 1
    functionLinenumber: 934
    functionLinenumberEnd: 959
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - d::func::fn_addr
    - Assert
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_FUNCEXPR_STRICT)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:967,1
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:977,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:982,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 962
    functionDepth: 1
    functionLinenumber: 962
    functionLinenumberEnd: 983
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - d::func::fn_addr
    - Assert
    - EEO_NEXT
    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:991,1
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1001,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1006,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1007
      start: 986
    functionDepth: 1
    functionLinenumber: 986
    functionLinenumberEnd: 1007
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - d::func::fn_addr
    - Assert
    - EEO_NEXT
    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:1012,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1014,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 1009
    functionDepth: 1
    functionLinenumber: 1009
    functionLinenumberEnd: 1015
    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:1020,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1022,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 1017
    functionDepth: 1
    functionLinenumber: 1017
    functionLinenumberEnd: 1023
    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: 1045
      start: 1035
    functionDepth: 0
    functionLinenumber: 1035
    functionLinenumberEnd: 1045
    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:1053,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1057,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1060,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 1047
    functionDepth: 1
    functionLinenumber: 1047
    functionLinenumberEnd: 1061
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - DatumGetBool
    - EEO_NEXT
    - EEO_JUMP
    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:1069,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1089,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 1063
    functionDepth: 1
    functionLinenumber: 1063
    functionLinenumberEnd: 1090
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - DatumGetBool
    - EEO_NEXT
    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: 1112
      start: 1102
    functionDepth: 0
    functionLinenumber: 1102
    functionLinenumberEnd: 1112
    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:1120,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1124,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1128
      start: 1114
    functionDepth: 1
    functionLinenumber: 1114
    functionLinenumberEnd: 1128
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - DatumGetBool
    - EEO_NEXT
    - EEO_JUMP
    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:1136,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1156,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1157
      start: 1130
    functionDepth: 1
    functionLinenumber: 1130
    functionLinenumberEnd: 1157
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - DatumGetBool
    - EEO_NEXT
    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:1167,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1167,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1170
      start: 1159
    functionDepth: 1
    functionLinenumber: 1159
    functionLinenumberEnd: 1170
    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:1178,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1182,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1183,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1191,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1192
      start: 1172
    functionDepth: 1
    functionLinenumber: 1172
    functionLinenumberEnd: 1192
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - DatumGetBool
    - BoolGetDatum
    - EEO_NEXT
    - EEO_JUMP
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_QUAL)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1198
      start: 1194
    functionDepth: 1
    functionLinenumber: 1194
    functionLinenumberEnd: 1198
    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:1204,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1206,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1207
      start: 1200
    functionDepth: 1
    functionLinenumber: 1200
    functionLinenumberEnd: 1207
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - EEO_JUMP
    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:1213,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1215,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1216
      start: 1209
    functionDepth: 1
    functionLinenumber: 1209
    functionLinenumberEnd: 1216
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - EEO_JUMP
    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:1221,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1222,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1224,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1225
      start: 1218
    functionDepth: 1
    functionLinenumber: 1218
    functionLinenumberEnd: 1225
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - DatumGetBool
    - EEO_NEXT
    - EEO_JUMP
    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:1229,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1233
      start: 1227
    functionDepth: 1
    functionLinenumber: 1227
    functionLinenumberEnd: 1233
    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:1237,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1241
      start: 1235
    functionDepth: 1
    functionLinenumber: 1235
    functionLinenumberEnd: 1241
    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:1246,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1249
      start: 1243
    functionDepth: 1
    functionLinenumber: 1243
    functionLinenumberEnd: 1249
    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:1254,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1257
      start: 1251
    functionDepth: 1
    functionLinenumber: 1251
    functionLinenumberEnd: 1257
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalRowNotNull
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_NULLTEST_ROWISNOTNULL)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1265,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1271
      start: 1261
    functionDepth: 1
    functionLinenumber: 1261
    functionLinenumberEnd: 1271
    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:1277,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1281,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1281,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1283,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1284
      start: 1273
    functionDepth: 1
    functionLinenumber: 1273
    functionLinenumberEnd: 1284
    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:1290,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1294,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1294,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1297
      start: 1286
    functionDepth: 1
    functionLinenumber: 1286
    functionLinenumberEnd: 1297
    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:1303,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1308,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1309
      start: 1299
    functionDepth: 1
    functionLinenumber: 1299
    functionLinenumberEnd: 1309
    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:1314,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1317
      start: 1311
    functionDepth: 1
    functionLinenumber: 1311
    functionLinenumberEnd: 1317
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalParamExec
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_PARAM_EXEC)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalParamExtern
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1322,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1324
      start: 1319
    functionDepth: 1
    functionLinenumber: 1319
    functionLinenumberEnd: 1324
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalParamExtern
    - EEO_NEXT
    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:1329,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1331
      start: 1326
    functionDepth: 1
    functionLinenumber: 1326
    functionLinenumberEnd: 1331
    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:1336,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1337,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1338
      start: 1333
    functionDepth: 1
    functionLinenumber: 1333
    functionLinenumberEnd: 1338
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalParamSet
    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:1345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1346
      start: 1340
    functionDepth: 1
    functionLinenumber: 1340
    functionLinenumberEnd: 1346
    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:1353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1354
      start: 1348
    functionDepth: 1
    functionLinenumber: 1348
    functionLinenumberEnd: 1354
    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:1363,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1366,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1367
      start: 1356
    functionDepth: 1
    functionLinenumber: 1356
    functionLinenumberEnd: 1367
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - MakeExpandedObjectReadOnlyInternal
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_MAKE_READONLY)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1396,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1396,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1399,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1409,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1414,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1420,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1421,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1425,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1426,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1430,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1431
      start: 1369
    functionDepth: 2
    functionLinenumber: 1369
    functionLinenumberEnd: 1431
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - DatumGetCString
    - PointerGetDatum
    - EEO_NEXT
    - FunctionCallInvoke
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_IOCOERCE)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalCoerceViaIOSafe
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1435,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1437
      start: 1433
    functionDepth: 1
    functionLinenumber: 1433
    functionLinenumberEnd: 1437
    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:1456,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1462,1
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1471,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1473,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1473,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1477,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1478
      start: 1439
    functionDepth: 1
    functionLinenumber: 1439
    functionLinenumberEnd: 1478
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - BoolGetDatum
    - d::func::fn_addr
    - EEO_NEXT
    - DatumGetBool
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_DISTINCT)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1487,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1492,1
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1500,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1505,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1506
      start: 1481
    functionDepth: 1
    functionLinenumber: 1481
    functionLinenumberEnd: 1506
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - BoolGetDatum
    - d::func::fn_addr
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_NOT_DISTINCT)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MakeExpandedObjectReadOnlyInternal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1530,1
    - Dst: d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1533,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1536,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1541,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1549,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1550
      start: 1508
    functionDepth: 1
    functionLinenumber: 1508
    functionLinenumberEnd: 1550
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - DatumGetBool
    - d::func::fn_addr
    - EEO_NEXT
    - MakeExpandedObjectReadOnlyInternal
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_NULLIF)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalSQLValueFunction
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1558,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1560,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1561
      start: 1552
    functionDepth: 1
    functionLinenumber: 1552
    functionLinenumberEnd: 1561
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalSQLValueFunction
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_SQLVALUEFUNCTION)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalCurrentOfExpr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1566,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1568,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1569
      start: 1563
    functionDepth: 1
    functionLinenumber: 1563
    functionLinenumberEnd: 1569
    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:1577,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1579,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1580
      start: 1571
    functionDepth: 1
    functionLinenumber: 1571
    functionLinenumberEnd: 1580
    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:1593,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1596,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1597
      start: 1582
    functionDepth: 1
    functionLinenumber: 1582
    functionLinenumberEnd: 1597
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - EEO_JUMP
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_RETURNINGEXPR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalArrayExpr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1602,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1604,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1605
      start: 1599
    functionDepth: 1
    functionLinenumber: 1599
    functionLinenumberEnd: 1605
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalArrayExpr
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_ARRAYEXPR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalArrayCoerce
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1610,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1612,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1613
      start: 1607
    functionDepth: 1
    functionLinenumber: 1607
    functionLinenumberEnd: 1613
    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:1618,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1620,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1621
      start: 1615
    functionDepth: 1
    functionLinenumber: 1615
    functionLinenumberEnd: 1621
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalRow
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_ROW)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1633,1
    - Dst: d::rowcompare_step::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1638,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1645,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1650,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1652,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1655,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1656
      start: 1623
    functionDepth: 1
    functionLinenumber: 1623
    functionLinenumberEnd: 1656
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - DatumGetInt32
    - EEO_NEXT
    - d::rowcompare_step::fn_addr
    - EEO_JUMP
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_ROWCOMPARE_STEP)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1660,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1668,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1671,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1674,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1677,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1680,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1684,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1685
      start: 1658
    functionDepth: 1
    functionLinenumber: 1658
    functionLinenumberEnd: 1685
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - BoolGetDatum
    - Assert
    - DatumGetInt32
    - 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:1690,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1692,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1693
      start: 1687
    functionDepth: 1
    functionLinenumber: 1687
    functionLinenumberEnd: 1693
    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:1698,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1700,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1701
      start: 1695
    functionDepth: 1
    functionLinenumber: 1695
    functionLinenumberEnd: 1701
    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:1706,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1708,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1709
      start: 1703
    functionDepth: 1
    functionLinenumber: 1703
    functionLinenumberEnd: 1709
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalFieldStoreDeForm
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_FIELDSTORE_DEFORM)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalFieldStoreForm
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1714,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1716,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1717
      start: 1711
    functionDepth: 1
    functionLinenumber: 1711
    functionLinenumberEnd: 1717
    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:1722,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1724,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1729,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1731
      start: 1719
    functionDepth: 1
    functionLinenumber: 1719
    functionLinenumberEnd: 1731
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - d::sbsref_subscript::subscriptfunc
    - EEO_NEXT
    - EEO_JUMP
    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:1738,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1740,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1741
      start: 1735
    functionDepth: 1
    functionLinenumber: 1735
    functionLinenumberEnd: 1741
    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:1746,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1748,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1749
      start: 1743
    functionDepth: 1
    functionLinenumber: 1743
    functionLinenumberEnd: 1749
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalConvertRowtype
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_CONVERT_ROWTYPE)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalScalarArrayOp
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1754,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1756,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1757
      start: 1751
    functionDepth: 1
    functionLinenumber: 1751
    functionLinenumberEnd: 1757
    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:1762,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1764,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1765
      start: 1759
    functionDepth: 1
    functionLinenumber: 1759
    functionLinenumberEnd: 1765
    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:1772,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1773
      start: 1767
    functionDepth: 1
    functionLinenumber: 1767
    functionLinenumberEnd: 1773
    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:1780,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1781
      start: 1775
    functionDepth: 1
    functionLinenumber: 1775
    functionLinenumberEnd: 1781
    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:1786,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1788,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1789
      start: 1783
    functionDepth: 1
    functionLinenumber: 1783
    functionLinenumberEnd: 1789
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalConstraintNotNull
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_DOMAIN_NOTNULL)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalConstraintCheck
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1794,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1796,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1797
      start: 1791
    functionDepth: 1
    functionLinenumber: 1791
    functionLinenumberEnd: 1797
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalConstraintCheck
    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:1804,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1805
      start: 1799
    functionDepth: 1
    functionLinenumber: 1799
    functionLinenumberEnd: 1805
    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:1816,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1822,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1823
      start: 1807
    functionDepth: 1
    functionLinenumber: 1807
    functionLinenumberEnd: 1823
    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:1838,1
    - Dst: d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1842,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1845,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1846
      start: 1825
    functionDepth: 1
    functionLinenumber: 1825
    functionLinenumberEnd: 1846
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - d::hashdatum::fn_addr
    - EEO_JUMP
    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:1853,1
    - Dst: pg_rotate_left32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1855,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1863,1
    - Dst: d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1863,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1867,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1870,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1871
      start: 1848
    functionDepth: 1
    functionLinenumber: 1848
    functionLinenumberEnd: 1871
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - UInt32GetDatum
    - DatumGetUInt32
    - d::hashdatum::fn_addr
    - pg_rotate_left32
    - EEO_NEXT
    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:1886,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1893,1
    - Dst: pg_rotate_left32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1895,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1898,1
    - Dst: d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1898,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1899,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1903,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1904
      start: 1873
    functionDepth: 1
    functionLinenumber: 1873
    functionLinenumberEnd: 1904
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - UInt32GetDatum
    - EEO_JUMP
    - DatumGetUInt32
    - d::hashdatum::fn_addr
    - pg_rotate_left32
    - EEO_NEXT
    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:1909,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1911,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1912
      start: 1906
    functionDepth: 1
    functionLinenumber: 1906
    functionLinenumberEnd: 1912
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalXmlExpr
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_XMLEXPR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalJsonConstructor
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1917,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1918,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1919
      start: 1914
    functionDepth: 1
    functionLinenumber: 1914
    functionLinenumberEnd: 1919
    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:1924,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1926,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1927
      start: 1921
    functionDepth: 1
    functionLinenumber: 1921
    functionLinenumberEnd: 1927
    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:1932,1
    - Dst: ExecEvalJsonExprPath
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1932,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1933
      start: 1929
    functionDepth: 1
    functionLinenumber: 1929
    functionLinenumberEnd: 1933
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalJsonExprPath
    - EEO_JUMP
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_JSONEXPR_PATH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ExecEvalJsonCoercion
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1938,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1940,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1941
      start: 1935
    functionDepth: 1
    functionLinenumber: 1935
    functionLinenumberEnd: 1941
    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:1946,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1948,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1949
      start: 1943
    functionDepth: 1
    functionLinenumber: 1943
    functionLinenumberEnd: 1949
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalJsonCoercionFinish
    - EEO_NEXT
    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:1959,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1964,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1965
      start: 1951
    functionDepth: 1
    functionLinenumber: 1951
    functionLinenumberEnd: 1965
    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:1970,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1972,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1973
      start: 1967
    functionDepth: 1
    functionLinenumber: 1967
    functionLinenumberEnd: 1973
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalGroupingFunc
    - EEO_NEXT
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_GROUPING_FUNC)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1982,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1987,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1988
      start: 1975
    functionDepth: 1
    functionLinenumber: 1975
    functionLinenumberEnd: 1988
    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:1993,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:1995,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1996
      start: 1990
    functionDepth: 1
    functionLinenumber: 1990
    functionLinenumberEnd: 1996
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalMergeSupportFunc
    - EEO_NEXT
    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:2001,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2003,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2004
      start: 1998
    functionDepth: 1
    functionLinenumber: 1998
    functionLinenumberEnd: 2004
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalSubPlan
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_SUBPLAN)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2011,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2014
      start: 2007
    functionDepth: 1
    functionLinenumber: 2007
    functionLinenumberEnd: 2014
    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:2020,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2027,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2029,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2031,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2033,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2034
      start: 2017
    functionDepth: 1
    functionLinenumber: 2017
    functionLinenumberEnd: 2034
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - MemoryContextSwitchTo
    - EEO_NEXT
    - FunctionCallInvoke
    - castNode
    linkageType: ''
    returnType: void
    signature: void EEO_CASE(EEOP_AGG_DESERIALIZE)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2047,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2052,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2054,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2055
      start: 2042
    functionDepth: 1
    functionLinenumber: 2042
    functionLinenumberEnd: 2055
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - EEO_NEXT
    - EEO_JUMP
    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:2063,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2066,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2067,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2068
      start: 2058
    functionDepth: 1
    functionLinenumber: 2058
    functionLinenumberEnd: 2068
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - EEO_NEXT
    - EEO_JUMP
    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:2078,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2080,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2081
      start: 2070
    functionDepth: 1
    functionLinenumber: 2070
    functionLinenumberEnd: 2081
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - EEO_JUMP
    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:2089,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2094,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2096,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2097
      start: 2087
    functionDepth: 1
    functionLinenumber: 2087
    functionLinenumberEnd: 2097
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - EEO_JUMP
    - castNode
    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:2113,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2118,1
    - Dst: ExecAggInitGroup
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2123,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2127,1
    - Dst: ExecAggPlainTransByVal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2130,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2135,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2136
      start: 2111
    functionDepth: 1
    functionLinenumber: 2111
    functionLinenumberEnd: 2136
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - likely
    - ExecAggInitGroup
    - castNode
    - ExecAggPlainTransByVal
    - EEO_NEXT
    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:2141,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2146,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2148,1
    - Dst: ExecAggPlainTransByVal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2149,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2153,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2154
      start: 2139
    functionDepth: 1
    functionLinenumber: 2139
    functionLinenumberEnd: 2154
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - likely
    - castNode
    - ExecAggPlainTransByVal
    - 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:2159,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2164,1
    - Dst: ExecAggPlainTransByVal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2166,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2171
      start: 2157
    functionDepth: 1
    functionLinenumber: 2157
    functionLinenumberEnd: 2171
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - ExecAggPlainTransByVal
    - EEO_NEXT
    - castNode
    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:2176,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2181,1
    - Dst: ExecAggInitGroup
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2184,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2186,1
    - Dst: ExecAggPlainTransByRef
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2187,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2191,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2192
      start: 2174
    functionDepth: 1
    functionLinenumber: 2174
    functionLinenumberEnd: 2192
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - likely
    - ExecAggPlainTransByRef
    - ExecAggInitGroup
    - castNode
    - EEO_NEXT
    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:2197,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2202,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2204,1
    - Dst: ExecAggPlainTransByRef
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2205,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2209
      start: 2195
    functionDepth: 1
    functionLinenumber: 2195
    functionLinenumberEnd: 2209
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - likely
    - ExecAggPlainTransByRef
    - castNode
    - 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:2214,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2219,1
    - Dst: ExecAggPlainTransByRef
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2221,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2226
      start: 2212
    functionDepth: 1
    functionLinenumber: 2212
    functionLinenumberEnd: 2226
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - Assert
    - EEO_NEXT
    - ExecAggPlainTransByRef
    - castNode
    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:2231,1
    - Dst: ExecEvalPreOrderedDistinctSingle
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2233,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2234,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2236,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2237
      start: 2228
    functionDepth: 1
    functionLinenumber: 2228
    functionLinenumberEnd: 2237
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalPreOrderedDistinctSingle
    - EEO_NEXT
    - EEO_JUMP
    - castNode
    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:2241,1
    - Dst: ExecEvalPreOrderedDistinctMulti
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2244,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2245,1
    - Dst: EEO_JUMP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2248
      start: 2239
    functionDepth: 1
    functionLinenumber: 2239
    functionLinenumberEnd: 2248
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalPreOrderedDistinctMulti
    - EEO_NEXT
    - EEO_JUMP
    - castNode
    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:2254,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2257
      start: 2251
    functionDepth: 1
    functionLinenumber: 2251
    functionLinenumberEnd: 2257
    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:2263,1
    - Dst: EEO_NEXT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2266
      start: 2260
    functionDepth: 1
    functionLinenumber: 2260
    functionLinenumberEnd: 2266
    functionName: EEO_CASE
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - EEO_NEXT
    - ExecEvalAggOrderedTransTuple
    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:2271,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2273
      start: 2268
    functionDepth: 1
    functionLinenumber: 2268
    functionLinenumberEnd: 2273
    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:2293,1
    - Dst: ExprState*::evalfunc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - state
    - econtext
    - isNull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2300
      start: 2286
    functionDepth: 1
    functionLinenumber: 2286
    functionLinenumberEnd: 2300
    functionName: ExecInterpExprStillValid
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - ExprState*::evalfunc
    - CheckExprStillValid
    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:2325,1
    - Dst: CheckVarSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2331,1
    - Dst: CheckVarSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2339,1
    - Dst: CheckVarSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2347,1
    - Dst: CheckVarSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2355,1
    - Dst: CheckVarSlotCompatibility
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2363,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 2
    argNames:
    - state
    - econtext
    argTypes:
    - ExprState*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2370
      start: 2306
    functionDepth: 1
    functionLinenumber: 2306
    functionLinenumberEnd: 2370
    functionName: CheckExprStillValid
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - ExecEvalStepOp
    - CheckVarSlotCompatibility
    linkageType: ''
    returnType: void
    signature: void CheckExprStillValid(ExprState *state, ExprContext *econtext)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2403,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2406,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2410,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2413,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2414,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2415,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2416,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2419,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2420,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2421,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2422,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2423,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2424,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2425,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - slot
    - attnum
    - vartype
    argTypes:
    - TupleTableSlot*
    - int
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2427
      start: 2377
    functionDepth: 2
    functionLinenumber: 2377
    functionLinenumberEnd: 2427
    functionName: CheckVarSlotCompatibility
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 1
    functionsReached:
    - errmsg
    - TupleDescAttr
    - format_type_be
    - ereport
    - elog
    - errdetail
    - errcode
    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:2458,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 2
    argNames:
    - op
    - slot
    argTypes:
    - ExprEvalStep*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2460
      start: 2432
    functionDepth: 1
    functionLinenumber: 2432
    functionLinenumberEnd: 2460
    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:2495,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2499,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2501,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2502,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2503,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2504,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2522,1
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2527,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2529,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: 2537
      start: 2479
    functionDepth: 1
    functionLinenumber: 2479
    functionLinenumberEnd: 2537
    functionName: get_cached_rowtype
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ReleaseTupleDesc
    - format_type_be
    - lookup_rowtype_tupdesc
    - ereport
    - lookup_type_cache
    - unlikely
    - errcode
    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:2551,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - state
    - slot
    - isnull
    argTypes:
    - ExprState*
    - TupleTableSlot*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2559
      start: 2545
    functionDepth: 3
    functionLinenumber: 2545
    functionLinenumberEnd: 2559
    functionName: ExecJustVarImpl
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - slot_getattr
    - CheckOpSlotCompatibility
    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:2565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2566
      start: 2562
    functionDepth: 4
    functionLinenumber: 2562
    functionLinenumberEnd: 2566
    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:2572,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2573
      start: 2569
    functionDepth: 4
    functionLinenumber: 2569
    functionLinenumberEnd: 2573
    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:2579,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2580
      start: 2576
    functionDepth: 4
    functionLinenumber: 2576
    functionLinenumberEnd: 2580
    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:2591,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2602,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2604,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - state
    - inslot
    - isnull
    argTypes:
    - ExprState*
    - TupleTableSlot*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2606
      start: 2583
    functionDepth: 3
    functionLinenumber: 2583
    functionLinenumberEnd: 2606
    functionName: ExecJustAssignVarImpl
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - slot_getattr
    - Assert
    - CheckOpSlotCompatibility
    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:2612,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2613
      start: 2609
    functionDepth: 4
    functionLinenumber: 2609
    functionLinenumberEnd: 2613
    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:2619,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2620
      start: 2616
    functionDepth: 4
    functionLinenumber: 2616
    functionLinenumberEnd: 2620
    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:2626,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2627
      start: 2623
    functionDepth: 4
    functionLinenumber: 2623
    functionLinenumberEnd: 2627
    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:2662,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2665
      start: 2630
    functionDepth: 0
    functionLinenumber: 2630
    functionLinenumberEnd: 2665
    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: 2675
      start: 2668
    functionDepth: 0
    functionLinenumber: 2668
    functionLinenumberEnd: 2675
    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:2690,1
    - Dst: TTS_IS_VIRTUAL
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2690,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2691,1
    - Dst: TTS_FIXED
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2691,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2692,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - state
    - slot
    - isnull
    argTypes:
    - ExprState*
    - TupleTableSlot*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2697
      start: 2678
    functionDepth: 1
    functionLinenumber: 2678
    functionLinenumberEnd: 2697
    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:2703,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2704
      start: 2700
    functionDepth: 2
    functionLinenumber: 2700
    functionLinenumberEnd: 2704
    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:2710,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2711
      start: 2707
    functionDepth: 2
    functionLinenumber: 2707
    functionLinenumberEnd: 2711
    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:2717,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2718
      start: 2714
    functionDepth: 2
    functionLinenumber: 2714
    functionLinenumberEnd: 2718
    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:2731,1
    - Dst: TTS_IS_VIRTUAL
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2731,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2732,1
    - Dst: TTS_FIXED
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2732,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2733,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2734,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - state
    - inslot
    - isnull
    argTypes:
    - ExprState*
    - TupleTableSlot*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2740
      start: 2721
    functionDepth: 1
    functionLinenumber: 2721
    functionLinenumberEnd: 2740
    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:2746,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2747
      start: 2743
    functionDepth: 2
    functionLinenumber: 2743
    functionLinenumberEnd: 2747
    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:2753,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2754
      start: 2750
    functionDepth: 2
    functionLinenumber: 2750
    functionLinenumberEnd: 2754
    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:2760,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2761
      start: 2757
    functionDepth: 2
    functionLinenumber: 2757
    functionLinenumberEnd: 2761
    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:2778,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2779,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2784,1
    - Dst: pg_rotate_left32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2785,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2791,1
    - Dst: ExprEvalStep*::d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2791,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2796,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2797
      start: 2766
    functionDepth: 2
    functionLinenumber: 2766
    functionLinenumberEnd: 2797
    functionName: ExecJustHashInnerVarWithIV
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - slot_getsomeattrs
    - UInt32GetDatum
    - DatumGetUInt32
    - pg_rotate_left32
    - ExprEvalStep*::d::hashdatum::fn_addr
    - CheckOpSlotCompatibility
    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:2809,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2810,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2818,1
    - Dst: ExprEvalStep*::d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2818,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - state
    - slot
    - isnull
    argTypes:
    - ExprState*
    - TupleTableSlot*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2821
      start: 2800
    functionDepth: 2
    functionLinenumber: 2800
    functionLinenumberEnd: 2821
    functionName: ExecJustHashVarImpl
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - slot_getsomeattrs
    - ExprEvalStep*::d::hashdatum::fn_addr
    - DatumGetUInt32
    - CheckOpSlotCompatibility
    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:2827,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2828
      start: 2824
    functionDepth: 3
    functionLinenumber: 2824
    functionLinenumberEnd: 2828
    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:2834,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2835
      start: 2831
    functionDepth: 3
    functionLinenumber: 2831
    functionLinenumberEnd: 2835
    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: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2852,1
    - Dst: ExprEvalStep*::d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2852,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - state
    - slot
    - isnull
    argTypes:
    - ExprState*
    - TupleTableSlot*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2855
      start: 2838
    functionDepth: 1
    functionLinenumber: 2838
    functionLinenumberEnd: 2855
    functionName: ExecJustHashVarVirtImpl
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - ExprEvalStep*::d::hashdatum::fn_addr
    - DatumGetUInt32
    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:2862,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2863
      start: 2858
    functionDepth: 2
    functionLinenumber: 2858
    functionLinenumberEnd: 2863
    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:2870,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2871
      start: 2866
    functionDepth: 2
    functionLinenumber: 2866
    functionLinenumberEnd: 2871
    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:2886,1
    - Dst: slot_getsomeattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2887,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2895,1
    - Dst: ExprEvalStep*::d::hashdatum::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2895,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - state
    - econtext
    - isnull
    argTypes:
    - ExprState*
    - ExprContext*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2903
      start: 2876
    functionDepth: 2
    functionLinenumber: 2876
    functionLinenumberEnd: 2903
    functionName: ExecJustHashOuterVarStrict
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - slot_getsomeattrs
    - ExprEvalStep*::d::hashdatum::fn_addr
    - DatumGetUInt32
    - CheckOpSlotCompatibility
    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: 2921
      start: 2910
    functionDepth: 0
    functionLinenumber: 2910
    functionLinenumberEnd: 2921
    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:2935,1
    - Dst: ExecInterpExpr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2935,1
    - Dst: qsort
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2945,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2951
      start: 2927
    functionDepth: 3
    functionLinenumber: 2927
    functionLinenumberEnd: 2951
    functionName: ExecInitInterpreter
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 1
    functionsReached:
    - qsort
    - DatumGetPointer
    - ExecInterpExpr
    linkageType: ''
    returnType: void
    signature: void ExecInitInterpreter(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bsearch
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2969,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:2974,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2979
      start: 2959
    functionDepth: 1
    functionLinenumber: 2959
    functionLinenumberEnd: 2979
    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:2997,1
    - Dst: ExprEvalStep*::d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3000,1
    - Dst: pgstat_end_function_usage
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3004,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3005
      start: 2989
    functionDepth: 1
    functionLinenumber: 2989
    functionLinenumberEnd: 3005
    functionName: ExecEvalFuncExprFusage
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - pgstat_end_function_usage
    - pgstat_init_function_usage
    - ExprEvalStep*::d::func::fn_addr
    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:3031,1
    - Dst: ExprEvalStep*::d::func::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3034,1
    - Dst: pgstat_end_function_usage
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3038,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3039
      start: 3010
    functionDepth: 1
    functionLinenumber: 3010
    functionLinenumberEnd: 3039
    functionName: ExecEvalFuncExprStrictFusage
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - pgstat_end_function_usage
    - pgstat_init_function_usage
    - ExprEvalStep*::d::func::fn_addr
    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:3053,1
    - Dst: ExecSetParamPlan
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3056,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3058,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3062
      start: 3047
    functionDepth: 5
    functionLinenumber: 3047
    functionLinenumberEnd: 3062
    functionName: ExecEvalParamExec
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - ExecSetParamPlan
    - unlikely
    - Assert
    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:3075,1
    - Dst: ParamListInfo::paramFetch
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3083,1
    - Dst: likely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3087,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3087,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3090,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3091,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3092,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3093,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3095,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3096,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3103,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3104,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3105,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3106
      start: 3069
    functionDepth: 1
    functionLinenumber: 3069
    functionLinenumberEnd: 3106
    functionName: ExecEvalParamExtern
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - errmsg
    - ParamListInfo::paramFetch
    - likely
    - format_type_be
    - ereport
    - unlikely
    - OidIsValid
    - errcode
    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:3120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3124
      start: 3112
    functionDepth: 1
    functionLinenumber: 3112
    functionLinenumberEnd: 3124
    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:3154,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3154,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3157,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3166,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3171,1
    - Dst: IsA
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3171,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3174,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3176,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3185,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3187,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3189
      start: 3134
    functionDepth: 2
    functionLinenumber: 3134
    functionLinenumberEnd: 3189
    functionName: ExecEvalCoerceViaIOSafe
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - Assert
    - SOFT_ERROR_OCCURRED
    - DatumGetCString
    - IsA
    - PointerGetDatum
    - FunctionCallInvoke
    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:3197,1
    - Dst: DateADTGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3209,1
    - Dst: GetSQLCurrentDate
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3209,1
    - Dst: TimeTzADTPGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3213,1
    - Dst: GetSQLCurrentTime
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3213,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3217,1
    - Dst: GetSQLCurrentTimestamp
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3217,1
    - Dst: TimeADTGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3221,1
    - Dst: GetSQLLocalTime
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3221,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3225,1
    - Dst: GetSQLLocalTimestamp
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3225,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3230,1
    - Dst: current_user
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3231,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3235,1
    - Dst: session_user
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3236,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3240,1
    - Dst: current_database
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3241,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3245,1
    - Dst: current_schema
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3246,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 46
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3250
      start: 3194
    functionDepth: 2
    functionLinenumber: 3194
    functionLinenumberEnd: 3250
    functionName: ExecEvalSQLValueFunction
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - LOCAL_FCINFO
    - TimeADTGetDatum
    - GetSQLCurrentTimestamp
    - GetSQLCurrentTime
    - InitFunctionCallInfoData
    - session_user
    - current_user
    - GetSQLCurrentDate
    - current_database
    - current_schema
    - TimeTzADTPGetDatum
    - TimestampGetDatum
    - DateADTGetDatum
    - GetSQLLocalTimestamp
    - TimestampTzGetDatum
    - GetSQLLocalTime
    linkageType: ''
    returnType: void
    signature: void ExecEvalSQLValueFunction(ExprState *state, ExprEvalStep *op)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3264,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3265,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3267
      start: 3261
    functionDepth: 1
    functionLinenumber: 3261
    functionLinenumberEnd: 3267
    functionName: ExecEvalCurrentOfExpr
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - errmsg
    - errcode
    - ereport
    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:3275,1
    - Dst: Int16GetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3280,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3283,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3286,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3289,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3293
      start: 3272
    functionDepth: 1
    functionLinenumber: 3272
    functionLinenumberEnd: 3293
    functionName: ExecEvalNextValueExpr
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - Int32GetDatum
    - Int64GetDatum
    - nextval_internal
    - elog
    - 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:3301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3302
      start: 3298
    functionDepth: 1
    functionLinenumber: 3298
    functionLinenumberEnd: 3302
    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:3310,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3311
      start: 3307
    functionDepth: 1
    functionLinenumber: 3307
    functionLinenumberEnd: 3311
    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:3331,1
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3351,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3353,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3354,1
    - Dst: get_cached_rowtype
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3357,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3363,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3369,1
    - Dst: heap_attisnull
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3371,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3376,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3385,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3391,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 4
    argNames:
    - state
    - op
    - econtext
    - checkisnull
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3392
      start: 3314
    functionDepth: 3
    functionLinenumber: 3314
    functionLinenumberEnd: 3392
    functionName: ExecEvalRowNullInt
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 2
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - DatumGetHeapTupleHeader
    - BoolGetDatum
    - get_cached_rowtype
    - HeapTupleHeaderGetTypeId
    - HeapTupleHeaderGetTypMod
    - TupleDescCompactAttr
    - heap_attisnull
    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:3424,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3450,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3451,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3452,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3453,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3473,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3476,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3477,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3478,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3479,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3480,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3482,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3482,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3483,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3485,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3499,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3500,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3501,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3504,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3505,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3505,1
    - Dst: palloc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3506,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3507,1
    - Dst: ARR_LBOUND
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3507,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3515,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3515,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3517,1
    - Dst: ARR_LBOUND
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3517,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3519,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3520,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3521,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3525,1
    - Dst: ARR_NULLBITMAP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3526,1
    - Dst: ARR_SIZE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3527,1
    - Dst: ARR_DATA_OFFSET
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3527,1
    - Dst: AllocSizeIsValid
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3530,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3531,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3532,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3533,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3535,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3536,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3537,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3551,1
    - Dst: construct_empty_array
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3551,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3554,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3555,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3556,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3570,1
    - Dst: ArrayCheckBounds
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3571,1
    - Dst: ARR_OVERHEAD_WITHNULLS
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3575,1
    - Dst: ARR_OVERHEAD_NONULLS
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3581,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3584,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3585,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3589,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3589,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3590,1
    - Dst: ARR_LBOUND
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3590,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3592,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3596,1
    - Dst: array_bitmap_copy
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3599,1
    - Dst: ARR_NULLBITMAP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3599,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3606,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 91
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3607
      start: 3400
    functionDepth: 1
    functionLinenumber: 3400
    functionLinenumberEnd: 3607
    functionName: ExecEvalArrayExpr
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - errcode
    - AllocSizeIsValid
    - ArrayCheckBounds
    - construct_md_array
    - ARR_NULLBITMAP
    - errdetail
    - ARR_DIMS
    - DatumGetArrayTypeP
    - memcmp
    - ARR_DATA_OFFSET
    - memcpy
    - errmsg
    - format_type_be
    - ArrayGetNItems
    - ARR_HASNULL
    - palloc
    - SET_VARSIZE
    - ARR_ELEMTYPE
    - ARR_DATA_PTR
    - ARR_NDIM
    - ereport
    - PointerGetDatum
    - construct_empty_array
    - palloc0
    - array_bitmap_copy
    - ARR_LBOUND
    - ARR_OVERHEAD_WITHNULLS
    - ARR_SIZE
    - ARR_OVERHEAD_NONULLS
    linkageType: ''
    returnType: void
    signature: void ExecEvalArrayExpr(ExprState *state, ExprEvalStep *op)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetArrayTypePCopy
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3632,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3634,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3635,1
    - Dst: array_map
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3642,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3647
      start: 3614
    functionDepth: 1
    functionLinenumber: 3614
    functionLinenumberEnd: 3647
    functionName: ExecEvalArrayCoerce
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - ARR_ELEMTYPE
    - DatumGetArrayTypePCopy
    - array_map
    - 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:3661,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3665,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3667
      start: 3655
    functionDepth: 5
    functionLinenumber: 3655
    functionLinenumberEnd: 3667
    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:3684,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3685,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3711,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3711,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3721
      start: 3675
    functionDepth: 1
    functionLinenumber: 3675
    functionLinenumberEnd: 3721
    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:3747,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3747,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3749,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3751,1
    - Dst: expanded_record_get_tupdesc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3754,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3762,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3765,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3767,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3779,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3780,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3781,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3782,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3783,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3784,1
    - Dst: expanded_record_get_field
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3787,1
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3793,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3795,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3796,1
    - Dst: get_cached_rowtype
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3799,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3808,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3811,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3813,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3825,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3826,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3827,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3828,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3829,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3830,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3833,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3837,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3842
      start: 3728
    functionDepth: 4
    functionLinenumber: 3728
    functionLinenumberEnd: 3842
    functionName: ExecEvalFieldSelect
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - DatumGetEOHP
    - expanded_record_get_tupdesc
    - HeapTupleHeaderGetTypMod
    - VARATT_IS_EXTERNAL_EXPANDED
    - errdetail
    - HeapTupleHeaderGetDatumLength
    - expanded_record_get_field
    - heap_getattr
    - DatumGetPointer
    - errmsg
    - DatumGetHeapTupleHeader
    - TupleDescAttr
    - format_type_be
    - elog
    - Assert
    - get_cached_rowtype
    - ereport
    - HeapTupleHeaderGetTypeId
    - errcode
    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:3859,1
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3873,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3874,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3875,1
    - Dst: get_cached_rowtype
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3885,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3889,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3890,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3893,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3897
      start: 3853
    functionDepth: 4
    functionLinenumber: 3853
    functionLinenumberEnd: 3897
    functionName: ExecEvalFieldStoreDeForm
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - DatumGetHeapTupleHeader
    - memset
    - heap_deform_tuple
    - ItemPointerSetInvalid
    - get_cached_rowtype
    - unlikely
    - elog
    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:3910,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3913,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3917,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3919
      start: 3903
    functionDepth: 5
    functionLinenumber: 3903
    functionLinenumberEnd: 3919
    functionName: ExecEvalFieldStoreForm
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - heap_form_tuple
    - HeapTupleGetDatum
    - get_cached_rowtype
    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:3943,1
    - Dst: get_cached_rowtype
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3950,1
    - Dst: IncrTupleDescRefCount
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3953,1
    - Dst: get_cached_rowtype
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3954,1
    - Dst: IncrTupleDescRefCount
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3957,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3965,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3965,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3966,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3974,1
    - Dst: convert_tuples_by_name
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3977,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3979,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3983,1
    - Dst: execute_attr_map_tuple
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3989,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:3991,1
    - Dst: heap_copy_tuple_as_datum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4005,1
    - Dst: DecrTupleDescRefCount
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4008,1
    - Dst: DecrTupleDescRefCount
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4009,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4010
      start: 3927
    functionDepth: 6
    functionLinenumber: 3927
    functionLinenumberEnd: 4010
    functionName: ExecEvalConvertRowtype
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - HeapTupleGetDatum
    - Assert
    - DatumGetHeapTupleHeader
    - IncrTupleDescRefCount
    - MemoryContextSwitchTo
    - convert_tuples_by_name
    - DecrTupleDescRefCount
    - get_cached_rowtype
    - heap_copy_tuple_as_datum
    - execute_attr_map_tuple
    - HeapTupleHeaderGetTypeId
    linkageType: ''
    returnType: void
    signature: void ExecEvalConvertRowtype(ExprState *state, ExprEvalStep *op, ExprContext
      *econtext)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4047,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4055,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4055,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4055,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4058,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4077,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4079,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4079,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4083,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4091,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4095,1
    - Dst: ARR_NULLBITMAP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4096,1
    - Dst: fetch_att
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4112,1
    - Dst: att_addlength_pointer
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4113,1
    - Dst: att_align_nominal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4114,1
    - Dst: ExprEvalStep*::d::scalararrayop::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4128,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4136,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4138,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4145,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4147,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 69
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4167
      start: 4022
    functionDepth: 2
    functionLinenumber: 4022
    functionLinenumberEnd: 4167
    functionName: ExecEvalScalarArrayOp
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - ARR_ELEMTYPE
    - ARR_DIMS
    - get_typlenbyvalalign
    - DatumGetArrayTypeP
    - ARR_DATA_PTR
    - BoolGetDatum
    - att_align_nominal
    - ARR_NDIM
    - ARR_NULLBITMAP
    - ArrayGetNItems
    - ExprEvalStep*::d::scalararrayop::fn_addr
    - DatumGetBool
    - fetch_att
    - att_addlength_pointer
    linkageType: ''
    returnType: void
    signature: void ExecEvalScalarArrayOp(ExprState *state, ExprEvalStep *op)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ScalarArrayOpExprHashTable*::hash_finfo::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4185,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - tb
    - key
    argTypes:
    - struct saophash_hash*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4188
      start: 4175
    functionDepth: 1
    functionLinenumber: 4175
    functionLinenumberEnd: 4188
    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:4207,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - tb
    - key1
    - key2
    argTypes:
    - struct saophash_hash*
    - Datum
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4210
      start: 4194
    functionDepth: 1
    functionLinenumber: 4194
    functionLinenumberEnd: 4210
    functionName: saop_hash_element_match
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 0
    functionsReached:
    - DatumGetBool
    - ScalarArrayOpExprHashTable*::op::d::hashedscalararrayop::finfo::fn_addr
    linkageType: ''
    returnType: bool
    signature: bool saop_hash_element_match(struct saophash_hash *tb, Datum key1,
      Datum key2)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4239,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4268,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4269,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4269,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4269,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4271,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4271,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4276,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4279,1
    - Dst: SizeForFunctionCallInfo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4280,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4284,1
    - Dst: fmgr_info_set_expr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4285,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4287,1
    - Dst: saophash_create
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4300,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4303,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4305,1
    - Dst: ARR_NULLBITMAP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4306,1
    - Dst: fetch_att
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4319,1
    - Dst: att_addlength_pointer
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4320,1
    - Dst: att_align_nominal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4321,1
    - Dst: saophash_insert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4323,1
    - Dst: saophash_lookup
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4346,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4350,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4352,1
    - Dst: ExprEvalStep*::d::hashedscalararrayop::finfo::fn_addr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4388,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 64
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4402
      start: 4225
    functionDepth: 2
    functionLinenumber: 4225
    functionLinenumberEnd: 4402
    functionName: ExecEvalHashedScalarArrayOp
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - fmgr_info_set_expr
    - get_typlenbyvalalign
    - MemoryContextSwitchTo
    - saophash_create
    - BoolGetDatum
    - saophash_lookup
    - ExprEvalStep*::d::hashedscalararrayop::finfo::fn_addr
    - ARR_NULLBITMAP
    - fetch_att
    - saophash_insert
    - ARR_DIMS
    - DatumGetArrayTypeP
    - InitFunctionCallInfoData
    - att_align_nominal
    - fmgr_info
    - ArrayGetNItems
    - ARR_ELEMTYPE
    - Assert
    - SizeForFunctionCallInfo
    - ARR_DATA_PTR
    - ARR_NDIM
    - palloc0
    - att_addlength_pointer
    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:4411,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4412,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4413,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4414,1
    - Dst: errdatatype
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4415,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4416
      start: 4407
    functionDepth: 1
    functionLinenumber: 4407
    functionLinenumberEnd: 4416
    functionName: ExecEvalConstraintNotNull
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - errmsg
    - format_type_be
    - errdatatype
    - errsave
    - errcode
    linkageType: ''
    returnType: void
    signature: void ExecEvalConstraintNotNull(ExprState *state, ExprEvalStep *op)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4425,1
    - Dst: errsave
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4426,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4427,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4428,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4429,1
    - Dst: errdomainconstraint
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4431,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4433
      start: 4421
    functionDepth: 1
    functionLinenumber: 4421
    functionLinenumberEnd: 4433
    functionName: ExecEvalConstraintCheck
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - errmsg
    - errdomainconstraint
    - format_type_be
    - errsave
    - DatumGetBool
    - errcode
    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:4458,1
    - Dst: lappend
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4461,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4461,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4466,1
    - Dst: xmlconcat
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4466,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4481,1
    - Dst: forboth
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4484,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4486,1
    - Dst: strVal
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4487,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4487,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4492,1
    - Dst: map_sql_value_to_xml_value
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4494,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4495,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4506,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4507,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4510,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4515,1
    - Dst: xmlelement
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4515,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4531,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4531,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4536,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4541,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4543,1
    - Dst: xmlparse
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4543,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4556,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4556,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4564,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4572,1
    - Dst: xmlpi
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4572,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4588,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4588,1
    - Dst: DatumGetXmlP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4592,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4597,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4599,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4600,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4602,1
    - Dst: xmlroot
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4602,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4615,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4615,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4622,1
    - Dst: xmltotext_with_options
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4622,1
    - Dst: DatumGetXmlP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4622,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4635,1
    - Dst: list_length
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4635,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4642,1
    - Dst: xml_is_document
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4642,1
    - Dst: DatumGetXmlP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4642,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4648,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 101
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4651
      start: 4441
    functionDepth: 6
    functionLinenumber: 4441
    functionLinenumberEnd: 4651
    functionName: ExecEvalXmlExpr
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - BoolGetDatum
    - map_sql_value_to_xml_value
    - xmlpi
    - xmltotext_with_options
    - list_length
    - forboth
    - cstring_to_text_with_len
    - exprType
    - pfree
    - xmlelement
    - xmlconcat
    - xmlparse
    - DatumGetPointer
    - DatumGetInt32
    - elog
    - lappend
    - strVal
    - lfirst
    - xmlroot
    - Assert
    - DatumGetXmlP
    - appendStringInfo
    - xml_is_document
    - DatumGetTextPP
    - PointerGetDatum
    - DatumGetBool
    - initStringInfo
    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:4698,1
    - Dst: datum_to_json
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4700,1
    - Dst: DatumGetTextP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4713,1
    - Dst: jsonb_from_text
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4716,1
    - Dst: json_validate
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4719,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4725,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4729
      start: 4656
    functionDepth: 1
    functionLinenumber: 4656
    functionLinenumberEnd: 4729
    functionName: ExecEvalJsonConstructor
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - jsonb_from_text
    - datum_to_json
    - elog
    - DatumGetTextP
    - json_validate
    - datum_to_jsonb
    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:4744,1
    - Dst: exprType
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4748,1
    - Dst: DatumGetTextP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4752,1
    - Dst: json_get_first_token
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4758,1
    - Dst: json_validate
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4784,1
    - Dst: DatumGetJsonbP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4792,1
    - Dst: JB_ROOT_IS_OBJECT
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4797,1
    - Dst: JB_ROOT_IS_ARRAY
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4800,1
    - Dst: JB_ROOT_IS_SCALAR
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4800,1
    - Dst: JB_ROOT_IS_ARRAY
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4803,1
    - Dst: JB_ROOT_IS_SCALAR
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4803,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4816,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 52
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4817
      start: 4734
    functionDepth: 2
    functionLinenumber: 4734
    functionLinenumberEnd: 4817
    functionName: ExecEvalJsonIsPredicate
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - exprType
    - JB_ROOT_IS_OBJECT
    - BoolGetDatum
    - JB_ROOT_IS_ARRAY
    - JB_ROOT_IS_SCALAR
    - DatumGetTextP
    - json_validate
    - DatumGetJsonbP
    - json_get_first_token
    linkageType: ''
    returnType: void
    signature: void ExecEvalJsonIsPredicate(ExprState *state, ExprEvalStep *op)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetJsonPathP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4849,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4852,1
    - Dst: memset
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4853,1
    - Dst: JsonPathExists
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4867,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4874,1
    - Dst: JsonPathQuery
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4880,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4885,1
    - Dst: JsonPathValue
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4890,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4906,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4906,1
    - Dst: JsonbPGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4907,1
    - Dst: JsonbValueToJsonb
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4907,1
    - Dst: JsonbPGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4911,1
    - Dst: JsonbValueToJsonb
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4911,1
    - Dst: ExecGetJsonValueItemString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4916,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4923,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4924,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4933,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4946,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4948,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4949,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4950,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4959,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4960,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4981,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4991,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:4995,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5001,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5002,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5003,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5006,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5007,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5008,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5017,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5020,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 90
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5029
      start: 4834
    functionDepth: 2
    functionLinenumber: 4834
    functionLinenumberEnd: 5029
    functionName: ExecEvalJsonExprPath
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - BoolGetDatum
    - DatumGetJsonPathP
    - DirectFunctionCall1
    - JsonbValueToJsonb
    - ExecGetJsonValueItemString
    - DatumGetCString
    - CStringGetDatum
    - JsonbPGetDatum
    - DatumGetPointer
    - FunctionCallInvoke
    - errmsg
    - JsonPathExists
    - SOFT_ERROR_OCCURRED
    - elog
    - JsonPathValue
    - Assert
    - JsonPathQuery
    - memset
    - ereport
    - PointerGetDatum
    - errcode
    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:5050,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5052,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5058,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5058,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5059,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5062,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5062,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5063,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5069,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5069,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5072,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5072,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5075,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5075,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5078,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5078,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5081,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5081,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5084,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5092,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5092,1
    - Dst: JsonbPGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5093,1
    - Dst: JsonbValueToJsonb
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5093,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5096,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5099,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 41
    argCount: 2
    argNames:
    - item
    - resnull
    argTypes:
    - JsonbValue*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5102
      start: 5036
    functionDepth: 2
    functionLinenumber: 5036
    functionLinenumberEnd: 5102
    functionName: ExecGetJsonValueItemString
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 1
    functionsReached:
    - Assert
    - DatumGetCString
    - BoolGetDatum
    - elog
    - NumericGetDatum
    - JsonbPGetDatum
    - memcpy
    - palloc
    - DirectFunctionCall1
    - JsonbValueToJsonb
    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:5133,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5143,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5147,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5148,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5149,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5150,1
    - Dst: json_populate_type
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5153,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5161
      start: 5111
    functionDepth: 2
    functionLinenumber: 5111
    functionLinenumberEnd: 5161
    functionName: ExecEvalJsonCoercion
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - json_populate_type
    - CStringGetDatum
    - DatumGetBool
    - DirectFunctionCall1
    - domain_check_safe
    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:5183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - behavior
    argTypes:
    - JsonBehavior*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5184
      start: 5163
    functionDepth: 0
    functionLinenumber: 5163
    functionLinenumberEnd: 5184
    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:5196,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5204,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5205,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5206,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5208,1
    - Dst: GetJsonBehaviorValueString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5210,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5211,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5212,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5213,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5214,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5216,1
    - Dst: GetJsonBehaviorValueString
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5218,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5219,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5224,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5234
      start: 5191
    functionDepth: 1
    functionLinenumber: 5191
    functionLinenumberEnd: 5234
    functionName: ExecEvalJsonCoercionFinish
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - errmsg
    - SOFT_ERROR_OCCURRED
    - BoolGetDatum
    - ereport
    - GetJsonBehaviorValueString
    - DatumGetBool
    - errdetail
    - errcode
    linkageType: ''
    returnType: void
    signature: void ExecEvalJsonCoercionFinish(ExprState *state, ExprEvalStep *op)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5248,1
    - Dst: foreach
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5253,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5255,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5259,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5263,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - state
    - op
    argTypes:
    - ExprState*
    - ExprEvalStep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5265
      start: 5245
    functionDepth: 3
    functionLinenumber: 5245
    functionLinenumberEnd: 5265
    functionName: ExecEvalGroupingFunc
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - Int32GetDatum
    - foreach
    - castNode
    - bms_is_member
    - lfirst_int
    linkageType: ''
    returnType: void
    signature: void ExecEvalGroupingFunc(ExprState *state, ExprEvalStep *op)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5276,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5280,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5286,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5286,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5290,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5290,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5294,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5294,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5298,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5301,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5304
      start: 5272
    functionDepth: 1
    functionLinenumber: 5272
    functionLinenumberEnd: 5304
    functionName: ExecEvalMergeSupportFunc
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - cstring_to_text_with_len
    - elog
    - PointerGetDatum
    - castNode
    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:5315,1
    - Dst: ExecSubPlan
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5318
      start: 5309
    functionDepth: 2
    functionLinenumber: 5309
    functionLinenumberEnd: 5318
    functionName: ExecEvalSubPlan
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - check_stack_depth
    - ExecSubPlan
    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:5337,1
    - Dst: ExecFilterJunk
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5394,1
    - Dst: lookup_rowtype_tupdesc_domain
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5432,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5438,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5439,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5440,1
    - Dst: errdetail_plural
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5441,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5449,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5450,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5455,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5456,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5457,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5458,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5459,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5461,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5473,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5474,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5475,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5477,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5486,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5487,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5488,1
    - Dst: exec_rt_fetch
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5515,1
    - Dst: ExecTypeSetColNames
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5519,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5524,1
    - Dst: slot_getallattrs
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5533,1
    - Dst: Assert
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5541,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5545,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5546,1
    - Dst: ereport
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5554,1
    - Dst: errcode
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5555,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5556,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5557,1
    - Dst: toast_build_flattened_tuple
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5567,1
    - Dst: HeapTupleHeaderSetTypeId
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5578,1
    - Dst: HeapTupleHeaderSetTypMod
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5579,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5581,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 86
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5583
      start: 5326
    functionDepth: 4
    functionLinenumber: 5326
    functionLinenumberEnd: 5583
    functionName: ExecEvalWholeRowVar
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - MemoryContextSwitchTo
    - CreateTupleDescCopy
    - exec_rt_fetch
    - ExecTypeSetColNames
    - HeapTupleHeaderSetTypMod
    - lookup_rowtype_tupdesc_domain
    - errdetail
    - slot_getallattrs
    - errmsg
    - errdetail_plural
    - TupleDescAttr
    - format_type_be
    - ReleaseTupleDesc
    - Assert
    - HeapTupleHeaderSetTypeId
    - BlessTupleDesc
    - ereport
    - PointerGetDatum
    - ExecFilterJunk
    - TupleDescCompactAttr
    - toast_build_flattened_tuple
    - errcode
    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:5603,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5608,1
    - Dst: elog
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5609,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 4
    argNames:
    - state
    - op
    - econtext
    - slot
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5610
      start: 5585
    functionDepth: 2
    functionLinenumber: 5585
    functionLinenumberEnd: 5610
    functionName: ExecEvalSysVar
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 7
    functionsReached:
    - unlikely
    - slot_getsysattr
    - 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:5629,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5630,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5635,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - aggstate
    - pertrans
    - pergroup
    - aggcontext
    argTypes:
    - AggState*
    - AggStatePerTrans
    - AggStatePerGroup
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5636
      start: 5616
    functionDepth: 1
    functionLinenumber: 5616
    functionLinenumberEnd: 5636
    functionName: ExecAggInitGroup
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 4
    functionsReached:
    - MemoryContextSwitchTo
    - datumCopy
    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:5674,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5678,1
    - Dst: DatumIsReadWriteExpandedObject
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5679,1
    - Dst: MemoryContextGetParent
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5682,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5682,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5685,1
    - Dst: DatumIsReadWriteExpandedObject
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5701,1
    - Dst: DeleteExpandedObject
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5704,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5706,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5706,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: 5710
      start: 5669
    functionDepth: 1
    functionLinenumber: 5669
    functionLinenumberEnd: 5710
    functionName: ExecAggCopyTransValue
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - MemoryContextSwitchTo
    - DatumIsReadWriteExpandedObject
    - datumCopy
    - DeleteExpandedObject
    - MemoryContextGetParent
    - DatumGetPointer
    - DatumGetEOHP
    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:5726,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5726,1
    - Dst: pfree
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5732,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5732,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5739,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5741,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5744,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 2
    argNames:
    - aggstate
    - pertrans
    argTypes:
    - AggState*
    - AggStatePerTrans
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5753
      start: 5718
    functionDepth: 1
    functionLinenumber: 5718
    functionLinenumberEnd: 5753
    functionName: ExecEvalPreOrderedDistinctSingle
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - pfree
    - MemoryContextSwitchTo
    - FunctionCall2Coll
    - datumCopy
    - 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:5775,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5777,1
    - Dst: ExecQual
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5787,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5790,1
    - Dst: ExecCopySlot
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5793,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - aggstate
    - pertrans
    argTypes:
    - AggState*
    - AggStatePerTrans
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5803
      start: 5761
    functionDepth: 3
    functionLinenumber: 5761
    functionLinenumberEnd: 5803
    functionName: ExecEvalPreOrderedDistinctMulti
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - ExecClearTuple
    - ExecStoreVirtualTuple
    - ExecCopySlot
    - ExecQual
    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:5815,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5817
      start: 5808
    functionDepth: 1
    functionLinenumber: 5808
    functionLinenumberEnd: 5817
    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:5829,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5831,1
    - Dst: tuplesort_puttupleslot
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5832,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5833
      start: 5822
    functionDepth: 2
    functionLinenumber: 5822
    functionLinenumberEnd: 5833
    functionName: ExecEvalAggOrderedTransTuple
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 3
    functionsReached:
    - ExecClearTuple
    - ExecStoreVirtualTuple
    - tuplesort_puttupleslot
    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:5853,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5859,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5864,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: 5865
      start: 5836
    functionDepth: 1
    functionLinenumber: 5836
    functionLinenumberEnd: 5865
    functionName: ExecAggPlainTransByVal
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 5
    functionsReached:
    - MemoryContextSwitchTo
    - FunctionCallInvoke
    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:5885,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5891,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5907,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5907,1
    - Dst: ExecAggCopyTransValue
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5908,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/executor/execExprInterp.c:5916,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: 5917
      start: 5868
    functionDepth: 2
    functionLinenumber: 5868
    functionLinenumberEnd: 5917
    functionName: ExecAggPlainTransByRef
    functionSourceFile: /src/postgres/src/backend/executor/execExprInterp.c
    functionUses: 5
    functionsReached:
    - MemoryContextSwitchTo
    - DatumGetPointer
    - FunctionCallInvoke
    - ExecAggCopyTransValue
    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
      Src: /src/postgres/src/backend/partitioning/partprune.c:249,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:254,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:276,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/partitioning/partprune.c:278,1
    - Dst: IS_PARTITIONED_REL
      Src: /src/postgres/src/backend/partitioning/partprune.c:279,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:282,1
    - Dst: add_part_relids
      Src: /src/postgres/src/backend/partitioning/partprune.c:294,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:297,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:311,1
    - Dst: make_partitionedrel_pruneinfo
      Src: /src/postgres/src/backend/partitioning/partprune.c:315,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:324,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/partitioning/partprune.c:325,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partprune.c:330,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/partitioning/partprune.c:340,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/partitioning/partprune.c:341,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/partitioning/partprune.c:351,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partprune.c:351,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/partitioning/partprune.c:356,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partprune.c:356,1
    - Dst: bms_del_members
      Src: /src/postgres/src/backend/partitioning/partprune.c:357,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:364,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partprune.c:366,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 44
    argCount: 4
    argNames:
    - root
    - parentrel
    - subpaths
    - prunequal
    argTypes:
    - PlannerInfo*
    - RelOptInfo*
    - List*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 223
    functionDepth: 6
    functionLinenumber: 223
    functionLinenumberEnd: 367
    functionName: make_partition_pruneinfo
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 2
    functionsReached:
    - pfree
    - Assert
    - bms_del_members
    - bms_copy
    - add_part_relids
    - palloc0
    - list_length
    - bms_add_range
    - find_base_rel
    - lappend
    - IS_PARTITIONED_REL
    - make_partitionedrel_pruneinfo
    - bms_join
    - makeNode
    - bms_num_members
    - lfirst
    - 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:254,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:276,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/partitioning/partprune.c:278,1
    - Dst: IS_PARTITIONED_REL
      Src: /src/postgres/src/backend/partitioning/partprune.c:279,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:282,1
    - Dst: add_part_relids
      Src: /src/postgres/src/backend/partitioning/partprune.c:294,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:297,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 252
    functionDepth: 3
    functionLinenumber: 252
    functionLinenumberEnd: 302
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 437
    functionsReached:
    - Assert
    - add_part_relids
    - find_base_rel
    - IS_PARTITIONED_REL
    - lfirst
    - 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:311,1
    - Dst: make_partitionedrel_pruneinfo
      Src: /src/postgres/src/backend/partitioning/partprune.c:315,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:324,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/partitioning/partprune.c:325,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 309
    functionDepth: 6
    functionLinenumber: 309
    functionLinenumberEnd: 328
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 437
    functionsReached:
    - make_partitionedrel_pruneinfo
    - bms_join
    - lappend
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, allpartrelids)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:405,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:406,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:411,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:412,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/partitioning/partprune.c:417,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:418,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:423,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - allpartrelids
    - partrelids
    argTypes:
    - List*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 398
    functionDepth: 6
    functionLinenumber: 398
    functionLinenumberEnd: 424
    functionName: add_part_relids
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 2
    functionsReached:
    - Assert
    - bms_add_members
    - lappend
    - bms_next_member
    - lfirst
    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:411,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:412,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/partitioning/partprune.c:417,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:418,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 409
    functionDepth: 4
    functionLinenumber: 409
    functionLinenumberEnd: 421
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 437
    functionsReached:
    - bms_add_members
    - bms_next_member
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, allpartrelids)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/partitioning/partprune.c:468,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:472,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/partitioning/partprune.c:474,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:490,1
    - Dst: bms_equal
      Src: /src/postgres/src/backend/partitioning/partprune.c:510,1
    - Dst: find_appinfos_by_relids
      Src: /src/postgres/src/backend/partitioning/partprune.c:513,1
    - Dst: adjust_appendrel_attrs
      Src: /src/postgres/src/backend/partitioning/partprune.c:517,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partprune.c:522,1
    - Dst: adjust_appendrel_attrs_multilevel
      Src: /src/postgres/src/backend/partitioning/partprune.c:535,1
    - Dst: gen_partprune_steps
      Src: /src/postgres/src/backend/partitioning/partprune.c:548,1
    - Dst: gen_partprune_steps
      Src: /src/postgres/src/backend/partitioning/partprune.c:582,1
    - Dst: get_partkey_exec_paramids
      Src: /src/postgres/src/backend/partitioning/partprune.c:598,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/partitioning/partprune.c:600,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/partitioning/partprune.c:614,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:621,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partprune.c:627,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:641,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/partitioning/partprune.c:642,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partprune.c:656,1
    - Dst: memset
      Src: /src/postgres/src/backend/partitioning/partprune.c:657,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partprune.c:658,1
    - Dst: memset
      Src: /src/postgres/src/backend/partitioning/partprune.c:659,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/partitioning/partprune.c:660,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/partitioning/partprune.c:661,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:665,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:671,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/partitioning/partprune.c:675,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:689,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:700,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:703,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:711,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/partitioning/partprune.c:711,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partprune.c:722,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: 727
      start: 444
    functionDepth: 6
    functionLinenumber: 444
    functionLinenumberEnd: 727
    functionName: make_partitionedrel_pruneinfo
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 2
    functionsReached:
    - adjust_appendrel_attrs_multilevel
    - makeNode
    - pfree
    - bms_is_empty
    - bms_equal
    - bms_next_member
    - get_partkey_exec_paramids
    - find_base_rel
    - lappend
    - palloc
    - lfirst
    - bms_add_member
    - gen_partprune_steps
    - Assert
    - find_appinfos_by_relids
    - memset
    - planner_rt_fetch
    - adjust_appendrel_attrs
    - palloc0
    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:641,1
    - Dst: find_base_rel
      Src: /src/postgres/src/backend/partitioning/partprune.c:642,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partprune.c:656,1
    - Dst: memset
      Src: /src/postgres/src/backend/partitioning/partprune.c:657,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partprune.c:658,1
    - Dst: memset
      Src: /src/postgres/src/backend/partitioning/partprune.c:659,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/partitioning/partprune.c:660,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/partitioning/partprune.c:661,1
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:665,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:671,1
    - Dst: planner_rt_fetch
      Src: /src/postgres/src/backend/partitioning/partprune.c:675,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:689,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:700,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:703,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:711,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/partitioning/partprune.c:711,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 639
    functionDepth: 3
    functionLinenumber: 639
    functionLinenumberEnd: 720
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 437
    functionsReached:
    - Assert
    - memset
    - bms_is_empty
    - planner_rt_fetch
    - palloc0
    - find_base_rel
    - palloc
    - bms_next_member
    - lfirst
    - 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:747,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partprune.c:758,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/partitioning/partprune.c:761,1
    - Dst: gen_partprune_steps_internal
      Src: /src/postgres/src/backend/partitioning/partprune.c:765,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - rel
    - clauses
    - target
    - context
    argTypes:
    - RelOptInfo*
    - List*
    - PartClauseTarget
    - GeneratePruningStepsContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 742
    functionDepth: 5
    functionLinenumber: 742
    functionLinenumberEnd: 766
    functionName: gen_partprune_steps
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 1
    functionsReached:
    - memset
    - partition_bound_has_default
    - list_concat_copy
    - 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:786,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/partitioning/partprune.c:797,1
    - Dst: gen_partprune_steps
      Src: /src/postgres/src/backend/partitioning/partprune.c:804,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/partitioning/partprune.c:812,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/partitioning/partprune.c:821,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: 778
    functionDepth: 6
    functionLinenumber: 778
    functionLinenumberEnd: 833
    functionName: prune_append_rel_partitions
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 1
    functionsReached:
    - Assert
    - palloc0
    - list_length
    - bms_add_range
    - get_matching_partitions
    - gen_partprune_steps
    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:
    - nodeTag
    - Assert
    - partition_bound_has_default
    - palloc0
    - bms_add_range
    - list_length
    - perform_pruning_combine_step
    - elog
    - perform_pruning_base_step
    - partition_bound_accepts_nulls
    - bms_next_member
    - lfirst
    - bms_add_member
    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: 437
    functionsReached:
    - nodeTag
    - perform_pruning_combine_step
    - elog
    - perform_pruning_base_step
    - lfirst
    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:
    - gen_prune_step_op
    - lappend_int
    - gen_prune_step_combine
    - list_length
    - bms_num_members
    - gen_partprune_steps_internal
    - predicate_refuted_by
    - list_concat
    - partition_bound_has_default
    - bms_is_empty
    - foreach
    - is_andclause
    - linitial
    - gen_prune_steps_from_opexps
    - llast
    - IsA
    - lappend
    - bms_is_member
    - lfirst
    - bms_add_member
    - Assert
    - memset
    - is_orclause
    - list_make1
    - DatumGetBool
    - match_clause_to_partition_key
    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: 439
    functionsReached:
    - Assert
    - list_concat
    - linitial
    - lappend_int
    - bms_is_member
    - is_orclause
    - IsA
    - list_make1
    - foreach
    - llast
    - gen_prune_step_combine
    - lappend
    - bms_add_member
    - is_andclause
    - DatumGetBool
    - match_clause_to_partition_key
    - lfirst
    - gen_partprune_steps_internal
    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: 439
    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:
    - makeNode
    - lappend
    - Assert
    - 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:
    - makeNode
    - lappend
    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:
    - Assert
    - get_steps_using_prefix
    - list_concat
    - memset
    - list_head
    - llast
    - elog
    - lappend
    - bms_is_member
    - lfirst
    - 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: 439
    functionsReached:
    - elog
    - lappend
    - lfirst
    - get_op_opfamily_properties
    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: 439
    functionsReached:
    - Assert
    - get_steps_using_prefix
    - list_concat
    - list_head
    - lappend
    - lfirst
    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
    - lappend
    - lfirst
    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
    - lappend
    - lfirst
    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
    - lappend
    - lfirst
    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: 439
    functionsReached:
    - lappend
    - lfirst
    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
    - list_concat
    - lfirst
    - get_steps_using_prefix
    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: 64
    BranchProfiles: []
    Callsites:
    - Dst: match_boolean_partition_clause
      Src: /src/postgres/src/backend/partitioning/partprune.c:1834,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/partitioning/partprune.c:1854,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:1858,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:1858,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:1871,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/partitioning/partprune.c:1874,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/partitioning/partprune.c:1875,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/partitioning/partprune.c:1880,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partprune.c:1881,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/partitioning/partprune.c:1881,1
    - Dst: gen_partprune_steps_internal
      Src: /src/postgres/src/backend/partitioning/partprune.c:1884,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partprune.c:1893,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:1916,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partprune.c:1917,1
    - Dst: get_leftop
      Src: /src/postgres/src/backend/partitioning/partprune.c:1931,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:1932,1
    - Dst: get_rightop
      Src: /src/postgres/src/backend/partitioning/partprune.c:1934,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:1935,1
    - Dst: equal
      Src: /src/postgres/src/backend/partitioning/partprune.c:1940,1
    - Dst: equal
      Src: /src/postgres/src/backend/partitioning/partprune.c:1942,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/partitioning/partprune.c:1950,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/partitioning/partprune.c:1951,1
    - Dst: PartCollMatchesExprColl
      Src: /src/postgres/src/backend/partitioning/partprune.c:1964,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/partitioning/partprune.c:1982,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/partitioning/partprune.c:1984,1
    - Dst: get_negator
      Src: /src/postgres/src/backend/partitioning/partprune.c:1995,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/partitioning/partprune.c:1996,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/partitioning/partprune.c:1996,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/partitioning/partprune.c:1998,1
    - Dst: op_strict
      Src: /src/postgres/src/backend/partitioning/partprune.c:2015,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:2038,1
    - Dst: contain_var_clause
      Src: /src/postgres/src/backend/partitioning/partprune.c:2054,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/partitioning/partprune.c:2061,1
    - Dst: pull_exec_paramids
      Src: /src/postgres/src/backend/partitioning/partprune.c:2068,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/partitioning/partprune.c:2069,1
    - Dst: op_volatile
      Src: /src/postgres/src/backend/partitioning/partprune.c:2087,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/partitioning/partprune.c:2120,1
    - Dst: get_opfamily_proc
      Src: /src/postgres/src/backend/partitioning/partprune.c:2131,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partprune.c:2137,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/partitioning/partprune.c:2143,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partprune.c:2150,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2154,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/partitioning/partprune.c:2154,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:2172,1
    - Dst: linitial
      Src: /src/postgres/src/backend/partitioning/partprune.c:2177,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/partitioning/partprune.c:2178,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:2183,1
    - Dst: equal
      Src: /src/postgres/src/backend/partitioning/partprune.c:2187,1
    - Dst: PartCollMatchesExprColl
      Src: /src/postgres/src/backend/partitioning/partprune.c:2188,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/partitioning/partprune.c:2199,1
    - Dst: get_negator
      Src: /src/postgres/src/backend/partitioning/partprune.c:2206,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/partitioning/partprune.c:2207,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/partitioning/partprune.c:2207,1
    - Dst: get_op_opfamily_properties
      Src: /src/postgres/src/backend/partitioning/partprune.c:2213,1
    - Dst: op_strict
      Src: /src/postgres/src/backend/partitioning/partprune.c:2228,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:2236,1
    - Dst: contain_var_clause
      Src: /src/postgres/src/backend/partitioning/partprune.c:2252,1
    - Dst: contain_volatile_functions
      Src: /src/postgres/src/backend/partitioning/partprune.c:2259,1
    - Dst: pull_exec_paramids
      Src: /src/postgres/src/backend/partitioning/partprune.c:2266,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/partitioning/partprune.c:2267,1
    - Dst: op_volatile
      Src: /src/postgres/src/backend/partitioning/partprune.c:2285,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:2301,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/partitioning/partprune.c:2321,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/partitioning/partprune.c:2322,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/partitioning/partprune.c:2322,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/partitioning/partprune.c:2324,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/partitioning/partprune.c:2325,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/partitioning/partprune.c:2345,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/partitioning/partprune.c:2345,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:2348,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:2351,1
    - Dst: castNode
      Src: /src/postgres/src/backend/partitioning/partprune.c:2353,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/partitioning/partprune.c:2383,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:2384,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:2386,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partprune.c:2393,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partprune.c:2394,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/partitioning/partprune.c:2394,1
    - Dst: gen_partprune_steps_internal
      Src: /src/postgres/src/backend/partitioning/partprune.c:2397,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:2404,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:2409,1
    - Dst: equal
      Src: /src/postgres/src/backend/partitioning/partprune.c:2413,1
    CyclomaticComplexity: 70
    EdgeCount: 70
    ICount: 215
    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: 2436
      start: 1818
    functionDepth: 7
    functionLinenumber: 1818
    functionLinenumberEnd: 2436
    functionName: match_clause_to_partition_key
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 2
    functionsReached:
    - pull_exec_paramids
    - op_strict
    - get_typlenbyvalalign
    - list_length
    - castNode
    - contain_volatile_functions
    - makeNode
    - contain_var_clause
    - gen_partprune_steps_internal
    - deconstruct_array
    - equal
    - DatumGetArrayTypeP
    - PartCollMatchesExprColl
    - bms_is_empty
    - op_volatile
    - lsecond
    - get_negator
    - make_opclause
    - linitial
    - IsA
    - get_leftop
    - elog
    - lappend
    - OidIsValid
    - palloc
    - get_opfamily_proc
    - get_commutator
    - get_op_opfamily_properties
    - op_in_opfamily
    - ARR_ELEMTYPE
    - lfirst
    - Assert
    - makeBoolExpr
    - match_boolean_partition_clause
    - list_make2
    - list_make1
    - get_rightop
    - copyObject
    - makeConst
    linkageType: ''
    returnType: PartClauseMatchStatus
    signature: "PartClauseMatchStatus match_clause_to_partition_key(GeneratePruningStepsContext
      *context,\n\t\t\t\t\t\t\t  Expr *clause, 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:2383,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:2384,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:2386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2387
      start: 2379
    functionDepth: 6
    functionLinenumber: 2379
    functionLinenumberEnd: 2387
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 439
    functionsReached:
    - lappend
    - lfirst
    - make_opclause
    linkageType: ''
    returnType: void
    signature: void foreach(lc1, elem_exprs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2476,1
    - Dst: gen_prune_step_op
      Src: /src/postgres/src/backend/partitioning/partprune.c:2487,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partprune.c:2490,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/partitioning/partprune.c:2491,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partprune.c:2493,1
    - Dst: get_steps_using_prefix_recurse
      Src: /src/postgres/src/backend/partitioning/partprune.c:2497,1
    - Dst: list_head
      Src: /src/postgres/src/backend/partitioning/partprune.c:2504,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: 2506
      start: 2466
    functionDepth: 7
    functionLinenumber: 2466
    functionLinenumberEnd: 2506
    functionName: get_steps_using_prefix
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 3
    functionsReached:
    - gen_prune_step_op
    - Assert
    - list_head
    - list_make1_oid
    - list_make1
    - get_steps_using_prefix_recurse
    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:2542,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2544,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:2545,1
    - Dst: llast
      Src: /src/postgres/src/backend/partitioning/partprune.c:2546,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:2561,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:2581,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/partitioning/partprune.c:2585,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:2586,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/partitioning/partprune.c:2589,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/partitioning/partprune.c:2590,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2595,1
    - Dst: get_steps_using_prefix_recurse
      Src: /src/postgres/src/backend/partitioning/partprune.c:2599,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/partitioning/partprune.c:2609,1
    - Dst: list_free
      Src: /src/postgres/src/backend/partitioning/partprune.c:2611,1
    - Dst: list_free
      Src: /src/postgres/src/backend/partitioning/partprune.c:2612,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2625,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partprune.c:2625,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/partitioning/partprune.c:2626,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2634,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partprune.c:2636,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/partitioning/partprune.c:2636,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:2640,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2645,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/partitioning/partprune.c:2648,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:2649,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:2650,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/partitioning/partprune.c:2653,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/partitioning/partprune.c:2654,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/partitioning/partprune.c:2655,1
    - Dst: gen_prune_step_op
      Src: /src/postgres/src/backend/partitioning/partprune.c:2657,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:2661,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: 2666
      start: 2524
    functionDepth: 7
    functionLinenumber: 2524
    functionLinenumberEnd: 2666
    functionName: get_steps_using_prefix_recurse
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 2
    functionsReached:
    - check_stack_depth
    - gen_prune_step_op
    - Assert
    - list_concat
    - list_copy
    - lappend_oid
    - bms_is_empty
    - llast
    - list_length
    - get_steps_using_prefix_recurse
    - lappend
    - bms_num_members
    - lfirst
    - list_free
    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:2561,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2565
      start: 2559
    functionDepth: 1
    functionLinenumber: 2559
    functionLinenumberEnd: 2565
    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:2581,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/partitioning/partprune.c:2585,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:2586,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/partitioning/partprune.c:2589,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/partitioning/partprune.c:2590,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2595,1
    - Dst: get_steps_using_prefix_recurse
      Src: /src/postgres/src/backend/partitioning/partprune.c:2599,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/partitioning/partprune.c:2609,1
    - Dst: list_free
      Src: /src/postgres/src/backend/partitioning/partprune.c:2611,1
    - Dst: list_free
      Src: /src/postgres/src/backend/partitioning/partprune.c:2612,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2613
      start: 2575
    functionDepth: 8
    functionLinenumber: 2575
    functionLinenumberEnd: 2613
    functionName: for_each_cell
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 2
    functionsReached:
    - Assert
    - list_concat
    - list_copy
    - lappend_oid
    - get_steps_using_prefix_recurse
    - lappend
    - lfirst
    - list_free
    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:2640,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2645,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/partitioning/partprune.c:2648,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:2649,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:2650,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/partitioning/partprune.c:2653,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/partitioning/partprune.c:2654,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/partitioning/partprune.c:2655,1
    - Dst: gen_prune_step_op
      Src: /src/postgres/src/backend/partitioning/partprune.c:2657,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partprune.c:2661,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2662
      start: 2638
    functionDepth: 7
    functionLinenumber: 2638
    functionLinenumberEnd: 2662
    functionName: for_each_cell
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 2
    functionsReached:
    - gen_prune_step_op
    - Assert
    - list_copy
    - lappend_oid
    - lappend
    - lfirst
    linkageType: ''
    returnType: void
    signature: void for_each_cell(lc, prefix, start)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/partitioning/partprune.c:2696,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2706,1
    - Dst: bms_num_members
      Src: /src/postgres/src/backend/partitioning/partprune.c:2713,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2719,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:2722,1
    - Dst: compute_partition_hash_value
      Src: /src/postgres/src/backend/partitioning/partprune.c:2724,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/partitioning/partprune.c:2730,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/partitioning/partprune.c:2735,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: 2746
      start: 2691
    functionDepth: 3
    functionLinenumber: 2691
    functionLinenumberEnd: 2746
    functionName: get_matching_hash_bounds
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 0
    functionsReached:
    - Assert
    - bms_make_singleton
    - palloc0
    - bms_add_range
    - compute_partition_hash_value
    - bms_is_member
    - bms_num_members
    linkageType: ''
    returnType: PruneStepResult
    signature: "PruneStepResult *\nget_matching_hash_bounds(PartitionPruneContext
      *context,\n\t\t\t\t\t\t StrategyNumber opstrategy, Datum *values, int nvalues,\n\t\t\t\t\t\t
      FmgrInfo *partsupfunc, Bitmapset *nullkeys)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/partitioning/partprune.c:2773,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2782,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2783,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/partitioning/partprune.c:2787,1
    - Dst: partition_bound_accepts_nulls
      Src: /src/postgres/src/backend/partitioning/partprune.c:2794,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partprune.c:2797,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partprune.c:2807,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2821,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/partitioning/partprune.c:2822,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partprune.c:2824,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_list_bsearch
      Src: /src/postgres/src/backend/partitioning/partprune.c:2838,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2844,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:2845,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partprune.c:2850,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partprune.c:2864,1
    - Dst: partition_list_bsearch
      Src: /src/postgres/src/backend/partitioning/partprune.c:2869,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2875,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/partitioning/partprune.c:2876,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partprune.c:2879,1
    - Dst: partition_list_bsearch
      Src: /src/postgres/src/backend/partitioning/partprune.c:2886,1
    - Dst: partition_list_bsearch
      Src: /src/postgres/src/backend/partitioning/partprune.c:2921,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partprune.c:2941,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2945,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/partitioning/partprune.c:2946,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 75
    argCount: 6
    argNames:
    - context
    - opstrategy
    - value
    - nvalues
    - partsupfunc
    - nullkeys
    argTypes:
    - PartitionPruneContext*
    - StrategyNumber
    - Datum
    - int
    - FmgrInfo*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2948
      start: 2768
    functionDepth: 3
    functionLinenumber: 2768
    functionLinenumberEnd: 2948
    functionName: get_matching_list_bounds
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 0
    functionsReached:
    - Assert
    - bms_del_member
    - partition_bound_has_default
    - bms_is_empty
    - bms_make_singleton
    - partition_list_bsearch
    - palloc0
    - bms_add_range
    - elog
    - partition_bound_accepts_nulls
    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
      Src: /src/postgres/src/backend/partitioning/partprune.c:2984,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2995,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:2996,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/partitioning/partprune.c:3004,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partprune.c:3006,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partprune.c:3027,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3028,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/partitioning/partprune.c:3030,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partprune.c:3040,1
    - Dst: partition_range_datum_bsearch
      Src: /src/postgres/src/backend/partitioning/partprune.c:3046,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/partitioning/partprune.c:3057,1
    - Dst: partition_rbound_datum_cmp
      Src: /src/postgres/src/backend/partitioning/partprune.c:3081,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3091,1
    - Dst: partition_rbound_datum_cmp
      Src: /src/postgres/src/backend/partitioning/partprune.c:3092,1
    - Dst: partition_rbound_datum_cmp
      Src: /src/postgres/src/backend/partitioning/partprune.c:3121,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3131,1
    - Dst: partition_rbound_datum_cmp
      Src: /src/postgres/src/backend/partitioning/partprune.c:3132,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3145,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/partitioning/partprune.c:3146,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/partitioning/partprune.c:3159,1
    - Dst: partition_range_datum_bsearch
      Src: /src/postgres/src/backend/partitioning/partprune.c:3173,1
    - Dst: partition_rbound_datum_cmp
      Src: /src/postgres/src/backend/partitioning/partprune.c:3210,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3221,1
    - Dst: partition_rbound_datum_cmp
      Src: /src/postgres/src/backend/partitioning/partprune.c:3222,1
    - Dst: partition_range_datum_bsearch
      Src: /src/postgres/src/backend/partitioning/partprune.c:3254,1
    - Dst: partition_rbound_datum_cmp
      Src: /src/postgres/src/backend/partitioning/partprune.c:3272,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3283,1
    - Dst: partition_rbound_datum_cmp
      Src: /src/postgres/src/backend/partitioning/partprune.c:3284,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partprune.c:3318,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3322,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3323,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3339,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3358,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3362,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/partitioning/partprune.c:3364,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 123
    argCount: 6
    argNames:
    - context
    - opstrategy
    - values
    - nvalues
    - partsupfunc
    - nullkeys
    argTypes:
    - PartitionPruneContext*
    - StrategyNumber
    - Datum*
    - int
    - FmgrInfo*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3367
      start: 2979
    functionDepth: 3
    functionLinenumber: 2979
    functionLinenumberEnd: 3367
    functionName: get_matching_range_bounds
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 0
    functionsReached:
    - Assert
    - partition_range_datum_bsearch
    - partition_bound_has_default
    - bms_is_empty
    - bms_make_singleton
    - bms_add_range
    - palloc0
    - elog
    - partition_rbound_datum_cmp
    linkageType: ''
    returnType: PruneStepResult
    signature: "PruneStepResult *\nget_matching_range_bounds(PartitionPruneContext
      *context,\n\t\t\t\t\t\t  StrategyNumber opstrategy, 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:3379,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - expr
    argTypes:
    - Expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3382
      start: 3374
    functionDepth: 1
    functionLinenumber: 3374
    functionLinenumberEnd: 3382
    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:3389,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:3394,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/partitioning/partprune.c:3397,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - Bitmapset**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3398
      start: 3384
    functionDepth: 3
    functionLinenumber: 3384
    functionLinenumberEnd: 3398
    functionName: pull_exec_paramids_walker
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 1
    functionsReached:
    - IsA
    - expression_tree_walker
    - 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:3415,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:3418,1
    - Dst: foreach
      Src: /src/postgres/src/backend/partitioning/partprune.c:3421,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:3423,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:3426,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/partitioning/partprune.c:3427,1
    - Dst: pull_exec_paramids
      Src: /src/postgres/src/backend/partitioning/partprune.c:3428,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - steps
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3433
      start: 3407
    functionDepth: 3
    functionLinenumber: 3407
    functionLinenumberEnd: 3433
    functionName: get_partkey_exec_paramids
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 1
    functionsReached:
    - pull_exec_paramids
    - IsA
    - foreach
    - bms_join
    - lfirst
    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:3415,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:3418,1
    - Dst: foreach
      Src: /src/postgres/src/backend/partitioning/partprune.c:3421,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:3423,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:3426,1
    - Dst: bms_join
      Src: /src/postgres/src/backend/partitioning/partprune.c:3427,1
    - Dst: pull_exec_paramids
      Src: /src/postgres/src/backend/partitioning/partprune.c:3428,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3430
      start: 3413
    functionDepth: 3
    functionLinenumber: 3413
    functionLinenumberEnd: 3430
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 441
    functionsReached:
    - pull_exec_paramids
    - IsA
    - foreach
    - bms_join
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc, steps)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3458,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partprune.c:3458,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partprune.c:3458,1
    - Dst: list_head
      Src: /src/postgres/src/backend/partitioning/partprune.c:3461,1
    - Dst: list_head
      Src: /src/postgres/src/backend/partitioning/partprune.c:3462,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/partitioning/partprune.c:3475,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partprune.c:3492,1
    - Dst: PruneCxtStateIdx
      Src: /src/postgres/src/backend/partitioning/partprune.c:3493,1
    - Dst: partkey_datum_from_expr
      Src: /src/postgres/src/backend/partitioning/partprune.c:3495,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partprune.c:3507,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/partitioning/partprune.c:3516,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3517,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/partitioning/partprune.c:3517,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/partitioning/partprune.c:3527,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/partitioning/partprune.c:3531,1
    - Dst: lnext
      Src: /src/postgres/src/backend/partitioning/partprune.c:3538,1
    - Dst: lnext
      Src: /src/postgres/src/backend/partitioning/partprune.c:3539,1
    - Dst: PruneCxtStateIdx
      Src: /src/postgres/src/backend/partitioning/partprune.c:3547,1
    - Dst: get_matching_hash_bounds
      Src: /src/postgres/src/backend/partitioning/partprune.c:3553,1
    - Dst: get_matching_list_bounds
      Src: /src/postgres/src/backend/partitioning/partprune.c:3560,1
    - Dst: get_matching_range_bounds
      Src: /src/postgres/src/backend/partitioning/partprune.c:3567,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partprune.c:3574,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 48
    argCount: 2
    argNames:
    - context
    - opstep
    argTypes:
    - PartitionPruneContext*
    - PartitionPruneStepOp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3580
      start: 3443
    functionDepth: 4
    functionLinenumber: 3443
    functionLinenumberEnd: 3580
    functionName: perform_pruning_base_step
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 2
    functionsReached:
    - Assert
    - PruneCxtStateIdx
    - get_matching_range_bounds
    - list_head
    - lnext
    - partkey_datum_from_expr
    - list_length
    - elog
    - get_matching_hash_bounds
    - fmgr_info_cxt
    - OidIsValid
    - bms_is_member
    - fmgr_info_copy
    - palloc
    - lfirst_oid
    - lfirst
    - get_matching_list_bounds
    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
      Src: /src/postgres/src/backend/partitioning/partprune.c:3596,1
    - Dst: bms_add_range
      Src: /src/postgres/src/backend/partitioning/partprune.c:3609,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partprune.c:3610,1
    - Dst: partition_bound_accepts_nulls
      Src: /src/postgres/src/backend/partitioning/partprune.c:3611,1
    - Dst: foreach
      Src: /src/postgres/src/backend/partitioning/partprune.c:3618,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/partitioning/partprune.c:3620,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partprune.c:3630,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3632,1
    - Dst: bms_add_members
      Src: /src/postgres/src/backend/partitioning/partprune.c:3635,1
    - Dst: foreach
      Src: /src/postgres/src/backend/partitioning/partprune.c:3648,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/partitioning/partprune.c:3650,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partprune.c:3654,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3656,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/partitioning/partprune.c:3662,1
    - Dst: bms_int_members
      Src: /src/postgres/src/backend/partitioning/partprune.c:3671,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 44
    argCount: 3
    argNames:
    - context
    - cstep
    - step_results
    argTypes:
    - PartitionPruneContext*
    - PartitionPruneStepCombine*
    - PruneStepResult**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3685
      start: 3591
    functionDepth: 4
    functionLinenumber: 3591
    functionLinenumberEnd: 3685
    functionName: perform_pruning_combine_step
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 2
    functionsReached:
    - bms_int_members
    - Assert
    - bms_add_members
    - bms_copy
    - partition_bound_has_default
    - bms_add_range
    - palloc0
    - foreach
    - elog
    - partition_bound_accepts_nulls
    - lfirst_int
    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: 15
    BranchProfiles: []
    Callsites:
    - Dst: IsBuiltinBooleanOpfamily
      Src: /src/postgres/src/backend/partitioning/partprune.c:3713,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:3716,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:3721,1
    - Dst: equal
      Src: /src/postgres/src/backend/partitioning/partprune.c:3724,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/partitioning/partprune.c:3732,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/partitioning/partprune.c:3738,1
    - Dst: is_notclause
      Src: /src/postgres/src/backend/partitioning/partprune.c:3754,1
    - Dst: get_notclausearg
      Src: /src/postgres/src/backend/partitioning/partprune.c:3756,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partprune.c:3758,1
    - Dst: equal
      Src: /src/postgres/src/backend/partitioning/partprune.c:3762,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/partitioning/partprune.c:3763,1
    - Dst: equal
      Src: /src/postgres/src/backend/partitioning/partprune.c:3764,1
    - Dst: negate_clause
      Src: /src/postgres/src/backend/partitioning/partprune.c:3764,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/partitioning/partprune.c:3765,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 41
    argCount: 5
    argNames:
    - partopfamily
    - clause
    - partkey
    - outconst
    - notclause
    argTypes:
    - Oid
    - Expr*
    - Expr*
    - Expr**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3771
      start: 3700
    functionDepth: 3
    functionLinenumber: 3700
    functionLinenumberEnd: 3771
    functionName: match_boolean_partition_clause
    functionSourceFile: /src/postgres/src/backend/partitioning/partprune.c
    functionUses: 1
    functionsReached:
    - equal
    - IsBuiltinBooleanOpfamily
    - negate_clause
    - IsA
    - get_notclausearg
    - makeBoolConst
    - is_notclause
    linkageType: ''
    returnType: PartClauseMatchStatus
    signature: "PartClauseMatchStatus match_boolean_partition_clause(Oid partopfamily,
      Expr *clause, 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:3792,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partprune.c:3809,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/partitioning/partprune.c:3813,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: 3815
      start: 3787
    functionDepth: 2
    functionLinenumber: 3787
    functionLinenumberEnd: 3815
    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: 93
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 93
    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:251,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:254,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:259,1
    - Dst: get_qual_for_hash
      Src: /src/postgres/src/backend/partitioning/partbounds.c:260,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:264,1
    - Dst: get_qual_for_list
      Src: /src/postgres/src/backend/partitioning/partbounds.c:265,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:269,1
    - Dst: get_qual_for_range
      Src: /src/postgres/src/backend/partitioning/partbounds.c:270,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - parent
    - spec
    argTypes:
    - Relation
    - PartitionBoundSpec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 275
    functionName: get_qual_from_partbound
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - RelationGetPartitionKey
    - Assert
    - get_qual_for_hash
    - get_qual_for_list
    - get_qual_for_range
    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:304,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:322,1
    - Dst: create_hash_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:329,1
    - Dst: create_list_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:332,1
    - Dst: create_range_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:335,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:338,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 4
    argNames:
    - boundspecs
    - nparts
    - key
    - mapping
    argTypes:
    - PartitionBoundSpec**
    - int
    - PartitionKey
    - int**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 340
    functionName: partition_bounds_create
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - Assert
    - create_list_bounds
    - create_hash_bounds
    - palloc
    - create_range_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
      Src: /src/postgres/src/backend/partitioning/partbounds.c:357,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:364,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:372,1
    - Dst: qsort
      Src: /src/postgres/src/backend/partitioning/partbounds.c:380,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/partitioning/partbounds.c:387,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:391,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:400,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/partitioning/partbounds.c:413,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/partitioning/partbounds.c:414,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:419,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partbounds.c:426,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 37
    argCount: 4
    argNames:
    - boundspecs
    - nparts
    - key
    - mapping
    argTypes:
    - PartitionBoundSpec**
    - int
    - PartitionKey
    - int**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 346
    functionDepth: 1
    functionLinenumber: 346
    functionLinenumberEnd: 429
    functionName: create_hash_bounds
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - qsort
    - Int32GetDatum
    - palloc0
    - elog
    - 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:445,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/partitioning/partbounds.c:447,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - boundspecs
    - nparts
    argTypes:
    - PartitionBoundSpec**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 435
    functionDepth: 1
    functionLinenumber: 435
    functionLinenumberEnd: 455
    functionName: get_non_null_list_datum_count
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - lfirst_node
    - foreach
    linkageType: ''
    returnType: int
    signature: int get_non_null_list_datum_count(PartitionBoundSpec **boundspecs,
      int nparts)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/partitioning/partbounds.c:476,1
    - Dst: get_non_null_list_datum_count
      Src: /src/postgres/src/backend/partitioning/partbounds.c:482,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:484,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:493,1
    - Dst: foreach
      Src: /src/postgres/src/backend/partitioning/partbounds.c:506,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/partitioning/partbounds.c:508,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:523,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:530,1
    - Dst: qsort_arg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:532,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/partitioning/partbounds.c:536,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:540,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:547,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:560,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partbounds.c:571,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:583,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:597,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:598,1
    - Dst: partition_bound_accepts_nulls
      Src: /src/postgres/src/backend/partitioning/partbounds.c:622,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partbounds.c:623,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partbounds.c:638,1
    - Dst: partition_bound_accepts_nulls
      Src: /src/postgres/src/backend/partitioning/partbounds.c:646,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partbounds.c:648,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partbounds.c:661,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/partitioning/partbounds.c:662,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:668,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 70
    argCount: 4
    argNames:
    - boundspecs
    - nparts
    - key
    - mapping
    argTypes:
    - PartitionBoundSpec**
    - int
    - PartitionKey
    - int**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 461
    functionDepth: 3
    functionLinenumber: 461
    functionLinenumberEnd: 670
    functionName: create_list_bounds
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - lfirst_node
    - partition_bound_has_default
    - datumCopy
    - palloc0
    - foreach
    - get_non_null_list_datum_count
    - partition_bound_accepts_nulls
    - elog
    - qsort_arg
    - palloc
    - bms_add_member
    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
      Src: /src/postgres/src/backend/partitioning/partbounds.c:694,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/partitioning/partbounds.c:702,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:713,1
    - Dst: make_one_partition_rbound
      Src: /src/postgres/src/backend/partitioning/partbounds.c:726,1
    - Dst: make_one_partition_rbound
      Src: /src/postgres/src/backend/partitioning/partbounds.c:727,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:732,1
    - Dst: qsort_arg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:736,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:743,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/partitioning/partbounds.c:771,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:775,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partbounds.c:792,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/partitioning/partbounds.c:806,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:808,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:817,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:826,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:827,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:840,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partbounds.c:868,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:873,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:879,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:883,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 78
    argCount: 4
    argNames:
    - boundspecs
    - nparts
    - key
    - mapping
    argTypes:
    - PartitionBoundSpec**
    - int
    - PartitionKey
    - int**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 676
    functionDepth: 1
    functionLinenumber: 676
    functionLinenumberEnd: 885
    functionName: create_range_bounds
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - FunctionCall2Coll
    - make_one_partition_rbound
    - DatumGetInt32
    - datumCopy
    - palloc0
    - elog
    - qsort_arg
    - palloc
    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:943,1
    - Dst: datumIsEqual
      Src: /src/postgres/src/backend/partitioning/partbounds.c:983,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: 990
      start: 895
    functionDepth: 1
    functionLinenumber: 895
    functionLinenumberEnd: 990
    functionName: partition_bounds_equal
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - datumIsEqual
    - Assert
    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: 4
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1014,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1022,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1024,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1031,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1033,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1041,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1047,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1055,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1063,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1089,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1094,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1095,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 41
    argCount: 2
    argNames:
    - src
    - key
    argTypes:
    - PartitionBoundInfo
    - PartitionKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1101
      start: 1001
    functionDepth: 3
    functionLinenumber: 1001
    functionLinenumberEnd: 1101
    functionName: partition_bounds_copy
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - Assert
    - bms_copy
    - datumCopy
    - memcpy
    - 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:1128,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1133,1
    - Dst: merge_list_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1157,1
    - Dst: merge_range_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1166,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: 1177
      start: 1117
    functionDepth: 1
    functionLinenumber: 1117
    functionLinenumberEnd: 1177
    functionName: partition_bounds_merge
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - Assert
    - merge_range_bounds
    - merge_list_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:1206,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1207,1
    - Dst: partition_bound_accepts_nulls
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1210,1
    - Dst: partition_bound_accepts_nulls
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1211,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1222,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1223,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1224,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1227,1
    - Dst: init_partition_map
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1229,1
    - Dst: init_partition_map
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1230,1
    - Dst: is_dummy_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1236,1
    - Dst: is_dummy_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1238,1
    - Dst: is_dummy_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1266,1
    - Dst: is_dummy_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1279,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1307,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1308,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1308,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1317,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1318,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1319,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1320,1
    - Dst: merge_matching_partitions
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1326,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1341,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1349,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1353,1
    - Dst: process_outer_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1354,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1374,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1375,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1387,1
    - Dst: process_inner_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1388,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1412,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1413,1
    - Dst: is_dummy_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1422,1
    - Dst: is_dummy_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1425,1
    - Dst: merge_null_partitions
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1430,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1435,1
    - Dst: merge_default_partitions
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1439,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1444,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1452,1
    - Dst: fix_merged_indexes
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1453,1
    - Dst: generate_matching_part_pairs
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1458,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1462,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1463,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1464,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1464,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1464,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1465,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1465,1
    - Dst: build_merged_partition_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1468,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1474,1
    - Dst: list_free
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1479,1
    - Dst: list_free
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1480,1
    - Dst: free_partition_map
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1481,1
    - Dst: free_partition_map
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1482,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: 1485
      start: 1197
    functionDepth: 6
    functionLinenumber: 1197
    functionLinenumberEnd: 1485
    functionName: merge_list_bounds
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - merge_default_partitions
    - process_inner_partition
    - lappend_int
    - list_length
    - build_merged_partition_bounds
    - init_partition_map
    - free_partition_map
    - partition_bound_has_default
    - merge_matching_partitions
    - fix_merged_indexes
    - process_outer_partition
    - is_dummy_partition
    - generate_matching_part_pairs
    - FunctionCall2Coll
    - DatumGetInt32
    - lappend
    - partition_bound_accepts_nulls
    - IS_OUTER_JOIN
    - list_free
    - Assert
    - merge_null_partitions
    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:1515,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1516,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1535,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1536,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1537,1
    - Dst: init_partition_map
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1540,1
    - Dst: init_partition_map
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1541,1
    - Dst: is_dummy_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1547,1
    - Dst: is_dummy_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1549,1
    - Dst: get_range_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1562,1
    - Dst: get_range_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1564,1
    - Dst: compare_range_partitions
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1597,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1611,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1612,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1614,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1615,1
    - Dst: merge_matching_partitions
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1622,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1625,1
    - Dst: get_merged_range_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1628,1
    - Dst: get_range_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1640,1
    - Dst: get_range_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1642,1
    - Dst: compare_range_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1653,1
    - Dst: compare_range_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1657,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1676,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1677,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1686,1
    - Dst: process_outer_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1688,1
    - Dst: get_range_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1704,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1710,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1713,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1714,1
    - Dst: process_inner_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1725,1
    - Dst: get_range_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1741,1
    - Dst: add_merged_range_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1750,1
    - Dst: merge_default_partitions
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1758,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1763,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1772,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1773,1
    - Dst: generate_matching_part_pairs
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1776,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1780,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1781,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1782,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1782,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1782,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1783,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1783,1
    - Dst: build_merged_partition_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1786,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1792,1
    - Dst: list_free
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1797,1
    - Dst: list_free
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1798,1
    - Dst: list_free
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1799,1
    - Dst: free_partition_map
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1800,1
    - Dst: free_partition_map
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1801,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: 1804
      start: 1505
    functionDepth: 4
    functionLinenumber: 1505
    functionLinenumberEnd: 1804
    functionName: merge_range_bounds
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - merge_default_partitions
    - process_inner_partition
    - list_length
    - build_merged_partition_bounds
    - init_partition_map
    - free_partition_map
    - get_range_partition
    - partition_bound_has_default
    - merge_matching_partitions
    - process_outer_partition
    - is_dummy_partition
    - generate_matching_part_pairs
    - get_merged_range_bounds
    - compare_range_partitions
    - compare_range_bounds
    - IS_OUTER_JOIN
    - list_free
    - Assert
    - add_merged_range_bounds
    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
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1817,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1818,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1820,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - rel
    - map
    argTypes:
    - RelOptInfo*
    - PartitionMap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1826
      start: 1810
    functionDepth: 0
    functionLinenumber: 1810
    functionLinenumberEnd: 1826
    functionName: init_partition_map
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - palloc
    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:1834,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1835,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1836,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - map
    argTypes:
    - PartitionMap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1837
      start: 1831
    functionDepth: 0
    functionLinenumber: 1831
    functionLinenumberEnd: 1837
    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:1847,1
    - Dst: IS_DUMMY_REL
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1849,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - rel
    - part_index
    argTypes:
    - RelOptInfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1852
      start: 1842
    functionDepth: 1
    functionLinenumber: 1842
    functionLinenumberEnd: 1852
    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:1870,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1873,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1892,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1893,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1928,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1940,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1941,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1951,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1952,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1960,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:1961,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: 1968
      start: 1861
    functionDepth: 1
    functionLinenumber: 1861
    functionLinenumberEnd: 1968
    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:1992,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2004,1
    - Dst: merge_matching_partitions
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2016,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2035,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2040,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2040,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2041,1
    - Dst: merge_partition_with_dummy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2046,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: 2050
      start: 1979
    functionDepth: 2
    functionLinenumber: 1979
    functionLinenumberEnd: 2050
    functionName: process_outer_partition
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - merge_matching_partitions
    - Assert
    - IS_OUTER_JOIN
    - 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:2074,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2086,1
    - Dst: merge_matching_partitions
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2098,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2112,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2114,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2118,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2123,1
    - Dst: merge_partition_with_dummy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2128,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: 2132
      start: 2061
    functionDepth: 2
    functionLinenumber: 2061
    functionLinenumberEnd: 2132
    functionName: process_inner_partition
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - merge_matching_partitions
    - Assert
    - IS_OUTER_JOIN
    - 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:2160,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2161,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2169,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2175,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2186,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2196,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2198,1
    - Dst: merge_partition_with_dummy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2199,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2205,1
    - Dst: merge_partition_with_dummy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2216,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2221,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2222,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2223,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2238,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2240,1
    - Dst: merge_matching_partitions
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2241,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2244,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: 2247
      start: 2146
    functionDepth: 2
    functionLinenumber: 2146
    functionLinenumberEnd: 2247
    functionName: merge_null_partitions
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - merge_matching_partitions
    - Assert
    - 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:2270,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2275,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2280,1
    - Dst: IS_OUTER_JOIN
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2294,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2296,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2299,1
    - Dst: merge_partition_with_dummy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2300,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2305,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2308,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2324,1
    - Dst: merge_partition_with_dummy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2325,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2330,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2333,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2337,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2346,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2347,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2348,1
    - Dst: merge_matching_partitions
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2349,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2354,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: 2356
      start: 2256
    functionDepth: 2
    functionLinenumber: 2256
    functionLinenumberEnd: 2356
    functionName: merge_default_partitions
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - merge_matching_partitions
    - Assert
    - 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:2371,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2372,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2373,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - map
    - index
    - next_index
    argTypes:
    - PartitionMap*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2378
      start: 2366
    functionDepth: 1
    functionLinenumber: 2366
    functionLinenumberEnd: 2378
    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:2393,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2395,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2422,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2423,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2425,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2428,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: 2429
      start: 2384
    functionDepth: 1
    functionLinenumber: 2384
    functionLinenumberEnd: 2429
    functionName: fix_merged_indexes
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - palloc
    - 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:2422,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2423,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2425,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2426
      start: 2420
    functionDepth: 1
    functionLinenumber: 2420
    functionLinenumberEnd: 2426
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 444
    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:2451,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2452,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2453,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2455,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2456,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2461,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2462,1
    - Dst: Max
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2463,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2472,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2482,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2503,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2505,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2509,1
    - Dst: pfree
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2510,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: 2511
      start: 2438
    functionDepth: 6
    functionLinenumber: 2438
    functionLinenumberEnd: 2511
    functionName: generate_matching_part_pairs
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - pfree
    - Assert
    - Max
    - lappend
    - palloc
    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:2523,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2527,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2531,1
    - Dst: foreach
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2533,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2534,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2538,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2538,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2540,1
    - Dst: foreach
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2542,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2543,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2546,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2551,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2552,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2559,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2559,1
    - Dst: palloc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2561,1
    - Dst: foreach
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2563,1
    - Dst: lfirst_int
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2564,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: 2570
      start: 2517
    functionDepth: 6
    functionLinenumber: 2517
    functionLinenumberEnd: 2570
    functionName: build_merged_partition_bounds
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - Assert
    - lappend_int
    - lfirst_int
    - foreach
    - list_length
    - palloc
    - lfirst
    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:2589,1
    - Dst: get_range_partition_internal
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2593,1
    - Dst: is_dummy_partition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2596,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: 2599
      start: 2580
    functionDepth: 2
    functionLinenumber: 2580
    functionLinenumberEnd: 2599
    functionName: get_range_partition
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - Assert
    - is_dummy_partition
    - get_range_partition_internal
    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:2612,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2626,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: 2648
      start: 2601
    functionDepth: 1
    functionLinenumber: 2601
    functionLinenumberEnd: 2648
    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:2674,1
    - Dst: compare_range_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2686,1
    - Dst: compare_range_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2695,1
    - Dst: compare_range_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2697,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: 2700
      start: 2661
    functionDepth: 1
    functionLinenumber: 2661
    functionLinenumberEnd: 2700
    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:2721,1
    - Dst: compare_range_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2721,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2723,1
    - Dst: compare_range_bounds
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2723,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2766,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: 2768
      start: 2710
    functionDepth: 1
    functionLinenumber: 2710
    functionLinenumberEnd: 2768
    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:2789,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2790,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2797,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2798,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2799,1
    - Dst: llast_int
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2802,1
    - Dst: llast
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2803,1
    - Dst: llast
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2804,1
    - Dst: partition_rbound_cmp
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2813,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2816,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2827,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2828,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2829,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2833,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2834,1
    - Dst: lappend_int
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2835,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: 2836
      start: 2774
    functionDepth: 6
    functionLinenumber: 2774
    functionLinenumberEnd: 2836
    functionName: add_merged_range_bounds
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - Assert
    - partition_rbound_cmp
    - lappend_int
    - llast
    - lappend
    - 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:2854,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2867,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2868,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2878,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - boundinfo
    - live_parts
    argTypes:
    - PartitionBoundInfo
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2887
      start: 2851
    functionDepth: 3
    functionLinenumber: 2851
    functionLinenumberEnd: 2887
    functionName: partitions_are_ordered
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - partition_bound_has_default
    - Assert
    - bms_is_member
    - 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:2899,1
    - Dst: RelationGetPartitionDesc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2900,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2914,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2918,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2919,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2920,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2921,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2922,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2929,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2930,1
    - Dst: partition_hash_bsearch
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2956,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2968,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2970,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2971,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2972,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2973,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2975,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2986,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2989,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2990,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2991,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2992,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/partitioning/partbounds.c:2995,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3008,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3011,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3012,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3013,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3014,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3016,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3051,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3057,1
    - Dst: partition_bound_accepts_nulls
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3060,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3061,1
    - Dst: foreach
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3063,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3065,1
    - Dst: partition_list_bsearch
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3073,1
    - Dst: partition_bound_accepts_nulls
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3085,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3103,1
    - Dst: make_one_partition_rbound
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3104,1
    - Dst: make_one_partition_rbound
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3105,1
    - Dst: partition_rbound_cmp
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3113,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3118,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3122,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3125,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3126,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3127,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3129,1
    - Dst: get_range_partbound_string
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3130,1
    - Dst: get_range_partbound_string
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3131,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3132,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3139,1
    - Dst: partition_bound_has_default
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3142,1
    - Dst: partition_range_bsearch
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3159,1
    - Dst: partition_rbound_cmp
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3183,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3195,1
    - Dst: abs
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3195,1
    - Dst: linitial
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3220,1
    - Dst: list_nth
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3221,1
    - Dst: abs
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3221,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3234,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3235,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3236,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3237,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3238,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3239,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 103
    argCount: 4
    argNames:
    - relname
    - parent
    - spec
    - pstate
    argTypes:
    - char*
    - Relation
    - PartitionBoundSpec*
    - ParseState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3241
      start: 2895
    functionDepth: 3
    functionLinenumber: 2895
    functionLinenumberEnd: 3241
    functionName: check_new_partition_bound
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - partition_range_bsearch
    - partition_hash_bsearch
    - errdetail
    - RelationGetPartitionKey
    - get_rel_name
    - partition_bound_has_default
    - partition_rbound_cmp
    - foreach
    - errmsg
    - lfirst_node
    - linitial
    - parser_errposition
    - DatumGetInt32
    - partition_list_bsearch
    - list_nth
    - get_range_partbound_string
    - partition_bound_accepts_nulls
    - RelationGetPartitionDesc
    - Assert
    - make_one_partition_rbound
    - ereport
    - abs
    - errcode
    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:3260,1
    - Dst: get_qual_for_range
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3261,1
    - Dst: get_proposed_default_constraint
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3263,1
    - Dst: map_partition_varattnos
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3270,1
    - Dst: PartConstraintImpliedByRelConstraint
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3278,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3280,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3281,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3282,1
    - Dst: find_all_inheritors
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3291,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3291,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3294,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3294,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3298,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3310,1
    - Dst: table_open
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3312,1
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3318,1
    - Dst: map_partition_varattnos
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3320,1
    - Dst: PartConstraintImpliedByRelConstraint
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3328,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3331,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3332,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3333,1
    - Dst: table_close
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3335,1
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3342,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3352,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3353,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3354,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3355,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3356,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3358,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3358,1
    - Dst: table_close
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3359,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3364,1
    - Dst: ExecPrepareExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3367,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3369,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3370,1
    - Dst: GetLatestSnapshot
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3370,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3371,1
    - Dst: table_beginscan
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3372,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3378,1
    - Dst: GetPerTupleMemoryContext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3378,1
    - Dst: table_scan_getnextslot
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3380,1
    - Dst: ExecCheck
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3384,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3385,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3386,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3387,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3388,1
    - Dst: errtable
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3389,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3391,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3392,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3395,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3396,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3397,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3398,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3399,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3401,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3401,1
    - Dst: table_close
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3402,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 53
    argCount: 3
    argNames:
    - parent
    - default_rel
    - new_spec
    argTypes:
    - Relation
    - Relation
    - PartitionBoundSpec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3404
      start: 3250
    functionDepth: 7
    functionLinenumber: 3250
    functionLinenumberEnd: 3404
    functionName: check_default_partition_contents
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - table_slot_create
    - CHECK_FOR_INTERRUPTS
    - table_scan_getnextslot
    - GetPerTupleExprContext
    - CreateExecutorState
    - RelationGetRelationName
    - get_qual_for_range
    - find_all_inheritors
    - table_endscan
    - ExecPrepareExpr
    - RelationGetRelid
    - table_open
    - RegisterSnapshot
    - errtable
    - errmsg
    - FreeExecutorState
    - PartConstraintImpliedByRelConstraint
    - ExecDropSingleTupleTableSlot
    - GetPerTupleMemoryContext
    - UnregisterSnapshot
    - map_partition_varattnos
    - ExecCheck
    - table_close
    - get_qual_for_list
    - get_proposed_default_constraint
    - make_ands_explicit
    - ResetExprContext
    - table_beginscan
    - GetLatestSnapshot
    - errmsg_internal
    - ereport
    - list_make1_oid
    - lfirst_oid
    - errcode
    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:3298,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3310,1
    - Dst: table_open
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3312,1
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3318,1
    - Dst: map_partition_varattnos
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3320,1
    - Dst: PartConstraintImpliedByRelConstraint
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3328,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3331,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3332,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3333,1
    - Dst: table_close
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3335,1
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3342,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3352,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3353,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3354,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3355,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3356,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3358,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3358,1
    - Dst: table_close
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3359,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3364,1
    - Dst: ExecPrepareExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3367,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3369,1
    - Dst: RegisterSnapshot
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3370,1
    - Dst: GetLatestSnapshot
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3370,1
    - Dst: table_slot_create
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3371,1
    - Dst: table_beginscan
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3372,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3378,1
    - Dst: GetPerTupleMemoryContext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3378,1
    - Dst: table_scan_getnextslot
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3380,1
    - Dst: ExecCheck
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3384,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3385,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3386,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3387,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3388,1
    - Dst: errtable
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3389,1
    - Dst: ResetExprContext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3391,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3392,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3395,1
    - Dst: table_endscan
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3396,1
    - Dst: UnregisterSnapshot
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3397,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3398,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3399,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3401,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3401,1
    - Dst: table_close
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3402,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3403
      start: 3296
    functionDepth: 4
    functionLinenumber: 3296
    functionLinenumberEnd: 3403
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 446
    functionsReached:
    - MemoryContextSwitchTo
    - table_slot_create
    - CHECK_FOR_INTERRUPTS
    - table_scan_getnextslot
    - GetPerTupleExprContext
    - CreateExecutorState
    - RelationGetRelationName
    - table_endscan
    - ExecPrepareExpr
    - RelationGetRelid
    - table_open
    - RegisterSnapshot
    - errtable
    - errmsg
    - FreeExecutorState
    - PartConstraintImpliedByRelConstraint
    - ExecDropSingleTupleTableSlot
    - GetPerTupleMemoryContext
    - UnregisterSnapshot
    - map_partition_varattnos
    - ExecCheck
    - table_close
    - make_ands_explicit
    - ResetExprContext
    - table_beginscan
    - GetLatestSnapshot
    - errmsg_internal
    - ereport
    - lfirst_oid
    - errcode
    linkageType: ''
    returnType: void
    signature: void foreach(lc, all_parts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3416,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - bound
    argTypes:
    - PartitionBoundInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3418
      start: 3413
    functionDepth: 1
    functionLinenumber: 3413
    functionLinenumberEnd: 3418
    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:3434,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3436,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3438,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3439,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3446,1
    - Dst: castNode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3453,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3456,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 4
    argNames:
    - key
    - index
    - datums
    - lower
    argTypes:
    - PartitionKey
    - int
    - List*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3464
      start: 3427
    functionDepth: 1
    functionLinenumber: 3427
    functionLinenumberEnd: 3464
    functionName: make_one_partition_rbound
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - Assert
    - lfirst_node
    - palloc0
    - castNode
    - elog
    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:3446,1
    - Dst: castNode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3453,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3456,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3461
      start: 3444
    functionDepth: 1
    functionLinenumber: 3444
    functionLinenumberEnd: 3461
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 446
    functionsReached:
    - elog
    - lfirst_node
    - castNode
    linkageType: ''
    returnType: void
    signature: void foreach(lc, datums)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3525,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3525,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: 3543
      start: 3487
    functionDepth: 1
    functionLinenumber: 3487
    functionLinenumberEnd: 3543
    functionName: partition_rbound_cmp
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - DatumGetInt32
    - FunctionCall2Coll
    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:3570,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3570,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: 3579
      start: 3555
    functionDepth: 1
    functionLinenumber: 3555
    functionLinenumberEnd: 3579
    functionName: partition_rbound_datum_cmp
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - DatumGetInt32
    - FunctionCall2Coll
    linkageType: ''
    returnType: int32
    signature: "int32 partition_rbound_datum_cmp(FmgrInfo *partsupfunc, Oid *partcollation,\n\t\t\t\t\t\t
      \  Datum *rb_datums, PartitionRangeDatumKind *rb_kind,\n\t\t\t\t\t\t   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: 3596
      start: 3586
    functionDepth: 0
    functionLinenumber: 3586
    functionLinenumberEnd: 3596
    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:3622,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3622,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: 3638
      start: 3606
    functionDepth: 1
    functionLinenumber: 3606
    functionLinenumberEnd: 3638
    functionName: partition_list_bsearch
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 3
    functionsReached:
    - DatumGetInt32
    - FunctionCall2Coll
    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:3667,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: 3684
      start: 3652
    functionDepth: 2
    functionLinenumber: 3652
    functionLinenumberEnd: 3684
    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:3710,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: 3729
      start: 3694
    functionDepth: 2
    functionLinenumber: 3694
    functionLinenumberEnd: 3729
    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, Datum *values,
      bool *is_equal)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3754,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3755,1
    - Dst: partition_hbound_cmp
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3756,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - boundinfo
    - modulus
    - remainder
    argTypes:
    - PartitionBoundInfo
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3770
      start: 3737
    functionDepth: 1
    functionLinenumber: 3737
    functionLinenumberEnd: 3770
    functionName: partition_hash_bsearch
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - partition_hbound_cmp
    - DatumGetInt32
    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:3783,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3785
      start: 3777
    functionDepth: 1
    functionLinenumber: 3777
    functionLinenumberEnd: 3785
    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:3799,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3799,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3802
      start: 3792
    functionDepth: 1
    functionLinenumber: 3792
    functionLinenumberEnd: 3802
    functionName: qsort_partition_list_value_cmp
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - DatumGetInt32
    - FunctionCall2Coll
    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:3816,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - a
    - b
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3819
      start: 3809
    functionDepth: 1
    functionLinenumber: 3809
    functionLinenumberEnd: 3819
    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:3841,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3845,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3846,1
    - Dst: IsPolymorphicType
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3857,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: 3860
      start: 3831
    functionDepth: 1
    functionLinenumber: 3831
    functionLinenumberEnd: 3860
    functionName: get_partition_operator
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - OidIsValid
    - elog
    - IsPolymorphicType
    - 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:3876,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3883,1
    - Dst: makeRelabelType
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3886,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3898,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3900,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3901,1
    - Dst: type_is_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3904,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3910,1
    - Dst: get_array_type
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3912,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3920,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3922,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3927,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3939,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3942,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3948,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3951,1
    - Dst: linitial
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3951,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3957,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3966,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: 3971
      start: 3867
    functionDepth: 6
    functionLinenumber: 3867
    functionLinenumberEnd: 3971
    functionName: make_partition_op_expr
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - Assert
    - get_partition_operator
    - makeBoolExpr
    - linitial
    - list_make2
    - IsA
    - get_opcode
    - list_length
    - type_is_array
    - lappend
    - make_opclause
    - makeNode
    - makeRelabelType
    - lfirst
    - get_array_type
    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:3939,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3942,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3948,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3949
      start: 3937
    functionDepth: 6
    functionLinenumber: 3937
    functionLinenumberEnd: 3949
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 446
    functionsReached:
    - lappend
    - lfirst
    - make_opclause
    linkageType: ''
    returnType: void
    signature: void foreach(lc, elems)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3985,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3995,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3999,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:3999,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4003,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4007,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4011,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4015,1
    - Dst: list_make3
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4019,1
    - Dst: list_head
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4020,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4030,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4039,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4039,1
    - Dst: lnext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4040,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4043,1
    - Dst: makeFuncExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4046,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4053,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - parent
    - spec
    argTypes:
    - Relation
    - PartitionBoundSpec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4054
      start: 3982
    functionDepth: 6
    functionLinenumber: 3982
    functionLinenumberEnd: 4054
    functionName: get_qual_for_hash
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - lfirst
    - RelationGetPartitionKey
    - makeVar
    - RelationGetRelid
    - Int32GetDatum
    - list_make3
    - makeFuncExpr
    - list_head
    - lnext
    - list_make1
    - lappend
    - copyObject
    - makeConst
    - ObjectIdGetDatum
    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:4068,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4081,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4085,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4092,1
    - Dst: linitial
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4092,1
    - Dst: RelationGetPartitionDesc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4103,1
    - Dst: partition_bound_accepts_nulls
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4110,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4130,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4134,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4140,1
    - Dst: foreach
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4148,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4150,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4155,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4155,1
    - Dst: make_partition_op_expr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4165,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4184,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4190,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4190,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4198,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4208,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4208,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4209,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4212,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4223,1
    - Dst: make_ands_explicit
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4223,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4224,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4224,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 53
    argCount: 2
    argNames:
    - parent
    - spec
    argTypes:
    - Relation
    - PartitionBoundSpec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4228
      start: 4065
    functionDepth: 7
    functionLinenumber: 4065
    functionLinenumberEnd: 4228
    functionName: get_qual_for_list
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - make_ands_explicit
    - RelationGetPartitionKey
    - makeVar
    - Assert
    - makeBoolExpr
    - lfirst_node
    - linitial
    - list_make2
    - datumCopy
    - list_make1
    - foreach
    - lappend
    - copyObject
    - makeConst
    - partition_bound_accepts_nulls
    - makeNode
    - RelationGetPartitionDesc
    - make_partition_op_expr
    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:4287,1
    - Dst: RelationGetPartitionDesc
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4303,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4315,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4315,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4316,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4317,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4319,1
    - Dst: stringToNode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4322,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4322,1
    - Dst: IsA
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4323,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4324,1
    - Dst: get_qual_for_range
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4330,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4336,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4336,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4337,1
    - Dst: linitial
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4338,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4340,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4354,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4355,1
    - Dst: get_range_nulltest
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4355,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4356,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4357,1
    - Dst: linitial
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4359,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4366,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4366,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4367,1
    - Dst: get_range_nulltest
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4378,1
    - Dst: list_head
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4389,1
    - Dst: forboth
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4391,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4400,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4401,1
    - Dst: get_range_key_properties
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4410,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4425,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4426,1
    - Dst: make_partition_op_expr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4427,1
    - Dst: fix_opfuncids
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4430,1
    - Dst: ExecInitExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4431,1
    - Dst: ExecEvalExprSwitchContext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4432,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4433,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4435,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4436,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4439,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4448,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4451,1
    - Dst: make_partition_op_expr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4452,1
    - Dst: for_both_cell
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4476,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4482,1
    - Dst: lnext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4483,1
    - Dst: castNode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4484,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4485,1
    - Dst: lnext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4485,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4486,1
    - Dst: lnext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4487,1
    - Dst: castNode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4488,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4489,1
    - Dst: lnext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4489,1
    - Dst: get_range_key_properties
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4490,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4514,1
    - Dst: make_partition_op_expr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4515,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4538,1
    - Dst: make_partition_op_expr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4539,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4568,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4569,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4570,1
    - Dst: linitial
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4571,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4574,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4575,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4576,1
    - Dst: linitial
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4577,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4592,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4593,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4594,1
    - Dst: linitial
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4595,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4597,1
    - Dst: list_length
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4598,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4599,1
    - Dst: linitial
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4600,1
    - Dst: get_range_nulltest
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4610,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4611,1
    - Dst: makeBoolConst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4611,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 106
    argCount: 3
    argNames:
    - parent
    - spec
    - for_default
    argTypes:
    - Relation
    - PartitionBoundSpec*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4614
      start: 4274
    functionDepth: 7
    functionLinenumber: 4274
    functionLinenumberEnd: 4614
    functionName: get_qual_for_range
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 3
    functionsReached:
    - MemoryContextSwitchTo
    - HeapTupleIsValid
    - SysCacheGetAttrNotNull
    - list_length
    - GetPerTupleExprContext
    - castNode
    - CreateExecutorState
    - forboth
    - get_qual_for_range
    - RelationGetPartitionKey
    - ReleaseSysCache
    - make_partition_op_expr
    - FreeExecutorState
    - lfirst_node
    - linitial
    - ExecEvalExprSwitchContext
    - for_both_cell
    - list_head
    - IsA
    - lnext
    - elog
    - lappend
    - ExecInitExpr
    - ObjectIdGetDatum
    - RelationGetPartitionDesc
    - lfirst
    - makeBoolConst
    - makeBoolExpr
    - stringToNode
    - get_range_key_properties
    - fix_opfuncids
    - TextDatumGetCString
    - list_make1
    - SearchSysCache1
    - get_range_nulltest
    - DatumGetBool
    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:4642,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4652,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4653,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4653,1
    - Dst: lnext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4654,1
    - Dst: castNode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4659,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4659,1
    - Dst: castNode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4664,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4664,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: 4667
      start: 4631
    functionDepth: 2
    functionLinenumber: 4631
    functionLinenumberEnd: 4667
    functionName: get_range_key_properties
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - makeVar
    - lnext
    - castNode
    - elog
    - copyObject
    - lfirst
    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:4683,1
    - Dst: makeVar
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4690,1
    - Dst: elog
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4700,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4701,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4701,1
    - Dst: lnext
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4702,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4705,1
    - Dst: lappend
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4710,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - key
    argTypes:
    - PartitionKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4714
      start: 4675
    functionDepth: 6
    functionLinenumber: 4675
    functionLinenumberEnd: 4714
    functionName: get_range_nulltest
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 1
    functionsReached:
    - makeVar
    - list_head
    - lnext
    - elog
    - lappend
    - copyObject
    - makeNode
    - lfirst
    linkageType: ''
    returnType: List
    signature: 'List *

      get_range_nulltest(PartitionKey key)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UInt64GetDatum
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4727,1
    - Dst: Assert
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4736,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4736,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4743,1
    - Dst: hash_combine64
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4747,1
    - Dst: DatumGetUInt64
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4747,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: 4752
      start: 4721
    functionDepth: 2
    functionLinenumber: 4721
    functionLinenumberEnd: 4752
    functionName: compute_partition_hash_value
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 2
    functionsReached:
    - Assert
    - FunctionCall2Coll
    - DatumGetUInt64
    - hash_combine64
    - OidIsValid
    - UInt64GetDatum
    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: 15
    BranchProfiles: []
    Callsites:
    - Dst: UInt64GetDatum
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4787,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4792,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4792,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4792,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4793,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4794,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4795,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4796,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4800,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4801,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4802,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4804,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4805,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4806,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4808,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4809,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4810,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4823,1
    - Dst: RelationGetPartitionKey
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4824,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4828,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4829,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4830,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4831,1
    - Dst: get_fn_expr_variadic
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4833,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4835,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4839,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4840,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4841,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4846,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4852,1
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4858,1
    - Dst: IsBinaryCoercible
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4860,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4861,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4862,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4863,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4864,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4864,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4866,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4873,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4877,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4883,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4884,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4893,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4894,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4895,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4897,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4898,1
    - Dst: fmgr_info_copy
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4900,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4906,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4909,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4927,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4930,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4932,1
    - Dst: hash_combine64
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4936,1
    - Dst: DatumGetUInt64
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4936,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4941,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4947,1
    - Dst: ereport
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4956,1
    - Dst: errcode
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4957,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4958,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4968,1
    - Dst: hash_combine64
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4974,1
    - Dst: DatumGetUInt64
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4974,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/partitioning/partbounds.c:4978,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 65
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4979
      start: 4770
    functionDepth: 2
    functionLinenumber: 4770
    functionLinenumberEnd: 4979
    functionName: satisfies_hash_partition
    functionSourceFile: /src/postgres/src/backend/partitioning/partbounds.c
    functionUses: 0
    functionsReached:
    - get_typlenbyvalalign
    - get_fn_expr_argtype
    - relation_close
    - PG_GETARG_DATUM
    - deconstruct_array
    - RelationGetPartitionKey
    - get_rel_name
    - get_fn_expr_variadic
    - PG_GETARG_OID
    - hash_combine64
    - relation_open
    - memcpy
    - errmsg
    - FunctionCall2Coll
    - format_type_be
    - MemoryContextAllocZero
    - PG_ARGISNULL
    - DatumGetUInt64
    - IsBinaryCoercible
    - OidIsValid
    - UInt64GetDatum
    - PG_NARGS
    - PG_GETARG_ARRAYTYPE_P
    - ARR_ELEMTYPE
    - PG_RETURN_BOOL
    - ereport
    - PG_GETARG_INT32
    - fmgr_info_copy
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum satisfies_hash_partition(PG_FUNCTION_ARGS)
  - 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: 4
    functionsReached:
    - Assert
    - likely
    - XidInMVCCSnapshot
    - TransactionIdIsValid
    - GetActiveSnapshot
    - RelationBuildPartitionDesc
    - ActiveSnapshotSet
    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:
    - MemoryContextSwitchTo
    - find_inheritance_children_extended
    - HeapTupleIsValid
    - list_length
    - partition_bounds_create
    - partition_bounds_copy
    - SysCacheGetAttr
    - RelationGetRelationName
    - RelationGetPartitionKey
    - heap_getattr
    - RelationGetRelid
    - ReleaseSysCache
    - table_open
    - ScanKeyInit
    - ActiveSnapshotSet
    - get_rel_relkind
    - TransactionIdIsValid
    - MemoryContextAllocZero
    - IsA
    - elog
    - get_default_partition_oid
    - palloc
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    - Assert
    - systable_beginscan
    - stringToNode
    - MemoryContextCopyAndSetIdentifier
    - systable_getnext
    - TextDatumGetCString
    - RelationGetDescr
    - SearchSysCache1
    - AcceptInvalidationMessages
    - AllocSetContextCreate
    - lfirst_oid
    - MemoryContextSetParent
    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: 447
    functionsReached:
    - HeapTupleIsValid
    - SysCacheGetAttr
    - heap_getattr
    - ReleaseSysCache
    - table_open
    - RelationGetRelid
    - ScanKeyInit
    - get_rel_relkind
    - IsA
    - elog
    - get_default_partition_oid
    - table_close
    - systable_endscan
    - ObjectIdGetDatum
    - systable_beginscan
    - stringToNode
    - systable_getnext
    - TextDatumGetCString
    - RelationGetDescr
    - SearchSysCache1
    - AcceptInvalidationMessages
    - lfirst_oid
    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
      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
    - 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:
    - Assert
    - RelationGetRelid
    - hash_search
    - RelationIncrementReferenceCount
    - RelationGetPartitionDesc
    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_init
    - hash_seq_search
    - 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: 1
    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:
    - IsA
    - expression_tree_walker
    - 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:
    - IsA
    - expression_tree_walker
    - 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:
    - IsA
    - expression_tree_walker
    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:
    - IsA
    - expression_tree_walker
    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:
    - IsA
    - expression_tree_walker
    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:
    - IsA
    - expression_tree_walker
    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_concat
    - lfirst_node
    - list_length
    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: 447
    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: offset_relid_set
      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: offset_relid_set
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:437,1
    - Dst: offset_relid_set
      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: 1
    functionLinenumber: 387
    functionLinenumberEnd: 473
    functionName: OffsetVarNodes_walker
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - Assert
    - expression_tree_walker
    - IsA
    - offset_relid_set
    - query_tree_walker
    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: 2
    functionLinenumber: 475
    functionLinenumberEnd: 524
    functionName: OffsetVarNodes
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 2
    functionsReached:
    - OffsetVarNodes_walker
    - IsA
    - foreach
    - lfirst
    - query_tree_walker
    linkageType: ''
    returnType: void
    signature: void OffsetVarNodes(Node *node, int offset, int sublevels_up)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bms_next_member
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:533,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:534,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - relids
    - offset
    argTypes:
    - Relids
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 526
    functionDepth: 3
    functionLinenumber: 526
    functionLinenumberEnd: 536
    functionName: offset_relid_set
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 6
    functionsReached:
    - bms_next_member
    - bms_add_member
    linkageType: ''
    returnType: Relids
    signature: Relids offset_relid_set(Relids relids, int offset)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: ChangeVarNodes_context*::callback
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:559,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:562,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:570,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:578,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:587,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:597,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:606,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:612,1
    - Dst: adjust_relid_set
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:615,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:621,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:634,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:648,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:648,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:649,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:649,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:650,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:650,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:652,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:658,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:663,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 62
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - ChangeVarNodes_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 553
    functionDepth: 2
    functionLinenumber: 553
    functionLinenumberEnd: 664
    functionName: ChangeVarNodes_walker
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - Assert
    - adjust_relid_set
    - expression_tree_walker
    - IsA
    - ChangeVarNodes_context*::callback
    - query_tree_walker
    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:695,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:721,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:723,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:729,1
    - Dst: ChangeVarNodes_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:732,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: 733
      start: 679
    functionDepth: 3
    functionLinenumber: 679
    functionLinenumberEnd: 733
    functionName: ChangeVarNodesExtended
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 9
    functionsReached:
    - ChangeVarNodes_walker
    - IsA
    - foreach
    - lfirst
    - query_tree_walker
    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:738,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: 739
      start: 735
    functionDepth: 4
    functionLinenumber: 735
    functionLinenumberEnd: 739
    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: expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:749,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - ChangeVarNodes_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 746
    functionDepth: 1
    functionLinenumber: 746
    functionLinenumberEnd: 752
    functionName: ChangeVarNodesWalkExpression
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 1
    functionsReached:
    - expression_tree_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:766,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:766,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:769,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:771,1
    - Dst: IS_SPECIAL_VARNO
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:772,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:773,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - relids
    - oldrelid
    - newrelid
    argTypes:
    - Relids
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 776
      start: 763
    functionDepth: 3
    functionLinenumber: 763
    functionLinenumberEnd: 776
    functionName: adjust_relid_set
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 6
    functionsReached:
    - bms_del_member
    - bms_copy
    - bms_is_member
    - IS_SPECIAL_VARNO
    - 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:809,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:817,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:821,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:824,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:832,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:840,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:848,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:856,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:867,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:873,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:880,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 43
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - IncrementVarSublevelsUp_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 803
    functionDepth: 1
    functionLinenumber: 803
    functionLinenumberEnd: 881
    functionName: IncrementVarSublevelsUp_walker
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - elog
    - IsA
    - expression_tree_walker
    - 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:896,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: 900
      start: 883
    functionDepth: 1
    functionLinenumber: 883
    functionLinenumberEnd: 900
    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:915,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: 919
      start: 906
    functionDepth: 1
    functionLinenumber: 906
    functionLinenumberEnd: 919
    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:944,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:955,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:961,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:966,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - SetVarReturningType_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 939
    functionDepth: 1
    functionLinenumber: 939
    functionLinenumberEnd: 967
    functionName: SetVarReturningType_walker
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - IsA
    - expression_tree_walker
    - 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:980,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: 981
      start: 969
    functionDepth: 2
    functionLinenumber: 969
    functionLinenumberEnd: 981
    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:1000,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1006,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1010,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1019,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1029,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: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1041,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1041,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1042,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1042,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1043,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1043,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1044,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1044,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1046,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1052,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1057,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 35
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - rangeTableEntry_used_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1058
      start: 994
    functionDepth: 3
    functionLinenumber: 994
    functionLinenumberEnd: 1058
    functionName: rangeTableEntry_used_walker
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - Assert
    - expression_tree_walker
    - IsA
    - bms_is_member
    - query_tree_walker
    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:1072,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - node
    - rt_index
    - sublevels_up
    argTypes:
    - Node*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1076
      start: 1060
    functionDepth: 1
    functionLinenumber: 1060
    functionLinenumberEnd: 1076
    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:1113,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1114,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1114,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1116,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1116,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1119,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1119,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1120,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1121,1
    - Dst: linitial
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1122,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1123,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1124,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1125,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1128,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1130,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1132,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1133,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1133,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1135,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1135,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1142,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 26
    argCount: 2
    argNames:
    - parsetree
    - subquery_ptr
    argTypes:
    - Query*
    - Query***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1144
      start: 1092
    functionDepth: 1
    functionLinenumber: 1092
    functionLinenumberEnd: 1144
    functionName: getInsertSelectQuery
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - Assert
    - linitial
    - IsA
    - list_length
    - elog
    - strcmp
    - rt_fetch
    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:1173,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1176,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1177,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1178,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1188,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1189,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1190,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1194,1
    - Dst: make_and_qual
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1196,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1202,1
    - Dst: contain_aggs_of_level
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1202,1
    - Dst: checkExprHasSubLink
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1209,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - parsetree
    - qual
    argTypes:
    - Query*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1210
      start: 1150
    functionDepth: 3
    functionLinenumber: 1150
    functionLinenumberEnd: 1210
    functionName: AddQual
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - checkExprHasSubLink
    - contain_aggs_of_level
    - IsA
    - ereport
    - copyObject
    - errcode
    - make_and_qual
    linkageType: ''
    returnType: void
    signature: void AddQual(Query *parsetree, Node *qual)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1227,1
    - Dst: AddQual
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1232,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - parsetree
    - qual
    argTypes:
    - Query*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1233
      start: 1218
    functionDepth: 4
    functionLinenumber: 1218
    functionLinenumberEnd: 1233
    functionName: AddInvertedQual
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - makeNode
    - AddQual
    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:1252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - node
    - target_relids
    - added_relids
    argTypes:
    - Node*
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1256
      start: 1242
    functionDepth: 1
    functionLinenumber: 1242
    functionLinenumberEnd: 1256
    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:1264,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1270,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1272,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1276,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1283,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1289,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1291,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1300,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1301,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1308,1
    - Dst: query_tree_mutator
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1314,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1321,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - add_nulling_relids_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1322
      start: 1258
    functionDepth: 4
    functionLinenumber: 1258
    functionLinenumberEnd: 1322
    functionName: add_nulling_relids_mutator
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - bms_overlap
    - query_tree_mutator
    - IsA
    - bms_union
    - copyObject
    - bms_is_member
    - memcpy
    - makeNode
    - expression_tree_mutator
    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:1340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - node
    - removable_relids
    - except_relids
    argTypes:
    - Node*
    - Bitmapset*
    - Bitmapset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1344
      start: 1330
    functionDepth: 1
    functionLinenumber: 1330
    functionLinenumberEnd: 1344
    functionName: remove_nulling_relids
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 9
    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:1352,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1357,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1358,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1361,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1363,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1369,1
    - Dst: bms_overlap
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1374,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1384,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1388,1
    - Dst: bms_difference
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1391,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1393,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1393,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1398,1
    - Dst: query_tree_mutator
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1404,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1411,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - remove_nulling_relids_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1412
      start: 1346
    functionDepth: 4
    functionLinenumber: 1346
    functionLinenumberEnd: 1412
    functionName: remove_nulling_relids_mutator
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - bms_overlap
    - Assert
    - query_tree_mutator
    - bms_is_empty
    - IsA
    - copyObject
    - bms_is_member
    - bms_difference
    - expression_tree_mutator
    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:1455,1
    - Dst: query_or_expression_tree_mutator
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1466,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1473,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1478,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: 1482
      start: 1437
    functionDepth: 1
    functionLinenumber: 1437
    functionLinenumberEnd: 1482
    functionName: replace_rte_variables
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 2
    functionsReached:
    - elog
    - IsA
    - query_or_expression_tree_mutator
    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: 8
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1490,1
    - Dst: replace_rte_variables_context*::callback
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1500,1
    - Dst: checkExprHasSubLink
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1503,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1508,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1521,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1522,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1523,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1527,1
    - Dst: query_tree_mutator
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1536,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1545,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - replace_rte_variables_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1546
      start: 1484
    functionDepth: 2
    functionLinenumber: 1484
    functionLinenumberEnd: 1546
    functionName: replace_rte_variables_mutator
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - errmsg
    - checkExprHasSubLink
    - query_tree_mutator
    - replace_rte_variables_context*::callback
    - IsA
    - ereport
    - expression_tree_mutator
    - errcode
    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:1588,1
    - Dst: palloc
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1596,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1606,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1619,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1625,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1634,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1647,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1659,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1663,1
    - Dst: palloc
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1667,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1675,1
    - Dst: palloc
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1680,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1688,1
    - Dst: query_tree_mutator
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1694,1
    - Dst: expression_tree_mutator
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1701,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 48
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - map_variable_attnos_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1702
      start: 1582
    functionDepth: 1
    functionLinenumber: 1582
    functionLinenumberEnd: 1702
    functionName: map_variable_attnos_mutator
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - Assert
    - query_tree_mutator
    - IsA
    - elog
    - OidIsValid
    - palloc
    - makeNode
    - expression_tree_mutator
    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:1724,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: 1728
      start: 1704
    functionDepth: 1
    functionLinenumber: 1704
    functionLinenumberEnd: 1728
    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:1780,1
    - Dst: IncrementVarSublevelsUp
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1789,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - var
    - context
    argTypes:
    - Var*
    - replace_rte_variables_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1792
      start: 1773
    functionDepth: 2
    functionLinenumber: 1773
    functionLinenumberEnd: 1792
    functionName: ReplaceVarsFromTargetList_callback
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 0
    functionsReached:
    - IncrementVarSublevelsUp
    - ReplaceVarFromTargetList
    linkageType: ''
    returnType: Node
    signature: "Node *\nReplaceVarsFromTargetList_callback(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:1826,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1831,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1841,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1843,1
    - Dst: ReplaceVarFromTargetList
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1844,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1850,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1856,1
    - Dst: get_tle_by_resno
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1869,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1881,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1896,1
    - Dst: coerce_null_to_domain
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1897,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1904,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1911,1
    - Dst: contains_multiexpr_param
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1923,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1924,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1925,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1926,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1936,1
    - Dst: SetVarReturningType
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1938,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1942,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1946,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: 1958
      start: 1794
    functionDepth: 6
    functionLinenumber: 1794
    functionLinenumberEnd: 1958
    functionName: ReplaceVarFromTargetList
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 3
    functionsReached:
    - errmsg
    - errcode
    - contains_multiexpr_param
    - expandRTE
    - get_typlenbyval
    - IsA
    - ReplaceVarFromTargetList
    - ereport
    - coerce_null_to_domain
    - SetVarReturningType
    - elog
    - lappend
    - copyObject
    - get_tle_by_resno
    - makeNode
    - lfirst
    linkageType: ''
    returnType: Node
    signature: "Node *\nReplaceVarFromTargetList(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:1841,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1843,1
    - Dst: ReplaceVarFromTargetList
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1844,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1850,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1851
      start: 1839
    functionDepth: 7
    functionLinenumber: 1839
    functionLinenumberEnd: 1851
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteManip.c
    functionUses: 449
    functionsReached:
    - lappend
    - IsA
    - lfirst
    - ReplaceVarFromTargetList
    linkageType: ''
    returnType: void
    signature: void foreach(lc, fields)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: replace_rte_variables
      Src: /src/postgres/src/backend/rewrite/rewriteManip.c:1978,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: 1982
      start: 1960
    functionDepth: 2
    functionLinenumber: 1960
    functionLinenumberEnd: 1982
    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: 15
    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:316,1
    - Dst: add_with_check_options
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:326,1
    - Dst: get_policies_for_relation
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:343,1
    - Dst: add_with_check_options
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:346,1
    - Dst: add_with_check_options
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:356,1
    - Dst: add_with_check_options
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:371,1
    - Dst: get_policies_for_relation
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:419,1
    - Dst: add_with_check_options
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:427,1
    - Dst: add_with_check_options
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:436,1
    - Dst: get_policies_for_relation
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:451,1
    - Dst: add_with_check_options
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:454,1
    - Dst: get_policies_for_relation
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:467,1
    - Dst: add_with_check_options
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:475,1
    - Dst: get_policies_for_relation
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:488,1
    - Dst: add_with_check_options
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:492,1
    - Dst: add_with_check_options
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:507,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:516,1
    - Dst: setRuleCheckAsUser
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:522,1
    - Dst: setRuleCheckAsUser
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:523,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 68
    argCount: 7
    argNames:
    - root
    - rte
    - rt_index
    - securityQuals
    - withCheckOptions
    - hasRowSecurity
    - hasSubLinks
    argTypes:
    - Query*
    - RangeTblEntry*
    - int
    - List**
    - List**
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 97
    functionDepth: 3
    functionLinenumber: 97
    functionLinenumberEnd: 530
    functionName: get_row_security_policies
    functionSourceFile: /src/postgres/src/backend/rewrite/rowsecurity.c
    functionUses: 0
    functionsReached:
    - Assert
    - table_open
    - get_policies_for_relation
    - add_with_check_options
    - OidIsValid
    - table_close
    - check_enable_rls
    - setRuleCheckAsUser
    - GetUserId
    - add_security_quals
    - getRTEPermissionInfo
    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:551,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:554,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:589,1
    - Dst: check_role_for_policy
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:599,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:602,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:604,1
    - Dst: sort_policies_by_name
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:612,1
    - Dst: sort_policies_by_name
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:630,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:634,1
    - Dst: check_role_for_policy
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:636,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:637,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:648,1
    - Dst: check_role_for_policy
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:650,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:651,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: 654
      start: 540
    functionDepth: 6
    functionLinenumber: 540
    functionLinenumberEnd: 654
    functionName: get_policies_for_relation
    functionSourceFile: /src/postgres/src/backend/rewrite/rowsecurity.c
    functionUses: 1
    functionsReached:
    - check_role_for_policy
    - foreach
    - elog
    - lappend
    - sort_policies_by_name
    - lfirst
    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:634,1
    - Dst: check_role_for_policy
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:636,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:637,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 632
    functionDepth: 6
    functionLinenumber: 632
    functionLinenumberEnd: 638
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rowsecurity.c
    functionUses: 450
    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:648,1
    - Dst: check_role_for_policy
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:650,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:651,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 646
    functionDepth: 6
    functionLinenumber: 646
    functionLinenumberEnd: 652
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rowsecurity.c
    functionUses: 450
    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:667,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - policies
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 664
    functionDepth: 3
    functionLinenumber: 664
    functionLinenumberEnd: 668
    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:676,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:677,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:685,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - ListCell*
    - ListCell*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 673
    functionDepth: 1
    functionLinenumber: 673
    functionLinenumberEnd: 686
    functionName: row_security_policy_cmp
    functionSourceFile: /src/postgres/src/backend/rewrite/rowsecurity.c
    functionUses: 0
    functionsReached:
    - strcmp
    - lfirst
    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:716,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:720,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:721,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:742,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:747,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:748,1
    - Dst: list_append_unique
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:750,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:759,1
    - Dst: linitial
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:760,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:762,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:764,1
    - Dst: list_append_unique
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:765,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:774,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:775,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:776,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: 778
      start: 699
    functionDepth: 7
    functionLinenumber: 699
    functionLinenumberEnd: 778
    functionName: add_security_quals
    functionSourceFile: /src/postgres/src/backend/rewrite/rowsecurity.c
    functionUses: 1
    functionsReached:
    - makeBoolExpr
    - linitial
    - BoolGetDatum
    - list_append_unique
    - ChangeVarNodes
    - list_length
    - lappend
    - copyObject
    - makeConst
    - lfirst
    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:716,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:720,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:721,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 714
    functionDepth: 6
    functionLinenumber: 714
    functionLinenumberEnd: 724
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rowsecurity.c
    functionUses: 450
    functionsReached:
    - lappend
    - copyObject
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(item, permissive_policies)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:742,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:747,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:748,1
    - Dst: list_append_unique
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:750,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 740
    functionDepth: 7
    functionLinenumber: 740
    functionLinenumberEnd: 753
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rowsecurity.c
    functionUses: 450
    functionsReached:
    - list_append_unique
    - ChangeVarNodes
    - copyObject
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(item, restrictive_policies)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:819,1
    - Dst: QUAL_FOR_WCO
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:820,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:824,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:824,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:847,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:849,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:849,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:853,1
    - Dst: linitial
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:854,1
    - Dst: makeBoolExpr
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:856,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:858,1
    - Dst: list_append_unique
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:860,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:870,1
    - Dst: QUAL_FOR_WCO
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:871,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:875,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:876,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:878,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:880,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:880,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:881,1
    - Dst: list_append_unique
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:885,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:898,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:900,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:900,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:902,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:903,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:907,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: 909
      start: 795
    functionDepth: 7
    functionLinenumber: 795
    functionLinenumberEnd: 909
    functionName: add_with_check_options
    functionSourceFile: /src/postgres/src/backend/rewrite/rowsecurity.c
    functionUses: 1
    functionsReached:
    - makeBoolExpr
    - QUAL_FOR_WCO
    - linitial
    - BoolGetDatum
    - list_append_unique
    - ChangeVarNodes
    - pstrdup
    - list_length
    - lappend
    - copyObject
    - makeConst
    - makeNode
    - RelationGetRelationName
    - lfirst
    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: 812
      start: 808
    functionDepth: 0
    functionLinenumber: 808
    functionLinenumberEnd: 812
    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:819,1
    - Dst: QUAL_FOR_WCO
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:820,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:824,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:824,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 827
      start: 817
    functionDepth: 6
    functionLinenumber: 817
    functionLinenumberEnd: 827
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rowsecurity.c
    functionUses: 450
    functionsReached:
    - lappend
    - copyObject
    - lfirst
    - QUAL_FOR_WCO
    linkageType: ''
    returnType: void
    signature: void foreach(item, permissive_policies)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:870,1
    - Dst: QUAL_FOR_WCO
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:871,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:875,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:876,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:878,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:880,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:880,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:881,1
    - Dst: list_append_unique
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:885,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 868
    functionDepth: 7
    functionLinenumber: 868
    functionLinenumberEnd: 888
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rowsecurity.c
    functionUses: 450
    functionsReached:
    - QUAL_FOR_WCO
    - list_append_unique
    - ChangeVarNodes
    - pstrdup
    - copyObject
    - makeNode
    - RelationGetRelationName
    - lfirst
    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:919,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:925,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/rewrite/rowsecurity.c:927,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - policy_roles
    - user_id
    argTypes:
    - ArrayType*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 915
    functionDepth: 1
    functionLinenumber: 915
    functionLinenumberEnd: 932
    functionName: check_role_for_policy
    functionSourceFile: /src/postgres/src/backend/rewrite/rowsecurity.c
    functionUses: 3
    functionsReached:
    - has_privs_of_role
    - ARR_DIMS
    - ARR_DATA_PTR
    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:
    - NameGetDatum
    - BoolGetDatum
    - HeapTupleIsValid
    - nodeToString
    - recordDependencyOnExpr
    - get_rel_name
    - SearchSysCache2
    - ReleaseSysCache
    - table_open
    - heap_modify_tuple
    - CatalogTupleInsert
    - heap_freetuple
    - GETSTRUCT
    - recordDependencyOn
    - linitial_node
    - errmsg
    - heap_form_tuple
    - InvokeObjectPostCreateHook
    - table_close
    - ObjectIdGetDatum
    - deleteDependencyRecordsFor
    - getInsertSelectQuery
    - namestrcpy
    - CStringGetTextDatum
    - CatalogTupleUpdate
    - RelationGetDescr
    - ereport
    - PointerGetDatum
    - CharGetDatum
    - GetNewOidWithIndex
    - errcode
    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:
    - DefineQueryRewrite
    - transformRuleStmt
    - RangeVarGetRelid
    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: IsSystemRelation
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:265,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:266,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:267,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:268,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:269,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:274,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:274,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:275,1
    - Dst: get_relkind_objtype
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:275,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:276,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:283,1
    - Dst: getInsertSelectQuery
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:287,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:290,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:291,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:292,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:293,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:295,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:296,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:297,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:298,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:310,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:311,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:312,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:313,1
    - Dst: errdetail_relkind_not_supported
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:314,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:320,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:321,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:322,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:323,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:328,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:329,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:330,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:331,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:336,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:339,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:340,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:341,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:347,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:348,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:349,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:355,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:356,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:357,1
    - Dst: checkRuleResultList
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:363,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:364,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:382,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:383,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:384,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:385,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:392,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:403,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:404,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:404,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:406,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:407,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:408,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:409,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:411,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:428,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:433,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:434,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:435,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:438,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:439,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:440,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:442,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:443,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:444,1
    - Dst: checkRuleResultList
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:445,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:446,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:455,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:456,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:457,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:458,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:459,1
    - Dst: InsertRule
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:470,1
    - Dst: SetRelationRuleStatus
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:485,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:488,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:491,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 68
    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: 494
      start: 223
    functionDepth: 8
    functionLinenumber: 223
    functionLinenumberEnd: 494
    functionName: DefineQueryRewrite
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteDefine.c
    functionUses: 1
    functionsReached:
    - pstrdup
    - list_length
    - errhint
    - RelationGetRelationName
    - GetUserId
    - ObjectAddressSet
    - table_open
    - strcmp
    - linitial_node
    - errmsg
    - errdetail_relkind_not_supported
    - lfirst_node
    - aclcheck_error
    - get_relkind_objtype
    - SetRelationRuleStatus
    - table_close
    - object_ownercheck
    - strncmp
    - getInsertSelectQuery
    - IsSystemRelation
    - InsertRule
    - RelationGetDescr
    - ereport
    - checkRuleResultList
    - errcode
    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:283,1
    - Dst: getInsertSelectQuery
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:287,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:290,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:291,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:292,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:293,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:295,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:296,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:297,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:298,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 281
    functionDepth: 2
    functionLinenumber: 281
    functionLinenumberEnd: 299
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteDefine.c
    functionUses: 450
    functionsReached:
    - errmsg
    - getInsertSelectQuery
    - lfirst_node
    - ereport
    - errhint
    - errcode
    linkageType: ''
    returnType: void
    signature: void foreach(l, action)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:428,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:433,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:434,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:435,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:438,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:439,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:440,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:442,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:443,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:444,1
    - Dst: checkRuleResultList
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:445,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:446,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 426
    functionDepth: 1
    functionLinenumber: 426
    functionLinenumberEnd: 448
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteDefine.c
    functionUses: 450
    functionsReached:
    - errmsg
    - lfirst_node
    - RelationGetDescr
    - ereport
    - checkRuleResultList
    - errcode
    linkageType: ''
    returnType: void
    signature: void foreach(l, action)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:513,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:518,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:529,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:530,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:532,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:533,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:535,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:536,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:557,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:558,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:560,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:561,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:564,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:565,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:566,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:567,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:569,1
    - Dst: exprType
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:573,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:575,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:576,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:578,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:580,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: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:586,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:587,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:588,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:596,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:599,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:600,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:602,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:604,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:607,1
    - Dst: format_type_with_typemod
      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: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:611,1
    - Dst: format_type_with_typemod
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:612,1
    - Dst: format_type_with_typemod
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:613,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:618,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:619,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:621,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:622,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 23
    argCount: 4
    argNames:
    - targetList
    - resultDesc
    - isSelect
    - requireColumnNameMatch
    argTypes:
    - List*
    - TupleDesc
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 505
    functionDepth: 3
    functionLinenumber: 505
    functionLinenumberEnd: 623
    functionName: checkRuleResultList
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteDefine.c
    functionUses: 2
    functionsReached:
    - errmsg
    - lfirst
    - Assert
    - NameStr
    - exprType
    - exprTypmod
    - TupleDescAttr
    - format_type_be
    - ereport
    - format_type_with_typemod
    - strcmp
    - errdetail
    - errcode
    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:518,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:529,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:530,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:532,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:533,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:535,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:536,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:557,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:558,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:560,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:561,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:564,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:565,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:566,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:567,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:569,1
    - Dst: exprType
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:573,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:575,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:576,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:578,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:580,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: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:586,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:587,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:588,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:596,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:599,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:600,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:602,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:604,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:607,1
    - Dst: format_type_with_typemod
      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: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:611,1
    - Dst: format_type_with_typemod
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:612,1
    - Dst: format_type_with_typemod
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:613,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 516
    functionDepth: 3
    functionLinenumber: 516
    functionLinenumberEnd: 615
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteDefine.c
    functionUses: 450
    functionsReached:
    - errmsg
    - lfirst
    - exprType
    - NameStr
    - exprTypmod
    - TupleDescAttr
    - format_type_be
    - ereport
    - format_type_with_typemod
    - strcmp
    - errdetail
    - errcode
    linkageType: ''
    returnType: void
    signature: void foreach(tllist, targetList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setRuleCheckAsUser_walker
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:633,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - userid
    argTypes:
    - Node*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 630
    functionDepth: 1
    functionLinenumber: 630
    functionLinenumberEnd: 634
    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:641,1
    - Dst: setRuleCheckAsUser_Query
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:643,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:646,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 636
    functionDepth: 1
    functionLinenumber: 636
    functionLinenumberEnd: 648
    functionName: setRuleCheckAsUser_walker
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteDefine.c
    functionUses: 1
    functionsReached:
    - setRuleCheckAsUser_Query
    - IsA
    - expression_tree_walker
    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:656,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:658,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:664,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:666,1
    - Dst: setRuleCheckAsUser_Query
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:669,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:673,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:675,1
    - Dst: setRuleCheckAsUser_Query
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:677,1
    - Dst: castNode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:677,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:682,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - qry
    - userid
    argTypes:
    - Query*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 650
    functionDepth: 1
    functionLinenumber: 650
    functionLinenumberEnd: 684
    functionName: setRuleCheckAsUser_Query
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteDefine.c
    functionUses: 2
    functionsReached:
    - lfirst_node
    - castNode
    - foreach
    - setRuleCheckAsUser_Query
    - lfirst
    - query_tree_walker
    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:695,1
    - Dst: table_open
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:704,1
    - Dst: SearchSysCacheCopy2
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:705,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:706,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:707,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:708,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:709,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:710,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:711,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:712,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:714,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:720,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:721,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:721,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:722,1
    - Dst: get_relkind_objtype
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:722,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:722,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:723,1
    - Dst: DatumGetChar
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:728,1
    - Dst: CharGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:731,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:732,1
    - Dst: InvokeObjectPostAlterHook
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:737,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:739,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:740,1
    - Dst: CacheInvalidateRelcache
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:748,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - rel
    - rulename
    - fires_when
    argTypes:
    - Relation
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 690
    functionDepth: 7
    functionLinenumber: 690
    functionLinenumberEnd: 749
    functionName: EnableDisableRule
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteDefine.c
    functionUses: 0
    functionsReached:
    - HeapTupleIsValid
    - InvokeObjectPostAlterHook
    - GetUserId
    - get_rel_name
    - RelationGetRelid
    - table_open
    - heap_freetuple
    - GETSTRUCT
    - DatumGetChar
    - SearchSysCacheCopy2
    - get_rel_relkind
    - errmsg
    - aclcheck_error
    - get_relkind_objtype
    - table_close
    - object_ownercheck
    - ObjectIdGetDatum
    - Assert
    - CatalogTupleUpdate
    - CacheInvalidateRelcache
    - ereport
    - PointerGetDatum
    - CharGetDatum
    - errcode
    linkageType: ''
    returnType: void
    signature: "void EnableDisableRule(Relation rel, const char *rulename,\n\t\t\t\t
      \ char fires_when)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:762,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:762,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:763,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:765,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:771,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:772,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:773,1
    - Dst: errdetail_relkind_not_supported
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:774,1
    - Dst: IsSystemClass
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:776,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:777,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:778,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:779,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:783,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:783,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:784,1
    - Dst: get_relkind_objtype
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:784,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:784,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:786,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 4
    argNames:
    - rv
    - relid
    - oldrelid
    - arg
    argTypes:
    - RangeVar*
    - Oid
    - Oid
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 755
    functionDepth: 5
    functionLinenumber: 755
    functionLinenumberEnd: 787
    functionName: RangeVarCallbackForRenameRule
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteDefine.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - errdetail_relkind_not_supported
    - GetUserId
    - get_rel_relkind
    - ReleaseSysCache
    - aclcheck_error
    - get_relkind_objtype
    - HeapTupleIsValid
    - IsSystemClass
    - GETSTRUCT
    - ereport
    - SearchSysCache1
    - object_ownercheck
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: "void RangeVarCallbackForRenameRule(const RangeVar *rv, Oid relid,
      Oid oldrelid,\n\t\t\t\t\t\t\t  void *arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RangeVarGetRelidExtended
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:808,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:814,1
    - Dst: table_open
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:817,1
    - Dst: SearchSysCacheCopy2
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:820,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:821,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:822,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:823,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:824,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:825,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:826,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:827,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:828,1
    - Dst: IsDefinedRewriteRule
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:832,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:833,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:834,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:835,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:836,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:843,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:844,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:845,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:848,1
    - Dst: CatalogTupleUpdate
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:850,1
    - Dst: InvokeObjectPostAlterHook
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:852,1
    - Dst: heap_freetuple
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:854,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:855,1
    - Dst: CacheInvalidateRelcache
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:862,1
    - Dst: ObjectAddressSet
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:864,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/rewrite/rewriteDefine.c:869,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 3
    argNames:
    - relation
    - oldName
    - newName
    argTypes:
    - RangeVar*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 792
    functionDepth: 7
    functionLinenumber: 792
    functionLinenumberEnd: 872
    functionName: RenameRewriteRule
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteDefine.c
    functionUses: 0
    functionsReached:
    - HeapTupleIsValid
    - relation_close
    - InvokeObjectPostAlterHook
    - RelationGetRelationName
    - ObjectAddressSet
    - table_open
    - heap_freetuple
    - GETSTRUCT
    - relation_open
    - SearchSysCacheCopy2
    - errmsg
    - table_close
    - ObjectIdGetDatum
    - RangeVarGetRelidExtended
    - namestrcpy
    - CatalogTupleUpdate
    - CacheInvalidateRelcache
    - ereport
    - PointerGetDatum
    - IsDefinedRewriteRule
    - errcode
    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:
    - ObjectIdGetDatum
    - SearchSysCacheExists2
    - 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:
    - CacheInvalidateRelcacheByTuple
    - table_open
    - heap_freetuple
    - HeapTupleIsValid
    - CatalogTupleUpdate
    - SearchSysCacheCopy1
    - GETSTRUCT
    - elog
    - table_close
    - ObjectIdGetDatum
    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:
    - errmsg
    - errcode
    - Assert
    - get_rel_name
    - SearchSysCache2
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - ereport
    - PointerGetDatum
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Oid
    signature: Oid get_rewrite_oid(Oid relid, const char *rulename, bool missing_ok)
  - BBCount: 13
    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: table_open
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:198,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:206,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:223,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:225,1
    - Dst: strip_implicit_coercions
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:229,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:238,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:249,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:254,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:256,1
    - Dst: get_rte_attribute_is_dropped
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:259,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:266,1
    - Dst: AcquireRewriteLocks
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:277,1
    - Dst: get_parse_rowmark
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:280,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:290,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:292,1
    - Dst: AcquireRewriteLocks
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:294,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:302,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 53
    argCount: 3
    argNames:
    - parsetree
    - forExecute
    - forUpdatePushedDown
    argTypes:
    - Query*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 147
    functionDepth: 6
    functionLinenumber: 147
    functionLinenumberEnd: 304
    functionName: AcquireRewriteLocks
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 5
    functionsReached:
    - Assert
    - strip_implicit_coercions
    - get_rte_attribute_is_dropped
    - table_open
    - AcquireRewriteLocks
    - IsA
    - foreach
    - elog
    - lappend
    - get_parse_rowmark
    - table_close
    - rt_fetch
    - lfirst
    - query_tree_walker
    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:314,1
    - Dst: AcquireRewriteLocks
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:319,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:329,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - acquireLocksOnSubLinks_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 309
    functionDepth: 7
    functionLinenumber: 309
    functionLinenumberEnd: 330
    functionName: acquireLocksOnSubLinks
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - IsA
    - expression_tree_walker
    - AcquireRewriteLocks
    linkageType: ''
    returnType: bool
    signature: bool acquireLocksOnSubLinks(Node *node, acquireLocksOnSubLinks_context
      *context)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:372,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:373,1
    - Dst: AcquireRewriteLocks
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:378,1
    - Dst: acquireLocksOnSubLinks
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:379,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:382,1
    - Dst: getInsertSelectQuery
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:393,1
    - Dst: OffsetVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:395,1
    - Dst: OffsetVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:396,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:398,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:400,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:411,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:413,1
    - Dst: contain_vars_of_level
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:416,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:456,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:457,1
    - Dst: CombineRangeTables
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:458,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:468,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:470,1
    - Dst: checkExprHasSubLink
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:476,1
    - Dst: checkExprHasSubLink
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:480,1
    - Dst: checkExprHasSubLink
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:484,1
    - Dst: checkExprHasSubLink
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:488,1
    - Dst: checkExprHasSubLink
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:495,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:529,1
    - Dst: rangeTableEntry_used
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:530,1
    - Dst: rangeTableEntry_used
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:532,1
    - Dst: rangeTableEntry_used
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:533,1
    - Dst: adjustJoinTreeList
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:534,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:544,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:545,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:546,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:549,1
    - Dst: checkExprHasSubLink
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:557,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:578,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:580,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:583,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:585,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:587,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:588,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:589,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:590,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:596,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:597,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:615,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:616,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:617,1
    - Dst: AddQual
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:625,1
    - Dst: AddQual
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:627,1
    - Dst: ReplaceVarsFromTargetList
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:641,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:644,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:669,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:670,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:671,1
    - Dst: ReplaceVarsFromTargetList
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:674,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:677,1
    - Dst: checkExprHasSubLink
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:695,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 92
    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: 699
      start: 350
    functionDepth: 8
    functionLinenumber: 350
    functionLinenumberEnd: 699
    functionName: rewriteRuleAction
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - AddQual
    - list_length
    - OffsetVarNodes
    - checkExprHasSubLink
    - acquireLocksOnSubLinks
    - list_concat
    - AcquireRewriteLocks
    - foreach
    - strcmp
    - CombineRangeTables
    - errmsg
    - ReplaceVarsFromTargetList
    - ChangeVarNodes
    - rangeTableEntry_used
    - contain_vars_of_level
    - rt_fetch
    - lfirst
    - getInsertSelectQuery
    - Assert
    - adjustJoinTreeList
    - ereport
    - copyObject
    - errcode
    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:712,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:719,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:721,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:724,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - parsetree
    - removert
    - rt_index
    argTypes:
    - Query*
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 709
    functionDepth: 1
    functionLinenumber: 709
    functionLinenumberEnd: 730
    functionName: adjustJoinTreeList
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 1
    functionsReached:
    - foreach_delete_current
    - copyObject
    - lfirst
    - 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:719,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:721,1
    - Dst: foreach_delete_current
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:724,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 717
    functionDepth: 1
    functionLinenumber: 717
    functionLinenumberEnd: 727
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 453
    functionsReached:
    - foreach_delete_current
    - IsA
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, newjointree)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:799,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:800,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:805,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:812,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:813,1
    - Dst: process_matched_tle
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:821,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:823,1
    - Dst: flatCopyTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:839,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:842,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:852,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:864,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:871,1
    - Dst: findDefaultOnlyColumns
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:899,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:901,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:906,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:907,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:908,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:909,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:910,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:911,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:912,1
    - Dst: findDefaultOnlyColumns
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:939,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:941,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:946,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:947,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:948,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:949,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:950,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:951,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:960,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:973,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:974,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:975,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:976,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:977,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:978,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:981,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:982,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:983,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:984,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:985,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:986,1
    - Dst: build_column_default
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1001,1
    - Dst: coerce_null_to_domain
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1015,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1023,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1025,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1025,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1030,1
    - Dst: pfree
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1033,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1035,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: 1036
      start: 771
    functionDepth: 6
    functionLinenumber: 771
    functionLinenumberEnd: 1036
    functionName: rewriteTargetListIU
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - pstrdup
    - errhint
    - errdetail
    - pfree
    - NameStr
    - list_concat
    - RelationGetNumberOfAttributes
    - findDefaultOnlyColumns
    - flatCopyTargetEntry
    - errmsg
    - TupleDescAttr
    - IsA
    - elog
    - lappend
    - bms_is_member
    - lfirst
    - bms_add_member
    - makeTargetEntry
    - palloc0
    - ereport
    - coerce_null_to_domain
    - build_column_default
    - process_matched_tle
    - errcode
    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:805,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:812,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:813,1
    - Dst: process_matched_tle
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:821,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:823,1
    - Dst: flatCopyTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:839,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:842,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 803
    functionDepth: 6
    functionLinenumber: 803
    functionLinenumberEnd: 845
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 453
    functionsReached:
    - NameStr
    - TupleDescAttr
    - elog
    - lappend
    - flatCopyTargetEntry
    - process_matched_tle
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(temp, targetList)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1101,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1102,1
    - Dst: get_assignment_input
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1112,1
    - Dst: get_assignment_input
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1113,1
    - Dst: exprType
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1116,1
    - Dst: exprType
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1116,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1117,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1118,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1119,1
    - Dst: get_assignment_input
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1128,1
    - Dst: equal
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1134,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1135,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1136,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1137,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1143,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1145,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1147,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1150,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1152,1
    - Dst: list_concat_copy
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1155,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1161,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1166,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1168,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1170,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1176,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1183,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1185,1
    - Dst: flatCopyTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1190,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 50
    argCount: 3
    argNames:
    - src_tle
    - prior_tle
    - attrName
    argTypes:
    - TargetEntry*
    - TargetEntry*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1193
      start: 1045
    functionDepth: 5
    functionLinenumber: 1045
    functionLinenumberEnd: 1193
    functionName: process_matched_tle
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 2
    functionsReached:
    - exprType
    - errmsg
    - equal
    - list_concat_copy
    - get_assignment_input
    - IsA
    - ereport
    - elog
    - flatCopyTargetEntry
    - memcpy
    - makeNode
    - errcode
    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:1203,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1209,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - node
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1198
    functionDepth: 1
    functionLinenumber: 1198
    functionLinenumberEnd: 1220
    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:1231,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1239,1
    - Dst: getIdentitySequence
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1241,1
    - Dst: TupleDescGetDefault
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1252,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1254,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1255,1
    - Dst: get_typdefault
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1263,1
    - Dst: exprType
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1275,1
    - Dst: coerce_to_target_type
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1277,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1284,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1285,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1286,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1288,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1289,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1290,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1291,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - rel
    - attrno
    argTypes:
    - Relation
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1294
      start: 1227
    functionDepth: 8
    functionLinenumber: 1227
    functionLinenumberEnd: 1294
    functionName: build_column_default
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 3
    functionsReached:
    - exprType
    - errmsg
    - NameStr
    - getIdentitySequence
    - get_typdefault
    - TupleDescAttr
    - format_type_be
    - ereport
    - elog
    - errhint
    - TupleDescGetDefault
    - coerce_to_target_type
    - makeNode
    - RelationGetRelationName
    - errcode
    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:1303,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1305,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1310,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1312,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - rte
    argTypes:
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1317
      start: 1298
    functionDepth: 1
    functionLinenumber: 1298
    functionLinenumberEnd: 1317
    functionName: searchForDefault
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - IsA
    - lfirst
    - foreach
    linkageType: ''
    returnType: bool
    signature: bool searchForDefault(RangeTblEntry *rte)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1310,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1312,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1314
      start: 1308
    functionDepth: 1
    functionLinenumber: 1308
    functionLinenumberEnd: 1314
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 454
    functionsReached:
    - IsA
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, sublist)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1330,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1332,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1342,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1345,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1346,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1355,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1358,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1359,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1367,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - rte
    argTypes:
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1372
      start: 1324
    functionDepth: 3
    functionLinenumber: 1324
    functionLinenumberEnd: 1372
    functionName: findDefaultOnlyColumns
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 1
    functionsReached:
    - bms_del_member
    - bms_is_empty
    - IsA
    - foreach
    - lfirst
    - 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:1342,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1345,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1346,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1347
      start: 1340
    functionDepth: 3
    functionLinenumber: 1340
    functionLinenumberEnd: 1347
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 455
    functionsReached:
    - IsA
    - lfirst
    - bms_add_member
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, sublist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1355,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1358,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1359,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1360
      start: 1353
    functionDepth: 3
    functionLinenumber: 1353
    functionLinenumberEnd: 1360
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 455
    functionsReached:
    - IsA
    - lfirst
    - bms_del_member
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, sublist)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1425,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1426,1
    - Dst: searchForDefault
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1433,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1443,1
    - Dst: linitial
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1443,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1444,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1446,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1448,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1450,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1458,1
    - Dst: view_has_instead_trigger
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1471,1
    - Dst: matchLocks
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1479,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1485,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1506,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1508,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1513,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1513,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1518,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1521,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1531,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1535,1
    - Dst: makeNullConst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1536,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1543,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1544,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1545,1
    - Dst: build_column_default
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1548,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1562,1
    - Dst: coerce_null_to_domain
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1567,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1573,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1576,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1578,1
    - Dst: pfree
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1582,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: 1585
      start: 1412
    functionDepth: 9
    functionLinenumber: 1412
    functionLinenumberEnd: 1585
    functionName: rewriteValuesRTE
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - makeNullConst
    - view_has_instead_trigger
    - Assert
    - pfree
    - linitial
    - TupleDescAttr
    - IsA
    - palloc0
    - list_length
    - foreach
    - coerce_null_to_domain
    - elog
    - lappend
    - build_column_default
    - bms_is_member
    - searchForDefault
    - lfirst
    - matchLocks
    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:1485,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1493
      start: 1483
    functionDepth: 1
    functionLinenumber: 1483
    functionLinenumberEnd: 1493
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 456
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, locks)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1518,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1521,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1531,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1535,1
    - Dst: makeNullConst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1536,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1543,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1544,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1545,1
    - Dst: build_column_default
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1548,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1562,1
    - Dst: coerce_null_to_domain
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1567,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1573,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1576,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1577
      start: 1516
    functionDepth: 9
    functionLinenumber: 1516
    functionLinenumberEnd: 1577
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 456
    functionsReached:
    - makeNullConst
    - Assert
    - TupleDescAttr
    - IsA
    - coerce_null_to_domain
    - elog
    - lappend
    - build_column_default
    - bms_is_member
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, sublist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1604,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1606,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1612,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1614,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1618,1
    - Dst: makeNullConst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1618,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1623,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1625,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - parsetree
    - rte
    argTypes:
    - Query*
    - RangeTblEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1628
      start: 1597
    functionDepth: 6
    functionLinenumber: 1597
    functionLinenumberEnd: 1628
    functionName: rewriteValuesRTEToNulls
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - makeNullConst
    - IsA
    - foreach
    - lappend
    - lfirst
    linkageType: ''
    returnType: void
    signature: void rewriteValuesRTEToNulls(Query *parsetree, RangeTblEntry *rte)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1612,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1614,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1618,1
    - Dst: makeNullConst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1618,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1623,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1624
      start: 1610
    functionDepth: 6
    functionLinenumber: 1610
    functionLinenumberEnd: 1624
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 457
    functionsReached:
    - makeNullConst
    - lappend
    - IsA
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, sublist)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1688,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1689,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1690,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1691,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1692,1
    - Dst: rangeTableEntry_used
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1698,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1699,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: 1704
      start: 1635
    functionDepth: 6
    functionLinenumber: 1635
    functionLinenumberEnd: 1704
    functionName: matchLocks
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 1
    functionsReached:
    - errmsg
    - ereport
    - rangeTableEntry_used
    - lappend
    - RelationGetRelationName
    - errdetail
    - errcode
    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:1722,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1723,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1725,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1728,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1729,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1730,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1731,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1732,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1733,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1764,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1765,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1766,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1767,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1779,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1780,1
    - Dst: makeWholeRowVar
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1789,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1790,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1791,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1792,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1795,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1800,1
    - Dst: get_parse_rowmark
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1811,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1818,1
    - Dst: linitial
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1818,1
    - Dst: AcquireRewriteLocks
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1820,1
    - Dst: markQueryForLocking
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1828,1
    - Dst: fireRIRrules
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1834,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1846,1
    - Dst: RelationIsSecurityView
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1850,1
    - Dst: ExecCleanTargetListLength
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1868,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1869,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1871,1
    - Dst: makeString
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1872,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1872,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: 1876
      start: 1710
    functionDepth: 7
    functionLinenumber: 1710
    functionLinenumberEnd: 1876
    functionName: ApplyRetrieveRule
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - makeWholeRowVar
    - pstrdup
    - list_length
    - RelationIsSecurityView
    - get_parse_rowmark
    - fireRIRrules
    - RelationGetRelationName
    - RelationGetRelid
    - AcquireRewriteLocks
    - errmsg
    - ExecCleanTargetListLength
    - makeString
    - linitial
    - ChangeVarNodes
    - elog
    - lappend
    - rt_fetch
    - makeTargetEntry
    - markQueryForLocking
    - ereport
    - unlikely
    - copyObject
    - errcode
    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:1897,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1900,1
    - Dst: applyLockingClause
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1906,1
    - Dst: getRTEPermissionInfo
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1908,1
    - Dst: applyLockingClause
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1913,1
    - Dst: markQueryForLocking
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1915,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1920,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1925,1
    - Dst: markQueryForLocking
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1926,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1926,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1928,1
    - Dst: markQueryForLocking
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1932,1
    - Dst: markQueryForLocking
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1933,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1936,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1937,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: 1938
      start: 1890
    functionDepth: 1
    functionLinenumber: 1890
    functionLinenumberEnd: 1938
    functionName: markQueryForLocking
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 2
    functionsReached:
    - nodeTag
    - markQueryForLocking
    - applyLockingClause
    - IsA
    - foreach
    - elog
    - rt_fetch
    - lfirst
    - getRTEPermissionInfo
    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:1959,1
    - Dst: fireRIRrules
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1964,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:1979,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - node
    - context
    argTypes:
    - Node*
    - fireRIRonSubLink_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1980
      start: 1954
    functionDepth: 1
    functionLinenumber: 1954
    functionLinenumberEnd: 1980
    functionName: fireRIRonSubLink
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - IsA
    - expression_tree_walker
    - fireRIRrules
    linkageType: ''
    returnType: bool
    signature: bool fireRIRonSubLink(Node *node, fireRIRonSubLink_context *context)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2003,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2005,1
    - Dst: rewriteSearchAndCycle
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2009,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2010,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2019,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2030,1
    - Dst: fireRIRrules
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2039,1
    - Dst: rangeTableEntry_used
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2088,1
    - Dst: table_open
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2103,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2118,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2128,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2128,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2129,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2130,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2131,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2132,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2133,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2133,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2137,1
    - Dst: ApplyRetrieveRule
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2139,1
    - Dst: list_delete_last
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2146,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2150,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2154,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2156,1
    - Dst: fireRIRrules
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2159,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2179,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2196,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2198,1
    - Dst: table_open
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2213,1
    - Dst: get_row_security_policies
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2218,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2233,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2233,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2234,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2235,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2236,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2237,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2239,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2239,1
    - Dst: acquireLocksOnSubLinks
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2250,1
    - Dst: acquireLocksOnSubLinks
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2251,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2261,1
    - Dst: expression_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2264,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2272,1
    - Dst: list_delete_last
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2274,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2283,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2286,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2299,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 90
    argCount: 2
    argNames:
    - parsetree
    - activeRIRs
    argTypes:
    - Query*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2303
      start: 1990
    functionDepth: 8
    functionLinenumber: 1990
    functionLinenumberEnd: 2303
    functionName: fireRIRrules
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 3
    functionsReached:
    - get_row_security_policies
    - list_length
    - fireRIRrules
    - RelationGetRelationName
    - query_tree_walker
    - acquireLocksOnSubLinks
    - list_concat
    - RelationGetRelid
    - table_open
    - foreach
    - errmsg
    - rewriteSearchAndCycle
    - lfirst_node
    - expression_tree_walker
    - list_delete_last
    - ApplyRetrieveRule
    - rangeTableEntry_used
    - lappend
    - list_member_oid
    - table_close
    - rt_fetch
    - lfirst
    - Assert
    - lappend_oid
    - ereport
    - errcode
    linkageType: ''
    returnType: Query
    signature: 'Query *

      fireRIRrules(Query *parsetree, List *activeRIRs)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2137,1
    - Dst: ApplyRetrieveRule
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2144
      start: 2135
    functionDepth: 8
    functionLinenumber: 2135
    functionLinenumberEnd: 2144
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 459
    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:2326,1
    - Dst: acquireLocksOnSubLinks
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2337,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2340,1
    - Dst: ReplaceVarsFromTargetList
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2343,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2346,1
    - Dst: AddInvertedQual
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2356,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - parsetree
    - rule_qual
    - rt_index
    - event
    argTypes:
    - Query*
    - Node*
    - int
    - CmdType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2359
      start: 2319
    functionDepth: 8
    functionLinenumber: 2319
    functionLinenumberEnd: 2359
    functionName: CopyAndAddInvertedQual
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - acquireLocksOnSubLinks
    - ReplaceVarsFromTargetList
    - AddInvertedQual
    - ChangeVarNodes
    - copyObject
    - rt_fetch
    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:2404,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2441,1
    - Dst: CopyAndAddInvertedQual
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2442,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2452,1
    - Dst: rewriteRuleAction
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2457,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2464,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: 2469
      start: 2390
    functionDepth: 9
    functionLinenumber: 2390
    functionLinenumberEnd: 2469
    functionName: fireRules
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - CopyAndAddInvertedQual
    - lappend
    - copyObject
    - rewriteRuleAction
    - lfirst
    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:2404,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2441,1
    - Dst: CopyAndAddInvertedQual
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2442,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2452,1
    - Dst: rewriteRuleAction
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2457,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2464,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2466
      start: 2402
    functionDepth: 9
    functionLinenumber: 2402
    functionLinenumberEnd: 2466
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 459
    functionsReached:
    - CopyAndAddInvertedQual
    - lappend
    - copyObject
    - rewriteRuleAction
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, locks)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2452,1
    - Dst: rewriteRuleAction
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2457,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2464,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2465
      start: 2450
    functionDepth: 9
    functionLinenumber: 2450
    functionLinenumberEnd: 2465
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 459
    functionsReached:
    - rewriteRuleAction
    - lfirst
    - lappend
    linkageType: ''
    returnType: void
    signature: void foreach(r, actions)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2486,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2495,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2496,1
    - Dst: linitial
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2498,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2502,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - view
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2504
      start: 2481
    functionDepth: 1
    functionLinenumber: 2481
    functionLinenumberEnd: 2504
    functionName: get_view_query
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - linitial
    - Assert
    - 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:2540,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2560,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2566,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 42
    argCount: 3
    argNames:
    - view
    - event
    - mergeActionList
    argTypes:
    - Relation
    - CmdType
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2570
      start: 2520
    functionDepth: 1
    functionLinenumber: 2520
    functionLinenumberEnd: 2570
    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:2599,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2601,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2604,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2607,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2610,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 2
    argNames:
    - rtr
    - tle
    argTypes:
    - RangeTblRef*
    - TargetEntry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2613
      start: 2584
    functionDepth: 1
    functionLinenumber: 2584
    functionLinenumberEnd: 2613
    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:2671,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2674,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2677,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2680,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2683,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2686,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2698,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2701,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2704,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2710,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2711,1
    - Dst: linitial
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2713,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2714,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2715,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2717,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2723,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2726,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2738,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2740,1
    - Dst: view_col_is_auto_updatable
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2742,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2750,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 41
    argCount: 2
    argNames:
    - viewquery
    - check_cols
    argTypes:
    - Query*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2754
      start: 2632
    functionDepth: 2
    functionLinenumber: 2632
    functionLinenumberEnd: 2754
    functionName: view_query_is_auto_updatable
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - linitial
    - IsA
    - list_length
    - foreach
    - view_col_is_auto_updatable
    - rt_fetch
    - gettext_noop
    - lfirst
    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:2794,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2794,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2795,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2805,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2807,1
    - Dst: view_col_is_auto_updatable
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2811,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2817,1
    - Dst: bms_is_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2819,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: 2829
      start: 2780
    functionDepth: 3
    functionLinenumber: 2780
    functionLinenumberEnd: 2829
    functionName: view_cols_are_auto_updatable
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - Assert
    - foreach
    - list_length
    - bms_add_member
    - bms_is_member
    - view_col_is_auto_updatable
    - lfirst
    - linitial_node
    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:2876,1
    - Dst: try_relation_open
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2878,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2890,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2890,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2892,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2900,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2922,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2944,1
    - Dst: GetFdwRoutineForRelation
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2953,1
    - Dst: FdwRoutine*::IsForeignRelUpdatable
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2956,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2968,1
    - Dst: get_view_query
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2975,1
    - Dst: view_query_is_auto_updatable
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2977,1
    - Dst: view_cols_are_auto_updatable
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2991,1
    - Dst: bms_int_members
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2995,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:2997,1
    - Dst: linitial
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3008,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3009,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3010,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3016,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3017,1
    - Dst: adjust_view_column_set
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3018,1
    - Dst: relation_is_updatable
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3020,1
    - Dst: list_delete_last
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3024,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3031,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: 3033
      start: 2863
    functionDepth: 6
    functionLinenumber: 2863
    functionLinenumberEnd: 3033
    functionName: relation_is_updatable
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 1
    functionsReached:
    - FdwRoutine*::IsForeignRelUpdatable
    - relation_close
    - adjust_view_column_set
    - get_view_query
    - RelationGetRelid
    - bms_is_empty
    - bms_int_members
    - try_relation_open
    - linitial
    - list_delete_last
    - view_cols_are_auto_updatable
    - list_member_oid
    - rt_fetch
    - check_stack_depth
    - Assert
    - view_query_is_auto_updatable
    - lappend_oid
    - GetFdwRoutineForRelation
    - relation_is_updatable
    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:3051,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3069,1
    - Dst: castNode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3074,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3075,1
    - Dst: get_tle_by_resno
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3086,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3088,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3092,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3096,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - cols
    - targetlist
    argTypes:
    - Bitmapset*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3102
      start: 3044
    functionDepth: 3
    functionLinenumber: 3044
    functionLinenumberEnd: 3102
    functionName: adjust_view_column_set
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 1
    functionsReached:
    - lfirst_node
    - IsA
    - castNode
    - elog
    - get_tle_by_resno
    - bms_next_member
    - bms_add_member
    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:3069,1
    - Dst: castNode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3074,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3075,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3077
      start: 3067
    functionDepth: 3
    functionLinenumber: 3067
    functionLinenumberEnd: 3077
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 461
    functionsReached:
    - bms_add_member
    - lfirst_node
    - castNode
    linkageType: ''
    returnType: void
    signature: void foreach(lc, targetlist)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3129,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3130,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3131,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3132,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3133,1
    - Dst: _
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3133,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3134,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3137,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3138,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3139,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3140,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3141,1
    - Dst: _
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3141,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3142,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3145,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3146,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3147,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3148,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3149,1
    - Dst: _
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3149,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3150,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3158,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3164,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3165,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3166,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3167,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3168,1
    - Dst: _
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3168,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3169,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3173,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3174,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3175,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3176,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3177,1
    - Dst: _
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3177,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3178,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3182,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3183,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3184,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3185,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3186,1
    - Dst: _
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3186,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3187,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3192,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3198,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 38
    argCount: 4
    argNames:
    - view
    - command
    - mergeActionList
    - detail
    argTypes:
    - Relation
    - CmdType
    - List*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3201
      start: 3118
    functionDepth: 1
    functionLinenumber: 3118
    functionLinenumberEnd: 3201
    functionName: error_view_not_updatable
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 1
    functionsReached:
    - errmsg
    - foreach_node
    - errdetail_internal
    - ereport
    - errhint
    - elog
    - _
    - RelationGetRelationName
    - errcode
    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: 39
    BranchProfiles: []
    Callsites:
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3239,1
    - Dst: get_view_query
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3239,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3242,1
    - Dst: getRTEPermissionInfo
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3243,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3256,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3268,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3269,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3270,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3271,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3272,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3273,1
    - Dst: view_query_is_auto_updatable
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3282,1
    - Dst: error_view_not_updatable
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3285,1
    - Dst: bms_union
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3309,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3312,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3314,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3317,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3323,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3325,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3328,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3333,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3338,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3341,1
    - Dst: view_cols_are_auto_updatable
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3347,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3360,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3361,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3362,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3364,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3365,1
    - Dst: _
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3365,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3368,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3369,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3370,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3372,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3373,1
    - Dst: _
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3373,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3376,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3377,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3378,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3380,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3381,1
    - Dst: _
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3381,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3384,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3400,1
    - Dst: view_has_instead_trigger
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3403,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3404,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3405,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3406,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3407,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3408,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3409,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3417,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3417,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3418,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3421,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3422,1
    - Dst: getRTEPermissionInfo
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3423,1
    - Dst: table_open
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3432,1
    - Dst: query_tree_walker
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3451,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3469,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3470,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3489,1
    - Dst: addRTEPermissionInfo
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3514,1
    - Dst: RelationHasSecurityInvoker
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3515,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3545,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3545,1
    - Dst: bms_is_empty
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3546,1
    - Dst: adjust_view_column_set
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3551,1
    - Dst: adjust_view_column_set
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3554,1
    - Dst: ReplaceVarsFromTargetList
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3569,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3585,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3589,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3603,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3605,1
    - Dst: get_tle_by_resno
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3611,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3612,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3615,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3619,1
    - Dst: foreach_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3624,1
    - Dst: get_tle_by_resno
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3631,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3632,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3635,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3660,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3662,1
    - Dst: get_tle_by_resno
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3668,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3669,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3672,1
    - Dst: addRangeTableEntryForRelation
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3686,1
    - Dst: make_parsestate
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3686,1
    - Dst: makeAlias
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3689,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3696,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3698,1
    - Dst: BuildOnConflictExcludedTargetlist
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3705,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3715,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3717,1
    - Dst: ReplaceVarsFromTargetList
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3721,1
    - Dst: copyObject
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3754,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3756,1
    - Dst: RelationIsSecurityView
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3758,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3768,1
    - Dst: lcons
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3769,1
    - Dst: checkExprHasSubLink
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3781,1
    - Dst: AddQual
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3784,1
    - Dst: RelationHasCheckOption
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3795,1
    - Dst: RelationHasCascadedCheckOption
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3796,1
    - Dst: linitial
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3809,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3831,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3833,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3833,1
    - Dst: lcons
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3838,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3844,1
    - Dst: checkExprHasSubLink
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3854,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3859,1
    CyclomaticComplexity: 61
    EdgeCount: 61
    ICount: 176
    argCount: 2
    argNames:
    - parsetree
    - view
    argTypes:
    - Query*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3862
      start: 3213
    functionDepth: 6
    functionLinenumber: 3213
    functionLinenumberEnd: 3862
    functionName: rewriteTargetView
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - BuildOnConflictExcludedTargetlist
    - lcons
    - AddQual
    - pstrdup
    - list_length
    - bms_union
    - errhint
    - RelationIsSecurityView
    - addRTEPermissionInfo
    - RelationHasCheckOption
    - adjust_view_column_set
    - RelationGetRelationName
    - errdetail
    - addRangeTableEntryForRelation
    - get_view_query
    - query_tree_walker
    - makeNode
    - checkExprHasSubLink
    - foreach_node
    - RelationGetRelid
    - table_open
    - errdetail_internal
    - bms_is_empty
    - foreach
    - makeAlias
    - _
    - error_view_not_updatable
    - linitial_node
    - errmsg
    - view_has_instead_trigger
    - make_parsestate
    - ReplaceVarsFromTargetList
    - linitial
    - view_cols_are_auto_updatable
    - ChangeVarNodes
    - IsA
    - elog
    - lappend
    - RelationHasSecurityInvoker
    - table_close
    - rt_fetch
    - lfirst
    - bms_add_member
    - Assert
    - view_query_is_auto_updatable
    - RelationHasCascadedCheckOption
    - ereport
    - unlikely
    - copyObject
    - get_tle_by_resno
    - errcode
    - getRTEPermissionInfo
    linkageType: ''
    returnType: Query
    signature: 'Query *

      rewriteTargetView(Query *parsetree, Relation view)'
  - BBCount: 46
    BranchProfiles: []
    Callsites:
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3892,1
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3894,1
    - Dst: castNode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3895,1
    - Dst: RewriteQuery
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3901,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3908,1
    - Dst: linitial_node
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3911,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3922,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3923,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3924,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3927,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3933,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3934,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3935,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3944,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3947,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3948,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3949,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3951,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3952,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3953,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3956,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3957,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3958,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3983,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3984,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3985,1
    - Dst: table_open
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3991,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4007,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4009,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4011,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4013,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4020,1
    - Dst: rewriteTargetListIU
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4033,1
    - Dst: rewriteValuesRTE
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4041,1
    - Dst: rewriteTargetListIU
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4050,1
    - Dst: rewriteTargetListIU
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4061,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4070,1
    - Dst: rewriteTargetListIU
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4072,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4080,1
    - Dst: foreach
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4085,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4087,1
    - Dst: rewriteTargetListIU
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4102,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4109,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4119,1
    - Dst: matchLocks
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4124,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4127,1
    - Dst: fireRules
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4128,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4159,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4163,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4164,1
    - Dst: linitial
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4166,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4168,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4171,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4175,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4181,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4183,1
    - Dst: rewriteValuesRTEToNulls
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4185,1
    - Dst: view_has_instead_trigger
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4206,1
    - Dst: error_view_not_updatable
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4215,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4218,1
    - Dst: rewriteTargetView
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4225,1
    - Dst: lcons
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4234,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4236,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4261,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4262,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4264,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4265,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4266,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4267,1
    - Dst: palloc
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4270,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4271,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4273,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4277,1
    - Dst: RewriteQuery
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4289,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4293,1
    - Dst: list_delete_last
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4296,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4313,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4314,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4315,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4316,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4317,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4320,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4321,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4322,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4323,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4324,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4327,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4328,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4329,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4330,1
    - Dst: errhint
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4331,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4334,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4347,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4348,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4349,1
    - Dst: table_close
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4351,1
    - Dst: lcons
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4371,1
    - Dst: lcons
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4373,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4378,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4380,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4398,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4404,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4405,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4406,1
    CyclomaticComplexity: 69
    EdgeCount: 69
    ICount: 156
    argCount: 3
    argNames:
    - parsetree
    - rewrite_events
    - orig_rt_length
    argTypes:
    - Query*
    - List*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4410
      start: 3876
    functionDepth: 10
    functionLinenumber: 3876
    functionLinenumberEnd: 4410
    functionName: RewriteQuery
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 1
    functionsReached:
    - rewriteValuesRTE
    - lcons
    - castNode
    - list_length
    - errhint
    - RelationGetRelationName
    - list_concat
    - RelationGetRelid
    - table_open
    - foreach
    - RewriteQuery
    - error_view_not_updatable
    - gettext_noop
    - matchLocks
    - linitial_node
    - errmsg
    - rewriteTargetListIU
    - view_has_instead_trigger
    - rewriteValuesRTEToNulls
    - lfirst_node
    - linitial
    - list_delete_last
    - IsA
    - elog
    - lappend
    - palloc
    - rt_fetch
    - table_close
    - lfirst
    - Assert
    - rewriteTargetView
    - ereport
    - fireRules
    - errcode
    linkageType: ''
    returnType: List
    signature: 'List *

      RewriteQuery(Query *parsetree, List *rewrite_events, int orig_rt_length)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3944,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3947,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3948,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3949,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3951,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3952,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:3953,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3954
      start: 3942
    functionDepth: 1
    functionLinenumber: 3942
    functionLinenumberEnd: 3954
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 463
    functionsReached:
    - errmsg
    - errcode
    - lfirst
    - ereport
    linkageType: ''
    returnType: void
    signature: void foreach(lc2, newstuff)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4159,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4163,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4164,1
    - Dst: linitial
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4166,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4168,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4171,1
    - Dst: IsA
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4175,1
    - Dst: rt_fetch
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4181,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4183,1
    - Dst: rewriteValuesRTEToNulls
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4185,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4186
      start: 4157
    functionDepth: 7
    functionLinenumber: 4157
    functionLinenumberEnd: 4186
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 463
    functionsReached:
    - rewriteValuesRTEToNulls
    - linitial
    - IsA
    - list_length
    - elog
    - rt_fetch
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(n, product_queries)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4261,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4262,1
    - Dst: ereport
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4264,1
    - Dst: errcode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4265,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4266,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4267,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4268
      start: 4259
    functionDepth: 1
    functionLinenumber: 4259
    functionLinenumberEnd: 4268
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 463
    functionsReached:
    - errmsg
    - lfirst
    - RelationGetRelid
    - ereport
    - RelationGetRelationName
    - errcode
    linkageType: ''
    returnType: void
    signature: void foreach(n, rewrite_events)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4277,1
    - Dst: RewriteQuery
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4289,1
    - Dst: list_concat
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4294
      start: 4275
    functionDepth: 11
    functionLinenumber: 4275
    functionLinenumberEnd: 4294
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 463
    functionsReached:
    - RewriteQuery
    - list_concat
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(n, product_queries)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4398,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4402
      start: 4396
    functionDepth: 1
    functionLinenumber: 4396
    functionLinenumberEnd: 4402
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 463
    functionsReached:
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(lc1, rewritten)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4434,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4441,1
    - Dst: build_generation_expression
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4448,1
    - Dst: ChangeVarNodes
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4449,1
    - Dst: makeTargetEntry
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4451,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4452,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4456,1
    - Dst: list_length
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4456,1
    - Dst: ReplaceVarsFromTargetList
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4458,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 5
    argNames:
    - node
    - rel
    - rt_index
    - rte
    - result_relation
    argTypes:
    - Node*
    - Relation
    - int
    - RangeTblEntry*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4465
      start: 4428
    functionDepth: 6
    functionLinenumber: 4428
    functionLinenumberEnd: 4465
    functionName: expand_generated_columns_internal
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 0
    functionsReached:
    - makeTargetEntry
    - Assert
    - ReplaceVarsFromTargetList
    - build_generation_expression
    - RelationGetDescr
    - ChangeVarNodes
    - TupleDescAttr
    - list_length
    - lappend
    linkageType: ''
    returnType: Node
    signature: "Node *\nexpand_generated_columns_internal(Node *node, Relation rel,
      int rt_index,\n\t\t\t\t\t\t\t\t  RangeTblEntry *rte, int result_relation)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4476,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4482,1
    - Dst: makeAlias
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4484,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4484,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4486,1
    - Dst: expand_generated_columns_internal
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4488,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - node
    - rel
    - rt_index
    argTypes:
    - Node*
    - Relation
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4492
      start: 4473
    functionDepth: 7
    functionLinenumber: 4473
    functionLinenumberEnd: 4492
    functionName: expand_generated_columns_in_expr
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 2
    functionsReached:
    - RelationGetRelid
    - RelationGetDescr
    - makeAlias
    - expand_generated_columns_internal
    - makeNode
    - RelationGetRelationName
    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:4502,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4503,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4507,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4508,1
    - Dst: build_column_default
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4510,1
    - Dst: elog
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4512,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4513,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4521,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4523,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - rel
    - attrno
    argTypes:
    - Relation
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4533
      start: 4499
    functionDepth: 9
    functionLinenumber: 4499
    functionLinenumberEnd: 4533
    functionName: build_generation_expression
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 4
    functionsReached:
    - Assert
    - exprCollation
    - RelationGetDescr
    - TupleDescAttr
    - elog
    - build_column_default
    - makeNode
    - RelationGetRelationName
    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:4559,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4560,1
    - Dst: RewriteQuery
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4567,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4579,1
    - Dst: fireRIRrules
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4581,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4585,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4610,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4614,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4615,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4623,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - parsetree
    argTypes:
    - Query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4635
      start: 4545
    functionDepth: 11
    functionLinenumber: 4545
    functionLinenumberEnd: 4635
    functionName: QueryRewrite
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 2
    functionsReached:
    - Assert
    - RewriteQuery
    - lappend
    - fireRIRrules
    - lfirst
    linkageType: ''
    returnType: List
    signature: 'List *

      QueryRewrite(Query *parsetree)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4579,1
    - Dst: fireRIRrules
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4581,1
    - Dst: lappend
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4585,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4586
      start: 4577
    functionDepth: 9
    functionLinenumber: 4577
    functionLinenumberEnd: 4586
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 463
    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:4610,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4614,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4615,1
    - Dst: Assert
      Src: /src/postgres/src/backend/rewrite/rewriteHandler.c:4623,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4629
      start: 4608
    functionDepth: 1
    functionLinenumber: 4608
    functionLinenumberEnd: 4629
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/rewrite/rewriteHandler.c
    functionUses: 463
    functionsReached:
    - Assert
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(l, results)
  - 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:
    - errmsg
    - errcode
    - systable_beginscan
    - IsSystemRelation
    - table_open
    - systable_getnext
    - HeapTupleIsValid
    - CacheInvalidateRelcache
    - GETSTRUCT
    - ScanKeyInit
    - ereport
    - elog
    - systable_endscan
    - table_close
    - RelationGetRelationName
    - CatalogTupleDelete
    - ObjectIdGetDatum
    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
    - makeString
    - makeVar
    - list_nth_oid
    - list_nth_int
    - list_length
    - list_nth
    - lappend
    - strVal
    - makeNode
    - lfirst
    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: 463
    functionsReached:
    - makeString
    - makeVar
    - list_nth_oid
    - list_nth_int
    - list_length
    - list_nth
    - lappend
    - strVal
    - strcmp
    - lfirst
    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:
    - makeNode
    - list_make1
    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:
    - makeVar
    - list_make2
    - makeFuncExpr
    - list_make1
    - makeNode
    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:285,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:382,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:
    - makeFromExpr
    - lappend_int
    - lcons
    - list_nth_int
    - list_length
    - castNode
    - list_nth_node
    - makeNode
    - make_path_initial_array
    - Int64GetDatum
    - makeAlias
    - make_path_rowexpr
    - make_opclause
    - make_path_cat_expr
    - list_nth_oid
    - strcmp
    - makeString
    - errmsg
    - makeVar
    - linitial
    - makeSortGroupClauseForSetOp
    - list_nth
    - lappend
    - strVal
    - rt_fetch
    - makeTargetEntry
    - Assert
    - list_make2
    - makeFuncExpr
    - lappend_oid
    - IncrementVarSublevelsUp
    - list_make1
    - ereport
    - copyObject
    - makeConst
    - errcode
    linkageType: ''
    returnType: CommonTableExpr
    signature: 'CommonTableExpr *

      rewriteSearchAndCycle(CommonTableExpr *cte)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      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:
    - palloc
    - Assert
    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*::allocfunc
    - rbt_insert_fixup
    - RBTree*::combiner
    - rbt_copy_data
    - RBTree*::comparator
    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:
    - rbt_copy_data
    - RBTree*::freefunc
    - rbt_delete_fixup
    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:
    - Min
    - UINT64CONST
    - palloc0
    - optimal_k
    - Max
    - my_bloom_power
    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:
    - Max
    - Min
    - log
    - 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:
    - mod_m
    - hash_any_extended
    - DatumGetUInt64
    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:
    - UINT64CONST
    - Assert
    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:
    - sqrt
    - initHyperLogLog
    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:
    - pfree
    - Assert
    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
      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:
    - memset
    - palloc
    - GetMemoryChunkSpace
    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:
    - MemoryContextAlloc
    - GetMemoryChunkSpace
    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:
    - MemoryContextAlloc
    - GetMemoryChunkSpace
    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:
    - intset_new_leaf_node
    - simple8b_encode
    - memmove
    - intset_update_upper
    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:
    - intset_new_internal_node
    - Assert
    - elog
    - intset_update_upper
    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:
    - simple8b_contains
    - Assert
    - intset_binsrch_uint64
    - intset_binsrch_leaf
    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:
    - UINT64CONST
    - Assert
    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:55,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/lib/knapsack.c:58,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/knapsack.c:65,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/knapsack.c:66,1
    - Dst: palloc
      Src: /src/postgres/src/backend/lib/knapsack.c:68,1
    - Dst: palloc
      Src: /src/postgres/src/backend/lib/knapsack.c:69,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/lib/knapsack.c:74,1
    - Dst: bms_replace_members
      Src: /src/postgres/src/backend/lib/knapsack.c:90,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/lib/knapsack.c:92,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/lib/knapsack.c:99,1
    - Dst: bms_del_member
      Src: /src/postgres/src/backend/lib/knapsack.c:101,1
    - Dst: bms_copy
      Src: /src/postgres/src/backend/lib/knapsack.c:101,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/lib/knapsack.c:103,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: 106
      start: 51
    functionDepth: 4
    functionLinenumber: 51
    functionLinenumberEnd: 106
    functionName: DiscreteKnapsack
    functionSourceFile: /src/postgres/src/backend/lib/knapsack.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - bms_del_member
    - MemoryContextDelete
    - bms_copy
    - bms_make_singleton
    - bms_replace_members
    - AllocSetContextCreate
    - palloc
    - bms_add_member
    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: 116
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 116
    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: 121
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 121
    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: 125
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 125
    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: 129
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 129
    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: 133
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 133
    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: 138
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 138
    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: 142
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 142
    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: 151
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 151
    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: 155
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 155
    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: 159
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 159
    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: 165
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 165
    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: 194
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 194
    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: 198
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 198
    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
      Src: /src/postgres/src/backend/lib/dshash.c:212,1
    - Dst: dsa_allocate
      Src: /src/postgres/src/backend/lib/dshash.c:215,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:221,1
    - Dst: LWLockInitialize
      Src: /src/postgres/src/backend/lib/dshash.c:234,1
    - Dst: dsa_allocate_extended
      Src: /src/postgres/src/backend/lib/dshash.c:245,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/lib/dshash.c:248,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/lib/dshash.c:250,1
    - Dst: ereport
      Src: /src/postgres/src/backend/lib/dshash.c:251,1
    - Dst: errcode
      Src: /src/postgres/src/backend/lib/dshash.c:252,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/lib/dshash.c:253,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/lib/dshash.c:254,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:257,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 3
    argNames:
    - area
    - params
    - arg
    argTypes:
    - dsa_area*
    - dshash_parameters*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 262
    functionName: dshash_create
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 1
    functionsReached:
    - errmsg
    - LWLockInitialize
    - errcode
    - dsa_allocate
    - ereport
    - dsa_get_address
    - dsa_allocate_extended
    - DsaPointerIsValid
    - palloc
    - errdetail
    - dsa_free
    linkageType: ''
    returnType: dshash_table
    signature: 'dshash_table *

      dshash_create(dsa_area *area, const dshash_parameters *params, void *arg)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/lib/dshash.c:277,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:286,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:287,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: 298
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 298
    functionName: dshash_attach
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 1
    functionsReached:
    - palloc
    - dsa_get_address
    - Assert
    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:309,1
    - Dst: pfree
      Src: /src/postgres/src/backend/lib/dshash.c:312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - hash_table
    argTypes:
    - dshash_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 306
    functionDepth: 1
    functionLinenumber: 306
    functionLinenumberEnd: 313
    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:328,1
    - Dst: ensure_valid_bucket_pointers
      Src: /src/postgres/src/backend/lib/dshash.c:329,1
    - Dst: NUM_BUCKETS
      Src: /src/postgres/src/backend/lib/dshash.c:332,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/lib/dshash.c:337,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:342,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/lib/dshash.c:344,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/lib/dshash.c:356,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/lib/dshash.c:357,1
    - Dst: pfree
      Src: /src/postgres/src/backend/lib/dshash.c:359,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - hash_table
    argTypes:
    - dshash_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 322
    functionDepth: 1
    functionLinenumber: 322
    functionLinenumberEnd: 360
    functionName: dshash_destroy
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - ensure_valid_bucket_pointers
    - dsa_get_address
    - DsaPointerIsValid
    - dsa_free
    - NUM_BUCKETS
    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:369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - hash_table
    argTypes:
    - dshash_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 366
    functionDepth: 1
    functionLinenumber: 366
    functionLinenumberEnd: 372
    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:396,1
    - Dst: PARTITION_FOR_HASH
      Src: /src/postgres/src/backend/lib/dshash.c:397,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:399,1
    - Dst: ASSERT_NO_PARTITION_LOCKS_HELD_BY_ME
      Src: /src/postgres/src/backend/lib/dshash.c:400,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/lib/dshash.c:402,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:402,1
    - Dst: ensure_valid_bucket_pointers
      Src: /src/postgres/src/backend/lib/dshash.c:404,1
    - Dst: find_in_bucket
      Src: /src/postgres/src/backend/lib/dshash.c:407,1
    - Dst: BUCKET_FOR_HASH
      Src: /src/postgres/src/backend/lib/dshash.c:407,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/lib/dshash.c:412,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:412,1
    - Dst: ENTRY_FROM_ITEM
      Src: /src/postgres/src/backend/lib/dshash.c:418,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - hash_table
    - key
    - exclusive
    argTypes:
    - dshash_table*
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 389
    functionDepth: 1
    functionLinenumber: 389
    functionLinenumberEnd: 420
    functionName: dshash_find
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 2
    functionsReached:
    - Assert
    - ensure_valid_bucket_pointers
    - BUCKET_FOR_HASH
    - PARTITION_FOR_HASH
    - PARTITION_LOCK
    - find_in_bucket
    - ENTRY_FROM_ITEM
    - ASSERT_NO_PARTITION_LOCKS_HELD_BY_ME
    - LWLockRelease
    - LWLockAcquire
    - hash_key
    linkageType: ''
    returnType: void
    signature: 'void *

      dshash_find(dshash_table *hash_table, const void *key, bool exclusive)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_key
      Src: /src/postgres/src/backend/lib/dshash.c:442,1
    - Dst: PARTITION_FOR_HASH
      Src: /src/postgres/src/backend/lib/dshash.c:443,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:446,1
    - Dst: ASSERT_NO_PARTITION_LOCKS_HELD_BY_ME
      Src: /src/postgres/src/backend/lib/dshash.c:447,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/lib/dshash.c:450,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:450,1
    - Dst: ensure_valid_bucket_pointers
      Src: /src/postgres/src/backend/lib/dshash.c:452,1
    - Dst: find_in_bucket
      Src: /src/postgres/src/backend/lib/dshash.c:455,1
    - Dst: BUCKET_FOR_HASH
      Src: /src/postgres/src/backend/lib/dshash.c:455,1
    - Dst: MAX_COUNT_PER_PARTITION
      Src: /src/postgres/src/backend/lib/dshash.c:464,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/lib/dshash.c:477,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:477,1
    - Dst: resize
      Src: /src/postgres/src/backend/lib/dshash.c:478,1
    - Dst: insert_into_bucket
      Src: /src/postgres/src/backend/lib/dshash.c:484,1
    - Dst: BUCKET_FOR_HASH
      Src: /src/postgres/src/backend/lib/dshash.c:485,1
    - Dst: ENTRY_FROM_ITEM
      Src: /src/postgres/src/backend/lib/dshash.c:492,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 3
    argNames:
    - hash_table
    - key
    - found
    argTypes:
    - dshash_table*
    - void*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 432
    functionDepth: 1
    functionLinenumber: 432
    functionLinenumberEnd: 493
    functionName: dshash_find_or_insert
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 2
    functionsReached:
    - Assert
    - MAX_COUNT_PER_PARTITION
    - ensure_valid_bucket_pointers
    - BUCKET_FOR_HASH
    - PARTITION_FOR_HASH
    - PARTITION_LOCK
    - find_in_bucket
    - ENTRY_FROM_ITEM
    - insert_into_bucket
    - ASSERT_NO_PARTITION_LOCKS_HELD_BY_ME
    - resize
    - LWLockRelease
    - LWLockAcquire
    - hash_key
    linkageType: ''
    returnType: void
    signature: "void *\ndshash_find_or_insert(dshash_table *hash_table,\n\t\t\t\t\t
      \ const void *key,\n\t\t\t\t\t  bool *found)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:509,1
    - Dst: ASSERT_NO_PARTITION_LOCKS_HELD_BY_ME
      Src: /src/postgres/src/backend/lib/dshash.c:510,1
    - Dst: hash_key
      Src: /src/postgres/src/backend/lib/dshash.c:512,1
    - Dst: PARTITION_FOR_HASH
      Src: /src/postgres/src/backend/lib/dshash.c:513,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/lib/dshash.c:515,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:515,1
    - Dst: ensure_valid_bucket_pointers
      Src: /src/postgres/src/backend/lib/dshash.c:516,1
    - Dst: delete_key_from_bucket
      Src: /src/postgres/src/backend/lib/dshash.c:518,1
    - Dst: BUCKET_FOR_HASH
      Src: /src/postgres/src/backend/lib/dshash.c:519,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:521,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/lib/dshash.c:528,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:528,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - hash_table
    - key
    argTypes:
    - dshash_table*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 502
    functionDepth: 1
    functionLinenumber: 502
    functionLinenumberEnd: 531
    functionName: dshash_delete_key
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 1
    functionsReached:
    - Assert
    - ensure_valid_bucket_pointers
    - BUCKET_FOR_HASH
    - PARTITION_FOR_HASH
    - PARTITION_LOCK
    - ASSERT_NO_PARTITION_LOCKS_HELD_BY_ME
    - delete_key_from_bucket
    - LWLockRelease
    - LWLockAcquire
    - hash_key
    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:543,1
    - Dst: PARTITION_FOR_HASH
      Src: /src/postgres/src/backend/lib/dshash.c:544,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:546,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:547,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/lib/dshash.c:547,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:547,1
    - Dst: delete_item
      Src: /src/postgres/src/backend/lib/dshash.c:550,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/lib/dshash.c:551,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - hash_table
    - entry
    argTypes:
    - dshash_table*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 540
    functionDepth: 1
    functionLinenumber: 540
    functionLinenumberEnd: 552
    functionName: dshash_delete_entry
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached:
    - Assert
    - PARTITION_FOR_HASH
    - PARTITION_LOCK
    - ITEM_FROM_ENTRY
    - LWLockHeldByMeInMode
    - LWLockRelease
    - delete_item
    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:560,1
    - Dst: PARTITION_FOR_HASH
      Src: /src/postgres/src/backend/lib/dshash.c:561,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:563,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/lib/dshash.c:565,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - hash_table
    - entry
    argTypes:
    - dshash_table*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 557
    functionDepth: 1
    functionLinenumber: 557
    functionLinenumberEnd: 566
    functionName: dshash_release_lock
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 4
    functionsReached:
    - Assert
    - PARTITION_FOR_HASH
    - PARTITION_LOCK
    - ITEM_FROM_ENTRY
    - LWLockRelease
    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:574,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: 575
      start: 571
    functionDepth: 0
    functionLinenumber: 571
    functionLinenumberEnd: 575
    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:583,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - v
    - size
    - arg
    argTypes:
    - void*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 580
    functionDepth: 3
    functionLinenumber: 580
    functionLinenumberEnd: 584
    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:592,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: 593
      start: 589
    functionDepth: 0
    functionLinenumber: 589
    functionLinenumberEnd: 593
    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:601,1
    - Dst: strlen
      Src: /src/postgres/src/backend/lib/dshash.c:601,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:602,1
    - Dst: strlen
      Src: /src/postgres/src/backend/lib/dshash.c:602,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/lib/dshash.c:604,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: 605
      start: 598
    functionDepth: 1
    functionLinenumber: 598
    functionLinenumberEnd: 605
    functionName: dshash_strcmp
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached:
    - strcmp
    - Assert
    - strlen
    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:613,1
    - Dst: strlen
      Src: /src/postgres/src/backend/lib/dshash.c:613,1
    - Dst: string_hash
      Src: /src/postgres/src/backend/lib/dshash.c:615,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - v
    - size
    - arg
    argTypes:
    - void*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 610
    functionDepth: 3
    functionLinenumber: 610
    functionLinenumberEnd: 616
    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:624,1
    - Dst: strlen
      Src: /src/postgres/src/backend/lib/dshash.c:624,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/lib/dshash.c:626,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: 627
      start: 621
    functionDepth: 1
    functionLinenumber: 621
    functionLinenumberEnd: 627
    functionName: dshash_strcpy
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached:
    - Assert
    - strlen
    - strcpy
    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: 648
      start: 637
    functionDepth: 0
    functionLinenumber: 637
    functionLinenumberEnd: 648
    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:672,1
    - Dst: ASSERT_NO_PARTITION_LOCKS_HELD_BY_ME
      Src: /src/postgres/src/backend/lib/dshash.c:673,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/lib/dshash.c:677,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:677,1
    - Dst: ensure_valid_bucket_pointers
      Src: /src/postgres/src/backend/lib/dshash.c:681,1
    - Dst: NUM_BUCKETS
      Src: /src/postgres/src/backend/lib/dshash.c:684,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:690,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/lib/dshash.c:690,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:690,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/lib/dshash.c:695,1
    - Dst: PARTITION_FOR_BUCKET_INDEX
      Src: /src/postgres/src/backend/lib/dshash.c:707,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/lib/dshash.c:718,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:718,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/lib/dshash.c:721,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:721,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:730,1
    - Dst: ENTRY_FROM_ITEM
      Src: /src/postgres/src/backend/lib/dshash.c:738,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 1
    argNames:
    - status
    argTypes:
    - dshash_seq_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 656
    functionDepth: 1
    functionLinenumber: 656
    functionLinenumberEnd: 739
    functionName: dshash_seq_next
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached:
    - Assert
    - ensure_valid_bucket_pointers
    - PARTITION_FOR_BUCKET_INDEX
    - PARTITION_LOCK
    - ENTRY_FROM_ITEM
    - dsa_get_address
    - LWLockHeldByMeInMode
    - ASSERT_NO_PARTITION_LOCKS_HELD_BY_ME
    - DsaPointerIsValid
    - LWLockRelease
    - LWLockAcquire
    - NUM_BUCKETS
    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:750,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:750,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - status
    argTypes:
    - dshash_seq_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 746
    functionDepth: 1
    functionLinenumber: 746
    functionLinenumberEnd: 751
    functionName: dshash_seq_term
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached:
    - LWLockRelease
    - PARTITION_LOCK
    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:763,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:765,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:766,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:767,1
    - Dst: LWLockHeldByMeInMode
      Src: /src/postgres/src/backend/lib/dshash.c:767,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:767,1
    - Dst: delete_item
      Src: /src/postgres/src/backend/lib/dshash.c:770,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - status
    argTypes:
    - dshash_seq_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 756
    functionDepth: 1
    functionLinenumber: 756
    functionLinenumberEnd: 771
    functionName: dshash_delete_current
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached:
    - Assert
    - PARTITION_FOR_HASH
    - PARTITION_LOCK
    - LWLockHeldByMeInMode
    - delete_item
    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:783,1
    - Dst: ASSERT_NO_PARTITION_LOCKS_HELD_BY_ME
      Src: /src/postgres/src/backend/lib/dshash.c:784,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:788,1
    - Dst: LWLockHeldByMe
      Src: /src/postgres/src/backend/lib/dshash.c:788,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:788,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/lib/dshash.c:789,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:789,1
    - Dst: ensure_valid_bucket_pointers
      Src: /src/postgres/src/backend/lib/dshash.c:792,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/lib/dshash.c:794,1
    - Dst: BUCKET_INDEX_FOR_PARTITION
      Src: /src/postgres/src/backend/lib/dshash.c:799,1
    - Dst: BUCKET_INDEX_FOR_PARTITION
      Src: /src/postgres/src/backend/lib/dshash.c:800,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/lib/dshash.c:802,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/lib/dshash.c:803,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/lib/dshash.c:811,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:815,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/lib/dshash.c:820,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/lib/dshash.c:825,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:825,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - hash_table
    argTypes:
    - dshash_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 777
    functionDepth: 1
    functionLinenumber: 777
    functionLinenumberEnd: 826
    functionName: dshash_dump
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 0
    functionsReached:
    - Assert
    - ensure_valid_bucket_pointers
    - LWLockHeldByMe
    - PARTITION_LOCK
    - fprintf
    - dsa_get_address
    - ASSERT_NO_PARTITION_LOCKS_HELD_BY_ME
    - DsaPointerIsValid
    - BUCKET_INDEX_FOR_PARTITION
    - LWLockRelease
    - LWLockAcquire
    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:835,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:837,1
    - Dst: LWLockHeldByMe
      Src: /src/postgres/src/backend/lib/dshash.c:837,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:837,1
    - Dst: delete_item_from_bucket
      Src: /src/postgres/src/backend/lib/dshash.c:839,1
    - Dst: BUCKET_FOR_HASH
      Src: /src/postgres/src/backend/lib/dshash.c:840,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:842,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:847,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - hash_table
    - item
    argTypes:
    - dshash_table*
    - dshash_table_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 831
    functionDepth: 1
    functionLinenumber: 831
    functionLinenumberEnd: 849
    functionName: delete_item
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 3
    functionsReached:
    - Assert
    - LWLockHeldByMe
    - PARTITION_FOR_HASH
    - PARTITION_LOCK
    - delete_item_from_bucket
    - BUCKET_FOR_HASH
    linkageType: ''
    returnType: void
    signature: void delete_item(dshash_table *hash_table, dshash_table_item *item)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:873,1
    - Dst: LWLockHeldByMe
      Src: /src/postgres/src/backend/lib/dshash.c:873,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:873,1
    - Dst: LWLockAcquire
      Src: /src/postgres/src/backend/lib/dshash.c:875,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:875,1
    - Dst: LWLockRelease
      Src: /src/postgres/src/backend/lib/dshash.c:882,1
    - Dst: PARTITION_LOCK
      Src: /src/postgres/src/backend/lib/dshash.c:882,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/dshash.c:887,1
    - Dst: dsa_allocate_extended
      Src: /src/postgres/src/backend/lib/dshash.c:891,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:894,1
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/lib/dshash.c:905,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:910,1
    - Dst: insert_item_into_bucket
      Src: /src/postgres/src/backend/lib/dshash.c:912,1
    - Dst: BUCKET_INDEX_FOR_HASH_AND_SIZE
      Src: /src/postgres/src/backend/lib/dshash.c:913,1
    - Dst: dsa_free
      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
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - hash_table
    - new_size_log2
    argTypes:
    - dshash_table*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 857
    functionDepth: 1
    functionLinenumber: 857
    functionLinenumberEnd: 929
    functionName: resize
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 1
    functionsReached:
    - insert_item_into_bucket
    - Assert
    - LWLockHeldByMe
    - BUCKET_INDEX_FOR_HASH_AND_SIZE
    - PARTITION_LOCK
    - dsa_get_address
    - dsa_allocate_extended
    - DsaPointerIsValid
    - LWLockRelease
    - LWLockAcquire
    - dsa_free
    linkageType: ''
    returnType: void
    signature: void resize(dshash_table *hash_table, size_t new_size_log2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:941,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - hash_table
    argTypes:
    - dshash_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 936
    functionDepth: 1
    functionLinenumber: 936
    functionLinenumberEnd: 945
    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:954,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:958,1
    - Dst: equal_keys
      Src: /src/postgres/src/backend/lib/dshash.c:959,1
    - Dst: ENTRY_FROM_ITEM
      Src: /src/postgres/src/backend/lib/dshash.c:959,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: 964
      start: 950
    functionDepth: 1
    functionLinenumber: 950
    functionLinenumberEnd: 964
    functionName: find_in_bucket
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 2
    functionsReached:
    - DsaPointerIsValid
    - dsa_get_address
    - equal_keys
    - ENTRY_FROM_ITEM
    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:975,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:975,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: 979
      start: 969
    functionDepth: 1
    functionLinenumber: 969
    functionLinenumberEnd: 979
    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: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsa_allocate
      Src: /src/postgres/src/backend/lib/dshash.c:993,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/lib/dshash.c:995,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:996,1
    - Dst: copy_key
      Src: /src/postgres/src/backend/lib/dshash.c:997,1
    - Dst: ENTRY_FROM_ITEM
      Src: /src/postgres/src/backend/lib/dshash.c:997,1
    - Dst: insert_item_into_bucket
      Src: /src/postgres/src/backend/lib/dshash.c:998,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - hash_table
    - key
    - bucket
    argTypes:
    - dshash_table*
    - void*
    - dsa_pointer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 985
    functionDepth: 2
    functionLinenumber: 985
    functionLinenumberEnd: 1000
    functionName: insert_into_bucket
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 1
    functionsReached:
    - insert_item_into_bucket
    - dsa_allocate
    - copy_key
    - ENTRY_FROM_ITEM
    - dsa_get_address
    - MAXALIGN
    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)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DsaPointerIsValid
      Src: /src/postgres/src/backend/lib/dshash.c:1010,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:1014,1
    - Dst: equal_keys
      Src: /src/postgres/src/backend/lib/dshash.c:1016,1
    - Dst: ENTRY_FROM_ITEM
      Src: /src/postgres/src/backend/lib/dshash.c:1016,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/lib/dshash.c:1021,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: 1029
      start: 1005
    functionDepth: 1
    functionLinenumber: 1005
    functionLinenumberEnd: 1029
    functionName: delete_key_from_bucket
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 1
    functionsReached:
    - equal_keys
    - ENTRY_FROM_ITEM
    - dsa_get_address
    - DsaPointerIsValid
    - dsa_free
    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:1039,1
    - Dst: dsa_get_address
      Src: /src/postgres/src/backend/lib/dshash.c:1043,1
    - Dst: dsa_free
      Src: /src/postgres/src/backend/lib/dshash.c:1050,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: 1057
      start: 1034
    functionDepth: 1
    functionLinenumber: 1034
    functionLinenumberEnd: 1057
    functionName: delete_item_from_bucket
    functionSourceFile: /src/postgres/src/backend/lib/dshash.c
    functionUses: 1
    functionsReached:
    - DsaPointerIsValid
    - dsa_get_address
    - 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:1065,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hash_table
    - key
    argTypes:
    - dshash_table*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1062
    functionDepth: 0
    functionLinenumber: 1062
    functionLinenumberEnd: 1068
    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:1076,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - hash_table
    - a
    - b
    argTypes:
    - dshash_table*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1079
      start: 1073
    functionDepth: 0
    functionLinenumber: 1073
    functionLinenumberEnd: 1079
    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:1087,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - hash_table
    - dest
    - src
    argTypes:
    - dshash_table*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 1084
    functionDepth: 0
    functionLinenumber: 1084
    functionLinenumberEnd: 1090
    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
      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:
    - CHECK_FOR_INTERRUPTS
    - hk_depth_search
    - palloc0
    - hk_breadth_search
    - elog
    - palloc
    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
      Src: /src/postgres/src/backend/lib/pairingheap.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - compare
    - arg
    argTypes:
    - pairingheap_comparator
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 53
    functionName: pairingheap_allocate
    functionSourceFile: /src/postgres/src/backend/lib/pairingheap.c
    functionUses: 4
    functionsReached:
    - palloc
    linkageType: ''
    returnType: pairingheap
    signature: 'pairingheap *

      pairingheap_allocate(pairingheap_comparator compare, void *arg)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/lib/pairingheap.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - heap
    argTypes:
    - pairingheap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 66
    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:87,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - heap
    - a
    - b
    argTypes:
    - pairingheap*
    - pairingheap_node*
    - pairingheap_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 104
    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:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - heap
    - node
    argTypes:
    - pairingheap*
    - pairingheap_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 120
    functionName: pairingheap_add
    functionSourceFile: /src/postgres/src/backend/lib/pairingheap.c
    functionUses: 4
    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:132,1
    - Dst: pairingheap_is_empty
      Src: /src/postgres/src/backend/lib/pairingheap.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - heap
    argTypes:
    - pairingheap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 135
    functionName: pairingheap_first
    functionSourceFile: /src/postgres/src/backend/lib/pairingheap.c
    functionUses: 2
    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:150,1
    - Dst: pairingheap_is_empty
      Src: /src/postgres/src/backend/lib/pairingheap.c:150,1
    - Dst: merge_children
      Src: /src/postgres/src/backend/lib/pairingheap.c:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - heap
    argTypes:
    - pairingheap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 164
    functionName: pairingheap_remove_first
    functionSourceFile: /src/postgres/src/backend/lib/pairingheap.c
    functionUses: 3
    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:183,1
    - Dst: Assert
      Src: /src/postgres/src/backend/lib/pairingheap.c:202,1
    - Dst: merge_children
      Src: /src/postgres/src/backend/lib/pairingheap.c:211,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - heap
    - node
    argTypes:
    - pairingheap*
    - pairingheap_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 169
    functionDepth: 2
    functionLinenumber: 169
    functionLinenumberEnd: 225
    functionName: pairingheap_remove
    functionSourceFile: /src/postgres/src/backend/lib/pairingheap.c
    functionUses: 1
    functionsReached:
    - pairingheap_remove_first
    - Assert
    - merge_children
    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:266,1
    - Dst: merge
      Src: /src/postgres/src/backend/lib/pairingheap.c:281,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 2
    argNames:
    - heap
    - children
    argTypes:
    - pairingheap*
    - pairingheap_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 285
    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:305,1
    - Dst: appendStringInfoSpaces
      Src: /src/postgres/src/backend/lib/pairingheap.c:307,1
    - Dst: dumpfunc
      Src: /src/postgres/src/backend/lib/pairingheap.c:308,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/lib/pairingheap.c:309,1
    - Dst: pairingheap_dump_recurse
      Src: /src/postgres/src/backend/lib/pairingheap.c:311,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: 315
      start: 295
    functionDepth: 2
    functionLinenumber: 295
    functionLinenumberEnd: 315
    functionName: pairingheap_dump_recurse
    functionSourceFile: /src/postgres/src/backend/lib/pairingheap.c
    functionUses: 1
    functionsReached:
    - Assert
    - dumpfunc
    - appendStringInfoChar
    - appendStringInfoSpaces
    - pairingheap_dump_recurse
    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:325,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/lib/pairingheap.c:327,1
    - Dst: pairingheap_dump_recurse
      Src: /src/postgres/src/backend/lib/pairingheap.c:329,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - heap
    - opaque
    argTypes:
    - pairingheap*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 317
    functionDepth: 3
    functionLinenumber: 317
    functionLinenumberEnd: 332
    functionName: pairingheap_dump
    functionSourceFile: /src/postgres/src/backend/lib/pairingheap.c
    functionUses: 0
    functionsReached:
    - initStringInfo
    - pairingheap_dump_recurse
    - pstrdup
    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:
    - slist_check
    - Assert
    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:
    - errmsg
    - ltsWriteBlock
    - ereport
    - BufFileSeekBlock
    - MemSet
    - BufFileWrite
    - 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:
    - errmsg
    - ereport
    - BufFileSeekBlock
    - BufFileReadExact
    - 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:
    - TapeBlockGetNBytes
    - ltsReleaseBlock
    - ltsReadBlock
    - TapeBlockIsLast
    - TapeBlockGetTrailer
    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:
    - ltsGetPreallocBlock
    - ltsGetFreeBlock
    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
      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:
    - repalloc
    - palloc
    - Assert
    - ltsGetFreeBlock
    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:
    - repalloc
    - parent_offset
    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
      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:
    - palloc
    - pg_itoa
    - BufFileCreateTemp
    - BufFileCreateFileSet
    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:
    - pg_itoa
    - Min
    - BufFileAppend
    - BufFileSize
    - ltsCreateTape
    - BufFileOpenFileSet
    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
      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
    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:
    - Assert
    - ltsWriteBlock
    - elog
    - ltsGetBlock
    - memcpy
    - palloc
    - TapeBlockGetTrailer
    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
    - ltsWriteBlock
    - ltsReleaseBlock
    - TapeBlockSetNBytes
    - VALGRIND_MAKE_MEM_DEFINED
    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:
    - memcpy
    - Assert
    - ltsReadFillBuffer
    - ltsInitReadBuffer
    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:
    - TapeBlockGetNBytes
    - pfree
    - Assert
    - ltsWriteBlock
    - BufFileExportFileSet
    - TapeBlockSetNBytes
    - ltsReadBlock
    - TapeBlockIsLast
    - VALGRIND_MAKE_MEM_DEFINED
    - palloc
    - TapeBlockGetTrailer
    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:
    - Assert
    - TapeBlockGetTrailer
    - ltsReadBlock
    - elog
    - ltsInitReadBuffer
    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:
    - Assert
    - TapeBlockGetTrailer
    - ltsReadBlock
    - elog
    - ltsInitReadBuffer
    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: 175
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 175
    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:184,1
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:186,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:190,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:192,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:195,1
    - Dst: TRACE_POSTGRESQL_SORT_START
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:201,1
    - Dst: PARALLEL_SORT
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:206,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:217,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:223,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:224,1
    - Dst: PrepareSortSupportFromOrderingOp
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:233,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:245,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: 248
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 248
    functionName: tuplesort_begin_heap
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 5
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - PrepareSortSupportFromOrderingOp
    - tuplesort_begin_common
    - TuplesortstateGetPublic
    - palloc0
    - elog
    - PARALLEL_SORT
    - TRACE_POSTGRESQL_SORT_START
    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:256,1
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:258,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:264,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:266,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:267,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:270,1
    - Dst: RelationGetNumberOfAttributes
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:272,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:275,1
    - Dst: TRACE_POSTGRESQL_SORT_START
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:277,1
    - Dst: PARALLEL_SORT
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:282,1
    - Dst: BuildIndexInfo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:292,1
    - Dst: _bt_mkscankey
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:305,1
    - Dst: CreateExecutorState
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:318,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:319,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:320,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:325,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:342,1
    - Dst: PrepareSortSupportFromIndexRel
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:346,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:349,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:351,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: 354
      start: 250
    functionDepth: 7
    functionLinenumber: 250
    functionLinenumberEnd: 354
    functionName: tuplesort_begin_cluster
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 1
    functionsReached:
    - IndexRelationGetNumberOfKeyAttributes
    - pfree
    - Assert
    - MemoryContextSwitchTo
    - RelationGetNumberOfAttributes
    - PrepareSortSupportFromIndexRel
    - tuplesort_begin_common
    - TuplesortstateGetPublic
    - palloc0
    - _bt_mkscankey
    - MakeSingleTupleTableSlot
    - GetPerTupleExprContext
    - elog
    - CreateExecutorState
    - PARALLEL_SORT
    - TRACE_POSTGRESQL_SORT_START
    - BuildIndexInfo
    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:365,1
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:367,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:373,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:374,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:377,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:382,1
    - Dst: TRACE_POSTGRESQL_SORT_START
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:384,1
    - Dst: PARALLEL_SORT
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:389,1
    - Dst: _bt_mkscankey
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:404,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:407,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:424,1
    - Dst: PrepareSortSupportFromIndexRel
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:428,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:431,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:433,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: 436
      start: 356
    functionDepth: 7
    functionLinenumber: 356
    functionLinenumberEnd: 436
    functionName: tuplesort_begin_index_btree
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 2
    functionsReached:
    - IndexRelationGetNumberOfKeyAttributes
    - pfree
    - Assert
    - MemoryContextSwitchTo
    - PrepareSortSupportFromIndexRel
    - tuplesort_begin_common
    - TuplesortstateGetPublic
    - _bt_mkscankey
    - palloc0
    - elog
    - PARALLEL_SORT
    - palloc
    - TRACE_POSTGRESQL_SORT_START
    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:448,1
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:450,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:454,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:455,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:458,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:484,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: 487
      start: 438
    functionDepth: 1
    functionLinenumber: 438
    functionLinenumberEnd: 487
    functionName: tuplesort_begin_index_hash
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - tuplesort_begin_common
    - TuplesortstateGetPublic
    - elog
    - palloc
    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:496,1
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:498,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:503,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:504,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:507,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:511,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:527,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:541,1
    - Dst: PrepareSortSupportFromGistIndexRel
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:544,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:547,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: 550
      start: 489
    functionDepth: 1
    functionLinenumber: 489
    functionLinenumberEnd: 550
    functionName: tuplesort_begin_index_gist
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 1
    functionsReached:
    - IndexRelationGetNumberOfKeyAttributes
    - Assert
    - MemoryContextSwitchTo
    - tuplesort_begin_common
    - TuplesortstateGetPublic
    - palloc0
    - PrepareSortSupportFromGistIndexRel
    - elog
    - palloc
    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:557,1
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:559,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:562,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - workMem
    - coordinate
    - sortopt
    argTypes:
    - int
    - SortCoordinate
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 552
    functionDepth: 1
    functionLinenumber: 552
    functionLinenumberEnd: 577
    functionName: tuplesort_begin_index_brin
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 2
    functionsReached:
    - tuplesort_begin_common
    - TuplesortstateGetPublic
    - elog
    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: 3
    BranchProfiles: []
    Callsites:
    - Dst: tuplesort_begin_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:585,1
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:587,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:590,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:592,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:596,1
    - Dst: IndexRelationGetNumberOfKeyAttributes
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:607,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:610,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:616,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:625,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:627,1
    - Dst: lookup_type_cache
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:634,1
    - Dst: PrepareSortSupportFromOrderingOp
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:635,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:645,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 5
    argNames:
    - heapRel
    - indexRel
    - workMem
    - coordinate
    - sortopt
    argTypes:
    - Relation
    - Relation
    - int
    - SortCoordinate
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 579
    functionDepth: 2
    functionLinenumber: 579
    functionLinenumberEnd: 648
    functionName: tuplesort_begin_index_gin
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 2
    functionsReached:
    - IndexRelationGetNumberOfKeyAttributes
    - Assert
    - MemoryContextSwitchTo
    - PrepareSortSupportFromOrderingOp
    - tuplesort_begin_common
    - TuplesortstateGetPublic
    - RelationGetDescr
    - TupleDescAttr
    - palloc0
    - lookup_type_cache
    - elog
    - OidIsValid
    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:655,1
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:657,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:663,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:664,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:667,1
    - Dst: TRACE_POSTGRESQL_SORT_START
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:673,1
    - Dst: PARALLEL_SORT
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:678,1
    - Dst: get_typlenbyval
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:691,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:696,1
    - Dst: PrepareSortSupportFromOrderingOp
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:712,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:723,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: 726
      start: 650
    functionDepth: 1
    functionLinenumber: 650
    functionLinenumberEnd: 726
    functionName: tuplesort_begin_datum
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 3
    functionsReached:
    - MemoryContextSwitchTo
    - get_typlenbyval
    - PrepareSortSupportFromOrderingOp
    - tuplesort_begin_common
    - TuplesortstateGetPublic
    - palloc0
    - elog
    - PARALLEL_SORT
    - palloc
    - TRACE_POSTGRESQL_SORT_START
    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:736,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:737,1
    - Dst: ExecCopySlotMinimalTuple
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:745,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:750,1
    - Dst: TupleSortUseBumpTupleCxt
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:756,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:757,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:759,1
    - Dst: tuplesort_puttuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:761,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:765,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - state
    - slot
    argTypes:
    - Tuplesortstate*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 733
    functionDepth: 4
    functionLinenumber: 733
    functionLinenumberEnd: 766
    functionName: tuplesort_puttupleslot
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 5
    functionsReached:
    - MemoryContextSwitchTo
    - heap_getattr
    - TupleSortUseBumpTupleCxt
    - TuplesortstateGetPublic
    - tuplesort_puttuple_common
    - GetMemoryChunkSpace
    - ExecCopySlotMinimalTuple
    - MAXALIGN
    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:777,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:778,1
    - Dst: heap_copytuple
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:783,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:792,1
    - Dst: TupleSortUseBumpTupleCxt
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:799,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:800,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:802,1
    - Dst: tuplesort_puttuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:804,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:809,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - state
    - tup
    argTypes:
    - Tuplesortstate*
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 773
    functionDepth: 4
    functionLinenumber: 773
    functionLinenumberEnd: 810
    functionName: tuplesort_putheaptuple
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - heap_getattr
    - TupleSortUseBumpTupleCxt
    - TuplesortstateGetPublic
    - tuplesort_puttuple_common
    - GetMemoryChunkSpace
    - heap_copytuple
    - MAXALIGN
    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:823,1
    - Dst: index_form_tuple_context
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:827,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:827,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:832,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:834,1
    - Dst: TupleSortUseBumpTupleCxt
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:838,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:839,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:841,1
    - Dst: tuplesort_puttuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:843,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 5
    argNames:
    - state
    - rel
    - self
    - values
    - isnull
    argTypes:
    - Tuplesortstate*
    - Relation
    - ItemPointer
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 816
    functionDepth: 4
    functionLinenumber: 816
    functionLinenumberEnd: 847
    functionName: tuplesort_putindextuplevalues
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 3
    functionsReached:
    - TupleSortUseBumpTupleCxt
    - TuplesortstateGetPublic
    - RelationGetDescr
    - tuplesort_puttuple_common
    - index_form_tuple_context
    - GetMemoryChunkSpace
    - index_getattr
    - MAXALIGN
    linkageType: ''
    returnType: void
    signature: "void tuplesort_putindextuplevalues(Tuplesortstate *state, Relation
      rel,\n\t\t\t\t\t\t\t  ItemPointer 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:857,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:858,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:862,1
    - Dst: BRINSORTTUPLE_SIZE
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:862,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:865,1
    - Dst: TupleSortUseBumpTupleCxt
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:872,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:873,1
    - Dst: BRINSORTTUPLE_SIZE
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:873,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:875,1
    - Dst: tuplesort_puttuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:877,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:882,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - state
    - tuple
    - size
    argTypes:
    - Tuplesortstate*
    - BrinTuple*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 852
    functionDepth: 1
    functionLinenumber: 852
    functionLinenumberEnd: 883
    functionName: tuplesort_putbrintuple
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - TupleSortUseBumpTupleCxt
    - TuplesortstateGetPublic
    - tuplesort_puttuple_common
    - BRINSORTTUPLE_SIZE
    - GetMemoryChunkSpace
    - memcpy
    - palloc
    - MAXALIGN
    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:890,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:891,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:895,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:896,1
    - Dst: TupleSortUseBumpTupleCxt
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:903,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:904,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:906,1
    - Dst: tuplesort_puttuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:908,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:913,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - state
    - tuple
    - size
    argTypes:
    - Tuplesortstate*
    - GinTuple*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 914
      start: 885
    functionDepth: 1
    functionLinenumber: 885
    functionLinenumberEnd: 914
    functionName: tuplesort_putgintuple
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 2
    functionsReached:
    - MemoryContextSwitchTo
    - TupleSortUseBumpTupleCxt
    - TuplesortstateGetPublic
    - tuplesort_puttuple_common
    - GetMemoryChunkSpace
    - memcpy
    - palloc
    - MAXALIGN
    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:924,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:925,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:954,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:955,1
    - Dst: tuplesort_puttuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:958,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:962,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - state
    - val
    - isNull
    argTypes:
    - Tuplesortstate*
    - Datum
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 963
      start: 921
    functionDepth: 1
    functionLinenumber: 921
    functionLinenumberEnd: 963
    functionName: tuplesort_putdatum
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 3
    functionsReached:
    - MemoryContextSwitchTo
    - tuplesort_puttuple_common
    - TuplesortstateGetPublic
    - datumCopy
    - 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:989,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:990,1
    - Dst: tuplesort_gettuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:993,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:996,1
    - Dst: heap_copy_minimal_tuple
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1005,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1007,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1012,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: 1015
      start: 985
    functionDepth: 5
    functionLinenumber: 985
    functionLinenumberEnd: 1015
    functionName: tuplesort_gettupleslot
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 5
    functionsReached:
    - MemoryContextSwitchTo
    - tuplesort_gettuple_common
    - TuplesortstateGetPublic
    - heap_copy_minimal_tuple
    - ExecStoreMinimalTuple
    - ExecClearTuple
    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:1026,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1027,1
    - Dst: tuplesort_gettuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1030,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1033,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - state
    - forward
    argTypes:
    - Tuplesortstate*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1036
      start: 1023
    functionDepth: 1
    functionLinenumber: 1023
    functionLinenumberEnd: 1036
    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:1047,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1048,1
    - Dst: tuplesort_gettuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1051,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1054,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - state
    - forward
    argTypes:
    - Tuplesortstate*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1044
    functionDepth: 1
    functionLinenumber: 1044
    functionLinenumberEnd: 1057
    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:1068,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1069,1
    - Dst: tuplesort_gettuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1073,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1076,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - state
    - len
    - forward
    argTypes:
    - Tuplesortstate*
    - Size*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1086
      start: 1065
    functionDepth: 1
    functionLinenumber: 1065
    functionLinenumberEnd: 1086
    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:1091,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1092,1
    - Dst: tuplesort_gettuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1096,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1099,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - state
    - len
    - forward
    argTypes:
    - Tuplesortstate*
    - Size*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1109
      start: 1088
    functionDepth: 1
    functionLinenumber: 1088
    functionLinenumberEnd: 1109
    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:1140,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1141,1
    - Dst: tuplesort_gettuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1145,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1147,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1152,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1167,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1167,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1170,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: 1175
      start: 1136
    functionDepth: 1
    functionLinenumber: 1136
    functionLinenumberEnd: 1175
    functionName: tuplesort_getdatum
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 3
    functionsReached:
    - MemoryContextSwitchTo
    - tuplesort_gettuple_common
    - TuplesortstateGetPublic
    - datumCopy
    - PointerGetDatum
    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:1186,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1196,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - state
    - stups
    - count
    argTypes:
    - Tuplesortstate*
    - SortTuple*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1201
      start: 1182
    functionDepth: 4
    functionLinenumber: 1182
    functionLinenumberEnd: 1201
    functionName: removeabbrev_heap
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - TuplesortstateGetPublic
    - heap_getattr
    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:1206,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1212,1
    - Dst: comparetup_heap_tiebreak
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1203
    functionDepth: 2
    functionLinenumber: 1203
    functionLinenumberEnd: 1220
    functionName: comparetup_heap
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - comparetup_heap_tiebreak
    - TuplesortstateGetPublic
    - ApplySortComparator
    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:1225,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1248,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1249,1
    - Dst: ApplySortAbbrevFullComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1251,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1263,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1264,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1266,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1274
      start: 1222
    functionDepth: 4
    functionLinenumber: 1222
    functionLinenumberEnd: 1274
    functionName: comparetup_heap_tiebreak
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 1
    functionsReached:
    - TuplesortstateGetPublic
    - ApplySortComparator
    - heap_getattr
    - ApplySortAbbrevFullComparator
    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:1279,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1289,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1290,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1292,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - state
    - tape
    - stup
    argTypes:
    - Tuplesortstate*
    - LogicalTape*
    - SortTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1293
      start: 1276
    functionDepth: 3
    functionLinenumber: 1276
    functionLinenumberEnd: 1293
    functionName: writetup_heap
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - LogicalTapeWrite
    - TuplesortstateGetPublic
    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:1301,1
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1303,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1308,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1310,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1315,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: 1319
      start: 1295
    functionDepth: 4
    functionLinenumber: 1295
    functionLinenumberEnd: 1319
    functionName: readtup_heap
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - heap_getattr
    - TuplesortstateGetPublic
    - tuplesort_readtup_alloc
    - LogicalTapeReadExact
    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:1330,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1338,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - state
    - stups
    - count
    argTypes:
    - Tuplesortstate*
    - SortTuple*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1343
      start: 1326
    functionDepth: 4
    functionLinenumber: 1326
    functionLinenumberEnd: 1343
    functionName: removeabbrev_cluster
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - TuplesortstateGetPublic
    - heap_getattr
    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:1349,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1356,1
    - Dst: comparetup_cluster_tiebreak
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1363,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1364
      start: 1345
    functionDepth: 2
    functionLinenumber: 1345
    functionLinenumberEnd: 1364
    functionName: comparetup_cluster
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - comparetup_cluster_tiebreak
    - TuplesortstateGetPublic
    - ApplySortComparator
    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:1370,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1394,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1395,1
    - Dst: ApplySortAbbrevFullComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1397,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1421,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1422,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1424,1
    - Dst: ResetPerTupleExprContext
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1446,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1448,1
    - Dst: ExecStoreHeapTuple
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1450,1
    - Dst: FormIndexDatum
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1451,1
    - Dst: ExecStoreHeapTuple
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1454,1
    - Dst: FormIndexDatum
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1455,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1460,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1471
      start: 1366
    functionDepth: 5
    functionLinenumber: 1366
    functionLinenumberEnd: 1471
    functionName: comparetup_cluster_tiebreak
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 1
    functionsReached:
    - ExecStoreHeapTuple
    - ResetPerTupleExprContext
    - heap_getattr
    - FormIndexDatum
    - TuplesortstateGetPublic
    - ApplySortAbbrevFullComparator
    - GetPerTupleExprContext
    - ApplySortComparator
    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:1476,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1481,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1482,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1483,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1485,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - state
    - tape
    - stup
    argTypes:
    - Tuplesortstate*
    - LogicalTape*
    - SortTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1486
      start: 1473
    functionDepth: 3
    functionLinenumber: 1473
    functionLinenumberEnd: 1486
    functionName: writetup_cluster
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - LogicalTapeWrite
    - TuplesortstateGetPublic
    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:1492,1
    - Dst: tuplesort_readtup_alloc
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1495,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1501,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1505,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1507,1
    - Dst: heap_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1511,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: 1515
      start: 1488
    functionDepth: 4
    functionLinenumber: 1488
    functionLinenumberEnd: 1515
    functionName: readtup_cluster
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - heap_getattr
    - TuplesortstateGetPublic
    - tuplesort_readtup_alloc
    - LogicalTapeReadExact
    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:1520,1
    - Dst: GetPerTupleExprContext
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1526,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1528,1
    - Dst: FreeExecutorState
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1529,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1531
      start: 1517
    functionDepth: 2
    functionLinenumber: 1517
    functionLinenumberEnd: 1531
    functionName: freestate_cluster
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - GetPerTupleExprContext
    - FreeExecutorState
    - 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:1544,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1553,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1555,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - state
    - stups
    - count
    argTypes:
    - Tuplesortstate*
    - SortTuple*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1558
      start: 1541
    functionDepth: 3
    functionLinenumber: 1541
    functionLinenumberEnd: 1558
    functionName: removeabbrev_index
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - TuplesortstateGetPublic
    - index_getattr
    - RelationGetDescr
    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:1569,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1574,1
    - Dst: comparetup_index_btree_tiebreak
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1581,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1582
      start: 1560
    functionDepth: 2
    functionLinenumber: 1560
    functionLinenumberEnd: 1582
    functionName: comparetup_index_btree
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - comparetup_index_btree_tiebreak
    - TuplesortstateGetPublic
    - ApplySortComparator
    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:1588,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1606,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1610,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1611,1
    - Dst: ApplySortAbbrevFullComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1613,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: ApplySortComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1630,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1663,1
    - Dst: index_deform_tuple
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1665,1
    - Dst: BuildIndexValueDescription
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1667,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1669,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1670,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1671,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1672,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1673,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1674,1
    - Dst: errtableconstraint
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1675,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1676,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1686,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1687,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1693,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1694,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1701,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1704
      start: 1584
    functionDepth: 4
    functionLinenumber: 1584
    functionLinenumberEnd: 1704
    functionName: comparetup_index_btree_tiebreak
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errtableconstraint
    - Assert
    - RelationGetRelationName
    - ItemPointerGetOffsetNumber
    - index_deform_tuple
    - TuplesortstateGetPublic
    - RelationGetDescr
    - ereport
    - ApplySortAbbrevFullComparator
    - index_getattr
    - ApplySortComparator
    - ItemPointerGetBlockNumber
    - BuildIndexValueDescription
    - errdetail
    - errcode
    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:1716,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1724,1
    - Dst: _hash_hashkey2bucket
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1725,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1725,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1728,1
    - Dst: _hash_hashkey2bucket
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1729,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1729,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1742,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1743,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1758,1
    - Dst: ItemPointerGetBlockNumber
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1759,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1765,1
    - Dst: ItemPointerGetOffsetNumber
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1766,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1773,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1776
      start: 1706
    functionDepth: 3
    functionLinenumber: 1706
    functionLinenumberEnd: 1776
    functionName: comparetup_index_hash
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - Assert
    - ItemPointerGetOffsetNumber
    - _hash_hashkey2bucket
    - TuplesortstateGetPublic
    - DatumGetUInt32
    - ItemPointerGetBlockNumber
    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:1786,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1789
      start: 1782
    functionDepth: 1
    functionLinenumber: 1782
    functionLinenumberEnd: 1789
    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:1794,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1798,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1799,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1800,1
    - Dst: IndexTupleSize
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1800,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1802,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - state
    - tape
    - stup
    argTypes:
    - Tuplesortstate*
    - LogicalTape*
    - SortTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1803
      start: 1791
    functionDepth: 3
    functionLinenumber: 1791
    functionLinenumberEnd: 1803
    functionName: writetup_index
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - IndexTupleSize
    - LogicalTapeWrite
    - TuplesortstateGetPublic
    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:1809,1
    - Dst: tuplesort_readtup_alloc
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1812,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1814,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1816,1
    - Dst: index_getattr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1819,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1821,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: 1823
      start: 1805
    functionDepth: 3
    functionLinenumber: 1805
    functionLinenumberEnd: 1823
    functionName: readtup_index
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - TuplesortstateGetPublic
    - RelationGetDescr
    - index_getattr
    - tuplesort_readtup_alloc
    - LogicalTapeReadExact
    linkageType: ''
    returnType: void
    signature: "void readtup_index(Tuplesortstate *state, SortTuple *stup,\n\t\t\t
      \ LogicalTape *tape, unsigned int len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - state
    - stups
    - count
    argTypes:
    - Tuplesortstate*
    - SortTuple*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1841
      start: 1829
    functionDepth: 0
    functionLinenumber: 1829
    functionLinenumberEnd: 1841
    functionName: removeabbrev_index_brin
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached: []
    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:1847,1
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1847,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1849,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1849,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1852,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1852,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1857
      start: 1843
    functionDepth: 1
    functionLinenumber: 1843
    functionLinenumberEnd: 1857
    functionName: comparetup_index_brin
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - DatumGetUInt32
    - Assert
    - TuplesortstateGetPublic
    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:1862,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1867,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1868,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1870,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - state
    - tape
    - stup
    argTypes:
    - Tuplesortstate*
    - LogicalTape*
    - SortTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1871
      start: 1859
    functionDepth: 3
    functionLinenumber: 1859
    functionLinenumberEnd: 1871
    functionName: writetup_index_brin
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - LogicalTapeWrite
    - TuplesortstateGetPublic
    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:1878,1
    - Dst: tuplesort_readtup_alloc
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1885,1
    - Dst: BRINSORTTUPLE_SIZE
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1886,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1890,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1892,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: 1897
      start: 1873
    functionDepth: 1
    functionLinenumber: 1873
    functionLinenumberEnd: 1897
    functionName: readtup_index_brin
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - BRINSORTTUPLE_SIZE
    - TuplesortstateGetPublic
    - tuplesort_readtup_alloc
    - LogicalTapeReadExact
    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:1906,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1907,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - state
    - stups
    - count
    argTypes:
    - Tuplesortstate*
    - SortTuple*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1908
      start: 1903
    functionDepth: 1
    functionLinenumber: 1903
    functionLinenumberEnd: 1908
    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:1914,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1916,1
    - Dst: TuplesortstateGetPublic
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1916,1
    - Dst: _gin_compare_tuples
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1918,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1921
      start: 1910
    functionDepth: 3
    functionLinenumber: 1910
    functionLinenumberEnd: 1921
    functionName: comparetup_index_gin
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - Assert
    - TuplesortstateGetPublic
    - _gin_compare_tuples
    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:1926,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1931,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1932,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1934,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - state
    - tape
    - stup
    argTypes:
    - Tuplesortstate*
    - LogicalTape*
    - SortTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1935
      start: 1923
    functionDepth: 3
    functionLinenumber: 1923
    functionLinenumberEnd: 1935
    functionName: writetup_index_gin
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - LogicalTapeWrite
    - TuplesortstateGetPublic
    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:1942,1
    - Dst: tuplesort_readtup_alloc
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1949,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1953,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1955,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: 1960
      start: 1937
    functionDepth: 1
    functionLinenumber: 1937
    functionLinenumberEnd: 1960
    functionName: readtup_index_gin
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - TuplesortstateGetPublic
    - tuplesort_readtup_alloc
    - LogicalTapeReadExact
    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:1972,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - state
    - stups
    - count
    argTypes:
    - Tuplesortstate*
    - SortTuple*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1973
      start: 1966
    functionDepth: 1
    functionLinenumber: 1966
    functionLinenumberEnd: 1973
    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:1978,1
    - Dst: ApplySortComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1981,1
    - Dst: comparetup_datum_tiebreak
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1987,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1988
      start: 1975
    functionDepth: 2
    functionLinenumber: 1975
    functionLinenumberEnd: 1988
    functionName: comparetup_datum
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - comparetup_datum_tiebreak
    - TuplesortstateGetPublic
    - ApplySortComparator
    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:1993,1
    - Dst: ApplySortAbbrevFullComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1998,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1998,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:1999,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2003
      start: 1990
    functionDepth: 2
    functionLinenumber: 1990
    functionLinenumberEnd: 2003
    functionName: comparetup_datum_tiebreak
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 1
    functionsReached:
    - TuplesortstateGetPublic
    - PointerGetDatum
    - ApplySortAbbrevFullComparator
    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:2008,1
    - Dst: datumGetSize
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2027,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2027,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2028,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2033,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2034,1
    - Dst: LogicalTapeWrite
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2036,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - state
    - tape
    - stup
    argTypes:
    - Tuplesortstate*
    - LogicalTape*
    - SortTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2037
      start: 2005
    functionDepth: 3
    functionLinenumber: 2005
    functionLinenumberEnd: 2037
    functionName: writetup_datum
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - LogicalTapeWrite
    - Assert
    - datumGetSize
    - TuplesortstateGetPublic
    - PointerGetDatum
    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:2043,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2055,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2056,1
    - Dst: tuplesort_readtup_alloc
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2062,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2064,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2065,1
    - Dst: LogicalTapeReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplesortvariants.c:2071,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: 2072
      start: 2039
    functionDepth: 1
    functionLinenumber: 2039
    functionLinenumberEnd: 2072
    functionName: readtup_datum
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesortvariants.c
    functionUses: 0
    functionsReached:
    - Assert
    - TuplesortstateGetPublic
    - PointerGetDatum
    - tuplesort_readtup_alloc
    - LogicalTapeReadExact
    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: 108
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 108
    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:136,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:142,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:143,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:144,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:153,1
    - Dst: LWLockInitialize
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:157,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:164,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: 171
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 171
    functionName: sts_initialize
    functionSourceFile: /src/postgres/src/backend/utils/sort/sharedtuplestore.c
    functionUses: 1
    functionsReached:
    - LWLockInitialize
    - Assert
    - palloc0
    - elog
    - strlen
    - strcpy
    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:184,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - sts
    - my_participant_number
    - fileset
    argTypes:
    - SharedTuplestore*
    - int
    - SharedFileSet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 193
    functionName: sts_attach
    functionSourceFile: /src/postgres/src/backend/utils/sort/sharedtuplestore.c
    functionUses: 2
    functionsReached:
    - Assert
    - palloc0
    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:201,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - accessor
    argTypes:
    - SharedTuplestoreAccessor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 206
    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:217,1
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:218,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - accessor
    argTypes:
    - SharedTuplestoreAccessor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 212
    functionDepth: 2
    functionLinenumber: 212
    functionLinenumberEnd: 224
    functionName: sts_end_write
    functionSourceFile: /src/postgres/src/backend/utils/sort/sharedtuplestore.c
    functionUses: 4
    functionsReached:
    - pfree
    - sts_flush_chunk
    - BufFileClose
    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: 247
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 247
    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:258,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - accessor
    argTypes:
    - SharedTuplestoreAccessor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 252
    functionDepth: 1
    functionLinenumber: 252
    functionLinenumberEnd: 275
    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:290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - accessor
    argTypes:
    - SharedTuplestoreAccessor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 293
    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:313,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:315,1
    - Dst: BufFileCreateFileSet
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:317,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/sharedtuplestore.c:318,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: 7
    EdgeCount: 7
    ICount: 45
    argCount: 3
    argNames:
    - accessor
    - meta_data
    - tuple
    argTypes:
    - SharedTuplestoreAccessor*
    - void*
    - MinimalTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 299
    functionDepth: 2
    functionLinenumber: 299
    functionLinenumberEnd: 412
    functionName: sts_puttuple
    functionSourceFile: /src/postgres/src/backend/utils/sort/sharedtuplestore.c
    functionUses: 4
    functionsReached:
    - Min
    - Assert
    - MemoryContextSwitchTo
    - sts_filename
    - MemoryContextAllocZero
    - BufFileCreateFileSet
    - memcpy
    - 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:
    - errmsg
    - pfree
    - Min
    - errdetail_internal
    - ereport
    - Max
    - MemoryContextAlloc
    - BufFileReadExact
    - 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:
    - errmsg
    - MemoryContextSwitchTo
    - sts_read_tuple
    - sts_filename
    - ereport
    - BufFileSeekBlock
    - BufFileClose
    - LWLockRelease
    - LWLockAcquire
    - BufFileOpenFileSet
    - BufFileReadExact
    - 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
    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:
    - elog
    - FunctionCallInvoke
    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: 3
    functionsReached:
    - MemoryContextAlloc
    - InitFunctionCallInfoData
    - fmgr_info_cxt
    - SizeForSortShimExtra
    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:
    - OidFunctionCall1
    - PrepareSortSupportComparisonShim
    - PointerGetDatum
    - elog
    - 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: 9
    functionsReached:
    - get_ordering_op_properties
    - Assert
    - elog
    - FinishSortSupportFunction
    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
    - elog
    - FinishSortSupportFunction
    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:
    - OidFunctionCall1
    - Assert
    - PointerGetDatum
    - elog
    - 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: 186
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 186
    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: 187
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 187
    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: 188
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 188
    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: 189
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 189
    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: 190
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 190
    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: 191
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 191
    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
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:260,1
    - Dst: GenerationContextCreate
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:276,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:289,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:293,1
    - Dst: USEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:295,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:295,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 3
    argNames:
    - eflags
    - interXact
    - maxKBytes
    argTypes:
    - int
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 308
    functionName: tuplestore_begin_common
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 0
    functionsReached:
    - palloc0
    - Max
    - GenerationContextCreate
    - GetMemoryChunkSpace
    - 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:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - randomAccess
    - interXact
    - maxKBytes
    argTypes:
    - bool
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 329
    functionDepth: 2
    functionLinenumber: 329
    functionLinenumberEnd: 350
    functionName: tuplestore_begin_heap
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 11
    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:376,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - state
    - eflags
    argTypes:
    - Tuplestorestate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 382
    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:401,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:410,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - state
    - eflags
    argTypes:
    - Tuplestorestate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 394
    functionDepth: 1
    functionLinenumber: 394
    functionLinenumberEnd: 421
    functionName: tuplestore_alloc_read_pointer
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 4
    functionsReached:
    - repalloc
    - elog
    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:436,1
    - Dst: BufFileClose
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:439,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:455,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:457,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:459,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:464,1
    - Dst: USEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:471,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:471,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplestorestate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 429
    functionDepth: 1
    functionLinenumber: 429
    functionLinenumberEnd: 484
    functionName: tuplestore_clear
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 4
    functionsReached:
    - Assert
    - MemoryContextReset
    - tuplestore_updatemax
    - GetMemoryChunkSpace
    - BufFileClose
    - 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:495,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:497,1
    - Dst: pfree
      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
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplestorestate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 491
    functionDepth: 1
    functionLinenumber: 491
    functionLinenumberEnd: 501
    functionName: tuplestore_end
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 13
    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:512,1
    - Dst: BufFileTell
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:534,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:546,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:550,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:551,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:552,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:556,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:560,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:561,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:562,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:566,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 2
    argNames:
    - state
    - ptr
    argTypes:
    - Tuplestorestate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 506
    functionDepth: 1
    functionLinenumber: 506
    functionLinenumberEnd: 571
    functionName: tuplestore_select_read_pointer
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 12
    functionsReached:
    - errmsg
    - Assert
    - ereport
    - BufFileTell
    - elog
    - BufFileSeek
    - 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: 583
      start: 579
    functionDepth: 0
    functionLinenumber: 579
    functionLinenumberEnd: 583
    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: 594
      start: 590
    functionDepth: 0
    functionLinenumber: 590
    functionLinenumberEnd: 594
    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:709,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:709,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:714,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:714,1
    - Dst: LACKMEM
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:715,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:716,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplestorestate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 723
      start: 611
    functionDepth: 1
    functionLinenumber: 611
    functionLinenumberEnd: 723
    functionName: grow_memtuples
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 0
    functionsReached:
    - LACKMEM
    - elog
    - GetMemoryChunkSpace
    - FREEMEM
    - repalloc_huge
    - USEMEM
    linkageType: ''
    returnType: bool
    signature: bool grow_memtuples(Tuplestorestate *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:746,1
    - Dst: ExecCopySlotMinimalTuple
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:751,1
    - Dst: USEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:752,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:752,1
    - Dst: tuplestore_puttuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:754,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:756,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - state
    - slot
    argTypes:
    - Tuplestorestate*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 741
    functionDepth: 1
    functionLinenumber: 741
    functionLinenumberEnd: 757
    functionName: tuplestore_puttupleslot
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 8
    functionsReached:
    - MemoryContextSwitchTo
    - GetMemoryChunkSpace
    - 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:766,1
    - Dst: COPYTUP
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:772,1
    - Dst: tuplestore_puttuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:774,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - state
    - tuple
    argTypes:
    - Tuplestorestate*
    - HeapTuple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 763
    functionDepth: 1
    functionLinenumber: 763
    functionLinenumberEnd: 777
    functionName: tuplestore_puttuple
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 8
    functionsReached:
    - tuplestore_puttuple_common
    - COPYTUP
    - 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:788,1
    - Dst: heap_form_minimal_tuple
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:790,1
    - Dst: USEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:791,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:791,1
    - Dst: tuplestore_puttuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:793,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:795,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - state
    - tdesc
    - values
    - isnull
    argTypes:
    - Tuplestorestate*
    - TupleDesc
    - Datum*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 796
      start: 783
    functionDepth: 5
    functionLinenumber: 783
    functionLinenumberEnd: 796
    functionName: tuplestore_putvalues
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 16
    functionsReached:
    - MemoryContextSwitchTo
    - GetMemoryChunkSpace
    - heap_form_minimal_tuple
    - 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:833,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:834,1
    - Dst: LACKMEM
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:843,1
    - Dst: PrepareTempTablespaces
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:850,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:861,1
    - Dst: BufFileCreateTemp
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:863,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:865,1
    - Dst: tuplestore_updatemax
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:881,1
    - Dst: dumptuples
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:884,1
    - Dst: BufFileTell
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:899,1
    - Dst: WRITETUP
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:905,1
    - Dst: BufFileTell
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:913,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:916,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:919,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:920,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:921,1
    - Dst: WRITETUP
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:938,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:941,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 60
    argCount: 2
    argNames:
    - state
    - tuple
    argTypes:
    - Tuplestorestate*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 944
      start: 798
    functionDepth: 1
    functionLinenumber: 798
    functionLinenumberEnd: 944
    functionName: tuplestore_puttuple_common
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 3
    functionsReached:
    - errmsg
    - Assert
    - MemoryContextSwitchTo
    - grow_memtuples
    - LACKMEM
    - WRITETUP
    - BufFileCreateTemp
    - ereport
    - tuplestore_updatemax
    - BufFileTell
    - elog
    - PrepareTempTablespaces
    - BufFileSeek
    - dumptuples
    - errcode_for_file_access
    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:962,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:995,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1002,1
    - Dst: BufFileTell
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1017,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1020,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1023,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1024,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1025,1
    - Dst: getlen
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1033,1
    - Dst: READTUP
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1035,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1054,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1059,1
    - Dst: getlen
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1062,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1074,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1084,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1087,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1088,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1089,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1090,1
    - Dst: getlen
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1093,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1101,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1104,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1105,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1106,1
    - Dst: READTUP
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1107,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1111,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 75
    argCount: 3
    argNames:
    - state
    - forward
    - should_free
    argTypes:
    - Tuplestorestate*
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 954
    functionDepth: 1
    functionLinenumber: 954
    functionLinenumberEnd: 1114
    functionName: tuplestore_gettuple
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - getlen
    - ereport
    - BufFileTell
    - elog
    - BufFileSeek
    - READTUP
    - 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:1136,1
    - Dst: heap_copy_minimal_tuple
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1142,1
    - Dst: ExecStoreMinimalTuple
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1145,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1150,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - state
    - forward
    - copy
    - slot
    argTypes:
    - Tuplestorestate*
    - bool
    - bool
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1153
      start: 1129
    functionDepth: 5
    functionLinenumber: 1129
    functionLinenumberEnd: 1153
    functionName: tuplestore_gettupleslot
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 16
    functionsReached:
    - ExecClearTuple
    - heap_copy_minimal_tuple
    - tuplestore_gettuple
    - ExecStoreMinimalTuple
    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:1167,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1172,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - state
    - forward
    argTypes:
    - Tuplestorestate*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1179
      start: 1161
    functionDepth: 2
    functionLinenumber: 1161
    functionLinenumberEnd: 1179
    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:1191,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1225,1
    - Dst: tuplestore_gettuple
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1238,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1243,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1244,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 42
    argCount: 3
    argNames:
    - state
    - ntuples
    - forward
    argTypes:
    - Tuplestorestate*
    - int64
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1248
      start: 1186
    functionDepth: 2
    functionLinenumber: 1186
    functionLinenumberEnd: 1248
    functionName: tuplestore_skiptuples
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 2
    functionsReached:
    - pfree
    - Assert
    - tuplestore_gettuple
    - CHECK_FOR_INTERRUPTS
    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:1270,1
    - Dst: WRITETUP
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1275,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplestorestate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1279
      start: 1257
    functionDepth: 1
    functionLinenumber: 1257
    functionLinenumberEnd: 1279
    functionName: dumptuples
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 1
    functionsReached:
    - BufFileTell
    - WRITETUP
    linkageType: ''
    returnType: void
    signature: void dumptuples(Tuplestorestate *state)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1289,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1290,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1305,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1306,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1307,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1308,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1311,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplestorestate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1314
      start: 1284
    functionDepth: 1
    functionLinenumber: 1284
    functionLinenumberEnd: 1314
    functionName: tuplestore_rescan
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 10
    functionsReached:
    - errmsg
    - Assert
    - ereport
    - elog
    - BufFileSeek
    - 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:1326,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1327,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1367,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1371,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1372,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1373,1
    - Dst: BufFileSeek
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1377,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1380,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1381,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1382,1
    - Dst: BufFileTell
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1388,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1394,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 36
    argCount: 3
    argNames:
    - state
    - srcptr
    - destptr
    argTypes:
    - Tuplestorestate*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1397
      start: 1319
    functionDepth: 1
    functionLinenumber: 1319
    functionLinenumberEnd: 1397
    functionName: tuplestore_copy_read_pointer
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 2
    functionsReached:
    - errmsg
    - Assert
    - ereport
    - BufFileTell
    - elog
    - BufFileSeek
    - 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:1437,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1454,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1455,1
    - Dst: tuplestore_updatemax
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1458,1
    - Dst: FREEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1463,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1463,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1464,1
    - Dst: memmove
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1490,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplestorestate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1500
      start: 1411
    functionDepth: 1
    functionLinenumber: 1411
    functionLinenumberEnd: 1500
    functionName: tuplestore_trim
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 2
    functionsReached:
    - Min
    - Assert
    - pfree
    - memmove
    - tuplestore_updatemax
    - GetMemoryChunkSpace
    - FREEMEM
    linkageType: ''
    returnType: void
    signature: void tuplestore_trim(Tuplestorestate *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Max
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1511,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1515,1
    - Dst: BufFileSize
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1516,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplestorestate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1524
      start: 1507
    functionDepth: 1
    functionLinenumber: 1507
    functionLinenumberEnd: 1524
    functionName: tuplestore_updatemax
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 3
    functionsReached:
    - Max
    - BufFileSize
    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:1536,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: 1544
      start: 1532
    functionDepth: 2
    functionLinenumber: 1532
    functionLinenumberEnd: 1544
    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: 1557
      start: 1553
    functionDepth: 0
    functionLinenumber: 1553
    functionLinenumberEnd: 1557
    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:1570,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - state
    - eofOK
    argTypes:
    - Tuplestorestate*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1575
      start: 1564
    functionDepth: 1
    functionLinenumber: 1564
    functionLinenumberEnd: 1575
    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:1593,1
    - Dst: USEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1594,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1594,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - state
    - tup
    argTypes:
    - Tuplestorestate*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1596
      start: 1588
    functionDepth: 2
    functionLinenumber: 1588
    functionLinenumberEnd: 1596
    functionName: copytup_heap
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 0
    functionsReached:
    - GetMemoryChunkSpace
    - minimal_tuple_from_heap_tuple
    - USEMEM
    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:1610,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1611,1
    - Dst: BufFileWrite
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1613,1
    - Dst: FREEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1615,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1615,1
    - Dst: heap_free_minimal_tuple
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1616,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - state
    - tup
    argTypes:
    - Tuplestorestate*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1617
      start: 1598
    functionDepth: 1
    functionLinenumber: 1598
    functionLinenumberEnd: 1617
    functionName: writetup_heap
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 0
    functionsReached:
    - FREEMEM
    - heap_free_minimal_tuple
    - GetMemoryChunkSpace
    - 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:1624,1
    - Dst: BufFileReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1629,1
    - Dst: BufFileReadExact
      Src: /src/postgres/src/backend/utils/sort/tuplestore.c:1631,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - state
    - len
    argTypes:
    - Tuplestorestate*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1633
      start: 1619
    functionDepth: 1
    functionLinenumber: 1619
    functionLinenumberEnd: 1633
    functionName: readtup_heap
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplestore.c
    functionUses: 0
    functionsReached:
    - palloc
    - BufFileReadExact
    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: 378
      start: 375
    functionDepth: 0
    functionLinenumber: 375
    functionLinenumberEnd: 378
    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: 394
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 394
    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: 396
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 396
    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: 397
      start: 396
    functionDepth: 0
    functionLinenumber: 396
    functionLinenumberEnd: 397
    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: 398
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 398
    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: 399
      start: 398
    functionDepth: 0
    functionLinenumber: 398
    functionLinenumberEnd: 399
    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: 400
      start: 399
    functionDepth: 0
    functionLinenumber: 399
    functionLinenumberEnd: 400
    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: 401
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 401
    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: 402
      start: 401
    functionDepth: 0
    functionLinenumber: 401
    functionLinenumberEnd: 402
    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: 403
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 403
    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: 404
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 404
    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: 405
      start: 404
    functionDepth: 0
    functionLinenumber: 404
    functionLinenumberEnd: 405
    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: 406
      start: 405
    functionDepth: 0
    functionLinenumber: 405
    functionLinenumberEnd: 406
    functionName: LEADER
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LEADER(state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ApplyUnsignedSortComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:499,1
    - Dst: Tuplesortstate*::base::comparetup_tiebreak
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:512,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 494
    functionDepth: 2
    functionLinenumber: 494
    functionLinenumberEnd: 513
    functionName: qsort_tuple_unsigned_compare
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached:
    - Tuplesortstate*::base::comparetup_tiebreak
    - ApplyUnsignedSortComparator
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: pg_attribute_always_inline qsort_tuple_unsigned_compare(SortTuple *a,
      SortTuple *b, Tuplesortstate *state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ApplySignedSortComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:522,1
    - Dst: Tuplesortstate*::base::comparetup_tiebreak
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:536,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 517
    functionDepth: 3
    functionLinenumber: 517
    functionLinenumberEnd: 537
    functionName: qsort_tuple_signed_compare
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached:
    - ApplySignedSortComparator
    - Tuplesortstate*::base::comparetup_tiebreak
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: pg_attribute_always_inline qsort_tuple_signed_compare(SortTuple *a,
      SortTuple *b, Tuplesortstate *state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ApplyInt32SortComparator
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:546,1
    - Dst: Tuplesortstate*::base::comparetup_tiebreak
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:560,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - a
    - b
    - state
    argTypes:
    - SortTuple*
    - SortTuple*
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 541
    functionDepth: 2
    functionLinenumber: 541
    functionLinenumberEnd: 561
    functionName: qsort_tuple_int32_compare
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached:
    - Tuplesortstate*::base::comparetup_tiebreak
    - ApplyInt32SortComparator
    linkageType: ''
    returnType: pg_attribute_always_inline
    signature: pg_attribute_always_inline qsort_tuple_int32_compare(SortTuple *a,
      SortTuple *b, Tuplesortstate *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - state
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 574
    functionDepth: 0
    functionLinenumber: 574
    functionLinenumberEnd: 575
    functionName: ST_COMPARE
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_COMPARE(a, b, state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - state
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 585
    functionName: ST_COMPARE
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_COMPARE(a, b, state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - state
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 594
    functionDepth: 0
    functionLinenumber: 594
    functionLinenumberEnd: 595
    functionName: ST_COMPARE
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_COMPARE(a, b, 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: 616
      start: 613
    functionDepth: 0
    functionLinenumber: 613
    functionLinenumberEnd: 616
    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:651,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:657,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:665,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:678,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:680,1
    - Dst: pg_rusage_init
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:683,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:695,1
    - Dst: tuplesort_begin_batch
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:710,1
    - Dst: worker_get_identifier
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:727,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:736,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:739,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 35
    argCount: 3
    argNames:
    - workMem
    - coordinate
    - sortopt
    argTypes:
    - int
    - SortCoordinate
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 742
      start: 641
    functionDepth: 1
    functionLinenumber: 641
    functionLinenumberEnd: 742
    functionName: tuplesort_begin_common
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 8
    functionsReached:
    - tuplesort_begin_batch
    - MemoryContextSwitchTo
    - Assert
    - pg_rusage_init
    - worker_get_identifier
    - palloc0
    - elog
    - Max
    - AllocSetContextCreate
    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:756,1
    - Dst: TupleSortUseBumpTupleCxt
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:771,1
    - Dst: BumpContextCreate
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:772,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:776,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:799,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:805,1
    - Dst: USEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:806,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:806,1
    - Dst: LACKMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:810,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:811,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:822,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 751
    functionDepth: 1
    functionLinenumber: 751
    functionLinenumberEnd: 823
    functionName: tuplesort_begin_batch
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - pfree
    - MemoryContextSwitchTo
    - BumpContextCreate
    - LACKMEM
    - TupleSortUseBumpTupleCxt
    - elog
    - GetMemoryChunkSpace
    - AllocSetContextCreate
    - palloc
    - USEMEM
    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:841,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:843,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:845,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:847,1
    - Dst: WORKER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:847,1
    - Dst: LEADER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:850,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - state
    - bound
    argTypes:
    - Tuplesortstate*
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 837
    functionDepth: 1
    functionLinenumber: 837
    functionLinenumberEnd: 878
    functionName: tuplesort_set_bound
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 3
    functionsReached:
    - LEADER
    - Assert
    - WORKER
    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: 889
      start: 885
    functionDepth: 0
    functionLinenumber: 885
    functionLinenumberEnd: 889
    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:900,1
    - Dst: LogicalTapeSetBlocks
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:904,1
    - Dst: LogicalTapeSetClose
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:916,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:921,1
    - Dst: SERIAL
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:922,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:923,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:925,1
    - Dst: SERIAL
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:926,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:927,1
    - Dst: TRACE_POSTGRESQL_SORT_DONE
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:930,1
    - Dst: FREESTATE
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:932,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:933,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:938,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 896
    functionDepth: 2
    functionLinenumber: 896
    functionLinenumberEnd: 939
    functionName: tuplesort_free
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached:
    - LogicalTapeSetBlocks
    - MemoryContextSwitchTo
    - TRACE_POSTGRESQL_SORT_DONE
    - SERIAL
    - MemoryContextReset
    - elog
    - pg_rusage_show
    - FREESTATE
    - LogicalTapeSetClose
    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:953,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:959,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 960
      start: 950
    functionDepth: 3
    functionLinenumber: 950
    functionLinenumberEnd: 960
    functionName: tuplesort_end
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 20
    functionsReached:
    - MemoryContextDelete
    - tuplesort_free
    linkageType: ''
    returnType: void
    signature: void tuplesort_end(Tuplesortstate *state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LogicalTapeSetBlocks
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:985,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1008
      start: 967
    functionDepth: 1
    functionLinenumber: 967
    functionLinenumberEnd: 1008
    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:1021,1
    - Dst: tuplesort_free
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1022,1
    - Dst: tuplesort_begin_batch
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1028,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1034
      start: 1018
    functionDepth: 3
    functionLinenumber: 1018
    functionLinenumberEnd: 1034
    functionName: tuplesort_reset
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 3
    functionsReached:
    - tuplesort_begin_batch
    - tuplesort_free
    - 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:1149,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1149,1
    - Dst: repalloc_huge
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1152,1
    - Dst: USEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1154,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1154,1
    - Dst: LACKMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1155,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1156,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1163
      start: 1051
    functionDepth: 1
    functionLinenumber: 1051
    functionLinenumberEnd: 1163
    functionName: grow_memtuples
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - LACKMEM
    - elog
    - GetMemoryChunkSpace
    - FREEMEM
    - repalloc_huge
    - USEMEM
    linkageType: ''
    returnType: bool
    signature: bool grow_memtuples(Tuplesortstate *state)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1172,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1174,1
    - Dst: LEADER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1174,1
    - Dst: USEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1177,1
    - Dst: consider_abort_common
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1191,1
    - Dst: Tuplesortstate*::base::sortKeys::abbrev_converter
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1194,1
    - Dst: REMOVEABBREV
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1208,1
    - Dst: grow_memtuples
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1224,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1225,1
    - Dst: LACKMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1243,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1246,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1248,1
    - Dst: make_bounded_heap
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1249,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1250,1
    - Dst: LACKMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1257,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1259,1
    - Dst: inittapes
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1266,1
    - Dst: dumptuples
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1271,1
    - Dst: COMPARETUP
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1284,1
    - Dst: free_sort_tuple
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1287,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1288,1
    - Dst: free_sort_tuple
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1293,1
    - Dst: tuplesort_heap_replace_top
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1294,1
    - Dst: dumptuples
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1308,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1312,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1315,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 50
    argCount: 4
    argNames:
    - state
    - tuple
    - useAbbrev
    - tuplen
    argTypes:
    - Tuplesortstate*
    - SortTuple*
    - bool
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1316
      start: 1168
    functionDepth: 1
    functionLinenumber: 1168
    functionLinenumberEnd: 1316
    functionName: tuplesort_puttuple_common
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 6
    functionsReached:
    - LEADER
    - Assert
    - MemoryContextSwitchTo
    - tuplesort_heap_replace_top
    - CHECK_FOR_INTERRUPTS
    - grow_memtuples
    - LACKMEM
    - free_sort_tuple
    - consider_abort_common
    - REMOVEABBREV
    - COMPARETUP
    - inittapes
    - elog
    - pg_rusage_show
    - make_bounded_heap
    - Tuplesortstate*::base::sortKeys::abbrev_converter
    - dumptuples
    - USEMEM
    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:1321,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1322,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1323,1
    - Dst: Tuplesortstate*::base::sortKeys::abbrev_abort
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1338,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1357
      start: 1318
    functionDepth: 1
    functionLinenumber: 1318
    functionLinenumberEnd: 1357
    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:1365,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1368,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1369,1
    - Dst: SERIAL
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1379,1
    - Dst: tuplesort_sort_memtuples
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1382,1
    - Dst: WORKER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1385,1
    - Dst: inittapes
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1391,1
    - Dst: dumptuples
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1392,1
    - Dst: worker_nomergeruns
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1393,1
    - Dst: leader_takeover_tapes
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1402,1
    - Dst: mergeruns
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1403,1
    - Dst: sort_bounded_heap
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1420,1
    - Dst: dumptuples
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1435,1
    - Dst: mergeruns
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1436,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1444,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1451,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1453,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1455,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1456,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1459,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 49
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1460
      start: 1362
    functionDepth: 1
    functionLinenumber: 1362
    functionLinenumberEnd: 1460
    functionName: tuplesort_performsort
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 17
    functionsReached:
    - mergeruns
    - worker_nomergeruns
    - MemoryContextSwitchTo
    - SERIAL
    - tuplesort_sort_memtuples
    - inittapes
    - elog
    - pg_rusage_show
    - WORKER
    - sort_bounded_heap
    - leader_takeover_tapes
    - 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:1476,1
    - Dst: WORKER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1476,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1481,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1482,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1498,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1525,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1526,1
    - Dst: RELEASE_SLAB_SLOT
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1534,1
    - Dst: getlen
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1543,1
    - Dst: READTUP
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1545,1
    - Dst: LogicalTapeBackspace
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1576,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1581,1
    - Dst: LogicalTapeBackspace
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1590,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1595,1
    - Dst: getlen
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1596,1
    - Dst: LogicalTapeBackspace
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1601,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1615,1
    - Dst: getlen
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1618,1
    - Dst: LogicalTapeBackspace
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1625,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1628,1
    - Dst: READTUP
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1629,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1640,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1642,1
    - Dst: RELEASE_SLAB_SLOT
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1650,1
    - Dst: mergereadnext
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1675,1
    - Dst: tuplesort_heap_delete_top
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1681,1
    - Dst: LogicalTapeClose
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1688,1
    - Dst: tuplesort_heap_replace_top
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1692,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1698,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 100
    argCount: 3
    argNames:
    - state
    - forward
    - stup
    argTypes:
    - Tuplesortstate*
    - bool
    - SortTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1701
      start: 1469
    functionDepth: 5
    functionLinenumber: 1469
    functionLinenumberEnd: 1701
    functionName: tuplesort_gettuple_common
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 6
    functionsReached:
    - Assert
    - tuplesort_heap_replace_top
    - tuplesort_heap_delete_top
    - getlen
    - RELEASE_SLAB_SLOT
    - elog
    - WORKER
    - LogicalTapeClose
    - mergereadnext
    - LogicalTapeBackspace
    - READTUP
    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:1718,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1719,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1720,1
    - Dst: WORKER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1720,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1739,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1750,1
    - Dst: tuplesort_gettuple_common
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1755,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1757,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1760,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1762,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1766,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 3
    argNames:
    - state
    - ntuples
    - forward
    argTypes:
    - Tuplesortstate*
    - int64
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1769
      start: 1709
    functionDepth: 6
    functionLinenumber: 1709
    functionLinenumberEnd: 1769
    functionName: tuplesort_skiptuples
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - CHECK_FOR_INTERRUPTS
    - tuplesort_gettuple_common
    - elog
    - WORKER
    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:1817,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1818,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - allowedMem
    argTypes:
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1821
      start: 1777
    functionDepth: 0
    functionLinenumber: 1777
    functionLinenumberEnd: 1821
    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:1846,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1856,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: 1857
      start: 1832
    functionDepth: 0
    functionLinenumber: 1832
    functionLinenumberEnd: 1857
    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:1867,1
    - Dst: LEADER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1867,1
    - Dst: tuplesort_merge_order
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1872,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1877,1
    - Dst: WORKER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1877,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1882,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1883,1
    - Dst: inittapestate
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1886,1
    - Dst: LogicalTapeSetCreate
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1888,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1901,1
    - Dst: selectnewtape
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1907,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 2
    argNames:
    - state
    - mergeruns
    argTypes:
    - Tuplesortstate*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1908
      start: 1864
    functionDepth: 2
    functionLinenumber: 1864
    functionLinenumberEnd: 1908
    functionName: inittapes
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 2
    functionsReached:
    - LEADER
    - Assert
    - tuplesort_merge_order
    - palloc0
    - elog
    - pg_rusage_show
    - WORKER
    - LogicalTapeSetCreate
    - selectnewtape
    - inittapestate
    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:1929,1
    - Dst: USEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1930,1
    - Dst: PrepareTempTablespaces
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1937,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - state
    - maxTapes
    argTypes:
    - Tuplesortstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1938
      start: 1913
    functionDepth: 1
    functionLinenumber: 1913
    functionLinenumberEnd: 1938
    functionName: inittapestate
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - GetMemoryChunkSpace
    - PrepareTempTablespaces
    - USEMEM
    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:1959,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1960,1
    - Dst: LogicalTapeCreate
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1961,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1975
      start: 1947
    functionDepth: 2
    functionLinenumber: 1947
    functionLinenumberEnd: 1975
    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:1988,1
    - Dst: USEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:1992,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - state
    - numSlots
    argTypes:
    - Tuplesortstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2008
      start: 1980
    functionDepth: 0
    functionLinenumber: 1980
    functionLinenumberEnd: 2008
    functionName: init_slab_allocator
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 0
    functionsReached:
    - palloc
    - USEMEM
    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:2021,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2022,1
    - Dst: MemoryContextResetOnly
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2044,1
    - Dst: FREEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2050,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2050,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2051,1
    - Dst: init_slab_allocator
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2068,1
    - Dst: init_slab_allocator
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2070,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2081,1
    - Dst: USEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2083,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2083,1
    - Dst: USEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2091,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2093,1
    - Dst: LogicalTapeClose
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2112,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2113,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2126,1
    - Dst: merge_read_buffer_size
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2134,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2140,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2142,1
    - Dst: LogicalTapeRewindForRead
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2146,1
    - Dst: WORKER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2156,1
    - Dst: LogicalTapeSetForgetFreeSpace
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2159,1
    - Dst: beginmerge
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2161,1
    - Dst: selectnewtape
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2168,1
    - Dst: mergeonerun
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2171,1
    - Dst: WORKER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2185,1
    - Dst: LogicalTapeFreeze
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2186,1
    - Dst: worker_freeze_result_tape
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2188,1
    - Dst: LogicalTapeClose
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2193,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 60
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2194
      start: 2016
    functionDepth: 3
    functionLinenumber: 2016
    functionLinenumberEnd: 2194
    functionName: mergeruns
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - LogicalTapeSetForgetFreeSpace
    - mergeonerun
    - pg_rusage_show
    - GetMemoryChunkSpace
    - merge_read_buffer_size
    - pfree
    - beginmerge
    - LogicalTapeRewindForRead
    - USEMEM
    - worker_freeze_result_tape
    - MemoryContextResetOnly
    - init_slab_allocator
    - elog
    - selectnewtape
    - Assert
    - LogicalTapeFreeze
    - palloc0
    - WORKER
    - FREEMEM
    - MemoryContextAlloc
    - LogicalTapeClose
    linkageType: ''
    returnType: void
    signature: void mergeruns(Tuplesortstate *state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: beginmerge
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2209,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2211,1
    - Dst: WRITETUP
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2225,1
    - Dst: RELEASE_SLAB_SLOT
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2229,1
    - Dst: mergereadnext
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2235,1
    - Dst: tuplesort_heap_replace_top
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2238,1
    - Dst: tuplesort_heap_delete_top
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2242,1
    - Dst: markrunend
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2251,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2252
      start: 2199
    functionDepth: 1
    functionLinenumber: 2199
    functionLinenumberEnd: 2252
    functionName: mergeonerun
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - Assert
    - tuplesort_heap_replace_top
    - tuplesort_heap_delete_top
    - WRITETUP
    - markrunend
    - beginmerge
    - RELEASE_SLAB_SLOT
    - mergereadnext
    linkageType: ''
    returnType: void
    signature: void mergeonerun(Tuplesortstate *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2266,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2268,1
    - Dst: mergereadnext
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2274,1
    - Dst: tuplesort_heap_insert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2277,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2280
      start: 2259
    functionDepth: 1
    functionLinenumber: 2259
    functionLinenumberEnd: 2280
    functionName: beginmerge
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 2
    functionsReached:
    - mergereadnext
    - Min
    - Assert
    - 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:2293,1
    - Dst: READTUP
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2295,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - state
    - srcTape
    - stup
    argTypes:
    - Tuplesortstate*
    - LogicalTape*
    - SortTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2298
      start: 2287
    functionDepth: 0
    functionLinenumber: 2287
    functionLinenumberEnd: 2298
    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:2316,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2331,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2338,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2339,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2340,1
    - Dst: selectnewtape
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2344,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2349,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2351,1
    - Dst: tuplesort_sort_memtuples
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2357,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2360,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2362,1
    - Dst: WRITETUP
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2369,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2381,1
    - Dst: FREEMEM
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2387,1
    - Dst: markrunend
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2390,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2393,1
    - Dst: pg_rusage_show
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2395,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 2
    argNames:
    - state
    - alltuples
    argTypes:
    - Tuplesortstate*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2396
      start: 2306
    functionDepth: 3
    functionLinenumber: 2306
    functionLinenumberEnd: 2396
    functionName: dumptuples
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 3
    functionsReached:
    - errmsg
    - Assert
    - MemoryContextReset
    - LACKMEM
    - WRITETUP
    - markrunend
    - ereport
    - tuplesort_sort_memtuples
    - elog
    - selectnewtape
    - pg_rusage_show
    - FREEMEM
    - errcode
    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:2404,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2406,1
    - Dst: LogicalTapeRewindForRead
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2417,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2424,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2428,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2429
      start: 2401
    functionDepth: 3
    functionLinenumber: 2401
    functionLinenumberEnd: 2429
    functionName: tuplesort_rescan
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - elog
    - LogicalTapeRewindForRead
    linkageType: ''
    returnType: void
    signature: void tuplesort_rescan(Tuplesortstate *state)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2437,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2439,1
    - Dst: LogicalTapeTell
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2448,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2454,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2458,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2459
      start: 2434
    functionDepth: 5
    functionLinenumber: 2434
    functionLinenumberEnd: 2459
    functionName: tuplesort_markpos
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - LogicalTapeTell
    - Assert
    - MemoryContextSwitchTo
    - elog
    linkageType: ''
    returnType: void
    signature: void tuplesort_markpos(Tuplesortstate *state)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2468,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2470,1
    - Dst: LogicalTapeSeek
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2479,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2485,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2489,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2490
      start: 2465
    functionDepth: 5
    functionLinenumber: 2465
    functionLinenumberEnd: 2490
    functionName: tuplesort_restorepos
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - elog
    - Assert
    - MemoryContextSwitchTo
    - LogicalTapeSeek
    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:2511,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - state
    - stats
    argTypes:
    - Tuplesortstate*
    - TuplesortInstrumentation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2537
      start: 2498
    functionDepth: 2
    functionLinenumber: 2498
    functionLinenumberEnd: 2537
    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: 2560
      start: 2542
    functionDepth: 0
    functionLinenumber: 2542
    functionLinenumberEnd: 2560
    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:2568,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - TuplesortSpaceType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2570
      start: 2565
    functionDepth: 1
    functionLinenumber: 2565
    functionLinenumberEnd: 2570
    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:2592,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2593,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2594,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2595,1
    - Dst: SERIAL
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2595,1
    - Dst: reversedirection
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2598,1
    - Dst: tuplesort_heap_insert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2609,1
    - Dst: COMPARETUP
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2618,1
    - Dst: free_sort_tuple
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2620,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2621,1
    - Dst: tuplesort_heap_replace_top
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2624,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2628,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2630
      start: 2586
    functionDepth: 1
    functionLinenumber: 2586
    functionLinenumberEnd: 2630
    functionName: make_bounded_heap
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - Assert
    - tuplesort_heap_replace_top
    - CHECK_FOR_INTERRUPTS
    - SERIAL
    - free_sort_tuple
    - COMPARETUP
    - tuplesort_heap_insert
    - reversedirection
    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:2640,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2641,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2642,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2643,1
    - Dst: SERIAL
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2643,1
    - Dst: tuplesort_heap_delete_top
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2655,1
    - Dst: reversedirection
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2664,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2668
      start: 2635
    functionDepth: 1
    functionLinenumber: 2635
    functionLinenumberEnd: 2668
    functionName: sort_bounded_heap
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - SERIAL
    - Assert
    - tuplesort_heap_delete_top
    - reversedirection
    linkageType: ''
    returnType: void
    signature: void sort_bounded_heap(Tuplesortstate *state)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2678,1
    - Dst: LEADER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2678,1
    - Dst: qsort_tuple_unsigned
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2690,1
    - Dst: qsort_tuple_signed
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2698,1
    - Dst: qsort_tuple_int32
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2706,1
    - Dst: qsort_ssup
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2716,1
    - Dst: qsort_tuple
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2721,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2727
      start: 2675
    functionDepth: 1
    functionLinenumber: 2675
    functionLinenumberEnd: 2727
    functionName: tuplesort_sort_memtuples
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 2
    functionsReached:
    - LEADER
    - Assert
    - qsort_tuple
    - qsort_tuple_int32
    - qsort_ssup
    - qsort_tuple_signed
    - qsort_tuple_unsigned
    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:2745,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2747,1
    - Dst: COMPARETUP
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2758,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - state
    - tuple
    argTypes:
    - Tuplesortstate*
    - SortTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2764
      start: 2738
    functionDepth: 1
    functionLinenumber: 2738
    functionLinenumberEnd: 2764
    functionName: tuplesort_heap_insert
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 2
    functionsReached:
    - COMPARETUP
    - Assert
    - 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:2787,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2788
      start: 2773
    functionDepth: 1
    functionLinenumber: 2773
    functionLinenumberEnd: 2788
    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:2804,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2806,1
    - Dst: COMPARETUP
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2822,1
    - Dst: COMPARETUP
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2824,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - state
    - tuple
    argTypes:
    - Tuplesortstate*
    - SortTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2830
      start: 2797
    functionDepth: 1
    functionLinenumber: 2797
    functionLinenumberEnd: 2830
    functionName: tuplesort_heap_replace_top
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 5
    functionsReached:
    - COMPARETUP
    - Assert
    - 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: 2848
      start: 2837
    functionDepth: 0
    functionLinenumber: 2837
    functionLinenumberEnd: 2848
    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:2860,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2862,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2864,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - tape
    - eofOK
    argTypes:
    - LogicalTape*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2866
      start: 2855
    functionDepth: 5
    functionLinenumber: 2855
    functionLinenumberEnd: 2866
    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:2873,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tape
    argTypes:
    - LogicalTape*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2874
      start: 2868
    functionDepth: 3
    functionLinenumber: 2868
    functionLinenumberEnd: 2874
    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:2891,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2894,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - state
    - tuplen
    argTypes:
    - Tuplesortstate*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2903
      start: 2882
    functionDepth: 1
    functionLinenumber: 2882
    functionLinenumberEnd: 2903
    functionName: tuplesort_readtup_alloc
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 6
    functionsReached:
    - MemoryContextAlloc
    - Assert
    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:2921,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2924,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2925,1
    - Dst: add_size
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - nWorkers
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2928
      start: 2916
    functionDepth: 1
    functionLinenumber: 2916
    functionLinenumberEnd: 2928
    functionName: tuplesort_estimate_shared
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 3
    functionsReached:
    - Assert
    - mul_size
    - add_size
    - MAXALIGN
    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:2942,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2944,1
    - Dst: SharedFileSetInit
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2947,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - shared
    - nWorkers
    - seg
    argTypes:
    - Sharedsort*
    - int
    - dsm_segment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2953
      start: 2937
    functionDepth: 1
    functionLinenumber: 2937
    functionLinenumberEnd: 2953
    functionName: tuplesort_initialize_shared
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 3
    functionsReached:
    - Assert
    - SpinLockInit
    - SharedFileSetInit
    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:2964,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - shared
    - seg
    argTypes:
    - Sharedsort*
    - dsm_segment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2965
      start: 2960
    functionDepth: 1
    functionLinenumber: 2960
    functionLinenumberEnd: 2965
    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:2986,1
    - Dst: WORKER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2986,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2988,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:2990,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2993
      start: 2980
    functionDepth: 1
    functionLinenumber: 2980
    functionLinenumberEnd: 2993
    functionName: worker_get_identifier
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - Assert
    - WORKER
    - SpinLockRelease
    - SpinLockAcquire
    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:3014,1
    - Dst: WORKER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3014,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3015,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3016,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3022,1
    - Dst: LogicalTapeFreeze
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3031,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3034,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3037,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3038
      start: 3008
    functionDepth: 3
    functionLinenumber: 3008
    functionLinenumberEnd: 3038
    functionName: worker_freeze_result_tape
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - LogicalTapeFreeze
    - SpinLockRelease
    - WORKER
    - 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:3049,1
    - Dst: WORKER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3049,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3050,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3051,1
    - Dst: worker_freeze_result_tape
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3054,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3055
      start: 3046
    functionDepth: 4
    functionLinenumber: 3046
    functionLinenumberEnd: 3055
    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:3076,1
    - Dst: LEADER
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3076,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3077,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3079,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3081,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3084,1
    - Dst: inittapestate
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3091,1
    - Dst: LogicalTapeSetCreate
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3092,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3112,1
    - Dst: LogicalTapeImport
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3118,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 1
    argNames:
    - state
    argTypes:
    - Tuplesortstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3122
      start: 3068
    functionDepth: 2
    functionLinenumber: 3068
    functionLinenumberEnd: 3122
    functionName: leader_takeover_tapes
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 1
    functionsReached:
    - LEADER
    - Assert
    - palloc0
    - SpinLockRelease
    - elog
    - LogicalTapeSetCreate
    - inittapestate
    - LogicalTapeImport
    - 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:3132,1
    - Dst: GetMemoryChunkSpace
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3132,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - state
    - stup
    argTypes:
    - Tuplesortstate*
    - SortTuple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3136
      start: 3127
    functionDepth: 1
    functionLinenumber: 3127
    functionLinenumberEnd: 3136
    functionName: free_sort_tuple
    functionSourceFile: /src/postgres/src/backend/utils/sort/tuplesort.c
    functionUses: 2
    functionsReached:
    - FREEMEM
    - pfree
    - GetMemoryChunkSpace
    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: 3147
      start: 3138
    functionDepth: 0
    functionLinenumber: 3138
    functionLinenumberEnd: 3147
    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:3153,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - x
    - y
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3162
      start: 3150
    functionDepth: 2
    functionLinenumber: 3150
    functionLinenumberEnd: 3162
    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:3168,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/sort/tuplesort.c:3169,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - x
    - y
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3177
      start: 3165
    functionDepth: 1
    functionLinenumber: 3165
    functionLinenumberEnd: 3177
    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: 1
    functionLinenumber: 106
    functionLinenumberEnd: 117
    functionName: crc32_bytea
    functionSourceFile: /src/postgres/src/backend/utils/hash/pg_crc.c
    functionUses: 0
    functionsReached:
    - FIN_TRADITIONAL_CRC32
    - PG_GETARG_BYTEA_PP
    - INIT_TRADITIONAL_CRC32
    - VARSIZE_ANY_EXHDR
    - COMP_TRADITIONAL_CRC32
    - VARDATA_ANY
    - PG_RETURN_INT64
    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: 1
    functionLinenumber: 119
    functionLinenumberEnd: 130
    functionName: crc32c_bytea
    functionSourceFile: /src/postgres/src/backend/utils/hash/pg_crc.c
    functionUses: 0
    functionsReached:
    - COMP_CRC32C
    - FIN_CRC32C
    - INIT_CRC32C
    - PG_GETARG_BYTEA_PP
    - PG_RETURN_INT64
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    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: 211
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 211
    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: 214
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 214
    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: 245
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 245
    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: 251
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 251
    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: 256
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 256
    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:293,1
    - Dst: MemoryContextIsValid
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:293,1
    - Dst: MemoryContextAllocExtended
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - size
    argTypes:
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 290
    functionDepth: 1
    functionLinenumber: 290
    functionLinenumberEnd: 296
    functionName: DynaHashAlloc
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 0
    functionsReached:
    - MemoryContextIsValid
    - Assert
    - MemoryContextAllocExtended
    linkageType: ''
    returnType: void
    signature: 'void *

      DynaHashAlloc(Size size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - key1
    - key2
    - keysize
    argTypes:
    - char*
    - char*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 310
    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: 26
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:361,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:362,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:363,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:387,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:393,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:394,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:395,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:398,1
    - Dst: MemoryContextSetIdentifier
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:402,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:409,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:414,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:431,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:432,1
    - Dst: HTAB*::alloc
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:513,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:515,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:516,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:517,1
    - Dst: hdefault
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:522,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:529,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:536,1
    - Dst: next_pow2_int
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:536,1
    - Dst: my_log2
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:544,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:546,1
    - Dst: init_htab
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:568,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:569,1
    - Dst: IS_PARTITIONED
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:591,1
    - Dst: element_alloc
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:614,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:615,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:616,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:617,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 111
    argCount: 4
    argNames:
    - tabname
    - nelem
    - info
    - flags
    argTypes:
    - char*
    - long
    - HASHCTL*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 351
    functionDepth: 1
    functionLinenumber: 351
    functionLinenumberEnd: 624
    functionName: hash_create
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 49
    functionsReached:
    - errmsg
    - Assert
    - HTAB*::alloc
    - init_htab
    - element_alloc
    - my_log2
    - IS_PARTITIONED
    - ereport
    - hdefault
    - elog
    - MemSet
    - AllocSetContextCreate
    - MemoryContextSetIdentifier
    - MemoryContextAlloc
    - next_pow2_int
    - errcode
    - strlen
    - strcpy
    linkageType: ''
    returnType: HTAB
    signature: 'HTAB *

      hash_create(const char *tabname, long 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: 9
    argCount: 1
    argNames:
    - hashp
    argTypes:
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 629
    functionDepth: 1
    functionLinenumber: 629
    functionLinenumberEnd: 650
    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:665,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:665,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - entrysize
    argTypes:
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 656
    functionDepth: 1
    functionLinenumber: 656
    functionLinenumberEnd: 683
    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: 7
    BranchProfiles: []
    Callsites:
    - Dst: IS_PARTITIONED
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:701,1
    - Dst: SpinLockInit
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:703,1
    - Dst: next_pow2_int
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:709,1
    - Dst: next_pow2_int
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:727,1
    - Dst: HTAB*::alloc
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:746,1
    - Dst: seg_alloc
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:754,1
    - Dst: choose_nelem_alloc
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:760,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:763,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 2
    argNames:
    - hashp
    - nelem
    argTypes:
    - HTAB*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 689
    functionDepth: 2
    functionLinenumber: 689
    functionLinenumberEnd: 774
    functionName: init_htab
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 1
    functionsReached:
    - HTAB*::alloc
    - SpinLockInit
    - IS_PARTITIONED
    - fprintf
    - choose_nelem_alloc
    - seg_alloc
    - next_pow2_int
    linkageType: ''
    returnType: bool
    signature: bool init_htab(HTAB *hashp, long nelem)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: next_pow2_long
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:795,1
    - Dst: next_pow2_long
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:797,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:804,1
    - Dst: add_size
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:806,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:806,1
    - Dst: add_size
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:808,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:808,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:809,1
    - Dst: choose_nelem_alloc
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:811,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:813,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:813,1
    - Dst: add_size
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:814,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:815,1
    - Dst: mul_size
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:816,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - num_entries
    - entrysize
    argTypes:
    - long
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 783
    functionDepth: 2
    functionLinenumber: 783
    functionLinenumberEnd: 819
    functionName: hash_estimate_size
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 0
    functionsReached:
    - add_size
    - choose_nelem_alloc
    - next_pow2_long
    - mul_size
    - MAXALIGN
    linkageType: ''
    returnType: Size
    signature: Size hash_estimate_size(long num_entries, Size entrysize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: next_pow2_long
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:838,1
    - Dst: next_pow2_long
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:840,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - num_entries
    argTypes:
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 830
    functionDepth: 1
    functionLinenumber: 830
    functionLinenumberEnd: 847
    functionName: hash_select_dirsize
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 0
    functionsReached:
    - next_pow2_long
    linkageType: ''
    returnType: long
    signature: long hash_select_dirsize(long num_entries)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:857,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:858,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - info
    - flags
    argTypes:
    - HASHCTL*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 854
    functionDepth: 1
    functionLinenumber: 854
    functionLinenumberEnd: 860
    functionName: hash_get_shared_size
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 0
    functionsReached:
    - Assert
    linkageType: ''
    returnType: Size
    signature: Size hash_get_shared_size(HASHCTL *info, int flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:871,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:873,1
    - Dst: hash_stats
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:875,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:880,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - hashp
    argTypes:
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 865
    functionDepth: 1
    functionLinenumber: 865
    functionLinenumberEnd: 882
    functionName: hash_destroy
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 10
    functionsReached:
    - hash_stats
    - Assert
    - MemoryContextDelete
    linkageType: ''
    returnType: void
    signature: void hash_destroy(HTAB *hashp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:888,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:891,1
    - Dst: hash_get_num_entries
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:892,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:894,1
    - Dst: fprintf
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:896,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - where
    - hashp
    argTypes:
    - char*
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 884
    functionDepth: 1
    functionLinenumber: 884
    functionLinenumberEnd: 899
    functionName: hash_stats
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 1
    functionsReached:
    - hash_get_num_entries
    - fprintf
    linkageType: ''
    returnType: void
    signature: void hash_stats(const char *where, HTAB *hashp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HTAB*::hash
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:914,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hashp
    - keyPtr
    argTypes:
    - HTAB*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 911
    functionDepth: 1
    functionLinenumber: 911
    functionLinenumberEnd: 915
    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: 928
      start: 918
    functionDepth: 0
    functionLinenumber: 918
    functionLinenumberEnd: 928
    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:961,1
    - Dst: HTAB*::hash
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:963,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - hashp
    - keyPtr
    - action
    - foundPtr
    argTypes:
    - HTAB*
    - void*
    - HASHACTION
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 955
    functionDepth: 1
    functionLinenumber: 955
    functionLinenumberEnd: 966
    functionName: hash_search
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 72
    functionsReached:
    - hash_search_with_hash_value
    - HTAB*::hash
    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:976,1
    - Dst: IS_PARTITIONED
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1002,1
    - Dst: has_seq_scans
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1003,1
    - Dst: expand_table
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1004,1
    - Dst: hash_initial_lookup
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1010,1
    - Dst: match
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1022,1
    - Dst: ELEMENTKEY
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1022,1
    - Dst: ELEMENTKEY
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1042,1
    - Dst: IS_PARTITIONED
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1049,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1050,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1053,1
    - Dst: IS_PARTITIONED
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1063,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1064,1
    - Dst: ELEMENTKEY
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1071,1
    - Dst: ELEMENTKEY
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1079,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1083,1
    - Dst: get_hash_entry
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1086,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1094,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1095,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1096,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1098,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1099,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1100,1
    - Dst: HTAB*::keycopy
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1109,1
    - Dst: ELEMENTKEY
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1109,1
    - Dst: ELEMENTKEY
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1118,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1121,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 62
    argCount: 5
    argNames:
    - hashp
    - keyPtr
    - hashvalue
    - action
    - foundPtr
    argTypes:
    - HTAB*
    - void*
    - uint32
    - HASHACTION
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1124
      start: 968
    functionDepth: 1
    functionLinenumber: 968
    functionLinenumberEnd: 1124
    functionName: hash_search_with_hash_value
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 1
    functionsReached:
    - errmsg
    - Assert
    - get_hash_entry
    - match
    - has_seq_scans
    - HTAB*::keycopy
    - IS_PARTITIONED
    - ereport
    - SpinLockRelease
    - elog
    - FREELIST_IDX
    - ELEMENTKEY
    - hash_initial_lookup
    - expand_table
    - errcode
    - SpinLockAcquire
    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:1150,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1167,1
    - Dst: hash_initial_lookup
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1175,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1188,1
    - Dst: HTAB*::hash
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1197,1
    - Dst: hash_initial_lookup
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1198,1
    - Dst: match
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1210,1
    - Dst: ELEMENTKEY
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1210,1
    - Dst: HTAB*::keycopy
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1244,1
    - Dst: ELEMENTKEY
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1244,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 40
    argCount: 3
    argNames:
    - hashp
    - existingEntry
    - newKeyPtr
    argTypes:
    - HTAB*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1249
      start: 1145
    functionDepth: 1
    functionLinenumber: 1145
    functionLinenumberEnd: 1249
    functionName: hash_update_hash_key
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 0
    functionsReached:
    - HTAB*::hash
    - match
    - HTAB*::keycopy
    - ELEMENT_FROM_KEY
    - elog
    - ELEMENTKEY
    - hash_initial_lookup
    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:1265,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1266,1
    - Dst: IS_PARTITIONED
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1274,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1275,1
    - Dst: element_alloc
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1289,1
    - Dst: IS_PARTITIONED
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1293,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1304,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1310,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1313,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1315,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1320,1
    - Dst: IS_PARTITIONED
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1332,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1333,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 2
    argNames:
    - hashp
    - freelist_idx
    argTypes:
    - HTAB*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1336
      start: 1256
    functionDepth: 1
    functionLinenumber: 1256
    functionLinenumberEnd: 1336
    functionName: get_hash_entry
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 1
    functionsReached:
    - element_alloc
    - SpinLockRelease
    - IS_PARTITIONED
    - SpinLockAcquire
    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:1352,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - hashp
    argTypes:
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1359
      start: 1341
    functionDepth: 1
    functionLinenumber: 1341
    functionLinenumberEnd: 1359
    functionName: hash_get_num_entries
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 6
    functionsReached:
    - IS_PARTITIONED
    linkageType: ''
    returnType: long
    signature: long hash_get_num_entries(HTAB *hashp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: register_seq_scan
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1393,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - status
    - hashp
    argTypes:
    - HASH_SEQ_STATUS*
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1394
      start: 1385
    functionDepth: 1
    functionLinenumber: 1385
    functionLinenumberEnd: 1394
    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:1411,1
    - Dst: hash_initial_lookup
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1416,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - status
    - hashp
    - hashvalue
    argTypes:
    - HASH_SEQ_STATUS*
    - HTAB*
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1418
      start: 1405
    functionDepth: 2
    functionLinenumber: 1405
    functionLinenumberEnd: 1418
    functionName: hash_seq_init_with_hash_value
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 0
    functionsReached:
    - hash_initial_lookup
    - hash_seq_init
    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:1444,1
    - Dst: hash_seq_term
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1447,1
    - Dst: ELEMENTKEY
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1457,1
    - Dst: hash_seq_term
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1471,1
    - Dst: MOD
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1479,1
    - Dst: hash_seq_term
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1495,1
    - Dst: ELEMENTKEY
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1511,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 46
    argCount: 1
    argNames:
    - status
    argTypes:
    - HASH_SEQ_STATUS*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1512
      start: 1420
    functionDepth: 1
    functionLinenumber: 1420
    functionLinenumberEnd: 1512
    functionName: hash_seq_search
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 22
    functionsReached:
    - ELEMENTKEY
    - hash_seq_term
    - MOD
    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:1518,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - status
    argTypes:
    - HASH_SEQ_STATUS*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1519
      start: 1514
    functionDepth: 1
    functionLinenumber: 1514
    functionLinenumberEnd: 1519
    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:1538,1
    - Dst: has_seq_scans
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1539,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1540,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - hashp
    argTypes:
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1543
      start: 1534
    functionDepth: 1
    functionLinenumber: 1534
    functionLinenumberEnd: 1543
    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:1568,1
    - Dst: IS_PARTITIONED
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1568,1
    - Dst: MOD
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1576,1
    - Dst: dir_realloc
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1582,1
    - Dst: seg_alloc
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1584,1
    - Dst: MOD
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1616,1
    - Dst: calc_bucket
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1629,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 39
    argCount: 1
    argNames:
    - hashp
    argTypes:
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1645
      start: 1551
    functionDepth: 1
    functionLinenumber: 1551
    functionLinenumberEnd: 1645
    functionName: expand_table
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 1
    functionsReached:
    - Assert
    - IS_PARTITIONED
    - seg_alloc
    - dir_realloc
    - calc_bucket
    - 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:1667,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1671,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1672,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1677,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1678,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - hashp
    argTypes:
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1684
      start: 1648
    functionDepth: 1
    functionLinenumber: 1648
    functionLinenumberEnd: 1684
    functionName: dir_realloc
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - HTAB*::alloc
    - MemSet
    - memcpy
    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:1693,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1698,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - hashp
    argTypes:
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1701
      start: 1687
    functionDepth: 1
    functionLinenumber: 1687
    functionLinenumberEnd: 1701
    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: 5
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1720,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1720,1
    - Dst: HTAB*::alloc
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1723,1
    - Dst: IS_PARTITIONED
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1739,1
    - Dst: SpinLockAcquire
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1740,1
    - Dst: IS_PARTITIONED
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1746,1
    - Dst: SpinLockRelease
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1747,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 3
    argNames:
    - hashp
    - nelem
    - freelist_idx
    argTypes:
    - HTAB*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1750
      start: 1706
    functionDepth: 1
    functionLinenumber: 1706
    functionLinenumberEnd: 1750
    functionName: element_alloc
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 2
    functionsReached:
    - HTAB*::alloc
    - IS_PARTITIONED
    - SpinLockRelease
    - MAXALIGN
    - SpinLockAcquire
    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:1765,1
    - Dst: MOD
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1768,1
    - Dst: hash_corrupted
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1773,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - hashp
    - hashvalue
    - bucketptr
    argTypes:
    - HTAB*
    - uint32
    - HASHBUCKET**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1777
      start: 1756
    functionDepth: 1
    functionLinenumber: 1756
    functionLinenumberEnd: 1777
    functionName: hash_initial_lookup
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 3
    functionsReached:
    - calc_bucket
    - hash_corrupted
    - MOD
    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:1788,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1790,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - hashp
    argTypes:
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1791
      start: 1780
    functionDepth: 1
    functionLinenumber: 1780
    functionLinenumberEnd: 1791
    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_32
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1805,1
    - Dst: pg_ceil_log2_64
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1807,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - num
    argTypes:
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1809
      start: 1794
    functionDepth: 3
    functionLinenumber: 1794
    functionLinenumberEnd: 1809
    functionName: my_log2
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 6
    functionsReached:
    - pg_ceil_log2_64
    - pg_ceil_log2_32
    linkageType: ''
    returnType: int
    signature: int my_log2(long num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: my_log2
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1816,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1817
      start: 1812
    functionDepth: 4
    functionLinenumber: 1812
    functionLinenumberEnd: 1817
    functionName: next_pow2_long
    functionSourceFile: /src/postgres/src/backend/utils/hash/dynahash.c
    functionUses: 2
    functionsReached:
    - my_log2
    linkageType: ''
    returnType: long
    signature: long next_pow2_long(long num)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: my_log2
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1825,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - num
    argTypes:
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1826
      start: 1820
    functionDepth: 4
    functionLinenumber: 1820
    functionLinenumberEnd: 1826
    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(long num)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1869,1
    - Dst: GetCurrentTransactionNestLevel
      Src: /src/postgres/src/backend/utils/hash/dynahash.c:1872,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - hashp
    argTypes:
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1874
      start: 1865
    functionDepth: 1
    functionLinenumber: 1865
    functionLinenumberEnd: 1874
    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:1893,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - hashp
    argTypes:
    - HTAB*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1895
      start: 1877
    functionDepth: 1
    functionLinenumber: 1877
    functionLinenumberEnd: 1895
    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: 1909
      start: 1898
    functionDepth: 0
    functionLinenumber: 1898
    functionLinenumberEnd: 1909
    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:1930,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - isCommit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1935
      start: 1912
    functionDepth: 1
    functionLinenumber: 1912
    functionLinenumberEnd: 1935
    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:1953,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - isCommit
    - nestDepth
    argTypes:
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1960
      start: 1938
    functionDepth: 1
    functionLinenumber: 1938
    functionLinenumberEnd: 1960
    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:
    - GetTopTransactionIdIfAny
    - check_log_of_query
    - get_backend_type_for_log
    - get_ps_display
    - write_syslogger_file
    - pgstat_get_my_query_id
    - pfree
    - get_formatted_start_time
    - unpack_sql_state
    - appendCSVLiteral
    - get_formatted_log_time
    - _
    - appendStringInfoString
    - error_severity
    - reset_formatted_start_time
    - appendStringInfo
    - appendStringInfoChar
    - appendBinaryStringInfo
    - write_pipe_chunks
    - initStringInfo
    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:
    - appendStringInfoChar
    - Assert
    - escape_json
    - appendStringInfoString
    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:
    - pfree
    - appendJSONKeyValue
    - va_end
    - pvsnprintf
    - palloc
    - va_start
    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:
    - GetTopTransactionIdIfAny
    - appendJSONKeyValue
    - check_log_of_query
    - get_backend_type_for_log
    - get_ps_display
    - write_syslogger_file
    - pgstat_get_my_query_id
    - pfree
    - get_formatted_start_time
    - unpack_sql_state
    - get_formatted_log_time
    - error_severity
    - reset_formatted_start_time
    - escape_json
    - appendBinaryStringInfo
    - appendStringInfoChar
    - write_pipe_chunks
    - initStringInfo
    - appendJSONKeyValueFmt
    linkageType: ''
    returnType: void
    signature: void write_jsonlog(ErrorData *edata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/utils/error/assert.c:35,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/utils/error/assert.c:36,1
    - Dst: write_stderr
      Src: /src/postgres/src/backend/utils/error/assert.c:37,1
    - Dst: getpid
      Src: /src/postgres/src/backend/utils/error/assert.c:38,1
    - Dst: write_stderr
      Src: /src/postgres/src/backend/utils/error/assert.c:40,1
    - Dst: getpid
      Src: /src/postgres/src/backend/utils/error/assert.c:41,1
    - Dst: fflush
      Src: /src/postgres/src/backend/utils/error/assert.c:44,1
    - Dst: backtrace
      Src: /src/postgres/src/backend/utils/error/assert.c:52,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/utils/error/assert.c:52,1
    - Dst: backtrace_symbols_fd
      Src: /src/postgres/src/backend/utils/error/assert.c:53,1
    - Dst: fileno
      Src: /src/postgres/src/backend/utils/error/assert.c:53,1
    - Dst: sleep
      Src: /src/postgres/src/backend/utils/error/assert.c:63,1
    - Dst: abort
      Src: /src/postgres/src/backend/utils/error/assert.c:66,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - conditionName
    - fileName
    - lineNumber
    argTypes:
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 67
    functionName: ExceptionalCondition
    functionSourceFile: /src/postgres/src/backend/utils/error/assert.c
    functionUses: 0
    functionsReached:
    - backtrace_symbols_fd
    - fflush
    - lengthof
    - backtrace
    - getpid
    - write_stderr
    - sleep
    - fileno
    - abort
    - PointerIsValid
    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: 92
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 92
    functionName: _
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 337
    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: 173
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 173
    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: 8
    EdgeCount: 8
    ICount: 15
    argCount: 2
    argNames:
    - elevel
    - log_min_level
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 225
    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:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - elevel
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 239
    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: 261
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 261
    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:279,1
    - Dst: should_output_to_client
      Src: /src/postgres/src/backend/utils/error/elog.c:280,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - elevel
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 272
    functionDepth: 2
    functionLinenumber: 272
    functionLinenumberEnd: 283
    functionName: message_level_is_interesting
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 6
    functionsReached:
    - should_output_to_server
    - should_output_to_client
    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: 298
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 298
    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:309,1
    - Dst: gettext
      Src: /src/postgres/src/backend/utils/error/elog.c:312,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 305
    functionDepth: 1
    functionLinenumber: 305
    functionLinenumberEnd: 316
    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:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - elevel
    - domain
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 330
    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:392,1
    - Dst: should_output_to_server
      Src: /src/postgres/src/backend/utils/error/elog.c:400,1
    - Dst: should_output_to_client
      Src: /src/postgres/src/backend/utils/error/elog.c:401,1
    - Dst: write_stderr
      Src: /src/postgres/src/backend/utils/error/elog.c:412,1
    - Dst: exit
      Src: /src/postgres/src/backend/utils/error/elog.c:413,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/utils/error/elog.c:427,1
    - Dst: in_error_recursion_trouble
      Src: /src/postgres/src/backend/utils/error/elog.c:435,1
    - Dst: get_error_stack_entry
      Src: /src/postgres/src/backend/utils/error/elog.c:443,1
    - Dst: set_stack_entry_domain
      Src: /src/postgres/src/backend/utils/error/elog.c:447,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 39
    argCount: 2
    argNames:
    - elevel
    - domain
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 342
    functionDepth: 2
    functionLinenumber: 342
    functionLinenumberEnd: 463
    functionName: errstart
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 1
    functionsReached:
    - MemoryContextReset
    - in_error_recursion_trouble
    - Max
    - exit
    - write_stderr
    - should_output_to_client
    - set_stack_entry_domain
    - should_output_to_server
    - get_error_stack_entry
    linkageType: ''
    returnType: bool
    signature: bool errstart(int elevel, const char *domain)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:482,1
    - Dst: set_stack_entry_location
      Src: /src/postgres/src/backend/utils/error/elog.c:485,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:493,1
    - Dst: matches_backtrace_functions
      Src: /src/postgres/src/backend/utils/error/elog.c:499,1
    - Dst: set_backtrace
      Src: /src/postgres/src/backend/utils/error/elog.c:500,1
    - Dst: ErrorContextCallback*::callback
      Src: /src/postgres/src/backend/utils/error/elog.c:510,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/utils/error/elog.c:539,1
    - Dst: EmitErrorReport
      Src: /src/postgres/src/backend/utils/error/elog.c:543,1
    - Dst: FreeErrorDataContents
      Src: /src/postgres/src/backend/utils/error/elog.c:546,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:550,1
    - Dst: fflush
      Src: /src/postgres/src/backend/utils/error/elog.c:573,1
    - Dst: proc_exit
      Src: /src/postgres/src/backend/utils/error/elog.c:587,1
    - Dst: fflush
      Src: /src/postgres/src/backend/utils/error/elog.c:599,1
    - Dst: abort
      Src: /src/postgres/src/backend/utils/error/elog.c:600,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/error/elog.c:608,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 3
    argNames:
    - filename
    - lineno
    - funcname
    argTypes:
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 473
    functionDepth: 2
    functionLinenumber: 473
    functionLinenumberEnd: 609
    functionName: errfinish
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - set_backtrace
    - MemoryContextSwitchTo
    - PG_RE_THROW
    - FreeErrorDataContents
    - fflush
    - CHECK_FOR_INTERRUPTS
    - CHECK_STACK_DEPTH
    - matches_backtrace_functions
    - ErrorContextCallback*::callback
    - EmitErrorReport
    - abort
    - 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:639,1
    - Dst: errstart
      Src: /src/postgres/src/backend/utils/error/elog.c:640,1
    - Dst: get_error_stack_entry
      Src: /src/postgres/src/backend/utils/error/elog.c:657,1
    - Dst: set_stack_entry_domain
      Src: /src/postgres/src/backend/utils/error/elog.c:659,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - context
    - domain
    argTypes:
    - struct Node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 629
    functionDepth: 3
    functionLinenumber: 629
    functionLinenumberEnd: 672
    functionName: errsave_start
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - get_error_stack_entry
    - IsA
    - set_stack_entry_domain
    - errstart
    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:689,1
    - Dst: errfinish
      Src: /src/postgres/src/backend/utils/error/elog.c:697,1
    - Dst: pg_unreachable
      Src: /src/postgres/src/backend/utils/error/elog.c:698,1
    - Dst: set_stack_entry_location
      Src: /src/postgres/src/backend/utils/error/elog.c:708,1
    - Dst: palloc_object
      Src: /src/postgres/src/backend/utils/error/elog.c:724,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/error/elog.c:725,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: 730
      start: 681
    functionDepth: 3
    functionLinenumber: 681
    functionLinenumberEnd: 730
    functionName: errsave_finish
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - pg_unreachable
    - CHECK_STACK_DEPTH
    - palloc_object
    - set_stack_entry_location
    - memcpy
    - errfinish
    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:758,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/error/elog.c:762,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/utils/error/elog.c:762,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/error/elog.c:767,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 751
    functionDepth: 1
    functionLinenumber: 751
    functionLinenumberEnd: 773
    functionName: get_error_stack_entry
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 2
    functionsReached:
    - memset
    - unlikely
    - errmsg_internal
    - ereport
    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:782,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - edata
    - domain
    argTypes:
    - ErrorData*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 778
    functionDepth: 1
    functionLinenumber: 778
    functionLinenumberEnd: 785
    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:805,1
    - Dst: strrchr
      Src: /src/postgres/src/backend/utils/error/elog.c:809,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - edata
    - filename
    - lineno
    - funcname
    argTypes:
    - ErrorData*
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 817
      start: 795
    functionDepth: 0
    functionLinenumber: 795
    functionLinenumberEnd: 817
    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:839,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/error/elog.c:841,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 1
    argNames:
    - funcname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 825
    functionDepth: 0
    functionLinenumber: 825
    functionLinenumberEnd: 845
    functionName: matches_backtrace_functions
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 1
    functionsReached:
    - strcmp
    - strlen
    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:859,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - sqlerrcode
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 853
    functionDepth: 1
    functionLinenumber: 853
    functionLinenumberEnd: 864
    functionName: errcode
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 906
    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:882,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 942
      start: 876
    functionDepth: 1
    functionLinenumber: 876
    functionLinenumberEnd: 942
    functionName: errcode_for_file_access
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 117
    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:959,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 953
    functionDepth: 1
    functionLinenumber: 953
    functionLinenumberEnd: 975
    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: 1030
      start: 1026
    functionDepth: 0
    functionLinenumber: 1026
    functionLinenumberEnd: 1030
    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:1077,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1078,1
    - Dst: EVALUATE_MESSAGE
      Src: /src/postgres/src/backend/utils/error/elog.c:1081,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1083,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1086
      start: 1070
    functionDepth: 1
    functionLinenumber: 1070
    functionLinenumberEnd: 1086
    functionName: errmsg
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 1073
    functionsReached:
    - CHECK_STACK_DEPTH
    - MemoryContextSwitchTo
    - EVALUATE_MESSAGE
    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:1099,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1100,1
    - Dst: set_backtrace
      Src: /src/postgres/src/backend/utils/error/elog.c:1102,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1108
      start: 1092
    functionDepth: 1
    functionLinenumber: 1092
    functionLinenumberEnd: 1108
    functionName: errbacktrace
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - CHECK_STACK_DEPTH
    - set_backtrace
    - MemoryContextSwitchTo
    linkageType: ''
    returnType: int
    signature: int errbacktrace(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:1121,1
    - Dst: backtrace
      Src: /src/postgres/src/backend/utils/error/elog.c:1129,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/utils/error/elog.c:1129,1
    - Dst: backtrace_symbols
      Src: /src/postgres/src/backend/utils/error/elog.c:1130,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:1135,1
    - Dst: free
      Src: /src/postgres/src/backend/utils/error/elog.c:1136,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:1139,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - edata
    - num_skip
    argTypes:
    - ErrorData*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1144
      start: 1116
    functionDepth: 3
    functionLinenumber: 1116
    functionLinenumberEnd: 1144
    functionName: set_backtrace
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 2
    functionsReached:
    - lengthof
    - appendStringInfo
    - appendStringInfoString
    - backtrace
    - backtrace_symbols
    - initStringInfo
    - free
    linkageType: ''
    returnType: void
    signature: void set_backtrace(ErrorData *edata, int num_skip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1164,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1165,1
    - Dst: EVALUATE_MESSAGE
      Src: /src/postgres/src/backend/utils/error/elog.c:1168,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1173
      start: 1157
    functionDepth: 1
    functionLinenumber: 1157
    functionLinenumberEnd: 1173
    functionName: errmsg_internal
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 121
    functionsReached:
    - CHECK_STACK_DEPTH
    - MemoryContextSwitchTo
    - EVALUATE_MESSAGE
    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:1188,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1189,1
    - Dst: EVALUATE_MESSAGE_PLURAL
      Src: /src/postgres/src/backend/utils/error/elog.c:1192,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1194,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: 1197
      start: 1180
    functionDepth: 1
    functionLinenumber: 1180
    functionLinenumberEnd: 1197
    functionName: errmsg_plural
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 17
    functionsReached:
    - CHECK_STACK_DEPTH
    - MemoryContextSwitchTo
    - EVALUATE_MESSAGE_PLURAL
    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:1210,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1211,1
    - Dst: EVALUATE_MESSAGE
      Src: /src/postgres/src/backend/utils/error/elog.c:1213,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1218
      start: 1203
    functionDepth: 1
    functionLinenumber: 1203
    functionLinenumberEnd: 1218
    functionName: errdetail
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 201
    functionsReached:
    - CHECK_STACK_DEPTH
    - MemoryContextSwitchTo
    - EVALUATE_MESSAGE
    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:1237,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1238,1
    - Dst: EVALUATE_MESSAGE
      Src: /src/postgres/src/backend/utils/error/elog.c:1240,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1245
      start: 1230
    functionDepth: 1
    functionLinenumber: 1230
    functionLinenumberEnd: 1245
    functionName: errdetail_internal
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 31
    functionsReached:
    - CHECK_STACK_DEPTH
    - MemoryContextSwitchTo
    - EVALUATE_MESSAGE
    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:1258,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1259,1
    - Dst: EVALUATE_MESSAGE
      Src: /src/postgres/src/backend/utils/error/elog.c:1261,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1266
      start: 1251
    functionDepth: 1
    functionLinenumber: 1251
    functionLinenumberEnd: 1266
    functionName: errdetail_log
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 6
    functionsReached:
    - CHECK_STACK_DEPTH
    - MemoryContextSwitchTo
    - EVALUATE_MESSAGE
    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:1280,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1281,1
    - Dst: EVALUATE_MESSAGE_PLURAL
      Src: /src/postgres/src/backend/utils/error/elog.c:1283,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1285,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: 1288
      start: 1272
    functionDepth: 1
    functionLinenumber: 1272
    functionLinenumberEnd: 1288
    functionName: errdetail_log_plural
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - CHECK_STACK_DEPTH
    - MemoryContextSwitchTo
    - EVALUATE_MESSAGE_PLURAL
    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:1303,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1304,1
    - Dst: EVALUATE_MESSAGE_PLURAL
      Src: /src/postgres/src/backend/utils/error/elog.c:1306,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1308,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: 1311
      start: 1295
    functionDepth: 1
    functionLinenumber: 1295
    functionLinenumberEnd: 1311
    functionName: errdetail_plural
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 5
    functionsReached:
    - CHECK_STACK_DEPTH
    - MemoryContextSwitchTo
    - EVALUATE_MESSAGE_PLURAL
    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:1324,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1325,1
    - Dst: EVALUATE_MESSAGE
      Src: /src/postgres/src/backend/utils/error/elog.c:1327,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1332
      start: 1317
    functionDepth: 1
    functionLinenumber: 1317
    functionLinenumberEnd: 1332
    functionName: errhint
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 156
    functionsReached:
    - CHECK_STACK_DEPTH
    - MemoryContextSwitchTo
    - EVALUATE_MESSAGE
    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:1346,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1347,1
    - Dst: EVALUATE_MESSAGE
      Src: /src/postgres/src/backend/utils/error/elog.c:1349,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1354
      start: 1339
    functionDepth: 1
    functionLinenumber: 1339
    functionLinenumberEnd: 1354
    functionName: errhint_internal
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - CHECK_STACK_DEPTH
    - MemoryContextSwitchTo
    - EVALUATE_MESSAGE
    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:1368,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1369,1
    - Dst: EVALUATE_MESSAGE_PLURAL
      Src: /src/postgres/src/backend/utils/error/elog.c:1371,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1373,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: 1376
      start: 1360
    functionDepth: 1
    functionLinenumber: 1360
    functionLinenumberEnd: 1376
    functionName: errhint_plural
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - CHECK_STACK_DEPTH
    - MemoryContextSwitchTo
    - EVALUATE_MESSAGE_PLURAL
    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:1393,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1394,1
    - Dst: EVALUATE_MESSAGE
      Src: /src/postgres/src/backend/utils/error/elog.c:1396,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1401
      start: 1386
    functionDepth: 1
    functionLinenumber: 1386
    functionLinenumberEnd: 1401
    functionName: errcontext_msg
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - CHECK_STACK_DEPTH
    - MemoryContextSwitchTo
    - EVALUATE_MESSAGE
    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:1418,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/backend/utils/error/elog.c:1421,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - domain
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1424
      start: 1412
    functionDepth: 1
    functionLinenumber: 1412
    functionLinenumberEnd: 1424
    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:1438,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - hide_stmt
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1443
      start: 1432
    functionDepth: 1
    functionLinenumber: 1432
    functionLinenumberEnd: 1443
    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:1457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - hide_ctx
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1462
      start: 1451
    functionDepth: 1
    functionLinenumber: 1451
    functionLinenumberEnd: 1462
    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:1473,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - cursorpos
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1478
      start: 1467
    functionDepth: 1
    functionLinenumber: 1467
    functionLinenumberEnd: 1478
    functionName: errposition
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 17
    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:1489,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - cursorpos
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1494
      start: 1483
    functionDepth: 1
    functionLinenumber: 1483
    functionLinenumberEnd: 1494
    functionName: internalerrposition
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 7
    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:1509,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:1513,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1518,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - query
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1521
      start: 1503
    functionDepth: 1
    functionLinenumber: 1503
    functionLinenumberEnd: 1521
    functionName: internalerrquery
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 7
    functionsReached:
    - CHECK_STACK_DEPTH
    - MemoryContextStrdup
    - pfree
    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:1539,1
    - Dst: set_errdata_field
      Src: /src/postgres/src/backend/utils/error/elog.c:1544,1
    - Dst: set_errdata_field
      Src: /src/postgres/src/backend/utils/error/elog.c:1547,1
    - Dst: set_errdata_field
      Src: /src/postgres/src/backend/utils/error/elog.c:1550,1
    - Dst: set_errdata_field
      Src: /src/postgres/src/backend/utils/error/elog.c:1553,1
    - Dst: set_errdata_field
      Src: /src/postgres/src/backend/utils/error/elog.c:1556,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/error/elog.c:1559,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - field
    - str
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1564
      start: 1533
    functionDepth: 1
    functionLinenumber: 1533
    functionLinenumberEnd: 1564
    functionName: err_generic_string
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 3
    functionsReached:
    - CHECK_STACK_DEPTH
    - elog
    - set_errdata_field
    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:1572,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1573,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - cxt
    - ptr
    - str
    argTypes:
    - MemoryContextData*
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1574
      start: 1569
    functionDepth: 1
    functionLinenumber: 1569
    functionLinenumberEnd: 1574
    functionName: set_errdata_field
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 1
    functionsReached:
    - MemoryContextStrdup
    - Assert
    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:1588,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1591
      start: 1582
    functionDepth: 1
    functionLinenumber: 1582
    functionLinenumberEnd: 1591
    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:1605,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1608
      start: 1599
    functionDepth: 1
    functionLinenumber: 1599
    functionLinenumberEnd: 1608
    functionName: geterrposition
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 5
    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:1622,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1625
      start: 1616
    functionDepth: 1
    functionLinenumber: 1616
    functionLinenumberEnd: 1625
    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: 1656
      start: 1649
    functionDepth: 0
    functionLinenumber: 1649
    functionLinenumberEnd: 1656
    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:1667,1
    - Dst: PG_TEXTDOMAIN
      Src: /src/postgres/src/backend/utils/error/elog.c:1669,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1673,1
    - Dst: EVALUATE_MESSAGE
      Src: /src/postgres/src/backend/utils/error/elog.c:1676,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1678,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1681
      start: 1658
    functionDepth: 1
    functionLinenumber: 1658
    functionLinenumberEnd: 1681
    functionName: format_elog_string
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - PG_TEXTDOMAIN
    - MemSet
    - MemoryContextSwitchTo
    - EVALUATE_MESSAGE
    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:1698,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1699,1
    - Dst: send_message_to_server_log
      Src: /src/postgres/src/backend/utils/error/elog.c:1733,1
    - Dst: send_message_to_frontend
      Src: /src/postgres/src/backend/utils/error/elog.c:1737,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1739,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1741
      start: 1691
    functionDepth: 1
    functionLinenumber: 1691
    functionLinenumberEnd: 1741
    functionName: EmitErrorReport
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 5
    functionsReached:
    - CHECK_STACK_DEPTH
    - MemoryContextSwitchTo
    - send_message_to_frontend
    - send_message_to_server_log
    linkageType: ''
    returnType: void
    signature: void EmitErrorReport(void)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_STACK_DEPTH
      Src: /src/postgres/src/backend/utils/error/elog.c:1760,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/error/elog.c:1762,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/error/elog.c:1765,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/error/elog.c:1766,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1776,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1778,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1780,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1782,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1784,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1786,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1788,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1790,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1792,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1794,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1796,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1798,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1800,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1802,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1804,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1806,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1808,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1814
      start: 1750
    functionDepth: 1
    functionLinenumber: 1750
    functionLinenumberEnd: 1814
    functionName: CopyErrorData
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 22
    functionsReached:
    - Assert
    - CHECK_STACK_DEPTH
    - pstrdup
    - memcpy
    - palloc
    linkageType: ''
    returnType: ErrorData
    signature: 'ErrorData *

      CopyErrorData(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FreeErrorDataContents
      Src: /src/postgres/src/backend/utils/error/elog.c:1825,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:1826,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - edata
    argTypes:
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1827
      start: 1822
    functionDepth: 1
    functionLinenumber: 1822
    functionLinenumberEnd: 1827
    functionName: FreeErrorData
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 9
    functionsReached:
    - pfree
    - FreeErrorDataContents
    linkageType: ''
    returnType: void
    signature: void FreeErrorData(ErrorData *edata)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:1838,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:1840,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:1842,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:1844,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:1846,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:1848,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:1850,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:1852,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:1854,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:1856,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:1858,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:1860,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 1
    argNames:
    - edata
    argTypes:
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1861
      start: 1834
    functionDepth: 0
    functionLinenumber: 1834
    functionLinenumberEnd: 1861
    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:1883,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1884
      start: 1871
    functionDepth: 1
    functionLinenumber: 1871
    functionLinenumberEnd: 1884
    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:1905,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1910,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1916,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1918,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1920,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1922,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1924,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1926,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1929,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1931,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1933,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1935,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1937,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1941,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1943,1
    - Dst: errfinish
      Src: /src/postgres/src/backend/utils/error/elog.c:1947,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 37
    argCount: 1
    argNames:
    - edata
    argTypes:
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1948
      start: 1899
    functionDepth: 3
    functionLinenumber: 1899
    functionLinenumberEnd: 1948
    functionName: ThrowErrorData
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 2
    functionsReached:
    - errfinish
    - MemoryContextSwitchTo
    - pstrdup
    - errstart
    linkageType: ''
    returnType: void
    signature: void ThrowErrorData(ErrorData *edata)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/error/elog.c:1963,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/error/elog.c:1967,1
    - Dst: get_error_stack_entry
      Src: /src/postgres/src/backend/utils/error/elog.c:1969,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/error/elog.c:1970,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1974,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1976,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1978,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1980,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1982,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1984,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1986,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1988,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1990,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1992,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1994,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/error/elog.c:1996,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/utils/error/elog.c:2002,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 1
    argNames:
    - edata
    argTypes:
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2003
      start: 1958
    functionDepth: 2
    functionLinenumber: 1958
    functionLinenumberEnd: 2003
    functionName: ReThrowError
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 4
    functionsReached:
    - Assert
    - MemoryContextSwitchTo
    - PG_RE_THROW
    - pstrdup
    - memcpy
    - get_error_stack_entry
    linkageType: ''
    returnType: void
    signature: void ReThrowError(ErrorData *edata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: siglongjmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2013,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/error/elog.c:2026,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/error/elog.c:2027,1
    - Dst: should_output_to_server
      Src: /src/postgres/src/backend/utils/error/elog.c:2034,1
    - Dst: should_output_to_client
      Src: /src/postgres/src/backend/utils/error/elog.c:2035,1
    - Dst: errfinish
      Src: /src/postgres/src/backend/utils/error/elog.c:2044,1
    - Dst: ExceptionalCondition
      Src: /src/postgres/src/backend/utils/error/elog.c:2048,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2049
      start: 2008
    functionDepth: 3
    functionLinenumber: 2008
    functionLinenumberEnd: 2049
    functionName: pg_re_throw
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - Assert
    - ExceptionalCondition
    - should_output_to_client
    - siglongjmp
    - should_output_to_server
    - errfinish
    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:2074,1
    - Dst: ErrorContextCallback*::callback
      Src: /src/postgres/src/backend/utils/error/elog.c:2093,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2109
      start: 2063
    functionDepth: 2
    functionLinenumber: 2063
    functionLinenumberEnd: 2109
    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:2128,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/error/elog.c:2130,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/error/elog.c:2131,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/error/elog.c:2132,1
    - Dst: isatty
      Src: /src/postgres/src/backend/utils/error/elog.c:2133,1
    - Dst: close
      Src: /src/postgres/src/backend/utils/error/elog.c:2134,1
    - Dst: freopen
      Src: /src/postgres/src/backend/utils/error/elog.c:2139,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/error/elog.c:2140,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/error/elog.c:2141,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/error/elog.c:2142,1
    - Dst: freopen
      Src: /src/postgres/src/backend/utils/error/elog.c:2152,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/error/elog.c:2153,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/error/elog.c:2154,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/error/elog.c:2155,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2158
      start: 2115
    functionDepth: 2
    functionLinenumber: 2115
    functionLinenumberEnd: 2158
    functionName: DebugFileOpen
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - errmsg
    - close
    - open
    - freopen
    - ereport
    - isatty
    - errcode_for_file_access
    linkageType: ''
    returnType: void
    signature: void DebugFileOpen(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/error/elog.c:2174,1
    - Dst: strspn
      Src: /src/postgres/src/backend/utils/error/elog.c:2184,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/utils/error/elog.c:2191,1
    - Dst: guc_malloc
      Src: /src/postgres/src/backend/utils/error/elog.c:2206,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2227
      start: 2171
    functionDepth: 1
    functionLinenumber: 2171
    functionLinenumberEnd: 2227
    functionName: check_backtrace_functions
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - strspn
    - GUC_check_errdetail
    - guc_malloc
    - strlen
    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: 2236
      start: 2232
    functionDepth: 0
    functionLinenumber: 2232
    functionLinenumberEnd: 2236
    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:2251,1
    - Dst: SplitIdentifierString
      Src: /src/postgres/src/backend/utils/error/elog.c:2254,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/utils/error/elog.c:2257,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:2258,1
    - Dst: list_free
      Src: /src/postgres/src/backend/utils/error/elog.c:2259,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/error/elog.c:2265,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2267,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2269,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2271,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2274,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2278,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/utils/error/elog.c:2283,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:2284,1
    - Dst: list_free
      Src: /src/postgres/src/backend/utils/error/elog.c:2285,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - newval
    - extra
    - source
    argTypes:
    - char**
    - void**
    - GucSource
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2288
      start: 2241
    functionDepth: 4
    functionLinenumber: 2241
    functionLinenumberEnd: 2288
    functionName: check_log_destination
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - GUC_check_errdetail
    - pfree
    - pstrdup
    - pg_strcasecmp
    - SplitIdentifierString
    - lfirst
    - list_free
    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:2265,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2267,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2269,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2271,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2274,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/error/elog.c:2278,1
    - Dst: GUC_check_errdetail
      Src: /src/postgres/src/backend/utils/error/elog.c:2283,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:2284,1
    - Dst: list_free
      Src: /src/postgres/src/backend/utils/error/elog.c:2285,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2287
      start: 2263
    functionDepth: 4
    functionLinenumber: 2263
    functionLinenumberEnd: 2287
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 463
    functionsReached:
    - GUC_check_errdetail
    - pfree
    - pg_strcasecmp
    - lfirst
    - list_free
    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: 2309
      start: 2305
    functionDepth: 0
    functionLinenumber: 2305
    functionLinenumberEnd: 2309
    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:2328,1
    - Dst: closelog
      Src: /src/postgres/src/backend/utils/error/elog.c:2332,1
    - Dst: free
      Src: /src/postgres/src/backend/utils/error/elog.c:2335,1
    - Dst: strdup
      Src: /src/postgres/src/backend/utils/error/elog.c:2336,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2341
      start: 2314
    functionDepth: 1
    functionLinenumber: 2314
    functionLinenumberEnd: 2341
    functionName: assign_syslog_ident
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - strcmp
    - closelog
    - free
    - strdup
    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:2357,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - newval
    - extra
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2364
      start: 2346
    functionDepth: 0
    functionLinenumber: 2346
    functionLinenumberEnd: 2364
    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:2382,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/error/elog.c:2402,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/error/elog.c:2403,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/error/elog.c:2420,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/error/elog.c:2429,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/error/elog.c:2430,1
    - Dst: pg_mbcliplen
      Src: /src/postgres/src/backend/utils/error/elog.c:2434,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/error/elog.c:2441,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/error/elog.c:2445,1
    - Dst: syslog
      Src: /src/postgres/src/backend/utils/error/elog.c:2458,1
    - Dst: syslog
      Src: /src/postgres/src/backend/utils/error/elog.c:2460,1
    - Dst: syslog
      Src: /src/postgres/src/backend/utils/error/elog.c:2470,1
    - Dst: syslog
      Src: /src/postgres/src/backend/utils/error/elog.c:2472,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 47
    argCount: 2
    argNames:
    - level
    - line
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2474
      start: 2371
    functionDepth: 1
    functionLinenumber: 2371
    functionLinenumberEnd: 2474
    functionName: write_syslog
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - Min
    - syslog
    - pg_mbcliplen
    - openlog
    - isspace
    - memcpy
    - strlen
    - strchr
    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:2489,1
    - Dst: GetACP
      Src: /src/postgres/src/backend/utils/error/elog.c:2489,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2492
      start: 2483
    functionDepth: 2
    functionLinenumber: 2483
    functionLinenumberEnd: 2492
    functionName: GetACPEncoding
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - pg_codepage_to_encoding
    - GetACP
    linkageType: ''
    returnType: int
    signature: int GetACPEncoding(void)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: RegisterEventSource
      Src: /src/postgres/src/backend/utils/error/elog.c:2506,1
    - Dst: in_error_recursion_trouble
      Src: /src/postgres/src/backend/utils/error/elog.c:2553,1
    - Dst: GetMessageEncoding
      Src: /src/postgres/src/backend/utils/error/elog.c:2555,1
    - Dst: GetACPEncoding
      Src: /src/postgres/src/backend/utils/error/elog.c:2555,1
    - Dst: pgwin32_message_to_UTF16
      Src: /src/postgres/src/backend/utils/error/elog.c:2557,1
    - Dst: ReportEventW
      Src: /src/postgres/src/backend/utils/error/elog.c:2560,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:2571,1
    - Dst: ReportEventA
      Src: /src/postgres/src/backend/utils/error/elog.c:2575,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 3
    argNames:
    - level
    - line
    - len
    argTypes:
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2584
      start: 2497
    functionDepth: 3
    functionLinenumber: 2497
    functionLinenumberEnd: 2584
    functionName: write_eventlog
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 2
    functionsReached:
    - pfree
    - ReportEventW
    - in_error_recursion_trouble
    - pgwin32_message_to_UTF16
    - ReportEventA
    - GetACPEncoding
    - GetMessageEncoding
    - RegisterEventSource
    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:2611,1
    - Dst: pgwin32_message_to_UTF16
      Src: /src/postgres/src/backend/utils/error/elog.c:2618,1
    - Dst: GetStdHandle
      Src: /src/postgres/src/backend/utils/error/elog.c:2624,1
    - Dst: WriteConsoleW
      Src: /src/postgres/src/backend/utils/error/elog.c:2625,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:2627,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:2635,1
    - Dst: write
      Src: /src/postgres/src/backend/utils/error/elog.c:2653,1
    - Dst: fileno
      Src: /src/postgres/src/backend/utils/error/elog.c:2653,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - line
    - len
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2655
      start: 2587
    functionDepth: 1
    functionLinenumber: 2587
    functionLinenumberEnd: 2655
    functionName: write_console
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - write
    - pfree
    - in_error_recursion_trouble
    - pgwin32_message_to_UTF16
    - WriteConsoleW
    - fileno
    - GetStdHandle
    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:2677,1
    - Dst: pg_strftime
      Src: /src/postgres/src/backend/utils/error/elog.c:2688,1
    - Dst: pg_localtime
      Src: /src/postgres/src/backend/utils/error/elog.c:2691,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/error/elog.c:2694,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/error/elog.c:2695,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2698
      start: 2665
    functionDepth: 3
    functionLinenumber: 2665
    functionLinenumberEnd: 2698
    functionName: get_formatted_log_time
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 2
    functionsReached:
    - pg_strftime
    - pg_localtime
    - gettimeofday
    - memcpy
    - sprintf
    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: 2707
      start: 2703
    functionDepth: 0
    functionLinenumber: 2703
    functionLinenumberEnd: 2707
    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:2729,1
    - Dst: pg_localtime
      Src: /src/postgres/src/backend/utils/error/elog.c:2731,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2734
      start: 2715
    functionDepth: 3
    functionLinenumber: 2715
    functionLinenumberEnd: 2734
    functionName: get_formatted_start_time
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 2
    functionsReached:
    - pg_strftime
    - pg_localtime
    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:2743,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - edata
    argTypes:
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2755
      start: 2739
    functionDepth: 1
    functionLinenumber: 2739
    functionLinenumberEnd: 2755
    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: 3
    BranchProfiles: []
    Callsites:
    - Dst: GetBackendTypeDesc
      Src: /src/postgres/src/backend/utils/error/elog.c:2772,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2775
      start: 2762
    functionDepth: 1
    functionLinenumber: 2762
    functionLinenumberEnd: 2775
    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: 2810
      start: 2784
    functionDepth: 0
    functionLinenumber: 2784
    functionLinenumberEnd: 2810
    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:2818,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - edata
    argTypes:
    - StringInfo
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2819
      start: 2815
    functionDepth: 1
    functionLinenumber: 2815
    functionLinenumberEnd: 2819
    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:2845,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/elog.c:2857,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/elog.c:2868,1
    - Dst: process_log_prefix_padding
      Src: /src/postgres/src/backend/utils/error/elog.c:2889,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:2901,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:2903,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:2905,1
    - Dst: appendStringInfoSpaces
      Src: /src/postgres/src/backend/utils/error/elog.c:2908,1
    - Dst: get_backend_type_for_log
      Src: /src/postgres/src/backend/utils/error/elog.c:2914,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:2917,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:2919,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:2928,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:2930,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:2932,1
    - Dst: appendStringInfoSpaces
      Src: /src/postgres/src/backend/utils/error/elog.c:2935,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:2944,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:2946,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:2948,1
    - Dst: appendStringInfoSpaces
      Src: /src/postgres/src/backend/utils/error/elog.c:2951,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/error/elog.c:2959,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:2961,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:2964,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:2968,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:2970,1
    - Dst: appendStringInfoSpaces
      Src: /src/postgres/src/backend/utils/error/elog.c:2983,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:2986,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:2988,1
    - Dst: appendStringInfoSpaces
      Src: /src/postgres/src/backend/utils/error/elog.c:2991,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:2997,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:2999,1
    - Dst: get_formatted_log_time
      Src: /src/postgres/src/backend/utils/error/elog.c:3004,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3007,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3009,1
    - Dst: time
      Src: /src/postgres/src/backend/utils/error/elog.c:3013,1
    - Dst: pg_strftime
      Src: /src/postgres/src/backend/utils/error/elog.c:3016,1
    - Dst: pg_localtime
      Src: /src/postgres/src/backend/utils/error/elog.c:3018,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3020,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3022,1
    - Dst: gettimeofday
      Src: /src/postgres/src/backend/utils/error/elog.c:3031,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/error/elog.c:3035,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3040,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3042,1
    - Dst: get_formatted_start_time
      Src: /src/postgres/src/backend/utils/error/elog.c:3047,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3050,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3052,1
    - Dst: get_ps_display
      Src: /src/postgres/src/backend/utils/error/elog.c:3061,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3063,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3065,1
    - Dst: appendStringInfoSpaces
      Src: /src/postgres/src/backend/utils/error/elog.c:3068,1
    - Dst: pg_getnameinfo_all
      Src: /src/postgres/src/backend/utils/error/elog.c:3083,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3098,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3100,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/utils/error/elog.c:3120,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3121,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:3122,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3125,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3130,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3133,1
    - Dst: appendStringInfoSpaces
      Src: /src/postgres/src/backend/utils/error/elog.c:3138,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3145,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3147,1
    - Dst: appendStringInfoSpaces
      Src: /src/postgres/src/backend/utils/error/elog.c:3150,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/error/elog.c:3167,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3169,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3172,1
    - Dst: appendStringInfoSpaces
      Src: /src/postgres/src/backend/utils/error/elog.c:3175,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3180,1
    - Dst: GetTopTransactionIdIfAny
      Src: /src/postgres/src/backend/utils/error/elog.c:3180,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3182,1
    - Dst: GetTopTransactionIdIfAny
      Src: /src/postgres/src/backend/utils/error/elog.c:3182,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3186,1
    - Dst: unpack_sql_state
      Src: /src/postgres/src/backend/utils/error/elog.c:3186,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3188,1
    - Dst: unpack_sql_state
      Src: /src/postgres/src/backend/utils/error/elog.c:3188,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3192,1
    - Dst: pgstat_get_my_query_id
      Src: /src/postgres/src/backend/utils/error/elog.c:3193,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3195,1
    - Dst: pgstat_get_my_query_id
      Src: /src/postgres/src/backend/utils/error/elog.c:3196,1
    CyclomaticComplexity: 90
    EdgeCount: 90
    ICount: 209
    argCount: 3
    argNames:
    - buf
    - format
    - edata
    argTypes:
    - StringInfo
    - char*
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3203
      start: 2824
    functionDepth: 4
    functionLinenumber: 2824
    functionLinenumberEnd: 3203
    functionName: log_status_format
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 1
    functionsReached:
    - GetTopTransactionIdIfAny
    - process_log_prefix_padding
    - snprintf
    - time
    - appendStringInfoSpaces
    - get_backend_type_for_log
    - get_ps_display
    - pgstat_get_my_query_id
    - psprintf
    - pfree
    - pg_getnameinfo_all
    - get_formatted_start_time
    - unpack_sql_state
    - get_formatted_log_time
    - pg_localtime
    - _
    - appendStringInfoString
    - gettimeofday
    - reset_formatted_start_time
    - appendStringInfo
    - appendStringInfoChar
    - appendBinaryStringInfo
    - pg_strftime
    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:3217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - sql_state
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3223
      start: 3209
    functionDepth: 1
    functionLinenumber: 3209
    functionLinenumberEnd: 3223
    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: 40
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3235,1
    - Dst: log_line_prefix
      Src: /src/postgres/src/backend/utils/error/elog.c:3237,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3238,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3238,1
    - Dst: error_severity
      Src: /src/postgres/src/backend/utils/error/elog.c:3238,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3241,1
    - Dst: unpack_sql_state
      Src: /src/postgres/src/backend/utils/error/elog.c:3241,1
    - Dst: append_with_tabs
      Src: /src/postgres/src/backend/utils/error/elog.c:3244,1
    - Dst: append_with_tabs
      Src: /src/postgres/src/backend/utils/error/elog.c:3246,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3246,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3249,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3249,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3252,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3252,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/elog.c:3255,1
    - Dst: log_line_prefix
      Src: /src/postgres/src/backend/utils/error/elog.c:3261,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3262,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3262,1
    - Dst: append_with_tabs
      Src: /src/postgres/src/backend/utils/error/elog.c:3263,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/elog.c:3264,1
    - Dst: log_line_prefix
      Src: /src/postgres/src/backend/utils/error/elog.c:3268,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3269,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3269,1
    - Dst: append_with_tabs
      Src: /src/postgres/src/backend/utils/error/elog.c:3270,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/elog.c:3271,1
    - Dst: log_line_prefix
      Src: /src/postgres/src/backend/utils/error/elog.c:3275,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3276,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3276,1
    - Dst: append_with_tabs
      Src: /src/postgres/src/backend/utils/error/elog.c:3277,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/elog.c:3278,1
    - Dst: log_line_prefix
      Src: /src/postgres/src/backend/utils/error/elog.c:3282,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3283,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3283,1
    - Dst: append_with_tabs
      Src: /src/postgres/src/backend/utils/error/elog.c:3284,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/elog.c:3285,1
    - Dst: log_line_prefix
      Src: /src/postgres/src/backend/utils/error/elog.c:3289,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3290,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3290,1
    - Dst: append_with_tabs
      Src: /src/postgres/src/backend/utils/error/elog.c:3291,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/elog.c:3292,1
    - Dst: log_line_prefix
      Src: /src/postgres/src/backend/utils/error/elog.c:3299,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3300,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3300,1
    - Dst: log_line_prefix
      Src: /src/postgres/src/backend/utils/error/elog.c:3306,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3307,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3307,1
    - Dst: log_line_prefix
      Src: /src/postgres/src/backend/utils/error/elog.c:3313,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3314,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3314,1
    - Dst: append_with_tabs
      Src: /src/postgres/src/backend/utils/error/elog.c:3315,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/elog.c:3316,1
    - Dst: check_log_of_query
      Src: /src/postgres/src/backend/utils/error/elog.c:3323,1
    - Dst: log_line_prefix
      Src: /src/postgres/src/backend/utils/error/elog.c:3325,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3326,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3326,1
    - Dst: append_with_tabs
      Src: /src/postgres/src/backend/utils/error/elog.c:3327,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/elog.c:3328,1
    - Dst: write_syslog
      Src: /src/postgres/src/backend/utils/error/elog.c:3368,1
    - Dst: write_eventlog
      Src: /src/postgres/src/backend/utils/error/elog.c:3376,1
    - Dst: write_csvlog
      Src: /src/postgres/src/backend/utils/error/elog.c:3389,1
    - Dst: write_jsonlog
      Src: /src/postgres/src/backend/utils/error/elog.c:3404,1
    - Dst: write_pipe_chunks
      Src: /src/postgres/src/backend/utils/error/elog.c:3424,1
    - Dst: pgwin32_is_service
      Src: /src/postgres/src/backend/utils/error/elog.c:3434,1
    - Dst: write_eventlog
      Src: /src/postgres/src/backend/utils/error/elog.c:3435,1
    - Dst: write_syslogger_file
      Src: /src/postgres/src/backend/utils/error/elog.c:3443,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:3446,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 122
    argCount: 1
    argNames:
    - edata
    argTypes:
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3447
      start: 3229
    functionDepth: 5
    functionLinenumber: 3229
    functionLinenumberEnd: 3447
    functionName: send_message_to_server_log
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 1
    functionsReached:
    - pfree
    - write_eventlog
    - appendStringInfo
    - append_with_tabs
    - appendStringInfoChar
    - appendStringInfoString
    - check_log_of_query
    - unpack_sql_state
    - write_jsonlog
    - log_line_prefix
    - write_csvlog
    - write_pipe_chunks
    - write_syslogger_file
    - error_severity
    - _
    - write_syslog
    - initStringInfo
    - pgwin32_is_service
    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:3473,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/error/elog.c:3476,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/error/elog.c:3493,1
    - Dst: write
      Src: /src/postgres/src/backend/utils/error/elog.c:3494,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/error/elog.c:3503,1
    - Dst: write
      Src: /src/postgres/src/backend/utils/error/elog.c:3504,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 3
    argNames:
    - data
    - len
    - dest
    argTypes:
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3506
      start: 3469
    functionDepth: 1
    functionLinenumber: 3469
    functionLinenumberEnd: 3506
    functionName: write_pipe_chunks
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 3
    functionsReached:
    - write
    - memcpy
    - Assert
    - 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:3523,1
    - Dst: pq_send_ascii_string
      Src: /src/postgres/src/backend/utils/error/elog.c:3524,1
    - Dst: pq_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:3526,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - buf
    - str
    argTypes:
    - StringInfo
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3527
      start: 3520
    functionDepth: 3
    functionLinenumber: 3520
    functionLinenumberEnd: 3527
    functionName: err_sendstring
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 0
    functionsReached:
    - in_error_recursion_trouble
    - pq_sendstring
    - pq_send_ascii_string
    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:3544,1
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/utils/error/elog.c:3552,1
    - Dst: pq_beginmessage
      Src: /src/postgres/src/backend/utils/error/elog.c:3554,1
    - Dst: error_severity
      Src: /src/postgres/src/backend/utils/error/elog.c:3556,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:3557,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:3558,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3558,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:3559,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:3560,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:3562,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:3563,1
    - Dst: unpack_sql_state
      Src: /src/postgres/src/backend/utils/error/elog.c:3563,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:3566,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:3568,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:3570,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3570,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:3574,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:3575,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:3582,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:3583,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:3588,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:3589,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:3594,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:3595,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:3600,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:3601,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:3606,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:3607,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:3612,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:3613,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:3618,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:3619,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/error/elog.c:3624,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:3625,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:3626,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/error/elog.c:3631,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:3632,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:3633,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:3638,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:3639,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:3644,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:3645,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/error/elog.c:3650,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:3651,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:3652,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:3657,1
    - Dst: err_sendstring
      Src: /src/postgres/src/backend/utils/error/elog.c:3658,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/error/elog.c:3661,1
    - Dst: pq_endmessage
      Src: /src/postgres/src/backend/utils/error/elog.c:3663,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3670,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/error/elog.c:3672,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3672,1
    - Dst: error_severity
      Src: /src/postgres/src/backend/utils/error/elog.c:3672,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3675,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/error/elog.c:3677,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3677,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/error/elog.c:3679,1
    - Dst: pq_putmessage_v2
      Src: /src/postgres/src/backend/utils/error/elog.c:3682,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/error/elog.c:3684,1
    - Dst: pq_flush
      Src: /src/postgres/src/backend/utils/error/elog.c:3695,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 88
    argCount: 1
    argNames:
    - edata
    argTypes:
    - ErrorData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3696
      start: 3532
    functionDepth: 4
    functionLinenumber: 3532
    functionLinenumberEnd: 3696
    functionName: send_message_to_frontend
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 1
    functionsReached:
    - pfree
    - pq_flush
    - err_sendstring
    - appendStringInfo
    - appendStringInfoChar
    - appendStringInfoString
    - PG_PROTOCOL_MAJOR
    - unpack_sql_state
    - snprintf
    - pq_putmessage_v2
    - error_severity
    - pq_beginmessage
    - _
    - initStringInfo
    - pq_endmessage
    - pq_sendbyte
    linkageType: ''
    returnType: void
    signature: void send_message_to_frontend(ErrorData *edata)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/error/elog.c:3722,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/error/elog.c:3726,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/error/elog.c:3729,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/error/elog.c:3732,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/error/elog.c:3736,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/error/elog.c:3739,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/error/elog.c:3742,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/error/elog.c:3745,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 1
    argNames:
    - elevel
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3753
      start: 3710
    functionDepth: 1
    functionLinenumber: 3710
    functionLinenumberEnd: 3753
    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:3769,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/error/elog.c:3771,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - buf
    - str
    argTypes:
    - StringInfo
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3773
      start: 3762
    functionDepth: 1
    functionLinenumber: 3762
    functionLinenumberEnd: 3773
    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: 2
    BranchProfiles: []
    Callsites:
    - Dst: _
      Src: /src/postgres/src/backend/utils/error/elog.c:3790,1
    - Dst: va_start
      Src: /src/postgres/src/backend/utils/error/elog.c:3792,1
    - Dst: vfprintf
      Src: /src/postgres/src/backend/utils/error/elog.c:3795,1
    - Dst: fflush
      Src: /src/postgres/src/backend/utils/error/elog.c:3796,1
    - Dst: vsnprintf
      Src: /src/postgres/src/backend/utils/error/elog.c:3798,1
    - Dst: pgwin32_is_service
      Src: /src/postgres/src/backend/utils/error/elog.c:3804,1
    - Dst: write_eventlog
      Src: /src/postgres/src/backend/utils/error/elog.c:3806,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/error/elog.c:3806,1
    - Dst: write_console
      Src: /src/postgres/src/backend/utils/error/elog.c:3811,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/error/elog.c:3811,1
    - Dst: fflush
      Src: /src/postgres/src/backend/utils/error/elog.c:3812,1
    - Dst: va_end
      Src: /src/postgres/src/backend/utils/error/elog.c:3815,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3816
      start: 3781
    functionDepth: 2
    functionLinenumber: 3781
    functionLinenumberEnd: 3816
    functionName: write_stderr
    functionSourceFile: /src/postgres/src/backend/utils/error/elog.c
    functionUses: 37
    functionsReached:
    - vsnprintf
    - write_eventlog
    - fflush
    - va_end
    - write_console
    - vfprintf
    - _
    - va_start
    - strlen
    - pgwin32_is_service
    linkageType: ''
    returnType: void
    signature: void write_stderr(const char *fmt,...)
  - 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:235,1
    - Dst: murmurhash64
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:235,1
    - Dst: hash_combine
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:237,1
    - Dst: murmurhash32
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - value
    - kind
    argTypes:
    - Datum
    - ResourceOwnerDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 221
    functionDepth: 2
    functionLinenumber: 221
    functionLinenumberEnd: 239
    functionName: hash_resource_elem
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 0
    functionsReached:
    - hash_combine
    - hash_combine64
    - murmurhash64
    - murmurhash32
    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:250,1
    - Dst: hash_resource_elem
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:253,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - owner
    - value
    - kind
    argTypes:
    - ResourceOwner
    - Datum
    - ResourceOwnerDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 244
    functionDepth: 3
    functionLinenumber: 244
    functionLinenumberEnd: 263
    functionName: ResourceOwnerAddToHash
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 0
    functionsReached:
    - hash_resource_elem
    - Assert
    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:276,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 281
    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:327,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:333,1
    - Dst: qsort
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:341,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 1
    argNames:
    - owner
    argTypes:
    - ResourceOwner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 291
    functionDepth: 1
    functionLinenumber: 291
    functionLinenumberEnd: 342
    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:358,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:359,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:367,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:398,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - owner
    - phase
    - printLeakWarnings
    argTypes:
    - ResourceOwner
    - ResourceReleasePhase
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 347
    functionDepth: 2
    functionLinenumber: 347
    functionLinenumberEnd: 405
    functionName: ResourceOwnerReleaseAll
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - ResourceOwnerDesc*::ReleaseResource
    - ResourceOwnerDesc*::DebugPrint
    - elog
    - DatumGetPointer
    - psprintf
    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:425,1
    - Dst: dlist_init
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:436,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - parent
    - name
    argTypes:
    - ResourceOwner
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 420
    functionDepth: 1
    functionLinenumber: 420
    functionLinenumberEnd: 439
    functionName: ResourceOwnerCreate
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 11
    functionsReached:
    - MemoryContextAllocZero
    - dlist_init
    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:459,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:480,1
    - Dst: RESOWNER_HASH_MAX_ITEMS
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:489,1
    - Dst: ResourceOwnerAddToHash
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:502,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:506,1
    - Dst: ResourceOwnerAddToHash
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:512,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:515,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - owner
    argTypes:
    - ResourceOwner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 451
    functionDepth: 4
    functionLinenumber: 451
    functionLinenumberEnd: 516
    functionName: ResourceOwnerEnlarge
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 9
    functionsReached:
    - pfree
    - Assert
    - MemoryContextAllocZero
    - RESOWNER_HASH_MAX_ITEMS
    - elog
    - ResourceOwnerAddToHash
    linkageType: ''
    returnType: void
    signature: void ResourceOwnerEnlarge(ResourceOwner owner)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:529,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:530,1
    - 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: elog
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:542,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - owner
    - value
    - kind
    argTypes:
    - ResourceOwner
    - Datum
    - ResourceOwnerDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 523
    functionDepth: 1
    functionLinenumber: 523
    functionLinenumberEnd: 550
    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:572,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:573,1
    - Dst: hash_resource_elem
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:597,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:621,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:622,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 3
    argNames:
    - owner
    - value
    - kind
    argTypes:
    - ResourceOwner
    - Datum
    - ResourceOwnerDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 563
    functionDepth: 3
    functionLinenumber: 563
    functionLinenumberEnd: 623
    functionName: ResourceOwnerForget
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 8
    functionsReached:
    - hash_resource_elem
    - elog
    - DatumGetPointer
    - Assert
    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:664,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:669,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - owner
    - phase
    - isCommit
    - isTopLevel
    argTypes:
    - ResourceOwner
    - ResourceReleasePhase
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 657
    functionDepth: 1
    functionLinenumber: 657
    functionLinenumberEnd: 675
    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:690,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:702,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:703,1
    - Dst: ResourceOwnerSort
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:717,1
    - Dst: ResourceOwnerReleaseAll
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:737,1
    - Dst: dlist_is_empty
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:739,1
    - Dst: dlist_head_node
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:741,1
    - Dst: pgaio_io_release_resowner
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:743,1
    - Dst: ProcReleaseLocks
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:757,1
    - Dst: ReleasePredicateLocks
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:758,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:771,1
    - Dst: LockReassignCurrentOwner
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:789,1
    - Dst: LockReleaseCurrentOwner
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:791,1
    - Dst: ResourceOwnerReleaseAll
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:799,1
    - Dst: ResourceReleaseCallbackItem*::callback
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:807,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 49
    argCount: 4
    argNames:
    - owner
    - phase
    - isCommit
    - isTopLevel
    argTypes:
    - ResourceOwner
    - ResourceReleasePhase
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 677
    functionDepth: 3
    functionLinenumber: 677
    functionLinenumberEnd: 811
    functionName: ResourceOwnerReleaseInternal
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 2
    functionsReached:
    - ProcReleaseLocks
    - Assert
    - ResourceOwnerReleaseInternal
    - LockReleaseCurrentOwner
    - ResourceReleaseCallbackItem*::callback
    - dlist_is_empty
    - LockReassignCurrentOwner
    - ReleasePredicateLocks
    - dlist_head_node
    - pgaio_io_release_resowner
    - ResourceOwnerSort
    - ResourceOwnerReleaseAll
    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:822,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:823,1
    - Dst: ResourceOwnerDesc*::ReleaseResource
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:843,1
    - Dst: ResourceOwnerDesc*::ReleaseResource
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:858,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - owner
    - kind
    argTypes:
    - ResourceOwner
    - ResourceOwnerDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 817
    functionDepth: 1
    functionLinenumber: 817
    functionLinenumberEnd: 862
    functionName: ResourceOwnerReleaseAllOfKind
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 0
    functionsReached:
    - elog
    - ResourceOwnerDesc*::ReleaseResource
    - Assert
    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:874,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:877,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:878,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:879,1
    - Dst: ResourceOwnerDelete
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:886,1
    - Dst: ResourceOwnerNewParent
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:893,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:897,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:898,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - owner
    argTypes:
    - ResourceOwner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 870
    functionDepth: 1
    functionLinenumber: 870
    functionLinenumberEnd: 899
    functionName: ResourceOwnerDelete
    functionSourceFile: /src/postgres/src/backend/utils/resowner/resowner.c
    functionUses: 12
    functionsReached:
    - pfree
    - Assert
    - 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: 908
      start: 904
    functionDepth: 0
    functionLinenumber: 904
    functionLinenumberEnd: 908
    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:940,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - owner
    - newparent
    argTypes:
    - ResourceOwner
    - ResourceOwner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 913
    functionDepth: 1
    functionLinenumber: 913
    functionLinenumberEnd: 950
    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:966,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - callback
    - arg
    argTypes:
    - ResourceReleaseCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 960
    functionDepth: 1
    functionLinenumber: 960
    functionLinenumberEnd: 972
    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:989,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - callback
    - arg
    argTypes:
    - ResourceReleaseCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 974
    functionDepth: 0
    functionLinenumber: 974
    functionLinenumberEnd: 993
    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:1001,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:1002,1
    - Dst: ResourceOwnerCreate
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:1003,1
    - Dst: on_shmem_exit
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:1010,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 998
    functionDepth: 2
    functionLinenumber: 998
    functionLinenumberEnd: 1011
    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:1025,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:1028,1
    - Dst: ResourceOwnerRelease
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:1031,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - isCommit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1037
      start: 1018
    functionDepth: 2
    functionLinenumber: 1018
    functionLinenumberEnd: 1037
    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:1048,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - code
    - arg
    argTypes:
    - int
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1043
    functionDepth: 3
    functionLinenumber: 1043
    functionLinenumberEnd: 1049
    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:1064,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - owner
    - locallock
    argTypes:
    - ResourceOwner
    - LOCALLOCK*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1076
      start: 1061
    functionDepth: 1
    functionLinenumber: 1061
    functionLinenumberEnd: 1076
    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:1089,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/resowner/resowner.c:1099,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - owner
    - locallock
    argTypes:
    - ResourceOwner
    - LOCALLOCK*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1101
      start: 1081
    functionDepth: 1
    functionLinenumber: 1081
    functionLinenumberEnd: 1101
    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:1106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - owner
    - ioh_node
    argTypes:
    - ResourceOwner
    - struct dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1103
    functionDepth: 2
    functionLinenumber: 1103
    functionLinenumberEnd: 1107
    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:1112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - owner
    - ioh_node
    argTypes:
    - ResourceOwner
    - struct dlist_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1113
      start: 1109
    functionDepth: 2
    functionLinenumber: 1109
    functionLinenumberEnd: 1113
    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_net_pton_ipv4
    - inet_cidr_pton_ipv6
    - inet_cidr_pton_ipv4
    - inet_net_pton_ipv6
    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:
    - assert
    - isxdigit
    - isdigit
    - pg_ascii_tolower
    - strchr
    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:
    - memset
    - getbits
    - getv4
    - memcpy
    - strchr
    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:
    - PG_ARGISNULL
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    - PG_RETURN_TEXT_P
    - cstring_to_text
    - format_type_extended
    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
    - bits16
    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:
    - IsTrueArrayType
    - printTypmod
    - NameStr
    - ReleaseSysCache
    - HeapTupleIsValid
    - quote_qualified_identifier
    - GETSTRUCT
    - pstrdup
    - SearchSysCache1
    - TypeIsVisible
    - elog
    - get_namespace_name_or_temp
    - ObjectIdGetDatum
    - psprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      format_type_extended(Oid type_oid, int32 typemod, bits16 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: 67
    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:
    - OidFunctionCall1
    - Assert
    - DatumGetCString
    - Int32GetDatum
    - psprintf
    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:
    - numeric_maximum_size
    - pg_encoding_max_length
    - GetDatabaseEncoding
    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: palloc
      Src: /src/postgres/src/backend/utils/adt/format_type.c:457,1
    - Dst: format_type_extended
      Src: /src/postgres/src/backend/utils/adt/format_type.c:463,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/format_type.c:465,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/format_type.c:470,1
    - Dst: strcat
      Src: /src/postgres/src/backend/utils/adt/format_type.c:476,1
    - Dst: strcat
      Src: /src/postgres/src/backend/utils/adt/format_type.c:479,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/format_type.c:483,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/format_type.c:483,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 446
    functionDepth: 3
    functionLinenumber: 446
    functionLinenumberEnd: 484
    functionName: oidvectortypes
    functionSourceFile: /src/postgres/src/backend/utils/adt/format_type.c
    functionUses: 0
    functionsReached:
    - strcat
    - PG_GETARG_POINTER
    - format_type_extended
    - PG_RETURN_TEXT_P
    - repalloc
    - palloc
    - cstring_to_text
    - strlen
    linkageType: ''
    returnType: Datum
    signature: Datum oidvectortypes(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ArrayGetIntegerTypmods
      Src: /src/postgres/src/backend/utils/adt/date.c:56,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:63,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:64,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:65,1
    - Dst: anytime_typmod_check
      Src: /src/postgres/src/backend/utils/adt/date.c:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - istz
    - ta
    argTypes:
    - bool
    - ArrayType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 50
    functionDepth: 2
    functionLinenumber: 50
    functionLinenumberEnd: 68
    functionName: anytime_typmodin
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ArrayGetIntegerTypmods
    - ereport
    - anytime_typmod_check
    - errcode
    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:75,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:76,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:77,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:81,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:82,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:83,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - istz
    - typmod
    argTypes:
    - bool
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 71
    functionDepth: 2
    functionLinenumber: 71
    functionLinenumberEnd: 90
    functionName: anytime_typmod_check
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - ereport
    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:99,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/date.c:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - istz
    - typmod
    argTypes:
    - bool
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 102
    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:116,1
    - Dst: ParseDateTime
      Src: /src/postgres/src/backend/utils/adt/date.c:131,1
    - Dst: DecodeDateTime
      Src: /src/postgres/src/backend/utils/adt/date.c:134,1
    - Dst: DateTimeParseError
      Src: /src/postgres/src/backend/utils/adt/date.c:138,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:139,1
    - Dst: GetEpochTime
      Src: /src/postgres/src/backend/utils/adt/date.c:148,1
    - Dst: DATE_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:152,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:153,1
    - Dst: DATE_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:156,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:157,1
    - Dst: DateTimeParseError
      Src: /src/postgres/src/backend/utils/adt/date.c:160,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:161,1
    - Dst: IS_VALID_JULIAN
      Src: /src/postgres/src/backend/utils/adt/date.c:165,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/date.c:166,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:167,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:168,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/date.c:170,1
    - Dst: IS_VALID_DATE
      Src: /src/postgres/src/backend/utils/adt/date.c:173,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/date.c:174,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:175,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:176,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:178,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 113
    functionDepth: 2
    functionLinenumber: 113
    functionLinenumberEnd: 179
    functionName: date_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_CSTRING
    - IS_VALID_JULIAN
    - errcode
    - DateTimeParseError
    - DATE_NOEND
    - ParseDateTime
    - ereturn
    - DecodeDateTime
    - PG_RETURN_NULL
    - date2j
    - IS_VALID_DATE
    - PG_RETURN_DATEADT
    - GetEpochTime
    - DATE_NOBEGIN
    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:187,1
    - Dst: DATE_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:193,1
    - Dst: EncodeSpecialDate
      Src: /src/postgres/src/backend/utils/adt/date.c:194,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/date.c:197,1
    - Dst: EncodeDateOnly
      Src: /src/postgres/src/backend/utils/adt/date.c:199,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/date.c:202,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/date.c:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 204
    functionName: date_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - EncodeSpecialDate
    - EncodeDateOnly
    - PG_RETURN_CSTRING
    - pstrdup
    - DATE_NOT_FINITE
    - j2date
    - PG_GETARG_DATEADT
    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:212,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/date.c:215,1
    - Dst: DATE_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:218,1
    - Dst: IS_VALID_DATE
      Src: /src/postgres/src/backend/utils/adt/date.c:220,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:221,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:222,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:223,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:225,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 209
    functionDepth: 2
    functionLinenumber: 209
    functionLinenumberEnd: 226
    functionName: date_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_POINTER
    - ereport
    - DATE_NOT_FINITE
    - IS_VALID_DATE
    - PG_RETURN_DATEADT
    - pq_getmsgint
    - errcode
    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:234,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/date.c:237,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/date.c:238,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/date.c:239,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/date.c:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 231
    functionDepth: 4
    functionLinenumber: 231
    functionLinenumberEnd: 240
    functionName: date_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - PG_RETURN_BYTEA_P
    - pq_sendint32
    - PG_GETARG_DATEADT
    - pq_begintypsend
    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:253,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:254,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:255,1
    - Dst: pg_neg_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/date.c:263,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:264,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:265,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:266,1
    - Dst: ValidateDate
      Src: /src/postgres/src/backend/utils/adt/date.c:271,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:274,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:275,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:276,1
    - Dst: IS_VALID_JULIAN
      Src: /src/postgres/src/backend/utils/adt/date.c:280,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:281,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:282,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:283,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/date.c:286,1
    - Dst: IS_VALID_DATE
      Src: /src/postgres/src/backend/utils/adt/date.c:289,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:290,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:291,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:292,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:295,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 245
    functionDepth: 2
    functionLinenumber: 245
    functionLinenumberEnd: 296
    functionName: make_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ValidateDate
    - IS_VALID_JULIAN
    - ereport
    - IS_VALID_DATE
    - date2j
    - pg_neg_s32_overflow
    - PG_GETARG_INT32
    - PG_RETURN_DATEADT
    - errcode
    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:304,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/date.c:305,1
    - Dst: DATE_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:306,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/date.c:307,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/date.c:309,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - dt
    - str
    argTypes:
    - DateADT
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 310
    functionName: EncodeSpecialDate
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 1
    functionsReached:
    - elog
    - DATE_IS_NOEND
    - DATE_IS_NOBEGIN
    - strcpy
    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:326,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/date.c:337,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 344
    functionName: GetSQLCurrentDate
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 1
    functionsReached:
    - date2j
    - GetCurrentDateTime
    linkageType: ''
    returnType: DateADT
    signature: DateADT GetSQLCurrentDate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTimeUsec
      Src: /src/postgres/src/backend/utils/adt/date.c:358,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/date.c:360,1
    - Dst: tm2timetz
      Src: /src/postgres/src/backend/utils/adt/date.c:361,1
    - Dst: AdjustTimeForTypmod
      Src: /src/postgres/src/backend/utils/adt/date.c:362,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - typmod
    argTypes:
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 364
    functionName: GetSQLCurrentTime
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 1
    functionsReached:
    - GetCurrentTimeUsec
    - palloc
    - tm2timetz
    - AdjustTimeForTypmod
    linkageType: ''
    returnType: TimeTzADT
    signature: 'TimeTzADT *

      GetSQLCurrentTime(int32 typmod)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTimeUsec
      Src: /src/postgres/src/backend/utils/adt/date.c:378,1
    - Dst: tm2time
      Src: /src/postgres/src/backend/utils/adt/date.c:380,1
    - Dst: AdjustTimeForTypmod
      Src: /src/postgres/src/backend/utils/adt/date.c:381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - typmod
    argTypes:
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 369
    functionDepth: 1
    functionLinenumber: 369
    functionLinenumberEnd: 383
    functionName: GetSQLLocalTime
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 1
    functionsReached:
    - GetCurrentTimeUsec
    - AdjustTimeForTypmod
    - 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:393,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:394,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:396,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 390
    functionDepth: 1
    functionLinenumber: 390
    functionLinenumberEnd: 397
    functionName: date_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_DATEADT
    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:402,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:403,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 399
    functionDepth: 1
    functionLinenumber: 399
    functionLinenumberEnd: 406
    functionName: date_ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_DATEADT
    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:411,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:412,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 408
    functionDepth: 1
    functionLinenumber: 408
    functionLinenumberEnd: 415
    functionName: date_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_DATEADT
    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:420,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:421,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 424
    functionName: date_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_DATEADT
    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:429,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:430,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:432,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 426
    functionDepth: 1
    functionLinenumber: 426
    functionLinenumberEnd: 433
    functionName: date_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_DATEADT
    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:438,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:439,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:441,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 435
    functionDepth: 1
    functionLinenumber: 435
    functionLinenumberEnd: 442
    functionName: date_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_DATEADT
    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:447,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:448,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:451,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:453,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:454,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 444
    functionDepth: 1
    functionLinenumber: 444
    functionLinenumberEnd: 455
    functionName: date_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_DATEADT
    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:460,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/date.c:463,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 464
    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:469,1
    - Dst: DateADTGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:479,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - underflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 466
    functionDepth: 2
    functionLinenumber: 466
    functionLinenumberEnd: 480
    functionName: date_decrement
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - DateADTGetDatum
    - DatumGetDateADT
    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:485,1
    - Dst: DateADTGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:495,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - overflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 482
    functionDepth: 2
    functionLinenumber: 482
    functionLinenumberEnd: 496
    functionName: date_increment
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - DateADTGetDatum
    - DatumGetDateADT
    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:501,1
    - Dst: DateADTGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:505,1
    - Dst: DateADTGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:506,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/date.c:508,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 498
    functionDepth: 2
    functionLinenumber: 498
    functionLinenumberEnd: 509
    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:514,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:514,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 511
    functionDepth: 2
    functionLinenumber: 511
    functionLinenumberEnd: 515
    functionName: hashdate
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - hash_uint32
    - PG_GETARG_DATEADT
    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:520,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:520,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/date.c:520,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 517
    functionDepth: 2
    functionLinenumber: 517
    functionLinenumberEnd: 521
    functionName: hashdateextended
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - hash_uint32_extended
    - PG_GETARG_DATEADT
    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:526,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:528,1
    - Dst: DATE_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:528,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 523
    functionDepth: 1
    functionLinenumber: 523
    functionLinenumberEnd: 529
    functionName: date_finite
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - DATE_NOT_FINITE
    - PG_RETURN_BOOL
    - PG_GETARG_DATEADT
    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:534,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:535,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:537,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 531
    functionDepth: 1
    functionLinenumber: 531
    functionLinenumberEnd: 538
    functionName: date_larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATEADT
    - PG_RETURN_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:543,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:544,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 540
    functionDepth: 1
    functionLinenumber: 540
    functionLinenumberEnd: 547
    functionName: date_smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATEADT
    - PG_RETURN_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:554,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:555,1
    - Dst: DATE_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:557,1
    - Dst: DATE_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:557,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:558,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:559,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:560,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:562,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 551
    functionDepth: 2
    functionLinenumber: 551
    functionLinenumberEnd: 563
    functionName: date_mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_INT32
    - ereport
    - DATE_NOT_FINITE
    - PG_GETARG_DATEADT
    - errcode
    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:571,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:572,1
    - Dst: DATE_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:575,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:576,1
    - Dst: IS_VALID_DATE
      Src: /src/postgres/src/backend/utils/adt/date.c:582,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:583,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:584,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:585,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:587,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 568
    functionDepth: 2
    functionLinenumber: 568
    functionLinenumberEnd: 588
    functionName: date_pli
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - ereport
    - DATE_NOT_FINITE
    - IS_VALID_DATE
    - PG_GETARG_INT32
    - PG_RETURN_DATEADT
    - PG_GETARG_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:595,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:596,1
    - Dst: DATE_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:599,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:600,1
    - Dst: IS_VALID_DATE
      Src: /src/postgres/src/backend/utils/adt/date.c:606,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:607,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:608,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:609,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:611,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 592
    functionDepth: 2
    functionLinenumber: 592
    functionLinenumberEnd: 612
    functionName: date_mii
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - ereport
    - DATE_NOT_FINITE
    - IS_VALID_DATE
    - PG_GETARG_INT32
    - PG_RETURN_DATEADT
    - PG_GETARG_DATEADT
    linkageType: ''
    returnType: Datum
    signature: Datum date_mii(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DATE_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:636,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:637,1
    - Dst: DATE_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:638,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:639,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:651,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:656,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:657,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:658,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - dateVal
    - overflow
    argTypes:
    - DateADT
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 628
    functionDepth: 2
    functionLinenumber: 628
    functionLinenumberEnd: 667
    functionName: date2timestamp_opt_overflow
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errmsg
    - TIMESTAMP_NOEND
    - TIMESTAMP_NOBEGIN
    - ereport
    - DATE_IS_NOEND
    - errcode
    - DATE_IS_NOBEGIN
    linkageType: ''
    returnType: Timestamp
    signature: Timestamp date2timestamp_opt_overflow(DateADT dateVal, int *overflow)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: date2timestamp_opt_overflow
      Src: /src/postgres/src/backend/utils/adt/date.c:675,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dateVal
    argTypes:
    - DateADT
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 672
    functionDepth: 3
    functionLinenumber: 672
    functionLinenumberEnd: 676
    functionName: date2timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date2timestamp_opt_overflow
    linkageType: ''
    returnType: TimestampTz
    signature: TimestampTz date2timestamp(DateADT dateVal)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: DATE_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:699,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:700,1
    - Dst: DATE_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:701,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:702,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:714,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:719,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:720,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:721,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/date.c:725,1
    - Dst: DetermineTimeZoneOffset
      Src: /src/postgres/src/backend/utils/adt/date.c:730,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:738,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:745,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:750,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:755,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:756,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:757,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 37
    argCount: 2
    argNames:
    - dateVal
    - overflow
    argTypes:
    - DateADT
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 688
    functionDepth: 2
    functionLinenumber: 688
    functionLinenumberEnd: 763
    functionName: date2timestamptz_opt_overflow
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errmsg
    - TIMESTAMP_NOEND
    - TIMESTAMP_NOBEGIN
    - IS_VALID_TIMESTAMP
    - DetermineTimeZoneOffset
    - ereport
    - DATE_IS_NOEND
    - j2date
    - errcode
    - DATE_IS_NOBEGIN
    linkageType: ''
    returnType: TimestampTz
    signature: TimestampTz date2timestamptz_opt_overflow(DateADT dateVal, int *overflow)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: date2timestamptz_opt_overflow
      Src: /src/postgres/src/backend/utils/adt/date.c:771,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dateVal
    argTypes:
    - DateADT
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 768
    functionDepth: 3
    functionLinenumber: 768
    functionLinenumberEnd: 772
    functionName: date2timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date2timestamptz_opt_overflow
    linkageType: ''
    returnType: TimestampTz
    signature: TimestampTz date2timestamptz(DateADT dateVal)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DATE_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:789,1
    - Dst: DATE_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:791,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - dateVal
    argTypes:
    - DateADT
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 784
    functionDepth: 1
    functionLinenumber: 784
    functionLinenumberEnd: 800
    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_opt_overflow
      Src: /src/postgres/src/backend/utils/adt/date.c:813,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:817,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/date.c:819,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:821,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - dateVal
    - dt2
    argTypes:
    - DateADT
    - Timestamp
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 807
    functionDepth: 3
    functionLinenumber: 807
    functionLinenumberEnd: 822
    functionName: date_cmp_timestamp_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - Assert
    - date2timestamp_opt_overflow
    - 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:827,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:828,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:830,1
    - Dst: date_cmp_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:830,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 824
    functionDepth: 4
    functionLinenumber: 824
    functionLinenumberEnd: 831
    functionName: date_eq_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - date_cmp_timestamp_internal
    - PG_RETURN_BOOL
    - PG_GETARG_DATEADT
    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:836,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:837,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:839,1
    - Dst: date_cmp_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:839,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 833
    functionDepth: 4
    functionLinenumber: 833
    functionLinenumberEnd: 840
    functionName: date_ne_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - date_cmp_timestamp_internal
    - PG_RETURN_BOOL
    - PG_GETARG_DATEADT
    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:845,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:846,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:848,1
    - Dst: date_cmp_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:848,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 842
    functionDepth: 4
    functionLinenumber: 842
    functionLinenumberEnd: 849
    functionName: date_lt_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - date_cmp_timestamp_internal
    - PG_RETURN_BOOL
    - PG_GETARG_DATEADT
    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:854,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:855,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:857,1
    - Dst: date_cmp_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:857,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 851
    functionDepth: 4
    functionLinenumber: 851
    functionLinenumberEnd: 858
    functionName: date_gt_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - date_cmp_timestamp_internal
    - PG_RETURN_BOOL
    - PG_GETARG_DATEADT
    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:863,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:864,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:866,1
    - Dst: date_cmp_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:866,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 867
      start: 860
    functionDepth: 4
    functionLinenumber: 860
    functionLinenumberEnd: 867
    functionName: date_le_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - date_cmp_timestamp_internal
    - PG_RETURN_BOOL
    - PG_GETARG_DATEADT
    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:872,1
    - Dst: PG_GETARG_TIMESTAMP
      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_timestamp_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_ge_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - date_cmp_timestamp_internal
    - PG_RETURN_BOOL
    - PG_GETARG_DATEADT
    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:881,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:882,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:884,1
    - Dst: date_cmp_timestamp_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_cmp_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_TIMESTAMP
    - date_cmp_timestamp_internal
    - PG_GETARG_DATEADT
    linkageType: ''
    returnType: Datum
    signature: Datum date_cmp_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: date2timestamptz_opt_overflow
      Src: /src/postgres/src/backend/utils/adt/date.c:893,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:897,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:902,1
    - Dst: timestamptz_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:905,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - dateVal
    - dt2
    argTypes:
    - DateADT
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 887
    functionDepth: 3
    functionLinenumber: 887
    functionLinenumberEnd: 906
    functionName: date_cmp_timestamptz_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date2timestamptz_opt_overflow
    - TIMESTAMP_IS_NOEND
    - TIMESTAMP_IS_NOBEGIN
    - timestamptz_cmp_internal
    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:911,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/date.c:912,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:914,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:914,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 908
    functionDepth: 4
    functionLinenumber: 908
    functionLinenumberEnd: 915
    functionName: date_eq_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date_cmp_timestamptz_internal
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_DATEADT
    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:920,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/date.c:921,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:923,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:923,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 917
    functionDepth: 4
    functionLinenumber: 917
    functionLinenumberEnd: 924
    functionName: date_ne_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date_cmp_timestamptz_internal
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_DATEADT
    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:929,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/date.c:930,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:932,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:932,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 926
    functionDepth: 4
    functionLinenumber: 926
    functionLinenumberEnd: 933
    functionName: date_lt_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date_cmp_timestamptz_internal
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_DATEADT
    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:938,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/date.c:939,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:941,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:941,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 942
      start: 935
    functionDepth: 4
    functionLinenumber: 935
    functionLinenumberEnd: 942
    functionName: date_gt_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date_cmp_timestamptz_internal
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_DATEADT
    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:947,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/date.c:948,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:950,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:950,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 951
      start: 944
    functionDepth: 4
    functionLinenumber: 944
    functionLinenumberEnd: 951
    functionName: date_le_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date_cmp_timestamptz_internal
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_DATEADT
    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:956,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/date.c:957,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:959,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:959,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 960
      start: 953
    functionDepth: 4
    functionLinenumber: 953
    functionLinenumberEnd: 960
    functionName: date_ge_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date_cmp_timestamptz_internal
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_DATEADT
    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:965,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/date.c:966,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:968,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:968,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 962
    functionDepth: 4
    functionLinenumber: 962
    functionLinenumberEnd: 969
    functionName: date_cmp_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - date_cmp_timestamptz_internal
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_DATEADT
    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:974,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:975,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:977,1
    - Dst: date_cmp_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:977,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 971
    functionDepth: 4
    functionLinenumber: 971
    functionLinenumberEnd: 978
    functionName: timestamp_eq_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date_cmp_timestamp_internal
    - PG_RETURN_BOOL
    - PG_GETARG_DATEADT
    - PG_GETARG_TIMESTAMP
    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:983,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:984,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:986,1
    - Dst: date_cmp_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:986,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 980
    functionDepth: 4
    functionLinenumber: 980
    functionLinenumberEnd: 987
    functionName: timestamp_ne_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date_cmp_timestamp_internal
    - PG_RETURN_BOOL
    - PG_GETARG_DATEADT
    - PG_GETARG_TIMESTAMP
    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:992,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:993,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:995,1
    - Dst: date_cmp_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:995,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 996
      start: 989
    functionDepth: 4
    functionLinenumber: 989
    functionLinenumberEnd: 996
    functionName: timestamp_lt_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date_cmp_timestamp_internal
    - PG_RETURN_BOOL
    - PG_GETARG_DATEADT
    - PG_GETARG_TIMESTAMP
    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:1001,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1002,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1004,1
    - Dst: date_cmp_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:1004,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1005
      start: 998
    functionDepth: 4
    functionLinenumber: 998
    functionLinenumberEnd: 1005
    functionName: timestamp_gt_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date_cmp_timestamp_internal
    - PG_RETURN_BOOL
    - PG_GETARG_DATEADT
    - PG_GETARG_TIMESTAMP
    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:1010,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1011,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1013,1
    - Dst: date_cmp_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:1013,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1014
      start: 1007
    functionDepth: 4
    functionLinenumber: 1007
    functionLinenumberEnd: 1014
    functionName: timestamp_le_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date_cmp_timestamp_internal
    - PG_RETURN_BOOL
    - PG_GETARG_DATEADT
    - PG_GETARG_TIMESTAMP
    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:1019,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1020,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1022,1
    - Dst: date_cmp_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:1022,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 1016
    functionDepth: 4
    functionLinenumber: 1016
    functionLinenumberEnd: 1023
    functionName: timestamp_ge_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date_cmp_timestamp_internal
    - PG_RETURN_BOOL
    - PG_GETARG_DATEADT
    - PG_GETARG_TIMESTAMP
    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:1028,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1029,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:1031,1
    - Dst: date_cmp_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:1031,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1032
      start: 1025
    functionDepth: 4
    functionLinenumber: 1025
    functionLinenumberEnd: 1032
    functionName: timestamp_cmp_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - date_cmp_timestamp_internal
    - PG_GETARG_DATEADT
    - PG_GETARG_TIMESTAMP
    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:1037,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1038,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1040,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:1040,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 1034
    functionDepth: 4
    functionLinenumber: 1034
    functionLinenumberEnd: 1041
    functionName: timestamptz_eq_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date_cmp_timestamptz_internal
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_DATEADT
    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:1046,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1047,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1049,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:1049,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1050
      start: 1043
    functionDepth: 4
    functionLinenumber: 1043
    functionLinenumberEnd: 1050
    functionName: timestamptz_ne_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date_cmp_timestamptz_internal
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_DATEADT
    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:1055,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1056,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1058,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:1058,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1052
    functionDepth: 4
    functionLinenumber: 1052
    functionLinenumberEnd: 1059
    functionName: timestamptz_lt_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date_cmp_timestamptz_internal
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_DATEADT
    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:1064,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1065,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1067,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:1067,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1061
    functionDepth: 4
    functionLinenumber: 1061
    functionLinenumberEnd: 1068
    functionName: timestamptz_gt_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date_cmp_timestamptz_internal
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_DATEADT
    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:1073,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1074,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1076,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:1076,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1077
      start: 1070
    functionDepth: 4
    functionLinenumber: 1070
    functionLinenumberEnd: 1077
    functionName: timestamptz_le_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date_cmp_timestamptz_internal
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_DATEADT
    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:1082,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1083,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1085,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:1085,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1086
      start: 1079
    functionDepth: 4
    functionLinenumber: 1079
    functionLinenumberEnd: 1086
    functionName: timestamptz_ge_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date_cmp_timestamptz_internal
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_DATEADT
    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:1091,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1092,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:1094,1
    - Dst: date_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:1094,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1095
      start: 1088
    functionDepth: 4
    functionLinenumber: 1088
    functionLinenumberEnd: 1095
    functionName: timestamptz_cmp_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - date_cmp_timestamptz_internal
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_DATEADT
    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:1106,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1107,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/date.c:1108,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1109,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1110,1
    - Dst: date2timestamp
      Src: /src/postgres/src/backend/utils/adt/date.c:1115,1
    - Dst: date2timestamp
      Src: /src/postgres/src/backend/utils/adt/date.c:1116,1
    - Dst: DirectFunctionCall5
      Src: /src/postgres/src/backend/utils/adt/date.c:1118,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1119,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1120,1
    - Dst: IntervalPGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1121,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1122,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1124
      start: 1103
    functionDepth: 4
    functionLinenumber: 1103
    functionLinenumberEnd: 1124
    functionName: in_range_date_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date2timestamp
    - BoolGetDatum
    - TimestampGetDatum
    - PG_GETARG_BOOL
    - PG_GETARG_INTERVAL_P
    - IntervalPGetDatum
    - PG_GETARG_DATEADT
    - DirectFunctionCall5
    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:1133,1
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1134,1
    - Dst: downcase_truncate_identifier
      Src: /src/postgres/src/backend/utils/adt/date.c:1143,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/date.c:1143,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/date.c:1144,1
    - Dst: DecodeUnits
      Src: /src/postgres/src/backend/utils/adt/date.c:1147,1
    - Dst: DecodeSpecial
      Src: /src/postgres/src/backend/utils/adt/date.c:1149,1
    - Dst: DATE_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:1151,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1163,1
    - Dst: DATE_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:1174,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/date.c:1175,1
    - Dst: DatumGetNumeric
      Src: /src/postgres/src/backend/utils/adt/date.c:1175,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/date.c:1175,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1176,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1177,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1178,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/date.c:1180,1
    - Dst: DatumGetNumeric
      Src: /src/postgres/src/backend/utils/adt/date.c:1180,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/date.c:1180,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1181,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1182,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1183,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:1185,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:1186,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:1187,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/date.c:1188,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/date.c:1193,1
    - Dst: date2isoweek
      Src: /src/postgres/src/backend/utils/adt/date.c:1210,1
    - Dst: date2isoyear
      Src: /src/postgres/src/backend/utils/adt/date.c:1250,1
    - Dst: j2day
      Src: /src/postgres/src/backend/utils/adt/date.c:1258,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/date.c:1264,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/date.c:1264,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:1268,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:1269,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:1270,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/date.c:1271,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:1284,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:1285,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:1286,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/date.c:1287,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:1293,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:1294,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:1295,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/date.c:1296,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/date.c:1300,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/date.c:1300,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 101
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1301
      start: 1130
    functionDepth: 4
    functionLinenumber: 1130
    functionLinenumberEnd: 1301
    functionName: extract_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - DecodeSpecial
    - PG_RETURN_NUMERIC
    - DATE_NOT_FINITE
    - date2j
    - DATE_IS_NOBEGIN
    - Int32GetDatum
    - DatumGetNumeric
    - CStringGetDatum
    - errmsg
    - format_type_be
    - date2isoyear
    - downcase_truncate_identifier
    - j2date
    - DirectFunctionCall3
    - VARSIZE_ANY_EXHDR
    - j2day
    - ObjectIdGetDatum
    - PG_GETARG_DATEADT
    - DecodeUnits
    - date2isoweek
    - PG_GETARG_TEXT_PP
    - ereport
    - PG_RETURN_NULL
    - int64_to_numeric
    - VARDATA_ANY
    - errcode
    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:1313,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/date.c:1314,1
    - Dst: date2timestamp
      Src: /src/postgres/src/backend/utils/adt/date.c:1317,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/date.c:1319,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1320,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1322
      start: 1310
    functionDepth: 4
    functionLinenumber: 1310
    functionLinenumberEnd: 1322
    functionName: date_pl_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date2timestamp
    - PointerGetDatum
    - TimestampGetDatum
    - DirectFunctionCall2
    - PG_GETARG_INTERVAL_P
    - PG_GETARG_DATEADT
    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:1333,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/date.c:1334,1
    - Dst: date2timestamp
      Src: /src/postgres/src/backend/utils/adt/date.c:1337,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/date.c:1339,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1340,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:1341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1342
      start: 1330
    functionDepth: 4
    functionLinenumber: 1330
    functionLinenumberEnd: 1342
    functionName: date_mi_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date2timestamp
    - PointerGetDatum
    - TimestampGetDatum
    - DirectFunctionCall2
    - PG_GETARG_INTERVAL_P
    - PG_GETARG_DATEADT
    linkageType: ''
    returnType: Datum
    signature: Datum date_mi_interval(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1350,1
    - Dst: date2timestamp
      Src: /src/postgres/src/backend/utils/adt/date.c:1353,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:1355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1356
      start: 1347
    functionDepth: 4
    functionLinenumber: 1347
    functionLinenumberEnd: 1356
    functionName: date_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - date2timestamp
    - PG_RETURN_TIMESTAMP
    - PG_GETARG_DATEADT
    linkageType: ''
    returnType: Datum
    signature: Datum date_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:1364,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:1370,1
    - Dst: DATE_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:1371,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:1372,1
    - Dst: DATE_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:1373,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/date.c:1376,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:1377,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:1378,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:1379,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/date.c:1381,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1384,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1385
      start: 1361
    functionDepth: 2
    functionLinenumber: 1361
    functionLinenumberEnd: 1385
    functionName: timestamp_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - TIMESTAMP_IS_NOBEGIN
    - PG_GETARG_TIMESTAMP
    - DATE_NOEND
    - timestamp2tm
    - ereport
    - TIMESTAMP_IS_NOEND
    - date2j
    - PG_RETURN_DATEADT
    - DATE_NOBEGIN
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_date(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1394,1
    - Dst: date2timestamptz
      Src: /src/postgres/src/backend/utils/adt/date.c:1397,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:1399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1400
      start: 1391
    functionDepth: 4
    functionLinenumber: 1391
    functionLinenumberEnd: 1400
    functionName: date_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TIMESTAMP
    - PG_GETARG_DATEADT
    - date2timestamptz
    linkageType: ''
    returnType: Datum
    signature: Datum date_timestamptz(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:1409,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:1416,1
    - Dst: DATE_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:1417,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:1418,1
    - Dst: DATE_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:1419,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/date.c:1422,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:1423,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:1424,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:1425,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/date.c:1427,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1430,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1431
      start: 1406
    functionDepth: 2
    functionLinenumber: 1406
    functionLinenumberEnd: 1431
    functionName: timestamptz_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - TIMESTAMP_IS_NOBEGIN
    - PG_GETARG_TIMESTAMP
    - DATE_NOEND
    - timestamp2tm
    - ereport
    - TIMESTAMP_IS_NOEND
    - date2j
    - PG_RETURN_DATEADT
    - DATE_NOBEGIN
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_date(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/date.c:1441,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/date.c:1443,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:1445,1
    - Dst: ParseDateTime
      Src: /src/postgres/src/backend/utils/adt/date.c:1460,1
    - Dst: DecodeTimeOnly
      Src: /src/postgres/src/backend/utils/adt/date.c:1463,1
    - Dst: DateTimeParseError
      Src: /src/postgres/src/backend/utils/adt/date.c:1467,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1468,1
    - Dst: tm2time
      Src: /src/postgres/src/backend/utils/adt/date.c:1471,1
    - Dst: AdjustTimeForTypmod
      Src: /src/postgres/src/backend/utils/adt/date.c:1472,1
    - Dst: PG_RETURN_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1474,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1475
      start: 1438
    functionDepth: 1
    functionLinenumber: 1438
    functionLinenumberEnd: 1475
    functionName: time_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - AdjustTimeForTypmod
    - DateTimeParseError
    - PG_RETURN_TIMEADT
    - DecodeTimeOnly
    - ParseDateTime
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    - tm2time
    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: 1486
      start: 1480
    functionDepth: 0
    functionLinenumber: 1480
    functionLinenumberEnd: 1486
    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: 1510
      start: 1491
    functionDepth: 0
    functionLinenumber: 1491
    functionLinenumberEnd: 1510
    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:1528,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/date.c:1530,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 11
    argCount: 3
    argNames:
    - hour
    - min
    - sec
    argTypes:
    - int
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1544
      start: 1515
    functionDepth: 1
    functionLinenumber: 1515
    functionLinenumberEnd: 1544
    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: 1563
      start: 1552
    functionDepth: 0
    functionLinenumber: 1552
    functionLinenumberEnd: 1563
    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:1568,1
    - Dst: time2tm
      Src: /src/postgres/src/backend/utils/adt/date.c:1575,1
    - Dst: EncodeTimeOnly
      Src: /src/postgres/src/backend/utils/adt/date.c:1576,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/date.c:1578,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/date.c:1579,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1580
      start: 1565
    functionDepth: 1
    functionLinenumber: 1565
    functionLinenumberEnd: 1580
    functionName: time_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - EncodeTimeOnly
    - PG_RETURN_CSTRING
    - pstrdup
    - PG_GETARG_TIMEADT
    - time2tm
    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:1588,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/date.c:1591,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:1593,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/date.c:1596,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1598,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:1599,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:1600,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:1601,1
    - Dst: AdjustTimeForTypmod
      Src: /src/postgres/src/backend/utils/adt/date.c:1603,1
    - Dst: PG_RETURN_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1605,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1606
      start: 1585
    functionDepth: 2
    functionLinenumber: 1585
    functionLinenumberEnd: 1606
    functionName: time_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errmsg
    - AdjustTimeForTypmod
    - PG_GETARG_POINTER
    - PG_RETURN_TIMEADT
    - ereport
    - PG_GETARG_OID
    - pq_getmsgint64
    - PG_GETARG_INT32
    - INT64CONST
    - errcode
    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:1614,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/date.c:1617,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/date.c:1618,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/date.c:1619,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/date.c:1619,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1620
      start: 1611
    functionDepth: 4
    functionLinenumber: 1611
    functionLinenumberEnd: 1620
    functionName: time_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - PG_GETARG_TIMEADT
    - PG_RETURN_BYTEA_P
    - pq_sendint64
    - pq_begintypsend
    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:1625,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:1627,1
    - Dst: anytime_typmodin
      Src: /src/postgres/src/backend/utils/adt/date.c:1627,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1628
      start: 1622
    functionDepth: 3
    functionLinenumber: 1622
    functionLinenumberEnd: 1628
    functionName: timetypmodin
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - anytime_typmodin
    - 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:1633,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/date.c:1635,1
    - Dst: anytime_typmodout
      Src: /src/postgres/src/backend/utils/adt/date.c:1635,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1636
      start: 1630
    functionDepth: 3
    functionLinenumber: 1630
    functionLinenumberEnd: 1636
    functionName: timetypmodout
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - anytime_typmodout
    - PG_RETURN_CSTRING
    - PG_GETARG_INT32
    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:1644,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:1645,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/date.c:1646,1
    - Dst: float_time_overflows
      Src: /src/postgres/src/backend/utils/adt/date.c:1650,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:1651,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:1652,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:1653,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/date.c:1658,1
    - Dst: PG_RETURN_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1660,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1661
      start: 1641
    functionDepth: 2
    functionLinenumber: 1641
    functionLinenumberEnd: 1661
    functionName: make_time
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_TIMEADT
    - ereport
    - PG_GETARG_FLOAT8
    - rint
    - PG_GETARG_INT32
    - float_time_overflows
    - errcode
    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:1672,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/date.c:1675,1
    - Dst: TemporalSimplify
      Src: /src/postgres/src/backend/utils/adt/date.c:1679,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/date.c:1682,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1683
      start: 1669
    functionDepth: 1
    functionLinenumber: 1669
    functionLinenumberEnd: 1683
    functionName: time_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_POINTER
    - IsA
    - TemporalSimplify
    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:1692,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:1693,1
    - Dst: AdjustTimeForTypmod
      Src: /src/postgres/src/backend/utils/adt/date.c:1697,1
    - Dst: PG_RETURN_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1699,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1700
      start: 1689
    functionDepth: 1
    functionLinenumber: 1689
    functionLinenumberEnd: 1700
    functionName: time_scale
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - AdjustTimeForTypmod
    - PG_GETARG_TIMEADT
    - PG_RETURN_TIMEADT
    - PG_GETARG_INT32
    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:1713,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1714,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1715,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1716,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1717,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1718,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1719,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1723,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1724,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1725,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1726,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1727,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1728,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1729,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:1734,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - time
    - typmod
    argTypes:
    - TimeADT*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1741
      start: 1709
    functionDepth: 1
    functionLinenumber: 1709
    functionLinenumberEnd: 1741
    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:1747,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1748,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1750,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1751
      start: 1744
    functionDepth: 1
    functionLinenumber: 1744
    functionLinenumberEnd: 1751
    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:1756,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1757,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1759,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1760
      start: 1753
    functionDepth: 1
    functionLinenumber: 1753
    functionLinenumberEnd: 1760
    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:1765,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1766,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1768,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1769
      start: 1762
    functionDepth: 1
    functionLinenumber: 1762
    functionLinenumberEnd: 1769
    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:1774,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1775,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1777,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1778
      start: 1771
    functionDepth: 1
    functionLinenumber: 1771
    functionLinenumberEnd: 1778
    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:1783,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1784,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1786,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1787
      start: 1780
    functionDepth: 1
    functionLinenumber: 1780
    functionLinenumberEnd: 1787
    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:1792,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1793,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1795,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1796
      start: 1789
    functionDepth: 1
    functionLinenumber: 1789
    functionLinenumberEnd: 1796
    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:1801,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1802,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:1805,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:1807,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:1808,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1809
      start: 1798
    functionDepth: 1
    functionLinenumber: 1798
    functionLinenumberEnd: 1809
    functionName: time_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_TIMEADT
    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:1814,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1815
      start: 1811
    functionDepth: 3
    functionLinenumber: 1811
    functionLinenumberEnd: 1815
    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:1820,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1821
      start: 1817
    functionDepth: 3
    functionLinenumber: 1817
    functionLinenumberEnd: 1821
    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:1826,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1827,1
    - Dst: PG_RETURN_TIMEADT
      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_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:1835,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1836,1
    - Dst: PG_RETURN_TIMEADT
      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_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:1854,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/date.c:1855,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/date.c:1856,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/date.c:1857,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1858,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1859,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1860,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1861,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1876,1
    - Dst: TIMEADT_GT
      Src: /src/postgres/src/backend/utils/adt/date.c:1883,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1896,1
    - Dst: TIMEADT_GT
      Src: /src/postgres/src/backend/utils/adt/date.c:1903,1
    - Dst: TIMEADT_GT
      Src: /src/postgres/src/backend/utils/adt/date.c:1916,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1923,1
    - Dst: TIMEADT_LT
      Src: /src/postgres/src/backend/utils/adt/date.c:1924,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1925,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1927,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1933,1
    - Dst: TIMEADT_LT
      Src: /src/postgres/src/backend/utils/adt/date.c:1935,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1939,1
    - Dst: TIMEADT_LT
      Src: /src/postgres/src/backend/utils/adt/date.c:1940,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1941,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1943,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1949,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1958,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:1959,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1964
      start: 1847
    functionDepth: 1
    functionLinenumber: 1847
    functionLinenumberEnd: 1964
    functionName: overlaps_time
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - PG_RETURN_BOOL
    - PG_ARGISNULL
    - TIMEADT_GT
    - PG_RETURN_NULL
    - TIMEADT_LT
    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: 1865
      start: 1863
    functionDepth: 0
    functionLinenumber: 1863
    functionLinenumberEnd: 1865
    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: 1867
      start: 1865
    functionDepth: 0
    functionLinenumber: 1865
    functionLinenumberEnd: 1867
    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:1972,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:1978,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:1979,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/date.c:1981,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:1982,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:1983,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:1984,1
    - Dst: PG_RETURN_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:1993,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1994
      start: 1969
    functionDepth: 2
    functionLinenumber: 1969
    functionLinenumberEnd: 1994
    functionName: timestamp_time
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - timestamp2tm
    - TIMESTAMP_NOT_FINITE
    - PG_RETURN_TIMEADT
    - ereport
    - PG_RETURN_NULL
    - PG_GETARG_TIMESTAMP
    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:2002,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:2009,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2010,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/date.c:2012,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2013,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2014,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2015,1
    - Dst: PG_RETURN_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:2024,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2025
      start: 1999
    functionDepth: 2
    functionLinenumber: 1999
    functionLinenumberEnd: 2025
    functionName: timestamptz_time
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - timestamp2tm
    - TIMESTAMP_NOT_FINITE
    - PG_RETURN_TIMEADT
    - ereport
    - PG_RETURN_NULL
    - PG_GETARG_TIMESTAMP
    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:2033,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:2034,1
    - Dst: date2timestamp
      Src: /src/postgres/src/backend/utils/adt/date.c:2037,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:2038,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:2041,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2042,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2043,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2044,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:2047,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2048
      start: 2030
    functionDepth: 4
    functionLinenumber: 2030
    functionLinenumberEnd: 2048
    functionName: datetime_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - date2timestamp
    - PG_RETURN_TIMESTAMP
    - IS_VALID_TIMESTAMP
    - TIMESTAMP_NOT_FINITE
    - ereport
    - PG_GETARG_TIMEADT
    - PG_GETARG_DATEADT
    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:2056,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/date.c:2059,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2065,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2066
      start: 2053
    functionDepth: 1
    functionLinenumber: 2053
    functionLinenumberEnd: 2066
    functionName: time_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMEADT
    - palloc
    - PG_RETURN_INTERVAL_P
    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:2079,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:2082,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2083,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2084,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2085,1
    - Dst: PG_RETURN_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:2091,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2092
      start: 2076
    functionDepth: 2
    functionLinenumber: 2076
    functionLinenumberEnd: 2092
    functionName: interval_time
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_TIMEADT
    - ereport
    - INTERVAL_NOT_FINITE
    - PG_GETARG_INTERVAL_P
    - errcode
    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:2100,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:2101,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/date.c:2104,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2111
      start: 2097
    functionDepth: 1
    functionLinenumber: 2097
    functionLinenumberEnd: 2111
    functionName: time_mi_time
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMEADT
    - palloc
    - PG_RETURN_INTERVAL_P
    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:2119,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2120,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:2123,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2124,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2125,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2126,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:2130,1
    - Dst: PG_RETURN_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:2133,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2134
      start: 2116
    functionDepth: 2
    functionLinenumber: 2116
    functionLinenumberEnd: 2134
    functionName: time_pl_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_TIMEADT
    - ereport
    - PG_GETARG_TIMEADT
    - INTERVAL_NOT_FINITE
    - PG_GETARG_INTERVAL_P
    - INT64CONST
    - errcode
    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:2142,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2143,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:2146,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2147,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2148,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2149,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:2153,1
    - Dst: PG_RETURN_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:2156,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2157
      start: 2139
    functionDepth: 2
    functionLinenumber: 2139
    functionLinenumberEnd: 2157
    functionName: time_mi_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_TIMEADT
    - ereport
    - PG_GETARG_TIMEADT
    - INTERVAL_NOT_FINITE
    - PG_GETARG_INTERVAL_P
    - INT64CONST
    - errcode
    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:2165,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:2166,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2167,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2168,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2169,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2178,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2179,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2180,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/date.c:2191,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2192,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2195,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2197,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2198
      start: 2162
    functionDepth: 2
    functionLinenumber: 2162
    functionLinenumberEnd: 2198
    functionName: in_range_time_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_BOOL
    - ereport
    - PG_GETARG_TIMEADT
    - pg_add_s64_overflow
    - PG_GETARG_BOOL
    - PG_GETARG_INTERVAL_P
    - errcode
    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:2207,1
    - Dst: PG_GETARG_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:2208,1
    - Dst: downcase_truncate_identifier
      Src: /src/postgres/src/backend/utils/adt/date.c:2214,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/date.c:2214,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/date.c:2215,1
    - Dst: DecodeUnits
      Src: /src/postgres/src/backend/utils/adt/date.c:2218,1
    - Dst: DecodeSpecial
      Src: /src/postgres/src/backend/utils/adt/date.c:2220,1
    - Dst: time2tm
      Src: /src/postgres/src/backend/utils/adt/date.c:2228,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:2233,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/date.c:2242,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/date.c:2242,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:2242,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/date.c:2244,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/date.c:2253,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/date.c:2253,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:2253,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/date.c:2255,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2278,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2279,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2280,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/date.c:2281,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/date.c:2288,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/date.c:2288,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/date.c:2290,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2294,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2295,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2296,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/date.c:2297,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/date.c:2302,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/date.c:2302,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/date.c:2304,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 54
    argCount: 1
    argNames:
    - retnumeric
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2305
      start: 2204
    functionDepth: 4
    functionLinenumber: 2204
    functionLinenumberEnd: 2305
    functionName: time_part_common
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - DecodeSpecial
    - errmsg
    - int64_div_fast_to_numeric
    - PG_GETARG_TEXT_PP
    - format_type_be
    - ereport
    - PG_RETURN_NUMERIC
    - PG_GETARG_TIMEADT
    - downcase_truncate_identifier
    - time2tm
    - int64_to_numeric
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - PG_RETURN_FLOAT8
    - INT64CONST
    - errcode
    - DecodeUnits
    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:2310,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2311
      start: 2307
    functionDepth: 5
    functionLinenumber: 2307
    functionLinenumberEnd: 2311
    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:2316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2317
      start: 2313
    functionDepth: 5
    functionLinenumber: 2313
    functionLinenumberEnd: 2317
    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: 2335
      start: 2327
    functionDepth: 0
    functionLinenumber: 2327
    functionLinenumberEnd: 2335
    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:2340,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/date.c:2342,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:2344,1
    - Dst: ParseDateTime
      Src: /src/postgres/src/backend/utils/adt/date.c:2359,1
    - Dst: DecodeTimeOnly
      Src: /src/postgres/src/backend/utils/adt/date.c:2362,1
    - Dst: DateTimeParseError
      Src: /src/postgres/src/backend/utils/adt/date.c:2366,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2368,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/date.c:2371,1
    - Dst: tm2timetz
      Src: /src/postgres/src/backend/utils/adt/date.c:2372,1
    - Dst: AdjustTimeForTypmod
      Src: /src/postgres/src/backend/utils/adt/date.c:2373,1
    - Dst: PG_RETURN_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2375,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2376
      start: 2337
    functionDepth: 2
    functionLinenumber: 2337
    functionLinenumberEnd: 2376
    functionName: timetz_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - AdjustTimeForTypmod
    - DateTimeParseError
    - DecodeTimeOnly
    - ParseDateTime
    - PG_RETURN_TIMETZADT_P
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    - palloc
    - tm2timetz
    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:2381,1
    - Dst: timetz2tm
      Src: /src/postgres/src/backend/utils/adt/date.c:2389,1
    - Dst: EncodeTimeOnly
      Src: /src/postgres/src/backend/utils/adt/date.c:2390,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/date.c:2392,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/date.c:2393,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2394
      start: 2378
    functionDepth: 1
    functionLinenumber: 2378
    functionLinenumberEnd: 2394
    functionName: timetz_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - timetz2tm
    - EncodeTimeOnly
    - PG_RETURN_CSTRING
    - pstrdup
    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:2402,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/date.c:2405,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:2407,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/date.c:2410,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/date.c:2412,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:2414,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2415,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2416,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2417,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/date.c:2419,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2423,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2424,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2425,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: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2430
      start: 2399
    functionDepth: 2
    functionLinenumber: 2399
    functionLinenumberEnd: 2430
    functionName: timetz_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errmsg
    - AdjustTimeForTypmod
    - PG_GETARG_POINTER
    - pq_getmsgint
    - ereport
    - PG_RETURN_TIMETZADT_P
    - PG_GETARG_OID
    - pq_getmsgint64
    - PG_GETARG_INT32
    - palloc
    - INT64CONST
    - errcode
    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:2438,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/date.c:2441,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/date.c:2442,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/date.c:2443,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2444,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/date.c:2444,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2445
      start: 2435
    functionDepth: 4
    functionLinenumber: 2435
    functionLinenumberEnd: 2445
    functionName: timetz_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - pq_endtypsend
    - PG_RETURN_BYTEA_P
    - pq_sendint32
    - pq_sendint64
    - pq_begintypsend
    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:2450,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:2452,1
    - Dst: anytime_typmodin
      Src: /src/postgres/src/backend/utils/adt/date.c:2452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2453
      start: 2447
    functionDepth: 3
    functionLinenumber: 2447
    functionLinenumberEnd: 2453
    functionName: timetztypmodin
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - anytime_typmodin
    - 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:2458,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/date.c:2460,1
    - Dst: anytime_typmodout
      Src: /src/postgres/src/backend/utils/adt/date.c:2460,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2461
      start: 2455
    functionDepth: 3
    functionLinenumber: 2455
    functionLinenumberEnd: 2461
    functionName: timetztypmodout
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - anytime_typmodout
    - PG_RETURN_CSTRING
    - PG_GETARG_INT32
    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: 2483
      start: 2467
    functionDepth: 0
    functionLinenumber: 2467
    functionLinenumberEnd: 2483
    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:2492,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:2493,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/date.c:2496,1
    - Dst: AdjustTimeForTypmod
      Src: /src/postgres/src/backend/utils/adt/date.c:2501,1
    - Dst: PG_RETURN_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2504
      start: 2489
    functionDepth: 2
    functionLinenumber: 2489
    functionLinenumberEnd: 2504
    functionName: timetz_scale
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - AdjustTimeForTypmod
    - PG_RETURN_TIMETZADT_P
    - PG_GETARG_INT32
    - palloc
    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: 2532
      start: 2507
    functionDepth: 0
    functionLinenumber: 2507
    functionLinenumberEnd: 2532
    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:2537,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2538,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2540,1
    - Dst: timetz_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:2540,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2541
      start: 2534
    functionDepth: 1
    functionLinenumber: 2534
    functionLinenumberEnd: 2541
    functionName: timetz_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - PG_RETURN_BOOL
    - timetz_cmp_internal
    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:2546,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2547,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2549,1
    - Dst: timetz_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:2549,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2550
      start: 2543
    functionDepth: 1
    functionLinenumber: 2543
    functionLinenumberEnd: 2550
    functionName: timetz_ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - PG_RETURN_BOOL
    - timetz_cmp_internal
    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:2555,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2556,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2558,1
    - Dst: timetz_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:2558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2559
      start: 2552
    functionDepth: 1
    functionLinenumber: 2552
    functionLinenumberEnd: 2559
    functionName: timetz_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - PG_RETURN_BOOL
    - timetz_cmp_internal
    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:2564,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2565,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2567,1
    - Dst: timetz_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:2567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2568
      start: 2561
    functionDepth: 1
    functionLinenumber: 2561
    functionLinenumberEnd: 2568
    functionName: timetz_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - PG_RETURN_BOOL
    - timetz_cmp_internal
    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:2573,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2574,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2576,1
    - Dst: timetz_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:2576,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2577
      start: 2570
    functionDepth: 1
    functionLinenumber: 2570
    functionLinenumberEnd: 2577
    functionName: timetz_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - PG_RETURN_BOOL
    - timetz_cmp_internal
    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:2582,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2583,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2585,1
    - Dst: timetz_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:2585,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2586
      start: 2579
    functionDepth: 1
    functionLinenumber: 2579
    functionLinenumberEnd: 2586
    functionName: timetz_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - PG_RETURN_BOOL
    - timetz_cmp_internal
    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:2591,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2592,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/date.c:2594,1
    - Dst: timetz_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:2594,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2595
      start: 2588
    functionDepth: 1
    functionLinenumber: 2588
    functionLinenumberEnd: 2595
    functionName: timetz_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - timetz_cmp_internal
    - 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:2600,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/adt/date.c:2607,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/date.c:2607,1
    - Dst: Int64GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/date.c:2608,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/adt/date.c:2609,1
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/utils/adt/date.c:2609,1
    - Dst: PG_RETURN_UINT32
      Src: /src/postgres/src/backend/utils/adt/date.c:2610,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2611
      start: 2597
    functionDepth: 2
    functionLinenumber: 2597
    functionLinenumberEnd: 2611
    functionName: timetz_hash
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - PG_RETURN_UINT32
    - DatumGetUInt32
    - hash_uint32
    - DirectFunctionCall1
    - Int64GetDatumFast
    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:2616,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/date.c:2617,1
    - Dst: DatumGetUInt64
      Src: /src/postgres/src/backend/utils/adt/date.c:2621,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/date.c:2621,1
    - Dst: Int64GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/date.c:2622,1
    - Dst: DatumGetUInt64
      Src: /src/postgres/src/backend/utils/adt/date.c:2624,1
    - Dst: hash_uint32_extended
      Src: /src/postgres/src/backend/utils/adt/date.c:2624,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/utils/adt/date.c:2625,1
    - Dst: PG_RETURN_UINT64
      Src: /src/postgres/src/backend/utils/adt/date.c:2626,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2627
      start: 2613
    functionDepth: 2
    functionLinenumber: 2613
    functionLinenumberEnd: 2627
    functionName: timetz_hash_extended
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - PG_RETURN_UINT64
    - hash_uint32_extended
    - DatumGetUInt64
    - DatumGetInt64
    - DirectFunctionCall2
    - PG_GETARG_DATUM
    - Int64GetDatumFast
    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:2632,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2633,1
    - Dst: timetz_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:2636,1
    - Dst: PG_RETURN_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2640,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2641
      start: 2629
    functionDepth: 1
    functionLinenumber: 2629
    functionLinenumberEnd: 2641
    functionName: timetz_larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - PG_RETURN_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:2646,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2647,1
    - Dst: timetz_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:2650,1
    - Dst: PG_RETURN_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2654,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2655
      start: 2643
    functionDepth: 1
    functionLinenumber: 2643
    functionLinenumberEnd: 2655
    functionName: timetz_smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - PG_RETURN_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:2663,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2664,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:2667,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2668,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2669,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2670,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/date.c:2672,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:2676,1
    - Dst: PG_RETURN_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2681,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2682
      start: 2660
    functionDepth: 2
    functionLinenumber: 2660
    functionLinenumberEnd: 2682
    functionName: timetz_pl_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - errmsg
    - ereport
    - PG_RETURN_TIMETZADT_P
    - INTERVAL_NOT_FINITE
    - PG_GETARG_INTERVAL_P
    - palloc
    - INT64CONST
    - errcode
    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:2690,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2691,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:2694,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2695,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2696,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2697,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/date.c:2699,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:2703,1
    - Dst: PG_RETURN_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2708,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2709
      start: 2687
    functionDepth: 2
    functionLinenumber: 2687
    functionLinenumberEnd: 2709
    functionName: timetz_mi_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - errmsg
    - ereport
    - PG_RETURN_TIMETZADT_P
    - INTERVAL_NOT_FINITE
    - PG_GETARG_INTERVAL_P
    - palloc
    - INT64CONST
    - errcode
    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:2717,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2718,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2719,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2720,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2721,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2730,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2731,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2732,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/date.c:2743,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2744,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2748,1
    - Dst: timetz_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:2748,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2750,1
    - Dst: timetz_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/date.c:2750,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2751
      start: 2714
    functionDepth: 2
    functionLinenumber: 2714
    functionLinenumberEnd: 2751
    functionName: in_range_timetz_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - errmsg
    - PG_RETURN_BOOL
    - ereport
    - pg_add_s64_overflow
    - timetz_cmp_internal
    - PG_GETARG_BOOL
    - PG_GETARG_INTERVAL_P
    - errcode
    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:2766,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/date.c:2767,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/date.c:2768,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/date.c:2769,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2770,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2771,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2772,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2773,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2788,1
    - Dst: TIMETZ_GT
      Src: /src/postgres/src/backend/utils/adt/date.c:2795,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2808,1
    - Dst: TIMETZ_GT
      Src: /src/postgres/src/backend/utils/adt/date.c:2815,1
    - Dst: TIMETZ_GT
      Src: /src/postgres/src/backend/utils/adt/date.c:2828,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2835,1
    - Dst: TIMETZ_LT
      Src: /src/postgres/src/backend/utils/adt/date.c:2836,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2837,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2839,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2845,1
    - Dst: TIMETZ_LT
      Src: /src/postgres/src/backend/utils/adt/date.c:2847,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2851,1
    - Dst: TIMETZ_LT
      Src: /src/postgres/src/backend/utils/adt/date.c:2852,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2853,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2855,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2861,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2870,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/date.c:2871,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2876
      start: 2759
    functionDepth: 1
    functionLinenumber: 2759
    functionLinenumberEnd: 2876
    functionName: overlaps_timetz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - TIMETZ_GT
    - PG_RETURN_BOOL
    - PG_ARGISNULL
    - PG_RETURN_NULL
    - TIMETZ_LT
    - PG_GETARG_DATUM
    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: 2777
      start: 2775
    functionDepth: 0
    functionLinenumber: 2775
    functionLinenumberEnd: 2777
    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: 2779
      start: 2777
    functionDepth: 0
    functionLinenumber: 2777
    functionLinenumberEnd: 2779
    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:2882,1
    - Dst: PG_RETURN_TIMEADT
      Src: /src/postgres/src/backend/utils/adt/date.c:2888,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2889
      start: 2879
    functionDepth: 1
    functionLinenumber: 2879
    functionLinenumberEnd: 2889
    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:2895,1
    - Dst: GetCurrentDateTime
      Src: /src/postgres/src/backend/utils/adt/date.c:2902,1
    - Dst: time2tm
      Src: /src/postgres/src/backend/utils/adt/date.c:2903,1
    - Dst: DetermineTimeZoneOffset
      Src: /src/postgres/src/backend/utils/adt/date.c:2904,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/date.c:2906,1
    - Dst: PG_RETURN_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2911,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2912
      start: 2892
    functionDepth: 1
    functionLinenumber: 2892
    functionLinenumberEnd: 2912
    functionName: time_timetz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - DetermineTimeZoneOffset
    - PG_GETARG_TIMEADT
    - PG_RETURN_TIMETZADT_P
    - GetCurrentDateTime
    - palloc
    - time2tm
    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:2921,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:2928,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/date.c:2929,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/date.c:2931,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2932,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2933,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2934,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/date.c:2936,1
    - Dst: tm2timetz
      Src: /src/postgres/src/backend/utils/adt/date.c:2938,1
    - Dst: PG_RETURN_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2940,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2941
      start: 2918
    functionDepth: 2
    functionLinenumber: 2918
    functionLinenumberEnd: 2941
    functionName: timestamptz_timetz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - timestamp2tm
    - TIMESTAMP_NOT_FINITE
    - ereport
    - PG_RETURN_TIMETZADT_P
    - PG_RETURN_NULL
    - palloc
    - tm2timetz
    - PG_GETARG_TIMESTAMP
    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:2953,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2954,1
    - Dst: DATE_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:2957,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/date.c:2958,1
    - Dst: DATE_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:2959,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/date.c:2960,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2969,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2970,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2971,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:2978,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:2979,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:2980,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:2981,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/date.c:2984,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2985
      start: 2950
    functionDepth: 2
    functionLinenumber: 2950
    functionLinenumberEnd: 2985
    functionName: datetimetz_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - errcode
    - TIMESTAMP_NOEND
    - TIMESTAMP_NOBEGIN
    - errmsg
    - PG_RETURN_TIMESTAMP
    - IS_VALID_TIMESTAMP
    - ereport
    - DATE_IS_NOEND
    - PG_GETARG_DATEADT
    - DATE_IS_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:2994,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:2995,1
    - Dst: downcase_truncate_identifier
      Src: /src/postgres/src/backend/utils/adt/date.c:3001,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/date.c:3001,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/date.c:3002,1
    - Dst: DecodeUnits
      Src: /src/postgres/src/backend/utils/adt/date.c:3005,1
    - Dst: DecodeSpecial
      Src: /src/postgres/src/backend/utils/adt/date.c:3007,1
    - Dst: timetz2tm
      Src: /src/postgres/src/backend/utils/adt/date.c:3016,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:3033,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/date.c:3042,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/date.c:3042,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:3042,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/date.c:3044,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/date.c:3053,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/date.c:3053,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:3053,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/date.c:3055,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:3074,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:3075,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:3076,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/date.c:3077,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/date.c:3088,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/date.c:3088,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:3088,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/date.c:3090,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:3094,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:3095,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:3096,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/date.c:3097,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/date.c:3102,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/date.c:3102,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/date.c:3104,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 59
    argCount: 1
    argNames:
    - retnumeric
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3105
      start: 2991
    functionDepth: 4
    functionLinenumber: 2991
    functionLinenumberEnd: 3105
    functionName: timetz_part_common
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - DecodeSpecial
    - errmsg
    - timetz2tm
    - int64_div_fast_to_numeric
    - PG_GETARG_TEXT_PP
    - format_type_be
    - ereport
    - PG_RETURN_NUMERIC
    - downcase_truncate_identifier
    - int64_to_numeric
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - PG_RETURN_FLOAT8
    - INT64CONST
    - errcode
    - DecodeUnits
    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:3111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3112
      start: 3108
    functionDepth: 5
    functionLinenumber: 3108
    functionLinenumberEnd: 3112
    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:3117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3118
      start: 3114
    functionDepth: 5
    functionLinenumber: 3114
    functionLinenumberEnd: 3118
    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:3127,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:3128,1
    - Dst: text_to_cstring_buffer
      Src: /src/postgres/src/backend/utils/adt/date.c:3139,1
    - Dst: DecodeTimezoneName
      Src: /src/postgres/src/backend/utils/adt/date.c:3141,1
    - Dst: GetCurrentTransactionStartTimestamp
      Src: /src/postgres/src/backend/utils/adt/date.c:3151,1
    - Dst: DetermineTimeZoneAbbrevOffsetTS
      Src: /src/postgres/src/backend/utils/adt/date.c:3154,1
    - Dst: GetCurrentTransactionStartTimestamp
      Src: /src/postgres/src/backend/utils/adt/date.c:3159,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/date.c:3163,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:3164,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:3165,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:3166,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/date.c:3169,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:3173,1
    - Dst: PG_RETURN_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:3180,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3181
      start: 3124
    functionDepth: 2
    functionLinenumber: 3124
    functionLinenumberEnd: 3181
    functionName: timetz_zone
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - errmsg
    - DecodeTimezoneName
    - DetermineTimeZoneAbbrevOffsetTS
    - timestamp2tm
    - PG_GETARG_TEXT_PP
    - ereport
    - PG_RETURN_TIMETZADT_P
    - GetCurrentTransactionStartTimestamp
    - text_to_cstring_buffer
    - palloc
    - INT64CONST
    - errcode
    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:3189,1
    - Dst: PG_GETARG_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:3190,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/date.c:3194,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:3195,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:3196,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:3197,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/date.c:3198,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/date.c:3198,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:3199,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/date.c:3202,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/date.c:3203,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/date.c:3204,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/date.c:3205,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/date.c:3205,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:3206,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/date.c:3210,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/date.c:3214,1
    - Dst: PG_RETURN_TIMETZADT_P
      Src: /src/postgres/src/backend/utils/adt/date.c:3221,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3222
      start: 3186
    functionDepth: 2
    functionLinenumber: 3186
    functionLinenumberEnd: 3222
    functionName: timetz_izone
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMETZADT_P
    - errmsg
    - DatumGetCString
    - ereport
    - PointerGetDatum
    - PG_RETURN_TIMETZADT_P
    - INTERVAL_NOT_FINITE
    - PG_GETARG_INTERVAL_P
    - palloc
    - DirectFunctionCall1
    - INT64CONST
    - errcode
    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:3232,1
    - Dst: pg_get_timezone_name
      Src: /src/postgres/src/backend/utils/adt/date.c:3233,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/date.c:3234,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/date.c:3234,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/date.c:3236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3237
      start: 3229
    functionDepth: 1
    functionLinenumber: 3229
    functionLinenumberEnd: 3237
    functionName: timetz_at_local
    functionSourceFile: /src/postgres/src/backend/utils/adt/date.c
    functionUses: 0
    functionsReached:
    - pg_get_timezone_name
    - PointerGetDatum
    - DirectFunctionCall2
    - PG_GETARG_DATUM
    - cstring_to_text
    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:
    - CALLED_AS_TRIGGER
    - errmsg
    - TRIGGER_FIRED_BEFORE
    - TRIGGER_FIRED_FOR_ROW
    - memcmp
    - ereport
    - PointerGetDatum
    - TRIGGER_FIRED_BY_UPDATE
    - HeapTupleHeaderGetNatts
    - errcode
    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
      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
    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:
    - errmsg
    - t_iseq
    - isdigit
    - strtol
    - ereturn
    - errcode
    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
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:262,1
    - Dst: pg_mblen
      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:
    - t_iseq
    - pg_mblen
    - pg_strncasecmp
    - t_isalnum
    - isspace
    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
      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:
    - errmsg
    - parse_phrase_operator
    - t_iseq
    - SOFT_ERROR_OCCURRED
    - pg_mblen
    - gettoken_tsvector
    - ereturn
    - get_modifiers
    - reset_tsvector_parser
    - isspace
    - errcode
    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
      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:
    - t_iseq
    - SOFT_ERROR_OCCURRED
    - pg_mblen
    - parse_or_operator
    - gettoken_tsvector
    - ISOPERATOR
    - reset_tsvector_parser
    - isspace
    - pushStop
    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
      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
    - lcons
    - palloc0
    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
      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:
    - errmsg
    - lcons
    - palloc0
    - ereturn
    - errcode
    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:
    - errmsg
    - COMP_LEGACY_CRC32
    - FIN_LEGACY_CRC32
    - pushValue_internal
    - INIT_LEGACY_CRC32
    - ereturn
    - memcpy
    - repalloc
    - errcode
    linkageType: ''
    returnType: void
    signature: void pushValue(TSQueryParserState state, char *strval, int lenval,
      int16 weight, bool prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      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:
    - lcons
    - palloc0
    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
    - Datum
    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:
    - check_stack_depth
    - cleanOpStack
    - errmsg
    - SOFT_ERROR_OCCURRED
    - makepol
    - TSQueryParserState::gettoken
    - errsave
    - pushOpStack
    - pushval
    - errcode
    linkageType: ''
    returnType: void
    signature: "void makepol(TSQueryParserState state,\n\t\tPushFunction pushval,\n\t\tDatum
      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:
    - check_stack_depth
    - elog
    - 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
    - Datum
    - 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:
    - list_length
    - pfree
    - GETQUERY
    - foreach
    - init_tsvector_parser
    - findoprnd
    - memcpy
    - GETOPERAND
    - errmsg
    - SOFT_ERROR_OCCURRED
    - close_tsvector_parser
    - IsA
    - cleanup_tsquery_stopwords
    - elog
    - ereturn
    - palloc
    - lfirst
    - SET_VARSIZE
    - Assert
    - makepol
    - TSQUERY_TOO_BIG
    - ereport
    - palloc0
    - COMPUTESIZE
    - errcode
    linkageType: ''
    returnType: TSQuery
    signature: "TSQuery parse_tsquery(char *buf,\n\t\t\t  PushFunction pushval,\n\t\t\t
      \ Datum 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:
    - Datum
    - 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(Datum 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
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:959,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:
    - PG_GETARG_CSTRING
    - parse_tsquery
    - PointerGetDatum
    - 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: COPYCHAR
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1017,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1019,1
    - Dst: QO_PRIORITY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1060,1
    - Dst: RESIZEBUF
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1064,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1065,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1066,1
    - Dst: RESIZEBUF
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1068,1
    - Dst: infix
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1074,1
    - Dst: RESIZEBUF
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1077,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1078,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1079,1
    - Dst: QO_PRIORITY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1085,1
    - Dst: RESIZEBUF
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1096,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1097,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1098,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1104,1
    - Dst: infix
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1107,1
    - Dst: infix
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1111,1
    - Dst: RESIZEBUF
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1114,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1118,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1121,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1125,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1127,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1131,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1133,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1134,1
    - Dst: RESIZEBUF
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1138,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1139,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1140,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 105
    argCount: 3
    argNames:
    - in
    - parentPriority
    - rightPhraseOp
    argTypes:
    - INFIX*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 990
    functionDepth: 1
    functionLinenumber: 990
    functionLinenumberEnd: 1143
    functionName: infix
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 1
    functionsReached:
    - check_stack_depth
    - pfree
    - t_iseq
    - palloc
    - pg_mblen
    - QO_PRIORITY
    - COPYCHAR
    - pg_database_encoding_max_length
    - infix
    - elog
    - sprintf
    - RESIZEBUF
    - strchr
    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:1148,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1153,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1156,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1158,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1160,1
    - Dst: GETOPERAND
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1162,1
    - Dst: infix
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1163,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1165,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1166,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1167
      start: 1145
    functionDepth: 1
    functionLinenumber: 1145
    functionLinenumberEnd: 1167
    functionName: tsqueryout
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TSQUERY
    - PG_FREE_IF_COPY
    - GETQUERY
    - PG_RETURN_CSTRING
    - infix
    - GETOPERAND
    - palloc
    - PG_RETURN_POINTER
    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:1191,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1194,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1196,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1198,1
    - Dst: pq_sendint8
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1201,1
    - Dst: pq_sendint8
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1206,1
    - Dst: pq_sendint8
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1207,1
    - Dst: pq_sendstring
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1208,1
    - Dst: GETOPERAND
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1208,1
    - Dst: pq_sendint8
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1211,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1213,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1216,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1221,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1223,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1223,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1224
      start: 1188
    functionDepth: 4
    functionLinenumber: 1188
    functionLinenumberEnd: 1224
    functionName: tsquerysend
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TSQUERY
    - PG_FREE_IF_COPY
    - GETQUERY
    - GETOPERAND
    - pq_endtypsend
    - pq_sendint8
    - PG_RETURN_BYTEA_P
    - pq_sendint16
    - elog
    - pq_sendint32
    - pq_sendstring
    - pq_begintypsend
    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:1229,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1240,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1242,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1245,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1249,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1251,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1256,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1267,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1268,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1269,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1270,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1275,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1278,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1281,1
    - Dst: INIT_LEGACY_CRC32
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1285,1
    - Dst: COMP_LEGACY_CRC32
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1286,1
    - Dst: FIN_LEGACY_CRC32
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1287,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1307,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1309,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1312,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1316,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1319,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1325,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1326,1
    - Dst: GETOPERAND
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1327,1
    - Dst: findoprnd
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1333,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1336,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1343,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1349,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1351,1
    - Dst: GETOPERAND
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1351,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1353,1
    - Dst: PG_RETURN_TSQUERY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1355,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 63
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1356
      start: 1226
    functionDepth: 2
    functionLinenumber: 1226
    functionLinenumberEnd: 1356
    functionName: tsqueryrecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 0
    functionsReached:
    - pq_getmsgstring
    - strlen
    - pfree
    - GETQUERY
    - INIT_LEGACY_CRC32
    - PG_RETURN_TSQUERY
    - findoprnd
    - memcpy
    - GETOPERAND
    - COMP_LEGACY_CRC32
    - FIN_LEGACY_CRC32
    - PG_GETARG_POINTER
    - elog
    - repalloc
    - palloc
    - SET_VARSIZE
    - Assert
    - palloc0
    - 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:1365,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1373,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1374,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1375,1
    - Dst: clean_NOT
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1378,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1378,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1382,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1388,1
    - Dst: GETOPERAND
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1390,1
    - Dst: infix
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1391,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1392,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1393,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1396,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/tsquery.c:1398,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1399
      start: 1362
    functionDepth: 1
    functionLinenumber: 1362
    functionLinenumberEnd: 1399
    functionName: tsquerytree
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery.c
    functionUses: 0
    functionsReached:
    - clean_NOT
    - PG_GETARG_TSQUERY
    - pfree
    - PG_FREE_IF_COPY
    - GETQUERY
    - infix
    - PG_RETURN_TEXT_P
    - GETOPERAND
    - palloc
    - cstring_to_text
    - SET_VARSIZE
    - PG_RETURN_POINTER
    - cstring_to_text_with_len
    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: 240
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 240
    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:253,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:256,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:257,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - encoding_name
    argTypes:
    - xmlChar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 250
    functionDepth: 2
    functionLinenumber: 250
    functionLinenumberEnd: 261
    functionName: xmlChar_to_encoding
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pg_char_to_encoding
    - errcode
    - ereport
    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:276,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/xml.c:281,1
    - Dst: xml_parse
      Src: /src/postgres/src/backend/utils/adt/xml.c:288,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/xml.c:288,1
    - Dst: xmlFreeDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:291,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:293,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:295,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 272
    functionDepth: 1
    functionLinenumber: 272
    functionLinenumberEnd: 298
    functionName: xml_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - xml_parse
    - GetDatabaseEncoding
    - NO_XML_SUPPORT
    - PG_RETURN_XML_P
    - cstring_to_text
    - xmlFreeDoc
    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:314,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/xml.c:317,1
    - Dst: parse_xml_decl
      Src: /src/postgres/src/backend/utils/adt/xml.c:322,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:327,1
    - Dst: print_xml_decl
      Src: /src/postgres/src/backend/utils/adt/xml.c:329,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:339,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/xml.c:341,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:346,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:347,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:348,1
    - Dst: errdetail_for_xml_code
      Src: /src/postgres/src/backend/utils/adt/xml.c:349,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - x
    - target_encoding
    argTypes:
    - xmltype*
    - pg_enc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 311
    functionDepth: 3
    functionLinenumber: 311
    functionLinenumberEnd: 352
    functionName: xml_out_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - pfree
    - errcode
    - print_xml_decl
    - appendStringInfoString
    - parse_xml_decl
    - errmsg_internal
    - ereport
    - errdetail_for_xml_code
    - initStringInfo
    - text_to_cstring
    - strlen
    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:358,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/xml.c:366,1
    - Dst: xml_out_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 355
    functionDepth: 4
    functionLinenumber: 355
    functionLinenumberEnd: 367
    functionName: xml_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xml_out_internal
    - PG_RETURN_CSTRING
    - PG_GETARG_XML_P
    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:374,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: 370
    functionDepth: 3
    functionLinenumber: 370
    functionLinenumberEnd: 434
    functionName: xml_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xmlChar_to_encoding
    - pfree
    - pq_getmsgbytes
    - xml_parse
    - NO_XML_SUPPORT
    - PG_GETARG_POINTER
    - parse_xml_decl
    - PG_RETURN_XML_P
    - VARDATA
    - pg_any_to_server
    - memcpy
    - palloc
    - cstring_to_text
    - SET_VARSIZE
    - xmlFreeDoc
    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:
    - pfree
    - strlen
    - pq_endtypsend
    - xml_out_internal
    - pg_get_client_encoding
    - PG_RETURN_BYTEA_P
    - pq_begintypsend
    - PG_GETARG_XML_P
    - pq_sendtext
    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: 2
    functionLinenumber: 458
    functionLinenumberEnd: 462
    functionName: appendStringInfoText
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - appendBinaryStringInfo
    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:
    - xmlBufferLength
    - xmlBufferContent
    - cstring_to_text_with_len
    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: 3
    functionLinenumber: 490
    functionLinenumberEnd: 523
    functionName: xmlcomment
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - errmsg
    - initStringInfo
    - appendStringInfoText
    - NO_XML_SUPPORT
    - PG_GETARG_TEXT_PP
    - appendStringInfoString
    - PG_RETURN_XML_P
    - ereport
    - stringinfo_to_xmltype
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - errcode
    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:
    - xml_ereport
    - PG_RE_THROW
    - PG_END_TRY
    - xml_text2xmlChar
    - xmlEncodeSpecialChars
    - PG_TRY
    - NO_XML_SUPPORT
    - PG_GETARG_TEXT_PP
    - PG_CATCH
    - PG_RETURN_XML_P
    - xmlStrlen
    - pg_xml_done
    - xmlFree
    - cstring_to_text_with_len
    - pg_xml_init
    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:
    - xmlStrcmp
    - pfree
    - print_xml_decl
    - DatumGetXmlP
    - text_to_cstring
    - appendBinaryStringInfo
    - NO_XML_SUPPORT
    - appendStringInfoString
    - parse_xml_decl
    - VARSIZE
    - stringinfo_to_xmltype
    - PointerGetDatum
    - initStringInfo
    - lfirst
    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: 464
    functionsReached:
    - lfirst
    - xmlStrcmp
    - pfree
    - DatumGetXmlP
    - appendStringInfoString
    - parse_xml_decl
    - VARSIZE
    - PointerGetDatum
    - text_to_cstring
    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:
    - list_make2
    - PG_RETURN_XML_P
    - PG_ARGISNULL
    - xmlconcat
    - PG_RETURN_NULL
    - PG_GETARG_XML_P
    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_GETARG_TEXT_PP
    - PG_RETURN_XML_P
    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_xml_init
      Src: /src/postgres/src/backend/utils/adt/xml.c:730,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:732,1
    - Dst: xmlBufferCreate
      Src: /src/postgres/src/backend/utils/adt/xml.c:737,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:740,1
    - Dst: parse_xml_decl
      Src: /src/postgres/src/backend/utils/adt/xml.c:744,1
    - Dst: xml_text2xmlChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:744,1
    - Dst: xmlSaveToBuffer
      Src: /src/postgres/src/backend/utils/adt/xml.c:753,1
    - Dst: xmlSaveToBuffer
      Src: /src/postgres/src/backend/utils/adt/xml.c:756,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:760,1
    - Dst: xmlSaveDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:766,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:767,1
    - Dst: xmlNewNode
      Src: /src/postgres/src/backend/utils/adt/xml.c:782,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:784,1
    - Dst: xmlDocSetRootElement
      Src: /src/postgres/src/backend/utils/adt/xml.c:791,1
    - Dst: xmlFreeNode
      Src: /src/postgres/src/backend/utils/adt/xml.c:793,1
    - Dst: xmlAddChildList
      Src: /src/postgres/src/backend/utils/adt/xml.c:795,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:797,1
    - Dst: xmlNewDocText
      Src: /src/postgres/src/backend/utils/adt/xml.c:807,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:809,1
    - Dst: xmlSaveTree
      Src: /src/postgres/src/backend/utils/adt/xml.c:817,1
    - Dst: xmlFreeNode
      Src: /src/postgres/src/backend/utils/adt/xml.c:819,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:820,1
    - Dst: xmlSaveTree
      Src: /src/postgres/src/backend/utils/adt/xml.c:825,1
    - Dst: xmlFreeNode
      Src: /src/postgres/src/backend/utils/adt/xml.c:827,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:828,1
    - Dst: xmlFreeNode
      Src: /src/postgres/src/backend/utils/adt/xml.c:833,1
    - Dst: xmlSaveClose
      Src: /src/postgres/src/backend/utils/adt/xml.c:836,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:839,1
    - Dst: xmlBufferContent
      Src: /src/postgres/src/backend/utils/adt/xml.c:848,1
    - Dst: xmlBufferLength
      Src: /src/postgres/src/backend/utils/adt/xml.c:849,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/xml.c:855,1
    - Dst: xmlBuffer_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:858,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/utils/adt/xml.c:860,1
    - Dst: xmlSaveClose
      Src: /src/postgres/src/backend/utils/adt/xml.c:863,1
    - Dst: xmlBufferFree
      Src: /src/postgres/src/backend/utils/adt/xml.c:865,1
    - Dst: xmlFreeDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:867,1
    - Dst: pg_xml_done
      Src: /src/postgres/src/backend/utils/adt/xml.c:869,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/utils/adt/xml.c:871,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:873,1
    - Dst: xmlBufferFree
      Src: /src/postgres/src/backend/utils/adt/xml.c:875,1
    - Dst: xmlFreeDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:876,1
    - Dst: pg_xml_done
      Src: /src/postgres/src/backend/utils/adt/xml.c:878,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:882,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 83
    argCount: 3
    argNames:
    - data
    - xmloption_arg
    - indent
    argTypes:
    - xmltype*
    - XmlOptionType
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 677
    functionDepth: 2
    functionLinenumber: 677
    functionLinenumberEnd: 885
    functionName: xmltotext_with_options
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - xml_text2xmlChar
    - xml_parse
    - parse_xml_decl
    - xmlSaveDoc
    - xmlSaveClose
    - xmlSaveToBuffer
    - pg_xml_done
    - xmlAddChildList
    - xmlBufferCreate
    - xmlFreeDoc
    - cstring_to_text_with_len
    - xml_ereport
    - PG_RE_THROW
    - GetDatabaseEncoding
    - xmlFreeNode
    - xmlSaveTree
    - xmlBufferLength
    - xmlBufferFree
    - errmsg
    - xmlBuffer_to_xmltype
    - xmlDocSetRootElement
    - xmlBufferContent
    - PG_END_TRY
    - NO_XML_SUPPORT
    - PG_TRY
    - PG_CATCH
    - ereport
    - xmlNewDocText
    - xmlNewNode
    - errcode
    - pg_xml_init
    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:913,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/adt/xml.c:915,1
    - Dst: map_sql_value_to_xml_value
      Src: /src/postgres/src/backend/utils/adt/xml.c:921,1
    - Dst: exprType
      Src: /src/postgres/src/backend/utils/adt/xml.c:922,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/xml.c:924,1
    - Dst: foreach
      Src: /src/postgres/src/backend/utils/adt/xml.c:930,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/adt/xml.c:932,1
    - Dst: map_sql_value_to_xml_value
      Src: /src/postgres/src/backend/utils/adt/xml.c:938,1
    - Dst: exprType
      Src: /src/postgres/src/backend/utils/adt/xml.c:939,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/xml.c:941,1
    - Dst: pg_xml_init
      Src: /src/postgres/src/backend/utils/adt/xml.c:946,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:948,1
    - Dst: xmlBufferCreate
      Src: /src/postgres/src/backend/utils/adt/xml.c:950,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:952,1
    - Dst: xmlNewTextWriterMemory
      Src: /src/postgres/src/backend/utils/adt/xml.c:954,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:956,1
    - Dst: xmlTextWriterStartElement
      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: forboth
      Src: /src/postgres/src/backend/utils/adt/xml.c:964,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/adt/xml.c:966,1
    - Dst: strVal
      Src: /src/postgres/src/backend/utils/adt/xml.c:967,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/adt/xml.c:967,1
    - Dst: xmlTextWriterWriteAttribute
      Src: /src/postgres/src/backend/utils/adt/xml.c:971,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:975,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/adt/xml.c:982,1
    - Dst: xmlTextWriterWriteRaw
      Src: /src/postgres/src/backend/utils/adt/xml.c:984,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:986,1
    - Dst: xmlTextWriterEndElement
      Src: /src/postgres/src/backend/utils/adt/xml.c:990,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:992,1
    - Dst: xmlFreeTextWriter
      Src: /src/postgres/src/backend/utils/adt/xml.c:996,1
    - Dst: xmlBuffer_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:999,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/utils/adt/xml.c:1001,1
    - Dst: xmlFreeTextWriter
      Src: /src/postgres/src/backend/utils/adt/xml.c:1004,1
    - Dst: xmlBufferFree
      Src: /src/postgres/src/backend/utils/adt/xml.c:1006,1
    - Dst: pg_xml_done
      Src: /src/postgres/src/backend/utils/adt/xml.c:1008,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/utils/adt/xml.c:1010,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:1012,1
    - Dst: xmlBufferFree
      Src: /src/postgres/src/backend/utils/adt/xml.c:1014,1
    - Dst: pg_xml_done
      Src: /src/postgres/src/backend/utils/adt/xml.c:1016,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:1020,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: 1023
      start: 888
    functionDepth: 6
    functionLinenumber: 888
    functionLinenumberEnd: 1023
    functionName: xmlelement
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - map_sql_value_to_xml_value
    - xmlNewTextWriterMemory
    - pg_xml_done
    - xmlTextWriterStartElement
    - xmlBufferCreate
    - forboth
    - exprType
    - xml_ereport
    - PG_RE_THROW
    - foreach
    - xmlTextWriterEndElement
    - xmlBufferFree
    - xmlFreeTextWriter
    - xmlBuffer_to_xmltype
    - lappend
    - strVal
    - xmlTextWriterWriteAttribute
    - lfirst
    - PG_END_TRY
    - NO_XML_SUPPORT
    - PG_TRY
    - xmlTextWriterWriteRaw
    - PG_CATCH
    - pg_xml_init
    linkageType: ''
    returnType: xmltype
    signature: "xmltype *\nxmlelement(XmlExpr *xexpr,\n\t\t   Datum *named_argvalue,
      bool *named_argnull,\n\t\t   Datum *argvalue, bool *argnull)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/adt/xml.c:982,1
    - Dst: xmlTextWriterWriteRaw
      Src: /src/postgres/src/backend/utils/adt/xml.c:984,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:986,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 988
      start: 980
    functionDepth: 1
    functionLinenumber: 980
    functionLinenumberEnd: 988
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 465
    functionsReached:
    - xmlTextWriterWriteRaw
    - xml_ereport
    - lfirst
    linkageType: ''
    returnType: void
    signature: void foreach(arg, arg_strings)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xml_parse
      Src: /src/postgres/src/backend/utils/adt/xml.c:1032,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/xml.c:1033,1
    - Dst: xmlFreeDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:1034,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:1038,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - data
    - xmloption_arg
    - preserve_whitespace
    argTypes:
    - text*
    - XmlOptionType
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 1026
    functionDepth: 1
    functionLinenumber: 1026
    functionLinenumberEnd: 1041
    functionName: xmlparse
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 2
    functionsReached:
    - NO_XML_SUPPORT
    - xmlFreeDoc
    - xml_parse
    - GetDatabaseEncoding
    linkageType: ''
    returnType: xmltype
    signature: 'xmltype *

      xmlparse(text *data, XmlOptionType xmloption_arg, bool preserve_whitespace)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:1051,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:1052,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:1053,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:1054,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/xml.c:1055,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:1065,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:1067,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:1073,1
    - Dst: strstr
      Src: /src/postgres/src/backend/utils/adt/xml.c:1074,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:1075,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:1076,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:1077,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/xml.c:1078,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:1080,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:1081,1
    - Dst: strspn
      Src: /src/postgres/src/backend/utils/adt/xml.c:1081,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/xml.c:1082,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:1084,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:1086,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/xml.c:1087,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:1090,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: 1093
      start: 1044
    functionDepth: 3
    functionLinenumber: 1044
    functionLinenumberEnd: 1093
    functionName: xmlpi
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - errmsg
    - strspn
    - pfree
    - text_to_cstring
    - appendStringInfo
    - strstr
    - appendStringInfoChar
    - appendStringInfoString
    - NO_XML_SUPPORT
    - ereport
    - stringinfo_to_xmltype
    - initStringInfo
    - pg_strcasecmp
    - errdetail
    - errcode
    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:1106,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:1107,1
    - Dst: parse_xml_decl
      Src: /src/postgres/src/backend/utils/adt/xml.c:1109,1
    - Dst: xml_text2xmlChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:1112,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:1132,1
    - Dst: print_xml_decl
      Src: /src/postgres/src/backend/utils/adt/xml.c:1133,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:1134,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:1136,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:1138,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - data
    - version
    - standalone
    argTypes:
    - xmltype*
    - text*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1141
      start: 1096
    functionDepth: 3
    functionLinenumber: 1096
    functionLinenumberEnd: 1141
    functionName: xmlroot
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - xml_text2xmlChar
    - print_xml_decl
    - NO_XML_SUPPORT
    - appendStringInfoString
    - parse_xml_decl
    - VARSIZE
    - stringinfo_to_xmltype
    - initStringInfo
    - text_to_cstring
    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:1155,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:1156,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:1157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1159
      start: 1152
    functionDepth: 2
    functionLinenumber: 1152
    functionLinenumberEnd: 1159
    functionName: xmlvalidate
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - ereport
    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:1172,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/xml.c:1173,1
    - Dst: xmlFreeDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:1175,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:1179,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - arg
    argTypes:
    - xmltype*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1182
      start: 1162
    functionDepth: 1
    functionLinenumber: 1162
    functionLinenumberEnd: 1182
    functionName: xml_is_document
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - NO_XML_SUPPORT
    - xmlFreeDoc
    - xml_parse
    - GetDatabaseEncoding
    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:1212,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:1213,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/xml.c:1214,1
    - Dst: xml_memory_init
      Src: /src/postgres/src/backend/utils/adt/xml.c:1219,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1227
      start: 1198
    functionDepth: 2
    functionLinenumber: 1198
    functionLinenumberEnd: 1227
    functionName: pg_xml_init_library
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errdetail
    - xml_memory_init
    - ereport
    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:1251,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/xml.c:1254,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:1258,1
    - Dst: xmlSetStructuredErrorFunc
      Src: /src/postgres/src/backend/utils/adt/xml.c:1275,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:1298,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:1299,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:1300,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/xml.c:1301,1
    - Dst: xmlGetExternalEntityLoader
      Src: /src/postgres/src/backend/utils/adt/xml.c:1309,1
    - Dst: xmlSetExternalEntityLoader
      Src: /src/postgres/src/backend/utils/adt/xml.c:1310,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 1
    argNames:
    - strictness
    argTypes:
    - PgXmlStrictness
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1313
      start: 1244
    functionDepth: 3
    functionLinenumber: 1244
    functionLinenumberEnd: 1313
    functionName: pg_xml_init
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 3
    functionsReached:
    - errmsg
    - pg_xml_init_library
    - xmlSetExternalEntityLoader
    - xmlGetExternalEntityLoader
    - ereport
    - errhint
    - xmlSetStructuredErrorFunc
    - initStringInfo
    - palloc
    - errcode
    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:1331,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/xml.c:1338,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:1352,1
    - Dst: xmlSetStructuredErrorFunc
      Src: /src/postgres/src/backend/utils/adt/xml.c:1355,1
    - Dst: xmlSetExternalEntityLoader
      Src: /src/postgres/src/backend/utils/adt/xml.c:1356,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/xml.c:1365,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/xml.c:1366,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - errcxt
    - isError
    argTypes:
    - PgXmlErrorContext*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1367
      start: 1325
    functionDepth: 1
    functionLinenumber: 1325
    functionLinenumberEnd: 1367
    functionName: pg_xml_done
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 3
    functionsReached:
    - pfree
    - Assert
    - xmlSetExternalEntityLoader
    - elog
    - 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: 1377
      start: 1373
    functionDepth: 0
    functionLinenumber: 1373
    functionLinenumberEnd: 1377
    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: 1394
      start: 1389
    functionDepth: 0
    functionLinenumber: 1389
    functionLinenumberEnd: 1394
    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: 1397
      start: 1395
    functionDepth: 0
    functionLinenumber: 1395
    functionLinenumberEnd: 1397
    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: 1406
      start: 1400
    functionDepth: 0
    functionLinenumber: 1400
    functionLinenumberEnd: 1406
    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:1413,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/xml.c:1414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - str
    - len
    argTypes:
    - xmlChar*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1417
      start: 1408
    functionDepth: 0
    functionLinenumber: 1408
    functionLinenumberEnd: 1417
    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:1425,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/xml.c:1426,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - str
    - len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1430
      start: 1420
    functionDepth: 0
    functionLinenumber: 1420
    functionLinenumberEnd: 1430
    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:1444,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/xml.c:1446,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/backend/utils/adt/xml.c:1448,1
    - Dst: xmlFree
      Src: /src/postgres/src/backend/utils/adt/xml.c:1450,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:1452,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - str
    argTypes:
    - xmlChar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1458
      start: 1437
    functionDepth: 1
    functionLinenumber: 1437
    functionLinenumberEnd: 1458
    functionName: xml_pstrdup_and_free
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - PG_END_TRY
    - PG_TRY
    - pstrdup
    - xmlFree
    - PG_FINALLY
    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:1482,1
    - Dst: xmlStrncmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:1494,1
    - Dst: strnlen
      Src: /src/postgres/src/backend/utils/adt/xml.c:1505,1
    - Dst: xmlGetUTF8Char
      Src: /src/postgres/src/backend/utils/adt/xml.c:1506,1
    - Dst: PG_XMLISNAMECHAR
      Src: /src/postgres/src/backend/utils/adt/xml.c:1507,1
    - Dst: CHECK_XML_SPACE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1513,1
    - Dst: SKIP_XML_SPACE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1514,1
    - Dst: xmlStrncmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:1515,1
    - Dst: SKIP_XML_SPACE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1518,1
    - Dst: SKIP_XML_SPACE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1522,1
    - Dst: xmlStrchr
      Src: /src/postgres/src/backend/utils/adt/xml.c:1528,1
    - Dst: xml_pnstrdup
      Src: /src/postgres/src/backend/utils/adt/xml.c:1533,1
    - Dst: SKIP_XML_SPACE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1541,1
    - Dst: xmlStrncmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:1542,1
    - Dst: CHECK_XML_SPACE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1544,1
    - Dst: SKIP_XML_SPACE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1546,1
    - Dst: SKIP_XML_SPACE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1550,1
    - Dst: xmlStrchr
      Src: /src/postgres/src/backend/utils/adt/xml.c:1556,1
    - Dst: xml_pnstrdup
      Src: /src/postgres/src/backend/utils/adt/xml.c:1561,1
    - Dst: SKIP_XML_SPACE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1574,1
    - Dst: xmlStrncmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:1575,1
    - Dst: CHECK_XML_SPACE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1577,1
    - Dst: SKIP_XML_SPACE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1579,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: xmlStrncmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:1585,1
    - Dst: xmlStrncmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:1591,1
    - Dst: xmlStrncmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:1592,1
    - Dst: SKIP_XML_SPACE
      Src: /src/postgres/src/backend/utils/adt/xml.c:1606,1
    - Dst: xmlStrncmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:1607,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: 1622
      start: 1466
    functionDepth: 3
    functionLinenumber: 1466
    functionLinenumberEnd: 1622
    functionName: parse_xml_decl
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 6
    functionsReached:
    - xmlStrncmp
    - xmlGetUTF8Char
    - pg_xml_init_library
    - xmlStrchr
    - SKIP_XML_SPACE
    - xml_pnstrdup
    - CHECK_XML_SPACE
    - PG_XMLISNAMECHAR
    - strnlen
    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:1643,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:1647,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:1650,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:1652,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:1660,1
    - Dst: pg_encoding_to_char
      Src: /src/postgres/src/backend/utils/adt/xml.c:1661,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:1665,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:1667,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:1668,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: 1674
      start: 1639
    functionDepth: 2
    functionLinenumber: 1639
    functionLinenumberEnd: 1674
    functionName: print_xml_decl
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 3
    functionsReached:
    - pg_encoding_to_char
    - strcmp
    - appendStringInfoString
    - appendStringInfo
    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:1714,1
    - Dst: xmlStrncmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:1724,1
    - Dst: xmlStrncmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:1728,1
    - Dst: xmlStrstr
      Src: /src/postgres/src/backend/utils/adt/xml.c:1731,1
    - Dst: xmlStrstr
      Src: /src/postgres/src/backend/utils/adt/xml.c:1745,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 1
    argNames:
    - str
    argTypes:
    - xmlChar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1752
      start: 1705
    functionDepth: 1
    functionLinenumber: 1705
    functionLinenumberEnd: 1752
    functionName: xml_doctype_in_content
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xmlStrstr
    - SKIP_XML_SPACE
    - xmlStrncmp
    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:1798,1
    - Dst: xml_text2xmlChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:1799,1
    - Dst: pg_do_encoding_conversion
      Src: /src/postgres/src/backend/utils/adt/xml.c:1808,1
    - Dst: pg_xml_init
      Src: /src/postgres/src/backend/utils/adt/xml.c:1814,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:1817,1
    - Dst: xmlInitParser
      Src: /src/postgres/src/backend/utils/adt/xml.c:1827,1
    - Dst: parse_xml_decl
      Src: /src/postgres/src/backend/utils/adt/xml.c:1835,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/xml.c:1839,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:1840,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:1841,1
    - Dst: errdetail_for_xml_code
      Src: /src/postgres/src/backend/utils/adt/xml.c:1842,1
    - Dst: xml_doctype_in_content
      Src: /src/postgres/src/backend/utils/adt/xml.c:1847,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:1877,1
    - Dst: xml_errsave
      Src: /src/postgres/src/backend/utils/adt/xml.c:1886,1
    - Dst: xml_errsave
      Src: /src/postgres/src/backend/utils/adt/xml.c:1890,1
    - Dst: xmlNewDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:1902,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:1904,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/xml.c:1907,1
    - Dst: xmlStrdup
      Src: /src/postgres/src/backend/utils/adt/xml.c:1908,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:1910,1
    - Dst: xmlNewNode
      Src: /src/postgres/src/backend/utils/adt/xml.c:1914,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:1916,1
    - Dst: xmlDocSetRootElement
      Src: /src/postgres/src/backend/utils/adt/xml.c:1923,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/xml.c:1924,1
    - Dst: xmlParseInNodeContext
      Src: /src/postgres/src/backend/utils/adt/xml.c:1932,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/xml.c:1934,1
    - Dst: xmlFreeNodeList
      Src: /src/postgres/src/backend/utils/adt/xml.c:1940,1
    - Dst: xml_errsave
      Src: /src/postgres/src/backend/utils/adt/xml.c:1941,1
    - Dst: xmlFreeNodeList
      Src: /src/postgres/src/backend/utils/adt/xml.c:1950,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/utils/adt/xml.c:1957,1
    - Dst: xmlFreeDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:1960,1
    - Dst: xmlFreeParserCtxt
      Src: /src/postgres/src/backend/utils/adt/xml.c:1962,1
    - Dst: pg_xml_done
      Src: /src/postgres/src/backend/utils/adt/xml.c:1964,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/utils/adt/xml.c:1966,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:1968,1
    - Dst: xmlFreeParserCtxt
      Src: /src/postgres/src/backend/utils/adt/xml.c:1971,1
    - Dst: pg_xml_done
      Src: /src/postgres/src/backend/utils/adt/xml.c:1973,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 79
    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: 1976
      start: 1781
    functionDepth: 4
    functionLinenumber: 1781
    functionLinenumberEnd: 1976
    functionName: xml_parse
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 5
    functionsReached:
    - xml_text2xmlChar
    - xml_errsave
    - xmlCtxtReadDoc
    - parse_xml_decl
    - xmlFreeNodeList
    - errdetail_for_xml_code
    - pg_xml_done
    - xmlInitParser
    - xmlNewDoc
    - strlen
    - xmlFreeDoc
    - xmlParseInNodeContext
    - xml_ereport
    - PG_RE_THROW
    - xmlNewParserCtxt
    - xmlStrdup
    - xmlDocSetRootElement
    - pg_do_encoding_conversion
    - errsave
    - VARSIZE_ANY_EXHDR
    - xml_doctype_in_content
    - Assert
    - PG_END_TRY
    - PG_TRY
    - xmlFreeParserCtxt
    - PG_CATCH
    - errmsg_internal
    - xmlNewNode
    - errcode
    - pg_xml_init
    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:1985,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - in
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1986
      start: 1982
    functionDepth: 1
    functionLinenumber: 1982
    functionLinenumberEnd: 1986
    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:2000,1
    - Dst: xmlMemSetup
      Src: /src/postgres/src/backend/utils/adt/xml.c:2005,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2006
      start: 1995
    functionDepth: 1
    functionLinenumber: 1995
    functionLinenumberEnd: 2006
    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:2014,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2015
      start: 2011
    functionDepth: 1
    functionLinenumber: 2011
    functionLinenumberEnd: 2015
    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:2021,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2022
      start: 2018
    functionDepth: 0
    functionLinenumber: 2018
    functionLinenumberEnd: 2022
    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:2030,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2031
      start: 2025
    functionDepth: 0
    functionLinenumber: 2025
    functionLinenumberEnd: 2031
    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:2037,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - string
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2038
      start: 2034
    functionDepth: 1
    functionLinenumber: 2034
    functionLinenumberEnd: 2038
    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:2057,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - URL
    - ID
    - ctxt
    argTypes:
    - char*
    - char*
    - xmlParserCtxtPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2058
      start: 2053
    functionDepth: 0
    functionLinenumber: 2053
    functionLinenumberEnd: 2058
    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:2078,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:2089,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:2090,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:2091,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:2092,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - errcxt
    - level
    - sqlcode
    - msg
    argTypes:
    - PgXmlErrorContext*
    - int
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2093
      start: 2071
    functionDepth: 2
    functionLinenumber: 2071
    functionLinenumberEnd: 2093
    functionName: xml_ereport
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 5
    functionsReached:
    - errdetail_internal
    - errmsg_internal
    - ereport
    - elog
    - errcode
    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:2116,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/xml.c:2127,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:2128,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:2129,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:2130,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - escontext
    - errcxt
    - sqlcode
    - msg
    argTypes:
    - Node*
    - PgXmlErrorContext*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2131
      start: 2108
    functionDepth: 2
    functionLinenumber: 2108
    functionLinenumberEnd: 2131
    functionName: xml_errsave
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - errdetail_internal
    - errmsg_internal
    - elog
    - errsave
    - errcode
    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:2157,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2225,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2228,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2230,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2232,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2234,1
    - Dst: xmlSetGenericErrorFunc
      Src: /src/postgres/src/backend/utils/adt/xml.c:2252,1
    - Dst: appendStringInfoLineSeparator
      Src: /src/postgres/src/backend/utils/adt/xml.c:2256,1
    - Dst: xmlParserPrintFileContext
      Src: /src/postgres/src/backend/utils/adt/xml.c:2258,1
    - Dst: xmlSetGenericErrorFunc
      Src: /src/postgres/src/backend/utils/adt/xml.c:2261,1
    - Dst: chopStringInfoNewlines
      Src: /src/postgres/src/backend/utils/adt/xml.c:2265,1
    - Dst: appendStringInfoLineSeparator
      Src: /src/postgres/src/backend/utils/adt/xml.c:2277,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2278,1
    - Dst: destroyStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2281,1
    - Dst: appendStringInfoLineSeparator
      Src: /src/postgres/src/backend/utils/adt/xml.c:2295,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2296,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:2303,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:2304,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:2308,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:2309,1
    - Dst: destroyStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2312,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 66
    argCount: 2
    argNames:
    - data
    - error
    argTypes:
    - void*
    - PgXmlErrorPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2313
      start: 2137
    functionDepth: 4
    functionLinenumber: 2137
    functionLinenumberEnd: 2313
    functionName: xml_errorHandler
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - chopStringInfoNewlines
    - appendStringInfo
    - makeStringInfo
    - xmlParserPrintFileContext
    - appendStringInfoString
    - appendBinaryStringInfo
    - destroyStringInfo
    - errmsg_internal
    - ereport
    - appendStringInfoLineSeparator
    - elog
    - xmlSetGenericErrorFunc
    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:2333,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/adt/xml.c:2336,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/adt/xml.c:2339,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/adt/xml.c:2342,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/adt/xml.c:2345,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/adt/xml.c:2348,1
    - Dst: gettext_noop
      Src: /src/postgres/src/backend/utils/adt/xml.c:2351,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/xml.c:2355,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - code
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2356
      start: 2325
    functionDepth: 2
    functionLinenumber: 2325
    functionLinenumberEnd: 2356
    functionName: errdetail_for_xml_code
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 2
    functionsReached:
    - errdetail
    - gettext_noop
    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: 2367
      start: 2362
    functionDepth: 0
    functionLinenumber: 2362
    functionLinenumberEnd: 2367
    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:2376,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:2378,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2379
      start: 2373
    functionDepth: 2
    functionLinenumber: 2373
    functionLinenumberEnd: 2379
    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:2392,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/xml.c:2392,1
    - Dst: pg_encoding_mb2wchar_with_len
      Src: /src/postgres/src/backend/utils/adt/xml.c:2394,1
    - Dst: pg_encoding_mblen
      Src: /src/postgres/src/backend/utils/adt/xml.c:2395,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/xml.c:2398,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2401
      start: 2385
    functionDepth: 2
    functionLinenumber: 2385
    functionLinenumberEnd: 2401
    functionName: sqlchar_to_unicode
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - pfree
    - pg_encoding_mblen
    - pg_mblen
    - pg_server_to_any
    - pg_encoding_mb2wchar_with_len
    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:2408,1
    - Dst: xmlIsIdeographicQ
      Src: /src/postgres/src/backend/utils/adt/xml.c:2408,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - pg_wchar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2410
      start: 2404
    functionDepth: 0
    functionLinenumber: 2404
    functionLinenumberEnd: 2410
    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:2417,1
    - Dst: xmlIsIdeographicQ
      Src: /src/postgres/src/backend/utils/adt/xml.c:2417,1
    - Dst: xmlIsDigitQ
      Src: /src/postgres/src/backend/utils/adt/xml.c:2418,1
    - Dst: xmlIsCombiningQ
      Src: /src/postgres/src/backend/utils/adt/xml.c:2420,1
    - Dst: xmlIsExtenderQ
      Src: /src/postgres/src/backend/utils/adt/xml.c:2421,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - pg_wchar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2422
      start: 2413
    functionDepth: 0
    functionLinenumber: 2413
    functionLinenumberEnd: 2422
    functionName: is_valid_xml_namechar
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xmlIsBaseCharQ
    - xmlIsCombiningQ
    - xmlIsExtenderQ
    - xmlIsIdeographicQ
    - 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:2441,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2443,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/xml.c:2445,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2448,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2450,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/xml.c:2452,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2455,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2457,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2460,1
    - Dst: sqlchar_to_unicode
      Src: /src/postgres/src/backend/utils/adt/xml.c:2463,1
    - Dst: is_valid_xml_namefirst
      Src: /src/postgres/src/backend/utils/adt/xml.c:2466,1
    - Dst: is_valid_xml_namechar
      Src: /src/postgres/src/backend/utils/adt/xml.c:2467,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2468,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2470,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/xml.c:2470,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:2476,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 23
    argCount: 3
    argNames:
    - ident
    - fully_escaped
    - escape_period
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2479
      start: 2429
    functionDepth: 3
    functionLinenumber: 2429
    functionLinenumberEnd: 2479
    functionName: map_sql_identifier_to_xml_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - Assert
    - pg_mblen
    - is_valid_xml_namechar
    - appendStringInfo
    - appendBinaryStringInfo
    - appendStringInfoString
    - NO_XML_SUPPORT
    - sqlchar_to_unicode
    - is_valid_xml_namefirst
    - pg_strncasecmp
    - initStringInfo
    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:2491,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/xml.c:2493,1
    - Dst: isxdigit
      Src: /src/postgres/src/backend/utils/adt/xml.c:2496,1
    - Dst: isxdigit
      Src: /src/postgres/src/backend/utils/adt/xml.c:2497,1
    - Dst: isxdigit
      Src: /src/postgres/src/backend/utils/adt/xml.c:2498,1
    - Dst: isxdigit
      Src: /src/postgres/src/backend/utils/adt/xml.c:2499,1
    - Dst: sscanf
      Src: /src/postgres/src/backend/utils/adt/xml.c:2505,1
    - Dst: pg_unicode_to_server
      Src: /src/postgres/src/backend/utils/adt/xml.c:2506,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2507,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2511,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/xml.c:2511,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2515
      start: 2485
    functionDepth: 3
    functionLinenumber: 2485
    functionLinenumberEnd: 2515
    functionName: map_xml_name_to_sql_identifier
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - isxdigit
    - pg_mblen
    - appendBinaryStringInfo
    - appendStringInfoString
    - sscanf
    - pg_unicode_to_server
    - initStringInfo
    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:2530,1
    - Dst: DatumGetArrayTypeP
      Src: /src/postgres/src/backend/utils/adt/xml.c:2543,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/utils/adt/xml.c:2544,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/utils/adt/xml.c:2545,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/utils/adt/xml.c:2547,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2552,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2558,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2559,1
    - Dst: map_sql_value_to_xml_value
      Src: /src/postgres/src/backend/utils/adt/xml.c:2560,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2562,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/xml.c:2565,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/xml.c:2566,1
    - Dst: getBaseType
      Src: /src/postgres/src/backend/utils/adt/xml.c:2580,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/xml.c:2588,1
    - Dst: DatumGetDateADT
      Src: /src/postgres/src/backend/utils/adt/xml.c:2599,1
    - Dst: DATE_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/xml.c:2601,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:2602,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:2603,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:2604,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/xml.c:2605,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/xml.c:2606,1
    - Dst: EncodeDateOnly
      Src: /src/postgres/src/backend/utils/adt/xml.c:2608,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/xml.c:2610,1
    - Dst: DatumGetTimestamp
      Src: /src/postgres/src/backend/utils/adt/xml.c:2620,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/xml.c:2623,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:2624,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:2625,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:2626,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/xml.c:2627,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/xml.c:2628,1
    - Dst: EncodeDateTime
      Src: /src/postgres/src/backend/utils/adt/xml.c:2629,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:2631,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:2632,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:2633,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/xml.c:2635,1
    - Dst: DatumGetTimestamp
      Src: /src/postgres/src/backend/utils/adt/xml.c:2647,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/xml.c:2650,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:2651,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:2652,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:2653,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/xml.c:2654,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/xml.c:2655,1
    - Dst: EncodeDateTime
      Src: /src/postgres/src/backend/utils/adt/xml.c:2656,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:2658,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:2659,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:2660,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/xml.c:2662,1
    - Dst: DatumGetByteaPP
      Src: /src/postgres/src/backend/utils/adt/xml.c:2668,1
    - Dst: pg_xml_init
      Src: /src/postgres/src/backend/utils/adt/xml.c:2674,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:2676,1
    - Dst: xmlBufferCreate
      Src: /src/postgres/src/backend/utils/adt/xml.c:2678,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:2680,1
    - Dst: xmlNewTextWriterMemory
      Src: /src/postgres/src/backend/utils/adt/xml.c:2682,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:2684,1
    - Dst: xmlTextWriterWriteBase64
      Src: /src/postgres/src/backend/utils/adt/xml.c:2688,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/xml.c:2688,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/xml.c:2689,1
    - Dst: xmlTextWriterWriteBinHex
      Src: /src/postgres/src/backend/utils/adt/xml.c:2691,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/xml.c:2691,1
    - Dst: VARSIZE_ANY_EXHDR
      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: pstrdup
      Src: /src/postgres/src/backend/utils/adt/xml.c:2698,1
    - Dst: xmlBufferContent
      Src: /src/postgres/src/backend/utils/adt/xml.c:2698,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/utils/adt/xml.c:2700,1
    - Dst: xmlFreeTextWriter
      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: PG_RE_THROW
      Src: /src/postgres/src/backend/utils/adt/xml.c:2709,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:2711,1
    - Dst: xmlBufferFree
      Src: /src/postgres/src/backend/utils/adt/xml.c:2713,1
    - Dst: pg_xml_done
      Src: /src/postgres/src/backend/utils/adt/xml.c:2715,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2726,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/utils/adt/xml.c:2727,1
    - Dst: escape_xml
      Src: /src/postgres/src/backend/utils/adt/xml.c:2734,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 86
    argCount: 3
    argNames:
    - value
    - type
    - xml_escape_strings
    argTypes:
    - Datum
    - Oid
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2736
      start: 2527
    functionDepth: 4
    functionLinenumber: 2527
    functionLinenumberEnd: 2736
    functionName: map_sql_value_to_xml_value
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 3
    functionsReached:
    - get_typlenbyvalalign
    - getTypeOutputInfo
    - map_sql_value_to_xml_value
    - xmlNewTextWriterMemory
    - pstrdup
    - DATE_NOT_FINITE
    - OidOutputFunctionCall
    - pg_xml_init
    - pg_xml_done
    - DatumGetByteaPP
    - xmlBufferCreate
    - errdetail
    - deconstruct_array
    - pfree
    - xml_ereport
    - DatumGetArrayTypeP
    - PG_RE_THROW
    - VARDATA_ANY
    - escape_xml
    - xmlBufferFree
    - xmlFreeTextWriter
    - errmsg
    - appendStringInfoString
    - xmlTextWriterWriteBinHex
    - DatumGetDateADT
    - j2date
    - VARSIZE_ANY_EXHDR
    - type_is_array_domain
    - DatumGetTimestamp
    - ARR_ELEMTYPE
    - xmlBufferContent
    - PG_END_TRY
    - PG_TRY
    - xmlTextWriterWriteBase64
    - timestamp2tm
    - EncodeDateOnly
    - TIMESTAMP_NOT_FINITE
    - PG_CATCH
    - ereport
    - EncodeDateTime
    - DatumGetBool
    - initStringInfo
    - errcode
    - getBaseType
    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:2752,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2758,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2761,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2764,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2767,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/xml.c:2770,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2775
      start: 2746
    functionDepth: 3
    functionLinenumber: 2746
    functionLinenumberEnd: 2775
    functionName: escape_xml
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - initStringInfo
    - appendStringInfoString
    - 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:2781,1
    - Dst: SPI_palloc
      Src: /src/postgres/src/backend/utils/adt/xml.c:2782,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/xml.c:2784,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2786
      start: 2778
    functionDepth: 2
    functionLinenumber: 2778
    functionLinenumberEnd: 2786
    functionName: _SPI_strdup
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - memcpy
    - SPI_palloc
    - strlen
    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:2842,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:2844,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/backend/utils/adt/xml.c:2845,1
    - Dst: SPI_getbinval
      Src: /src/postgres/src/backend/utils/adt/xml.c:2852,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:2857,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/utils/adt/xml.c:2857,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - query
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2861
      start: 2835
    functionDepth: 6
    functionLinenumber: 2835
    functionLinenumberEnd: 2861
    functionName: query_to_oid_list
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - SPI_getbinval
    - lappend_oid
    - SPI_result_code_string
    - elog
    - DatumGetObjectId
    - SPI_execute
    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:2869,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2870,1
    - Dst: CppAsString2
      Src: /src/postgres/src/backend/utils/adt/xml.c:2873,1
    - Dst: CppAsString2
      Src: /src/postgres/src/backend/utils/adt/xml.c:2874,1
    - Dst: query_to_oid_list
      Src: /src/postgres/src/backend/utils/adt/xml.c:2878,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - nspid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2879
      start: 2864
    functionDepth: 7
    functionLinenumber: 2864
    functionLinenumberEnd: 2879
    functionName: schema_get_xml_visible_tables
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - query_to_oid_list
    - initStringInfo
    - CppAsString2
    - appendStringInfo
    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:2894,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2895
      start: 2891
    functionDepth: 7
    functionLinenumber: 2891
    functionLinenumberEnd: 2895
    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:2902,1
    - Dst: CppAsString2
      Src: /src/postgres/src/backend/utils/adt/xml.c:2905,1
    - Dst: CppAsString2
      Src: /src/postgres/src/backend/utils/adt/xml.c:2906,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2909
      start: 2898
    functionDepth: 7
    functionLinenumber: 2898
    functionLinenumberEnd: 2909
    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:2924,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2925,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/xml.c:2926,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/xml.c:2926,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/xml.c:2927,1
    - Dst: query_to_xml_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:2928,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:2928,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: 2931
      start: 2917
    functionDepth: 3
    functionLinenumber: 2917
    functionLinenumberEnd: 2931
    functionName: table_to_xml_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - query_to_xml_internal
    - get_rel_name
    - DatumGetCString
    - appendStringInfo
    - initStringInfo
    - DirectFunctionCall1
    - ObjectIdGetDatum
    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:2937,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:2938,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:2939,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:2940,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:2940,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:2942,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:2942,1
    - Dst: table_to_xml_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:2942,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2945
      start: 2934
    functionDepth: 4
    functionLinenumber: 2934
    functionLinenumberEnd: 2945
    functionName: table_to_xml
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - PG_RETURN_XML_P
    - stringinfo_to_xmltype
    - PG_GETARG_OID
    - PG_GETARG_BOOL
    - table_to_xml_internal
    - text_to_cstring
    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:2951,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:2951,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:2952,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:2953,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:2954,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:2954,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:2956,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:2956,1
    - Dst: query_to_xml_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:2956,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2959
      start: 2948
    functionDepth: 2
    functionLinenumber: 2948
    functionLinenumberEnd: 2959
    functionName: query_to_xml
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - query_to_xml_internal
    - PG_GETARG_TEXT_PP
    - PG_RETURN_XML_P
    - stringinfo_to_xmltype
    - PG_GETARG_BOOL
    - text_to_cstring
    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:2965,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:2965,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/xml.c:2966,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:2967,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:2968,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:2969,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:2969,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:2975,1
    - Dst: xmldata_root_element_start
      Src: /src/postgres/src/backend/utils/adt/xml.c:2979,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:2980,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/xml.c:2983,1
    - Dst: SPI_cursor_find
      Src: /src/postgres/src/backend/utils/adt/xml.c:2984,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:2986,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:2987,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:2988,1
    - Dst: SPI_cursor_fetch
      Src: /src/postgres/src/backend/utils/adt/xml.c:2990,1
    - Dst: SPI_sql_row_to_xmlelement
      Src: /src/postgres/src/backend/utils/adt/xml.c:2992,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/xml.c:2995,1
    - Dst: xmldata_root_element_end
      Src: /src/postgres/src/backend/utils/adt/xml.c:2998,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:3000,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:3000,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3001
      start: 2962
    functionDepth: 3
    functionLinenumber: 2962
    functionLinenumberEnd: 3001
    functionName: cursor_to_xml
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - SPI_connect
    - SPI_cursor_find
    - xmldata_root_element_start
    - appendStringInfoChar
    - PG_GETARG_TEXT_PP
    - PG_RETURN_XML_P
    - SPI_sql_row_to_xmlelement
    - ereport
    - stringinfo_to_xmltype
    - PG_GETARG_BOOL
    - PG_GETARG_INT32
    - xmldata_root_element_end
    - initStringInfo
    - SPI_finish
    - SPI_cursor_fetch
    - text_to_cstring
    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:3022,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3024,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3027,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/xml.c:3028,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3029,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/xml.c:3034,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3035,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3037,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3039,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: 3040
      start: 3016
    functionDepth: 2
    functionLinenumber: 3016
    functionLinenumberEnd: 3040
    functionName: xmldata_root_element_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - Assert
    - appendStringInfoString
    - strlen
    - appendStringInfo
    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:3046,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - result
    - eltname
    argTypes:
    - StringInfo
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3047
      start: 3043
    functionDepth: 2
    functionLinenumber: 3043
    functionLinenumberEnd: 3047
    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:3060,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3064,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/xml.c:3066,1
    - Dst: SPI_execute
      Src: /src/postgres/src/backend/utils/adt/xml.c:3067,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:3068,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:3069,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:3070,1
    - Dst: xmldata_root_element_start
      Src: /src/postgres/src/backend/utils/adt/xml.c:3074,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:3076,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3080,1
    - Dst: SPI_sql_row_to_xmlelement
      Src: /src/postgres/src/backend/utils/adt/xml.c:3083,1
    - Dst: xmldata_root_element_end
      Src: /src/postgres/src/backend/utils/adt/xml.c:3087,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/xml.c:3089,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: 3092
      start: 3050
    functionDepth: 4
    functionLinenumber: 3050
    functionLinenumberEnd: 3092
    functionName: query_to_xml_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 2
    functionsReached:
    - errmsg
    - SPI_connect
    - appendStringInfo
    - makeStringInfo
    - xmldata_root_element_start
    - appendStringInfoChar
    - SPI_sql_row_to_xmlelement
    - ereport
    - xmldata_root_element_end
    - SPI_execute
    - SPI_finish
    - errcode
    - map_sql_identifier_to_xml_name
    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:3098,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3099,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3100,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:3101,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3101,1
    - Dst: table_open
      Src: /src/postgres/src/backend/utils/adt/xml.c:3105,1
    - Dst: map_sql_table_to_xmlschema
      Src: /src/postgres/src/backend/utils/adt/xml.c:3106,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/xml.c:3108,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:3110,1
    - Dst: cstring_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:3110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3111
      start: 3095
    functionDepth: 3
    functionLinenumber: 3095
    functionLinenumberEnd: 3111
    functionName: table_to_xmlschema
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - table_open
    - PG_GETARG_TEXT_PP
    - cstring_to_xmltype
    - PG_RETURN_XML_P
    - PG_GETARG_OID
    - map_sql_table_to_xmlschema
    - PG_GETARG_BOOL
    - table_close
    - text_to_cstring
    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:3117,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3117,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3118,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3119,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:3120,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3120,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/xml.c:3125,1
    - Dst: SPI_prepare
      Src: /src/postgres/src/backend/utils/adt/xml.c:3127,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:3128,1
    - Dst: SPI_cursor_open
      Src: /src/postgres/src/backend/utils/adt/xml.c:3130,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:3131,1
    - Dst: _SPI_strdup
      Src: /src/postgres/src/backend/utils/adt/xml.c:3133,1
    - Dst: map_sql_table_to_xmlschema
      Src: /src/postgres/src/backend/utils/adt/xml.c:3133,1
    - Dst: SPI_cursor_close
      Src: /src/postgres/src/backend/utils/adt/xml.c:3136,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/xml.c:3137,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:3139,1
    - Dst: cstring_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:3139,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3140
      start: 3114
    functionDepth: 3
    functionLinenumber: 3114
    functionLinenumberEnd: 3140
    functionName: query_to_xmlschema
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - SPI_connect
    - SPI_cursor_open
    - _SPI_strdup
    - PG_GETARG_TEXT_PP
    - cstring_to_xmltype
    - PG_RETURN_XML_P
    - SPI_prepare
    - elog
    - map_sql_table_to_xmlschema
    - PG_GETARG_BOOL
    - SPI_cursor_close
    - SPI_finish
    - text_to_cstring
    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:3146,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3146,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3147,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3148,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:3149,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3149,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/xml.c:3153,1
    - Dst: SPI_cursor_find
      Src: /src/postgres/src/backend/utils/adt/xml.c:3154,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:3156,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:3157,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:3158,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:3160,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:3161,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:3162,1
    - Dst: _SPI_strdup
      Src: /src/postgres/src/backend/utils/adt/xml.c:3164,1
    - Dst: map_sql_table_to_xmlschema
      Src: /src/postgres/src/backend/utils/adt/xml.c:3164,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/xml.c:3167,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:3169,1
    - Dst: cstring_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:3169,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3170
      start: 3143
    functionDepth: 3
    functionLinenumber: 3143
    functionLinenumberEnd: 3170
    functionName: cursor_to_xmlschema
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - SPI_connect
    - SPI_cursor_find
    - _SPI_strdup
    - PG_GETARG_TEXT_PP
    - cstring_to_xmltype
    - PG_RETURN_XML_P
    - ereport
    - map_sql_table_to_xmlschema
    - PG_GETARG_BOOL
    - SPI_finish
    - text_to_cstring
    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:3176,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3177,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3178,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:3179,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3179,1
    - Dst: table_open
      Src: /src/postgres/src/backend/utils/adt/xml.c:3183,1
    - Dst: map_sql_table_to_xmlschema
      Src: /src/postgres/src/backend/utils/adt/xml.c:3184,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/xml.c:3186,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:3188,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:3188,1
    - Dst: table_to_xml_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3191
      start: 3173
    functionDepth: 4
    functionLinenumber: 3173
    functionLinenumberEnd: 3191
    functionName: table_to_xml_and_xmlschema
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - table_open
    - PG_GETARG_TEXT_PP
    - PG_RETURN_XML_P
    - stringinfo_to_xmltype
    - PG_GETARG_OID
    - map_sql_table_to_xmlschema
    - PG_GETARG_BOOL
    - table_to_xml_internal
    - table_close
    - text_to_cstring
    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:3197,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3197,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3198,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3199,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:3200,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3200,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/xml.c:3206,1
    - Dst: SPI_prepare
      Src: /src/postgres/src/backend/utils/adt/xml.c:3208,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:3209,1
    - Dst: SPI_cursor_open
      Src: /src/postgres/src/backend/utils/adt/xml.c:3211,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:3212,1
    - Dst: _SPI_strdup
      Src: /src/postgres/src/backend/utils/adt/xml.c:3214,1
    - Dst: map_sql_table_to_xmlschema
      Src: /src/postgres/src/backend/utils/adt/xml.c:3214,1
    - Dst: SPI_cursor_close
      Src: /src/postgres/src/backend/utils/adt/xml.c:3216,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/xml.c:3217,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:3219,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:3219,1
    - Dst: query_to_xml_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3219,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3222
      start: 3194
    functionDepth: 5
    functionLinenumber: 3194
    functionLinenumberEnd: 3222
    functionName: query_to_xml_and_xmlschema
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - query_to_xml_internal
    - SPI_connect
    - SPI_cursor_open
    - _SPI_strdup
    - PG_GETARG_TEXT_PP
    - PG_RETURN_XML_P
    - stringinfo_to_xmltype
    - SPI_prepare
    - elog
    - map_sql_table_to_xmlschema
    - PG_GETARG_BOOL
    - SPI_cursor_close
    - SPI_finish
    - text_to_cstring
    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:3239,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3239,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3241,1
    - Dst: xmldata_root_element_start
      Src: /src/postgres/src/backend/utils/adt/xml.c:3243,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:3244,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3247,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/xml.c:3249,1
    - Dst: schema_get_xml_visible_tables
      Src: /src/postgres/src/backend/utils/adt/xml.c:3251,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3255,1
    - Dst: table_to_xml_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3258,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3261,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:3262,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/xml.c:3265,1
    - Dst: xmldata_root_element_end
      Src: /src/postgres/src/backend/utils/adt/xml.c:3267,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: 3270
      start: 3230
    functionDepth: 8
    functionLinenumber: 3230
    functionLinenumberEnd: 3270
    functionName: schema_to_xml_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - SPI_connect
    - appendStringInfo
    - makeStringInfo
    - xmldata_root_element_start
    - appendStringInfoChar
    - appendBinaryStringInfo
    - get_namespace_name
    - schema_get_xml_visible_tables
    - xmldata_root_element_end
    - table_to_xml_internal
    - SPI_finish
    - lfirst_oid
    - map_sql_identifier_to_xml_name
    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:3255,1
    - Dst: table_to_xml_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3258,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3261,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:3262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3263
      start: 3253
    functionDepth: 4
    functionLinenumber: 3253
    functionLinenumberEnd: 3263
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 465
    functionsReached:
    - appendStringInfoChar
    - table_to_xml_internal
    - lfirst_oid
    - appendBinaryStringInfo
    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:3276,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3277,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3278,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:3279,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3279,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/xml.c:3284,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/utils/adt/xml.c:3285,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:3287,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:3287,1
    - Dst: schema_to_xml_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3287,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3289
      start: 3273
    functionDepth: 9
    functionLinenumber: 3273
    functionLinenumberEnd: 3289
    functionName: schema_to_xml
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - schema_to_xml_internal
    - NameStr
    - PG_GETARG_TEXT_PP
    - PG_RETURN_XML_P
    - stringinfo_to_xmltype
    - PG_GETARG_NAME
    - PG_GETARG_BOOL
    - LookupExplicitNamespace
    - text_to_cstring
    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:3298,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/xml.c:3301,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3302,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3307,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - result
    - targetns
    argTypes:
    - StringInfo
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3309
      start: 3295
    functionDepth: 2
    functionLinenumber: 3295
    functionLinenumberEnd: 3309
    functionName: xsd_schema_element_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - appendStringInfoString
    - strlen
    - appendStringInfo
    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:3315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - result
    argTypes:
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3316
      start: 3312
    functionDepth: 2
    functionLinenumber: 3312
    functionLinenumberEnd: 3316
    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:3329,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/utils/adt/xml.c:3331,1
    - Dst: xsd_schema_element_start
      Src: /src/postgres/src/backend/utils/adt/xml.c:3333,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/xml.c:3335,1
    - Dst: schema_get_xml_visible_tables
      Src: /src/postgres/src/backend/utils/adt/xml.c:3337,1
    - Dst: table_open
      Src: /src/postgres/src/backend/utils/adt/xml.c:3344,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3344,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/xml.c:3345,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/utils/adt/xml.c:3345,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/xml.c:3346,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3349,1
    - Dst: map_sql_typecoll_to_xmlschema_types
      Src: /src/postgres/src/backend/utils/adt/xml.c:3350,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3352,1
    - Dst: map_sql_schema_to_xmlschema_types
      Src: /src/postgres/src/backend/utils/adt/xml.c:3353,1
    - Dst: xsd_schema_element_end
      Src: /src/postgres/src/backend/utils/adt/xml.c:3356,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/xml.c:3358,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 4
    argNames:
    - schemaname
    - nulls
    - tableforest
    - targetns
    argTypes:
    - char*
    - bool
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3361
      start: 3319
    functionDepth: 8
    functionLinenumber: 3319
    functionLinenumberEnd: 3361
    functionName: schema_to_xmlschema_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xsd_schema_element_start
    - SPI_connect
    - CreateTupleDescCopy
    - table_open
    - makeStringInfo
    - appendStringInfoString
    - table_close
    - schema_get_xml_visible_tables
    - map_sql_typecoll_to_xmlschema_types
    - SPI_finish
    - lappend
    - map_sql_schema_to_xmlschema_types
    - LookupExplicitNamespace
    - lfirst_oid
    - xsd_schema_element_end
    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:3344,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3344,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/xml.c:3345,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/utils/adt/xml.c:3345,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/xml.c:3346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3347
      start: 3340
    functionDepth: 6
    functionLinenumber: 3340
    functionLinenumberEnd: 3347
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 465
    functionsReached:
    - CreateTupleDescCopy
    - table_open
    - lappend
    - table_close
    - lfirst_oid
    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:3367,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3368,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3369,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:3370,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3370,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:3372,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:3372,1
    - Dst: schema_to_xmlschema_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3372,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/xml.c:3372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3374
      start: 3364
    functionDepth: 9
    functionLinenumber: 3364
    functionLinenumberEnd: 3374
    functionName: schema_to_xmlschema
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - NameStr
    - PG_GETARG_TEXT_PP
    - PG_RETURN_XML_P
    - stringinfo_to_xmltype
    - PG_GETARG_NAME
    - schema_to_xmlschema_internal
    - PG_GETARG_BOOL
    - text_to_cstring
    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:3380,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3381,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3382,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:3383,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3383,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/xml.c:3388,1
    - Dst: LookupExplicitNamespace
      Src: /src/postgres/src/backend/utils/adt/xml.c:3389,1
    - Dst: schema_to_xmlschema_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3391,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:3394,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:3394,1
    - Dst: schema_to_xml_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3397
      start: 3377
    functionDepth: 9
    functionLinenumber: 3377
    functionLinenumberEnd: 3397
    functionName: schema_to_xml_and_xmlschema
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - schema_to_xml_internal
    - NameStr
    - PG_GETARG_TEXT_PP
    - PG_RETURN_XML_P
    - stringinfo_to_xmltype
    - PG_GETARG_NAME
    - schema_to_xmlschema_internal
    - PG_GETARG_BOOL
    - LookupExplicitNamespace
    - text_to_cstring
    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:3414,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3414,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3416,1
    - Dst: xmldata_root_element_start
      Src: /src/postgres/src/backend/utils/adt/xml.c:3418,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:3419,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3422,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/xml.c:3424,1
    - Dst: database_get_xml_visible_schemas
      Src: /src/postgres/src/backend/utils/adt/xml.c:3426,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3430,1
    - Dst: schema_to_xml_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3433,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3436,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:3437,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/xml.c:3440,1
    - Dst: xmldata_root_element_end
      Src: /src/postgres/src/backend/utils/adt/xml.c:3442,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 4
    argNames:
    - xmlschema
    - nulls
    - tableforest
    - targetns
    argTypes:
    - char*
    - bool
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3445
      start: 3405
    functionDepth: 9
    functionLinenumber: 3405
    functionLinenumberEnd: 3445
    functionName: database_to_xml_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - schema_to_xml_internal
    - SPI_connect
    - database_get_xml_visible_schemas
    - appendStringInfo
    - xmldata_root_element_start
    - appendStringInfoChar
    - makeStringInfo
    - appendBinaryStringInfo
    - get_database_name
    - xmldata_root_element_end
    - SPI_finish
    - lfirst_oid
    - map_sql_identifier_to_xml_name
    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:3430,1
    - Dst: schema_to_xml_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3433,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3436,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:3437,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3438
      start: 3428
    functionDepth: 9
    functionLinenumber: 3428
    functionLinenumberEnd: 3438
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 465
    functionsReached:
    - schema_to_xml_internal
    - lfirst_oid
    - appendStringInfoChar
    - appendBinaryStringInfo
    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:3451,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3452,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:3453,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3453,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:3455,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:3455,1
    - Dst: database_to_xml_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3455,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3457
      start: 3448
    functionDepth: 10
    functionLinenumber: 3448
    functionLinenumberEnd: 3457
    functionName: database_to_xml
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - PG_RETURN_XML_P
    - database_to_xml_internal
    - stringinfo_to_xmltype
    - PG_GETARG_BOOL
    - text_to_cstring
    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:3470,1
    - Dst: xsd_schema_element_start
      Src: /src/postgres/src/backend/utils/adt/xml.c:3472,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/xml.c:3474,1
    - Dst: database_get_xml_visible_tables
      Src: /src/postgres/src/backend/utils/adt/xml.c:3476,1
    - Dst: database_get_xml_visible_schemas
      Src: /src/postgres/src/backend/utils/adt/xml.c:3477,1
    - Dst: table_open
      Src: /src/postgres/src/backend/utils/adt/xml.c:3484,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3484,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/xml.c:3485,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/utils/adt/xml.c:3485,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/xml.c:3486,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3489,1
    - Dst: map_sql_typecoll_to_xmlschema_types
      Src: /src/postgres/src/backend/utils/adt/xml.c:3490,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3492,1
    - Dst: map_sql_catalog_to_xmlschema_types
      Src: /src/postgres/src/backend/utils/adt/xml.c:3493,1
    - Dst: xsd_schema_element_end
      Src: /src/postgres/src/backend/utils/adt/xml.c:3495,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/xml.c:3497,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 3
    argNames:
    - nulls
    - tableforest
    - targetns
    argTypes:
    - bool
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3500
      start: 3460
    functionDepth: 8
    functionLinenumber: 3460
    functionLinenumberEnd: 3500
    functionName: database_to_xmlschema_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xsd_schema_element_start
    - SPI_connect
    - database_get_xml_visible_schemas
    - table_open
    - makeStringInfo
    - CreateTupleDescCopy
    - appendStringInfoString
    - map_sql_typecoll_to_xmlschema_types
    - SPI_finish
    - lappend
    - map_sql_catalog_to_xmlschema_types
    - table_close
    - lfirst_oid
    - database_get_xml_visible_tables
    - xsd_schema_element_end
    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:3484,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3484,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/xml.c:3485,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/utils/adt/xml.c:3485,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/xml.c:3486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3487
      start: 3480
    functionDepth: 6
    functionLinenumber: 3480
    functionLinenumberEnd: 3487
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 465
    functionsReached:
    - CreateTupleDescCopy
    - table_open
    - lappend
    - table_close
    - lfirst_oid
    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:3506,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3507,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:3508,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3508,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:3510,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:3510,1
    - Dst: database_to_xmlschema_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3510,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3512
      start: 3503
    functionDepth: 9
    functionLinenumber: 3503
    functionLinenumberEnd: 3512
    functionName: database_to_xmlschema
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - PG_RETURN_XML_P
    - stringinfo_to_xmltype
    - PG_GETARG_BOOL
    - database_to_xmlschema_internal
    - text_to_cstring
    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:3518,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:3519,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/xml.c:3520,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/xml.c:3520,1
    - Dst: database_to_xmlschema_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3523,1
    - Dst: PG_RETURN_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:3525,1
    - Dst: stringinfo_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:3525,1
    - Dst: database_to_xml_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:3525,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3527
      start: 3515
    functionDepth: 10
    functionLinenumber: 3515
    functionLinenumberEnd: 3527
    functionName: database_to_xml_and_xmlschema
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - PG_RETURN_XML_P
    - database_to_xml_internal
    - stringinfo_to_xmltype
    - PG_GETARG_BOOL
    - database_to_xmlschema_internal
    - text_to_cstring
    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:3539,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3542,1
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3543,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3545,1
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3546,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3548,1
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3549,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3551,1
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3552,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 4
    argNames:
    - a
    - b
    - c
    - d
    argTypes:
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3555
      start: 3534
    functionDepth: 4
    functionLinenumber: 3534
    functionLinenumberEnd: 3555
    functionName: map_multipart_sql_identifier_to_xml_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - initStringInfo
    - appendStringInfoString
    - map_sql_identifier_to_xml_name
    - appendStringInfo
    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:3575,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3577,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/xml.c:3582,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/xml.c:3582,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3583,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:3584,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/xml.c:3585,1
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3587,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/xml.c:3587,1
    - Dst: map_multipart_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3590,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3591,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3592,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/xml.c:3593,1
    - Dst: map_multipart_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3595,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3596,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3597,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/xml.c:3598,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/xml.c:3600,1
    - Dst: xsd_schema_element_start
      Src: /src/postgres/src/backend/utils/adt/xml.c:3613,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3615,1
    - Dst: map_sql_typecoll_to_xmlschema_types
      Src: /src/postgres/src/backend/utils/adt/xml.c:3616,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/utils/adt/xml.c:3616,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3618,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/xml.c:3625,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3629,1
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3631,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/xml.c:3631,1
    - Dst: map_sql_type_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3633,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3637,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:3651,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3656,1
    - Dst: xsd_schema_element_end
      Src: /src/postgres/src/backend/utils/adt/xml.c:3660,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: 3663
      start: 3565
    functionDepth: 5
    functionLinenumber: 3565
    functionLinenumberEnd: 3663
    functionName: map_sql_table_to_xmlschema
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 5
    functionsReached:
    - map_multipart_sql_identifier_to_xml_name
    - HeapTupleIsValid
    - map_sql_typecoll_to_xmlschema_types
    - NameStr
    - ReleaseSysCache
    - GETSTRUCT
    - xsd_schema_element_start
    - appendStringInfoString
    - TupleDescAttr
    - get_namespace_name
    - elog
    - OidIsValid
    - ObjectIdGetDatum
    - map_sql_identifier_to_xml_name
    - appendStringInfo
    - list_make1
    - SearchSysCache1
    - map_sql_type_to_xml_name
    - get_database_name
    - initStringInfo
    - xsd_schema_element_end
    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:3681,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3682,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3684,1
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3686,1
    - Dst: map_multipart_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3688,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3693,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3696,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3699,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3704,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3705,1
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3706,1
    - Dst: map_multipart_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3707,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3713,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3717,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3723,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3726,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3728,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3731,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: 3736
      start: 3670
    functionDepth: 5
    functionLinenumber: 3670
    functionLinenumberEnd: 3736
    functionName: map_sql_schema_to_xmlschema_types
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - map_multipart_sql_identifier_to_xml_name
    - get_rel_name
    - appendStringInfo
    - appendStringInfoString
    - get_namespace_name
    - get_database_name
    - initStringInfo
    - lfirst_oid
    - map_sql_identifier_to_xml_name
    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:3704,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3705,1
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3706,1
    - Dst: map_multipart_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3707,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3713,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3717,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3720
      start: 3702
    functionDepth: 5
    functionLinenumber: 3702
    functionLinenumberEnd: 3720
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 465
    functionsReached:
    - map_multipart_sql_identifier_to_xml_name
    - get_rel_name
    - appendStringInfo
    - lfirst_oid
    - map_sql_identifier_to_xml_name
    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:3753,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3755,1
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3757,1
    - Dst: map_multipart_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3759,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3764,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3766,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3771,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3772,1
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3773,1
    - Dst: map_multipart_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3774,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3779,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3784,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3786,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3789,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: 3794
      start: 3743
    functionDepth: 5
    functionLinenumber: 3743
    functionLinenumberEnd: 3794
    functionName: map_sql_catalog_to_xmlschema_types
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - map_multipart_sql_identifier_to_xml_name
    - appendStringInfo
    - appendStringInfoString
    - get_namespace_name
    - get_database_name
    - initStringInfo
    - lfirst_oid
    - map_sql_identifier_to_xml_name
    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:3771,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3772,1
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3773,1
    - Dst: map_multipart_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3774,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3779,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3782
      start: 3769
    functionDepth: 5
    functionLinenumber: 3769
    functionLinenumberEnd: 3782
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 465
    functionsReached:
    - map_multipart_sql_identifier_to_xml_name
    - appendStringInfo
    - get_namespace_name
    - lfirst_oid
    - map_sql_identifier_to_xml_name
    linkageType: ''
    returnType: void
    signature: void foreach(cell, nspid_list)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3805,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3811,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3813,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3817,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3819,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3823,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3825,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3830,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3833,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3836,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3839,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3842,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3845,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3849,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3851,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3855,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3857,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3861,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3863,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3867,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3869,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3872,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3875,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/xml.c:3882,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/xml.c:3882,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3883,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:3884,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/xml.c:3885,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3887,1
    - Dst: map_multipart_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3888,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3889,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:3890,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/xml.c:3891,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/xml.c:3893,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 72
    argCount: 2
    argNames:
    - typeoid
    - typmod
    argTypes:
    - Oid
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3898
      start: 3800
    functionDepth: 5
    functionLinenumber: 3800
    functionLinenumberEnd: 3898
    functionName: map_sql_type_to_xml_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 1
    functionsReached:
    - map_multipart_sql_identifier_to_xml_name
    - NameStr
    - ReleaseSysCache
    - appendStringInfo
    - HeapTupleIsValid
    - appendStringInfoString
    - get_namespace_name
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - get_database_name
    - initStringInfo
    - 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:3916,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/xml.c:3920,1
    - Dst: list_append_unique_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3924,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3931,1
    - Dst: getBaseType
      Src: /src/postgres/src/backend/utils/adt/xml.c:3932,1
    - Dst: list_append_unique_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3935,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3939,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3943,1
    - Dst: map_sql_type_to_xmlschema_type
      Src: /src/postgres/src/backend/utils/adt/xml.c:3944,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3944,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - tupdesc_list
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3949
      start: 3905
    functionDepth: 7
    functionLinenumber: 3905
    functionLinenumberEnd: 3949
    functionName: map_sql_typecoll_to_xmlschema_types
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 3
    functionsReached:
    - list_append_unique_oid
    - appendStringInfo
    - TupleDescAttr
    - map_sql_type_to_xmlschema_type
    - initStringInfo
    - lfirst_oid
    - lfirst
    - getBaseType
    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:3916,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/xml.c:3920,1
    - Dst: list_append_unique_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3924,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3926
      start: 3914
    functionDepth: 7
    functionLinenumber: 3914
    functionLinenumberEnd: 3926
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 465
    functionsReached:
    - list_append_unique_oid
    - TupleDescAttr
    - lfirst
    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:3931,1
    - Dst: getBaseType
      Src: /src/postgres/src/backend/utils/adt/xml.c:3932,1
    - Dst: list_append_unique_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3935,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3936
      start: 3929
    functionDepth: 7
    functionLinenumber: 3929
    functionLinenumberEnd: 3936
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 465
    functionsReached:
    - list_append_unique_oid
    - lfirst_oid
    - getBaseType
    linkageType: ''
    returnType: void
    signature: void foreach(cell0, uniquetypes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3943,1
    - Dst: map_sql_type_to_xmlschema_type
      Src: /src/postgres/src/backend/utils/adt/xml.c:3944,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/xml.c:3944,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3946
      start: 3941
    functionDepth: 2
    functionLinenumber: 3941
    functionLinenumberEnd: 3946
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 465
    functionsReached:
    - lfirst_oid
    - map_sql_type_to_xmlschema_type
    - appendStringInfo
    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:3964,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3966,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3970,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3979,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3987,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:3990,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:3993,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:4005,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:4015,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:4024,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:4033,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:4043,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:4048,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:4053,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:4063,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:4068,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:4073,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:4086,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:4091,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:4096,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:4104,1
    - Dst: get_typtype
      Src: /src/postgres/src/backend/utils/adt/xml.c:4111,1
    - Dst: getBaseTypeAndTypmod
      Src: /src/postgres/src/backend/utils/adt/xml.c:4116,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:4118,1
    - Dst: map_sql_type_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:4120,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:4124,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 71
    argCount: 2
    argNames:
    - typeoid
    - typmod
    argTypes:
    - Oid
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4128
      start: 3960
    functionDepth: 6
    functionLinenumber: 3960
    functionLinenumberEnd: 4128
    functionName: map_sql_type_to_xmlschema_type
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 2
    functionsReached:
    - appendStringInfo
    - appendStringInfoString
    - getBaseTypeAndTypmod
    - get_typtype
    - map_sql_type_to_xml_name
    - initStringInfo
    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:4144,1
    - Dst: xmldata_root_element_start
      Src: /src/postgres/src/backend/utils/adt/xml.c:4154,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:4156,1
    - Dst: map_sql_identifier_to_xml_name
      Src: /src/postgres/src/backend/utils/adt/xml.c:4164,1
    - Dst: SPI_fname
      Src: /src/postgres/src/backend/utils/adt/xml.c:4164,1
    - Dst: SPI_getbinval
      Src: /src/postgres/src/backend/utils/adt/xml.c:4166,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:4173,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:4176,1
    - Dst: map_sql_value_to_xml_value
      Src: /src/postgres/src/backend/utils/adt/xml.c:4178,1
    - Dst: SPI_gettypeid
      Src: /src/postgres/src/backend/utils/adt/xml.c:4179,1
    - Dst: xmldata_root_element_end
      Src: /src/postgres/src/backend/utils/adt/xml.c:4185,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/xml.c:4186,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/xml.c:4189,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: 4190
      start: 4135
    functionDepth: 5
    functionLinenumber: 4135
    functionLinenumberEnd: 4190
    functionName: SPI_sql_row_to_xmlelement
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 2
    functionsReached:
    - appendStringInfo
    - xmldata_root_element_start
    - SPI_getbinval
    - appendStringInfoString
    - SPI_gettypeid
    - map_sql_value_to_xml_value
    - appendStringInfoChar
    - SPI_fname
    - xmldata_root_element_end
    - map_sql_identifier_to_xml_name
    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:4216,1
    - Dst: xmlBufferCreate
      Src: /src/postgres/src/backend/utils/adt/xml.c:4220,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4222,1
    - Dst: xmlCopyNode
      Src: /src/postgres/src/backend/utils/adt/xml.c:4237,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4239,1
    - Dst: xmlNodeDump
      Src: /src/postgres/src/backend/utils/adt/xml.c:4244,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4246,1
    - Dst: xmlBuffer_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:4249,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/backend/utils/adt/xml.c:4251,1
    - Dst: nodefree
      Src: /src/postgres/src/backend/utils/adt/xml.c:4254,1
    - Dst: xmlBufferFree
      Src: /src/postgres/src/backend/utils/adt/xml.c:4256,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:4258,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:4264,1
    - Dst: xmlXPathCastNodeToString
      Src: /src/postgres/src/backend/utils/adt/xml.c:4268,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4270,1
    - Dst: escape_xml
      Src: /src/postgres/src/backend/utils/adt/xml.c:4274,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/xml.c:4276,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/xml.c:4277,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/backend/utils/adt/xml.c:4279,1
    - Dst: xmlFree
      Src: /src/postgres/src/backend/utils/adt/xml.c:4282,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:4284,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 2
    argNames:
    - cur
    - xmlerrcxt
    argTypes:
    - xmlNodePtr
    - PgXmlErrorContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4288
      start: 4205
    functionDepth: 4
    functionLinenumber: 4205
    functionLinenumberEnd: 4288
    functionName: xml_xmlnodetoxmltype
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xmlXPathCastNodeToString
    - xml_ereport
    - xmlCopyNode
    - xmlBuffer_to_xmltype
    - PG_END_TRY
    - pfree
    - PG_TRY
    - xmlBufferFree
    - escape_xml
    - cstring_to_text
    - xmlFree
    - xmlBufferCreate
    - nodefree
    - PG_FINALLY
    - 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:4324,1
    - Dst: xml_xmlnodetoxmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:4324,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/utils/adt/xml.c:4326,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/utils/adt/xml.c:4336,1
    - Dst: Float8GetDatum
      Src: /src/postgres/src/backend/utils/adt/xml.c:4343,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/xml.c:4350,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:4355,1
    - Dst: map_sql_value_to_xml_value
      Src: /src/postgres/src/backend/utils/adt/xml.c:4361,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/xml.c:4362,1
    - Dst: cstring_to_xmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:4362,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/utils/adt/xml.c:4363,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 3
    argNames:
    - xpathobj
    - astate
    - xmlerrcxt
    argTypes:
    - xmlXPathObjectPtr
    - ArrayBuildState*
    - PgXmlErrorContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4366
      start: 4302
    functionDepth: 5
    functionLinenumber: 4302
    functionLinenumberEnd: 4366
    functionName: xml_xpathobjtoxmlarray
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - BoolGetDatum
    - cstring_to_xmltype
    - map_sql_value_to_xml_value
    - Float8GetDatum
    - accumArrayResult
    - xml_xmlnodetoxmltype
    - PointerGetDatum
    - elog
    - CStringGetDatum
    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:4411,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/utils/adt/xml.c:4416,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4419,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:4420,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:4421,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/xml.c:4422,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/xml.c:4424,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/utils/adt/xml.c:4424,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/xml.c:4426,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/xml.c:4430,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/xml.c:4440,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/utils/adt/xml.c:4441,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/xml.c:4442,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4444,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:4445,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:4446,1
    - Dst: pg_xmlCharStrndup
      Src: /src/postgres/src/backend/utils/adt/xml.c:4448,1
    - Dst: pg_xmlCharStrndup
      Src: /src/postgres/src/backend/utils/adt/xml.c:4449,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/xml.c:4449,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/xml.c:4458,1
    - Dst: parse_xml_decl
      Src: /src/postgres/src/backend/utils/adt/xml.c:4459,1
    - Dst: pg_xml_init
      Src: /src/postgres/src/backend/utils/adt/xml.c:4461,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:4463,1
    - Dst: xmlInitParser
      Src: /src/postgres/src/backend/utils/adt/xml.c:4465,1
    - Dst: xmlNewParserCtxt
      Src: /src/postgres/src/backend/utils/adt/xml.c:4471,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4473,1
    - Dst: xmlCtxtReadMemory
      Src: /src/postgres/src/backend/utils/adt/xml.c:4475,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4478,1
    - Dst: xmlXPathNewContext
      Src: /src/postgres/src/backend/utils/adt/xml.c:4480,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4482,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4496,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:4497,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:4498,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/xml.c:4499,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/xml.c:4500,1
    - Dst: xmlXPathRegisterNs
      Src: /src/postgres/src/backend/utils/adt/xml.c:4501,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4504,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:4505,1
    - Dst: xmlXPathCtxtCompile
      Src: /src/postgres/src/backend/utils/adt/xml.c:4516,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4518,1
    - Dst: xmlXPathCompiledEval
      Src: /src/postgres/src/backend/utils/adt/xml.c:4528,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4530,1
    - Dst: xml_xpathobjtoxmlarray
      Src: /src/postgres/src/backend/utils/adt/xml.c:4537,1
    - Dst: xml_xpathobjtoxmlarray
      Src: /src/postgres/src/backend/utils/adt/xml.c:4539,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/utils/adt/xml.c:4541,1
    - Dst: xmlXPathFreeObject
      Src: /src/postgres/src/backend/utils/adt/xml.c:4544,1
    - Dst: xmlXPathFreeCompExpr
      Src: /src/postgres/src/backend/utils/adt/xml.c:4546,1
    - Dst: xmlXPathFreeContext
      Src: /src/postgres/src/backend/utils/adt/xml.c:4548,1
    - Dst: xmlFreeDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:4550,1
    - Dst: xmlFreeParserCtxt
      Src: /src/postgres/src/backend/utils/adt/xml.c:4552,1
    - Dst: pg_xml_done
      Src: /src/postgres/src/backend/utils/adt/xml.c:4554,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/utils/adt/xml.c:4556,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:4558,1
    - Dst: xmlXPathFreeObject
      Src: /src/postgres/src/backend/utils/adt/xml.c:4560,1
    - Dst: xmlXPathFreeCompExpr
      Src: /src/postgres/src/backend/utils/adt/xml.c:4561,1
    - Dst: xmlXPathFreeContext
      Src: /src/postgres/src/backend/utils/adt/xml.c:4562,1
    - Dst: xmlFreeDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:4563,1
    - Dst: xmlFreeParserCtxt
      Src: /src/postgres/src/backend/utils/adt/xml.c:4564,1
    - Dst: pg_xml_done
      Src: /src/postgres/src/backend/utils/adt/xml.c:4566,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: 4567
      start: 4380
    functionDepth: 6
    functionLinenumber: 4380
    functionLinenumberEnd: 4567
    functionName: xpath_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - parse_xml_decl
    - pg_xml_done
    - xmlXPathCompiledEval
    - xmlInitParser
    - errdetail
    - xmlFreeDoc
    - xml_ereport
    - ARR_DIMS
    - PG_RE_THROW
    - deconstruct_array_builtin
    - GetDatabaseEncoding
    - xmlCtxtReadMemory
    - xmlNewParserCtxt
    - xmlXPathFreeObject
    - pg_xmlCharStrndup
    - errmsg
    - VARSIZE
    - VARDATA
    - xmlXPathNewContext
    - xmlXPathRegisterNs
    - VARSIZE_ANY_EXHDR
    - ARR_ELEMTYPE
    - Assert
    - PG_END_TRY
    - PG_TRY
    - xmlXPathCtxtCompile
    - xmlFreeParserCtxt
    - ARR_NDIM
    - TextDatumGetCString
    - PG_CATCH
    - xml_xpathobjtoxmlarray
    - ereport
    - xmlXPathFreeCompExpr
    - xmlXPathFreeContext
    - VARDATA_ANY
    - errcode
    - pg_xml_init
    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:4581,1
    - Dst: PG_GETARG_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:4582,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:4583,1
    - Dst: initArrayResult
      Src: /src/postgres/src/backend/utils/adt/xml.c:4586,1
    - Dst: xpath_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:4587,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/xml.c:4589,1
    - Dst: makeArrayResult
      Src: /src/postgres/src/backend/utils/adt/xml.c:4589,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:4591,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4594
      start: 4577
    functionDepth: 7
    functionLinenumber: 4577
    functionLinenumberEnd: 4594
    functionName: xpath
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xpath_internal
    - NO_XML_SUPPORT
    - PG_RETURN_DATUM
    - PG_GETARG_TEXT_PP
    - makeArrayResult
    - PG_GETARG_XML_P
    - initArrayResult
    - PG_GETARG_ARRAYTYPE_P
    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:4604,1
    - Dst: PG_GETARG_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:4605,1
    - Dst: xpath_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:4608,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:4611,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:4613,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4616
      start: 4600
    functionDepth: 7
    functionLinenumber: 4600
    functionLinenumberEnd: 4616
    functionName: xmlexists
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - NO_XML_SUPPORT
    - xpath_internal
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_XML_P
    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:4627,1
    - Dst: PG_GETARG_XML_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:4628,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/xml.c:4629,1
    - Dst: xpath_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:4632,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:4635,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:4637,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4640
      start: 4623
    functionDepth: 7
    functionLinenumber: 4623
    functionLinenumberEnd: 4640
    functionName: xpath_exists
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xpath_internal
    - NO_XML_SUPPORT
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_XML_P
    - PG_GETARG_ARRAYTYPE_P
    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:4656,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/xml.c:4657,1
    - Dst: xmlFreeDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:4659,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - data
    - xmloption_arg
    argTypes:
    - text*
    - XmlOptionType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4662
      start: 4647
    functionDepth: 5
    functionLinenumber: 4647
    functionLinenumberEnd: 4662
    functionName: wellformed_xml
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xmlFreeDoc
    - xml_parse
    - GetDatabaseEncoding
    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:4669,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:4671,1
    - Dst: wellformed_xml
      Src: /src/postgres/src/backend/utils/adt/xml.c:4671,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:4673,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4676
      start: 4665
    functionDepth: 6
    functionLinenumber: 4665
    functionLinenumberEnd: 4676
    functionName: xml_is_well_formed
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - wellformed_xml
    - NO_XML_SUPPORT
    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:4682,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:4684,1
    - Dst: wellformed_xml
      Src: /src/postgres/src/backend/utils/adt/xml.c:4684,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:4686,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4689
      start: 4678
    functionDepth: 6
    functionLinenumber: 4678
    functionLinenumberEnd: 4689
    functionName: xml_is_well_formed_document
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - wellformed_xml
    - NO_XML_SUPPORT
    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:4695,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/xml.c:4697,1
    - Dst: wellformed_xml
      Src: /src/postgres/src/backend/utils/adt/xml.c:4697,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:4699,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4702
      start: 4691
    functionDepth: 6
    functionLinenumber: 4691
    functionLinenumberEnd: 4702
    functionName: xml_is_well_formed_content
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - wellformed_xml
    - NO_XML_SUPPORT
    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:4719,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:4720,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:4723,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - state
    - fname
    argTypes:
    - TableFuncScanState*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4726
      start: 4714
    functionDepth: 1
    functionLinenumber: 4714
    functionLinenumberEnd: 4726
    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
      Src: /src/postgres/src/backend/utils/adt/xml.c:4748,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/xml.c:4751,1
    - Dst: pg_xml_init
      Src: /src/postgres/src/backend/utils/adt/xml.c:4753,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:4755,1
    - Dst: xmlInitParser
      Src: /src/postgres/src/backend/utils/adt/xml.c:4757,1
    - Dst: xmlNewParserCtxt
      Src: /src/postgres/src/backend/utils/adt/xml.c:4759,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4761,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/utils/adt/xml.c:4764,1
    - Dst: xmlFreeParserCtxt
      Src: /src/postgres/src/backend/utils/adt/xml.c:4767,1
    - Dst: pg_xml_done
      Src: /src/postgres/src/backend/utils/adt/xml.c:4769,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/utils/adt/xml.c:4771,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:4773,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:4780,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - state
    - natts
    argTypes:
    - TableFuncScanState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4782
      start: 4740
    functionDepth: 4
    functionLinenumber: 4740
    functionLinenumberEnd: 4782
    functionName: XmlTableInitOpaque
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xml_ereport
    - PG_RE_THROW
    - PG_END_TRY
    - NO_XML_SUPPORT
    - PG_TRY
    - xmlFreeParserCtxt
    - PG_CATCH
    - xmlNewParserCtxt
    - palloc0
    - pg_xml_done
    - xmlInitParser
    - pg_xml_init
    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:4793,1
    - Dst: GetXmlTableBuilderPrivateData
      Src: /src/postgres/src/backend/utils/adt/xml.c:4800,1
    - Dst: xml_out_internal
      Src: /src/postgres/src/backend/utils/adt/xml.c:4806,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/xml.c:4808,1
    - Dst: pg_xmlCharStrndup
      Src: /src/postgres/src/backend/utils/adt/xml.c:4809,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:4811,1
    - Dst: xmlCtxtReadMemory
      Src: /src/postgres/src/backend/utils/adt/xml.c:4813,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4815,1
    - Dst: xmlXPathNewContext
      Src: /src/postgres/src/backend/utils/adt/xml.c:4817,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4819,1
    - Dst: PG_CATCH
      Src: /src/postgres/src/backend/utils/adt/xml.c:4823,1
    - Dst: xmlXPathFreeContext
      Src: /src/postgres/src/backend/utils/adt/xml.c:4826,1
    - Dst: xmlFreeDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:4828,1
    - Dst: PG_RE_THROW
      Src: /src/postgres/src/backend/utils/adt/xml.c:4830,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:4832,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:4837,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - state
    - value
    argTypes:
    - TableFuncScanState*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4839
      start: 4788
    functionDepth: 4
    functionLinenumber: 4788
    functionLinenumberEnd: 4839
    functionName: XmlTableSetDocument
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xml_ereport
    - PG_RE_THROW
    - PG_END_TRY
    - DatumGetXmlP
    - PG_TRY
    - NO_XML_SUPPORT
    - xmlCtxtReadMemory
    - PG_CATCH
    - GetXmlTableBuilderPrivateData
    - xmlXPathNewContext
    - xml_out_internal
    - xmlXPathFreeContext
    - pg_xmlCharStrndup
    - strlen
    - xmlFreeDoc
    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:4852,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:4853,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:4854,1
    - Dst: GetXmlTableBuilderPrivateData
      Src: /src/postgres/src/backend/utils/adt/xml.c:4855,1
    - Dst: xmlXPathRegisterNs
      Src: /src/postgres/src/backend/utils/adt/xml.c:4857,1
    - Dst: pg_xmlCharStrndup
      Src: /src/postgres/src/backend/utils/adt/xml.c:4858,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/xml.c:4858,1
    - Dst: pg_xmlCharStrndup
      Src: /src/postgres/src/backend/utils/adt/xml.c:4859,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/xml.c:4859,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4860,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:4863,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - state
    - name
    - uri
    argTypes:
    - TableFuncScanState*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4865
      start: 4845
    functionDepth: 3
    functionLinenumber: 4845
    functionLinenumberEnd: 4865
    functionName: XmlTableSetNamespace
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - errmsg
    - xml_ereport
    - NO_XML_SUPPORT
    - ereport
    - GetXmlTableBuilderPrivateData
    - xmlXPathRegisterNs
    - pg_xmlCharStrndup
    - errcode
    - strlen
    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:4878,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4881,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:4882,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:4883,1
    - Dst: pg_xmlCharStrndup
      Src: /src/postgres/src/backend/utils/adt/xml.c:4885,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/xml.c:4885,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/xml.c:4888,1
    - Dst: xmlXPathCtxtCompile
      Src: /src/postgres/src/backend/utils/adt/xml.c:4890,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4892,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:4895,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - state
    - path
    argTypes:
    - TableFuncScanState*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4897
      start: 4871
    functionDepth: 3
    functionLinenumber: 4871
    functionLinenumberEnd: 4897
    functionName: XmlTableSetRowFilter
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - errmsg
    - xml_ereport
    - Assert
    - NO_XML_SUPPORT
    - xmlXPathCtxtCompile
    - ereport
    - GetXmlTableBuilderPrivateData
    - pg_xmlCharStrndup
    - errcode
    - strlen
    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:4910,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/utils/adt/xml.c:4910,1
    - Dst: GetXmlTableBuilderPrivateData
      Src: /src/postgres/src/backend/utils/adt/xml.c:4912,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4915,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:4916,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:4917,1
    - Dst: pg_xmlCharStrndup
      Src: /src/postgres/src/backend/utils/adt/xml.c:4919,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/xml.c:4919,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/xml.c:4922,1
    - Dst: xmlXPathCtxtCompile
      Src: /src/postgres/src/backend/utils/adt/xml.c:4924,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4926,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:4929,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - state
    - path
    - colnum
    argTypes:
    - TableFuncScanState*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4931
      start: 4903
    functionDepth: 3
    functionLinenumber: 4903
    functionLinenumberEnd: 4931
    functionName: XmlTableSetColumnFilter
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - errmsg
    - xml_ereport
    - Assert
    - NO_XML_SUPPORT
    - xmlXPathCtxtCompile
    - ereport
    - GetXmlTableBuilderPrivateData
    - pg_xmlCharStrndup
    - PointerIsValid
    - errcode
    - strlen
    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:4944,1
    - Dst: xmlSetStructuredErrorFunc
      Src: /src/postgres/src/backend/utils/adt/xml.c:4947,1
    - Dst: xmlXPathCompiledEval
      Src: /src/postgres/src/backend/utils/adt/xml.c:4951,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:4953,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:4970,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - state
    argTypes:
    - TableFuncScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4973
      start: 4938
    functionDepth: 3
    functionLinenumber: 4938
    functionLinenumberEnd: 4973
    functionName: XmlTableFetchRow
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - xml_ereport
    - NO_XML_SUPPORT
    - GetXmlTableBuilderPrivateData
    - xmlXPathCompiledEval
    - xmlSetStructuredErrorFunc
    linkageType: ''
    returnType: bool
    signature: bool XmlTableFetchRow(TableFuncScanState *state)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: GetXmlTableBuilderPrivateData
      Src: /src/postgres/src/backend/utils/adt/xml.c:4992,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/xml.c:4994,1
    - Dst: xmlSetStructuredErrorFunc
      Src: /src/postgres/src/backend/utils/adt/xml.c:4999,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/xml.c:5003,1
    - Dst: PG_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:5005,1
    - Dst: xmlXPathCompiledEval
      Src: /src/postgres/src/backend/utils/adt/xml.c:5015,1
    - Dst: xml_ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:5017,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/xml.c:5046,1
    - Dst: xml_xmlnodetoxmltype
      Src: /src/postgres/src/backend/utils/adt/xml.c:5050,1
    - Dst: appendStringInfoText
      Src: /src/postgres/src/backend/utils/adt/xml.c:5053,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/xml.c:5062,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/xml.c:5063,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/xml.c:5064,1
    - Dst: xmlXPathCastNodeSetToString
      Src: /src/postgres/src/backend/utils/adt/xml.c:5066,1
    - Dst: xml_pstrdup_and_free
      Src: /src/postgres/src/backend/utils/adt/xml.c:5067,1
    - Dst: escape_xml
      Src: /src/postgres/src/backend/utils/adt/xml.c:5075,1
    - Dst: get_type_category_preferred
      Src: /src/postgres/src/backend/utils/adt/xml.c:5086,1
    - Dst: xmlXPathCastBooleanToString
      Src: /src/postgres/src/backend/utils/adt/xml.c:5089,1
    - Dst: xmlXPathCastNumberToString
      Src: /src/postgres/src/backend/utils/adt/xml.c:5091,1
    - Dst: xmlXPathCastBooleanToNumber
      Src: /src/postgres/src/backend/utils/adt/xml.c:5091,1
    - Dst: xml_pstrdup_and_free
      Src: /src/postgres/src/backend/utils/adt/xml.c:5093,1
    - Dst: xmlXPathCastNumberToString
      Src: /src/postgres/src/backend/utils/adt/xml.c:5099,1
    - Dst: xml_pstrdup_and_free
      Src: /src/postgres/src/backend/utils/adt/xml.c:5100,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/xml.c:5103,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/xml.c:5109,1
    - Dst: InputFunctionCall
      Src: /src/postgres/src/backend/utils/adt/xml.c:5112,1
    - Dst: PG_FINALLY
      Src: /src/postgres/src/backend/utils/adt/xml.c:5117,1
    - Dst: xmlXPathFreeObject
      Src: /src/postgres/src/backend/utils/adt/xml.c:5120,1
    - Dst: PG_END_TRY
      Src: /src/postgres/src/backend/utils/adt/xml.c:5122,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:5126,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: 5129
      start: 4983
    functionDepth: 5
    functionLinenumber: 4983
    functionLinenumberEnd: 5129
    functionName: XmlTableGetValue
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - errcode
    - xml_pstrdup_and_free
    - xmlXPathCompiledEval
    - xml_ereport
    - xmlXPathCastBooleanToString
    - InputFunctionCall
    - xmlXPathFreeObject
    - xml_xmlnodetoxmltype
    - escape_xml
    - xmlXPathCastBooleanToNumber
    - errmsg
    - elog
    - xmlXPathCastNumberToString
    - xmlSetStructuredErrorFunc
    - PG_FINALLY
    - appendStringInfoText
    - Assert
    - PG_END_TRY
    - xmlXPathCastNodeSetToString
    - PG_TRY
    - NO_XML_SUPPORT
    - ereport
    - GetXmlTableBuilderPrivateData
    - initStringInfo
    - get_type_category_preferred
    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:5141,1
    - Dst: xmlSetStructuredErrorFunc
      Src: /src/postgres/src/backend/utils/adt/xml.c:5144,1
    - Dst: xmlXPathFreeCompExpr
      Src: /src/postgres/src/backend/utils/adt/xml.c:5152,1
    - Dst: xmlXPathFreeObject
      Src: /src/postgres/src/backend/utils/adt/xml.c:5156,1
    - Dst: xmlXPathFreeCompExpr
      Src: /src/postgres/src/backend/utils/adt/xml.c:5158,1
    - Dst: xmlXPathFreeContext
      Src: /src/postgres/src/backend/utils/adt/xml.c:5160,1
    - Dst: xmlFreeDoc
      Src: /src/postgres/src/backend/utils/adt/xml.c:5162,1
    - Dst: xmlFreeParserCtxt
      Src: /src/postgres/src/backend/utils/adt/xml.c:5164,1
    - Dst: pg_xml_done
      Src: /src/postgres/src/backend/utils/adt/xml.c:5166,1
    - Dst: NO_XML_SUPPORT
      Src: /src/postgres/src/backend/utils/adt/xml.c:5173,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 1
    argNames:
    - state
    argTypes:
    - TableFuncScanState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5175
      start: 5135
    functionDepth: 2
    functionLinenumber: 5135
    functionLinenumberEnd: 5175
    functionName: XmlTableDestroyOpaque
    functionSourceFile: /src/postgres/src/backend/utils/adt/xml.c
    functionUses: 0
    functionsReached:
    - NO_XML_SUPPORT
    - xmlFreeParserCtxt
    - xmlXPathFreeObject
    - xmlXPathFreeCompExpr
    - GetXmlTableBuilderPrivateData
    - xmlXPathFreeContext
    - pg_xml_done
    - xmlSetStructuredErrorFunc
    - xmlFreeDoc
    linkageType: ''
    returnType: void
    signature: void XmlTableDestroyOpaque(TableFuncScanState *state)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:76,1
    - Dst: transformExpr
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:83,1
    - Dst: coerce_to_target_type
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:85,1
    - Dst: exprType
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:86,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:92,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:93,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:94,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:95,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:95,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:100,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:104,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:113,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:116,1
    - Dst: transformExpr
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:120,1
    - Dst: coerce_to_target_type
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:122,1
    - Dst: exprType
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:123,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:129,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:130,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:131,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:132,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:132,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:137,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:140,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:148,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:149,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:150,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:151,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:152,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: 165
      start: 55
    functionDepth: 6
    functionLinenumber: 55
    functionLinenumberEnd: 165
    functionName: array_subscript_transform
    functionSourceFile: /src/postgres/src/backend/utils/adt/arraysubs.c
    functionUses: 0
    functionsReached:
    - exprType
    - errmsg
    - Assert
    - transformExpr
    - exprLocation
    - lfirst_node
    - Int32GetDatum
    - parser_errposition
    - ereport
    - list_length
    - lappend
    - coerce_to_target_type
    - makeConst
    - errcode
    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:76,1
    - Dst: transformExpr
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:83,1
    - Dst: coerce_to_target_type
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:85,1
    - Dst: exprType
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:86,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:92,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:93,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:94,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:95,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:95,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:100,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:104,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:113,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:116,1
    - Dst: transformExpr
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:120,1
    - Dst: coerce_to_target_type
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:122,1
    - Dst: exprType
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:123,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:129,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:130,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:131,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:132,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:132,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:137,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:140,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 74
    functionDepth: 6
    functionLinenumber: 74
    functionLinenumberEnd: 141
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/arraysubs.c
    functionUses: 465
    functionsReached:
    - exprType
    - errmsg
    - Assert
    - transformExpr
    - exprLocation
    - lfirst_node
    - Int32GetDatum
    - parser_errposition
    - ereport
    - lappend
    - coerce_to_target_type
    - makeConst
    - errcode
    linkageType: ''
    returnType: void
    signature: void foreach(idx, indirection)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:197,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:198,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:199,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:203,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:216,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:217,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:218,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:222,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 180
    functionDepth: 2
    functionLinenumber: 180
    functionLinenumberEnd: 227
    functionName: array_subscript_check_subscripts
    functionSourceFile: /src/postgres/src/backend/utils/adt/arraysubs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - DatumGetInt32
    - errcode
    - ereport
    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:245,1
    - Dst: array_get_element
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 255
    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:273,1
    - Dst: array_get_slice
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 286
    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:322,1
    - Dst: construct_empty_array
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:322,1
    - Dst: array_set_element
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:326,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 294
    functionDepth: 1
    functionLinenumber: 294
    functionLinenumberEnd: 336
    functionName: array_subscript_assign
    functionSourceFile: /src/postgres/src/backend/utils/adt/arraysubs.c
    functionUses: 0
    functionsReached:
    - construct_empty_array
    - array_set_element
    - PointerGetDatum
    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:372,1
    - Dst: construct_empty_array
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:372,1
    - Dst: array_set_slice
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:376,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 344
    functionDepth: 1
    functionLinenumber: 344
    functionLinenumberEnd: 389
    functionName: array_subscript_assign_slice
    functionSourceFile: /src/postgres/src/backend/utils/adt/arraysubs.c
    functionUses: 0
    functionsReached:
    - array_set_slice
    - construct_empty_array
    - PointerGetDatum
    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:414,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 399
    functionDepth: 1
    functionLinenumber: 399
    functionLinenumberEnd: 422
    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:455,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 439
    functionDepth: 1
    functionLinenumber: 439
    functionLinenumberEnd: 468
    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:487,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:488,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:489,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:495,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:500,1
    - Dst: get_typlen
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:507,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:508,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - sbsref
    - sbsrefstate
    - methods
    argTypes:
    - SubscriptingRef*
    - SubscriptingRefState*
    - SubscriptExecSteps*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 473
    functionDepth: 2
    functionLinenumber: 473
    functionLinenumberEnd: 529
    functionName: array_exec_setup
    functionSourceFile: /src/postgres/src/backend/utils/adt/arraysubs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - get_typlenbyvalalign
    - ereport
    - elog
    - palloc
    - errcode
    - get_typlen
    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:550,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 539
    functionDepth: 1
    functionLinenumber: 539
    functionLinenumberEnd: 551
    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:577,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 566
    functionDepth: 1
    functionLinenumber: 566
    functionLinenumberEnd: 578
    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:588,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:591,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:601,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:603,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:606,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/arraysubs.c:610,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 585
    functionDepth: 1
    functionLinenumber: 585
    functionLinenumberEnd: 611
    functionName: array_subscript_handler_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/arraysubs.c
    functionUses: 0
    functionsReached:
    - linitial
    - PG_GETARG_POINTER
    - lsecond
    - 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: 4
    functionsReached:
    - parse_bool_with_len
    - strlen
    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:
    - errmsg
    - PG_GETARG_CSTRING
    - PG_RETURN_BOOL
    - ereturn
    - isspace
    - parse_bool_with_len
    - errcode
    - strlen
    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:
    - palloc
    - PG_RETURN_CSTRING
    - PG_GETARG_BOOL
    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
    - PG_RETURN_BOOL
    - pq_getmsgbyte
    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
    - PG_RETURN_BYTEA_P
    - pq_sendbyte
    - pq_begintypsend
    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_RETURN_BOOL
    - PG_GETARG_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_RETURN_BOOL
    - PG_GETARG_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_RETURN_BOOL
    - PG_GETARG_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_RETURN_BOOL
    - PG_GETARG_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_RETURN_BOOL
    - PG_GETARG_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_RETURN_BOOL
    - PG_GETARG_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:
    - hash_uint32
    - PG_GETARG_BOOL
    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:
    - PG_GETARG_INT64
    - hash_uint32_extended
    - 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_RETURN_BOOL
    - PG_GETARG_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_RETURN_BOOL
    - PG_GETARG_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:
    - MemoryContextAlloc
    - AggCheckCallContext
    - elog
    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:
    - makeBoolAggState
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - PG_GETARG_BOOL
    - PG_RETURN_POINTER
    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:
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - elog
    - PG_GETARG_BOOL
    - PG_RETURN_POINTER
    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_GETARG_POINTER
    - PG_RETURN_NULL
    - PG_RETURN_BOOL
    - PG_ARGISNULL
    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_GETARG_POINTER
    - PG_RETURN_NULL
    - PG_RETURN_BOOL
    - PG_ARGISNULL
    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:
    - palloc
    - PG_GETARG_INT16
    - pg_itoa
    - PG_RETURN_CSTRING
    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
    - PG_RETURN_INT16
    - pq_getmsgint
    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_sendint16
    - PG_GETARG_INT16
    - PG_RETURN_BYTEA_P
    - pq_begintypsend
    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: 1
    functionLinenumber: 113
    functionLinenumberEnd: 135
    functionName: buildint2vector
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 4
    functionsReached:
    - Int2VectorSize
    - SET_VARSIZE
    - palloc0
    - memcpy
    linkageType: ''
    returnType: int2vector
    signature: 'int2vector *

      buildint2vector(const int16 *int2s, int n)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/int.c:143,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/int.c:150,1
    - Dst: Int2VectorSize
      Src: /src/postgres/src/backend/utils/adt/int.c:150,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/int.c:157,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/int.c:165,1
    - Dst: Int2VectorSize
      Src: /src/postgres/src/backend/utils/adt/int.c:165,1
    - Dst: strtol
      Src: /src/postgres/src/backend/utils/adt/int.c:169,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/int.c:172,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:173,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:174,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/int.c:178,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:179,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:180,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/int.c:184,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:185,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:186,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/int.c:193,1
    - Dst: Int2VectorSize
      Src: /src/postgres/src/backend/utils/adt/int.c:193,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/int.c:200,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 140
    functionDepth: 2
    functionLinenumber: 140
    functionLinenumberEnd: 201
    functionName: int2vectorin
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_CSTRING
    - palloc0
    - ereturn
    - Int2VectorSize
    - strtol
    - SET_VARSIZE
    - isspace
    - repalloc
    - errcode
    - 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:209,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/int.c:216,1
    - Dst: pg_itoa
      Src: /src/postgres/src/backend/utils/adt/int.c:221,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/int.c:224,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 225
    functionName: int2vectorout
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - palloc
    - PG_RETURN_CSTRING
    - pg_itoa
    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:233,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/int.c:234,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/utils/adt/int.c:243,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/int.c:246,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/int.c:248,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/int.c:250,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/int.c:253,1
    - Dst: array_recv
      Src: /src/postgres/src/backend/utils/adt/int.c:253,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/int.c:255,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/int.c:258,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/utils/adt/int.c:259,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/utils/adt/int.c:260,1
    - Dst: ARR_LBOUND
      Src: /src/postgres/src/backend/utils/adt/int.c:261,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:262,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:263,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:264,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/int.c:266,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 230
    functionDepth: 2
    functionLinenumber: 230
    functionLinenumberEnd: 267
    functionName: int2vectorrecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - ARR_ELEMTYPE
    - errcode
    - LOCAL_FCINFO
    - InitFunctionCallInfoData
    - Assert
    - errmsg
    - PG_GETARG_POINTER
    - Int32GetDatum
    - ARR_NDIM
    - ereport
    - PointerGetDatum
    - array_recv
    - ARR_HASNULL
    - ARR_LBOUND
    - DatumGetPointer
    - ObjectIdGetDatum
    - PG_RETURN_POINTER
    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:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 272
    functionDepth: 1
    functionLinenumber: 272
    functionLinenumberEnd: 276
    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:289,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:291,1
    - Dst: pg_strtoint32_safe
      Src: /src/postgres/src/backend/utils/adt/int.c:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 292
    functionName: int4in
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_CSTRING
    - pg_strtoint32_safe
    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:300,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/int.c:301,1
    - Dst: pg_ltoa
      Src: /src/postgres/src/backend/utils/adt/int.c:303,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/int.c:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 305
    functionName: int4out
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - palloc
    - PG_RETURN_CSTRING
    - PG_GETARG_INT32
    - pg_ltoa
    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:313,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:315,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/int.c:315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 310
    functionDepth: 2
    functionLinenumber: 310
    functionLinenumberEnd: 316
    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:324,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/int.c:327,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/int.c:328,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/int.c:329,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/int.c:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 321
    functionDepth: 4
    functionLinenumber: 321
    functionLinenumberEnd: 330
    functionName: int4send
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - PG_RETURN_BYTEA_P
    - PG_GETARG_INT32
    - pq_sendint32
    - pq_begintypsend
    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:342,1
    - Dst: PG_RETURN_INT32
      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: 1
    functionLinenumber: 339
    functionLinenumberEnd: 345
    functionName: i2toi4
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_INT16
    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:350,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:352,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:352,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:353,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:354,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:355,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:357,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 347
    functionDepth: 2
    functionLinenumber: 347
    functionLinenumberEnd: 358
    functionName: i4toi2
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - PG_RETURN_INT16
    - unlikely
    - PG_GETARG_INT32
    - errcode
    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:364,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:365,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:367,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 361
    functionDepth: 1
    functionLinenumber: 361
    functionLinenumberEnd: 368
    functionName: int4_bool
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:374,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:375,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:377,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 371
    functionDepth: 1
    functionLinenumber: 371
    functionLinenumberEnd: 378
    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:398,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:399,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 395
    functionDepth: 1
    functionLinenumber: 395
    functionLinenumberEnd: 402
    functionName: int4eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:407,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:408,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 404
    functionDepth: 1
    functionLinenumber: 404
    functionLinenumberEnd: 411
    functionName: int4ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:416,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:417,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 413
    functionDepth: 1
    functionLinenumber: 413
    functionLinenumberEnd: 420
    functionName: int4lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:425,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:426,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:428,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 422
    functionDepth: 1
    functionLinenumber: 422
    functionLinenumberEnd: 429
    functionName: int4le
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:434,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:435,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:437,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 431
    functionDepth: 1
    functionLinenumber: 431
    functionLinenumberEnd: 438
    functionName: int4gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:443,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:444,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 440
    functionDepth: 1
    functionLinenumber: 440
    functionLinenumberEnd: 447
    functionName: int4ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:452,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:453,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:455,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 449
    functionDepth: 1
    functionLinenumber: 449
    functionLinenumberEnd: 456
    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:461,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:462,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 458
    functionDepth: 1
    functionLinenumber: 458
    functionLinenumberEnd: 465
    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:470,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:471,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:473,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 467
    functionDepth: 1
    functionLinenumber: 467
    functionLinenumberEnd: 474
    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:479,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:480,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:482,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 476
    functionDepth: 1
    functionLinenumber: 476
    functionLinenumberEnd: 483
    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:488,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:489,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:491,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 492
    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:497,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:498,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:500,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 494
    functionDepth: 1
    functionLinenumber: 494
    functionLinenumberEnd: 501
    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:506,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:507,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:509,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 503
    functionDepth: 1
    functionLinenumber: 503
    functionLinenumberEnd: 510
    functionName: int24eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:515,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:516,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:518,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 512
    functionDepth: 1
    functionLinenumber: 512
    functionLinenumberEnd: 519
    functionName: int24ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:524,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:525,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:527,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 521
    functionDepth: 1
    functionLinenumber: 521
    functionLinenumberEnd: 528
    functionName: int24lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:533,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:534,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:536,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 530
    functionDepth: 1
    functionLinenumber: 530
    functionLinenumberEnd: 537
    functionName: int24le
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:542,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:543,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:545,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 539
    functionDepth: 1
    functionLinenumber: 539
    functionLinenumberEnd: 546
    functionName: int24gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:551,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:552,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:554,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 548
    functionDepth: 1
    functionLinenumber: 548
    functionLinenumberEnd: 555
    functionName: int24ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:560,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:561,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:563,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 557
    functionDepth: 1
    functionLinenumber: 557
    functionLinenumberEnd: 564
    functionName: int42eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:569,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:570,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:572,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 566
    functionDepth: 1
    functionLinenumber: 566
    functionLinenumberEnd: 573
    functionName: int42ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:578,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:579,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:581,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 575
    functionDepth: 1
    functionLinenumber: 575
    functionLinenumberEnd: 582
    functionName: int42lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:587,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:588,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:590,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 584
    functionDepth: 1
    functionLinenumber: 584
    functionLinenumberEnd: 591
    functionName: int42le
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:596,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:597,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:599,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 593
    functionDepth: 1
    functionLinenumber: 593
    functionLinenumberEnd: 600
    functionName: int42gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:605,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:606,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 602
    functionDepth: 1
    functionLinenumber: 602
    functionLinenumberEnd: 609
    functionName: int42ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:625,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:626,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:627,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:628,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:629,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:633,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:634,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:635,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:640,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:640,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:647,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:651,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:653,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 622
    functionDepth: 2
    functionLinenumber: 622
    functionLinenumberEnd: 654
    functionName: in_range_int4_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_BOOL
    - ereport
    - pg_add_s32_overflow
    - unlikely
    - PG_GETARG_BOOL
    - PG_GETARG_INT32
    - errcode
    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:660,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/int.c:661,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/int.c:662,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/int.c:663,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:663,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/int.c:664,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/int.c:665,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 656
    functionDepth: 1
    functionLinenumber: 656
    functionLinenumberEnd: 666
    functionName: in_range_int4_int2
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - PG_GETARG_INT16
    - Int32GetDatum
    - DirectFunctionCall5
    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:672,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:673,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int.c:674,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:675,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:676,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:680,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:681,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:682,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:687,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:687,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:694,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:698,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:700,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 668
    functionDepth: 2
    functionLinenumber: 668
    functionLinenumberEnd: 701
    functionName: in_range_int4_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    - ereport
    - unlikely
    - pg_add_s64_overflow
    - PG_GETARG_BOOL
    - PG_GETARG_INT32
    - errcode
    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:707,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:708,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:709,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:710,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:711,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:715,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:716,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:717,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:722,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:722,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:729,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:733,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int.c:735,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 703
    functionDepth: 2
    functionLinenumber: 703
    functionLinenumberEnd: 736
    functionName: in_range_int2_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_BOOL
    - ereport
    - pg_add_s32_overflow
    - unlikely
    - PG_GETARG_INT16
    - PG_GETARG_BOOL
    - PG_GETARG_INT32
    - errcode
    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:742,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/int.c:743,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/int.c:744,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/int.c:745,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:745,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/int.c:746,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/int.c:747,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 738
    functionDepth: 1
    functionLinenumber: 738
    functionLinenumberEnd: 748
    functionName: in_range_int2_int2
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - PG_GETARG_INT16
    - Int32GetDatum
    - DirectFunctionCall5
    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:754,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/int.c:755,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:755,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/int.c:756,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:756,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/int.c:757,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/int.c:758,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/int.c:759,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 750
    functionDepth: 1
    functionLinenumber: 750
    functionLinenumberEnd: 760
    functionName: in_range_int2_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - Int32GetDatum
    - PG_GETARG_DATUM
    - PG_GETARG_INT16
    - DirectFunctionCall5
    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:773,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:775,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:776,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:777,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:778,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:779,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 770
    functionDepth: 2
    functionLinenumber: 770
    functionLinenumberEnd: 780
    functionName: int4um
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_INT32
    - ereport
    - unlikely
    - PG_GETARG_INT32
    - errcode
    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:785,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:787,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 782
    functionDepth: 1
    functionLinenumber: 782
    functionLinenumberEnd: 788
    functionName: int4up
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_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:793,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:794,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:797,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:797,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:798,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:799,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:800,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:801,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 790
    functionDepth: 2
    functionLinenumber: 790
    functionLinenumberEnd: 802
    functionName: int4pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_INT32
    - ereport
    - pg_add_s32_overflow
    - unlikely
    - PG_GETARG_INT32
    - errcode
    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:807,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:808,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:811,1
    - Dst: pg_sub_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:811,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:812,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:813,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:814,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:815,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 804
    functionDepth: 2
    functionLinenumber: 804
    functionLinenumberEnd: 816
    functionName: int4mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_INT32
    - ereport
    - unlikely
    - PG_GETARG_INT32
    - pg_sub_s32_overflow
    - errcode
    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:821,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:822,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:825,1
    - Dst: pg_mul_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:825,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:826,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:827,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:828,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:829,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 818
    functionDepth: 2
    functionLinenumber: 818
    functionLinenumberEnd: 830
    functionName: int4mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pg_mul_s32_overflow
    - PG_RETURN_INT32
    - ereport
    - unlikely
    - PG_GETARG_INT32
    - errcode
    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:835,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:836,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_NULL
      Src: /src/postgres/src/backend/utils/adt/int.c:845,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:856,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:857,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:858,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:859,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:861,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:868,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 832
    functionDepth: 2
    functionLinenumber: 832
    functionLinenumberEnd: 869
    functionName: int4div
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_INT32
    - ereport
    - unlikely
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    - errcode
    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:874,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:877,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:877,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:878,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:879,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:880,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:882,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 871
    functionDepth: 2
    functionLinenumber: 871
    functionLinenumberEnd: 883
    functionName: int4inc
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_INT32
    - ereport
    - pg_add_s32_overflow
    - unlikely
    - PG_GETARG_INT32
    - errcode
    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:888,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:890,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:891,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:892,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:893,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:894,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 885
    functionDepth: 2
    functionLinenumber: 885
    functionLinenumberEnd: 895
    functionName: int2um
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - PG_RETURN_INT16
    - unlikely
    - PG_GETARG_INT16
    - errcode
    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:900,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:902,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 897
    functionDepth: 1
    functionLinenumber: 897
    functionLinenumberEnd: 903
    functionName: int2up
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT16
    - PG_GETARG_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:908,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:909,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:912,1
    - Dst: pg_add_s16_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:912,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:913,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:914,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:915,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:916,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 905
    functionDepth: 2
    functionLinenumber: 905
    functionLinenumberEnd: 917
    functionName: int2pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - PG_RETURN_INT16
    - unlikely
    - PG_GETARG_INT16
    - pg_add_s16_overflow
    - errcode
    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:922,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:923,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:926,1
    - Dst: pg_sub_s16_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:926,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:927,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:928,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:929,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:930,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 919
    functionDepth: 2
    functionLinenumber: 919
    functionLinenumberEnd: 931
    functionName: int2mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pg_sub_s16_overflow
    - ereport
    - PG_RETURN_INT16
    - unlikely
    - PG_GETARG_INT16
    - errcode
    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:936,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:937,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:940,1
    - Dst: pg_mul_s16_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:940,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:941,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:942,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:943,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: 933
    functionDepth: 2
    functionLinenumber: 933
    functionLinenumberEnd: 946
    functionName: int2mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - PG_RETURN_INT16
    - unlikely
    - PG_GETARG_INT16
    - pg_mul_s16_overflow
    - errcode
    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:951,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:952,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:957,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:958,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:959,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/int.c:961,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:972,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:973,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:974,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:975,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:977,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:984,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 948
    functionDepth: 2
    functionLinenumber: 948
    functionLinenumberEnd: 985
    functionName: int2div
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - PG_RETURN_INT16
    - unlikely
    - PG_GETARG_INT16
    - PG_RETURN_NULL
    - errcode
    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:990,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:991,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:994,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:994,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:995,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:996,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:997,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:998,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 999
      start: 987
    functionDepth: 2
    functionLinenumber: 987
    functionLinenumberEnd: 999
    functionName: int24pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_INT32
    - ereport
    - pg_add_s32_overflow
    - unlikely
    - PG_GETARG_INT16
    - PG_GETARG_INT32
    - errcode
    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:1004,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1005,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1008,1
    - Dst: pg_sub_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:1008,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1009,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1010,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1011,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1012,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 1001
    functionDepth: 2
    functionLinenumber: 1001
    functionLinenumberEnd: 1013
    functionName: int24mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_INT32
    - ereport
    - unlikely
    - PG_GETARG_INT16
    - PG_GETARG_INT32
    - pg_sub_s32_overflow
    - errcode
    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:1018,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1019,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1022,1
    - Dst: pg_mul_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:1022,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1023,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1024,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1025,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1026,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1027
      start: 1015
    functionDepth: 2
    functionLinenumber: 1015
    functionLinenumberEnd: 1027
    functionName: int24mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pg_mul_s32_overflow
    - PG_RETURN_INT32
    - ereport
    - unlikely
    - PG_GETARG_INT16
    - PG_GETARG_INT32
    - errcode
    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:1032,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1033,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1035,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1037,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1038,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1039,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/int.c:1041,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1045,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 1029
    functionDepth: 2
    functionLinenumber: 1029
    functionLinenumberEnd: 1046
    functionName: int24div
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_INT32
    - ereport
    - unlikely
    - PG_GETARG_INT16
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    - errcode
    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:1051,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1052,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1055,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:1055,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1056,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1057,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1058,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1059,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 1048
    functionDepth: 2
    functionLinenumber: 1048
    functionLinenumberEnd: 1060
    functionName: int42pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_INT32
    - ereport
    - pg_add_s32_overflow
    - unlikely
    - PG_GETARG_INT16
    - PG_GETARG_INT32
    - errcode
    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:1065,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1066,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1069,1
    - Dst: pg_sub_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:1069,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1070,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1071,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1072,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1073,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 1062
    functionDepth: 2
    functionLinenumber: 1062
    functionLinenumberEnd: 1074
    functionName: int42mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_INT32
    - ereport
    - unlikely
    - PG_GETARG_INT16
    - PG_GETARG_INT32
    - pg_sub_s32_overflow
    - errcode
    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:1079,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1080,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1083,1
    - Dst: pg_mul_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:1083,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1084,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1085,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1086,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1087,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1088
      start: 1076
    functionDepth: 2
    functionLinenumber: 1076
    functionLinenumberEnd: 1088
    functionName: int42mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pg_mul_s32_overflow
    - PG_RETURN_INT32
    - ereport
    - unlikely
    - PG_GETARG_INT16
    - PG_GETARG_INT32
    - errcode
    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:1093,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1094,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1097,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_NULL
      Src: /src/postgres/src/backend/utils/adt/int.c:1103,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1114,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1115,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1116,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1117,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1119,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1126,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1090
    functionDepth: 2
    functionLinenumber: 1090
    functionLinenumberEnd: 1127
    functionName: int42div
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_INT32
    - ereport
    - unlikely
    - PG_GETARG_INT16
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    - errcode
    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:1132,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1133,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1135,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1137,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1138,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1139,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/int.c:1141,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1150,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1155
      start: 1129
    functionDepth: 2
    functionLinenumber: 1129
    functionLinenumberEnd: 1155
    functionName: int4mod
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_INT32
    - ereport
    - unlikely
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    - errcode
    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:1160,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1161,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1163,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1165,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1166,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1167,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/int.c:1169,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1179,1
    - Dst: PG_RETURN_INT16
      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: 1157
    functionDepth: 2
    functionLinenumber: 1157
    functionLinenumberEnd: 1184
    functionName: int2mod
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - PG_RETURN_INT16
    - unlikely
    - PG_GETARG_INT16
    - PG_RETURN_NULL
    - errcode
    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:1193,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1196,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1197,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1198,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1199,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1202
      start: 1190
    functionDepth: 2
    functionLinenumber: 1190
    functionLinenumberEnd: 1202
    functionName: int4abs
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_INT32
    - ereport
    - unlikely
    - PG_GETARG_INT32
    - errcode
    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:1207,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1210,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1211,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1212,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1213,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1215,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1216
      start: 1204
    functionDepth: 2
    functionLinenumber: 1204
    functionLinenumberEnd: 1216
    functionName: int2abs
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - PG_RETURN_INT16
    - unlikely
    - PG_GETARG_INT16
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum int2abs(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1261,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1262,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1263,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - int32
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1291
      start: 1232
    functionDepth: 2
    functionLinenumber: 1232
    functionLinenumberEnd: 1291
    functionName: int4gcd_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - ereport
    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:1296,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1297,1
    - Dst: int4gcd_internal
      Src: /src/postgres/src/backend/utils/adt/int.c:1300,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1303
      start: 1293
    functionDepth: 3
    functionLinenumber: 1293
    functionLinenumberEnd: 1303
    functionName: int4gcd
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - int4gcd_internal
    - PG_GETARG_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:1311,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1312,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1322,1
    - Dst: int4gcd_internal
      Src: /src/postgres/src/backend/utils/adt/int.c:1325,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1328,1
    - Dst: pg_mul_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:1328,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1329,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1330,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1331,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int.c:1334,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1335,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1336,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1337,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1342,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1343
      start: 1308
    functionDepth: 3
    functionLinenumber: 1308
    functionLinenumberEnd: 1343
    functionName: int4lcm
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - int4gcd_internal
    - pg_mul_s32_overflow
    - errmsg
    - ereport
    - unlikely
    - PG_GETARG_INT32
    - errcode
    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:1348,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1349,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1352
      start: 1345
    functionDepth: 1
    functionLinenumber: 1345
    functionLinenumberEnd: 1352
    functionName: int2larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT16
    - PG_GETARG_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:1357,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1358,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1360,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1361
      start: 1354
    functionDepth: 1
    functionLinenumber: 1354
    functionLinenumberEnd: 1361
    functionName: int2smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT16
    - PG_GETARG_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:1366,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1367,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1370
      start: 1363
    functionDepth: 1
    functionLinenumber: 1363
    functionLinenumberEnd: 1370
    functionName: int4larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_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:1375,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1376,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1379
      start: 1372
    functionDepth: 1
    functionLinenumber: 1372
    functionLinenumberEnd: 1379
    functionName: int4smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_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:1395,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1396,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1399
      start: 1392
    functionDepth: 1
    functionLinenumber: 1392
    functionLinenumberEnd: 1399
    functionName: int4and
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_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:1404,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1405,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1408
      start: 1401
    functionDepth: 1
    functionLinenumber: 1401
    functionLinenumberEnd: 1408
    functionName: int4or
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_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:1413,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1414,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1416,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1417
      start: 1410
    functionDepth: 1
    functionLinenumber: 1410
    functionLinenumberEnd: 1417
    functionName: int4xor
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_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:1422,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1423,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1425,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1426
      start: 1419
    functionDepth: 1
    functionLinenumber: 1419
    functionLinenumberEnd: 1426
    functionName: int4shl
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_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:1431,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1432,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1434,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1435
      start: 1428
    functionDepth: 1
    functionLinenumber: 1428
    functionLinenumberEnd: 1435
    functionName: int4shr
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_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:1440,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1442,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1443
      start: 1437
    functionDepth: 1
    functionLinenumber: 1437
    functionLinenumberEnd: 1443
    functionName: int4not
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_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:1448,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1449,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1451,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1452
      start: 1445
    functionDepth: 1
    functionLinenumber: 1445
    functionLinenumberEnd: 1452
    functionName: int2and
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT16
    - PG_GETARG_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:1457,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1458,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1460,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1461
      start: 1454
    functionDepth: 1
    functionLinenumber: 1454
    functionLinenumberEnd: 1461
    functionName: int2or
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT16
    - PG_GETARG_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:1466,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1467,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1469,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1470
      start: 1463
    functionDepth: 1
    functionLinenumber: 1463
    functionLinenumberEnd: 1470
    functionName: int2xor
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT16
    - PG_GETARG_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:1475,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1478
      start: 1472
    functionDepth: 1
    functionLinenumber: 1472
    functionLinenumberEnd: 1478
    functionName: int2not
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT16
    - PG_GETARG_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:1484,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1485,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1488
      start: 1481
    functionDepth: 1
    functionLinenumber: 1481
    functionLinenumberEnd: 1488
    functionName: int2shl
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT16
    - PG_GETARG_INT16
    - PG_GETARG_INT32
    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:1493,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1494,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int.c:1496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1497
      start: 1490
    functionDepth: 1
    functionLinenumber: 1490
    functionLinenumberEnd: 1497
    functionName: int2shr
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT16
    - PG_GETARG_INT16
    - PG_GETARG_INT32
    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:1505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1506
      start: 1502
    functionDepth: 1
    functionLinenumber: 1502
    functionLinenumberEnd: 1506
    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:1517,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1519,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1520,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/int.c:1524,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int.c:1525,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int.c:1527,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int.c:1528,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int.c:1529,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/int.c:1532,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/int.c:1537,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/int.c:1540,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/int.c:1551,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/int.c:1555,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/int.c:1570,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/int.c:1574,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/int.c:1574,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/int.c:1578,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1579
      start: 1508
    functionDepth: 2
    functionLinenumber: 1508
    functionLinenumberEnd: 1579
    functionName: generate_series_step_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 1
    functionsReached:
    - errmsg
    - SRF_PERCALL_SETUP
    - MemoryContextSwitchTo
    - Int32GetDatum
    - ereport
    - pg_add_s32_overflow
    - PG_GETARG_INT32
    - SRF_RETURN_DONE
    - SRF_FIRSTCALL_INIT
    - PG_NARGS
    - SRF_IS_FIRSTCALL
    - palloc
    - SRF_RETURN_NEXT
    - errcode
    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:1587,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int.c:1590,1
    - Dst: is_funcclause
      Src: /src/postgres/src/backend/utils/adt/int.c:1595,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/utils/adt/int.c:1603,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/int.c:1603,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/utils/adt/int.c:1604,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/utils/adt/int.c:1604,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/int.c:1605,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/utils/adt/int.c:1606,1
    - Dst: lthird
      Src: /src/postgres/src/backend/utils/adt/int.c:1606,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int.c:1616,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int.c:1618,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int.c:1620,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int.c:1626,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int.c:1627,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int.c:1628,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/int.c:1634,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/int.c:1635,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/int.c:1636,1
    - Dst: floor
      Src: /src/postgres/src/backend/utils/adt/int.c:1641,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/int.c:1648,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1649
      start: 1584
    functionDepth: 2
    functionLinenumber: 1584
    functionLinenumberEnd: 1649
    functionName: generate_series_int4_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/int.c
    functionUses: 0
    functionsReached:
    - estimate_expression_value
    - floor
    - linitial
    - PG_GETARG_POINTER
    - is_funcclause
    - DatumGetInt32
    - IsA
    - lsecond
    - list_length
    - lthird
    - 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: 8
    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:
    - ereturn
    - Assert
    - errcode
    - errmsg
    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
    - errcode
    - errmsg
    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:
    - ARR_ELEMTYPE
    - errmsg
    - pfree
    - deconstruct_array_builtin
    - DatumGetCString
    - ARR_NDIM
    - array_contains_nulls
    - ereport
    - pg_strtoint32
    - palloc
    - errcode
    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: 174
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 174
    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: 175
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 175
    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: 176
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 176
    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: 186
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 186
    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: 189
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 189
    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: 206
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 206
    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: 207
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 207
    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: 208
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 208
    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: 209
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 209
    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: 211
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 211
    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: 245
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 245
    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: 249
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 249
    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: 254
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 254
    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: 407
      start: 406
    functionDepth: 0
    functionLinenumber: 406
    functionLinenumberEnd: 407
    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: 408
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 408
    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:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 413
    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: 414
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 414
    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: 488
      start: 486
    functionDepth: 0
    functionLinenumber: 486
    functionLinenumberEnd: 488
    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: 493
      start: 488
    functionDepth: 0
    functionLinenumber: 488
    functionLinenumberEnd: 493
    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: 495
      start: 494
    functionDepth: 0
    functionLinenumber: 494
    functionLinenumberEnd: 495
    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: 498
      start: 496
    functionDepth: 0
    functionLinenumber: 496
    functionLinenumberEnd: 498
    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: 500
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 500
    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: 504
      start: 500
    functionDepth: 0
    functionLinenumber: 500
    functionLinenumberEnd: 504
    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: 24
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/numeric.c:639,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/numeric.c:641,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:643,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/numeric.c:654,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/numeric.c:682,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/numeric.c:688,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:690,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/numeric.c:693,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:695,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/numeric.c:698,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:700,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/numeric.c:715,1
    - Dst: apply_typmod_special
      Src: /src/postgres/src/backend/utils/adt/numeric.c:720,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:721,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:733,1
    - Dst: set_var_from_str
      Src: /src/postgres/src/backend/utils/adt/numeric.c:765,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:766,1
    - Dst: set_var_from_non_decimal_integer_str
      Src: /src/postgres/src/backend/utils/adt/numeric.c:771,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:773,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/numeric.c:782,1
    - Dst: apply_typmod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:787,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:788,1
    - Dst: make_result_opt_error
      Src: /src/postgres/src/backend/utils/adt/numeric.c:790,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:793,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:794,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:795,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:797,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:800,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:803,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:804,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:805,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 84
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 636
    functionDepth: 2
    functionLinenumber: 636
    functionLinenumberEnd: 807
    functionName: numeric_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NUMERIC
    - init_var
    - pg_strncasecmp
    - make_result
    - free_var
    - PG_GETARG_OID
    - set_var_from_non_decimal_integer_str
    - make_result_opt_error
    - apply_typmod
    - errmsg
    - apply_typmod_special
    - isdigit
    - ereturn
    - isspace
    - set_var_from_str
    - PG_GETARG_CSTRING
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    - errcode
    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:818,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:825,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:827,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/numeric.c:828,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/numeric.c:828,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:829,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/numeric.c:830,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/numeric.c:830,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/numeric.c:832,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/numeric.c:832,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:838,1
    - Dst: get_str_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:840,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/numeric.c:842,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 815
    functionDepth: 1
    functionLinenumber: 815
    functionLinenumberEnd: 843
    functionName: numeric_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NUMERIC_IS_PINF
    - PG_GETARG_NUMERIC
    - PG_RETURN_CSTRING
    - NUMERIC_IS_SPECIAL
    - pstrdup
    - init_var_from_num
    - get_str_from_var
    - NUMERIC_IS_NINF
    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:853,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 850
    functionDepth: 1
    functionLinenumber: 850
    functionLinenumberEnd: 854
    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:864,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 861
    functionDepth: 1
    functionLinenumber: 861
    functionLinenumberEnd: 865
    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:878,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:880,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:886,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - num
    argTypes:
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 889
      start: 872
    functionDepth: 1
    functionLinenumber: 872
    functionLinenumberEnd: 889
    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: 910
      start: 906
    functionDepth: 0
    functionLinenumber: 906
    functionLinenumberEnd: 910
    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: 919
      start: 915
    functionDepth: 0
    functionLinenumber: 915
    functionLinenumberEnd: 919
    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: 930
      start: 926
    functionDepth: 0
    functionLinenumber: 926
    functionLinenumberEnd: 930
    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: 945
      start: 941
    functionDepth: 0
    functionLinenumber: 941
    functionLinenumberEnd: 945
    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:958,1
    - Dst: numeric_typmod_precision
      Src: /src/postgres/src/backend/utils/adt/numeric.c:962,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - typmod
    argTypes:
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 952
    functionDepth: 1
    functionLinenumber: 952
    functionLinenumberEnd: 984
    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:1000,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1002,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1003,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1004,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1005,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1007,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1010,1
    - Dst: get_str_from_var_sci
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1012,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - num
    - scale
    argTypes:
    - Numeric
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 991
    functionDepth: 1
    functionLinenumber: 991
    functionLinenumberEnd: 1015
    functionName: numeric_out_sci
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NUMERIC_IS_PINF
    - get_str_from_var_sci
    - NUMERIC_IS_SPECIAL
    - pstrdup
    - init_var_from_num
    - NUMERIC_IS_NINF
    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:1035,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1037,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1038,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1039,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1040,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1042,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1045,1
    - Dst: get_str_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1047,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1050,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1056,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - num
    argTypes:
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1069
      start: 1025
    functionDepth: 1
    functionLinenumber: 1025
    functionLinenumberEnd: 1069
    functionName: numeric_normalize
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NUMERIC_IS_PINF
    - NUMERIC_IS_SPECIAL
    - pstrdup
    - init_var_from_num
    - get_str_from_var
    - NUMERIC_IS_NINF
    - strlen
    - strchr
    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:1080,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1083,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1085,1
    - Dst: init_var
      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: alloc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1095,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1097,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1100,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1106,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1107,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1108,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1110,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1112,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1113,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1114,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1118,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1121,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1122,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1123,1
    - Dst: trunc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1140,1
    - Dst: apply_typmod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1142,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1144,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1149,1
    - Dst: apply_typmod_special
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1151,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1154,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1156,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1157
      start: 1077
    functionDepth: 2
    functionLinenumber: 1077
    functionLinenumberEnd: 1157
    functionName: numeric_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_POINTER
    - apply_typmod_special
    - free_var
    - ereport
    - trunc_var
    - PG_RETURN_NUMERIC
    - PG_GETARG_OID
    - init_var
    - PG_GETARG_INT32
    - alloc_var
    - make_result
    - pq_getmsgint
    - errcode
    - apply_typmod
    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:1165,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1170,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1172,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1174,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1175,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1176,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1177,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1179,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1181,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1181,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1182
      start: 1162
    functionDepth: 4
    functionLinenumber: 1162
    functionLinenumberEnd: 1182
    functionName: numeric_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NUMERIC
    - pq_endtypsend
    - init_var_from_num
    - pq_sendint16
    - PG_RETURN_BYTEA_P
    - pq_begintypsend
    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:1198,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1201,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1207,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1207,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1209,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1211,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1213,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1214,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1215,1
    - Dst: numeric_typmod_scale
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1216,1
    - Dst: numeric_typmod_scale
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1217,1
    - Dst: numeric_typmod_precision
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1218,1
    - Dst: numeric_typmod_precision
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1219,1
    - Dst: is_valid_numeric_typmod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1228,1
    - Dst: is_valid_numeric_typmod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1229,1
    - Dst: relabel_to_typmod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1231,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1235,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1236
      start: 1195
    functionDepth: 5
    functionLinenumber: 1195
    functionLinenumberEnd: 1236
    functionName: numeric_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - Assert
    - relabel_to_typmod
    - linitial
    - PG_GETARG_POINTER
    - exprTypmod
    - DatumGetInt32
    - is_valid_numeric_typmod
    - lsecond
    - IsA
    - list_length
    - numeric_typmod_scale
    - numeric_typmod_precision
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_support(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1248,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1249,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1262,1
    - Dst: apply_typmod_special
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1264,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1265,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1265,1
    - Dst: is_valid_numeric_typmod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1272,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1273,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1273,1
    - Dst: numeric_typmod_precision
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1278,1
    - Dst: numeric_typmod_scale
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1279,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1283,1
    - Dst: NUMERIC_WEIGHT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1292,1
    - Dst: NUMERIC_DSCALE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1293,1
    - Dst: NUMERIC_CAN_BE_SHORT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1294,1
    - Dst: NUMERIC_WEIGHT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1294,1
    - Dst: NUMERIC_IS_SHORT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1295,1
    - Dst: duplicate_numeric::duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1297,1
    - Dst: NUMERIC_IS_SHORT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1298,1
    - Dst: choice::choice
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1299,1
    - Dst: choice::choice
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1303,1
    - Dst: NUMERIC_SIGN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1303,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1312,1
    - Dst: set_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1314,1
    - Dst: apply_typmod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1315,1
    - Dst: make_result::make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1316,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1318,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1321
      start: 1245
    functionDepth: 1
    functionLinenumber: 1245
    functionLinenumberEnd: 1321
    functionName: numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 5
    functionsReached:
    - is_valid_numeric_typmod
    - duplicate_numeric
    - NUMERIC_DSCALE
    - PG_RETURN_NUMERIC
    - make_result::make_result
    - init_var
    - numeric_typmod_precision
    - duplicate_numeric::duplicate_numeric
    - PG_GETARG_NUMERIC
    - NUMERIC_IS_SHORT
    - free_var
    - Max
    - NUMERIC_SIGN
    - apply_typmod
    - NUMERIC_CAN_BE_SHORT
    - apply_typmod_special
    - NUMERIC_IS_SPECIAL
    - NUMERIC_WEIGHT
    - choice::choice
    - PG_GETARG_INT32
    - numeric_typmod_scale
    - set_var_from_num
    linkageType: ''
    returnType: Datum
    signature: "Datum numeric\t\t(PG_FUNCTION_ARGS)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1326,1
    - Dst: ArrayGetIntegerTypmods
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1331,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1336,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1337,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1338,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1341,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1342,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1343,1
    - Dst: make_numeric_typmod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1345,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: make_numeric_typmod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1355,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1359,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1360,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1361,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1365,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1366
      start: 1323
    functionDepth: 3
    functionLinenumber: 1323
    functionLinenumberEnd: 1366
    functionName: numerictypmodin
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_INT32
    - ArrayGetIntegerTypmods
    - ereport
    - make_numeric_typmod
    - errcode
    - PG_GETARG_ARRAYTYPE_P
    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:1371,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1372,1
    - Dst: is_valid_numeric_typmod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1374,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1375,1
    - Dst: numeric_typmod_precision
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1376,1
    - Dst: numeric_typmod_scale
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1377,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1381,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1382
      start: 1368
    functionDepth: 1
    functionLinenumber: 1368
    functionLinenumberEnd: 1382
    functionName: numerictypmodout
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - is_valid_numeric_typmod
    - snprintf
    - PG_RETURN_CSTRING
    - PG_GETARG_INT32
    - numeric_typmod_scale
    - numeric_typmod_precision
    - palloc
    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:1395,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1401,1
    - Dst: NUMERIC_IS_SHORT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1403,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1406,1
    - Dst: NUMERIC_DSCALE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1413,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1415,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1416
      start: 1392
    functionDepth: 1
    functionLinenumber: 1392
    functionLinenumberEnd: 1416
    functionName: numeric_abs
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NUMERIC
    - NUMERIC_DSCALE
    - NUMERIC_IS_SPECIAL
    - duplicate_numeric
    - NUMERIC_IS_SHORT
    - PG_RETURN_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:1422,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1428,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1430,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1433,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1443,1
    - Dst: NUMERIC_IS_SHORT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1446,1
    - Dst: NUMERIC_SIGN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1449,1
    - Dst: NUMERIC_DSCALE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1451,1
    - Dst: NUMERIC_DSCALE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1454,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1457,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1458
      start: 1419
    functionDepth: 1
    functionLinenumber: 1419
    functionLinenumberEnd: 1458
    functionName: numeric_uminus
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NUMERIC
    - NUMERIC_DSCALE
    - NUMERIC_IS_SPECIAL
    - duplicate_numeric
    - NUMERIC_NDIGITS
    - NUMERIC_IS_SHORT
    - PG_RETURN_NUMERIC
    - NUMERIC_IS_NAN
    - NUMERIC_SIGN
    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:1464,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1466,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1467
      start: 1461
    functionDepth: 1
    functionLinenumber: 1461
    functionLinenumberEnd: 1467
    functionName: numeric_uplus
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NUMERIC
    - duplicate_numeric
    - PG_RETURN_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:1480,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1482,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1482,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1484,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1495,1
    - Dst: NUMERIC_SIGN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1497,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - num
    argTypes:
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1501
      start: 1477
    functionDepth: 1
    functionLinenumber: 1477
    functionLinenumberEnd: 1501
    functionName: numeric_sign_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NUMERIC_IS_PINF
    - Assert
    - NUMERIC_IS_SPECIAL
    - NUMERIC_NDIGITS
    - NUMERIC_IS_NAN
    - NUMERIC_SIGN
    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:1512,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1517,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: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1520,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1523,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1523,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1525,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1525,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1527,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1527,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1530,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1532
      start: 1509
    functionDepth: 2
    functionLinenumber: 1509
    functionLinenumberEnd: 1532
    functionName: numeric_sign
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - Assert
    - PG_GETARG_NUMERIC
    - PG_RETURN_NUMERIC
    - numeric_sign_internal
    - make_result
    - NUMERIC_IS_NAN
    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:1545,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1546,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1553,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1554,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1554,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1564,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1565,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1570,1
    - Dst: set_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1571,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1573,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1582,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1584,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1585,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1586
      start: 1542
    functionDepth: 1
    functionLinenumber: 1542
    functionLinenumberEnd: 1586
    functionName: numeric_round
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - Min
    - round_var
    - PG_GETARG_NUMERIC
    - duplicate_numeric
    - NUMERIC_IS_SPECIAL
    - free_var
    - PG_RETURN_NUMERIC
    - Max
    - init_var
    - PG_GETARG_INT32
    - set_var_from_num
    - make_result
    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:1599,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1600,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1607,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1608,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1608,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1616,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1617,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1622,1
    - Dst: set_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1623,1
    - Dst: trunc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1625,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1634,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1636,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1637,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1638
      start: 1596
    functionDepth: 1
    functionLinenumber: 1596
    functionLinenumberEnd: 1638
    functionName: numeric_trunc
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - Min
    - PG_GETARG_NUMERIC
    - duplicate_numeric
    - NUMERIC_IS_SPECIAL
    - free_var
    - PG_RETURN_NUMERIC
    - trunc_var
    - Max
    - init_var
    - PG_GETARG_INT32
    - set_var_from_num
    - make_result
    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:1649,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1656,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1657,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1657,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1659,1
    - Dst: ceil_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1660,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1662,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1663,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1665,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1666
      start: 1646
    functionDepth: 1
    functionLinenumber: 1646
    functionLinenumberEnd: 1666
    functionName: numeric_ceil
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NUMERIC
    - ceil_var
    - NUMERIC_IS_SPECIAL
    - duplicate_numeric
    - free_var
    - PG_RETURN_NUMERIC
    - init_var_from_num
    - make_result
    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:1677,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1684,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1685,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1685,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1687,1
    - Dst: floor_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1688,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1690,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1691,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1693,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1694
      start: 1674
    functionDepth: 1
    functionLinenumber: 1674
    functionLinenumberEnd: 1694
    functionName: numeric_floor
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NUMERIC
    - NUMERIC_IS_SPECIAL
    - duplicate_numeric
    - free_var
    - PG_RETURN_NUMERIC
    - init_var_from_num
    - make_result
    - floor_var
    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:1705,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1706
      start: 1702
    functionDepth: 1
    functionLinenumber: 1702
    functionLinenumberEnd: 1706
    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:1715,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1717,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1718,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1722,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1724,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1725,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1726,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1727,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1729,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1730,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1731,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1733,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1735,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1736,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1737,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1738,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1740,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1741,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1742,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1746,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1748,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1750,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1752,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1753,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1754,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1755,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1757,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1758,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1759,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1762,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1764,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1765,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1766,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1767,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1771,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1776,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1780,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1788,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1789,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1790,1
    - Dst: set_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1792,1
    - Dst: set_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1793,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1794,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1797,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1801,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1810,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1812,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1814,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1817,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1820,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1821,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1824,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1824,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1828,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1829
      start: 1708
    functionDepth: 2
    functionLinenumber: 1708
    functionLinenumberEnd: 1829
    functionName: generate_series_step_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - init_var
    - NumericGetDatum
    - SRF_FIRSTCALL_INIT
    - make_result
    - SRF_RETURN_DONE
    - SRF_RETURN_NEXT
    - cmp_var
    - PG_GETARG_NUMERIC
    - init_var_from_num
    - NUMERIC_IS_NAN
    - set_var_from_var
    - errmsg
    - SRF_PERCALL_SETUP
    - NUMERIC_IS_SPECIAL
    - PG_NARGS
    - add_var
    - SRF_IS_FIRSTCALL
    - palloc
    - ereport
    - set_var_from_num
    - errcode
    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:1837,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1840,1
    - Dst: is_funcclause
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1845,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1853,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1853,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1854,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1854,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1855,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1856,1
    - Dst: lthird
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1856,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:1868,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1870,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1876,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1877,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1878,1
    - Dst: DatumGetNumeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1888,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: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1892,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1893,1
    - Dst: DatumGetNumeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1899,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1901,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1902,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1904,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1913,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1919,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1920,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1922,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1923,1
    - Dst: div_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1934,1
    - Dst: trunc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1936,1
    - Dst: numericvar_to_double_no_overflow
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1938,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1942,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1948,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1949
      start: 1834
    functionDepth: 2
    functionLinenumber: 1834
    functionLinenumberEnd: 1949
    functionName: generate_series_numeric_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - estimate_expression_value
    - sub_var
    - list_length
    - init_var
    - PG_RETURN_POINTER
    - cmp_var
    - is_funcclause
    - lsecond
    - DatumGetNumeric
    - trunc_var
    - free_var
    - init_var_from_num
    - numericvar_to_double_no_overflow
    - linitial
    - PG_GETARG_POINTER
    - NUMERIC_IS_SPECIAL
    - IsA
    - lthird
    - div_var
    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:1970,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1971,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1972,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1973,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1979,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1980,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1981,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1983,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1983,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1985,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1985,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1986,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1987,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1988,1
    - Dst: NUMERIC_IS_INF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1990,1
    - Dst: NUMERIC_IS_INF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1990,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1991,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1992,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1993,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1996,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:1997,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2000,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2002,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2005,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2006,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2007,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2012,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2013,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2014,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2015,1
    - Dst: compute_bucket
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2017,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2023,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2024,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2025,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2026,1
    - Dst: compute_bucket
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2028,1
    - Dst: numericvar_to_int32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2034,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2035,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2036,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2037,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2039,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2040,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2042,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2043
      start: 1967
    functionDepth: 2
    functionLinenumber: 1967
    functionLinenumberEnd: 2043
    functionName: width_bucket_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - errmsg
    - compute_bucket
    - PG_RETURN_INT32
    - add_var
    - NUMERIC_IS_INF
    - set_var_from_var
    - PG_GETARG_NUMERIC
    - int64_to_numericvar
    - NUMERIC_IS_SPECIAL
    - cmp_numerics
    - ereport
    - free_var
    - init_var
    - numericvar_to_int32
    - PG_GETARG_INT32
    - NUMERIC_IS_NAN
    - errcode
    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:2059,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2060,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2061,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2072,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2073,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2075,1
    - Dst: div_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2077,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2078,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2080,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2081,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2082,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: 2083
      start: 2051
    functionDepth: 1
    functionLinenumber: 2051
    functionLinenumberEnd: 2083
    functionName: compute_bucket
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - mul_var
    - sub_var
    - div_var
    - free_var
    - init_var_from_num
    - add_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:2129,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2136,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2138,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2144,1
    - Dst: initHyperLogLog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2148,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2157,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2161
      start: 2126
    functionDepth: 2
    functionLinenumber: 2126
    functionLinenumberEnd: 2161
    functionName: numeric_sortsupport
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - palloc
    - initHyperLogLog
    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:2171,1
    - Dst: VARATT_IS_SHORT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2181,1
    - Dst: VARSIZE_SHORT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2184,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2186,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2188,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2189,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2189,1
    - Dst: VARDATA_SHORT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2189,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2196,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2198,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2200,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2209,1
    - Dst: numeric_abbrev_convert_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2211,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2215,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2216,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - original_datum
    - ssup
    argTypes:
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2219
      start: 2167
    functionDepth: 1
    functionLinenumber: 2167
    functionLinenumberEnd: 2219
    functionName: numeric_abbrev_convert
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - VARSIZE_SHORT
    - Assert
    - NUMERIC_IS_PINF
    - pfree
    - VARATT_IS_SHORT
    - NUMERIC_IS_SPECIAL
    - VARDATA
    - init_var_from_num
    - VARDATA_SHORT
    - PG_DETOAST_DATUM_PACKED
    - memcpy
    - NUMERIC_IS_NINF
    - DatumGetPointer
    - SET_VARSIZE
    - numeric_abbrev_convert_var
    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:2238,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2249,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2269,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2278,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - memtupcount
    - ssup
    argTypes:
    - int
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2284
      start: 2229
    functionDepth: 1
    functionLinenumber: 2229
    functionLinenumberEnd: 2284
    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:2299,1
    - Dst: DatumGetNumeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2300,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2303,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2305,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2306,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2307,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2308,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - x
    - y
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2311
      start: 2296
    functionDepth: 2
    functionLinenumber: 2296
    functionLinenumberEnd: 2311
    functionName: numeric_fast_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - pfree
    - DatumGetPointer
    - cmp_numerics
    - DatumGetNumeric
    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:2325,1
    - Dst: DatumGetNumericAbbrev
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2325,1
    - Dst: DatumGetNumericAbbrev
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2327,1
    - Dst: DatumGetNumericAbbrev
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2327,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - x
    - y
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2330
      start: 2318
    functionDepth: 1
    functionLinenumber: 2318
    functionLinenumberEnd: 2330
    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:2425,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2425,1
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2425,1
    - Dst: NumericAbbrevGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2428,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - var
    - nss
    argTypes:
    - NumericVar*
    - NumericSortSupport*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2429
      start: 2380
    functionDepth: 2
    functionLinenumber: 2380
    functionLinenumberEnd: 2429
    functionName: numeric_abbrev_convert_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - DatumGetUInt32
    - hash_uint32
    - NumericAbbrevGetDatum
    - addHyperLogLog
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_abbrev_convert_var(const NumericVar *var, NumericSortSupport
      *nss)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: addHyperLogLog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2502,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2502,1
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2502,1
    - Dst: NumericAbbrevGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2505,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 2
    argNames:
    - var
    - nss
    argTypes:
    - NumericVar*
    - NumericSortSupport*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2506
      start: 2435
    functionDepth: 2
    functionLinenumber: 2435
    functionLinenumberEnd: 2506
    functionName: numeric_abbrev_convert_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - DatumGetUInt32
    - hash_uint32
    - NumericAbbrevGetDatum
    - addHyperLogLog
    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:2517,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2518,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2521,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2523,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2524,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2526,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2527
      start: 2514
    functionDepth: 1
    functionLinenumber: 2514
    functionLinenumberEnd: 2527
    functionName: numeric_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_NUMERIC
    - PG_FREE_IF_COPY
    - cmp_numerics
    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:2533,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2534,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2537,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2539,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2540,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2542,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2543
      start: 2530
    functionDepth: 1
    functionLinenumber: 2530
    functionLinenumberEnd: 2543
    functionName: numeric_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NUMERIC
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - cmp_numerics
    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:2548,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2549,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2552,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2554,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2555,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2557,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2558
      start: 2545
    functionDepth: 1
    functionLinenumber: 2545
    functionLinenumberEnd: 2558
    functionName: numeric_ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NUMERIC
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - cmp_numerics
    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:2563,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2564,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2567,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2569,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2570,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2572,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2573
      start: 2560
    functionDepth: 1
    functionLinenumber: 2560
    functionLinenumberEnd: 2573
    functionName: numeric_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NUMERIC
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - cmp_numerics
    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:2578,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2579,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2582,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2584,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2585,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2587,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2588
      start: 2575
    functionDepth: 1
    functionLinenumber: 2575
    functionLinenumberEnd: 2588
    functionName: numeric_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NUMERIC
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - cmp_numerics
    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:2593,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2594,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2597,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2599,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2600,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2602,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2603
      start: 2590
    functionDepth: 1
    functionLinenumber: 2590
    functionLinenumberEnd: 2603
    functionName: numeric_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NUMERIC
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - cmp_numerics
    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:2608,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2609,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2612,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2614,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2615,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2617,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2618
      start: 2605
    functionDepth: 1
    functionLinenumber: 2605
    functionLinenumberEnd: 2618
    functionName: numeric_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NUMERIC
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - cmp_numerics
    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:2630,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2632,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2634,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2639,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2641,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2643,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2650,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2656,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2658,1
    - Dst: cmp_var_common
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2665,1
    - Dst: NUMERIC_DIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2665,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2665,1
    - Dst: NUMERIC_WEIGHT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2666,1
    - Dst: NUMERIC_SIGN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2666,1
    - Dst: NUMERIC_DIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2667,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2667,1
    - Dst: NUMERIC_WEIGHT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2668,1
    - Dst: NUMERIC_SIGN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2668,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 2
    argNames:
    - num1
    - num2
    argTypes:
    - Numeric
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2672
      start: 2620
    functionDepth: 1
    functionLinenumber: 2620
    functionLinenumberEnd: 2672
    functionName: cmp_numerics
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 9
    functionsReached:
    - NUMERIC_IS_PINF
    - NUMERIC_DIGITS
    - NUMERIC_IS_SPECIAL
    - NUMERIC_SIGN
    - NUMERIC_NDIGITS
    - NUMERIC_WEIGHT
    - cmp_var_common
    - NUMERIC_IS_NAN
    - NUMERIC_IS_NINF
    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:2680,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2681,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2682,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2683,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2684,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2691,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2692,1
    - Dst: NUMERIC_SIGN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2693,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2694,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2695,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2696,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2703,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2705,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2710,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2718,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2720,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2720,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2721,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2721,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2733,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2743,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2751,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2753,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2755,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2762,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2768,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2770,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2787,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2788,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2789,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2790,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2793,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2795,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2798,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2800,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2802,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2805,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2806,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2807,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2809,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 58
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2810
      start: 2677
    functionDepth: 2
    functionLinenumber: 2677
    functionLinenumberEnd: 2810
    functionName: in_range_numeric_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NUMERIC_IS_PINF
    - sub_var
    - init_var
    - PG_GETARG_BOOL
    - cmp_var
    - PG_GETARG_NUMERIC
    - free_var
    - init_var_from_num
    - NUMERIC_IS_NAN
    - NUMERIC_SIGN
    - NUMERIC_IS_NINF
    - errmsg
    - NUMERIC_IS_SPECIAL
    - add_var
    - Assert
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - ereport
    - errcode
    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:2815,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2826,1
    - Dst: PG_RETURN_UINT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2827,1
    - Dst: NUMERIC_WEIGHT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2829,1
    - Dst: NUMERIC_DIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2839,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2840,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2858,1
    - Dst: PG_RETURN_UINT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2859,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2861,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2870,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2870,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2878,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2879,1
    - Dst: NUMERIC_DIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2879,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2885,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2886
      start: 2812
    functionDepth: 2
    functionLinenumber: 2812
    functionLinenumberEnd: 2886
    functionName: hash_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - hash_any
    - Assert
    - NUMERIC_DIGITS
    - PG_GETARG_NUMERIC
    - PG_RETURN_DATUM
    - PG_RETURN_UINT32
    - NUMERIC_IS_SPECIAL
    - NUMERIC_NDIGITS
    - NUMERIC_WEIGHT
    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:2895,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2896,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2907,1
    - Dst: PG_RETURN_UINT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2908,1
    - Dst: NUMERIC_WEIGHT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2910,1
    - Dst: NUMERIC_DIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2914,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2915,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2925,1
    - Dst: PG_RETURN_UINT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2926,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2928,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2936,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2936,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2938,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2939,1
    - Dst: NUMERIC_DIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2939,1
    - Dst: UInt64GetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2944,1
    - Dst: DatumGetUInt64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2944,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2946,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2947
      start: 2892
    functionDepth: 2
    functionLinenumber: 2892
    functionLinenumberEnd: 2947
    functionName: hash_numeric_extended
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - Assert
    - PG_RETURN_UINT64
    - NUMERIC_DIGITS
    - PG_GETARG_NUMERIC
    - PG_GETARG_INT64
    - PG_RETURN_DATUM
    - NUMERIC_IS_SPECIAL
    - NUMERIC_NDIGITS
    - DatumGetUInt64
    - NUMERIC_WEIGHT
    - UInt64GetDatum
    - hash_any_extended
    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:2966,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2967,1
    - Dst: numeric_add_opt_error
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2970,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2972,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2973
      start: 2963
    functionDepth: 1
    functionLinenumber: 2963
    functionLinenumberEnd: 2973
    functionName: numeric_add
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 2
    functionsReached:
    - PG_RETURN_NUMERIC
    - PG_GETARG_NUMERIC
    - numeric_add_opt_error
    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:2993,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2993,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2995,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2995,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2996,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2997,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:2999,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3000,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3002,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3004,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3006,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3007,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3009,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3012,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3013,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3014,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3014,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3015,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3021,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3022,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3024,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3025,1
    - Dst: make_result_opt_error
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3027,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3029,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 3
    argNames:
    - num1
    - num2
    - have_error
    argTypes:
    - Numeric
    - Numeric
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3032
      start: 2982
    functionDepth: 1
    functionLinenumber: 2982
    functionLinenumberEnd: 3032
    functionName: numeric_add_opt_error
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - NUMERIC_IS_PINF
    - Assert
    - add_var
    - NUMERIC_IS_SPECIAL
    - free_var
    - init_var_from_num
    - init_var
    - make_result
    - NUMERIC_IS_NAN
    - NUMERIC_IS_NINF
    - make_result_opt_error
    linkageType: ''
    returnType: Numeric
    signature: Numeric numeric_add_opt_error(Numeric num1, Numeric num2, bool *have_error)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3043,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3044,1
    - Dst: numeric_sub_opt_error
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3047,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3049,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3050
      start: 3040
    functionDepth: 1
    functionLinenumber: 3040
    functionLinenumberEnd: 3050
    functionName: numeric_sub
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 2
    functionsReached:
    - numeric_sub_opt_error
    - PG_GETARG_NUMERIC
    - PG_RETURN_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:3071,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3071,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3073,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3073,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3074,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3075,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3077,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: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3082,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3084,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3085,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3087,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3090,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3091,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3092,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3092,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3093,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3099,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3100,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3102,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3103,1
    - Dst: make_result_opt_error
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3105,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3107,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 3
    argNames:
    - num1
    - num2
    - have_error
    argTypes:
    - Numeric
    - Numeric
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3110
      start: 3060
    functionDepth: 1
    functionLinenumber: 3060
    functionLinenumberEnd: 3110
    functionName: numeric_sub_opt_error
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - NUMERIC_IS_PINF
    - Assert
    - sub_var
    - NUMERIC_IS_SPECIAL
    - free_var
    - init_var_from_num
    - init_var
    - make_result
    - NUMERIC_IS_NAN
    - NUMERIC_IS_NINF
    - make_result_opt_error
    linkageType: ''
    returnType: Numeric
    signature: Numeric numeric_sub_opt_error(Numeric num1, Numeric num2, bool *have_error)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3121,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3122,1
    - Dst: numeric_mul_opt_error
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3125,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3128
      start: 3118
    functionDepth: 1
    functionLinenumber: 3118
    functionLinenumberEnd: 3128
    functionName: numeric_mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 2
    functionsReached:
    - PG_GETARG_NUMERIC
    - numeric_mul_opt_error
    - PG_RETURN_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:3149,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3149,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3151,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3151,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3152,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3153,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3155,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3158,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3160,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3162,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3164,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3166,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3168,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3171,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3173,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3175,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3177,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3180,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:3185,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: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3193,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3193,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3194,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3197,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3199,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3201,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3203,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3217,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3218,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3220,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3221,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3224,1
    - Dst: make_result_opt_error
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3226,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3228,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 57
    argCount: 3
    argNames:
    - num1
    - num2
    - have_error
    argTypes:
    - Numeric
    - Numeric
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3231
      start: 3138
    functionDepth: 2
    functionLinenumber: 3138
    functionLinenumberEnd: 3231
    functionName: numeric_mul_opt_error
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - NUMERIC_IS_PINF
    - Assert
    - mul_var
    - round_var
    - NUMERIC_IS_SPECIAL
    - free_var
    - init_var_from_num
    - init_var
    - numeric_sign_internal
    - make_result
    - NUMERIC_IS_NAN
    - NUMERIC_IS_NINF
    - make_result_opt_error
    linkageType: ''
    returnType: Numeric
    signature: Numeric numeric_mul_opt_error(Numeric num1, Numeric num2, bool *have_error)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3242,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3243,1
    - Dst: numeric_div_opt_error
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3246,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3249
      start: 3239
    functionDepth: 1
    functionLinenumber: 3239
    functionLinenumberEnd: 3249
    functionName: numeric_div
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 2
    functionsReached:
    - numeric_div_opt_error
    - PG_GETARG_NUMERIC
    - PG_RETURN_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_div(PG_FUNCTION_ARGS)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3274,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3274,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3276,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3276,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3277,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3278,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3280,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3281,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3282,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3290,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3291,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3292,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3295,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3297,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3299,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3301,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3303,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3304,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3305,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3313,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3314,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3315,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3318,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3320,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3322,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3331,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3337,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3338,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3340,1
    - Dst: select_div_scale
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3345,1
    - Dst: div_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3359,1
    - Dst: make_result_opt_error
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3361,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3363,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 56
    argCount: 3
    argNames:
    - num1
    - num2
    - have_error
    argTypes:
    - Numeric
    - Numeric
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3366
      start: 3259
    functionDepth: 2
    functionLinenumber: 3259
    functionLinenumberEnd: 3366
    functionName: numeric_div_opt_error
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - errmsg
    - NUMERIC_IS_PINF
    - Assert
    - select_div_scale
    - div_var
    - NUMERIC_IS_SPECIAL
    - free_var
    - ereport
    - init_var_from_num
    - init_var
    - numeric_sign_internal
    - make_result
    - NUMERIC_IS_NAN
    - NUMERIC_IS_NINF
    - errcode
    - make_result_opt_error
    linkageType: ''
    returnType: Numeric
    signature: Numeric numeric_div_opt_error(Numeric num1, Numeric num2, bool *have_error)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3377,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3378,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3387,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3387,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3389,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3389,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3390,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3390,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3391,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3393,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3394,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3394,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3395,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3398,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3399,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3400,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3403,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3403,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3405,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3405,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3407,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3409,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3411,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3412,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3412,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3413,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3416,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3417,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3418,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3421,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3421,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3423,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3423,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3425,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3434,1
    - Dst: make_result
      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:3440,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3441,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3443,1
    - Dst: div_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3448,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3450,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3452,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3454,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3455
      start: 3374
    functionDepth: 2
    functionLinenumber: 3374
    functionLinenumberEnd: 3455
    functionName: numeric_div_trunc
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - errmsg
    - NUMERIC_IS_PINF
    - Assert
    - div_var
    - PG_GETARG_NUMERIC
    - NUMERIC_IS_SPECIAL
    - free_var
    - ereport
    - PG_RETURN_NUMERIC
    - init_var_from_num
    - init_var
    - numeric_sign_internal
    - make_result
    - NUMERIC_IS_NAN
    - NUMERIC_IS_NINF
    - errcode
    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:3466,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3467,1
    - Dst: numeric_mod_opt_error
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3470,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3473
      start: 3463
    functionDepth: 1
    functionLinenumber: 3463
    functionLinenumberEnd: 3473
    functionName: numeric_mod
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NUMERIC
    - numeric_mod_opt_error
    - PG_RETURN_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_mod(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3499,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3499,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3501,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3501,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3502,1
    - Dst: NUMERIC_IS_INF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3503,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3505,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3512,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3513,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3514,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3517,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3520,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3523,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3524,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3526,1
    - Dst: mod_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3537,1
    - Dst: make_result_opt_error
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3539,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3541,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 3
    argNames:
    - num1
    - num2
    - have_error
    argTypes:
    - Numeric
    - Numeric
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3544
      start: 3483
    functionDepth: 2
    functionLinenumber: 3483
    functionLinenumberEnd: 3544
    functionName: numeric_mod_opt_error
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - errmsg
    - NUMERIC_IS_INF
    - NUMERIC_IS_SPECIAL
    - duplicate_numeric
    - ereport
    - mod_var
    - free_var
    - init_var_from_num
    - init_var
    - numeric_sign_internal
    - make_result
    - NUMERIC_IS_NAN
    - errcode
    - make_result_opt_error
    linkageType: ''
    returnType: Numeric
    signature: Numeric numeric_mod_opt_error(Numeric num1, Numeric num2, bool *have_error)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3555,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3562,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3563,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3563,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3568,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3570,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3572,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3574,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3576,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3577
      start: 3552
    functionDepth: 1
    functionLinenumber: 3552
    functionLinenumberEnd: 3577
    functionName: numeric_inc
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NUMERIC
    - NUMERIC_IS_SPECIAL
    - duplicate_numeric
    - free_var
    - PG_RETURN_NUMERIC
    - init_var_from_num
    - make_result
    - add_var
    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:3588,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3589,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3595,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3596,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3598,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3599
      start: 3585
    functionDepth: 2
    functionLinenumber: 3585
    functionLinenumberEnd: 3599
    functionName: numeric_smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NUMERIC
    - cmp_numerics
    - PG_RETURN_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:3610,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3611,1
    - Dst: cmp_numerics
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3617,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3618,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3620,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3621
      start: 3607
    functionDepth: 2
    functionLinenumber: 3607
    functionLinenumberEnd: 3621
    functionName: numeric_larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NUMERIC
    - cmp_numerics
    - PG_RETURN_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:3639,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3640,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3650,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3650,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3651,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3651,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3656,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3657,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3659,1
    - Dst: gcd_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3664,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3666,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3668,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3670,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3671
      start: 3636
    functionDepth: 1
    functionLinenumber: 3636
    functionLinenumberEnd: 3671
    functionName: numeric_gcd
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NUMERIC
    - NUMERIC_IS_SPECIAL
    - free_var
    - PG_RETURN_NUMERIC
    - init_var_from_num
    - init_var
    - gcd_var
    - make_result
    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:3682,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3683,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3693,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3693,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3694,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3694,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3699,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3700,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3702,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3715,1
    - Dst: gcd_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3718,1
    - Dst: div_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3719,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3720,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3724,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3726,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3728,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3730,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3731
      start: 3679
    functionDepth: 1
    functionLinenumber: 3679
    functionLinenumberEnd: 3731
    functionName: numeric_lcm
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - mul_var
    - div_var
    - PG_GETARG_NUMERIC
    - NUMERIC_IS_SPECIAL
    - free_var
    - PG_RETURN_NUMERIC
    - init_var_from_num
    - init_var
    - Max
    - gcd_var
    - make_result
    - set_var_from_var
    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:3742,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3748,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3749,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3750,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3753,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3754,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3758,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3759,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3760,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3762,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3763,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3765,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3770,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3772,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3774,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3777,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3779,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3780,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3782,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3783
      start: 3739
    functionDepth: 2
    functionLinenumber: 3739
    functionLinenumberEnd: 3783
    functionName: numeric_fac
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - errmsg
    - mul_var
    - CHECK_FOR_INTERRUPTS
    - int64_to_numericvar
    - PG_GETARG_INT64
    - free_var
    - ereport
    - PG_RETURN_NUMERIC
    - init_var
    - make_result
    - errcode
    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:3794,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3804,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3807,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3808,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3809,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3810,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3812,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3812,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3820,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3822,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3841,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3842,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3843,1
    - Dst: sqrt_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3848,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3850,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3852,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3854,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3855
      start: 3791
    functionDepth: 2
    functionLinenumber: 3791
    functionLinenumberEnd: 3855
    functionName: numeric_sqrt
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Min
    - PG_GETARG_NUMERIC
    - NUMERIC_IS_SPECIAL
    - duplicate_numeric
    - ereport
    - PG_RETURN_NUMERIC
    - free_var
    - init_var_from_num
    - init_var
    - Max
    - make_result
    - sqrt_var
    - NUMERIC_IS_NINF
    - errcode
    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:3866,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3876,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3879,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3880,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3880,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3882,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3882,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3890,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3892,1
    - Dst: numericvar_to_double_no_overflow
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3895,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3904,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3905,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3908,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3909,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3910,1
    - Dst: exp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3915,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3917,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3919,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3921,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3922
      start: 3863
    functionDepth: 1
    functionLinenumber: 3863
    functionLinenumberEnd: 3922
    functionName: numeric_exp
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - Min
    - exp_var
    - PG_GETARG_NUMERIC
    - NUMERIC_IS_SPECIAL
    - duplicate_numeric
    - free_var
    - PG_RETURN_NUMERIC
    - init_var_from_num
    - init_var
    - Max
    - make_result
    - NUMERIC_IS_NINF
    - numericvar_to_double_no_overflow
    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:3933,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3943,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3945,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3946,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3947,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3948,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3950,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3950,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3953,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3954,1
    - Dst: estimate_ln_dweight
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3957,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3960,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3961,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3962,1
    - Dst: ln_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3964,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3966,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3968,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3970,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3971
      start: 3930
    functionDepth: 2
    functionLinenumber: 3930
    functionLinenumberEnd: 3971
    functionName: numeric_ln
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - errmsg
    - estimate_ln_dweight
    - Min
    - PG_GETARG_NUMERIC
    - NUMERIC_IS_SPECIAL
    - duplicate_numeric
    - ereport
    - PG_RETURN_NUMERIC
    - free_var
    - init_var_from_num
    - init_var
    - Max
    - make_result
    - NUMERIC_IS_NINF
    - errcode
    - ln_var
    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:3982,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3983,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3992,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3992,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3997,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3997,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3998,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:3998,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4000,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4001,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4003,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4004,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4005,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4008,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4009,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4010,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4011,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4014,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4015,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4015,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4017,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4017,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4019,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4019,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4021,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4021,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4027,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4028,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4029,1
    - Dst: log_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4035,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4037,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4039,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4041,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4042
      start: 3979
    functionDepth: 2
    functionLinenumber: 3979
    functionLinenumberEnd: 4042
    functionName: numeric_log
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - errmsg
    - NUMERIC_IS_PINF
    - Assert
    - PG_GETARG_NUMERIC
    - NUMERIC_IS_SPECIAL
    - free_var
    - ereport
    - PG_RETURN_NUMERIC
    - init_var_from_num
    - init_var
    - numeric_sign_internal
    - make_result
    - NUMERIC_IS_NAN
    - log_var
    - errcode
    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:4053,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4054,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4065,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4065,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4072,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4074,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4076,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4077,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4078,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4078,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4080,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4080,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4082,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4084,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4086,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4087,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4088,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4088,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4090,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4090,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4093,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4094,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4096,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4097,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4098,1
    - Dst: numeric_is_integral
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4099,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4100,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4101,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4102,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4109,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4111,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4112,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4113,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4113,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4120,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4120,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4129,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4129,1
    - Dst: NUMERIC_IS_INF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4142,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4146,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4150,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4151,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4152,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4152,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4154,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4157,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4157,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4159,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4159,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4167,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4170,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4170,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4172,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4172,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4175,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4175,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4183,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4183,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4189,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4192,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4192,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4194,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4194,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4204,1
    - Dst: numeric_sign_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4205,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4208,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4209,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4210,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4215,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4216,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4217,1
    - Dst: power_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4223,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4225,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4227,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4229,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 70
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4230
      start: 4050
    functionDepth: 2
    functionLinenumber: 4050
    functionLinenumberEnd: 4230
    functionName: numeric_power
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NUMERIC_IS_PINF
    - PG_RETURN_NUMERIC
    - init_var
    - numeric_is_integral
    - make_result
    - cmp_var
    - PG_GETARG_NUMERIC
    - free_var
    - init_var_from_num
    - NUMERIC_IS_NAN
    - NUMERIC_IS_NINF
    - errmsg
    - NUMERIC_IS_SPECIAL
    - numeric_sign_internal
    - Assert
    - NUMERIC_IS_INF
    - power_var
    - ereport
    - errcode
    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:4240,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4242,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4243,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4245,1
    - Dst: NUMERIC_DSCALE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4246
      start: 4237
    functionDepth: 1
    functionLinenumber: 4237
    functionLinenumberEnd: 4246
    functionName: numeric_scale
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_NUMERIC
    - NUMERIC_DSCALE
    - NUMERIC_IS_SPECIAL
    - PG_RETURN_NULL
    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: 4297
      start: 4251
    functionDepth: 0
    functionLinenumber: 4251
    functionLinenumberEnd: 4297
    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:4305,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4309,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4310,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4312,1
    - Dst: get_min_scale
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4313,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4314,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4316,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4317
      start: 4302
    functionDepth: 1
    functionLinenumber: 4302
    functionLinenumberEnd: 4317
    functionName: numeric_min_scale
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_NUMERIC
    - NUMERIC_IS_SPECIAL
    - free_var
    - init_var_from_num
    - PG_RETURN_NULL
    - get_min_scale
    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:4325,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4329,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4330,1
    - Dst: duplicate_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4330,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4332,1
    - Dst: get_min_scale
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4333,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4334,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4335,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4337,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4338
      start: 4322
    functionDepth: 1
    functionLinenumber: 4322
    functionLinenumberEnd: 4338
    functionName: numeric_trim_scale
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NUMERIC
    - NUMERIC_IS_SPECIAL
    - duplicate_numeric
    - free_var
    - PG_RETURN_NUMERIC
    - init_var_from_num
    - get_min_scale
    - make_result
    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:4352,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4354,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4355,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4356,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4357,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4359,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4360,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4361,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4363,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4365,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4366,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4367,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4368,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4370,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4371,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4372,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4376,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4377,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4379,1
    - Dst: random_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4381,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4383,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4385,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - state
    - rmin
    - rmax
    argTypes:
    - pg_prng_state*
    - Numeric
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4388
      start: 4343
    functionDepth: 2
    functionLinenumber: 4343
    functionLinenumberEnd: 4388
    functionName: random_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - errmsg
    - NUMERIC_IS_SPECIAL
    - free_var
    - ereport
    - init_var_from_num
    - init_var
    - random_var
    - make_result
    - NUMERIC_IS_NAN
    - errcode
    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:4404,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4406,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4408,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - val
    argTypes:
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4413
      start: 4398
    functionDepth: 1
    functionLinenumber: 4398
    functionLinenumberEnd: 4413
    functionName: int64_to_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 3
    functionsReached:
    - make_result
    - int64_to_numericvar
    - init_var
    - free_var
    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:4428,1
    - Dst: StaticAssertDecl
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4462,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4462,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4464,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4464,1
    - Dst: int128_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4472,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4477,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4479,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4480,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4481,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4483,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4487,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4492,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4497,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4499,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 2
    argNames:
    - val1
    - log10val2
    argTypes:
    - int64
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4502
      start: 4419
    functionDepth: 1
    functionLinenumber: 4419
    functionLinenumberEnd: 4502
    functionName: int64_div_fast_to_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 2
    functionsReached:
    - mul_var
    - lengthof
    - int64_to_numericvar
    - free_var
    - init_var
    - pg_mul_s64_overflow
    - unlikely
    - make_result
    - StaticAssertDecl
    - int128_to_numericvar
    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:4507,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4509,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4509,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4510
      start: 4504
    functionDepth: 2
    functionLinenumber: 4504
    functionLinenumberEnd: 4510
    functionName: int4_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - int64_to_numeric
    - PG_GETARG_INT32
    - PG_RETURN_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum int4_numeric(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4521,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4530,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4531,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4532,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4533,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4535,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4536,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4537,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4542,1
    - Dst: numericvar_to_int32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4544,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4553,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4554,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4555,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - num
    - have_error
    argTypes:
    - Numeric
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4560
      start: 4512
    functionDepth: 2
    functionLinenumber: 4512
    functionLinenumberEnd: 4560
    functionName: numeric_int4_opt_error
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - errmsg
    - NUMERIC_IS_SPECIAL
    - ereport
    - init_var_from_num
    - numericvar_to_int32
    - NUMERIC_IS_NAN
    - errcode
    linkageType: ''
    returnType: int32
    signature: int32 numeric_int4_opt_error(Numeric num, bool *have_error)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4565,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4567,1
    - Dst: numeric_int4_opt_error
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4568
      start: 4562
    functionDepth: 3
    functionLinenumber: 4562
    functionLinenumberEnd: 4568
    functionName: numeric_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_NUMERIC
    - numeric_int4_opt_error
    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:4580,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4583,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4583,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - var
    - result
    argTypes:
    - NumericVar*
    - int32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4590
      start: 4575
    functionDepth: 1
    functionLinenumber: 4575
    functionLinenumberEnd: 4590
    functionName: numericvar_to_int32
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 2
    functionsReached:
    - unlikely
    - numericvar_to_int64
    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:4595,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4597,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4597,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4598
      start: 4592
    functionDepth: 2
    functionLinenumber: 4592
    functionLinenumberEnd: 4598
    functionName: int8_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - int64_to_numeric
    - PG_RETURN_NUMERIC
    linkageType: ''
    returnType: Datum
    signature: Datum int8_numeric(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4609,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4618,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4619,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4620,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4621,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4623,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4624,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4625,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4630,1
    - Dst: numericvar_to_int64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4632,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4641,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4642,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4643,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - num
    - have_error
    argTypes:
    - Numeric
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4648
      start: 4600
    functionDepth: 2
    functionLinenumber: 4600
    functionLinenumberEnd: 4648
    functionName: numeric_int8_opt_error
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - errmsg
    - NUMERIC_IS_SPECIAL
    - ereport
    - numericvar_to_int64
    - init_var_from_num
    - NUMERIC_IS_NAN
    - errcode
    linkageType: ''
    returnType: int64
    signature: int64 numeric_int8_opt_error(Numeric num, bool *have_error)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4653,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4655,1
    - Dst: numeric_int8_opt_error
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4655,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4656
      start: 4650
    functionDepth: 3
    functionLinenumber: 4650
    functionLinenumberEnd: 4656
    functionName: numeric_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NUMERIC
    - numeric_int8_opt_error
    - PG_RETURN_INT64
    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:4662,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4664,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4664,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4665
      start: 4659
    functionDepth: 2
    functionLinenumber: 4659
    functionLinenumberEnd: 4665
    functionName: int2_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - int64_to_numeric
    - PG_RETURN_NUMERIC
    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:4671,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4676,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4678,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4679,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4680,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4681,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4683,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4684,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4685,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4689,1
    - Dst: numericvar_to_int64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4691,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4692,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4693,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4694,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4696,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4696,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4697,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4698,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4699,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4704,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4705
      start: 4668
    functionDepth: 2
    functionLinenumber: 4668
    functionLinenumberEnd: 4705
    functionName: numeric_int2
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_NUMERIC
    - NUMERIC_IS_SPECIAL
    - ereport
    - numericvar_to_int64
    - init_var_from_num
    - unlikely
    - PG_RETURN_INT16
    - NUMERIC_IS_NAN
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_int2(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4711,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4717,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4718,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4718,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4720,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4723,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4723,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4725,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4725,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4728,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4730,1
    - Dst: set_var_from_str
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4733,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4735,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4737,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4739,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4740
      start: 4708
    functionDepth: 1
    functionLinenumber: 4708
    functionLinenumberEnd: 4740
    functionName: float8_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - isnan
    - isinf
    - snprintf
    - free_var
    - PG_GETARG_FLOAT8
    - PG_RETURN_NUMERIC
    - init_var
    - make_result
    - set_var_from_str
    linkageType: ''
    returnType: Datum
    signature: Datum float8_numeric(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4746,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4750,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4752,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4753,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4753,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4754,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4755,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4755,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4757,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4757,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4760,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4760,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4761,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4763,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4763,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4765,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4767,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4768
      start: 4743
    functionDepth: 2
    functionLinenumber: 4743
    functionLinenumberEnd: 4768
    functionName: numeric_float8
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NUMERIC_IS_PINF
    - pfree
    - DirectFunctionCall1
    - DatumGetCString
    - PG_GETARG_NUMERIC
    - PG_RETURN_DATUM
    - NUMERIC_IS_SPECIAL
    - CStringGetDatum
    - NumericGetDatum
    - NUMERIC_IS_NINF
    - PG_RETURN_FLOAT8
    - get_float8_nan
    - 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:4779,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4782,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4784,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4786,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4789,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4795,1
    - Dst: numericvar_to_double_no_overflow
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4796,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4799,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4800
      start: 4776
    functionDepth: 1
    functionLinenumber: 4776
    functionLinenumberEnd: 4800
    functionName: numeric_float8_no_overflow
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NUMERIC_IS_PINF
    - PG_GETARG_NUMERIC
    - NUMERIC_IS_SPECIAL
    - init_var_from_num
    - NUMERIC_IS_NINF
    - PG_RETURN_FLOAT8
    - get_float8_nan
    - numericvar_to_double_no_overflow
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_float8_no_overflow(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4805,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4811,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4812,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4812,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4814,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4817,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4817,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4819,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4819,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4822,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4824,1
    - Dst: set_var_from_str
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4827,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4829,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4831,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4833,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4834
      start: 4802
    functionDepth: 1
    functionLinenumber: 4802
    functionLinenumberEnd: 4834
    functionName: float4_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - isnan
    - isinf
    - snprintf
    - free_var
    - PG_RETURN_NUMERIC
    - set_var_from_str
    - init_var
    - make_result
    - PG_GETARG_FLOAT4
    linkageType: ''
    returnType: Datum
    signature: Datum float4_numeric(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4840,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4844,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4846,1
    - Dst: PG_RETURN_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4847,1
    - Dst: get_float4_infinity
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4847,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4848,1
    - Dst: PG_RETURN_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4849,1
    - Dst: get_float4_infinity
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4849,1
    - Dst: PG_RETURN_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4851,1
    - Dst: get_float4_nan
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4851,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4854,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4854,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4855,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4857,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4857,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4859,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4861,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4862
      start: 4837
    functionDepth: 2
    functionLinenumber: 4837
    functionLinenumberEnd: 4862
    functionName: numeric_float4
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT4
    - NUMERIC_IS_PINF
    - pfree
    - DatumGetCString
    - PG_GETARG_NUMERIC
    - PG_RETURN_DATUM
    - NUMERIC_IS_SPECIAL
    - CStringGetDatum
    - NumericGetDatum
    - get_float4_nan
    - NUMERIC_IS_NINF
    - DirectFunctionCall1
    - get_float4_infinity
    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:4868,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4872,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4874,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4875,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4876,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4877,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4879,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4880,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4881,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4885,1
    - Dst: numericvar_to_uint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4887,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4888,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4889,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4890,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4892,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4893
      start: 4865
    functionDepth: 2
    functionLinenumber: 4865
    functionLinenumberEnd: 4893
    functionName: numeric_pg_lsn
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_NUMERIC
    - PG_RETURN_LSN
    - numericvar_to_uint64
    - NUMERIC_IS_SPECIAL
    - ereport
    - init_var_from_num
    - NUMERIC_IS_NAN
    - errcode
    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: 4927
      start: 4925
    functionDepth: 0
    functionLinenumber: 4925
    functionLinenumberEnd: 4927
    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:4939,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4940,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4942,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4944,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4948,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - fcinfo
    - calcSumX2
    argTypes:
    - FunctionCallInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4951
      start: 4932
    functionDepth: 2
    functionLinenumber: 4932
    functionLinenumberEnd: 4951
    functionName: makeNumericAggState
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - AggCheckCallContext
    - MemoryContextSwitchTo
    - elog
    - palloc0
    linkageType: ''
    returnType: NumericAggState
    signature: 'NumericAggState *

      makeNumericAggState(FunctionCallInfo fcinfo, bool calcSumX2)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4962,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - calcSumX2
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4967
      start: 4957
    functionDepth: 0
    functionLinenumber: 4957
    functionLinenumberEnd: 4967
    functionName: makeNumericAggStateCurrentContext
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - palloc0
    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:4980,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4982,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4984,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:4992,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5009,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5010,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5014,1
    - Dst: accum_sum_add
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5019,1
    - Dst: accum_sum_add
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5022,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5024,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - state
    - newval
    argTypes:
    - NumericAggState*
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5025
      start: 4972
    functionDepth: 1
    functionLinenumber: 4972
    functionLinenumberEnd: 5025
    functionName: do_numeric_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NUMERIC_IS_PINF
    - mul_var
    - MemoryContextSwitchTo
    - accum_sum_add
    - NUMERIC_IS_SPECIAL
    - init_var_from_num
    - init_var
    - NUMERIC_IS_NINF
    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:5050,1
    - Dst: NUMERIC_IS_PINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5052,1
    - Dst: NUMERIC_IS_NINF
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5054,1
    - Dst: init_var_from_num
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5062,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5097,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5098,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5102,1
    - Dst: accum_sum_add
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5108,1
    - Dst: accum_sum_add
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5114,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5120,1
    - Dst: accum_sum_reset
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5122,1
    - Dst: accum_sum_reset
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5124,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5127,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 2
    argNames:
    - state
    - newval
    argTypes:
    - NumericAggState*
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5130
      start: 5042
    functionDepth: 1
    functionLinenumber: 5042
    functionLinenumberEnd: 5130
    functionName: do_numeric_discard
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - NUMERIC_IS_PINF
    - mul_var
    - MemoryContextSwitchTo
    - Assert
    - accum_sum_reset
    - accum_sum_add
    - NUMERIC_IS_SPECIAL
    - init_var_from_num
    - init_var
    - NUMERIC_IS_NINF
    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:5140,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5140,1
    - Dst: makeNumericAggState
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5144,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5146,1
    - Dst: do_numeric_accum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5147,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5147,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5150
      start: 5135
    functionDepth: 3
    functionLinenumber: 5135
    functionLinenumberEnd: 5150
    functionName: numeric_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - makeNumericAggState
    - PG_GETARG_POINTER
    - PG_GETARG_NUMERIC
    - PG_ARGISNULL
    - do_numeric_accum
    - PG_RETURN_POINTER
    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:5163,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5164,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5166,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5166,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5167,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5167,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5170,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5175,1
    - Dst: makeNumericAggStateCurrentContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5177,1
    - Dst: accum_sum_copy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5185,1
    - Dst: accum_sum_copy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5186,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5188,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5190,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5213,1
    - Dst: accum_sum_combine
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5216,1
    - Dst: accum_sum_combine
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5217,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5219,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5221,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5222
      start: 5155
    functionDepth: 2
    functionLinenumber: 5155
    functionLinenumberEnd: 5222
    functionName: numeric_combine
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - makeNumericAggStateCurrentContext
    - PG_GETARG_POINTER
    - accum_sum_copy
    - PG_ARGISNULL
    - accum_sum_combine
    - AggCheckCallContext
    - elog
    - PG_RETURN_POINTER
    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:5232,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5232,1
    - Dst: makeNumericAggState
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5236,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5238,1
    - Dst: do_numeric_accum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5239,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5239,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5241,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5242
      start: 5227
    functionDepth: 3
    functionLinenumber: 5227
    functionLinenumberEnd: 5242
    functionName: numeric_avg_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - makeNumericAggState
    - PG_GETARG_POINTER
    - PG_GETARG_NUMERIC
    - PG_ARGISNULL
    - do_numeric_accum
    - PG_RETURN_POINTER
    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:5255,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5256,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5258,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5258,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5259,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5259,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5262,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5267,1
    - Dst: makeNumericAggStateCurrentContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5269,1
    - Dst: accum_sum_copy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5277,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5279,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5281,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5304,1
    - Dst: accum_sum_combine
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5307,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5309,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5311,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5312
      start: 5247
    functionDepth: 2
    functionLinenumber: 5247
    functionLinenumberEnd: 5312
    functionName: numeric_avg_combine
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - makeNumericAggStateCurrentContext
    - PG_GETARG_POINTER
    - accum_sum_copy
    - PG_ARGISNULL
    - accum_sum_combine
    - AggCheckCallContext
    - elog
    - PG_RETURN_POINTER
    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:5328,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5329,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5331,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5333,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5335,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5338,1
    - Dst: accum_sum_final
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5341,1
    - Dst: numericvar_serialize
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5342,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5345,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5348,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5351,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5354,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5357,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5359,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5361,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5363,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5364
      start: 5319
    functionDepth: 4
    functionLinenumber: 5319
    functionLinenumberEnd: 5364
    functionName: numeric_avg_serialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - pq_endtypsend
    - free_var
    - accum_sum_final
    - PG_RETURN_BYTEA_P
    - AggCheckCallContext
    - elog
    - init_var
    - pq_sendint32
    - pq_sendint64
    - numericvar_serialize
    - pq_begintypsend
    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:5379,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5380,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5382,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5384,1
    - Dst: initReadOnlyStringInfo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5390,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5390,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5391,1
    - Dst: makeNumericAggStateCurrentContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5393,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5396,1
    - Dst: numericvar_deserialize
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5399,1
    - Dst: accum_sum_add
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5400,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5403,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5406,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5409,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5412,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5415,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5417,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5419,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5421,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5422
      start: 5371
    functionDepth: 2
    functionLinenumber: 5371
    functionLinenumberEnd: 5422
    functionName: numeric_avg_deserialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - pq_getmsgend
    - makeNumericAggStateCurrentContext
    - accum_sum_add
    - pq_getmsgint
    - PG_GETARG_BYTEA_PP
    - free_var
    - AggCheckCallContext
    - elog
    - init_var
    - initReadOnlyStringInfo
    - pq_getmsgint64
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - numericvar_deserialize
    - 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:5438,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5439,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5441,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5443,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5445,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5448,1
    - Dst: accum_sum_final
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5451,1
    - Dst: numericvar_serialize
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5452,1
    - Dst: accum_sum_final
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5455,1
    - Dst: numericvar_serialize
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5456,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5459,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5462,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5465,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5468,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5471,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5473,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5475,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5477,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5478
      start: 5429
    functionDepth: 4
    functionLinenumber: 5429
    functionLinenumberEnd: 5478
    functionName: numeric_serialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - pq_endtypsend
    - free_var
    - accum_sum_final
    - PG_RETURN_BYTEA_P
    - AggCheckCallContext
    - elog
    - init_var
    - pq_sendint32
    - pq_sendint64
    - numericvar_serialize
    - pq_begintypsend
    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:5493,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5494,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5496,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5498,1
    - Dst: initReadOnlyStringInfo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5504,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5504,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5505,1
    - Dst: makeNumericAggStateCurrentContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5507,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5510,1
    - Dst: numericvar_deserialize
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5513,1
    - Dst: accum_sum_add
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5514,1
    - Dst: numericvar_deserialize
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5517,1
    - Dst: accum_sum_add
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5518,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5521,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5524,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5527,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5530,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5533,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5535,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5537,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5539,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5540
      start: 5485
    functionDepth: 2
    functionLinenumber: 5485
    functionLinenumberEnd: 5540
    functionName: numeric_deserialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - pq_getmsgend
    - makeNumericAggStateCurrentContext
    - accum_sum_add
    - pq_getmsgint
    - PG_GETARG_BYTEA_PP
    - free_var
    - AggCheckCallContext
    - elog
    - init_var
    - initReadOnlyStringInfo
    - pq_getmsgint64
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - numericvar_deserialize
    - 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:5551,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5551,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5555,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5557,1
    - Dst: do_numeric_discard
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5560,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5560,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5561,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5564,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5565
      start: 5546
    functionDepth: 2
    functionLinenumber: 5546
    functionLinenumberEnd: 5565
    functionName: numeric_accum_inv
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_GETARG_NUMERIC
    - PG_ARGISNULL
    - elog
    - PG_RETURN_NULL
    - do_numeric_discard
    - PG_RETURN_POINTER
    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:5602,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5603,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5605,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5607,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5610,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - fcinfo
    - calcSumX2
    argTypes:
    - FunctionCallInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5613
      start: 5595
    functionDepth: 2
    functionLinenumber: 5595
    functionLinenumberEnd: 5613
    functionName: makeInt128AggState
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - AggCheckCallContext
    - MemoryContextSwitchTo
    - elog
    - palloc0
    linkageType: ''
    returnType: Int128AggState
    signature: 'Int128AggState *

      makeInt128AggState(FunctionCallInfo fcinfo, bool calcSumX2)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5624,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - calcSumX2
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5628
      start: 5619
    functionDepth: 0
    functionLinenumber: 5619
    functionLinenumberEnd: 5628
    functionName: makeInt128AggStateCurrentContext
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - palloc0
    linkageType: ''
    returnType: Int128AggState
    signature: 'Int128AggState *

      makeInt128AggStateCurrentContext(bool calcSumX2)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - state
    - newval
    argTypes:
    - Int128AggState*
    - int128
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5641
      start: 5633
    functionDepth: 0
    functionLinenumber: 5633
    functionLinenumberEnd: 5641
    functionName: do_int128_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void do_int128_accum(Int128AggState *state, int128 newval)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - state
    - newval
    argTypes:
    - Int128AggState*
    - int128
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5654
      start: 5646
    functionDepth: 0
    functionLinenumber: 5646
    functionLinenumberEnd: 5654
    functionName: do_int128_discard
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void do_int128_discard(Int128AggState *state, int128 newval)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5670,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5670,1
    - Dst: makePolyNumAggState
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5674,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5676,1
    - Dst: do_int128_accum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5679,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5679,1
    - Dst: do_numeric_accum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5681,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5681,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5681,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5685,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5686
      start: 5665
    functionDepth: 2
    functionLinenumber: 5665
    functionLinenumberEnd: 5686
    functionName: int2_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - do_numeric_accum
    - PG_GETARG_INT16
    - int64_to_numeric
    - makePolyNumAggState
    - PG_RETURN_POINTER
    - do_int128_accum
    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:5693,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5693,1
    - Dst: makePolyNumAggState
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5697,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5699,1
    - Dst: do_int128_accum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5702,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5702,1
    - Dst: do_numeric_accum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5704,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5704,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5704,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5708,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5709
      start: 5688
    functionDepth: 2
    functionLinenumber: 5688
    functionLinenumberEnd: 5709
    functionName: int4_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - do_numeric_accum
    - PG_GETARG_INT32
    - int64_to_numeric
    - makePolyNumAggState
    - PG_RETURN_POINTER
    - do_int128_accum
    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:5716,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5716,1
    - Dst: makeNumericAggState
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5720,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5722,1
    - Dst: do_numeric_accum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5723,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5723,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5723,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5725,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5726
      start: 5711
    functionDepth: 3
    functionLinenumber: 5711
    functionLinenumberEnd: 5726
    functionName: int8_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - makeNumericAggState
    - PG_GETARG_POINTER
    - PG_GETARG_INT64
    - PG_ARGISNULL
    - do_numeric_accum
    - int64_to_numeric
    - PG_RETURN_POINTER
    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:5739,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5740,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5742,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5742,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5743,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5743,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5746,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5751,1
    - Dst: makePolyNumAggState
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5753,1
    - Dst: accum_sum_copy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5760,1
    - Dst: accum_sum_copy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5761,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5764,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5766,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5778,1
    - Dst: accum_sum_combine
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5781,1
    - Dst: accum_sum_combine
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5782,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5784,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5788,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5789
      start: 5731
    functionDepth: 2
    functionLinenumber: 5731
    functionLinenumberEnd: 5789
    functionName: numeric_poly_combine
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - PG_GETARG_POINTER
    - accum_sum_copy
    - PG_ARGISNULL
    - accum_sum_combine
    - AggCheckCallContext
    - elog
    - makePolyNumAggState
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_poly_combine(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5805,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5806,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5808,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5819,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5821,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5824,1
    - Dst: int128_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5828,1
    - Dst: accum_sum_final
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5830,1
    - Dst: numericvar_serialize
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5832,1
    - Dst: int128_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5836,1
    - Dst: accum_sum_final
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5838,1
    - Dst: numericvar_serialize
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5840,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5842,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5844,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5846,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5847
      start: 5796
    functionDepth: 4
    functionLinenumber: 5796
    functionLinenumberEnd: 5847
    functionName: numeric_poly_serialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - pq_endtypsend
    - free_var
    - accum_sum_final
    - AggCheckCallContext
    - elog
    - init_var
    - numericvar_serialize
    - PG_RETURN_BYTEA_P
    - pq_sendint64
    - int128_to_numericvar
    - pq_begintypsend
    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:5862,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5863,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5865,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5867,1
    - Dst: initReadOnlyStringInfo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5873,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5873,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5874,1
    - Dst: makePolyNumAggStateCurrentContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5876,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5879,1
    - Dst: numericvar_deserialize
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5882,1
    - Dst: numericvar_to_int128
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5884,1
    - Dst: accum_sum_add
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5886,1
    - Dst: numericvar_deserialize
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5890,1
    - Dst: numericvar_to_int128
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5892,1
    - Dst: accum_sum_add
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5894,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5897,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5899,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5901,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5902
      start: 5854
    functionDepth: 2
    functionLinenumber: 5854
    functionLinenumberEnd: 5902
    functionName: numeric_poly_deserialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - pq_getmsgend
    - numericvar_to_int128
    - makePolyNumAggStateCurrentContext
    - accum_sum_add
    - PG_GETARG_BYTEA_PP
    - free_var
    - AggCheckCallContext
    - elog
    - init_var
    - initReadOnlyStringInfo
    - pq_getmsgint64
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - numericvar_deserialize
    - 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:5912,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5912,1
    - Dst: makePolyNumAggState
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5916,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5918,1
    - Dst: do_int128_accum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5921,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5921,1
    - Dst: do_numeric_accum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5923,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5923,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5923,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5927,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5928
      start: 5907
    functionDepth: 2
    functionLinenumber: 5907
    functionLinenumberEnd: 5928
    functionName: int8_avg_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_GETARG_INT64
    - PG_ARGISNULL
    - do_numeric_accum
    - int64_to_numeric
    - makePolyNumAggState
    - PG_RETURN_POINTER
    - do_int128_accum
    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:5942,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5943,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5945,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5945,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5946,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5946,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5949,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5954,1
    - Dst: makePolyNumAggState
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5956,1
    - Dst: accum_sum_copy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5962,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5964,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5966,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5977,1
    - Dst: accum_sum_combine
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5980,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5982,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:5986,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5987
      start: 5934
    functionDepth: 2
    functionLinenumber: 5934
    functionLinenumberEnd: 5987
    functionName: int8_avg_combine
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - PG_GETARG_POINTER
    - accum_sum_copy
    - PG_ARGISNULL
    - accum_sum_combine
    - AggCheckCallContext
    - elog
    - makePolyNumAggState
    - PG_RETURN_POINTER
    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:6003,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6004,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6006,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6017,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6019,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6022,1
    - Dst: int128_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6026,1
    - Dst: accum_sum_final
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6028,1
    - Dst: numericvar_serialize
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6030,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6032,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6034,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6036,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6037
      start: 5994
    functionDepth: 4
    functionLinenumber: 5994
    functionLinenumberEnd: 6037
    functionName: int8_avg_serialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - pq_endtypsend
    - free_var
    - accum_sum_final
    - AggCheckCallContext
    - elog
    - init_var
    - numericvar_serialize
    - PG_RETURN_BYTEA_P
    - pq_sendint64
    - int128_to_numericvar
    - pq_begintypsend
    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:6051,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6052,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6054,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6056,1
    - Dst: initReadOnlyStringInfo
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6062,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6062,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6063,1
    - Dst: makePolyNumAggStateCurrentContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6065,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6068,1
    - Dst: numericvar_deserialize
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6071,1
    - Dst: numericvar_to_int128
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6073,1
    - Dst: accum_sum_add
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6075,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6078,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6080,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6082,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6083
      start: 6043
    functionDepth: 2
    functionLinenumber: 6043
    functionLinenumberEnd: 6083
    functionName: int8_avg_deserialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - pq_getmsgend
    - numericvar_to_int128
    - makePolyNumAggStateCurrentContext
    - accum_sum_add
    - PG_GETARG_BYTEA_PP
    - free_var
    - AggCheckCallContext
    - elog
    - init_var
    - initReadOnlyStringInfo
    - pq_getmsgint64
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - numericvar_deserialize
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum int8_avg_deserialize(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6094,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6094,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6098,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6100,1
    - Dst: do_int128_discard
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6103,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6103,1
    - Dst: do_numeric_discard
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6106,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6106,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6106,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6107,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6111,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6112
      start: 6089
    functionDepth: 2
    functionLinenumber: 6089
    functionLinenumberEnd: 6112
    functionName: int2_accum_inv
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - elog
    - PG_GETARG_INT16
    - do_int128_discard
    - do_numeric_discard
    - int64_to_numeric
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum int2_accum_inv(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6119,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6119,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6123,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6125,1
    - Dst: do_int128_discard
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6128,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6128,1
    - Dst: do_numeric_discard
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6131,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6131,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6131,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6132,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6136,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6137
      start: 6114
    functionDepth: 2
    functionLinenumber: 6114
    functionLinenumberEnd: 6137
    functionName: int4_accum_inv
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - elog
    - do_int128_discard
    - do_numeric_discard
    - PG_GETARG_INT32
    - int64_to_numeric
    - PG_RETURN_POINTER
    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:6144,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6144,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6148,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6150,1
    - Dst: do_numeric_discard
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6153,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6153,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6153,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6154,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6157,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6158
      start: 6139
    functionDepth: 2
    functionLinenumber: 6139
    functionLinenumberEnd: 6158
    functionName: int8_accum_inv
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_GETARG_INT64
    - PG_ARGISNULL
    - elog
    - do_numeric_discard
    - int64_to_numeric
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum int8_accum_inv(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6165,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6165,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6169,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6171,1
    - Dst: do_int128_discard
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6174,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6174,1
    - Dst: do_numeric_discard
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6177,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6177,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6177,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6178,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6182,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6183
      start: 6160
    functionDepth: 2
    functionLinenumber: 6160
    functionLinenumberEnd: 6183
    functionName: int8_avg_accum_inv
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_GETARG_INT64
    - PG_ARGISNULL
    - elog
    - do_int128_discard
    - do_numeric_discard
    - int64_to_numeric
    - PG_RETURN_POINTER
    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:6193,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6193,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6197,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6199,1
    - Dst: int128_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6201,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6203,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6205,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6207,1
    - Dst: numeric_sum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6211
      start: 6185
    functionDepth: 1
    functionLinenumber: 6185
    functionLinenumberEnd: 6211
    functionName: numeric_poly_sum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - numeric_sum
    - PG_ARGISNULL
    - free_var
    - PG_RETURN_NUMERIC
    - init_var
    - PG_RETURN_NULL
    - make_result
    - int128_to_numericvar
    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:6222,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6222,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6226,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6228,1
    - Dst: int128_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6230,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6232,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6232,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6233,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6233,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6235,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6237,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6237,1
    - Dst: numeric_avg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6239,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6241
      start: 6213
    functionDepth: 2
    functionLinenumber: 6213
    functionLinenumberEnd: 6241
    functionName: numeric_poly_avg
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_DATUM
    - PG_ARGISNULL
    - free_var
    - init_var
    - PG_RETURN_NULL
    - NumericGetDatum
    - DirectFunctionCall2
    - int64_to_numeric
    - make_result
    - numeric_avg
    - int128_to_numericvar
    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:6251,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6251,1
    - Dst: NA_TOTAL_COUNT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6254,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6255,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6258,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6258,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6262,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6262,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6264,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6264,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6266,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6266,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6268,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6268,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6270,1
    - Dst: accum_sum_final
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6271,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6272,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6272,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6273,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6275,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6275,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6276
      start: 6243
    functionDepth: 2
    functionLinenumber: 6243
    functionLinenumberEnd: 6276
    functionName: numeric_avg
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - NA_TOTAL_COUNT
    - PG_GETARG_POINTER
    - PG_RETURN_DATUM
    - PG_ARGISNULL
    - accum_sum_final
    - PG_RETURN_NUMERIC
    - free_var
    - init_var
    - PG_RETURN_NULL
    - NumericGetDatum
    - DirectFunctionCall2
    - int64_to_numeric
    - make_result
    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:6285,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6285,1
    - Dst: NA_TOTAL_COUNT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6288,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6289,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6292,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6292,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6296,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6296,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6298,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6298,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6300,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6300,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6302,1
    - Dst: accum_sum_final
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6303,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6304,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6305,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6307,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6308
      start: 6278
    functionDepth: 1
    functionLinenumber: 6278
    functionLinenumberEnd: 6308
    functionName: numeric_sum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - NA_TOTAL_COUNT
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - accum_sum_final
    - PG_RETURN_NUMERIC
    - free_var
    - init_var
    - PG_RETURN_NULL
    - make_result
    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:6339,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6358,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6361,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6362,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6363,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6365,1
    - Dst: accum_sum_final
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6366,1
    - Dst: accum_sum_final
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6367,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6369,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6370,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6375,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6376,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6377,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6379,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6382,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6387,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6389,1
    - Dst: select_div_scale
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6390,1
    - Dst: div_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6391,1
    - Dst: sqrt_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6393,1
    - Dst: make_result
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6395,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6398,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6399,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6400,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: 6403
      start: 6321
    functionDepth: 1
    functionLinenumber: 6321
    functionLinenumberEnd: 6403
    functionName: numeric_stddev_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - select_div_scale
    - mul_var
    - cmp_var
    - NA_TOTAL_COUNT
    - sub_var
    - div_var
    - int64_to_numericvar
    - sqrt_var
    - free_var
    - accum_sum_final
    - init_var
    - make_result
    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:6412,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6412,1
    - Dst: numeric_stddev_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6414,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6417,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6419,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6420
      start: 6405
    functionDepth: 2
    functionLinenumber: 6405
    functionLinenumberEnd: 6420
    functionName: numeric_var_samp
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - PG_RETURN_NUMERIC
    - PG_RETURN_NULL
    - 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:6429,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6429,1
    - Dst: numeric_stddev_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6431,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6434,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6436,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6437
      start: 6422
    functionDepth: 2
    functionLinenumber: 6422
    functionLinenumberEnd: 6437
    functionName: numeric_stddev_samp
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - PG_RETURN_NUMERIC
    - PG_RETURN_NULL
    - 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:6446,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6446,1
    - Dst: numeric_stddev_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6448,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6451,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6453,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6454
      start: 6439
    functionDepth: 2
    functionLinenumber: 6439
    functionLinenumberEnd: 6454
    functionName: numeric_var_pop
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - PG_RETURN_NUMERIC
    - PG_RETURN_NULL
    - 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:6463,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6463,1
    - Dst: numeric_stddev_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6465,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6468,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6470,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6471
      start: 6456
    functionDepth: 2
    functionLinenumber: 6456
    functionLinenumberEnd: 6471
    functionName: numeric_stddev_pop
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - PG_RETURN_NUMERIC
    - PG_RETURN_NULL
    - 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:6483,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6491,1
    - Dst: int128_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6493,1
    - Dst: accum_sum_add
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6494,1
    - Dst: int128_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6496,1
    - Dst: accum_sum_add
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6497,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6499,1
    - Dst: numeric_stddev_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6502,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6506,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6507,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6511,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6512,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: 6516
      start: 6474
    functionDepth: 2
    functionLinenumber: 6474
    functionLinenumberEnd: 6516
    functionName: numeric_poly_stddev_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - pfree
    - memset
    - accum_sum_add
    - free_var
    - init_var
    - numeric_stddev_internal
    - int128_to_numericvar
    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:6527,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6527,1
    - Dst: numeric_poly_stddev_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6529,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6532,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6534,1
    - Dst: numeric_var_samp
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6536,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6538
      start: 6519
    functionDepth: 3
    functionLinenumber: 6519
    functionLinenumberEnd: 6538
    functionName: numeric_poly_var_samp
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - PG_RETURN_NUMERIC
    - PG_RETURN_NULL
    - numeric_var_samp
    - numeric_poly_stddev_internal
    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:6548,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6548,1
    - Dst: numeric_poly_stddev_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6550,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6553,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6555,1
    - Dst: numeric_stddev_samp
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6557,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6559
      start: 6540
    functionDepth: 3
    functionLinenumber: 6540
    functionLinenumberEnd: 6559
    functionName: numeric_poly_stddev_samp
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - PG_RETURN_NUMERIC
    - PG_RETURN_NULL
    - numeric_poly_stddev_internal
    - numeric_stddev_samp
    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:6569,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6569,1
    - Dst: numeric_poly_stddev_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6571,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6574,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6576,1
    - Dst: numeric_var_pop
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6578,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6580
      start: 6561
    functionDepth: 3
    functionLinenumber: 6561
    functionLinenumberEnd: 6580
    functionName: numeric_poly_var_pop
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - numeric_var_pop
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - PG_RETURN_NUMERIC
    - PG_RETURN_NULL
    - numeric_poly_stddev_internal
    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:6590,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6590,1
    - Dst: numeric_poly_stddev_internal
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6592,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6595,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6597,1
    - Dst: numeric_stddev_pop
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6599,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6601
      start: 6582
    functionDepth: 3
    functionLinenumber: 6582
    functionLinenumberEnd: 6601
    functionName: numeric_poly_stddev_pop
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - numeric_stddev_pop
    - PG_ARGISNULL
    - PG_RETURN_NUMERIC
    - PG_RETURN_NULL
    - numeric_poly_stddev_internal
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_poly_stddev_pop(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6628,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6631,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6632,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6634,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6635,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6646,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6648,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6651,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6652,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6654,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6659,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6662,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6663,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6666,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6668,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6670
      start: 6623
    functionDepth: 2
    functionLinenumber: 6623
    functionLinenumberEnd: 6670
    functionName: int2_sum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_GETARG_INT64
    - PG_ARGISNULL
    - AggCheckCallContext
    - PG_GETARG_INT16
    - PG_RETURN_NULL
    - PG_RETURN_INT64
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum int2_sum(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6677,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6680,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6681,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6683,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6684,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6695,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6697,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6700,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6701,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6703,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6708,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6711,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6712,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6715,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6717,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6719
      start: 6672
    functionDepth: 2
    functionLinenumber: 6672
    functionLinenumberEnd: 6719
    functionName: int4_sum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_GETARG_INT64
    - PG_ARGISNULL
    - AggCheckCallContext
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    - PG_RETURN_INT64
    - PG_RETURN_POINTER
    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:6729,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6732,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6733,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6735,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6735,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6735,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6744,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6747,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6748,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6751,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6751,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6752,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6753,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6753,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6753,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6754
      start: 6724
    functionDepth: 2
    functionLinenumber: 6724
    functionLinenumberEnd: 6754
    functionName: int8_sum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NUMERIC
    - PG_GETARG_INT64
    - PG_RETURN_DATUM
    - PG_ARGISNULL
    - PG_RETURN_NUMERIC
    - PG_RETURN_NULL
    - NumericGetDatum
    - DirectFunctionCall2
    - int64_to_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:6776,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6784,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6785,1
    - Dst: PG_GETARG_ARRAYTYPE_P_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6787,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6789,1
    - Dst: ARR_SIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6790,1
    - Dst: ARR_OVERHEAD_NONULLS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6790,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6791,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6793,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6797,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6798
      start: 6772
    functionDepth: 2
    functionLinenumber: 6772
    functionLinenumberEnd: 6798
    functionName: int2_avg_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - ARR_DATA_PTR
    - PG_GETARG_ARRAYTYPE_P_COPY
    - PG_RETURN_ARRAYTYPE_P
    - AggCheckCallContext
    - PG_GETARG_INT16
    - elog
    - ARR_HASNULL
    - ARR_SIZE
    - PG_GETARG_ARRAYTYPE_P
    - ARR_OVERHEAD_NONULLS
    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:6804,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6812,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6813,1
    - Dst: PG_GETARG_ARRAYTYPE_P_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6815,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6817,1
    - Dst: ARR_SIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6818,1
    - Dst: ARR_OVERHEAD_NONULLS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6818,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6819,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6821,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6825,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6826
      start: 6800
    functionDepth: 2
    functionLinenumber: 6800
    functionLinenumberEnd: 6826
    functionName: int4_avg_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - ARR_DATA_PTR
    - PG_GETARG_ARRAYTYPE_P_COPY
    - PG_RETURN_ARRAYTYPE_P
    - AggCheckCallContext
    - elog
    - ARR_HASNULL
    - PG_GETARG_INT32
    - ARR_SIZE
    - PG_GETARG_ARRAYTYPE_P
    - ARR_OVERHEAD_NONULLS
    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:6836,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6837,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6839,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6840,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6842,1
    - Dst: ARR_SIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6843,1
    - Dst: ARR_OVERHEAD_NONULLS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6843,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6844,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6846,1
    - Dst: ARR_SIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6847,1
    - Dst: ARR_OVERHEAD_NONULLS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6847,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6848,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6850,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6851,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6856,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6857
      start: 6828
    functionDepth: 2
    functionLinenumber: 6828
    functionLinenumberEnd: 6857
    functionName: int4_avg_combine
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - ARR_DATA_PTR
    - PG_RETURN_ARRAYTYPE_P
    - AggCheckCallContext
    - elog
    - ARR_HASNULL
    - ARR_SIZE
    - PG_GETARG_ARRAYTYPE_P
    - ARR_OVERHEAD_NONULLS
    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:6863,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6871,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6872,1
    - Dst: PG_GETARG_ARRAYTYPE_P_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6874,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6876,1
    - Dst: ARR_SIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6877,1
    - Dst: ARR_OVERHEAD_NONULLS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6877,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6878,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6880,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6884,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6885
      start: 6859
    functionDepth: 2
    functionLinenumber: 6859
    functionLinenumberEnd: 6885
    functionName: int2_avg_accum_inv
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - ARR_DATA_PTR
    - PG_GETARG_ARRAYTYPE_P_COPY
    - PG_RETURN_ARRAYTYPE_P
    - AggCheckCallContext
    - PG_GETARG_INT16
    - elog
    - ARR_HASNULL
    - ARR_SIZE
    - PG_GETARG_ARRAYTYPE_P
    - ARR_OVERHEAD_NONULLS
    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:6891,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6899,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6900,1
    - Dst: PG_GETARG_ARRAYTYPE_P_COPY
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6902,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6904,1
    - Dst: ARR_SIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6905,1
    - Dst: ARR_OVERHEAD_NONULLS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6905,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6906,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6908,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6912,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6913
      start: 6887
    functionDepth: 2
    functionLinenumber: 6887
    functionLinenumberEnd: 6913
    functionName: int4_avg_accum_inv
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - ARR_DATA_PTR
    - PG_GETARG_ARRAYTYPE_P_COPY
    - PG_RETURN_ARRAYTYPE_P
    - AggCheckCallContext
    - elog
    - ARR_HASNULL
    - PG_GETARG_INT32
    - ARR_SIZE
    - PG_GETARG_ARRAYTYPE_P
    - ARR_OVERHEAD_NONULLS
    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:6918,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6923,1
    - Dst: ARR_SIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6924,1
    - Dst: ARR_OVERHEAD_NONULLS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6924,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6925,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6926,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6930,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6932,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6932,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6933,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6933,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6935,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6935,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6936
      start: 6915
    functionDepth: 2
    functionLinenumber: 6915
    functionLinenumberEnd: 6936
    functionName: int8_avg
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - ARR_DATA_PTR
    - PG_RETURN_DATUM
    - elog
    - PG_RETURN_NULL
    - NumericGetDatum
    - ARR_HASNULL
    - DirectFunctionCall2
    - int64_to_numeric
    - ARR_SIZE
    - PG_GETARG_ARRAYTYPE_P
    - ARR_OVERHEAD_NONULLS
    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:6945,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6948,1
    - Dst: ARR_SIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6949,1
    - Dst: ARR_OVERHEAD_NONULLS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6949,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6950,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6951,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6955,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6957,1
    - Dst: Int64GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6957,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6958
      start: 6942
    functionDepth: 1
    functionLinenumber: 6942
    functionLinenumberEnd: 6958
    functionName: int2int4_sum
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - ARR_DATA_PTR
    - PG_RETURN_DATUM
    - Int64GetDatumFast
    - elog
    - PG_RETURN_NULL
    - ARR_HASNULL
    - ARR_SIZE
    - PG_GETARG_ARRAYTYPE_P
    - ARR_OVERHEAD_NONULLS
    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:6976,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6980,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6982,1
    - Dst: NUMERIC_WEIGHT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6983,1
    - Dst: NUMERIC_DSCALE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6983,1
    - Dst: NUMERIC_SIGN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6984,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6987,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6990,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6993,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6996,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:6999,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7002,1
    - Dst: NUMERIC_SIGN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7002,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7007,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7008,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - str
    - num
    argTypes:
    - char*
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7009
      start: 6973
    functionDepth: 1
    functionLinenumber: 6973
    functionLinenumberEnd: 7009
    functionName: dump_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - printf
    - NUMERIC_DIGITS
    - NUMERIC_DSCALE
    - NUMERIC_NDIGITS
    - NUMERIC_WEIGHT
    - NUMERIC_SIGN
    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:7020,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7024,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7027,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7030,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7033,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7036,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7039,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7044,1
    - Dst: printf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7046,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 2
    argNames:
    - str
    - var
    argTypes:
    - char*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7047
      start: 7015
    functionDepth: 0
    functionLinenumber: 7015
    functionLinenumberEnd: 7047
    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:7071,1
    - Dst: digitbuf_alloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7072,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - var
    - ndigits
    argTypes:
    - NumericVar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7076
      start: 7068
    functionDepth: 0
    functionLinenumber: 7068
    functionLinenumberEnd: 7076
    functionName: alloc_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 6
    functionsReached:
    - digitbuf_alloc
    - digitbuf_free
    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:7087,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - var
    argTypes:
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7091
      start: 7084
    functionDepth: 0
    functionLinenumber: 7084
    functionLinenumberEnd: 7091
    functionName: free_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 47
    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:7103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - var
    argTypes:
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7109
      start: 7100
    functionDepth: 0
    functionLinenumber: 7100
    functionLinenumberEnd: 7109
    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:7167,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7170,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7170,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7173,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7178,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7200,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7209,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7237,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7242,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7252,1
    - Dst: alloc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7281,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7304,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7307,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7315,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7316,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7317,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7320,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7321,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7322,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: 7324
      start: 7127
    functionDepth: 2
    functionLinenumber: 7127
    functionLinenumberEnd: 7324
    functionName: set_var_from_str
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 4
    functionsReached:
    - errmsg
    - pfree
    - memset
    - isdigit
    - alloc_var
    - ereturn
    - palloc
    - strip_var
    - errcode
    - strlen
    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: 7336
      start: 7330
    functionDepth: 0
    functionLinenumber: 7330
    functionLinenumberEnd: 7336
    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:7367,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7369,1
    - Dst: isxdigit
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7384,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7389,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7390,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7391,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7392,1
    - Dst: xdigit_value
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7403,1
    - Dst: isxdigit
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7410,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7426,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7427,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7428,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7429,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7463,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7464,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7465,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7466,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7496,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7500,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7501,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7502,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7503,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7510,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7518,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7519,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7520,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7523,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7524,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7525,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: 7527
      start: 7357
    functionDepth: 2
    functionLinenumber: 7357
    functionLinenumberEnd: 7527
    functionName: set_var_from_non_decimal_integer_str
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - errmsg
    - mul_var
    - add_var
    - isxdigit
    - int64_to_numericvar
    - free_var
    - init_var
    - unlikely
    - xdigit_value
    - ereturn
    - zero_var
    - errcode
    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:7540,1
    - Dst: alloc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7542,1
    - Dst: NUMERIC_WEIGHT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7544,1
    - Dst: NUMERIC_SIGN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7545,1
    - Dst: NUMERIC_DSCALE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7546,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7548,1
    - Dst: NUMERIC_DIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7548,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - num
    - dest
    argTypes:
    - Numeric
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7549
      start: 7535
    functionDepth: 1
    functionLinenumber: 7535
    functionLinenumberEnd: 7549
    functionName: set_var_from_num
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 4
    functionsReached:
    - NUMERIC_DIGITS
    - NUMERIC_DSCALE
    - NUMERIC_NDIGITS
    - NUMERIC_WEIGHT
    - alloc_var
    - memcpy
    - NUMERIC_SIGN
    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:7569,1
    - Dst: NUMERIC_WEIGHT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7570,1
    - Dst: NUMERIC_SIGN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7571,1
    - Dst: NUMERIC_DSCALE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7572,1
    - Dst: NUMERIC_DIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7573,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - num
    - dest
    argTypes:
    - Numeric
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7575
      start: 7566
    functionDepth: 1
    functionLinenumber: 7566
    functionLinenumberEnd: 7575
    functionName: init_var_from_num
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 36
    functionsReached:
    - NUMERIC_DIGITS
    - NUMERIC_DSCALE
    - NUMERIC_NDIGITS
    - NUMERIC_WEIGHT
    - NUMERIC_SIGN
    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:7588,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7591,1
    - Dst: digitbuf_free
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7594,1
    - Dst: memmove
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7596,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - value
    - dest
    argTypes:
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7599
      start: 7583
    functionDepth: 0
    functionLinenumber: 7583
    functionLinenumberEnd: 7599
    functionName: set_var_from_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 3
    functionsReached:
    - digitbuf_alloc
    - memcpy
    - digitbuf_free
    - memmove
    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:7638,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 65
    argCount: 1
    argNames:
    - var
    argTypes:
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7738
      start: 7609
    functionDepth: 0
    functionLinenumber: 7609
    functionLinenumberEnd: 7738
    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:7788,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7806,1
    - Dst: power_ten_int
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7808,1
    - Dst: div_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7809,1
    - Dst: get_str_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7810,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7812,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7821,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7822,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7823,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7825,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 2
    argNames:
    - var
    - rscale
    argTypes:
    - NumericVar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7828
      start: 7762
    functionDepth: 1
    functionLinenumber: 7762
    functionLinenumberEnd: 7828
    functionName: get_str_from_var_sci
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - pfree
    - div_var
    - snprintf
    - free_var
    - init_var
    - get_str_from_var
    - log10
    - palloc
    - power_ten_int
    - strlen
    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:7844,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7845,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7846,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7847,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7849,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - buf
    - var
    argTypes:
    - StringInfo
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7850
      start: 7839
    functionDepth: 2
    functionLinenumber: 7839
    functionLinenumberEnd: 7850
    functionName: numericvar_serialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 4
    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:7861,1
    - Dst: alloc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7863,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7865,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7866,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7867,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7869,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - buf
    - var
    argTypes:
    - StringInfo
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7870
      start: 7855
    functionDepth: 2
    functionLinenumber: 7855
    functionLinenumberEnd: 7870
    functionName: numericvar_deserialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 4
    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:7883,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7883,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7884,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7884,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - num
    argTypes:
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7886
      start: 7878
    functionDepth: 1
    functionLinenumber: 7878
    functionLinenumberEnd: 7886
    functionName: duplicate_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 14
    functionsReached:
    - memcpy
    - palloc
    - VARSIZE
    linkageType: ''
    returnType: Numeric
    signature: Numeric duplicate_numeric(Numeric num)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7920,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7922,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7924,1
    - Dst: dump_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7928,1
    - Dst: NUMERIC_CAN_BE_SHORT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7953,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7956,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7957,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7968,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7969,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7975,1
    - Dst: NUMERIC_NDIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7975,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7977,1
    - Dst: NUMERIC_DIGITS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7977,1
    - Dst: NUMERIC_WEIGHT
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7980,1
    - Dst: NUMERIC_DSCALE
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7981,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7990,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7991,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7992,1
    - Dst: dump_numeric
      Src: /src/postgres/src/backend/utils/adt/numeric.c:7996,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 49
    argCount: 2
    argNames:
    - var
    - have_error
    argTypes:
    - NumericVar*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7998
      start: 7897
    functionDepth: 2
    functionLinenumber: 7897
    functionLinenumberEnd: 7998
    functionName: make_result_opt_error
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 6
    functionsReached:
    - errmsg
    - errcode
    - NUMERIC_CAN_BE_SHORT
    - Assert
    - NUMERIC_DIGITS
    - NUMERIC_DSCALE
    - NUMERIC_NDIGITS
    - ereport
    - dump_numeric
    - NUMERIC_WEIGHT
    - elog
    - memcpy
    - palloc
    - SET_VARSIZE
    linkageType: ''
    returnType: Numeric
    signature: Numeric make_result_opt_error(const NumericVar *var, bool *have_error)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_result_opt_error
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8009,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - var
    argTypes:
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8010
      start: 8006
    functionDepth: 3
    functionLinenumber: 8006
    functionLinenumberEnd: 8010
    functionName: make_result
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 42
    functionsReached:
    - make_result_opt_error
    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:8032,1
    - Dst: numeric_typmod_precision
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8035,1
    - Dst: numeric_typmod_scale
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8036,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8040,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8080,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8081,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8082,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8083,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 3
    argNames:
    - var
    - typmod
    - escontext
    argTypes:
    - NumericVar*
    - int32
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8096
      start: 8022
    functionDepth: 2
    functionLinenumber: 8022
    functionLinenumberEnd: 8096
    functionName: apply_typmod
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 3
    functionsReached:
    - errmsg
    - round_var
    - is_valid_numeric_typmod
    - numeric_typmod_scale
    - numeric_typmod_precision
    - ereturn
    - errdetail
    - errcode
    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:8113,1
    - Dst: NUMERIC_IS_SPECIAL
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8113,1
    - Dst: NUMERIC_IS_NAN
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8121,1
    - Dst: is_valid_numeric_typmod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8125,1
    - Dst: numeric_typmod_precision
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8128,1
    - Dst: numeric_typmod_scale
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8129,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8131,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8132,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8133,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8134,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - num
    - typmod
    - escontext
    argTypes:
    - Numeric
    - int32
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8136
      start: 8107
    functionDepth: 2
    functionLinenumber: 8107
    functionLinenumberEnd: 8136
    functionName: apply_typmod_special
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 3
    functionsReached:
    - errmsg
    - Assert
    - is_valid_numeric_typmod
    - NUMERIC_IS_SPECIAL
    - numeric_typmod_scale
    - numeric_typmod_precision
    - ereturn
    - NUMERIC_IS_NAN
    - errdetail
    - errcode
    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:8156,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8157,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8158,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8161,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8166,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8175,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8187,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8187,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8189,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8195,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8195,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8197,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8203,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8207,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 2
    argNames:
    - var
    - result
    argTypes:
    - NumericVar*
    - int64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8214
      start: 8144
    functionDepth: 1
    functionLinenumber: 8144
    functionLinenumberEnd: 8214
    functionName: numericvar_to_int64
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 3
    functionsReached:
    - round_var
    - Assert
    - free_var
    - init_var
    - unlikely
    - pg_mul_s64_overflow
    - pg_sub_s64_overflow
    - set_var_from_var
    - strip_var
    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:8228,1
    - Dst: pg_abs_s64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8232,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 2
    argNames:
    - val
    - var
    argTypes:
    - int64
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8259
      start: 8219
    functionDepth: 2
    functionLinenumber: 8219
    functionLinenumberEnd: 8259
    functionName: int64_to_numericvar
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 6
    functionsReached:
    - alloc_var
    - pg_abs_s64
    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:8277,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8278,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8279,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8282,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8287,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8294,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8303,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8310,1
    - Dst: pg_mul_u64_overflow
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8310,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8312,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8318,1
    - Dst: pg_add_u64_overflow
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8318,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8320,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8326,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 2
    argNames:
    - var
    - result
    argTypes:
    - NumericVar*
    - uint64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8331
      start: 8266
    functionDepth: 1
    functionLinenumber: 8266
    functionLinenumberEnd: 8331
    functionName: numericvar_to_uint64
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - round_var
    - Assert
    - pg_add_u64_overflow
    - free_var
    - pg_mul_u64_overflow
    - init_var
    - unlikely
    - set_var_from_var
    - strip_var
    linkageType: ''
    returnType: bool
    signature: bool numericvar_to_uint64(const NumericVar *var, uint64 *result)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8352,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8353,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8354,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8357,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8362,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8371,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8395,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8401,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 2
    argNames:
    - var
    - result
    argTypes:
    - NumericVar*
    - int128*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8405
      start: 8339
    functionDepth: 1
    functionLinenumber: 8339
    functionLinenumberEnd: 8405
    functionName: numericvar_to_int128
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 2
    functionsReached:
    - round_var
    - Assert
    - free_var
    - init_var
    - set_var_from_var
    - strip_var
    linkageType: ''
    returnType: bool
    signature: bool numericvar_to_int128(const NumericVar *var, int128 *result)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: alloc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8419,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 2
    argNames:
    - val
    - var
    argTypes:
    - int128
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8450
      start: 8410
    functionDepth: 0
    functionLinenumber: 8410
    functionLinenumberEnd: 8450
    functionName: int128_to_numericvar
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 6
    functionsReached:
    - alloc_var
    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:8463,1
    - Dst: strtod
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8466,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8470,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8471,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8472,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8476,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - var
    argTypes:
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8479
      start: 8456
    functionDepth: 2
    functionLinenumber: 8456
    functionLinenumberEnd: 8479
    functionName: numericvar_to_double_no_overflow
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 3
    functionsReached:
    - errmsg
    - pfree
    - ereport
    - get_str_from_var
    - strtod
    - errcode
    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:8491,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - var1
    - var2
    argTypes:
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8495
      start: 8488
    functionDepth: 1
    functionLinenumber: 8488
    functionLinenumberEnd: 8495
    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:8528,1
    - Dst: cmp_abs_common
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8535,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: 8537
      start: 8503
    functionDepth: 1
    functionLinenumber: 8503
    functionLinenumberEnd: 8537
    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:8559,1
    - Dst: cmp_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8567,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8575,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8576,1
    - Dst: sub_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8585,1
    - Dst: sub_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8595,1
    - Dst: cmp_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8610,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8618,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8619,1
    - Dst: sub_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8628,1
    - Dst: sub_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8638,1
    - Dst: add_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8650,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 3
    argNames:
    - var1
    - var2
    - result
    argTypes:
    - NumericVar*
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8654
      start: 8546
    functionDepth: 0
    functionLinenumber: 8546
    functionLinenumberEnd: 8654
    functionName: add_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 7
    functionsReached:
    - sub_abs
    - add_abs
    - Max
    - cmp_abs
    - zero_var
    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:8678,1
    - Dst: cmp_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8688,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8696,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8697,1
    - Dst: sub_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8706,1
    - Dst: sub_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8716,1
    - Dst: cmp_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8731,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8739,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8740,1
    - Dst: sub_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8749,1
    - Dst: sub_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8759,1
    - Dst: add_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8771,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 3
    argNames:
    - var1
    - var2
    - result
    argTypes:
    - NumericVar*
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8775
      start: 8663
    functionDepth: 0
    functionLinenumber: 8663
    functionLinenumberEnd: 8775
    functionName: sub_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 5
    functionsReached:
    - sub_abs
    - add_abs
    - Max
    - cmp_abs
    - zero_var
    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:8838,1
    - Dst: mul_var_short
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8849,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8904,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8916,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8920,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8921,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8946,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8980,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/numeric.c:8983,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9016,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9022,1
    - Dst: alloc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9034,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9050,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9052,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9061,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9064,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 98
    argCount: 4
    argNames:
    - var1
    - var2
    - result
    - rscale
    argTypes:
    - NumericVar*
    - NumericVar*
    - NumericVar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9065
      start: 8784
    functionDepth: 1
    functionLinenumber: 8784
    functionLinenumberEnd: 9065
    functionName: mul_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 9
    functionsReached:
    - Min
    - Assert
    - pfree
    - round_var
    - memset
    - mul_var_short
    - alloc_var
    - zero_var
    - palloc
    - strip_var
    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:9092,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9093,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9094,1
    - Dst: digitbuf_alloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9111,1
    - Dst: PRODSUM1
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9139,1
    - Dst: PRODSUM1
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9155,1
    - Dst: PRODSUM2
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9162,1
    - Dst: PRODSUM1
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9177,1
    - Dst: PRODSUM2
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9181,1
    - Dst: PRODSUM3
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9188,1
    - Dst: PRODSUM1
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9203,1
    - Dst: PRODSUM2
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9207,1
    - Dst: PRODSUM3
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9211,1
    - Dst: PRODSUM4
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9218,1
    - Dst: PRODSUM1
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9233,1
    - Dst: PRODSUM2
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9237,1
    - Dst: PRODSUM3
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9241,1
    - Dst: PRODSUM4
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9245,1
    - Dst: PRODSUM5
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9252,1
    - Dst: PRODSUM1
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9267,1
    - Dst: PRODSUM2
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9271,1
    - Dst: PRODSUM3
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9275,1
    - Dst: PRODSUM4
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9279,1
    - Dst: PRODSUM5
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9283,1
    - Dst: PRODSUM6
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9290,1
    - Dst: PRODSUM5
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9304,1
    - Dst: PRODSUM4
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9309,1
    - Dst: PRODSUM3
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9314,1
    - Dst: PRODSUM2
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9319,1
    - Dst: PRODSUM1
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9324,1
    - Dst: digitbuf_free
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9331,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9340,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 133
    argCount: 3
    argNames:
    - var1
    - var2
    - result
    argTypes:
    - NumericVar*
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9341
      start: 9075
    functionDepth: 1
    functionLinenumber: 9075
    functionLinenumberEnd: 9341
    functionName: mul_var_short
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - Assert
    - PRODSUM2
    - PRODSUM4
    - PRODSUM3
    - PRODSUM6
    - digitbuf_free
    - digitbuf_alloc
    - PRODSUM1
    - PRODSUM5
    - strip_var
    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: 9121
      start: 9120
    functionDepth: 0
    functionLinenumber: 9120
    functionLinenumberEnd: 9121
    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: 9122
      start: 9121
    functionDepth: 0
    functionLinenumber: 9121
    functionLinenumberEnd: 9122
    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: 9123
      start: 9122
    functionDepth: 0
    functionLinenumber: 9122
    functionLinenumberEnd: 9123
    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: 9124
      start: 9123
    functionDepth: 0
    functionLinenumber: 9123
    functionLinenumberEnd: 9124
    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: 9125
      start: 9124
    functionDepth: 0
    functionLinenumber: 9124
    functionLinenumberEnd: 9125
    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: 9126
      start: 9125
    functionDepth: 0
    functionLinenumber: 9125
    functionLinenumberEnd: 9126
    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:9395,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9396,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9397,1
    - Dst: div_var_int
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9421,1
    - Dst: div_var_int64
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9440,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9452,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9486,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9522,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9527,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9528,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9539,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9552,1
    - Dst: i64abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9620,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9631,1
    - Dst: i64abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9668,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9688,1
    - Dst: alloc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9855,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9876,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9878,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9888,1
    - Dst: trunc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9890,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9893,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: 9894
      start: 9362
    functionDepth: 2
    functionLinenumber: 9362
    functionLinenumberEnd: 9894
    functionName: div_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 7
    functionsReached:
    - errmsg
    - div_var_int64
    - Min
    - Assert
    - pfree
    - round_var
    - i64abs
    - memset
    - div_var_int
    - ereport
    - trunc_var
    - Max
    - alloc_var
    - zero_var
    - palloc
    - errcode
    - strip_var
    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:9919,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9920,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9921,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9926,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9944,1
    - Dst: digitbuf_alloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9949,1
    - Dst: abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9963,1
    - Dst: digitbuf_free
      Src: /src/postgres/src/backend/utils/adt/numeric.c:9991,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10000,1
    - Dst: trunc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10002,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10005,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: 10006
      start: 9903
    functionDepth: 2
    functionLinenumber: 9903
    functionLinenumberEnd: 10006
    functionName: div_var_int
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - errmsg
    - round_var
    - ereport
    - trunc_var
    - Max
    - digitbuf_free
    - digitbuf_alloc
    - zero_var
    - abs
    - errcode
    - strip_var
    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:10035,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10036,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10037,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10042,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10060,1
    - Dst: digitbuf_alloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10065,1
    - Dst: i64abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10079,1
    - Dst: digitbuf_free
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10107,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10116,1
    - Dst: trunc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10118,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10121,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: 10122
      start: 10019
    functionDepth: 2
    functionLinenumber: 10019
    functionLinenumberEnd: 10122
    functionName: div_var_int64
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - errmsg
    - round_var
    - i64abs
    - ereport
    - trunc_var
    - Max
    - digitbuf_free
    - digitbuf_alloc
    - zero_var
    - errcode
    - strip_var
    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:10186,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10187,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10188,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10189,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 2
    argNames:
    - var1
    - var2
    argTypes:
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10192
      start: 10131
    functionDepth: 0
    functionLinenumber: 10131
    functionLinenumberEnd: 10192
    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:10205,1
    - Dst: div_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10213,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10215,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10217,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - var1
    - var2
    - result
    argTypes:
    - NumericVar*
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10220
      start: 10200
    functionDepth: 3
    functionLinenumber: 10200
    functionLinenumberEnd: 10220
    functionName: mod_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - mul_var
    - sub_var
    - div_var
    - free_var
    - init_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:10236,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10237,1
    - Dst: div_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10244,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10247,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10248,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10260,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10261,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10265,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10266,1
    - Dst: cmp_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10270,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10275,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10276,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10280,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10281,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10285,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10286,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10288,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10289,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 4
    argNames:
    - var1
    - var2
    - quot
    - rem
    argTypes:
    - NumericVar*
    - NumericVar*
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10290
      start: 10229
    functionDepth: 3
    functionLinenumber: 10229
    functionLinenumberEnd: 10290
    functionName: div_mod_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 0
    functionsReached:
    - mul_var
    - sub_var
    - div_var
    - free_var
    - init_var
    - cmp_abs
    - add_var
    - set_var_from_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:10304,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10305,1
    - Dst: trunc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10307,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10309,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10310,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10312,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10313,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - var
    - result
    argTypes:
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10314
      start: 10299
    functionDepth: 2
    functionLinenumber: 10299
    functionLinenumberEnd: 10314
    functionName: ceil_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - cmp_var
    - free_var
    - trunc_var
    - init_var
    - add_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:10328,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10329,1
    - Dst: trunc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10331,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10333,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10334,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10336,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10337,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - var
    - result
    argTypes:
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10338
      start: 10323
    functionDepth: 2
    functionLinenumber: 10323
    functionLinenumberEnd: 10338
    functionName: floor_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - cmp_var
    - sub_var
    - free_var
    - trunc_var
    - init_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:10354,1
    - Dst: cmp_abs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10362,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10377,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10383,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10384,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10387,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10388,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10393,1
    - Dst: mod_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10395,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10398,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10399,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10404,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10405,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 3
    argNames:
    - var1
    - var2
    - result
    argTypes:
    - NumericVar*
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10406
      start: 10346
    functionDepth: 4
    functionLinenumber: 10346
    functionLinenumberEnd: 10406
    functionName: gcd_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 2
    functionsReached:
    - CHECK_FOR_INTERRUPTS
    - free_var
    - mod_var
    - Max
    - init_var
    - cmp_abs
    - set_var_from_var
    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:10437,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10440,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10450,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10451,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10452,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10454,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10455,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10456,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10457,1
    - 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: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10480,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10489,1
    - Dst: sqrt
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10587,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10677,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10751,1
    - Dst: int128_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10761,1
    - Dst: int128_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10763,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10767,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10771,1
    - Dst: int64_to_numericvar
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10773,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10790,1
    - Dst: alloc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10791,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10792,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10797,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10801,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10808,1
    - Dst: alloc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10809,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10810,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10815,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10819,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10825,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10827,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10828,1
    - Dst: div_mod_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10829,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10833,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10843,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10844,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10849,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10853,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10854,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10855,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10861,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10862,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10865,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10872,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10877,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10880,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10882,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10883,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10884,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10885,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10886,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10887,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 181
    argCount: 3
    argNames:
    - arg
    - result
    - rscale
    argTypes:
    - NumericVar*
    - NumericVar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10888
      start: 10416
    functionDepth: 4
    functionLinenumber: 10416
    functionLinenumberEnd: 10888
    functionName: sqrt_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 2
    functionsReached:
    - sub_var
    - init_var
    - zero_var
    - Min
    - cmp_var
    - mul_var
    - free_var
    - Max
    - alloc_var
    - memcpy
    - set_var_from_var
    - strip_var
    - int128_to_numericvar
    - errmsg
    - int64_to_numericvar
    - div_mod_var
    - add_var
    - sqrt
    - Assert
    - round_var
    - ereport
    - errcode
    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:10908,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10909,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10911,1
    - Dst: numericvar_to_double_no_overflow
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10917,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10921,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10924,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10925,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10926,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10927,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10942,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10947,1
    - Dst: div_var_int
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10954,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10967,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10979,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10981,1
    - Dst: div_var_int
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10983,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10987,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10989,1
    - Dst: div_var_int
      Src: /src/postgres/src/backend/utils/adt/numeric.c:10991,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11002,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11003,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11007,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11009,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11010,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 45
    argCount: 3
    argNames:
    - arg
    - result
    - rscale
    argTypes:
    - NumericVar*
    - NumericVar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11011
      start: 10896
    functionDepth: 3
    functionLinenumber: 10896
    functionLinenumberEnd: 11011
    functionName: exp_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - mul_var
    - round_var
    - add_var
    - free_var
    - ereport
    - div_var_int
    - init_var
    - Max
    - zero_var
    - fabs
    - set_var_from_var
    - numericvar_to_double_no_overflow
    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:11034,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11035,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11045,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11046,1
    - Dst: log10
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11051,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11059,1
    - Dst: log
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11088,1
    - Dst: log10
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11089,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11089,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 1
    argNames:
    - var
    argTypes:
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11099
      start: 11025
    functionDepth: 2
    functionLinenumber: 11025
    functionLinenumberEnd: 11099
    functionName: estimate_ln_dweight
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - cmp_var
    - log
    - sub_var
    - free_var
    - init_var
    - log10
    - fabs
    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:11119,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11121,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11122,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11123,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11125,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11126,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11127,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11129,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11130,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11131,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11132,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:11135,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11153,1
    - Dst: sqrt_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11156,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11157,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11160,1
    - Dst: sqrt_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11163,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11164,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11185,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11186,1
    - Dst: div_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11187,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11188,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11189,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11196,1
    - Dst: div_var_int
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11197,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11202,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11209,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11211,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11212,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11213,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11214,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 47
    argCount: 3
    argNames:
    - arg
    - result
    - rscale
    argTypes:
    - NumericVar*
    - NumericVar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11215
      start: 11107
    functionDepth: 5
    functionLinenumber: 11107
    functionLinenumberEnd: 11215
    functionName: ln_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - errmsg
    - mul_var
    - cmp_var
    - sub_var
    - set_var_from_var
    - div_var
    - free_var
    - ereport
    - div_var_int
    - init_var
    - sqrt_var
    - add_var
    - errcode
    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:11237,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11238,1
    - Dst: estimate_ln_dweight
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11241,1
    - Dst: estimate_ln_dweight
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11242,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11251,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11252,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11253,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11254,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11261,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11264,1
    - Dst: ln_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11267,1
    - Dst: ln_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11268,1
    - Dst: div_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11271,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11273,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 3
    argNames:
    - base
    - num
    - result
    argTypes:
    - NumericVar*
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11275
      start: 11225
    functionDepth: 6
    functionLinenumber: 11225
    functionLinenumberEnd: 11275
    functionName: log_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - estimate_ln_dweight
    - Min
    - div_var
    - free_var
    - init_var
    - Max
    - ln_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:11304,1
    - Dst: power_var_int
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11309,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11319,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11321,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11326,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11327,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11328,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11341,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11342,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11343,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11353,1
    - Dst: estimate_ln_dweight
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11378,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11387,1
    - Dst: ln_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11389,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11391,1
    - Dst: numericvar_to_double_no_overflow
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11393,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11396,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11399,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11400,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11401,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11402,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11411,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11412,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11413,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11414,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11418,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11422,1
    - Dst: ln_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11426,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11428,1
    - Dst: exp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11430,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11435,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11436,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11437,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 59
    argCount: 3
    argNames:
    - base
    - exp
    - result
    argTypes:
    - NumericVar*
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11438
      start: 11285
    functionDepth: 6
    functionLinenumber: 11285
    functionLinenumberEnd: 11438
    functionName: power_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - cmp_var
    - estimate_ln_dweight
    - mul_var
    - Min
    - free_var
    - ereport
    - numericvar_to_int64
    - power_var_int
    - init_var
    - Max
    - numericvar_to_double_no_overflow
    - exp_var
    - zero_var
    - fabs
    - set_var_from_var
    - ln_var
    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:11486,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11493,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11494,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11495,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11498,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11509,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11510,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11511,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11512,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11525,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11529,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11530,1
    - Dst: div_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11533,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11536,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11546,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11547,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11548,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11549,1
    - Dst: log
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11575,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11575,1
    - Dst: pg_abs_s32
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11581,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11583,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11584,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11587,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11589,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11599,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11600,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11602,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11608,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11610,1
    - Dst: mul_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11612,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11628,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11629,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11630,1
    - Dst: zero_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11631,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11637,1
    - Dst: div_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11641,1
    - Dst: round_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11643,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: 11644
      start: 11447
    functionDepth: 3
    functionLinenumber: 11447
    functionLinenumberEnd: 11644
    functionName: power_var_int
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - errmsg
    - Min
    - round_var
    - mul_var
    - log
    - set_var_from_var
    - div_var
    - free_var
    - ereport
    - pg_abs_s32
    - Max
    - init_var
    - log10
    - zero_var
    - fabs
    - errcode
    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:11656,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - exp
    - result
    argTypes:
    - int
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11672
      start: 11652
    functionDepth: 1
    functionLinenumber: 11652
    functionLinenumberEnd: 11672
    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:11690,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11693,1
    - Dst: sub_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11694,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11697,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11698,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11699,1
    - Dst: set_var_from_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11704,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11706,1
    - Dst: alloc_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11767,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11781,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11783,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11803,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11817,1
    - Dst: pg_prng_uint64_range
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11824,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11829,1
    - Dst: cmp_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11833,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11836,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11838,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: 11839
      start: 11677
    functionDepth: 3
    functionLinenumber: 11677
    functionLinenumberEnd: 11839
    functionName: random_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - errmsg
    - cmp_var
    - sub_var
    - set_var_from_var
    - free_var
    - ereport
    - Max
    - init_var
    - alloc_var
    - add_var
    - pg_prng_uint64_range
    - errcode
    - strip_var
    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:11863,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - var1
    - var2
    argTypes:
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11865
      start: 11860
    functionDepth: 1
    functionLinenumber: 11860
    functionLinenumberEnd: 11865
    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: 11929
      start: 11874
    functionDepth: 0
    functionLinenumber: 11874
    functionLinenumberEnd: 11929
    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:11960,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11962,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11967,1
    - Dst: digitbuf_alloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:11973,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12000,1
    - Dst: digitbuf_free
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12002,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12010,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 3
    argNames:
    - var1
    - var2
    - result
    argTypes:
    - NumericVar*
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12011
      start: 11938
    functionDepth: 1
    functionLinenumber: 11938
    functionLinenumberEnd: 12011
    functionName: add_abs
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 4
    functionsReached:
    - Assert
    - Max
    - digitbuf_free
    - digitbuf_alloc
    - strip_var
    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:12047,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12052,1
    - Dst: digitbuf_alloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12058,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12085,1
    - Dst: digitbuf_free
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12087,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12095,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 3
    argNames:
    - var1
    - var2
    - result
    argTypes:
    - NumericVar*
    - NumericVar*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12096
      start: 12023
    functionDepth: 1
    functionLinenumber: 12023
    functionLinenumberEnd: 12096
    functionName: sub_abs
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 5
    functionsReached:
    - Assert
    - Max
    - digitbuf_free
    - digitbuf_alloc
    - strip_var
    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:12194,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12195,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 48
    argCount: 2
    argNames:
    - var
    - rscale
    argTypes:
    - NumericVar*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12202
      start: 12105
    functionDepth: 1
    functionLinenumber: 12105
    functionLinenumberEnd: 12202
    functionName: round_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 13
    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: 12266
      start: 12211
    functionDepth: 0
    functionLinenumber: 12211
    functionLinenumberEnd: 12266
    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: 12300
      start: 12273
    functionDepth: 0
    functionLinenumber: 12273
    functionLinenumberEnd: 12300
    functionName: strip_var
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 13
    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: 12325
      start: 12314
    functionDepth: 0
    functionLinenumber: 12314
    functionLinenumberEnd: 12325
    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:12347,1
    - Dst: accum_sum_rescale
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12353,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - accum
    - val
    argTypes:
    - NumericSumAccum*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12373
      start: 12330
    functionDepth: 1
    functionLinenumber: 12330
    functionLinenumberEnd: 12373
    functionName: accum_sum_add
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 7
    functionsReached:
    - accum_sum_carry
    - accum_sum_rescale
    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:12401,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 1
    argNames:
    - accum
    argTypes:
    - NumericSumAccum*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12443
      start: 12378
    functionDepth: 1
    functionLinenumber: 12378
    functionLinenumberEnd: 12443
    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:12505,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12506,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12510,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12512,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12514,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12516,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12525,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 2
    argNames:
    - accum
    - val
    argTypes:
    - NumericSumAccum*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12531
      start: 12451
    functionDepth: 1
    functionLinenumber: 12451
    functionLinenumberEnd: 12531
    functionName: accum_sum_rescale
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 1
    functionsReached:
    - memcpy
    - Assert
    - palloc0
    - pfree
    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:12549,1
    - Dst: accum_sum_carry
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12554,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12557,1
    - Dst: init_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12558,1
    - Dst: digitbuf_alloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12566,1
    - Dst: digitbuf_alloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12567,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12571,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12574,1
    - Dst: add_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12579,1
    - Dst: strip_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12582,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 2
    argNames:
    - accum
    - result
    argTypes:
    - NumericSumAccum*
    - NumericVar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12583
      start: 12540
    functionDepth: 2
    functionLinenumber: 12540
    functionLinenumberEnd: 12583
    functionName: accum_sum_final
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 7
    functionsReached:
    - Assert
    - init_var
    - digitbuf_alloc
    - add_var
    - accum_sum_carry
    - set_var_from_var
    - strip_var
    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:12594,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12595,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12597,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12598,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - dst
    - src
    argTypes:
    - NumericSumAccum*
    - NumericSumAccum*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12603
      start: 12591
    functionDepth: 0
    functionLinenumber: 12591
    functionLinenumberEnd: 12603
    functionName: accum_sum_copy
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 4
    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:12613,1
    - Dst: accum_sum_final
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12615,1
    - Dst: accum_sum_add
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12616,1
    - Dst: free_var
      Src: /src/postgres/src/backend/utils/adt/numeric.c:12618,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - accum
    - accum2
    argTypes:
    - NumericSumAccum*
    - NumericSumAccum*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12619
      start: 12608
    functionDepth: 3
    functionLinenumber: 12608
    functionLinenumberEnd: 12619
    functionName: accum_sum_combine
    functionSourceFile: /src/postgres/src/backend/utils/adt/numeric.c
    functionUses: 4
    functionsReached:
    - init_var
    - free_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:
    - pg_cmp_s32
    - WEP_GETPOS
    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:
    - WEP_GETWEIGHT
    - qsort
    - 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:
    - pfree
    - Assert
    - memcpy
    - SHORTALIGN
    - qsort_arg
    - repalloc
    - strncmp
    - 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
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:205,1
    - Dst: palloc
      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:
    - uniqueentry
    - PG_RETURN_TSVECTOR
    - pfree
    - ARRPTR
    - init_tsvector_parser
    - memcpy
    - errmsg
    - SOFT_ERROR_OCCURRED
    - close_tsvector_parser
    - STRPTR
    - elog
    - ereturn
    - repalloc
    - palloc
    - SHORTALIGN
    - SET_VARSIZE
    - CALCDATASIZE
    - PG_GETARG_CSTRING
    - Assert
    - palloc0
    - gettoken_tsvector
    - PG_RETURN_NULL
    - errcode
    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
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:343,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:345,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:347,1
    - Dst: POSDATALEN
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:355,1
    - Dst: POSDATAPTR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:360,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:363,1
    - Dst: WEP_GETPOS
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:363,1
    - Dst: WEP_GETWEIGHT
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:364,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:390,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:391,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 392
    functionName: tsvectorout
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsvector.c
    functionUses: 0
    functionsReached:
    - WEP_GETWEIGHT
    - PG_FREE_IF_COPY
    - t_iseq
    - pg_mblen
    - POSDATAPTR
    - sprintf
    - WEP_GETPOS
    - PG_RETURN_CSTRING
    - STRPTR
    - POSDATALEN
    - ARRPTR
    - pg_database_encoding_max_length
    - PG_GETARG_TSVECTOR
    - palloc
    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:409,1
    - Dst: ARRPTR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:413,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:415,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:417,1
    - Dst: pq_sendtext
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:426,1
    - Dst: STRPTR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:426,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:427,1
    - Dst: POSDATALEN
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:429,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:430,1
    - Dst: POSDATAPTR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:434,1
    - Dst: pq_sendint16
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:437,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:442,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:442,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 406
    functionDepth: 4
    functionLinenumber: 406
    functionLinenumberEnd: 443
    functionName: tsvectorsend
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsvector.c
    functionUses: 0
    functionsReached:
    - POSDATAPTR
    - pq_endtypsend
    - STRPTR
    - POSDATALEN
    - ARRPTR
    - PG_GETARG_TSVECTOR
    - PG_RETURN_BYTEA_P
    - pq_sendint16
    - pq_sendint32
    - pq_begintypsend
    - pq_sendbyte
    - pq_sendtext
    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:448,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:459,1
    - Dst: nentries < 0 || nentries >
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:460,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:461,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:466,1
    - Dst: pq_getmsgstring
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:476,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:477,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:481,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:483,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:486,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:489,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:496,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:500,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:507,1
    - Dst: STRPTR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:507,1
    - Dst: compareentry
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:511,1
    - Dst: STRPTR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:513,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:527,1
    - Dst: STRPTR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:529,1
    - Dst: SHORTALIGN
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:530,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:533,1
    - Dst: STRPTR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:533,1
    - Dst: POSDATAPTR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:535,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:538,1
    - Dst: WEP_GETPOS
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:539,1
    - Dst: WEP_GETPOS
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:539,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:540,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:547,1
    - Dst: qsort_arg
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:550,1
    - Dst: ARRPTR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:550,1
    - Dst: STRPTR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:551,1
    - Dst: PG_RETURN_TSVECTOR
      Src: /src/postgres/src/backend/utils/adt/tsvector.c:553,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 445
    functionDepth: 2
    functionLinenumber: 445
    functionLinenumberEnd: 554
    functionName: tsvectorrecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsvector.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TSVECTOR
    - pq_getmsgstring
    - nentries < 0 || nentries >
    - PG_GETARG_POINTER
    - POSDATAPTR
    - compareentry
    - WEP_GETPOS
    - STRPTR
    - palloc0
    - ARRPTR
    - elog
    - SHORTALIGN
    - memcpy
    - repalloc
    - pq_getmsgint
    - SET_VARSIZE
    - strlen
    - qsort_arg
    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:
    - pfree
    - Assert
    - QTNodeCompare
    - QTNCopy
    - QTNFree
    - QTNEq
    - palloc0
    - QTNSort
    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:
    - check_stack_depth
    - pfree
    - CHECK_FOR_INTERRUPTS
    - QTNFree
    - dofindsubquery
    - 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:
    - MemoryContextSwitchTo
    - QTNFree
    - SPI_cursor_open
    - SPI_gettypeid
    - PG_GETARG_TSQUERY_COPY
    - SPI_prepare
    - QTNClearFlags
    - SPI_cursor_close
    - text_to_cstring
    - PG_RETURN_POINTER
    - pfree
    - GETQUERY
    - GETOPERAND
    - DatumGetPointer
    - errmsg
    - findsubquery
    - SPI_connect
    - SPI_getbinval
    - DatumGetTSQuery
    - elog
    - QTN2QT
    - SPI_cursor_fetch
    - SET_VARSIZE
    - PG_FREE_IF_COPY
    - PG_GETARG_TEXT_PP
    - ereport
    - QTNTernary
    - SPI_freetuptable
    - QT2QTN
    - QTNBinary
    - SPI_freeplan
    - QTNSort
    - SPI_finish
    - errcode
    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
    - PG_FREE_IF_COPY
    - findsubquery
    - QTNFree
    - GETQUERY
    - PG_GETARG_TSQUERY_COPY
    - QTNTernary
    - QT2QTN
    - QTNBinary
    - QTN2QT
    - SET_VARSIZE
    - GETOPERAND
    - QTNSort
    - 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
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:143,1
    - Dst: palloc
      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: 5
    functionLinenumber: 73
    functionLinenumberEnd: 323
    functionName: record_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_HEAPTUPLEHEADER
    - errdetail
    - MemoryContextAlloc
    - pfree
    - heap_freetuple
    - PG_GETARG_OID
    - fmgr_info_cxt
    - memcpy
    - errmsg
    - heap_form_tuple
    - resetStringInfo
    - TupleDescAttr
    - lookup_rowtype_tupdesc
    - MemSet
    - errsave
    - ereturn
    - isspace
    - palloc
    - check_stack_depth
    - PG_GETARG_CSTRING
    - getTypeInputInfo
    - ReleaseTupleDesc
    - appendStringInfoChar
    - InputFunctionCallSafe
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    - initStringInfo
    - errcode
    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
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:386,1
    - Dst: palloc
      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: 4
    functionLinenumber: 328
    functionLinenumberEnd: 474
    functionName: record_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - getTypeOutputInfo
    - heap_deform_tuple
    - HeapTupleHeaderGetTypMod
    - MemoryContextAlloc
    - HeapTupleHeaderGetDatumLength
    - pfree
    - ItemPointerSetInvalid
    - OutputFunctionCall
    - fmgr_info_cxt
    - PG_GETARG_HEAPTUPLEHEADER
    - appendStringInfoCharMacro
    - TupleDescAttr
    - PG_RETURN_CSTRING
    - lookup_rowtype_tupdesc
    - MemSet
    - isspace
    - palloc
    - check_stack_depth
    - ReleaseTupleDesc
    - appendStringInfoChar
    - HeapTupleHeaderGetTypeId
    - initStringInfo
    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
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:542,1
    - Dst: palloc
      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: 5
    functionLinenumber: 479
    functionLinenumberEnd: 681
    functionName: record_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - ReceiveFunctionCall
    - PG_RETURN_HEAPTUPLEHEADER
    - format_type_extended
    - pfree
    - heap_freetuple
    - PG_GETARG_OID
    - fmgr_info_cxt
    - getTypeBinaryInputInfo
    - memcpy
    - errmsg
    - heap_form_tuple
    - itemlen < -1 || itemlen >
    - PG_GETARG_POINTER
    - TupleDescAttr
    - lookup_rowtype_tupdesc
    - MemSet
    - palloc
    - check_stack_depth
    - ReleaseTupleDesc
    - ereport
    - PG_GETARG_INT32
    - initReadOnlyStringInfo
    - MemoryContextAlloc
    - pq_getmsgint
    - errcode
    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
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:744,1
    - Dst: palloc
      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: 4
    functionLinenumber: 686
    functionLinenumberEnd: 808
    functionName: record_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - heap_deform_tuple
    - SendFunctionCall
    - PG_RETURN_BYTEA_P
    - HeapTupleHeaderGetTypMod
    - HeapTupleHeaderGetDatumLength
    - pfree
    - pq_sendbytes
    - ItemPointerSetInvalid
    - fmgr_info_cxt
    - pq_sendint32
    - PG_GETARG_HEAPTUPLEHEADER
    - TupleDescAttr
    - lookup_rowtype_tupdesc
    - VARSIZE
    - VARDATA
    - MemSet
    - palloc
    - check_stack_depth
    - ReleaseTupleDesc
    - pq_endtypsend
    - HeapTupleHeaderGetTypeId
    - MemoryContextAlloc
    - getTypeBinaryOutputInfo
    - pq_begintypsend
    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: 4
    functionLinenumber: 822
    functionLinenumberEnd: 1055
    functionName: record_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - heap_deform_tuple
    - HeapTupleHeaderGetTypMod
    - HeapTupleHeaderGetDatumLength
    - pfree
    - LOCAL_FCINFO
    - ItemPointerSetInvalid
    - lookup_type_cache
    - Max
    - PG_GETARG_HEAPTUPLEHEADER
    - FunctionCallInvoke
    - errmsg
    - InitFunctionCallInfoData
    - TupleDescAttr
    - format_type_be
    - lookup_rowtype_tupdesc
    - DatumGetInt32
    - MemSet
    - OidIsValid
    - palloc
    - check_stack_depth
    - ReleaseTupleDesc
    - Assert
    - PG_FREE_IF_COPY
    - ereport
    - HeapTupleHeaderGetTypeId
    - MemoryContextAlloc
    - errcode
    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: 4
    functionLinenumber: 1066
    functionLinenumberEnd: 1280
    functionName: record_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - heap_deform_tuple
    - HeapTupleHeaderGetTypMod
    - HeapTupleHeaderGetDatumLength
    - pfree
    - LOCAL_FCINFO
    - ItemPointerSetInvalid
    - lookup_type_cache
    - Max
    - PG_GETARG_HEAPTUPLEHEADER
    - FunctionCallInvoke
    - errmsg
    - InitFunctionCallInfoData
    - TupleDescAttr
    - format_type_be
    - lookup_rowtype_tupdesc
    - MemSet
    - OidIsValid
    - palloc
    - check_stack_depth
    - ReleaseTupleDesc
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - ereport
    - HeapTupleHeaderGetTypeId
    - DatumGetBool
    - MemoryContextAlloc
    - errcode
    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: 5
    functionLinenumber: 1282
    functionLinenumberEnd: 1286
    functionName: record_ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - DatumGetBool
    - PG_RETURN_BOOL
    - record_eq
    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: 5
    functionLinenumber: 1288
    functionLinenumberEnd: 1292
    functionName: record_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - record_cmp
    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: 5
    functionLinenumber: 1294
    functionLinenumberEnd: 1298
    functionName: record_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - record_cmp
    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: 5
    functionLinenumber: 1300
    functionLinenumberEnd: 1304
    functionName: record_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - record_cmp
    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: 5
    functionLinenumber: 1306
    functionLinenumberEnd: 1310
    functionName: record_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - record_cmp
    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: 5
    functionLinenumber: 1312
    functionLinenumberEnd: 1316
    functionName: btrecordcmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - record_cmp
    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: 5
    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: 5
    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: pfree
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1533,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: 4
    functionLinenumber: 1348
    functionLinenumberEnd: 1583
    functionName: record_image_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - heap_deform_tuple
    - HeapTupleHeaderGetTypMod
    - HeapTupleHeaderGetDatumLength
    - Min
    - pfree
    - memcmp
    - ItemPointerSetInvalid
    - VARDATA_ANY
    - Max
    - PG_DETOAST_DATUM_PACKED
    - DatumGetPointer
    - PG_GETARG_HEAPTUPLEHEADER
    - errmsg
    - TupleDescAttr
    - format_type_be
    - lookup_rowtype_tupdesc
    - elog
    - MemSet
    - palloc
    - toast_raw_datum_size
    - Assert
    - ReleaseTupleDesc
    - PG_FREE_IF_COPY
    - ereport
    - HeapTupleHeaderGetTypeId
    - MemoryContextAlloc
    - errcode
    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: 4
    functionLinenumber: 1594
    functionLinenumberEnd: 1768
    functionName: record_image_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - heap_deform_tuple
    - HeapTupleHeaderGetTypMod
    - HeapTupleHeaderGetDatumLength
    - pfree
    - ItemPointerSetInvalid
    - Max
    - PG_GETARG_HEAPTUPLEHEADER
    - errmsg
    - TupleDescAttr
    - format_type_be
    - lookup_rowtype_tupdesc
    - MemSet
    - palloc
    - ReleaseTupleDesc
    - PG_FREE_IF_COPY
    - datum_image_eq
    - PG_RETURN_BOOL
    - ereport
    - HeapTupleHeaderGetTypeId
    - MemoryContextAlloc
    - errcode
    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: 5
    functionLinenumber: 1770
    functionLinenumberEnd: 1774
    functionName: record_image_ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - DatumGetBool
    - PG_RETURN_BOOL
    - record_image_eq
    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: 5
    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: 5
    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: 5
    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: 5
    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: 5
    functionLinenumber: 1800
    functionLinenumberEnd: 1804
    functionName: btrecordimagecmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - record_image_cmp
    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
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1866,1
    - Dst: palloc
      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: 4
    functionLinenumber: 1811
    functionLinenumberEnd: 1929
    functionName: hash_record
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - heap_deform_tuple
    - PG_RETURN_UINT32
    - HeapTupleHeaderGetTypMod
    - HeapTupleHeaderGetDatumLength
    - pfree
    - LOCAL_FCINFO
    - ItemPointerSetInvalid
    - lookup_type_cache
    - DatumGetUInt32
    - PG_GETARG_HEAPTUPLEHEADER
    - FunctionCallInvoke
    - errmsg
    - InitFunctionCallInfoData
    - TupleDescAttr
    - format_type_be
    - lookup_rowtype_tupdesc
    - MemSet
    - OidIsValid
    - palloc
    - check_stack_depth
    - ReleaseTupleDesc
    - Assert
    - PG_FREE_IF_COPY
    - ereport
    - HeapTupleHeaderGetTypeId
    - MemoryContextAlloc
    - errcode
    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
      Src: /src/postgres/src/backend/utils/adt/rowtypes.c:1987,1
    - Dst: palloc
      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: 4
    functionLinenumber: 1931
    functionLinenumberEnd: 2052
    functionName: hash_record_extended
    functionSourceFile: /src/postgres/src/backend/utils/adt/rowtypes.c
    functionUses: 0
    functionsReached:
    - heap_deform_tuple
    - HeapTupleHeaderGetTypMod
    - HeapTupleHeaderGetDatumLength
    - pfree
    - LOCAL_FCINFO
    - PG_RETURN_UINT64
    - Int64GetDatum
    - ItemPointerSetInvalid
    - lookup_type_cache
    - PG_GETARG_HEAPTUPLEHEADER
    - FunctionCallInvoke
    - errmsg
    - InitFunctionCallInfoData
    - TupleDescAttr
    - format_type_be
    - lookup_rowtype_tupdesc
    - DatumGetUInt64
    - MemSet
    - OidIsValid
    - palloc
    - check_stack_depth
    - ReleaseTupleDesc
    - Assert
    - PG_FREE_IF_COPY
    - PG_GETARG_INT64
    - ereport
    - HeapTupleHeaderGetTypeId
    - MemoryContextAlloc
    - errcode
    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: 2
    functionLinenumber: 49
    functionLinenumberEnd: 179
    functionName: expand_array
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_expanded.c
    functionUses: 2
    functionsReached:
    - ARR_ELEMTYPE
    - ARR_SIZE
    - Assert
    - copy_byval_expanded_array
    - MemoryContextSwitchTo
    - ARR_DIMS
    - get_typlenbyvalalign
    - EOHPGetRWDatum
    - EOH_init_header
    - ARR_DATA_PTR
    - ARR_NDIM
    - AllocSetContextCreate
    - VARATT_IS_EXTERNAL_EXPANDED
    - ARR_LBOUND
    - MemoryContextAlloc
    - DatumGetArrayTypePCopy
    - DatumGetPointer
    - DatumGetEOHP
    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:
    - MemoryContextAlloc
    - memcpy
    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:243,1
    - Dst: ARR_SIZE
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:247,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:260,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:260,1
    - Dst: att_addlength_datum
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:268,1
    - Dst: att_align_nominal
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:269,1
    - Dst: AllocSizeIsValid
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:271,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:272,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:273,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:274,1
    - Dst: ARR_OVERHEAD_WITHNULLS
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:279,1
    - Dst: ARR_OVERHEAD_NONULLS
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:281,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - eohptr
    argTypes:
    - ExpandedObjectHeader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 287
    functionName: EA_get_flat_size
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_expanded.c
    functionUses: 0
    functionsReached:
    - errmsg
    - att_addlength_datum
    - Assert
    - errcode
    - AllocSizeIsValid
    - att_align_nominal
    - ereport
    - ArrayGetNItems
    - ARR_OVERHEAD_WITHNULLS
    - ARR_SIZE
    - ARR_OVERHEAD_NONULLS
    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:302,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:307,1
    - Dst: ARR_SIZE
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:307,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:308,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:313,1
    - Dst: ARR_OVERHEAD_WITHNULLS
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:320,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:325,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:327,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:331,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:331,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:332,1
    - Dst: ARR_LBOUND
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:332,1
    - Dst: CopyArrayEls
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:334,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 3
    argNames:
    - eohptr
    - result
    - allocated_size
    argTypes:
    - ExpandedObjectHeader*
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 292
    functionDepth: 1
    functionLinenumber: 292
    functionLinenumberEnd: 338
    functionName: EA_flatten_into
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_expanded.c
    functionUses: 0
    functionsReached:
    - Assert
    - ARR_DIMS
    - memset
    - ARR_OVERHEAD_WITHNULLS
    - CopyArrayEls
    - ARR_LBOUND
    - SET_VARSIZE
    - memcpy
    - ARR_SIZE
    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:355,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:355,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:357,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:359,1
    - Dst: expand_array
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:364,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:365,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - d
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 351
    functionDepth: 3
    functionLinenumber: 351
    functionLinenumberEnd: 366
    functionName: DatumGetExpandedArray
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_expanded.c
    functionUses: 1
    functionsReached:
    - Assert
    - VARATT_IS_EXTERNAL_EXPANDED_RW
    - DatumGetPointer
    - expand_array
    - DatumGetEOHP
    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:375,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:375,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:377,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:379,1
    - Dst: expand_array
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:392,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:393,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - d
    - metacache
    argTypes:
    - Datum
    - ArrayMetaState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 371
    functionDepth: 3
    functionLinenumber: 371
    functionLinenumberEnd: 394
    functionName: DatumGetExpandedArrayX
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_expanded.c
    functionUses: 0
    functionsReached:
    - Assert
    - VARATT_IS_EXTERNAL_EXPANDED_RW
    - DatumGetPointer
    - expand_array
    - DatumGetEOHP
    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:408,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:408,1
    - Dst: DatumGetEOHP
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:410,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:411,1
    - Dst: PG_DETOAST_DATUM
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:416,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - d
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 400
    functionDepth: 1
    functionLinenumber: 400
    functionLinenumberEnd: 417
    functionName: DatumGetAnyArrayP
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_expanded.c
    functionUses: 0
    functionsReached:
    - Assert
    - VARATT_IS_EXTERNAL_EXPANDED
    - PG_DETOAST_DATUM
    - DatumGetPointer
    - DatumGetEOHP
    linkageType: ''
    returnType: AnyArrayType
    signature: 'AnyArrayType *

      DatumGetAnyArrayP(Datum d)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:428,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:434,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:438,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/array_expanded.c:451,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - eah
    argTypes:
    - ExpandedArrayHeader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 423
    functionDepth: 1
    functionLinenumber: 423
    functionLinenumberEnd: 453
    functionName: deconstruct_expanded_array
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_expanded.c
    functionUses: 1
    functionsReached:
    - deconstruct_array
    - MemoryContextSwitchTo
    - ARR_HASNULL
    linkageType: ''
    returnType: void
    signature: void deconstruct_expanded_array(ExpandedArrayHeader *eah)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:36,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:43,1
    - Dst: pg_prng_strong_seed
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:43,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:45,1
    - Dst: pg_prng_seed
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:50,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 33
    functionDepth: 3
    functionLinenumber: 33
    functionLinenumberEnd: 54
    functionName: initialize_prng
    functionSourceFile: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c
    functionUses: 0
    functionsReached:
    - GetCurrentTimestamp
    - pg_prng_seed
    - unlikely
    - pg_prng_strong_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:64,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:66,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:67,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:68,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:69,1
    - Dst: pg_prng_fseed
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:72,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:75,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 61
    functionDepth: 4
    functionLinenumber: 61
    functionLinenumberEnd: 76
    functionName: setseed
    functionSourceFile: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c
    functionUses: 0
    functionsReached:
    - isnan
    - errmsg
    - pg_prng_fseed
    - PG_RETURN_VOID
    - ereport
    - PG_GETARG_FLOAT8
    - errcode
    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:88,1
    - Dst: pg_prng_double
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:91,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 83
    functionDepth: 4
    functionLinenumber: 83
    functionLinenumberEnd: 94
    functionName: drandom
    functionSourceFile: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c
    functionUses: 0
    functionsReached:
    - initialize_prng
    - pg_prng_double
    - PG_RETURN_FLOAT8
    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:104,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:105,1
    - Dst: initialize_prng
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:109,1
    - Dst: pg_prng_double_normal
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:112,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 101
    functionDepth: 4
    functionLinenumber: 101
    functionLinenumberEnd: 118
    functionName: drandom_normal
    functionSourceFile: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c
    functionUses: 0
    functionsReached:
    - initialize_prng
    - PG_RETURN_FLOAT8
    - pg_prng_double_normal
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum drandom_normal(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:128,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:129,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:133,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:134,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:135,1
    - Dst: initialize_prng
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:137,1
    - Dst: pg_prng_int64_range
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:139,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 125
    functionDepth: 4
    functionLinenumber: 125
    functionLinenumberEnd: 142
    functionName: int4random
    functionSourceFile: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - initialize_prng
    - pg_prng_int64_range
    - PG_RETURN_INT32
    - ereport
    - PG_GETARG_INT32
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum int4random(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:152,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:153,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:157,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:158,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:159,1
    - Dst: initialize_prng
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:161,1
    - Dst: pg_prng_int64_range
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:163,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 149
    functionDepth: 4
    functionLinenumber: 149
    functionLinenumberEnd: 166
    functionName: int8random
    functionSourceFile: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - initialize_prng
    - pg_prng_int64_range
    - PG_GETARG_INT64
    - ereport
    - PG_RETURN_INT64
    - errcode
    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:176,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:177,1
    - Dst: initialize_prng
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:180,1
    - Dst: random_numeric
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:182,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 173
    functionDepth: 4
    functionLinenumber: 173
    functionLinenumberEnd: 185
    functionName: numeric_random
    functionSourceFile: /src/postgres/src/backend/utils/adt/pseudorandomfuncs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NUMERIC
    - PG_GETARG_NUMERIC
    - initialize_prng
    - random_numeric
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_random(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_node
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:58,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:65,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:66,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:67,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:68,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:68,1
    - Dst: transformExpr
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:76,1
    - Dst: exprType
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:77,1
    - Dst: can_coerce_type
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:91,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:98,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:99,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:100,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:100,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:101,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:102,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:102,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:112,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:113,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:114,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:114,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:115,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:116,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:116,1
    - Dst: coerce_type
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:127,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:134,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:135,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:136,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:137,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:137,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:145,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:146,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:147,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:148,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:149,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:149,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:152,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: 162
      start: 42
    functionDepth: 6
    functionLinenumber: 42
    functionLinenumberEnd: 162
    functionName: jsonb_subscript_transform
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonbsubs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - exprType
    - Assert
    - transformExpr
    - exprLocation
    - lfirst_node
    - parser_errposition
    - format_type_be
    - ereport
    - errhint
    - lappend
    - can_coerce_type
    - coerce_type
    - errcode
    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:58,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:65,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:66,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:67,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:68,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:68,1
    - Dst: transformExpr
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:76,1
    - Dst: exprType
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:77,1
    - Dst: can_coerce_type
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:91,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:98,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:99,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:100,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:100,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:101,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:102,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:102,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:112,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:113,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:114,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:114,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:115,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:116,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:116,1
    - Dst: coerce_type
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:127,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:134,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:135,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:136,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:137,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:137,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:145,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:146,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:147,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:148,1
    - Dst: parser_errposition
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:149,1
    - Dst: exprLocation
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:149,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:152,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 56
    functionDepth: 6
    functionLinenumber: 56
    functionLinenumberEnd: 153
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonbsubs.c
    functionUses: 465
    functionsReached:
    - errmsg
    - exprType
    - Assert
    - transformExpr
    - exprLocation
    - lfirst_node
    - parser_errposition
    - format_type_be
    - ereport
    - errhint
    - lappend
    - can_coerce_type
    - coerce_type
    - errcode
    linkageType: ''
    returnType: void
    signature: void foreach(idx, indirection)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:202,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:203,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:204,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:216,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:216,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:218,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 174
    functionDepth: 2
    functionLinenumber: 174
    functionLinenumberEnd: 226
    functionName: jsonb_subscript_check_subscripts
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonbsubs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - DatumGetCString
    - CStringGetTextDatum
    - ereport
    - DirectFunctionCall1
    - errcode
    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:244,1
    - Dst: DatumGetJsonbP
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:246,1
    - Dst: jsonb_get_element
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 234
    functionDepth: 2
    functionLinenumber: 234
    functionLinenumberEnd: 252
    functionName: jsonb_subscript_fetch
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonbsubs.c
    functionUses: 0
    functionsReached:
    - DatumGetJsonbP
    - Assert
    - 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:273,1
    - Dst: DatumGetJsonbP
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:273,1
    - Dst: JsonbValueToJsonb
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:301,1
    - Dst: DatumGetJsonbP
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:305,1
    - Dst: jsonb_set_element
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:307,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 260
    functionDepth: 2
    functionLinenumber: 260
    functionLinenumberEnd: 312
    functionName: jsonb_subscript_assign
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonbsubs.c
    functionUses: 0
    functionsReached:
    - DatumGetJsonbP
    - JsonbToJsonbValue
    - jsonb_set_element
    - 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:337,1
    - Dst: jsonb_get_element
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:339,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - state
    - op
    - econtext
    argTypes:
    - ExprState*
    - ExprEvalStep*
    - ExprContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 322
    functionDepth: 2
    functionLinenumber: 322
    functionLinenumberEnd: 345
    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:363,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:363,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:366,1
    - Dst: foreach
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:379,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:381,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:382,1
    - Dst: exprType
      Src: /src/postgres/src/backend/utils/adt/jsonbsubs.c:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 3
    argNames:
    - sbsref
    - sbsrefstate
    - methods
    argTypes:
    - SubscriptingRef*
    - SubscriptingRefState*
    - SubscriptExecSteps*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 352
    functionDepth: 2
    functionLinenumber: 352
    functionLinenumberEnd: 394
    functionName: jsonb_exec_setup
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonbsubs.c
    functionUses: 0
    functionsReached:
    - exprType
    - palloc0
    - foreach
    - foreach_current_index
    - lfirst
    - MAXALIGN
    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:412,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 401
    functionDepth: 1
    functionLinenumber: 401
    functionLinenumberEnd: 413
    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_GETARG_CSTRING
    - uint32in_subr
    - PG_RETURN_TRANSACTIONID
    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:
    - palloc
    - snprintf
    - 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_GETARG_POINTER
    - pq_getmsgint
    - PG_RETURN_TRANSACTIONID
    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
    - PG_GETARG_TRANSACTIONID
    - PG_RETURN_BYTEA_P
    - pq_sendint32
    - pq_begintypsend
    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:
    - PG_GETARG_INT64
    - hash_uint32_extended
    - 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:
    - PG_RETURN_INT32
    - GetStableLatestTransactionId
    - TransactionIdIsNormal
    - 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
    - PG_RETURN_INT32
    - ReadNextMultiXactId
    - 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:
    - TransactionIdIsNormal
    - Assert
    - TransactionIdPrecedes
    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:
    - XidFromFullTransactionId
    - PG_GETARG_FULLTRANSACTIONID
    - PG_RETURN_TRANSACTIONID
    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
    - FullTransactionIdFromU64
    - uint64in_subr
    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:
    - snprintf
    - PG_RETURN_CSTRING
    - U64FromFullTransactionId
    - palloc
    - PG_GETARG_FULLTRANSACTIONID
    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_GETARG_POINTER
    - PG_RETURN_FULLTRANSACTIONID
    - pq_getmsgint64
    - FullTransactionIdFromU64
    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:
    - pq_endtypsend
    - U64FromFullTransactionId
    - PG_RETURN_BYTEA_P
    - PG_GETARG_FULLTRANSACTIONID
    - pq_sendint64
    - pq_begintypsend
    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:
    - FullTransactionIdEquals
    - PG_RETURN_BOOL
    - PG_GETARG_FULLTRANSACTIONID
    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:
    - FullTransactionIdEquals
    - PG_RETURN_BOOL
    - PG_GETARG_FULLTRANSACTIONID
    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_RETURN_BOOL
    - PG_GETARG_FULLTRANSACTIONID
    - FullTransactionIdPrecedes
    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_RETURN_BOOL
    - PG_GETARG_FULLTRANSACTIONID
    - 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:
    - FullTransactionIdPrecedesOrEquals
    - PG_RETURN_BOOL
    - PG_GETARG_FULLTRANSACTIONID
    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:
    - FullTransactionIdFollowsOrEquals
    - PG_RETURN_BOOL
    - PG_GETARG_FULLTRANSACTIONID
    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_RETURN_INT32
    - FullTransactionIdEquals
    - PG_GETARG_FULLTRANSACTIONID
    - 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_RETURN_FULLTRANSACTIONID
    - PG_GETARG_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_RETURN_FULLTRANSACTIONID
    - FullTransactionIdPrecedes
    - PG_GETARG_FULLTRANSACTIONID
    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
    - palloc
    - PG_RETURN_CSTRING
    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
    - PG_RETURN_BYTEA_P
    - PG_GETARG_COMMANDID
    - pq_sendint32
    - pq_begintypsend
    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:
    - hash_uint32
    - PG_GETARG_COMMANDID
    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
      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: 2
    functionLinenumber: 140
    functionLinenumberEnd: 265
    functionName: RE_compile_and_cache
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - pg_regerror
    - pfree
    - MemoryContextDelete
    - memcmp
    - memmove
    - memcpy
    - errmsg
    - pg_regcomp
    - VARSIZE_ANY_EXHDR
    - palloc
    - Assert
    - ereport
    - unlikely
    - AllocSetContextCreate
    - MemoryContextSetIdentifier
    - VARDATA_ANY
    - pg_mb2wchar_with_len
    - errcode
    - MemoryContextSetParent
    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:
    - errmsg
    - pg_regerror
    - pg_regexec
    - ereport
    - errcode
    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
      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:
    - RE_wchar_execute
    - palloc
    - pg_mb2wchar_with_len
    - pfree
    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: 4
    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
      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: 2
    functionLinenumber: 384
    functionLinenumberEnd: 451
    functionName: parse_re_flags
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pg_mblen
    - ereport
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - errcode
    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: 5
    functionLinenumber: 458
    functionLinenumberEnd: 470
    functionName: nameregexeq
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - RE_compile_and_execute
    - NameStr
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - PG_GET_COLLATION
    - strlen
    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: 5
    functionLinenumber: 472
    functionLinenumberEnd: 484
    functionName: nameregexne
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - RE_compile_and_execute
    - NameStr
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - PG_GET_COLLATION
    - strlen
    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: 5
    functionLinenumber: 486
    functionLinenumberEnd: 498
    functionName: textregexeq
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - RE_compile_and_execute
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    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: 5
    functionLinenumber: 500
    functionLinenumberEnd: 512
    functionName: textregexne
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - RE_compile_and_execute
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    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: 5
    functionLinenumber: 521
    functionLinenumberEnd: 533
    functionName: nameicregexeq
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - RE_compile_and_execute
    - NameStr
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - PG_GET_COLLATION
    - strlen
    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: 5
    functionLinenumber: 535
    functionLinenumberEnd: 547
    functionName: nameicregexne
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - RE_compile_and_execute
    - NameStr
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - PG_GET_COLLATION
    - strlen
    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: 5
    functionLinenumber: 549
    functionLinenumberEnd: 561
    functionName: texticregexeq
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - RE_compile_and_execute
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    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: 5
    functionLinenumber: 563
    functionLinenumberEnd: 575
    functionName: texticregexne
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - RE_compile_and_execute
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    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: 4
    functionLinenumber: 582
    functionLinenumberEnd: 632
    functionName: textregexsubstr
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - DirectFunctionCall3
    - RE_execute
    - Int32GetDatum
    - PG_GETARG_TEXT_PP
    - PointerGetDatum
    - PG_RETURN_NULL
    - RE_compile_and_cache
    - VARSIZE_ANY_EXHDR
    - PG_GET_COLLATION
    - VARDATA_ANY
    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_GETARG_TEXT_PP
    - PG_GET_COLLATION
    - PG_RETURN_TEXT_P
    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: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:678,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:679,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:680,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/regexp.c:681,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/regexp.c:682,1
    - Dst: parse_re_flags
      Src: /src/postgres/src/backend/utils/adt/regexp.c:685,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/regexp.c:687,1
    - Dst: replace_text_regexp
      Src: /src/postgres/src/backend/utils/adt/regexp.c:687,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:688,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 657
    functionDepth: 3
    functionLinenumber: 657
    functionLinenumberEnd: 690
    functionName: textregexreplace
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GET_COLLATION
    - pg_mblen
    - PG_GETARG_TEXT_PP
    - parse_re_flags
    - ereport
    - errhint
    - replace_text_regexp
    - PG_RETURN_TEXT_P
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - errcode
    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:701,1
    - 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_IF_EXISTS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:706,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:710,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:712,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:714,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:715,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:716,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:719,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:721,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:723,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:724,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:725,1
    - Dst: parse_re_flags
      Src: /src/postgres/src/backend/utils/adt/regexp.c:730,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:733,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/regexp.c:737,1
    - Dst: replace_text_regexp
      Src: /src/postgres/src/backend/utils/adt/regexp.c:737,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:738,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 698
    functionDepth: 3
    functionLinenumber: 698
    functionLinenumberEnd: 740
    functionName: textregexreplace_extended
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP_IF_EXISTS
    - PG_GETARG_TEXT_PP
    - parse_re_flags
    - ereport
    - replace_text_regexp
    - PG_GETARG_INT32
    - PG_RETURN_TEXT_P
    - PG_NARGS
    - errcode
    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:746,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 743
    functionDepth: 4
    functionLinenumber: 743
    functionLinenumberEnd: 747
    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:753,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 750
    functionDepth: 4
    functionLinenumber: 750
    functionLinenumberEnd: 754
    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:792,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/regexp.c:793,1
    - Dst: pg_mbstrlen_with_len
      Src: /src/postgres/src/backend/utils/adt/regexp.c:798,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:801,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:802,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:803,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/regexp.c:804,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regexp.c:847,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/regexp.c:848,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/regexp.c:872,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/regexp.c:880,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/regexp.c:884,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/regexp.c:896,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:937,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:938,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:939,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1023,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 115
    argCount: 2
    argNames:
    - pat_text
    - esc_text
    argTypes:
    - text*
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 766
    functionDepth: 2
    functionLinenumber: 766
    functionLinenumberEnd: 1026
    functionName: similar_escape_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pg_mblen
    - memcpy
    - pg_mbstrlen_with_len
    - memcmp
    - ereport
    - VARDATA
    - errhint
    - SET_VARSIZE
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - palloc
    - errcode
    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:1034,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1035,1
    - Dst: similar_escape_internal
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1038,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1040,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 1031
    functionDepth: 3
    functionLinenumber: 1031
    functionLinenumberEnd: 1041
    functionName: similar_to_escape_2
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - similar_escape_internal
    - PG_RETURN_TEXT_P
    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:1050,1
    - Dst: similar_escape_internal
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1053,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1055,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 1047
    functionDepth: 3
    functionLinenumber: 1047
    functionLinenumberEnd: 1056
    functionName: similar_to_escape_1
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - similar_escape_internal
    - PG_RETURN_TEXT_P
    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:1073,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1074,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1075,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1077,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1080,1
    - Dst: similar_escape_internal
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1082,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1084,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1085
      start: 1065
    functionDepth: 3
    functionLinenumber: 1065
    functionLinenumberEnd: 1085
    functionName: similar_escape
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - PG_ARGISNULL
    - PG_RETURN_NULL
    - similar_escape_internal
    - PG_RETURN_TEXT_P
    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:1094,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1095,1
    - Dst: PG_GETARG_TEXT_PP_IF_EXISTS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1097,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1102,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1104,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1106,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1107,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1108,1
    - Dst: parse_re_flags
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1113,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1116,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1117,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1119,1
    - Dst: setup_regexp_matches
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1125,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1126,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1130,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1131
      start: 1091
    functionDepth: 3
    functionLinenumber: 1091
    functionLinenumberEnd: 1131
    functionName: regexp_count
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_INT32
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP_IF_EXISTS
    - PG_GETARG_TEXT_PP
    - parse_re_flags
    - setup_regexp_matches
    - ereport
    - PG_GETARG_INT32
    - PG_NARGS
    - errcode
    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:1137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1138
      start: 1134
    functionDepth: 4
    functionLinenumber: 1134
    functionLinenumberEnd: 1138
    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:1144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1145
      start: 1141
    functionDepth: 4
    functionLinenumber: 1141
    functionLinenumberEnd: 1145
    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:1154,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1155,1
    - Dst: PG_GETARG_TEXT_PP_IF_EXISTS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1159,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1166,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1168,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1170,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1171,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1172,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1175,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1177,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1179,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1180,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1181,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1184,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1186,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1188,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1189,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1190,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1193,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1195,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1197,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1198,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1199,1
    - Dst: parse_re_flags
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1204,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1207,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1208,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1210,1
    - Dst: setup_regexp_matches
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1216,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1217,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1223,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1227,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1238,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1240,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1241
      start: 1151
    functionDepth: 3
    functionLinenumber: 1151
    functionLinenumberEnd: 1241
    functionName: regexp_instr
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_INT32
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP_IF_EXISTS
    - PG_GETARG_TEXT_PP
    - parse_re_flags
    - setup_regexp_matches
    - ereport
    - PG_GETARG_INT32
    - PG_NARGS
    - errcode
    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:1247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1248
      start: 1244
    functionDepth: 4
    functionLinenumber: 1244
    functionLinenumberEnd: 1248
    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:1254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1255
      start: 1251
    functionDepth: 4
    functionLinenumber: 1251
    functionLinenumberEnd: 1255
    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:1261,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1262
      start: 1258
    functionDepth: 4
    functionLinenumber: 1258
    functionLinenumberEnd: 1262
    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:1268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1269
      start: 1265
    functionDepth: 4
    functionLinenumber: 1265
    functionLinenumberEnd: 1269
    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:1275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1272
    functionDepth: 4
    functionLinenumber: 1272
    functionLinenumberEnd: 1276
    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:1285,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1286,1
    - Dst: PG_GETARG_TEXT_PP_IF_EXISTS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1287,1
    - Dst: parse_re_flags
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1291,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1294,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1295,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1297,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1301,1
    - Dst: RE_compile_and_execute
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1301,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1302,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1303,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1305,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1307
      start: 1282
    functionDepth: 5
    functionLinenumber: 1282
    functionLinenumberEnd: 1307
    functionName: regexp_like
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - RE_compile_and_execute
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP_IF_EXISTS
    - PG_GETARG_TEXT_PP
    - parse_re_flags
    - PG_RETURN_BOOL
    - ereport
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - errcode
    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:1313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1314
      start: 1310
    functionDepth: 6
    functionLinenumber: 1310
    functionLinenumberEnd: 1314
    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:1323,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1324,1
    - Dst: PG_GETARG_TEXT_PP_IF_EXISTS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1325,1
    - Dst: parse_re_flags
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1330,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1333,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1334,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1336,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1338,1
    - Dst: setup_regexp_matches
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1340,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1341,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1344,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1346,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1349,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1350,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1352,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1352,1
    - Dst: build_regexp_match_result
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1352,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1353
      start: 1320
    functionDepth: 3
    functionLinenumber: 1320
    functionLinenumberEnd: 1353
    functionName: regexp_match
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP_IF_EXISTS
    - PG_RETURN_DATUM
    - PG_GETARG_TEXT_PP
    - parse_re_flags
    - ereport
    - PointerGetDatum
    - errhint
    - PG_RETURN_NULL
    - build_regexp_match_result
    - setup_regexp_matches
    - palloc
    - errcode
    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:1359,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1360
      start: 1356
    functionDepth: 4
    functionLinenumber: 1356
    functionLinenumberEnd: 1360
    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:1372,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1374,1
    - Dst: PG_GETARG_TEXT_PP_IF_EXISTS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1375,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1379,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1380,1
    - Dst: parse_re_flags
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1383,1
    - Dst: setup_regexp_matches
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1386,1
    - Dst: PG_GETARG_TEXT_P_COPY
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1386,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1388,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1392,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1393,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1395,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1399,1
    - Dst: build_regexp_match_result
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1406,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1408,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1408,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1411,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1412
      start: 1366
    functionDepth: 3
    functionLinenumber: 1366
    functionLinenumberEnd: 1412
    functionName: regexp_matches
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 4
    functionsReached:
    - SRF_PERCALL_SETUP
    - MemoryContextSwitchTo
    - PG_GETARG_TEXT_P_COPY
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP_IF_EXISTS
    - PG_GETARG_TEXT_PP
    - parse_re_flags
    - PointerGetDatum
    - build_regexp_match_result
    - SRF_FIRSTCALL_INIT
    - setup_regexp_matches
    - SRF_IS_FIRSTCALL
    - palloc
    - SRF_RETURN_DONE
    - SRF_RETURN_NEXT
    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:1418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1419
      start: 1415
    functionDepth: 4
    functionLinenumber: 1415
    functionLinenumberEnd: 1419
    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
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1449,1
    - Dst: pg_database_encoding_max_length
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1450,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1468,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1469,1
    - Dst: pg_mb2wchar_with_len
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1470,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1470,1
    - Dst: RE_compile_and_cache
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1476,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1492,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1501,1
    - Dst: RE_wchar_execute
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1507,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1524,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1525,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1526,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1527,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1623,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1630,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1637,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: 1640
      start: 1441
    functionDepth: 3
    functionLinenumber: 1441
    functionLinenumberEnd: 1640
    functionName: setup_regexp_matches
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 4
    functionsReached:
    - errmsg
    - pfree
    - repalloc
    - pg_database_encoding_max_length
    - palloc0
    - ereport
    - RE_wchar_execute
    - RE_compile_and_cache
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - palloc
    - pg_mb2wchar_with_len
    - errcode
    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:1670,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1674,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1675,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1675,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1680,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1681,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1682,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1683,1
    - Dst: construct_md_array
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1692,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - matchctx
    argTypes:
    - regexp_matches_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1694
      start: 1645
    functionDepth: 1
    functionLinenumber: 1645
    functionLinenumberEnd: 1694
    functionName: build_regexp_match_result
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 2
    functionsReached:
    - Assert
    - pg_wchar2mb_with_len
    - Int32GetDatum
    - construct_md_array
    - PointerGetDatum
    - DirectFunctionCall3
    - cstring_to_text_with_len
    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:1707,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1709,1
    - Dst: PG_GETARG_TEXT_PP_IF_EXISTS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1710,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1714,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1715,1
    - Dst: parse_re_flags
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1718,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1721,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1722,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1724,1
    - Dst: setup_regexp_matches
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1730,1
    - Dst: PG_GETARG_TEXT_P_COPY
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1730,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1732,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1735,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1739,1
    - Dst: build_regexp_split_result
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1744,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1747,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1750,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1751
      start: 1701
    functionDepth: 4
    functionLinenumber: 1701
    functionLinenumberEnd: 1751
    functionName: regexp_split_to_table
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - SRF_PERCALL_SETUP
    - MemoryContextSwitchTo
    - PG_GETARG_TEXT_P_COPY
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP_IF_EXISTS
    - PG_GETARG_TEXT_PP
    - parse_re_flags
    - ereport
    - SRF_RETURN_DONE
    - SRF_FIRSTCALL_INIT
    - setup_regexp_matches
    - SRF_IS_FIRSTCALL
    - build_regexp_split_result
    - SRF_RETURN_NEXT
    - errcode
    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:1757,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1758
      start: 1754
    functionDepth: 5
    functionLinenumber: 1754
    functionLinenumberEnd: 1758
    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:1773,1
    - Dst: PG_GETARG_TEXT_PP_IF_EXISTS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1773,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1776,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1777,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1779,1
    - Dst: setup_regexp_matches
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1784,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1784,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1785,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1787,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1792,1
    - Dst: build_regexp_split_result
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1793,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1800,1
    - Dst: makeArrayResult
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1800,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1801
      start: 1765
    functionDepth: 4
    functionLinenumber: 1765
    functionLinenumberEnd: 1801
    functionName: regexp_split_to_array
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP_IF_EXISTS
    - PG_RETURN_DATUM
    - PG_GETARG_TEXT_PP
    - parse_re_flags
    - ereport
    - accumArrayResult
    - makeArrayResult
    - setup_regexp_matches
    - build_regexp_split_result
    - errcode
    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:1807,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1808
      start: 1804
    functionDepth: 5
    functionLinenumber: 1804
    functionLinenumberEnd: 1808
    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:1828,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1832,1
    - Dst: pg_wchar2mb_with_len
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1838,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1841,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1842,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1842,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1846,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1847,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1848,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1849,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - splitctx
    argTypes:
    - regexp_matches_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1851
      start: 1816
    functionDepth: 1
    functionLinenumber: 1816
    functionLinenumberEnd: 1851
    functionName: build_regexp_split_result
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 2
    functionsReached:
    - Assert
    - pg_wchar2mb_with_len
    - Int32GetDatum
    - PointerGetDatum
    - elog
    - DirectFunctionCall3
    - cstring_to_text_with_len
    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:1860,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1861,1
    - Dst: PG_GETARG_TEXT_PP_IF_EXISTS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1864,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1873,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1875,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1877,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1878,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1879,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1882,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1884,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1886,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1887,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1888,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1891,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1893,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1895,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1896,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1897,1
    - Dst: parse_re_flags
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1902,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1905,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1906,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1908,1
    - Dst: setup_regexp_matches
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1914,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1915,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1921,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1925,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1936,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1938,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1938,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1939,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1940,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/regexp.c:1941,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1942
      start: 1857
    functionDepth: 4
    functionLinenumber: 1857
    functionLinenumberEnd: 1942
    functionName: regexp_substr
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP_IF_EXISTS
    - PG_RETURN_DATUM
    - PG_GETARG_TEXT_PP
    - parse_re_flags
    - Int32GetDatum
    - setup_regexp_matches
    - ereport
    - PointerGetDatum
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    - DirectFunctionCall3
    - PG_NARGS
    - errcode
    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:1948,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1949
      start: 1945
    functionDepth: 5
    functionLinenumber: 1945
    functionLinenumberEnd: 1949
    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:1955,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1956
      start: 1952
    functionDepth: 5
    functionLinenumber: 1952
    functionLinenumberEnd: 1956
    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:1962,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1963
      start: 1959
    functionDepth: 5
    functionLinenumber: 1959
    functionLinenumberEnd: 1963
    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:1969,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1970
      start: 1966
    functionDepth: 5
    functionLinenumber: 1966
    functionLinenumberEnd: 1970
    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:1998,1
    - Dst: pg_regprefix
      Src: /src/postgres/src/backend/utils/adt/regexp.c:2001,1
    - Dst: pg_regerror
      Src: /src/postgres/src/backend/utils/adt/regexp.c:2019,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/regexp.c:2020,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regexp.c:2021,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regexp.c:2022,1
    - Dst: pg_database_encoding_max_length
      Src: /src/postgres/src/backend/utils/adt/regexp.c:2027,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regexp.c:2028,1
    - Dst: pg_wchar2mb_with_len
      Src: /src/postgres/src/backend/utils/adt/regexp.c:2029,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/regexp.c:2030,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/regexp.c:2032,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: 2035
      start: 1978
    functionDepth: 3
    functionLinenumber: 1978
    functionLinenumberEnd: 2035
    functionName: regexp_fixed_prefix
    functionSourceFile: /src/postgres/src/backend/utils/adt/regexp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - Assert
    - pg_wchar2mb_with_len
    - pg_regerror
    - pg_regprefix
    - ereport
    - pg_database_encoding_max_length
    - RE_compile_and_cache
    - palloc
    - errcode
    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: 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:
    - ARR_ELEMTYPE
    - Assert
    - UINT32_ACCESS_ONCE
    - ARR_DIMS
    - DatumGetArrayTypeP
    - ARR_DATA_PTR
    - BackendPidGetProc
    - ARR_NDIM
    - array_contains_nulls
    - PG_RETURN_BOOL
    - GetSafeSnapshotBlockingPids
    - elog
    - ArrayGetNItems
    - PG_GETARG_INT32
    - pgstat_get_wait_event_type
    - strcmp
    - DirectFunctionCall1
    - PG_GETARG_ARRAYTYPE_P
    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:
    - errmsg
    - errcode
    - text_to_cstring
    - is_absolute_path
    - path_is_prefix_of_path
    - path_is_relative_and_below_cwd
    - ereport
    - has_privs_of_role
    - canonicalize_path
    - GetUserId
    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:
    - errmsg
    - errcode
    - Assert
    - enlargeStringInfo
    - fseeko
    - feof
    - FreeFile
    - ferror
    - ereport
    - fread
    - VARDATA
    - SET_VARSIZE
    - initStringInfo
    - palloc
    - AllocateFile
    - 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:
    - VARSIZE
    - pg_verifymbstr
    - 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:
    - errmsg
    - Assert
    - convert_and_check_filename
    - ereport
    - errcode
    - read_text_file
    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:
    - errmsg
    - errcode
    - Assert
    - convert_and_check_filename
    - ereport
    - read_binary_file
    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_GETARG_TEXT_PP
    - PG_GETARG_INT64
    - pg_read_file_common
    - PG_RETURN_NULL
    - PG_RETURN_TEXT_P
    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_TEXT_PP
    - PG_GETARG_INT64
    - pg_read_file_common
    - PG_RETURN_NULL
    - PG_GETARG_BOOL
    - PG_RETURN_TEXT_P
    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_GETARG_TEXT_PP
    - PG_RETURN_NULL
    - PG_RETURN_TEXT_P
    - pg_read_file_common
    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_TEXT_PP
    - pg_read_file_common
    - PG_RETURN_NULL
    - PG_RETURN_TEXT_P
    - PG_GETARG_BOOL
    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_GETARG_TEXT_PP
    - PG_GETARG_INT64
    - PG_RETURN_NULL
    - PG_RETURN_BYTEA_P
    - pg_read_binary_file_common
    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_GETARG_TEXT_PP
    - PG_GETARG_INT64
    - PG_RETURN_NULL
    - PG_GETARG_BOOL
    - PG_RETURN_BYTEA_P
    - pg_read_binary_file_common
    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_BYTEA_P
    - PG_GETARG_TEXT_PP
    - PG_RETURN_NULL
    - pg_read_binary_file_common
    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_GETARG_TEXT_PP
    - PG_RETURN_NULL
    - PG_GETARG_BOOL
    - PG_RETURN_BYTEA_P
    - pg_read_binary_file_common
    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: BlessTupleDesc
      Src: /src/postgres/src/backend/utils/adt/genfile.c:457,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/genfile.c:459,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/utils/adt/genfile.c:461,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/utils/adt/genfile.c:462,1
    - Dst: time_t_to_timestamptz
      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:466,1
    - Dst: time_t_to_timestamptz
      Src: /src/postgres/src/backend/utils/adt/genfile.c:466,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/utils/adt/genfile.c:470,1
    - Dst: time_t_to_timestamptz
      Src: /src/postgres/src/backend/utils/adt/genfile.c:470,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/utils/adt/genfile.c:472,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/backend/utils/adt/genfile.c:472,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/utils/adt/genfile.c:474,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/genfile.c:476,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/genfile.c:478,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/utils/adt/genfile.c:478,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 412
    functionDepth: 5
    functionLinenumber: 412
    functionLinenumberEnd: 479
    functionName: pg_stat_file
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - HeapTupleGetDatum
    - BoolGetDatum
    - S_ISDIR
    - PG_GETARG_BOOL
    - errcode_for_file_access
    - pfree
    - Int64GetDatum
    - time_t_to_timestamptz
    - TimestampTzGetDatum
    - CreateTemplateTupleDesc
    - errmsg
    - heap_form_tuple
    - stat
    - convert_and_check_filename
    - PG_RETURN_DATUM
    - TupleDescInitEntry
    - PG_NARGS
    - memset
    - PG_GETARG_TEXT_PP
    - BlessTupleDesc
    - ereport
    - PG_RETURN_NULL
    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:491,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 488
    functionDepth: 6
    functionLinenumber: 488
    functionLinenumberEnd: 492
    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:507,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/genfile.c:507,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/genfile.c:510,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/genfile.c:512,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/genfile.c:513,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/genfile.c:514,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/genfile.c:515,1
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/utils/adt/genfile.c:518,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/utils/adt/genfile.c:520,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/utils/adt/genfile.c:529,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/genfile.c:535,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/genfile.c:536,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/genfile.c:539,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/utils/adt/genfile.c:542,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/utils/adt/genfile.c:546,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 497
    functionDepth: 6
    functionLinenumber: 497
    functionLinenumberEnd: 548
    functionName: pg_ls_dir
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - tuplestore_putvalues
    - ReadDir
    - AllocateDir
    - CStringGetTextDatum
    - convert_and_check_filename
    - PG_GETARG_TEXT_PP
    - FreeDir
    - PG_ARGISNULL
    - InitMaterializedSRF
    - PG_GETARG_BOOL
    - PG_NARGS
    - strcmp
    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:560,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 557
    functionDepth: 7
    functionLinenumber: 557
    functionLinenumberEnd: 561
    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:576,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/utils/adt/genfile.c:583,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/utils/adt/genfile.c:592,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/genfile.c:604,1
    - Dst: stat
      Src: /src/postgres/src/backend/utils/adt/genfile.c:605,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/genfile.c:610,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/adt/genfile.c:611,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/genfile.c:612,1
    - Dst: S_ISREG
      Src: /src/postgres/src/backend/utils/adt/genfile.c:616,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/genfile.c:619,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/utils/adt/genfile.c:620,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/utils/adt/genfile.c:621,1
    - Dst: time_t_to_timestamptz
      Src: /src/postgres/src/backend/utils/adt/genfile.c:621,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/genfile.c:622,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/utils/adt/genfile.c:624,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/utils/adt/genfile.c:627,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 3
    argNames:
    - fcinfo
    - dir
    - missing_ok
    argTypes:
    - FunctionCallInfo
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 569
    functionDepth: 6
    functionLinenumber: 569
    functionLinenumberEnd: 629
    functionName: pg_ls_dir_files
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - errmsg
    - S_ISREG
    - tuplestore_putvalues
    - ReadDir
    - AllocateDir
    - stat
    - CStringGetTextDatum
    - Int64GetDatum
    - snprintf
    - time_t_to_timestamptz
    - memset
    - ereport
    - FreeDir
    - InitMaterializedSRF
    - TimestampTzGetDatum
    - errcode_for_file_access
    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:635,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 632
    functionDepth: 7
    functionLinenumber: 632
    functionLinenumberEnd: 636
    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:642,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 639
    functionDepth: 7
    functionLinenumber: 639
    functionLinenumberEnd: 643
    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:653,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/genfile.c:653,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/genfile.c:654,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/genfile.c:655,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/genfile.c:656,1
    - Dst: TempTablespacePath
      Src: /src/postgres/src/backend/utils/adt/genfile.c:659,1
    - Dst: pg_ls_dir_files
      Src: /src/postgres/src/backend/utils/adt/genfile.c:660,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - fcinfo
    - tblspc
    argTypes:
    - FunctionCallInfo
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 648
    functionDepth: 7
    functionLinenumber: 648
    functionLinenumberEnd: 661
    functionName: pg_ls_tmpdir
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ObjectIdGetDatum
    - pg_ls_dir_files
    - ereport
    - TempTablespacePath
    - SearchSysCacheExists1
    - errcode
    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:670,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 667
    functionDepth: 8
    functionLinenumber: 667
    functionLinenumberEnd: 671
    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:680,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/genfile.c:680,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 677
    functionDepth: 8
    functionLinenumber: 677
    functionLinenumberEnd: 681
    functionName: pg_ls_tmpdir_1arg
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - pg_ls_tmpdir
    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:689,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 686
    functionDepth: 7
    functionLinenumber: 686
    functionLinenumberEnd: 690
    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:698,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 695
    functionDepth: 7
    functionLinenumber: 695
    functionLinenumberEnd: 699
    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:708,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 705
    functionDepth: 7
    functionLinenumber: 705
    functionLinenumberEnd: 709
    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:718,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 715
    functionDepth: 7
    functionLinenumber: 715
    functionLinenumberEnd: 719
    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:732,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/genfile.c:734,1
    - Dst: SearchNamedReplicationSlot
      Src: /src/postgres/src/backend/utils/adt/genfile.c:736,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/genfile.c:737,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/genfile.c:738,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/genfile.c:739,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/genfile.c:742,1
    - Dst: pg_ls_dir_files
      Src: /src/postgres/src/backend/utils/adt/genfile.c:744,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 725
    functionDepth: 7
    functionLinenumber: 725
    functionLinenumberEnd: 745
    functionName: pg_ls_replslotdir
    functionSourceFile: /src/postgres/src/backend/utils/adt/genfile.c
    functionUses: 0
    functionsReached:
    - errmsg
    - text_to_cstring
    - PG_GETARG_TEXT_PP
    - snprintf
    - pg_ls_dir_files
    - ereport
    - SearchNamedReplicationSlot
    - errcode
    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:
    - ObjectIdGetDatum
    - RELKIND_HAS_PARTITIONS
    - get_rel_relispartition
    - SearchSysCacheExists1
    - get_rel_relkind
    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:
    - HeapTupleGetDatum
    - MemoryContextSwitchTo
    - BoolGetDatum
    - list_length
    - check_rel_can_be_partition
    - SRF_FIRSTCALL_INIT
    - SRF_RETURN_DONE
    - linitial_oid
    - SRF_RETURN_NEXT
    - find_all_inheritors
    - Int32GetDatum
    - RELKIND_HAS_PARTITIONS
    - PG_GETARG_OID
    - get_call_result_type
    - list_nth_oid
    - get_rel_relkind
    - SRF_PERCALL_SETUP
    - heap_form_tuple
    - elog
    - OidIsValid
    - SRF_IS_FIRSTCALL
    - ObjectIdGetDatum
    - lfirst_oid
    - get_partition_ancestors
    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: 466
    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:
    - llast_oid
    - Assert
    - PG_RETURN_OID
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - OidIsValid
    - check_rel_can_be_partition
    - list_free
    - 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_FIRSTCALL_INIT
    - SRF_PERCALL_SETUP
    - MemoryContextSwitchTo
    - list_length
    - PG_GETARG_OID
    - lcons_oid
    - SRF_RETURN_DONE
    - check_rel_can_be_partition
    - SRF_IS_FIRSTCALL
    - list_nth_oid
    - SRF_RETURN_NEXT
    - ObjectIdGetDatum
    - get_partition_ancestors
    linkageType: ''
    returnType: Datum
    signature: Datum pg_partition_ancestors(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/acl.c:158,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/acl.c:160,1
    - Dst: isalnum
      Src: /src/postgres/src/backend/utils/adt/acl.c:165,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/acl.c:185,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:186,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:187,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/acl.c:188,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/acl.c:194,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 20
    argCount: 3
    argNames:
    - s
    - n
    - escontext
    argTypes:
    - char*
    - char*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 152
    functionDepth: 2
    functionLinenumber: 152
    functionLinenumberEnd: 197
    functionName: getid
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - ereturn
    - isalnum
    - isspace
    - errdetail
    - errcode
    linkageType: ''
    returnType: char
    signature: 'char *

      getid(const char *s, char *n, Node *escontext)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isalnum
      Src: /src/postgres/src/backend/utils/adt/acl.c:213,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 2
    argNames:
    - p
    - s
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 231
    functionName: putid
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - isalnum
    linkageType: ''
    returnType: void
    signature: void putid(char *p, const char *s)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/acl.c:265,1
    - Dst: getid
      Src: /src/postgres/src/backend/utils/adt/acl.c:267,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/acl.c:273,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/acl.c:273,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/acl.c:274,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:275,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:276,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/acl.c:277,1
    - Dst: getid
      Src: /src/postgres/src/backend/utils/adt/acl.c:279,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/acl.c:283,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:284,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:285,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/acl.c:286,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/acl.c:290,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:291,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:292,1
    - Dst: isalpha
      Src: /src/postgres/src/backend/utils/adt/acl.c:296,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/acl.c:349,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:350,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:351,1
    - Dst: get_role_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:362,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:363,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/acl.c:364,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:365,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:366,1
    - Dst: getid
      Src: /src/postgres/src/backend/utils/adt/acl.c:375,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/acl.c:379,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:380,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:381,1
    - Dst: get_role_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:382,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:383,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/acl.c:384,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:385,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:386,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:391,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:392,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:393,1
    - Dst: ACLITEM_SET_PRIVS_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:397,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 93
    argCount: 3
    argNames:
    - s
    - aip
    - escontext
    argTypes:
    - char*
    - AclItem*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 256
    functionDepth: 3
    functionLinenumber: 256
    functionLinenumberEnd: 400
    functionName: aclparse
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - isalpha
    - getid
    - get_role_oid
    - ereport
    - ACLITEM_SET_PRIVS_GOPTIONS
    - errhint
    - OidIsValid
    - ereturn
    - strcmp
    - errcode
    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:416,1
    - Dst: ACL_N_SIZE
      Src: /src/postgres/src/backend/utils/adt/acl.c:417,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/acl.c:418,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/acl.c:419,1
    - Dst: ARR_LBOUND
      Src: /src/postgres/src/backend/utils/adt/acl.c:423,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/utils/adt/acl.c:424,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - n
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 409
    functionDepth: 1
    functionLinenumber: 409
    functionLinenumberEnd: 426
    functionName: allocacl
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - ARR_DIMS
    - palloc0
    - ACL_N_SIZE
    - elog
    - ARR_LBOUND
    - SET_VARSIZE
    linkageType: ''
    returnType: Acl
    signature: 'Acl *

      allocacl(int n)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: allocacl
      Src: /src/postgres/src/backend/utils/adt/acl.c:434,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 431
    functionDepth: 2
    functionLinenumber: 431
    functionLinenumberEnd: 435
    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:445,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:445,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/acl.c:447,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:447,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:448,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:449,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - orig_acl
    argTypes:
    - Acl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 440
    functionDepth: 2
    functionLinenumber: 440
    functionLinenumberEnd: 452
    functionName: aclcopy
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 2
    functionsReached:
    - allocacl
    - memcpy
    - ACL_DAT
    - ACL_NUM
    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:465,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:465,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:465,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/acl.c:467,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:467,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:468,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:469,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/acl.c:471,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:471,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:471,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:472,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:473,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - left_acl
    - right_acl
    argTypes:
    - Acl*
    - Acl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 460
    functionDepth: 2
    functionLinenumber: 460
    functionLinenumberEnd: 476
    functionName: aclconcat
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 1
    functionsReached:
    - allocacl
    - memcpy
    - ACL_DAT
    - ACL_NUM
    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:493,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:495,1
    - Dst: aclcopy
      Src: /src/postgres/src/backend/utils/adt/acl.c:498,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:502,1
    - Dst: aclcopy
      Src: /src/postgres/src/backend/utils/adt/acl.c:503,1
    - Dst: aclcopy
      Src: /src/postgres/src/backend/utils/adt/acl.c:507,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:509,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:510,1
    - Dst: aclupdate
      Src: /src/postgres/src/backend/utils/adt/acl.c:516,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/acl.c:518,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 3
    argNames:
    - left_acl
    - right_acl
    - ownerId
    argTypes:
    - Acl*
    - Acl*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 484
    functionDepth: 3
    functionLinenumber: 484
    functionLinenumberEnd: 523
    functionName: aclmerge
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 1
    functionsReached:
    - pfree
    - aclupdate
    - ACL_NUM
    - ACL_DAT
    - aclcopy
    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:531,1
    - Dst: qsort
      Src: /src/postgres/src/backend/utils/adt/acl.c:532,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:532,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:532,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - acl
    argTypes:
    - Acl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 528
    functionDepth: 1
    functionLinenumber: 528
    functionLinenumberEnd: 533
    functionName: aclitemsort
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 2
    functionsReached:
    - ACL_DAT
    - qsort
    - ACL_NUM
    linkageType: ''
    returnType: void
    signature: void aclitemsort(Acl *acl)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:546,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:548,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:555,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:559,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:559,1
    - Dst: memcmp
      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_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:563,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:564,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 2
    argNames:
    - left_acl
    - right_acl
    argTypes:
    - Acl*
    - Acl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 542
    functionDepth: 1
    functionLinenumber: 542
    functionLinenumberEnd: 568
    functionName: aclequal
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 3
    functionsReached:
    - ACL_DAT
    - memcmp
    - ACL_NUM
    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:576,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:577,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:578,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:579,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/acl.c:580,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:581,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:582,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:583,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:584,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:585,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:586,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:587,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - acl
    argTypes:
    - Acl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 573
    functionDepth: 2
    functionLinenumber: 573
    functionLinenumberEnd: 588
    functionName: check_acl
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - ARR_ELEMTYPE
    - errmsg
    - ARR_NDIM
    - ereport
    - ARR_HASNULL
    - errcode
    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:601,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/acl.c:605,1
    - Dst: aclparse
      Src: /src/postgres/src/backend/utils/adt/acl.c:607,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:609,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/acl.c:611,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/acl.c:614,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:615,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:616,1
    - Dst: PG_RETURN_ACLITEM_P
      Src: /src/postgres/src/backend/utils/adt/acl.c:618,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 598
    functionDepth: 4
    functionLinenumber: 598
    functionLinenumberEnd: 619
    functionName: aclitemin
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_CSTRING
    - PG_RETURN_ACLITEM_P
    - ereturn
    - PG_RETURN_NULL
    - aclparse
    - palloc
    - errcode
    - isspace
    linkageType: ''
    returnType: Datum
    signature: Datum aclitemin(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ACLITEM_P
      Src: /src/postgres/src/backend/utils/adt/acl.c:632,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/acl.c:638,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/acl.c:638,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/acl.c:648,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:648,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:649,1
    - Dst: putid
      Src: /src/postgres/src/backend/utils/adt/acl.c:651,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:651,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/acl.c:651,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/acl.c:652,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/acl.c:657,1
    - Dst: ACLITEM_GET_PRIVS
      Src: /src/postgres/src/backend/utils/adt/acl.c:667,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/backend/utils/adt/acl.c:667,1
    - Dst: ACLITEM_GET_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:669,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/backend/utils/adt/acl.c:669,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/acl.c:676,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:676,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:677,1
    - Dst: putid
      Src: /src/postgres/src/backend/utils/adt/acl.c:679,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:679,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/acl.c:679,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/acl.c:680,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/acl.c:685,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/acl.c:688,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 629
    functionDepth: 1
    functionLinenumber: 629
    functionLinenumberEnd: 689
    functionName: aclitemout
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - putid
    - UINT64CONST
    - NameStr
    - ReleaseSysCache
    - sprintf
    - ACLITEM_GET_PRIVS
    - HeapTupleIsValid
    - PG_RETURN_CSTRING
    - GETSTRUCT
    - SearchSysCache1
    - PG_GETARG_ACLITEM_P
    - ACLITEM_GET_GOPTIONS
    - palloc
    - ObjectIdGetDatum
    - strlen
    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: 701
      start: 696
    functionDepth: 0
    functionLinenumber: 696
    functionLinenumberEnd: 701
    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: 726
      start: 707
    functionDepth: 0
    functionLinenumber: 707
    functionLinenumberEnd: 726
    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:734,1
    - Dst: PG_GETARG_ACLITEM_P
      Src: /src/postgres/src/backend/utils/adt/acl.c:735,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:741,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 742
      start: 731
    functionDepth: 1
    functionLinenumber: 731
    functionLinenumberEnd: 742
    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:754,1
    - Dst: PG_RETURN_UINT32
      Src: /src/postgres/src/backend/utils/adt/acl.c:757,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 751
    functionDepth: 1
    functionLinenumber: 751
    functionLinenumberEnd: 758
    functionName: hash_aclitem
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_ACLITEM_P
    - PG_RETURN_UINT32
    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:768,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/acl.c:769,1
    - Dst: UInt64GetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:772,1
    - Dst: hash_uint32_extended
      Src: /src/postgres/src/backend/utils/adt/acl.c:772,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 765
    functionDepth: 2
    functionLinenumber: 765
    functionLinenumberEnd: 773
    functionName: hash_aclitem_extended
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - UInt64GetDatum
    - PG_GETARG_INT64
    - PG_GETARG_ACLITEM_P
    - hash_uint32_extended
    linkageType: ''
    returnType: Datum
    signature: Datum hash_aclitem_extended(PG_FUNCTION_ARGS)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/acl.c:855,1
    - Dst: allocacl
      Src: /src/postgres/src/backend/utils/adt/acl.c:867,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:868,1
    - Dst: ACLITEM_SET_PRIVS_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:874,1
    - Dst: ACLITEM_SET_PRIVS_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:892,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 80
    argCount: 2
    argNames:
    - objtype
    - ownerId
    argTypes:
    - ObjectType
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 786
    functionDepth: 2
    functionLinenumber: 786
    functionLinenumberEnd: 896
    functionName: acldefault
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 14
    functionsReached:
    - allocacl
    - ACL_DAT
    - elog
    - ACLITEM_SET_PRIVS_GOPTIONS
    linkageType: ''
    returnType: Acl
    signature: 'Acl *

      acldefault(ObjectType objtype, Oid ownerId)'
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CHAR
      Src: /src/postgres/src/backend/utils/adt/acl.c:906,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:907,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/acl.c:952,1
    - Dst: PG_RETURN_ACL_P
      Src: /src/postgres/src/backend/utils/adt/acl.c:955,1
    - Dst: acldefault
      Src: /src/postgres/src/backend/utils/adt/acl.c:955,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 903
    functionDepth: 3
    functionLinenumber: 903
    functionLinenumberEnd: 956
    functionName: acldefault_sql
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - acldefault
    - PG_GETARG_CHAR
    - PG_GETARG_OID
    - PG_RETURN_ACL_P
    - elog
    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:990,1
    - Dst: ACLITEM_GET_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:994,1
    - Dst: check_circularity
      Src: /src/postgres/src/backend/utils/adt/acl.c:995,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:997,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:998,1
    - Dst: aclitem_match
      Src: /src/postgres/src/backend/utils/adt/acl.c:1009,1
    - Dst: allocacl
      Src: /src/postgres/src/backend/utils/adt/acl.c:1012,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:1013,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/acl.c:1014,1
    - Dst: ACL_SIZE
      Src: /src/postgres/src/backend/utils/adt/acl.c:1014,1
    - Dst: allocacl
      Src: /src/postgres/src/backend/utils/adt/acl.c:1022,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:1023,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/acl.c:1024,1
    - Dst: ACLITEM_SET_PRIVS_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1029,1
    - Dst: ACLITEM_GET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1034,1
    - Dst: ACLITEM_GET_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1035,1
    - Dst: ACLITEM_SET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1041,1
    - Dst: ACLITEM_GET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1042,1
    - Dst: ACLITEM_SET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1045,1
    - Dst: ACLITEM_GET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1046,1
    - Dst: ACLITEM_SET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1049,1
    - Dst: ACLITEM_GET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1050,1
    - Dst: ACLITEM_GET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1054,1
    - Dst: ACLITEM_GET_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1055,1
    - Dst: memmove
      Src: /src/postgres/src/backend/utils/adt/acl.c:1062,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1066,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/acl.c:1067,1
    - Dst: ACL_N_SIZE
      Src: /src/postgres/src/backend/utils/adt/acl.c:1067,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/acl.c:1076,1
    - Dst: recursive_revoke
      Src: /src/postgres/src/backend/utils/adt/acl.c:1077,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: 1083
      start: 975
    functionDepth: 3
    functionLinenumber: 975
    functionLinenumberEnd: 1083
    functionName: aclupdate
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 3
    functionsReached:
    - ACL_SIZE
    - check_circularity
    - ARR_DIMS
    - Assert
    - aclitem_match
    - allocacl
    - memcpy
    - ACLITEM_GET_RIGHTS
    - ACLITEM_SET_RIGHTS
    - ACL_NUM
    - memmove
    - check_acl
    - ACLITEM_SET_PRIVS_GOPTIONS
    - ACL_N_SIZE
    - recursive_revoke
    - ACLITEM_GET_GOPTIONS
    - ACL_DAT
    - SET_VARSIZE
    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:1117,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:1124,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:1125,1
    - Dst: allocacl
      Src: /src/postgres/src/backend/utils/adt/acl.c:1126,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:1127,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/acl.c:1128,1
    - Dst: ACLITEM_GET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1163,1
    - Dst: ACLITEM_GET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1169,1
    - Dst: aclitem_match
      Src: /src/postgres/src/backend/utils/adt/acl.c:1171,1
    - Dst: ACLITEM_SET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1173,1
    - Dst: ACLITEM_GET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1174,1
    - Dst: ACLITEM_GET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1175,1
    - Dst: ACLITEM_SET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1177,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1185,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/acl.c:1186,1
    - Dst: ACL_N_SIZE
      Src: /src/postgres/src/backend/utils/adt/acl.c:1186,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 37
    argCount: 3
    argNames:
    - old_acl
    - oldOwnerId
    - newOwnerId
    argTypes:
    - Acl*
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1190
      start: 1102
    functionDepth: 3
    functionLinenumber: 1102
    functionLinenumberEnd: 1190
    functionName: aclnewowner
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 1
    functionsReached:
    - ARR_DIMS
    - memcpy
    - allocacl
    - ACLITEM_GET_RIGHTS
    - aclitem_match
    - ACLITEM_SET_RIGHTS
    - ACL_NUM
    - ACL_N_SIZE
    - check_acl
    - ACL_DAT
    - SET_VARSIZE
    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:1215,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/acl.c:1221,1
    - Dst: allocacl
      Src: /src/postgres/src/backend/utils/adt/acl.c:1228,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:1228,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/acl.c:1229,1
    - Dst: ACL_SIZE
      Src: /src/postgres/src/backend/utils/adt/acl.c:1229,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:1233,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:1234,1
    - Dst: ACLITEM_GET_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1238,1
    - Dst: aclupdate
      Src: /src/postgres/src/backend/utils/adt/acl.c:1243,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/acl.c:1246,1
    - Dst: aclmask
      Src: /src/postgres/src/backend/utils/adt/acl.c:1254,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:1257,1
    - Dst: ACLITEM_GET_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1257,1
    - Dst: ACL_OPTION_TO_PRIVS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1259,1
    - Dst: ACLITEM_GET_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1261,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:1262,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:1263,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:1264,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/acl.c:1266,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - old_acl
    - mod_aip
    - ownerId
    argTypes:
    - Acl*
    - AclItem*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1267
      start: 1205
    functionDepth: 4
    functionLinenumber: 1205
    functionLinenumberEnd: 1267
    functionName: check_circularity
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 1
    functionsReached:
    - ACL_SIZE
    - pfree
    - Assert
    - ACL_GRANT_OPTION_FOR
    - errmsg
    - aclupdate
    - allocacl
    - ACL_NUM
    - ACL_DAT
    - ereport
    - check_acl
    - ACL_OPTION_TO_PRIVS
    - ACLITEM_GET_GOPTIONS
    - memcpy
    - errcode
    - aclmask
    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:1297,1
    - Dst: aclmask
      Src: /src/postgres/src/backend/utils/adt/acl.c:1304,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:1305,1
    - Dst: ACL_OPTION_TO_PRIVS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1307,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:1312,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:1313,1
    - Dst: ACLITEM_GET_PRIVS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1317,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:1323,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:1324,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:1325,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/acl.c:1326,1
    - Dst: ACLITEM_SET_PRIVS_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1330,1
    - Dst: aclupdate
      Src: /src/postgres/src/backend/utils/adt/acl.c:1334,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/acl.c:1337,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: 1345
      start: 1285
    functionDepth: 4
    functionLinenumber: 1285
    functionLinenumberEnd: 1345
    functionName: recursive_revoke
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 1
    functionsReached:
    - errmsg
    - ACL_GRANT_OPTION_FOR
    - pfree
    - ACLITEM_GET_PRIVS
    - aclupdate
    - ACL_NUM
    - ereport
    - check_acl
    - ACLITEM_SET_PRIVS_GOPTIONS
    - errhint
    - ACL_OPTION_TO_PRIVS
    - ACL_DAT
    - errcode
    - aclmask
    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:1386,1
    - Dst: check_acl
      Src: /src/postgres/src/backend/utils/adt/acl.c:1388,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/utils/adt/acl.c:1398,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:1405,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:1406,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/utils/adt/acl.c:1441,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: 1451
      start: 1371
    functionDepth: 3
    functionLinenumber: 1371
    functionLinenumberEnd: 1451
    functionName: aclmask
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 15
    functionsReached:
    - ACL_NUM
    - check_acl
    - has_privs_of_role
    - elog
    - ACL_DAT
    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:1474,1
    - Dst: check_acl
      Src: /src/postgres/src/backend/utils/adt/acl.c:1476,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:1493,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:1494,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: 1512
      start: 1460
    functionDepth: 3
    functionLinenumber: 1460
    functionLinenumberEnd: 1512
    functionName: aclmask_direct
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - check_acl
    - ACL_DAT
    - elog
    - ACL_NUM
    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:1531,1
    - Dst: check_acl
      Src: /src/postgres/src/backend/utils/adt/acl.c:1537,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/acl.c:1540,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
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:1547,1
    - Dst: qsort
      Src: /src/postgres/src/backend/utils/adt/acl.c:1559,1
    - Dst: qunique
      Src: /src/postgres/src/backend/utils/adt/acl.c:1568,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - acl
    - roleids
    argTypes:
    - Acl*
    - Oid**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1569
      start: 1523
    functionDepth: 3
    functionLinenumber: 1523
    functionLinenumberEnd: 1569
    functionName: aclmembers
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 10
    functionsReached:
    - qsort
    - qunique
    - ACL_NUM
    - check_acl
    - ACL_DAT
    - palloc
    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:1578,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:1579,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:1580,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:1582,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1583
      start: 1575
    functionDepth: 2
    functionLinenumber: 1575
    functionLinenumberEnd: 1583
    functionName: aclinsert
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_NULL
    - errcode
    - ereport
    linkageType: ''
    returnType: Datum
    signature: Datum aclinsert(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:1588,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:1589,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:1590,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:1592,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1593
      start: 1585
    functionDepth: 2
    functionLinenumber: 1585
    functionLinenumberEnd: 1593
    functionName: aclremove
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_NULL
    - errcode
    - ereport
    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:1598,1
    - Dst: PG_GETARG_ACLITEM_P
      Src: /src/postgres/src/backend/utils/adt/acl.c:1599,1
    - Dst: check_acl
      Src: /src/postgres/src/backend/utils/adt/acl.c:1604,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:1605,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:1606,1
    - Dst: ACLITEM_GET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1611,1
    - Dst: ACLITEM_GET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1611,1
    - Dst: ACLITEM_GET_RIGHTS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1611,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:1612,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:1614,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1615
      start: 1595
    functionDepth: 3
    functionLinenumber: 1595
    functionLinenumberEnd: 1615
    functionName: aclcontains
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - ACLITEM_GET_RIGHTS
    - PG_RETURN_BOOL
    - ACL_NUM
    - PG_GETARG_ACL_P
    - check_acl
    - PG_GETARG_ACLITEM_P
    - ACL_DAT
    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:1620,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:1621,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:1622,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:1623,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:1646,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/acl.c:1648,1
    - Dst: ACLITEM_SET_PRIVS_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1653,1
    - Dst: PG_RETURN_ACLITEM_P
      Src: /src/postgres/src/backend/utils/adt/acl.c:1656,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1657
      start: 1617
    functionDepth: 1
    functionLinenumber: 1617
    functionLinenumberEnd: 1657
    functionName: makeaclitem
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_ACLITEM_P
    - PG_GETARG_TEXT_PP
    - convert_any_priv_string
    - ACLITEM_SET_PRIVS_GOPTIONS
    - PG_GETARG_OID
    - PG_GETARG_BOOL
    - palloc
    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:1674,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/acl.c:1685,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/acl.c:1690,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/acl.c:1692,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/acl.c:1693,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/adt/acl.c:1700,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:1707,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:1708,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:1709,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/acl.c:1712,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 2
    argNames:
    - priv_type_text
    - privileges
    argTypes:
    - text*
    - priv_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1714
      start: 1669
    functionDepth: 2
    functionLinenumber: 1669
    functionLinenumberEnd: 1714
    functionName: convert_any_priv_string
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - pfree
    - ereport
    - isspace
    - pg_strcasecmp
    - text_to_cstring
    - strlen
    - strchr
    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:1753,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 36
    argCount: 1
    argNames:
    - aclright
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1756
      start: 1717
    functionDepth: 1
    functionLinenumber: 1717
    functionLinenumberEnd: 1756
    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:1776,1
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/utils/adt/acl.c:1781,1
    - Dst: check_acl
      Src: /src/postgres/src/backend/utils/adt/acl.c:1786,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/acl.c:1788,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/acl.c:1789,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/utils/adt/acl.c:1795,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/acl.c:1796,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/acl.c:1798,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/acl.c:1800,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/acl.c:1802,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/backend/utils/adt/acl.c:1805,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/acl.c:1808,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/acl.c:1813,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/acl.c:1816,1
    - Dst: ACL_DAT
      Src: /src/postgres/src/backend/utils/adt/acl.c:1818,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:1821,1
    - Dst: ACL_NUM
      Src: /src/postgres/src/backend/utils/adt/acl.c:1831,1
    - Dst: UINT64CONST
      Src: /src/postgres/src/backend/utils/adt/acl.c:1835,1
    - Dst: ACLITEM_GET_PRIVS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1837,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:1844,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:1845,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:1846,1
    - Dst: convert_aclright_to_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:1846,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:1847,1
    - Dst: ACLITEM_GET_GOPTIONS
      Src: /src/postgres/src/backend/utils/adt/acl.c:1847,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/utils/adt/acl.c:1849,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:1850,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/acl.c:1852,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/acl.c:1856,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1857
      start: 1773
    functionDepth: 5
    functionLinenumber: 1773
    functionLinenumberEnd: 1857
    functionName: aclexplode
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - UINT64CONST
    - HeapTupleGetDatum
    - MemoryContextSwitchTo
    - BoolGetDatum
    - PG_GETARG_ACL_P
    - check_acl
    - SRF_FIRSTCALL_INIT
    - SRF_RETURN_DONE
    - convert_aclright_to_string
    - SRF_RETURN_NEXT
    - ACL_NUM
    - CreateTemplateTupleDesc
    - SRF_PERCALL_SETUP
    - heap_form_tuple
    - TupleDescInitEntry
    - ACLITEM_GET_GOPTIONS
    - SRF_IS_FIRSTCALL
    - palloc
    - ObjectIdGetDatum
    - ACLITEM_GET_PRIVS
    - CStringGetTextDatum
    - BlessTupleDesc
    - ACL_DAT
    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:1880,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:1881,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:1882,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:1888,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:1888,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:1889,1
    - Dst: convert_table_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:1890,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:1892,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:1894,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1895
      start: 1877
    functionDepth: 2
    functionLinenumber: 1877
    functionLinenumberEnd: 1895
    functionName: has_table_privilege_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_table_name
    - NameStr
    - convert_table_priv_string
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - pg_class_aclcheck
    - PG_GETARG_NAME
    - get_role_oid_or_public
    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:1906,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:1907,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:1913,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:1914,1
    - Dst: convert_table_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:1915,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:1917,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:1919,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1920
      start: 1903
    functionDepth: 2
    functionLinenumber: 1903
    functionLinenumberEnd: 1920
    functionName: has_table_privilege_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_table_name
    - convert_table_priv_string
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - pg_class_aclcheck
    - GetUserId
    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:1930,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:1931,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:1932,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:1938,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:1938,1
    - Dst: convert_table_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:1939,1
    - Dst: pg_class_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:1941,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:1944,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:1946,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1947
      start: 1927
    functionDepth: 3
    functionLinenumber: 1927
    functionLinenumberEnd: 1947
    functionName: has_table_privilege_name_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - NameStr
    - convert_table_priv_string
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - pg_class_aclcheck_ext
    - get_role_oid_or_public
    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:1958,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:1959,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:1965,1
    - Dst: convert_table_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:1966,1
    - Dst: pg_class_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:1968,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:1971,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:1973,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1974
      start: 1955
    functionDepth: 3
    functionLinenumber: 1955
    functionLinenumberEnd: 1974
    functionName: has_table_privilege_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_table_priv_string
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - pg_class_aclcheck_ext
    - GetUserId
    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:1984,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:1985,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:1986,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:1991,1
    - Dst: convert_table_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:1992,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:1994,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:1996,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1997
      start: 1981
    functionDepth: 2
    functionLinenumber: 1981
    functionLinenumberEnd: 1997
    functionName: has_table_privilege_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_table_name
    - convert_table_priv_string
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - pg_class_aclcheck
    - PG_GETARG_OID
    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:2007,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2008,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2009,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: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2022
      start: 2004
    functionDepth: 3
    functionLinenumber: 2004
    functionLinenumberEnd: 2022
    functionName: has_table_privilege_id_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_table_priv_string
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - pg_class_aclcheck_ext
    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:2036,1
    - Dst: textToQualifiedNameList
      Src: /src/postgres/src/backend/utils/adt/acl.c:2036,1
    - Dst: RangeVarGetRelid
      Src: /src/postgres/src/backend/utils/adt/acl.c:2039,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tablename
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2040
      start: 2031
    functionDepth: 3
    functionLinenumber: 2031
    functionLinenumberEnd: 2040
    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:2051,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2053,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2055,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2057,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2059,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2061,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2063,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2065,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2069,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_type_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2070
      start: 2046
    functionDepth: 3
    functionLinenumber: 2046
    functionLinenumberEnd: 2070
    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:2091,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2092,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2093,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:2099,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:2099,1
    - Dst: convert_sequence_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2100,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2101,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/utils/adt/acl.c:2102,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:2103,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:2104,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:2105,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/acl.c:2106,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:2108,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2111
      start: 2088
    functionDepth: 4
    functionLinenumber: 2088
    functionLinenumberEnd: 2111
    functionName: has_sequence_privilege_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_table_name
    - errcode
    - errmsg
    - NameStr
    - text_to_cstring
    - PG_GETARG_TEXT_PP
    - convert_sequence_priv_string
    - PG_RETURN_BOOL
    - pg_class_aclcheck
    - ereport
    - PG_GETARG_NAME
    - get_role_oid_or_public
    - get_rel_relkind
    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:2122,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2123,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:2129,1
    - Dst: convert_sequence_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2130,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2131,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/utils/adt/acl.c:2132,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:2133,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:2134,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:2135,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/acl.c:2136,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:2138,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2141
      start: 2119
    functionDepth: 4
    functionLinenumber: 2119
    functionLinenumberEnd: 2141
    functionName: has_sequence_privilege_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_table_name
    - errcode
    - GetUserId
    - errmsg
    - text_to_cstring
    - PG_GETARG_TEXT_PP
    - convert_sequence_priv_string
    - PG_RETURN_BOOL
    - pg_class_aclcheck
    - ereport
    - get_rel_relkind
    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:2151,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2152,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2153,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:2160,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:2160,1
    - Dst: convert_sequence_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2161,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/utils/adt/acl.c:2162,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2164,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:2166,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:2167,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:2168,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2169,1
    - Dst: pg_class_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:2171,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2174,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2176,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2177
      start: 2148
    functionDepth: 3
    functionLinenumber: 2148
    functionLinenumberEnd: 2177
    functionName: has_sequence_privilege_name_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - NameStr
    - get_rel_name
    - PG_GETARG_TEXT_PP
    - convert_sequence_priv_string
    - PG_RETURN_BOOL
    - ereport
    - PG_GETARG_NAME
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - pg_class_aclcheck_ext
    - get_role_oid_or_public
    - get_rel_relkind
    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:2188,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2189,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:2196,1
    - Dst: convert_sequence_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2197,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/utils/adt/acl.c:2198,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2200,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:2202,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:2203,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:2204,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2205,1
    - Dst: pg_class_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:2207,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2210,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2212,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2213
      start: 2185
    functionDepth: 3
    functionLinenumber: 2185
    functionLinenumberEnd: 2213
    functionName: has_sequence_privilege_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - GetUserId
    - get_rel_name
    - PG_GETARG_TEXT_PP
    - convert_sequence_priv_string
    - PG_RETURN_BOOL
    - ereport
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - pg_class_aclcheck_ext
    - get_rel_relkind
    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:2223,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2224,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2225,1
    - Dst: convert_sequence_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2230,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2231,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/utils/adt/acl.c:2232,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:2233,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:2234,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:2235,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/acl.c:2236,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:2238,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2240,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2241
      start: 2220
    functionDepth: 4
    functionLinenumber: 2220
    functionLinenumberEnd: 2241
    functionName: has_sequence_privilege_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_table_name
    - errcode
    - errmsg
    - text_to_cstring
    - PG_GETARG_TEXT_PP
    - convert_sequence_priv_string
    - PG_RETURN_BOOL
    - pg_class_aclcheck
    - ereport
    - PG_GETARG_OID
    - get_rel_relkind
    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:2251,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2252,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2253,1
    - Dst: convert_sequence_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2259,1
    - Dst: get_rel_relkind
      Src: /src/postgres/src/backend/utils/adt/acl.c:2260,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2262,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:2264,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:2265,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:2266,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2267,1
    - Dst: pg_class_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:2269,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2272,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2274,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2275
      start: 2248
    functionDepth: 3
    functionLinenumber: 2248
    functionLinenumberEnd: 2275
    functionName: has_sequence_privilege_id_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - get_rel_name
    - PG_GETARG_TEXT_PP
    - convert_sequence_priv_string
    - PG_RETURN_BOOL
    - ereport
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - pg_class_aclcheck_ext
    - get_rel_relkind
    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:2286,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2288,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2290,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_type_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2295
      start: 2281
    functionDepth: 3
    functionLinenumber: 2281
    functionLinenumberEnd: 2295
    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:2317,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2318,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2319,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:2325,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:2325,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2326,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2327,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:2330,1
    - Dst: pg_attribute_aclcheck_all
      Src: /src/postgres/src/backend/utils/adt/acl.c:2332,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2335,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2336
      start: 2314
    functionDepth: 4
    functionLinenumber: 2314
    functionLinenumberEnd: 2336
    functionName: has_any_column_privilege_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_table_name
    - pg_attribute_aclcheck_all
    - NameStr
    - convert_column_priv_string
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - pg_class_aclcheck
    - PG_GETARG_NAME
    - get_role_oid_or_public
    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:2347,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2348,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:2354,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2355,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2356,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:2359,1
    - Dst: pg_attribute_aclcheck_all
      Src: /src/postgres/src/backend/utils/adt/acl.c:2361,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2364,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2365
      start: 2344
    functionDepth: 4
    functionLinenumber: 2344
    functionLinenumberEnd: 2365
    functionName: has_any_column_privilege_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_table_name
    - pg_attribute_aclcheck_all
    - convert_column_priv_string
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - pg_class_aclcheck
    - GetUserId
    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:2375,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2376,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2377,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:2383,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:2383,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2384,1
    - Dst: pg_class_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:2387,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2391,1
    - Dst: pg_attribute_aclcheck_all_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:2392,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2395,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2398,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2399
      start: 2372
    functionDepth: 3
    functionLinenumber: 2372
    functionLinenumberEnd: 2399
    functionName: has_any_column_privilege_name_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - NameStr
    - convert_column_priv_string
    - pg_attribute_aclcheck_all_ext
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - pg_class_aclcheck_ext
    - get_role_oid_or_public
    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:2410,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2411,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:2417,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2418,1
    - Dst: pg_class_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:2421,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2425,1
    - Dst: pg_attribute_aclcheck_all_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:2426,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2429,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2432,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2433
      start: 2407
    functionDepth: 3
    functionLinenumber: 2407
    functionLinenumberEnd: 2433
    functionName: has_any_column_privilege_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_column_priv_string
    - pg_attribute_aclcheck_all_ext
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - pg_class_aclcheck_ext
    - GetUserId
    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:2443,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2444,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2445,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2450,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2451,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:2454,1
    - Dst: pg_attribute_aclcheck_all
      Src: /src/postgres/src/backend/utils/adt/acl.c:2456,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2459,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2460
      start: 2440
    functionDepth: 4
    functionLinenumber: 2440
    functionLinenumberEnd: 2460
    functionName: has_any_column_privilege_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_table_name
    - pg_attribute_aclcheck_all
    - convert_column_priv_string
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - pg_class_aclcheck
    - PG_GETARG_OID
    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:2470,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2471,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2472,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2477,1
    - Dst: pg_class_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:2480,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2484,1
    - Dst: pg_attribute_aclcheck_all_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:2485,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2488,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2491,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2492
      start: 2467
    functionDepth: 3
    functionLinenumber: 2467
    functionLinenumberEnd: 2492
    functionName: has_any_column_privilege_id_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_column_priv_string
    - pg_attribute_aclcheck_all_ext
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - pg_class_aclcheck_ext
    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:2536,1
    - Dst: pg_class_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:2544,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - tableoid
    - attnum
    - roleid
    - mode
    argTypes:
    - Oid
    - AttrNumber
    - Oid
    - AclMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2551
      start: 2518
    functionDepth: 3
    functionLinenumber: 2518
    functionLinenumberEnd: 2551
    functionName: column_privilege_check
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - pg_attribute_aclcheck_ext
    - pg_class_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:2561,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2562,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2563,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2564,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:2571,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:2571,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2572,1
    - Dst: convert_column_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2573,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2574,1
    - Dst: column_privilege_check
      Src: /src/postgres/src/backend/utils/adt/acl.c:2576,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2578,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2579,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2580
      start: 2558
    functionDepth: 4
    functionLinenumber: 2558
    functionLinenumberEnd: 2580
    functionName: has_column_privilege_name_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_table_name
    - convert_column_name
    - NameStr
    - convert_column_priv_string
    - column_privilege_check
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - PG_RETURN_NULL
    - get_role_oid_or_public
    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:2590,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2591,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/acl.c:2592,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2593,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:2599,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:2599,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2600,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2601,1
    - Dst: column_privilege_check
      Src: /src/postgres/src/backend/utils/adt/acl.c:2603,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2605,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2606,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2607
      start: 2587
    functionDepth: 4
    functionLinenumber: 2587
    functionLinenumberEnd: 2607
    functionName: has_column_privilege_name_name_attnum
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_table_name
    - NameStr
    - convert_column_priv_string
    - column_privilege_check
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - PG_GETARG_INT16
    - PG_RETURN_NULL
    - get_role_oid_or_public
    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:2617,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2618,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2619,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2620,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:2626,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:2626,1
    - Dst: convert_column_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2627,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2628,1
    - Dst: column_privilege_check
      Src: /src/postgres/src/backend/utils/adt/acl.c:2630,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2632,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2633,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2634
      start: 2614
    functionDepth: 4
    functionLinenumber: 2614
    functionLinenumberEnd: 2634
    functionName: has_column_privilege_name_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_column_name
    - NameStr
    - convert_column_priv_string
    - column_privilege_check
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - get_role_oid_or_public
    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:2644,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2645,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/acl.c:2646,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2647,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:2652,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:2652,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2653,1
    - Dst: column_privilege_check
      Src: /src/postgres/src/backend/utils/adt/acl.c:2655,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2657,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2658,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2659
      start: 2641
    functionDepth: 4
    functionLinenumber: 2641
    functionLinenumberEnd: 2659
    functionName: has_column_privilege_name_id_attnum
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - NameStr
    - convert_column_priv_string
    - column_privilege_check
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - PG_GETARG_OID
    - PG_GETARG_INT16
    - PG_RETURN_NULL
    - get_role_oid_or_public
    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:2669,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2670,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2671,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2672,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2678,1
    - Dst: convert_column_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2679,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2680,1
    - Dst: column_privilege_check
      Src: /src/postgres/src/backend/utils/adt/acl.c:2682,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2684,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2685,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2686
      start: 2666
    functionDepth: 4
    functionLinenumber: 2666
    functionLinenumberEnd: 2686
    functionName: has_column_privilege_id_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_table_name
    - convert_column_name
    - convert_column_priv_string
    - column_privilege_check
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - PG_RETURN_NULL
    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:2696,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2697,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/acl.c:2698,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2699,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2704,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2705,1
    - Dst: column_privilege_check
      Src: /src/postgres/src/backend/utils/adt/acl.c:2707,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2709,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2710,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2711
      start: 2693
    functionDepth: 4
    functionLinenumber: 2693
    functionLinenumberEnd: 2711
    functionName: has_column_privilege_id_name_attnum
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_table_name
    - convert_column_priv_string
    - column_privilege_check
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - PG_GETARG_INT16
    - PG_RETURN_NULL
    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:2721,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2722,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2723,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2724,1
    - Dst: convert_column_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2729,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2730,1
    - Dst: column_privilege_check
      Src: /src/postgres/src/backend/utils/adt/acl.c:2732,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2734,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2735,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2736
      start: 2718
    functionDepth: 4
    functionLinenumber: 2718
    functionLinenumberEnd: 2736
    functionName: has_column_privilege_id_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_column_name
    - convert_column_priv_string
    - column_privilege_check
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - PG_RETURN_NULL
    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:2746,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:2747,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/acl.c:2748,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2749,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: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2759
      start: 2743
    functionDepth: 4
    functionLinenumber: 2743
    functionLinenumberEnd: 2759
    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_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - PG_GETARG_INT16
    - PG_RETURN_NULL
    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: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: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:2779,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2780,1
    - Dst: convert_column_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2781,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2782,1
    - Dst: column_privilege_check
      Src: /src/postgres/src/backend/utils/adt/acl.c:2784,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2786,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2787,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2788
      start: 2767
    functionDepth: 4
    functionLinenumber: 2767
    functionLinenumberEnd: 2788
    functionName: has_column_privilege_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_table_name
    - convert_column_name
    - convert_column_priv_string
    - column_privilege_check
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_RETURN_NULL
    - GetUserId
    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:2799,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/acl.c:2800,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2801,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:2807,1
    - Dst: convert_table_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2808,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2809,1
    - Dst: column_privilege_check
      Src: /src/postgres/src/backend/utils/adt/acl.c:2811,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2813,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2814,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2815
      start: 2796
    functionDepth: 4
    functionLinenumber: 2796
    functionLinenumberEnd: 2815
    functionName: has_column_privilege_name_attnum
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_table_name
    - convert_column_priv_string
    - column_privilege_check
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_INT16
    - PG_RETURN_NULL
    - GetUserId
    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:2826,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2827,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2828,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:2834,1
    - Dst: convert_column_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2835,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2836,1
    - Dst: column_privilege_check
      Src: /src/postgres/src/backend/utils/adt/acl.c:2838,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2840,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2841,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2842
      start: 2823
    functionDepth: 4
    functionLinenumber: 2823
    functionLinenumberEnd: 2842
    functionName: has_column_privilege_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_column_name
    - convert_column_priv_string
    - column_privilege_check
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - GetUserId
    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:2853,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/acl.c:2854,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2855,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:2860,1
    - Dst: convert_column_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2861,1
    - Dst: column_privilege_check
      Src: /src/postgres/src/backend/utils/adt/acl.c:2863,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2865,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2866,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2867
      start: 2850
    functionDepth: 4
    functionLinenumber: 2850
    functionLinenumberEnd: 2867
    functionName: has_column_privilege_id_attnum
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_column_priv_string
    - column_privilege_check
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - PG_GETARG_INT16
    - PG_RETURN_NULL
    - GetUserId
    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:2885,1
    - Dst: SearchSysCache2
      Src: /src/postgres/src/backend/utils/adt/acl.c:2892,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:2893,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:2894,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:2895,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/acl.c:2899,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/acl.c:2905,1
    - Dst: get_rel_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2909,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:2919,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:2920,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:2921,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/acl.c:2928,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - tableoid
    - column
    argTypes:
    - Oid
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2930
      start: 2878
    functionDepth: 2
    functionLinenumber: 2878
    functionLinenumberEnd: 2930
    functionName: convert_column_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 6
    functionsReached:
    - errmsg
    - errcode
    - pfree
    - get_rel_name
    - SearchSysCache2
    - text_to_cstring
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - ereport
    - CStringGetDatum
    - ObjectIdGetDatum
    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:2941,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2943,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2945,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:2947,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2951,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_type_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2952
      start: 2936
    functionDepth: 3
    functionLinenumber: 2936
    functionLinenumberEnd: 2952
    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:2973,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2974,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:2975,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:2981,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:2981,1
    - Dst: convert_database_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:2982,1
    - Dst: convert_database_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:2983,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:2985,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:2987,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2988
      start: 2970
    functionDepth: 2
    functionLinenumber: 2970
    functionLinenumberEnd: 2988
    functionName: has_database_privilege_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - NameStr
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - convert_database_priv_string
    - PG_GETARG_NAME
    - get_role_oid_or_public
    - object_aclcheck
    - convert_database_name
    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:2999,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3000,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:3006,1
    - Dst: convert_database_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3007,1
    - Dst: convert_database_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3008,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3010,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3012,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3013
      start: 2996
    functionDepth: 2
    functionLinenumber: 2996
    functionLinenumberEnd: 3013
    functionName: has_database_privilege_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - convert_database_name
    - GetUserId
    - object_aclcheck
    - convert_database_priv_string
    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:3023,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3024,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3025,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:3031,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:3031,1
    - Dst: convert_database_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3032,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3034,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3039,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3041,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3042
      start: 3020
    functionDepth: 4
    functionLinenumber: 3020
    functionLinenumberEnd: 3042
    functionName: has_database_privilege_name_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - object_aclcheck_ext
    - NameStr
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - get_role_oid_or_public
    - convert_database_priv_string
    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:3053,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3054,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:3060,1
    - Dst: convert_database_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3061,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3063,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3068,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3070,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3071
      start: 3050
    functionDepth: 4
    functionLinenumber: 3050
    functionLinenumberEnd: 3071
    functionName: has_database_privilege_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - object_aclcheck_ext
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - GetUserId
    - convert_database_priv_string
    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:3081,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3082,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3083,1
    - Dst: convert_database_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3088,1
    - Dst: convert_database_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3089,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3091,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3093,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3094
      start: 3078
    functionDepth: 2
    functionLinenumber: 3078
    functionLinenumberEnd: 3094
    functionName: has_database_privilege_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - convert_database_name
    - object_aclcheck
    - convert_database_priv_string
    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:3104,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3105,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3106,1
    - Dst: convert_database_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3111,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3113,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3118,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3120,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3121
      start: 3101
    functionDepth: 4
    functionLinenumber: 3101
    functionLinenumberEnd: 3121
    functionName: has_database_privilege_id_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - object_aclcheck_ext
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - convert_database_priv_string
    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:3133,1
    - Dst: get_database_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:3135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - databasename
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3136
      start: 3130
    functionDepth: 1
    functionLinenumber: 3130
    functionLinenumberEnd: 3136
    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:3147,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:3149,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:3151,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:3153,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_type_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3158
      start: 3142
    functionDepth: 3
    functionLinenumber: 3142
    functionLinenumberEnd: 3158
    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:3179,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3180,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3181,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:3187,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:3187,1
    - Dst: convert_foreign_data_wrapper_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3188,1
    - Dst: convert_foreign_data_wrapper_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3189,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3191,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3194
      start: 3176
    functionDepth: 2
    functionLinenumber: 3176
    functionLinenumberEnd: 3194
    functionName: has_foreign_data_wrapper_privilege_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - NameStr
    - convert_foreign_data_wrapper_name
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - convert_foreign_data_wrapper_priv_string
    - get_role_oid_or_public
    - object_aclcheck
    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:3205,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3206,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:3212,1
    - Dst: convert_foreign_data_wrapper_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3213,1
    - Dst: convert_foreign_data_wrapper_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3214,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3216,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3219
      start: 3202
    functionDepth: 2
    functionLinenumber: 3202
    functionLinenumberEnd: 3219
    functionName: has_foreign_data_wrapper_privilege_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_foreign_data_wrapper_name
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - convert_foreign_data_wrapper_priv_string
    - GetUserId
    - object_aclcheck
    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:3229,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3230,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3231,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:3237,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:3237,1
    - Dst: convert_foreign_data_wrapper_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3238,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3240,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3245,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3248
      start: 3226
    functionDepth: 4
    functionLinenumber: 3226
    functionLinenumberEnd: 3248
    functionName: has_foreign_data_wrapper_privilege_name_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - object_aclcheck_ext
    - NameStr
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - convert_foreign_data_wrapper_priv_string
    - get_role_oid_or_public
    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:3259,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3260,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:3266,1
    - Dst: convert_foreign_data_wrapper_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3267,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3269,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3274,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3276,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3277
      start: 3256
    functionDepth: 4
    functionLinenumber: 3256
    functionLinenumberEnd: 3277
    functionName: has_foreign_data_wrapper_privilege_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - object_aclcheck_ext
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - convert_foreign_data_wrapper_priv_string
    - GetUserId
    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:3287,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3288,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3289,1
    - Dst: convert_foreign_data_wrapper_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3294,1
    - Dst: convert_foreign_data_wrapper_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3295,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3297,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3300
      start: 3284
    functionDepth: 2
    functionLinenumber: 3284
    functionLinenumberEnd: 3300
    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
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - convert_foreign_data_wrapper_priv_string
    - object_aclcheck
    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:3310,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3311,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3312,1
    - Dst: convert_foreign_data_wrapper_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3317,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3319,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3324,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3326,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3327
      start: 3307
    functionDepth: 4
    functionLinenumber: 3307
    functionLinenumberEnd: 3327
    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_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - convert_foreign_data_wrapper_priv_string
    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:3339,1
    - Dst: get_foreign_data_wrapper_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:3341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fdwname
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3342
      start: 3336
    functionDepth: 3
    functionLinenumber: 3336
    functionLinenumberEnd: 3342
    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:3353,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_type_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3358
      start: 3348
    functionDepth: 3
    functionLinenumber: 3348
    functionLinenumberEnd: 3358
    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:3379,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3380,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3381,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:3387,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:3387,1
    - Dst: convert_function_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3388,1
    - Dst: convert_function_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3389,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3391,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3393,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3394
      start: 3376
    functionDepth: 2
    functionLinenumber: 3376
    functionLinenumberEnd: 3394
    functionName: has_function_privilege_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - NameStr
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - convert_function_priv_string
    - PG_GETARG_NAME
    - convert_function_name
    - get_role_oid_or_public
    - object_aclcheck
    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:3405,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3406,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:3412,1
    - Dst: convert_function_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3413,1
    - Dst: convert_function_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3414,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3416,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3419
      start: 3402
    functionDepth: 2
    functionLinenumber: 3402
    functionLinenumberEnd: 3419
    functionName: has_function_privilege_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - convert_function_priv_string
    - convert_function_name
    - GetUserId
    - object_aclcheck
    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:3429,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3430,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3431,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:3437,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:3437,1
    - Dst: convert_function_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3438,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3440,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3445,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3447,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3448
      start: 3426
    functionDepth: 4
    functionLinenumber: 3426
    functionLinenumberEnd: 3448
    functionName: has_function_privilege_name_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - object_aclcheck_ext
    - NameStr
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - convert_function_priv_string
    - PG_GETARG_NAME
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - get_role_oid_or_public
    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:3459,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3460,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:3466,1
    - Dst: convert_function_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3467,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3469,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3474,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3476,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3477
      start: 3456
    functionDepth: 4
    functionLinenumber: 3456
    functionLinenumberEnd: 3477
    functionName: has_function_privilege_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - object_aclcheck_ext
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - convert_function_priv_string
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - GetUserId
    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:3487,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3488,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3489,1
    - Dst: convert_function_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3494,1
    - Dst: convert_function_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3495,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3497,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3500
      start: 3484
    functionDepth: 2
    functionLinenumber: 3484
    functionLinenumberEnd: 3500
    functionName: has_function_privilege_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - convert_function_priv_string
    - PG_GETARG_OID
    - convert_function_name
    - object_aclcheck
    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:3510,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3511,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3512,1
    - Dst: convert_function_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3517,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3519,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3524,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3526,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3527
      start: 3507
    functionDepth: 4
    functionLinenumber: 3507
    functionLinenumberEnd: 3527
    functionName: has_function_privilege_id_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - object_aclcheck_ext
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - convert_function_priv_string
    - PG_GETARG_OID
    - PG_RETURN_NULL
    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:3539,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/utils/adt/acl.c:3542,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/acl.c:3542,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:3543,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:3545,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:3546,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:3547,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:3548,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - functionname
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3551
      start: 3536
    functionDepth: 2
    functionLinenumber: 3536
    functionLinenumberEnd: 3551
    functionName: convert_function_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 3
    functionsReached:
    - errmsg
    - errcode
    - ereport
    - DatumGetObjectId
    - CStringGetDatum
    - OidIsValid
    - DirectFunctionCall1
    - text_to_cstring
    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:3562,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3566,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_type_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3567
      start: 3557
    functionDepth: 3
    functionLinenumber: 3557
    functionLinenumberEnd: 3567
    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:3588,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3589,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3590,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:3596,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:3596,1
    - Dst: convert_language_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3597,1
    - Dst: convert_language_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3598,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3600,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3602,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3603
      start: 3585
    functionDepth: 2
    functionLinenumber: 3585
    functionLinenumberEnd: 3603
    functionName: has_language_privilege_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_language_name
    - NameStr
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - get_role_oid_or_public
    - convert_language_priv_string
    - object_aclcheck
    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:3614,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3615,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:3621,1
    - Dst: convert_language_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3622,1
    - Dst: convert_language_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3623,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3625,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3627,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3628
      start: 3611
    functionDepth: 2
    functionLinenumber: 3611
    functionLinenumberEnd: 3628
    functionName: has_language_privilege_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_language_name
    - GetUserId
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - convert_language_priv_string
    - object_aclcheck
    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:3638,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3639,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3640,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:3646,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:3646,1
    - Dst: convert_language_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3647,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3649,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3654,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3656,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3657
      start: 3635
    functionDepth: 4
    functionLinenumber: 3635
    functionLinenumberEnd: 3657
    functionName: has_language_privilege_name_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - object_aclcheck_ext
    - NameStr
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - get_role_oid_or_public
    - convert_language_priv_string
    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:3668,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3669,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:3675,1
    - Dst: convert_language_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3676,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3678,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3683,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3685,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3686
      start: 3665
    functionDepth: 4
    functionLinenumber: 3665
    functionLinenumberEnd: 3686
    functionName: has_language_privilege_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - GetUserId
    - object_aclcheck_ext
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - convert_language_priv_string
    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:3696,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3697,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3698,1
    - Dst: convert_language_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3703,1
    - Dst: convert_language_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3704,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3706,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3708,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3709
      start: 3693
    functionDepth: 2
    functionLinenumber: 3693
    functionLinenumberEnd: 3709
    functionName: has_language_privilege_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_language_name
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - convert_language_priv_string
    - object_aclcheck
    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:3719,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3720,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3721,1
    - Dst: convert_language_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3726,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3728,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3733,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3735,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3736
      start: 3716
    functionDepth: 4
    functionLinenumber: 3716
    functionLinenumberEnd: 3736
    functionName: has_language_privilege_id_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - object_aclcheck_ext
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - convert_language_priv_string
    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:3748,1
    - Dst: get_language_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:3750,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - languagename
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3751
      start: 3745
    functionDepth: 1
    functionLinenumber: 3745
    functionLinenumberEnd: 3751
    functionName: convert_language_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 3
    functionsReached:
    - text_to_cstring
    - get_language_oid
    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:3762,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3766,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_type_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3767
      start: 3757
    functionDepth: 3
    functionLinenumber: 3757
    functionLinenumberEnd: 3767
    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:3788,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3789,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3790,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:3796,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:3796,1
    - Dst: convert_schema_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3797,1
    - Dst: convert_schema_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3798,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3800,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3803
      start: 3785
    functionDepth: 2
    functionLinenumber: 3785
    functionLinenumberEnd: 3803
    functionName: has_schema_privilege_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - NameStr
    - convert_schema_priv_string
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - convert_schema_name
    - get_role_oid_or_public
    - object_aclcheck
    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:3814,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3815,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:3821,1
    - Dst: convert_schema_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3822,1
    - Dst: convert_schema_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3823,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3825,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3827,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3828
      start: 3811
    functionDepth: 2
    functionLinenumber: 3811
    functionLinenumberEnd: 3828
    functionName: has_schema_privilege_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_schema_priv_string
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - convert_schema_name
    - GetUserId
    - object_aclcheck
    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:3838,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3839,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3840,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:3846,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:3846,1
    - Dst: convert_schema_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3847,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3849,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3854,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3856,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3857
      start: 3835
    functionDepth: 4
    functionLinenumber: 3835
    functionLinenumberEnd: 3857
    functionName: has_schema_privilege_name_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - object_aclcheck_ext
    - NameStr
    - convert_schema_priv_string
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - get_role_oid_or_public
    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:3868,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3869,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:3875,1
    - Dst: convert_schema_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3876,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3878,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3883,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3885,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3886
      start: 3865
    functionDepth: 4
    functionLinenumber: 3865
    functionLinenumberEnd: 3886
    functionName: has_schema_privilege_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - object_aclcheck_ext
    - convert_schema_priv_string
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - GetUserId
    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:3896,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3897,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3898,1
    - Dst: convert_schema_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3903,1
    - Dst: convert_schema_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3904,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:3906,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3908,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3909
      start: 3893
    functionDepth: 2
    functionLinenumber: 3893
    functionLinenumberEnd: 3909
    functionName: has_schema_privilege_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_schema_priv_string
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - convert_schema_name
    - PG_GETARG_OID
    - object_aclcheck
    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:3919,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:3920,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3921,1
    - Dst: convert_schema_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3926,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:3928,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3933,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:3935,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3936
      start: 3916
    functionDepth: 4
    functionLinenumber: 3916
    functionLinenumberEnd: 3936
    functionName: has_schema_privilege_id_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - object_aclcheck_ext
    - convert_schema_priv_string
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - PG_RETURN_NULL
    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:3948,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:3950,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - schemaname
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3951
      start: 3945
    functionDepth: 3
    functionLinenumber: 3945
    functionLinenumberEnd: 3951
    functionName: convert_schema_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 3
    functionsReached:
    - get_namespace_oid
    - text_to_cstring
    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:3962,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:3964,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:3968,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_type_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3969
      start: 3957
    functionDepth: 3
    functionLinenumber: 3957
    functionLinenumberEnd: 3969
    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:3990,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3991,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:3992,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:3998,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:3998,1
    - Dst: convert_server_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:3999,1
    - Dst: convert_server_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4000,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4002,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4004,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4005
      start: 3987
    functionDepth: 2
    functionLinenumber: 3987
    functionLinenumberEnd: 4005
    functionName: has_server_privilege_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - NameStr
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - convert_server_name
    - get_role_oid_or_public
    - object_aclcheck
    - convert_server_priv_string
    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:4016,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4017,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:4023,1
    - Dst: convert_server_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:4024,1
    - Dst: convert_server_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4025,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4027,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4029,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4030
      start: 4013
    functionDepth: 2
    functionLinenumber: 4013
    functionLinenumberEnd: 4030
    functionName: has_server_privilege_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - convert_server_name
    - GetUserId
    - object_aclcheck
    - convert_server_priv_string
    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:4040,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4041,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4042,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:4048,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:4048,1
    - Dst: convert_server_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4049,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:4051,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4056,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4058,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4059
      start: 4037
    functionDepth: 4
    functionLinenumber: 4037
    functionLinenumberEnd: 4059
    functionName: has_server_privilege_name_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - object_aclcheck_ext
    - NameStr
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - get_role_oid_or_public
    - convert_server_priv_string
    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:4070,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4071,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:4077,1
    - Dst: convert_server_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4078,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:4080,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4085,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4087,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4088
      start: 4067
    functionDepth: 4
    functionLinenumber: 4067
    functionLinenumberEnd: 4088
    functionName: has_server_privilege_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - object_aclcheck_ext
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - GetUserId
    - convert_server_priv_string
    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:4098,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4099,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4100,1
    - Dst: convert_server_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:4105,1
    - Dst: convert_server_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4106,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4108,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4111
      start: 4095
    functionDepth: 2
    functionLinenumber: 4095
    functionLinenumberEnd: 4111
    functionName: has_server_privilege_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - convert_server_name
    - object_aclcheck
    - convert_server_priv_string
    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:4121,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4122,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4123,1
    - Dst: convert_server_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4128,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:4130,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4135,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4137,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4138
      start: 4118
    functionDepth: 4
    functionLinenumber: 4118
    functionLinenumberEnd: 4138
    functionName: has_server_privilege_id_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - object_aclcheck_ext
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - convert_server_priv_string
    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:4150,1
    - Dst: get_foreign_server_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:4152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - servername
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4153
      start: 4147
    functionDepth: 3
    functionLinenumber: 4147
    functionLinenumberEnd: 4153
    functionName: convert_server_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 3
    functionsReached:
    - get_foreign_server_oid
    - text_to_cstring
    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:4164,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_type_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4169
      start: 4159
    functionDepth: 3
    functionLinenumber: 4159
    functionLinenumberEnd: 4169
    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:4190,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4191,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4192,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:4198,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:4198,1
    - Dst: convert_tablespace_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:4199,1
    - Dst: convert_tablespace_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4200,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4202,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4205
      start: 4187
    functionDepth: 2
    functionLinenumber: 4187
    functionLinenumberEnd: 4205
    functionName: has_tablespace_privilege_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - NameStr
    - convert_tablespace_name
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - convert_tablespace_priv_string
    - get_role_oid_or_public
    - object_aclcheck
    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:4216,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4217,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:4223,1
    - Dst: convert_tablespace_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:4224,1
    - Dst: convert_tablespace_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4225,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4227,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4230
      start: 4213
    functionDepth: 2
    functionLinenumber: 4213
    functionLinenumberEnd: 4230
    functionName: has_tablespace_privilege_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_tablespace_name
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - convert_tablespace_priv_string
    - GetUserId
    - object_aclcheck
    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:4240,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4241,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4242,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:4248,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:4248,1
    - Dst: convert_tablespace_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4249,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:4251,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4256,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4259
      start: 4237
    functionDepth: 4
    functionLinenumber: 4237
    functionLinenumberEnd: 4259
    functionName: has_tablespace_privilege_name_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - object_aclcheck_ext
    - NameStr
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - PG_GETARG_OID
    - convert_tablespace_priv_string
    - PG_RETURN_NULL
    - get_role_oid_or_public
    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:4270,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4271,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:4277,1
    - Dst: convert_tablespace_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4278,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:4280,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4285,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4287,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4288
      start: 4267
    functionDepth: 4
    functionLinenumber: 4267
    functionLinenumberEnd: 4288
    functionName: has_tablespace_privilege_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - object_aclcheck_ext
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - convert_tablespace_priv_string
    - PG_RETURN_NULL
    - GetUserId
    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:4298,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4299,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4300,1
    - Dst: convert_tablespace_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:4305,1
    - Dst: convert_tablespace_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4306,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4308,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4310,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4311
      start: 4295
    functionDepth: 2
    functionLinenumber: 4295
    functionLinenumberEnd: 4311
    functionName: has_tablespace_privilege_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_tablespace_name
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - convert_tablespace_priv_string
    - object_aclcheck
    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:4321,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4322,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4323,1
    - Dst: convert_tablespace_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4328,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:4330,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4335,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4337,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4338
      start: 4318
    functionDepth: 4
    functionLinenumber: 4318
    functionLinenumberEnd: 4338
    functionName: has_tablespace_privilege_id_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - object_aclcheck_ext
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - convert_tablespace_priv_string
    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:4350,1
    - Dst: get_tablespace_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:4352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tablespacename
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4353
      start: 4347
    functionDepth: 1
    functionLinenumber: 4347
    functionLinenumberEnd: 4353
    functionName: convert_tablespace_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 3
    functionsReached:
    - get_tablespace_oid
    - text_to_cstring
    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:4364,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_type_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4369
      start: 4359
    functionDepth: 3
    functionLinenumber: 4359
    functionLinenumberEnd: 4369
    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:4389,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4390,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4391,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:4397,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:4397,1
    - Dst: convert_type_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:4398,1
    - Dst: convert_type_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4399,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4401,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4403,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4404
      start: 4386
    functionDepth: 2
    functionLinenumber: 4386
    functionLinenumberEnd: 4404
    functionName: has_type_privilege_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_type_priv_string
    - NameStr
    - convert_type_name
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - get_role_oid_or_public
    - object_aclcheck
    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:4415,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4416,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:4422,1
    - Dst: convert_type_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:4423,1
    - Dst: convert_type_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4424,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4426,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4428,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4429
      start: 4412
    functionDepth: 2
    functionLinenumber: 4412
    functionLinenumberEnd: 4429
    functionName: has_type_privilege_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_type_priv_string
    - convert_type_name
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - GetUserId
    - object_aclcheck
    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:4439,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4440,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4441,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:4447,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:4447,1
    - Dst: convert_type_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4448,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:4450,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4455,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4457,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4458
      start: 4436
    functionDepth: 4
    functionLinenumber: 4436
    functionLinenumberEnd: 4458
    functionName: has_type_privilege_name_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_type_priv_string
    - object_aclcheck_ext
    - NameStr
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - get_role_oid_or_public
    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:4469,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4470,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:4476,1
    - Dst: convert_type_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4477,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:4479,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4484,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4486,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4487
      start: 4466
    functionDepth: 4
    functionLinenumber: 4466
    functionLinenumberEnd: 4487
    functionName: has_type_privilege_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_type_priv_string
    - object_aclcheck_ext
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - GetUserId
    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:4497,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4498,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4499,1
    - Dst: convert_type_name
      Src: /src/postgres/src/backend/utils/adt/acl.c:4504,1
    - Dst: convert_type_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4505,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4507,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4509,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4510
      start: 4494
    functionDepth: 2
    functionLinenumber: 4494
    functionLinenumberEnd: 4510
    functionName: has_type_privilege_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_type_priv_string
    - convert_type_name
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - object_aclcheck
    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:4520,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4521,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4522,1
    - Dst: convert_type_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4527,1
    - Dst: object_aclcheck_ext
      Src: /src/postgres/src/backend/utils/adt/acl.c:4529,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4534,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4536,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4537
      start: 4517
    functionDepth: 4
    functionLinenumber: 4517
    functionLinenumberEnd: 4537
    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_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - PG_RETURN_NULL
    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:4549,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/utils/adt/acl.c:4552,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/acl.c:4552,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:4553,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:4555,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:4556,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:4557,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:4558,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - typename
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4561
      start: 4546
    functionDepth: 2
    functionLinenumber: 4546
    functionLinenumberEnd: 4561
    functionName: convert_type_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 3
    functionsReached:
    - errmsg
    - errcode
    - ereport
    - DatumGetObjectId
    - CStringGetDatum
    - OidIsValid
    - DirectFunctionCall1
    - text_to_cstring
    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:4572,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4576,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_type_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4577
      start: 4567
    functionDepth: 3
    functionLinenumber: 4567
    functionLinenumberEnd: 4577
    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:4598,1
    - Dst: pg_parameter_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4600,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - roleid
    - parameter
    - priv
    argTypes:
    - Oid
    - text*
    - AclMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4601
      start: 4595
    functionDepth: 3
    functionLinenumber: 4595
    functionLinenumberEnd: 4601
    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:4611,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4612,1
    - Dst: convert_parameter_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4613,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4613,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:4614,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:4614,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4616,1
    - Dst: has_param_priv_byname
      Src: /src/postgres/src/backend/utils/adt/acl.c:4616,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4617
      start: 4608
    functionDepth: 4
    functionLinenumber: 4608
    functionLinenumberEnd: 4617
    functionName: has_parameter_privilege_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_parameter_priv_string
    - NameStr
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - has_param_priv_byname
    - PG_GETARG_NAME
    - get_role_oid_or_public
    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:4627,1
    - Dst: convert_parameter_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4628,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4628,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4630,1
    - Dst: has_param_priv_byname
      Src: /src/postgres/src/backend/utils/adt/acl.c:4630,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:4630,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4631
      start: 4624
    functionDepth: 4
    functionLinenumber: 4624
    functionLinenumberEnd: 4631
    functionName: has_parameter_privilege_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_parameter_priv_string
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - has_param_priv_byname
    - GetUserId
    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:4641,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4642,1
    - Dst: convert_parameter_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4643,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4643,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4645,1
    - Dst: has_param_priv_byname
      Src: /src/postgres/src/backend/utils/adt/acl.c:4645,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4646
      start: 4638
    functionDepth: 4
    functionLinenumber: 4638
    functionLinenumberEnd: 4646
    functionName: has_parameter_privilege_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_parameter_priv_string
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - has_param_priv_byname
    - PG_GETARG_OID
    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:4661,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:4663,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4667,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4668
      start: 4656
    functionDepth: 3
    functionLinenumber: 4656
    functionLinenumberEnd: 4668
    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:4695,1
    - Dst: LargeObjectExistsWithSnapshot
      Src: /src/postgres/src/backend/utils/adt/acl.c:4697,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/acl.c:4699,1
    - Dst: pg_largeobject_aclcheck_snapshot
      Src: /src/postgres/src/backend/utils/adt/acl.c:4707,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: 4712
      start: 4686
    functionDepth: 6
    functionLinenumber: 4686
    functionLinenumberEnd: 4712
    functionName: has_lo_priv_byid
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - GetActiveSnapshot
    - Assert
    - pg_largeobject_aclcheck_snapshot
    - LargeObjectExistsWithSnapshot
    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:4722,1
    - Dst: get_role_oid_or_public
      Src: /src/postgres/src/backend/utils/adt/acl.c:4723,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:4723,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4724,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4725,1
    - Dst: convert_largeobject_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4730,1
    - Dst: has_lo_priv_byid
      Src: /src/postgres/src/backend/utils/adt/acl.c:4731,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4734,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4736,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4737
      start: 4719
    functionDepth: 7
    functionLinenumber: 4719
    functionLinenumberEnd: 4737
    functionName: has_largeobject_privilege_name_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - NameStr
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - convert_largeobject_priv_string
    - get_role_oid_or_public
    - has_lo_priv_byid
    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:4748,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:4749,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4750,1
    - Dst: convert_largeobject_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4755,1
    - Dst: has_lo_priv_byid
      Src: /src/postgres/src/backend/utils/adt/acl.c:4756,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4759,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4761,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4762
      start: 4745
    functionDepth: 7
    functionLinenumber: 4745
    functionLinenumberEnd: 4762
    functionName: has_largeobject_privilege_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - convert_largeobject_priv_string
    - GetUserId
    - has_lo_priv_byid
    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:4772,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4773,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4774,1
    - Dst: convert_largeobject_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4779,1
    - Dst: has_lo_priv_byid
      Src: /src/postgres/src/backend/utils/adt/acl.c:4780,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4783,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4785,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4786
      start: 4769
    functionDepth: 7
    functionLinenumber: 4769
    functionLinenumberEnd: 4786
    functionName: has_largeobject_privilege_id_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - convert_largeobject_priv_string
    - has_lo_priv_byid
    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:4797,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:4799,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4803,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_type_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4804
      start: 4792
    functionDepth: 3
    functionLinenumber: 4792
    functionLinenumberEnd: 4804
    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:4824,1
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:4825,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4826,1
    - Dst: get_role_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:4832,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:4832,1
    - Dst: get_role_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:4833,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:4833,1
    - Dst: convert_role_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4834,1
    - Dst: pg_role_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4836,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4838,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4839
      start: 4821
    functionDepth: 1
    functionLinenumber: 4821
    functionLinenumberEnd: 4839
    functionName: pg_has_role_name_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - NameStr
    - convert_role_priv_string
    - PG_GETARG_TEXT_PP
    - get_role_oid
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - pg_role_aclcheck
    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:4850,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4851,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:4857,1
    - Dst: get_role_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:4858,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:4858,1
    - Dst: convert_role_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4859,1
    - Dst: pg_role_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4861,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4863,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4864
      start: 4847
    functionDepth: 1
    functionLinenumber: 4847
    functionLinenumberEnd: 4864
    functionName: pg_has_role_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - NameStr
    - convert_role_priv_string
    - PG_GETARG_TEXT_PP
    - get_role_oid
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - pg_role_aclcheck
    - GetUserId
    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:4874,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4875,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4876,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: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4887
      start: 4871
    functionDepth: 1
    functionLinenumber: 4871
    functionLinenumberEnd: 4887
    functionName: pg_has_role_name_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - NameStr
    - convert_role_priv_string
    - PG_GETARG_TEXT_PP
    - get_role_oid
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - PG_GETARG_OID
    - pg_role_aclcheck
    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: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:4904,1
    - Dst: convert_role_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4905,1
    - Dst: pg_role_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4907,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4909,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4910
      start: 4895
    functionDepth: 1
    functionLinenumber: 4895
    functionLinenumberEnd: 4910
    functionName: pg_has_role_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_role_priv_string
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - pg_role_aclcheck
    - GetUserId
    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:4920,1
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/acl.c:4921,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4922,1
    - Dst: get_role_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:4927,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:4927,1
    - Dst: convert_role_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4928,1
    - Dst: pg_role_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4930,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4932,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4933
      start: 4917
    functionDepth: 1
    functionLinenumber: 4917
    functionLinenumberEnd: 4933
    functionName: pg_has_role_id_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - NameStr
    - convert_role_priv_string
    - PG_GETARG_TEXT_PP
    - get_role_oid
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - PG_GETARG_OID
    - pg_role_aclcheck
    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:4943,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/acl.c:4944,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/acl.c:4945,1
    - Dst: convert_role_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4949,1
    - Dst: pg_role_aclcheck
      Src: /src/postgres/src/backend/utils/adt/acl.c:4951,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/acl.c:4953,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4954
      start: 4940
    functionDepth: 1
    functionLinenumber: 4940
    functionLinenumberEnd: 4954
    functionName: pg_has_role_id_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - convert_role_priv_string
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - pg_role_aclcheck
    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:4977,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:4978,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:4979,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:4980,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:4981,1
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:4982,1
    - Dst: convert_any_priv_string
      Src: /src/postgres/src/backend/utils/adt/acl.c:4986,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priv_type_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4987
      start: 4970
    functionDepth: 3
    functionLinenumber: 4970
    functionLinenumberEnd: 4987
    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:4996,1
    - Dst: is_admin_of_role
      Src: /src/postgres/src/backend/utils/adt/acl.c:4998,1
    - Dst: is_member_of_role
      Src: /src/postgres/src/backend/utils/adt/acl.c:5003,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/utils/adt/acl.c:5008,1
    - Dst: member_can_set_role
      Src: /src/postgres/src/backend/utils/adt/acl.c:5013,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 3
    argNames:
    - role_oid
    - roleid
    - mode
    argTypes:
    - Oid
    - Oid
    - AclMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5017
      start: 4993
    functionDepth: 1
    functionLinenumber: 4993
    functionLinenumberEnd: 5017
    functionName: pg_role_aclcheck
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 6
    functionsReached:
    - ACL_GRANT_OPTION_FOR
    - is_member_of_role
    - has_privs_of_role
    - is_admin_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:5026,1
    - Dst: GetSysCacheHashValue1
      Src: /src/postgres/src/backend/utils/adt/acl.c:5029,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:5030,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/utils/adt/acl.c:5037,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/utils/adt/acl.c:5040,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/utils/adt/acl.c:5043,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5047
      start: 5023
    functionDepth: 1
    functionLinenumber: 5023
    functionLinenumberEnd: 5047
    functionName: initialize_acl
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - ObjectIdGetDatum
    - CacheRegisterSyscacheCallback
    - IsBootstrapProcessingMode
    - GetSysCacheHashValue1
    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
    - int
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5067
      start: 5053
    functionDepth: 0
    functionLinenumber: 5053
    functionLinenumberEnd: 5067
    functionName: RoleMembershipCacheCallback
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RoleMembershipCacheCallback(Datum arg, int cacheid, uint32 hashvalue)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bloom_lacks_element
      Src: /src/postgres/src/backend/utils/adt/acl.c:5088,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5089,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/acl.c:5097,1
    - Dst: bloom_create
      Src: /src/postgres/src/backend/utils/adt/acl.c:5099,1
    - Dst: foreach_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5100,1
    - Dst: bloom_add_element
      Src: /src/postgres/src/backend/utils/adt/acl.c:5101,1
    - Dst: lappend_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5108,1
    - Dst: bloom_add_element
      Src: /src/postgres/src/backend/utils/adt/acl.c:5110,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - roles_list
    - bf
    - role
    argTypes:
    - List*
    - bloom_filter**
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5114
      start: 5075
    functionDepth: 6
    functionLinenumber: 5075
    functionLinenumberEnd: 5114
    functionName: roles_list_append
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - lappend_oid
    - bloom_lacks_element
    - bloom_create
    - list_length
    - list_member_oid
    - bloom_add_element
    - foreach_oid
    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:5146,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5146,1
    - Dst: PointerIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5146,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5151,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5152,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5160,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/acl.c:5166,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:5166,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5167,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/acl.c:5168,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/acl.c:5169,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/acl.c:5170,1
    - Dst: list_make1_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5184,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5188,1
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/utils/adt/acl.c:5193,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:5194,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/acl.c:5198,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5206,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5206,1
    - Dst: roles_list_append
      Src: /src/postgres/src/backend/utils/adt/acl.c:5222,1
    - Dst: ReleaseSysCacheList
      Src: /src/postgres/src/backend/utils/adt/acl.c:5224,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5227,1
    - Dst: roles_list_append
      Src: /src/postgres/src/backend/utils/adt/acl.c:5228,1
    - Dst: bloom_free
      Src: /src/postgres/src/backend/utils/adt/acl.c:5236,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/acl.c:5241,1
    - Dst: list_copy
      Src: /src/postgres/src/backend/utils/adt/acl.c:5242,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/acl.c:5243,1
    - Dst: list_free
      Src: /src/postgres/src/backend/utils/adt/acl.c:5244,1
    - Dst: list_free
      Src: /src/postgres/src/backend/utils/adt/acl.c:5250,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: 5256
      start: 5135
    functionDepth: 7
    functionLinenumber: 5135
    functionLinenumberEnd: 5256
    functionName: roles_is_member_of
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - Assert
    - ReleaseSysCacheList
    - MemoryContextSwitchTo
    - ReleaseSysCache
    - list_copy
    - roles_list_append
    - HeapTupleIsValid
    - GETSTRUCT
    - list_make1_oid
    - lfirst_oid
    - SearchSysCache1
    - elog
    - SearchSysCacheList1
    - OidIsValid
    - bloom_free
    - PointerIsValid
    - ObjectIdGetDatum
    - list_free
    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:5188,1
    - Dst: SearchSysCacheList1
      Src: /src/postgres/src/backend/utils/adt/acl.c:5193,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:5194,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/acl.c:5198,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5206,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5206,1
    - Dst: roles_list_append
      Src: /src/postgres/src/backend/utils/adt/acl.c:5222,1
    - Dst: ReleaseSysCacheList
      Src: /src/postgres/src/backend/utils/adt/acl.c:5224,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5227,1
    - Dst: roles_list_append
      Src: /src/postgres/src/backend/utils/adt/acl.c:5228,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5230
      start: 5186
    functionDepth: 7
    functionLinenumber: 5186
    functionLinenumberEnd: 5230
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 466
    functionsReached:
    - ReleaseSysCacheList
    - roles_list_append
    - GETSTRUCT
    - SearchSysCacheList1
    - OidIsValid
    - lfirst_oid
    - ObjectIdGetDatum
    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:5275,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5282,1
    - Dst: roles_is_member_of
      Src: /src/postgres/src/backend/utils/adt/acl.c:5282,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - member
    - role
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5285
      start: 5267
    functionDepth: 8
    functionLinenumber: 5267
    functionLinenumberEnd: 5285
    functionName: has_privs_of_role
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 13
    functionsReached:
    - roles_is_member_of
    - list_member_oid
    - superuser_arg
    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:5309,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5316,1
    - Dst: roles_is_member_of
      Src: /src/postgres/src/backend/utils/adt/acl.c:5316,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - member
    - role
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5319
      start: 5301
    functionDepth: 8
    functionLinenumber: 5301
    functionLinenumberEnd: 5319
    functionName: member_can_set_role
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 1
    functionsReached:
    - roles_is_member_of
    - list_member_oid
    - superuser_arg
    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:5327,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:5328,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:5329,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:5330,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/utils/adt/acl.c:5331,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - member
    - role
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5332
      start: 5324
    functionDepth: 9
    functionLinenumber: 5324
    functionLinenumberEnd: 5332
    functionName: check_can_set_role
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - member_can_set_role
    - errcode
    - GetUserNameFromId
    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:5355,1
    - Dst: list_member_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5362,1
    - Dst: roles_is_member_of
      Src: /src/postgres/src/backend/utils/adt/acl.c:5362,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - member
    - role
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5365
      start: 5347
    functionDepth: 8
    functionLinenumber: 5347
    functionLinenumberEnd: 5365
    functionName: is_member_of_role
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 1
    functionsReached:
    - roles_is_member_of
    - list_member_oid
    - superuser_arg
    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:5386,1
    - Dst: roles_is_member_of
      Src: /src/postgres/src/backend/utils/adt/acl.c:5386,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - member
    - role
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5389
      start: 5375
    functionDepth: 8
    functionLinenumber: 5375
    functionLinenumberEnd: 5389
    functionName: is_member_of_role_nosuper
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 1
    functionsReached:
    - roles_is_member_of
    - list_member_oid
    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:5402,1
    - Dst: roles_is_member_of
      Src: /src/postgres/src/backend/utils/adt/acl.c:5409,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5410,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - member
    - role
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5411
      start: 5397
    functionDepth: 8
    functionLinenumber: 5397
    functionLinenumberEnd: 5411
    functionName: is_admin_of_role
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 2
    functionsReached:
    - roles_is_member_of
    - OidIsValid
    - superuser_arg
    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:5431,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - member
    - role
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5433
      start: 5422
    functionDepth: 8
    functionLinenumber: 5422
    functionLinenumberEnd: 5433
    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: 5
    BranchProfiles: []
    Callsites:
    - Dst: ACL_GRANT_OPTION_FOR
      Src: /src/postgres/src/backend/utils/adt/acl.c:5464,1
    - Dst: superuser_arg
      Src: /src/postgres/src/backend/utils/adt/acl.c:5475,1
    - Dst: roles_is_member_of
      Src: /src/postgres/src/backend/utils/adt/acl.c:5488,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5498,1
    - Dst: aclmask_direct
      Src: /src/postgres/src/backend/utils/adt/acl.c:5501,1
    - Dst: pg_popcount64
      Src: /src/postgres/src/backend/utils/adt/acl.c:5517,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 6
    argNames:
    - roleId
    - privileges
    - acl
    - ownerId
    - grantorId
    - grantOptions
    argTypes:
    - Oid
    - AclMode
    - Acl*
    - Oid
    - Oid*
    - AclMode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5527
      start: 5459
    functionDepth: 8
    functionLinenumber: 5459
    functionLinenumberEnd: 5527
    functionName: select_best_grantor
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 5
    functionsReached:
    - ACL_GRANT_OPTION_FOR
    - aclmask_direct
    - superuser_arg
    - roles_is_member_of
    - pg_popcount64
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: "void select_best_grantor(Oid roleId, 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:5498,1
    - Dst: aclmask_direct
      Src: /src/postgres/src/backend/utils/adt/acl.c:5501,1
    - Dst: pg_popcount64
      Src: /src/postgres/src/backend/utils/adt/acl.c:5517,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5526
      start: 5496
    functionDepth: 4
    functionLinenumber: 5496
    functionLinenumberEnd: 5526
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 466
    functionsReached:
    - pg_popcount64
    - aclmask_direct
    - lfirst_oid
    linkageType: ''
    returnType: void
    signature: void foreach(l, roles_list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetSysCacheOid1
      Src: /src/postgres/src/backend/utils/adt/acl.c:5540,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:5541,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5542,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:5543,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:5544,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:5545,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - rolname
    - missing_ok
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5547
      start: 5535
    functionDepth: 2
    functionLinenumber: 5535
    functionLinenumberEnd: 5547
    functionName: get_role_oid
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 10
    functionsReached:
    - errmsg
    - ereport
    - CStringGetDatum
    - OidIsValid
    - errcode
    - GetSysCacheOid1
    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:5556,1
    - Dst: get_role_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5559,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rolname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5560
      start: 5553
    functionDepth: 3
    functionLinenumber: 5553
    functionLinenumberEnd: 5560
    functionName: get_role_oid_or_public
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 28
    functionsReached:
    - strcmp
    - get_role_oid
    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:5577,1
    - Dst: get_role_oid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5578,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:5583,1
    - Dst: GetSessionUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:5587,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:5591,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:5592,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:5593,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/acl.c:5598,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - role
    - missing_ok
    argTypes:
    - RoleSpec*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5602
      start: 5569
    functionDepth: 3
    functionLinenumber: 5569
    functionLinenumberEnd: 5602
    functionName: get_rolespec_oid
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 3
    functionsReached:
    - errmsg
    - errcode
    - Assert
    - GetSessionUserId
    - get_role_oid
    - ereport
    - elog
    - GetUserId
    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:5616,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/acl.c:5617,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:5617,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5618,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:5619,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:5620,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:5621,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/acl.c:5626,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:5626,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:5626,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5627,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/acl.c:5628,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:5628,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/acl.c:5632,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/acl.c:5632,1
    - Dst: GetSessionUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:5632,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/acl.c:5633,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/acl.c:5634,1
    - Dst: GetSessionUserId
      Src: /src/postgres/src/backend/utils/adt/acl.c:5634,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:5638,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:5639,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:5640,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/acl.c:5645,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 1
    argNames:
    - role
    argTypes:
    - RoleSpec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5649
      start: 5608
    functionDepth: 2
    functionLinenumber: 5608
    functionLinenumberEnd: 5649
    functionName: get_rolespec_tuple
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - GetUserId
    - GetSessionUserId
    - ObjectIdGetDatum
    - HeapTupleIsValid
    - ereport
    - SearchSysCache1
    - elog
    - CStringGetDatum
    - errcode
    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:5661,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/acl.c:5662,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/acl.c:5663,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/acl.c:5663,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/acl.c:5664,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - role
    argTypes:
    - RoleSpec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5667
      start: 5654
    functionDepth: 3
    functionLinenumber: 5654
    functionLinenumberEnd: 5667
    functionName: get_rolespec_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - NameStr
    - ReleaseSysCache
    - GETSTRUCT
    - pstrdup
    - 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:5685,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:5688,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:5689,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:5690,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/utils/adt/acl.c:5692,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/acl.c:5694,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/acl.c:5695,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/acl.c:5696,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - role
    - detail_msg
    argTypes:
    - RoleSpec*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5699
      start: 5676
    functionDepth: 2
    functionLinenumber: 5676
    functionLinenumberEnd: 5699
    functionName: check_rolespec_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/acl.c
    functionUses: 0
    functionsReached:
    - errmsg
    - IsReservedName
    - errdetail_internal
    - ereport
    - errcode
    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: 1
    functionLinenumber: 20
    functionLinenumberEnd: 43
    functionName: jsonb_exists
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_op.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - findJsonbValueFromContainer
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - PG_GETARG_JSONB_P
    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: VARSIZE_ANY_EXHDR
      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: 1
    functionLinenumber: 45
    functionLinenumberEnd: 76
    functionName: jsonb_exists_any
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_op.c
    functionUses: 0
    functionsReached:
    - deconstruct_array_builtin
    - PG_GETARG_JSONB_P
    - PG_RETURN_BOOL
    - findJsonbValueFromContainer
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - PG_GETARG_ARRAYTYPE_P
    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: VARSIZE_ANY_EXHDR
      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: 1
    functionLinenumber: 78
    functionLinenumberEnd: 109
    functionName: jsonb_exists_all
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_op.c
    functionUses: 0
    functionsReached:
    - deconstruct_array_builtin
    - PG_GETARG_JSONB_P
    - PG_RETURN_BOOL
    - findJsonbValueFromContainer
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - PG_GETARG_ARRAYTYPE_P
    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:
    - JB_ROOT_IS_OBJECT
    - PG_RETURN_BOOL
    - JsonbIteratorInit
    - JsonbDeepContains
    - 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:
    - JB_ROOT_IS_OBJECT
    - PG_RETURN_BOOL
    - JsonbIteratorInit
    - JsonbDeepContains
    - 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:
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_JSONB_P
    - compareJsonbContainers
    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:
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_JSONB_P
    - compareJsonbContainers
    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:
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_JSONB_P
    - compareJsonbContainers
    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:
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_JSONB_P
    - compareJsonbContainers
    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:
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_JSONB_P
    - compareJsonbContainers
    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:
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_JSONB_P
    - compareJsonbContainers
    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:
    - PG_RETURN_INT32
    - PG_FREE_IF_COPY
    - PG_GETARG_JSONB_P
    - compareJsonbContainers
    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:
    - PG_RETURN_INT32
    - JB_ROOT_COUNT
    - PG_FREE_IF_COPY
    - JsonbHashScalarValue
    - JsonbIteratorInit
    - elog
    - JsonbIteratorNext
    - PG_GETARG_JSONB_P
    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:
    - JB_ROOT_COUNT
    - PG_FREE_IF_COPY
    - PG_RETURN_UINT64
    - JsonbHashScalarValueExtended
    - PG_GETARG_INT64
    - JsonbIteratorInit
    - elog
    - JsonbIteratorNext
    - PG_GETARG_JSONB_P
    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:
    - mcelem_array_contain_overlap_selec
    - mcelem_array_contained_selec
    - memset
    - HeapTupleIsValid
    - statistic_proc_security_check
    - free_attstatsslot
    - IsA
    - GETSTRUCT
    - lookup_type_cache
    - get_attstatsslot
    - OidIsValid
    - examine_variable
    - CLAMP_PROBABILITY
    - ReleaseVariableStats
    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:
    - get_base_element_type
    - calc_arraycontsel
    - DEFAULT_SEL
    - PG_GETARG_POINTER
    - get_restriction_variable
    - IsA
    - PG_GETARG_OID
    - PG_GETARG_INT32
    - CLAMP_PROBABILITY
    - ReleaseVariableStats
    - PG_RETURN_FLOAT8
    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:
    - pfree
    - mcelem_array_selec
    - DatumGetArrayTypeP
    - DEFAULT_SEL
    - memset
    - HeapTupleIsValid
    - statistic_proc_security_check
    - free_attstatsslot
    - GETSTRUCT
    - lookup_type_cache
    - PointerGetDatum
    - get_attstatsslot
    - OidIsValid
    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:
    - deconstruct_array
    - mcelem_array_contain_overlap_selec
    - pfree
    - mcelem_array_contained_selec
    - elog
    - qsort_arg
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity mcelem_array_selec(ArrayType *array, TypeCacheEntry *typentry,\n\t\t\t\t
      \  Datum *mcelem, int nmcelem,\n\t\t\t\t   float4 *numbers, int nnumbers,\n\t\t\t\t
      \  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:557,1
    - Dst: element_compare
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:587,1
    - Dst: find_next_mcelem
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:593,1
    - Dst: element_compare
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:600,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:627,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:640,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: 644
      start: 520
    functionDepth: 1
    functionLinenumber: 520
    functionLinenumberEnd: 644
    functionName: mcelem_array_contain_overlap_selec
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_selfuncs.c
    functionUses: 2
    functionsReached:
    - Min
    - find_next_mcelem
    - floor_log2
    - CLAMP_PROBABILITY
    - element_compare
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity mcelem_array_contain_overlap_selec(Datum *mcelem, int
      nmcelem,\n\t\t\t\t\t\t\t\t   float4 *numbers, int nnumbers,\n\t\t\t\t\t\t\t\t
      \  Datum *array_data, int nitems,\n\t\t\t\t\t\t\t\t   Oid operator, TypeCacheEntry
      *typentry)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:756,1
    - Dst: element_compare
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:766,1
    - Dst: element_compare
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:776,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:808,1
    - Dst: exp
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:832,1
    - Dst: sqrt
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:865,1
    - Dst: qsort
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:868,1
    - Dst: calc_distr
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:878,1
    - Dst: calc_distr
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:879,1
    - Dst: calc_hist
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:882,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:896,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:897,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:898,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:899,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:904,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: 907
      start: 695
    functionDepth: 1
    functionLinenumber: 695
    functionLinenumberEnd: 907
    functionName: mcelem_array_contained_selec
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_selfuncs.c
    functionUses: 2
    functionsReached:
    - Min
    - sqrt
    - qsort
    - pfree
    - palloc
    - calc_distr
    - exp
    - CLAMP_PROBABILITY
    - calc_hist
    - element_compare
    linkageType: ''
    returnType: Selectivity
    signature: "Selectivity mcelem_array_contained_selec(Datum *mcelem, int nmcelem,\n\t\t\t\t\t\t\t
      float4 *numbers, int nnumbers,\n\t\t\t\t\t\t\t Datum *array_data, int nitems,\n\t\t\t\t\t\t\t
      float4 *hist, int nhist,\n\t\t\t\t\t\t\t Oid operator, TypeCacheEntry *typentry)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:930,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 3
    argNames:
    - hist
    - nhist
    - n
    argTypes:
    - float4*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 920
    functionDepth: 0
    functionLinenumber: 920
    functionLinenumberEnd: 991
    functionName: calc_hist
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_selfuncs.c
    functionUses: 1
    functionsReached:
    - palloc
    linkageType: ''
    returnType: float
    signature: 'float *

      calc_hist(const float4 *hist, int nhist, int n)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:1022,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:1023,1
    - Dst: exp
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:1067,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:1083,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 4
    argNames:
    - p
    - n
    - m
    - rest
    argTypes:
    - float*
    - int
    - int
    - float
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1085
      start: 1009
    functionDepth: 0
    functionLinenumber: 1009
    functionLinenumberEnd: 1085
    functionName: calc_distr
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_selfuncs.c
    functionUses: 1
    functionsReached:
    - pfree
    - palloc
    - exp
    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: 1120
      start: 1088
    functionDepth: 0
    functionLinenumber: 1088
    functionLinenumberEnd: 1120
    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:1141,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: 1154
      start: 1129
    functionDepth: 0
    functionLinenumber: 1129
    functionLinenumberEnd: 1154
    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(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:1173,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/array_selfuncs.c:1174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - key1
    - key2
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1175
      start: 1164
    functionDepth: 1
    functionLinenumber: 1164
    functionLinenumberEnd: 1175
    functionName: element_compare
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_selfuncs.c
    functionUses: 3
    functionsReached:
    - DatumGetInt32
    - FunctionCall2Coll
    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: 1192
      start: 1180
    functionDepth: 0
    functionLinenumber: 1180
    functionLinenumberEnd: 1192
    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: 2
    BranchProfiles: []
    Callsites:
    - Dst: utf8_to_unicode
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:50,1
    - Dst: pg_u_isalnum
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:52,1
    - Dst: unicode_utf8len
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:59,1
    - Dst: unicode_utf8len
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:64,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 42
    functionDepth: 4
    functionLinenumber: 42
    functionLinenumberEnd: 68
    functionName: initcap_wbnext
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - pg_u_isalnum
    - utf8_to_unicode
    - unicode_utf8len
    linkageType: ''
    returnType: size_t
    signature: size_t initcap_wbnext(void *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_strlower
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - dest
    - destsize
    - src
    - srclen
    - locale
    argTypes:
    - char*
    - size_t
    - char*
    - ssize_t
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 70
    functionDepth: 2
    functionLinenumber: 70
    functionLinenumberEnd: 76
    functionName: strlower_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - unicode_strlower
    linkageType: ''
    returnType: size_t
    signature: "size_t strlower_builtin(char *dest, size_t destsize, const char *src,
      ssize_t srclen,\n\t\t\t\t pg_locale_t locale)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_strtitle
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - dest
    - destsize
    - src
    - srclen
    - locale
    argTypes:
    - char*
    - size_t
    - char*
    - ssize_t
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 78
    functionDepth: 2
    functionLinenumber: 78
    functionLinenumberEnd: 94
    functionName: strtitle_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - unicode_strtitle
    linkageType: ''
    returnType: size_t
    signature: "size_t strtitle_builtin(char *dest, size_t destsize, const char *src,
      ssize_t srclen,\n\t\t\t\t pg_locale_t locale)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_strupper
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - dest
    - destsize
    - src
    - srclen
    - locale
    argTypes:
    - char*
    - size_t
    - char*
    - ssize_t
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 96
    functionDepth: 2
    functionLinenumber: 96
    functionLinenumberEnd: 102
    functionName: strupper_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - unicode_strupper
    linkageType: ''
    returnType: size_t
    signature: "size_t strupper_builtin(char *dest, size_t destsize, const char *src,
      ssize_t srclen,\n\t\t\t\t pg_locale_t locale)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_strfold
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - dest
    - destsize
    - src
    - srclen
    - locale
    argTypes:
    - char*
    - size_t
    - char*
    - ssize_t
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 104
    functionDepth: 2
    functionLinenumber: 104
    functionLinenumberEnd: 110
    functionName: strfold_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - unicode_strfold
    linkageType: ''
    returnType: size_t
    signature: "size_t strfold_builtin(char *dest, size_t destsize, const char *src,
      ssize_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:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wc
    - locale
    argTypes:
    - pg_wchar
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 112
    functionDepth: 3
    functionLinenumber: 112
    functionLinenumberEnd: 116
    functionName: wc_isdigit_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - 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:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wc
    - locale
    argTypes:
    - pg_wchar
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 118
    functionDepth: 3
    functionLinenumber: 118
    functionLinenumberEnd: 122
    functionName: wc_isalpha_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - 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:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wc
    - locale
    argTypes:
    - pg_wchar
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 124
    functionDepth: 4
    functionLinenumber: 124
    functionLinenumberEnd: 128
    functionName: wc_isalnum_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - 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:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wc
    - locale
    argTypes:
    - pg_wchar
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 130
    functionDepth: 3
    functionLinenumber: 130
    functionLinenumberEnd: 134
    functionName: wc_isupper_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - 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:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wc
    - locale
    argTypes:
    - pg_wchar
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 136
    functionDepth: 3
    functionLinenumber: 136
    functionLinenumberEnd: 140
    functionName: wc_islower_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - 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:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wc
    - locale
    argTypes:
    - pg_wchar
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 142
    functionDepth: 3
    functionLinenumber: 142
    functionLinenumberEnd: 146
    functionName: wc_isgraph_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - 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:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wc
    - locale
    argTypes:
    - pg_wchar
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 148
    functionDepth: 4
    functionLinenumber: 148
    functionLinenumberEnd: 152
    functionName: wc_isprint_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - 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:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wc
    - locale
    argTypes:
    - pg_wchar
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 154
    functionDepth: 4
    functionLinenumber: 154
    functionLinenumberEnd: 158
    functionName: wc_ispunct_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - 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:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wc
    - locale
    argTypes:
    - pg_wchar
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 160
    functionDepth: 3
    functionLinenumber: 160
    functionLinenumberEnd: 164
    functionName: wc_isspace_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - pg_u_isspace
    linkageType: ''
    returnType: bool
    signature: bool wc_isspace_builtin(pg_wchar wc, pg_locale_t locale)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:169,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    argCount: 2
    argNames:
    - ch
    - locale
    argTypes:
    - char
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 171
    functionName: char_is_cased_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: bool
    signature: bool char_is_cased_builtin(char ch, pg_locale_t locale)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_uppercase_simple
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wc
    - locale
    argTypes:
    - pg_wchar
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 173
    functionDepth: 2
    functionLinenumber: 173
    functionLinenumberEnd: 177
    functionName: wc_toupper_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - unicode_uppercase_simple
    linkageType: ''
    returnType: pg_wchar
    signature: pg_wchar wc_toupper_builtin(pg_wchar wc, pg_locale_t locale)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_lowercase_simple
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wc
    - locale
    argTypes:
    - pg_wchar
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 179
    functionDepth: 2
    functionLinenumber: 179
    functionLinenumberEnd: 183
    functionName: wc_tolower_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - unicode_lowercase_simple
    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:215,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:215,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:216,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:217,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:218,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:220,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:221,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:228,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:228,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:229,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:230,1
    - Dst: SysCacheGetAttrNotNull
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:231,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:233,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:234,1
    - Dst: builtin_validate_locale
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:237,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:237,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:239,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:241,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:242,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:245,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - collid
    - context
    argTypes:
    - Oid
    - MemoryContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 250
    functionName: create_pg_locale_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - MemoryContextStrdup
    - builtin_validate_locale
    - ReleaseSysCache
    - GetDatabaseEncoding
    - HeapTupleIsValid
    - TextDatumGetCString
    - SysCacheGetAttrNotNull
    - MemoryContextAllocZero
    - SearchSysCache1
    - elog
    - strcmp
    - ObjectIdGetDatum
    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:262,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:264,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:266,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:269,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:270,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c:271,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - collcollate
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 252
    functionDepth: 2
    functionLinenumber: 252
    functionLinenumberEnd: 275
    functionName: get_collation_actual_version_builtin
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_locale_builtin.c
    functionUses: 0
    functionsReached:
    - errmsg
    - strcmp
    - errcode
    - ereport
    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:52,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:54,1
    - Dst: pg_strtoint64_safe
      Src: /src/postgres/src/backend/utils/adt/int8.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 55
    functionName: int8in
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - pg_strtoint64_safe
    - PG_RETURN_INT64
    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:63,1
    - Dst: pg_lltoa
      Src: /src/postgres/src/backend/utils/adt/int8.c:68,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/int8.c:74,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/int8.c:75,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/int8.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 77
    functionName: int8out
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_CSTRING
    - pg_lltoa
    - memcpy
    - palloc
    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:85,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:87,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/int8.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 82
    functionDepth: 2
    functionLinenumber: 82
    functionLinenumberEnd: 88
    functionName: int8recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_INT64
    - 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:96,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/int8.c:99,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/int8.c:100,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/int8.c:101,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/int8.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 93
    functionDepth: 4
    functionLinenumber: 93
    functionLinenumberEnd: 102
    functionName: int8send
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - pq_endtypsend
    - PG_RETURN_BYTEA_P
    - pq_sendint64
    - pq_begintypsend
    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:115,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:116,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.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: 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:124,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:125,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.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: 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:133,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:134,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.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: 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:142,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:143,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.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: 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:151,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:152,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.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: 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:160,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:161,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.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: 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:172,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:173,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 176
    functionName: int84eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:181,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:182,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 185
    functionName: int84ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:190,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:191,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 194
    functionName: int84lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:199,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:200,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 203
    functionName: int84gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:208,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:209,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 212
    functionName: int84le
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:217,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:218,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 221
    functionName: int84ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:229,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:230,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 233
    functionName: int48eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:238,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:239,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.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: int48ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:247,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:248,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.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: int48lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:256,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:257,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.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: int48gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:265,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:266,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.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: int48le
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:274,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:275,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.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: int48ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:286,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:287,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 283
    functionDepth: 1
    functionLinenumber: 283
    functionLinenumberEnd: 290
    functionName: int82eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_GETARG_INT16
    - 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:295,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:296,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 292
    functionDepth: 1
    functionLinenumber: 292
    functionLinenumberEnd: 299
    functionName: int82ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_GETARG_INT16
    - 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:304,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:305,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 308
    functionName: int82lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_GETARG_INT16
    - 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:313,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:314,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 317
    functionName: int82gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_GETARG_INT16
    - 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:322,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:323,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 319
    functionDepth: 1
    functionLinenumber: 319
    functionLinenumberEnd: 326
    functionName: int82le
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_GETARG_INT16
    - 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:331,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:332,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 328
    functionDepth: 1
    functionLinenumber: 328
    functionLinenumberEnd: 335
    functionName: int82ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_GETARG_INT16
    - 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:343,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:344,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 347
    functionName: int28eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_GETARG_INT16
    - 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:352,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:353,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 356
    functionName: int28ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_GETARG_INT16
    - 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:361,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:362,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 365
    functionName: int28lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_GETARG_INT16
    - 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:370,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:371,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 374
    functionName: int28gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_GETARG_INT16
    - 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:379,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:380,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 376
    functionDepth: 1
    functionLinenumber: 376
    functionLinenumberEnd: 383
    functionName: int28le
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_GETARG_INT16
    - 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:388,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:389,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.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: int28ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_GETARG_INT16
    - 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:403,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:404,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:405,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:406,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:407,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:411,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:412,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:413,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:418,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:418,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:425,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:429,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/int8.c:431,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 400
    functionDepth: 2
    functionLinenumber: 400
    functionLinenumberEnd: 432
    functionName: in_range_int8_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    - ereport
    - unlikely
    - pg_add_s64_overflow
    - PG_GETARG_BOOL
    - errcode
    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:442,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:445,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:446,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:447,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:448,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:450,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 439
    functionDepth: 2
    functionLinenumber: 439
    functionLinenumberEnd: 451
    functionName: int8um
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - unlikely
    - PG_RETURN_INT64
    - errcode
    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:456,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:458,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 453
    functionDepth: 1
    functionLinenumber: 453
    functionLinenumberEnd: 459
    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:464,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:465,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:468,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:468,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:469,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:470,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:471,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:472,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 461
    functionDepth: 2
    functionLinenumber: 461
    functionLinenumberEnd: 473
    functionName: int8pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - unlikely
    - pg_add_s64_overflow
    - PG_RETURN_INT64
    - errcode
    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:478,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:479,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:482,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:482,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:483,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:484,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:485,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:486,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 475
    functionDepth: 2
    functionLinenumber: 475
    functionLinenumberEnd: 487
    functionName: int8mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - unlikely
    - pg_sub_s64_overflow
    - PG_RETURN_INT64
    - errcode
    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:492,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:493,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:496,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:496,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:497,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:498,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:499,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:500,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 489
    functionDepth: 2
    functionLinenumber: 489
    functionLinenumberEnd: 501
    functionName: int8mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - unlikely
    - pg_mul_s64_overflow
    - PG_RETURN_INT64
    - errcode
    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:506,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:507,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:512,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:513,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:514,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/int8.c:516,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:527,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:528,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:529,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:530,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:532,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:539,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 503
    functionDepth: 2
    functionLinenumber: 503
    functionLinenumberEnd: 540
    functionName: int8div
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - unlikely
    - PG_RETURN_NULL
    - PG_RETURN_INT64
    - errcode
    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:548,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:551,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:552,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:553,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:554,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:556,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 545
    functionDepth: 2
    functionLinenumber: 545
    functionLinenumberEnd: 557
    functionName: int8abs
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - unlikely
    - PG_RETURN_INT64
    - errcode
    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:565,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:566,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:568,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:570,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:571,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:572,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/int8.c:574,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:583,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:587,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 562
    functionDepth: 2
    functionLinenumber: 562
    functionLinenumberEnd: 588
    functionName: int8mod
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - unlikely
    - PG_RETURN_NULL
    - PG_RETURN_INT64
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum int8mod(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:634,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:635,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:636,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - int64
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 605
    functionDepth: 2
    functionLinenumber: 605
    functionLinenumberEnd: 664
    functionName: int8gcd_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - ereport
    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:669,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:670,1
    - Dst: int8gcd_internal
      Src: /src/postgres/src/backend/utils/adt/int8.c:673,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:675,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 666
    functionDepth: 3
    functionLinenumber: 666
    functionLinenumberEnd: 676
    functionName: int8gcd
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT64
    - PG_GETARG_INT64
    - int8gcd_internal
    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:684,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:685,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:695,1
    - Dst: int8gcd_internal
      Src: /src/postgres/src/backend/utils/adt/int8.c:698,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:701,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:701,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:702,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:703,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:704,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:707,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:708,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:709,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:710,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:715,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 681
    functionDepth: 3
    functionLinenumber: 681
    functionLinenumberEnd: 716
    functionName: int8lcm
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - unlikely
    - pg_mul_s64_overflow
    - int8gcd_internal
    - PG_RETURN_INT64
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum int8lcm(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/int8.c:729,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/int8.c:731,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_POINTER
      Src: /src/postgres/src/backend/utils/adt/int8.c:738,1
    - 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_add_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: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 718
    functionDepth: 2
    functionLinenumber: 718
    functionLinenumberEnd: 754
    functionName: int8inc
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_POINTER
    - PG_GETARG_INT64
    - ereport
    - AggCheckCallContext
    - unlikely
    - pg_add_s64_overflow
    - PG_RETURN_INT64
    - errcode
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum int8inc(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/int8.c:767,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/int8.c:769,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:771,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:771,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:772,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:773,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:774,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/int8.c:775,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:781,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:784,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:784,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:785,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:786,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:787,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:789,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 756
    functionDepth: 2
    functionLinenumber: 756
    functionLinenumberEnd: 791
    functionName: int8dec
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_POINTER
    - PG_GETARG_INT64
    - ereport
    - AggCheckCallContext
    - unlikely
    - pg_sub_s64_overflow
    - PG_RETURN_INT64
    - errcode
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum int8dec(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: int8inc
      Src: /src/postgres/src/backend/utils/adt/int8.c:806,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 803
    functionDepth: 3
    functionLinenumber: 803
    functionLinenumberEnd: 807
    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:812,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 813
      start: 809
    functionDepth: 3
    functionLinenumber: 809
    functionLinenumberEnd: 813
    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:818,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 815
    functionDepth: 3
    functionLinenumber: 815
    functionLinenumberEnd: 819
    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: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/int8.c:828,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int8.c:830,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/int8.c:858,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/int8.c:861,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 825
    functionDepth: 1
    functionLinenumber: 825
    functionLinenumberEnd: 862
    functionName: int8inc_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - 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:868,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:869,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:874,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 875
      start: 865
    functionDepth: 1
    functionLinenumber: 865
    functionLinenumberEnd: 875
    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:880,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:881,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:886,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 877
    functionDepth: 1
    functionLinenumber: 877
    functionLinenumberEnd: 887
    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:892,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:893,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:896,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:896,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:897,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:898,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:899,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:900,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 889
    functionDepth: 2
    functionLinenumber: 889
    functionLinenumberEnd: 901
    functionName: int84pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - unlikely
    - pg_add_s64_overflow
    - PG_GETARG_INT32
    - PG_RETURN_INT64
    - errcode
    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:906,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:907,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:910,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:910,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:911,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:912,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:913,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:914,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 903
    functionDepth: 2
    functionLinenumber: 903
    functionLinenumberEnd: 915
    functionName: int84mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - unlikely
    - PG_GETARG_INT32
    - pg_sub_s64_overflow
    - PG_RETURN_INT64
    - errcode
    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:920,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:921,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:924,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:924,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:925,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:926,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:927,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:928,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 917
    functionDepth: 2
    functionLinenumber: 917
    functionLinenumberEnd: 929
    functionName: int84mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - unlikely
    - pg_mul_s64_overflow
    - PG_GETARG_INT32
    - PG_RETURN_INT64
    - errcode
    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:934,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:935,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:940,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:941,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:942,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/int8.c:944,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:955,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:956,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:957,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:958,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:960,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:967,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 931
    functionDepth: 2
    functionLinenumber: 931
    functionLinenumberEnd: 968
    functionName: int84div
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - unlikely
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    - PG_RETURN_INT64
    - errcode
    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:973,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:974,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:977,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:977,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:978,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:979,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:980,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:981,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 970
    functionDepth: 2
    functionLinenumber: 970
    functionLinenumberEnd: 982
    functionName: int48pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - unlikely
    - pg_add_s64_overflow
    - PG_GETARG_INT32
    - PG_RETURN_INT64
    - errcode
    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:987,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:988,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:991,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:991,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:992,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:993,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:994,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:995,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 996
      start: 984
    functionDepth: 2
    functionLinenumber: 984
    functionLinenumberEnd: 996
    functionName: int48mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - unlikely
    - PG_GETARG_INT32
    - pg_sub_s64_overflow
    - PG_RETURN_INT64
    - errcode
    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:1001,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1002,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1005,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:1005,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1006,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1007,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1008,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1009,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1010
      start: 998
    functionDepth: 2
    functionLinenumber: 998
    functionLinenumberEnd: 1010
    functionName: int48mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - unlikely
    - pg_mul_s64_overflow
    - PG_GETARG_INT32
    - PG_RETURN_INT64
    - errcode
    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:1015,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1016,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1018,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1020,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1021,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1022,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/int8.c:1024,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1028,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1029
      start: 1012
    functionDepth: 2
    functionLinenumber: 1012
    functionLinenumberEnd: 1029
    functionName: int48div
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - unlikely
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    - PG_RETURN_INT64
    - errcode
    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:1034,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:1035,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1038,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:1038,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1039,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1040,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1041,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1042,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1043
      start: 1031
    functionDepth: 2
    functionLinenumber: 1031
    functionLinenumberEnd: 1043
    functionName: int82pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - unlikely
    - PG_GETARG_INT16
    - pg_add_s64_overflow
    - PG_RETURN_INT64
    - errcode
    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:1048,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:1049,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1052,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:1052,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1053,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1054,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1055,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1056,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1045
    functionDepth: 2
    functionLinenumber: 1045
    functionLinenumberEnd: 1057
    functionName: int82mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - unlikely
    - PG_GETARG_INT16
    - pg_sub_s64_overflow
    - PG_RETURN_INT64
    - errcode
    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:1062,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:1063,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1066,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:1066,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1067,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1068,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1069,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1070,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1071
      start: 1059
    functionDepth: 2
    functionLinenumber: 1059
    functionLinenumberEnd: 1071
    functionName: int82mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - unlikely
    - pg_mul_s64_overflow
    - PG_GETARG_INT16
    - PG_RETURN_INT64
    - errcode
    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:1076,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:1077,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1080,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1082,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1083,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1084,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/int8.c:1086,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1097,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1098,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1099,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1100,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1102,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1109,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1110
      start: 1073
    functionDepth: 2
    functionLinenumber: 1073
    functionLinenumberEnd: 1110
    functionName: int82div
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - unlikely
    - PG_GETARG_INT16
    - PG_RETURN_NULL
    - PG_RETURN_INT64
    - errcode
    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:1115,1
    - Dst: PG_GETARG_INT64
      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: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:1119,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1120,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1121,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1122,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1124
      start: 1112
    functionDepth: 2
    functionLinenumber: 1112
    functionLinenumberEnd: 1124
    functionName: int28pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - unlikely
    - PG_GETARG_INT16
    - pg_add_s64_overflow
    - PG_RETURN_INT64
    - errcode
    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:1129,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1130,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1133,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:1133,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1134,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1135,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1136,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1137,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1138
      start: 1126
    functionDepth: 2
    functionLinenumber: 1126
    functionLinenumberEnd: 1138
    functionName: int28mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - unlikely
    - PG_GETARG_INT16
    - pg_sub_s64_overflow
    - PG_RETURN_INT64
    - errcode
    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:1143,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1144,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1147,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:1147,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1148,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1149,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1150,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1151,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1152
      start: 1140
    functionDepth: 2
    functionLinenumber: 1140
    functionLinenumberEnd: 1152
    functionName: int28mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - unlikely
    - pg_mul_s64_overflow
    - PG_GETARG_INT16
    - PG_RETURN_INT64
    - errcode
    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:1157,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1158,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1160,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1162,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1163,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1164,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/int8.c:1166,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1170,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1171
      start: 1154
    functionDepth: 2
    functionLinenumber: 1154
    functionLinenumberEnd: 1171
    functionName: int28div
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - unlikely
    - PG_GETARG_INT16
    - PG_RETURN_NULL
    - PG_RETURN_INT64
    - errcode
    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:1186,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1187,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.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: 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:1195,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1196,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.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: 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:1204,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1205,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1208
      start: 1201
    functionDepth: 1
    functionLinenumber: 1201
    functionLinenumberEnd: 1208
    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:1213,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1216
      start: 1210
    functionDepth: 1
    functionLinenumber: 1210
    functionLinenumberEnd: 1216
    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:1221,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:1222,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1225
      start: 1218
    functionDepth: 1
    functionLinenumber: 1218
    functionLinenumberEnd: 1225
    functionName: int8shl
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT64
    - PG_GETARG_INT64
    - PG_GETARG_INT32
    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:1230,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:1231,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1234
      start: 1227
    functionDepth: 1
    functionLinenumber: 1227
    functionLinenumberEnd: 1234
    functionName: int8shr
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT64
    - PG_GETARG_INT64
    - PG_GETARG_INT32
    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:1243,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1245,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1246
      start: 1240
    functionDepth: 1
    functionLinenumber: 1240
    functionLinenumberEnd: 1246
    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:1251,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1253,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1253,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1254,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1255,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1256,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/int8.c:1258,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1259
      start: 1248
    functionDepth: 2
    functionLinenumber: 1248
    functionLinenumberEnd: 1259
    functionName: int84
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_INT32
    - PG_GETARG_INT64
    - ereport
    - unlikely
    - errcode
    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:1264,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1267
      start: 1261
    functionDepth: 1
    functionLinenumber: 1261
    functionLinenumberEnd: 1267
    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:1272,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1274,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1274,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1275,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1276,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1277,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/int8.c:1279,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1280
      start: 1269
    functionDepth: 2
    functionLinenumber: 1269
    functionLinenumberEnd: 1280
    functionName: int82
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - PG_RETURN_INT16
    - unlikely
    - errcode
    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:1285,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/int8.c:1290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1291
      start: 1282
    functionDepth: 1
    functionLinenumber: 1282
    functionLinenumberEnd: 1291
    functionName: i8tod
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_FLOAT8
    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:1299,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/int8.c:1306,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1309,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/int8.c:1309,1
    - Dst: FLOAT8_FITS_IN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1309,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1310,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1311,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1312,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1314,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1315
      start: 1296
    functionDepth: 2
    functionLinenumber: 1296
    functionLinenumberEnd: 1315
    functionName: dtoi8
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - isnan
    - errcode
    - errmsg
    - rint
    - PG_GETARG_FLOAT8
    - ereport
    - unlikely
    - PG_RETURN_INT64
    - FLOAT8_FITS_IN_INT64
    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:1320,1
    - Dst: PG_RETURN_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/int8.c:1325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1326
      start: 1317
    functionDepth: 1
    functionLinenumber: 1317
    functionLinenumberEnd: 1326
    functionName: i8tof
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT4
    - PG_GETARG_INT64
    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:1334,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/int8.c:1341,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1344,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/int8.c:1344,1
    - Dst: FLOAT4_FITS_IN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1344,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1345,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1346,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1347,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1349,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1350
      start: 1331
    functionDepth: 2
    functionLinenumber: 1331
    functionLinenumberEnd: 1350
    functionName: ftoi8
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - isnan
    - errmsg
    - FLOAT4_FITS_IN_INT64
    - rint
    - ereport
    - unlikely
    - PG_RETURN_INT64
    - PG_GETARG_FLOAT4
    - errcode
    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:1355,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1357,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/int8.c:1357,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1358,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1359,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1360,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/int8.c:1362,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1363
      start: 1352
    functionDepth: 2
    functionLinenumber: 1352
    functionLinenumberEnd: 1363
    functionName: i8tooid
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_INT64
    - ereport
    - PG_RETURN_OID
    - unlikely
    - errcode
    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:1368,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1370,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1371
      start: 1365
    functionDepth: 1
    functionLinenumber: 1365
    functionLinenumberEnd: 1371
    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: generate_series_step_int8
      Src: /src/postgres/src/backend/utils/adt/int8.c:1379,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1380
      start: 1376
    functionDepth: 1
    functionLinenumber: 1376
    functionLinenumberEnd: 1380
    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:1391,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1393,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1394,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/int8.c:1398,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1399,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/int8.c:1401,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/int8.c:1402,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/int8.c:1403,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/int8.c:1406,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/int8.c:1411,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/int8.c:1414,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/int8.c:1425,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/int8.c:1429,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/int8.c:1444,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/int8.c:1448,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/utils/adt/int8.c:1448,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/int8.c:1452,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1453
      start: 1382
    functionDepth: 2
    functionLinenumber: 1382
    functionLinenumberEnd: 1453
    functionName: generate_series_step_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 1
    functionsReached:
    - errmsg
    - SRF_PERCALL_SETUP
    - MemoryContextSwitchTo
    - PG_GETARG_INT64
    - Int64GetDatum
    - ereport
    - pg_add_s64_overflow
    - SRF_RETURN_DONE
    - SRF_FIRSTCALL_INIT
    - PG_NARGS
    - SRF_IS_FIRSTCALL
    - palloc
    - SRF_RETURN_NEXT
    - errcode
    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:1461,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int8.c:1464,1
    - Dst: is_funcclause
      Src: /src/postgres/src/backend/utils/adt/int8.c:1469,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/utils/adt/int8.c:1477,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/int8.c:1477,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/utils/adt/int8.c:1478,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/utils/adt/int8.c:1478,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/int8.c:1479,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/utils/adt/int8.c:1480,1
    - Dst: lthird
      Src: /src/postgres/src/backend/utils/adt/int8.c:1480,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int8.c:1490,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int8.c:1492,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int8.c:1494,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int8.c:1500,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int8.c:1501,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/int8.c:1502,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1508,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1509,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/utils/adt/int8.c:1510,1
    - Dst: floor
      Src: /src/postgres/src/backend/utils/adt/int8.c:1515,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/int8.c:1522,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1523
      start: 1458
    functionDepth: 2
    functionLinenumber: 1458
    functionLinenumberEnd: 1523
    functionName: generate_series_int8_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/int8.c
    functionUses: 0
    functionsReached:
    - estimate_expression_value
    - floor
    - linitial
    - PG_GETARG_POINTER
    - is_funcclause
    - IsA
    - lsecond
    - list_length
    - lthird
    - DatumGetInt64
    - 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:83,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/misc.c:91,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/misc.c:91,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/misc.c:98,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/misc.c:108,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/misc.c:108,1
    - Dst: get_base_element_type
      Src: /src/postgres/src/backend/utils/adt/misc.c:108,1
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/misc.c:108,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/misc.c:111,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/misc.c:114,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/utils/adt/misc.c:115,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/utils/adt/misc.c:116,1
    - Dst: ARR_NULLBITMAP
      Src: /src/postgres/src/backend/utils/adt/misc.c:119,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/misc.c:144,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/misc.c:146,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/misc.c:150,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 3
    argNames:
    - fcinfo
    - nargs
    - nulls
    argTypes:
    - FunctionCallInfo
    - int32*
    - int32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 75
    functionDepth: 2
    functionLinenumber: 75
    functionLinenumberEnd: 155
    functionName: count_nulls
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - get_base_element_type
    - Assert
    - ARR_DIMS
    - get_fn_expr_variadic
    - ARR_NDIM
    - get_fn_expr_argtype
    - PG_ARGISNULL
    - ARR_NULLBITMAP
    - ArrayGetNItems
    - OidIsValid
    - PG_NARGS
    - PG_GETARG_ARRAYTYPE_P
    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:167,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/misc.c:168,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/misc.c:170,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 161
    functionDepth: 3
    functionLinenumber: 161
    functionLinenumberEnd: 171
    functionName: pg_num_nulls
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - count_nulls
    - PG_RETURN_NULL
    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:183,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/misc.c:184,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/misc.c:186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 177
    functionDepth: 3
    functionLinenumber: 177
    functionLinenumberEnd: 187
    functionName: pg_num_nonnulls
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - count_nulls
    - PG_RETURN_NULL
    linkageType: ''
    returnType: Datum
    signature: Datum pg_num_nonnulls(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/misc.c:199,1
    - Dst: namestrcpy
      Src: /src/postgres/src/backend/utils/adt/misc.c:201,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/utils/adt/misc.c:201,1
    - Dst: PG_RETURN_NAME
      Src: /src/postgres/src/backend/utils/adt/misc.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 203
    functionName: current_database
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 1
    functionsReached:
    - get_database_name
    - palloc
    - namestrcpy
    - PG_RETURN_NAME
    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:216,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/misc.c:216,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/misc.c:218,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 219
    functionName: current_query
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - cstring_to_text
    - PG_RETURN_NULL
    - 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:226,1
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/utils/adt/misc.c:232,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:236,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:237,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/utils/adt/misc.c:245,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/utils/adt/misc.c:248,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:254,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/adt/misc.c:255,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:256,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:258,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:259,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/utils/adt/misc.c:264,1
    - Dst: atooid
      Src: /src/postgres/src/backend/utils/adt/misc.c:266,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/utils/adt/misc.c:278,1
    - Dst: directory_is_empty
      Src: /src/postgres/src/backend/utils/adt/misc.c:279,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/misc.c:280,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:285,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/utils/adt/misc.c:288,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/utils/adt/misc.c:292,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 223
    functionDepth: 6
    functionLinenumber: 223
    functionLinenumberEnd: 294
    functionName: pg_tablespace_databases
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - tuplestore_putvalues
    - ReadDir
    - AllocateDir
    - atooid
    - FreeDir
    - ereport
    - PG_GETARG_OID
    - InitMaterializedSRF
    - directory_is_empty
    - ObjectIdGetDatum
    - psprintf
    - errcode_for_file_access
    linkageType: ''
    returnType: Datum
    signature: Datum pg_tablespace_databases(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/misc.c:303,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/misc.c:322,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/misc.c:322,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/misc.c:328,1
    - Dst: lstat
      Src: /src/postgres/src/backend/utils/adt/misc.c:336,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:338,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/adt/misc.c:339,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:340,1
    - Dst: S_ISLNK
      Src: /src/postgres/src/backend/utils/adt/misc.c:344,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/misc.c:345,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/misc.c:345,1
    - Dst: readlink
      Src: /src/postgres/src/backend/utils/adt/misc.c:350,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:352,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/adt/misc.c:353,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:354,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:357,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/misc.c:358,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:359,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/misc.c:363,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/misc.c:363,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 300
    functionDepth: 2
    functionLinenumber: 300
    functionLinenumberEnd: 364
    functionName: pg_tablespace_location
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - errmsg
    - lstat
    - S_ISLNK
    - snprintf
    - ereport
    - PG_GETARG_OID
    - readlink
    - PG_RETURN_TEXT_P
    - cstring_to_text
    - errcode
    - errcode_for_file_access
    linkageType: ''
    returnType: Datum
    signature: Datum pg_tablespace_location(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/misc.c:372,1
    - Dst: GetNowFloat
      Src: /src/postgres/src/backend/utils/adt/misc.c:389,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/adt/misc.c:396,1
    - Dst: GetNowFloat
      Src: /src/postgres/src/backend/utils/adt/misc.c:398,1
    - Dst: ceil
      Src: /src/postgres/src/backend/utils/adt/misc.c:402,1
    - Dst: WaitLatch
      Src: /src/postgres/src/backend/utils/adt/misc.c:406,1
    - Dst: ResetLatch
      Src: /src/postgres/src/backend/utils/adt/misc.c:410,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/misc.c:413,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 369
    functionDepth: 1
    functionLinenumber: 369
    functionLinenumberEnd: 414
    functionName: pg_sleep
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - ResetLatch
    - CHECK_FOR_INTERRUPTS
    - PG_RETURN_VOID
    - ceil
    - PG_GETARG_FLOAT8
    - GetNowFloat
    - WaitLatch
    linkageType: ''
    returnType: Datum
    signature: Datum pg_sleep(PG_FUNCTION_ARGS)
  - 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: GetNowFloat
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GetNowFloat()
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/utils/adt/misc.c:422,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/misc.c:427,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/misc.c:428,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/utils/adt/misc.c:430,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/misc.c:431,1
    - Dst: TupleDescGetAttInMetadata
      Src: /src/postgres/src/backend/utils/adt/misc.c:433,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/misc.c:435,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/misc.c:438,1
    - Dst: unconstify
      Src: /src/postgres/src/backend/utils/adt/misc.c:446,1
    - Dst: GetScanKeyword
      Src: /src/postgres/src/backend/utils/adt/misc.c:447,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/adt/misc.c:454,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/adt/misc.c:458,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/adt/misc.c:462,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/adt/misc.c:466,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/adt/misc.c:477,1
    - Dst: _
      Src: /src/postgres/src/backend/utils/adt/misc.c:482,1
    - Dst: BuildTupleFromCStrings
      Src: /src/postgres/src/backend/utils/adt/misc.c:485,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/misc.c:487,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:487,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/misc.c:490,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 46
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 417
    functionDepth: 6
    functionLinenumber: 417
    functionLinenumberEnd: 491
    functionName: pg_get_keywords
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - SRF_PERCALL_SETUP
    - TupleDescGetAttInMetadata
    - HeapTupleGetDatum
    - MemoryContextSwitchTo
    - elog
    - unconstify
    - get_call_result_type
    - SRF_FIRSTCALL_INIT
    - _
    - SRF_IS_FIRSTCALL
    - GetScanKeyword
    - BuildTupleFromCStrings
    - SRF_RETURN_NEXT
    - SRF_RETURN_DONE
    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:501,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/misc.c:506,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/misc.c:507,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/utils/adt/misc.c:509,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/misc.c:510,1
    - Dst: BlessTupleDesc
      Src: /src/postgres/src/backend/utils/adt/misc.c:511,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/misc.c:519,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/utils/adt/misc.c:520,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/misc.c:523,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/misc.c:526,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/utils/adt/misc.c:529,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/misc.c:536,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:538,1
    - Dst: FunctionCall3
      Src: /src/postgres/src/backend/utils/adt/misc.c:539,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:540,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:541,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:542,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:543,1
    - Dst: FunctionCall3
      Src: /src/postgres/src/backend/utils/adt/misc.c:544,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:545,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:546,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:547,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:548,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:549,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/utils/adt/misc.c:551,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/misc.c:553,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:553,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/misc.c:556,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 495
    functionDepth: 5
    functionLinenumber: 495
    functionLinenumberEnd: 557
    functionName: pg_get_catalog_foreign_keys
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - HeapTupleGetDatum
    - MemoryContextSwitchTo
    - lengthof
    - BoolGetDatum
    - SRF_FIRSTCALL_INIT
    - SRF_RETURN_DONE
    - SRF_RETURN_NEXT
    - Int32GetDatum
    - CStringGetDatum
    - get_call_result_type
    - SRF_PERCALL_SETUP
    - heap_form_tuple
    - fmgr_info
    - elog
    - FunctionCall3
    - SRF_IS_FIRSTCALL
    - palloc
    - ObjectIdGetDatum
    - memset
    - BlessTupleDesc
    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:566,1
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/misc.c:566,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 563
    functionDepth: 1
    functionLinenumber: 563
    functionLinenumberEnd: 567
    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:585,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/misc.c:595,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:595,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/misc.c:596,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/misc.c:597,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/misc.c:598,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/misc.c:602,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/misc.c:607,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/misc.c:610,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 582
    functionDepth: 1
    functionLinenumber: 582
    functionLinenumberEnd: 611
    functionName: pg_basetype
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - SearchSysCache1
    - PG_RETURN_OID
    - PG_GETARG_OID
    - 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:624,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/misc.c:626,1
    - Dst: type_is_collatable
      Src: /src/postgres/src/backend/utils/adt/misc.c:627,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:628,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/misc.c:629,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:630,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/misc.c:631,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/misc.c:633,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/misc.c:635,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/misc.c:636,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/misc.c:636,1
    - Dst: generate_collation_name
      Src: /src/postgres/src/backend/utils/adt/misc.c:636,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 618
    functionDepth: 4
    functionLinenumber: 618
    functionLinenumberEnd: 637
    functionName: pg_collation_for
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - errmsg
    - generate_collation_name
    - format_type_be
    - get_fn_expr_argtype
    - ereport
    - PG_RETURN_NULL
    - type_is_collatable
    - PG_RETURN_TEXT_P
    - PG_GET_COLLATION
    - cstring_to_text
    - errcode
    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:650,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/misc.c:651,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/misc.c:653,1
    - Dst: relation_is_updatable
      Src: /src/postgres/src/backend/utils/adt/misc.c:653,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 647
    functionDepth: 7
    functionLinenumber: 647
    functionLinenumberEnd: 654
    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:667,1
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/misc.c:668,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/misc.c:670,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/misc.c:675,1
    - Dst: relation_is_updatable
      Src: /src/postgres/src/backend/utils/adt/misc.c:677,1
    - Dst: bms_make_singleton
      Src: /src/postgres/src/backend/utils/adt/misc.c:678,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/misc.c:683,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 664
    functionDepth: 7
    functionLinenumber: 664
    functionLinenumberEnd: 684
    functionName: pg_column_is_updatable
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - bms_make_singleton
    - PG_RETURN_BOOL
    - PG_GETARG_OID
    - PG_GETARG_INT16
    - PG_GETARG_BOOL
    - relation_is_updatable
    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:698,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/misc.c:699,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/misc.c:702,1
    - Dst: pg_input_is_valid_common
      Src: /src/postgres/src/backend/utils/adt/misc.c:702,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 695
    functionDepth: 1
    functionLinenumber: 695
    functionLinenumberEnd: 704
    functionName: pg_input_is_valid
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - pg_input_is_valid_common
    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:718,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/misc.c:719,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/utils/adt/misc.c:725,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/misc.c:726,1
    - Dst: pg_input_is_valid_common
      Src: /src/postgres/src/backend/utils/adt/misc.c:731,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/misc.c:733,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/misc.c:738,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/misc.c:739,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/misc.c:740,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/misc.c:742,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:744,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:747,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:752,1
    - Dst: unpack_sql_state
      Src: /src/postgres/src/backend/utils/adt/misc.c:756,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:757,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:760,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/utils/adt/misc.c:760,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 715
    functionDepth: 5
    functionLinenumber: 715
    functionLinenumberEnd: 761
    functionName: pg_input_error_info
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - HeapTupleGetDatum
    - Assert
    - heap_form_tuple
    - pg_input_is_valid_common
    - memset
    - CStringGetTextDatum
    - PG_GETARG_TEXT_PP
    - unpack_sql_state
    - elog
    - get_call_result_type
    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:769,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/misc.c:781,1
    - Dst: get_fn_expr_arg_stable
      Src: /src/postgres/src/backend/utils/adt/misc.c:786,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/misc.c:795,1
    - Dst: parseTypeString
      Src: /src/postgres/src/backend/utils/adt/misc.c:799,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/utils/adt/misc.c:804,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/utils/adt/misc.c:807,1
    - Dst: InputFunctionCallSafe
      Src: /src/postgres/src/backend/utils/adt/misc.c:814,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - fcinfo
    - txt
    - typname
    - escontext
    argTypes:
    - FunctionCallInfo
    - text*
    - text*
    - ErrorSaveContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 820
      start: 764
    functionDepth: 1
    functionLinenumber: 764
    functionLinenumberEnd: 820
    functionName: pg_input_is_valid_common
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 2
    functionsReached:
    - get_fn_expr_arg_stable
    - getTypeInputInfo
    - InputFunctionCallSafe
    - parseTypeString
    - fmgr_info_cxt
    - MemoryContextAlloc
    - text_to_cstring
    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:836,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 1
    argNames:
    - c
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 827
    functionDepth: 1
    functionLinenumber: 827
    functionLinenumberEnd: 839
    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:852,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - c
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 845
    functionDepth: 2
    functionLinenumber: 845
    functionLinenumberEnd: 853
    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:863,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/misc.c:864,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/misc.c:865,1
    - Dst: scanner_isspace
      Src: /src/postgres/src/backend/utils/adt/misc.c:878,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/misc.c:893,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:895,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/misc.c:896,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:897,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/misc.c:898,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/misc.c:899,1
    - Dst: memmove
      Src: /src/postgres/src/backend/utils/adt/misc.c:902,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/misc.c:902,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:909,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/misc.c:910,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:911,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/misc.c:912,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/misc.c:913,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/utils/adt/misc.c:915,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:915,1
    - Dst: is_ident_start
      Src: /src/postgres/src/backend/utils/adt/misc.c:919,1
    - Dst: is_ident_cont
      Src: /src/postgres/src/backend/utils/adt/misc.c:926,1
    - Dst: downcase_identifier
      Src: /src/postgres/src/backend/utils/adt/misc.c:937,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/misc.c:938,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/utils/adt/misc.c:939,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/misc.c:939,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:948,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/misc.c:949,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:950,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/misc.c:951,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/misc.c:952,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:954,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/misc.c:955,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:956,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/misc.c:957,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/misc.c:958,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:960,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/misc.c:961,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:962,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/misc.c:963,1
    - Dst: scanner_isspace
      Src: /src/postgres/src/backend/utils/adt/misc.c:966,1
    - Dst: scanner_isspace
      Src: /src/postgres/src/backend/utils/adt/misc.c:973,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:983,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/misc.c:984,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:985,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/misc.c:986,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/misc.c:991,1
    - Dst: makeArrayResult
      Src: /src/postgres/src/backend/utils/adt/misc.c:991,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 57
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 860
    functionDepth: 3
    functionLinenumber: 860
    functionLinenumberEnd: 992
    functionName: parse_ident
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - makeArrayResult
    - PG_GETARG_BOOL
    - errdetail
    - text_to_cstring
    - strlen
    - cstring_to_text_with_len
    - memmove
    - errmsg
    - PG_RETURN_DATUM
    - downcase_identifier
    - is_ident_cont
    - CStringGetTextDatum
    - PG_GETARG_TEXT_PP
    - is_ident_start
    - ereport
    - accumArrayResult
    - PointerGetDatum
    - scanner_isspace
    - errcode
    - strchr
    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:1007,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/misc.c:1007,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/misc.c:1011,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/misc.c:1011,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/misc.c:1013,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/misc.c:1014,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/misc.c:1015,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:1016,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/misc.c:1017,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:1018,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/misc.c:1019,1
    - Dst: AllocateFile
      Src: /src/postgres/src/backend/utils/adt/misc.c:1022,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/misc.c:1026,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/adt/misc.c:1027,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/misc.c:1028,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/misc.c:1030,1
    - Dst: _setmode
      Src: /src/postgres/src/backend/utils/adt/misc.c:1035,1
    - Dst: _fileno
      Src: /src/postgres/src/backend/utils/adt/misc.c:1035,1
    - Dst: fgets
      Src: /src/postgres/src/backend/utils/adt/misc.c:1042,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/misc.c:1050,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/misc.c:1054,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/misc.c:1061,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/misc.c:1065,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/misc.c:1071,1
    - Dst: FreeFile
      Src: /src/postgres/src/backend/utils/adt/misc.c:1073,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/misc.c:1074,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/misc.c:1074,1
    - Dst: FreeFile
      Src: /src/postgres/src/backend/utils/adt/misc.c:1079,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/misc.c:1081,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1082
      start: 999
    functionDepth: 2
    functionLinenumber: 999
    functionLinenumberEnd: 1082
    functionName: pg_current_logfile
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - errhint
    - AllocateFile
    - text_to_cstring
    - errcode_for_file_access
    - _setmode
    - strcmp
    - cstring_to_text
    - errmsg
    - FreeFile
    - PG_ARGISNULL
    - elog
    - PG_RETURN_TEXT_P
    - PG_NARGS
    - fgets
    - _fileno
    - PG_GETARG_TEXT_PP
    - ereport
    - PG_RETURN_NULL
    - errcode
    - strchr
    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:1094,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1095
      start: 1091
    functionDepth: 3
    functionLinenumber: 1091
    functionLinenumberEnd: 1095
    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:1103,1
    - Dst: table_open
      Src: /src/postgres/src/backend/utils/adt/misc.c:1107,1
    - Dst: RelationGetReplicaIndex
      Src: /src/postgres/src/backend/utils/adt/misc.c:1108,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/misc.c:1109,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/misc.c:1111,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/misc.c:1112,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/misc.c:1114,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1115
      start: 1100
    functionDepth: 3
    functionLinenumber: 1100
    functionLinenumberEnd: 1115
    functionName: pg_get_replica_identity_index
    functionSourceFile: /src/postgres/src/backend/utils/adt/misc.c
    functionUses: 0
    functionsReached:
    - table_open
    - PG_RETURN_OID
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - OidIsValid
    - table_close
    - RelationGetReplicaIndex
    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:1123,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/misc.c:1123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1124
      start: 1120
    functionDepth: 1
    functionLinenumber: 1120
    functionLinenumberEnd: 1124
    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:54,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:55,1
    - Dst: foreach_int
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:57,1
    - Dst: foreach_current_index
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:58,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:58,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:60,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - list
    argTypes:
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 63
    functionName: int_list_to_array
    functionSourceFile: /src/postgres/src/backend/utils/adt/mcxtfuncs.c
    functionUses: 0
    functionsReached:
    - construct_array_builtin
    - foreach_int
    - Int32GetDatum
    - list_length
    - PointerGetDatum
    - foreach_current_index
    - palloc
    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:84,1
    - Dst: MemoryContextIsValid
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:84,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:95,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:98,1
    - Dst: lcons_int
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:99,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:103,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:107,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:116,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:123,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:129,1
    - Dst: pg_mbcliplen
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:137,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:139,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:141,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:165,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:166,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:166,1
    - Dst: int_list_to_array
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:167,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:168,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:169,1
    - Dst: Int64GetDatum
      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: tuplestore_putvalues
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:174,1
    - Dst: list_free
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:175,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: 176
      start: 69
    functionDepth: 6
    functionLinenumber: 69
    functionLinenumberEnd: 176
    functionName: PutMemoryContextsStatsTupleStore
    functionSourceFile: /src/postgres/src/backend/utils/adt/mcxtfuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - tuplestore_putvalues
    - memcpy
    - lcons_int
    - memset
    - CStringGetTextDatum
    - Int32GetDatum
    - Int64GetDatum
    - hash_search
    - list_length
    - elog
    - pg_mbcliplen
    - int_list_to_array
    - MemoryContextIsValid
    - strcmp
    - list_free
    - strlen
    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:195,1
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:200,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:212,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:227,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:230,1
    - Dst: PutMemoryContextsStatsTupleStore
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:232,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:242,1
    - Dst: hash_destroy
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 182
    functionDepth: 7
    functionLinenumber: 182
    functionLinenumberEnd: 248
    functionName: pg_get_backend_memory_contexts
    functionSourceFile: /src/postgres/src/backend/utils/adt/mcxtfuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - hash_create
    - PutMemoryContextsStatsTupleStore
    - hash_destroy
    - list_make1
    - hash_search
    - InitMaterializedSRF
    - lappend
    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:227,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:230,1
    - Dst: PutMemoryContextsStatsTupleStore
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:232,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 217
    functionDepth: 7
    functionLinenumber: 217
    functionLinenumberEnd: 243
    functionName: foreach_ptr
    functionSourceFile: /src/postgres/src/backend/utils/adt/mcxtfuncs.c
    functionUses: 3
    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:266,1
    - Dst: BackendPidGetProc
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:273,1
    - Dst: AuxiliaryPidGetProc
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:275,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:292,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:293,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:294,1
    - Dst: GetNumberFromPGProc
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:297,1
    - Dst: SendProcSignal
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:298,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:301,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:302,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:303,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/mcxtfuncs.c:306,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 263
    functionDepth: 2
    functionLinenumber: 263
    functionLinenumberEnd: 307
    functionName: pg_log_backend_memory_contexts
    functionSourceFile: /src/postgres/src/backend/utils/adt/mcxtfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - BackendPidGetProc
    - PG_RETURN_BOOL
    - ereport
    - AuxiliaryPidGetProc
    - GetNumberFromPGProc
    - PG_GETARG_INT32
    - SendProcSignal
    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
      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
    - palloc
    - string_to_uuid
    - PG_RETURN_UUID_P
    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
    - palloc
    - PG_RETURN_CSTRING
    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:
    - errmsg
    - isxdigit
    - strtoul
    - ereturn
    - memcpy
    - errcode
    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:
    - pq_getmsgbytes
    - PG_GETARG_POINTER
    - memcpy
    - palloc
    - 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:
    - PG_GETARG_UUID_P
    - pq_sendbytes
    - pq_endtypsend
    - PG_RETURN_BYTEA_P
    - pq_begintypsend
    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:
    - uuid_internal_cmp
    - PG_GETARG_UUID_P
    - PG_RETURN_BOOL
    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:
    - uuid_internal_cmp
    - PG_GETARG_UUID_P
    - PG_RETURN_BOOL
    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:
    - uuid_internal_cmp
    - PG_GETARG_UUID_P
    - PG_RETURN_BOOL
    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:
    - uuid_internal_cmp
    - PG_GETARG_UUID_P
    - PG_RETURN_BOOL
    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:
    - uuid_internal_cmp
    - PG_GETARG_UUID_P
    - PG_RETURN_BOOL
    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:
    - uuid_internal_cmp
    - PG_GETARG_UUID_P
    - PG_RETURN_BOOL
    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_RETURN_INT32
    - PG_GETARG_UUID_P
    - uuid_internal_cmp
    linkageType: ''
    returnType: Datum
    signature: Datum uuid_cmp(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/uuid.c:279,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/uuid.c:289,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/uuid.c:291,1
    - Dst: initHyperLogLog
      Src: /src/postgres/src/backend/utils/adt/uuid.c:294,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/uuid.c:303,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/uuid.c:306,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 276
    functionDepth: 2
    functionLinenumber: 276
    functionLinenumberEnd: 307
    functionName: uuid_sortsupport
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - palloc
    - initHyperLogLog
    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:315,1
    - Dst: DatumGetUUIDP
      Src: /src/postgres/src/backend/utils/adt/uuid.c:316,1
    - Dst: uuid_internal_cmp
      Src: /src/postgres/src/backend/utils/adt/uuid.c:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - x
    - y
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 312
    functionDepth: 2
    functionLinenumber: 312
    functionLinenumberEnd: 319
    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:336,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/uuid.c:347,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/uuid.c:364,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/uuid.c:373,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - memtupcount
    - ssup
    argTypes:
    - int
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 327
    functionDepth: 1
    functionLinenumber: 327
    functionLinenumberEnd: 378
    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:391,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/uuid.c:394,1
    - Dst: addHyperLogLog
      Src: /src/postgres/src/backend/utils/adt/uuid.c:407,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/adt/uuid.c:407,1
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/utils/adt/uuid.c:407,1
    - Dst: DatumBigEndianToNative
      Src: /src/postgres/src/backend/utils/adt/uuid.c:418,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - original
    - ssup
    argTypes:
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 387
    functionDepth: 2
    functionLinenumber: 387
    functionLinenumberEnd: 421
    functionName: uuid_abbrev_convert
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - DatumBigEndianToNative
    - addHyperLogLog
    - DatumGetUInt32
    - DatumGetUUIDP
    - memcpy
    - hash_uint32
    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:428,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/uuid.c:429,1
    - Dst: DatumGetUUIDP
      Src: /src/postgres/src/backend/utils/adt/uuid.c:429,1
    - Dst: UUIDPGetDatum
      Src: /src/postgres/src/backend/utils/adt/uuid.c:436,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/uuid.c:441,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - rel
    - existing
    - underflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 423
    functionDepth: 2
    functionLinenumber: 423
    functionLinenumberEnd: 446
    functionName: uuid_decrement
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - pfree
    - UUIDPGetDatum
    - DatumGetUUIDP
    - memcpy
    - palloc
    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:453,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/uuid.c:454,1
    - Dst: DatumGetUUIDP
      Src: /src/postgres/src/backend/utils/adt/uuid.c:454,1
    - Dst: UUIDPGetDatum
      Src: /src/postgres/src/backend/utils/adt/uuid.c:461,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/uuid.c:466,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - rel
    - existing
    - overflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 448
    functionDepth: 2
    functionLinenumber: 448
    functionLinenumberEnd: 471
    functionName: uuid_increment
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - pfree
    - UUIDPGetDatum
    - DatumGetUUIDP
    - memcpy
    - palloc
    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:476,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/uuid.c:477,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/uuid.c:478,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/uuid.c:480,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/uuid.c:481,1
    - Dst: UUIDPGetDatum
      Src: /src/postgres/src/backend/utils/adt/uuid.c:485,1
    - Dst: UUIDPGetDatum
      Src: /src/postgres/src/backend/utils/adt/uuid.c:486,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/uuid.c:488,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 473
    functionDepth: 2
    functionLinenumber: 473
    functionLinenumberEnd: 489
    functionName: uuid_skipsupport
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - UUIDPGetDatum
    - PG_RETURN_VOID
    - memset
    - palloc
    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:495,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/utils/adt/uuid.c:497,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 492
    functionDepth: 2
    functionLinenumber: 492
    functionLinenumberEnd: 498
    functionName: uuid_hash
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - hash_any
    - PG_GETARG_UUID_P
    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:503,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/utils/adt/uuid.c:505,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/uuid.c:505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 500
    functionDepth: 2
    functionLinenumber: 500
    functionLinenumberEnd: 506
    functionName: uuid_hash_extended
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_UUID_P
    - PG_GETARG_INT64
    - hash_any_extended
    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: 519
      start: 511
    functionDepth: 0
    functionLinenumber: 511
    functionLinenumberEnd: 519
    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:530,1
    - Dst: pg_strong_random
      Src: /src/postgres/src/backend/utils/adt/uuid.c:532,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/uuid.c:533,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/uuid.c:534,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/uuid.c:535,1
    - Dst: uuid_set_version
      Src: /src/postgres/src/backend/utils/adt/uuid.c:541,1
    - Dst: PG_RETURN_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:543,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 527
    functionDepth: 2
    functionLinenumber: 527
    functionLinenumberEnd: 544
    functionName: gen_random_uuid
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - errmsg
    - uuid_set_version
    - ereport
    - PG_RETURN_UUID_P
    - palloc
    - errcode
    - pg_strong_random
    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:562,1
    - Dst: clock_gettime
      Src: /src/postgres/src/backend/utils/adt/uuid.c:576,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 551
    functionDepth: 2
    functionLinenumber: 551
    functionLinenumberEnd: 586
    functionName: get_real_time_ns_ascending
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - clock_gettime
    - gettimeofday
    linkageType: ''
    returnType: int64
    signature: int64 get_real_time_ns_ascending()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/uuid.c:607,1
    - Dst: pg_strong_random
      Src: /src/postgres/src/backend/utils/adt/uuid.c:629,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/uuid.c:630,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/uuid.c:631,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/uuid.c:632,1
    - Dst: uuid_set_version
      Src: /src/postgres/src/backend/utils/adt/uuid.c:650,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - unix_ts_ms
    - sub_ms
    argTypes:
    - uint64
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 604
    functionDepth: 2
    functionLinenumber: 604
    functionLinenumberEnd: 653
    functionName: generate_uuidv7
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - errmsg
    - uuid_set_version
    - ereport
    - palloc
    - errcode
    - pg_strong_random
    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:661,1
    - Dst: generate_uuidv7
      Src: /src/postgres/src/backend/utils/adt/uuid.c:662,1
    - Dst: PG_RETURN_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:664,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 658
    functionDepth: 3
    functionLinenumber: 658
    functionLinenumberEnd: 665
    functionName: uuidv7
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 1
    functionsReached:
    - get_real_time_ns_ascending
    - generate_uuidv7
    - PG_RETURN_UUID_P
    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:673,1
    - Dst: get_real_time_ns_ascending
      Src: /src/postgres/src/backend/utils/adt/uuid.c:676,1
    - Dst: DatumGetTimestampTz
      Src: /src/postgres/src/backend/utils/adt/uuid.c:690,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/uuid.c:690,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/utils/adt/uuid.c:691,1
    - Dst: IntervalPGetDatum
      Src: /src/postgres/src/backend/utils/adt/uuid.c:692,1
    - Dst: generate_uuidv7
      Src: /src/postgres/src/backend/utils/adt/uuid.c:698,1
    - Dst: PG_RETURN_UUID_P
      Src: /src/postgres/src/backend/utils/adt/uuid.c:700,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 670
    functionDepth: 3
    functionLinenumber: 670
    functionLinenumberEnd: 701
    functionName: uuidv7_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - get_real_time_ns_ascending
    - PG_RETURN_UUID_P
    - DatumGetTimestampTz
    - generate_uuidv7
    - TimestampTzGetDatum
    - DirectFunctionCall2
    - PG_GETARG_INTERVAL_P
    - IntervalPGetDatum
    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:717,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/uuid.c:724,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/uuid.c:742,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/uuid.c:758,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/uuid.c:762,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 714
    functionDepth: 1
    functionLinenumber: 714
    functionLinenumberEnd: 763
    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:773,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/uuid.c:778,1
    - Dst: PG_RETURN_UINT16
      Src: /src/postgres/src/backend/utils/adt/uuid.c:782,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 770
    functionDepth: 1
    functionLinenumber: 770
    functionLinenumberEnd: 783
    functionName: uuid_extract_version
    functionSourceFile: /src/postgres/src/backend/utils/adt/uuid.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_UINT16
    - PG_GETARG_UUID_P
    - PG_RETURN_NULL
    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:
    - TransactionIdIsInProgress
    - errmsg
    - NameStr
    - HeapTupleHeaderXminCommitted
    - TransactionIdDidCommit
    - EnumUncommitted
    - GETSTRUCT
    - ereport
    - format_type_be
    - errhint
    - HeapTupleHeaderGetXmin
    - errcode
    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:
    - errmsg
    - PG_GETARG_CSTRING
    - SearchSysCache2
    - check_safe_enum_use
    - ReleaseSysCache
    - ObjectIdGetDatum
    - HeapTupleIsValid
    - format_type_be
    - GETSTRUCT
    - PG_RETURN_OID
    - PG_GETARG_OID
    - CStringGetDatum
    - ereturn
    - errcode
    - strlen
    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:
    - errmsg
    - errcode
    - NameStr
    - ReleaseSysCache
    - HeapTupleIsValid
    - PG_RETURN_CSTRING
    - GETSTRUCT
    - ereport
    - pstrdup
    - SearchSysCache1
    - PG_GETARG_OID
    - 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:
    - errmsg
    - pfree
    - SearchSysCache2
    - check_safe_enum_use
    - ReleaseSysCache
    - PG_GETARG_POINTER
    - ObjectIdGetDatum
    - HeapTupleIsValid
    - format_type_be
    - pq_getmsgtext
    - ereport
    - GETSTRUCT
    - PG_RETURN_OID
    - PG_GETARG_OID
    - CStringGetDatum
    - errcode
    - strlen
    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:
    - errmsg
    - errcode
    - NameStr
    - pq_sendtext
    - ReleaseSysCache
    - HeapTupleIsValid
    - pq_endtypsend
    - GETSTRUCT
    - ereport
    - SearchSysCache1
    - PG_GETARG_OID
    - PG_RETURN_BYTEA_P
    - ObjectIdGetDatum
    - strlen
    - pq_begintypsend
    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:
    - errmsg
    - errcode
    - Assert
    - ReleaseSysCache
    - HeapTupleIsValid
    - compare_values_of_enum
    - GETSTRUCT
    - ereport
    - lookup_type_cache
    - SearchSysCache1
    - ObjectIdGetDatum
    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_RETURN_INT32
    - PG_GETARG_OID
    - enum_cmp_internal
    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:
    - systable_getnext_ordered
    - systable_endscan_ordered
    - check_safe_enum_use
    - index_close
    - table_open
    - HeapTupleIsValid
    - GETSTRUCT
    - ScanKeyInit
    - systable_beginscan_ordered
    - table_close
    - ObjectIdGetDatum
    - index_open
    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:
    - errmsg
    - format_type_be
    - get_fn_expr_argtype
    - ereport
    - PG_RETURN_OID
    - enum_endpoint
    - OidIsValid
    - errcode
    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:
    - errmsg
    - format_type_be
    - get_fn_expr_argtype
    - ereport
    - PG_RETURN_OID
    - enum_endpoint
    - OidIsValid
    - errcode
    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:
    - errmsg
    - enum_range_internal
    - get_fn_expr_argtype
    - PG_ARGISNULL
    - ereport
    - PG_RETURN_ARRAYTYPE_P
    - PG_GETARG_OID
    - errcode
    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:
    - errmsg
    - enum_range_internal
    - get_fn_expr_argtype
    - ereport
    - PG_RETURN_ARRAYTYPE_P
    - errcode
    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:
    - systable_getnext_ordered
    - pfree
    - systable_endscan_ordered
    - check_safe_enum_use
    - index_close
    - table_open
    - HeapTupleIsValid
    - GETSTRUCT
    - ScanKeyInit
    - table_close
    - OidIsValid
    - construct_array
    - systable_beginscan_ordered
    - palloc
    - repalloc
    - ObjectIdGetDatum
    - index_open
    linkageType: ''
    returnType: ArrayType
    signature: 'ArrayType *

      enum_range_internal(Oid enumtypoid, Oid lower, Oid upper)'
  - 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: SAMESIGN
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SAMESIGN(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ia
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 91
    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:109,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:116,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:117,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:118,1
    - Dst: anytimestamp_typmod_check
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:120,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - istz
    - ta
    argTypes:
    - bool
    - ArrayType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 103
    functionDepth: 3
    functionLinenumber: 103
    functionLinenumberEnd: 121
    functionName: anytimestamp_typmodin
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ArrayGetIntegerTypmods
    - ereport
    - anytimestamp_typmod_check
    - errcode
    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:128,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:129,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:130,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:134,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:135,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:136,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - istz
    - typmod
    argTypes:
    - bool
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 124
    functionDepth: 2
    functionLinenumber: 124
    functionLinenumberEnd: 143
    functionName: anytimestamp_typmod_check
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 1
    functionsReached:
    - errmsg
    - errcode
    - ereport
    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:152,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - istz
    - typmod
    argTypes:
    - bool
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 146
    functionDepth: 2
    functionLinenumber: 146
    functionLinenumberEnd: 155
    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:168,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:170,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:172,1
    - Dst: ParseDateTime
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:187,1
    - Dst: DecodeDateTime
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:190,1
    - Dst: DateTimeParseError
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:194,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:195,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:201,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:202,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:203,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:204,1
    - Dst: SetEpochTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:208,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:212,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:216,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:220,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:222,1
    - Dst: AdjustTimestampForTypmod
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:225,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:227,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 165
    functionDepth: 2
    functionLinenumber: 165
    functionLinenumberEnd: 228
    functionName: timestamp_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_CSTRING
    - TIMESTAMP_NOEND
    - TIMESTAMP_NOBEGIN
    - PG_RETURN_TIMESTAMP
    - DateTimeParseError
    - ParseDateTime
    - tm2timestamp
    - SetEpochTimestamp
    - AdjustTimestampForTypmod
    - PG_GETARG_OID
    - DecodeDateTime
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    - elog
    - ereturn
    - errcode
    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:236,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:243,1
    - Dst: EncodeSpecialTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:244,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:245,1
    - Dst: EncodeDateTime
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:246,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:248,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:249,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:250,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:252,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:253,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 233
    functionDepth: 2
    functionLinenumber: 233
    functionLinenumberEnd: 254
    functionName: timestamp_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - timestamp2tm
    - TIMESTAMP_NOT_FINITE
    - PG_RETURN_CSTRING
    - ereport
    - EncodeSpecialTimestamp
    - pstrdup
    - EncodeDateTime
    - PG_GETARG_TIMESTAMP
    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:262,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:265,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:267,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:273,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:276,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:278,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:279,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:280,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:281,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:282,1
    - Dst: AdjustTimestampForTypmod
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:284,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:286,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 259
    functionDepth: 2
    functionLinenumber: 259
    functionLinenumberEnd: 287
    functionName: timestamp_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_TIMESTAMP
    - IS_VALID_TIMESTAMP
    - PG_GETARG_POINTER
    - timestamp2tm
    - TIMESTAMP_NOT_FINITE
    - ereport
    - AdjustTimestampForTypmod
    - PG_GETARG_OID
    - pq_getmsgint64
    - PG_GETARG_INT32
    - errcode
    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:295,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:298,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:299,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:300,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 292
    functionDepth: 4
    functionLinenumber: 292
    functionLinenumberEnd: 301
    functionName: timestamp_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMP
    - pq_endtypsend
    - PG_RETURN_BYTEA_P
    - pq_sendint64
    - pq_begintypsend
    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:306,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:308,1
    - Dst: anytimestamp_typmodin
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 303
    functionDepth: 4
    functionLinenumber: 303
    functionLinenumberEnd: 309
    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:314,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:316,1
    - Dst: anytimestamp_typmodout
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 311
    functionDepth: 3
    functionLinenumber: 311
    functionLinenumberEnd: 317
    functionName: timestamptypmodout
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_CSTRING
    - anytimestamp_typmodout
    - PG_GETARG_INT32
    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:329,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:332,1
    - Dst: TemporalSimplify
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:336,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:339,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 340
    functionName: timestamp_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_POINTER
    - IsA
    - TemporalSimplify
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_support(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:349,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:350,1
    - Dst: AdjustTimestampForTypmod
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:355,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 346
    functionDepth: 1
    functionLinenumber: 346
    functionLinenumberEnd: 358
    functionName: timestamp_scale
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - AdjustTimestampForTypmod
    - PG_GETARG_INT32
    - PG_GETARG_TIMESTAMP
    - PG_RETURN_TIMESTAMP
    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: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:373,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:374,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:375,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:381,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:382,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:383,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:384,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:385,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:386,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:387,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:390,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:394,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:395,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:396,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:399,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 3
    argNames:
    - time
    - typmod
    - escontext
    argTypes:
    - Timestamp*
    - int32
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 367
    functionDepth: 2
    functionLinenumber: 367
    functionLinenumberEnd: 412
    functionName: AdjustTimestampForTypmod
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 3
    functionsReached:
    - errmsg
    - TIMESTAMP_NOT_FINITE
    - ereturn
    - INT64CONST
    - errcode
    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:420,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:422,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:424,1
    - Dst: ParseDateTime
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:439,1
    - Dst: DecodeDateTime
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:442,1
    - Dst: DateTimeParseError
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:446,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:448,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:454,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:455,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:456,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:457,1
    - Dst: SetEpochTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:461,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:465,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:469,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:473,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:475,1
    - Dst: AdjustTimestampForTypmod
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:478,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:480,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 417
    functionDepth: 3
    functionLinenumber: 417
    functionLinenumberEnd: 481
    functionName: timestamptz_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_CSTRING
    - TIMESTAMP_NOEND
    - TIMESTAMP_NOBEGIN
    - DateTimeParseError
    - ParseDateTime
    - tm2timestamp
    - SetEpochTimestamp
    - AdjustTimestampForTypmod
    - PG_GETARG_OID
    - DecodeDateTime
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    - elog
    - ereturn
    - PG_RETURN_TIMESTAMPTZ
    - errcode
    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:497,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:509,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:510,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:511,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:512,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:514,1
    - Dst: DecodeTimezone
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:516,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: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:528,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:529,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:530,1
    - Dst: DecodeTimezoneName
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:532,1
    - Dst: DetermineTimeZoneAbbrevOffset
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:542,1
    - Dst: DetermineTimeZoneOffset
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:547,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - tm
    - zone
    argTypes:
    - struct pg_tm*
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 490
    functionDepth: 2
    functionLinenumber: 490
    functionLinenumberEnd: 552
    functionName: parse_sane_timezone
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - DecodeTimezoneName
    - DetermineTimeZoneOffset
    - isdigit
    - ereport
    - errhint
    - DecodeTimezone
    - DetermineTimeZoneAbbrevOffset
    - text_to_cstring_buffer
    - errcode
    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:564,1
    - Dst: DecodeTimezoneNameToTz
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:566,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - zone
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 559
    functionDepth: 1
    functionLinenumber: 559
    functionLinenumberEnd: 567
    functionName: lookup_timezone
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - DecodeTimezoneNameToTz
    - text_to_cstring_buffer
    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:595,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:598,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:599,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:600,1
    - Dst: IS_VALID_JULIAN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:603,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:604,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:605,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:606,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:609,1
    - Dst: float_time_overflows
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:612,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:613,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:614,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:615,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:620,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:622,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:622,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:623,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:624,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:625,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:626,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:631,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:632,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:633,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:634,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: 639
      start: 573
    functionDepth: 2
    functionLinenumber: 573
    functionLinenumberEnd: 639
    functionName: make_timestamp_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - ValidateDate
    - IS_VALID_JULIAN
    - errmsg
    - IS_VALID_TIMESTAMP
    - ereport
    - rint
    - unlikely
    - pg_mul_s64_overflow
    - date2j
    - pg_add_s64_overflow
    - float_time_overflows
    - errcode
    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:647,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:648,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:649,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:650,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:651,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:652,1
    - Dst: make_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:655,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:658,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 644
    functionDepth: 3
    functionLinenumber: 644
    functionLinenumberEnd: 659
    functionName: make_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - make_timestamp_internal
    - PG_RETURN_TIMESTAMP
    - PG_GETARG_INT32
    - PG_GETARG_FLOAT8
    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:667,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:668,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:669,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:670,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:671,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:672,1
    - Dst: make_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:675,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:678,1
    - Dst: timestamp2timestamptz
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:678,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 664
    functionDepth: 3
    functionLinenumber: 664
    functionLinenumberEnd: 679
    functionName: make_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp2timestamptz
    - make_timestamp_internal
    - PG_GETARG_FLOAT8
    - PG_GETARG_INT32
    - 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:688,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:689,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:690,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:691,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:692,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:693,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:694,1
    - Dst: make_timestamp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:701,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:704,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:705,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:706,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:707,1
    - Dst: parse_sane_timezone
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:709,1
    - Dst: dt2local
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:711,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:713,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:714,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:715,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:716,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:718,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 685
    functionDepth: 3
    functionLinenumber: 685
    functionLinenumberEnd: 719
    functionName: make_timestamptz_at_timezone
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - IS_VALID_TIMESTAMP
    - make_timestamp_internal
    - timestamp2tm
    - PG_GETARG_TEXT_PP
    - parse_sane_timezone
    - dt2local
    - PG_GETARG_FLOAT8
    - ereport
    - PG_GETARG_INT32
    - PG_RETURN_TIMESTAMPTZ
    - errcode
    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:728,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:732,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:733,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:734,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:735,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:737,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:740,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:742,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:751,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:752,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:753,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:758,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:762,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:763,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:764,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:765,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:766,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:769,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 725
    functionDepth: 2
    functionLinenumber: 725
    functionLinenumberEnd: 770
    functionName: float8_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - isnan
    - errmsg
    - isinf
    - TIMESTAMP_NOBEGIN
    - TIMESTAMP_NOEND
    - PG_RETURN_TIMESTAMP
    - IS_VALID_TIMESTAMP
    - ereport
    - PG_GETARG_FLOAT8
    - rint
    - errcode
    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:778,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:787,1
    - Dst: EncodeSpecialTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:788,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:789,1
    - Dst: EncodeDateTime
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:790,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:792,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:793,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:794,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:796,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:797,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 775
    functionDepth: 2
    functionLinenumber: 775
    functionLinenumberEnd: 798
    functionName: timestamptz_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - timestamp2tm
    - TIMESTAMP_NOT_FINITE
    - PG_RETURN_CSTRING
    - ereport
    - EncodeSpecialTimestamp
    - pstrdup
    - PG_GETARG_TIMESTAMPTZ
    - EncodeDateTime
    - errcode
    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:806,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:809,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:811,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:818,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:821,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:823,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:824,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:825,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:826,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:827,1
    - Dst: AdjustTimestampForTypmod
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:829,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:831,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 832
      start: 803
    functionDepth: 3
    functionLinenumber: 803
    functionLinenumberEnd: 832
    functionName: timestamptz_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - IS_VALID_TIMESTAMP
    - PG_GETARG_POINTER
    - timestamp2tm
    - TIMESTAMP_NOT_FINITE
    - ereport
    - AdjustTimestampForTypmod
    - PG_GETARG_OID
    - pq_getmsgint64
    - PG_GETARG_INT32
    - PG_RETURN_TIMESTAMPTZ
    - errcode
    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:840,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:843,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:844,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:845,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:845,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 846
      start: 837
    functionDepth: 4
    functionLinenumber: 837
    functionLinenumberEnd: 846
    functionName: timestamptz_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - PG_GETARG_TIMESTAMPTZ
    - PG_RETURN_BYTEA_P
    - pq_sendint64
    - pq_begintypsend
    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:851,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:853,1
    - Dst: anytimestamp_typmodin
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:853,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 848
    functionDepth: 4
    functionLinenumber: 848
    functionLinenumberEnd: 854
    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:859,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:861,1
    - Dst: anytimestamp_typmodout
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:861,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 856
    functionDepth: 3
    functionLinenumber: 856
    functionLinenumberEnd: 862
    functionName: timestamptztypmodout
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_CSTRING
    - anytimestamp_typmodout
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptztypmodout(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:872,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:873,1
    - Dst: AdjustTimestampForTypmod
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:878,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:880,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 869
    functionDepth: 3
    functionLinenumber: 869
    functionLinenumberEnd: 881
    functionName: timestamptz_scale
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - AdjustTimestampForTypmod
    - PG_RETURN_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMPTZ
    - 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
      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:
    - PG_RETURN_INTERVAL_P
    - AdjustIntervalForTypmod
    - DecodeInterval
    - itmin2interval
    - DateTimeParseError
    - PG_GETARG_OID
    - INTERVAL_NOEND
    - errmsg
    - elog
    - ereturn
    - palloc
    - PG_GETARG_CSTRING
    - DecodeISO8601Interval
    - INTERVAL_NOBEGIN
    - ParseDateTime
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    - INTERVAL_RANGE
    - errcode
    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:975,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:981,1
    - Dst: EncodeSpecialInterval
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:982,1
    - Dst: interval2itm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:985,1
    - Dst: EncodeInterval
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:986,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:989,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:990,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 972
    functionDepth: 1
    functionLinenumber: 972
    functionLinenumberEnd: 991
    functionName: interval_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - EncodeInterval
    - PG_RETURN_CSTRING
    - pstrdup
    - EncodeSpecialInterval
    - INTERVAL_NOT_FINITE
    - PG_GETARG_INTERVAL_P
    - interval2itm
    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:999,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1002,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1004,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1007,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1009,1
    - Dst: pq_getmsgint
      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: AdjustIntervalForTypmod
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1013,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1015,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1016
      start: 996
    functionDepth: 2
    functionLinenumber: 996
    functionLinenumberEnd: 1016
    functionName: interval_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_GETARG_OID
    - pq_getmsgint64
    - PG_GETARG_INT32
    - PG_RETURN_INTERVAL_P
    - palloc
    - pq_getmsgint
    - AdjustIntervalForTypmod
    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:1024,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1027,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1028,1
    - Dst: pq_sendint32
      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: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1031,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1031,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1032
      start: 1021
    functionDepth: 4
    functionLinenumber: 1021
    functionLinenumberEnd: 1032
    functionName: interval_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - PG_RETURN_BYTEA_P
    - PG_GETARG_INTERVAL_P
    - pq_sendint32
    - pq_sendint64
    - pq_begintypsend
    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:1049,1
    - Dst: ArrayGetIntegerTypmods
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1054,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1066,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: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: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: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: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: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: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1083,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1084,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1085,1
    - Dst: INTERVAL_TYPMOD
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1092,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1099,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1100,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1101,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1105,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1106,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1107,1
    - Dst: INTERVAL_TYPMOD
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1109,1
    - Dst: INTERVAL_TYPMOD
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1112,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1116,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1117,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1118,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1122,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1123
      start: 1046
    functionDepth: 3
    functionLinenumber: 1046
    functionLinenumberEnd: 1123
    functionName: intervaltypmodin
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_INT32
    - INTERVAL_MASK
    - ArrayGetIntegerTypmods
    - INTERVAL_TYPMOD
    - ereport
    - errcode
    - PG_GETARG_ARRAYTYPE_P
    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:1128,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1129,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1137,1
    - Dst: INTERVAL_RANGE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1140,1
    - Dst: INTERVAL_PRECISION
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1141,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1145,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1148,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1151,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1154,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1157,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1160,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1163,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1163,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1166,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1166,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1169,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1169,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1169,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1172,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1172,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1172,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1172,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1175,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1175,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1178,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1178,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1178,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1181,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1181,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1188,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1194,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1196,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1198,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 59
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1199
      start: 1125
    functionDepth: 1
    functionLinenumber: 1125
    functionLinenumberEnd: 1199
    functionName: intervaltypmodout
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - INTERVAL_MASK
    - PG_RETURN_CSTRING
    - snprintf
    - INTERVAL_PRECISION
    - elog
    - PG_GETARG_INT32
    - INTERVAL_RANGE
    - palloc
    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:1217,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1219,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1221,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1223,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1225,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1227,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1229,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1231,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1231,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1233,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1233,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1235,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1235,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1235,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1237,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1237,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1237,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1237,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1239,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1239,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1241,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1241,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1241,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1243,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1243,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1248,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 37
    argCount: 1
    argNames:
    - typmod
    argTypes:
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1252
      start: 1211
    functionDepth: 1
    functionLinenumber: 1211
    functionLinenumberEnd: 1252
    functionName: intervaltypmodleastfield
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - INTERVAL_RANGE
    - elog
    - INTERVAL_MASK
    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:1267,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1270,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1276,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1276,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1278,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1280,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1282,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1283,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1290,1
    - Dst: intervaltypmodleastfield
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1296,1
    - Dst: intervaltypmodleastfield
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1297,1
    - Dst: INTERVAL_PRECISION
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1301,1
    - Dst: INTERVAL_PRECISION
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1302,1
    - Dst: relabel_to_typmod
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1316,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1320,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1321
      start: 1264
    functionDepth: 5
    functionLinenumber: 1264
    functionLinenumberEnd: 1321
    functionName: interval_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - Assert
    - relabel_to_typmod
    - linitial
    - PG_GETARG_POINTER
    - exprTypmod
    - DatumGetInt32
    - lsecond
    - IsA
    - list_length
    - intervaltypmodleastfield
    - INTERVAL_PRECISION
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum interval_support(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1330,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1331,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1334,1
    - Dst: AdjustIntervalForTypmod
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1337,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1327
    functionDepth: 1
    functionLinenumber: 1327
    functionLinenumberEnd: 1340
    functionName: interval_scale
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INTERVAL_P
    - PG_GETARG_INT32
    - PG_GETARG_INTERVAL_P
    - palloc
    - AdjustIntervalForTypmod
    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:1354,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1355,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1356,1
    - 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:1364,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1365,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1366,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: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1374,1
    - Dst: INTERVAL_RANGE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1383,1
    - Dst: INTERVAL_PRECISION
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1384,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1410,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1416,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1422,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1422,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1427,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1431,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1436,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1441,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1446,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1447,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1453,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1454,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1455,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1461,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1462,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1463,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:1469,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1470,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1476,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1477,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1478,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1483,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1484,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1489,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1495,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1496,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1497,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1500,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1502,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1505,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1506,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1507,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1512,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1515,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1516,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1517,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 61
    argCount: 3
    argNames:
    - interval
    - typmod
    - escontext
    argTypes:
    - Interval*
    - int32
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1524
      start: 1349
    functionDepth: 2
    functionLinenumber: 1349
    functionLinenumberEnd: 1524
    functionName: AdjustIntervalForTypmod
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 3
    functionsReached:
    - errmsg
    - INTERVAL_MASK
    - pg_sub_s64_overflow
    - INTERVAL_PRECISION
    - elog
    - INTERVAL_NOT_FINITE
    - pg_add_s64_overflow
    - ereturn
    - INTERVAL_RANGE
    - INT64CONST
    - errcode
    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:1532,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1533,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1534,1
    - 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_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1538,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1545,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1545,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1548,1
    - Dst: pg_mul_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1551,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1552,1
    - Dst: pg_mul_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1556,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1557,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1564,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1564,1
    - Dst: FLOAT8_FITS_IN_INT64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1565,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1566,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1570,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1573,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1576,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1577,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1578,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1580,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1581
      start: 1529
    functionDepth: 2
    functionLinenumber: 1529
    functionLinenumberEnd: 1581
    functionName: make_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - isnan
    - pg_mul_s32_overflow
    - isinf
    - errcode
    - errmsg
    - float8_mul
    - PG_GETARG_FLOAT8
    - rint
    - ereport
    - pg_add_s32_overflow
    - pg_add_s64_overflow
    - PG_RETURN_NULL
    - INTERVAL_NOT_FINITE
    - PG_GETARG_INT32
    - PG_RETURN_INTERVAL_P
    - palloc
    - FLOAT8_FITS_IN_INT64
    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:1589,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1590,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1591,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1592,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1594,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - dt
    - str
    argTypes:
    - Timestamp
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1595
      start: 1586
    functionDepth: 1
    functionLinenumber: 1586
    functionLinenumberEnd: 1595
    functionName: EncodeSpecialTimestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 3
    functionsReached:
    - TIMESTAMP_IS_NOBEGIN
    - TIMESTAMP_IS_NOEND
    - elog
    - strcpy
    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:1600,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1601,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1602,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1603,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1605,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - interval
    - str
    argTypes:
    - Interval*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1606
      start: 1597
    functionDepth: 1
    functionLinenumber: 1597
    functionLinenumberEnd: 1606
    functionName: EncodeSpecialInterval
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 1
    functionsReached:
    - INTERVAL_IS_NOBEGIN
    - elog
    - INTERVAL_IS_NOEND
    - strcpy
    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:1611,1
    - Dst: GetCurrentTransactionStartTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1611,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1612
      start: 1608
    functionDepth: 1
    functionLinenumber: 1608
    functionLinenumberEnd: 1612
    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:1617,1
    - Dst: GetCurrentStatementStartTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1617,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1618
      start: 1614
    functionDepth: 1
    functionLinenumber: 1614
    functionLinenumberEnd: 1618
    functionName: statement_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TIMESTAMPTZ
    - GetCurrentStatementStartTimestamp
    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:1623,1
    - Dst: GetCurrentTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1623,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1624
      start: 1620
    functionDepth: 1
    functionLinenumber: 1620
    functionLinenumberEnd: 1624
    functionName: clock_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TIMESTAMPTZ
    - GetCurrentTimestamp
    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:1629,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1630
      start: 1626
    functionDepth: 1
    functionLinenumber: 1626
    functionLinenumberEnd: 1630
    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:1635,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1636
      start: 1632
    functionDepth: 1
    functionLinenumber: 1632
    functionLinenumberEnd: 1636
    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:1650,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1657
      start: 1644
    functionDepth: 2
    functionLinenumber: 1644
    functionLinenumberEnd: 1657
    functionName: GetCurrentTimestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 70
    functionsReached:
    - gettimeofday
    linkageType: ''
    returnType: TimestampTz
    signature: TimestampTz GetCurrentTimestamp(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTransactionStartTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1667,1
    - Dst: AdjustTimestampForTypmod
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1669,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - typmod
    argTypes:
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1671
      start: 1662
    functionDepth: 3
    functionLinenumber: 1662
    functionLinenumberEnd: 1671
    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:1681,1
    - Dst: GetCurrentTransactionStartTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1681,1
    - Dst: AdjustTimestampForTypmod
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1683,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - typmod
    argTypes:
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1685
      start: 1676
    functionDepth: 3
    functionLinenumber: 1676
    functionLinenumberEnd: 1685
    functionName: GetSQLLocalTimestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 1
    functionsReached:
    - AdjustTimestampForTypmod
    - GetCurrentTransactionStartTimestamp
    - timestamptz2timestamp
    linkageType: ''
    returnType: Timestamp
    signature: Timestamp GetSQLLocalTimestamp(int32 typmod)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1698,1
    - Dst: pg_strftime
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1700,1
    - Dst: pg_localtime
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1701,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1702,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1704,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1704,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1705
      start: 1690
    functionDepth: 3
    functionLinenumber: 1690
    functionLinenumberEnd: 1705
    functionName: timeofday
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 19
    functionsReached:
    - snprintf
    - pg_strftime
    - PG_RETURN_TEXT_P
    - pg_localtime
    - gettimeofday
    - cstring_to_text
    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: 1736
      start: 1720
    functionDepth: 0
    functionLinenumber: 1720
    functionLinenumberEnd: 1736
    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:1765,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1767,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - start_time
    - stop_time
    argTypes:
    - TimestampTz
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1771
      start: 1756
    functionDepth: 1
    functionLinenumber: 1756
    functionLinenumberEnd: 1771
    functionName: TimestampDifferenceMilliseconds
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 11
    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:1787,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - start_time
    - stop_time
    - msec
    argTypes:
    - TimestampTz
    - TimestampTz
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1788
      start: 1780
    functionDepth: 1
    functionLinenumber: 1780
    functionLinenumberEnd: 1788
    functionName: TimestampDifferenceExceeds
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 13
    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:1803,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: 1806
      start: 1794
    functionDepth: 1
    functionLinenumber: 1794
    functionLinenumberEnd: 1806
    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: 1829
      start: 1819
    functionDepth: 0
    functionLinenumber: 1819
    functionLinenumberEnd: 1829
    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: 1850
      start: 1841
    functionDepth: 0
    functionLinenumber: 1841
    functionLinenumberEnd: 1850
    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:1871,1
    - Dst: EncodeSpecialTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1872,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1873,1
    - Dst: EncodeDateTime
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1874,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1876,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - t
    argTypes:
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1879
      start: 1861
    functionDepth: 1
    functionLinenumber: 1861
    functionLinenumberEnd: 1879
    functionName: timestamptz_to_str
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 15
    functionsReached:
    - timestamp2tm
    - TIMESTAMP_NOT_FINITE
    - EncodeSpecialTimestamp
    - strlcpy
    - EncodeDateTime
    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: 1895
      start: 1882
    functionDepth: 0
    functionLinenumber: 1882
    functionLinenumberEnd: 1895
    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:1921,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1923,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1936,1
    - Dst: dt2time
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1937,1
    - Dst: pg_localtime
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:1965,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: 1995
      start: 1909
    functionDepth: 3
    functionLinenumber: 1909
    functionLinenumberEnd: 1995
    functionName: timestamp2tm
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 16
    functionsReached:
    - dt2time
    - TMODULO
    - j2date
    - pg_localtime
    - INT64CONST
    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:2012,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2018,1
    - Dst: time2t
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2019,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2021,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2021,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2022,1
    - Dst: dt2local
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2028,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2031,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: 2038
      start: 2005
    functionDepth: 1
    functionLinenumber: 2005
    functionLinenumberEnd: 2038
    functionName: tm2timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 8
    functionsReached:
    - IS_VALID_JULIAN
    - IS_VALID_TIMESTAMP
    - dt2local
    - unlikely
    - pg_mul_s64_overflow
    - date2j
    - pg_add_s64_overflow
    - time2t
    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: 2067
      start: 2046
    functionDepth: 0
    functionLinenumber: 2046
    functionLinenumberEnd: 2067
    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:2085,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2089,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2092,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2095,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2098,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - itm
    - span
    argTypes:
    - struct pg_itm*
    - Interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2101
      start: 2076
    functionDepth: 1
    functionLinenumber: 2076
    functionLinenumberEnd: 2101
    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: 2125
      start: 2114
    functionDepth: 0
    functionLinenumber: 2114
    functionLinenumberEnd: 2125
    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: 2131
      start: 2127
    functionDepth: 0
    functionLinenumber: 2127
    functionLinenumberEnd: 2131
    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: 2138
      start: 2133
    functionDepth: 0
    functionLinenumber: 2133
    functionLinenumberEnd: 2138
    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:2149,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2151,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2152
      start: 2146
    functionDepth: 1
    functionLinenumber: 2146
    functionLinenumberEnd: 2152
    functionName: timestamp_finite
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - TIMESTAMP_NOT_FINITE
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMP
    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:2157,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2159,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2160
      start: 2154
    functionDepth: 1
    functionLinenumber: 2154
    functionLinenumberEnd: 2160
    functionName: interval_finite
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_INTERVAL_P
    - INTERVAL_NOT_FINITE
    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:2173,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2176,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct pg_tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2187
      start: 2167
    functionDepth: 9
    functionLinenumber: 2167
    functionLinenumberEnd: 2187
    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:2196,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2201
      start: 2189
    functionDepth: 0
    functionLinenumber: 2189
    functionLinenumberEnd: 2201
    functionName: SetEpochTimestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 4
    functionsReached:
    - GetEpochTime
    - tm2timestamp
    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: 2213
      start: 2209
    functionDepth: 0
    functionLinenumber: 2209
    functionLinenumberEnd: 2213
    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:2218,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2219,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2221,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2222
      start: 2215
    functionDepth: 1
    functionLinenumber: 2215
    functionLinenumberEnd: 2222
    functionName: timestamp_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMP
    - timestamp_cmp_internal
    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:2227,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2228,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2230,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2231
      start: 2224
    functionDepth: 1
    functionLinenumber: 2224
    functionLinenumberEnd: 2231
    functionName: timestamp_ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMP
    - timestamp_cmp_internal
    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:2236,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2237,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2239,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2240
      start: 2233
    functionDepth: 1
    functionLinenumber: 2233
    functionLinenumberEnd: 2240
    functionName: timestamp_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMP
    - timestamp_cmp_internal
    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:2245,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2246,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2248,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2249
      start: 2242
    functionDepth: 1
    functionLinenumber: 2242
    functionLinenumberEnd: 2249
    functionName: timestamp_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMP
    - timestamp_cmp_internal
    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:2254,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2255,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2257,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2258
      start: 2251
    functionDepth: 1
    functionLinenumber: 2251
    functionLinenumberEnd: 2258
    functionName: timestamp_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMP
    - timestamp_cmp_internal
    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:2263,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2264,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2266,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2267
      start: 2260
    functionDepth: 1
    functionLinenumber: 2260
    functionLinenumberEnd: 2267
    functionName: timestamp_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMP
    - timestamp_cmp_internal
    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:2272,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2273,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2275,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2276
      start: 2269
    functionDepth: 1
    functionLinenumber: 2269
    functionLinenumberEnd: 2276
    functionName: timestamp_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_TIMESTAMP
    - timestamp_cmp_internal
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_cmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2283,1
    - Dst: DatumGetTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2284,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - x
    - y
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2287
      start: 2280
    functionDepth: 3
    functionLinenumber: 2280
    functionLinenumberEnd: 2287
    functionName: timestamp_fastcmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - DatumGetTimestamp
    - timestamp_cmp_internal
    linkageType: ''
    returnType: int
    signature: int timestamp_fastcmp(Datum x, Datum y, SortSupport ssup)
  - 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:2305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2306
      start: 2290
    functionDepth: 1
    functionLinenumber: 2290
    functionLinenumberEnd: 2306
    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:2312,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2322,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - underflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2323
      start: 2309
    functionDepth: 3
    functionLinenumber: 2309
    functionLinenumberEnd: 2323
    functionName: timestamp_decrement
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - TimestampGetDatum
    - DatumGetTimestamp
    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:2329,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2339,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rel
    - existing
    - overflow
    argTypes:
    - Relation
    - Datum
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2340
      start: 2326
    functionDepth: 3
    functionLinenumber: 2326
    functionLinenumberEnd: 2340
    functionName: timestamp_increment
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - TimestampGetDatum
    - DatumGetTimestamp
    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:2345,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2349,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2350,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2353
      start: 2342
    functionDepth: 1
    functionLinenumber: 2342
    functionLinenumberEnd: 2353
    functionName: timestamp_skipsupport
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - TimestampGetDatum
    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:2358,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2359
      start: 2355
    functionDepth: 3
    functionLinenumber: 2355
    functionLinenumberEnd: 2359
    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:2364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2365
      start: 2361
    functionDepth: 3
    functionLinenumber: 2361
    functionLinenumberEnd: 2365
    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:2370,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2371
      start: 2367
    functionDepth: 3
    functionLinenumber: 2367
    functionLinenumberEnd: 2371
    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:2376,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2377
      start: 2373
    functionDepth: 3
    functionLinenumber: 2373
    functionLinenumberEnd: 2377
    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: 3
    BranchProfiles: []
    Callsites:
    - Dst: timestamp2timestamptz_opt_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2389,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2393,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2398,1
    - Dst: timestamptz_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2401,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - timestampVal
    - dt2
    argTypes:
    - Timestamp
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2402
      start: 2383
    functionDepth: 1
    functionLinenumber: 2383
    functionLinenumberEnd: 2402
    functionName: timestamp_cmp_timestamptz_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - TIMESTAMP_IS_NOBEGIN
    - TIMESTAMP_IS_NOEND
    - timestamptz_cmp_internal
    - timestamp2timestamptz_opt_overflow
    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:2407,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2408,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2410,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2411
      start: 2404
    functionDepth: 2
    functionLinenumber: 2404
    functionLinenumberEnd: 2411
    functionName: timestamp_eq_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_cmp_timestamptz_internal
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    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:2416,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2417,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2419,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2420
      start: 2413
    functionDepth: 2
    functionLinenumber: 2413
    functionLinenumberEnd: 2420
    functionName: timestamp_ne_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_cmp_timestamptz_internal
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    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:2425,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2426,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2428,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2428,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2429
      start: 2422
    functionDepth: 2
    functionLinenumber: 2422
    functionLinenumberEnd: 2429
    functionName: timestamp_lt_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_cmp_timestamptz_internal
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    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:2434,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2435,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2437,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2437,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2438
      start: 2431
    functionDepth: 2
    functionLinenumber: 2431
    functionLinenumberEnd: 2438
    functionName: timestamp_gt_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_cmp_timestamptz_internal
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    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:2443,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2444,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2446,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2447
      start: 2440
    functionDepth: 2
    functionLinenumber: 2440
    functionLinenumberEnd: 2447
    functionName: timestamp_le_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_cmp_timestamptz_internal
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    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:2452,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2453,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2455,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2455,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2456
      start: 2449
    functionDepth: 2
    functionLinenumber: 2449
    functionLinenumberEnd: 2456
    functionName: timestamp_ge_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_cmp_timestamptz_internal
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    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:2461,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2462,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2464,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2465
      start: 2458
    functionDepth: 2
    functionLinenumber: 2458
    functionLinenumberEnd: 2465
    functionName: timestamp_cmp_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - timestamp_cmp_timestamptz_internal
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    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:2470,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2471,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2473,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2473,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2474
      start: 2467
    functionDepth: 2
    functionLinenumber: 2467
    functionLinenumberEnd: 2474
    functionName: timestamptz_eq_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_cmp_timestamptz_internal
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    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:2479,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2480,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2482,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2482,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2483
      start: 2476
    functionDepth: 2
    functionLinenumber: 2476
    functionLinenumberEnd: 2483
    functionName: timestamptz_ne_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_cmp_timestamptz_internal
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    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:2488,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2489,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2491,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2491,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2492
      start: 2485
    functionDepth: 2
    functionLinenumber: 2485
    functionLinenumberEnd: 2492
    functionName: timestamptz_lt_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_cmp_timestamptz_internal
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    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:2497,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2498,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2500,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2500,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2501
      start: 2494
    functionDepth: 2
    functionLinenumber: 2494
    functionLinenumberEnd: 2501
    functionName: timestamptz_gt_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_cmp_timestamptz_internal
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    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:2506,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2507,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2509,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2509,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2510
      start: 2503
    functionDepth: 2
    functionLinenumber: 2503
    functionLinenumberEnd: 2510
    functionName: timestamptz_le_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_cmp_timestamptz_internal
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    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:2515,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2516,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2518,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2518,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2519
      start: 2512
    functionDepth: 2
    functionLinenumber: 2512
    functionLinenumberEnd: 2519
    functionName: timestamptz_ge_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamp_cmp_timestamptz_internal
    - PG_RETURN_BOOL
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    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:2524,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2525,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2527,1
    - Dst: timestamp_cmp_timestamptz_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2527,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2528
      start: 2521
    functionDepth: 2
    functionLinenumber: 2521
    functionLinenumberEnd: 2528
    functionName: timestamptz_cmp_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - timestamp_cmp_timestamptz_internal
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    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:2551,1
    - Dst: int64_to_int128
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2555,1
    - Dst: int128_add_int64_mul_int64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - interval
    argTypes:
    - Interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2561
      start: 2541
    functionDepth: 1
    functionLinenumber: 2541
    functionLinenumberEnd: 2561
    functionName: interval_cmp_value
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - int64_to_int128
    - INT64CONST
    - int128_add_int64_mul_int64
    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:2566,1
    - Dst: interval_cmp_value
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2567,1
    - Dst: int128_compare
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2569,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - interval1
    - interval2
    argTypes:
    - Interval*
    - Interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2570
      start: 2563
    functionDepth: 2
    functionLinenumber: 2563
    functionLinenumberEnd: 2570
    functionName: interval_cmp_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - interval_cmp_value
    - int128_compare
    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:2575,1
    - Dst: int64_to_int128
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2576,1
    - Dst: int128_compare
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2578,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - interval
    argTypes:
    - Interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2579
      start: 2572
    functionDepth: 2
    functionLinenumber: 2572
    functionLinenumberEnd: 2579
    functionName: interval_sign
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - int64_to_int128
    - interval_cmp_value
    - int128_compare
    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:2584,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2585,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2587,1
    - Dst: interval_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2587,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2588
      start: 2581
    functionDepth: 3
    functionLinenumber: 2581
    functionLinenumberEnd: 2588
    functionName: interval_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_INTERVAL_P
    - interval_cmp_internal
    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:2593,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2594,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2596,1
    - Dst: interval_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2596,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2597
      start: 2590
    functionDepth: 3
    functionLinenumber: 2590
    functionLinenumberEnd: 2597
    functionName: interval_ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_INTERVAL_P
    - interval_cmp_internal
    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:2602,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2603,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2605,1
    - Dst: interval_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2605,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2606
      start: 2599
    functionDepth: 3
    functionLinenumber: 2599
    functionLinenumberEnd: 2606
    functionName: interval_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_INTERVAL_P
    - interval_cmp_internal
    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:2611,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2612,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2614,1
    - Dst: interval_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2614,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2615
      start: 2608
    functionDepth: 3
    functionLinenumber: 2608
    functionLinenumberEnd: 2615
    functionName: interval_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_INTERVAL_P
    - interval_cmp_internal
    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:2620,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2621,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2623,1
    - Dst: interval_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2623,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2624
      start: 2617
    functionDepth: 3
    functionLinenumber: 2617
    functionLinenumberEnd: 2624
    functionName: interval_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_INTERVAL_P
    - interval_cmp_internal
    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:2629,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2630,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2632,1
    - Dst: interval_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2632,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2633
      start: 2626
    functionDepth: 3
    functionLinenumber: 2626
    functionLinenumberEnd: 2633
    functionName: interval_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_INTERVAL_P
    - interval_cmp_internal
    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:2638,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2639,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2641,1
    - Dst: interval_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2641,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2642
      start: 2635
    functionDepth: 3
    functionLinenumber: 2635
    functionLinenumberEnd: 2642
    functionName: interval_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_INTERVAL_P
    - interval_cmp_internal
    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:2654,1
    - Dst: interval_cmp_value
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2655,1
    - Dst: int128_to_int64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2664,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2666,1
    - Dst: Int64GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2666,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2667
      start: 2651
    functionDepth: 2
    functionLinenumber: 2651
    functionLinenumberEnd: 2667
    functionName: interval_hash
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - interval_cmp_value
    - PG_GETARG_INTERVAL_P
    - int128_to_int64
    - DirectFunctionCall1
    - Int64GetDatumFast
    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:2672,1
    - Dst: interval_cmp_value
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2673,1
    - Dst: int128_to_int64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2677,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2679,1
    - Dst: Int64GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2679,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2680,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2681
      start: 2669
    functionDepth: 2
    functionLinenumber: 2669
    functionLinenumberEnd: 2681
    functionName: interval_hash_extended
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - interval_cmp_value
    - DirectFunctionCall2
    - PG_GETARG_INTERVAL_P
    - PG_GETARG_DATUM
    - int128_to_int64
    - Int64GetDatumFast
    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:2697,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2698,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2699,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2700,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2701,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2702,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2703,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2704,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2719,1
    - Dst: TIMESTAMP_GT
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2726,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2739,1
    - Dst: TIMESTAMP_GT
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2746,1
    - Dst: TIMESTAMP_GT
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2759,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2766,1
    - Dst: TIMESTAMP_LT
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2767,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2768,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2770,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2776,1
    - Dst: TIMESTAMP_LT
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2778,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2782,1
    - Dst: TIMESTAMP_LT
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2783,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2784,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2786,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2792,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2801,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2802,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2807
      start: 2689
    functionDepth: 1
    functionLinenumber: 2689
    functionLinenumberEnd: 2807
    functionName: overlaps_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - TIMESTAMP_LT
    - PG_RETURN_BOOL
    - PG_ARGISNULL
    - TIMESTAMP_GT
    - PG_RETURN_NULL
    - PG_GETARG_DATUM
    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: 2708
      start: 2706
    functionDepth: 0
    functionLinenumber: 2706
    functionLinenumberEnd: 2708
    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: 2710
      start: 2708
    functionDepth: 0
    functionLinenumber: 2708
    functionLinenumberEnd: 2710
    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:2817,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2818,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2822,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2826,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2827
      start: 2814
    functionDepth: 1
    functionLinenumber: 2814
    functionLinenumberEnd: 2827
    functionName: timestamp_smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TIMESTAMP
    - PG_GETARG_TIMESTAMP
    - timestamp_cmp_internal
    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:2832,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2833,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2836,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2840,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2841
      start: 2829
    functionDepth: 1
    functionLinenumber: 2829
    functionLinenumberEnd: 2841
    functionName: timestamp_larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TIMESTAMP
    - PG_GETARG_TIMESTAMP
    - timestamp_cmp_internal
    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:2847,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2848,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2851,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2859,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2859,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2861,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2863,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2864,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2865,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2866,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2868,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2870,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2872,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2873,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2874,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2875,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2877,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2879,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2880,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2882,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2884,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2887,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2887,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2888,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2889,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2890,1
    - Dst: DatumGetIntervalP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2920,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2920,1
    - Dst: IntervalPGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2921,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2923,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2924
      start: 2844
    functionDepth: 2
    functionLinenumber: 2844
    functionLinenumberEnd: 2924
    functionName: timestamp_mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - TIMESTAMP_IS_NOBEGIN
    - INTERVAL_NOBEGIN
    - TIMESTAMP_NOT_FINITE
    - IntervalPGetDatum
    - pg_sub_s64_overflow
    - ereport
    - TIMESTAMP_IS_NOEND
    - unlikely
    - PG_RETURN_INTERVAL_P
    - DatumGetIntervalP
    - INTERVAL_NOEND
    - palloc
    - DirectFunctionCall1
    - PG_GETARG_TIMESTAMP
    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:2941,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2946,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2952,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2953,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2961,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2962,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2963,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2964,1
    - Dst: TMODULO
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2973,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2978,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2979,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2980,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:2981,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3007,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3008
      start: 2938
    functionDepth: 2
    functionLinenumber: 2938
    functionLinenumberEnd: 3008
    functionName: interval_justify_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - pg_add_s32_overflow
    - TMODULO
    - INTERVAL_NOT_FINITE
    - PG_GETARG_INTERVAL_P
    - PG_RETURN_INTERVAL_P
    - palloc
    - errcode
    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:3021,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3025,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3031,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3032,1
    - Dst: TMODULO
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3034,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3035,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3036,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3037,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3038,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3051,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3052
      start: 3018
    functionDepth: 2
    functionLinenumber: 3018
    functionLinenumberEnd: 3052
    functionName: interval_justify_hours
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - pg_add_s32_overflow
    - TMODULO
    - INTERVAL_NOT_FINITE
    - PG_GETARG_INTERVAL_P
    - PG_RETURN_INTERVAL_P
    - palloc
    - errcode
    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:3063,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3067,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3073,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3074,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3078,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3079,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3080,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3081,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3094,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3095
      start: 3060
    functionDepth: 2
    functionLinenumber: 3060
    functionLinenumberEnd: 3095
    functionName: interval_justify_days
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - pg_add_s32_overflow
    - INTERVAL_NOT_FINITE
    - PG_GETARG_INTERVAL_P
    - PG_RETURN_INTERVAL_P
    - palloc
    - errcode
    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:3110,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3111,1
    - Dst: INTERVAL_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3120,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3122,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3123,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3124,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3125,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3127,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3129,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3131,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3132,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3133,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3134,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3136,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3138,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3148,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3149,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3150,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3151,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3153,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3154,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3155,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3156,1
    - Dst: isleap
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3169,1
    - Dst: isleap
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3170,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3172,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3173,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3174,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3175,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3185,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3186,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3187,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3188,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3194,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3195,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3197,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3198,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3199,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3200,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3202,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3203,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3204,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3205,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3208,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3209,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3210,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3211,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3213,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3214,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3215,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3216,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3221,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3222
      start: 3107
    functionDepth: 2
    functionLinenumber: 3107
    functionLinenumberEnd: 3222
    functionName: timestamp_pl_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - TIMESTAMP_NOEND
    - PG_RETURN_TIMESTAMP
    - pg_add_s64_overflow
    - date2j
    - INTERVAL_IS_NOBEGIN
    - IS_VALID_TIMESTAMP
    - PG_GETARG_INTERVAL_P
    - errmsg
    - TIMESTAMP_NOBEGIN
    - j2date
    - INTERVAL_IS_NOEND
    - TIMESTAMP_IS_NOBEGIN
    - timestamp2tm
    - TIMESTAMP_NOT_FINITE
    - PG_GETARG_TIMESTAMP
    - ereport
    - tm2timestamp
    - pg_add_s32_overflow
    - TIMESTAMP_IS_NOEND
    - isleap
    - errcode
    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:3227,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3228,1
    - Dst: interval_um_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3231,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3233,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3234,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3236
      start: 3224
    functionDepth: 1
    functionLinenumber: 3224
    functionLinenumberEnd: 3236
    functionName: timestamp_mi_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - interval_um_internal
    - TimestampGetDatum
    - PointerGetDatum
    - DirectFunctionCall2
    - PG_GETARG_INTERVAL_P
    - PG_GETARG_TIMESTAMP
    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:3264,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3266,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3267,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3268,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3269,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3271,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3273,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3275,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3276,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3277,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3278,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3280,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3282,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3296,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3297,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3298,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3299,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3301,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3302,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3303,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3304,1
    - Dst: isleap
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3317,1
    - Dst: isleap
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3318,1
    - Dst: DetermineTimeZoneOffset
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3320,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3322,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3323,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3324,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3325,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3335,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3336,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3337,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3338,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3347,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3348,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3350,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3351,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3352,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3353,1
    - Dst: DetermineTimeZoneOffset
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3355,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3357,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3358,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3359,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3360,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3363,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3364,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3365,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3366,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3368,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3369,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3370,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3371,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 52
    argCount: 3
    argNames:
    - timestamp
    - span
    - attimezone
    argTypes:
    - TimestampTz
    - Interval*
    - pg_tz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3377
      start: 3250
    functionDepth: 2
    functionLinenumber: 3250
    functionLinenumberEnd: 3377
    functionName: timestamptz_pl_interval_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - TIMESTAMP_NOEND
    - pg_add_s64_overflow
    - date2j
    - INTERVAL_IS_NOBEGIN
    - IS_VALID_TIMESTAMP
    - errmsg
    - TIMESTAMP_NOBEGIN
    - j2date
    - INTERVAL_IS_NOEND
    - TIMESTAMP_IS_NOBEGIN
    - timestamp2tm
    - TIMESTAMP_NOT_FINITE
    - DetermineTimeZoneOffset
    - ereport
    - tm2timestamp
    - pg_add_s32_overflow
    - TIMESTAMP_IS_NOEND
    - isleap
    - errcode
    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:3389,1
    - Dst: timestamptz_pl_interval_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - timestamp
    - span
    - attimezone
    argTypes:
    - TimestampTz
    - Interval*
    - pg_tz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3392
      start: 3382
    functionDepth: 3
    functionLinenumber: 3382
    functionLinenumberEnd: 3392
    functionName: timestamptz_mi_interval_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamptz_pl_interval_internal
    - interval_um_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:3400,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3401,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3403,1
    - Dst: timestamptz_pl_interval_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3403,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3404
      start: 3397
    functionDepth: 3
    functionLinenumber: 3397
    functionLinenumberEnd: 3404
    functionName: timestamptz_pl_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamptz_pl_interval_internal
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_INTERVAL_P
    - PG_RETURN_TIMESTAMP
    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:3409,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3410,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3412,1
    - Dst: timestamptz_mi_interval_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3412,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3413
      start: 3406
    functionDepth: 4
    functionLinenumber: 3406
    functionLinenumberEnd: 3413
    functionName: timestamptz_mi_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - timestamptz_mi_interval_internal
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_INTERVAL_P
    - PG_RETURN_TIMESTAMP
    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_TEXT_PP
    - timestamptz_pl_interval_internal
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_INTERVAL_P
    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_TEXT_PP
    - timestamptz_mi_interval_internal
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_INTERVAL_P
    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:3446,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3447,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3448,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3449,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3453,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3453,1
    - Dst: pg_sub_s32_overflow
      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: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3456,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3457,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3458,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3459,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 2
    argNames:
    - interval
    - result
    argTypes:
    - Interval*
    - Interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3461
      start: 3443
    functionDepth: 2
    functionLinenumber: 3443
    functionLinenumberEnd: 3461
    functionName: interval_um_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 2
    functionsReached:
    - errmsg
    - INTERVAL_IS_NOEND
    - INTERVAL_NOBEGIN
    - INTERVAL_NOEND
    - pg_sub_s64_overflow
    - ereport
    - INTERVAL_NOT_FINITE
    - pg_sub_s32_overflow
    - INTERVAL_IS_NOBEGIN
    - INT64CONST
    - errcode
    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:3466,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3469,1
    - Dst: interval_um_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3470,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3473
      start: 3463
    functionDepth: 3
    functionLinenumber: 3463
    functionLinenumberEnd: 3473
    functionName: interval_um
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - palloc
    - PG_RETURN_INTERVAL_P
    - PG_GETARG_INTERVAL_P
    - interval_um_internal
    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:3479,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3480,1
    - Dst: interval_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3484,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3488,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3489
      start: 3476
    functionDepth: 3
    functionLinenumber: 3476
    functionLinenumberEnd: 3489
    functionName: interval_smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INTERVAL_P
    - PG_GETARG_INTERVAL_P
    - interval_cmp_internal
    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:3494,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3495,1
    - Dst: interval_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3498,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3502,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3503
      start: 3491
    functionDepth: 3
    functionLinenumber: 3491
    functionLinenumberEnd: 3503
    functionName: interval_larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INTERVAL_P
    - PG_GETARG_INTERVAL_P
    - interval_cmp_internal
    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:3508,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3508,1
    - 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: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3511,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3512,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3513,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3514,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3515,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3516,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3517,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 3
    argNames:
    - span1
    - span2
    - result
    argTypes:
    - Interval*
    - Interval*
    - Interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3518
      start: 3505
    functionDepth: 2
    functionLinenumber: 3505
    functionLinenumberEnd: 3518
    functionName: finite_interval_pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - ereport
    - pg_add_s32_overflow
    - pg_add_s64_overflow
    - INTERVAL_NOT_FINITE
    - errcode
    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:3523,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3524,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3527,1
    - Dst: INTERVAL_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3535,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3537,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3538,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3539,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3540,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3542,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3544,1
    - Dst: INTERVAL_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3546,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3547,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3548,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3549,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3551,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3553,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3554,1
    - Dst: finite_interval_pl
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3556,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3558,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3559
      start: 3520
    functionDepth: 3
    functionLinenumber: 3520
    functionLinenumberEnd: 3559
    functionName: interval_pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 1
    functionsReached:
    - errmsg
    - INTERVAL_IS_NOEND
    - INTERVAL_NOBEGIN
    - INTERVAL_NOEND
    - ereport
    - INTERVAL_NOT_FINITE
    - PG_GETARG_INTERVAL_P
    - finite_interval_pl
    - PG_RETURN_INTERVAL_P
    - INTERVAL_IS_NOBEGIN
    - memcpy
    - palloc
    - errcode
    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:3564,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3564,1
    - 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: pg_sub_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3567,1
    - Dst: pg_sub_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3568,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3569,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3570,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3571,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3572,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3573,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 3
    argNames:
    - span1
    - span2
    - result
    argTypes:
    - Interval*
    - Interval*
    - Interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3574
      start: 3561
    functionDepth: 2
    functionLinenumber: 3561
    functionLinenumberEnd: 3574
    functionName: finite_interval_mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - ereport
    - INTERVAL_NOT_FINITE
    - pg_sub_s32_overflow
    - pg_sub_s64_overflow
    - errcode
    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:3579,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3580,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3583,1
    - Dst: INTERVAL_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3591,1
    - Dst: INTERVAL_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3593,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3594,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3595,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3596,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3598,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3600,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3602,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3603,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3604,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3605,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3607,1
    - Dst: INTERVAL_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3609,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3610,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3611,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3612,1
    - Dst: finite_interval_mi
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3614,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3616,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3617
      start: 3576
    functionDepth: 3
    functionLinenumber: 3576
    functionLinenumberEnd: 3617
    functionName: interval_mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 1
    functionsReached:
    - errmsg
    - finite_interval_mi
    - INTERVAL_IS_NOEND
    - INTERVAL_NOBEGIN
    - INTERVAL_NOEND
    - ereport
    - PG_RETURN_INTERVAL_P
    - PG_GETARG_INTERVAL_P
    - INTERVAL_IS_NOBEGIN
    - palloc
    - errcode
    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:3628,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3629,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3637,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3645,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3648,1
    - Dst: interval_um_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3654,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3656,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3658,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3660,1
    - Dst: interval_sign
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3662,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3668,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3670,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3672,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3676,1
    - Dst: FLOAT8_FITS_IN_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3676,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3681,1
    - Dst: FLOAT8_FITS_IN_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3681,1
    - Dst: TSROUND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3704,1
    - Dst: TSROUND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3707,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3714,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3716,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3724,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3727,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3728,1
    - Dst: FLOAT8_FITS_IN_INT64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3728,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3732,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3735,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3738,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3739,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3740,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3742,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 59
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3743
      start: 3625
    functionDepth: 3
    functionLinenumber: 3625
    functionLinenumberEnd: 3743
    functionName: interval_mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - isinf
    - PG_GETARG_FLOAT8
    - interval_um_internal
    - PG_RETURN_INTERVAL_P
    - TSROUND
    - INTERVAL_NOT_FINITE
    - PG_GETARG_INTERVAL_P
    - INTERVAL_NOEND
    - interval_sign
    - memcpy
    - fabs
    - FLOAT8_FITS_IN_INT64
    - errmsg
    - rint
    - FLOAT8_FITS_IN_INT32
    - palloc
    - isnan
    - INTERVAL_NOBEGIN
    - ereport
    - pg_add_s32_overflow
    - PG_RETURN_NULL
    - errcode
    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:3749,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3750,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3752,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3753
      start: 3745
    functionDepth: 1
    functionLinenumber: 3745
    functionLinenumberEnd: 3753
    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:3758,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3759,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3767,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3770,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3771,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3772,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3781,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3784,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3786,1
    - Dst: interval_um_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3790,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3792,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3794,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3798,1
    - Dst: FLOAT8_FITS_IN_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3798,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3803,1
    - Dst: FLOAT8_FITS_IN_INT32
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3803,1
    - Dst: TSROUND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3811,1
    - Dst: TSROUND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3814,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3815,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3817,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3825,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3828,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3829,1
    - Dst: FLOAT8_FITS_IN_INT64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3829,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3833,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3836,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3839,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3840,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3841,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3843,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3844
      start: 3755
    functionDepth: 3
    functionLinenumber: 3755
    functionLinenumberEnd: 3844
    functionName: interval_div
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - isinf
    - PG_GETARG_FLOAT8
    - interval_um_internal
    - PG_RETURN_INTERVAL_P
    - TSROUND
    - INTERVAL_NOT_FINITE
    - PG_GETARG_INTERVAL_P
    - memcpy
    - fabs
    - FLOAT8_FITS_IN_INT64
    - errmsg
    - rint
    - FLOAT8_FITS_IN_INT32
    - palloc
    - isnan
    - ereport
    - pg_add_s32_overflow
    - PG_RETURN_NULL
    - errcode
    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:3859,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3860,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3861,1
    - Dst: PG_GETARG_BOOL
      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: interval_sign
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3866,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3867,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3868,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3869,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3877,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3878,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3878,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3879,1
    - Dst: timestamptz_mi_interval_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3883,1
    - Dst: timestamptz_pl_interval_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3885,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3888,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3890,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3891
      start: 3856
    functionDepth: 4
    functionLinenumber: 3856
    functionLinenumberEnd: 3891
    functionName: in_range_timestamptz_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - INTERVAL_IS_NOEND
    - TIMESTAMP_IS_NOBEGIN
    - PG_RETURN_BOOL
    - timestamptz_pl_interval_internal
    - ereport
    - timestamptz_mi_interval_internal
    - TIMESTAMP_IS_NOEND
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_BOOL
    - PG_GETARG_INTERVAL_P
    - interval_sign
    - errcode
    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:3896,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3897,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3898,1
    - Dst: PG_GETARG_BOOL
      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: interval_sign
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3903,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3904,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3905,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3906,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3914,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3915,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3915,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3916,1
    - Dst: DatumGetTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3920,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3920,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3921,1
    - Dst: IntervalPGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3922,1
    - Dst: DatumGetTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3924,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3924,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3925,1
    - Dst: IntervalPGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3926,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3929,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3931,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3932
      start: 3893
    functionDepth: 3
    functionLinenumber: 3893
    functionLinenumberEnd: 3932
    functionName: in_range_timestamp_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - INTERVAL_IS_NOEND
    - TIMESTAMP_IS_NOBEGIN
    - IntervalPGetDatum
    - PG_RETURN_BOOL
    - ereport
    - TimestampGetDatum
    - TIMESTAMP_IS_NOEND
    - PG_GETARG_BOOL
    - PG_GETARG_INTERVAL_P
    - DirectFunctionCall2
    - interval_sign
    - DatumGetTimestamp
    - PG_GETARG_TIMESTAMP
    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:3937,1
    - 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_BOOL
      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: interval_sign
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3944,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3945,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3946,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3947,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3955,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3956,1
    - Dst: INTERVAL_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3956,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3957,1
    - Dst: DatumGetIntervalP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3961,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3961,1
    - Dst: IntervalPGetDatum
      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: DatumGetIntervalP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3965,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3965,1
    - Dst: IntervalPGetDatum
      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: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3970,1
    - Dst: interval_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3970,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3972,1
    - Dst: interval_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3972,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3973
      start: 3934
    functionDepth: 3
    functionLinenumber: 3934
    functionLinenumberEnd: 3973
    functionName: in_range_interval_interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - INTERVAL_IS_NOBEGIN
    - interval_cmp_internal
    - INTERVAL_IS_NOEND
    - IntervalPGetDatum
    - PG_RETURN_BOOL
    - ereport
    - PG_GETARG_BOOL
    - PG_GETARG_INTERVAL_P
    - DatumGetIntervalP
    - interval_sign
    - DirectFunctionCall2
    - errcode
    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:3991,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3992,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3994,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3996,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:3998,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - fcinfo
    argTypes:
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4001
      start: 3984
    functionDepth: 2
    functionLinenumber: 3984
    functionLinenumberEnd: 4001
    functionName: makeIntervalAggState
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - AggCheckCallContext
    - MemoryContextSwitchTo
    - elog
    - palloc0
    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:4010,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4016,1
    - Dst: finite_interval_pl
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4022,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - state
    - newval
    argTypes:
    - IntervalAggState*
    - Interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4024
      start: 4006
    functionDepth: 3
    functionLinenumber: 4006
    functionLinenumberEnd: 4024
    functionName: do_interval_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - INTERVAL_IS_NOBEGIN
    - INTERVAL_IS_NOEND
    - finite_interval_pl
    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:4033,1
    - Dst: INTERVAL_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4039,1
    - Dst: finite_interval_mi
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4048,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4052,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4053,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - state
    - newval
    argTypes:
    - IntervalAggState*
    - Interval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4055
      start: 4029
    functionDepth: 3
    functionLinenumber: 4029
    functionLinenumberEnd: 4055
    functionName: do_interval_discard
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - Assert
    - finite_interval_mi
    - INTERVAL_IS_NOEND
    - 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:4065,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4065,1
    - Dst: makeIntervalAggState
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4069,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4071,1
    - Dst: do_interval_accum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4072,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4072,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4074,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4075
      start: 4060
    functionDepth: 4
    functionLinenumber: 4060
    functionLinenumberEnd: 4075
    functionName: interval_avg_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - makeIntervalAggState
    - do_interval_accum
    - PG_GETARG_INTERVAL_P
    - PG_RETURN_POINTER
    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:4089,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4089,1
    - 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_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4093,1
    - Dst: makeIntervalAggState
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4098,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4108,1
    - Dst: finite_interval_pl
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4117,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4119,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4120
      start: 4083
    functionDepth: 3
    functionLinenumber: 4083
    functionLinenumberEnd: 4120
    functionName: interval_avg_combine
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - makeIntervalAggState
    - finite_interval_pl
    - PG_RETURN_POINTER
    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:4134,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4135,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4137,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4139,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4142,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4145,1
    - Dst: pq_sendint32
      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_sendint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4150,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4153,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4155,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4158
      start: 4126
    functionDepth: 4
    functionLinenumber: 4126
    functionLinenumberEnd: 4158
    functionName: interval_avg_serialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - pq_endtypsend
    - PG_RETURN_BYTEA_P
    - AggCheckCallContext
    - elog
    - pq_sendint32
    - pq_sendint64
    - pq_begintypsend
    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:4171,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4172,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4174,1
    - Dst: initReadOnlyStringInfo
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4180,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4180,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4181,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4183,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4186,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4189,1
    - Dst: pq_getmsgint
      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_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4194,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4197,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4199,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4202
      start: 4164
    functionDepth: 2
    functionLinenumber: 4164
    functionLinenumberEnd: 4202
    functionName: interval_avg_deserialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - pq_getmsgend
    - PG_GETARG_BYTEA_PP
    - palloc0
    - AggCheckCallContext
    - elog
    - pq_getmsgint64
    - initReadOnlyStringInfo
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - 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:4212,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4212,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4216,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4218,1
    - Dst: do_interval_discard
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4219,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4219,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4221,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4222
      start: 4207
    functionDepth: 4
    functionLinenumber: 4207
    functionLinenumberEnd: 4222
    functionName: interval_avg_accum_inv
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - do_interval_discard
    - PG_ARGISNULL
    - elog
    - PG_GETARG_INTERVAL_P
    - PG_RETURN_POINTER
    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:4230,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4230,1
    - Dst: IA_TOTAL_COUNT
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4233,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4234,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4246,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4247,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4248,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4250,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4252,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4254,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4256,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4259,1
    - Dst: IntervalPGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4260,1
    - Dst: Float8GetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4261,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4262
      start: 4225
    functionDepth: 2
    functionLinenumber: 4225
    functionLinenumberEnd: 4262
    functionName: interval_avg
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_POINTER
    - INTERVAL_NOBEGIN
    - IA_TOTAL_COUNT
    - IntervalPGetDatum
    - PG_ARGISNULL
    - ereport
    - Float8GetDatum
    - PG_RETURN_NULL
    - PG_RETURN_INTERVAL_P
    - DirectFunctionCall2
    - INTERVAL_NOEND
    - palloc
    - errcode
    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:4271,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4271,1
    - Dst: IA_TOTAL_COUNT
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4274,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4275,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4283,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4284,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4285,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4287,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4290,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4292,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4294,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4296,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4297
      start: 4265
    functionDepth: 2
    functionLinenumber: 4265
    functionLinenumberEnd: 4297
    functionName: interval_sum
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_POINTER
    - INTERVAL_NOBEGIN
    - IA_TOTAL_COUNT
    - PG_ARGISNULL
    - ereport
    - PG_RETURN_NULL
    - PG_RETURN_INTERVAL_P
    - INTERVAL_NOEND
    - memcpy
    - palloc
    - errcode
    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:4308,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4309,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4320,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4328,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4330,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4331,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4332,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4333,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4335,1
    - Dst: TIMESTAMP_IS_NOEND
      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: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4340,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4341,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4342,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4344,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4346,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4347,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4348,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4349,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4350,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4351,1
    - Dst: isleap
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4403,1
    - Dst: isleap
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4408,1
    - Dst: itm2interval
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4431,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4432,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4433,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4434,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4437,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4438,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4439,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4441,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 76
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4442
      start: 4305
    functionDepth: 2
    functionLinenumber: 4305
    functionLinenumberEnd: 4442
    functionName: timestamp_age
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - TIMESTAMP_IS_NOBEGIN
    - PG_GETARG_TIMESTAMP
    - INTERVAL_NOBEGIN
    - timestamp2tm
    - ereport
    - TIMESTAMP_IS_NOEND
    - isleap
    - PG_RETURN_INTERVAL_P
    - INTERVAL_NOEND
    - palloc
    - errcode
    - itm2interval
    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:4454,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4455,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4468,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4476,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4478,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4479,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4480,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4481,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4483,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4485,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4487,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4488,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4489,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4490,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4492,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4494,1
    - Dst: INTERVAL_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4495,1
    - Dst: TIMESTAMP_IS_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4496,1
    - Dst: INTERVAL_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4497,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4498,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4499,1
    - Dst: isleap
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4551,1
    - Dst: isleap
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4556,1
    - Dst: itm2interval
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4583,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4584,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4585,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4586,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4589,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4590,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4591,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4593,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 76
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4594
      start: 4451
    functionDepth: 2
    functionLinenumber: 4451
    functionLinenumberEnd: 4594
    functionName: timestamptz_age
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - TIMESTAMP_IS_NOBEGIN
    - INTERVAL_NOBEGIN
    - timestamp2tm
    - ereport
    - TIMESTAMP_IS_NOEND
    - PG_GETARG_TIMESTAMPTZ
    - isleap
    - PG_RETURN_INTERVAL_P
    - INTERVAL_NOEND
    - palloc
    - errcode
    - itm2interval
    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:4608,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4609,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4610,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4617,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4618,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4620,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4621,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4622,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4623,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4625,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4626,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4627,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4628,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4631,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4632,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4633,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4635,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4635,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4636,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4636,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4637,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4638,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4639,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4642,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4643,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4644,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4646,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4646,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4647,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4648,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4649,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4663,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4663,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4664,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4665,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4666,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4667,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4670,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4671
      start: 4605
    functionDepth: 2
    functionLinenumber: 4605
    functionLinenumberEnd: 4671
    functionName: timestamp_bin
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - PG_RETURN_TIMESTAMP
    - IS_VALID_TIMESTAMP
    - TIMESTAMP_NOT_FINITE
    - ereport
    - unlikely
    - pg_mul_s64_overflow
    - INTERVAL_NOT_FINITE
    - PG_GETARG_INTERVAL_P
    - pg_add_s64_overflow
    - pg_sub_s64_overflow
    - PG_GETARG_TIMESTAMP
    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:4679,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4680,1
    - Dst: downcase_truncate_identifier
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4689,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4689,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4690,1
    - Dst: DecodeUnits
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4693,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4697,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4719,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4722,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4723,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4724,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4725,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4730,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4731,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4732,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4733,1
    - Dst: date2isoweek
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4741,1
    - Dst: isoweek2date
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4752,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4813,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4814,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4815,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4816,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4820,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4821,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4822,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4823,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4827,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4828,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4829,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4830,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4834,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 87
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4835
      start: 4676
    functionDepth: 4
    functionLinenumber: 4676
    functionLinenumberEnd: 4835
    functionName: timestamp_trunc
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - PG_RETURN_TIMESTAMP
    - date2isoweek
    - timestamp2tm
    - PG_GETARG_TEXT_PP
    - TIMESTAMP_NOT_FINITE
    - format_type_be
    - ereport
    - tm2timestamp
    - isoweek2date
    - downcase_truncate_identifier
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - PG_GETARG_TIMESTAMP
    - DecodeUnits
    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:4843,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4844,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4845,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4852,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4853,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4855,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4856,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4857,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4858,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4860,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4861,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4862,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4863,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4866,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4867,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4868,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4870,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4870,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4871,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4871,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: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4877,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4878,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4879,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4881,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4881,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4882,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4883,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4884,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4898,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4898,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4899,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4900,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4901,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4902,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4905,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4906
      start: 4840
    functionDepth: 2
    functionLinenumber: 4840
    functionLinenumberEnd: 4906
    functionName: timestamptz_bin
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - IS_VALID_TIMESTAMP
    - TIMESTAMP_NOT_FINITE
    - ereport
    - unlikely
    - pg_mul_s64_overflow
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_INTERVAL_P
    - INTERVAL_NOT_FINITE
    - pg_add_s64_overflow
    - pg_sub_s64_overflow
    - PG_RETURN_TIMESTAMPTZ
    - errcode
    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:4927,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4927,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4928,1
    - Dst: DecodeUnits
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4931,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4935,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4957,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4961,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4962,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4963,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4964,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4969,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4970,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4971,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4972,1
    - Dst: date2isoweek
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4980,1
    - Dst: isoweek2date
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:4991,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5062,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5063,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5064,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5065,1
    - Dst: DetermineTimeZoneOffset
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5070,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5072,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5073,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5074,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5075,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: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5082,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 91
    argCount: 3
    argNames:
    - units
    - timestamp
    - tzp
    argTypes:
    - text*
    - TimestampTz
    - pg_tz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5087
      start: 4914
    functionDepth: 4
    functionLinenumber: 4914
    functionLinenumberEnd: 5087
    functionName: timestamptz_trunc_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - date2isoweek
    - timestamp2tm
    - DetermineTimeZoneOffset
    - TIMESTAMP_NOT_FINITE
    - format_type_be
    - ereport
    - tm2timestamp
    - isoweek2date
    - downcase_truncate_identifier
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - PG_RETURN_TIMESTAMPTZ
    - errcode
    - 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:5095,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5096,1
    - Dst: timestamptz_trunc_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5099,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5102
      start: 5092
    functionDepth: 5
    functionLinenumber: 5092
    functionLinenumberEnd: 5102
    functionName: timestamptz_trunc
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TIMESTAMPTZ
    - PG_GETARG_TEXT_PP
    - timestamptz_trunc_internal
    - PG_GETARG_TIMESTAMPTZ
    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:5110,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5111,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5112,1
    - Dst: lookup_timezone
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5119,1
    - Dst: timestamptz_trunc_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5121,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5124
      start: 5107
    functionDepth: 5
    functionLinenumber: 5107
    functionLinenumberEnd: 5124
    functionName: timestamptz_trunc_zone
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - lookup_timezone
    - PG_GETARG_TEXT_PP
    - timestamptz_trunc_internal
    - PG_GETARG_TIMESTAMPTZ
    - PG_RETURN_TIMESTAMPTZ
    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:5132,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5133,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5141,1
    - Dst: downcase_truncate_identifier
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5143,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5143,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5144,1
    - Dst: DecodeUnits
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5147,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5151,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5172,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5173,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5177,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5178,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5179,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5180,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5181,1
    - Dst: interval2itm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5186,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5229,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5230,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5231,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5232,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5233,1
    - Dst: itm2interval
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5236,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5237,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5238,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5239,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5243,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5244,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5245,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5246,1
    - Dst: PG_RETURN_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5249,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 64
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5250
      start: 5129
    functionDepth: 4
    functionLinenumber: 5129
    functionLinenumberEnd: 5250
    functionName: interval_trunc
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - interval2itm
    - memcpy
    - PG_GETARG_TEXT_PP
    - format_type_be
    - ereport
    - downcase_truncate_identifier
    - PG_GETARG_INTERVAL_P
    - INTERVAL_NOT_FINITE
    - PG_RETURN_INTERVAL_P
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - palloc
    - errdetail
    - errcode
    - itm2interval
    - DecodeUnits
    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:5268,1
    - Dst: j2day
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - year
    - week
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5274
      start: 5261
    functionDepth: 1
    functionLinenumber: 5261
    functionLinenumberEnd: 5274
    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:5284,1
    - Dst: isoweek2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - woy
    - year
    - mon
    - mday
    argTypes:
    - int
    - int*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5285
      start: 5281
    functionDepth: 2
    functionLinenumber: 5281
    functionLinenumberEnd: 5285
    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:5299,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5305,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: 5306
      start: 5294
    functionDepth: 2
    functionLinenumber: 5294
    functionLinenumberEnd: 5306
    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:5321,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5324,1
    - Dst: j2day
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5327,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5335,1
    - Dst: j2day
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5338,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5349,1
    - Dst: j2day
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5352,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - year
    - mon
    - mday
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5359
      start: 5312
    functionDepth: 1
    functionLinenumber: 5312
    functionLinenumberEnd: 5359
    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:5376,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5379,1
    - Dst: j2day
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5382,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5390,1
    - Dst: j2day
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5393,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5406,1
    - Dst: j2day
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5409,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - year
    - mon
    - mday
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5416
      start: 5367
    functionDepth: 1
    functionLinenumber: 5367
    functionLinenumberEnd: 5416
    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:5427,1
    - Dst: isoweek2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5427,1
    - Dst: date2isoyear
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - year
    - mon
    - mday
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5428
      start: 5424
    functionDepth: 2
    functionLinenumber: 5424
    functionLinenumberEnd: 5428
    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:5446,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5447,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5448,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5450,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5481,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5483,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5486,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5487,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5488,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5490,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: 5493
      start: 5441
    functionDepth: 4
    functionLinenumber: 5441
    functionLinenumberEnd: 5493
    functionName: NonFiniteTimestampTzPart
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - format_type_be
    - ereport
    - errcode
    - 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:5501,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5502,1
    - Dst: downcase_truncate_identifier
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5512,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5512,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5513,1
    - Dst: DecodeUnits
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5516,1
    - Dst: DecodeSpecial
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5518,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5520,1
    - Dst: NonFiniteTimestampTzPart
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5522,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5523,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5531,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5532,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5533,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5534,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5536,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5537,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5538,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5539,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5542,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5545,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5550,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5551,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5552,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5553,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5558,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5567,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5567,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5567,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5569,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5578,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5578,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5578,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5580,1
    - Dst: date2isoweek
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5604,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5653,1
    - Dst: numeric_add_opt_error
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5653,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5653,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5653,1
    - Dst: numeric_div_opt_error
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5654,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5654,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5654,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5655,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5655,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5659,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5659,1
    - Dst: date2isoyear
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5665,1
    - Dst: j2day
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5673,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5673,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5679,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5680,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5687,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5688,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5689,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5690,1
    - Dst: SetEpochTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5699,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5706,1
    - Dst: numeric_div_opt_error
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5709,1
    - Dst: numeric_sub_opt_error
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5709,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5709,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5710,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5712,1
    - Dst: DatumGetNumeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5714,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5714,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5715,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5716,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5718,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5729,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5734,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5735,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5736,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5737,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5743,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5744,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5745,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5746,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5751,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5751,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5753,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 128
    argCount: 1
    argNames:
    - retnumeric
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5754
      start: 5498
    functionDepth: 5
    functionLinenumber: 5498
    functionLinenumberEnd: 5754
    functionName: timestamp_part_common
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - DecodeSpecial
    - int64_div_fast_to_numeric
    - PG_RETURN_NUMERIC
    - date2j
    - NumericGetDatum
    - Int32GetDatum
    - DatumGetNumeric
    - NonFiniteTimestampTzPart
    - CStringGetDatum
    - DirectFunctionCall2
    - PG_RETURN_FLOAT8
    - errmsg
    - numeric_add_opt_error
    - numeric_div_opt_error
    - numeric_sub_opt_error
    - format_type_be
    - date2isoyear
    - downcase_truncate_identifier
    - DirectFunctionCall3
    - VARSIZE_ANY_EXHDR
    - j2day
    - ObjectIdGetDatum
    - DecodeUnits
    - date2isoweek
    - TIMESTAMP_IS_NOBEGIN
    - timestamp2tm
    - PG_GETARG_TEXT_PP
    - TIMESTAMP_NOT_FINITE
    - PG_GETARG_TIMESTAMP
    - ereport
    - SetEpochTimestamp
    - PG_RETURN_NULL
    - int64_to_numeric
    - VARDATA_ANY
    - INT64CONST
    - errcode
    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:5759,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5760
      start: 5756
    functionDepth: 6
    functionLinenumber: 5756
    functionLinenumberEnd: 5760
    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:5765,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5766
      start: 5762
    functionDepth: 6
    functionLinenumber: 5762
    functionLinenumberEnd: 5766
    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:5774,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5775,1
    - Dst: downcase_truncate_identifier
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5786,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5786,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5787,1
    - Dst: DecodeUnits
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5790,1
    - Dst: DecodeSpecial
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5792,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5794,1
    - Dst: NonFiniteTimestampTzPart
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5796,1
    - Dst: TIMESTAMP_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5797,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5805,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5806,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5807,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5808,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5810,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5811,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5812,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5813,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5816,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5819,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5824,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5825,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5826,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5827,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5844,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5853,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5853,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5853,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5855,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5864,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5864,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5864,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5866,1
    - Dst: date2isoweek
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5890,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5927,1
    - Dst: numeric_add_opt_error
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5927,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5927,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5927,1
    - Dst: numeric_div_opt_error
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5928,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5928,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5928,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5929,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5929,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5933,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5933,1
    - Dst: date2isoyear
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5939,1
    - Dst: j2day
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5947,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5947,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5953,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5954,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5958,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5959,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5960,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5961,1
    - Dst: SetEpochTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5970,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5977,1
    - Dst: numeric_div_opt_error
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5980,1
    - Dst: numeric_sub_opt_error
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5980,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5980,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5981,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5983,1
    - Dst: DatumGetNumeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5985,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5985,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5986,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5987,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:5989,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6000,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6005,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6006,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6007,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6008,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6014,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6015,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6016,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6017,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6023,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6023,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6025,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 134
    argCount: 1
    argNames:
    - retnumeric
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6026
      start: 5771
    functionDepth: 5
    functionLinenumber: 5771
    functionLinenumberEnd: 6026
    functionName: timestamptz_part_common
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - DecodeSpecial
    - int64_div_fast_to_numeric
    - PG_RETURN_NUMERIC
    - PG_GETARG_TIMESTAMPTZ
    - date2j
    - NumericGetDatum
    - Int32GetDatum
    - DatumGetNumeric
    - NonFiniteTimestampTzPart
    - CStringGetDatum
    - DirectFunctionCall2
    - PG_RETURN_FLOAT8
    - errmsg
    - numeric_add_opt_error
    - numeric_div_opt_error
    - numeric_sub_opt_error
    - format_type_be
    - date2isoyear
    - downcase_truncate_identifier
    - DirectFunctionCall3
    - VARSIZE_ANY_EXHDR
    - j2day
    - ObjectIdGetDatum
    - DecodeUnits
    - date2isoweek
    - TIMESTAMP_IS_NOBEGIN
    - timestamp2tm
    - PG_GETARG_TEXT_PP
    - TIMESTAMP_NOT_FINITE
    - ereport
    - SetEpochTimestamp
    - PG_RETURN_NULL
    - int64_to_numeric
    - VARDATA_ANY
    - INT64CONST
    - errcode
    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:6031,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6032
      start: 6028
    functionDepth: 6
    functionLinenumber: 6028
    functionLinenumberEnd: 6032
    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:6037,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6038
      start: 6034
    functionDepth: 6
    functionLinenumber: 6034
    functionLinenumberEnd: 6038
    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:6055,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6056,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6057,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6058,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6081,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6083,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6086,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6087,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6088,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6089,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 4
    argNames:
    - type
    - unit
    - lowunits
    - isNegative
    argTypes:
    - int
    - int
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6092
      start: 6051
    functionDepth: 4
    functionLinenumber: 6051
    functionLinenumberEnd: 6092
    functionName: NonFiniteIntervalPart
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - format_type_be
    - ereport
    - errcode
    - 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:6100,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6101,1
    - Dst: downcase_truncate_identifier
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6109,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6109,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6110,1
    - Dst: DecodeUnits
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6113,1
    - Dst: DecodeSpecial
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6115,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6117,1
    - Dst: NonFiniteIntervalPart
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6119,1
    - Dst: INTERVAL_IS_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6120,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6127,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6128,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6129,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6130,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6132,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6133,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6134,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6135,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6138,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6141,1
    - Dst: interval2itm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6146,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6150,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6159,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6159,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6159,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6161,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6170,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6170,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6170,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6172,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6230,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6231,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6232,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6233,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6266,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6267,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6268,1
    - Dst: numeric_add_opt_error
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6271,1
    - Dst: int64_div_fast_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6271,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6272,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6275,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6286,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6291,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6292,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6293,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6294,1
    - Dst: PG_RETURN_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6299,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6299,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6301,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 91
    argCount: 1
    argNames:
    - retnumeric
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6302
      start: 6097
    functionDepth: 5
    functionLinenumber: 6097
    functionLinenumberEnd: 6302
    functionName: interval_part_common
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - DecodeSpecial
    - int64_div_fast_to_numeric
    - PG_RETURN_NUMERIC
    - pg_add_s64_overflow
    - pg_mul_s64_overflow
    - interval2itm
    - NonFiniteIntervalPart
    - INTERVAL_IS_NOBEGIN
    - Int32GetDatum
    - CStringGetDatum
    - INTERVAL_NOT_FINITE
    - PG_GETARG_INTERVAL_P
    - PG_RETURN_FLOAT8
    - errmsg
    - numeric_add_opt_error
    - format_type_be
    - downcase_truncate_identifier
    - DirectFunctionCall3
    - VARSIZE_ANY_EXHDR
    - ObjectIdGetDatum
    - DecodeUnits
    - PG_GETARG_TEXT_PP
    - ereport
    - PG_RETURN_NULL
    - int64_to_numeric
    - VARDATA_ANY
    - INT64CONST
    - errcode
    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:6307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6308
      start: 6304
    functionDepth: 6
    functionLinenumber: 6304
    functionLinenumberEnd: 6308
    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:6313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6314
      start: 6310
    functionDepth: 6
    functionLinenumber: 6310
    functionLinenumberEnd: 6314
    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:6328,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6329,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6339,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6340,1
    - Dst: text_to_cstring_buffer
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6345,1
    - Dst: DecodeTimezoneName
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6347,1
    - Dst: dt2local
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6353,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6358,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6359,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6360,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6361,1
    - Dst: DetermineTimeZoneAbbrevOffset
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6362,1
    - Dst: dt2local
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6363,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6368,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6369,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6370,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6371,1
    - Dst: DetermineTimeZoneOffset
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6372,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6373,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6374,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6375,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6376,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6379,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6380,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6381,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6382,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6384,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6385
      start: 6325
    functionDepth: 2
    functionLinenumber: 6325
    functionLinenumberEnd: 6385
    functionName: timestamp_zone
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - DecodeTimezoneName
    - IS_VALID_TIMESTAMP
    - timestamp2tm
    - PG_GETARG_TEXT_PP
    - TIMESTAMP_NOT_FINITE
    - DetermineTimeZoneOffset
    - dt2local
    - ereport
    - tm2timestamp
    - DetermineTimeZoneAbbrevOffset
    - text_to_cstring_buffer
    - PG_RETURN_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    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:6393,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6394,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6398,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6399,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6401,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6402,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6403,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6404,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6405,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6405,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6406,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6409,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6410,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6411,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6412,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6412,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6413,1
    - Dst: dt2local
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6417,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6419,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6420,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6421,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6422,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6424,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6425
      start: 6390
    functionDepth: 2
    functionLinenumber: 6390
    functionLinenumberEnd: 6425
    functionName: timestamp_izone
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - DirectFunctionCall1
    - IS_VALID_TIMESTAMP
    - DatumGetCString
    - TIMESTAMP_NOT_FINITE
    - dt2local
    - ereport
    - PointerGetDatum
    - INTERVAL_NOT_FINITE
    - PG_GETARG_INTERVAL_P
    - PG_RETURN_TIMESTAMPTZ
    - PG_GETARG_TIMESTAMP
    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:6439,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6442
      start: 6434
    functionDepth: 1
    functionLinenumber: 6434
    functionLinenumberEnd: 6442
    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: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6450,1
    - Dst: PG_RETURN_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6452,1
    - Dst: timestamp2timestamptz
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6453
      start: 6447
    functionDepth: 1
    functionLinenumber: 6447
    functionLinenumberEnd: 6453
    functionName: timestamp_timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TIMESTAMPTZ
    - timestamp2timestamptz
    - PG_GETARG_TIMESTAMP
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_timestamptz(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6477,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6481,1
    - Dst: DetermineTimeZoneOffset
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6483,1
    - Dst: dt2local
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6485,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6487,1
    - Dst: TIMESTAMP_NOBEGIN
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6496,1
    - Dst: TIMESTAMP_NOEND
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6501,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6507,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6508,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6509,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 2
    argNames:
    - timestamp
    - overflow
    argTypes:
    - Timestamp
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6512
      start: 6465
    functionDepth: 2
    functionLinenumber: 6465
    functionLinenumberEnd: 6512
    functionName: timestamp2timestamptz_opt_overflow
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 1
    functionsReached:
    - errmsg
    - TIMESTAMP_NOEND
    - TIMESTAMP_NOBEGIN
    - IS_VALID_TIMESTAMP
    - timestamp2tm
    - DetermineTimeZoneOffset
    - TIMESTAMP_NOT_FINITE
    - dt2local
    - ereport
    - errcode
    linkageType: ''
    returnType: TimestampTz
    signature: TimestampTz timestamp2timestamptz_opt_overflow(Timestamp timestamp,
      int *overflow)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timestamp2timestamptz_opt_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6520,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - timestamp
    argTypes:
    - Timestamp
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6521
      start: 6517
    functionDepth: 3
    functionLinenumber: 6517
    functionLinenumberEnd: 6521
    functionName: timestamp2timestamptz
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 2
    functionsReached:
    - timestamp2timestamptz_opt_overflow
    linkageType: ''
    returnType: TimestampTz
    signature: TimestampTz timestamp2timestamptz(Timestamp timestamp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6529,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6531,1
    - Dst: timestamptz2timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6531,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6532
      start: 6526
    functionDepth: 1
    functionLinenumber: 6526
    functionLinenumberEnd: 6532
    functionName: timestamptz_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TIMESTAMPTZ
    - PG_RETURN_TIMESTAMP
    - timestamptz2timestamp
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6543,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6547,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6548,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6549,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6550,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6551,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6552,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6553,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6554,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - timestamp
    argTypes:
    - TimestampTz
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6557
      start: 6534
    functionDepth: 2
    functionLinenumber: 6534
    functionLinenumberEnd: 6557
    functionName: timestamptz2timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 2
    functionsReached:
    - errmsg
    - timestamp2tm
    - TIMESTAMP_NOT_FINITE
    - ereport
    - tm2timestamp
    - errcode
    linkageType: ''
    returnType: Timestamp
    signature: Timestamp timestamptz2timestamp(TimestampTz timestamp)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6566,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6567,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6575,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6576,1
    - Dst: text_to_cstring_buffer
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6581,1
    - Dst: DecodeTimezoneName
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6583,1
    - Dst: dt2local
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6589,1
    - Dst: DetermineTimeZoneAbbrevOffsetTS
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6596,1
    - Dst: dt2local
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6597,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6605,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6606,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6607,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6608,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6609,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6610,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6611,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6612,1
    - Dst: IS_VALID_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6615,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6616,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6617,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6618,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6620,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6621
      start: 6563
    functionDepth: 2
    functionLinenumber: 6563
    functionLinenumberEnd: 6621
    functionName: timestamptz_zone
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_TIMESTAMP
    - DecodeTimezoneName
    - DetermineTimeZoneAbbrevOffsetTS
    - IS_VALID_TIMESTAMP
    - timestamp2tm
    - PG_GETARG_TEXT_PP
    - TIMESTAMP_NOT_FINITE
    - dt2local
    - ereport
    - tm2timestamp
    - PG_GETARG_TIMESTAMPTZ
    - text_to_cstring_buffer
    - errcode
    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:6630,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6631,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6635,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6636,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6638,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6639,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6640,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6641,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6642,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6642,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6643,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6646,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6647,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6648,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6649,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6649,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6650,1
    - Dst: dt2local
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6654,1
    - Dst: IS_VALID_TIMESTAMP
      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: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6661,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6662
      start: 6627
    functionDepth: 2
    functionLinenumber: 6627
    functionLinenumberEnd: 6662
    functionName: timestamptz_izone
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_TIMESTAMP
    - IS_VALID_TIMESTAMP
    - DatumGetCString
    - TIMESTAMP_NOT_FINITE
    - dt2local
    - ereport
    - PointerGetDatum
    - INTERVAL_NOT_FINITE
    - PG_GETARG_TIMESTAMPTZ
    - PG_GETARG_INTERVAL_P
    - DirectFunctionCall1
    - errcode
    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:6675,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6677,1
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6678,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6679,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6683,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6688,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6692,1
    - Dst: interval_sign
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6703,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6706,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6707,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6708,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6710,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6711,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6712,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6713,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6716,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6720,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6729,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6730,1
    - Dst: DatumGetTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6733,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6733,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6734,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6735,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6738,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6738,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6743,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6745
      start: 6667
    functionDepth: 3
    functionLinenumber: 6667
    functionLinenumberEnd: 6745
    functionName: generate_series_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - SRF_FIRSTCALL_INIT
    - SRF_RETURN_DONE
    - SRF_RETURN_NEXT
    - INTERVAL_NOT_FINITE
    - PG_GETARG_INTERVAL_P
    - DirectFunctionCall2
    - interval_sign
    - errmsg
    - SRF_PERCALL_SETUP
    - SRF_IS_FIRSTCALL
    - palloc
    - DatumGetTimestamp
    - PG_GETARG_TIMESTAMP
    - ereport
    - PointerGetDatum
    - TimestampGetDatum
    - timestamp_cmp_internal
    - errcode
    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:6759,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6761,1
    - Dst: PG_GETARG_TIMESTAMPTZ
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6762,1
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6763,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6764,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6764,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6768,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6773,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6777,1
    - Dst: lookup_timezone
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6786,1
    - Dst: interval_sign
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6789,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6792,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6793,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6794,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6796,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6797,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6798,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6799,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6802,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6806,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6815,1
    - Dst: timestamp_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6816,1
    - Dst: timestamptz_pl_interval_internal
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6819,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6824,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6824,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6829,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 1
    argNames:
    - fcinfo
    argTypes:
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6831
      start: 6751
    functionDepth: 3
    functionLinenumber: 6751
    functionLinenumberEnd: 6831
    functionName: generate_series_timestamptz_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - PG_GETARG_TIMESTAMPTZ
    - SRF_FIRSTCALL_INIT
    - SRF_RETURN_DONE
    - SRF_RETURN_NEXT
    - timestamptz_pl_interval_internal
    - INTERVAL_NOT_FINITE
    - PG_GETARG_INTERVAL_P
    - TimestampTzGetDatum
    - interval_sign
    - errmsg
    - SRF_PERCALL_SETUP
    - PG_NARGS
    - SRF_IS_FIRSTCALL
    - palloc
    - lookup_timezone
    - PG_GETARG_TEXT_PP
    - ereport
    - timestamp_cmp_internal
    - errcode
    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:6836,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6837
      start: 6833
    functionDepth: 4
    functionLinenumber: 6833
    functionLinenumberEnd: 6837
    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:6842,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6843
      start: 6839
    functionDepth: 4
    functionLinenumber: 6839
    functionLinenumberEnd: 6843
    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:6851,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6854,1
    - Dst: is_funcclause
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6859,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6867,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6867,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6868,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6868,1
    - Dst: estimate_expression_value
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6869,1
    - Dst: lthird
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6869,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6877,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6878,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6879,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6884,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6884,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6884,1
    - Dst: DatumGetTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6893,1
    - Dst: DatumGetTimestamp
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6894,1
    - Dst: DatumGetIntervalP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6895,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6902,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6902,1
    - Dst: pg_sub_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6903,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6905,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6906,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6907,1
    - Dst: INTERVAL_TO_MICROSECONDS
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6911,1
    - Dst: DatumGetIntervalP
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6916,1
    - Dst: INTERVAL_TO_MICROSECONDS
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6917,1
    - Dst: floor
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6919,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/timestamp.c:6928,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6929
      start: 6848
    functionDepth: 3
    functionLinenumber: 6848
    functionLinenumberEnd: 6929
    functionName: generate_series_timestamp_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/timestamp.c
    functionUses: 0
    functionsReached:
    - estimate_expression_value
    - floor
    - linitial
    - PG_GETARG_POINTER
    - is_funcclause
    - TIMESTAMP_NOT_FINITE
    - IsA
    - lsecond
    - lthird
    - TimestampGetDatum
    - INTERVAL_TO_MICROSECONDS
    - DatumGetIntervalP
    - DirectFunctionCall2
    - pg_sub_s64_overflow
    - DatumGetTimestamp
    - 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: 6910
      start: 6909
    functionDepth: 0
    functionLinenumber: 6909
    functionLinenumberEnd: 6910
    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:6943,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6944
      start: 6940
    functionDepth: 2
    functionLinenumber: 6940
    functionLinenumberEnd: 6944
    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:6949,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6950
      start: 6946
    functionDepth: 2
    functionLinenumber: 6946
    functionLinenumberEnd: 6950
    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:109,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/json.c:110,1
    - Dst: makeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/json.c:114,1
    - Dst: pg_parse_json_or_errsave
      Src: /src/postgres/src/backend/utils/adt/json.c:115,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/json.c:116,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/json.c:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 120
    functionName: json_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - makeJsonLexContext
    - PG_RETURN_NULL
    - pg_parse_json_or_errsave
    - PG_RETURN_TEXT_P
    - cstring_to_text
    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:129,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/json.c:131,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/json.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: json_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - TextDatumGetCString
    - PG_RETURN_CSTRING
    - PG_GETARG_DATUM
    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:140,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/json.c:143,1
    - Dst: pq_sendtext
      Src: /src/postgres/src/backend/utils/adt/json.c:144,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/json.c:144,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/json.c:144,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/json.c:145,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/json.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 137
    functionDepth: 4
    functionLinenumber: 137
    functionLinenumberEnd: 146
    functionName: json_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - pq_endtypsend
    - PG_RETURN_BYTEA_P
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - pq_begintypsend
    - pq_sendtext
    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:154,1
    - Dst: pq_getmsgtext
      Src: /src/postgres/src/backend/utils/adt/json.c:159,1
    - Dst: makeJsonLexContextCstringLen
      Src: /src/postgres/src/backend/utils/adt/json.c:162,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/json.c:162,1
    - Dst: pg_parse_json_or_ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:164,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/json.c:166,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/json.c:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 151
    functionDepth: 2
    functionLinenumber: 151
    functionLinenumberEnd: 167
    functionName: json_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - GetDatabaseEncoding
    - PG_GETARG_POINTER
    - pq_getmsgtext
    - pg_parse_json_or_ereport
    - PG_RETURN_TEXT_P
    - cstring_to_text_with_len
    - 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:186,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/json.c:189,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:193,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/json.c:193,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:202,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:203,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:204,1
    - Dst: array_to_json_internal
      Src: /src/postgres/src/backend/utils/adt/json.c:209,1
    - Dst: composite_to_json
      Src: /src/postgres/src/backend/utils/adt/json.c:212,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:216,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/json.c:217,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:218,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/json.c:218,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:220,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/json.c:220,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:222,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/utils/adt/json.c:225,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:237,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:240,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:241,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:242,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:244,1
    - Dst: JsonEncodeDateTime
      Src: /src/postgres/src/backend/utils/adt/json.c:250,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:251,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:252,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:253,1
    - Dst: JsonEncodeDateTime
      Src: /src/postgres/src/backend/utils/adt/json.c:260,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:261,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:262,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:263,1
    - Dst: JsonEncodeDateTime
      Src: /src/postgres/src/backend/utils/adt/json.c:270,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:271,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:272,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:273,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/utils/adt/json.c:278,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:279,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:280,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/utils/adt/json.c:284,1
    - Dst: OidFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/json.c:284,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:285,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/json.c:285,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/json.c:286,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:287,1
    - Dst: escape_json_text
      Src: /src/postgres/src/backend/utils/adt/json.c:293,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/json.c:293,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/utils/adt/json.c:296,1
    - Dst: escape_json
      Src: /src/postgres/src/backend/utils/adt/json.c:297,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:298,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: 302
      start: 178
    functionDepth: 2
    functionLinenumber: 178
    functionLinenumberEnd: 302
    functionName: datum_to_json_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - OidOutputFunctionCall
    - strlen
    - pfree
    - OidFunctionCall1
    - JsonEncodeDateTime
    - DatumGetPointer
    - errmsg
    - escape_json_text
    - array_to_json_internal
    - appendStringInfoString
    - composite_to_json
    - VARSIZE_ANY_EXHDR
    - check_stack_depth
    - Assert
    - escape_json
    - appendBinaryStringInfo
    - appendStringInfoChar
    - ereport
    - DatumGetTextPP
    - DatumGetBool
    - VARDATA_ANY
    - errcode
    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:313,1
    - Dst: DatumGetDateADT
      Src: /src/postgres/src/backend/utils/adt/json.c:322,1
    - Dst: DATE_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/json.c:325,1
    - Dst: EncodeSpecialDate
      Src: /src/postgres/src/backend/utils/adt/json.c:326,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/json.c:329,1
    - Dst: EncodeDateOnly
      Src: /src/postgres/src/backend/utils/adt/json.c:331,1
    - Dst: DatumGetTimeADT
      Src: /src/postgres/src/backend/utils/adt/json.c:337,1
    - Dst: time2tm
      Src: /src/postgres/src/backend/utils/adt/json.c:343,1
    - Dst: EncodeTimeOnly
      Src: /src/postgres/src/backend/utils/adt/json.c:344,1
    - Dst: DatumGetTimeTzADTP
      Src: /src/postgres/src/backend/utils/adt/json.c:349,1
    - Dst: timetz2tm
      Src: /src/postgres/src/backend/utils/adt/json.c:356,1
    - Dst: EncodeTimeOnly
      Src: /src/postgres/src/backend/utils/adt/json.c:357,1
    - Dst: DatumGetTimestamp
      Src: /src/postgres/src/backend/utils/adt/json.c:366,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/json.c:368,1
    - Dst: EncodeSpecialTimestamp
      Src: /src/postgres/src/backend/utils/adt/json.c:369,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/json.c:370,1
    - Dst: EncodeDateTime
      Src: /src/postgres/src/backend/utils/adt/json.c:371,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:373,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:374,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:375,1
    - Dst: DatumGetTimestampTz
      Src: /src/postgres/src/backend/utils/adt/json.c:386,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/json.c:401,1
    - Dst: EncodeSpecialTimestamp
      Src: /src/postgres/src/backend/utils/adt/json.c:402,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/json.c:403,1
    - Dst: EncodeDateTime
      Src: /src/postgres/src/backend/utils/adt/json.c:409,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:412,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:413,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:414,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/json.c:418,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 53
    argCount: 4
    argNames:
    - buf
    - value
    - typid
    - tzp
    argTypes:
    - char*
    - Datum
    - Oid
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 309
    functionDepth: 3
    functionLinenumber: 309
    functionLinenumberEnd: 423
    functionName: JsonEncodeDateTime
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 1
    functionsReached:
    - EncodeSpecialDate
    - DATE_NOT_FINITE
    - time2tm
    - DatumGetTimeADT
    - DatumGetTimeTzADTP
    - errmsg
    - timetz2tm
    - DatumGetTimestampTz
    - elog
    - DatumGetDateADT
    - j2date
    - palloc
    - DatumGetTimestamp
    - EncodeTimeOnly
    - EncodeDateOnly
    - TIMESTAMP_NOT_FINITE
    - timestamp2tm
    - ereport
    - EncodeSpecialTimestamp
    - EncodeDateTime
    - errcode
    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:438,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:442,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:447,1
    - Dst: datum_to_json_internal
      Src: /src/postgres/src/backend/utils/adt/json.c:451,1
    - Dst: array_dim_to_json
      Src: /src/postgres/src/backend/utils/adt/json.c:462,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:467,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: 468
      start: 430
    functionDepth: 3
    functionLinenumber: 430
    functionLinenumberEnd: 468
    functionName: array_dim_to_json
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 1
    functionsReached:
    - Assert
    - array_dim_to_json
    - appendStringInfoChar
    - appendStringInfoString
    - datum_to_json_internal
    linkageType: ''
    returnType: void
    signature: "void array_dim_to_json(StringInfo result, int dim, int ndims, int
      *dims, Datum *vals,\n\t\t\t\t  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:476,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/utils/adt/json.c:477,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/json.c:490,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/utils/adt/json.c:491,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/utils/adt/json.c:492,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:496,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/utils/adt/json.c:500,1
    - Dst: json_categorize_type
      Src: /src/postgres/src/backend/utils/adt/json.c:503,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/utils/adt/json.c:506,1
    - Dst: array_dim_to_json
      Src: /src/postgres/src/backend/utils/adt/json.c:510,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:513,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:514,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - array
    - result
    - use_line_feeds
    argTypes:
    - Datum
    - StringInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 473
    functionDepth: 4
    functionLinenumber: 473
    functionLinenumberEnd: 515
    functionName: array_to_json_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 1
    functionsReached:
    - ARR_ELEMTYPE
    - deconstruct_array
    - ARR_DIMS
    - get_typlenbyvalalign
    - DatumGetArrayTypeP
    - array_dim_to_json
    - pfree
    - ARR_NDIM
    - appendStringInfoString
    - json_categorize_type
    - ArrayGetNItems
    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: 4
    functionLinenumber: 520
    functionLinenumberEnd: 592
    functionName: composite_to_json
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 1
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - ReleaseTupleDesc
    - DatumGetHeapTupleHeader
    - NameStr
    - escape_json
    - heap_getattr
    - appendBinaryStringInfo
    - appendStringInfoChar
    - TupleDescAttr
    - json_categorize_type
    - lookup_rowtype_tupdesc
    - datum_to_json_internal
    - HeapTupleHeaderGetTypMod
    - HeapTupleHeaderGetTypeId
    - strlen
    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: 3
    functionLinenumber: 601
    functionLinenumberEnd: 624
    functionName: add_json
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - errmsg
    - json_categorize_type
    - datum_to_json_internal
    - ereport
    - errcode
    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: makeStringInfo
      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: 5
    functionLinenumber: 629
    functionLinenumberEnd: 640
    functionName: array_to_json
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - makeStringInfo
    - array_to_json_internal
    - PG_RETURN_TEXT_P
    - PG_GETARG_DATUM
    - cstring_to_text_with_len
    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: makeStringInfo
      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: 5
    functionLinenumber: 645
    functionLinenumberEnd: 657
    functionName: array_to_json_pretty
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - makeStringInfo
    - array_to_json_internal
    - PG_RETURN_TEXT_P
    - PG_GETARG_BOOL
    - PG_GETARG_DATUM
    - cstring_to_text_with_len
    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: makeStringInfo
      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: 5
    functionLinenumber: 662
    functionLinenumberEnd: 673
    functionName: row_to_json
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - makeStringInfo
    - composite_to_json
    - PG_RETURN_TEXT_P
    - PG_GETARG_DATUM
    - cstring_to_text_with_len
    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: makeStringInfo
      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: 5
    functionLinenumber: 678
    functionLinenumberEnd: 690
    functionName: row_to_json_pretty
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - makeStringInfo
    - composite_to_json
    - PG_RETURN_TEXT_P
    - PG_GETARG_BOOL
    - PG_GETARG_DATUM
    - cstring_to_text_with_len
    linkageType: ''
    returnType: Datum
    signature: Datum row_to_json_pretty(PG_FUNCTION_ARGS)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: json_categorize_type
      Src: /src/postgres/src/backend/utils/adt/json.c:705,1
    - Dst: func_volatile
      Src: /src/postgres/src/backend/utils/adt/json.c:729,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 1
    argNames:
    - typoid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 699
    functionDepth: 1
    functionLinenumber: 699
    functionLinenumberEnd: 733
    functionName: to_json_is_immutable
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 1
    functionsReached:
    - func_volatile
    - json_categorize_type
    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:741,1
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/json.c:742,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:747,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:748,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:749,1
    - Dst: json_categorize_type
      Src: /src/postgres/src/backend/utils/adt/json.c:751,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/json.c:754,1
    - Dst: datum_to_json
      Src: /src/postgres/src/backend/utils/adt/json.c:754,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 738
    functionDepth: 2
    functionLinenumber: 738
    functionLinenumberEnd: 755
    functionName: to_json
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 7
    functionsReached:
    - errmsg
    - datum_to_json
    - PG_RETURN_DATUM
    - get_fn_expr_argtype
    - json_categorize_type
    - ereport
    - PG_GETARG_DATUM
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum to_json(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:765,1
    - Dst: datum_to_json_internal
      Src: /src/postgres/src/backend/utils/adt/json.c:767,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/json.c:770,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/json.c:770,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - val
    - tcategory
    - outfuncoid
    argTypes:
    - Datum
    - JsonTypeCategory
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 762
    functionDepth: 4
    functionLinenumber: 762
    functionLinenumberEnd: 771
    functionName: datum_to_json
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 2
    functionsReached:
    - makeStringInfo
    - cstring_to_text_with_len
    - datum_to_json_internal
    - PointerGetDatum
    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:786,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/json.c:789,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/json.c:792,1
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/json.c:794,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:797,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:798,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:799,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/json.c:807,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/json.c:808,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:809,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/json.c:810,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:812,1
    - Dst: json_categorize_type
      Src: /src/postgres/src/backend/utils/adt/json.c:813,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/json.c:818,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/json.c:821,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/json.c:822,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:825,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/json.c:828,1
    - Dst: datum_to_json_internal
      Src: /src/postgres/src/backend/utils/adt/json.c:830,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/json.c:832,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/json.c:835,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/json.c:838,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:842,1
    - Dst: datum_to_json_internal
      Src: /src/postgres/src/backend/utils/adt/json.c:845,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/json.c:853,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 2
    argNames:
    - fcinfo
    - absent_on_null
    argTypes:
    - FunctionCallInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 778
    functionDepth: 4
    functionLinenumber: 778
    functionLinenumberEnd: 854
    functionName: json_agg_transfn_worker
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - errmsg
    - MemoryContextSwitchTo
    - makeStringInfo
    - appendStringInfoChar
    - PG_GETARG_POINTER
    - appendStringInfoString
    - get_fn_expr_argtype
    - PG_ARGISNULL
    - ereport
    - json_categorize_type
    - datum_to_json_internal
    - AggCheckCallContext
    - elog
    - PG_GETARG_DATUM
    - palloc
    - errcode
    - PG_RETURN_POINTER
    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:863,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 860
    functionDepth: 5
    functionLinenumber: 860
    functionLinenumberEnd: 864
    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:872,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 873
      start: 869
    functionDepth: 5
    functionLinenumber: 869
    functionLinenumberEnd: 873
    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:884,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/json.c:884,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/json.c:886,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/json.c:888,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/json.c:892,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/json.c:895,1
    - Dst: catenate_stringinfo_string
      Src: /src/postgres/src/backend/utils/adt/json.c:895,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 878
    functionDepth: 2
    functionLinenumber: 878
    functionLinenumberEnd: 896
    functionName: json_agg_finalfn
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - Assert
    - catenate_stringinfo_string
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - AggCheckCallContext
    - PG_RETURN_NULL
    - PG_RETURN_TEXT_P
    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:903,1
    - Dst: hash_bytes
      Src: /src/postgres/src/backend/utils/adt/json.c:905,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/adt/json.c:907,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key
    - keysize
    argTypes:
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 908
      start: 899
    functionDepth: 2
    functionLinenumber: 899
    functionLinenumberEnd: 908
    functionName: json_unique_hash
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - DatumGetUInt32
    - 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:922,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - key1
    - key2
    - keysize
    argTypes:
    - void*
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 910
    functionDepth: 0
    functionLinenumber: 910
    functionLinenumberEnd: 923
    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:936,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/utils/adt/json.c:943,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - cxt
    argTypes:
    - JsonUniqueCheckState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 947
      start: 931
    functionDepth: 2
    functionLinenumber: 931
    functionLinenumberEnd: 947
    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:952,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - cxt
    argTypes:
    - JsonUniqueBuilderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 949
    functionDepth: 3
    functionLinenumber: 949
    functionLinenumberEnd: 955
    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:964,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/utils/adt/json.c:967,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - cxt
    - key
    - object_id
    argTypes:
    - JsonUniqueCheckState*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 957
    functionDepth: 2
    functionLinenumber: 957
    functionLinenumberEnd: 970
    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:984,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:986,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/json.c:987,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - cxt
    argTypes:
    - JsonUniqueBuilderState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 994
      start: 977
    functionDepth: 3
    functionLinenumber: 977
    functionLinenumberEnd: 994
    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:1013,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/json.c:1016,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/json.c:1019,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/json.c:1029,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/json.c:1030,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:1031,1
    - Dst: json_unique_builder_init
      Src: /src/postgres/src/backend/utils/adt/json.c:1033,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/json.c:1035,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/json.c:1036,1
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/json.c:1038,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1041,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1042,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1043,1
    - Dst: json_categorize_type
      Src: /src/postgres/src/backend/utils/adt/json.c:1045,1
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/json.c:1048,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1051,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1052,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1053,1
    - Dst: json_categorize_type
      Src: /src/postgres/src/backend/utils/adt/json.c:1055,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1058,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/json.c:1062,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/json.c:1073,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1074,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1075,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1076,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/json.c:1079,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/json.c:1089,1
    - Dst: json_unique_builder_get_throwawaybuf
      Src: /src/postgres/src/backend/utils/adt/json.c:1091,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1102,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/json.c:1105,1
    - Dst: datum_to_json_internal
      Src: /src/postgres/src/backend/utils/adt/json.c:1109,1
    - Dst: MemoryContextStrdup
      Src: /src/postgres/src/backend/utils/adt/json.c:1120,1
    - Dst: json_unique_check_key
      Src: /src/postgres/src/backend/utils/adt/json.c:1123,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1124,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1125,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1126,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/json.c:1129,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1132,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/json.c:1134,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/json.c:1137,1
    - Dst: datum_to_json_internal
      Src: /src/postgres/src/backend/utils/adt/json.c:1139,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/json.c:1139,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/json.c:1143,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: 1144
      start: 1001
    functionDepth: 4
    functionLinenumber: 1001
    functionLinenumberEnd: 1144
    functionName: json_object_agg_transfn_worker
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - makeStringInfo
    - json_unique_builder_init
    - get_fn_expr_argtype
    - json_unique_check_key
    - PG_GETARG_DATUM
    - PG_RETURN_POINTER
    - AggCheckCallContext
    - errmsg
    - PG_GETARG_POINTER
    - appendStringInfoString
    - PG_ARGISNULL
    - elog
    - json_unique_builder_get_throwawaybuf
    - palloc
    - MemoryContextStrdup
    - memset
    - json_categorize_type
    - datum_to_json_internal
    - ereport
    - errcode
    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:1152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1153
      start: 1149
    functionDepth: 5
    functionLinenumber: 1149
    functionLinenumberEnd: 1153
    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:1161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1162
      start: 1158
    functionDepth: 5
    functionLinenumber: 1158
    functionLinenumberEnd: 1162
    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:1170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1171
      start: 1167
    functionDepth: 5
    functionLinenumber: 1167
    functionLinenumberEnd: 1171
    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:1179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1180
      start: 1176
    functionDepth: 5
    functionLinenumber: 1176
    functionLinenumberEnd: 1180
    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:1191,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/json.c:1191,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/json.c:1193,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/json.c:1193,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/json.c:1197,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/json.c:1200,1
    - Dst: catenate_stringinfo_string
      Src: /src/postgres/src/backend/utils/adt/json.c:1200,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1201
      start: 1185
    functionDepth: 2
    functionLinenumber: 1185
    functionLinenumberEnd: 1201
    functionName: json_object_agg_finalfn
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - Assert
    - catenate_stringinfo_string
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - AggCheckCallContext
    - PG_RETURN_NULL
    - PG_RETURN_TEXT_P
    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:1213,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/json.c:1214,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/json.c:1216,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/json.c:1217,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/json.c:1217,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/json.c:1218,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/json.c:1218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - buffer
    - addon
    argTypes:
    - StringInfo
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1221
      start: 1208
    functionDepth: 1
    functionLinenumber: 1208
    functionLinenumberEnd: 1221
    functionName: catenate_stringinfo_string
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 2
    functionsReached:
    - VARDATA
    - memcpy
    - palloc
    - SET_VARSIZE
    - strlen
    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:1233,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1234,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1235,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/json.c:1237,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:1240,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:1242,1
    - Dst: json_unique_builder_init
      Src: /src/postgres/src/backend/utils/adt/json.c:1245,1
    - Dst: json_unique_builder_get_throwawaybuf
      Src: /src/postgres/src/backend/utils/adt/json.c:1262,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1266,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1273,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1274,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1275,1
    - Dst: add_json
      Src: /src/postgres/src/backend/utils/adt/json.c:1280,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/json.c:1292,1
    - Dst: json_unique_check_key
      Src: /src/postgres/src/backend/utils/adt/json.c:1294,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1295,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1296,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1297,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1303,1
    - Dst: add_json
      Src: /src/postgres/src/backend/utils/adt/json.c:1306,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:1309,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/json.c:1311,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/json.c:1311,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: 1312
      start: 1223
    functionDepth: 4
    functionLinenumber: 1223
    functionLinenumberEnd: 1312
    functionName: json_build_object_worker
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - errmsg
    - makeStringInfo
    - appendStringInfoChar
    - json_unique_builder_init
    - appendStringInfoString
    - ereport
    - pstrdup
    - PointerGetDatum
    - add_json
    - errhint
    - json_unique_check_key
    - json_unique_builder_get_throwawaybuf
    - errcode
    - cstring_to_text_with_len
    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:1325,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/json.c:1329,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/json.c:1331,1
    - Dst: json_build_object_worker
      Src: /src/postgres/src/backend/utils/adt/json.c:1331,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1332
      start: 1317
    functionDepth: 5
    functionLinenumber: 1317
    functionLinenumberEnd: 1332
    functionName: json_build_object
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_DATUM
    - extract_variadic_args
    - PG_RETURN_NULL
    - 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:1340,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/json.c:1340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1341
      start: 1337
    functionDepth: 1
    functionLinenumber: 1337
    functionLinenumberEnd: 1341
    functionName: json_build_object_noargs
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TEXT_P
    - cstring_to_text_with_len
    linkageType: ''
    returnType: Datum
    signature: Datum json_build_object_noargs(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:1351,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:1353,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1360,1
    - Dst: add_json
      Src: /src/postgres/src/backend/utils/adt/json.c:1362,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:1365,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/json.c:1367,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/json.c:1367,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: 1368
      start: 1343
    functionDepth: 4
    functionLinenumber: 1343
    functionLinenumberEnd: 1368
    functionName: json_build_array_worker
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - makeStringInfo
    - appendStringInfoChar
    - appendStringInfoString
    - PointerGetDatum
    - add_json
    - cstring_to_text_with_len
    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:1381,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/json.c:1385,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/json.c:1387,1
    - Dst: json_build_array_worker
      Src: /src/postgres/src/backend/utils/adt/json.c:1387,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1388
      start: 1373
    functionDepth: 5
    functionLinenumber: 1373
    functionLinenumberEnd: 1388
    functionName: json_build_array
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - json_build_array_worker
    - PG_RETURN_DATUM
    - extract_variadic_args
    - PG_RETURN_NULL
    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:1396,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/json.c:1396,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1397
      start: 1393
    functionDepth: 1
    functionLinenumber: 1393
    functionLinenumberEnd: 1397
    functionName: json_build_array_noargs
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TEXT_P
    - cstring_to_text_with_len
    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:1408,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/json.c:1409,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/json.c:1421,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/json.c:1421,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/utils/adt/json.c:1425,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1426,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1427,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1428,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/utils/adt/json.c:1432,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1433,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1434,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1435,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1439,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1440,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1441,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/json.c:1444,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:1448,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:1450,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1455,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1456,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1457,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1460,1
    - Dst: escape_json_text
      Src: /src/postgres/src/backend/utils/adt/json.c:1461,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/json.c:1461,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1462,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1464,1
    - Dst: escape_json_text
      Src: /src/postgres/src/backend/utils/adt/json.c:1467,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/json.c:1468,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:1472,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:1474,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:1475,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/json.c:1477,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:1478,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/json.c:1480,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1481
      start: 1405
    functionDepth: 3
    functionLinenumber: 1405
    functionLinenumberEnd: 1481
    functionName: json_object
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - ARR_DIMS
    - deconstruct_array_builtin
    - escape_json_text
    - CStringGetTextDatum
    - PG_RETURN_DATUM
    - ARR_NDIM
    - appendStringInfoChar
    - appendStringInfoString
    - ereport
    - PG_RETURN_TEXT_P
    - initStringInfo
    - DatumGetPointer
    - errcode
    - PG_GETARG_ARRAYTYPE_P
    - cstring_to_text_with_len
    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:1492,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/json.c:1493,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/json.c:1494,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/json.c:1495,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1507,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1508,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1509,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/json.c:1512,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/json.c:1512,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/json.c:1514,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/json.c:1515,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1518,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1519,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1520,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:1522,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:1524,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1529,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1530,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1531,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1534,1
    - Dst: escape_json_text
      Src: /src/postgres/src/backend/utils/adt/json.c:1535,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/json.c:1535,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1536,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1538,1
    - Dst: escape_json_text
      Src: /src/postgres/src/backend/utils/adt/json.c:1540,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/json.c:1541,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/json.c:1544,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:1546,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:1547,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:1548,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:1549,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/json.c:1551,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:1552,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/json.c:1554,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1555
      start: 1489
    functionDepth: 3
    functionLinenumber: 1489
    functionLinenumberEnd: 1555
    functionName: json_object_two_arg
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - deconstruct_array_builtin
    - escape_json_text
    - CStringGetTextDatum
    - PG_RETURN_DATUM
    - ARR_NDIM
    - appendStringInfoChar
    - appendStringInfoString
    - ereport
    - PG_RETURN_TEXT_P
    - initStringInfo
    - DatumGetPointer
    - errcode
    - PG_GETARG_ARRAYTYPE_P
    - cstring_to_text_with_len
    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:1567,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1570,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1573,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1576,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1579,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1582,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/json.c:1585,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:1589,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/json.c:1591,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 2
    argNames:
    - buf
    - c
    argTypes:
    - StringInfo
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1594
      start: 1561
    functionDepth: 2
    functionLinenumber: 1561
    functionLinenumberEnd: 1594
    functionName: escape_json_char
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - appendStringInfoString
    - appendStringInfoCharMacro
    - appendStringInfo
    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:1604,1
    - Dst: escape_json_char
      Src: /src/postgres/src/backend/utils/adt/json.c:1607,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/json.c:1609,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - buf
    - str
    argTypes:
    - StringInfo
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1610
      start: 1601
    functionDepth: 3
    functionLinenumber: 1601
    functionLinenumberEnd: 1610
    functionName: escape_json
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 8
    functionsReached:
    - appendStringInfoCharMacro
    - escape_json_char
    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:1635,1
    - Dst: enlargeStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:1642,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/json.c:1650,1
    - Dst: vector8_load
      Src: /src/postgres/src/backend/utils/adt/json.c:1668,1
    - Dst: vector8_has_le
      Src: /src/postgres/src/backend/utils/adt/json.c:1674,1
    - Dst: vector8_has
      Src: /src/postgres/src/backend/utils/adt/json.c:1675,1
    - Dst: vector8_has
      Src: /src/postgres/src/backend/utils/adt/json.c:1676,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:1688,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/json.c:1701,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/json.c:1715,1
    - Dst: escape_json_char
      Src: /src/postgres/src/backend/utils/adt/json.c:1717,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/json.c:1725,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 3
    argNames:
    - buf
    - str
    - len
    argTypes:
    - StringInfo
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1726
      start: 1630
    functionDepth: 5
    functionLinenumber: 1630
    functionLinenumberEnd: 1726
    functionName: escape_json_with_len
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 1
    functionsReached:
    - enlargeStringInfo
    - Assert
    - appendStringInfoCharMacro
    - escape_json_char
    - vector8_load
    - appendBinaryStringInfo
    - vector8_has
    - vector8_has_le
    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:1739,1
    - Dst: unconstify
      Src: /src/postgres/src/backend/utils/adt/json.c:1739,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/json.c:1740,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/json.c:1743,1
    - Dst: escape_json_with_len
      Src: /src/postgres/src/backend/utils/adt/json.c:1745,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:1749,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - buf
    - txt
    argTypes:
    - StringInfo
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1750
      start: 1735
    functionDepth: 6
    functionLinenumber: 1735
    functionLinenumberEnd: 1750
    functionName: escape_json_text
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 3
    functionsReached:
    - pg_detoast_datum_packed
    - pfree
    - unconstify
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - escape_json_with_len
    linkageType: ''
    returnType: void
    signature: void escape_json_text(StringInfo buf, const text *txt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/json.c:1763,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1769
      start: 1753
    functionDepth: 0
    functionLinenumber: 1753
    functionLinenumberEnd: 1769
    functionName: json_unique_object_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - palloc
    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:1782,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1784
      start: 1771
    functionDepth: 0
    functionLinenumber: 1771
    functionLinenumberEnd: 1784
    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:1796,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/json.c:1805,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - _state
    - field
    - isnull
    argTypes:
    - void*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1808
      start: 1786
    functionDepth: 3
    functionLinenumber: 1786
    functionLinenumberEnd: 1808
    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:1819,1
    - Dst: json_unique_check_init
      Src: /src/postgres/src/backend/utils/adt/json.c:1827,1
    - Dst: pg_parse_json
      Src: /src/postgres/src/backend/utils/adt/json.c:1835,1
    - Dst: json_errsave_error
      Src: /src/postgres/src/backend/utils/adt/json.c:1840,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/json.c:1848,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/json.c:1849,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/json.c:1850,1
    - Dst: freeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/json.c:1856,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: 1859
      start: 1811
    functionDepth: 3
    functionLinenumber: 1811
    functionLinenumberEnd: 1859
    functionName: json_validate
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 2
    functionsReached:
    - errmsg
    - freeJsonLexContext
    - makeJsonLexContext
    - json_errsave_error
    - ereport
    - pg_parse_json
    - json_unique_check_init
    - errcode
    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:1876,1
    - Dst: makeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/json.c:1882,1
    - Dst: json_lex
      Src: /src/postgres/src/backend/utils/adt/json.c:1883,1
    - Dst: json_errsave_error
      Src: /src/postgres/src/backend/utils/adt/json.c:1885,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/json.c:1909,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/json.c:1912,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/json.c:1912,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1913
      start: 1873
    functionDepth: 2
    functionLinenumber: 1873
    functionLinenumberEnd: 1913
    functionName: json_typeof
    functionSourceFile: /src/postgres/src/backend/utils/adt/json.c
    functionUses: 0
    functionsReached:
    - makeJsonLexContext
    - PG_GETARG_TEXT_PP
    - json_errsave_error
    - elog
    - PG_RETURN_TEXT_P
    - cstring_to_text
    - json_lex
    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:55,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:56,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/bytea.c:65,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/bytea.c:68,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/bytea.c:71,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/bytea.c:73,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:73,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/bytea.c:75,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:75,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - t1
    - t2
    argTypes:
    - bytea*
    - bytea*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 78
    functionName: bytea_catenate
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - VARDATA
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - memcpy
    - palloc
    - SET_VARSIZE
    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: 82
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 82
    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:96,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/bytea.c:109,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:110,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bytea.c:111,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/bytea.c:114,1
    - Dst: PG_STR_GET_BYTEA
      Src: /src/postgres/src/backend/utils/adt/bytea.c:130,1
    - Dst: DatumGetByteaPSlice
      Src: /src/postgres/src/backend/utils/adt/bytea.c:140,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: 141
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 141
    functionName: bytea_substring
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_STR_GET_BYTEA
    - ereport
    - pg_add_s32_overflow
    - Max
    - DatumGetByteaPSlice
    - errcode
    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:157,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:158,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bytea.c:159,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/bytea.c:160,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/bytea.c:161,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:162,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bytea.c:163,1
    - Dst: bytea_substring
      Src: /src/postgres/src/backend/utils/adt/bytea.c:165,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/bytea.c:165,1
    - Dst: bytea_substring
      Src: /src/postgres/src/backend/utils/adt/bytea.c:166,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/bytea.c:166,1
    - Dst: bytea_catenate
      Src: /src/postgres/src/backend/utils/adt/bytea.c:167,1
    - Dst: bytea_catenate
      Src: /src/postgres/src/backend/utils/adt/bytea.c:168,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - t1
    - t2
    - sp
    - sl
    argTypes:
    - bytea*
    - bytea*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 143
    functionDepth: 3
    functionLinenumber: 143
    functionLinenumberEnd: 171
    functionName: bytea_overlay
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - errmsg
    - bytea_catenate
    - ereport
    - PointerGetDatum
    - pg_add_s32_overflow
    - bytea_substring
    - errcode
    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: 178
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 178
    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: 179
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 179
    functionName: DIG
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DIG(VAL)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/bytea.c:194,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/bytea.c:204,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/bytea.c:207,1
    - Dst: hex_decode_safe
      Src: /src/postgres/src/backend/utils/adt/bytea.c:208,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/bytea.c:208,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/bytea.c:210,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:212,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/bytea.c:233,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:234,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bytea.c:235,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/bytea.c:241,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/bytea.c:242,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/bytea.c:245,1
    - Dst: VAL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:255,1
    - Dst: VAL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:257,1
    - Dst: VAL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:259,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/bytea.c:274,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:275,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bytea.c:276,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:280,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 191
    functionDepth: 2
    functionLinenumber: 191
    functionLinenumberEnd: 281
    functionName: byteain
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_CSTRING
    - errcode
    - hex_decode_safe
    - VAL
    - VARDATA
    - ereturn
    - PG_RETURN_BYTEA_P
    - palloc
    - SET_VARSIZE
    - strlen
    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:292,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/bytea.c:299,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:299,1
    - Dst: hex_encode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:302,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:302,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:302,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:312,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:313,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/bytea.c:329,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:330,1
    - Dst: errmsg_internal
      Src: /src/postgres/src/backend/utils/adt/bytea.c:331,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/bytea.c:332,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:334,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:335,1
    - Dst: DIG
      Src: /src/postgres/src/backend/utils/adt/bytea.c:348,1
    - Dst: DIG
      Src: /src/postgres/src/backend/utils/adt/bytea.c:350,1
    - Dst: DIG
      Src: /src/postgres/src/backend/utils/adt/bytea.c:352,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/bytea.c:361,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/bytea.c:366,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 289
    functionDepth: 2
    functionLinenumber: 289
    functionLinenumberEnd: 367
    functionName: byteaout
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 1
    functionsReached:
    - DIG
    - PG_RETURN_CSTRING
    - PG_GETARG_BYTEA_PP
    - ereport
    - errmsg_internal
    - elog
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - palloc
    - errcode
    - hex_encode
    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:375,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/bytea.c:380,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/bytea.c:381,1
    - Dst: pq_copymsgbytes
      Src: /src/postgres/src/backend/utils/adt/bytea.c:382,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/bytea.c:382,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 372
    functionDepth: 2
    functionLinenumber: 372
    functionLinenumberEnd: 384
    functionName: bytearecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - VARDATA
    - pq_copymsgbytes
    - PG_RETURN_BYTEA_P
    - palloc
    - SET_VARSIZE
    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:394,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:396,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 391
    functionDepth: 1
    functionLinenumber: 391
    functionLinenumberEnd: 397
    functionName: byteasend
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 5
    functionsReached:
    - PG_GETARG_BYTEA_P_COPY
    - PG_RETURN_BYTEA_P
    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:404,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/bytea.c:404,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:407,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:409,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/bytea.c:428,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/bytea.c:431,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/bytea.c:438,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/utils/adt/bytea.c:439,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/bytea.c:440,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:445,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:447,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/bytea.c:449,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:449,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:450,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:452,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/bytea.c:455,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:455,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:456,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/bytea.c:464,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:465,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 399
    functionDepth: 4
    functionLinenumber: 399
    functionLinenumberEnd: 466
    functionName: bytea_string_agg_transfn
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - appendBinaryStringInfo
    - PG_GETARG_POINTER
    - makeStringInfo
    - PG_GETARG_BYTEA_PP
    - PG_ARGISNULL
    - elog
    - AggCheckCallContext
    - PG_RETURN_NULL
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - PG_RETURN_POINTER
    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:474,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/bytea.c:474,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:476,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/bytea.c:476,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/bytea.c:484,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/bytea.c:485,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/bytea.c:486,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/bytea.c:486,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:487,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:490,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 468
    functionDepth: 2
    functionLinenumber: 468
    functionLinenumberEnd: 491
    functionName: bytea_string_agg_finalfn
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - Assert
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - VARDATA
    - PG_RETURN_BYTEA_P
    - AggCheckCallContext
    - PG_RETURN_NULL
    - memcpy
    - palloc
    - SET_VARSIZE
    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:502,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:505,1
    - Dst: toast_raw_datum_size
      Src: /src/postgres/src/backend/utils/adt/bytea.c:505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 499
    functionDepth: 2
    functionLinenumber: 499
    functionLinenumberEnd: 506
    functionName: byteaoctetlen
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - toast_raw_datum_size
    - PG_GETARG_DATUM
    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:518,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:519,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:521,1
    - Dst: bytea_catenate
      Src: /src/postgres/src/backend/utils/adt/bytea.c:521,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 515
    functionDepth: 2
    functionLinenumber: 515
    functionLinenumberEnd: 522
    functionName: byteacat
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BYTEA_P
    - PG_GETARG_BYTEA_PP
    - bytea_catenate
    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:534,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:535,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:536,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:537,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:539,1
    - Dst: bytea_overlay
      Src: /src/postgres/src/backend/utils/adt/bytea.c:539,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 531
    functionDepth: 4
    functionLinenumber: 531
    functionLinenumberEnd: 540
    functionName: byteaoverlay
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BYTEA_P
    - PG_GETARG_INT32
    - PG_GETARG_BYTEA_PP
    - bytea_overlay
    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:545,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:546,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:547,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:550,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:551,1
    - Dst: bytea_overlay
      Src: /src/postgres/src/backend/utils/adt/bytea.c:551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 542
    functionDepth: 4
    functionLinenumber: 542
    functionLinenumberEnd: 552
    functionName: byteaoverlay_no_len
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - bytea_overlay
    - PG_GETARG_INT32
    - VARSIZE_ANY_EXHDR
    - PG_RETURN_BYTEA_P
    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:572,1
    - Dst: bytea_substring
      Src: /src/postgres/src/backend/utils/adt/bytea.c:572,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/bytea.c:572,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:573,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 569
    functionDepth: 3
    functionLinenumber: 569
    functionLinenumberEnd: 576
    functionName: bytea_substr
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BYTEA_P
    - bytea_substring
    - PG_GETARG_INT32
    - PG_GETARG_DATUM
    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:586,1
    - Dst: bytea_substring
      Src: /src/postgres/src/backend/utils/adt/bytea.c:586,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/bytea.c:586,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:587,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 583
    functionDepth: 3
    functionLinenumber: 583
    functionLinenumberEnd: 590
    functionName: bytea_substr_no_len
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BYTEA_P
    - bytea_substring
    - PG_GETARG_INT32
    - PG_GETARG_DATUM
    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:598,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/bytea.c:600,1
    - Dst: pg_popcount
      Src: /src/postgres/src/backend/utils/adt/bytea.c:600,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:600,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:600,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 595
    functionDepth: 1
    functionLinenumber: 595
    functionLinenumberEnd: 601
    functionName: bytea_bit_count
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - pg_popcount
    - PG_GETARG_BYTEA_PP
    - PG_RETURN_INT64
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    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:612,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:613,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:622,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:623,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:626,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:628,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:629,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/bytea.c:635,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:643,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 609
    functionDepth: 1
    functionLinenumber: 609
    functionLinenumberEnd: 644
    functionName: byteapos
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - memcmp
    - PG_GETARG_BYTEA_PP
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    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:656,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:657,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:661,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/bytea.c:664,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:665,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bytea.c:666,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:669,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:671,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 653
    functionDepth: 2
    functionLinenumber: 653
    functionLinenumberEnd: 672
    functionName: byteaGetByte
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_INT32
    - PG_GETARG_BYTEA_PP
    - ereport
    - PG_GETARG_INT32
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - errcode
    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:685,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/bytea.c:686,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:692,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/bytea.c:695,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:696,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bytea.c:697,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:704,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:707,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:709,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 682
    functionDepth: 2
    functionLinenumber: 682
    functionLinenumberEnd: 710
    functionName: byteaGetBit
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_INT32
    - PG_GETARG_INT64
    - PG_GETARG_BYTEA_PP
    - ereport
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - errcode
    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:723,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:724,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:725,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/utils/adt/bytea.c:728,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/bytea.c:731,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:732,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bytea.c:733,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/bytea.c:739,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:741,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 742
      start: 720
    functionDepth: 2
    functionLinenumber: 720
    functionLinenumberEnd: 742
    functionName: byteaSetByte
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_BYTEA_P_COPY
    - VARSIZE
    - ereport
    - VARDATA
    - PG_GETARG_INT32
    - PG_RETURN_BYTEA_P
    - errcode
    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:755,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/bytea.c:756,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:757,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/utils/adt/bytea.c:764,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/bytea.c:767,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:768,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bytea.c:769,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/bytea.c:780,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:781,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bytea.c:782,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/bytea.c:787,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/bytea.c:794,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:796,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 752
    functionDepth: 2
    functionLinenumber: 752
    functionLinenumberEnd: 797
    functionName: byteaSetBit
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_BYTEA_P_COPY
    - PG_GETARG_INT64
    - VARSIZE
    - ereport
    - VARDATA
    - PG_GETARG_INT32
    - PG_RETURN_BYTEA_P
    - errcode
    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:805,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:806,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:807,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/bytea.c:809,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/bytea.c:810,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/bytea.c:812,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:817,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 802
    functionDepth: 1
    functionLinenumber: 802
    functionLinenumberEnd: 818
    functionName: bytea_reverse
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_BYTEA_PP
    - VARDATA
    - PG_RETURN_BYTEA_P
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - 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:832,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/bytea.c:833,1
    - Dst: toast_raw_datum_size
      Src: /src/postgres/src/backend/utils/adt/bytea.c:842,1
    - Dst: toast_raw_datum_size
      Src: /src/postgres/src/backend/utils/adt/bytea.c:843,1
    - Dst: DatumGetByteaPP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:848,1
    - Dst: DatumGetByteaPP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:849,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/bytea.c:851,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:851,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:851,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:854,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:855,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:858,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 829
    functionDepth: 2
    functionLinenumber: 829
    functionLinenumberEnd: 859
    functionName: byteaeq
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - toast_raw_datum_size
    - PG_FREE_IF_COPY
    - memcmp
    - PG_RETURN_BOOL
    - DatumGetByteaPP
    - PG_GETARG_DATUM
    - VARDATA_ANY
    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:864,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/bytea.c:865,1
    - Dst: toast_raw_datum_size
      Src: /src/postgres/src/backend/utils/adt/bytea.c:874,1
    - Dst: toast_raw_datum_size
      Src: /src/postgres/src/backend/utils/adt/bytea.c:875,1
    - Dst: DatumGetByteaPP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:880,1
    - Dst: DatumGetByteaPP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:881,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/bytea.c:883,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:883,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:883,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:886,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:887,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:890,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 861
    functionDepth: 2
    functionLinenumber: 861
    functionLinenumberEnd: 891
    functionName: byteane
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - toast_raw_datum_size
    - PG_FREE_IF_COPY
    - memcmp
    - PG_RETURN_BOOL
    - DatumGetByteaPP
    - PG_GETARG_DATUM
    - VARDATA_ANY
    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:896,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:897,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:902,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:903,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/bytea.c:905,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:905,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:905,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/bytea.c:905,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:907,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:908,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:910,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 893
    functionDepth: 1
    functionLinenumber: 893
    functionLinenumberEnd: 911
    functionName: bytealt
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - Min
    - PG_FREE_IF_COPY
    - memcmp
    - PG_RETURN_BOOL
    - PG_GETARG_BYTEA_PP
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    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:916,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:917,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:922,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:923,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/bytea.c:925,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:925,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:925,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/bytea.c:925,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:927,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:928,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:930,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 913
    functionDepth: 1
    functionLinenumber: 913
    functionLinenumberEnd: 931
    functionName: byteale
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - Min
    - PG_FREE_IF_COPY
    - memcmp
    - PG_RETURN_BOOL
    - PG_GETARG_BYTEA_PP
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    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:936,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:937,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:942,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:943,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/bytea.c:945,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:945,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:945,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/bytea.c:945,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:947,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:948,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:950,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 951
      start: 933
    functionDepth: 1
    functionLinenumber: 933
    functionLinenumberEnd: 951
    functionName: byteagt
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - Min
    - PG_FREE_IF_COPY
    - memcmp
    - PG_RETURN_BOOL
    - PG_GETARG_BYTEA_PP
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    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:956,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:957,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:962,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:963,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/bytea.c:965,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:965,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:965,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/bytea.c:965,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:967,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:968,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/bytea.c:970,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 953
    functionDepth: 1
    functionLinenumber: 953
    functionLinenumberEnd: 971
    functionName: byteage
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - Min
    - PG_FREE_IF_COPY
    - memcmp
    - PG_RETURN_BOOL
    - PG_GETARG_BYTEA_PP
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    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:976,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:977,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:982,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:983,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/bytea.c:985,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:985,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:985,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/bytea.c:985,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:989,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:990,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:992,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 973
    functionDepth: 1
    functionLinenumber: 973
    functionLinenumberEnd: 993
    functionName: byteacmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - Min
    - PG_FREE_IF_COPY
    - memcmp
    - PG_GETARG_BYTEA_PP
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    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:998,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:999,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1005,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1006,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1008,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1008,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1008,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1008,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1011,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 995
    functionDepth: 1
    functionLinenumber: 995
    functionLinenumberEnd: 1012
    functionName: bytea_larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - Min
    - memcmp
    - PG_GETARG_BYTEA_PP
    - PG_RETURN_BYTEA_P
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    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:1017,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1018,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1024,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1025,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1027,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1027,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1027,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1027,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1030,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1031
      start: 1014
    functionDepth: 1
    functionLinenumber: 1014
    functionLinenumberEnd: 1031
    functionName: bytea_smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - Min
    - memcmp
    - PG_GETARG_BYTEA_PP
    - PG_RETURN_BYTEA_P
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    linkageType: ''
    returnType: Datum
    signature: Datum bytea_smaller(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1036,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1039,1
    - Dst: varstr_sortsupport
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1042,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1044,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1046,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1033
    functionDepth: 1
    functionLinenumber: 1033
    functionLinenumberEnd: 1047
    functionName: bytea_sortsupport
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - MemoryContextSwitchTo
    - varstr_sortsupport
    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:1053,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1054,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1059,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1060,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1061,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1068,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1071,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1050
    functionDepth: 2
    functionLinenumber: 1050
    functionLinenumberEnd: 1072
    functionName: bytea_int2
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_BYTEA_PP
    - ereport
    - PG_RETURN_INT16
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - errcode
    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:1078,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1079,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1084,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1085,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1086,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1093,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1096,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1097
      start: 1075
    functionDepth: 2
    functionLinenumber: 1075
    functionLinenumberEnd: 1097
    functionName: bytea_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_INT32
    - PG_GETARG_BYTEA_PP
    - ereport
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - errcode
    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:1103,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1104,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1109,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1110,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1111,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1118,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/bytea.c:1121,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1122
      start: 1100
    functionDepth: 2
    functionLinenumber: 1100
    functionLinenumberEnd: 1122
    functionName: bytea_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/bytea.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_BYTEA_PP
    - ereport
    - PG_RETURN_INT64
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - errcode
    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:1128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1129
      start: 1125
    functionDepth: 5
    functionLinenumber: 1125
    functionLinenumberEnd: 1129
    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:1135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1136
      start: 1132
    functionDepth: 5
    functionLinenumber: 1132
    functionLinenumberEnd: 1136
    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:1142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1139
    functionDepth: 5
    functionLinenumber: 1139
    functionLinenumberEnd: 1143
    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: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/like_support.c:117,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/like_support.c:119,1
    - Dst: like_regex_support
      Src: /src/postgres/src/backend/utils/adt/like_support.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 120
    functionName: textlike_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_POINTER
    - like_regex_support
    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:125,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/like_support.c:127,1
    - Dst: like_regex_support
      Src: /src/postgres/src/backend/utils/adt/like_support.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 128
    functionName: texticlike_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_POINTER
    - like_regex_support
    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:133,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/like_support.c:135,1
    - Dst: like_regex_support
      Src: /src/postgres/src/backend/utils/adt/like_support.c:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 136
    functionName: textregexeq_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_POINTER
    - like_regex_support
    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:141,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/like_support.c:143,1
    - Dst: like_regex_support
      Src: /src/postgres/src/backend/utils/adt/like_support.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 144
    functionName: texticregexeq_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_POINTER
    - like_regex_support
    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:149,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/like_support.c:151,1
    - Dst: like_regex_support
      Src: /src/postgres/src/backend/utils/adt/like_support.c:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 152
    functionName: text_starts_with_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_POINTER
    - like_regex_support
    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:160,1
    - Dst: patternsel_common
      Src: /src/postgres/src/backend/utils/adt/like_support.c:180,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/like_support.c:192,1
    - Dst: is_opclause
      Src: /src/postgres/src/backend/utils/adt/like_support.c:205,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/like_support.c:209,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/like_support.c:209,1
    - Dst: match_pattern_prefix
      Src: /src/postgres/src/backend/utils/adt/like_support.c:211,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/like_support.c:211,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/utils/adt/like_support.c:212,1
    - Dst: is_funcclause
      Src: /src/postgres/src/backend/utils/adt/like_support.c:218,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/like_support.c:222,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/like_support.c:222,1
    - Dst: match_pattern_prefix
      Src: /src/postgres/src/backend/utils/adt/like_support.c:224,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/like_support.c:224,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/utils/adt/like_support.c:225,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - rawreq
    - ptype
    argTypes:
    - Node*
    - Pattern_Type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 155
    functionDepth: 2
    functionLinenumber: 155
    functionLinenumberEnd: 234
    functionName: like_regex_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 5
    functionsReached:
    - Assert
    - linitial
    - patternsel_common
    - is_funcclause
    - IsA
    - lsecond
    - list_length
    - is_opclause
    - match_pattern_prefix
    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:270,1
    - Dst: pattern_fixed_prefix
      Src: /src/postgres/src/backend/utils/adt/like_support.c:278,1
    - Dst: exprType
      Src: /src/postgres/src/backend/utils/adt/like_support.c:294,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/like_support.c:373,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/utils/adt/like_support.c:389,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/utils/adt/like_support.c:393,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/utils/adt/like_support.c:396,1
    - Dst: get_collation_isdeterministic
      Src: /src/postgres/src/backend/utils/adt/like_support.c:408,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/like_support.c:416,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/utils/adt/like_support.c:416,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/utils/adt/like_support.c:418,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/utils/adt/like_support.c:421,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/utils/adt/like_support.c:433,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/utils/adt/like_support.c:439,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/utils/adt/like_support.c:441,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/utils/adt/like_support.c:444,1
    - Dst: op_in_opfamily
      Src: /src/postgres/src/backend/utils/adt/like_support.c:454,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/utils/adt/like_support.c:456,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/utils/adt/like_support.c:456,1
    - Dst: make_greater_string
      Src: /src/postgres/src/backend/utils/adt/like_support.c:457,1
    - Dst: make_opclause
      Src: /src/postgres/src/backend/utils/adt/like_support.c:460,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/like_support.c:463,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: 467
      start: 240
    functionDepth: 6
    functionLinenumber: 240
    functionLinenumberEnd: 467
    functionName: match_pattern_prefix
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 1
    functionsReached:
    - exprType
    - Assert
    - make_greater_string
    - fmgr_info
    - IsA
    - list_make1
    - get_opcode
    - get_collation_isdeterministic
    - lappend
    - OidIsValid
    - make_opclause
    - pattern_fixed_prefix
    - pg_newlocale_from_collation
    - op_in_opfamily
    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:522,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/like_support.c:525,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/like_support.c:527,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:551,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/like_support.c:597,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/like_support.c:604,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/like_support.c:608,1
    - Dst: pattern_fixed_prefix
      Src: /src/postgres/src/backend/utils/adt/like_support.c:622,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/like_support.c:633,1
    - Dst: var_eq_const
      Src: /src/postgres/src/backend/utils/adt/like_support.c:643,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/like_support.c:671,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/utils/adt/like_support.c:672,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/utils/adt/like_support.c:673,1
    - Dst: histogram_selectivity
      Src: /src/postgres/src/backend/utils/adt/like_support.c:675,1
    - Dst: prefix_selectivity
      Src: /src/postgres/src/backend/utils/adt/like_support.c:686,1
    - Dst: mcv_selectivity
      Src: /src/postgres/src/backend/utils/adt/like_support.c:721,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/utils/adt/like_support.c:740,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:744,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/like_support.c:744,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:745,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/like_support.c:748,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: 751
      start: 482
    functionDepth: 1
    functionLinenumber: 482
    functionLinenumberEnd: 751
    functionName: patternsel_common
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 1
    functionsReached:
    - prefix_selectivity
    - Assert
    - pfree
    - var_eq_const
    - HeapTupleIsValid
    - get_restriction_variable
    - IsA
    - GETSTRUCT
    - get_opcode
    - fmgr_info
    - histogram_selectivity
    - OidIsValid
    - CLAMP_PROBABILITY
    - ReleaseVariableStats
    - pattern_fixed_prefix
    - DatumGetPointer
    - mcv_selectivity
    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:759,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/like_support.c:760,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/like_support.c:761,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/like_support.c:762,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/like_support.c:763,1
    - Dst: get_negator
      Src: /src/postgres/src/backend/utils/adt/like_support.c:771,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/like_support.c:772,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/like_support.c:773,1
    - Dst: patternsel_common
      Src: /src/postgres/src/backend/utils/adt/like_support.c:776,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ptype
    - negate
    argTypes:
    - Pattern_Type
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 756
    functionDepth: 2
    functionLinenumber: 756
    functionLinenumberEnd: 784
    functionName: patternsel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - patternsel_common
    - PG_GETARG_OID
    - elog
    - PG_GETARG_INT32
    - OidIsValid
    - get_negator
    - PG_GET_COLLATION
    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:792,1
    - Dst: patternsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:792,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 789
    functionDepth: 3
    functionLinenumber: 789
    functionLinenumberEnd: 793
    functionName: regexeqsel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - patternsel
    - PG_RETURN_FLOAT8
    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:801,1
    - Dst: patternsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:801,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 798
    functionDepth: 3
    functionLinenumber: 798
    functionLinenumberEnd: 802
    functionName: icregexeqsel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - patternsel
    - PG_RETURN_FLOAT8
    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:810,1
    - Dst: patternsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:810,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 807
    functionDepth: 3
    functionLinenumber: 807
    functionLinenumberEnd: 811
    functionName: likesel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - patternsel
    - PG_RETURN_FLOAT8
    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:819,1
    - Dst: patternsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:819,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 820
      start: 816
    functionDepth: 3
    functionLinenumber: 816
    functionLinenumberEnd: 820
    functionName: prefixsel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - patternsel
    - PG_RETURN_FLOAT8
    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: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: iclikesel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - patternsel
    - PG_RETURN_FLOAT8
    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:838,1
    - Dst: patternsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:838,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 835
    functionDepth: 3
    functionLinenumber: 835
    functionLinenumberEnd: 839
    functionName: regexnesel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - patternsel
    - PG_RETURN_FLOAT8
    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:847,1
    - Dst: patternsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:847,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 844
    functionDepth: 3
    functionLinenumber: 844
    functionLinenumberEnd: 848
    functionName: icregexnesel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - patternsel
    - PG_RETURN_FLOAT8
    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:856,1
    - Dst: patternsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:856,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 853
    functionDepth: 3
    functionLinenumber: 853
    functionLinenumberEnd: 857
    functionName: nlikesel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - patternsel
    - PG_RETURN_FLOAT8
    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:865,1
    - Dst: patternsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:865,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 862
    functionDepth: 3
    functionLinenumber: 862
    functionLinenumberEnd: 866
    functionName: icnlikesel
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - patternsel
    - PG_RETURN_FLOAT8
    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: 876
      start: 871
    functionDepth: 0
    functionLinenumber: 871
    functionLinenumberEnd: 876
    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:884,1
    - Dst: patternjoinsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:884,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 881
    functionDepth: 1
    functionLinenumber: 881
    functionLinenumberEnd: 885
    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:893,1
    - Dst: patternjoinsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:893,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 890
    functionDepth: 1
    functionLinenumber: 890
    functionLinenumberEnd: 894
    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:902,1
    - Dst: patternjoinsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:902,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 899
    functionDepth: 1
    functionLinenumber: 899
    functionLinenumberEnd: 903
    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:911,1
    - Dst: patternjoinsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:911,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 908
    functionDepth: 1
    functionLinenumber: 908
    functionLinenumberEnd: 912
    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:920,1
    - Dst: patternjoinsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:920,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 917
    functionDepth: 1
    functionLinenumber: 917
    functionLinenumberEnd: 921
    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:929,1
    - Dst: patternjoinsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:929,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 926
    functionDepth: 1
    functionLinenumber: 926
    functionLinenumberEnd: 930
    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:938,1
    - Dst: patternjoinsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:938,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 935
    functionDepth: 1
    functionLinenumber: 935
    functionLinenumberEnd: 939
    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:947,1
    - Dst: patternjoinsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:947,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 948
      start: 944
    functionDepth: 1
    functionLinenumber: 944
    functionLinenumberEnd: 948
    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:956,1
    - Dst: patternjoinsel
      Src: /src/postgres/src/backend/utils/adt/like_support.c:956,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 953
    functionDepth: 1
    functionLinenumber: 953
    functionLinenumberEnd: 957
    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: 13
    BranchProfiles: []
    Callsites:
    - Dst: pg_database_encoding_max_length
      Src: /src/postgres/src/backend/utils/adt/like_support.c:998,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1002,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1007,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1008,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1009,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1011,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1017,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1018,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1019,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1020,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1023,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1028,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1029,1
    - Dst: DatumGetByteaPP
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1033,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1035,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1036,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1037,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1037,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1038,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1038,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1041,1
    - Dst: pattern_char_isalpha
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1060,1
    - Dst: string_to_const
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1069,1
    - Dst: string_to_bytea_const
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1071,1
    - Dst: like_selectivity
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1074,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1077,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1078,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 46
    argCount: 5
    argNames:
    - patt_const
    - case_insensitive
    - collation
    - prefix_const
    - rest_selec
    argTypes:
    - Const*
    - bool
    - Oid
    - Const**
    - Selectivity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1088
      start: 988
    functionDepth: 2
    functionLinenumber: 988
    functionLinenumberEnd: 1088
    functionName: like_fixed_prefix
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - pattern_char_isalpha
    - errhint
    - DatumGetByteaPP
    - strlen
    - pg_newlocale_from_collation
    - like_selectivity
    - pfree
    - pg_database_encoding_max_length
    - memcpy
    - string_to_const
    - DatumGetPointer
    - errmsg
    - OidIsValid
    - VARSIZE_ANY_EXHDR
    - palloc
    - Assert
    - TextDatumGetCString
    - string_to_bytea_const
    - ereport
    - VARDATA_ANY
    - errcode
    linkageType: ''
    returnType: Pattern_Prefix_Status
    signature: "Pattern_Prefix_Status like_fixed_prefix(Const *patt_const, bool case_insensitive,
      Oid collation,\n\t\t\t\t  Const **prefix_const, Selectivity *rest_selec)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - 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: regexp_fixed_prefix
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1109,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1109,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1119,1
    - Dst: regex_selectivity
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1121,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1121,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1124,1
    - Dst: string_to_const
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1130,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1141,1
    - Dst: regex_selectivity
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1143,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1143,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1145,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1146,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1150,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: 1156
      start: 1090
    functionDepth: 4
    functionLinenumber: 1090
    functionLinenumberEnd: 1156
    functionName: regex_fixed_prefix
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - regex_selectivity
    - TextDatumGetCString
    - DatumGetTextPP
    - ereport
    - string_to_const
    - strlen
    - errcode
    - regexp_fixed_prefix
    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:1167,1
    - Dst: like_fixed_prefix
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1171,1
    - Dst: regex_fixed_prefix
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1175,1
    - Dst: regex_fixed_prefix
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1179,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1185,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1189,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1198,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: 1203
      start: 1158
    functionDepth: 5
    functionLinenumber: 1158
    functionLinenumberEnd: 1203
    functionName: pattern_fixed_prefix
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 2
    functionsReached:
    - regex_fixed_prefix
    - datumCopy
    - elog
    - like_fixed_prefix
    - makeConst
    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:1235,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1235,1
    - Dst: ineq_histogram_selectivity
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1237,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1252,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1252,1
    - Dst: make_greater_string
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1253,1
    - Dst: ineq_histogram_selectivity
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1258,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1265,1
    - Dst: var_eq_const
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1289,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1292,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: 1295
      start: 1223
    functionDepth: 1
    functionLinenumber: 1223
    functionLinenumberEnd: 1295
    functionName: prefix_selectivity
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 1
    functionsReached:
    - Assert
    - ineq_histogram_selectivity
    - var_eq_const
    - make_greater_string
    - fmgr_info
    - get_opcode
    - Max
    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: 1349
      start: 1314
    functionDepth: 0
    functionLinenumber: 1314
    functionLinenumberEnd: 1349
    functionName: like_selectivity
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 1
    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:1360,1
    - Dst: regex_selectivity_sub
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1374,1
    - Dst: regex_selectivity_sub
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1384,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 57
    argCount: 3
    argNames:
    - patt
    - pattlen
    - case_insensitive
    argTypes:
    - char*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1444
      start: 1351
    functionDepth: 1
    functionLinenumber: 1351
    functionLinenumberEnd: 1444
    functionName: regex_selectivity_sub
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 1
    functionsReached:
    - check_stack_depth
    - regex_selectivity_sub
    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:1457,1
    - Dst: regex_selectivity_sub
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1462,1
    - Dst: pow
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1473,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1480,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: 1482
      start: 1446
    functionDepth: 2
    functionLinenumber: 1446
    functionLinenumberEnd: 1482
    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:
    - Dst: char_is_cased
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1499,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 3
    argNames:
    - c
    - is_multibyte
    - locale
    argTypes:
    - char
    - bool
    - pg_locale_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1500
      start: 1492
    functionDepth: 1
    functionLinenumber: 1492
    functionLinenumberEnd: 1500
    functionName: pattern_char_isalpha
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 1
    functionsReached:
    - char_is_cased
    linkageType: ''
    returnType: int
    signature: "int pattern_char_isalpha(char c, bool is_multibyte,\n\t\t\t\t\t pg_locale_t
      locale)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1514
      start: 1507
    functionDepth: 0
    functionLinenumber: 1507
    functionLinenumberEnd: 1514
    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:1575,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1577,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1578,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1579,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1579,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1580,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1580,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1586,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1586,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1589,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1590,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1591,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1604,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1606,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1608,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1617,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1618,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1621,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1625,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1626,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1627,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1627,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1628,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1629,1
    - Dst: pg_database_encoding_character_incrementer
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1638,1
    - Dst: pg_mbcliplen
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1650,1
    - Dst: charinc
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1661,1
    - Dst: string_to_bytea_const
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1666,1
    - Dst: string_to_const
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1668,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1670,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1670,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1677,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1678,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1683,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1683,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1684,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1697,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1698,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 68
    argCount: 3
    argNames:
    - str_const
    - ltproc
    - collation
    argTypes:
    - Const*
    - FmgrInfo*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1701
      start: 1557
    functionDepth: 2
    functionLinenumber: 1557
    functionLinenumberEnd: 1701
    functionName: make_greater_string
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 2
    functionsReached:
    - pg_mbcliplen
    - DatumGetByteaPP
    - DirectFunctionCall1
    - strlen
    - pg_newlocale_from_collation
    - pfree
    - DatumGetCString
    - varstr_cmp
    - memcpy
    - string_to_const
    - DatumGetPointer
    - FunctionCall2Coll
    - VARDATA
    - pg_database_encoding_character_incrementer
    - VARSIZE_ANY_EXHDR
    - palloc
    - SET_VARSIZE
    - Assert
    - TextDatumGetCString
    - string_to_bytea_const
    - PointerGetDatum
    - charinc
    - DatumGetBool
    - VARDATA_ANY
    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:1711,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1718,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1718,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1720,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1720,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1722,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - str
    - datatype
    argTypes:
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1723
      start: 1708
    functionDepth: 2
    functionLinenumber: 1708
    functionLinenumberEnd: 1723
    functionName: string_to_datum
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 0
    functionsReached:
    - CStringGetTextDatum
    - CStringGetDatum
    - Assert
    - 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:1731,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1759,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1764,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - str
    - datatype
    argTypes:
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1766
      start: 1728
    functionDepth: 3
    functionLinenumber: 1728
    functionLinenumberEnd: 1766
    functionName: string_to_const
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 3
    functionsReached:
    - makeConst
    - elog
    - 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:1774,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1777,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1777,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1778,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1779,1
    - Dst: makeConst
      Src: /src/postgres/src/backend/utils/adt/like_support.c:1781,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - str
    - str_len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1782
      start: 1771
    functionDepth: 2
    functionLinenumber: 1771
    functionLinenumberEnd: 1782
    functionName: string_to_bytea_const
    functionSourceFile: /src/postgres/src/backend/utils/adt/like_support.c
    functionUses: 2
    functionsReached:
    - PointerGetDatum
    - VARDATA
    - makeConst
    - memcpy
    - palloc
    - SET_VARSIZE
    linkageType: ''
    returnType: Const
    signature: 'Const *

      string_to_bytea_const(const char *str, size_t str_len)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:37,1
    - 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:47,1
    - Dst: strtoul
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:55,1
    - Dst: strtoul
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:56,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - str
    - have_error
    argTypes:
    - char*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 60
    functionName: pg_lsn_in_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 1
    functionsReached:
    - strspn
    - Assert
    - strtoul
    linkageType: ''
    returnType: XLogRecPtr
    signature: XLogRecPtr pg_lsn_in_internal(const char *str, bool *have_error)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:65,1
    - Dst: pg_lsn_in_internal
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:69,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:71,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:72,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:73,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 62
    functionDepth: 2
    functionLinenumber: 62
    functionLinenumberEnd: 77
    functionName: pg_lsn_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_CSTRING
    - PG_RETURN_LSN
    - pg_lsn_in_internal
    - ereturn
    - errcode
    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:82,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:86,1
    - Dst: LSN_FORMAT_ARGS
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:86,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:87,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 89
    functionName: pg_lsn_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - LSN_FORMAT_ARGS
    - snprintf
    - PG_RETURN_CSTRING
    - PG_GETARG_LSN
    - pstrdup
    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:94,1
    - Dst: pq_getmsgint64
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:97,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 99
    functionName: pg_lsn_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_LSN
    - 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:104,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:107,1
    - Dst: pq_sendint64
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:108,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:109,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 101
    functionDepth: 4
    functionLinenumber: 101
    functionLinenumberEnd: 110
    functionName: pg_lsn_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - PG_GETARG_LSN
    - PG_RETURN_BYTEA_P
    - pq_sendint64
    - pq_begintypsend
    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:120,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:121,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 124
    functionName: pg_lsn_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_LSN
    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:129,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:130,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 133
    functionName: pg_lsn_ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_LSN
    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:138,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:139,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 142
    functionName: pg_lsn_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_LSN
    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:147,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:148,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 151
    functionName: pg_lsn_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_LSN
    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:156,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:157,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 160
    functionName: pg_lsn_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_LSN
    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:165,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:166,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 169
    functionName: pg_lsn_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_LSN
    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:174,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:175,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 178
    functionName: pg_lsn_larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_LSN
    - PG_GETARG_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:183,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:184,1
    - Dst: PG_RETURN_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 187
    functionName: pg_lsn_smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_LSN
    - PG_GETARG_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:193,1
    - Dst: PG_GETARG_LSN
      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:197,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:199,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:201,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 202
    functionName: pg_lsn_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_LSN
    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:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 205
    functionDepth: 3
    functionLinenumber: 205
    functionLinenumberEnd: 210
    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:215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 212
    functionDepth: 3
    functionLinenumber: 212
    functionLinenumberEnd: 216
    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:226,1
    - Dst: PG_GETARG_LSN
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:227,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:233,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:235,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:238,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:239,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:240,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:241,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 223
    functionDepth: 2
    functionLinenumber: 223
    functionLinenumberEnd: 244
    functionName: pg_lsn_mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - Int32GetDatum
    - snprintf
    - PG_GETARG_LSN
    - CStringGetDatum
    - DirectFunctionCall3
    - ObjectIdGetDatum
    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:253,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:254,1
    - Dst: numeric_is_nan
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:259,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:260,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:261,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:262,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:265,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:266,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:267,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:268,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:269,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:272,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:274,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:277,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 250
    functionDepth: 2
    functionLinenumber: 250
    functionLinenumberEnd: 278
    functionName: pg_lsn_pli
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ObjectIdGetDatum
    - PG_GETARG_NUMERIC
    - Int32GetDatum
    - snprintf
    - PG_GETARG_LSN
    - ereport
    - numeric_is_nan
    - CStringGetDatum
    - NumericGetDatum
    - DirectFunctionCall2
    - DirectFunctionCall3
    - DirectFunctionCall1
    - errcode
    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:287,1
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:288,1
    - Dst: numeric_is_nan
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:293,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:294,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:295,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:296,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:299,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:300,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:301,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:302,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:303,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:306,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:308,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/pg_lsn.c:311,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 284
    functionDepth: 2
    functionLinenumber: 284
    functionLinenumberEnd: 312
    functionName: pg_lsn_mii
    functionSourceFile: /src/postgres/src/backend/utils/adt/pg_lsn.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ObjectIdGetDatum
    - PG_GETARG_NUMERIC
    - Int32GetDatum
    - snprintf
    - PG_GETARG_LSN
    - ereport
    - numeric_is_nan
    - CStringGetDatum
    - NumericGetDatum
    - DirectFunctionCall2
    - DirectFunctionCall3
    - DirectFunctionCall1
    - errcode
    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: BlessTupleDesc
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:149,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:155,1
    - Dst: GetLockStatusData
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:158,1
    - Dst: GetPredicateLockStatusData
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:160,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:163,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:166,1
    - Dst: LOCKBIT_ON
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:194,1
    - Dst: LOCKBIT_OFF
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:197,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:239,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:243,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:249,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:260,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:271,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:272,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:273,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:282,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:283,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:284,1
    - Dst: UInt16GetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:285,1
    - Dst: TransactionIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:294,1
    - Dst: VXIDGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:305,1
    - Dst: TransactionIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:318,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:319,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:329,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: Int16GetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:332,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:343,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: Int16GetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:346,1
    - Dst: VXIDGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:355,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:357,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:360,1
    - Dst: GetLockmodeName
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:360,1
    - Dst: BoolGetDatum
      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: TimestampTzGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:364,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:368,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:369,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:370,1
    - Dst: GET_PREDICATELOCKTARGETTAG_TYPE
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:396,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:398,1
    - Dst: GET_PREDICATELOCKTARGETTAG_DB
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:401,1
    - Dst: GET_PREDICATELOCKTARGETTAG_RELATION
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:402,1
    - Dst: GET_PREDICATELOCKTARGETTAG_OFFSET
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:404,1
    - Dst: GET_PREDICATELOCKTARGETTAG_PAGE
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:409,1
    - Dst: VXIDGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:421,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:424,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:432,1
    - Dst: BoolGetDatum
      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: heap_form_tuple
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:437,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:438,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:439,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:442,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 210
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 92
    functionDepth: 5
    functionLinenumber: 92
    functionLinenumberEnd: 443
    functionName: pg_lock_status
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - UInt16GetDatum
    - HeapTupleGetDatum
    - MemoryContextSwitchTo
    - BoolGetDatum
    - snprintf
    - VXIDGetDatum
    - SRF_FIRSTCALL_INIT
    - SRF_RETURN_DONE
    - SRF_RETURN_NEXT
    - Int32GetDatum
    - GET_PREDICATELOCKTARGETTAG_OFFSET
    - GET_PREDICATELOCKTARGETTAG_PAGE
    - TimestampTzGetDatum
    - TransactionIdGetDatum
    - Int16GetDatum
    - CreateTemplateTupleDesc
    - SRF_PERCALL_SETUP
    - heap_form_tuple
    - GET_PREDICATELOCKTARGETTAG_DB
    - TupleDescInitEntry
    - SRF_IS_FIRSTCALL
    - palloc
    - ObjectIdGetDatum
    - GetPredicateLockStatusData
    - GET_PREDICATELOCKTARGETTAG_RELATION
    - LOCKBIT_ON
    - CStringGetTextDatum
    - BlessTupleDesc
    - UInt32GetDatum
    - GetLockmodeName
    - GetLockStatusData
    - GET_PREDICATELOCKTARGETTAG_TYPE
    - LOCKBIT_OFF
    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:468,1
    - Dst: GetBlockerStatusData
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:476,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:479,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:503,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:507,1
    - Dst: GetLockTagsMethodTable
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:509,1
    - Dst: LOCKBIT_ON
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:529,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:554,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:559,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:561,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:561,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 465
    functionDepth: 1
    functionLinenumber: 465
    functionLinenumberEnd: 562
    functionName: pg_blocking_pids
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - construct_array_builtin
    - LOCKBIT_ON
    - Int32GetDatum
    - PG_RETURN_ARRAYTYPE_P
    - GetBlockerStatusData
    - PG_GETARG_INT32
    - GetLockTagsMethodTable
    - palloc
    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:575,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:581,1
    - Dst: GetSafeSnapshotBlockingPids
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:585,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:592,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:594,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:599,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:599,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 572
    functionDepth: 1
    functionLinenumber: 572
    functionLinenumberEnd: 600
    functionName: pg_safe_snapshot_blocking_pids
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - construct_array_builtin
    - Int32GetDatum
    - GetSafeSnapshotBlockingPids
    - PG_RETURN_ARRAYTYPE_P
    - PG_GETARG_INT32
    - palloc
    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: 619
      start: 613
    functionDepth: 0
    functionLinenumber: 613
    functionLinenumberEnd: 619
    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: 621
      start: 619
    functionDepth: 0
    functionLinenumber: 619
    functionLinenumberEnd: 621
    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:628,1
    - Dst: SET_LOCKTAG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:631,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:633,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:635,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 625
    functionDepth: 1
    functionLinenumber: 625
    functionLinenumberEnd: 636
    functionName: pg_advisory_lock_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT64
    - PG_GETARG_INT64
    - PG_RETURN_VOID
    - LockAcquire
    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:645,1
    - Dst: SET_LOCKTAG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:648,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:650,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:652,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 642
    functionDepth: 1
    functionLinenumber: 642
    functionLinenumberEnd: 653
    functionName: pg_advisory_xact_lock_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT64
    - PG_GETARG_INT64
    - PG_RETURN_VOID
    - LockAcquire
    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:661,1
    - Dst: SET_LOCKTAG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:664,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:666,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:668,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 658
    functionDepth: 1
    functionLinenumber: 658
    functionLinenumberEnd: 669
    functionName: pg_advisory_lock_shared_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT64
    - PG_GETARG_INT64
    - PG_RETURN_VOID
    - LockAcquire
    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:678,1
    - Dst: SET_LOCKTAG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:681,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:683,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:685,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 675
    functionDepth: 1
    functionLinenumber: 675
    functionLinenumberEnd: 686
    functionName: pg_advisory_xact_lock_shared_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT64
    - PG_GETARG_INT64
    - PG_RETURN_VOID
    - LockAcquire
    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:696,1
    - Dst: SET_LOCKTAG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:700,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:702,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:704,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 693
    functionDepth: 1
    functionLinenumber: 693
    functionLinenumberEnd: 705
    functionName: pg_try_advisory_lock_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT64
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    - LockAcquire
    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:716,1
    - Dst: SET_LOCKTAG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:720,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:722,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:724,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 713
    functionDepth: 1
    functionLinenumber: 713
    functionLinenumberEnd: 725
    functionName: pg_try_advisory_xact_lock_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT64
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    - LockAcquire
    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:735,1
    - Dst: SET_LOCKTAG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:739,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:741,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:743,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 732
    functionDepth: 1
    functionLinenumber: 732
    functionLinenumberEnd: 744
    functionName: pg_try_advisory_lock_shared_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT64
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    - LockAcquire
    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:755,1
    - Dst: SET_LOCKTAG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:759,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:761,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:763,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 752
    functionDepth: 1
    functionLinenumber: 752
    functionLinenumberEnd: 764
    functionName: pg_try_advisory_xact_lock_shared_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT64
    - PG_GETARG_INT64
    - PG_RETURN_BOOL
    - LockAcquire
    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:774,1
    - Dst: SET_LOCKTAG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:778,1
    - Dst: LockRelease
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:780,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:782,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 771
    functionDepth: 1
    functionLinenumber: 771
    functionLinenumberEnd: 783
    functionName: pg_advisory_unlock_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT64
    - PG_GETARG_INT64
    - LockRelease
    - 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:793,1
    - Dst: SET_LOCKTAG_INT64
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:797,1
    - Dst: LockRelease
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:799,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:801,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 790
    functionDepth: 1
    functionLinenumber: 790
    functionLinenumberEnd: 802
    functionName: pg_advisory_unlock_shared_int8
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT64
    - PG_GETARG_INT64
    - LockRelease
    - 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:810,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:811,1
    - Dst: SET_LOCKTAG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:814,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:816,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:818,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 807
    functionDepth: 1
    functionLinenumber: 807
    functionLinenumberEnd: 819
    functionName: pg_advisory_lock_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT32
    - PG_RETURN_VOID
    - PG_GETARG_INT32
    - LockAcquire
    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:828,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:829,1
    - Dst: SET_LOCKTAG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:832,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:834,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:836,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 825
    functionDepth: 1
    functionLinenumber: 825
    functionLinenumberEnd: 837
    functionName: pg_advisory_xact_lock_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT32
    - PG_RETURN_VOID
    - PG_GETARG_INT32
    - LockAcquire
    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:845,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:846,1
    - Dst: SET_LOCKTAG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:849,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:851,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:853,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 842
    functionDepth: 1
    functionLinenumber: 842
    functionLinenumberEnd: 854
    functionName: pg_advisory_lock_shared_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT32
    - PG_RETURN_VOID
    - PG_GETARG_INT32
    - LockAcquire
    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:863,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:864,1
    - Dst: SET_LOCKTAG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:867,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:869,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:871,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 860
    functionDepth: 1
    functionLinenumber: 860
    functionLinenumberEnd: 872
    functionName: pg_advisory_xact_lock_shared_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT32
    - PG_RETURN_VOID
    - PG_GETARG_INT32
    - LockAcquire
    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:882,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:883,1
    - Dst: SET_LOCKTAG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:887,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:889,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:891,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 892
      start: 879
    functionDepth: 1
    functionLinenumber: 879
    functionLinenumberEnd: 892
    functionName: pg_try_advisory_lock_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT32
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    - LockAcquire
    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:903,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:904,1
    - Dst: SET_LOCKTAG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:908,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:910,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:912,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 900
    functionDepth: 1
    functionLinenumber: 900
    functionLinenumberEnd: 913
    functionName: pg_try_advisory_xact_lock_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT32
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    - LockAcquire
    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:923,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:924,1
    - Dst: SET_LOCKTAG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:928,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:930,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:932,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 920
    functionDepth: 1
    functionLinenumber: 920
    functionLinenumberEnd: 933
    functionName: pg_try_advisory_lock_shared_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT32
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    - LockAcquire
    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:944,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:945,1
    - Dst: SET_LOCKTAG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:949,1
    - Dst: LockAcquire
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:951,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:953,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 941
    functionDepth: 1
    functionLinenumber: 941
    functionLinenumberEnd: 954
    functionName: pg_try_advisory_xact_lock_shared_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT32
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    - LockAcquire
    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:964,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:965,1
    - Dst: SET_LOCKTAG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:969,1
    - Dst: LockRelease
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:971,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:973,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 974
      start: 961
    functionDepth: 1
    functionLinenumber: 961
    functionLinenumberEnd: 974
    functionName: pg_advisory_unlock_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT32
    - LockRelease
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:984,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:985,1
    - Dst: SET_LOCKTAG_INT32
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:989,1
    - Dst: LockRelease
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:991,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:993,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 994
      start: 981
    functionDepth: 1
    functionLinenumber: 981
    functionLinenumberEnd: 994
    functionName: pg_advisory_unlock_shared_int4
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - SET_LOCKTAG_INT32
    - LockRelease
    - PG_RETURN_BOOL
    - PG_GETARG_INT32
    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:1002,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/lockfuncs.c:1004,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1005
      start: 999
    functionDepth: 1
    functionLinenumber: 999
    functionLinenumberEnd: 1005
    functionName: pg_advisory_unlock_all
    functionSourceFile: /src/postgres/src/backend/utils/adt/lockfuncs.c
    functionUses: 0
    functionsReached:
    - LockReleaseSession
    - PG_RETURN_VOID
    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:
    - errmsg
    - assign_record_type_identifier
    - ReleaseTupleDesc
    - MemoryContextRegisterResetCallback
    - memset
    - EOH_init_header
    - format_type_be
    - lookup_rowtype_tupdesc
    - ereport
    - lookup_type_cache
    - AllocSetContextCreate
    - MemoryContextAlloc
    - errcode
    - MAXALIGN
    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: 4
    functionLinenumber: 204
    functionLinenumberEnd: 315
    functionName: make_expanded_record_from_tupdesc
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 2
    functionsReached:
    - errmsg
    - assign_record_type_identifier
    - MemoryContextSwitchTo
    - CreateTupleDescCopy
    - MemoryContextRegisterResetCallback
    - memset
    - EOH_init_header
    - format_type_be
    - ereport
    - lookup_type_cache
    - AllocSetContextCreate
    - MemoryContextAlloc
    - errcode
    - MAXALIGN
    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: 4
    functionLinenumber: 328
    functionLinenumberEnd: 419
    functionName: make_expanded_record_from_exprecord
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 2
    functionsReached:
    - MemoryContextSwitchTo
    - CreateTupleDescCopy
    - MemoryContextRegisterResetCallback
    - memset
    - EOH_init_header
    - expanded_record_get_tupdesc
    - AllocSetContextCreate
    - MemoryContextAlloc
    - MAXALIGN
    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: TupleDescAttr
      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:
    - pfree
    - Assert
    - MemoryContextSwitchTo
    - heap_freetuple
    - MemoryContextReset
    - TupleDescAttr
    - toast_flatten_tuple
    - heap_copytuple
    - check_domain_for_new_tuple
    - get_short_term_cxt
    - DatumGetPointer
    - HeapTupleHasExternal
    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: 2
    functionLinenumber: 579
    functionLinenumberEnd: 643
    functionName: make_expanded_record_from_datum
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - DatumGetHeapTupleHeader
    - MemoryContextSwitchTo
    - Assert
    - EOHPGetRWDatum
    - EOH_init_header
    - MemoryContextAllocZero
    - ItemPointerSetInvalid
    - AllocSetContextCreate
    - heap_copytuple
    - HeapTupleHeaderGetTypeId
    - HeapTupleHeaderGetTypMod
    - HeapTupleHeaderHasExternal
    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: 3
    functionLinenumber: 651
    functionLinenumberEnd: 758
    functionName: ER_get_flat_size
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 0
    functionsReached:
    - heap_compute_data_size
    - Assert
    - TupleDescCompactAttr
    - VARATT_IS_EXTERNAL
    - expanded_record_set_field_internal
    - deconstruct_expanded_record
    - expanded_record_get_tupdesc
    - BITMAPLEN
    - assign_record_type_typmod
    - DatumGetPointer
    - MAXALIGN
    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: 4
    functionLinenumber: 763
    functionLinenumberEnd: 813
    functionName: ER_flatten_into
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 0
    functionsReached:
    - Assert
    - HeapTupleHeaderSetTypeId
    - HeapTupleHeaderSetNatts
    - memset
    - heap_fill_tuple
    - ItemPointerSetInvalid
    - expanded_record_get_tupdesc
    - HeapTupleHeaderSetDatumLength
    - HeapTupleHeaderSetTypMod
    - memcpy
    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:
    - ReleaseTupleDesc
    - assign_record_type_identifier
    - lookup_rowtype_tupdesc
    - 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: 5
    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: 3
    functionLinenumber: 926
    functionLinenumberEnd: 941
    functionName: DatumGetExpandedRecord
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 0
    functionsReached:
    - Assert
    - VARATT_IS_EXTERNAL_EXPANDED_RW
    - make_expanded_record_from_datum
    - DatumGetPointer
    - DatumGetEOHP
    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: 4
    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:
    - expanded_record_get_tupdesc
    - TupleDescAttr
    - namestrcmp
    - SystemAttributeByName
    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: 5
    functionLinenumber: 1062
    functionLinenumberEnd: 1096
    functionName: expanded_record_fetch_field
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 1
    functionsReached:
    - deconstruct_expanded_record
    - heap_getsysattr
    - unlikely
    - ExpandedRecordIsEmpty
    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: 5
    functionLinenumber: 1111
    functionLinenumberEnd: 1230
    functionName: expanded_record_set_field_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 2
    functionsReached:
    - pfree
    - Assert
    - MemoryContextSwitchTo
    - TupleDescCompactAttr
    - MemoryContextReset
    - VARATT_IS_EXTERNAL
    - datumCopy
    - PointerGetDatum
    - elog
    - check_domain_for_new_field
    - unlikely
    - deconstruct_expanded_record
    - detoast_external_attr
    - get_short_term_cxt
    - 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: 5
    functionLinenumber: 1248
    functionLinenumberEnd: 1366
    functionName: expanded_record_set_fields
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 1
    functionsReached:
    - pfree
    - Assert
    - MemoryContextSwitchTo
    - TupleDescCompactAttr
    - ExpandedRecordGetRODatum
    - VARATT_IS_EXTERNAL
    - datumCopy
    - PointerGetDatum
    - domain_check
    - unlikely
    - deconstruct_expanded_record
    - detoast_external_attr
    - get_short_term_cxt
    - 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:
    - memset
    - EOH_init_header
    - expanded_record_get_tupdesc
    - MemoryContextAlloc
    - get_short_term_cxt
    - 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: 5
    functionLinenumber: 1493
    functionLinenumberEnd: 1570
    functionName: check_domain_for_new_field
    functionSourceFile: /src/postgres/src/backend/utils/adt/expandedrecord.c
    functionUses: 1
    functionsReached:
    - MemoryContextSwitchTo
    - TupleDescCompactAttr
    - ExpandedRecordGetRODatum
    - memset
    - build_dummy_expanded_header
    - VARATT_IS_EXTERNAL
    - MemoryContextReset
    - ExpandedRecordIsEmpty
    - domain_check
    - unlikely
    - elog
    - deconstruct_expanded_record
    - memcpy
    - 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:
    - MemoryContextSwitchTo
    - ExpandedRecordGetRODatum
    - MemoryContextReset
    - build_dummy_expanded_header
    - domain_check
    - get_short_term_cxt
    - HeapTupleHasExternal
    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:53,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 61
    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:69,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:70,1
    - Dst: DatumGetInetPP
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:71,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:82,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:83,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:86,1
    - Dst: InetPGetDatum
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:87,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:89,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:93,1
    - Dst: DatumGetInetPP
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:95,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:96,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:102,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:102,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:112,1
    - Dst: InetPGetDatum
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:115,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:117,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:123,1
    - Dst: bitncmp
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:124,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:124,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:124,1
    - Dst: bitncommon
      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: Min
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:128,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:128,1
    - Dst: InetPGetDatum
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:134,1
    - Dst: cidr_set_masklen_internal
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:134,1
    - Dst: inet_spg_node_number
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:140,1
    - Dst: InetPGetDatum
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:143,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:145,1
    - Dst: inet_spg_node_number
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:154,1
    - Dst: InetPGetDatum
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:155,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:157,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 66
    functionDepth: 2
    functionLinenumber: 66
    functionLinenumberEnd: 158
    functionName: inet_spg_choose
    functionSourceFile: /src/postgres/src/backend/utils/adt/network_spgist.c
    functionUses: 0
    functionsReached:
    - Min
    - Assert
    - cidr_set_masklen_internal
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - ip_bits
    - InetPGetDatum
    - bitncmp
    - bitncommon
    - ip_family
    - inet_spg_node_number
    - ip_addr
    - DatumGetInetPP
    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:166,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:167,1
    - Dst: DatumGetInetPP
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:175,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:176,1
    - Dst: DatumGetInetPP
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:181,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:183,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:183,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:189,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:190,1
    - Dst: bitncommon
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:191,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:191,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:191,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:198,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:199,1
    - Dst: DatumGetInetPP
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:209,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:211,1
    - Dst: InetPGetDatum
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:212,1
    - Dst: InetPGetDatum
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:220,1
    - Dst: cidr_set_masklen_internal
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:220,1
    - Dst: DatumGetInetPP
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:225,1
    - Dst: inet_spg_node_number
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:226,1
    - Dst: InetPGetDatum
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:227,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:231,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 232
    functionName: inet_spg_picksplit
    functionSourceFile: /src/postgres/src/backend/utils/adt/network_spgist.c
    functionUses: 0
    functionsReached:
    - cidr_set_masklen_internal
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - ip_bits
    - bitncommon
    - InetPGetDatum
    - ip_family
    - inet_spg_node_number
    - ip_addr
    - palloc
    - DatumGetInetPP
    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:240,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:241,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:247,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:248,1
    - Dst: DatumGetInetPP
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:256,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:262,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:268,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:277,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:287,1
    - Dst: inet_spg_consistent_bitmap
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:290,1
    - Dst: DatumGetInetPP
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:290,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:303,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:315,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 237
    functionDepth: 2
    functionLinenumber: 237
    functionLinenumberEnd: 316
    functionName: inet_spg_inner_consistent
    functionSourceFile: /src/postgres/src/backend/utils/adt/network_spgist.c
    functionUses: 0
    functionsReached:
    - Assert
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - inet_spg_consistent_bitmap
    - ip_family
    - palloc
    - DatumGetInetPP
    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:324,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:325,1
    - Dst: DatumGetInetPP
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:326,1
    - Dst: InetPGetDatum
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:332,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:335,1
    - Dst: inet_spg_consistent_bitmap
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 321
    functionDepth: 2
    functionLinenumber: 321
    functionLinenumberEnd: 337
    functionName: inet_spg_leaf_consistent
    functionSourceFile: /src/postgres/src/backend/utils/adt/network_spgist.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_BOOL
    - InetPGetDatum
    - inet_spg_consistent_bitmap
    - DatumGetInetPP
    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:353,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:354,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:356,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - val
    - commonbits
    argTypes:
    - inet*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 348
    functionDepth: 1
    functionLinenumber: 348
    functionLinenumberEnd: 360
    functionName: inet_spg_node_number
    functionSourceFile: /src/postgres/src/backend/utils/adt/network_spgist.c
    functionUses: 2
    functionsReached:
    - ip_bits
    - ip_addr
    - ip_maxbits
    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:386,1
    - Dst: DatumGetInetPP
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:390,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:399,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:399,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:405,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:405,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:411,1
    - Dst: ip_family
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:411,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:447,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:452,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:457,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:459,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:464,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:466,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:471,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:473,1
    - Dst: bitncmp
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:491,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:491,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:491,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:492,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:492,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:538,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:542,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:593,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:595,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:601,1
    - Dst: ip_bits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:610,1
    - Dst: ip_maxbits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:624,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:628,1
    - Dst: bitncmp
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:669,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:669,1
    - Dst: ip_addr
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:669,1
    - Dst: ip_maxbits
      Src: /src/postgres/src/backend/utils/adt/network_spgist.c:670,1
    CyclomaticComplexity: 94
    EdgeCount: 94
    ICount: 183
    argCount: 4
    argNames:
    - prefix
    - nkeys
    - scankeys
    - leaf
    argTypes:
    - inet*
    - int
    - ScanKey
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 372
    functionDepth: 2
    functionLinenumber: 372
    functionLinenumberEnd: 711
    functionName: inet_spg_consistent_bitmap
    functionSourceFile: /src/postgres/src/backend/utils/adt/network_spgist.c
    functionUses: 2
    functionsReached:
    - Min
    - ip_maxbits
    - ip_bits
    - bitncmp
    - ip_family
    - ip_addr
    - DatumGetInetPP
    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
      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:
    - palloc
    - pg_database_encoding_max_length
    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:
    - errmsg
    - errsave
    - errcode
    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: COPYCHAR
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:211,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:212,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:219,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:220,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:221,1
    - Dst: COPYCHAR
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:226,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:227,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:228,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:234,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:239,1
    - Dst: ISOPERATOR
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:240,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:241,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:249,1
    - Dst: COPYCHAR
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:262,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:263,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:268,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:272,1
    - Dst: COPYCHAR
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:282,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:283,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:288,1
    - Dst: COPYCHAR
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:291,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:292,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:313,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:320,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:325,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:331,1
    - Dst: WEP_SETPOS
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:334,1
    - Dst: LIMITPOS
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:334,1
    - Dst: atoi
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:334,1
    - Dst: WEP_GETPOS
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:336,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:337,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:338,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:339,1
    - Dst: WEP_SETWEIGHT
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:341,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:349,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:351,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:351,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:351,1
    - Dst: WEP_GETWEIGHT
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:353,1
    - Dst: WEP_SETWEIGHT
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:355,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:357,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:357,1
    - Dst: WEP_GETWEIGHT
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:359,1
    - Dst: WEP_SETWEIGHT
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:361,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:363,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:363,1
    - Dst: WEP_GETWEIGHT
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:365,1
    - Dst: WEP_SETWEIGHT
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:367,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:369,1
    - Dst: t_iseq
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:369,1
    - Dst: WEP_GETWEIGHT
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:371,1
    - Dst: WEP_SETWEIGHT
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:373,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:375,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:378,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:382,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/tsvector_parser.c:386,1
    CyclomaticComplexity: 64
    EdgeCount: 64
    ICount: 143
    argCount: 6
    argNames:
    - state
    - strval
    - lenval
    - pos_ptr
    - poslen
    - endptr
    argTypes:
    - TSVectorParseState
    - char**
    - int*
    - WordEntryPos**
    - int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 175
    functionDepth: 2
    functionLinenumber: 175
    functionLinenumberEnd: 388
    functionName: gettoken_tsvector
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsvector_parser.c
    functionUses: 3
    functionsReached:
    - pg_mblen
    - LIMITPOS
    - t_iseq
    - errmsg
    - atoi
    - isdigit
    - elog
    - ISOPERATOR
    - ereturn
    - isspace
    - palloc
    - repalloc
    - WEP_SETPOS
    - WEP_GETWEIGHT
    - Assert
    - WEP_GETPOS
    - COPYCHAR
    - errcode
    - WEP_SETWEIGHT
    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: []
    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:
    - errmsg
    - PG_RETURN_VOID
    - errcode
    - ereport
    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_FREE_IF_COPY
    - sizebitvec
    - GETSIGLEN
    - SIGLENBIT
    - ARRNELEM
    - pstrdup
    - GETSIGN
    - PG_RETURN_POINTER
    - PG_GETARG_DATUM
    - ISALLTRUE
    - PG_DETOAST_DATUM
    - ISARRKEY
    - psprintf
    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:
    - ARRNELEM
    - MemSet
    - GETARR
    - HASH
    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: 1
    functionLinenumber: 146
    functionLinenumberEnd: 159
    functionName: gtsvector_alloc
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - CALCGTSIZE
    - GETSIGN
    - memcpy
    - palloc
    - SET_VARSIZE
    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
      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
      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: 2
    functionLinenumber: 162
    functionLinenumberEnd: 240
    functionName: gtsvector_compress
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - DatumGetTSVector
    - qunique
    - GETSIGN
    - PG_RETURN_POINTER
    - GET_SIGLEN
    - ARRPTR
    - INIT_LEGACY_CRC32
    - ISALLTRUE
    - DatumGetPointer
    - COMP_LEGACY_CRC32
    - FIN_LEGACY_CRC32
    - qsort
    - gistentryinit
    - PG_GETARG_POINTER
    - makesign
    - CALCGTSIZE
    - STRPTR
    - VARSIZE
    - ISSIGNKEY
    - gtsvector_alloc
    - repalloc
    - palloc
    - SET_VARSIZE
    - GETARR
    - PointerGetDatum
    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
      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
    - palloc
    - PG_GETARG_POINTER
    - PointerGetDatum
    - PG_DETOAST_DATUM
    - DatumGetPointer
    - PG_RETURN_POINTER
    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:
    - HASHVAL
    - GETBIT
    - GETSIGLEN
    - GETSIGN
    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_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:332,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:333,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:339,1
    - Dst: ISSIGNKEY
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:341,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:343,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:344,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:346,1
    - Dst: TS_execute
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:346,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:346,1
    - Dst: GETARR
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:355,1
    - Dst: ARRNELEM
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:356,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:357,1
    - Dst: TS_execute
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:357,1
    - Dst: GETQUERY
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:357,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 324
    functionDepth: 1
    functionLinenumber: 324
    functionLinenumberEnd: 362
    functionName: gtsvector_consistent
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TSQUERY
    - GETARR
    - GETQUERY
    - TS_execute
    - PG_GETARG_POINTER
    - ARRNELEM
    - PG_RETURN_BOOL
    - ISSIGNKEY
    - ISALLTRUE
    - 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:369,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:371,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:373,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:376,1
    - Dst: GETSIGLEN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:376,1
    - Dst: LOOPBYTE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:378,1
    - Dst: GETARR
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:383,1
    - Dst: ARRNELEM
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:385,1
    - Dst: HASH
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:386,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - sbase
    - add
    - siglen
    argTypes:
    - BITVECP
    - SignTSVector*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 364
    functionDepth: 1
    functionLinenumber: 364
    functionLinenumberEnd: 389
    functionName: unionkey
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - Assert
    - ISALLTRUE
    - GETARR
    - HASH
    - ARRNELEM
    - ISSIGNKEY
    - GETSIGN
    - GETSIGLEN
    - LOOPBYTE
    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:395,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:396,1
    - Dst: GET_SIGLEN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:397,1
    - Dst: gtsvector_alloc
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:398,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:399,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:402,1
    - Dst: unionkey
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:406,1
    - Dst: GETENTRY
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:406,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:409,1
    - Dst: CALCGTSIZE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:409,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:414,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:416,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 392
    functionDepth: 2
    functionLinenumber: 392
    functionLinenumberEnd: 417
    functionName: gtsvector_union
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - GET_SIGLEN
    - unionkey
    - PG_GETARG_POINTER
    - memset
    - CALCGTSIZE
    - VARSIZE
    - gtsvector_alloc
    - GETSIGN
    - SET_VARSIZE
    - 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:422,1
    - 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: GET_SIGLEN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:425,1
    - Dst: ISSIGNKEY
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:427,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:429,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:429,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:431,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:433,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:438,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:439,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:441,1
    - Dst: GETSIGLEN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:441,1
    - Dst: GETSIGLEN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:441,1
    - Dst: ARRNELEM
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:456,1
    - Dst: ARRNELEM
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:457,1
    - Dst: GETARR
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:463,1
    - Dst: GETARR
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:464,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:477,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 419
    functionDepth: 1
    functionLinenumber: 419
    functionLinenumberEnd: 478
    functionName: gtsvector_same
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - Assert
    - GETARR
    - GET_SIGLEN
    - PG_GETARG_POINTER
    - ARRNELEM
    - ISSIGNKEY
    - GETSIGN
    - ISALLTRUE
    - GETSIGLEN
    - PG_RETURN_POINTER
    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: 451
      start: 444
    functionDepth: 0
    functionLinenumber: 444
    functionLinenumberEnd: 451
    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:483,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sign
    - siglen
    argTypes:
    - BITVECP
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 480
    functionDepth: 1
    functionLinenumber: 480
    functionLinenumberEnd: 484
    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: 500
      start: 486
    functionDepth: 0
    functionLinenumber: 486
    functionLinenumberEnd: 500
    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: 498
      start: 493
    functionDepth: 0
    functionLinenumber: 493
    functionLinenumberEnd: 498
    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:505,1
    - Dst: GETSIGLEN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:506,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:508,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:510,1
    - Dst: SIGLENBIT
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:513,1
    - Dst: sizebitvec
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:513,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:513,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:515,1
    - Dst: SIGLENBIT
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:516,1
    - Dst: sizebitvec
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:516,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:516,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:518,1
    - Dst: hemdistsign
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:520,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:520,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:520,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - SignTSVector*
    - SignTSVector*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 502
    functionDepth: 1
    functionLinenumber: 502
    functionLinenumberEnd: 521
    functionName: hemdist
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - Assert
    - sizebitvec
    - SIGLENBIT
    - hemdistsign
    - GETSIGN
    - ISALLTRUE
    - 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:526,1
    - 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: GET_SIGLEN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:529,1
    - Dst: DatumGetPointer
      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: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:532,1
    - Dst: ISARRKEY
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:536,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:538,1
    - Dst: makesign
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:540,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:542,1
    - Dst: SIGLENBIT
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:544,1
    - Dst: sizebitvec
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:547,1
    - Dst: hemdistsign
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:551,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:553,1
    - Dst: hemdist
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:556,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:557,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 523
    functionDepth: 1
    functionLinenumber: 523
    functionLinenumberEnd: 558
    functionName: gtsvector_penalty
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - pfree
    - hemdist
    - ISALLTRUE
    - sizebitvec
    - GET_SIGLEN
    - SIGLENBIT
    - PG_GETARG_POINTER
    - makesign
    - hemdistsign
    - GETSIGN
    - palloc
    - ISARRKEY
    - DatumGetPointer
    - PG_RETURN_POINTER
    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:570,1
    - Dst: makesign
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:571,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:572,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:575,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:575,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - item
    - key
    - siglen
    argTypes:
    - CACHESIGN*
    - SignTSVector*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 566
    functionDepth: 0
    functionLinenumber: 566
    functionLinenumberEnd: 576
    functionName: fillcache
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - ISALLTRUE
    - memcpy
    - makesign
    - GETSIGN
    - ISARRKEY
    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: 579
      start: 578
    functionDepth: 0
    functionLinenumber: 578
    functionLinenumberEnd: 579
    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:591,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - va
    - vb
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 585
    functionDepth: 1
    functionLinenumber: 585
    functionLinenumberEnd: 592
    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:603,1
    - Dst: sizebitvec
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:603,1
    - Dst: SIGLENBIT
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:606,1
    - Dst: sizebitvec
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:606,1
    - Dst: hemdistsign
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:608,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - a
    - b
    - siglen
    argTypes:
    - CACHESIGN*
    - CACHESIGN*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 609
    functionName: hemdistcache
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - sizebitvec
    - hemdistsign
    - 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:614,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:615,1
    - Dst: GET_SIGLEN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:616,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:641,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:644,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:645,1
    - Dst: fillcache
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:650,1
    - Dst: GETENTRY
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:650,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:653,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:655,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:655,1
    - Dst: fillcache
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:658,1
    - Dst: GETENTRY
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:658,1
    - Dst: hemdistcache
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:660,1
    - Dst: gtsvector_alloc
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:682,1
    - Dst: gtsvector_alloc
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:684,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:686,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:687,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:688,1
    - Dst: fillcache
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:689,1
    - Dst: GETENTRY
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:689,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:691,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:692,1
    - Dst: hemdistcache
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:695,1
    - Dst: hemdistcache
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:696,1
    - Dst: abs
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:697,1
    - Dst: qsort
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:699,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:717,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:719,1
    - Dst: SIGLENBIT
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:722,1
    - Dst: sizebitvec
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:723,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:724,1
    - Dst: hemdistsign
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:729,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:729,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:731,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:733,1
    - Dst: SIGLENBIT
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:736,1
    - Dst: sizebitvec
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:737,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:738,1
    - Dst: hemdistsign
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:743,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:743,1
    - Dst: WISH_F
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:745,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:747,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:749,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:750,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:750,1
    - Dst: LOOPBYTE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:755,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:763,1
    - Dst: ISALLTRUE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:765,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:766,1
    - Dst: GETSIGN
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:766,1
    - Dst: LOOPBYTE
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:771,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:780,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:781,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:783,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 95
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 611
    functionDepth: 2
    functionLinenumber: 611
    functionLinenumberEnd: 784
    functionName: gtsvector_picksplit
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - GETSIGN
    - LOOPBYTE
    - PG_RETURN_POINTER
    - GET_SIGLEN
    - WISH_F
    - OffsetNumberNext
    - ISALLTRUE
    - qsort
    - sizebitvec
    - PG_GETARG_POINTER
    - fillcache
    - gtsvector_alloc
    - palloc
    - SIGLENBIT
    - memset
    - hemdistsign
    - PointerGetDatum
    - hemdistcache
    - abs
    - GETENTRY
    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:796,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 793
    functionDepth: 2
    functionLinenumber: 793
    functionLinenumberEnd: 797
    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:802,1
    - Dst: init_local_reloptions
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:804,1
    - Dst: add_local_int_reloption
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:805,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/tsgistidx.c:809,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 799
    functionDepth: 4
    functionLinenumber: 799
    functionLinenumberEnd: 810
    functionName: gtsvector_options
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsgistidx.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - add_local_int_reloption
    - init_local_reloptions
    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
      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:
    - get_base_element_type
    - std_typanalyze
    - PG_GETARG_POINTER
    - PG_RETURN_BOOL
    - lookup_type_cache
    - elog
    - OidIsValid
    - palloc
    linkageType: ''
    returnType: Datum
    signature: Datum array_typanalyze(PG_FUNCTION_ARGS)
  - BBCount: 16
    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
      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:478,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:483,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:484,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:487,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:490,1
    - Dst: qsort_interruptible
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:503,1
    - Dst: qsort_interruptible
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:523,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:527,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:535,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:536,1
    - Dst: datumCopy
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:546,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:556,1
    - Dst: hash_get_num_entries
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:575,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:586,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:593,1
    - Dst: hash_seq_init
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:594,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:596,1
    - Dst: qsort_interruptible
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:600,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:609,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:659,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 154
    argCount: 4
    argNames:
    - stats
    - fetchfunc
    - samplerows
    - totalrows
    argTypes:
    - VacAttrStats*
    - AnalyzeAttrFetchFunc
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 215
    functionDepth: 2
    functionLinenumber: 215
    functionLinenumberEnd: 674
    functionName: compute_array_stats
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_typanalyze.c
    functionUses: 0
    functionsReached:
    - fetchfunc
    - MemoryContextSwitchTo
    - datumCopy
    - vacuum_delay_point
    - deconstruct_array
    - pfree
    - Min
    - DatumGetArrayTypeP
    - qsort_interruptible
    - hash_create
    - ArrayAnalyzeExtraData*::std_compute_stats
    - Max
    - prune_element_hashtable
    - hash_seq_search
    - hash_seq_init
    - elog
    - palloc
    - ARR_ELEMTYPE
    - toast_raw_datum_size
    - Assert
    - hash_search
    - PointerGetDatum
    - MemoryContextAlloc
    - hash_get_num_entries
    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:686,1
    - Dst: hash_seq_search
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:687,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:693,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:695,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:698,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:698,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - elements_tab
    - b_current
    argTypes:
    - HTAB*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 680
    functionDepth: 2
    functionLinenumber: 680
    functionLinenumberEnd: 701
    functionName: prune_element_hashtable
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_typanalyze.c
    functionUses: 1
    functionsReached:
    - pfree
    - hash_seq_search
    - hash_seq_init
    - hash_search
    - elog
    - 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:715,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:718,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key
    - keysize
    argTypes:
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 709
    functionDepth: 1
    functionLinenumber: 709
    functionLinenumberEnd: 719
    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:728,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - key1
    - key2
    - keysize
    argTypes:
    - void*
    - void*
    - Size
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 724
    functionDepth: 0
    functionLinenumber: 724
    functionLinenumberEnd: 729
    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:746,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/array_typanalyze.c:749,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key1
    - key2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 739
    functionDepth: 1
    functionLinenumber: 739
    functionLinenumberEnd: 750
    functionName: element_compare
    functionSourceFile: /src/postgres/src/backend/utils/adt/array_typanalyze.c
    functionUses: 4
    functionsReached:
    - DatumGetInt32
    - FunctionCall2Coll
    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: 762
      start: 755
    functionDepth: 0
    functionLinenumber: 755
    functionLinenumberEnd: 762
    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:773,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - e1
    - e2
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 767
    functionDepth: 0
    functionLinenumber: 767
    functionLinenumberEnd: 774
    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: 791
      start: 779
    functionDepth: 0
    functionLinenumber: 779
    functionLinenumberEnd: 791
    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
    - errcode
    - ArrayGetIntegerTypmods
    - ereport
    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:
    - palloc
    - snprintf
    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:
    - errmsg
    - memset
    - pg_mbstrlen_with_len
    - ereturn
    - VARDATA
    - SET_VARSIZE
    - pg_mbcharcliplen
    - memcpy
    - palloc
    - errcode
    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:
    - bpchar_input
    - PG_GETARG_CSTRING
    - PG_GETARG_OID
    - PG_RETURN_BPCHAR_P
    - PG_GETARG_INT32
    - strlen
    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:
    - TextDatumGetCString
    - PG_RETURN_CSTRING
    - PG_GETARG_DATUM
    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:
    - bpchar_input
    - pfree
    - PG_GETARG_POINTER
    - pq_getmsgtext
    - PG_GETARG_OID
    - PG_RETURN_BPCHAR_P
    - 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: ereport
      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: 2
    functionLinenumber: 270
    functionLinenumberEnd: 346
    functionName: bpchar
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - Assert
    - memcpy
    - memset
    - pg_mbstrlen_with_len
    - ereport
    - VARDATA
    - PG_RETURN_BPCHAR_P
    - PG_GETARG_BOOL
    - PG_GETARG_INT32
    - pg_mbcharcliplen
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - palloc
    - SET_VARSIZE
    - PG_GETARG_BPCHAR_PP
    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:355,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/varchar.c:358,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/varchar.c:360,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/varchar.c:361,1
    - Dst: PG_RETURN_BPCHAR_P
      Src: /src/postgres/src/backend/utils/adt/varchar.c:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 352
    functionDepth: 1
    functionLinenumber: 352
    functionLinenumberEnd: 364
    functionName: char_bpchar
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CHAR
    - VARDATA
    - PG_RETURN_BPCHAR_P
    - palloc
    - SET_VARSIZE
    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:373,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varchar.c:378,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:379,1
    - Dst: pg_mbcliplen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:383,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/varchar.c:394,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/varchar.c:395,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varchar.c:395,1
    - Dst: PG_RETURN_NAME
      Src: /src/postgres/src/backend/utils/adt/varchar.c:397,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 398
    functionName: bpchar_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - NameStr
    - memcpy
    - PG_RETURN_NAME
    - palloc0
    - pg_mbcliplen
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - 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:409,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/varchar.c:412,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varchar.c:412,1
    - Dst: PG_RETURN_BPCHAR_P
      Src: /src/postgres/src/backend/utils/adt/varchar.c:413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 406
    functionDepth: 1
    functionLinenumber: 406
    functionLinenumberEnd: 414
    functionName: name_bpchar
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NAME
    - cstring_to_text
    - PG_RETURN_BPCHAR_P
    - 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:419,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/varchar.c:421,1
    - Dst: anychar_typmodin
      Src: /src/postgres/src/backend/utils/adt/varchar.c:421,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 416
    functionDepth: 4
    functionLinenumber: 416
    functionLinenumberEnd: 422
    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:427,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/varchar.c:429,1
    - Dst: anychar_typmodout
      Src: /src/postgres/src/backend/utils/adt/varchar.c:429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 424
    functionDepth: 1
    functionLinenumber: 424
    functionLinenumberEnd: 430
    functionName: bpchartypmodout
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - anychar_typmodout
    - PG_RETURN_CSTRING
    - PG_GETARG_INT32
    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:467,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/varchar.c:473,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varchar.c:474,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varchar.c:475,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/varchar.c:486,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: 488
      start: 456
    functionDepth: 2
    functionLinenumber: 456
    functionLinenumberEnd: 488
    functionName: varchar_input
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereturn
    - pg_mbcharcliplen
    - errcode
    - cstring_to_text_with_len
    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:497,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/varchar.c:499,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/varchar.c:501,1
    - Dst: varchar_input
      Src: /src/postgres/src/backend/utils/adt/varchar.c:504,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:504,1
    - Dst: PG_RETURN_VARCHAR_P
      Src: /src/postgres/src/backend/utils/adt/varchar.c:505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 494
    functionDepth: 3
    functionLinenumber: 494
    functionLinenumberEnd: 506
    functionName: varcharin
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - varchar_input
    - PG_RETURN_VARCHAR_P
    - PG_GETARG_OID
    - PG_GETARG_INT32
    - strlen
    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:518,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/varchar.c:520,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/varchar.c:520,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 515
    functionDepth: 1
    functionLinenumber: 515
    functionLinenumberEnd: 521
    functionName: varcharout
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - TextDatumGetCString
    - PG_RETURN_CSTRING
    - PG_GETARG_DATUM
    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:529,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/varchar.c:531,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/varchar.c:533,1
    - Dst: pq_getmsgtext
      Src: /src/postgres/src/backend/utils/adt/varchar.c:538,1
    - Dst: varchar_input
      Src: /src/postgres/src/backend/utils/adt/varchar.c:539,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varchar.c:540,1
    - Dst: PG_RETURN_VARCHAR_P
      Src: /src/postgres/src/backend/utils/adt/varchar.c:541,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 526
    functionDepth: 3
    functionLinenumber: 526
    functionLinenumberEnd: 542
    functionName: varcharrecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - varchar_input
    - pfree
    - PG_RETURN_VARCHAR_P
    - PG_GETARG_POINTER
    - pq_getmsgtext
    - PG_GETARG_OID
    - 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:551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 547
    functionDepth: 1
    functionLinenumber: 547
    functionLinenumberEnd: 552
    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:567,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/varchar.c:570,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/varchar.c:576,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/varchar.c:576,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/utils/adt/varchar.c:578,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/varchar.c:580,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/varchar.c:582,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/utils/adt/varchar.c:583,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/varchar.c:584,1
    - Dst: relabel_to_typmod
      Src: /src/postgres/src/backend/utils/adt/varchar.c:589,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/varchar.c:593,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 564
    functionDepth: 5
    functionLinenumber: 564
    functionLinenumberEnd: 594
    functionName: varchar_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - Assert
    - relabel_to_typmod
    - linitial
    - PG_GETARG_POINTER
    - exprTypmod
    - DatumGetInt32
    - lsecond
    - IsA
    - list_length
    - 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:611,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/varchar.c:612,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/varchar.c:613,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varchar.c:620,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:621,1
    - Dst: PG_RETURN_VARCHAR_P
      Src: /src/postgres/src/backend/utils/adt/varchar.c:626,1
    - Dst: pg_mbcharcliplen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:631,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varchar.c:637,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varchar.c:638,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varchar.c:639,1
    - Dst: PG_RETURN_VARCHAR_P
      Src: /src/postgres/src/backend/utils/adt/varchar.c:643,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/varchar.c:643,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 608
    functionDepth: 2
    functionLinenumber: 608
    functionLinenumberEnd: 645
    functionName: varchar
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 1
    functionsReached:
    - errmsg
    - PG_RETURN_VARCHAR_P
    - ereport
    - PG_GETARG_BOOL
    - PG_GETARG_INT32
    - pg_mbcharcliplen
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - PG_GETARG_VARCHAR_PP
    - errcode
    - cstring_to_text_with_len
    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:650,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/varchar.c:652,1
    - Dst: anychar_typmodin
      Src: /src/postgres/src/backend/utils/adt/varchar.c:652,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 647
    functionDepth: 4
    functionLinenumber: 647
    functionLinenumberEnd: 653
    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:658,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/varchar.c:660,1
    - Dst: anychar_typmodout
      Src: /src/postgres/src/backend/utils/adt/varchar.c:660,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 655
    functionDepth: 1
    functionLinenumber: 655
    functionLinenumberEnd: 661
    functionName: varchartypmodout
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - anychar_typmodout
    - PG_RETURN_CSTRING
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum varchartypmodout(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bpchartruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:672,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:672,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varchar.c:672,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - BpChar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 669
    functionDepth: 1
    functionLinenumber: 669
    functionLinenumberEnd: 673
    functionName: bcTruelen
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - VARDATA_ANY
    - bpchartruelen
    - VARSIZE_ANY_EXHDR
    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: 690
      start: 675
    functionDepth: 0
    functionLinenumber: 675
    functionLinenumberEnd: 690
    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:695,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:699,1
    - Dst: pg_database_encoding_max_length
      Src: /src/postgres/src/backend/utils/adt/varchar.c:702,1
    - Dst: pg_mbstrlen_with_len
      Src: /src/postgres/src/backend/utils/adt/varchar.c:703,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:703,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/varchar.c:705,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 692
    functionDepth: 2
    functionLinenumber: 692
    functionLinenumberEnd: 706
    functionName: bpcharlen
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - pg_mbstrlen_with_len
    - pg_database_encoding_max_length
    - VARDATA_ANY
    - bcTruelen
    - PG_GETARG_BPCHAR_PP
    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:711,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/varchar.c:714,1
    - Dst: toast_raw_datum_size
      Src: /src/postgres/src/backend/utils/adt/varchar.c:714,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 708
    functionDepth: 2
    functionLinenumber: 708
    functionLinenumberEnd: 715
    functionName: bpcharoctetlen
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - toast_raw_datum_size
    - PG_GETARG_DATUM
    linkageType: ''
    returnType: Datum
    signature: Datum bpcharoctetlen(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/varchar.c:729,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varchar.c:735,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varchar.c:736,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varchar.c:737,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/varchar.c:738,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - collid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 726
    functionDepth: 2
    functionLinenumber: 726
    functionLinenumberEnd: 740
    functionName: check_collation_set
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - errhint
    - OidIsValid
    - errcode
    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:745,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:746,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varchar.c:750,1
    - Dst: check_collation_set
      Src: /src/postgres/src/backend/utils/adt/varchar.c:753,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:755,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:756,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/utils/adt/varchar.c:758,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/varchar.c:769,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:769,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:769,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/varchar.c:773,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:773,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:773,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:777,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:778,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varchar.c:780,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 742
    functionDepth: 2
    functionLinenumber: 742
    functionLinenumberEnd: 781
    functionName: bpchareq
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - varstr_cmp
    - memcmp
    - PG_RETURN_BOOL
    - check_collation_set
    - PG_GET_COLLATION
    - VARDATA_ANY
    - bcTruelen
    - PG_GETARG_BPCHAR_PP
    - pg_newlocale_from_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:786,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:787,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varchar.c:791,1
    - Dst: check_collation_set
      Src: /src/postgres/src/backend/utils/adt/varchar.c:794,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:796,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:797,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/utils/adt/varchar.c:799,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/varchar.c:810,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:810,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:810,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/varchar.c:814,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:814,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:814,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:818,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:819,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varchar.c:821,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 783
    functionDepth: 2
    functionLinenumber: 783
    functionLinenumberEnd: 822
    functionName: bpcharne
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - varstr_cmp
    - memcmp
    - PG_RETURN_BOOL
    - check_collation_set
    - PG_GET_COLLATION
    - VARDATA_ANY
    - bcTruelen
    - PG_GETARG_BPCHAR_PP
    - pg_newlocale_from_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:827,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:828,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:833,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:834,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/varchar.c:836,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:836,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:836,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varchar.c:837,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:839,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:840,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varchar.c:842,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 824
    functionDepth: 2
    functionLinenumber: 824
    functionLinenumberEnd: 843
    functionName: bpcharlt
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - varstr_cmp
    - PG_RETURN_BOOL
    - PG_GET_COLLATION
    - VARDATA_ANY
    - bcTruelen
    - PG_GETARG_BPCHAR_PP
    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:848,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:849,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:854,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:855,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/varchar.c:857,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:857,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:857,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varchar.c:858,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:860,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:861,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varchar.c:863,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 845
    functionDepth: 2
    functionLinenumber: 845
    functionLinenumberEnd: 864
    functionName: bpcharle
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - varstr_cmp
    - PG_RETURN_BOOL
    - PG_GET_COLLATION
    - VARDATA_ANY
    - bcTruelen
    - PG_GETARG_BPCHAR_PP
    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:869,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:870,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:875,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:876,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/varchar.c:878,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:878,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:878,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varchar.c:879,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:881,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:882,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varchar.c:884,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 866
    functionDepth: 2
    functionLinenumber: 866
    functionLinenumberEnd: 885
    functionName: bpchargt
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - varstr_cmp
    - PG_RETURN_BOOL
    - PG_GET_COLLATION
    - VARDATA_ANY
    - bcTruelen
    - PG_GETARG_BPCHAR_PP
    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:890,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:891,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:896,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:897,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/varchar.c:899,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:899,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:899,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varchar.c:900,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:902,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:903,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varchar.c:905,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 887
    functionDepth: 2
    functionLinenumber: 887
    functionLinenumberEnd: 906
    functionName: bpcharge
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - varstr_cmp
    - PG_RETURN_BOOL
    - PG_GET_COLLATION
    - VARDATA_ANY
    - bcTruelen
    - PG_GETARG_BPCHAR_PP
    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:911,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:912,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:917,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:918,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/varchar.c:920,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:920,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:920,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varchar.c:921,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:923,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:924,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/varchar.c:926,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 908
    functionDepth: 2
    functionLinenumber: 908
    functionLinenumberEnd: 927
    functionName: bpcharcmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_FREE_IF_COPY
    - varstr_cmp
    - PG_GET_COLLATION
    - VARDATA_ANY
    - bcTruelen
    - PG_GETARG_BPCHAR_PP
    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:932,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/varchar.c:936,1
    - Dst: varstr_sortsupport
      Src: /src/postgres/src/backend/utils/adt/varchar.c:939,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/varchar.c:941,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/varchar.c:943,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 944
      start: 929
    functionDepth: 1
    functionLinenumber: 929
    functionLinenumberEnd: 944
    functionName: bpchar_sortsupport
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - MemoryContextSwitchTo
    - varstr_sortsupport
    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:949,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:950,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:955,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:956,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/varchar.c:958,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:958,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:958,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varchar.c:959,1
    - Dst: PG_RETURN_BPCHAR_P
      Src: /src/postgres/src/backend/utils/adt/varchar.c:961,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 946
    functionDepth: 2
    functionLinenumber: 946
    functionLinenumberEnd: 962
    functionName: bpchar_larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - varstr_cmp
    - PG_RETURN_BPCHAR_P
    - PG_GET_COLLATION
    - VARDATA_ANY
    - bcTruelen
    - PG_GETARG_BPCHAR_PP
    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:967,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:968,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:973,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:974,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/varchar.c:976,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:976,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:976,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varchar.c:977,1
    - Dst: PG_RETURN_BPCHAR_P
      Src: /src/postgres/src/backend/utils/adt/varchar.c:979,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 964
    functionDepth: 2
    functionLinenumber: 964
    functionLinenumberEnd: 980
    functionName: bpchar_smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - varstr_cmp
    - PG_RETURN_BPCHAR_P
    - PG_GET_COLLATION
    - VARDATA_ANY
    - bcTruelen
    - PG_GETARG_BPCHAR_PP
    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:990,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varchar.c:991,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varchar.c:998,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varchar.c:999,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1000,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1001,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1003,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1004,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1006,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1010,1
    - Dst: pg_strnxfrm
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1018,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1019,1
    - Dst: pg_strnxfrm
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1021,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1025,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1032,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1034,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1038,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 987
    functionDepth: 2
    functionLinenumber: 987
    functionLinenumberEnd: 1041
    functionName: hashbpchar
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - errmsg
    - hash_any
    - pfree
    - PG_FREE_IF_COPY
    - PG_GETARG_BPCHAR_PP
    - ereport
    - errhint
    - elog
    - PG_GET_COLLATION
    - VARDATA_ANY
    - palloc
    - pg_strnxfrm
    - bcTruelen
    - errcode
    - pg_newlocale_from_collation
    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:1046,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1047,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1054,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1055,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1056,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1057,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1059,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1060,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1062,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1066,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1067,1
    - Dst: pg_strnxfrm
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1075,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1076,1
    - Dst: pg_strnxfrm
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1078,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1082,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1089,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1090,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1092,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1095,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1098
      start: 1043
    functionDepth: 2
    functionLinenumber: 1043
    functionLinenumberEnd: 1098
    functionName: hashbpcharextended
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pfree
    - PG_FREE_IF_COPY
    - PG_GETARG_BPCHAR_PP
    - PG_GETARG_INT64
    - ereport
    - errhint
    - elog
    - PG_GET_COLLATION
    - VARDATA_ANY
    - palloc
    - pg_strnxfrm
    - bcTruelen
    - errcode
    - hash_any_extended
    - pg_newlocale_from_collation
    linkageType: ''
    returnType: Datum
    signature: Datum hashbpcharextended(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1115,1
    - Dst: bcTruelen
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1116,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1118,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1118,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1118,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1118,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - BpChar*
    - BpChar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1108
    functionDepth: 2
    functionLinenumber: 1108
    functionLinenumberEnd: 1127
    functionName: internal_bpchar_pattern_compare
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - VARDATA_ANY
    - memcmp
    - bcTruelen
    - Min
    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:1133,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1134,1
    - Dst: internal_bpchar_pattern_compare
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1137,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1139,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1140,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1130
    functionDepth: 3
    functionLinenumber: 1130
    functionLinenumberEnd: 1143
    functionName: bpchar_pattern_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_BPCHAR_PP
    - internal_bpchar_pattern_compare
    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:1149,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1150,1
    - Dst: internal_bpchar_pattern_compare
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1153,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1155,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1156,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1159
      start: 1146
    functionDepth: 3
    functionLinenumber: 1146
    functionLinenumberEnd: 1159
    functionName: bpchar_pattern_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_BPCHAR_PP
    - internal_bpchar_pattern_compare
    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:1165,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1166,1
    - Dst: internal_bpchar_pattern_compare
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1169,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1171,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1172,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1175
      start: 1162
    functionDepth: 3
    functionLinenumber: 1162
    functionLinenumberEnd: 1175
    functionName: bpchar_pattern_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_BPCHAR_PP
    - internal_bpchar_pattern_compare
    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:1181,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1182,1
    - Dst: internal_bpchar_pattern_compare
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1185,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1187,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1188,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1191
      start: 1178
    functionDepth: 3
    functionLinenumber: 1178
    functionLinenumberEnd: 1191
    functionName: bpchar_pattern_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_BPCHAR_PP
    - internal_bpchar_pattern_compare
    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:1197,1
    - Dst: PG_GETARG_BPCHAR_PP
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1198,1
    - Dst: internal_bpchar_pattern_compare
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1201,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1203,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1204,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1207
      start: 1194
    functionDepth: 3
    functionLinenumber: 1194
    functionLinenumberEnd: 1207
    functionName: btbpchar_pattern_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_FREE_IF_COPY
    - PG_GETARG_BPCHAR_PP
    - internal_bpchar_pattern_compare
    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:1213,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1216,1
    - Dst: varstr_sortsupport
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1219,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1221,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/varchar.c:1223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1224
      start: 1210
    functionDepth: 1
    functionLinenumber: 1210
    functionLinenumberEnd: 1224
    functionName: btbpchar_pattern_sortsupport
    functionSourceFile: /src/postgres/src/backend/utils/adt/varchar.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - MemoryContextSwitchTo
    - varstr_sortsupport
    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:
    - PG_GETARG_POINTER
    - multirange_get_typcache
    - get_restriction_variable
    - IsA
    - make_multirange
    - PG_GETARG_OID
    - DatumGetMultirangeTypeP
    - DatumGetRangeTypeP
    - PG_GETARG_INT32
    - default_multirange_selectivity
    - range_serialize
    - ReleaseVariableStats
    - CLAMP_PROBABILITY
    - PG_RETURN_FLOAT8
    - get_commutator
    - calc_multirangesel
    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:
    - HeapTupleIsValid
    - free_attstatsslot
    - MultirangeIsEmpty
    - GETSTRUCT
    - get_attstatsslot
    - elog
    - default_multirange_selectivity
    - CLAMP_PROBABILITY
    - calc_hist_selectivity
    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
      Src: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c:499,1
    - Dst: palloc
      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:
    - Assert
    - calc_hist_selectivity_scalar
    - memset
    - statistic_proc_security_check
    - HeapTupleIsValid
    - free_attstatsslot
    - multirange_get_bounds
    - calc_hist_selectivity_contains
    - calc_hist_selectivity_contained
    - get_attstatsslot
    - elog
    - OidIsValid
    - DatumGetRangeTypeP
    - palloc
    - range_deserialize
    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:
    - Max
    - rbound_bsearch
    - get_position
    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: 3
    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(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: 3
    functionLinenumber: 793
    functionLinenumberEnd: 866
    functionName: get_position
    functionSourceFile: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c
    functionUses: 1
    functionsReached:
    - isnan
    - Min
    - DatumGetFloat8
    - FunctionCall2Coll
    - Max
    - OidIsValid
    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: 3
    functionLinenumber: 917
    functionLinenumberEnd: 958
    functionName: get_distance
    functionSourceFile: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c
    functionUses: 0
    functionsReached:
    - isnan
    - DatumGetFloat8
    - FunctionCall2Coll
    - OidIsValid
    - 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: 3
    functionLinenumber: 965
    functionLinenumberEnd: 1119
    functionName: calc_length_hist_frac
    functionSourceFile: /src/postgres/src/backend/utils/adt/multirangetypes_selfuncs.c
    functionUses: 0
    functionsReached:
    - DatumGetFloat8
    - Assert
    - isinf
    - get_len_position
    - length_hist_bsearch
    linkageType: ''
    returnType: double
    signature: "double calc_length_hist_frac(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:
    - Min
    - calc_length_hist_frac
    - range_cmp_bounds
    - rbound_bsearch
    - get_position
    - get_distance
    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\tDatum *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:
    - Min
    - calc_length_hist_frac
    - rbound_bsearch
    - get_position
    - get_distance
    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   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
      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
    linkageType: ''
    returnType: RangeBox
    signature: 'RangeBox *

      getRangeBox(BOX *box)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      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:
    - palloc
    - get_float8_infinity
    linkageType: ''
    returnType: RectBox
    signature: 'RectBox *

      initRectBox(void)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      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
    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:
    - FPge
    - FPle
    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:
    - FPge
    - FPle
    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:
    - FPge
    - FPle
    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: 1
    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:
    - getQuadrant
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - BoxPGetDatum
    - DatumGetBoxP
    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
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:448,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:449,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:450,1
    - Dst: palloc
      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
      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
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:485,1
    - Dst: palloc
      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:
    - getQuadrant
    - qsort
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - BoxPGetDatum
    - DatumGetBoxP
    - palloc
    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
    - DatumGetBoxP
    - is_bounding_box_test_exact
    - DatumGetPolygonP
    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
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:577,1
    - Dst: palloc
      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
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:593,1
    - Dst: palloc
      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
      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
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:622,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_spgist.c:623,1
    - Dst: palloc
      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
      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:
    - MemoryContextSwitchTo
    - contained4D
    - contain4D
    - above4D
    - overlap4D
    - initRectBox
    - pfree
    - below4D
    - nextRectBox
    - DatumGetBoxP
    - overBelow4D
    - memcpy
    - overAbove4D
    - getRangeBox
    - PG_GETARG_POINTER
    - spg_box_quad_get_scankey_bbox
    - PG_RETURN_VOID
    - right4D
    - elog
    - palloc
    - DatumGetPointP
    - overLeft4D
    - pointToRectBoxDistance
    - overRight4D
    - left4D
    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:
    - PG_GETARG_POINTER
    - spg_box_quad_get_scankey_bbox
    - spg_key_orderbys_distances
    - PG_RETURN_BOOL
    - BoxPGetDatum
    - elog
    - DirectFunctionCall2
    - 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
      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_RETURN_BOX_P
    - palloc
    - PG_GETARG_POLYGON_P
    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:198,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:199,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: 200
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 200
    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:205,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:207,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - x
    - str
    argTypes:
    - float8
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 202
    functionDepth: 2
    functionLinenumber: 202
    functionLinenumberEnd: 209
    functionName: single_encode
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - pfree
    - appendStringInfoString
    - float8out_internal
    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:218,1
    - Dst: single_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:223,1
    - Dst: single_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:229,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:236,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:248,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:249,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:250,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: 252
      start: 211
    functionDepth: 2
    functionLinenumber: 211
    functionLinenumberEnd: 252
    functionName: pair_decode
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - errmsg
    - single_decode
    - ereturn
    - isspace
    - errcode
    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:257,1
    - Dst: float8out_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:258,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:260,1
    - Dst: pfree
      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
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - x
    - y
    - str
    argTypes:
    - float8
    - float8
    - StringInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 254
    functionDepth: 2
    functionLinenumber: 254
    functionLinenumberEnd: 263
    functionName: pair_encode
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - pfree
    - float8out_internal
    - appendStringInfo
    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:275,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:288,1
    - Dst: strrchr
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:295,1
    - Dst: pair_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:304,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:318,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:333,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:334,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:335,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: 337
      start: 265
    functionDepth: 3
    functionLinenumber: 265
    functionLinenumberEnd: 337
    functionName: path_decode
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - errmsg
    - strrchr
    - pair_decode
    - ereturn
    - isspace
    - errcode
    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:345,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:350,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:353,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:362,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:363,1
    - Dst: pair_encode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:364,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:365,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:372,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:375,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: 382
      start: 339
    functionDepth: 3
    functionLinenumber: 339
    functionLinenumberEnd: 382
    functionName: path_encode
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - appendStringInfoChar
    - initStringInfo
    - 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:396,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - s
    - delim
    argTypes:
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 402
    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:424,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:426,1
    - Dst: path_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:431,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:433,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:436,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:442,1
    - Dst: PG_RETURN_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:449,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 421
    functionDepth: 4
    functionLinenumber: 421
    functionLinenumberEnd: 450
    functionName: box_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - path_decode
    - PG_RETURN_BOX_P
    - float8_lt
    - PG_RETURN_NULL
    - palloc
    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:457,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:459,1
    - Dst: path_encode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:459,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 454
    functionDepth: 4
    functionLinenumber: 454
    functionLinenumberEnd: 460
    functionName: box_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_CSTRING
    - path_encode
    - 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:468,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:473,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:475,1
    - Dst: pq_getmsgfloat8
      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:477,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:478,1
    - Dst: float8_lt
      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:487,1
    - Dst: PG_RETURN_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:494,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 465
    functionDepth: 3
    functionLinenumber: 465
    functionLinenumberEnd: 495
    functionName: box_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_BOX_P
    - float8_lt
    - palloc
    - pq_getmsgfloat8
    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:503,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:506,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:507,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:508,1
    - Dst: pq_sendfloat8
      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: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:511,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:511,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 500
    functionDepth: 4
    functionLinenumber: 500
    functionLinenumberEnd: 512
    functionName: box_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - PG_GETARG_BOX_P
    - pq_sendfloat8
    - PG_RETURN_BYTEA_P
    - pq_begintypsend
    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:520,1
    - Dst: float8_gt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:530,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - result
    - pt1
    - pt2
    argTypes:
    - BOX*
    - Point*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 517
    functionDepth: 2
    functionLinenumber: 517
    functionLinenumberEnd: 540
    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:553,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:554,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:556,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:556,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:557,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 550
    functionDepth: 1
    functionLinenumber: 550
    functionLinenumberEnd: 558
    functionName: box_same
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_eq_point
    - PG_RETURN_BOOL
    - PG_GETARG_BOX_P
    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:565,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:566,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:568,1
    - Dst: box_ov
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:568,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 562
    functionDepth: 1
    functionLinenumber: 562
    functionLinenumberEnd: 569
    functionName: box_overlap
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - box_ov
    - PG_RETURN_BOOL
    - PG_GETARG_BOX_P
    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:574,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:575,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:576,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:577,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 2
    argNames:
    - box1
    - box2
    argTypes:
    - BOX*
    - BOX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 571
    functionDepth: 1
    functionLinenumber: 571
    functionLinenumberEnd: 578
    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:585,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:586,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:588,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:588,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 582
    functionDepth: 1
    functionLinenumber: 582
    functionLinenumberEnd: 589
    functionName: box_left
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPlt
    - PG_RETURN_BOOL
    - PG_GETARG_BOX_P
    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:600,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:601,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:603,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:603,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 597
    functionDepth: 1
    functionLinenumber: 597
    functionLinenumberEnd: 604
    functionName: box_overleft
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_BOX_P
    - FPle
    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:611,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:612,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:614,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:614,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 608
    functionDepth: 1
    functionLinenumber: 608
    functionLinenumberEnd: 615
    functionName: box_right
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPgt
    - PG_RETURN_BOOL
    - PG_GETARG_BOX_P
    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:626,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:627,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:629,1
    - Dst: FPge
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:629,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 623
    functionDepth: 1
    functionLinenumber: 623
    functionLinenumberEnd: 630
    functionName: box_overright
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPge
    - PG_RETURN_BOOL
    - PG_GETARG_BOX_P
    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:637,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:638,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:640,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:640,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 634
    functionDepth: 1
    functionLinenumber: 634
    functionLinenumberEnd: 641
    functionName: box_below
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPlt
    - PG_RETURN_BOOL
    - PG_GETARG_BOX_P
    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:649,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:650,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:652,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:652,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 646
    functionDepth: 1
    functionLinenumber: 646
    functionLinenumberEnd: 653
    functionName: box_overbelow
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_BOX_P
    - FPle
    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:660,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:661,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:663,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:663,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 657
    functionDepth: 1
    functionLinenumber: 657
    functionLinenumberEnd: 664
    functionName: box_above
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPgt
    - PG_RETURN_BOOL
    - PG_GETARG_BOX_P
    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:672,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:673,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:675,1
    - Dst: FPge
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:675,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 669
    functionDepth: 1
    functionLinenumber: 669
    functionLinenumberEnd: 676
    functionName: box_overabove
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPge
    - PG_RETURN_BOOL
    - PG_GETARG_BOX_P
    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:683,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:684,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:686,1
    - Dst: box_contain_box
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:686,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 680
    functionDepth: 1
    functionLinenumber: 680
    functionLinenumberEnd: 687
    functionName: box_contained
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - box_contain_box
    - PG_GETARG_BOX_P
    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:694,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:695,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:697,1
    - Dst: box_contain_box
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:697,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 691
    functionDepth: 1
    functionLinenumber: 691
    functionLinenumberEnd: 698
    functionName: box_contain
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - box_contain_box
    - PG_GETARG_BOX_P
    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:706,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:707,1
    - Dst: FPge
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:708,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:709,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 2
    argNames:
    - contains_box
    - contained_box
    argTypes:
    - BOX*
    - BOX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 703
    functionDepth: 1
    functionLinenumber: 703
    functionLinenumberEnd: 710
    functionName: box_contain_box
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 2
    functionsReached:
    - FPge
    - FPle
    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:724,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:725,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:727,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:727,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 721
    functionDepth: 1
    functionLinenumber: 721
    functionLinenumberEnd: 728
    functionName: box_below_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_BOX_P
    - FPle
    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:733,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:734,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:736,1
    - Dst: FPge
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:736,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 737
      start: 730
    functionDepth: 1
    functionLinenumber: 730
    functionLinenumberEnd: 737
    functionName: box_above_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPge
    - PG_RETURN_BOOL
    - PG_GETARG_BOX_P
    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:746,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:747,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:749,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:749,1
    - Dst: box_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:749,1
    - Dst: box_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:749,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 743
    functionDepth: 1
    functionLinenumber: 743
    functionLinenumberEnd: 750
    functionName: box_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPlt
    - PG_RETURN_BOOL
    - box_ar
    - PG_GETARG_BOX_P
    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:755,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:756,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:758,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:758,1
    - Dst: box_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:758,1
    - Dst: box_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:758,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 759
      start: 752
    functionDepth: 1
    functionLinenumber: 752
    functionLinenumberEnd: 759
    functionName: box_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPgt
    - PG_RETURN_BOOL
    - box_ar
    - PG_GETARG_BOX_P
    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: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: FPeq
      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_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPeq
    - PG_RETURN_BOOL
    - box_ar
    - PG_GETARG_BOX_P
    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: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: FPle
      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_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - box_ar
    - PG_GETARG_BOX_P
    - FPle
    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: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: FPge
      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_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPge
    - PG_RETURN_BOOL
    - box_ar
    - PG_GETARG_BOX_P
    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:798,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:800,1
    - Dst: box_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:800,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 795
    functionDepth: 1
    functionLinenumber: 795
    functionLinenumberEnd: 801
    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:810,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:812,1
    - Dst: box_wd
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:812,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 813
      start: 807
    functionDepth: 1
    functionLinenumber: 807
    functionLinenumberEnd: 813
    functionName: box_width
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - box_wd
    - PG_RETURN_FLOAT8
    - 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:822,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:824,1
    - Dst: box_ht
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:824,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 819
    functionDepth: 1
    functionLinenumber: 819
    functionLinenumberEnd: 825
    functionName: box_height
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - box_ht
    - PG_RETURN_FLOAT8
    - 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:834,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:835,1
    - Dst: box_cn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:839,1
    - Dst: box_cn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:840,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:842,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:842,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 831
    functionDepth: 1
    functionLinenumber: 831
    functionLinenumberEnd: 843
    functionName: box_distance
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 4
    functionsReached:
    - box_cn
    - PG_RETURN_FLOAT8
    - point_dt
    - PG_GETARG_BOX_P
    linkageType: ''
    returnType: Datum
    signature: Datum box_distance(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:851,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:852,1
    - Dst: box_cn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:854,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:856,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 848
    functionDepth: 1
    functionLinenumber: 848
    functionLinenumberEnd: 857
    functionName: box_center
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - palloc
    - box_cn
    - PG_GETARG_BOX_P
    - PG_RETURN_POINT_P
    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:865,1
    - Dst: box_wd
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:865,1
    - Dst: box_ht
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:865,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - BOX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 862
    functionDepth: 2
    functionLinenumber: 862
    functionLinenumberEnd: 866
    functionName: box_ar
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 6
    functionsReached:
    - box_ht
    - box_wd
    - float8_mul
    linkageType: ''
    returnType: float8
    signature: float8 box_ar(BOX *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:874,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:874,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:875,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:875,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - center
    - box
    argTypes:
    - Point*
    - BOX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 871
    functionDepth: 2
    functionLinenumber: 871
    functionLinenumberEnd: 876
    functionName: box_cn
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 2
    functionsReached:
    - float8_pl
    - float8_div
    linkageType: ''
    returnType: void
    signature: void box_cn(Point *center, BOX *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:885,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - BOX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 882
    functionDepth: 2
    functionLinenumber: 882
    functionLinenumberEnd: 886
    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:895,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - BOX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 892
    functionDepth: 2
    functionLinenumber: 892
    functionLinenumberEnd: 896
    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:910,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:911,1
    - Dst: box_ov
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:914,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:915,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:917,1
    - Dst: float8_min
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:919,1
    - Dst: float8_max
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:920,1
    - Dst: float8_min
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:921,1
    - Dst: float8_max
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:922,1
    - Dst: PG_RETURN_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:924,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 907
    functionDepth: 3
    functionLinenumber: 907
    functionLinenumberEnd: 925
    functionName: box_intersect
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - box_ov
    - PG_RETURN_BOX_P
    - float8_min
    - PG_GETARG_BOX_P
    - PG_RETURN_NULL
    - palloc
    - 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:935,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:936,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:938,1
    - Dst: PG_RETURN_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:940,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 932
    functionDepth: 1
    functionLinenumber: 932
    functionLinenumberEnd: 941
    functionName: box_diagonal
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - statlseg_construct
    - palloc
    - PG_RETURN_LSEG_P
    - PG_GETARG_BOX_P
    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:953,1
    - Dst: single_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:957,1
    - Dst: single_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:961,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:965,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:972,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:973,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:974,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 4
    argNames:
    - s
    - str
    - line
    - escontext
    argTypes:
    - char*
    - char*
    - LINE*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 949
    functionDepth: 2
    functionLinenumber: 949
    functionLinenumberEnd: 976
    functionName: line_decode
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - errmsg
    - single_decode
    - ereturn
    - isspace
    - errcode
    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:981,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:983,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:989,1
    - Dst: line_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:993,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:994,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:995,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:995,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:996,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:997,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:998,1
    - Dst: path_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1002,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1004,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1005,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1006,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1007,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1008,1
    - Dst: line_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1015,1
    - Dst: lseg_sl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1015,1
    - Dst: PG_RETURN_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1018,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1019
      start: 978
    functionDepth: 4
    functionLinenumber: 978
    functionLinenumberEnd: 1019
    functionName: line_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_CSTRING
    - PG_RETURN_LINE_P
    - FPzero
    - path_decode
    - line_decode
    - ereturn
    - point_eq_point
    - PG_RETURN_NULL
    - line_construct
    - lseg_sl
    - isspace
    - palloc
    - errcode
    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:1025,1
    - Dst: float8out_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1026,1
    - Dst: float8out_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1027,1
    - Dst: float8out_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1028,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1030,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1030,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1032
      start: 1022
    functionDepth: 2
    functionLinenumber: 1022
    functionLinenumberEnd: 1032
    functionName: line_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_CSTRING
    - float8out_internal
    - PG_GETARG_LINE_P
    - psprintf
    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:1040,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1043,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1045,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1046,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1047,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1049,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1049,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1050,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1051,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1052,1
    - Dst: PG_RETURN_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1054,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1055
      start: 1037
    functionDepth: 3
    functionLinenumber: 1037
    functionLinenumberEnd: 1055
    functionName: line_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_LINE_P
    - FPzero
    - PG_GETARG_POINTER
    - ereport
    - palloc
    - errcode
    - pq_getmsgfloat8
    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:1063,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1066,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1067,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1068,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1069,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1070,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1070,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1071
      start: 1060
    functionDepth: 4
    functionLinenumber: 1060
    functionLinenumberEnd: 1071
    functionName: line_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LINE_P
    - pq_endtypsend
    - pq_sendfloat8
    - PG_RETURN_BYTEA_P
    - pq_begintypsend
    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:1085,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1104,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1104,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - result
    - pt
    - m
    argTypes:
    - LINE*
    - Point*
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1109
      start: 1082
    functionDepth: 2
    functionLinenumber: 1082
    functionLinenumberEnd: 1109
    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:1117,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1118,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1119,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1121,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1122,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1123,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1124,1
    - Dst: line_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1126,1
    - Dst: point_sl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1126,1
    - Dst: PG_RETURN_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1129
      start: 1114
    functionDepth: 3
    functionLinenumber: 1114
    functionLinenumberEnd: 1129
    functionName: line_construct_pp
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_LINE_P
    - ereport
    - point_eq_point
    - PG_GETARG_POINT_P
    - line_construct
    - palloc
    - errcode
    - point_sl
    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:1139,1
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1140,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1142,1
    - Dst: line_interpt_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1136
    functionDepth: 1
    functionLinenumber: 1136
    functionLinenumberEnd: 1143
    functionName: line_intersect
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - line_interpt_line
    - PG_RETURN_BOOL
    - PG_GETARG_LINE_P
    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:1148,1
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1149,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1151,1
    - Dst: line_interpt_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1152
      start: 1145
    functionDepth: 1
    functionLinenumber: 1145
    functionLinenumberEnd: 1152
    functionName: line_parallel
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - line_interpt_line
    - PG_RETURN_BOOL
    - PG_GETARG_LINE_P
    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:1157,1
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1158,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1160,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1161,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1161,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1162,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1163,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1163,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1164,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1165,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1165,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1166,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1167,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1167,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1169,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1169,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1169,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1169,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1170,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1171
      start: 1154
    functionDepth: 2
    functionLinenumber: 1154
    functionLinenumberEnd: 1171
    functionName: line_perp
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPzero
    - PG_GETARG_LINE_P
    - float8_mul
    - FPeq
    - PG_RETURN_BOOL
    - float8_div
    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:1176,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1178,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1179
      start: 1173
    functionDepth: 1
    functionLinenumber: 1173
    functionLinenumberEnd: 1179
    functionName: line_vertical
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPzero
    - PG_RETURN_BOOL
    - PG_GETARG_LINE_P
    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:1184,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1186,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1187
      start: 1181
    functionDepth: 1
    functionLinenumber: 1181
    functionLinenumberEnd: 1187
    functionName: line_horizontal
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPzero
    - PG_RETURN_BOOL
    - PG_GETARG_LINE_P
    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:1196,1
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1197,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1201,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1201,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1201,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1201,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1202,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1202,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1202,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1204,1
    - Dst: float8_eq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1204,1
    - Dst: float8_eq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1205,1
    - Dst: float8_eq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1206,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1210,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1211,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1212,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1213,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1214,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1215,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1219,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1219,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1219,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1220,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1220,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1221,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1221,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1222
      start: 1193
    functionDepth: 2
    functionLinenumber: 1193
    functionLinenumberEnd: 1222
    functionName: line_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - isnan
    - float8_eq
    - FPzero
    - PG_GETARG_LINE_P
    - float8_mul
    - FPeq
    - PG_RETURN_BOOL
    - unlikely
    - float8_div
    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:1235,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1237,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1238,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1239,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - line
    argTypes:
    - LINE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1240
      start: 1232
    functionDepth: 2
    functionLinenumber: 1232
    functionLinenumberEnd: 1240
    functionName: line_sl
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPzero
    - get_float8_infinity
    - float8_div
    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:1249,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1250,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1251,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1253,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - line
    argTypes:
    - LINE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1254
      start: 1246
    functionDepth: 2
    functionLinenumber: 1246
    functionLinenumberEnd: 1254
    functionName: line_invsl
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPzero
    - get_float8_infinity
    - float8_div
    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:1263,1
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1264,1
    - Dst: line_interpt_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1267,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1268,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1270,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1270,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1270,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1270,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1271,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1272,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1272,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1272,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1272,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1273,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1277,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1277,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1277,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1277,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1278,1
    - Dst: HYPOT
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1279,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1280
      start: 1260
    functionDepth: 2
    functionLinenumber: 1260
    functionLinenumberEnd: 1280
    functionName: line_distance
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - isnan
    - FPzero
    - PG_GETARG_LINE_P
    - float8_mul
    - line_interpt_line
    - HYPOT
    - float8_mi
    - PG_RETURN_FLOAT8
    - fabs
    - float8_div
    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:1288,1
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1289,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1292,1
    - Dst: line_interpt_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1294,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1295,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1297
      start: 1285
    functionDepth: 1
    functionLinenumber: 1285
    functionLinenumberEnd: 1297
    functionName: line_interpt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LINE_P
    - PG_RETURN_POINT_P
    - line_interpt_line
    - PG_RETURN_NULL
    - palloc
    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:1319,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1321,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1321,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1321,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1324,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1324,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1324,1
    - Dst: float8_mul
      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:1326,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1326,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1327,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1328,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1328,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1328,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1330,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1332,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1332,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1332,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1335,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1335,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1335,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1336,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1337,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1337,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1338,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1339,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1339,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1339,1
    - Dst: point_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1351,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - result
    - l1
    - l2
    argTypes:
    - Point*
    - LINE*
    - LINE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1354
      start: 1313
    functionDepth: 2
    functionLinenumber: 1313
    functionLinenumberEnd: 1354
    functionName: line_interpt_line
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 4
    functionsReached:
    - FPzero
    - float8_mul
    - FPeq
    - float8_mi
    - point_construct
    - float8_pl
    - float8_div
    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:1382,1
    - Dst: PG_RETURN_NULL
      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:1393,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1393,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1394,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1394,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1397,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1397,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1397,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1398
      start: 1379
    functionDepth: 2
    functionLinenumber: 1379
    functionLinenumberEnd: 1398
    functionName: path_area
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_mul
    - float8_mi
    - PG_RETURN_NULL
    - PG_GETARG_PATH_P
    - PG_RETURN_FLOAT8
    - float8_pl
    - fabs
    - float8_div
    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:1404,1
    - Dst: pair_count
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1414,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1415,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1416,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1417,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1421,1
    - Dst: strrchr
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1425,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1436,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1437,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1438,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1440,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1442,1
    - Dst: path_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1445,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1447,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1452,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1453,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1454,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1456,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1460,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1461,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1462,1
    - Dst: PG_RETURN_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1469,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1470
      start: 1401
    functionDepth: 4
    functionLinenumber: 1401
    functionLinenumberEnd: 1470
    functionName: path_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_CSTRING
    - strrchr
    - path_decode
    - pair_count
    - PG_RETURN_PATH_P
    - PG_RETURN_NULL
    - SET_VARSIZE
    - ereturn
    - palloc
    - errcode
    - isspace
    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:1476,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1478,1
    - Dst: path_encode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1478,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1479
      start: 1473
    functionDepth: 4
    functionLinenumber: 1473
    functionLinenumberEnd: 1479
    functionName: path_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_CSTRING
    - PG_GETARG_PATH_P
    - path_encode
    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:1490,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1497,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1498,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1500,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1501,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1502,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1505,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1507,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1515,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1516,1
    - Dst: PG_RETURN_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1519,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1520
      start: 1487
    functionDepth: 3
    functionLinenumber: 1487
    functionLinenumberEnd: 1520
    functionName: path_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - pq_getmsgbyte
    - errmsg
    - PG_GETARG_POINTER
    - ereport
    - PG_RETURN_PATH_P
    - SET_VARSIZE
    - palloc
    - pq_getmsgint
    - errcode
    - pq_getmsgfloat8
    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:1528,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1532,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1533,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1534,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1537,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1538,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1540,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1540,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1541
      start: 1525
    functionDepth: 4
    functionLinenumber: 1525
    functionLinenumberEnd: 1541
    functionName: path_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - pq_sendfloat8
    - PG_RETURN_BYTEA_P
    - PG_GETARG_PATH_P
    - pq_sendint32
    - pq_sendbyte
    - pq_begintypsend
    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:1555,1
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1556,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1559
      start: 1552
    functionDepth: 1
    functionLinenumber: 1552
    functionLinenumberEnd: 1559
    functionName: path_n_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_PATH_P
    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:1564,1
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1565,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1568
      start: 1561
    functionDepth: 1
    functionLinenumber: 1561
    functionLinenumberEnd: 1568
    functionName: path_n_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_PATH_P
    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:1573,1
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1574,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1576,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1577
      start: 1570
    functionDepth: 1
    functionLinenumber: 1570
    functionLinenumberEnd: 1577
    functionName: path_n_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_PATH_P
    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:1582,1
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1583,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1585,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1586
      start: 1579
    functionDepth: 1
    functionLinenumber: 1579
    functionLinenumberEnd: 1586
    functionName: path_n_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_PATH_P
    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:1591,1
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1592,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1594,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1595
      start: 1588
    functionDepth: 1
    functionLinenumber: 1588
    functionLinenumberEnd: 1595
    functionName: path_n_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_PATH_P
    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:1604,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1606,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1607
      start: 1601
    functionDepth: 1
    functionLinenumber: 1601
    functionLinenumberEnd: 1607
    functionName: path_isclosed
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_PATH_P
    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:1612,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1614,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1615
      start: 1609
    functionDepth: 1
    functionLinenumber: 1609
    functionLinenumberEnd: 1615
    functionName: path_isopen
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_PATH_P
    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:1620,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1622,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1623
      start: 1617
    functionDepth: 1
    functionLinenumber: 1617
    functionLinenumberEnd: 1623
    functionName: path_npoints
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_PATH_P
    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:1629,1
    - Dst: PG_RETURN_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1633,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1634
      start: 1626
    functionDepth: 1
    functionLinenumber: 1626
    functionLinenumberEnd: 1634
    functionName: path_close
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_PATH_P_COPY
    - PG_RETURN_PATH_P
    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:1639,1
    - Dst: PG_RETURN_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1643,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1644
      start: 1636
    functionDepth: 1
    functionLinenumber: 1636
    functionLinenumberEnd: 1644
    functionName: path_open
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_PATH_P_COPY
    - PG_RETURN_PATH_P
    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:1655,1
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1656,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1664,1
    - Dst: float8_max
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1670,1
    - Dst: float8_max
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1671,1
    - Dst: float8_min
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1672,1
    - Dst: float8_min
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1673,1
    - Dst: float8_max
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1679,1
    - Dst: float8_max
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1680,1
    - Dst: float8_min
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1681,1
    - Dst: float8_min
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1682,1
    - Dst: box_ov
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1684,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1685,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1714,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1715,1
    - Dst: lseg_interpt_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1716,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1717,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1722,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1723
      start: 1652
    functionDepth: 3
    functionLinenumber: 1652
    functionLinenumberEnd: 1723
    functionName: path_inter
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - box_ov
    - Assert
    - statlseg_construct
    - float8_min
    - PG_RETURN_BOOL
    - PG_GETARG_PATH_P
    - lseg_interpt_lseg
    - 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:1732,1
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1733,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1768,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1769,1
    - Dst: lseg_closept_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1771,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1772,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1781,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1783,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1784
      start: 1729
    functionDepth: 2
    functionLinenumber: 1729
    functionLinenumberEnd: 1784
    functionName: path_distance
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - statlseg_construct
    - float8_lt
    - PG_RETURN_NULL
    - PG_GETARG_PATH_P
    - lseg_closept_lseg
    - 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:1794,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1811,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1811,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1814,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1815
      start: 1791
    functionDepth: 2
    functionLinenumber: 1791
    functionLinenumberEnd: 1815
    functionName: path_length
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_dt
    - PG_RETURN_FLOAT8
    - PG_GETARG_PATH_P
    - 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:1833,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1834,1
    - Dst: pair_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1837,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1838,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1839
      start: 1830
    functionDepth: 3
    functionLinenumber: 1830
    functionLinenumberEnd: 1839
    functionName: point_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - palloc
    - pair_decode
    - PG_RETURN_POINT_P
    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:1844,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1846,1
    - Dst: path_encode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1846,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1847
      start: 1841
    functionDepth: 4
    functionLinenumber: 1841
    functionLinenumberEnd: 1847
    functionName: point_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - PG_RETURN_CSTRING
    - path_encode
    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:1855,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1858,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1859,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1860,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1861,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1862
      start: 1852
    functionDepth: 3
    functionLinenumber: 1852
    functionLinenumberEnd: 1862
    functionName: point_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - palloc
    - pq_getmsgfloat8
    - PG_RETURN_POINT_P
    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:1870,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1873,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1874,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1875,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1876,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1876,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1877
      start: 1867
    functionDepth: 4
    functionLinenumber: 1867
    functionLinenumberEnd: 1877
    functionName: point_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - pq_sendfloat8
    - PG_GETARG_POINT_P
    - PG_RETURN_BYTEA_P
    - pq_begintypsend
    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: 1888
      start: 1883
    functionDepth: 0
    functionLinenumber: 1883
    functionLinenumberEnd: 1888
    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:1903,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1904,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1906,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1906,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1907
      start: 1900
    functionDepth: 1
    functionLinenumber: 1900
    functionLinenumberEnd: 1907
    functionName: point_left
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    - FPlt
    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:1912,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1913,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1915,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1915,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1916
      start: 1909
    functionDepth: 1
    functionLinenumber: 1909
    functionLinenumberEnd: 1916
    functionName: point_right
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    - FPgt
    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:1921,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1922,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1924,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1924,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1925
      start: 1918
    functionDepth: 1
    functionLinenumber: 1918
    functionLinenumberEnd: 1925
    functionName: point_above
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    - FPgt
    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:1930,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1931,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1933,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1933,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1934
      start: 1927
    functionDepth: 1
    functionLinenumber: 1927
    functionLinenumberEnd: 1934
    functionName: point_below
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    - FPlt
    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:1939,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1940,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1942,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1942,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1943
      start: 1936
    functionDepth: 1
    functionLinenumber: 1936
    functionLinenumberEnd: 1943
    functionName: point_vert
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - FPeq
    - 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:1948,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1949,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1951,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1951,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1952
      start: 1945
    functionDepth: 1
    functionLinenumber: 1945
    functionLinenumberEnd: 1952
    functionName: point_horiz
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - FPeq
    - 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:1957,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1958,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1960,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1960,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1961
      start: 1954
    functionDepth: 1
    functionLinenumber: 1954
    functionLinenumberEnd: 1961
    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:1966,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1967,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1969,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1969,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1970
      start: 1963
    functionDepth: 1
    functionLinenumber: 1963
    functionLinenumberEnd: 1970
    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:1980,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1980,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1980,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1981,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1981,1
    - Dst: float8_eq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1982,1
    - Dst: float8_eq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1982,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1984,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1984,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 4
    argCount: 2
    argNames:
    - pt1
    - pt2
    argTypes:
    - Point*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1985
      start: 1976
    functionDepth: 2
    functionLinenumber: 1976
    functionLinenumberEnd: 1985
    functionName: point_eq_point
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 5
    functionsReached:
    - isnan
    - unlikely
    - float8_eq
    - FPeq
    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:1995,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1996,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1998,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:1998,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1999
      start: 1992
    functionDepth: 1
    functionLinenumber: 1992
    functionLinenumberEnd: 1999
    functionName: point_distance
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 2
    functionsReached:
    - PG_GETARG_POINT_P
    - PG_RETURN_FLOAT8
    - point_dt
    linkageType: ''
    returnType: Datum
    signature: Datum point_distance(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HYPOT
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2004,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2004,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2004,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pt1
    - pt2
    argTypes:
    - Point*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2005
      start: 2001
    functionDepth: 2
    functionLinenumber: 2001
    functionLinenumberEnd: 2005
    functionName: point_dt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 3
    functionsReached:
    - float8_mi
    - HYPOT
    linkageType: ''
    returnType: float8
    signature: float8 point_dt(Point *pt1, Point *pt2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2010,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2011,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2013,1
    - Dst: point_sl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2013,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2014
      start: 2007
    functionDepth: 1
    functionLinenumber: 2007
    functionLinenumberEnd: 2014
    functionName: point_slope
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - PG_RETURN_FLOAT8
    - point_sl
    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:2025,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2026,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2027,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2029,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2029,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2029,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - pt1
    - pt2
    argTypes:
    - Point*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2030
      start: 2022
    functionDepth: 2
    functionLinenumber: 2022
    functionLinenumberEnd: 2030
    functionName: point_sl
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 2
    functionsReached:
    - float8_mi
    - FPeq
    - get_float8_infinity
    - float8_div
    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:2041,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2043,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2044,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2045,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2045,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2045,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - pt1
    - pt2
    argTypes:
    - Point*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2046
      start: 2038
    functionDepth: 2
    functionLinenumber: 2038
    functionLinenumberEnd: 2046
    functionName: point_invsl
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_mi
    - FPeq
    - get_float8_infinity
    - float8_div
    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:2067,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2069,1
    - Dst: path_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2072,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2074,1
    - Dst: PG_RETURN_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2076,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2077
      start: 2064
    functionDepth: 4
    functionLinenumber: 2064
    functionLinenumberEnd: 2077
    functionName: lseg_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - PG_RETURN_LSEG_P
    - path_decode
    - PG_RETURN_NULL
    - palloc
    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:2083,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2085,1
    - Dst: path_encode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2085,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2086
      start: 2080
    functionDepth: 4
    functionLinenumber: 2080
    functionLinenumberEnd: 2086
    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:2094,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2097,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2099,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2100,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2101,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2102,1
    - Dst: PG_RETURN_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2105
      start: 2091
    functionDepth: 3
    functionLinenumber: 2091
    functionLinenumberEnd: 2105
    functionName: lseg_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - palloc
    - PG_RETURN_LSEG_P
    - pq_getmsgfloat8
    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:2113,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2116,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2117,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2118,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2119,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2120,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2121,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2122
      start: 2110
    functionDepth: 4
    functionLinenumber: 2110
    functionLinenumberEnd: 2122
    functionName: lseg_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - pq_sendfloat8
    - PG_RETURN_BYTEA_P
    - PG_GETARG_LSEG_P
    - pq_begintypsend
    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:2131,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2132,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2133,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2135,1
    - Dst: PG_RETURN_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2138
      start: 2128
    functionDepth: 1
    functionLinenumber: 2128
    functionLinenumberEnd: 2138
    functionName: lseg_construct
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 5
    functionsReached:
    - PG_GETARG_POINT_P
    - palloc
    - PG_RETURN_LSEG_P
    - statlseg_construct
    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: 2148
      start: 2141
    functionDepth: 0
    functionLinenumber: 2141
    functionLinenumberEnd: 2148
    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:2157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lseg
    argTypes:
    - LSEG*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2158
      start: 2154
    functionDepth: 3
    functionLinenumber: 2154
    functionLinenumberEnd: 2158
    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:2167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lseg
    argTypes:
    - LSEG*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2168
      start: 2164
    functionDepth: 3
    functionLinenumber: 2164
    functionLinenumberEnd: 2168
    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:2174,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2176,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2177
      start: 2171
    functionDepth: 3
    functionLinenumber: 2171
    functionLinenumberEnd: 2177
    functionName: lseg_length
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LSEG_P
    - point_dt
    - PG_RETURN_FLOAT8
    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:2190,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2191,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2193,1
    - Dst: lseg_interpt_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2194
      start: 2187
    functionDepth: 1
    functionLinenumber: 2187
    functionLinenumberEnd: 2194
    functionName: lseg_intersect
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LSEG_P
    - PG_RETURN_BOOL
    - lseg_interpt_lseg
    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:2200,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2201,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2203,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2203,1
    - Dst: lseg_sl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2203,1
    - Dst: lseg_sl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2204
      start: 2197
    functionDepth: 4
    functionLinenumber: 2197
    functionLinenumberEnd: 2204
    functionName: lseg_parallel
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPeq
    - PG_GETARG_LSEG_P
    - PG_RETURN_BOOL
    - lseg_sl
    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:2212,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2213,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2215,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2215,1
    - Dst: lseg_sl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2215,1
    - Dst: lseg_invsl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2216
      start: 2209
    functionDepth: 4
    functionLinenumber: 2209
    functionLinenumberEnd: 2216
    functionName: lseg_perp
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - lseg_invsl
    - FPeq
    - PG_RETURN_BOOL
    - lseg_sl
    - PG_GETARG_LSEG_P
    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:2221,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2223,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2224
      start: 2218
    functionDepth: 1
    functionLinenumber: 2218
    functionLinenumberEnd: 2224
    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:2229,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2231,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2232
      start: 2226
    functionDepth: 1
    functionLinenumber: 2226
    functionLinenumberEnd: 2232
    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:2238,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2239,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2241,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2241,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2243
      start: 2235
    functionDepth: 3
    functionLinenumber: 2235
    functionLinenumberEnd: 2243
    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:2248,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2249,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2251,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2251,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2252,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2253
      start: 2245
    functionDepth: 3
    functionLinenumber: 2245
    functionLinenumberEnd: 2253
    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:2258,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2259,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2261,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2261,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2261,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2263
      start: 2255
    functionDepth: 3
    functionLinenumber: 2255
    functionLinenumberEnd: 2263
    functionName: lseg_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LSEG_P
    - PG_RETURN_BOOL
    - point_dt
    - FPlt
    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:2268,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2269,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2271,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2271,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2271,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2273
      start: 2265
    functionDepth: 3
    functionLinenumber: 2265
    functionLinenumberEnd: 2273
    functionName: lseg_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LSEG_P
    - PG_RETURN_BOOL
    - point_dt
    - FPle
    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:2278,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2279,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2281,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2281,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2281,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2283
      start: 2275
    functionDepth: 3
    functionLinenumber: 2275
    functionLinenumberEnd: 2283
    functionName: lseg_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LSEG_P
    - PG_RETURN_BOOL
    - point_dt
    - FPgt
    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:2288,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2289,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2291,1
    - Dst: FPge
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2291,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2291,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2293
      start: 2285
    functionDepth: 3
    functionLinenumber: 2285
    functionLinenumberEnd: 2293
    functionName: lseg_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LSEG_P
    - PG_RETURN_BOOL
    - point_dt
    - 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:2308,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2309,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2311,1
    - Dst: lseg_closept_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2312
      start: 2305
    functionDepth: 1
    functionLinenumber: 2305
    functionLinenumberEnd: 2312
    functionName: lseg_distance
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LSEG_P
    - lseg_closept_lseg
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum lseg_distance(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2318,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2321,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2323,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2323,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2324,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2324,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2327
      start: 2315
    functionDepth: 2
    functionLinenumber: 2315
    functionLinenumberEnd: 2327
    functionName: lseg_center
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINT_P
    - palloc
    - PG_GETARG_LSEG_P
    - float8_pl
    - float8_div
    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:2343,1
    - Dst: lseg_sl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2343,1
    - Dst: lseg_interpt_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2344,1
    - Dst: lseg_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2351,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - result
    - l1
    - l2
    argTypes:
    - Point*
    - LSEG*
    - LSEG*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2358
      start: 2337
    functionDepth: 4
    functionLinenumber: 2337
    functionLinenumberEnd: 2358
    functionName: lseg_interpt_lseg
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 2
    functionsReached:
    - lseg_contain_point
    - line_construct
    - lseg_interpt_line
    - lseg_sl
    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:2363,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2364,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2367,1
    - Dst: lseg_interpt_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2369,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2370,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2371,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2372
      start: 2360
    functionDepth: 5
    functionLinenumber: 2360
    functionLinenumberEnd: 2372
    functionName: lseg_interpt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINT_P
    - PG_RETURN_NULL
    - palloc
    - PG_GETARG_LSEG_P
    - lseg_interpt_lseg
    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:2392,1
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2393,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2395,1
    - Dst: line_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2396
      start: 2389
    functionDepth: 1
    functionLinenumber: 2389
    functionLinenumberEnd: 2396
    functionName: dist_pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - line_closept_point
    - PG_GETARG_POINT_P
    - PG_RETURN_FLOAT8
    - PG_GETARG_LINE_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:2404,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2405,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2407,1
    - Dst: line_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2408
      start: 2401
    functionDepth: 1
    functionLinenumber: 2401
    functionLinenumberEnd: 2408
    functionName: dist_lp
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - line_closept_point
    - PG_GETARG_POINT_P
    - PG_RETURN_FLOAT8
    - PG_GETARG_LINE_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:2416,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2417,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2419,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2420
      start: 2413
    functionDepth: 1
    functionLinenumber: 2413
    functionLinenumberEnd: 2420
    functionName: dist_ps
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - PG_GETARG_LSEG_P
    - PG_RETURN_FLOAT8
    - 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:2428,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2429,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2431,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2431,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2432
      start: 2425
    functionDepth: 1
    functionLinenumber: 2425
    functionLinenumberEnd: 2432
    functionName: dist_sp
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - PG_GETARG_LSEG_P
    - PG_RETURN_FLOAT8
    - 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:2443,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2462,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2463,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2464,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - pt
    - path
    argTypes:
    - Point*
    - PATH*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2472
      start: 2434
    functionDepth: 2
    functionLinenumber: 2434
    functionLinenumberEnd: 2472
    functionName: dist_ppath_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - statlseg_construct
    - Assert
    - 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:2480,1
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2481,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2483,1
    - Dst: dist_ppath_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2483,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2484
      start: 2477
    functionDepth: 3
    functionLinenumber: 2477
    functionLinenumberEnd: 2484
    functionName: dist_ppath
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - PG_RETURN_FLOAT8
    - PG_GETARG_PATH_P
    - dist_ppath_internal
    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:2492,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2493,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2495,1
    - Dst: dist_ppath_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2495,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2496
      start: 2489
    functionDepth: 3
    functionLinenumber: 2489
    functionLinenumberEnd: 2496
    functionName: dist_pathp
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - PG_RETURN_FLOAT8
    - PG_GETARG_PATH_P
    - dist_ppath_internal
    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:2504,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2505,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2507,1
    - Dst: box_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2507,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2508
      start: 2501
    functionDepth: 1
    functionLinenumber: 2501
    functionLinenumberEnd: 2508
    functionName: dist_pb
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - PG_RETURN_FLOAT8
    - box_closept_point
    - PG_GETARG_BOX_P
    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:2516,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2517,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2519,1
    - Dst: box_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2520
      start: 2513
    functionDepth: 1
    functionLinenumber: 2513
    functionLinenumberEnd: 2520
    functionName: dist_bp
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - PG_RETURN_FLOAT8
    - box_closept_point
    - PG_GETARG_BOX_P
    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:2528,1
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2529,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2531,1
    - Dst: lseg_closept_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2531,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2532
      start: 2525
    functionDepth: 1
    functionLinenumber: 2525
    functionLinenumberEnd: 2532
    functionName: dist_sl
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LSEG_P
    - PG_GETARG_LINE_P
    - lseg_closept_line
    - PG_RETURN_FLOAT8
    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:2540,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2541,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2543,1
    - Dst: lseg_closept_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2543,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2544
      start: 2537
    functionDepth: 1
    functionLinenumber: 2537
    functionLinenumberEnd: 2544
    functionName: dist_ls
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LSEG_P
    - PG_GETARG_LINE_P
    - lseg_closept_line
    - PG_RETURN_FLOAT8
    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:2552,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2553,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2555,1
    - Dst: box_closept_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2555,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2556
      start: 2549
    functionDepth: 1
    functionLinenumber: 2549
    functionLinenumberEnd: 2556
    functionName: dist_sb
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - box_closept_lseg
    - PG_GETARG_LSEG_P
    - PG_RETURN_FLOAT8
    - PG_GETARG_BOX_P
    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:2564,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2565,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2567,1
    - Dst: box_closept_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2568
      start: 2561
    functionDepth: 1
    functionLinenumber: 2561
    functionLinenumberEnd: 2568
    functionName: dist_bs
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - box_closept_lseg
    - PG_GETARG_LSEG_P
    - PG_RETURN_FLOAT8
    - PG_GETARG_BOX_P
    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:2576,1
    - Dst: dist_ppoly_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2576,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - circle
    - poly
    argTypes:
    - CIRCLE*
    - POLYGON*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2582
      start: 2570
    functionDepth: 2
    functionLinenumber: 2570
    functionLinenumberEnd: 2582
    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:2590,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2591,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2593,1
    - Dst: dist_cpoly_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2593,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2594
      start: 2587
    functionDepth: 3
    functionLinenumber: 2587
    functionLinenumberEnd: 2594
    functionName: dist_cpoly
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POLYGON_P
    - dist_cpoly_internal
    - PG_RETURN_FLOAT8
    - 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:2602,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2603,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2605,1
    - Dst: dist_cpoly_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2605,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2606
      start: 2599
    functionDepth: 3
    functionLinenumber: 2599
    functionLinenumberEnd: 2606
    functionName: dist_polyc
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - dist_cpoly_internal
    - PG_GETARG_CIRCLE_P
    - PG_GETARG_POLYGON_P
    - PG_RETURN_FLOAT8
    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:2614,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2615,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2617,1
    - Dst: dist_ppoly_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2617,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2618
      start: 2611
    functionDepth: 1
    functionLinenumber: 2611
    functionLinenumberEnd: 2618
    functionName: dist_ppoly
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - PG_RETURN_FLOAT8
    - PG_GETARG_POLYGON_P
    - dist_ppoly_internal
    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:2623,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2624,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2626,1
    - Dst: dist_ppoly_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2626,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2627
      start: 2620
    functionDepth: 1
    functionLinenumber: 2620
    functionLinenumberEnd: 2627
    functionName: dist_polyp
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - PG_RETURN_FLOAT8
    - PG_GETARG_POLYGON_P
    - dist_ppoly_internal
    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:2637,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2645,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2654,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2655,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - pt
    - poly
    argTypes:
    - Point*
    - POLYGON*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2660
      start: 2629
    functionDepth: 2
    functionLinenumber: 2629
    functionLinenumberEnd: 2660
    functionName: dist_ppoly_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 3
    functionsReached:
    - float8_lt
    - lseg_closept_point
    - point_inside
    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:2685,1
    - Dst: lseg_sl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2685,1
    - Dst: line_interpt_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2686,1
    - Dst: lseg_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2693,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2702,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2704,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - result
    - lseg
    - line
    argTypes:
    - Point*
    - LSEG*
    - LINE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2711
      start: 2674
    functionDepth: 4
    functionLinenumber: 2674
    functionLinenumberEnd: 2711
    functionName: lseg_interpt_line
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 1
    functionsReached:
    - line_interpt_line
    - point_eq_point
    - lseg_contain_point
    - line_construct
    - 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:2734,1
    - Dst: line_invsl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2734,1
    - Dst: line_interpt_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2735,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2740,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2746,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - result
    - line
    - point
    argTypes:
    - Point*
    - LINE*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2747
      start: 2723
    functionDepth: 3
    functionLinenumber: 2723
    functionLinenumberEnd: 2747
    functionName: line_closept_point
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 2
    functionsReached:
    - line_invsl
    - point_dt
    - line_interpt_line
    - line_construct
    - 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:2752,1
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2753,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2756,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2758,1
    - Dst: line_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2758,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2759,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2761,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2762
      start: 2749
    functionDepth: 4
    functionLinenumber: 2749
    functionLinenumberEnd: 2762
    functionName: close_pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - isnan
    - line_closept_point
    - PG_GETARG_LINE_P
    - PG_RETURN_POINT_P
    - PG_GETARG_POINT_P
    - PG_RETURN_NULL
    - palloc
    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:2781,1
    - Dst: point_invsl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2781,1
    - Dst: lseg_closept_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2782,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2787,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - result
    - lseg
    - pt
    argTypes:
    - Point*
    - LSEG*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2788
      start: 2771
    functionDepth: 3
    functionLinenumber: 2771
    functionLinenumberEnd: 2788
    functionName: lseg_closept_point
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 4
    functionsReached:
    - point_invsl
    - line_construct
    - point_dt
    - lseg_closept_line
    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:2793,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2794,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2797,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2799,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2799,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2800,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2802,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2803
      start: 2790
    functionDepth: 4
    functionLinenumber: 2790
    functionLinenumberEnd: 2803
    functionName: close_ps
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - isnan
    - PG_RETURN_POINT_P
    - lseg_closept_point
    - PG_GETARG_POINT_P
    - PG_RETURN_NULL
    - palloc
    - PG_GETARG_LSEG_P
    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:2817,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2824,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2825,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2826,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2834,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2835,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2841,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2842,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 3
    argNames:
    - result
    - on_lseg
    - to_lseg
    argTypes:
    - Point*
    - LSEG*
    - LSEG*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2850
      start: 2809
    functionDepth: 5
    functionLinenumber: 2809
    functionLinenumberEnd: 2850
    functionName: lseg_closept_lseg
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 2
    functionsReached:
    - float8_lt
    - lseg_interpt_lseg
    - 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:2855,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2856,1
    - Dst: lseg_sl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2859,1
    - Dst: lseg_sl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2859,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2860,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2862,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2864,1
    - Dst: lseg_closept_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2864,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2865,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2867,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2868
      start: 2852
    functionDepth: 6
    functionLinenumber: 2852
    functionLinenumberEnd: 2868
    functionName: close_lseg
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - isnan
    - PG_RETURN_POINT_P
    - PG_RETURN_NULL
    - lseg_closept_lseg
    - lseg_sl
    - palloc
    - PG_GETARG_LSEG_P
    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:2886,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2897,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2898,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2900,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2901,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2902,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2911,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2912,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2913,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2920,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2921,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2922,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 3
    argNames:
    - result
    - box
    - pt
    argTypes:
    - Point*
    - BOX*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2930
      start: 2877
    functionDepth: 4
    functionLinenumber: 2877
    functionLinenumberEnd: 2930
    functionName: box_closept_point
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 2
    functionsReached:
    - statlseg_construct
    - float8_lt
    - lseg_closept_point
    - box_contain_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:2935,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2936,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2939,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2941,1
    - Dst: box_closept_point
      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: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2944,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2945
      start: 2932
    functionDepth: 5
    functionLinenumber: 2932
    functionLinenumberEnd: 2945
    functionName: close_pb
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - isnan
    - PG_RETURN_POINT_P
    - PG_GETARG_BOX_P
    - PG_GETARG_POINT_P
    - PG_RETURN_NULL
    - box_closept_point
    - palloc
    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:2965,1
    - Dst: line_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2968,1
    - Dst: line_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2969,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - result
    - lseg
    - line
    argTypes:
    - Point*
    - LSEG*
    - LINE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2985
      start: 2959
    functionDepth: 5
    functionLinenumber: 2959
    functionLinenumberEnd: 2985
    functionName: lseg_closept_line
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 3
    functionsReached:
    - line_closept_point
    - lseg_interpt_line
    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:2990,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2991,1
    - Dst: lseg_sl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2994,1
    - Dst: line_sl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2994,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2995,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2997,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2999,1
    - Dst: lseg_closept_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:2999,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3000,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3002,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3003
      start: 2987
    functionDepth: 6
    functionLinenumber: 2987
    functionLinenumberEnd: 3003
    functionName: close_ls
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - isnan
    - PG_GETARG_LINE_P
    - PG_RETURN_POINT_P
    - PG_RETURN_NULL
    - lseg_closept_line
    - lseg_sl
    - palloc
    - PG_GETARG_LSEG_P
    - line_sl
    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:3021,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3027,1
    - Dst: lseg_closept_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3028,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3030,1
    - Dst: lseg_closept_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3031,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3032,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3041,1
    - Dst: lseg_closept_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3042,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3043,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3050,1
    - Dst: lseg_closept_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3051,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3052,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 3
    argNames:
    - result
    - box
    - lseg
    argTypes:
    - Point*
    - BOX*
    - LSEG*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3060
      start: 3012
    functionDepth: 6
    functionLinenumber: 3012
    functionLinenumberEnd: 3060
    functionName: box_closept_lseg
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 2
    functionsReached:
    - statlseg_construct
    - float8_lt
    - box_interpt_lseg
    - 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:3065,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3066,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3069,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3071,1
    - Dst: box_closept_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3071,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3072,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3074,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3075
      start: 3062
    functionDepth: 7
    functionLinenumber: 3062
    functionLinenumberEnd: 3075
    functionName: close_sb
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - isnan
    - PG_RETURN_POINT_P
    - PG_GETARG_BOX_P
    - box_closept_lseg
    - PG_RETURN_NULL
    - palloc
    - PG_GETARG_LSEG_P
    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:3089,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3089,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3089,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3089,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3090,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - line
    - point
    argTypes:
    - LINE*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3092
      start: 3086
    functionDepth: 2
    functionLinenumber: 3086
    functionLinenumberEnd: 3092
    functionName: line_contain_point
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPzero
    - float8_pl
    - float8_mul
    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:3097,1
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3098,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3100,1
    - Dst: line_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3101
      start: 3094
    functionDepth: 3
    functionLinenumber: 3094
    functionLinenumberEnd: 3101
    functionName: on_pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    - PG_GETARG_LINE_P
    - line_contain_point
    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:3111,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3111,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3112,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lseg
    - pt
    argTypes:
    - LSEG*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3114
      start: 3108
    functionDepth: 3
    functionLinenumber: 3108
    functionLinenumberEnd: 3114
    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:3119,1
    - Dst: PG_GETARG_LSEG_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3120,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3122,1
    - Dst: lseg_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3123
      start: 3116
    functionDepth: 4
    functionLinenumber: 3116
    functionLinenumberEnd: 3123
    functionName: on_ps
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - PG_GETARG_LSEG_P
    - PG_RETURN_BOOL
    - lseg_contain_point
    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: 3134
      start: 3129
    functionDepth: 0
    functionLinenumber: 3129
    functionLinenumberEnd: 3134
    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:3139,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3140,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3142,1
    - Dst: box_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3143
      start: 3136
    functionDepth: 1
    functionLinenumber: 3136
    functionLinenumberEnd: 3143
    functionName: on_pb
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    - PG_GETARG_BOX_P
    - box_contain_point
    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:3148,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3149,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3151,1
    - Dst: box_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3152
      start: 3145
    functionDepth: 1
    functionLinenumber: 3145
    functionLinenumberEnd: 3152
    functionName: box_contain_pt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    - PG_GETARG_BOX_P
    - box_contain_point
    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:3168,1
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3169,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3179,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3182,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3183,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3183,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3183,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3184,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3187,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3191,1
    - Dst: point_inside
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3191,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3192
      start: 3165
    functionDepth: 3
    functionLinenumber: 3165
    functionLinenumberEnd: 3192
    functionName: on_ppath
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_dt
    - FPeq
    - PG_RETURN_BOOL
    - PG_GETARG_POINT_P
    - PG_GETARG_PATH_P
    - float8_pl
    - point_inside
    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:3203,1
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3204,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3206,1
    - Dst: line_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3206,1
    - Dst: line_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3207,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3208
      start: 3200
    functionDepth: 3
    functionLinenumber: 3200
    functionLinenumberEnd: 3208
    functionName: on_sl
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LSEG_P
    - PG_RETURN_BOOL
    - PG_GETARG_LINE_P
    - 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:3219,1
    - Dst: box_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - box
    - lseg
    argTypes:
    - BOX*
    - LSEG*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3221
      start: 3216
    functionDepth: 1
    functionLinenumber: 3216
    functionLinenumberEnd: 3221
    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:3226,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3227,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3229,1
    - Dst: box_contain_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3230
      start: 3223
    functionDepth: 2
    functionLinenumber: 3223
    functionLinenumberEnd: 3230
    functionName: on_sb
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LSEG_P
    - PG_RETURN_BOOL
    - PG_GETARG_BOX_P
    - box_contain_lseg
    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:3240,1
    - Dst: PG_GETARG_LINE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3241,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3243,1
    - Dst: lseg_interpt_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3244
      start: 3237
    functionDepth: 5
    functionLinenumber: 3237
    functionLinenumberEnd: 3244
    functionName: inter_sl
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - lseg_interpt_line
    - PG_GETARG_LSEG_P
    - PG_RETURN_BOOL
    - PG_GETARG_LINE_P
    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:3269,1
    - Dst: float8_min
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3270,1
    - Dst: float8_max
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3271,1
    - Dst: float8_max
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3272,1
    - Dst: box_ov
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3275,1
    - Dst: box_cn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3280,1
    - Dst: lseg_closept_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3281,1
    - Dst: box_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3285,1
    - Dst: box_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3286,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3292,1
    - Dst: lseg_interpt_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3293,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3296,1
    - Dst: lseg_interpt_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3297,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3302,1
    - Dst: lseg_interpt_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3303,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3306,1
    - Dst: lseg_interpt_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3307,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 3
    argNames:
    - result
    - box
    - lseg
    argTypes:
    - Point*
    - BOX*
    - LSEG*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3312
      start: 3262
    functionDepth: 5
    functionLinenumber: 3262
    functionLinenumberEnd: 3312
    functionName: box_interpt_lseg
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 1
    functionsReached:
    - box_ov
    - statlseg_construct
    - box_contain_point
    - float8_min
    - lseg_closept_point
    - box_cn
    - lseg_interpt_lseg
    - float8_max
    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:3317,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3318,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3320,1
    - Dst: box_interpt_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3321
      start: 3314
    functionDepth: 6
    functionLinenumber: 3314
    functionLinenumberEnd: 3321
    functionName: inter_sb
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_LSEG_P
    - PG_RETURN_BOOL
    - box_interpt_lseg
    - PG_GETARG_BOX_P
    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:3330,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3331,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3341,1
    - Dst: lseg_interpt_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3342,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3343,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3346,1
    - Dst: lseg_interpt_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3347,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3348,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3351,1
    - Dst: lseg_interpt_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3352,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3353,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3356,1
    - Dst: lseg_interpt_line
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3357,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3358,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3361,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3362
      start: 3327
    functionDepth: 5
    functionLinenumber: 3327
    functionLinenumberEnd: 3362
    functionName: inter_lb
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - statlseg_construct
    - PG_GETARG_LINE_P
    - PG_RETURN_BOOL
    - lseg_interpt_line
    - PG_GETARG_BOX_P
    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:3384,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3390,1
    - Dst: float8_gt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3392,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3394,1
    - Dst: float8_gt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3396,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - poly
    argTypes:
    - POLYGON*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3404
      start: 3375
    functionDepth: 2
    functionLinenumber: 3375
    functionLinenumberEnd: 3404
    functionName: make_bound_box
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - Assert
    - float8_lt
    - float8_gt
    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:3417,1
    - Dst: pair_count
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3425,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3426,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3427,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3428,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3436,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3437,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3438,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3440,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3442,1
    - Dst: path_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3445,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3447,1
    - Dst: make_bound_box
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3449,1
    - Dst: PG_RETURN_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3451,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3452
      start: 3414
    functionDepth: 4
    functionLinenumber: 3414
    functionLinenumberEnd: 3452
    functionName: poly_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_CSTRING
    - PG_RETURN_POLYGON_P
    - path_decode
    - pair_count
    - palloc0
    - PG_RETURN_NULL
    - SET_VARSIZE
    - make_bound_box
    - ereturn
    - errcode
    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:3461,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3463,1
    - Dst: path_encode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3463,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3464
      start: 3458
    functionDepth: 4
    functionLinenumber: 3458
    functionLinenumberEnd: 3464
    functionName: poly_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_CSTRING
    - PG_GETARG_POLYGON_P
    - path_encode
    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:3477,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3483,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3485,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3486,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3487,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3490,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3492,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3497,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3498,1
    - Dst: make_bound_box
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3501,1
    - Dst: PG_RETURN_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3503,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3504
      start: 3474
    functionDepth: 3
    functionLinenumber: 3474
    functionLinenumberEnd: 3504
    functionName: poly_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_POLYGON_P
    - PG_GETARG_POINTER
    - ereport
    - palloc0
    - make_bound_box
    - SET_VARSIZE
    - pq_getmsgint
    - errcode
    - pq_getmsgfloat8
    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:3512,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3516,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3517,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3520,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3521,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3523,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3523,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3524
      start: 3509
    functionDepth: 4
    functionLinenumber: 3509
    functionLinenumberEnd: 3524
    functionName: poly_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - PG_GETARG_POLYGON_P
    - pq_sendfloat8
    - PG_RETURN_BYTEA_P
    - pq_sendint32
    - pq_begintypsend
    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:3535,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3536,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3544,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3545,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3548
      start: 3532
    functionDepth: 1
    functionLinenumber: 3532
    functionLinenumberEnd: 3548
    functionName: poly_left
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_POLYGON_P
    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:3558,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3559,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3567,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3568,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3570,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3571
      start: 3555
    functionDepth: 1
    functionLinenumber: 3555
    functionLinenumberEnd: 3571
    functionName: poly_overleft
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_POLYGON_P
    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:3581,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3582,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3590,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3591,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3593,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3594
      start: 3578
    functionDepth: 1
    functionLinenumber: 3578
    functionLinenumberEnd: 3594
    functionName: poly_right
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_POLYGON_P
    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:3604,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3605,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3613,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3614,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3616,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3617
      start: 3601
    functionDepth: 1
    functionLinenumber: 3601
    functionLinenumberEnd: 3617
    functionName: poly_overright
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_POLYGON_P
    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:3627,1
    - Dst: PG_GETARG_POLYGON_P
      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:3636,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3637,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3639,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3640
      start: 3624
    functionDepth: 1
    functionLinenumber: 3624
    functionLinenumberEnd: 3640
    functionName: poly_below
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_POLYGON_P
    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:3650,1
    - Dst: PG_GETARG_POLYGON_P
      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:3659,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3660,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3662,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3663
      start: 3647
    functionDepth: 1
    functionLinenumber: 3647
    functionLinenumberEnd: 3663
    functionName: poly_overbelow
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_POLYGON_P
    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:3673,1
    - Dst: PG_GETARG_POLYGON_P
      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:3682,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3683,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3685,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3686
      start: 3670
    functionDepth: 1
    functionLinenumber: 3670
    functionLinenumberEnd: 3686
    functionName: poly_above
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_POLYGON_P
    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:3696,1
    - Dst: PG_GETARG_POLYGON_P
      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:3705,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3706,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3708,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3709
      start: 3693
    functionDepth: 1
    functionLinenumber: 3693
    functionLinenumberEnd: 3709
    functionName: poly_overabove
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_POLYGON_P
    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:3722,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3723,1
    - Dst: plist_same
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3729,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3734,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3735,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3737,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3738
      start: 3719
    functionDepth: 1
    functionLinenumber: 3719
    functionLinenumberEnd: 3738
    functionName: poly_same
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - plist_same
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_POLYGON_P
    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:3748,1
    - Dst: box_ov
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3751,1
    - Dst: lseg_interpt_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3780,1
    - Dst: point_inside
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3792,1
    - Dst: point_inside
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3793,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 2
    argNames:
    - polya
    - polyb
    argTypes:
    - POLYGON*
    - POLYGON*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3798
      start: 3743
    functionDepth: 5
    functionLinenumber: 3743
    functionLinenumberEnd: 3798
    functionName: poly_overlap_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - box_ov
    - Assert
    - lseg_interpt_lseg
    - point_inside
    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:3803,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3804,1
    - Dst: poly_overlap_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3807,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3812,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3813,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3815,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3816
      start: 3800
    functionDepth: 6
    functionLinenumber: 3800
    functionLinenumberEnd: 3816
    functionName: poly_overlap
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - poly_overlap_internal
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_POLYGON_P
    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:3838,1
    - Dst: lseg_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3840,1
    - Dst: lseg_inside_poly
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3841,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3843,1
    - Dst: lseg_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3845,1
    - Dst: lseg_inside_poly
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3846,1
    - Dst: lseg_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3848,1
    - Dst: lseg_inside_poly
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3850,1
    - Dst: lseg_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3852,1
    - Dst: lseg_inside_poly
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3854,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: 3858
      start: 3829
    functionDepth: 4
    functionLinenumber: 3829
    functionLinenumberEnd: 3858
    functionName: touched_lseg_inside_poly
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_eq_point
    - lseg_contain_point
    - lseg_inside_poly
    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:3875,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3885,1
    - Dst: lseg_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3889,1
    - Dst: lseg_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3891,1
    - Dst: touched_lseg_inside_poly
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3895,1
    - Dst: lseg_contain_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3897,1
    - Dst: touched_lseg_inside_poly
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3900,1
    - Dst: lseg_interpt_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3902,1
    - Dst: lseg_inside_poly
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3909,1
    - Dst: lseg_inside_poly
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3911,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3925,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3925,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3926,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3926,1
    - Dst: point_inside
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3928,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 4
    argNames:
    - a
    - b
    - poly
    - start
    argTypes:
    - Point*
    - Point*
    - POLYGON*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3932
      start: 3865
    functionDepth: 5
    functionLinenumber: 3865
    functionLinenumberEnd: 3932
    functionName: lseg_inside_poly
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 2
    functionsReached:
    - check_stack_depth
    - CHECK_FOR_INTERRUPTS
    - float8_pl
    - touched_lseg_inside_poly
    - lseg_contain_point
    - point_inside
    - lseg_inside_poly
    - lseg_interpt_lseg
    - float8_div
    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:3943,1
    - Dst: box_contain_box
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3949,1
    - Dst: lseg_inside_poly
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3957,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - contains_poly
    - contained_poly
    argTypes:
    - POLYGON*
    - POLYGON*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3963
      start: 3937
    functionDepth: 6
    functionLinenumber: 3937
    functionLinenumberEnd: 3963
    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:3968,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3969,1
    - Dst: poly_contain_poly
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3972,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3977,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3978,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3980,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3981
      start: 3965
    functionDepth: 7
    functionLinenumber: 3965
    functionLinenumberEnd: 3981
    functionName: poly_contain
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_POLYGON_P
    - poly_contain_poly
    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:3990,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3991,1
    - Dst: poly_contain_poly
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:3995,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4000,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4001,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4003,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4004
      start: 3987
    functionDepth: 7
    functionLinenumber: 3987
    functionLinenumberEnd: 4004
    functionName: poly_contained
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - PG_RETURN_BOOL
    - PG_GETARG_POLYGON_P
    - poly_contain_poly
    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:4010,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4011,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4013,1
    - Dst: point_inside
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4013,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4014
      start: 4007
    functionDepth: 1
    functionLinenumber: 4007
    functionLinenumberEnd: 4014
    functionName: poly_contain_pt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    - PG_GETARG_POLYGON_P
    - point_inside
    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:4019,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4020,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4022,1
    - Dst: point_inside
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4022,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4023
      start: 4016
    functionDepth: 1
    functionLinenumber: 4016
    functionLinenumberEnd: 4023
    functionName: pt_contained_poly
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    - PG_GETARG_POLYGON_P
    - point_inside
    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:4029,1
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4030,1
    - Dst: poly_overlap_internal
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4044,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4045,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4070,1
    - Dst: statlseg_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4071,1
    - Dst: lseg_closept_lseg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4073,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4074,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4083,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4085,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4086
      start: 4026
    functionDepth: 6
    functionLinenumber: 4026
    functionLinenumberEnd: 4086
    functionName: poly_distance
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - poly_overlap_internal
    - statlseg_construct
    - float8_lt
    - PG_GETARG_POLYGON_P
    - PG_RETURN_NULL
    - lseg_closept_lseg
    - 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:4098,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4099,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4102,1
    - Dst: point_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4104,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4107
      start: 4095
    functionDepth: 1
    functionLinenumber: 4095
    functionLinenumberEnd: 4107
    functionName: construct_point
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - palloc
    - point_construct
    - PG_GETARG_FLOAT8
    - PG_RETURN_POINT_P
    linkageType: ''
    returnType: Datum
    signature: Datum construct_point(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: point_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4113,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4114,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - result
    - pt1
    - pt2
    argTypes:
    - Point*
    - Point*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4116
      start: 4110
    functionDepth: 2
    functionLinenumber: 4110
    functionLinenumberEnd: 4116
    functionName: point_add_point
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_construct
    - float8_pl
    linkageType: ''
    returnType: void
    signature: void point_add_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:4121,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4122,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4125,1
    - Dst: point_add_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4127,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4130
      start: 4118
    functionDepth: 3
    functionLinenumber: 4118
    functionLinenumberEnd: 4130
    functionName: point_add
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - palloc
    - point_add_point
    - PG_RETURN_POINT_P
    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:4136,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4137,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - result
    - pt1
    - pt2
    argTypes:
    - Point*
    - Point*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4139
      start: 4133
    functionDepth: 2
    functionLinenumber: 4133
    functionLinenumberEnd: 4139
    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:4144,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4145,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4148,1
    - Dst: point_sub_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4150,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4153
      start: 4141
    functionDepth: 3
    functionLinenumber: 4141
    functionLinenumberEnd: 4153
    functionName: point_sub
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - palloc
    - PG_RETURN_POINT_P
    - point_sub_point
    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:4159,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4160,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4160,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4161,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4162,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4162,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - result
    - pt1
    - pt2
    argTypes:
    - Point*
    - Point*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4164
      start: 4156
    functionDepth: 2
    functionLinenumber: 4156
    functionLinenumberEnd: 4164
    functionName: point_mul_point
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_mi
    - point_construct
    - float8_pl
    - float8_mul
    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:4169,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4170,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4173,1
    - Dst: point_mul_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4175,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4178
      start: 4166
    functionDepth: 3
    functionLinenumber: 4166
    functionLinenumberEnd: 4178
    functionName: point_mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - palloc
    - point_mul_point
    - PG_RETURN_POINT_P
    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:4186,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4186,1
    - Dst: float8_mul
      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: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4189,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4189,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4189,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4190,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4191,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4191,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4191,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - result
    - pt1
    - pt2
    argTypes:
    - Point*
    - Point*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4193
      start: 4181
    functionDepth: 2
    functionLinenumber: 4181
    functionLinenumberEnd: 4193
    functionName: point_div_point
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_mul
    - float8_mi
    - point_construct
    - float8_pl
    - float8_div
    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:4198,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4199,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4202,1
    - Dst: point_div_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4204,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4207
      start: 4195
    functionDepth: 3
    functionLinenumber: 4195
    functionLinenumberEnd: 4207
    functionName: point_div
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - palloc
    - point_div_point
    - PG_RETURN_POINT_P
    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:4219,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4220,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4223,1
    - Dst: box_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4225,1
    - Dst: PG_RETURN_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4227,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4228
      start: 4216
    functionDepth: 3
    functionLinenumber: 4216
    functionLinenumberEnd: 4228
    functionName: points_box
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - palloc
    - PG_RETURN_BOX_P
    - box_construct
    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:4233,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4234,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4237,1
    - Dst: point_add_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4239,1
    - Dst: point_add_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4240,1
    - Dst: PG_RETURN_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4243
      start: 4230
    functionDepth: 3
    functionLinenumber: 4230
    functionLinenumberEnd: 4243
    functionName: box_add
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_add_point
    - PG_RETURN_BOX_P
    - PG_GETARG_BOX_P
    - PG_GETARG_POINT_P
    - palloc
    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:4248,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4249,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4252,1
    - Dst: point_sub_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4254,1
    - Dst: point_sub_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4255,1
    - Dst: PG_RETURN_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4258
      start: 4245
    functionDepth: 3
    functionLinenumber: 4245
    functionLinenumberEnd: 4258
    functionName: box_sub
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOX_P
    - point_sub_point
    - PG_GETARG_BOX_P
    - PG_GETARG_POINT_P
    - palloc
    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:4263,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4264,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4269,1
    - Dst: point_mul_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4271,1
    - Dst: point_mul_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4272,1
    - Dst: box_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4274,1
    - Dst: PG_RETURN_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4277
      start: 4260
    functionDepth: 3
    functionLinenumber: 4260
    functionLinenumberEnd: 4277
    functionName: box_mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOX_P
    - point_mul_point
    - PG_GETARG_BOX_P
    - PG_GETARG_POINT_P
    - box_construct
    - palloc
    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:4282,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4283,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4288,1
    - Dst: point_div_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4290,1
    - Dst: point_div_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4291,1
    - Dst: box_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4293,1
    - Dst: PG_RETURN_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4296
      start: 4279
    functionDepth: 3
    functionLinenumber: 4279
    functionLinenumberEnd: 4296
    functionName: box_div
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_div_point
    - PG_RETURN_BOX_P
    - PG_GETARG_BOX_P
    - PG_GETARG_POINT_P
    - box_construct
    - palloc
    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:4304,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4307,1
    - Dst: PG_RETURN_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4315
      start: 4301
    functionDepth: 1
    functionLinenumber: 4301
    functionLinenumberEnd: 4315
    functionName: point_box
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - palloc
    - PG_RETURN_BOX_P
    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:4323,1
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4324,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4327,1
    - Dst: float8_max
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4329,1
    - Dst: float8_min
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4330,1
    - Dst: float8_max
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4331,1
    - Dst: float8_min
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4332,1
    - Dst: PG_RETURN_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4335
      start: 4320
    functionDepth: 3
    functionLinenumber: 4320
    functionLinenumberEnd: 4335
    functionName: boxes_bound_box
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOX_P
    - float8_min
    - PG_GETARG_BOX_P
    - palloc
    - 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:4350,1
    - Dst: PG_GETARG_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4351,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4358,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4366,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4367,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4368,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4370,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4372,1
    - Dst: PG_RETURN_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4389,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4390
      start: 4347
    functionDepth: 2
    functionLinenumber: 4347
    functionLinenumberEnd: 4390
    functionName: path_add
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - PG_RETURN_PATH_P
    - PG_RETURN_NULL
    - PG_GETARG_PATH_P
    - SET_VARSIZE
    - palloc
    - errcode
    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:4398,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4399,1
    - Dst: point_add_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4403,1
    - Dst: PG_RETURN_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4405,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4406
      start: 4395
    functionDepth: 3
    functionLinenumber: 4395
    functionLinenumberEnd: 4406
    functionName: path_add_pt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_PATH_P_COPY
    - PG_RETURN_PATH_P
    - point_add_point
    - 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:4411,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4412,1
    - Dst: point_sub_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4416,1
    - Dst: PG_RETURN_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4418,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4419
      start: 4408
    functionDepth: 3
    functionLinenumber: 4408
    functionLinenumberEnd: 4419
    functionName: path_sub_pt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_PATH_P_COPY
    - point_sub_point
    - PG_RETURN_PATH_P
    - 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:4427,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4428,1
    - Dst: point_mul_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4432,1
    - Dst: PG_RETURN_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4434,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4435
      start: 4424
    functionDepth: 3
    functionLinenumber: 4424
    functionLinenumberEnd: 4435
    functionName: path_mul_pt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_PATH_P_COPY
    - PG_RETURN_PATH_P
    - PG_GETARG_POINT_P
    - point_mul_point
    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:4440,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4441,1
    - Dst: point_div_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4445,1
    - Dst: PG_RETURN_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4447,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4448
      start: 4437
    functionDepth: 3
    functionLinenumber: 4437
    functionLinenumberEnd: 4448
    functionName: path_div_pt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_PATH_P_COPY
    - PG_RETURN_PATH_P
    - point_div_point
    - PG_GETARG_POINT_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:4454,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4461,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4462,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4463,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4470,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4472,1
    - Dst: make_bound_box
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4481,1
    - Dst: PG_RETURN_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4483,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4484
      start: 4451
    functionDepth: 3
    functionLinenumber: 4451
    functionLinenumberEnd: 4484
    functionName: path_poly
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_POLYGON_P
    - ereport
    - make_bound_box
    - PG_GETARG_PATH_P
    - SET_VARSIZE
    - palloc
    - errcode
    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:4496,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4498,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4499
      start: 4493
    functionDepth: 1
    functionLinenumber: 4493
    functionLinenumberEnd: 4499
    functionName: poly_npoints
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_POLYGON_P
    linkageType: ''
    returnType: Datum
    signature: Datum poly_npoints(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4505,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4509,1
    - Dst: poly_to_circle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4511,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4514,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4515
      start: 4502
    functionDepth: 1
    functionLinenumber: 4502
    functionLinenumberEnd: 4515
    functionName: poly_center
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POINT_P
    - palloc
    - PG_GETARG_POLYGON_P
    - poly_to_circle
    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:4521,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4524,1
    - Dst: PG_RETURN_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4527,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4528
      start: 4518
    functionDepth: 1
    functionLinenumber: 4518
    functionLinenumberEnd: 4528
    functionName: poly_box
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOX_P
    - palloc
    - PG_GETARG_POLYGON_P
    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:4537,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4543,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4545,1
    - Dst: box_construct
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4557,1
    - Dst: PG_RETURN_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4560
      start: 4534
    functionDepth: 3
    functionLinenumber: 4534
    functionLinenumberEnd: 4560
    functionName: box_poly
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_POLYGON_P
    - PG_GETARG_BOX_P
    - box_construct
    - palloc
    - SET_VARSIZE
    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:4566,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4576,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4578,1
    - Dst: PG_RETURN_PATH_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4590,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4591
      start: 4563
    functionDepth: 1
    functionLinenumber: 4563
    functionLinenumberEnd: 4591
    functionName: poly_path
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_PATH_P
    - palloc
    - PG_GETARG_POLYGON_P
    - SET_VARSIZE
    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:4613,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4615,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4621,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4629,1
    - Dst: pair_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4636,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4638,1
    - Dst: single_decode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4643,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4644,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4648,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4649,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4650,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4659,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4663,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4664,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4665,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4670,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4671,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4672,1
    - Dst: PG_RETURN_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4675,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4676
      start: 4610
    functionDepth: 3
    functionLinenumber: 4610
    functionLinenumberEnd: 4676
    functionName: circle_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_CSTRING
    - errcode
    - pair_decode
    - ereturn
    - PG_RETURN_NULL
    - PG_RETURN_CIRCLE_P
    - isspace
    - palloc
    - single_decode
    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:4683,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4686,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4688,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4689,1
    - Dst: pair_encode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4690,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4691,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4692,1
    - Dst: single_encode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4693,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4694,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4696,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4697
      start: 4680
    functionDepth: 3
    functionLinenumber: 4680
    functionLinenumberEnd: 4697
    functionName: circle_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - single_encode
    - appendStringInfoChar
    - PG_RETURN_CSTRING
    - pair_encode
    - initStringInfo
    - PG_GETARG_CIRCLE_P
    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:4705,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4708,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4710,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4711,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4712,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4716,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4717,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4718,1
    - Dst: PG_RETURN_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4720,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4721
      start: 4702
    functionDepth: 3
    functionLinenumber: 4702
    functionLinenumberEnd: 4721
    functionName: circle_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_POINTER
    - ereport
    - PG_RETURN_CIRCLE_P
    - palloc
    - errcode
    - pq_getmsgfloat8
    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:4729,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4732,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4733,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4734,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4735,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4736,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4736,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4737
      start: 4726
    functionDepth: 4
    functionLinenumber: 4726
    functionLinenumberEnd: 4737
    functionName: circle_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - pq_sendfloat8
    - PG_RETURN_BYTEA_P
    - PG_GETARG_CIRCLE_P
    - pq_begintypsend
    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:4753,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4754,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4756,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4756,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4756,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4757,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4758,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4759
      start: 4750
    functionDepth: 3
    functionLinenumber: 4750
    functionLinenumberEnd: 4759
    functionName: circle_same
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - isnan
    - FPeq
    - PG_RETURN_BOOL
    - point_eq_point
    - PG_GETARG_CIRCLE_P
    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:4766,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4767,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4769,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4769,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4769,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4770,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4771
      start: 4763
    functionDepth: 3
    functionLinenumber: 4763
    functionLinenumberEnd: 4771
    functionName: circle_overlap
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_dt
    - FPle
    - PG_RETURN_BOOL
    - PG_GETARG_CIRCLE_P
    - float8_pl
    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:4779,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4780,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4782,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4782,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4782,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4783,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4784
      start: 4776
    functionDepth: 2
    functionLinenumber: 4776
    functionLinenumberEnd: 4784
    functionName: circle_overleft
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_CIRCLE_P
    - float8_pl
    - FPle
    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:4791,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4792,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4794,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4794,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4794,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4795,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4796
      start: 4788
    functionDepth: 2
    functionLinenumber: 4788
    functionLinenumberEnd: 4796
    functionName: circle_left
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_pl
    - PG_RETURN_BOOL
    - float8_mi
    - PG_GETARG_CIRCLE_P
    - FPlt
    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:4803,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4804,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4806,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4806,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4806,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4807,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4808
      start: 4800
    functionDepth: 2
    functionLinenumber: 4800
    functionLinenumberEnd: 4808
    functionName: circle_right
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_pl
    - PG_RETURN_BOOL
    - FPgt
    - float8_mi
    - PG_GETARG_CIRCLE_P
    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:4816,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4817,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4819,1
    - Dst: FPge
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4819,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4819,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4820,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4821
      start: 4813
    functionDepth: 2
    functionLinenumber: 4813
    functionLinenumberEnd: 4821
    functionName: circle_overright
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_mi
    - PG_RETURN_BOOL
    - PG_GETARG_CIRCLE_P
    - FPge
    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:4828,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4829,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4831,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4831,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4831,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4832,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4833
      start: 4825
    functionDepth: 3
    functionLinenumber: 4825
    functionLinenumberEnd: 4833
    functionName: circle_contained
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_dt
    - FPle
    - PG_RETURN_BOOL
    - float8_mi
    - PG_GETARG_CIRCLE_P
    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:4840,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4841,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4843,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4843,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4843,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4844,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4845
      start: 4837
    functionDepth: 3
    functionLinenumber: 4837
    functionLinenumberEnd: 4845
    functionName: circle_contain
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_dt
    - FPle
    - PG_RETURN_BOOL
    - float8_mi
    - PG_GETARG_CIRCLE_P
    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:4853,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4854,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4856,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4856,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4856,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4857,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4858
      start: 4850
    functionDepth: 2
    functionLinenumber: 4850
    functionLinenumberEnd: 4858
    functionName: circle_below
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_pl
    - PG_RETURN_BOOL
    - float8_mi
    - PG_GETARG_CIRCLE_P
    - FPlt
    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:4865,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4866,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4868,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4868,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4868,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4869,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4870
      start: 4862
    functionDepth: 2
    functionLinenumber: 4862
    functionLinenumberEnd: 4870
    functionName: circle_above
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_pl
    - PG_RETURN_BOOL
    - FPgt
    - float8_mi
    - PG_GETARG_CIRCLE_P
    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:4878,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4879,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4881,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4881,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4881,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4882,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4883
      start: 4875
    functionDepth: 2
    functionLinenumber: 4875
    functionLinenumberEnd: 4883
    functionName: circle_overbelow
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_CIRCLE_P
    - float8_pl
    - FPle
    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:4891,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4892,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4894,1
    - Dst: FPge
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4894,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4894,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4895,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4896
      start: 4888
    functionDepth: 2
    functionLinenumber: 4888
    functionLinenumberEnd: 4896
    functionName: circle_overabove
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_mi
    - PG_RETURN_BOOL
    - PG_GETARG_CIRCLE_P
    - FPge
    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:4905,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4906,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4908,1
    - Dst: FPeq
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4908,1
    - Dst: circle_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4908,1
    - Dst: circle_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4908,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4909
      start: 4902
    functionDepth: 1
    functionLinenumber: 4902
    functionLinenumberEnd: 4909
    functionName: circle_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - FPeq
    - PG_RETURN_BOOL
    - PG_GETARG_CIRCLE_P
    - circle_ar
    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:4914,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4915,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4917,1
    - Dst: FPne
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4917,1
    - Dst: circle_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4917,1
    - Dst: circle_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4917,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4918
      start: 4911
    functionDepth: 1
    functionLinenumber: 4911
    functionLinenumberEnd: 4918
    functionName: circle_ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_CIRCLE_P
    - circle_ar
    - FPne
    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:4923,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4924,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4926,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4926,1
    - Dst: circle_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4926,1
    - Dst: circle_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4926,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4927
      start: 4920
    functionDepth: 1
    functionLinenumber: 4920
    functionLinenumberEnd: 4927
    functionName: circle_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_CIRCLE_P
    - FPlt
    - circle_ar
    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:4932,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4933,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4935,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4935,1
    - Dst: circle_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4935,1
    - Dst: circle_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4935,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4936
      start: 4929
    functionDepth: 1
    functionLinenumber: 4929
    functionLinenumberEnd: 4936
    functionName: circle_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_CIRCLE_P
    - FPgt
    - circle_ar
    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:4941,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4942,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4944,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4944,1
    - Dst: circle_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4944,1
    - Dst: circle_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4944,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4945
      start: 4938
    functionDepth: 1
    functionLinenumber: 4938
    functionLinenumberEnd: 4945
    functionName: circle_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_CIRCLE_P
    - circle_ar
    - FPle
    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: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: FPge
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4953,1
    - Dst: circle_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4953,1
    - Dst: circle_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4953,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4954
      start: 4947
    functionDepth: 1
    functionLinenumber: 4947
    functionLinenumberEnd: 4954
    functionName: circle_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BOOL
    - PG_GETARG_CIRCLE_P
    - circle_ar
    - FPge
    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:4967,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4968,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4971,1
    - Dst: point_add_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4973,1
    - Dst: PG_RETURN_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4976,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4977
      start: 4964
    functionDepth: 3
    functionLinenumber: 4964
    functionLinenumberEnd: 4977
    functionName: circle_add_pt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_add_point
    - PG_GETARG_POINT_P
    - PG_RETURN_CIRCLE_P
    - palloc
    - PG_GETARG_CIRCLE_P
    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:4982,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4983,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4986,1
    - Dst: point_sub_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4988,1
    - Dst: PG_RETURN_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:4991,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4992
      start: 4979
    functionDepth: 3
    functionLinenumber: 4979
    functionLinenumberEnd: 4992
    functionName: circle_sub_pt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_sub_point
    - PG_GETARG_POINT_P
    - PG_RETURN_CIRCLE_P
    - palloc
    - PG_GETARG_CIRCLE_P
    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:5001,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5002,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5005,1
    - Dst: point_mul_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5007,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5008,1
    - Dst: HYPOT
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5008,1
    - Dst: PG_RETURN_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5010,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5011
      start: 4998
    functionDepth: 3
    functionLinenumber: 4998
    functionLinenumberEnd: 5011
    functionName: circle_mul_pt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - float8_mul
    - HYPOT
    - point_mul_point
    - PG_GETARG_POINT_P
    - PG_RETURN_CIRCLE_P
    - palloc
    - PG_GETARG_CIRCLE_P
    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:5016,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5017,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5020,1
    - Dst: point_div_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5022,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5023,1
    - Dst: HYPOT
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5023,1
    - Dst: PG_RETURN_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5025,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5026
      start: 5013
    functionDepth: 3
    functionLinenumber: 5013
    functionLinenumberEnd: 5026
    functionName: circle_div_pt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_div_point
    - HYPOT
    - PG_GETARG_POINT_P
    - PG_RETURN_CIRCLE_P
    - palloc
    - PG_GETARG_CIRCLE_P
    - float8_div
    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:5034,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5036,1
    - Dst: circle_ar
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5036,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5037
      start: 5031
    functionDepth: 1
    functionLinenumber: 5031
    functionLinenumberEnd: 5037
    functionName: circle_area
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - PG_GETARG_CIRCLE_P
    - circle_ar
    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:5045,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5047,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5047,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5048
      start: 5042
    functionDepth: 2
    functionLinenumber: 5042
    functionLinenumberEnd: 5048
    functionName: circle_diameter
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - PG_GETARG_CIRCLE_P
    - float8_mul
    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:5056,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5058,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5059
      start: 5053
    functionDepth: 1
    functionLinenumber: 5053
    functionLinenumberEnd: 5059
    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:5068,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5069,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5072,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5072,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5073,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5077,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5078
      start: 5065
    functionDepth: 3
    functionLinenumber: 5065
    functionLinenumberEnd: 5078
    functionName: circle_distance
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_dt
    - float8_mi
    - PG_GETARG_CIRCLE_P
    - PG_RETURN_FLOAT8
    - float8_pl
    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:5084,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5085,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5088,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5089,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5090
      start: 5081
    functionDepth: 3
    functionLinenumber: 5081
    functionLinenumberEnd: 5090
    functionName: circle_contain_pt
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    - PG_GETARG_CIRCLE_P
    - point_dt
    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:5096,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5097,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5100,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5102
      start: 5093
    functionDepth: 3
    functionLinenumber: 5093
    functionLinenumberEnd: 5102
    functionName: pt_contained_circle
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - PG_RETURN_BOOL
    - PG_GETARG_CIRCLE_P
    - point_dt
    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:5111,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5112,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5115,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5115,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5120,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5121
      start: 5108
    functionDepth: 3
    functionLinenumber: 5108
    functionLinenumberEnd: 5121
    functionName: dist_pc
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_dt
    - float8_mi
    - PG_GETARG_POINT_P
    - PG_RETURN_FLOAT8
    - PG_GETARG_CIRCLE_P
    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:5129,1
    - Dst: PG_GETARG_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5130,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5133,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5133,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5137,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5138
      start: 5126
    functionDepth: 3
    functionLinenumber: 5126
    functionLinenumberEnd: 5138
    functionName: dist_cpoint
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_dt
    - float8_mi
    - PG_GETARG_POINT_P
    - PG_RETURN_FLOAT8
    - PG_GETARG_CIRCLE_P
    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:5145,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5148,1
    - Dst: PG_RETURN_POINT_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5153
      start: 5142
    functionDepth: 1
    functionLinenumber: 5142
    functionLinenumberEnd: 5153
    functionName: circle_center
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - palloc
    - PG_GETARG_CIRCLE_P
    - PG_RETURN_POINT_P
    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:5161,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - circle
    argTypes:
    - CIRCLE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5162
      start: 5158
    functionDepth: 2
    functionLinenumber: 5158
    functionLinenumberEnd: 5162
    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:5172,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5173,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5176,1
    - Dst: PG_RETURN_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5183
      start: 5169
    functionDepth: 1
    functionLinenumber: 5169
    functionLinenumberEnd: 5183
    functionName: cr_circle
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINT_P
    - palloc
    - PG_RETURN_CIRCLE_P
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum cr_circle(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5188,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5192,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5194,1
    - Dst: sqrt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5194,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5196,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5197,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5198,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5199,1
    - Dst: PG_RETURN_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5202
      start: 5185
    functionDepth: 2
    functionLinenumber: 5185
    functionLinenumberEnd: 5202
    functionName: circle_box
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - sqrt
    - float8_pl
    - PG_RETURN_BOX_P
    - float8_mi
    - palloc
    - PG_GETARG_CIRCLE_P
    - float8_div
    linkageType: ''
    returnType: Datum
    signature: Datum circle_box(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BOX_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5210,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5213,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5215,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5215,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5216,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5216,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5218,1
    - Dst: PG_RETURN_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5221
      start: 5207
    functionDepth: 3
    functionLinenumber: 5207
    functionLinenumberEnd: 5221
    functionName: box_circle
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - point_dt
    - PG_GETARG_BOX_P
    - PG_RETURN_CIRCLE_P
    - palloc
    - float8_pl
    - float8_div
    linkageType: ''
    returnType: Datum
    signature: Datum box_circle(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5227,1
    - Dst: PG_GETARG_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5228,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5236,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5237,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5238,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5239,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5242,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5243,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5244,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5251,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5252,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5253,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5255,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5256,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5259,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5263,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5265,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5266,1
    - Dst: cos
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5266,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5267,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5268,1
    - Dst: sin
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5268,1
    - Dst: make_bound_box
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5271,1
    - Dst: PG_RETURN_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5273,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5274
      start: 5224
    functionDepth: 3
    functionLinenumber: 5224
    functionLinenumberEnd: 5274
    functionName: circle_poly
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_POLYGON_P
    - FPzero
    - float8_pl
    - float8_mul
    - sin
    - ereport
    - palloc0
    - float8_mi
    - make_bound_box
    - PG_GETARG_INT32
    - SET_VARSIZE
    - cos
    - PG_GETARG_CIRCLE_P
    - errcode
    - float8_div
    linkageType: ''
    returnType: Datum
    signature: Datum circle_poly(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5289,1
    - Dst: point_add_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5296,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5297,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5298,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5301,1
    - Dst: point_dt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5302,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5303,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - result
    - poly
    argTypes:
    - CIRCLE*
    - POLYGON*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5304
      start: 5284
    functionDepth: 3
    functionLinenumber: 5284
    functionLinenumberEnd: 5304
    functionName: poly_to_circle
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 1
    functionsReached:
    - Assert
    - point_dt
    - point_add_point
    - float8_pl
    - float8_div
    linkageType: ''
    returnType: void
    signature: void poly_to_circle(CIRCLE *result, POLYGON *poly)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POLYGON_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5309,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5312,1
    - Dst: poly_to_circle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5314,1
    - Dst: PG_RETURN_CIRCLE_P
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5317
      start: 5306
    functionDepth: 4
    functionLinenumber: 5306
    functionLinenumberEnd: 5317
    functionName: poly_circle
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - palloc
    - PG_GETARG_POLYGON_P
    - PG_RETURN_CIRCLE_P
    - poly_to_circle
    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:5352,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5355,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5356,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5364,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5365,1
    - Dst: lseg_crossing
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5368,1
    - Dst: lseg_crossing
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5377,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - p
    - npts
    - plist
    argTypes:
    - Point*
    - int
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5384
      start: 5339
    functionDepth: 2
    functionLinenumber: 5339
    functionLinenumberEnd: 5384
    functionName: point_inside
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 6
    functionsReached:
    - float8_mi
    - Assert
    - lseg_crossing
    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:5402,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5404,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5406,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5408,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5410,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5411,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5415,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5417,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5424,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5426,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5428,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5429,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5430,1
    - Dst: FPge
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5435,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5435,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5438,1
    - Dst: FPle
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5438,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5443,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5443,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5443,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5444,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5444,1
    - Dst: FPzero
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5445,1
    - Dst: FPlt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5447,1
    - Dst: FPgt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5448,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: 5453
      start: 5396
    functionDepth: 2
    functionLinenumber: 5396
    functionLinenumberEnd: 5453
    functionName: lseg_crossing
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 1
    functionsReached:
    - FPge
    - FPzero
    - float8_mul
    - FPle
    - FPgt
    - float8_mi
    - FPlt
    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:5466,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5474,1
    - Dst: point_eq_point
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5485,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 22
    argCount: 3
    argNames:
    - npts
    - p1
    - p2
    argTypes:
    - int
    - Point*
    - Point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5494
      start: 5456
    functionDepth: 3
    functionLinenumber: 5456
    functionLinenumberEnd: 5494
    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: 7
    BranchProfiles: []
    Callsites:
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5525,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5525,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5526,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5528,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5528,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5529,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5532,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5533,1
    - Dst: sqrt
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5554,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5556,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5556,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5557,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5558,1
    - Dst: float_underflow_error
      Src: /src/postgres/src/backend/utils/adt/geo_ops.c:5559,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5562
      start: 5518
    functionDepth: 1
    functionLinenumber: 5518
    functionLinenumberEnd: 5562
    functionName: pg_hypot
    functionSourceFile: /src/postgres/src/backend/utils/adt/geo_ops.c
    functionUses: 0
    functionsReached:
    - isnan
    - isinf
    - sqrt
    - unlikely
    - float_overflow_error
    - float_underflow_error
    - fabs
    - get_float8_nan
    - get_float8_infinity
    linkageType: ''
    returnType: float8
    signature: float8 pg_hypot(float8 x, float8 y)
  - 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: 318
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 318
    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: 343
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 343
    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: 363
      start: 353
    functionDepth: 0
    functionLinenumber: 353
    functionLinenumberEnd: 363
    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:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct pg_tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 381
    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:399,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/datetime.c:428,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/datetime.c:430,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/datetime.c:431,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/datetime.c:432,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: 443
      start: 396
    functionDepth: 2
    functionLinenumber: 396
    functionLinenumberEnd: 443
    functionName: GetCurrentTimeUsec
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 3
    functionsReached:
    - errmsg
    - timestamp2tm
    - ereport
    - GetCurrentTransactionStartTimestamp
    - errcode
    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:460,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:463,1
    - Dst: abs
      Src: /src/postgres/src/backend/utils/adt/datetime.c:463,1
    - Dst: pg_ultostr
      Src: /src/postgres/src/backend/utils/adt/datetime.c:465,1
    - Dst: abs
      Src: /src/postgres/src/backend/utils/adt/datetime.c:465,1
    - Dst: abs
      Src: /src/postgres/src/backend/utils/adt/datetime.c:470,1
    - Dst: pg_ultostr
      Src: /src/postgres/src/backend/utils/adt/datetime.c:505,1
    - Dst: abs
      Src: /src/postgres/src/backend/utils/adt/datetime.c:505,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: 511
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 511
    functionName: AppendSeconds
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 1
    functionsReached:
    - Assert
    - pg_ultostr
    - pg_ultostr_zeropad
    - abs
    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:523,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: 524
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 524
    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:536,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/datetime.c:537,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - val
    - multiplier
    - sum
    argTypes:
    - int64
    - int64
    - int64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 531
    functionDepth: 1
    functionLinenumber: 531
    functionLinenumberEnd: 540
    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:570,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: 571
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 571
    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:596,1
    - Dst: AdjustFractMicroseconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:601,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: 602
      start: 578
    functionDepth: 2
    functionLinenumber: 578
    functionLinenumberEnd: 602
    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:618,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/datetime.c:620,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: 621
      start: 610
    functionDepth: 1
    functionLinenumber: 610
    functionLinenumberEnd: 621
    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:632,1
    - Dst: AdjustFractMicroseconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:635,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: 636
      start: 627
    functionDepth: 2
    functionLinenumber: 627
    functionLinenumberEnd: 636
    functionName: AdjustMicroseconds
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - AdjustFractMicroseconds
    - int64_multiply_add
    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:649,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/datetime.c:650,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: 651
      start: 642
    functionDepth: 1
    functionLinenumber: 642
    functionLinenumberEnd: 651
    functionName: AdjustDays
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - pg_mul_s32_overflow
    - pg_add_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:663,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - val
    - itm_in
    argTypes:
    - int64
    - struct pg_itm_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 658
    functionDepth: 1
    functionLinenumber: 658
    functionLinenumberEnd: 664
    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:678,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/datetime.c:679,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: 680
      start: 670
    functionDepth: 1
    functionLinenumber: 670
    functionLinenumberEnd: 680
    functionName: AdjustYears
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - pg_mul_s32_overflow
    - pg_add_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:693,1
    - Dst: strspn
      Src: /src/postgres/src/backend/utils/adt/datetime.c:711,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:711,1
    - Dst: strtod
      Src: /src/postgres/src/backend/utils/adt/datetime.c:715,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - cp
    - frac
    argTypes:
    - char*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 689
    functionDepth: 1
    functionLinenumber: 689
    functionLinenumberEnd: 721
    functionName: ParseFraction
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - strspn
    - strtod
    - Assert
    - 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:733,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/datetime.c:736,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - cp
    - fsec
    argTypes:
    - char*
    - fsec_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 738
      start: 727
    functionDepth: 2
    functionLinenumber: 727
    functionLinenumberEnd: 738
    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:799,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/datetime.c:811,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:813,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/datetime.c:814,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:815,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:821,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/datetime.c:822,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:824,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:832,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/datetime.c:834,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/datetime.c:837,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:838,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:847,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/datetime.c:848,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:849,1
    - Dst: isalnum
      Src: /src/postgres/src/backend/utils/adt/datetime.c:855,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:856,1
    - Dst: pg_tolower
      Src: /src/postgres/src/backend/utils/adt/datetime.c:856,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:870,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/datetime.c:871,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:872,1
    - Dst: isalpha
      Src: /src/postgres/src/backend/utils/adt/datetime.c:880,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:885,1
    - Dst: pg_tolower
      Src: /src/postgres/src/backend/utils/adt/datetime.c:885,1
    - Dst: isalpha
      Src: /src/postgres/src/backend/utils/adt/datetime.c:886,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: isdigit
      Src: /src/postgres/src/backend/utils/adt/datetime.c:900,1
    - Dst: datebsearch
      Src: /src/postgres/src/backend/utils/adt/datetime.c:904,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:912,1
    - Dst: pg_tolower
      Src: /src/postgres/src/backend/utils/adt/datetime.c:912,1
    - Dst: isalnum
      Src: /src/postgres/src/backend/utils/adt/datetime.c:916,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:922,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/datetime.c:924,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/datetime.c:928,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:931,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/datetime.c:932,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:934,1
    - Dst: isalpha
      Src: /src/postgres/src/backend/utils/adt/datetime.c:937,1
    - Dst: APPEND_CHAR
      Src: /src/postgres/src/backend/utils/adt/datetime.c:940,1
    - Dst: pg_tolower
      Src: /src/postgres/src/backend/utils/adt/datetime.c:940,1
    - Dst: isalpha
      Src: /src/postgres/src/backend/utils/adt/datetime.c:941,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: ispunct
      Src: /src/postgres/src/backend/utils/adt/datetime.c:949,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: 966
      start: 772
    functionDepth: 2
    functionLinenumber: 772
    functionLinenumberEnd: 966
    functionName: ParseDateTime
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 10
    functionsReached:
    - datebsearch
    - isalpha
    - APPEND_CHAR
    - ispunct
    - isdigit
    - isalnum
    - pg_tolower
    - isspace
    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: 794
      start: 787
    functionDepth: 0
    functionLinenumber: 787
    functionLinenumberEnd: 794
    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:1053,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1057,1
    - Dst: DecodeTimezone
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1061,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1065,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1081,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1081,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1082,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1082,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1088,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1111,1
    - Dst: DecodeTimezone
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1115,1
    - Dst: DecodeNumberField
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1124,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1124,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1135,1
    - Dst: pg_tzset
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1139,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1146,1
    - Dst: DecodeDate
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1151,1
    - Dst: DecodeTime
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1170,1
    - Dst: time_overflows
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1176,1
    - Dst: DecodeTimezone
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1188,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1192,1
    - Dst: strtoint
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1207,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1220,1
    - Dst: ParseFraction
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1228,1
    - Dst: dt2time
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1232,1
    - Dst: DecodeNumberField
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1241,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1241,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1264,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1265,1
    - Dst: DecodeDate
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1270,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1276,1
    - Dst: DecodeNumberField
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1283,1
    - Dst: DecodeNumberField
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1302,1
    - Dst: DecodeNumber
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1311,1
    - Dst: DecodeTimezoneAbbrev
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1324,1
    - Dst: DecodeSpecial
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1329,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1333,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1340,1
    - Dst: GetCurrentTimeUsec
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1342,1
    - Dst: GetCurrentDateTime
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1348,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1349,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1349,1
    - Dst: GetCurrentDateTime
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1356,1
    - Dst: GetCurrentDateTime
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1365,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1366,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1366,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1371,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1383,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1389,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1401,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1402,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1406,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1418,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1431,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1446,1
    - Dst: pg_tzset
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1498,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1502,1
    - Dst: ValidateDate
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1527,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1554,1
    - Dst: DetermineTimeZoneOffset
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1557,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1567,1
    - Dst: DetermineTimeZoneAbbrevOffset
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1570,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1574,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1580,1
    - Dst: DetermineTimeZoneOffset
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1583,1
    CyclomaticComplexity: 114
    EdgeCount: 114
    ICount: 312
    argCount: 8
    argNames:
    - field
    - ftype
    - nf
    - dtype
    - tm
    - fsec
    - tzp
    - extra
    argTypes:
    - char**
    - int*
    - int
    - int*
    - struct pg_tm*
    - fsec_t*
    - int*
    - DateTimeErrorExtra*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1588
      start: 996
    functionDepth: 3
    functionLinenumber: 996
    functionLinenumberEnd: 1588
    functionName: DecodeDateTime
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 6
    functionsReached:
    - DecodeSpecial
    - DecodeTimezone
    - date2j
    - DecodeTimezoneAbbrev
    - DTK_M
    - strlen
    - DecodeTime
    - pg_tzset
    - GetCurrentDateTime
    - DetermineTimeZoneAbbrevOffset
    - dt2time
    - isdigit
    - DecodeNumber
    - DecodeNumberField
    - time_overflows
    - elog
    - j2date
    - GetCurrentTimeUsec
    - ValidateDate
    - DetermineTimeZoneOffset
    - ParseFraction
    - strtoint
    - DecodeDate
    - strchr
    linkageType: ''
    returnType: int
    signature: "int DecodeDateTime(char **field, int *ftype, int nf,\n\t\t\t   int
      *dtype, struct pg_tm *tm, fsec_t *fsec, int *tzp,\n\t\t\t   DateTimeErrorExtra
      *extra)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DetermineTimeZoneOffsetInternal
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tm
    - tzp
    argTypes:
    - struct pg_tm*
    - pg_tz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1609
      start: 1603
    functionDepth: 1
    functionLinenumber: 1603
    functionLinenumberEnd: 1609
    functionName: DetermineTimeZoneOffset
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 8
    functionsReached:
    - DetermineTimeZoneOffsetInternal
    linkageType: ''
    returnType: int
    signature: int DetermineTimeZoneOffset(struct pg_tm *tm, pg_tz *tzp)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: IS_VALID_JULIAN
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1648,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1650,1
    - Dst: pg_next_dst_boundary
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1671,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 58
    argCount: 3
    argNames:
    - tm
    - tzp
    - tp
    argTypes:
    - struct pg_tm*
    - pg_tz*
    - pg_time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1747
      start: 1625
    functionDepth: 2
    functionLinenumber: 1625
    functionLinenumberEnd: 1747
    functionName: DetermineTimeZoneOffsetInternal
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 1
    functionsReached:
    - IS_VALID_JULIAN
    - pg_next_dst_boundary
    - date2j
    linkageType: ''
    returnType: int
    signature: int DetermineTimeZoneOffsetInternal(struct pg_tm *tm, pg_tz *tzp, pg_time_t
      *tp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DetermineTimeZoneOffsetInternal
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1776,1
    - Dst: DetermineTimeZoneAbbrevOffsetInternal
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1781,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - tm
    - abbr
    - tzp
    argTypes:
    - struct pg_tm*
    - char*
    - pg_tz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1794
      start: 1764
    functionDepth: 3
    functionLinenumber: 1764
    functionLinenumberEnd: 1794
    functionName: DetermineTimeZoneAbbrevOffset
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 3
    functionsReached:
    - DetermineTimeZoneOffsetInternal
    - DetermineTimeZoneAbbrevOffsetInternal
    linkageType: ''
    returnType: int
    signature: int DetermineTimeZoneAbbrevOffset(struct pg_tm *tm, const char *abbr,
      pg_tz *tzp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timestamptz_to_time_t
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1806,1
    - Dst: DetermineTimeZoneAbbrevOffsetInternal
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1816,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1823,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1824,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1825,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1826,1
    - Dst: DetermineTimeZoneOffset
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1828,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - ts
    - abbr
    - tzp
    - isdst
    argTypes:
    - TimestampTz
    - char*
    - pg_tz*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1831
      start: 1802
    functionDepth: 2
    functionLinenumber: 1802
    functionLinenumberEnd: 1831
    functionName: DetermineTimeZoneAbbrevOffsetTS
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 2
    functionsReached:
    - errmsg
    - timestamp2tm
    - timestamptz_to_time_t
    - DetermineTimeZoneOffset
    - ereport
    - DetermineTimeZoneAbbrevOffsetInternal
    - errcode
    linkageType: ''
    returnType: int
    signature: "int DetermineTimeZoneAbbrevOffsetTS(TimestampTz ts, const char *abbr,\n\t\t\t\t\t\t\t\tpg_tz
      *tzp, int *isdst)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1848,1
    - Dst: pg_toupper
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1850,1
    - Dst: pg_interpret_timezone_abbrev
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1853,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 5
    argNames:
    - t
    - abbr
    - tzp
    - offset
    - isdst
    argTypes:
    - pg_time_t
    - char*
    - pg_tz*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1864
      start: 1839
    functionDepth: 2
    functionLinenumber: 1839
    functionLinenumberEnd: 1864
    functionName: DetermineTimeZoneAbbrevOffsetInternal
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 2
    functionsReached:
    - pg_toupper
    - pg_interpret_timezone_abbrev
    - strlcpy
    linkageType: ''
    returnType: bool
    signature: "bool DetermineTimeZoneAbbrevOffsetInternal(pg_time_t t, const char
      *abbr, pg_tz *tzp,\n\t\t\t\t\t\t\t\t\t  int *offset, int *isdst)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1882,1
    - Dst: pg_toupper
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1884,1
    - Dst: pg_timezone_abbrev_is_known
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1887,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 5
    argNames:
    - abbr
    - tzp
    - isfixed
    - offset
    - isdst
    argTypes:
    - char*
    - pg_tz*
    - bool*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1898
      start: 1873
    functionDepth: 2
    functionLinenumber: 1873
    functionLinenumberEnd: 1898
    functionName: TimeZoneAbbrevIsKnown
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - pg_toupper
    - strlcpy
    - pg_timezone_abbrev_is_known
    linkageType: ''
    returnType: bool
    signature: "bool TimeZoneAbbrevIsKnown(const char *abbr, pg_tz *tzp,\n\t\t\t\t\t
      \ bool *isfixed, int *offset, int *isdst)"
  - BBCount: 87
    BranchProfiles: []
    Callsites:
    - Dst: DecodeDate
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1965,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1973,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1987,1
    - Dst: DecodeTimezone
      Src: /src/postgres/src/backend/utils/adt/datetime.c:1991,1
    - Dst: DecodeNumberField
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2000,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2000,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2008,1
    - Dst: pg_tzset
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2012,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2020,1
    - Dst: DecodeTime
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2037,1
    - Dst: DecodeTimezone
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2051,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2055,1
    - Dst: strtoint
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2070,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2085,1
    - Dst: ParseFraction
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2092,1
    - Dst: dt2time
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2096,1
    - Dst: DecodeNumberField
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2105,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2105,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2130,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2131,1
    - Dst: DecodeDate
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2142,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2148,1
    - Dst: DecodeNumberField
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2155,1
    - Dst: DecodeNumberField
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2168,1
    - Dst: DecodeNumber
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2179,1
    - Dst: DecodeTimezoneAbbrev
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2193,1
    - Dst: DecodeSpecial
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2198,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2202,1
    - Dst: GetCurrentTimeUsec
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2211,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2215,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2235,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2248,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2265,1
    - Dst: pg_tzset
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2304,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2308,1
    - Dst: ValidateDate
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2330,1
    - Dst: time_overflows
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2343,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2358,1
    - Dst: pg_get_timezone_offset
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2362,1
    - Dst: DetermineTimeZoneOffset
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2371,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2386,1
    - Dst: GetCurrentDateTime
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2390,1
    - Dst: DetermineTimeZoneAbbrevOffset
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2403,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2408,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2416,1
    - Dst: GetCurrentDateTime
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2420,1
    - Dst: DetermineTimeZoneOffset
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2433,1
    CyclomaticComplexity: 98
    EdgeCount: 98
    ICount: 289
    argCount: 8
    argNames:
    - field
    - ftype
    - nf
    - dtype
    - tm
    - fsec
    - tzp
    - extra
    argTypes:
    - char**
    - int*
    - int
    - int*
    - struct pg_tm*
    - fsec_t*
    - int*
    - DateTimeErrorExtra*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2438
      start: 1916
    functionDepth: 4
    functionLinenumber: 1916
    functionLinenumberEnd: 2438
    functionName: DecodeTimeOnly
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 2
    functionsReached:
    - DecodeSpecial
    - DecodeTimezone
    - DecodeTimezoneAbbrev
    - DTK_M
    - strlen
    - DecodeTime
    - pg_tzset
    - GetCurrentDateTime
    - DetermineTimeZoneAbbrevOffset
    - dt2time
    - isdigit
    - DecodeNumber
    - strchr
    - DecodeNumberField
    - time_overflows
    - j2date
    - GetCurrentTimeUsec
    - ValidateDate
    - pg_get_timezone_offset
    - DetermineTimeZoneOffset
    - ParseFraction
    - DecodeDate
    - strtoint
    linkageType: ''
    returnType: int
    signature: "int DecodeTimeOnly(char **field, int *ftype, int nf,\n\t\t\t   int
      *dtype, struct pg_tm *tm, fsec_t *fsec, int *tzp,\n\t\t\t   DateTimeErrorExtra
      *extra)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: isalnum
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2471,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2478,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2480,1
    - Dst: isalpha
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2483,1
    - Dst: isalpha
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2485,1
    - Dst: isalpha
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2498,1
    - Dst: DecodeSpecial
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2500,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2504,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2532,1
    - Dst: DecodeNumber
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2535,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2548,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2548,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 57
    argCount: 5
    argNames:
    - str
    - fmask
    - tmask
    - is2digits
    - tm
    argTypes:
    - char*
    - int
    - int*
    - bool*
    - struct pg_tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2554
      start: 2450
    functionDepth: 0
    functionLinenumber: 2450
    functionLinenumberEnd: 2554
    functionName: DecodeDate
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 3
    functionsReached:
    - DecodeSpecial
    - isalpha
    - isdigit
    - DecodeNumber
    - isalnum
    - DTK_M
    - strlen
    linkageType: ''
    returnType: int
    signature: "int DecodeDate(char *str, int fmask, int *tmask, bool *is2digits,\n\t\t
      \  struct pg_tm *tm)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2564,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2597,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2599,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2599,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2604,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2611,1
    - Dst: isleap
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2624,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 37
    argCount: 5
    argNames:
    - fmask
    - isjulian
    - is2digits
    - bc
    - tm
    argTypes:
    - int
    - bool
    - bool
    - bool
    - struct pg_tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2629
      start: 2560
    functionDepth: 0
    functionLinenumber: 2560
    functionLinenumberEnd: 2629
    functionName: ValidateDate
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 4
    functionsReached:
    - isleap
    - j2date
    - DTK_M
    - date2j
    linkageType: ''
    returnType: int
    signature: "int ValidateDate(int fmask, bool isjulian, bool is2digits, bool bc,\n\t\t\t
      struct pg_tm *tm)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: strtoi64
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2653,1
    - Dst: strtoint
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2659,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2666,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2666,1
    - Dst: ParseFractionalSecond
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2678,1
    - Dst: strtoint
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2690,1
    - Dst: ParseFractionalSecond
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2695,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 50
    argCount: 5
    argNames:
    - str
    - fmask
    - range
    - tmask
    - itm
    argTypes:
    - char*
    - int
    - int
    - int*
    - struct pg_itm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2715
      start: 2642
    functionDepth: 3
    functionLinenumber: 2642
    functionLinenumberEnd: 2715
    functionName: DecodeTimeCommon
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - ParseFractionalSecond
    - strtoi64
    - INTERVAL_MASK
    - strtoint
    linkageType: ''
    returnType: int
    signature: "int DecodeTimeCommon(char *str, int fmask, int range,\n\t\t\t\t int
      *tmask, struct pg_itm *itm)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DecodeTimeCommon
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2731,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 6
    argNames:
    - str
    - fmask
    - range
    - tmask
    - tm
    - fsec
    argTypes:
    - char*
    - int
    - int
    - int*
    - struct pg_tm*
    - fsec_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2744
      start: 2724
    functionDepth: 4
    functionLinenumber: 2724
    functionLinenumberEnd: 2744
    functionName: DecodeTime
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 4
    functionsReached:
    - DecodeTimeCommon
    linkageType: ''
    returnType: int
    signature: "int DecodeTime(char *str, int fmask, int range,\n\t\t   int *tmask,
      struct pg_tm *tm, fsec_t *fsec)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DecodeTimeCommon
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2760,1
    - Dst: int64_multiply_add
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2766,1
    - Dst: int64_multiply_add
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2767,1
    - Dst: int64_multiply_add
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2768,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 5
    argNames:
    - str
    - fmask
    - range
    - tmask
    - itm_in
    argTypes:
    - char*
    - int
    - int
    - int*
    - struct pg_itm_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2772
      start: 2753
    functionDepth: 4
    functionLinenumber: 2753
    functionLinenumberEnd: 2772
    functionName: DecodeTimeForInterval
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - DecodeTimeCommon
    - int64_multiply_add
    linkageType: ''
    returnType: int
    signature: "int DecodeTimeForInterval(char *str, int fmask, int range,\n\t\t\t\t\t
      \ int *tmask, struct pg_itm_in *itm_in)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: strtoint
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2790,1
    - Dst: DecodeNumberField
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2804,1
    - Dst: ParseFractionalSecond
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2813,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2821,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2824,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2824,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2824,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2844,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2849,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2854,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2859,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2861,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2865,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2877,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2882,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2889,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2894,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2894,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2901,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2908,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2915,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2920,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2922,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2926,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2926,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2928,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2932,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2932,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2932,1
    - Dst: DecodeNumberField
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2934,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2950,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 93
    argCount: 8
    argNames:
    - flen
    - str
    - haveTextMonth
    - fmask
    - tmask
    - tm
    - fsec
    - is2digits
    argTypes:
    - int
    - char*
    - bool
    - int
    - int*
    - struct pg_tm*
    - fsec_t*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2954
      start: 2779
    functionDepth: 3
    functionLinenumber: 2779
    functionLinenumberEnd: 2954
    functionName: DecodeNumber
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 5
    functionsReached:
    - DTK_M
    - ParseFractionalSecond
    - DecodeNumberField
    - strtoint
    linkageType: ''
    returnType: int
    signature: "int DecodeNumber(int flen, char *str, bool haveTextMonth, int fmask,\n\t\t\t
      int *tmask, struct pg_tm *tm, fsec_t *fsec, bool *is2digits)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strspn
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2977,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2984,1
    - Dst: ParseFractionalSecond
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2989,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:2994,1
    - Dst: atoi
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3007,1
    - Dst: atoi
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3009,1
    - Dst: atoi
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3011,1
    - Dst: atoi
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3026,1
    - Dst: atoi
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3028,1
    - Dst: atoi
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3030,1
    - Dst: atoi
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3039,1
    - Dst: atoi
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3041,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 43
    argCount: 7
    argNames:
    - len
    - str
    - fmask
    - tmask
    - tm
    - fsec
    - is2digits
    argTypes:
    - int
    - char*
    - int
    - int*
    - struct pg_tm*
    - fsec_t*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3048
      start: 2964
    functionDepth: 3
    functionLinenumber: 2964
    functionLinenumberEnd: 3048
    functionName: DecodeNumberField
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 5
    functionsReached:
    - strspn
    - atoi
    - ParseFractionalSecond
    - strlen
    - strchr
    linkageType: ''
    returnType: int
    signature: "int DecodeNumberField(int len, char *str, int fmask,\n\t\t\t\t  int
      *tmask, struct pg_tm *tm, fsec_t *fsec, bool *is2digits)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: strtoint
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3070,1
    - Dst: strtoint
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3078,1
    - Dst: strtoint
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3084,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3090,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 37
    argCount: 2
    argNames:
    - str
    - tzp
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3117
      start: 3056
    functionDepth: 1
    functionLinenumber: 3056
    functionLinenumberEnd: 3117
    functionName: DecodeTimezone
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 6
    functionsReached:
    - strlen
    - strtoint
    linkageType: ''
    returnType: int
    signature: int DecodeTimezone(const char *str, int *tzp)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3155,1
    - Dst: TimeZoneAbbrevIsKnown
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3169,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3177,1
    - Dst: datebsearch
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3186,1
    - Dst: FetchDynamicTimeZone
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3203,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3214,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 41
    argCount: 6
    argNames:
    - field
    - lowtoken
    - ftype
    - offset
    - tz
    - extra
    argTypes:
    - int
    - char*
    - int*
    - int*
    - pg_tz**
    - DateTimeErrorExtra*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3221
      start: 3140
    functionDepth: 3
    functionLinenumber: 3140
    functionLinenumberEnd: 3221
    functionName: DecodeTimezoneAbbrev
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 2
    functionsReached:
    - datebsearch
    - FetchDynamicTimeZone
    - strlcpy
    - strncmp
    - TimeZoneAbbrevIsKnown
    linkageType: ''
    returnType: int
    signature: "int DecodeTimezoneAbbrev(int field, const char *lowtoken,\n\t\t\t\t\t
      int *ftype, int *offset, pg_tz **tz,\n\t\t\t\t\t DateTimeErrorExtra *extra)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3230
      start: 3226
    functionDepth: 0
    functionLinenumber: 3226
    functionLinenumberEnd: 3230
    functionName: ClearTimeZoneAbbrevCache
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void ClearTimeZoneAbbrevCache(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3253,1
    - Dst: datebsearch
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3255,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - field
    - lowtoken
    - val
    argTypes:
    - int
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3270
      start: 3245
    functionDepth: 0
    functionLinenumber: 3245
    functionLinenumberEnd: 3270
    functionName: DecodeSpecial
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 12
    functionsReached:
    - datebsearch
    - strncmp
    linkageType: ''
    returnType: int
    signature: int DecodeSpecial(int field, const char *lowtoken, int *val)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: downcase_truncate_identifier
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3305,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3306,1
    - Dst: DecodeTimezoneAbbrev
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3309,1
    - Dst: DateTimeParseError
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3311,1
    - Dst: pg_tzset
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3326,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3328,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3329,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3330,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - tzname
    - offset
    - tz
    argTypes:
    - char*
    - int*
    - pg_tz**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3333
      start: 3287
    functionDepth: 4
    functionLinenumber: 3287
    functionLinenumberEnd: 3333
    functionName: DecodeTimezoneName
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 4
    functionsReached:
    - errmsg
    - DateTimeParseError
    - ereport
    - pg_tzset
    - downcase_truncate_identifier
    - DecodeTimezoneAbbrev
    - errcode
    - strlen
    linkageType: ''
    returnType: int
    signature: int DecodeTimezoneName(const char *tzname, int *offset, pg_tz **tz)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DecodeTimezoneName
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3348,1
    - Dst: pg_tzset_offset
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3351,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - tzname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3354
      start: 3342
    functionDepth: 5
    functionLinenumber: 3342
    functionLinenumberEnd: 3354
    functionName: DecodeTimezoneNameToTz
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 1
    functionsReached:
    - pg_tzset_offset
    - DecodeTimezoneName
    linkageType: ''
    returnType: pg_tz
    signature: 'pg_tz *

      DecodeTimezoneNameToTz(const char *tzname)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: isalpha
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3382,1
    - Dst: pg_tolower
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3384,1
    - Dst: TimeZoneAbbrevIsKnown
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3403,1
    - Dst: datebsearch
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3421,1
    - Dst: FetchDynamicTimeZone
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3430,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 3
    argNames:
    - str
    - offset
    - tz
    argTypes:
    - char*
    - int*
    - pg_tz**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3454
      start: 3370
    functionDepth: 3
    functionLinenumber: 3370
    functionLinenumberEnd: 3454
    functionName: DecodeTimezoneAbbrevPrefix
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - datebsearch
    - isalpha
    - FetchDynamicTimeZone
    - pg_tolower
    - TimeZoneAbbrevIsKnown
    linkageType: ''
    returnType: int
    signature: int DecodeTimezoneAbbrevPrefix(const char *str, int *offset, pg_tz
      **tz)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - itm_in
    argTypes:
    - struct pg_itm_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3468
      start: 3461
    functionDepth: 0
    functionLinenumber: 3461
    functionLinenumberEnd: 3468
    functionName: ClearPgItmIn
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ClearPgItmIn(struct pg_itm_in *itm_in)
  - BBCount: 86
    BranchProfiles: []
    Callsites:
    - Dst: ClearPgItmIn
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3504,1
    - Dst: DecodeTimeForInterval
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3542,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3560,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3566,1
    - Dst: DecodeTimeForInterval
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3567,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3606,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3609,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3610,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3610,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3613,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3616,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3617,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3617,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3620,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3621,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3621,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3622,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3622,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3622,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3625,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3626,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3626,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3627,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3627,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3627,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3628,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3628,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3628,1
    - Dst: INTERVAL_MASK
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3628,1
    - Dst: strtoi64
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3638,1
    - Dst: strtoint
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3647,1
    - Dst: pg_mul_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3655,1
    - Dst: pg_add_s64_overflow
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3657,1
    - Dst: ParseFraction
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3663,1
    - Dst: AdjustMicroseconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3688,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3690,1
    - Dst: AdjustMicroseconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3694,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3696,1
    - Dst: AdjustMicroseconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3700,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3708,1
    - Dst: AdjustMicroseconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3714,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3716,1
    - Dst: AdjustMicroseconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3720,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3722,1
    - Dst: AdjustDays
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3727,1
    - Dst: AdjustFractMicroseconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3728,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3730,1
    - Dst: AdjustDays
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3734,1
    - Dst: AdjustFractDays
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3735,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3737,1
    - Dst: AdjustMonths
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3741,1
    - Dst: AdjustFractDays
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3742,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3744,1
    - Dst: AdjustYears
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3748,1
    - Dst: AdjustFractYears
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3749,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3751,1
    - Dst: AdjustYears
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3755,1
    - Dst: AdjustFractYears
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3756,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3758,1
    - Dst: AdjustYears
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3762,1
    - Dst: AdjustFractYears
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3763,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3765,1
    - Dst: AdjustYears
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3769,1
    - Dst: AdjustFractYears
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3770,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3772,1
    - Dst: DecodeUnits
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3786,1
    - Dst: DecodeSpecial
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3788,1
    CyclomaticComplexity: 101
    EdgeCount: 101
    ICount: 230
    argCount: 6
    argNames:
    - field
    - ftype
    - nf
    - range
    - dtype
    - itm_in
    argTypes:
    - char**
    - int*
    - int
    - int
    - int*
    - struct pg_itm_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3871
      start: 3485
    functionDepth: 5
    functionLinenumber: 3485
    functionLinenumberEnd: 3871
    functionName: DecodeInterval
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 2
    functionsReached:
    - DecodeSpecial
    - AdjustYears
    - AdjustMicroseconds
    - pg_add_s64_overflow
    - pg_mul_s64_overflow
    - strtoi64
    - DTK_M
    - AdjustFractDays
    - AdjustFractYears
    - AdjustDays
    - AdjustMonths
    - strchr
    - AdjustFractMicroseconds
    - ClearPgItmIn
    - DecodeUnits
    - Assert
    - DecodeTimeForInterval
    - INTERVAL_MASK
    - ParseFraction
    - strtoint
    linkageType: ''
    returnType: int
    signature: "int DecodeInterval(char **field, int *ftype, int nf, int range,\n\t\t\t
      \  int *dtype, struct pg_itm_in *itm_in)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3898,1
    - Dst: strtod
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3901,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3906,1
    - Dst: floor
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3910,1
    - Dst: floor
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3912,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3915,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 15
    argCount: 4
    argNames:
    - str
    - endptr
    - ipart
    - fpart
    argTypes:
    - char*
    - char**
    - int64*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3917
      start: 3881
    functionDepth: 1
    functionLinenumber: 3881
    functionLinenumberEnd: 3917
    functionName: ParseISO8601Number
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 1
    functionsReached:
    - isnan
    - Assert
    - floor
    - isdigit
    - strtod
    linkageType: ''
    returnType: int
    signature: int ParseISO8601Number(char *str, char **endptr, int64 *ipart, double
      *fpart)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strspn
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3929,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - fieldstart
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3930
      start: 3923
    functionDepth: 0
    functionLinenumber: 3923
    functionLinenumberEnd: 3930
    functionName: ISO8601IntegerWidth
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 1
    functionsReached:
    - strspn
    linkageType: ''
    returnType: int
    signature: int ISO8601IntegerWidth(char *fieldstart)
  - BBCount: 54
    BranchProfiles: []
    Callsites:
    - Dst: ClearPgItmIn
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3958,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3960,1
    - Dst: ParseISO8601Number
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3981,1
    - Dst: AdjustYears
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3996,1
    - Dst: AdjustFractYears
      Src: /src/postgres/src/backend/utils/adt/datetime.c:3997,1
    - Dst: AdjustMonths
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4001,1
    - Dst: AdjustFractDays
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4002,1
    - Dst: AdjustDays
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4006,1
    - Dst: AdjustFractDays
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4007,1
    - Dst: AdjustDays
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4011,1
    - Dst: AdjustFractMicroseconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4012,1
    - Dst: ISO8601IntegerWidth
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4017,1
    - Dst: AdjustYears
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4019,1
    - Dst: AdjustMonths
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4020,1
    - Dst: AdjustDays
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4021,1
    - Dst: AdjustFractMicroseconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4022,1
    - Dst: AdjustYears
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4037,1
    - Dst: AdjustFractYears
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4038,1
    - Dst: ParseISO8601Number
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4049,1
    - Dst: AdjustMonths
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4052,1
    - Dst: AdjustFractDays
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4053,1
    - Dst: ParseISO8601Number
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4067,1
    - Dst: AdjustDays
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4070,1
    - Dst: AdjustFractMicroseconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4071,1
    - Dst: AdjustMicroseconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4092,1
    - Dst: AdjustMicroseconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4096,1
    - Dst: AdjustMicroseconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4100,1
    - Dst: ISO8601IntegerWidth
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4104,1
    - Dst: AdjustMicroseconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4106,1
    - Dst: AdjustMicroseconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4107,1
    - Dst: AdjustMicroseconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4108,1
    - Dst: AdjustFractMicroseconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4109,1
    - Dst: AdjustMicroseconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4120,1
    - Dst: ParseISO8601Number
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4125,1
    - Dst: AdjustMicroseconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4128,1
    - Dst: ParseISO8601Number
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4136,1
    - Dst: AdjustMicroseconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4139,1
    CyclomaticComplexity: 70
    EdgeCount: 70
    ICount: 142
    argCount: 3
    argNames:
    - str
    - dtype
    - itm_in
    argTypes:
    - char*
    - int*
    - struct pg_itm_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4155
      start: 3950
    functionDepth: 3
    functionLinenumber: 3950
    functionLinenumberEnd: 4155
    functionName: DecodeISO8601Interval
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 2
    functionsReached:
    - AdjustFractYears
    - AdjustDays
    - AdjustYears
    - AdjustMonths
    - AdjustFractMicroseconds
    - AdjustMicroseconds
    - ISO8601IntegerWidth
    - AdjustFractDays
    - ClearPgItmIn
    - ParseISO8601Number
    - strlen
    linkageType: ''
    returnType: int
    signature: "int DecodeISO8601Interval(char *str,\n\t\t\t\t\t  int *dtype, struct
      pg_itm_in *itm_in)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4176,1
    - Dst: datebsearch
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4178,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - field
    - lowtoken
    - val
    argTypes:
    - int
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4193
      start: 4168
    functionDepth: 0
    functionLinenumber: 4168
    functionLinenumberEnd: 4193
    functionName: DecodeUnits
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 11
    functionsReached:
    - datebsearch
    - strncmp
    linkageType: ''
    returnType: int
    signature: int DecodeUnits(int field, const char *lowtoken, int *val)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4221,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4222,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4223,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4228,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4229,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4230,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4232,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4235,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4236,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4237,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4241,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4242,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4243,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4247,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4248,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4249,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4253,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4254,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4255,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4257,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4262,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4263,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4264,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 5
    argNames:
    - dterr
    - extra
    - str
    - datatype
    - escontext
    argTypes:
    - int
    - DateTimeErrorExtra*
    - char*
    - char*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4268
      start: 4213
    functionDepth: 2
    functionLinenumber: 4213
    functionLinenumberEnd: 4268
    functionName: DateTimeParseError
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 7
    functionsReached:
    - errmsg
    - errhint
    - errsave
    - errdetail
    - errcode
    linkageType: ''
    returnType: void
    signature: "void DateTimeParseError(int dterr, DateTimeErrorExtra *extra,\n\t\t\t\t
      \  const char *str, const char *datatype,\n\t\t\t\t   Node *escontext)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4291,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - key
    - base
    - nel
    argTypes:
    - char*
    - datetkn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4302
      start: 4274
    functionDepth: 0
    functionLinenumber: 4274
    functionLinenumberEnd: 4302
    functionName: datebsearch
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 7
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: datetkn
    signature: 'datetkn *

      datebsearch(const char *key, const datetkn *base, int nel)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: abs
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4317,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4328,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4330,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4332,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4336,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4338,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4341,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 3
    argNames:
    - str
    - tz
    - style
    argTypes:
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4343
      start: 4310
    functionDepth: 1
    functionLinenumber: 4310
    functionLinenumberEnd: 4343
    functionName: EncodeTimezone
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - abs
    - pg_ultostr_zeropad
    linkageType: ''
    returnType: char
    signature: 'char *

      EncodeTimezone(char *str, int tz, int style)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4351,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4358,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4361,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4363,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4370,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4372,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4376,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4378,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4381,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4387,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4389,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4391,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4400,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4402,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4406,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4408,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4411,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4418,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 51
    argCount: 3
    argNames:
    - tm
    - style
    - str
    argTypes:
    - struct pg_tm*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4422
      start: 4348
    functionDepth: 1
    functionLinenumber: 4348
    functionLinenumberEnd: 4422
    functionName: EncodeDateOnly
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 4
    functionsReached:
    - memcpy
    - Assert
    - pg_ultostr_zeropad
    linkageType: ''
    returnType: void
    signature: void EncodeDateOnly(struct pg_tm *tm, int style, char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4436,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4438,1
    - Dst: AppendSeconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4440,1
    - Dst: EncodeTimezone
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4442,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 6
    argNames:
    - tm
    - fsec
    - print_tz
    - tz
    - style
    - str
    argTypes:
    - struct pg_tm*
    - fsec_t
    - bool
    - int
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4444
      start: 4433
    functionDepth: 2
    functionLinenumber: 4433
    functionLinenumberEnd: 4444
    functionName: EncodeTimeOnly
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 3
    functionsReached:
    - EncodeTimezone
    - AppendSeconds
    - pg_ultostr_zeropad
    linkageType: ''
    returnType: void
    signature: void EncodeTimeOnly(struct pg_tm *tm, fsec_t fsec, bool print_tz, int
      tz, int style, char *str)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4468,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4481,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4484,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4486,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4488,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4490,1
    - Dst: AppendTimestampSeconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4492,1
    - Dst: EncodeTimezone
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4494,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4501,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4503,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4507,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4509,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4512,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4515,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4517,1
    - Dst: AppendTimestampSeconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4519,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4531,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4532,1
    - Dst: EncodeTimezone
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4535,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4541,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4543,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4545,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4548,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4550,1
    - Dst: AppendTimestampSeconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4552,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4558,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4559,1
    - Dst: EncodeTimezone
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4562,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4569,1
    - Dst: j2day
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4570,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4571,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4576,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4578,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4583,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4586,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4589,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4591,1
    - Dst: AppendTimestampSeconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4593,1
    - Dst: pg_ultostr_zeropad
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4595,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4602,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4603,1
    - Dst: EncodeTimezone
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4614,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4622,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 109
    argCount: 7
    argNames:
    - tm
    - fsec
    - print_tz
    - tz
    - tzn
    - style
    - str
    argTypes:
    - struct pg_tm*
    - fsec_t
    - bool
    - int
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4626
      start: 4463
    functionDepth: 2
    functionLinenumber: 4463
    functionLinenumberEnd: 4626
    functionName: EncodeDateTime
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 7
    functionsReached:
    - Assert
    - AppendTimestampSeconds
    - pg_ultostr_zeropad
    - EncodeTimezone
    - date2j
    - j2day
    - memcpy
    - sprintf
    - strlen
    linkageType: ''
    returnType: void
    signature: void EncodeDateTime(struct pg_tm *tm, fsec_t fsec, bool print_tz, int
      tz, const char *tzn, int style, char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4639,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4640,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - cp
    - value
    - units
    argTypes:
    - char*
    - int64
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4641
      start: 4634
    functionDepth: 0
    functionLinenumber: 4634
    functionLinenumberEnd: 4641
    functionName: AddISO8601IntPart
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 1
    functionsReached:
    - sprintf
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      AddISO8601IntPart(char *cp, int64 value, char units)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4650,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4663,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 5
    argNames:
    - cp
    - value
    - units
    - is_zero
    - is_before
    argTypes:
    - char*
    - int64
    - char*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4664
      start: 4644
    functionDepth: 0
    functionLinenumber: 4644
    functionLinenumberEnd: 4664
    functionName: AddPostgresIntPart
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 1
    functionsReached:
    - sprintf
    - strlen
    linkageType: ''
    returnType: char
    signature: "char *\nAddPostgresIntPart(char *cp, int64 value, const char *units,\n\t\t\t\t
      \  bool *is_zero, bool *is_before)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i64abs
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4677,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4681,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4683,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 5
    argNames:
    - cp
    - value
    - units
    - is_zero
    - is_before
    argTypes:
    - char*
    - int64
    - char*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4684
      start: 4667
    functionDepth: 1
    functionLinenumber: 4667
    functionLinenumberEnd: 4684
    functionName: AddVerboseIntPart
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 1
    functionsReached:
    - sprintf
    - strlen
    - i64abs
    linkageType: ''
    returnType: char
    signature: "char *\nAddVerboseIntPart(char *cp, int64 value, const char *units,\n\t\t\t\t
      \ bool *is_zero, bool *is_before)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4762,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4776,1
    - Dst: abs
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4777,1
    - Dst: abs
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4777,1
    - Dst: i64abs
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4778,1
    - Dst: i64abs
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4779,1
    - Dst: abs
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4779,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4780,1
    - Dst: AppendSeconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4781,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4786,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4790,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4792,1
    - Dst: AppendSeconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4793,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4798,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4799,1
    - Dst: AppendSeconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4800,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4812,1
    - Dst: AddISO8601IntPart
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4816,1
    - Dst: AddISO8601IntPart
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4817,1
    - Dst: AddISO8601IntPart
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4818,1
    - Dst: AddISO8601IntPart
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4821,1
    - Dst: AddISO8601IntPart
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4822,1
    - Dst: AppendSeconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4827,1
    - Dst: AddPostgresIntPart
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4835,1
    - Dst: AddPostgresIntPart
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4842,1
    - Dst: AddPostgresIntPart
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4843,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4848,1
    - Dst: i64abs
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4851,1
    - Dst: abs
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4851,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4852,1
    - Dst: AppendSeconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4853,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4861,1
    - Dst: AddVerboseIntPart
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4863,1
    - Dst: AddVerboseIntPart
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4864,1
    - Dst: AddVerboseIntPart
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4865,1
    - Dst: AddVerboseIntPart
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4866,1
    - Dst: AddVerboseIntPart
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4867,1
    - Dst: AppendSeconds
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4880,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4882,1
    - Dst: abs
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4883,1
    - Dst: strcat
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4888,1
    - Dst: strcat
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4890,1
    CyclomaticComplexity: 71
    EdgeCount: 71
    ICount: 99
    argCount: 3
    argNames:
    - itm
    - style
    - str
    argTypes:
    - struct pg_itm*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4893
      start: 4706
    functionDepth: 1
    functionLinenumber: 4706
    functionLinenumberEnd: 4893
    functionName: EncodeInterval
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 2
    functionsReached:
    - strcat
    - AddISO8601IntPart
    - i64abs
    - AddPostgresIntPart
    - AddVerboseIntPart
    - AppendSeconds
    - abs
    - sprintf
    - strlen
    - strcpy
    linkageType: ''
    returnType: void
    signature: void EncodeInterval(struct pg_itm *itm, int style, char *str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4909,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4912,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4920,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4922,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - tablename
    - base
    - nel
    argTypes:
    - char*
    - datetkn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4930
      start: 4900
    functionDepth: 1
    functionLinenumber: 4900
    functionLinenumberEnd: 4930
    functionName: CheckDateTokenTable
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - strcmp
    - elog
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool CheckDateTokenTable(const char *tablename, const datetkn *base,
      int nel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4937,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4937,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4938,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4938,1
    - Dst: CheckDateTokenTable
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4940,1
    - Dst: CheckDateTokenTable
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4941,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4943
      start: 4932
    functionDepth: 2
    functionLinenumber: 4932
    functionLinenumberEnd: 4943
    functionName: CheckDateTokenTables
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - CheckDateTokenTable
    - Assert
    - date2j
    linkageType: ''
    returnType: bool
    signature: bool CheckDateTokenTables(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: castNode
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4964,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4968,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4968,1
    - Dst: lsecond
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4970,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4972,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4974,1
    - Dst: exprTypmod
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4975,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4976,1
    - Dst: relabel_to_typmod
      Src: /src/postgres/src/backend/utils/adt/datetime.c:4980,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 2
    argNames:
    - max_precis
    - node
    argTypes:
    - int32
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4984
      start: 4961
    functionDepth: 5
    functionLinenumber: 4961
    functionLinenumberEnd: 4984
    functionName: TemporalSimplify
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 2
    functionsReached:
    - Assert
    - relabel_to_typmod
    - linitial
    - exprTypmod
    - DatumGetInt32
    - IsA
    - lsecond
    - list_length
    - castNode
    linkageType: ''
    returnType: Node
    signature: 'Node *

      TemporalSimplify(int32 max_precis, Node *node)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5004,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5015,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5016,1
    - Dst: guc_malloc
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5021,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5031,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5038,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5047,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5054,1
    - Dst: MAXALIGN
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5055,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5065,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5068,1
    - Dst: CheckDateTokenTable
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5068,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 2
    argNames:
    - abbrevs
    - n
    argTypes:
    - struct tzEntry*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5071
      start: 4994
    functionDepth: 2
    functionLinenumber: 4994
    functionLinenumberEnd: 5071
    functionName: ConvertTimeZoneAbbrevs
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - Assert
    - CheckDateTokenTable
    - strlcpy
    - MAXALIGN
    - guc_malloc
    - strlen
    - strcpy
    linkageType: ''
    returnType: TimeZoneAbbrevTable
    signature: 'TimeZoneAbbrevTable *

      ConvertTimeZoneAbbrevs(struct tzEntry *abbrevs, int n)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5083,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tbl
    argTypes:
    - TimeZoneAbbrevTable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5084
      start: 5078
    functionDepth: 0
    functionLinenumber: 5078
    functionLinenumberEnd: 5084
    functionName: InstallTimeZoneAbbrevs
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void InstallTimeZoneAbbrevs(TimeZoneAbbrevTable *tbl)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5098,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5099,1
    - Dst: pg_tzset
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5106,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - tbl
    - tp
    - extra
    argTypes:
    - TimeZoneAbbrevTable*
    - datetkn*
    - DateTimeErrorExtra*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5115
      start: 5091
    functionDepth: 3
    functionLinenumber: 5091
    functionLinenumberEnd: 5115
    functionName: FetchDynamicTimeZone
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 2
    functionsReached:
    - Assert
    - pg_tzset
    linkageType: ''
    returnType: pg_tz
    signature: "pg_tz *\nFetchDynamicTimeZone(TimeZoneAbbrevTable *tbl, const datetkn
      *tp,\n\t\t\t\t\t DateTimeErrorExtra *extra)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentTransactionStartTimestamp
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5132,1
    - Dst: timestamptz_to_time_t
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5133,1
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5141,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5147,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5152,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5155,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5159,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5160,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5163,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5167,1
    - Dst: pg_get_next_timezone_abbrev
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5170,1
    - Dst: strspn
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5174,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5174,1
    - Dst: pg_interpret_timezone_abbrev
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5178,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5185,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5188,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5190,1
    - Dst: itmin2interval
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5191,1
    - Dst: IntervalPGetDatum
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5192,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5194,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5196,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5197,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5199,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5202,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5203
      start: 5123
    functionDepth: 5
    functionLinenumber: 5123
    functionLinenumberEnd: 5203
    functionName: pg_timezone_abbrevs_zone
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - strspn
    - HeapTupleGetDatum
    - MemoryContextSwitchTo
    - BoolGetDatum
    - GetCurrentTransactionStartTimestamp
    - SRF_FIRSTCALL_INIT
    - SRF_RETURN_DONE
    - SRF_RETURN_NEXT
    - strlen
    - itmin2interval
    - pg_get_next_timezone_abbrev
    - get_call_result_type
    - SRF_PERCALL_SETUP
    - heap_form_tuple
    - elog
    - MemSet
    - IntervalPGetDatum
    - SRF_IS_FIRSTCALL
    - palloc
    - CStringGetTextDatum
    - timestamptz_to_time_t
    - pg_interpret_timezone_abbrev
    linkageType: ''
    returnType: Datum
    signature: Datum pg_timezone_abbrevs_zone(PG_FUNCTION_ARGS)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5228,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5234,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5239,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5242,1
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5246,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5247,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5250,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5254,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5259,1
    - Dst: FetchDynamicTimeZone
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5281,1
    - Dst: DateTimeParseError
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5283,1
    - Dst: GetCurrentTransactionStartTimestamp
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5285,1
    - Dst: DetermineTimeZoneAbbrevOffsetTS
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5286,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5294,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5304,1
    - Dst: pg_toupper
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5306,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5308,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5311,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5313,1
    - Dst: itmin2interval
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5314,1
    - Dst: IntervalPGetDatum
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5315,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5317,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5321,1
    - Dst: HeapTupleGetDatum
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5322,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5324,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5325
      start: 5210
    functionDepth: 5
    functionLinenumber: 5210
    functionLinenumberEnd: 5325
    functionName: pg_timezone_abbrevs_abbrevs
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - HeapTupleGetDatum
    - MemoryContextSwitchTo
    - BoolGetDatum
    - GetCurrentTransactionStartTimestamp
    - SRF_FIRSTCALL_INIT
    - SRF_RETURN_DONE
    - SRF_RETURN_NEXT
    - itmin2interval
    - DetermineTimeZoneAbbrevOffsetTS
    - DateTimeParseError
    - get_call_result_type
    - SRF_PERCALL_SETUP
    - heap_form_tuple
    - elog
    - MemSet
    - strlcpy
    - IntervalPGetDatum
    - SRF_IS_FIRSTCALL
    - palloc
    - pg_toupper
    - CStringGetTextDatum
    - FetchDynamicTimeZone
    linkageType: ''
    returnType: Datum
    signature: Datum pg_timezone_abbrevs_abbrevs(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5346,1
    - Dst: pg_tzenumerate_start
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5349,1
    - Dst: pg_tzenumerate_next
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5354,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5359,1
    - Dst: GetCurrentTransactionStartTimestamp
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5359,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5372,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5375,1
    - Dst: pg_get_timezone_name
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5375,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5376,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5379,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5381,1
    - Dst: itmin2interval
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5382,1
    - Dst: IntervalPGetDatum
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5383,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5385,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5387,1
    - Dst: pg_tzenumerate_end
      Src: /src/postgres/src/backend/utils/adt/datetime.c:5390,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5392
      start: 5331
    functionDepth: 6
    functionLinenumber: 5331
    functionLinenumberEnd: 5392
    functionName: pg_timezone_names
    functionSourceFile: /src/postgres/src/backend/utils/adt/datetime.c
    functionUses: 0
    functionsReached:
    - pg_tzenumerate_next
    - itmin2interval
    - tuplestore_putvalues
    - pg_tzenumerate_end
    - CStringGetTextDatum
    - timestamp2tm
    - BoolGetDatum
    - IntervalPGetDatum
    - pg_get_timezone_name
    - InitMaterializedSRF
    - MemSet
    - GetCurrentTransactionStartTimestamp
    - pg_tzenumerate_start
    - palloc
    - strlen
    linkageType: ''
    returnType: Datum
    signature: Datum pg_timezone_names(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: 36
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 36
    functionName: half_rounded
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: half_rounded(x)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:81,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:86,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:90,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:92,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:93,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:96,1
    - Dst: stat
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:98,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:103,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:104,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:105,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:110,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 73
    functionDepth: 2
    functionLinenumber: 73
    functionLinenumberEnd: 112
    functionName: db_dir_size
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - errmsg
    - CHECK_FOR_INTERRUPTS
    - ReadDir
    - AllocateDir
    - stat
    - FreeDir
    - snprintf
    - ereport
    - strcmp
    - errcode_for_file_access
    linkageType: ''
    returnType: int64
    signature: int64 db_dir_size(const char *path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:131,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:131,1
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:133,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:133,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:135,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:136,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:142,1
    - Dst: db_dir_size
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:143,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:146,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:147,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:149,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:151,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:153,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:154,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:157,1
    - Dst: db_dir_size
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:159,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:162,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - dbOid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 117
    functionDepth: 9
    functionLinenumber: 117
    functionLinenumberEnd: 165
    functionName: calculate_database_size
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - db_dir_size
    - ReadDir
    - AllocateDir
    - aclcheck_error
    - CHECK_FOR_INTERRUPTS
    - FreeDir
    - snprintf
    - has_privs_of_role
    - get_database_name
    - strcmp
    - GetUserId
    - object_aclcheck
    linkageType: ''
    returnType: int64
    signature: int64 calculate_database_size(Oid dbOid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:170,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:177,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:177,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:178,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:179,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:180,1
    - Dst: calculate_database_size
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:182,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:185,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:187,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 167
    functionDepth: 10
    functionLinenumber: 167
    functionLinenumberEnd: 188
    functionName: pg_database_size_oid
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - errmsg
    - calculate_database_size
    - ObjectIdGetDatum
    - ereport
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - PG_RETURN_INT64
    - SearchSysCacheExists1
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum pg_database_size_oid(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:193,1
    - Dst: get_database_oid
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:194,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:194,1
    - Dst: calculate_database_size
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:197,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:200,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 190
    functionDepth: 10
    functionLinenumber: 190
    functionLinenumberEnd: 203
    functionName: pg_database_size_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - NameStr
    - get_database_oid
    - calculate_database_size
    - PG_GETARG_NAME
    - PG_RETURN_NULL
    - PG_RETURN_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum pg_database_size_name(PG_FUNCTION_ARGS)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: has_privs_of_role
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:226,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:226,1
    - Dst: object_aclcheck
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:228,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:228,1
    - Dst: aclcheck_error
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:230,1
    - Dst: get_tablespace_name
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:231,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:235,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:237,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:239,1
    - Dst: AllocateDir
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:242,1
    - Dst: ReadDir
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:247,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:251,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:253,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:254,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:257,1
    - Dst: stat
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:259,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:264,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:265,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:266,1
    - Dst: S_ISDIR
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:269,1
    - Dst: db_dir_size
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:270,1
    - Dst: FreeDir
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:275,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 30
    argCount: 1
    argNames:
    - tblspcOid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 210
    functionDepth: 9
    functionLinenumber: 210
    functionLinenumberEnd: 278
    functionName: calculate_tablespace_size
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - errmsg
    - get_tablespace_name
    - db_dir_size
    - ReadDir
    - AllocateDir
    - aclcheck_error
    - CHECK_FOR_INTERRUPTS
    - stat
    - FreeDir
    - snprintf
    - S_ISDIR
    - ereport
    - has_privs_of_role
    - strcmp
    - GetUserId
    - object_aclcheck
    - errcode_for_file_access
    linkageType: ''
    returnType: int64
    signature: int64 calculate_tablespace_size(Oid tblspcOid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:283,1
    - Dst: SearchSysCacheExists1
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:290,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:290,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:291,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:292,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:293,1
    - Dst: calculate_tablespace_size
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:295,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:298,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:300,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 280
    functionDepth: 10
    functionLinenumber: 280
    functionLinenumberEnd: 301
    functionName: pg_tablespace_size_oid
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ObjectIdGetDatum
    - calculate_tablespace_size
    - ereport
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - PG_RETURN_INT64
    - SearchSysCacheExists1
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum pg_tablespace_size_oid(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:306,1
    - Dst: get_tablespace_oid
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:307,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:307,1
    - Dst: calculate_tablespace_size
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:310,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:313,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:315,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 303
    functionDepth: 10
    functionLinenumber: 303
    functionLinenumberEnd: 316
    functionName: pg_tablespace_size_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - NameStr
    - calculate_tablespace_size
    - PG_GETARG_NAME
    - PG_RETURN_NULL
    - get_tablespace_oid
    - PG_RETURN_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum pg_tablespace_size_name(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: relpathbackend
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:333,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:339,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:342,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:345,1
    - Dst: stat
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:348,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:353,1
    - Dst: errcode_for_file_access
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:354,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:355,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - rfn
    - backend
    - forknum
    argTypes:
    - RelFileLocator*
    - ProcNumber
    - ForkNumber
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 325
    functionDepth: 2
    functionLinenumber: 325
    functionLinenumberEnd: 361
    functionName: calculate_relation_size
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - errmsg
    - CHECK_FOR_INTERRUPTS
    - relpathbackend
    - stat
    - snprintf
    - ereport
    - errcode_for_file_access
    linkageType: ''
    returnType: int64
    signature: int64 calculate_relation_size(RelFileLocator *rfn, ProcNumber backend,
      ForkNumber forknum)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:366,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:367,1
    - Dst: try_relation_open
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:371,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:381,1
    - Dst: calculate_relation_size
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:383,1
    - Dst: forkname_to_number
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:384,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:384,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:386,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:388,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 363
    functionDepth: 3
    functionLinenumber: 363
    functionLinenumberEnd: 389
    functionName: pg_relation_size
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - try_relation_open
    - forkname_to_number
    - PG_GETARG_TEXT_PP
    - relation_close
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - calculate_relation_size
    - PG_RETURN_INT64
    - text_to_cstring
    linkageType: ''
    returnType: Datum
    signature: Datum pg_relation_size(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: relation_open
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:404,1
    - Dst: calculate_relation_size
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:408,1
    - Dst: RelationGetIndexList
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:412,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:419,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:419,1
    - Dst: calculate_relation_size
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:422,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:425,1
    - Dst: list_free
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:427,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:428,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - toastrelid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 395
    functionDepth: 4
    functionLinenumber: 395
    functionLinenumberEnd: 431
    functionName: calculate_toast_table_size
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - RelationGetIndexList
    - relation_close
    - relation_open
    - calculate_relation_size
    - lfirst_oid
    - list_free
    linkageType: ''
    returnType: int64
    signature: int64 calculate_toast_table_size(Oid toastrelid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: relation_open
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:419,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:419,1
    - Dst: calculate_relation_size
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:422,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:425,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 415
    functionDepth: 3
    functionLinenumber: 415
    functionLinenumberEnd: 426
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 466
    functionsReached:
    - relation_close
    - lfirst_oid
    - relation_open
    - calculate_relation_size
    linkageType: ''
    returnType: void
    signature: void foreach(lc, indexlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calculate_relation_size
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:451,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:457,1
    - Dst: calculate_toast_table_size
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:458,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 441
    functionDepth: 5
    functionLinenumber: 441
    functionLinenumberEnd: 461
    functionName: calculate_table_size
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - calculate_toast_table_size
    - OidIsValid
    - calculate_relation_size
    linkageType: ''
    returnType: int64
    signature: int64 calculate_table_size(Relation rel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RelationGetIndexList
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:478,1
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:483,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:487,1
    - Dst: calculate_relation_size
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:490,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:494,1
    - Dst: list_free
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:497,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 468
    functionDepth: 4
    functionLinenumber: 468
    functionLinenumberEnd: 501
    functionName: calculate_indexes_size
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - RelationGetIndexList
    - relation_close
    - relation_open
    - calculate_relation_size
    - lfirst_oid
    - list_free
    linkageType: ''
    returnType: int64
    signature: int64 calculate_indexes_size(Relation rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst_oid
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:483,1
    - Dst: relation_open
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:487,1
    - Dst: calculate_relation_size
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:490,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:494,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 481
    functionDepth: 3
    functionLinenumber: 481
    functionLinenumberEnd: 495
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 466
    functionsReached:
    - relation_close
    - lfirst_oid
    - relation_open
    - calculate_relation_size
    linkageType: ''
    returnType: void
    signature: void foreach(cell, index_oids)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:506,1
    - Dst: try_relation_open
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:510,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:513,1
    - Dst: calculate_table_size
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:515,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:517,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:519,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 503
    functionDepth: 6
    functionLinenumber: 503
    functionLinenumberEnd: 520
    functionName: pg_table_size
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - try_relation_open
    - relation_close
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - PG_RETURN_INT64
    - calculate_table_size
    linkageType: ''
    returnType: Datum
    signature: Datum pg_table_size(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:525,1
    - Dst: try_relation_open
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:529,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:532,1
    - Dst: calculate_indexes_size
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:534,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:536,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:538,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 522
    functionDepth: 5
    functionLinenumber: 522
    functionLinenumberEnd: 539
    functionName: pg_indexes_size
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - try_relation_open
    - relation_close
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - calculate_indexes_size
    - PG_RETURN_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum pg_indexes_size(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calculate_table_size
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:554,1
    - Dst: calculate_indexes_size
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - rel
    argTypes:
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 545
    functionDepth: 6
    functionLinenumber: 545
    functionLinenumberEnd: 562
    functionName: calculate_total_relation_size
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - calculate_indexes_size
    - calculate_table_size
    linkageType: ''
    returnType: int64
    signature: int64 calculate_total_relation_size(Relation rel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:567,1
    - Dst: try_relation_open
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:571,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:574,1
    - Dst: calculate_total_relation_size
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:576,1
    - Dst: relation_close
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:578,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:580,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 564
    functionDepth: 7
    functionLinenumber: 564
    functionLinenumberEnd: 581
    functionName: pg_total_relation_size
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - try_relation_open
    - relation_close
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - calculate_total_relation_size
    - PG_RETURN_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum pg_total_relation_size(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:589,1
    - Dst: half_rounded
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:605,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:607,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:625,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:625,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 586
    functionDepth: 1
    functionLinenumber: 586
    functionLinenumberEnd: 626
    functionName: pg_size_pretty
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - half_rounded
    - PG_GETARG_INT64
    - snprintf
    - PG_RETURN_TEXT_P
    - cstring_to_text
    linkageType: ''
    returnType: Datum
    signature: Datum pg_size_pretty(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:631,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:633,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:633,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - n
    argTypes:
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 628
    functionDepth: 2
    functionLinenumber: 628
    functionLinenumberEnd: 634
    functionName: numeric_to_cstring
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - DirectFunctionCall1
    - NumericGetDatum
    - DatumGetCString
    linkageType: ''
    returnType: char
    signature: 'char *

      numeric_to_cstring(Numeric n)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:639,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:640,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:642,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:642,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - Numeric
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 636
    functionDepth: 2
    functionLinenumber: 636
    functionLinenumberEnd: 643
    functionName: numeric_is_less
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - DatumGetBool
    - NumericGetDatum
    - DirectFunctionCall2
    linkageType: ''
    returnType: bool
    signature: bool numeric_is_less(Numeric a, Numeric b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:648,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:651,1
    - Dst: DatumGetNumeric
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:652,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - n
    argTypes:
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 645
    functionDepth: 2
    functionLinenumber: 645
    functionLinenumberEnd: 653
    functionName: numeric_absolute
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - DirectFunctionCall1
    - NumericGetDatum
    - DatumGetNumeric
    linkageType: ''
    returnType: Numeric
    signature: Numeric numeric_absolute(Numeric n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:658,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:664,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:664,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:665,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:665,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:666,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:666,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:668,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:668,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:669,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:671,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:673,1
    - Dst: DatumGetNumeric
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:674,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - n
    argTypes:
    - Numeric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 655
    functionDepth: 2
    functionLinenumber: 655
    functionLinenumberEnd: 675
    functionName: numeric_half_rounded
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - DatumGetNumeric
    - NumericGetDatum
    - DirectFunctionCall2
    - int64_to_numeric
    - DatumGetBool
    linkageType: ''
    returnType: Numeric
    signature: Numeric numeric_half_rounded(Numeric n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:680,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:684,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:684,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:685,1
    - Dst: DatumGetNumeric
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:686,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - n
    - divisor
    argTypes:
    - Numeric
    - int64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 677
    functionDepth: 2
    functionLinenumber: 677
    functionLinenumberEnd: 687
    functionName: numeric_truncated_divide
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - DatumGetNumeric
    - NumericGetDatum
    - DirectFunctionCall2
    - int64_to_numeric
    linkageType: ''
    returnType: Numeric
    signature: Numeric numeric_truncated_divide(Numeric n, int64 divisor)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:692,1
    - Dst: numeric_is_less
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:702,1
    - Dst: numeric_absolute
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:702,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:703,1
    - Dst: numeric_half_rounded
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:706,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:708,1
    - Dst: numeric_to_cstring
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:708,1
    - Dst: numeric_truncated_divide
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:721,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:724,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:724,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 689
    functionDepth: 3
    functionLinenumber: 689
    functionLinenumberEnd: 725
    functionName: pg_size_pretty_numeric
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NUMERIC
    - numeric_truncated_divide
    - numeric_absolute
    - numeric_to_cstring
    - PG_RETURN_TEXT_P
    - int64_to_numeric
    - numeric_is_less
    - cstring_to_text
    - psprintf
    - numeric_half_rounded
    linkageType: ''
    returnType: Datum
    signature: Datum pg_size_pretty_numeric(PG_FUNCTION_ARGS)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:733,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:742,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:746,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:757,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:762,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:769,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:774,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:780,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:781,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:782,1
    - Dst: strtol
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:794,1
    - Dst: DatumGetNumeric
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:807,1
    - Dst: DirectFunctionCall3
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:807,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:808,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:809,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:810,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:816,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:826,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:828,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:837,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:846,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:856,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:857,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:858,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:858,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:859,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:860,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:868,1
    - Dst: DatumGetNumeric
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:870,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:870,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:871,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:872,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:876,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:876,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:877,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:879,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 64
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 880
      start: 730
    functionDepth: 2
    functionLinenumber: 730
    functionLinenumberEnd: 880
    functionName: pg_size_bytes
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - strtol
    - errhint
    - NumericGetDatum
    - DirectFunctionCall1
    - errdetail
    - text_to_cstring
    - Int32GetDatum
    - DatumGetNumeric
    - DatumGetInt64
    - CStringGetDatum
    - DirectFunctionCall2
    - PG_RETURN_INT64
    - errmsg
    - isdigit
    - DirectFunctionCall3
    - isspace
    - VARSIZE_ANY_EXHDR
    - pg_strcasecmp
    - ObjectIdGetDatum
    - PG_GETARG_TEXT_PP
    - ereport
    - int64_to_numeric
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum pg_size_bytes(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:899,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:904,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:904,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:905,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:906,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:907,1
    - Dst: RELKIND_HAS_STORAGE
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:909,1
    - Dst: RelationMapOidToFilenumber
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:914,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:923,1
    - Dst: RelFileNumberIsValid
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:925,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:926,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:928,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 896
    functionDepth: 1
    functionLinenumber: 896
    functionLinenumberEnd: 929
    functionName: pg_relation_filenode
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - RELKIND_HAS_STORAGE
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - RelFileNumberIsValid
    - SearchSysCache1
    - RelationMapOidToFilenumber
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - PG_RETURN_OID
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum pg_relation_filenode(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:947,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:948,1
    - Dst: RelFileNumberIsValid
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:952,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:953,1
    - Dst: RelidByRelfilenumber
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:955,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:957,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:958,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:960,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 944
    functionDepth: 1
    functionLinenumber: 944
    functionLinenumberEnd: 961
    functionName: pg_filenode_relation
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - RelidByRelfilenumber
    - RelFileNumberIsValid
    - PG_RETURN_OID
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - OidIsValid
    linkageType: ''
    returnType: Datum
    signature: Datum pg_filenode_relation(PG_FUNCTION_ARGS)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:971,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:978,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:978,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:979,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:980,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:981,1
    - Dst: RELKIND_HAS_STORAGE
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:983,1
    - Dst: RelationMapOidToFilenumber
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:997,1
    - Dst: RelFileNumberIsValid
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:1009,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:1011,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:1012,1
    - Dst: isTempOrTempToastNamespace
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:1023,1
    - Dst: ProcNumberForTempRelations
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:1024,1
    - Dst: GetTempNamespaceProcNumber
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:1028,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:1029,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:1033,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:1038,1
    - Dst: relpathbackend
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:1040,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:1042,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/dbsize.c:1042,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1043
      start: 968
    functionDepth: 2
    functionLinenumber: 968
    functionLinenumberEnd: 1043
    functionName: pg_relation_filepath
    functionSourceFile: /src/postgres/src/backend/utils/adt/dbsize.c
    functionUses: 0
    functionsReached:
    - Assert
    - ProcNumberForTempRelations
    - RELKIND_HAS_STORAGE
    - ReleaseSysCache
    - relpathbackend
    - HeapTupleIsValid
    - GETSTRUCT
    - RelFileNumberIsValid
    - SearchSysCache1
    - RelationMapOidToFilenumber
    - PG_GETARG_OID
    - PG_RETURN_NULL
    - isTempOrTempToastNamespace
    - elog
    - PG_RETURN_TEXT_P
    - GetTempNamespaceProcNumber
    - cstring_to_text
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum pg_relation_filepath(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:48,1
    - Dst: range_get_typcache
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:52,1
    - Dst: getBaseType
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:52,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 63
    functionName: range_typanalyze
    functionSourceFile: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - range_get_typcache
    - PG_RETURN_BOOL
    - getBaseType
    linkageType: ''
    returnType: Datum
    signature: Datum range_typanalyze(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:74,1
    - Dst: multirange_get_typcache
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:78,1
    - Dst: getBaseType
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:78,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 89
    functionName: multirange_typanalyze
    functionSourceFile: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - multirange_get_typcache
    - PG_RETURN_BOOL
    - getBaseType
    linkageType: ''
    returnType: Datum
    signature: Datum multirange_typanalyze(PG_FUNCTION_ARGS)
  - 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: 106
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 106
    functionName: float8_qsort_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int float8_qsort_cmp(const void *a1, const void *a2, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: range_cmp_bounds
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - a1
    - a2
    - arg
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 119
    functionName: range_bound_qsort_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c
    functionUses: 0
    functionsReached:
    - range_cmp_bounds
    linkageType: ''
    returnType: int
    signature: int range_bound_qsort_cmp(const void *a1, const void *a2, void *arg)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:150,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:151,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:154,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:155,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:156,1
    - Dst: vacuum_delay_point
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:170,1
    - Dst: fetchfunc
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:172,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:184,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:184,1
    - Dst: DatumGetMultirangeTypeP
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:190,1
    - Dst: MultirangeIsEmpty
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:191,1
    - Dst: multirange_get_bounds
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:195,1
    - Dst: multirange_get_bounds
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:197,1
    - Dst: DatumGetRangeTypeP
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:209,1
    - Dst: range_deserialize
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:210,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:222,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:230,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:230,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:273,1
    - Dst: qsort_interruptible
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:282,1
    - Dst: qsort_interruptible
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:284,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:291,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:310,1
    - Dst: range_serialize
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:310,1
    - Dst: qsort_interruptible
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:348,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:355,1
    - Dst: Float8GetDatum
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:372,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:391,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:404,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c:412,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 127
    argCount: 4
    argNames:
    - stats
    - fetchfunc
    - samplerows
    - totalrows
    argTypes:
    - VacAttrStats*
    - AnalyzeAttrFetchFunc
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 124
    functionDepth: 3
    functionLinenumber: 124
    functionLinenumberEnd: 427
    functionName: compute_range_stats
    functionSourceFile: /src/postgres/src/backend/utils/adt/rangetypes_typanalyze.c
    functionUses: 0
    functionsReached:
    - fetchfunc
    - VARSIZE_ANY
    - MemoryContextSwitchTo
    - MultirangeIsEmpty
    - vacuum_delay_point
    - Float8GetDatum
    - range_serialize
    - qsort_interruptible
    - multirange_get_bounds
    - DatumGetPointer
    - DatumGetMultirangeTypeP
    - get_float8_infinity
    - DatumGetFloat8
    - FunctionCall2Coll
    - OidIsValid
    - palloc
    - Assert
    - PointerGetDatum
    - DatumGetRangeTypeP
    - range_deserialize
    linkageType: ''
    returnType: void
    signature: "void compute_range_stats(VacAttrStats *stats, AnalyzeAttrFetchFunc
      fetchfunc,\n\t\t\t\t\tint samplerows, double totalrows)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - entries
    - preallocated
    argTypes:
    - GinEntries*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 168
    functionName: init_gin_entries
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 0
    functionsReached:
    - palloc
    linkageType: ''
    returnType: void
    signature: void init_gin_entries(GinEntries *entries, int preallocated)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:181,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:187,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - entries
    - entry
    argTypes:
    - GinEntries*
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 194
    functionName: add_gin_entry
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 0
    functionsReached:
    - repalloc
    - palloc
    linkageType: ''
    returnType: int
    signature: int add_gin_entry(GinEntries *entries, Datum entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:205,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:206,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:213,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:214,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:216,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:217,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:220,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:222,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:223,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 226
    functionName: gin_compare_jsonb
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_FREE_IF_COPY
    - varstr_cmp
    - PG_GETARG_TEXT_PP
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    linkageType: ''
    returnType: Datum
    signature: Datum gin_compare_jsonb(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:231,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:232,1
    - Dst: JB_ROOT_COUNT
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:233,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:243,1
    - Dst: init_gin_entries
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:247,1
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:249,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:251,1
    - Dst: add_gin_entry
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:256,1
    - Dst: make_scalar_key
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:256,1
    - Dst: add_gin_entry
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:260,1
    - Dst: make_scalar_key
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:260,1
    - Dst: add_gin_entry
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:263,1
    - Dst: make_scalar_key
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:263,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:273,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 274
    functionName: gin_extract_jsonb
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 0
    functionsReached:
    - JB_ROOT_COUNT
    - init_gin_entries
    - PG_GETARG_POINTER
    - PG_GETARG_JSONB_P
    - JsonbIteratorInit
    - JsonbIteratorNext
    - add_gin_entry
    - make_scalar_key
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum gin_extract_jsonb(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: jspGetString
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:292,1
    - Dst: make_text_key
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:294,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:302,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:310,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 2
    argNames:
    - path
    - jsp
    argTypes:
    - JsonPathGinPath*
    - JsonPathItem*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 277
    functionDepth: 1
    functionLinenumber: 277
    functionLinenumberEnd: 319
    functionName: jsonb_ops__add_path_item
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 0
    functionsReached:
    - jspGetString
    - palloc
    - make_text_key
    - PointerGetDatum
    linkageType: ''
    returnType: bool
    signature: bool jsonb_ops__add_path_item(JsonPathGinPath *path, JsonPathItem *jsp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: jspGetString
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:336,1
    - Dst: JsonbHashScalarValue
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:338,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 2
    argNames:
    - path
    - jsp
    argTypes:
    - JsonPathGinPath*
    - JsonPathItem*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 322
    functionDepth: 1
    functionLinenumber: 322
    functionLinenumberEnd: 350
    functionName: jsonb_path_ops__add_path_item
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 0
    functionsReached:
    - jspGetString
    - JsonbHashScalarValue
    linkageType: ''
    returnType: bool
    signature: bool jsonb_path_ops__add_path_item(JsonPathGinPath *path, JsonPathItem
      *jsp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - entry
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 352
    functionDepth: 0
    functionLinenumber: 352
    functionLinenumberEnd: 361
    functionName: make_jsp_entry_node
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 0
    functionsReached:
    - palloc
    linkageType: ''
    returnType: JsonPathGinNode
    signature: 'JsonPathGinNode *

      make_jsp_entry_node(Datum entry)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_jsp_entry_node
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:366,1
    - Dst: make_scalar_key
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - scalar
    - iskey
    argTypes:
    - JsonbValue*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 363
    functionDepth: 1
    functionLinenumber: 363
    functionLinenumberEnd: 367
    functionName: make_jsp_entry_node_scalar
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 0
    functionsReached:
    - make_jsp_entry_node
    - make_scalar_key
    linkageType: ''
    returnType: JsonPathGinNode
    signature: 'JsonPathGinNode *

      make_jsp_entry_node_scalar(JsonbValue *scalar, bool iskey)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - type
    - nargs
    argTypes:
    - JsonPathGinNodeType
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 379
    functionName: make_jsp_expr_node
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 0
    functionsReached:
    - palloc
    linkageType: ''
    returnType: JsonPathGinNode
    signature: 'JsonPathGinNode *

      make_jsp_expr_node(JsonPathGinNodeType type, int nargs)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_jsp_expr_node
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:384,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:384,1
    - Dst: foreach
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:388,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:389,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - type
    - args
    argTypes:
    - JsonPathGinNodeType
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 392
    functionName: make_jsp_expr_node_args
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 0
    functionsReached:
    - lfirst
    - make_jsp_expr_node
    - foreach
    - list_length
    linkageType: ''
    returnType: JsonPathGinNode
    signature: 'JsonPathGinNode *

      make_jsp_expr_node_args(JsonPathGinNodeType type, List *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_jsp_expr_node
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - type
    - arg1
    - arg2
    argTypes:
    - JsonPathGinNodeType
    - JsonPathGinNode*
    - JsonPathGinNode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 394
    functionDepth: 1
    functionLinenumber: 394
    functionLinenumberEnd: 404
    functionName: make_jsp_expr_node_binary
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 0
    functionsReached:
    - make_jsp_expr_node
    linkageType: ''
    returnType: JsonPathGinNode
    signature: "JsonPathGinNode *\nmake_jsp_expr_node_binary(JsonPathGinNodeType type,\n\t\t\t\t\t\t
      \ JsonPathGinNode *arg1, JsonPathGinNode *arg2)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:424,1
    - Dst: make_jsp_entry_node
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:424,1
    - Dst: make_jsp_entry_node_scalar
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:454,1
    - Dst: make_jsp_entry_node_scalar
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:455,1
    - Dst: make_jsp_expr_node_binary
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:457,1
    - Dst: make_jsp_entry_node_scalar
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:461,1
    - Dst: make_jsp_entry_node_scalar
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:467,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:470,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 4
    argNames:
    - cxt
    - path
    - scalar
    - nodes
    argTypes:
    - JsonPathGinContext*
    - JsonPathGinPath
    - JsonbValue*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 407
    functionDepth: 6
    functionLinenumber: 407
    functionLinenumberEnd: 474
    functionName: jsonb_ops__extract_nodes
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 0
    functionsReached:
    - make_jsp_entry_node_scalar
    - make_jsp_expr_node_binary
    - lappend
    - make_jsp_entry_node
    linkageType: ''
    returnType: List
    signature: "List *\njsonb_ops__extract_nodes(JsonPathGinContext *cxt, JsonPathGinPath
      path,\n\t\t\t\t\t\t JsonbValue *scalar, List *nodes)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: JsonbHashScalarValue
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:486,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:488,1
    - Dst: make_jsp_entry_node
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:489,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:489,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - cxt
    - path
    - scalar
    - nodes
    argTypes:
    - JsonPathGinContext*
    - JsonPathGinPath
    - JsonbValue*
    - List*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 477
    functionDepth: 6
    functionLinenumber: 477
    functionLinenumberEnd: 496
    functionName: jsonb_path_ops__extract_nodes
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 0
    functionsReached:
    - UInt32GetDatum
    - lappend
    - make_jsp_entry_node
    - JsonbHashScalarValue
    linkageType: ''
    returnType: List
    signature: "List *\njsonb_path_ops__extract_nodes(JsonPathGinContext *cxt, JsonPathGinPath
      path,\n\t\t\t\t\t\t\t  JsonbValue *scalar, List *nodes)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: jspGetArg
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:522,1
    - Dst: extract_jsp_bool_expr
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:524,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:527,1
    - Dst: JsonPathGinContext*::add_path_item
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:533,1
    - Dst: jspGetNext
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:543,1
    - Dst: JsonPathGinContext*::extract_nodes
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:553,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 4
    argNames:
    - cxt
    - path
    - jsp
    - scalar
    argTypes:
    - JsonPathGinContext*
    - JsonPathGinPath
    - JsonPathItem*
    - JsonbValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 503
    functionDepth: 6
    functionLinenumber: 503
    functionLinenumberEnd: 554
    functionName: extract_jsp_path_expr_nodes
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 0
    functionsReached:
    - extract_jsp_bool_expr
    - jspGetArg
    - lappend
    - jspGetNext
    - JsonPathGinContext*::add_path_item
    - JsonPathGinContext*::extract_nodes
    linkageType: ''
    returnType: List
    signature: "List *\nextract_jsp_path_expr_nodes(JsonPathGinContext *cxt, JsonPathGinPath
      path,\n\t\t\t\t\t\t\tJsonPathItem *jsp, JsonbValue *scalar)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: extract_jsp_path_expr_nodes
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:568,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:574,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:575,1
    - Dst: make_jsp_expr_node_args
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:578,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - cxt
    - path
    - jsp
    - scalar
    argTypes:
    - JsonPathGinContext*
    - JsonPathGinPath
    - JsonPathItem*
    - JsonbValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 563
    functionDepth: 7
    functionLinenumber: 563
    functionLinenumberEnd: 579
    functionName: extract_jsp_path_expr
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 0
    functionsReached:
    - linitial
    - extract_jsp_path_expr_nodes
    - make_jsp_expr_node_args
    - list_length
    linkageType: ''
    returnType: JsonPathGinNode
    signature: "JsonPathGinNode *\nextract_jsp_path_expr(JsonPathGinContext *cxt,
      JsonPathGinPath path,\n\t\t\t\t\t  JsonPathItem *jsp, JsonbValue *scalar)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:586,1
    - Dst: jspGetLeftArg
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:598,1
    - Dst: extract_jsp_bool_expr
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:599,1
    - Dst: jspGetRightArg
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:601,1
    - Dst: extract_jsp_bool_expr
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:602,1
    - Dst: make_jsp_expr_node_binary
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:614,1
    - Dst: jspGetArg
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:621,1
    - Dst: extract_jsp_bool_expr
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:624,1
    - Dst: jspGetArg
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:634,1
    - Dst: extract_jsp_path_expr
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:636,1
    - Dst: jspGetLeftArg
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:667,1
    - Dst: jspGetRightArg
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:668,1
    - Dst: jspIsScalar
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:670,1
    - Dst: jspIsScalar
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:675,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:704,1
    - Dst: extract_jsp_path_expr
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:709,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 69
    argCount: 4
    argNames:
    - cxt
    - path
    - jsp
    - not
    argTypes:
    - JsonPathGinContext*
    - JsonPathGinPath
    - JsonPathItem*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 582
    functionDepth: 8
    functionLinenumber: 582
    functionLinenumberEnd: 715
    functionName: extract_jsp_bool_expr
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 2
    functionsReached:
    - check_stack_depth
    - extract_jsp_bool_expr
    - make_jsp_expr_node_binary
    - jspGetArg
    - extract_jsp_path_expr
    - jspGetRightArg
    - elog
    - jspIsScalar
    - jspGetLeftArg
    linkageType: ''
    returnType: JsonPathGinNode
    signature: "JsonPathGinNode *\nextract_jsp_bool_expr(JsonPathGinContext *cxt,
      JsonPathGinPath path,\n\t\t\t\t\t  JsonPathItem *jsp, bool not)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:721,1
    - Dst: add_gin_entry
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:727,1
    - Dst: emit_jsp_gin_entries
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:736,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - node
    - entries
    argTypes:
    - JsonPathGinNode*
    - GinEntries*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 718
    functionDepth: 1
    functionLinenumber: 718
    functionLinenumberEnd: 741
    functionName: emit_jsp_gin_entries
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 1
    functionsReached:
    - check_stack_depth
    - emit_jsp_gin_entries
    - add_gin_entry
    linkageType: ''
    returnType: void
    signature: void emit_jsp_gin_entries(JsonPathGinNode *node, GinEntries *entries)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: jspInit
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:770,1
    - Dst: extract_jsp_path_expr
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:773,1
    - Dst: extract_jsp_bool_expr
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:774,1
    - Dst: emit_jsp_gin_entries
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:782,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:788,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 5
    argNames:
    - jp
    - strat
    - pathOps
    - nentries
    - extra_data
    argTypes:
    - JsonPath*
    - StrategyNumber
    - bool
    - int32*
    - Pointer**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 747
    functionDepth: 9
    functionLinenumber: 747
    functionLinenumberEnd: 792
    functionName: extract_jsp_query
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 0
    functionsReached:
    - extract_jsp_bool_expr
    - extract_jsp_path_expr
    - palloc0
    - emit_jsp_gin_entries
    - jspInit
    linkageType: ''
    returnType: Datum
    signature: "Datum *\nextract_jsp_query(JsonPath *jp, StrategyNumber strat, bool
      pathOps,\n\t\t\t\t  int32 *nentries, Pointer **extra_data)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: execute_jsp_gin_node
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:811,1
    - Dst: execute_jsp_gin_node
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:823,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:842,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 3
    argNames:
    - node
    - check
    - ternary
    argTypes:
    - JsonPathGinNode*
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 798
    functionDepth: 1
    functionLinenumber: 798
    functionLinenumberEnd: 845
    functionName: execute_jsp_gin_node
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 1
    functionsReached:
    - elog
    - execute_jsp_gin_node
    linkageType: ''
    returnType: GinTernaryValue
    signature: GinTernaryValue execute_jsp_gin_node(JsonPathGinNode *node, void *check,
      bool ternary)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:850,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:851,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:852,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:859,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:859,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:860,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:861,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:869,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:872,1
    - Dst: make_text_key
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:873,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:874,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:875,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:881,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:888,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:890,1
    - Dst: make_text_key
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:898,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:899,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:900,1
    - Dst: PG_GETARG_JSONPATH_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:911,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:912,1
    - Dst: extract_jsp_query
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:914,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:921,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:925,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 847
    functionDepth: 10
    functionLinenumber: 847
    functionLinenumberEnd: 926
    functionName: gin_extract_jsonb_query
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 0
    functionsReached:
    - extract_jsp_query
    - deconstruct_array_builtin
    - PG_GETARG_POINTER
    - PG_GETARG_TEXT_PP
    - make_text_key
    - PointerGetDatum
    - PG_GETARG_UINT16
    - PG_GETARG_JSONPATH_P
    - elog
    - PG_RETURN_POINTER
    - DirectFunctionCall2
    - PG_GETARG_DATUM
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - palloc
    - DatumGetPointer
    - PG_GETARG_ARRAYTYPE_P
    linkageType: ''
    returnType: Datum
    signature: Datum gin_extract_jsonb_query(PG_FUNCTION_ARGS)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:931,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:932,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:935,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:937,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:938,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1001,1
    - Dst: execute_jsp_gin_node
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1002,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1007,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1009,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1010
      start: 928
    functionDepth: 2
    functionLinenumber: 928
    functionLinenumberEnd: 1010
    functionName: gin_consistent_jsonb
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 0
    functionsReached:
    - Assert
    - execute_jsp_gin_node
    - PG_GETARG_POINTER
    - PG_RETURN_BOOL
    - PG_GETARG_UINT16
    - elog
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum gin_consistent_jsonb(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1015,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1016,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1019,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1020,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1062,1
    - Dst: execute_jsp_gin_node
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1063,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1072,1
    - Dst: PG_RETURN_GIN_TERNARY_VALUE
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1074,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1075
      start: 1012
    functionDepth: 2
    functionLinenumber: 1012
    functionLinenumberEnd: 1075
    functionName: gin_triconsistent_jsonb
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 0
    functionsReached:
    - Assert
    - execute_jsp_gin_node
    - PG_GETARG_POINTER
    - PG_RETURN_GIN_TERNARY_VALUE
    - PG_GETARG_UINT16
    - elog
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum gin_triconsistent_jsonb(PG_FUNCTION_ARGS)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1092,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1093,1
    - Dst: JB_ROOT_COUNT
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1094,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1106,1
    - Dst: init_gin_entries
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1110,1
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1117,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1119,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1129,1
    - Dst: JsonbHashScalarValue
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1145,1
    - Dst: JsonbHashScalarValue
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1151,1
    - Dst: add_gin_entry
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1153,1
    - Dst: UInt32GetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1153,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1161,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1170,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1176,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1177
      start: 1089
    functionDepth: 1
    functionLinenumber: 1089
    functionLinenumberEnd: 1177
    functionName: gin_extract_jsonb_path
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 0
    functionsReached:
    - JB_ROOT_COUNT
    - pfree
    - init_gin_entries
    - PG_GETARG_POINTER
    - PG_GETARG_JSONB_P
    - UInt32GetDatum
    - JsonbHashScalarValue
    - JsonbIteratorInit
    - elog
    - JsonbIteratorNext
    - add_gin_entry
    - palloc
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum gin_extract_jsonb_path(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1182,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1183,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1184,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1191,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1191,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1192,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1193,1
    - Dst: PG_GETARG_JSONPATH_P
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1202,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1203,1
    - Dst: extract_jsp_query
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1205,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1212,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1216,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1179
    functionDepth: 10
    functionLinenumber: 1179
    functionLinenumberEnd: 1217
    functionName: gin_extract_jsonb_query_path
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 0
    functionsReached:
    - extract_jsp_query
    - PG_GETARG_POINTER
    - PointerGetDatum
    - PG_GETARG_UINT16
    - PG_GETARG_JSONPATH_P
    - elog
    - DirectFunctionCall2
    - PG_GETARG_DATUM
    - DatumGetPointer
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum gin_extract_jsonb_query_path(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1222,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1223,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1226,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1227,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1228,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1260,1
    - Dst: execute_jsp_gin_node
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1261,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1266,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1268,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1269
      start: 1219
    functionDepth: 2
    functionLinenumber: 1219
    functionLinenumberEnd: 1269
    functionName: gin_consistent_jsonb_path
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 0
    functionsReached:
    - Assert
    - execute_jsp_gin_node
    - PG_GETARG_POINTER
    - PG_RETURN_BOOL
    - PG_GETARG_UINT16
    - elog
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum gin_consistent_jsonb_path(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1274,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1275,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1278,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1279,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1304,1
    - Dst: execute_jsp_gin_node
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1305,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1314,1
    - Dst: PG_RETURN_GIN_TERNARY_VALUE
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1316,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1317
      start: 1271
    functionDepth: 2
    functionLinenumber: 1271
    functionLinenumberEnd: 1317
    functionName: gin_triconsistent_jsonb_path
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 0
    functionsReached:
    - Assert
    - execute_jsp_gin_node
    - PG_GETARG_POINTER
    - PG_RETURN_GIN_TERNARY_VALUE
    - PG_GETARG_UINT16
    - elog
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum gin_triconsistent_jsonb_path(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1335,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1335,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1336,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1347,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1348,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1350,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1352,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1352,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1354,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - flag
    - str
    - len
    argTypes:
    - char
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1355
      start: 1325
    functionDepth: 2
    functionLinenumber: 1325
    functionLinenumberEnd: 1355
    functionName: make_text_key
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 2
    functionsReached:
    - hash_any
    - snprintf
    - VARDATA
    - PointerGetDatum
    - DatumGetUInt32
    - memcpy
    - palloc
    - SET_VARSIZE
    linkageType: ''
    returnType: Datum
    signature: Datum make_text_key(char flag, const char *str, int len)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1372,1
    - Dst: make_text_key
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1373,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1376,1
    - Dst: make_text_key
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1377,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1381,1
    - Dst: numeric_normalize
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1393,1
    - Dst: make_text_key
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1394,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1394,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1395,1
    - Dst: make_text_key
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1398,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/jsonb_gin.c:1403,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - scalarVal
    - is_key
    argTypes:
    - JsonbValue*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1409
      start: 1363
    functionDepth: 3
    functionLinenumber: 1363
    functionLinenumberEnd: 1409
    functionName: make_scalar_key
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonb_gin.c
    functionUses: 2
    functionsReached:
    - pfree
    - Assert
    - make_text_key
    - elog
    - numeric_normalize
    - strlen
    linkageType: ''
    returnType: Datum
    signature: Datum make_scalar_key(const JsonbValue *scalarVal, bool is_key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - jsv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 324
    functionName: JsValueIsNull
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JsValueIsNull(jsv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - jsv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 325
    functionDepth: 0
    functionLinenumber: 325
    functionLinenumberEnd: 328
    functionName: JsValueIsString
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JsValueIsString(jsv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - jso
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 334
    functionName: JsObjectIsEmpty
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JsObjectIsEmpty(jso)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - jso
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 340
    functionName: JsObjectFree
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JsObjectFree(jso)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_parse_json
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:524,1
    - Dst: json_errsave_error
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:527,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - lex
    - sem
    - escontext
    argTypes:
    - JsonLexContext*
    - JsonSemAction*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 518
    functionDepth: 3
    functionLinenumber: 518
    functionLinenumberEnd: 531
    functionName: pg_parse_json_or_errsave
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 1
    functionsReached:
    - json_errsave_error
    - pg_parse_json
    linkageType: ''
    returnType: bool
    signature: "bool pg_parse_json_or_errsave(JsonLexContext *lex, const JsonSemAction
      *sem,\n\t\t\t\t\t\t Node *escontext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_detoast_datum_packed
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:546,1
    - Dst: makeJsonLexContextCstringLen
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:548,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:549,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:550,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - lex
    - json
    - need_escapes
    argTypes:
    - JsonLexContext*
    - text*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 539
    functionDepth: 2
    functionLinenumber: 539
    functionLinenumberEnd: 553
    functionName: makeJsonLexContext
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 3
    functionsReached:
    - pg_detoast_datum_packed
    - GetDatabaseEncoding
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - makeJsonLexContextCstringLen
    linkageType: ''
    returnType: JsonLexContext
    signature: 'JsonLexContext *

      makeJsonLexContext(JsonLexContext *lex, text *json, bool need_escapes)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:573,1
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:576,1
    - Dst: JB_ROOT_IS_SCALAR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:582,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:583,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:584,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:585,1
    - Dst: JB_ROOT_IS_ARRAY
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:587,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:588,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:589,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:590,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:593,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:594,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:596,1
    - Dst: JB_ROOT_COUNT
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:598,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:601,1
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:603,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:605,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:613,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:614,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:620,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:624,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:631,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:631,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:634,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 567
    functionDepth: 2
    functionLinenumber: 567
    functionLinenumberEnd: 635
    functionName: jsonb_object_keys
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - JB_ROOT_COUNT
    - SRF_PERCALL_SETUP
    - MemoryContextSwitchTo
    - memcpy
    - CStringGetTextDatum
    - JB_ROOT_IS_ARRAY
    - JB_ROOT_IS_SCALAR
    - ereport
    - JsonbIteratorInit
    - JsonbIteratorNext
    - SRF_RETURN_DONE
    - SRF_FIRSTCALL_INIT
    - SRF_IS_FIRSTCALL
    - palloc
    - SRF_RETURN_NEXT
    - errcode
    - PG_GETARG_JSONB_P
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_object_keys(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:647,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:648,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:649,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:650,1
    - Dst: json_errdetail
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:650,1
    - Dst: report_json_context
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:651,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:655,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:656,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:659,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:660,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:661,1
    - Dst: errdetail_internal
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:662,1
    - Dst: json_errdetail
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:662,1
    - Dst: report_json_context
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:663,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 3
    argNames:
    - error
    - lex
    - escontext
    argTypes:
    - JsonParseErrorType
    - JsonLexContext*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 640
    functionDepth: 2
    functionLinenumber: 640
    functionLinenumberEnd: 664
    functionName: json_errsave_error
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 3
    functionsReached:
    - errmsg
    - report_json_context
    - json_errdetail
    - SOFT_ERROR_OCCURRED
    - errdetail_internal
    - elog
    - errsave
    - errcode
    linkageType: ''
    returnType: void
    signature: "void json_errsave_error(JsonParseErrorType error, JsonLexContext *lex,\n\t\t\t\t
      \  Node *escontext)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:691,1
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:697,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:698,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:713,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:714,1
    - Dst: errcontext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:726,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - lex
    argTypes:
    - JsonLexContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 676
    functionDepth: 1
    functionLinenumber: 676
    functionLinenumberEnd: 728
    functionName: report_json_context
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 1
    functionsReached:
    - Assert
    - pg_mblen
    - errcontext
    - IS_HIGHBIT_SET
    - memcpy
    - palloc
    linkageType: ''
    returnType: int
    signature: int report_json_context(JsonLexContext *lex)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SRF_IS_FIRSTCALL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:737,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:739,1
    - Dst: SRF_FIRSTCALL_INIT
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:744,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:745,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:747,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:748,1
    - Dst: makeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:750,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:754,1
    - Dst: pg_parse_json_or_ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:762,1
    - Dst: freeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:765,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:766,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:768,1
    - Dst: SRF_PERCALL_SETUP
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:772,1
    - Dst: SRF_RETURN_NEXT
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:779,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:779,1
    - Dst: SRF_RETURN_DONE
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:782,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 731
    functionDepth: 3
    functionLinenumber: 731
    functionLinenumberEnd: 783
    functionName: json_object_keys
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - SRF_PERCALL_SETUP
    - pfree
    - freeJsonLexContext
    - MemoryContextSwitchTo
    - CStringGetTextDatum
    - makeJsonLexContext
    - PG_GETARG_TEXT_PP
    - palloc0
    - pg_parse_json_or_ereport
    - SRF_RETURN_DONE
    - SRF_FIRSTCALL_INIT
    - SRF_IS_FIRSTCALL
    - palloc
    - SRF_RETURN_NEXT
    linkageType: ''
    returnType: Datum
    signature: Datum json_object_keys(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:799,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:803,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - state
    - fname
    - isnull
    argTypes:
    - void*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 785
    functionDepth: 0
    functionLinenumber: 785
    functionLinenumberEnd: 806
    functionName: okeys_object_field_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - repalloc
    - pstrdup
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType okeys_object_field_start(void *state, char *fname,
      bool isnull)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:815,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:816,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:817,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 808
    functionDepth: 2
    functionLinenumber: 808
    functionLinenumberEnd: 821
    functionName: okeys_array_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - ereport
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType okeys_array_start(void *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:830,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:831,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:832,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - state
    - token
    - tokentype
    argTypes:
    - void*
    - char*
    - JsonTokenType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 823
    functionDepth: 2
    functionLinenumber: 823
    functionLinenumberEnd: 836
    functionName: okeys_scalar
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - ereport
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType okeys_scalar(void *state, char *token, JsonTokenType
      tokentype)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:848,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:849,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:850,1
    - Dst: get_worker
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:853,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:856,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:858,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 845
    functionDepth: 1
    functionLinenumber: 845
    functionLinenumberEnd: 859
    functionName: json_object_field
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - get_worker
    - PG_GETARG_TEXT_PP
    - PG_RETURN_NULL
    - PG_RETURN_TEXT_P
    - text_to_cstring
    linkageType: ''
    returnType: Datum
    signature: Datum json_object_field(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:864,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:865,1
    - Dst: JB_ROOT_IS_OBJECT
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:869,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:870,1
    - Dst: getKeyJsonValueFromContainer
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:872,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:873,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:874,1
    - Dst: PG_RETURN_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:878,1
    - Dst: JsonbValueToJsonb
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:878,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:880,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 861
    functionDepth: 1
    functionLinenumber: 861
    functionLinenumberEnd: 881
    functionName: jsonb_object_field
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - JB_ROOT_IS_OBJECT
    - PG_GETARG_TEXT_PP
    - PG_RETURN_JSONB_P
    - getKeyJsonValueFromContainer
    - PG_RETURN_NULL
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - JsonbValueToJsonb
    - PG_GETARG_JSONB_P
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_object_field(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:886,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:887,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:888,1
    - Dst: get_worker
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:891,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:894,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:896,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 883
    functionDepth: 1
    functionLinenumber: 883
    functionLinenumberEnd: 897
    functionName: json_object_field_text
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - get_worker
    - PG_GETARG_TEXT_PP
    - PG_RETURN_NULL
    - PG_RETURN_TEXT_P
    - text_to_cstring
    linkageType: ''
    returnType: Datum
    signature: Datum json_object_field_text(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:902,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:903,1
    - Dst: JB_ROOT_IS_OBJECT
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:907,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:908,1
    - Dst: getKeyJsonValueFromContainer
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:910,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:911,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:912,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:916,1
    - Dst: JsonbValueAsText
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:916,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:918,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 899
    functionDepth: 1
    functionLinenumber: 899
    functionLinenumberEnd: 919
    functionName: jsonb_object_field_text
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - JsonbValueAsText
    - JB_ROOT_IS_OBJECT
    - PG_GETARG_TEXT_PP
    - getKeyJsonValueFromContainer
    - PG_RETURN_NULL
    - PG_RETURN_TEXT_P
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - PG_GETARG_JSONB_P
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_object_field_text(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:924,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:925,1
    - Dst: get_worker
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:928,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:931,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:933,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 921
    functionDepth: 1
    functionLinenumber: 921
    functionLinenumberEnd: 934
    functionName: json_array_element
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - get_worker
    - PG_GETARG_TEXT_PP
    - PG_RETURN_NULL
    - PG_RETURN_TEXT_P
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum json_array_element(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:939,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:940,1
    - Dst: JB_ROOT_IS_ARRAY
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:943,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:944,1
    - Dst: JB_ROOT_COUNT
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:949,1
    - Dst: pg_abs_s32
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:951,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:952,1
    - Dst: getIthJsonbValueFromContainer
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:957,1
    - Dst: PG_RETURN_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:959,1
    - Dst: JsonbValueToJsonb
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:959,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:961,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 936
    functionDepth: 2
    functionLinenumber: 936
    functionLinenumberEnd: 962
    functionName: jsonb_array_element
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - JB_ROOT_COUNT
    - JB_ROOT_IS_ARRAY
    - PG_RETURN_JSONB_P
    - pg_abs_s32
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    - JsonbValueToJsonb
    - getIthJsonbValueFromContainer
    - PG_GETARG_JSONB_P
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_array_element(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:967,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:968,1
    - Dst: get_worker
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:971,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:974,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:976,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 964
    functionDepth: 1
    functionLinenumber: 964
    functionLinenumberEnd: 977
    functionName: json_array_element_text
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - get_worker
    - PG_GETARG_TEXT_PP
    - PG_RETURN_NULL
    - PG_RETURN_TEXT_P
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum json_array_element_text(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:982,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:983,1
    - Dst: JB_ROOT_IS_ARRAY
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:986,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:987,1
    - Dst: JB_ROOT_COUNT
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:992,1
    - Dst: pg_abs_s32
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:994,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:995,1
    - Dst: getIthJsonbValueFromContainer
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1000,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1003,1
    - Dst: JsonbValueAsText
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1003,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1005,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1006
      start: 979
    functionDepth: 2
    functionLinenumber: 979
    functionLinenumberEnd: 1006
    functionName: jsonb_array_element_text
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - JB_ROOT_COUNT
    - JsonbValueAsText
    - JB_ROOT_IS_ARRAY
    - pg_abs_s32
    - PG_RETURN_NULL
    - PG_GETARG_INT32
    - PG_RETURN_TEXT_P
    - getIthJsonbValueFromContainer
    - PG_GETARG_JSONB_P
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_array_element_text(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_path_all
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1011,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 1008
    functionDepth: 1
    functionLinenumber: 1008
    functionLinenumberEnd: 1012
    functionName: json_extract_path
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - get_path_all
    linkageType: ''
    returnType: Datum
    signature: Datum json_extract_path(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_path_all
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1017,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 1014
    functionDepth: 1
    functionLinenumber: 1014
    functionLinenumberEnd: 1018
    functionName: json_extract_path_text
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - get_path_all
    linkageType: ''
    returnType: Datum
    signature: Datum json_extract_path_text(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1026,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1027,1
    - Dst: array_contains_nulls
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1043,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1044,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1046,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1048,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1049,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1053,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1054,1
    - Dst: strtoint
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1067,1
    - Dst: get_worker
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1077,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1080,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1082,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - fcinfo
    - as_text
    argTypes:
    - FunctionCallInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1023
    functionDepth: 1
    functionLinenumber: 1023
    functionLinenumberEnd: 1083
    functionName: get_path_all
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 2
    functionsReached:
    - Assert
    - get_worker
    - deconstruct_array_builtin
    - PG_GETARG_TEXT_PP
    - array_contains_nulls
    - TextDatumGetCString
    - PG_RETURN_NULL
    - PG_RETURN_TEXT_P
    - palloc
    - PG_GETARG_ARRAYTYPE_P
    - strtoint
    linkageType: ''
    returnType: Datum
    signature: Datum get_path_all(FunctionCallInfo fcinfo, bool as_text)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1109,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1110,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1112,1
    - Dst: makeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1114,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1121,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1122,1
    - Dst: pg_parse_json_or_ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1153,1
    - Dst: freeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1154,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 5
    argNames:
    - json
    - tpath
    - ipath
    - npath
    - normalize_results
    argTypes:
    - text*
    - char**
    - int*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1157
      start: 1102
    functionDepth: 3
    functionLinenumber: 1102
    functionLinenumberEnd: 1157
    functionName: get_worker
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 5
    functionsReached:
    - Assert
    - freeJsonLexContext
    - makeJsonLexContext
    - palloc0
    - pg_parse_json_or_ereport
    - palloc
    linkageType: ''
    returnType: text
    signature: "text *\nget_worker(text *json,\n\t\t   char **tpath,\n\t\t   int *ipath,\n\t\t
      \  int npath,\n\t\t   bool normalize_results)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1176
      start: 1159
    functionDepth: 0
    functionLinenumber: 1159
    functionLinenumberEnd: 1176
    functionName: get_object_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType get_object_start(void *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1190,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1194
      start: 1178
    functionDepth: 1
    functionLinenumber: 1178
    functionLinenumberEnd: 1194
    functionName: get_object_end
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - cstring_to_text_with_len
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType get_object_end(void *state)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1207,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 3
    argNames:
    - state
    - fname
    - isnull
    argTypes:
    - void*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1241
      start: 1196
    functionDepth: 0
    functionLinenumber: 1196
    functionLinenumberEnd: 1241
    functionName: get_object_field_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType get_object_field_start(void *state, char *fname,
      bool isnull)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1255,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1284,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 16
    argCount: 3
    argNames:
    - state
    - fname
    - isnull
    argTypes:
    - void*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1292
      start: 1243
    functionDepth: 1
    functionLinenumber: 1243
    functionLinenumberEnd: 1292
    functionName: get_object_field_end
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - strcmp
    - cstring_to_text_with_len
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType get_object_field_end(void *state, char *fname, bool
      isnull)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_count_array_elements
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1313,1
    - Dst: json_errsave_error
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1315,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1332
      start: 1294
    functionDepth: 3
    functionLinenumber: 1294
    functionLinenumberEnd: 1332
    functionName: get_array_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - json_errsave_error
    - json_count_array_elements
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType get_array_start(void *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1346,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1350
      start: 1334
    functionDepth: 1
    functionLinenumber: 1334
    functionLinenumberEnd: 1350
    functionName: get_array_end
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - cstring_to_text_with_len
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType get_array_end(void *state)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 2
    argNames:
    - state
    - isnull
    argTypes:
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1398
      start: 1352
    functionDepth: 0
    functionLinenumber: 1352
    functionLinenumberEnd: 1398
    functionName: get_array_element_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType get_array_element_start(void *state, bool isnull)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1435,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 2
    argNames:
    - state
    - isnull
    argTypes:
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1442
      start: 1400
    functionDepth: 1
    functionLinenumber: 1400
    functionLinenumberEnd: 1442
    functionName: get_array_element_end
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - cstring_to_text_with_len
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType get_array_element_end(void *state, bool isnull)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1472,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1479,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 3
    argNames:
    - state
    - token
    - tokentype
    argTypes:
    - void*
    - char*
    - JsonTokenType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1485
      start: 1444
    functionDepth: 1
    functionLinenumber: 1444
    functionLinenumberEnd: 1485
    functionName: get_scalar
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - cstring_to_text
    - cstring_to_text_with_len
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType get_scalar(void *state, char *token, JsonTokenType
      tokentype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_jsonb_path_all
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1490,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1491
      start: 1487
    functionDepth: 1
    functionLinenumber: 1487
    functionLinenumberEnd: 1491
    functionName: jsonb_extract_path
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - get_jsonb_path_all
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_extract_path(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_jsonb_path_all
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1497
      start: 1493
    functionDepth: 1
    functionLinenumber: 1493
    functionLinenumberEnd: 1497
    functionName: jsonb_extract_path_text
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - get_jsonb_path_all
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_extract_path_text(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1502,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1503,1
    - Dst: array_contains_nulls
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1517,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1518,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1520,1
    - Dst: jsonb_get_element
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1522,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1525,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1527,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - fcinfo
    - as_text
    argTypes:
    - FunctionCallInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1528
      start: 1499
    functionDepth: 1
    functionLinenumber: 1499
    functionLinenumberEnd: 1528
    functionName: get_jsonb_path_all
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 2
    functionsReached:
    - deconstruct_array_builtin
    - PG_GETARG_JSONB_P
    - PG_RETURN_DATUM
    - array_contains_nulls
    - PG_RETURN_NULL
    - jsonb_get_element
    - PG_GETARG_ARRAYTYPE_P
    linkageType: ''
    returnType: Datum
    signature: Datum get_jsonb_path_all(FunctionCallInfo fcinfo, bool as_text)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: JB_ROOT_IS_OBJECT
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1542,1
    - Dst: JB_ROOT_IS_ARRAY
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1544,1
    - Dst: JB_ROOT_IS_SCALAR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1544,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1548,1
    - Dst: JB_ROOT_IS_ARRAY
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1548,1
    - Dst: JB_ROOT_IS_SCALAR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1548,1
    - Dst: getIthJsonbValueFromContainer
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1551,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1566,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1566,1
    - Dst: JsonbToCString
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1566,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1568,1
    - Dst: PG_RETURN_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1573,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1581,1
    - Dst: getKeyJsonValueFromContainer
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1583,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1584,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1585,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1592,1
    - Dst: strtoint
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1596,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1600,1
    - Dst: JsonContainerIsArray
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1613,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1614,1
    - Dst: JsonContainerSize
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1616,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1621,1
    - Dst: getIthJsonbValueFromContainer
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1627,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1633,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1639,1
    - Dst: JsonContainerIsObject
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1647,1
    - Dst: JsonContainerIsArray
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1648,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1649,1
    - Dst: JsonContainerIsScalar
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1649,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1653,1
    - Dst: IsAJsonbScalar
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1653,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1664,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1667,1
    - Dst: JsonbValueAsText
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1667,1
    - Dst: JsonbValueToJsonb
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1671,1
    - Dst: PG_RETURN_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1674,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 71
    argCount: 5
    argNames:
    - jb
    - path
    - npath
    - isnull
    - as_text
    argTypes:
    - Jsonb*
    - Datum*
    - int
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1676
      start: 1530
    functionDepth: 1
    functionLinenumber: 1530
    functionLinenumberEnd: 1676
    functionName: jsonb_get_element
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 3
    functionsReached:
    - IsAJsonbScalar
    - JB_ROOT_IS_OBJECT
    - getIthJsonbValueFromContainer
    - JsonbValueToJsonb
    - JsonbValueAsText
    - JB_ROOT_IS_ARRAY
    - JsonbToCString
    - JB_ROOT_IS_SCALAR
    - cstring_to_text
    - JsonContainerIsObject
    - VARSIZE
    - elog
    - JsonContainerIsArray
    - VARSIZE_ANY_EXHDR
    - Assert
    - JsonContainerIsScalar
    - TextDatumGetCString
    - PG_RETURN_JSONB_P
    - DatumGetTextPP
    - PointerGetDatum
    - getKeyJsonValueFromContainer
    - JsonContainerSize
    - VARDATA_ANY
    - strtoint
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_get_element(Jsonb *jb, Datum *path, int npath, bool *isnull,
      bool as_text)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1685,1
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1690,1
    - Dst: setPath
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1692,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1696,1
    - Dst: PG_RETURN_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1698,1
    - Dst: JsonbValueToJsonb
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1698,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - jb
    - path
    - path_len
    - newval
    argTypes:
    - Jsonb*
    - Datum*
    - int
    - JsonbValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1699
      start: 1678
    functionDepth: 1
    functionLinenumber: 1678
    functionLinenumberEnd: 1699
    functionName: jsonb_set_element
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 1
    functionsReached:
    - pfree
    - PG_RETURN_JSONB_P
    - palloc0
    - JsonbIteratorInit
    - setPath
    - JsonbValueToJsonb
    linkageType: ''
    returnType: Datum
    signature: "Datum jsonb_set_element(Jsonb *jb, Datum *path, int path_len,\n\t\t\t\t
      \ JsonbValue *newval)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1709,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ps
    - num
    argTypes:
    - JsonbParseState**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1710
      start: 1701
    functionDepth: 1
    functionLinenumber: 1701
    functionLinenumberEnd: 1710
    functionName: push_null_elements
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - pushJsonbValue
    linkageType: ''
    returnType: void
    signature: void push_null_elements(JsonbParseState **ps, int num)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1730,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1751,1
    - Dst: strtoint
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1753,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1759,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1761,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1762,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1769,1
    - Dst: push_null_elements
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1771,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1780,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1783,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1795,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1797,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 6
    argNames:
    - st
    - level
    - path_elems
    - path_nulls
    - path_len
    - newval
    argTypes:
    - JsonbParseState**
    - int
    - Datum*
    - bool*
    - int
    - JsonbValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1799
      start: 1720
    functionDepth: 2
    functionLinenumber: 1720
    functionLinenumberEnd: 1799
    functionName: push_path
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - push_null_elements
    - TextDatumGetCString
    - palloc0
    - pushJsonbValue
    - strlen
    - strtoint
    linkageType: ''
    returnType: void
    signature: "void push_path(JsonbParseState **st, int level, Datum *path_elems,\n\t\t
      \ bool *path_nulls, int path_len, JsonbValue *newval)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1814,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1815,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1818,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1825,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1826,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1828,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1828,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1835,1
    - Dst: JsonbToCString
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1836,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1839,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1843,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 1
    argNames:
    - v
    argTypes:
    - JsonbValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1846
      start: 1804
    functionDepth: 3
    functionLinenumber: 1804
    functionLinenumberEnd: 1846
    functionName: JsonbValueAsText
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 3
    functionsReached:
    - DirectFunctionCall1
    - DatumGetCString
    - JsonbToCString
    - PointerGetDatum
    - elog
    - initStringInfo
    - cstring_to_text
    - cstring_to_text_with_len
    linkageType: ''
    returnType: text
    signature: 'text *

      JsonbValueAsText(JsonbValue *v)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1854,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1859,1
    - Dst: makeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1860,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1866,1
    - Dst: pg_parse_json_or_ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1872,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1874,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1875
      start: 1851
    functionDepth: 3
    functionLinenumber: 1851
    functionLinenumberEnd: 1875
    functionName: json_array_length
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - makeJsonLexContext
    - PG_GETARG_TEXT_PP
    - palloc0
    - pg_parse_json_or_ereport
    linkageType: ''
    returnType: Datum
    signature: Datum json_array_length(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1880,1
    - Dst: JB_ROOT_IS_SCALAR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1882,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1883,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1884,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1885,1
    - Dst: JB_ROOT_IS_ARRAY
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1886,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1887,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1888,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1889,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1891,1
    - Dst: JB_ROOT_COUNT
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1891,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1892
      start: 1877
    functionDepth: 2
    functionLinenumber: 1877
    functionLinenumberEnd: 1892
    functionName: jsonb_array_length
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_RETURN_INT32
    - JB_ROOT_COUNT
    - JB_ROOT_IS_ARRAY
    - JB_ROOT_IS_SCALAR
    - ereport
    - errcode
    - PG_GETARG_JSONB_P
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_array_length(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1906,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1907,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1908,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1911
      start: 1899
    functionDepth: 2
    functionLinenumber: 1899
    functionLinenumberEnd: 1911
    functionName: alen_object_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - ereport
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType alen_object_start(void *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1920,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1921,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1922,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - state
    - token
    - tokentype
    argTypes:
    - void*
    - char*
    - JsonTokenType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1925
      start: 1913
    functionDepth: 2
    functionLinenumber: 1913
    functionLinenumberEnd: 1925
    functionName: alen_scalar
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - ereport
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType alen_scalar(void *state, char *token, JsonTokenType
      tokentype)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - state
    - isnull
    argTypes:
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1937
      start: 1927
    functionDepth: 0
    functionLinenumber: 1927
    functionLinenumberEnd: 1937
    functionName: alen_array_element_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType alen_array_element_start(void *state, bool isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: each_worker
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1952,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1953
      start: 1949
    functionDepth: 1
    functionLinenumber: 1949
    functionLinenumberEnd: 1953
    functionName: json_each
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - each_worker
    linkageType: ''
    returnType: Datum
    signature: Datum json_each(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: each_worker_jsonb
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1958,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1959
      start: 1955
    functionDepth: 1
    functionLinenumber: 1955
    functionLinenumberEnd: 1959
    functionName: jsonb_each
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - each_worker_jsonb
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_each(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: each_worker
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1964,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1965
      start: 1961
    functionDepth: 1
    functionLinenumber: 1961
    functionLinenumberEnd: 1965
    functionName: json_each_text
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - each_worker
    linkageType: ''
    returnType: Datum
    signature: Datum json_each_text(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: each_worker_jsonb
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1970,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1971
      start: 1967
    functionDepth: 1
    functionLinenumber: 1967
    functionLinenumberEnd: 1971
    functionName: jsonb_each_text
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - each_worker_jsonb
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_each_text(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1976,1
    - Dst: JB_ROOT_IS_OBJECT
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1985,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1986,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1987,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1988,1
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1992,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1994,1
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:1998,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2000,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2011,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2013,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2019,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2020,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2022,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2033,1
    - Dst: JsonbValueAsText
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2033,1
    - Dst: JsonbValueToJsonb
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2038,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2040,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2043,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2046,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2047,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2051,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2053,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 3
    argNames:
    - fcinfo
    - funcname
    - as_text
    argTypes:
    - FunctionCallInfo
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2054
      start: 1973
    functionDepth: 6
    functionLinenumber: 1973
    functionLinenumberEnd: 2054
    functionName: each_worker_jsonb
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 2
    functionsReached:
    - MemoryContextSwitchTo
    - JB_ROOT_IS_OBJECT
    - MemoryContextReset
    - JsonbValueToJsonb
    - cstring_to_text_with_len
    - JsonbValueAsText
    - MemoryContextDelete
    - errmsg
    - tuplestore_putvalues
    - InitMaterializedSRF
    - PG_GETARG_JSONB_P
    - Assert
    - ereport
    - PointerGetDatum
    - JsonbIteratorInit
    - PG_RETURN_NULL
    - AllocSetContextCreate
    - JsonbIteratorNext
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum each_worker_jsonb(FunctionCallInfo fcinfo, const char *funcname,
      bool as_text)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2060,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2066,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2067,1
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2071,1
    - Dst: makeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2083,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2084,1
    - Dst: pg_parse_json_or_ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2088,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2090,1
    - Dst: freeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2091,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2093,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 2
    argNames:
    - fcinfo
    - as_text
    argTypes:
    - FunctionCallInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2094
      start: 2057
    functionDepth: 3
    functionLinenumber: 2057
    functionLinenumberEnd: 2094
    functionName: each_worker
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 2
    functionsReached:
    - freeJsonLexContext
    - MemoryContextDelete
    - makeJsonLexContext
    - PG_GETARG_TEXT_PP
    - palloc0
    - pg_parse_json_or_ereport
    - InitMaterializedSRF
    - PG_RETURN_NULL
    - AllocSetContextCreate
    linkageType: ''
    returnType: Datum
    signature: Datum each_worker(FunctionCallInfo fcinfo, bool as_text)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - state
    - fname
    - isnull
    argTypes:
    - void*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2117
      start: 2097
    functionDepth: 0
    functionLinenumber: 2097
    functionLinenumberEnd: 2117
    functionName: each_object_field_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType each_object_field_start(void *state, char *fname,
      bool isnull)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2135,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2137,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2146,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2152,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2153,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2156,1
    - Dst: tuplestore_puttuple
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2158,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2161,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2162,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - state
    - fname
    - isnull
    argTypes:
    - void*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2165
      start: 2119
    functionDepth: 5
    functionLinenumber: 2119
    functionLinenumberEnd: 2165
    functionName: each_object_field_end
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - heap_form_tuple
    - MemoryContextSwitchTo
    - CStringGetTextDatum
    - MemoryContextReset
    - PointerGetDatum
    - tuplestore_puttuple
    - cstring_to_text_with_len
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType each_object_field_end(void *state, char *fname,
      bool isnull)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2174,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2175,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2176,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2179
      start: 2167
    functionDepth: 2
    functionLinenumber: 2167
    functionLinenumberEnd: 2179
    functionName: each_array_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - ereport
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType each_array_start(void *state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2188,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2189,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2190,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - state
    - token
    - tokentype
    argTypes:
    - void*
    - char*
    - JsonTokenType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2197
      start: 2181
    functionDepth: 2
    functionLinenumber: 2181
    functionLinenumberEnd: 2197
    functionName: each_scalar
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - ereport
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType each_scalar(void *state, char *token, JsonTokenType
      tokentype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elements_worker_jsonb
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2211
      start: 2207
    functionDepth: 1
    functionLinenumber: 2207
    functionLinenumberEnd: 2211
    functionName: jsonb_array_elements
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - elements_worker_jsonb
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_array_elements(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elements_worker_jsonb
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2217
      start: 2213
    functionDepth: 1
    functionLinenumber: 2213
    functionLinenumberEnd: 2217
    functionName: jsonb_array_elements_text
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - elements_worker_jsonb
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_array_elements_text(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2223,1
    - Dst: JB_ROOT_IS_SCALAR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2232,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2233,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2234,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2235,1
    - Dst: JB_ROOT_IS_ARRAY
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2236,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2237,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2238,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2239,1
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2243,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2245,1
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2249,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2251,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2261,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2272,1
    - Dst: JsonbValueAsText
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2272,1
    - Dst: JsonbValueToJsonb
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2277,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2279,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2282,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2285,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2286,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2290,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2292,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 3
    argNames:
    - fcinfo
    - funcname
    - as_text
    argTypes:
    - FunctionCallInfo
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2293
      start: 2219
    functionDepth: 6
    functionLinenumber: 2219
    functionLinenumberEnd: 2293
    functionName: elements_worker_jsonb
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 2
    functionsReached:
    - errmsg
    - JsonbValueAsText
    - MemoryContextSwitchTo
    - tuplestore_putvalues
    - MemoryContextDelete
    - MemoryContextReset
    - JB_ROOT_IS_ARRAY
    - JB_ROOT_IS_SCALAR
    - ereport
    - PointerGetDatum
    - JsonbIteratorInit
    - InitMaterializedSRF
    - PG_RETURN_NULL
    - AllocSetContextCreate
    - JsonbIteratorNext
    - JsonbValueToJsonb
    - errcode
    - PG_GETARG_JSONB_P
    linkageType: ''
    returnType: Datum
    signature: "Datum elements_worker_jsonb(FunctionCallInfo fcinfo, const char *funcname,\n\t\t\t\t\t
      \ bool as_text)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elements_worker
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2299
      start: 2295
    functionDepth: 1
    functionLinenumber: 2295
    functionLinenumberEnd: 2299
    functionName: json_array_elements
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - elements_worker
    linkageType: ''
    returnType: Datum
    signature: Datum json_array_elements(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elements_worker
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2305
      start: 2301
    functionDepth: 1
    functionLinenumber: 2301
    functionLinenumberEnd: 2305
    functionName: json_array_elements_text
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - elements_worker
    linkageType: ''
    returnType: Datum
    signature: Datum json_array_elements_text(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2310,1
    - Dst: makeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2317,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2319,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2320,1
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2322,1
    - Dst: AllocSetContextCreate
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2337,1
    - Dst: pg_parse_json_or_ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2341,1
    - Dst: MemoryContextDelete
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2343,1
    - Dst: freeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2344,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 3
    argNames:
    - fcinfo
    - funcname
    - as_text
    argTypes:
    - FunctionCallInfo
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2347
      start: 2307
    functionDepth: 3
    functionLinenumber: 2307
    functionLinenumberEnd: 2347
    functionName: elements_worker
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 2
    functionsReached:
    - freeJsonLexContext
    - MemoryContextDelete
    - makeJsonLexContext
    - PG_GETARG_TEXT_PP
    - palloc0
    - pg_parse_json_or_ereport
    - InitMaterializedSRF
    - PG_RETURN_NULL
    - AllocSetContextCreate
    linkageType: ''
    returnType: Datum
    signature: Datum elements_worker(FunctionCallInfo fcinfo, const char *funcname,
      bool as_text)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - state
    - isnull
    argTypes:
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2369
      start: 2349
    functionDepth: 0
    functionLinenumber: 2349
    functionLinenumberEnd: 2369
    functionName: elements_array_element_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType elements_array_element_start(void *state, bool isnull)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2387,1
    - Dst: CStringGetTextDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2396,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2402,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2403,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2406,1
    - Dst: tuplestore_puttuple
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2408,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2411,1
    - Dst: MemoryContextReset
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2412,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - state
    - isnull
    argTypes:
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2415
      start: 2371
    functionDepth: 5
    functionLinenumber: 2371
    functionLinenumberEnd: 2415
    functionName: elements_array_element_end
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - heap_form_tuple
    - MemoryContextSwitchTo
    - CStringGetTextDatum
    - MemoryContextReset
    - PointerGetDatum
    - tuplestore_puttuple
    - cstring_to_text_with_len
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType elements_array_element_end(void *state, bool isnull)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2424,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2425,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2426,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2430
      start: 2417
    functionDepth: 2
    functionLinenumber: 2417
    functionLinenumberEnd: 2430
    functionName: elements_object_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - ereport
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType elements_object_start(void *state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2439,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2440,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2441,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - state
    - token
    - tokentype
    argTypes:
    - void*
    - char*
    - JsonTokenType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2449
      start: 2432
    functionDepth: 2
    functionLinenumber: 2432
    functionLinenumberEnd: 2449
    functionName: elements_scalar
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - ereport
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType elements_scalar(void *state, char *token, JsonTokenType
      tokentype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: populate_record_worker
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2468
      start: 2463
    functionDepth: 1
    functionLinenumber: 2463
    functionLinenumberEnd: 2468
    functionName: jsonb_populate_record
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - populate_record_worker
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_populate_record(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: populate_record_worker
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2481,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2484,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2485
      start: 2476
    functionDepth: 1
    functionLinenumber: 2476
    functionLinenumberEnd: 2485
    functionName: jsonb_populate_record_valid
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - populate_record_worker
    - BoolGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_populate_record_valid(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: populate_record_worker
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2490,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2492
      start: 2487
    functionDepth: 1
    functionLinenumber: 2487
    functionLinenumberEnd: 2492
    functionName: jsonb_to_record
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - populate_record_worker
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_to_record(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: populate_record_worker
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2497,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2499
      start: 2494
    functionDepth: 1
    functionLinenumber: 2494
    functionLinenumberEnd: 2499
    functionName: json_populate_record
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - populate_record_worker
    linkageType: ''
    returnType: Datum
    signature: Datum json_populate_record(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: populate_record_worker
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2504,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2506
      start: 2501
    functionDepth: 1
    functionLinenumber: 2501
    functionLinenumberEnd: 2506
    functionName: json_to_record
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - populate_record_worker
    linkageType: ''
    returnType: Datum
    signature: Datum json_to_record(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2515,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2516,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2517,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2518,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2520,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2521,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2522,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2530,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2532,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2535,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2538,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2539,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2540,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2541,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2544,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2545,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2546,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2547,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - ctx
    - ndim
    argTypes:
    - PopulateArrayContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2551
      start: 2509
    functionDepth: 3
    functionLinenumber: 2509
    functionLinenumberEnd: 2551
    functionName: populate_array_report_expected_array
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - appendStringInfo
    - errhint
    - errsave
    - initStringInfo
    - errcode
    linkageType: ''
    returnType: void
    signature: void populate_array_report_expected_array(PopulateArrayContext *ctx,
      int ndim)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2564,1
    - Dst: populate_array_report_expected_array
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2568,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2570,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2570,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2575,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2576,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - ndims
    argTypes:
    - PopulateArrayContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2582
      start: 2559
    functionDepth: 4
    functionLinenumber: 2559
    functionLinenumberEnd: 2582
    functionName: populate_array_assign_ndims
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - SOFT_ERROR_OCCURRED
    - palloc0
    - palloc
    - populate_array_report_expected_array
    linkageType: ''
    returnType: bool
    signature: bool populate_array_assign_ndims(PopulateArrayContext *ctx, int ndims)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2597,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2598,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2599,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2600,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - ndim
    argTypes:
    - PopulateArrayContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2611
      start: 2589
    functionDepth: 2
    functionLinenumber: 2589
    functionLinenumberEnd: 2611
    functionName: populate_array_check_dimension
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - ereturn
    - errdetail
    - errcode
    - errmsg
    linkageType: ''
    returnType: bool
    signature: bool populate_array_check_dimension(PopulateArrayContext *ctx, int
      ndim)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: populate_record_field
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2624,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2627,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2631,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2634,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2637,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - ndim
    - jsv
    argTypes:
    - PopulateArrayContext*
    - int
    - JsValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2641
      start: 2617
    functionDepth: 1
    functionLinenumber: 2617
    functionLinenumberEnd: 2641
    functionName: populate_array_element
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - SOFT_ERROR_OCCURRED
    - accumArrayResult
    - PointerGetDatum
    - populate_record_field
    linkageType: ''
    returnType: bool
    signature: bool populate_array_element(PopulateArrayContext *ctx, int ndim, JsValue
      *jsv)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: populate_array_assign_ndims
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2652,1
    - Dst: populate_array_report_expected_array
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2657,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2659,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2659,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - _state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2664
      start: 2644
    functionDepth: 5
    functionLinenumber: 2644
    functionLinenumberEnd: 2664
    functionName: populate_array_object_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - SOFT_ERROR_OCCURRED
    - populate_array_assign_ndims
    - populate_array_report_expected_array
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType populate_array_object_start(void *_state)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: populate_array_assign_ndims
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2676,1
    - Dst: populate_array_check_dimension
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2683,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - _state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2688
      start: 2667
    functionDepth: 5
    functionLinenumber: 2667
    functionLinenumberEnd: 2688
    functionName: populate_array_array_end
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - populate_array_check_dimension
    - populate_array_assign_ndims
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType populate_array_array_end(void *_state)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - _state
    - isnull
    argTypes:
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2706
      start: 2691
    functionDepth: 0
    functionLinenumber: 2691
    functionLinenumberEnd: 2706
    functionName: populate_array_element_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType populate_array_element_start(void *_state, bool
      isnull)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2716,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2727,1
    - Dst: populate_array_element
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2744,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - _state
    - isnull
    argTypes:
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2749
      start: 2709
    functionDepth: 2
    functionLinenumber: 2709
    functionLinenumberEnd: 2749
    functionName: populate_array_element_end
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - populate_array_element
    - Assert
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType populate_array_element_end(void *_state, bool isnull)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: populate_array_assign_ndims
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2761,1
    - Dst: populate_array_report_expected_array
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2766,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2768,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2768,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2777,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - _state
    - token
    - tokentype
    argTypes:
    - void*
    - char*
    - JsonTokenType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2781
      start: 2752
    functionDepth: 5
    functionLinenumber: 2752
    functionLinenumberEnd: 2781
    functionName: populate_array_scalar
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - SOFT_ERROR_OCCURRED
    - populate_array_assign_ndims
    - populate_array_report_expected_array
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType populate_array_scalar(void *_state, char *token,
      JsonTokenType tokentype)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeJsonLexContextCstringLen
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2794,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2795,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2798,1
    - Dst: pg_parse_json_or_errsave
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2806,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2809,1
    - Dst: freeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2812,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2814,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - json
    - len
    argTypes:
    - PopulateArrayContext*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2815
      start: 2788
    functionDepth: 4
    functionLinenumber: 2788
    functionLinenumberEnd: 2815
    functionName: populate_array_json
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - freeJsonLexContext
    - SOFT_ERROR_OCCURRED
    - GetDatabaseEncoding
    - memset
    - pg_parse_json_or_errsave
    - makeJsonLexContextCstringLen
    linkageType: ''
    returnType: bool
    signature: bool populate_array_json(PopulateArrayContext *ctx, const char *json,
      int len)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2835,1
    - Dst: JsonContainerIsArray
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2838,1
    - Dst: JsonContainerIsScalar
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2839,1
    - Dst: populate_array_report_expected_array
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2841,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2843,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2843,1
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2847,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2849,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2850,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2852,1
    - Dst: JsonContainerIsArray
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2863,1
    - Dst: populate_array_assign_ndims
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2865,1
    - Dst: populate_array_element
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2881,1
    - Dst: populate_array_dim_jsonb
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2887,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2891,1
    - Dst: populate_array_check_dimension
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2893,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2897,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2900,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2903,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2904,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 34
    argCount: 3
    argNames:
    - ctx
    - jbv
    - ndim
    argTypes:
    - PopulateArrayContext*
    - JsonbValue*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2907
      start: 2824
    functionDepth: 5
    functionLinenumber: 2824
    functionLinenumberEnd: 2907
    functionName: populate_array_dim_jsonb
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 1
    functionsReached:
    - check_stack_depth
    - Assert
    - SOFT_ERROR_OCCURRED
    - JsonContainerIsScalar
    - populate_array_assign_ndims
    - populate_array_dim_jsonb
    - populate_array_element
    - populate_array_check_dimension
    - JsonbIteratorInit
    - JsonContainerIsArray
    - JsonbIteratorNext
    - populate_array_report_expected_array
    linkageType: ''
    returnType: bool
    signature: "bool populate_array_dim_jsonb(PopulateArrayContext *ctx, /* context
      */\n\t\t\t\t\t\t JsonbValue *jbv,\t/* jsonb sub-array */\n\t\t\t\t\t\t int ndim)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initArrayResult
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2930,1
    - Dst: populate_array_json
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2940,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2942,1
    - Dst: populate_array_dim_jsonb
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2951,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2959,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2961,1
    - Dst: makeMdArrayResult
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2966,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2969,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2970,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2971,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 6
    argNames:
    - aio
    - colname
    - mcxt
    - jsv
    - isnull
    - escontext
    argTypes:
    - ArrayIOData*
    - char*
    - MemoryContext
    - JsValue*
    - bool*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2975
      start: 2914
    functionDepth: 6
    functionLinenumber: 2914
    functionLinenumberEnd: 2975
    functionName: populate_array
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - populate_array_dim_jsonb
    - makeMdArrayResult
    - initArrayResult
    - palloc
    - populate_array_json
    - strlen
    linkageType: ''
    returnType: Datum
    signature: "Datum populate_array(ArrayIOData *aio,\n\t\t\t   const char *colname,\n\t\t\t
      \  MemoryContext mcxt,\n\t\t\t   JsValue *jsv,\n\t\t\t   bool *isnull,\n\t\t\t
      \  Node *escontext)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_json_object_as_hash
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2990,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2993,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2996,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:2996,1
    - Dst: JsonContainerIsObject
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3003,1
    - Dst: IsAJsonbScalar
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3011,1
    - Dst: JsonContainerIsScalar
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3013,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3014,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3015,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3017,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3019,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3024,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 3
    argNames:
    - jsv
    - jso
    - escontext
    argTypes:
    - JsValue*
    - JsObject*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3025
      start: 2981
    functionDepth: 2
    functionLinenumber: 2981
    functionLinenumberEnd: 3025
    functionName: JsValueToJsObject
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - IsAJsonbScalar
    - errmsg
    - Assert
    - SOFT_ERROR_OCCURRED
    - JsonContainerIsScalar
    - errsave
    - get_json_object_as_hash
    - strlen
    - errcode
    - JsonContainerIsObject
    linkageType: ''
    returnType: bool
    signature: bool JsValueToJsObject(JsValue *jsv, JsObject *jso, Node *escontext)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lookup_rowtype_tupdesc
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3035,1
    - Dst: FreeTupleDesc
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3040,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3043,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3044,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3045,1
    - Dst: ReleaseTupleDesc
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3047,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - io
    - mcxt
    argTypes:
    - CompositeIOData*
    - MemoryContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3049
      start: 3028
    functionDepth: 4
    functionLinenumber: 3028
    functionLinenumberEnd: 3049
    functionName: update_cached_tupdesc
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - ReleaseTupleDesc
    - MemoryContextSwitchTo
    - CreateTupleDescCopy
    - lookup_rowtype_tupdesc
    - FreeTupleDesc
    linkageType: ''
    returnType: void
    signature: void update_cached_tupdesc(CompositeIOData *io, MemoryContext mcxt)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: update_cached_tupdesc
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3070,1
    - Dst: JsValueToJsObject
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3080,1
    - Dst: populate_record
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3087,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3090,1
    - Dst: HeapTupleHeaderGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3095,1
    - Dst: JsObjectFree
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3097,1
    - Dst: domain_check_safe
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3107,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 8
    argNames:
    - io
    - typid
    - colname
    - mcxt
    - defaultval
    - jsv
    - isnull
    - escontext
    argTypes:
    - CompositeIOData*
    - Oid
    - char*
    - MemoryContext
    - HeapTupleHeader
    - JsValue*
    - bool*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3116
      start: 3057
    functionDepth: 5
    functionLinenumber: 3057
    functionLinenumberEnd: 3116
    functionName: populate_composite
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - populate_record
    - SOFT_ERROR_OCCURRED
    - HeapTupleHeaderGetDatum
    - domain_check_safe
    - JsValueToJsObject
    - JsObjectFree
    - update_cached_tupdesc
    linkageType: ''
    returnType: Datum
    signature: "Datum populate_composite(CompositeIOData *io,\n\t\t\t\t   Oid typid,\n\t\t\t\t
      \  const char *colname,\n\t\t\t\t   MemoryContext mcxt,\n\t\t\t\t   HeapTupleHeader
      defaultval,\n\t\t\t\t   JsValue *jsv,\n\t\t\t\t   bool *isnull,\n\t\t\t\t   Node
      *escontext)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3137,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3145,1
    - Dst: escape_json_with_len
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3147,1
    - Dst: escape_json
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3149,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3155,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3156,1
    - Dst: unconstify
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3162,1
    - Dst: pnstrdup
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3170,1
    - Dst: JsonbValueToJsonb
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3173,1
    - Dst: JsonbPGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3175,1
    - Dst: JsonbValueToJsonb
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3184,1
    - Dst: JsonbToCString
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3186,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3186,1
    - Dst: pnstrdup
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3189,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3191,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3193,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3193,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3194,1
    - Dst: JsonbToCString
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3196,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3199,1
    - Dst: InputFunctionCallSafe
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3202,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3211,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 44
    argCount: 7
    argNames:
    - io
    - typid
    - typmod
    - jsv
    - isnull
    - escontext
    - omit_quotes
    argTypes:
    - ScalarIOData*
    - Oid
    - int32
    - JsValue*
    - bool*
    - Node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3214
      start: 3124
    functionDepth: 6
    functionLinenumber: 3124
    functionLinenumberEnd: 3214
    functionName: populate_scalar
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - pstrdup
    - unconstify
    - DirectFunctionCall1
    - JsonbValueToJsonb
    - pfree
    - DatumGetCString
    - JsonbToCString
    - JsonbPGetDatum
    - memcpy
    - escape_json_with_len
    - pnstrdup
    - VARSIZE
    - elog
    - palloc
    - Assert
    - escape_json
    - InputFunctionCallSafe
    - PointerGetDatum
    - initStringInfo
    linkageType: ''
    returnType: Datum
    signature: "Datum populate_scalar(ScalarIOData *io, Oid typid, int32 typmod, JsValue
      *jsv,\n\t\t\t\tbool *isnull, Node *escontext, bool omit_quotes)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: populate_record_field
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3232,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3234,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3236,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3236,1
    - Dst: domain_check_safe
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3239,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 8
    argNames:
    - io
    - typid
    - colname
    - mcxt
    - jsv
    - isnull
    - escontext
    - omit_quotes
    argTypes:
    - DomainIOData*
    - Oid
    - char*
    - MemoryContext
    - JsValue*
    - bool*
    - Node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3247
      start: 3216
    functionDepth: 1
    functionLinenumber: 3216
    functionLinenumberEnd: 3247
    functionName: populate_domain
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - SOFT_ERROR_OCCURRED
    - PointerGetDatum
    - populate_record_field
    - domain_check_safe
    linkageType: ''
    returnType: Datum
    signature: "Datum populate_domain(DomainIOData *io,\n\t\t\t\tOid typid,\n\t\t\t\tconst
      char *colname,\n\t\t\t\tMemoryContext mcxt,\n\t\t\t\tJsValue *jsv,\n\t\t\t\tbool
      *isnull,\n\t\t\t\tNode *escontext,\n\t\t\t\tbool omit_quotes)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3263,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3263,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3264,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3265,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3267,1
    - Dst: getBaseTypeAndTypmod
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3278,1
    - Dst: get_typtype
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3279,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3296,1
    - Dst: IsTrueArrayType
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3309,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3312,1
    - Dst: getTypeInputInfo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3329,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3330,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3333,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 46
    argCount: 5
    argNames:
    - column
    - typid
    - typmod
    - mcxt
    - need_scalar
    argTypes:
    - ColumnIOData*
    - Oid
    - int32
    - MemoryContext
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3334
      start: 3250
    functionDepth: 1
    functionLinenumber: 3250
    functionLinenumberEnd: 3334
    functionName: prepare_column_cache
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - getTypeInputInfo
    - IsTrueArrayType
    - ReleaseSysCache
    - HeapTupleIsValid
    - MemoryContextAllocZero
    - GETSTRUCT
    - getBaseTypeAndTypmod
    - SearchSysCache1
    - elog
    - get_typtype
    - fmgr_info_cxt
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: "void prepare_column_cache(ColumnIOData *column,\n\t\t\t\t\t Oid typid,\n\t\t\t\t\t
      int32 typmod,\n\t\t\t\t\t MemoryContext mcxt,\n\t\t\t\t\t bool need_scalar)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3365,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3367,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3368,1
    - Dst: DatumGetJsonbP
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3374,1
    - Dst: JsonbUnquote
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3380,1
    - Dst: DatumGetJsonbP
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3380,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3384,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3392,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3397,1
    - Dst: populate_record_field
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3399,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3400,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 9
    argNames:
    - json_val
    - json_type
    - typid
    - typmod
    - cache
    - mcxt
    - isnull
    - omit_quotes
    - escontext
    argTypes:
    - Datum
    - Oid
    - Oid
    - int32
    - void**
    - MemoryContext
    - bool*
    - bool
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3402
      start: 3344
    functionDepth: 2
    functionLinenumber: 3344
    functionLinenumberEnd: 3402
    functionName: json_populate_type
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 1
    functionsReached:
    - DatumGetJsonbP
    - MemoryContextAllocZero
    - VARSIZE
    - DatumGetTextPP
    - PointerGetDatum
    - JsonbUnquote
    - populate_record_field
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - strlen
    linkageType: ''
    returnType: Datum
    signature: "Datum json_populate_type(Datum json_val, Oid json_type,\n\t\t\t\t
      \  Oid typid, int32 typmod,\n\t\t\t\t   void **cache, MemoryContext mcxt,\n\t\t\t\t
      \  bool *isnull, bool omit_quotes,\n\t\t\t\t   Node *escontext)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3419,1
    - Dst: prepare_column_cache
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3426,1
    - Dst: JsValueIsNull
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3428,1
    - Dst: JsValueIsString
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3433,1
    - Dst: populate_scalar
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3448,1
    - Dst: populate_array
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3452,1
    - Dst: populate_composite
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3457,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3459,1
    - Dst: DatumGetHeapTupleHeader
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3460,1
    - Dst: populate_domain
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3466,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3470,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 10
    argNames:
    - col
    - typid
    - typmod
    - colname
    - mcxt
    - defaultval
    - jsv
    - isnull
    - escontext
    - omit_scalar_quotes
    argTypes:
    - ColumnIOData*
    - Oid
    - int32
    - char*
    - MemoryContext
    - Datum
    - JsValue*
    - bool*
    - Node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3473
      start: 3405
    functionDepth: 7
    functionLinenumber: 3405
    functionLinenumberEnd: 3473
    functionName: populate_record_field
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 3
    functionsReached:
    - check_stack_depth
    - populate_composite
    - populate_array
    - DatumGetHeapTupleHeader
    - populate_domain
    - elog
    - populate_scalar
    - JsValueIsString
    - DatumGetPointer
    - JsValueIsNull
    - prepare_column_cache
    linkageType: ''
    returnType: Datum
    signature: "Datum populate_record_field(ColumnIOData *col,\n\t\t\t\t\t  Oid typid,\n\t\t\t\t\t
      \ int32 typmod,\n\t\t\t\t\t  const char *colname,\n\t\t\t\t\t  MemoryContext
      mcxt,\n\t\t\t\t\t  Datum defaultval,\n\t\t\t\t\t  JsValue *jsv,\n\t\t\t\t\t
      \ bool *isnull,\n\t\t\t\t\t  Node *escontext,\n\t\t\t\t\t  bool omit_scalar_quotes)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3479,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - mcxt
    - ncolumns
    argTypes:
    - MemoryContext
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3489
      start: 3475
    functionDepth: 1
    functionLinenumber: 3475
    functionLinenumberEnd: 3489
    functionName: allocate_record_info
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - MemoryContextAlloc
    - MemSet
    linkageType: ''
    returnType: RecordIOData
    signature: 'RecordIOData *

      allocate_record_info(MemoryContext mcxt, int ncolumns)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_search
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3498,1
    - Dst: getKeyJsonValueFromContainer
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3511,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3511,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - obj
    - field
    - jsv
    argTypes:
    - JsObject*
    - char*
    - JsValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3516
      start: 3491
    functionDepth: 2
    functionLinenumber: 3491
    functionLinenumberEnd: 3516
    functionName: JsObjectGetField
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - getKeyJsonValueFromContainer
    - strlen
    - hash_search
    linkageType: ''
    returnType: bool
    signature: bool JsObjectGetField(JsObject *obj, char *field, JsValue *jsv)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: JsObjectIsEmpty
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3539,1
    - Dst: allocate_record_info
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3545,1
    - Dst: MemSet
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3551,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3558,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3559,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3566,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3567,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3572,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3585,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3586,1
    - Dst: JsObjectGetField
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3597,1
    - Dst: populate_record_field
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3610,1
    - Dst: heap_form_tuple
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3622,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3624,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3625,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 39
    argCount: 6
    argNames:
    - tupdesc
    - record_p
    - defaultval
    - mcxt
    - obj
    - escontext
    argTypes:
    - TupleDesc
    - RecordIOData**
    - HeapTupleHeader
    - MemoryContext
    - JsObject*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3628
      start: 3519
    functionDepth: 8
    functionLinenumber: 3519
    functionLinenumberEnd: 3628
    functionName: populate_record
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 1
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - heap_form_tuple
    - pfree
    - NameStr
    - palloc
    - JsObjectGetField
    - heap_deform_tuple
    - TupleDescAttr
    - ItemPointerSetInvalid
    - populate_record_field
    - MemSet
    - allocate_record_info
    - JsObjectIsEmpty
    linkageType: ''
    returnType: HeapTupleHeader
    signature: "HeapTupleHeader populate_record(TupleDesc tupdesc,\n\t\t\t\tRecordIOData
      **record_p,\n\t\t\t\tHeapTupleHeader defaultval,\n\t\t\t\tMemoryContext mcxt,\n\t\t\t\tJsObject
      *obj,\n\t\t\t\tNode *escontext)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3640,1
    - Dst: prepare_column_cache
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3641,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3646,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3647,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3649,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - fcinfo
    - funcname
    - cache
    argTypes:
    - FunctionCallInfo
    - char*
    - PopulateRecordCache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3651
      start: 3635
    functionDepth: 2
    functionLinenumber: 3635
    functionLinenumberEnd: 3651
    functionName: get_record_type_from_argument
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - prepare_column_cache
    - get_fn_expr_argtype
    - ereport
    - errcode
    linkageType: ''
    returnType: void
    signature: "void get_record_type_from_argument(FunctionCallInfo fcinfo,\n\t\t\t\t\t\t\t
      \ const char *funcname,\n\t\t\t\t\t\t\t  PopulateRecordCache *cache)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_call_result_type
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3669,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3670,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3671,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3673,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3675,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3679,1
    - Dst: FreeTupleDesc
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3684,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3687,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3688,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3691,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - fcinfo
    - funcname
    - cache
    argTypes:
    - FunctionCallInfo
    - char*
    - PopulateRecordCache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3692
      start: 3661
    functionDepth: 4
    functionLinenumber: 3661
    functionLinenumberEnd: 3692
    functionName: get_record_type_from_query
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - MemoryContextSwitchTo
    - CreateTupleDescCopy
    - ereport
    - errhint
    - FreeTupleDesc
    - get_call_result_type
    - errcode
    linkageType: ''
    returnType: void
    signature: "void get_record_type_from_query(FunctionCallInfo fcinfo,\n\t\t\t\t\t\t
      \  const char *funcname,\n\t\t\t\t\t\t   PopulateRecordCache *cache)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3720,1
    - Dst: get_record_type_from_argument
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3724,1
    - Dst: get_record_type_from_query
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3726,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3732,1
    - Dst: PG_GETARG_HEAPTUPLEHEADER
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3734,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3742,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3743,1
    - Dst: get_record_type_from_query
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3756,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3758,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3763,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3766,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3768,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3775,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3777,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3778,1
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3784,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3791,1
    - Dst: populate_composite
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3795,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3798,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3798,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3800,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 43
    argCount: 5
    argNames:
    - fcinfo
    - funcname
    - is_json
    - have_record_arg
    - escontext
    argTypes:
    - FunctionCallInfo
    - char*
    - bool
    - bool
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3801
      start: 3698
    functionDepth: 6
    functionLinenumber: 3698
    functionLinenumberEnd: 3801
    functionName: populate_record_worker
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 5
    functionsReached:
    - get_record_type_from_argument
    - populate_composite
    - Assert
    - SOFT_ERROR_OCCURRED
    - get_record_type_from_query
    - PG_GETARG_JSONB_P
    - PG_GETARG_TEXT_PP
    - PG_RETURN_DATUM
    - MemoryContextAllocZero
    - PG_ARGISNULL
    - VARSIZE
    - PG_RETURN_NULL
    - HeapTupleHeaderGetTypeId
    - HeapTupleHeaderGetTypMod
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - PG_GETARG_HEAPTUPLEHEADER
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: "Datum populate_record_worker(FunctionCallInfo fcinfo, const char *funcname,\n\t\t\t\t\t
      \  bool is_json, bool have_record_arg,\n\t\t\t\t\t   Node *escontext)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3822,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3827,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3828,1
    - Dst: makeJsonLexContextCstringLen
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3832,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3833,1
    - Dst: pg_parse_json_or_errsave
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3841,1
    - Dst: hash_destroy
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3843,1
    - Dst: freeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3847,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 4
    argNames:
    - json
    - len
    - funcname
    - escontext
    argTypes:
    - char*
    - int
    - char*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3850
      start: 3810
    functionDepth: 4
    functionLinenumber: 3810
    functionLinenumberEnd: 3850
    functionName: get_json_object_as_hash
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 1
    functionsReached:
    - freeJsonLexContext
    - GetDatabaseEncoding
    - hash_create
    - hash_destroy
    - palloc0
    - pg_parse_json_or_errsave
    - makeJsonLexContextCstringLen
    linkageType: ''
    returnType: HTAB
    signature: "HTAB *\nget_json_object_as_hash(const char *json, int len, const char
      *funcname,\n\t\t\t\t\t\tNode *escontext)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - state
    - fname
    - isnull
    argTypes:
    - void*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3876
      start: 3852
    functionDepth: 0
    functionLinenumber: 3852
    functionLinenumberEnd: 3876
    functionName: hash_object_field_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType hash_object_field_start(void *state, char *fname,
      bool isnull)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3898,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3901,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3909,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3914,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3916,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - state
    - fname
    - isnull
    argTypes:
    - void*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3927
      start: 3878
    functionDepth: 2
    functionLinenumber: 3878
    functionLinenumberEnd: 3927
    functionName: hash_object_field_end
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - hash_search
    - memcpy
    - palloc
    - strlen
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType hash_object_field_end(void *state, char *fname,
      bool isnull)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3935,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3936,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3937,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3940
      start: 3929
    functionDepth: 2
    functionLinenumber: 3929
    functionLinenumberEnd: 3940
    functionName: hash_array_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - ereport
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType hash_array_start(void *state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3948,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3949,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3950,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3956,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - state
    - token
    - tokentype
    argTypes:
    - void*
    - char*
    - JsonTokenType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3960
      start: 3942
    functionDepth: 2
    functionLinenumber: 3942
    functionLinenumberEnd: 3960
    functionName: hash_scalar
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - errcode
    - ereport
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType hash_scalar(void *state, char *token, JsonTokenType
      tokentype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: populate_recordset_worker
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3976,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3978
      start: 3973
    functionDepth: 1
    functionLinenumber: 3973
    functionLinenumberEnd: 3978
    functionName: jsonb_populate_recordset
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - populate_recordset_worker
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_populate_recordset(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: populate_recordset_worker
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3983,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3985
      start: 3980
    functionDepth: 1
    functionLinenumber: 3980
    functionLinenumberEnd: 3985
    functionName: jsonb_to_recordset
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - populate_recordset_worker
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_to_recordset(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: populate_recordset_worker
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3990,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3992
      start: 3987
    functionDepth: 1
    functionLinenumber: 3987
    functionLinenumberEnd: 3992
    functionName: json_populate_recordset
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - populate_recordset_worker
    linkageType: ''
    returnType: Datum
    signature: Datum json_populate_recordset(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: populate_recordset_worker
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:3997,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3999
      start: 3994
    functionDepth: 1
    functionLinenumber: 3994
    functionLinenumberEnd: 3999
    functionName: json_to_recordset
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - populate_recordset_worker
    linkageType: ''
    returnType: Datum
    signature: Datum json_to_recordset(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: update_cached_tupdesc
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4009,1
    - Dst: populate_record
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4012,1
    - Dst: domain_check_safe
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4021,1
    - Dst: HeapTupleHeaderGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4021,1
    - Dst: HeapTupleHeaderGetDatumLength
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4028,1
    - Dst: ItemPointerSetInvalid
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4029,1
    - Dst: tuplestore_puttuple
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4033,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - state
    - obj
    argTypes:
    - PopulateRecordsetState*
    - JsObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4034
      start: 4001
    functionDepth: 9
    functionLinenumber: 4001
    functionLinenumberEnd: 4034
    functionName: populate_recordset_record
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - HeapTupleHeaderGetDatumLength
    - populate_record
    - HeapTupleHeaderGetDatum
    - domain_check_safe
    - ItemPointerSetInvalid
    - tuplestore_puttuple
    - update_cached_tupdesc
    linkageType: ''
    returnType: void
    signature: void populate_recordset_record(PopulateRecordsetState *state, JsObject
      *obj)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4053,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4054,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4055,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4056,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4059,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4060,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4061,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4073,1
    - Dst: get_record_type_from_argument
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4077,1
    - Dst: get_record_type_from_query
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4079,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4085,1
    - Dst: PG_GETARG_HEAPTUPLEHEADER
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4087,1
    - Dst: HeapTupleHeaderGetTypeId
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4095,1
    - Dst: HeapTupleHeaderGetTypMod
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4096,1
    - Dst: get_record_type_from_query
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4109,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4111,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4116,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4117,1
    - Dst: update_cached_tupdesc
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4123,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4125,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4128,1
    - Dst: tuplestore_begin_heap
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4129,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4132,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4140,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4144,1
    - Dst: makeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4146,1
    - Dst: pg_parse_json_or_ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4159,1
    - Dst: freeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4161,1
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4166,1
    - Dst: JB_ROOT_IS_SCALAR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4172,1
    - Dst: JB_ROOT_IS_ARRAY
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4172,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4173,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4174,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4175,1
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4178,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4180,1
    - Dst: JsonContainerIsObject
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4189,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4190,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4191,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4192,1
    - Dst: populate_recordset_record
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4198,1
    - Dst: CreateTupleDescCopy
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4209,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4211,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 72
    argCount: 4
    argNames:
    - fcinfo
    - funcname
    - is_json
    - have_record_arg
    argTypes:
    - FunctionCallInfo
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4212
      start: 4040
    functionDepth: 10
    functionLinenumber: 4040
    functionLinenumberEnd: 4212
    functionName: populate_recordset_worker
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 4
    functionsReached:
    - get_record_type_from_argument
    - MemoryContextSwitchTo
    - CreateTupleDescCopy
    - tuplestore_begin_heap
    - populate_recordset_record
    - HeapTupleHeaderGetTypMod
    - update_cached_tupdesc
    - get_record_type_from_query
    - JB_ROOT_IS_ARRAY
    - JB_ROOT_IS_SCALAR
    - PG_GETARG_HEAPTUPLEHEADER
    - JsonContainerIsObject
    - errmsg
    - freeJsonLexContext
    - makeJsonLexContext
    - MemoryContextAllocZero
    - IsA
    - PG_ARGISNULL
    - pg_parse_json_or_ereport
    - PG_GETARG_JSONB_P
    - Assert
    - PG_GETARG_TEXT_PP
    - ereport
    - palloc0
    - JsonbIteratorInit
    - PG_RETURN_NULL
    - HeapTupleHeaderGetTypeId
    - JsonbIteratorNext
    - errcode
    linkageType: ''
    returnType: Datum
    signature: "Datum populate_recordset_worker(FunctionCallInfo fcinfo, const char
      *funcname,\n\t\t\t\t\t\t  bool is_json, bool have_record_arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4223,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4224,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4225,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4236,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4242
      start: 4214
    functionDepth: 2
    functionLinenumber: 4214
    functionLinenumberEnd: 4242
    functionName: populate_recordset_object_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - hash_create
    - errcode
    - ereport
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType populate_recordset_object_start(void *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: populate_recordset_record
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4258,1
    - Dst: hash_destroy
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4265
      start: 4244
    functionDepth: 10
    functionLinenumber: 4244
    functionLinenumberEnd: 4265
    functionName: populate_recordset_object_end
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - populate_recordset_record
    - hash_destroy
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType populate_recordset_object_end(void *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4274,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4275,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4276,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - state
    - isnull
    argTypes:
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4280
      start: 4267
    functionDepth: 2
    functionLinenumber: 4267
    functionLinenumberEnd: 4280
    functionName: populate_recordset_array_element_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - ereport
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType populate_recordset_array_element_start(void *state,
      bool isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4287
      start: 4282
    functionDepth: 0
    functionLinenumber: 4282
    functionLinenumberEnd: 4287
    functionName: populate_recordset_array_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType populate_recordset_array_start(void *state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4295,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4296,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4297,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - state
    - token
    - tokentype
    argTypes:
    - void*
    - char*
    - JsonTokenType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4304
      start: 4289
    functionDepth: 2
    functionLinenumber: 4289
    functionLinenumberEnd: 4304
    functionName: populate_recordset_scalar
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - ereport
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType populate_recordset_scalar(void *state, char *token,
      JsonTokenType tokentype)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - state
    - fname
    - isnull
    argTypes:
    - void*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4327
      start: 4306
    functionDepth: 0
    functionLinenumber: 4306
    functionLinenumberEnd: 4327
    functionName: populate_recordset_object_field_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType populate_recordset_object_field_start(void *state,
      char *fname, bool isnull)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4349,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4352,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4360,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4365,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4367,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - state
    - fname
    - isnull
    argTypes:
    - void*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4378
      start: 4329
    functionDepth: 2
    functionLinenumber: 4329
    functionLinenumberEnd: 4378
    functionName: populate_recordset_object_field_end
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - hash_search
    - memcpy
    - palloc
    - strlen
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType populate_recordset_object_field_end(void *state,
      char *fname, bool isnull)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4397
      start: 4389
    functionDepth: 1
    functionLinenumber: 4389
    functionLinenumberEnd: 4397
    functionName: sn_object_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - appendStringInfoCharMacro
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType sn_object_start(void *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4407
      start: 4399
    functionDepth: 1
    functionLinenumber: 4399
    functionLinenumberEnd: 4407
    functionName: sn_object_end
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - appendStringInfoCharMacro
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType sn_object_end(void *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4417
      start: 4409
    functionDepth: 1
    functionLinenumber: 4409
    functionLinenumberEnd: 4417
    functionName: sn_array_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - appendStringInfoCharMacro
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType sn_array_start(void *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4427
      start: 4419
    functionDepth: 1
    functionLinenumber: 4419
    functionLinenumberEnd: 4427
    functionName: sn_array_end
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - appendStringInfoCharMacro
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType sn_array_end(void *state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4446,1
    - Dst: escape_json
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4452,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4454,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - state
    - fname
    - isnull
    argTypes:
    - void*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4457
      start: 4429
    functionDepth: 1
    functionLinenumber: 4429
    functionLinenumberEnd: 4457
    functionName: sn_object_field_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - appendStringInfoCharMacro
    - escape_json
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType sn_object_field_start(void *state, char *fname,
      bool isnull)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4475,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - state
    - isnull
    argTypes:
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4479
      start: 4459
    functionDepth: 1
    functionLinenumber: 4459
    functionLinenumberEnd: 4479
    functionName: sn_array_element_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - appendStringInfoCharMacro
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType sn_array_element_start(void *state, bool isnull)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4488,1
    - Dst: escape_json
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4494,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4496,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - state
    - token
    - tokentype
    argTypes:
    - void*
    - char*
    - JsonTokenType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4499
      start: 4481
    functionDepth: 2
    functionLinenumber: 4481
    functionLinenumberEnd: 4499
    functionName: sn_scalar
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - escape_json
    - appendStringInfoString
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType sn_scalar(void *state, char *token, JsonTokenType
      tokentype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4507,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4508,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4508,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4513,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4514,1
    - Dst: makeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4516,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4517,1
    - Dst: pg_parse_json_or_ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4530,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4532,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4532,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4534
      start: 4504
    functionDepth: 4
    functionLinenumber: 4504
    functionLinenumberEnd: 4534
    functionName: json_strip_nulls
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - makeStringInfo
    - makeJsonLexContext
    - PG_GETARG_TEXT_PP
    - palloc0
    - pg_parse_json_or_ereport
    - PG_GETARG_BOOL
    - PG_RETURN_TEXT_P
    - PG_NARGS
    - cstring_to_text_with_len
    linkageType: ''
    returnType: Datum
    signature: Datum json_strip_nulls(PG_FUNCTION_ARGS)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4542,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4552,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4553,1
    - Dst: JB_ROOT_IS_SCALAR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4555,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4556,1
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4558,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4560,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4562,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4582,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4591,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4593,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4596,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4598,1
    - Dst: JsonbValueToJsonb
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4598,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4599
      start: 4539
    functionDepth: 1
    functionLinenumber: 4539
    functionLinenumberEnd: 4599
    functionName: jsonb_strip_nulls
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - PG_GETARG_JSONB_P
    - JB_ROOT_IS_SCALAR
    - JsonbIteratorInit
    - PG_GETARG_BOOL
    - JsonbIteratorNext
    - PG_NARGS
    - JsonbValueToJsonb
    - pushJsonbValue
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_strip_nulls(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4609,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4610,1
    - Dst: JsonbToCStringIndent
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4612,1
    - Dst: VARSIZE
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4612,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4614,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4614,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4615
      start: 4606
    functionDepth: 4
    functionLinenumber: 4606
    functionLinenumberEnd: 4615
    functionName: jsonb_pretty
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - makeStringInfo
    - JsonbToCStringIndent
    - VARSIZE
    - PG_RETURN_TEXT_P
    - PG_GETARG_JSONB_P
    - cstring_to_text_with_len
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_pretty(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4625,1
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4626,1
    - Dst: JB_ROOT_IS_OBJECT
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4638,1
    - Dst: JB_ROOT_IS_OBJECT
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4638,1
    - Dst: JB_ROOT_COUNT
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4640,1
    - Dst: JB_ROOT_IS_SCALAR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4640,1
    - Dst: PG_RETURN_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4641,1
    - Dst: JB_ROOT_COUNT
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4642,1
    - Dst: JB_ROOT_IS_SCALAR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4642,1
    - Dst: PG_RETURN_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4643,1
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4646,1
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4647,1
    - Dst: IteratorConcat
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4649,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4651,1
    - Dst: PG_RETURN_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4653,1
    - Dst: JsonbValueToJsonb
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4653,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4654
      start: 4622
    functionDepth: 1
    functionLinenumber: 4622
    functionLinenumberEnd: 4654
    functionName: jsonb_concat
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - JB_ROOT_COUNT
    - Assert
    - JB_ROOT_IS_OBJECT
    - PG_RETURN_JSONB_P
    - JB_ROOT_IS_SCALAR
    - JsonbIteratorInit
    - IteratorConcat
    - JsonbValueToJsonb
    - PG_GETARG_JSONB_P
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_concat(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4666,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4667,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4668,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4669,1
    - Dst: JB_ROOT_IS_SCALAR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4677,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4678,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4679,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4680,1
    - Dst: JB_ROOT_COUNT
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4682,1
    - Dst: PG_RETURN_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4683,1
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4685,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4687,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4693,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4697,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4702,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4705,1
    - Dst: PG_RETURN_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4707,1
    - Dst: JsonbValueToJsonb
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4707,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4708
      start: 4663
    functionDepth: 2
    functionLinenumber: 4663
    functionLinenumberEnd: 4708
    functionName: jsonb_delete
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - JB_ROOT_COUNT
    - Assert
    - PG_GETARG_TEXT_PP
    - memcmp
    - PG_RETURN_JSONB_P
    - JB_ROOT_IS_SCALAR
    - ereport
    - JsonbIteratorInit
    - JsonbIteratorNext
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - JsonbValueToJsonb
    - pushJsonbValue
    - errcode
    - PG_GETARG_JSONB_P
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_delete(PG_FUNCTION_ARGS)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4719,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4720,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4731,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4732,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4733,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4734,1
    - Dst: JB_ROOT_IS_SCALAR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4736,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4737,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4738,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4739,1
    - Dst: JB_ROOT_COUNT
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4741,1
    - Dst: PG_RETURN_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4742,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4744,1
    - Dst: PG_RETURN_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4747,1
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4749,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4751,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4769,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4770,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4772,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4782,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4788,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4791,1
    - Dst: PG_RETURN_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4793,1
    - Dst: JsonbValueToJsonb
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4793,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4794
      start: 4716
    functionDepth: 2
    functionLinenumber: 4716
    functionLinenumberEnd: 4794
    functionName: jsonb_delete_array
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - JB_ROOT_COUNT
    - Assert
    - deconstruct_array_builtin
    - PG_GETARG_JSONB_P
    - ARR_NDIM
    - memcmp
    - PG_RETURN_JSONB_P
    - ereport
    - JB_ROOT_IS_SCALAR
    - JsonbIteratorInit
    - JsonbIteratorNext
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - JsonbValueToJsonb
    - pushJsonbValue
    - errcode
    - PG_GETARG_ARRAYTYPE_P
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_delete_array(PG_FUNCTION_ARGS)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4806,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4807,1
    - Dst: JB_ROOT_IS_SCALAR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4816,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4817,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4818,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4819,1
    - Dst: JB_ROOT_IS_OBJECT
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4821,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4822,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4823,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4824,1
    - Dst: JB_ROOT_COUNT
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4826,1
    - Dst: PG_RETURN_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4827,1
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4829,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4831,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4832,1
    - Dst: pg_abs_s32
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4837,1
    - Dst: PG_RETURN_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4844,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4846,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4848,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4856,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4859,1
    - Dst: PG_RETURN_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4861,1
    - Dst: JsonbValueToJsonb
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4861,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4862
      start: 4803
    functionDepth: 2
    functionLinenumber: 4803
    functionLinenumberEnd: 4862
    functionName: jsonb_delete_idx
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - JB_ROOT_COUNT
    - Assert
    - JB_ROOT_IS_OBJECT
    - PG_RETURN_JSONB_P
    - JB_ROOT_IS_SCALAR
    - ereport
    - pg_abs_s32
    - JsonbIteratorInit
    - PG_GETARG_INT32
    - JsonbIteratorNext
    - JsonbValueToJsonb
    - pushJsonbValue
    - errcode
    - PG_GETARG_JSONB_P
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_delete_idx(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4870,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4871,1
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4872,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4874,1
    - Dst: JsonbToJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4882,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4884,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4885,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4886,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4887,1
    - Dst: JB_ROOT_IS_SCALAR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4889,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4890,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4891,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4892,1
    - Dst: JB_ROOT_COUNT
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4894,1
    - Dst: PG_RETURN_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4895,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4897,1
    - Dst: PG_RETURN_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4900,1
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4902,1
    - Dst: setPath
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4904,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4907,1
    - Dst: PG_RETURN_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4909,1
    - Dst: JsonbValueToJsonb
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4909,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4910
      start: 4867
    functionDepth: 2
    functionLinenumber: 4867
    functionLinenumberEnd: 4910
    functionName: jsonb_set
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - JB_ROOT_COUNT
    - Assert
    - deconstruct_array_builtin
    - PG_GETARG_JSONB_P
    - ARR_NDIM
    - PG_RETURN_JSONB_P
    - ereport
    - JB_ROOT_IS_SCALAR
    - JsonbIteratorInit
    - PG_GETARG_BOOL
    - setPath
    - JsonbValueToJsonb
    - JsonbToJsonbValue
    - errcode
    - PG_GETARG_ARRAYTYPE_P
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_set(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4926,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4926,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4926,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4927,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4930,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4931,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4932,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4933,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4936,1
    - Dst: jsonb_set
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4937,1
    - Dst: PG_GETARG_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4939,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4940,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4942,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4944,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4945,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4946,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4947,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4948,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4951,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4955,1
    - Dst: CStringGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4955,1
    - Dst: jsonb_set
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4959,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4961,1
    - Dst: jsonb_delete_path
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4963,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4965,1
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4967,1
    - Dst: PG_RETURN_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4969,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4973,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4974,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4975,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4978
      start: 4916
    functionDepth: 3
    functionLinenumber: 4916
    functionLinenumberEnd: 4978
    functionName: jsonb_set_lax
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - jsonb_delete_path
    - text_to_cstring
    - PG_ARGISNULL
    - ereport
    - PG_RETURN_JSONB_P
    - jsonb_set
    - errhint
    - PG_RETURN_NULL
    - CStringGetDatum
    - errdetail
    - strcmp
    - DirectFunctionCall1
    - PG_GETARG_TEXT_P
    - errcode
    - PG_GETARG_JSONB_P
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_set_lax(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4986,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4987,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4995,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4996,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4997,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:4998,1
    - Dst: JB_ROOT_IS_SCALAR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5000,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5001,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5002,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5003,1
    - Dst: JB_ROOT_COUNT
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5005,1
    - Dst: PG_RETURN_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5006,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5008,1
    - Dst: PG_RETURN_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5011,1
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5013,1
    - Dst: setPath
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5015,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5018,1
    - Dst: PG_RETURN_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5020,1
    - Dst: JsonbValueToJsonb
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5020,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5021
      start: 4983
    functionDepth: 2
    functionLinenumber: 4983
    functionLinenumberEnd: 5021
    functionName: jsonb_delete_path
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 1
    functionsReached:
    - errmsg
    - JB_ROOT_COUNT
    - Assert
    - deconstruct_array_builtin
    - PG_GETARG_JSONB_P
    - ARR_NDIM
    - PG_RETURN_JSONB_P
    - ereport
    - JB_ROOT_IS_SCALAR
    - JsonbIteratorInit
    - setPath
    - JsonbValueToJsonb
    - errcode
    - PG_GETARG_ARRAYTYPE_P
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_delete_path(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5029,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5030,1
    - Dst: PG_GETARG_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5031,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5033,1
    - Dst: JsonbToJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5041,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5043,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5044,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5045,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5046,1
    - Dst: JB_ROOT_IS_SCALAR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5048,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5049,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5050,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5051,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5053,1
    - Dst: PG_RETURN_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5056,1
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5058,1
    - Dst: setPath
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5060,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5063,1
    - Dst: PG_RETURN_JSONB_P
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5065,1
    - Dst: JsonbValueToJsonb
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5065,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5066
      start: 5026
    functionDepth: 2
    functionLinenumber: 5026
    functionLinenumberEnd: 5066
    functionName: jsonb_insert
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - deconstruct_array_builtin
    - PG_GETARG_JSONB_P
    - ARR_NDIM
    - PG_RETURN_JSONB_P
    - ereport
    - JB_ROOT_IS_SCALAR
    - JsonbIteratorInit
    - PG_GETARG_BOOL
    - setPath
    - JsonbValueToJsonb
    - JsonbToJsonbValue
    - errcode
    - PG_GETARG_ARRAYTYPE_P
    linkageType: ''
    returnType: Datum
    signature: Datum jsonb_insert(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5087,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5088,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5102,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5103,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5104,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5111,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5112,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5119,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5121,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5123,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5124,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5127,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5129,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5130,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5133,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5140,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5142,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5144,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5145,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5146,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5148,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5149,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5156,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5157,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5159,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5161,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5162,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5164,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5165,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5166,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5168,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 3
    argNames:
    - it1
    - it2
    - state
    argTypes:
    - JsonbIterator**
    - JsonbIterator**
    - JsonbParseState**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5172
      start: 5075
    functionDepth: 1
    functionLinenumber: 5075
    functionLinenumberEnd: 5172
    functionName: IteratorConcat
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 1
    functionsReached:
    - Assert
    - pushJsonbValue
    - JsonbIteratorNext
    linkageType: ''
    returnType: JsonbValue
    signature: "JsonbValue *\nIteratorConcat(JsonbIterator **it1, JsonbIterator **it2,\n\t\t\t
      \  JsonbParseState **state)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: check_stack_depth
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5212,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5215,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5216,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5217,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5220,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5234,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5235,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5236,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5237,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5240,1
    - Dst: setPathArray
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5241,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5243,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5244,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5245,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5248,1
    - Dst: setPathObject
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5249,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5251,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5252,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5253,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5265,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5266,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5267,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5268,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5271,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5274,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 8
    argNames:
    - it
    - path_elems
    - path_nulls
    - path_len
    - st
    - level
    - newval
    - op_type
    argTypes:
    - JsonbIterator**
    - Datum*
    - bool*
    - int
    - JsonbParseState**
    - int
    - JsonbValue*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5280
      start: 5203
    functionDepth: 2
    functionLinenumber: 5203
    functionLinenumberEnd: 5280
    functionName: setPath
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 4
    functionsReached:
    - check_stack_depth
    - errmsg
    - Assert
    - setPathObject
    - setPathArray
    - pushJsonbValue
    - ereport
    - elog
    - JsonbIteratorNext
    - errdetail
    - errcode
    linkageType: ''
    returnType: JsonbValue
    signature: "JsonbValue *\nsetPath(JsonbIterator **it, Datum *path_elems,\n\t\tbool
      *path_nulls, int path_len,\n\t\tJsonbParseState **st, int level, JsonbValue
      *newval, int op_type)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5301,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5311,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5312,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5314,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5315,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5320,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5322,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5325,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5326,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5326,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5338,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5339,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5340,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5341,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5344,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5347,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5348,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5353,1
    - Dst: setPath
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5354,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5366,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5367,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5369,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5370,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5373,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5374,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5375,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5382,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5389,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5410,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5411,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5413,1
    - Dst: push_path
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5414,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 58
    argCount: 9
    argNames:
    - it
    - path_elems
    - path_nulls
    - path_len
    - st
    - level
    - newval
    - npairs
    - op_type
    argTypes:
    - JsonbIterator**
    - Datum*
    - bool*
    - int
    - JsonbParseState**
    - int
    - JsonbValue*
    - uint32
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5419
      start: 5285
    functionDepth: 3
    functionLinenumber: 5285
    functionLinenumberEnd: 5419
    functionName: setPathObject
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 1
    functionsReached:
    - errmsg
    - Assert
    - memcmp
    - push_path
    - DatumGetTextPP
    - ereport
    - errhint
    - JsonbIteratorNext
    - setPath
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - pushJsonbValue
    - errcode
    linkageType: ''
    returnType: void
    signature: "void setPathObject(JsonbIterator **it, Datum *path_elems, bool *path_nulls,\n\t\t\t
      \ int path_len, JsonbParseState **st, int level,\n\t\t\t  JsonbValue *newval,
      uint32 npairs, int op_type)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5437,1
    - Dst: strtoint
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5441,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5443,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5444,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5445,1
    - Dst: pg_abs_s32
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5453,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5460,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5461,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5462,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5489,1
    - Dst: push_null_elements
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5492,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5494,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5510,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5513,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5521,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5524,1
    - Dst: setPath
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5527,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5532,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5534,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5542,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5549,1
    - Dst: push_null_elements
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5562,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5564,1
    - Dst: push_null_elements
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5581,1
    - Dst: push_path
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5583,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 66
    argCount: 9
    argNames:
    - it
    - path_elems
    - path_nulls
    - path_len
    - st
    - level
    - newval
    - nelems
    - op_type
    argTypes:
    - JsonbIterator**
    - Datum*
    - bool*
    - int
    - JsonbParseState**
    - int
    - JsonbValue*
    - uint32
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5588
      start: 5424
    functionDepth: 3
    functionLinenumber: 5424
    functionLinenumberEnd: 5588
    functionName: setPathArray
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 1
    functionsReached:
    - errmsg
    - Assert
    - push_null_elements
    - TextDatumGetCString
    - push_path
    - ereport
    - pg_abs_s32
    - JsonbIteratorNext
    - setPath
    - pushJsonbValue
    - errcode
    - strtoint
    linkageType: ''
    returnType: void
    signature: "void setPathArray(JsonbIterator **it, Datum *path_elems, bool *path_nulls,\n\t\t\t
      int path_len, JsonbParseState **st, int level,\n\t\t\t JsonbValue *newval, uint32
      nelems, int op_type)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5603,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5605,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5613,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5613,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5614,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5616,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5619,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5620,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5621,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5622,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5625,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5628,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5631,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5634,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5637,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5640,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5641,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5642,1
    - Dst: pnstrdup
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5643,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5644,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5649,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5652,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5654,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 26
    argCount: 1
    argNames:
    - jb
    argTypes:
    - Jsonb*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5657
      start: 5595
    functionDepth: 2
    functionLinenumber: 5595
    functionLinenumberEnd: 5657
    functionName: parse_jsonb_index_flags
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 4
    functionsReached:
    - errmsg
    - pnstrdup
    - ereport
    - JsonbIteratorInit
    - errhint
    - elog
    - JsonbIteratorNext
    - pg_strncasecmp
    - errcode
    linkageType: ''
    returnType: uint32
    signature: uint32 parse_jsonb_index_flags(Jsonb *jb)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5671,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5677,1
    - Dst: action
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5682,1
    - Dst: action
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5697,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5704,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5704,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5705,1
    - Dst: action
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5707,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5707,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5708,1
    - Dst: action
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5715,1
    - Dst: action
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5717,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 34
    argCount: 4
    argNames:
    - jb
    - flags
    - state
    - action
    argTypes:
    - Jsonb*
    - uint32
    - void*
    - JsonIterateStringValuesAction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5725
      start: 5663
    functionDepth: 2
    functionLinenumber: 5663
    functionLinenumberEnd: 5725
    functionName: iterate_jsonb_values
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 1
    functionsReached:
    - pfree
    - DatumGetCString
    - JsonbIteratorInit
    - NumericGetDatum
    - JsonbIteratorNext
    - action
    - DirectFunctionCall1
    - strlen
    linkageType: ''
    returnType: void
    signature: "void iterate_jsonb_values(Jsonb *jb, uint32 flags, void *state,\n\t\t\t\t\t
      JsonIterateStringValuesAction action)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5736,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5737,1
    - Dst: makeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5739,1
    - Dst: pg_parse_json_or_ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5748,1
    - Dst: freeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5749,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - json
    - flags
    - action_state
    - action
    argTypes:
    - text*
    - uint32
    - void*
    - JsonIterateStringValuesAction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5750
      start: 5731
    functionDepth: 3
    functionLinenumber: 5731
    functionLinenumberEnd: 5750
    functionName: iterate_json_values
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 1
    functionsReached:
    - makeJsonLexContext
    - freeJsonLexContext
    - palloc0
    - pg_parse_json_or_ereport
    linkageType: ''
    returnType: void
    signature: "void iterate_json_values(text *json, uint32 flags, void *action_state,\n\t\t\t\t\tJsonIterateStringValuesAction
      action)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: IterateJsonStringValuesState*::action
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5765,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5765,1
    - Dst: IterateJsonStringValuesState*::action
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5769,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5769,1
    - Dst: IterateJsonStringValuesState*::action
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5774,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5774,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 3
    argNames:
    - state
    - token
    - tokentype
    argTypes:
    - void*
    - char*
    - JsonTokenType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5782
      start: 5756
    functionDepth: 0
    functionLinenumber: 5756
    functionLinenumberEnd: 5782
    functionName: iterate_values_scalar
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - IterateJsonStringValuesState*::action
    - strlen
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType iterate_values_scalar(void *state, char *token,
      JsonTokenType tokentype)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5791,1
    - Dst: IterateJsonStringValuesState*::action
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5793,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5793,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - state
    - fname
    - isnull
    argTypes:
    - void*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5797
      start: 5784
    functionDepth: 0
    functionLinenumber: 5784
    functionLinenumberEnd: 5797
    functionName: iterate_values_object_field_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - IterateJsonStringValuesState*::action
    - strlen
    - pstrdup
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType iterate_values_object_field_start(void *state, char
      *fname, bool isnull)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: JsonbIteratorInit
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5817,1
    - Dst: JsonbIteratorNext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5820,1
    - Dst: transform_action
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5824,1
    - Dst: pg_detoast_datum_packed
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5826,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5827,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5828,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5829,1
    - Dst: pushJsonbValue
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5833,1
    - Dst: JsonbValueToJsonb
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5842,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 3
    argNames:
    - jsonb
    - action_state
    - transform_action
    argTypes:
    - Jsonb*
    - void*
    - JsonTransformStringValuesAction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5843
      start: 5805
    functionDepth: 1
    functionLinenumber: 5805
    functionLinenumberEnd: 5843
    functionName: transform_jsonb_string_values
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 1
    functionsReached:
    - pg_detoast_datum_packed
    - transform_action
    - JsonbIteratorInit
    - JsonbIteratorNext
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - pushJsonbValue
    - JsonbValueToJsonb
    linkageType: ''
    returnType: Jsonb
    signature: "Jsonb *\ntransform_jsonb_string_values(Jsonb *jsonb, void *action_state,\n\t\t\t\t\t\t\t
      \ JsonTransformStringValuesAction transform_action)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5857,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5858,1
    - Dst: makeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5860,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5861,1
    - Dst: pg_parse_json_or_ereport
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5874,1
    - Dst: freeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5875,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5877,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 3
    argNames:
    - json
    - action_state
    - transform_action
    argTypes:
    - text*
    - void*
    - JsonTransformStringValuesAction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5878
      start: 5852
    functionDepth: 4
    functionLinenumber: 5852
    functionLinenumberEnd: 5878
    functionName: transform_json_string_values
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 1
    functionsReached:
    - freeJsonLexContext
    - makeStringInfo
    - makeJsonLexContext
    - palloc0
    - pg_parse_json_or_ereport
    - cstring_to_text_with_len
    linkageType: ''
    returnType: text
    signature: "text *\ntransform_json_string_values(text *json, void *action_state,\n\t\t\t\t\t\t\t
      JsonTransformStringValuesAction transform_action)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5890,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5893
      start: 5885
    functionDepth: 1
    functionLinenumber: 5885
    functionLinenumberEnd: 5893
    functionName: transform_string_values_object_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - appendStringInfoCharMacro
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType transform_string_values_object_start(void *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5900,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5903
      start: 5895
    functionDepth: 1
    functionLinenumber: 5895
    functionLinenumberEnd: 5903
    functionName: transform_string_values_object_end
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - appendStringInfoCharMacro
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType transform_string_values_object_end(void *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5910,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5913
      start: 5905
    functionDepth: 1
    functionLinenumber: 5905
    functionLinenumberEnd: 5913
    functionName: transform_string_values_array_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - appendStringInfoCharMacro
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType transform_string_values_array_start(void *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5920,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5923
      start: 5915
    functionDepth: 1
    functionLinenumber: 5915
    functionLinenumberEnd: 5923
    functionName: transform_string_values_array_end
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - appendStringInfoCharMacro
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType transform_string_values_array_end(void *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5931,1
    - Dst: escape_json
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5937,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5938,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - state
    - fname
    - isnull
    argTypes:
    - void*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5941
      start: 5925
    functionDepth: 1
    functionLinenumber: 5925
    functionLinenumberEnd: 5941
    functionName: transform_string_values_object_field_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - appendStringInfoCharMacro
    - escape_json
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType transform_string_values_object_field_start(void
      *state, char *fname, bool isnull)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5949,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - state
    - isnull
    argTypes:
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5952
      start: 5943
    functionDepth: 1
    functionLinenumber: 5943
    functionLinenumberEnd: 5952
    functionName: transform_string_values_array_element_start
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - appendStringInfoCharMacro
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType transform_string_values_array_element_start(void
      *state, bool isnull)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TransformJsonStringValuesState*::action
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5961,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5961,1
    - Dst: escape_json_text
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5963,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5966,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - state
    - token
    - tokentype
    argTypes:
    - void*
    - char*
    - JsonTokenType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5969
      start: 5954
    functionDepth: 7
    functionLinenumber: 5954
    functionLinenumberEnd: 5969
    functionName: transform_string_values_scalar
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 0
    functionsReached:
    - escape_json_text
    - appendStringInfoString
    - strlen
    - TransformJsonStringValuesState*::action
    linkageType: ''
    returnType: JsonParseErrorType
    signature: JsonParseErrorType transform_string_values_scalar(void *state, char
      *token, JsonTokenType tokentype)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: makeJsonLexContext
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5977,1
    - Dst: json_lex
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5980,1
    - Dst: json_errsave_error
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:5986,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - json
    - throw_error
    argTypes:
    - text*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5989
      start: 5971
    functionDepth: 3
    functionLinenumber: 5971
    functionLinenumberEnd: 5989
    functionName: json_get_first_token
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 1
    functionsReached:
    - makeJsonLexContext
    - json_lex
    - json_errsave_error
    linkageType: ''
    returnType: JsonTokenType
    signature: JsonTokenType json_get_first_token(text *json, bool throw_error)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: getBaseType
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:6005,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:6022,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:6042,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:6047,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:6053,1
    - Dst: get_element_type
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:6053,1
    - Dst: type_is_rowtype
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:6059,1
    - Dst: find_coercion_pathway
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:6077,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:6080,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:6088,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/utils/adt/jsonfuncs.c:6094,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 61
    argCount: 4
    argNames:
    - typoid
    - is_jsonb
    - tcategory
    - outfuncoid
    argTypes:
    - Oid
    - bool
    - JsonTypeCategory*
    - Oid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6099
      start: 5998
    functionDepth: 1
    functionLinenumber: 5998
    functionLinenumberEnd: 6099
    functionName: json_categorize_type
    functionSourceFile: /src/postgres/src/backend/utils/adt/jsonfuncs.c
    functionUses: 8
    functionsReached:
    - find_coercion_pathway
    - getTypeOutputInfo
    - getBaseType
    - OidIsValid
    - get_element_type
    - type_is_rowtype
    linkageType: ''
    returnType: void
    signature: "void json_categorize_type(Oid typoid, bool is_jsonb,\n\t\t\t\t\t JsonTypeCategory
      *tcategory, Oid *outfuncoid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 30
    functionName: OidVectorSize
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OidVectorSize(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/oid.c:39,1
    - Dst: uint32in_subr
      Src: /src/postgres/src/backend/utils/adt/oid.c:42,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/oid.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 44
    functionName: oidin
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_OID
    - PG_GETARG_CSTRING
    - uint32in_subr
    linkageType: ''
    returnType: Datum
    signature: Datum oidin(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/oid.c:49,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/oid.c:50,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/oid.c:52,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/oid.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 54
    functionName: oidout
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - snprintf
    - palloc
    - PG_RETURN_CSTRING
    linkageType: ''
    returnType: Datum
    signature: Datum oidout(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/oid.c:62,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/oid.c:64,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/oid.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 59
    functionDepth: 2
    functionLinenumber: 59
    functionLinenumberEnd: 65
    functionName: oidrecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_OID
    - pq_getmsgint
    linkageType: ''
    returnType: Datum
    signature: Datum oidrecv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/oid.c:73,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/oid.c:76,1
    - Dst: pq_sendint32
      Src: /src/postgres/src/backend/utils/adt/oid.c:77,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/oid.c:78,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/oid.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 70
    functionDepth: 4
    functionLinenumber: 70
    functionLinenumberEnd: 79
    functionName: oidsend
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - PG_RETURN_BYTEA_P
    - PG_GETARG_OID
    - pq_sendint32
    - pq_begintypsend
    linkageType: ''
    returnType: Datum
    signature: Datum oidsend(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/oid.c:91,1
    - Dst: OidVectorSize
      Src: /src/postgres/src/backend/utils/adt/oid.c:91,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/oid.c:94,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/oid.c:100,1
    - Dst: OidVectorSize
      Src: /src/postgres/src/backend/utils/adt/oid.c:100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - oids
    - n
    argTypes:
    - Oid*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 108
    functionName: buildoidvector
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid.c
    functionUses: 2
    functionsReached:
    - SET_VARSIZE
    - memcpy
    - OidVectorSize
    - palloc0
    linkageType: ''
    returnType: oidvector
    signature: 'oidvector *

      buildoidvector(const Oid *oids, int n)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/oid.c:116,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/oid.c:123,1
    - Dst: OidVectorSize
      Src: /src/postgres/src/backend/utils/adt/oid.c:123,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/oid.c:127,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/oid.c:135,1
    - Dst: OidVectorSize
      Src: /src/postgres/src/backend/utils/adt/oid.c:135,1
    - Dst: uint32in_subr
      Src: /src/postgres/src/backend/utils/adt/oid.c:138,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/oid.c:140,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/oid.c:141,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/oid.c:144,1
    - Dst: OidVectorSize
      Src: /src/postgres/src/backend/utils/adt/oid.c:144,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/oid.c:151,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 152
    functionName: oidvectorin
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - SOFT_ERROR_OCCURRED
    - OidVectorSize
    - palloc0
    - PG_RETURN_NULL
    - uint32in_subr
    - isspace
    - repalloc
    - SET_VARSIZE
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum oidvectorin(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/oid.c:160,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/oid.c:167,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/oid.c:172,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/oid.c:177,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 178
    functionName: oidvectorout
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - palloc
    - PG_RETURN_CSTRING
    - sprintf
    linkageType: ''
    returnType: Datum
    signature: Datum oidvectorout(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/backend/utils/adt/oid.c:186,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/oid.c:187,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/utils/adt/oid.c:196,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/oid.c:199,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/oid.c:201,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/oid.c:203,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/oid.c:206,1
    - Dst: array_recv
      Src: /src/postgres/src/backend/utils/adt/oid.c:206,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/oid.c:208,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/oid.c:211,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/utils/adt/oid.c:212,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/utils/adt/oid.c:213,1
    - Dst: ARR_LBOUND
      Src: /src/postgres/src/backend/utils/adt/oid.c:214,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/oid.c:215,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/oid.c:216,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/oid.c:217,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/oid.c:219,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 183
    functionDepth: 2
    functionLinenumber: 183
    functionLinenumberEnd: 220
    functionName: oidvectorrecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid.c
    functionUses: 0
    functionsReached:
    - ARR_ELEMTYPE
    - errcode
    - LOCAL_FCINFO
    - InitFunctionCallInfoData
    - Assert
    - errmsg
    - PG_GETARG_POINTER
    - Int32GetDatum
    - ARR_NDIM
    - ereport
    - PointerGetDatum
    - array_recv
    - ARR_HASNULL
    - ARR_LBOUND
    - DatumGetPointer
    - ObjectIdGetDatum
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum oidvectorrecv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_send
      Src: /src/postgres/src/backend/utils/adt/oid.c:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 229
    functionName: oidvectorsend
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid.c
    functionUses: 0
    functionsReached:
    - array_send
    linkageType: ''
    returnType: Datum
    signature: Datum oidvectorsend(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nodeTag
      Src: /src/postgres/src/backend/utils/adt/oid.c:237,1
    - Dst: intVal
      Src: /src/postgres/src/backend/utils/adt/oid.c:240,1
    - Dst: uint32in_subr
      Src: /src/postgres/src/backend/utils/adt/oid.c:248,1
    - Dst: castNode
      Src: /src/postgres/src/backend/utils/adt/oid.c:248,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/oid.c:251,1
    - Dst: nodeTag
      Src: /src/postgres/src/backend/utils/adt/oid.c:251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - node
    argTypes:
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 254
    functionName: oidparse
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid.c
    functionUses: 1
    functionsReached:
    - nodeTag
    - castNode
    - elog
    - uint32in_subr
    - intVal
    linkageType: ''
    returnType: Oid
    signature: Oid oidparse(Node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_cmp_u32
      Src: /src/postgres/src/backend/utils/adt/oid.c:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 264
    functionName: oid_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid.c
    functionUses: 0
    functionsReached:
    - pg_cmp_u32
    linkageType: ''
    returnType: int
    signature: int oid_cmp(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/oid.c:274,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/oid.c:275,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/oid.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: oideq
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum oideq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/oid.c:283,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/oid.c:284,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/oid.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: oidne
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum oidne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/oid.c:292,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/oid.c:293,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/oid.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: oidlt
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum oidlt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/oid.c:301,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/oid.c:302,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/oid.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: oidle
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum oidle(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/oid.c:310,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/oid.c:311,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/oid.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: oidge
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum oidge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/oid.c:319,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/oid.c:320,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/oid.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: oidgt
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum oidgt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/oid.c:328,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/oid.c:329,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/oid.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: oidlarger
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_OID
    - PG_GETARG_OID
    linkageType: ''
    returnType: Datum
    signature: Datum oidlarger(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/oid.c:337,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/oid.c:338,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/oid.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: oidsmaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_OID
    - PG_GETARG_OID
    linkageType: ''
    returnType: Datum
    signature: Datum oidsmaller(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/oid.c:346,1
    - Dst: btoidvectorcmp
      Src: /src/postgres/src/backend/utils/adt/oid.c:346,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/oid.c:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 343
    functionDepth: 2
    functionLinenumber: 343
    functionLinenumberEnd: 349
    functionName: oidvectoreq
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid.c
    functionUses: 0
    functionsReached:
    - DatumGetInt32
    - PG_RETURN_BOOL
    - btoidvectorcmp
    linkageType: ''
    returnType: Datum
    signature: Datum oidvectoreq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/oid.c:354,1
    - Dst: btoidvectorcmp
      Src: /src/postgres/src/backend/utils/adt/oid.c:354,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/oid.c:356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 351
    functionDepth: 2
    functionLinenumber: 351
    functionLinenumberEnd: 357
    functionName: oidvectorne
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid.c
    functionUses: 0
    functionsReached:
    - DatumGetInt32
    - PG_RETURN_BOOL
    - btoidvectorcmp
    linkageType: ''
    returnType: Datum
    signature: Datum oidvectorne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/oid.c:362,1
    - Dst: btoidvectorcmp
      Src: /src/postgres/src/backend/utils/adt/oid.c:362,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/oid.c:364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 359
    functionDepth: 2
    functionLinenumber: 359
    functionLinenumberEnd: 365
    functionName: oidvectorlt
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid.c
    functionUses: 0
    functionsReached:
    - DatumGetInt32
    - PG_RETURN_BOOL
    - btoidvectorcmp
    linkageType: ''
    returnType: Datum
    signature: Datum oidvectorlt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/oid.c:370,1
    - Dst: btoidvectorcmp
      Src: /src/postgres/src/backend/utils/adt/oid.c:370,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/oid.c:372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 367
    functionDepth: 2
    functionLinenumber: 367
    functionLinenumberEnd: 373
    functionName: oidvectorle
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid.c
    functionUses: 0
    functionsReached:
    - DatumGetInt32
    - PG_RETURN_BOOL
    - btoidvectorcmp
    linkageType: ''
    returnType: Datum
    signature: Datum oidvectorle(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/oid.c:378,1
    - Dst: btoidvectorcmp
      Src: /src/postgres/src/backend/utils/adt/oid.c:378,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/oid.c:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 375
    functionDepth: 2
    functionLinenumber: 375
    functionLinenumberEnd: 381
    functionName: oidvectorge
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid.c
    functionUses: 0
    functionsReached:
    - DatumGetInt32
    - PG_RETURN_BOOL
    - btoidvectorcmp
    linkageType: ''
    returnType: Datum
    signature: Datum oidvectorge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/oid.c:386,1
    - Dst: btoidvectorcmp
      Src: /src/postgres/src/backend/utils/adt/oid.c:386,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/oid.c:388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 383
    functionDepth: 2
    functionLinenumber: 383
    functionLinenumberEnd: 389
    functionName: oidvectorgt
    functionSourceFile: /src/postgres/src/backend/utils/adt/oid.c
    functionUses: 0
    functionsReached:
    - DatumGetInt32
    - PG_RETURN_BOOL
    - btoidvectorcmp
    linkageType: ''
    returnType: Datum
    signature: Datum oidvectorgt(PG_FUNCTION_ARGS)
  - BBCount: 15
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 102
    functionName: default_range_selectivity
    functionSourceFile: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double default_range_selectivity(Oid operator)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:110,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:111,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:112,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:113,1
    - Dst: get_restriction_variable
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:125,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:127,1
    - Dst: default_range_selectivity
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:127,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:132,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:134,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:135,1
    - Dst: default_range_selectivity
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:135,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:144,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:145,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:155,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:159,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:160,1
    - Dst: default_range_selectivity
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:160,1
    - Dst: range_get_typcache
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:177,1
    - Dst: range_serialize
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:192,1
    - Dst: range_get_typcache
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:207,1
    - Dst: DatumGetRangeTypeP
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:209,1
    - Dst: calc_rangesel
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:219,1
    - Dst: default_range_selectivity
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:221,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:223,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:225,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:227,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 107
    functionDepth: 2
    functionLinenumber: 107
    functionLinenumberEnd: 228
    functionName: rangesel
    functionSourceFile: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c
    functionUses: 2
    functionsReached:
    - default_range_selectivity
    - PG_GETARG_POINTER
    - range_get_typcache
    - get_restriction_variable
    - IsA
    - PG_GETARG_OID
    - DatumGetRangeTypeP
    - PG_GETARG_INT32
    - CLAMP_PROBABILITY
    - range_serialize
    - ReleaseVariableStats
    - calc_rangesel
    - PG_RETURN_FLOAT8
    - get_commutator
    linkageType: ''
    returnType: Datum
    signature: Datum rangesel(PG_FUNCTION_ARGS)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:242,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:247,1
    - Dst: get_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:251,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:257,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:259,1
    - Dst: RangeIsEmpty
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:279,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:320,1
    - Dst: calc_hist_selectivity
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:335,1
    - Dst: default_range_selectivity
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:338,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:361,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 56
    argCount: 3
    argNames:
    - typcache
    - vardata
    - constval
    argTypes:
    - TypeCacheEntry*
    - VariableStatData*
    - RangeType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 364
    functionName: calc_rangesel
    functionSourceFile: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c
    functionUses: 1
    functionsReached:
    - default_range_selectivity
    - HeapTupleIsValid
    - free_attstatsslot
    - GETSTRUCT
    - get_attstatsslot
    - elog
    - RangeIsEmpty
    - CLAMP_PROBABILITY
    - calc_hist_selectivity
    linkageType: ''
    returnType: double
    signature: "double calc_rangesel(TypeCacheEntry *typcache, VariableStatData *vardata,\n\t\t\t
      \ const RangeType *constval, Oid operator)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: statistic_proc_security_check
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:388,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:391,1
    - Dst: statistic_proc_security_check
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:392,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:397,1
    - Dst: get_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:398,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:406,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:415,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:416,1
    - Dst: range_deserialize
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:419,1
    - Dst: DatumGetRangeTypeP
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:419,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:423,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:430,1
    - Dst: get_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:431,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:436,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:443,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:444,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:449,1
    - Dst: range_deserialize
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:452,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:453,1
    - Dst: calc_hist_selectivity_scalar
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:472,1
    - Dst: calc_hist_selectivity_scalar
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:478,1
    - Dst: calc_hist_selectivity_scalar
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:484,1
    - Dst: calc_hist_selectivity_scalar
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:490,1
    - Dst: calc_hist_selectivity_scalar
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:497,1
    - Dst: calc_hist_selectivity_scalar
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:504,1
    - Dst: calc_hist_selectivity_scalar
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:511,1
    - Dst: calc_hist_selectivity_scalar
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:518,1
    - Dst: calc_hist_selectivity_scalar
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:537,1
    - Dst: calc_hist_selectivity_scalar
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:540,1
    - Dst: calc_hist_selectivity_contains
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:547,1
    - Dst: calc_hist_selectivity_scalar
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:560,1
    - Dst: calc_hist_selectivity_scalar
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:566,1
    - Dst: calc_hist_selectivity_contained
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:572,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:579,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:584,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:585,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 85
    argCount: 3
    argNames:
    - typcache
    - vardata
    - constval
    argTypes:
    - TypeCacheEntry*
    - VariableStatData*
    - RangeType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 372
    functionDepth: 2
    functionLinenumber: 372
    functionLinenumberEnd: 588
    functionName: calc_hist_selectivity
    functionSourceFile: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c
    functionUses: 2
    functionsReached:
    - Assert
    - calc_hist_selectivity_scalar
    - memset
    - statistic_proc_security_check
    - HeapTupleIsValid
    - free_attstatsslot
    - calc_hist_selectivity_contains
    - calc_hist_selectivity_contained
    - get_attstatsslot
    - elog
    - OidIsValid
    - DatumGetRangeTypeP
    - palloc
    - range_deserialize
    linkageType: ''
    returnType: double
    signature: "double calc_hist_selectivity(TypeCacheEntry *typcache, VariableStatData
      *vardata,\n\t\t\t\t\t  const RangeType *constval, Oid operator)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rbound_bsearch
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:606,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:607,1
    - Dst: get_position
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:611,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: 615
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 615
    functionName: calc_hist_selectivity_scalar
    functionSourceFile: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c
    functionUses: 2
    functionsReached:
    - Max
    - rbound_bsearch
    - get_position
    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/rangetypes_selfuncs.c:639,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: 647
      start: 627
    functionDepth: 1
    functionLinenumber: 627
    functionLinenumberEnd: 647
    functionName: rbound_bsearch
    functionSourceFile: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c
    functionUses: 4
    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/rangetypes_selfuncs.c:670,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: 677
      start: 656
    functionDepth: 3
    functionLinenumber: 656
    functionLinenumberEnd: 677
    functionName: length_hist_bsearch
    functionSourceFile: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c
    functionUses: 1
    functionsReached:
    - DatumGetFloat8
    linkageType: ''
    returnType: int
    signature: "int length_hist_bsearch(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/rangetypes_selfuncs.c:686,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:707,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:707,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:711,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:714,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:714,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:720,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:724,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:725,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 24
    argCount: 4
    argNames:
    - typcache
    - value
    - hist1
    - hist2
    argTypes:
    - TypeCacheEntry*
    - RangeBound*
    - RangeBound*
    - RangeBound*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 682
    functionDepth: 3
    functionLinenumber: 682
    functionLinenumberEnd: 755
    functionName: get_position
    functionSourceFile: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c
    functionUses: 4
    functionsReached:
    - isnan
    - Min
    - DatumGetFloat8
    - FunctionCall2Coll
    - Max
    - OidIsValid
    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/rangetypes_selfuncs.c:764,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:764,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:771,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:776,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:776,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:784,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:784,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 3
    argNames:
    - value
    - hist1
    - hist2
    argTypes:
    - double
    - double
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 761
    functionDepth: 0
    functionLinenumber: 761
    functionLinenumberEnd: 801
    functionName: get_len_position
    functionSourceFile: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c
    functionUses: 1
    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/rangetypes_selfuncs.c:809,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:821,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:821,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:826,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:840,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:845,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 3
    argNames:
    - typcache
    - bound1
    - bound2
    argTypes:
    - TypeCacheEntry*
    - RangeBound*
    - RangeBound*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 806
    functionDepth: 3
    functionLinenumber: 806
    functionLinenumberEnd: 847
    functionName: get_distance
    functionSourceFile: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c
    functionUses: 2
    functionsReached:
    - isnan
    - DatumGetFloat8
    - FunctionCall2Coll
    - OidIsValid
    - 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/rangetypes_selfuncs.c:867,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:873,1
    - Dst: length_hist_bsearch
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:915,1
    - Dst: get_len_position
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:927,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:928,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:929,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:950,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:982,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:982,1
    - Dst: get_len_position
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:985,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:985,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:985,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:1000,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:1000,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: 1006
      start: 854
    functionDepth: 3
    functionLinenumber: 854
    functionLinenumberEnd: 1006
    functionName: calc_length_hist_frac
    functionSourceFile: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c
    functionUses: 2
    functionsReached:
    - DatumGetFloat8
    - Assert
    - isinf
    - get_len_position
    - length_hist_bsearch
    linkageType: ''
    returnType: double
    signature: "double calc_length_hist_frac(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/rangetypes_selfuncs.c:1037,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:1055,1
    - Dst: get_position
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:1062,1
    - Dst: range_cmp_bounds
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:1091,1
    - Dst: get_distance
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:1093,1
    - Dst: get_position
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:1099,1
    - Dst: get_distance
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:1106,1
    - Dst: calc_length_hist_frac
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:1112,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: 1130
      start: 1017
    functionDepth: 1
    functionLinenumber: 1017
    functionLinenumberEnd: 1130
    functionName: calc_hist_selectivity_contained
    functionSourceFile: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c
    functionUses: 2
    functionsReached:
    - Min
    - calc_length_hist_frac
    - range_cmp_bounds
    - rbound_bsearch
    - get_position
    - get_distance
    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\tDatum *length_hist_values, int length_hist_nvalues)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rbound_bsearch
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:1152,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:1170,1
    - Dst: get_position
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:1177,1
    - Dst: get_distance
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:1192,1
    - Dst: get_distance
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:1205,1
    - Dst: calc_length_hist_frac
      Src: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c:1212,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: 1223
      start: 1138
    functionDepth: 0
    functionLinenumber: 1138
    functionLinenumberEnd: 1223
    functionName: calc_hist_selectivity_contains
    functionSourceFile: /src/postgres/src/backend/utils/adt/rangetypes_selfuncs.c
    functionUses: 2
    functionsReached:
    - Min
    - calc_length_hist_frac
    - rbound_bsearch
    - get_position
    - get_distance
    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   Datum *length_hist_values,
      int length_hist_nvalues)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/encode.c:50,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/encode.c:51,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/encode.c:60,1
    - Dst: pg_find_encoding
      Src: /src/postgres/src/backend/utils/adt/encode.c:62,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/encode.c:64,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/encode.c:65,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/encode.c:66,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/encode.c:68,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/encode.c:69,1
    - Dst: struct pg_encoding*::encode_len
      Src: /src/postgres/src/backend/utils/adt/encode.c:71,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/encode.c:78,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/encode.c:79,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/encode.c:80,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/encode.c:82,1
    - Dst: struct pg_encoding*::encode
      Src: /src/postgres/src/backend/utils/adt/encode.c:84,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/encode.c:84,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/encode.c:88,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/encode.c:90,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/encode.c:92,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 93
    functionName: binary_encode
    functionSourceFile: /src/postgres/src/backend/utils/adt/encode.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - palloc
    - TextDatumGetCString
    - PG_GETARG_BYTEA_PP
    - ereport
    - VARDATA
    - struct pg_encoding*::encode
    - elog
    - SET_VARSIZE
    - PG_RETURN_TEXT_P
    - PG_GETARG_DATUM
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - struct pg_encoding*::encode_len
    - pg_find_encoding
    linkageType: ''
    returnType: Datum
    signature: Datum binary_encode(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/encode.c:98,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/encode.c:99,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/encode.c:108,1
    - Dst: pg_find_encoding
      Src: /src/postgres/src/backend/utils/adt/encode.c:110,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/encode.c:112,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/encode.c:113,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/encode.c:114,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/encode.c:116,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/encode.c:117,1
    - Dst: struct pg_encoding*::decode_len
      Src: /src/postgres/src/backend/utils/adt/encode.c:119,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/encode.c:126,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/encode.c:127,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/encode.c:128,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/encode.c:130,1
    - Dst: struct pg_encoding*::decode
      Src: /src/postgres/src/backend/utils/adt/encode.c:132,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/encode.c:132,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/encode.c:136,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/encode.c:138,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/encode.c:140,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 95
    functionDepth: 2
    functionLinenumber: 95
    functionLinenumberEnd: 141
    functionName: binary_decode
    functionSourceFile: /src/postgres/src/backend/utils/adt/encode.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - struct pg_encoding*::decode
    - PG_GETARG_TEXT_PP
    - TextDatumGetCString
    - ereport
    - VARDATA
    - struct pg_encoding*::decode_len
    - PG_RETURN_BYTEA_P
    - elog
    - SET_VARSIZE
    - PG_GETARG_DATUM
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - palloc
    - pg_find_encoding
    linkageType: ''
    returnType: Datum
    signature: Datum binary_decode(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/encode.c:189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - src
    - len
    - dst
    argTypes:
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 194
    functionName: hex_encode
    functionSourceFile: /src/postgres/src/backend/utils/adt/encode.c
    functionUses: 7
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: uint64
    signature: uint64 hex_encode(const char *src, size_t len, char *dst)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - cp
    - out
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 208
    functionName: get_hex
    functionSourceFile: /src/postgres/src/backend/utils/adt/encode.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool get_hex(const char *cp, char *out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hex_decode_safe
      Src: /src/postgres/src/backend/utils/adt/encode.c:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - src
    - len
    - dst
    argTypes:
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 214
    functionName: hex_decode
    functionSourceFile: /src/postgres/src/backend/utils/adt/encode.c
    functionUses: 1
    functionsReached:
    - hex_decode_safe
    linkageType: ''
    returnType: uint64
    signature: uint64 hex_decode(const char *src, size_t len, char *dst)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: get_hex
      Src: /src/postgres/src/backend/utils/adt/encode.c:235,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/encode.c:236,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/encode.c:237,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/encode.c:238,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/encode.c:239,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/encode.c:242,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/encode.c:243,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/encode.c:244,1
    - Dst: get_hex
      Src: /src/postgres/src/backend/utils/adt/encode.c:245,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/encode.c:246,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/encode.c:247,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/encode.c:248,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/encode.c:249,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 4
    argNames:
    - src
    - len
    - dst
    - escontext
    argTypes:
    - char*
    - size_t
    - char*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 216
    functionDepth: 2
    functionLinenumber: 216
    functionLinenumberEnd: 255
    functionName: hex_decode_safe
    functionSourceFile: /src/postgres/src/backend/utils/adt/encode.c
    functionUses: 2
    functionsReached:
    - errmsg
    - pg_mblen
    - get_hex
    - ereturn
    - errcode
    linkageType: ''
    returnType: uint64
    signature: uint64 hex_decode_safe(const char *src, size_t len, char *dst, Node
      *escontext)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - src
    - srclen
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 261
    functionName: hex_enc_len
    functionSourceFile: /src/postgres/src/backend/utils/adt/encode.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: uint64
    signature: uint64 hex_enc_len(const char *src, size_t srclen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - src
    - srclen
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 267
    functionName: hex_dec_len
    functionSourceFile: /src/postgres/src/backend/utils/adt/encode.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint64
    signature: uint64 hex_dec_len(const char *src, size_t srclen)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 3
    argNames:
    - src
    - len
    - dst
    argTypes:
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 332
    functionName: pg_base64_encode
    functionSourceFile: /src/postgres/src/backend/utils/adt/encode.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_base64_encode(const char *src, size_t len, char *dst)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/encode.c:363,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/encode.c:364,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/encode.c:365,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/encode.c:375,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/encode.c:376,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/encode.c:377,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/encode.c:378,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/encode.c:396,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/encode.c:397,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/encode.c:398,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/encode.c:399,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 36
    argCount: 3
    argNames:
    - src
    - len
    - dst
    argTypes:
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 334
    functionDepth: 2
    functionLinenumber: 334
    functionLinenumberEnd: 402
    functionName: pg_base64_decode
    functionSourceFile: /src/postgres/src/backend/utils/adt/encode.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pg_mblen
    - ereport
    - errhint
    - errcode
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_base64_decode(const char *src, size_t len, char *dst)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - src
    - srclen
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 405
    functionDepth: 0
    functionLinenumber: 405
    functionLinenumberEnd: 410
    functionName: pg_base64_enc_len
    functionSourceFile: /src/postgres/src/backend/utils/adt/encode.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_base64_enc_len(const char *src, size_t srclen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - src
    - srclen
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 416
    functionName: pg_base64_dec_len
    functionSourceFile: /src/postgres/src/backend/utils/adt/encode.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64
    signature: uint64 pg_base64_dec_len(const char *src, size_t srclen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - CH
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 432
    functionDepth: 0
    functionLinenumber: 432
    functionLinenumberEnd: 433
    functionName: VAL
    functionSourceFile: /src/postgres/src/backend/utils/adt/encode.c
    functionUses: 9
    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: 434
      start: 433
    functionDepth: 0
    functionLinenumber: 433
    functionLinenumberEnd: 434
    functionName: DIG
    functionSourceFile: /src/postgres/src/backend/utils/adt/encode.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DIG(VAL)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/backend/utils/adt/encode.c:446,1
    - Dst: DIG
      Src: /src/postgres/src/backend/utils/adt/encode.c:449,1
    - Dst: DIG
      Src: /src/postgres/src/backend/utils/adt/encode.c:450,1
    - Dst: DIG
      Src: /src/postgres/src/backend/utils/adt/encode.c:451,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - src
    - srclen
    - dst
    argTypes:
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 435
    functionDepth: 1
    functionLinenumber: 435
    functionLinenumberEnd: 472
    functionName: esc_encode
    functionSourceFile: /src/postgres/src/backend/utils/adt/encode.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    - DIG
    linkageType: ''
    returnType: uint64
    signature: uint64 esc_encode(const char *src, size_t srclen, char *dst)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: VAL
      Src: /src/postgres/src/backend/utils/adt/encode.c:492,1
    - Dst: VAL
      Src: /src/postgres/src/backend/utils/adt/encode.c:494,1
    - Dst: VAL
      Src: /src/postgres/src/backend/utils/adt/encode.c:496,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/encode.c:511,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/encode.c:512,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/encode.c:513,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 21
    argCount: 3
    argNames:
    - src
    - srclen
    - dst
    argTypes:
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 474
    functionDepth: 2
    functionLinenumber: 474
    functionLinenumberEnd: 520
    functionName: esc_decode
    functionSourceFile: /src/postgres/src/backend/utils/adt/encode.c
    functionUses: 0
    functionsReached:
    - VAL
    - errcode
    - ereport
    - errmsg
    linkageType: ''
    returnType: uint64
    signature: uint64 esc_decode(const char *src, size_t srclen, char *dst)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_HIGHBIT_SET
      Src: /src/postgres/src/backend/utils/adt/encode.c:530,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - src
    - srclen
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 522
    functionDepth: 1
    functionLinenumber: 522
    functionLinenumberEnd: 541
    functionName: esc_enc_len
    functionSourceFile: /src/postgres/src/backend/utils/adt/encode.c
    functionUses: 0
    functionsReached:
    - IS_HIGHBIT_SET
    linkageType: ''
    returnType: uint64
    signature: uint64 esc_enc_len(const char *src, size_t srclen)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/encode.c:576,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/encode.c:577,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/encode.c:578,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 15
    argCount: 2
    argNames:
    - src
    - srclen
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 543
    functionDepth: 2
    functionLinenumber: 543
    functionLinenumberEnd: 584
    functionName: esc_dec_len
    functionSourceFile: /src/postgres/src/backend/utils/adt/encode.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - ereport
    linkageType: ''
    returnType: uint64
    signature: uint64 esc_dec_len(const char *src, size_t srclen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/adt/encode.c:629,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 623
    functionDepth: 2
    functionLinenumber: 623
    functionLinenumberEnd: 633
    functionName: pg_find_encoding
    functionSourceFile: /src/postgres/src/backend/utils/adt/encode.c
    functionUses: 2
    functionsReached:
    - pg_strcasecmp
    linkageType: ''
    returnType: struct pg_encoding
    signature: 'struct pg_encoding *

      pg_find_encoding(const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 120
    functionName: DatumGetVarStringP
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumGetVarStringP(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: DatumGetVarStringPP
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DatumGetVarStringPP(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:183,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 184
    functionName: cstring_to_text
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 40
    functionsReached:
    - strlen
    - cstring_to_text_with_len
    linkageType: ''
    returnType: text
    signature: 'text *

      cstring_to_text(const char *s)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/varlena.c:195,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/varlena.c:197,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/varlena.c:198,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/varlena.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 201
    functionName: cstring_to_text_with_len
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 42
    functionsReached:
    - memcpy
    - palloc
    - SET_VARSIZE
    - VARDATA
    linkageType: ''
    returnType: text
    signature: 'text *

      cstring_to_text_with_len(const char *s, int len)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_detoast_datum_packed
      Src: /src/postgres/src/backend/utils/adt/varlena.c:217,1
    - Dst: unconstify
      Src: /src/postgres/src/backend/utils/adt/varlena.c:217,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:218,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/varlena.c:221,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/varlena.c:222,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:222,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:226,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - t
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 229
    functionName: text_to_cstring
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 72
    functionsReached:
    - pg_detoast_datum_packed
    - pfree
    - VARDATA_ANY
    - unconstify
    - VARSIZE_ANY_EXHDR
    - memcpy
    - palloc
    linkageType: ''
    returnType: char
    signature: 'char *

      text_to_cstring(const text *t)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pg_detoast_datum_packed
      Src: /src/postgres/src/backend/utils/adt/varlena.c:248,1
    - Dst: unconstify
      Src: /src/postgres/src/backend/utils/adt/varlena.c:248,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:249,1
    - Dst: pg_mbcliplen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:257,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:257,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/varlena.c:258,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:258,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:263,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - src
    - dst
    - dst_len
    argTypes:
    - text*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 244
    functionDepth: 1
    functionLinenumber: 244
    functionLinenumberEnd: 264
    functionName: text_to_cstring_buffer
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 7
    functionsReached:
    - pg_detoast_datum_packed
    - pfree
    - memcpy
    - unconstify
    - pg_mbcliplen
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    linkageType: ''
    returnType: void
    signature: void text_to_cstring_buffer(const text *src, char *dst, size_t dst_len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/varlena.c:277,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:279,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/varlena.c:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 274
    functionDepth: 2
    functionLinenumber: 274
    functionLinenumberEnd: 280
    functionName: textin
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - cstring_to_text
    - PG_RETURN_TEXT_P
    linkageType: ''
    returnType: Datum
    signature: Datum textin(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/varlena.c:288,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/varlena.c:290,1
    - Dst: TextDatumGetCString
      Src: /src/postgres/src/backend/utils/adt/varlena.c:290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 285
    functionDepth: 1
    functionLinenumber: 285
    functionLinenumberEnd: 291
    functionName: textout
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - TextDatumGetCString
    - PG_RETURN_CSTRING
    - PG_GETARG_DATUM
    linkageType: ''
    returnType: Datum
    signature: Datum textout(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/varlena.c:299,1
    - Dst: pq_getmsgtext
      Src: /src/postgres/src/backend/utils/adt/varlena.c:304,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:306,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:307,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 296
    functionDepth: 2
    functionLinenumber: 296
    functionLinenumberEnd: 309
    functionName: textrecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - pfree
    - PG_GETARG_POINTER
    - pq_getmsgtext
    - PG_RETURN_TEXT_P
    - cstring_to_text_with_len
    linkageType: ''
    returnType: Datum
    signature: Datum textrecv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:317,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/varlena.c:320,1
    - Dst: pq_sendtext
      Src: /src/postgres/src/backend/utils/adt/varlena.c:321,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:321,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:321,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:322,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/varlena.c:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 314
    functionDepth: 4
    functionLinenumber: 314
    functionLinenumberEnd: 323
    functionName: textsend
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 2
    functionsReached:
    - PG_GETARG_TEXT_PP
    - pq_endtypsend
    - PG_RETURN_BYTEA_P
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - pq_begintypsend
    - pq_sendtext
    linkageType: ''
    returnType: Datum
    signature: Datum textsend(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/varlena.c:332,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/varlena.c:335,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/varlena.c:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 329
    functionDepth: 1
    functionLinenumber: 329
    functionLinenumberEnd: 336
    functionName: unknownin
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - PG_RETURN_CSTRING
    - pstrdup
    linkageType: ''
    returnType: Datum
    signature: Datum unknownin(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/varlena.c:345,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/varlena.c:347,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/varlena.c:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 341
    functionDepth: 1
    functionLinenumber: 341
    functionLinenumberEnd: 348
    functionName: unknownout
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - PG_RETURN_CSTRING
    - pstrdup
    linkageType: ''
    returnType: Datum
    signature: Datum unknownout(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/varlena.c:356,1
    - Dst: pq_getmsgtext
      Src: /src/postgres/src/backend/utils/adt/varlena.c:360,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/varlena.c:362,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 353
    functionDepth: 2
    functionLinenumber: 353
    functionLinenumberEnd: 363
    functionName: unknownrecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_CSTRING
    - pq_getmsgtext
    linkageType: ''
    returnType: Datum
    signature: Datum unknownrecv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/varlena.c:372,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/varlena.c:375,1
    - Dst: pq_sendtext
      Src: /src/postgres/src/backend/utils/adt/varlena.c:376,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:376,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:377,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/varlena.c:377,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 368
    functionDepth: 4
    functionLinenumber: 368
    functionLinenumberEnd: 378
    functionName: unknownsend
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - pq_endtypsend
    - PG_RETURN_BYTEA_P
    - pq_begintypsend
    - strlen
    - pq_sendtext
    linkageType: ''
    returnType: Datum
    signature: Datum unknownsend(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/varlena.c:391,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:394,1
    - Dst: text_length
      Src: /src/postgres/src/backend/utils/adt/varlena.c:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 395
    functionName: textlen
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - text_length
    - PG_GETARG_DATUM
    linkageType: ''
    returnType: Datum
    signature: Datum textlen(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_database_encoding_max_length
      Src: /src/postgres/src/backend/utils/adt/varlena.c:410,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:411,1
    - Dst: toast_raw_datum_size
      Src: /src/postgres/src/backend/utils/adt/varlena.c:411,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:414,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:416,1
    - Dst: pg_mbstrlen_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:416,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:416,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:417,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - str
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 406
    functionDepth: 2
    functionLinenumber: 406
    functionLinenumberEnd: 419
    functionName: text_length
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 1
    functionsReached:
    - PG_RETURN_INT32
    - toast_raw_datum_size
    - pg_mbstrlen_with_len
    - DatumGetTextPP
    - pg_database_encoding_max_length
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    linkageType: ''
    returnType: int32
    signature: int32 text_length(Datum str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/varlena.c:429,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:432,1
    - Dst: toast_raw_datum_size
      Src: /src/postgres/src/backend/utils/adt/varlena.c:432,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 426
    functionDepth: 2
    functionLinenumber: 426
    functionLinenumberEnd: 433
    functionName: textoctetlen
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - toast_raw_datum_size
    - PG_GETARG_DATUM
    linkageType: ''
    returnType: Datum
    signature: Datum textoctetlen(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:448,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:449,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:451,1
    - Dst: text_catenate
      Src: /src/postgres/src/backend/utils/adt/varlena.c:451,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 445
    functionDepth: 1
    functionLinenumber: 445
    functionLinenumberEnd: 452
    functionName: textcat
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - text_catenate
    - PG_GETARG_TEXT_PP
    - PG_RETURN_TEXT_P
    linkageType: ''
    returnType: Datum
    signature: Datum textcat(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:469,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:470,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/varlena.c:479,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/varlena.c:482,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/varlena.c:485,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/varlena.c:487,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:487,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/varlena.c:489,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:489,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - t1
    - t2
    argTypes:
    - text*
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 460
    functionDepth: 1
    functionLinenumber: 460
    functionLinenumberEnd: 492
    functionName: text_catenate
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 1
    functionsReached:
    - VARDATA
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - memcpy
    - palloc
    - SET_VARSIZE
    linkageType: ''
    returnType: text
    signature: 'text *

      text_catenate(text *t1, text *t2)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pg_database_encoding_max_length
      Src: /src/postgres/src/backend/utils/adt/varlena.c:504,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:514,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - p
    - n
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 501
    functionDepth: 1
    functionLinenumber: 501
    functionLinenumberEnd: 518
    functionName: charlen_to_bytelen
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - pg_database_encoding_max_length
    - pg_mblen
    linkageType: ''
    returnType: int
    signature: int charlen_to_bytelen(const char *p, int n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:550,1
    - Dst: text_substring
      Src: /src/postgres/src/backend/utils/adt/varlena.c:550,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/varlena.c:550,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:551,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:552,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 547
    functionDepth: 1
    functionLinenumber: 547
    functionLinenumberEnd: 554
    functionName: text_substr
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - text_substring
    - PG_GETARG_INT32
    - PG_RETURN_TEXT_P
    - PG_GETARG_DATUM
    linkageType: ''
    returnType: Datum
    signature: Datum text_substr(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:564,1
    - Dst: text_substring
      Src: /src/postgres/src/backend/utils/adt/varlena.c:564,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/varlena.c:564,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 561
    functionDepth: 1
    functionLinenumber: 561
    functionLinenumberEnd: 567
    functionName: text_substr_no_len
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - text_substring
    - PG_GETARG_INT32
    - PG_RETURN_TEXT_P
    - PG_GETARG_DATUM
    linkageType: ''
    returnType: Datum
    signature: Datum text_substr_no_len(PG_FUNCTION_ARGS)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: pg_database_encoding_max_length
      Src: /src/postgres/src/backend/utils/adt/varlena.c:583,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/varlena.c:594,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:605,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:606,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:607,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/varlena.c:610,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/varlena.c:626,1
    - Dst: DatumGetTextPSlice
      Src: /src/postgres/src/backend/utils/adt/varlena.c:636,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:668,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:669,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:670,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/varlena.c:673,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/varlena.c:689,1
    - Dst: pg_mul_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/varlena.c:702,1
    - Dst: VARATT_IS_COMPRESSED
      Src: /src/postgres/src/backend/utils/adt/varlena.c:710,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/varlena.c:710,1
    - Dst: VARATT_IS_EXTERNAL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:711,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/varlena.c:711,1
    - Dst: DatumGetTextPSlice
      Src: /src/postgres/src/backend/utils/adt/varlena.c:712,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/varlena.c:714,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:717,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/varlena.c:719,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:720,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/varlena.c:721,1
    - Dst: pg_mbstrlen_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:725,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:725,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:726,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/varlena.c:734,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:735,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/varlena.c:736,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/varlena.c:744,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:751,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:753,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:763,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/varlena.c:765,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/varlena.c:766,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/varlena.c:767,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/varlena.c:767,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/varlena.c:769,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:770,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/varlena.c:775,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 67
    argCount: 4
    argNames:
    - str
    - start
    - length
    - length_not_specified
    argTypes:
    - Datum
    - int32
    - int32
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 580
    functionDepth: 2
    functionLinenumber: 580
    functionLinenumberEnd: 779
    functionName: text_substring
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 2
    functionsReached:
    - pg_mul_s32_overflow
    - pg_mblen
    - VARATT_IS_EXTERNAL
    - pg_mbstrlen_with_len
    - pfree
    - Min
    - pg_database_encoding_max_length
    - Max
    - memcpy
    - cstring_to_text
    - DatumGetPointer
    - errmsg
    - VARATT_IS_COMPRESSED
    - VARDATA
    - elog
    - VARSIZE_ANY_EXHDR
    - DatumGetTextPSlice
    - palloc
    - SET_VARSIZE
    - ereport
    - pg_add_s32_overflow
    - VARDATA_ANY
    - errcode
    linkageType: ''
    returnType: text
    signature: 'text *

      text_substring(Datum str, int32 start, int32 length, bool length_not_specified)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:791,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:792,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:793,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:794,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:796,1
    - Dst: text_overlay
      Src: /src/postgres/src/backend/utils/adt/varlena.c:796,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 788
    functionDepth: 1
    functionLinenumber: 788
    functionLinenumberEnd: 797
    functionName: textoverlay
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - text_overlay
    - PG_RETURN_TEXT_P
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum textoverlay(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:802,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:803,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:804,1
    - Dst: text_length
      Src: /src/postgres/src/backend/utils/adt/varlena.c:807,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/varlena.c:807,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:808,1
    - Dst: text_overlay
      Src: /src/postgres/src/backend/utils/adt/varlena.c:808,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 799
    functionDepth: 3
    functionLinenumber: 799
    functionLinenumberEnd: 809
    functionName: textoverlay_no_len
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - text_overlay
    - PG_GETARG_TEXT_PP
    - PointerGetDatum
    - PG_RETURN_TEXT_P
    - PG_GETARG_INT32
    - text_length
    linkageType: ''
    returnType: Datum
    signature: Datum textoverlay_no_len(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:825,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:826,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:827,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/varlena.c:828,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:829,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:830,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:831,1
    - Dst: text_substring
      Src: /src/postgres/src/backend/utils/adt/varlena.c:833,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/varlena.c:833,1
    - Dst: text_substring
      Src: /src/postgres/src/backend/utils/adt/varlena.c:834,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/varlena.c:834,1
    - Dst: text_catenate
      Src: /src/postgres/src/backend/utils/adt/varlena.c:835,1
    - Dst: text_catenate
      Src: /src/postgres/src/backend/utils/adt/varlena.c:836,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - t1
    - t2
    - sp
    - sl
    argTypes:
    - text*
    - text*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 811
    functionDepth: 3
    functionLinenumber: 811
    functionLinenumberEnd: 839
    functionName: text_overlay
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 2
    functionsReached:
    - errmsg
    - ereport
    - PointerGetDatum
    - pg_add_s32_overflow
    - text_substring
    - text_catenate
    - errcode
    linkageType: ''
    returnType: text
    signature: 'text *

      text_overlay(text *t1, text *t2, int sp, int sl)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:851,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:852,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:854,1
    - Dst: text_position
      Src: /src/postgres/src/backend/utils/adt/varlena.c:854,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varlena.c:854,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 848
    functionDepth: 1
    functionLinenumber: 848
    functionLinenumberEnd: 855
    functionName: textpos
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - text_position
    - PG_GETARG_TEXT_PP
    - PG_GET_COLLATION
    linkageType: ''
    returnType: Datum
    signature: Datum textpos(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: check_collation_set
      Src: /src/postgres/src/backend/utils/adt/varlena.c:877,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:880,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:884,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:884,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/utils/adt/varlena.c:885,1
    - Dst: text_position_setup
      Src: /src/postgres/src/backend/utils/adt/varlena.c:888,1
    - Dst: text_position_next
      Src: /src/postgres/src/backend/utils/adt/varlena.c:892,1
    - Dst: text_position_get_match_pos
      Src: /src/postgres/src/backend/utils/adt/varlena.c:895,1
    - Dst: text_position_cleanup
      Src: /src/postgres/src/backend/utils/adt/varlena.c:896,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - t1
    - t2
    - collid
    argTypes:
    - text*
    - text*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 898
      start: 871
    functionDepth: 1
    functionLinenumber: 871
    functionLinenumberEnd: 898
    functionName: text_position
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 1
    functionsReached:
    - text_position_cleanup
    - check_collation_set
    - text_position_next
    - text_position_get_match_pos
    - text_position_setup
    - VARSIZE_ANY_EXHDR
    - pg_newlocale_from_collation
    linkageType: ''
    returnType: int
    signature: int text_position(text *t1, text *t2, Oid collid)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:920,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:921,1
    - Dst: check_collation_set
      Src: /src/postgres/src/backend/utils/adt/varlena.c:923,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/utils/adt/varlena.c:925,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/varlena.c:933,1
    - Dst: pg_database_encoding_max_length
      Src: /src/postgres/src/backend/utils/adt/varlena.c:944,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/varlena.c:946,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:951,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:952,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 4
    argNames:
    - t1
    - t2
    - collid
    - state
    argTypes:
    - text*
    - text*
    - Oid
    - TextPositionState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 917
    functionDepth: 1
    functionLinenumber: 917
    functionLinenumberEnd: 1028
    functionName: text_position_setup
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 1
    functionsReached:
    - Assert
    - GetDatabaseEncoding
    - pg_database_encoding_max_length
    - check_collation_set
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - pg_newlocale_from_collation
    linkageType: ''
    returnType: void
    signature: void text_position_setup(text *t1, text *t2, Oid collid, TextPositionState
      *state)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: text_position_next_internal
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1055,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1071,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1076,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 1
    argNames:
    - state
    argTypes:
    - TextPositionState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 1038
    functionDepth: 1
    functionLinenumber: 1038
    functionLinenumberEnd: 1096
    functionName: text_position_next
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 1
    functionsReached:
    - text_position_next_internal
    - Assert
    - pg_mblen
    linkageType: ''
    returnType: bool
    signature: bool text_position_next(TextPositionState *state)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1114,1
    - Dst: pg_strncoll
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1146,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1153,1
    - Dst: pg_strncoll
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1155,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1166,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 43
    argCount: 2
    argNames:
    - start_ptr
    - state
    argTypes:
    - char*
    - TextPositionState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1219
      start: 1103
    functionDepth: 1
    functionLinenumber: 1103
    functionLinenumberEnd: 1219
    functionName: text_position_next_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 1
    functionsReached:
    - Assert
    - pg_strncoll
    - pg_mblen
    linkageType: ''
    returnType: char
    signature: 'char *

      text_position_next_internal(char *start_ptr, TextPositionState *state)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - TextPositionState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1230
      start: 1226
    functionDepth: 0
    functionLinenumber: 1226
    functionLinenumberEnd: 1230
    functionName: text_position_get_match_ptr
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      text_position_get_match_ptr(TextPositionState *state)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_mbstrlen_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - TextPositionState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1245
      start: 1237
    functionDepth: 1
    functionLinenumber: 1237
    functionLinenumberEnd: 1245
    functionName: text_position_get_match_pos
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 1
    functionsReached:
    - pg_mbstrlen_with_len
    linkageType: ''
    returnType: int
    signature: int text_position_get_match_pos(TextPositionState *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - TextPositionState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1259
      start: 1253
    functionDepth: 0
    functionLinenumber: 1253
    functionLinenumberEnd: 1259
    functionName: text_position_reset
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void text_position_reset(TextPositionState *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - state
    argTypes:
    - TextPositionState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1265
      start: 1261
    functionDepth: 0
    functionLinenumber: 1261
    functionLinenumberEnd: 1265
    functionName: text_position_cleanup
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void text_position_cleanup(TextPositionState *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1271,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1277,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1278,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1279,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - collid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1268
    functionDepth: 2
    functionLinenumber: 1268
    functionLinenumberEnd: 1282
    functionName: check_collation_set
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 4
    functionsReached:
    - errmsg
    - ereport
    - errhint
    - OidIsValid
    - errcode
    linkageType: ''
    returnType: void
    signature: void check_collation_set(Oid collid)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: check_collation_set
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1303,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1305,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1309,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1309,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1324,1
    - Dst: pg_strncoll
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1327,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1332,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1332,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 5
    argNames:
    - arg1
    - len1
    - arg2
    - len2
    - collid
    argTypes:
    - char*
    - int
    - char*
    - int
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1339
      start: 1297
    functionDepth: 1
    functionLinenumber: 1297
    functionLinenumberEnd: 1339
    functionName: varstr_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 12
    functionsReached:
    - Min
    - memcmp
    - check_collation_set
    - pg_strncoll
    - pg_newlocale_from_collation
    linkageType: ''
    returnType: int
    signature: int varstr_cmp(const char *arg1, int len1, const char *arg2, int len2,
      Oid collid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1353,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1354,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1356,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1357,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1359,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - arg1
    - arg2
    - collid
    argTypes:
    - text*
    - text*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1360
      start: 1345
    functionDepth: 2
    functionLinenumber: 1345
    functionLinenumberEnd: 1360
    functionName: text_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - varstr_cmp
    linkageType: ''
    returnType: int
    signature: int text_cmp(text *arg1, text *arg2, Oid collid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1373,1
    - Dst: check_collation_set
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1377,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1379,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1383,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1384,1
    - Dst: toast_raw_datum_size
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1395,1
    - Dst: toast_raw_datum_size
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1396,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1401,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1402,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1404,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1404,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1404,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1407,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1408,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1413,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1414,1
    - Dst: text_cmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1416,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1418,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1419,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1422,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1423
      start: 1370
    functionDepth: 3
    functionLinenumber: 1370
    functionLinenumberEnd: 1423
    functionName: texteq
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - toast_raw_datum_size
    - PG_FREE_IF_COPY
    - memcmp
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - DatumGetTextPP
    - check_collation_set
    - text_cmp
    - PG_GETARG_DATUM
    - PG_GET_COLLATION
    - VARDATA_ANY
    - pg_newlocale_from_collation
    linkageType: ''
    returnType: Datum
    signature: Datum texteq(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1428,1
    - Dst: check_collation_set
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1432,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1434,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1438,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1439,1
    - Dst: toast_raw_datum_size
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1444,1
    - Dst: toast_raw_datum_size
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1445,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1450,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1451,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1453,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1453,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1453,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1456,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1457,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1462,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1463,1
    - Dst: text_cmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1465,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1467,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1468,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1471,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1472
      start: 1425
    functionDepth: 3
    functionLinenumber: 1425
    functionLinenumberEnd: 1472
    functionName: textne
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - toast_raw_datum_size
    - PG_FREE_IF_COPY
    - memcmp
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - DatumGetTextPP
    - check_collation_set
    - text_cmp
    - PG_GETARG_DATUM
    - PG_GET_COLLATION
    - VARDATA_ANY
    - pg_newlocale_from_collation
    linkageType: ''
    returnType: Datum
    signature: Datum textne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1477,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1478,1
    - Dst: text_cmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1481,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1481,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1483,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1484,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1487
      start: 1474
    functionDepth: 3
    functionLinenumber: 1474
    functionLinenumberEnd: 1487
    functionName: text_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - text_cmp
    - PG_GET_COLLATION
    linkageType: ''
    returnType: Datum
    signature: Datum text_lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1492,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1493,1
    - Dst: text_cmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1496,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1496,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1498,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1499,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1501,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1502
      start: 1489
    functionDepth: 3
    functionLinenumber: 1489
    functionLinenumberEnd: 1502
    functionName: text_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - text_cmp
    - PG_GET_COLLATION
    linkageType: ''
    returnType: Datum
    signature: Datum text_le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1507,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1508,1
    - Dst: text_cmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1511,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1511,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1513,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1514,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1516,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1517
      start: 1504
    functionDepth: 3
    functionLinenumber: 1504
    functionLinenumberEnd: 1517
    functionName: text_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - text_cmp
    - PG_GET_COLLATION
    linkageType: ''
    returnType: Datum
    signature: Datum text_gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1522,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1523,1
    - Dst: text_cmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1526,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1526,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1528,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1529,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1531,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1532
      start: 1519
    functionDepth: 3
    functionLinenumber: 1519
    functionLinenumberEnd: 1532
    functionName: text_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - text_cmp
    - PG_GET_COLLATION
    linkageType: ''
    returnType: Datum
    signature: Datum text_ge(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1537,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1538,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1539,1
    - Dst: check_collation_set
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1545,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1547,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1550,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1551,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1552,1
    - Dst: toast_raw_datum_size
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1554,1
    - Dst: toast_raw_datum_size
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1555,1
    - Dst: text_substring
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1560,1
    - Dst: DatumGetTextPP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1561,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1563,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1563,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1563,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1564,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1566,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1567,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1570,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1571
      start: 1534
    functionDepth: 3
    functionLinenumber: 1534
    functionLinenumberEnd: 1571
    functionName: text_starts_with
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - errmsg
    - toast_raw_datum_size
    - PG_FREE_IF_COPY
    - memcmp
    - PG_RETURN_BOOL
    - ereport
    - DatumGetTextPP
    - check_collation_set
    - text_substring
    - PG_GETARG_DATUM
    - PG_GET_COLLATION
    - VARDATA_ANY
    - VARSIZE_ANY_EXHDR
    - errcode
    - pg_newlocale_from_collation
    linkageType: ''
    returnType: Datum
    signature: Datum text_starts_with(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1576,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1577,1
    - Dst: text_cmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1580,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1580,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1582,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1583,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1585,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1586
      start: 1573
    functionDepth: 3
    functionLinenumber: 1573
    functionLinenumberEnd: 1586
    functionName: bttextcmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_FREE_IF_COPY
    - PG_GETARG_TEXT_PP
    - text_cmp
    - PG_GET_COLLATION
    linkageType: ''
    returnType: Datum
    signature: Datum bttextcmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1591,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1595,1
    - Dst: varstr_sortsupport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1598,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1600,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1602,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1603
      start: 1588
    functionDepth: 1
    functionLinenumber: 1588
    functionLinenumberEnd: 1603
    functionName: bttextsortsupport
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - MemoryContextSwitchTo
    - varstr_sortsupport
    linkageType: ''
    returnType: Datum
    signature: Datum bttextsortsupport(PG_FUNCTION_ARGS)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: check_collation_set
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1623,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1625,1
    - Dst: pg_strxfrm_enabled
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1684,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1697,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1698,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1700,1
    - Dst: initHyperLogLog
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1739,1
    - Dst: initHyperLogLog
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1740,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 47
    argCount: 3
    argNames:
    - ssup
    - typid
    - collid
    argTypes:
    - SortSupport
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1747
      start: 1615
    functionDepth: 2
    functionLinenumber: 1615
    functionLinenumberEnd: 1747
    functionName: varstr_sortsupport
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 4
    functionsReached:
    - pg_strxfrm_enabled
    - check_collation_set
    - palloc
    - initHyperLogLog
    - pg_newlocale_from_collation
    linkageType: ''
    returnType: void
    signature: void varstr_sortsupport(SortSupport ssup, Oid typid, Oid collid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetVarStringPP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1755,1
    - Dst: DatumGetVarStringPP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1756,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1763,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1764,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1766,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1767,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1769,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1769,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1774,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1775,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1776,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1777,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - x
    - y
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1780
      start: 1752
    functionDepth: 1
    functionLinenumber: 1752
    functionLinenumberEnd: 1780
    functionName: varstrfastcmp_c
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - Min
    - pfree
    - DatumGetVarStringPP
    - memcmp
    - PointerGetDatum
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    linkageType: ''
    returnType: int
    signature: int varstrfastcmp_c(Datum x, Datum y, SortSupport ssup)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetBpCharPP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1792,1
    - Dst: DatumGetBpCharPP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1793,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1800,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1801,1
    - Dst: bpchartruelen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1803,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1803,1
    - Dst: bpchartruelen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1804,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1804,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1806,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1806,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1811,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1812,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1813,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1814,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - x
    - y
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1817
      start: 1789
    functionDepth: 1
    functionLinenumber: 1789
    functionLinenumberEnd: 1817
    functionName: bpcharfastcmp_c
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - bpchartruelen
    - Min
    - pfree
    - memcmp
    - PointerGetDatum
    - DatumGetBpCharPP
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    linkageType: ''
    returnType: int
    signature: int bpcharfastcmp_c(Datum x, Datum y, SortSupport ssup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetName
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1825,1
    - Dst: DatumGetName
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1826,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1828,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1828,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1828,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - x
    - y
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1829
      start: 1822
    functionDepth: 2
    functionLinenumber: 1822
    functionLinenumberEnd: 1829
    functionName: namefastcmp_c
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - DatumGetName
    - NameStr
    - strncmp
    linkageType: ''
    returnType: int
    signature: int namefastcmp_c(Datum x, Datum y, SortSupport ssup)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetVarStringPP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1837,1
    - Dst: DatumGetVarStringPP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1838,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1845,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1846,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1848,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1849,1
    - Dst: varstrfastcmp_locale
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1851,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1854,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1855,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1856,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1857,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - x
    - y
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1860
      start: 1834
    functionDepth: 1
    functionLinenumber: 1834
    functionLinenumberEnd: 1860
    functionName: varlenafastcmp_locale
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - pfree
    - DatumGetVarStringPP
    - varstrfastcmp_locale
    - PointerGetDatum
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    linkageType: ''
    returnType: int
    signature: int varlenafastcmp_locale(Datum x, Datum y, SortSupport ssup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetName
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1868,1
    - Dst: DatumGetName
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1869,1
    - Dst: varstrfastcmp_locale
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1871,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1871,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1871,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1871,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1872,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1872,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1872,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - x
    - y
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1874
      start: 1865
    functionDepth: 2
    functionLinenumber: 1865
    functionLinenumberEnd: 1874
    functionName: namefastcmp_locale
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - DatumGetName
    - varstrfastcmp_locale
    - NameStr
    - strlen
    linkageType: ''
    returnType: int
    signature: int namefastcmp_locale(Datum x, Datum y, SortSupport ssup)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1887,1
    - Dst: bpchartruelen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1908,1
    - Dst: bpchartruelen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1909,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1914,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1914,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1915,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1919,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1919,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1920,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1934,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1937,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1948,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1950,1
    - Dst: pg_strcoll
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1960,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1964,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 37
    argCount: 5
    argNames:
    - a1p
    - len1
    - a2p
    - len2
    - ssup
    argTypes:
    - char*
    - int
    - char*
    - int
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1970
      start: 1879
    functionDepth: 1
    functionLinenumber: 1879
    functionLinenumberEnd: 1970
    functionName: varstrfastcmp_locale
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 2
    functionsReached:
    - strcmp
    - bpchartruelen
    - Min
    - memcmp
    - Max
    - repalloc
    - memcpy
    - pg_strcoll
    linkageType: ''
    returnType: int
    signature: int varstrfastcmp_locale(char *a1p, int len1, char *a2p, int len2,
      SortSupport ssup)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetVarStringPP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1984,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1985,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1995,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:1996,1
    - Dst: bpchartruelen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2000,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2030,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2030,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2043,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2043,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2044,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2049,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2051,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2051,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2056,1
    - Dst: pg_strxfrm_prefix_enabled
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2064,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2068,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2069,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2070,1
    - Dst: pg_strxfrm_prefix
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2073,1
    - Dst: pg_strxfrm
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2088,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2098,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2099,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2100,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2113,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2113,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2127,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2127,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2128,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2131,1
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2131,1
    - Dst: addHyperLogLog
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2133,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2143,1
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2143,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2146,1
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2146,1
    - Dst: addHyperLogLog
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2149,1
    - Dst: DatumBigEndianToNative
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2163,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2166,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2167,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 56
    argCount: 2
    argNames:
    - original
    - ssup
    argTypes:
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2170
      start: 1979
    functionDepth: 2
    functionLinenumber: 1979
    functionLinenumberEnd: 2170
    functionName: varstr_abbrev_convert
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - pg_strxfrm_prefix
    - hash_any
    - pg_strxfrm_prefix_enabled
    - hash_uint32
    - bpchartruelen
    - Min
    - pfree
    - DatumGetVarStringPP
    - memcmp
    - addHyperLogLog
    - Max
    - DatumGetUInt32
    - memcpy
    - VARSIZE_ANY_EXHDR
    - repalloc
    - DatumBigEndianToNative
    - pg_strxfrm
    - memset
    - PointerGetDatum
    - VARDATA_ANY
    linkageType: ''
    returnType: Datum
    signature: Datum varstr_abbrev_convert(Datum original, SortSupport ssup)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2184,1
    - Dst: estimateHyperLogLog
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2190,1
    - Dst: estimateHyperLogLog
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2191,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2213,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2280,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - memtupcount
    - ssup
    argTypes:
    - int
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2285
      start: 2177
    functionDepth: 1
    functionLinenumber: 2177
    functionLinenumberEnd: 2285
    functionName: varstr_abbrev_abort
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - Assert
    - estimateHyperLogLog
    - elog
    linkageType: ''
    returnType: bool
    signature: bool varstr_abbrev_abort(int memtupcount, SortSupport ssup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2295,1
    - Dst: check_collation_set
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2298,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2300,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2303
      start: 2291
    functionDepth: 1
    functionLinenumber: 2291
    functionLinenumberEnd: 2303
    functionName: btvarstrequalimage
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_GET_COLLATION
    - PG_RETURN_BOOL
    - pg_newlocale_from_collation
    - check_collation_set
    linkageType: ''
    returnType: Datum
    signature: Datum btvarstrequalimage(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2308,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2309,1
    - Dst: text_cmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2312,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2312,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2315
      start: 2305
    functionDepth: 3
    functionLinenumber: 2305
    functionLinenumberEnd: 2315
    functionName: text_larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP
    - PG_RETURN_TEXT_P
    - text_cmp
    linkageType: ''
    returnType: Datum
    signature: Datum text_larger(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2320,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2321,1
    - Dst: text_cmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2324,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2324,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2327
      start: 2317
    functionDepth: 3
    functionLinenumber: 2317
    functionLinenumberEnd: 2327
    functionName: text_smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP
    - PG_RETURN_TEXT_P
    - text_cmp
    linkageType: ''
    returnType: Datum
    signature: Datum text_smaller(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2337,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2338,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2339,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2339,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2340,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2341,1
    - Dst: check_collation_set
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2344,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2348,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2348,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2348,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2350,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2350,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2351,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2354,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2356,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2357
      start: 2334
    functionDepth: 2
    functionLinenumber: 2334
    functionLinenumberEnd: 2357
    functionName: nameeqtext
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - NameStr
    - PG_GET_COLLATION
    - varstr_cmp
    - PG_GETARG_TEXT_PP
    - memcmp
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - check_collation_set
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - strlen
    linkageType: ''
    returnType: Datum
    signature: Datum nameeqtext(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2362,1
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2363,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2364,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2365,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2365,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2366,1
    - Dst: check_collation_set
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2369,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2373,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2373,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2373,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2375,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2375,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2376,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2379,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2381,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2382
      start: 2359
    functionDepth: 2
    functionLinenumber: 2359
    functionLinenumberEnd: 2382
    functionName: texteqname
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - NameStr
    - PG_GET_COLLATION
    - varstr_cmp
    - PG_GETARG_TEXT_PP
    - memcmp
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - check_collation_set
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - strlen
    linkageType: ''
    returnType: Datum
    signature: Datum texteqname(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2387,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2388,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2389,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2389,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2390,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2391,1
    - Dst: check_collation_set
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2394,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2398,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2398,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2398,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2400,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2400,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2401,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2404,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2406,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2407
      start: 2384
    functionDepth: 2
    functionLinenumber: 2384
    functionLinenumberEnd: 2407
    functionName: namenetext
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - NameStr
    - PG_GET_COLLATION
    - varstr_cmp
    - PG_GETARG_TEXT_PP
    - memcmp
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - check_collation_set
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - strlen
    linkageType: ''
    returnType: Datum
    signature: Datum namenetext(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2412,1
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2413,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2414,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2415,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2415,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2416,1
    - Dst: check_collation_set
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2419,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2423,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2423,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2423,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2425,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2425,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2426,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2429,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2431,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2432
      start: 2409
    functionDepth: 2
    functionLinenumber: 2409
    functionLinenumberEnd: 2432
    functionName: textnename
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_FREE_IF_COPY
    - NameStr
    - PG_GET_COLLATION
    - varstr_cmp
    - PG_GETARG_TEXT_PP
    - memcmp
    - PG_RETURN_BOOL
    - PG_GETARG_NAME
    - check_collation_set
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - strlen
    linkageType: ''
    returnType: Datum
    signature: Datum textnename(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2437,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2438,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2441,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2441,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2441,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2441,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2442,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2442,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2443,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2445,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2447,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2448
      start: 2434
    functionDepth: 2
    functionLinenumber: 2434
    functionLinenumberEnd: 2448
    functionName: btnametextcmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_FREE_IF_COPY
    - NameStr
    - PG_GET_COLLATION
    - varstr_cmp
    - PG_GETARG_TEXT_PP
    - PG_GETARG_NAME
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - strlen
    linkageType: ''
    returnType: Datum
    signature: Datum btnametextcmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2453,1
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2454,1
    - Dst: varstr_cmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2457,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2457,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2457,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2458,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2458,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2458,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2459,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2461,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2463,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2464
      start: 2450
    functionDepth: 2
    functionLinenumber: 2450
    functionLinenumberEnd: 2464
    functionName: bttextnamecmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_FREE_IF_COPY
    - NameStr
    - PG_GET_COLLATION
    - varstr_cmp
    - PG_GETARG_TEXT_PP
    - PG_GETARG_NAME
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - strlen
    linkageType: ''
    returnType: Datum
    signature: Datum bttextnamecmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - cmpfunc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2471
      start: 2466
    functionDepth: 0
    functionLinenumber: 2466
    functionLinenumberEnd: 2471
    functionName: CmpCall
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CmpCall(cmpfunc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2475,1
    - Dst: CmpCall
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2476
      start: 2472
    functionDepth: 1
    functionLinenumber: 2472
    functionLinenumberEnd: 2476
    functionName: namelttext
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - CmpCall
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum namelttext(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2481,1
    - Dst: CmpCall
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2481,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2482
      start: 2478
    functionDepth: 1
    functionLinenumber: 2478
    functionLinenumberEnd: 2482
    functionName: nameletext
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - CmpCall
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum nameletext(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2487,1
    - Dst: CmpCall
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2488
      start: 2484
    functionDepth: 1
    functionLinenumber: 2484
    functionLinenumberEnd: 2488
    functionName: namegttext
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - CmpCall
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum namegttext(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2493,1
    - Dst: CmpCall
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2493,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2494
      start: 2490
    functionDepth: 1
    functionLinenumber: 2490
    functionLinenumberEnd: 2494
    functionName: namegetext
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - CmpCall
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum namegetext(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2499,1
    - Dst: CmpCall
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2500
      start: 2496
    functionDepth: 1
    functionLinenumber: 2496
    functionLinenumberEnd: 2500
    functionName: textltname
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - CmpCall
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum textltname(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2505,1
    - Dst: CmpCall
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2506
      start: 2502
    functionDepth: 1
    functionLinenumber: 2502
    functionLinenumberEnd: 2506
    functionName: textlename
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - CmpCall
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum textlename(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2511,1
    - Dst: CmpCall
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2511,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2512
      start: 2508
    functionDepth: 1
    functionLinenumber: 2508
    functionLinenumberEnd: 2512
    functionName: textgtname
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - CmpCall
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum textgtname(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2517,1
    - Dst: CmpCall
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2517,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2518
      start: 2514
    functionDepth: 1
    functionLinenumber: 2514
    functionLinenumberEnd: 2518
    functionName: textgename
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - CmpCall
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum textgename(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2538,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2539,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2541,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2541,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2541,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2541,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - text*
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2550
      start: 2531
    functionDepth: 1
    functionLinenumber: 2531
    functionLinenumberEnd: 2550
    functionName: internal_text_pattern_compare
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - memcmp
    - Min
    linkageType: ''
    returnType: int
    signature: int internal_text_pattern_compare(text *arg1, text *arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2556,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2557,1
    - Dst: internal_text_pattern_compare
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2560,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2562,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2563,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2566
      start: 2553
    functionDepth: 2
    functionLinenumber: 2553
    functionLinenumberEnd: 2566
    functionName: text_pattern_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - internal_text_pattern_compare
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_FREE_IF_COPY
    linkageType: ''
    returnType: Datum
    signature: Datum text_pattern_lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2572,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2573,1
    - Dst: internal_text_pattern_compare
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2576,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2578,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2579,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2581,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2582
      start: 2569
    functionDepth: 2
    functionLinenumber: 2569
    functionLinenumberEnd: 2582
    functionName: text_pattern_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - internal_text_pattern_compare
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_FREE_IF_COPY
    linkageType: ''
    returnType: Datum
    signature: Datum text_pattern_le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2588,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2589,1
    - Dst: internal_text_pattern_compare
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2592,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2594,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2595,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2597,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2598
      start: 2585
    functionDepth: 2
    functionLinenumber: 2585
    functionLinenumberEnd: 2598
    functionName: text_pattern_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - internal_text_pattern_compare
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_FREE_IF_COPY
    linkageType: ''
    returnType: Datum
    signature: Datum text_pattern_ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2604,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2605,1
    - Dst: internal_text_pattern_compare
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2608,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2610,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2611,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2613,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2614
      start: 2601
    functionDepth: 2
    functionLinenumber: 2601
    functionLinenumberEnd: 2614
    functionName: text_pattern_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - internal_text_pattern_compare
    - PG_GETARG_TEXT_PP
    - PG_RETURN_BOOL
    - PG_FREE_IF_COPY
    linkageType: ''
    returnType: Datum
    signature: Datum text_pattern_gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2620,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2621,1
    - Dst: internal_text_pattern_compare
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2624,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2626,1
    - Dst: PG_FREE_IF_COPY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2627,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2629,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2630
      start: 2617
    functionDepth: 2
    functionLinenumber: 2617
    functionLinenumberEnd: 2630
    functionName: bttext_pattern_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - internal_text_pattern_compare
    - PG_GETARG_TEXT_PP
    - PG_FREE_IF_COPY
    - PG_RETURN_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum bttext_pattern_cmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2636,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2639,1
    - Dst: varstr_sortsupport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2642,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2644,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2646,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2647
      start: 2633
    functionDepth: 3
    functionLinenumber: 2633
    functionLinenumberEnd: 2647
    functionName: bttext_pattern_sortsupport
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - MemoryContextSwitchTo
    - varstr_sortsupport
    linkageType: ''
    returnType: Datum
    signature: Datum bttext_pattern_sortsupport(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2656,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2660,1
    - Dst: pg_mbcliplen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2664,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2664,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2667,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2668,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2668,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2668,1
    - Dst: PG_RETURN_NAME
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2670,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2671
      start: 2653
    functionDepth: 1
    functionLinenumber: 2653
    functionLinenumberEnd: 2671
    functionName: text_name
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - NameStr
    - memcpy
    - PG_GETARG_TEXT_PP
    - PG_RETURN_NAME
    - palloc0
    - pg_mbcliplen
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    linkageType: ''
    returnType: Datum
    signature: Datum text_name(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NAME
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2679,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2681,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2681,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2681,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2682
      start: 2676
    functionDepth: 2
    functionLinenumber: 2676
    functionLinenumberEnd: 2682
    functionName: name_text
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_NAME
    - cstring_to_text
    - PG_RETURN_TEXT_P
    - NameStr
    linkageType: ''
    returnType: Datum
    signature: Datum name_text(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2703,1
    - Dst: SplitIdentifierString
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2705,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2706,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2707,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2708,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2711,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2712,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2713,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2717,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2719,1
    - Dst: makeString
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2719,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2719,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2722,1
    - Dst: list_free
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2723,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - textval
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2726
      start: 2693
    functionDepth: 6
    functionLinenumber: 2693
    functionLinenumberEnd: 2726
    functionName: textToQualifiedNameList
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 3
    functionsReached:
    - errmsg
    - lfirst
    - makeString
    - pfree
    - text_to_cstring
    - ereport
    - pstrdup
    - lappend
    - SplitIdentifierString
    - errcode
    - list_free
    linkageType: ''
    returnType: List
    signature: 'List *

      textToQualifiedNameList(text *textval)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2717,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2719,1
    - Dst: makeString
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2719,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2719,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2720
      start: 2715
    functionDepth: 6
    functionLinenumber: 2715
    functionLinenumberEnd: 2720
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 467
    functionsReached:
    - makeString
    - lappend
    - lfirst
    - pstrdup
    linkageType: ''
    returnType: void
    signature: void foreach(l, namelist)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: scanner_isspace
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2760,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2778,1
    - Dst: memmove
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2784,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2784,1
    - Dst: scanner_isspace
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2798,1
    - Dst: downcase_truncate_identifier
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2814,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2815,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2815,1
    - Dst: strncpy
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2816,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2817,1
    - Dst: scanner_isspace
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2820,1
    - Dst: scanner_isspace
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2826,1
    - Dst: truncate_identifier
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2839,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2839,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2844,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 47
    argCount: 3
    argNames:
    - rawstring
    - separator
    - namelist
    argTypes:
    - char*
    - char
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2850
      start: 2751
    functionDepth: 6
    functionLinenumber: 2751
    functionLinenumberEnd: 2850
    functionName: SplitIdentifierString
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 11
    functionsReached:
    - pfree
    - Assert
    - memmove
    - strncpy
    - truncate_identifier
    - lappend
    - downcase_truncate_identifier
    - scanner_isspace
    - strlen
    - strchr
    linkageType: ''
    returnType: bool
    signature: "bool SplitIdentifierString(char *rawstring, char separator,\n\t\t\t\t\t
      \ List **namelist)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: scanner_isspace
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2887,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2905,1
    - Dst: memmove
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2911,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2911,1
    - Dst: scanner_isspace
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2924,1
    - Dst: scanner_isspace
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2932,1
    - Dst: scanner_isspace
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2938,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2951,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2957,1
    - Dst: canonicalize_path
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2958,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/varlena.c:2959,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 47
    argCount: 3
    argNames:
    - rawstring
    - separator
    - namelist
    argTypes:
    - char*
    - char
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2965
      start: 2878
    functionDepth: 6
    functionLinenumber: 2878
    functionLinenumberEnd: 2965
    functionName: SplitDirectoriesString
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 1
    functionsReached:
    - pstrdup
    - memmove
    - lappend
    - scanner_isspace
    - canonicalize_path
    - strlen
    - strchr
    linkageType: ''
    returnType: bool
    signature: "bool SplitDirectoriesString(char *rawstring, char separator,\n\t\t\t\t\t
      \  List **namelist)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: scanner_isspace
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3008,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3026,1
    - Dst: memmove
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3032,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3032,1
    - Dst: scanner_isspace
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3043,1
    - Dst: scanner_isspace
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3050,1
    - Dst: scanner_isspace
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3056,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3071,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 41
    argCount: 3
    argNames:
    - rawstring
    - separator
    - namelist
    argTypes:
    - char*
    - char
    - List**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3077
      start: 2999
    functionDepth: 6
    functionLinenumber: 2999
    functionLinenumberEnd: 3077
    functionName: SplitGUCList
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 3
    functionsReached:
    - memmove
    - lappend
    - scanner_isspace
    - strlen
    - strchr
    linkageType: ''
    returnType: bool
    signature: "bool SplitGUCList(char *rawstring, char separator,\n\t\t\t List **namelist)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3088,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3088,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3088,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - str
    - t
    argTypes:
    - StringInfo
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3089
      start: 3085
    functionDepth: 2
    functionLinenumber: 3085
    functionLinenumberEnd: 3089
    functionName: appendStringInfoText
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 2
    functionsReached:
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - appendBinaryStringInfo
    linkageType: ''
    returnType: void
    signature: void appendStringInfoText(StringInfo str, const text *t)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3102,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3103,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3104,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3115,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3116,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3121,1
    - Dst: text_position_setup
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3124,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3124,1
    - Dst: text_position_next
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3126,1
    - Dst: text_position_cleanup
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3131,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3132,1
    - Dst: text_position_get_match_ptr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3134,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3135,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3137,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3141,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3145,1
    - Dst: appendStringInfoText
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3147,1
    - Dst: text_position_next
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3151,1
    - Dst: text_position_get_match_ptr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3153,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3158,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3159,1
    - Dst: text_position_cleanup
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3161,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3163,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3164,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3166,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3167
      start: 3099
    functionDepth: 3
    functionLinenumber: 3099
    functionLinenumberEnd: 3167
    functionName: replace_text
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - initStringInfo
    - appendStringInfoText
    - VARSIZE_ANY
    - PG_GET_COLLATION
    - text_position_get_match_ptr
    - CHECK_FOR_INTERRUPTS
    - appendBinaryStringInfo
    - pfree
    - PG_GETARG_TEXT_PP
    - text_position_cleanup
    - text_position_next
    - PG_RETURN_TEXT_P
    - text_position_setup
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - cstring_to_text_with_len
    linkageType: ''
    returnType: Datum
    signature: Datum replace_text(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3180,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3181,1
    - Dst: memchr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3186,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - replace_text
    argTypes:
    - text*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3200
      start: 3176
    functionDepth: 1
    functionLinenumber: 3176
    functionLinenumberEnd: 3200
    functionName: check_replace_text_has_escape
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - memchr
    linkageType: ''
    returnType: int
    signature: int check_replace_text_has_escape(const text *replace_text)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3214,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3215,1
    - Dst: memchr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3224,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3230,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3240,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3263,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3274,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3287,1
    - Dst: charlen_to_bytelen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3289,1
    - Dst: charlen_to_bytelen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3290,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3291,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 40
    argCount: 5
    argNames:
    - str
    - replace_text
    - pmatch
    - start_ptr
    - data_pos
    argTypes:
    - StringInfo
    - text*
    - regmatch_t*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3294
      start: 3209
    functionDepth: 2
    functionLinenumber: 3209
    functionLinenumberEnd: 3294
    functionName: appendStringInfoRegexpSubstr
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - Assert
    - appendBinaryStringInfo
    - appendStringInfoChar
    - charlen_to_bytelen
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - memchr
    linkageType: ''
    returnType: void
    signature: "void appendStringInfoRegexpSubstr(StringInfo str, text *replace_text,\n\t\t\t\t\t\t\t
      regmatch_t *pmatch,\n\t\t\t\t\t\t\t char *start_ptr, int data_pos)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3317,1
    - Dst: lengthof
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3321,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3328,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3331,1
    - Dst: pg_mb2wchar_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3332,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3332,1
    - Dst: check_replace_text_has_escape
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3335,1
    - Dst: RE_compile_and_cache
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3346,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3349,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3356,1
    - Dst: pg_regexec
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3358,1
    - Dst: pg_regerror
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3374,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3375,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3376,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3377,1
    - Dst: charlen_to_bytelen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3405,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3407,1
    - Dst: appendStringInfoRegexpSubstr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3421,1
    - Dst: appendStringInfoText
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3424,1
    - Dst: charlen_to_bytelen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3427,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3455,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3456,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3459,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3460,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3461,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 53
    argCount: 7
    argNames:
    - src_text
    - pattern_text
    - replace_text
    - cflags
    - collation
    - search_start
    - n
    argTypes:
    - text*
    - text*
    - text*
    - int
    - Oid
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3464
      start: 3309
    functionDepth: 3
    functionLinenumber: 3309
    functionLinenumberEnd: 3464
    functionName: replace_text_regexp
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 3
    functionsReached:
    - VARSIZE_ANY
    - lengthof
    - CHECK_FOR_INTERRUPTS
    - pg_regerror
    - pg_regexec
    - RE_compile_and_cache
    - cstring_to_text_with_len
    - pfree
    - check_replace_text_has_escape
    - errmsg
    - VARSIZE_ANY_EXHDR
    - palloc
    - appendStringInfoText
    - initStringInfo
    - appendBinaryStringInfo
    - ereport
    - appendStringInfoRegexpSubstr
    - charlen_to_bytelen
    - VARDATA_ANY
    - pg_mb2wchar_with_len
    - errcode
    linkageType: ''
    returnType: text
    signature: "text *\nreplace_text_regexp(text *src_text, text *pattern_text,\n\t\t\t\t\ttext
      *replace_text,\n\t\t\t\t\tint cflags, Oid collation,\n\t\t\t\t\tint search_start,
      int n)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3474,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3475,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3476,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3487,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3488,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3489,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3491,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3492,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3496,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3496,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3503,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3505,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3505,1
    - Dst: text_position_setup
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3509,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3509,1
    - Dst: text_position_next
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3511,1
    - Dst: text_position_cleanup
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3516,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3519,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3521,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3521,1
    - Dst: text_position_next
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3533,1
    - Dst: text_position_get_match_ptr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3539,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3540,1
    - Dst: text_position_cleanup
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3541,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3542,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3542,1
    - Dst: text_position_cleanup
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3552,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3553,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3553,1
    - Dst: text_position_reset
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3557,1
    - Dst: text_position_next
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3558,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3559,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3563,1
    - Dst: text_position_get_match_ptr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3564,1
    - Dst: text_position_next
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3570,1
    - Dst: text_position_get_match_ptr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3572,1
    - Dst: text_position_cleanup
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3575,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3583,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3585,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3589,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3594,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3597,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 56
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3598
      start: 3471
    functionDepth: 2
    functionLinenumber: 3471
    functionLinenumberEnd: 3598
    functionName: split_part
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - PG_GET_COLLATION
    - text_position_get_match_ptr
    - PG_GETARG_TEXT_PP
    - text_position_reset
    - text_position_cleanup
    - ereport
    - text_position_next
    - PG_GETARG_INT32
    - PG_RETURN_TEXT_P
    - text_position_setup
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - cstring_to_text
    - errcode
    - cstring_to_text_with_len
    linkageType: ''
    returnType: Datum
    signature: Datum split_part(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3606,1
    - Dst: DirectFunctionCall2Coll
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3606,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3608,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3609,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - txt1
    - txt2
    - collid
    argTypes:
    - text*
    - text*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3610
      start: 3603
    functionDepth: 1
    functionLinenumber: 3603
    functionLinenumberEnd: 3610
    functionName: text_isequal
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - DatumGetBool
    - DirectFunctionCall2Coll
    - PointerGetDatum
    linkageType: ''
    returnType: bool
    signature: bool text_isequal(text *txt1, text *txt2, Oid collid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3623,1
    - Dst: split_text
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3625,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3626,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3629,1
    - Dst: construct_empty_array
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3629,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3631,1
    - Dst: makeArrayResult
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3631,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3633
      start: 3617
    functionDepth: 1
    functionLinenumber: 3617
    functionLinenumberEnd: 3633
    functionName: text_to_array
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - split_text
    - memset
    - PG_RETURN_DATUM
    - PG_RETURN_ARRAYTYPE_P
    - construct_empty_array
    - makeArrayResult
    - PG_RETURN_NULL
    linkageType: ''
    returnType: Datum
    signature: Datum text_to_array(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: text_to_array
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3646,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3647
      start: 3643
    functionDepth: 2
    functionLinenumber: 3643
    functionLinenumberEnd: 3647
    functionName: text_to_array_null
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - text_to_array
    linkageType: ''
    returnType: Datum
    signature: Datum text_to_array_null(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: InitMaterializedSRF
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3661,1
    - Dst: split_text
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3665,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3668
      start: 3654
    functionDepth: 1
    functionLinenumber: 3654
    functionLinenumberEnd: 3668
    functionName: text_to_table
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - split_text
    - InitMaterializedSRF
    linkageType: ''
    returnType: Datum
    signature: Datum text_to_table(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: text_to_table
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3681,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3682
      start: 3678
    functionDepth: 2
    functionLinenumber: 3678
    functionLinenumberEnd: 3682
    functionName: text_to_table_null
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - text_to_table
    linkageType: ''
    returnType: Datum
    signature: Datum text_to_table_null(PG_FUNCTION_ARGS)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3700,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3707,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3710,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3713,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3714,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3719,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3719,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3720,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3732,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3733,1
    - Dst: split_text_accum_result
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3742,1
    - Dst: text_position_setup
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3747,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3749,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3757,1
    - Dst: text_position_next
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3759,1
    - Dst: VARSIZE_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3763,1
    - Dst: text_position_get_match_ptr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3769,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3774,1
    - Dst: split_text_accum_result
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3777,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3780,1
    - Dst: text_position_cleanup
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3788,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3797,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3799,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3803,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3805,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3808,1
    - Dst: split_text_accum_result
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3811,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3814,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 52
    argCount: 2
    argNames:
    - fcinfo
    - tstate
    argTypes:
    - FunctionCallInfo
    - SplitTextOutputData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3822
      start: 3694
    functionDepth: 2
    functionLinenumber: 3694
    functionLinenumberEnd: 3822
    functionName: split_text
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 2
    functionsReached:
    - pfree
    - VARSIZE_ANY
    - text_position_get_match_ptr
    - CHECK_FOR_INTERRUPTS
    - pg_mblen
    - PG_GETARG_TEXT_PP
    - text_position_cleanup
    - PG_ARGISNULL
    - cstring_to_text_with_len
    - text_position_next
    - split_text_accum_result
    - text_position_setup
    - VARSIZE_ANY_EXHDR
    - PG_GET_COLLATION
    - VARDATA_ANY
    - PG_NARGS
    linkageType: ''
    returnType: bool
    signature: bool split_text(FunctionCallInfo fcinfo, SplitTextOutputData *tstate)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: text_isequal
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3838,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3846,1
    - Dst: tuplestore_putvalues
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3849,1
    - Dst: accumArrayResult
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3856,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3857,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - tstate
    - field_value
    - null_string
    - collation
    argTypes:
    - SplitTextOutputData*
    - text*
    - text*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3862
      start: 3830
    functionDepth: 6
    functionLinenumber: 3830
    functionLinenumberEnd: 3862
    functionName: split_text_accum_result
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 1
    functionsReached:
    - text_isequal
    - tuplestore_putvalues
    - accumArrayResult
    - PointerGetDatum
    linkageType: ''
    returnType: void
    signature: "void split_text_accum_result(SplitTextOutputData *tstate,\n\t\t\t\t\t\ttext
      *field_value,\n\t\t\t\t\t\ttext *null_string,\n\t\t\t\t\t\tOid collation)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3872,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3873,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3873,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3875,1
    - Dst: array_to_text_internal
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3875,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3876
      start: 3869
    functionDepth: 2
    functionLinenumber: 3869
    functionLinenumberEnd: 3876
    functionName: array_to_text
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - array_to_text_internal
    - PG_RETURN_TEXT_P
    - text_to_cstring
    - PG_GETARG_ARRAYTYPE_P
    linkageType: ''
    returnType: Datum
    signature: Datum array_to_text(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3893,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3893,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3894,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3896,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3897,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3897,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3900,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3901,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3901,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3905,1
    - Dst: array_to_text_internal
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3905,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3906
      start: 3885
    functionDepth: 2
    functionLinenumber: 3885
    functionLinenumberEnd: 3906
    functionName: array_to_text_null
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - PG_ARGISNULL
    - array_to_text_internal
    - PG_RETURN_NULL
    - PG_RETURN_TEXT_P
    - text_to_cstring
    - PG_GETARG_ARRAYTYPE_P
    linkageType: ''
    returnType: Datum
    signature: Datum array_to_text_null(PG_FUNCTION_ARGS)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3931,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3932,1
    - Dst: ArrayGetNItems
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3933,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3937,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3939,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3940,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3950,1
    - Dst: get_type_io_data
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3961,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3965,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3973,1
    - Dst: ARR_NULLBITMAP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3974,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3989,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3991,1
    - Dst: fetch_att
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3997,1
    - Dst: OutputFunctionCall
      Src: /src/postgres/src/backend/utils/adt/varlena.c:3999,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4002,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4004,1
    - Dst: att_addlength_pointer
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4007,1
    - Dst: att_align_nominal
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4008,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4023,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4024,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 54
    argCount: 4
    argNames:
    - fcinfo
    - v
    - fldsep
    - null_string
    argTypes:
    - FunctionCallInfo
    - ArrayType*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4027
      start: 3911
    functionDepth: 3
    functionLinenumber: 3911
    functionLinenumberEnd: 4027
    functionName: array_to_text_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 2
    functionsReached:
    - ARR_ELEMTYPE
    - pfree
    - ARR_DIMS
    - ARR_DATA_PTR
    - appendStringInfo
    - att_align_nominal
    - ARR_NDIM
    - appendStringInfoString
    - ARR_NULLBITMAP
    - OutputFunctionCall
    - get_type_io_data
    - ArrayGetNItems
    - fmgr_info_cxt
    - fetch_att
    - initStringInfo
    - MemoryContextAlloc
    - att_addlength_pointer
    - cstring_to_text_with_len
    linkageType: ''
    returnType: text
    signature: "text *\narray_to_text_internal(FunctionCallInfo fcinfo, ArrayType
      *v,\n\t\t\t\t\t   const char *fldsep, const char *null_string)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4043,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4044,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4052,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - value
    - base
    argTypes:
    - uint64
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4053
      start: 4033
    functionDepth: 2
    functionLinenumber: 4033
    functionLinenumberEnd: 4053
    functionName: convert_to_base
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - Assert
    - cstring_to_text_with_len
    linkageType: ''
    returnType: text
    signature: 'text *

      convert_to_base(uint64 value, int base)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4062,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4064,1
    - Dst: convert_to_base
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4064,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4065
      start: 4059
    functionDepth: 3
    functionLinenumber: 4059
    functionLinenumberEnd: 4065
    functionName: to_bin32
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TEXT_P
    - PG_GETARG_INT32
    - convert_to_base
    linkageType: ''
    returnType: Datum
    signature: Datum to_bin32(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4069,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4071,1
    - Dst: convert_to_base
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4071,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4072
      start: 4066
    functionDepth: 3
    functionLinenumber: 4066
    functionLinenumberEnd: 4072
    functionName: to_bin64
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_TEXT_P
    - convert_to_base
    linkageType: ''
    returnType: Datum
    signature: Datum to_bin64(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4081,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4083,1
    - Dst: convert_to_base
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4083,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4084
      start: 4078
    functionDepth: 3
    functionLinenumber: 4078
    functionLinenumberEnd: 4084
    functionName: to_oct32
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TEXT_P
    - PG_GETARG_INT32
    - convert_to_base
    linkageType: ''
    returnType: Datum
    signature: Datum to_oct32(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4088,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4090,1
    - Dst: convert_to_base
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4090,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4091
      start: 4085
    functionDepth: 3
    functionLinenumber: 4085
    functionLinenumberEnd: 4091
    functionName: to_oct64
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_TEXT_P
    - convert_to_base
    linkageType: ''
    returnType: Datum
    signature: Datum to_oct64(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4100,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4102,1
    - Dst: convert_to_base
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4103
      start: 4097
    functionDepth: 3
    functionLinenumber: 4097
    functionLinenumberEnd: 4103
    functionName: to_hex32
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_TEXT_P
    - PG_GETARG_INT32
    - convert_to_base
    linkageType: ''
    returnType: Datum
    signature: Datum to_hex32(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4107,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4109,1
    - Dst: convert_to_base
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4110
      start: 4104
    functionDepth: 3
    functionLinenumber: 4104
    functionLinenumberEnd: 4110
    functionName: to_hex64
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_RETURN_TEXT_P
    - convert_to_base
    linkageType: ''
    returnType: Datum
    signature: Datum to_hex64(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4120,1
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4128,1
    - Dst: get_typlen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4130,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4132,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4134,1
    - Dst: toast_datum_size
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4144,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4149,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4149,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4157,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4158
      start: 4117
    functionDepth: 2
    functionLinenumber: 4117
    functionLinenumberEnd: 4158
    functionName: pg_column_size
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - DatumGetCString
    - get_fn_expr_argtype
    - elog
    - toast_datum_size
    - PG_GETARG_DATUM
    - MemoryContextAlloc
    - strlen
    - get_typlen
    linkageType: ''
    returnType: Datum
    signature: Datum pg_column_size(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4175,1
    - Dst: get_typlen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4177,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4179,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4181,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4189,1
    - Dst: toast_get_compression_id
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4192,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4193,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4193,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4195,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4207,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4210,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4210,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4211
      start: 4164
    functionDepth: 2
    functionLinenumber: 4164
    functionLinenumberEnd: 4211
    functionName: pg_column_compression
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - get_fn_expr_argtype
    - elog
    - PG_RETURN_NULL
    - toast_get_compression_id
    - PG_RETURN_TEXT_P
    - PG_GETARG_DATUM
    - MemoryContextAlloc
    - cstring_to_text
    - DatumGetPointer
    - get_typlen
    linkageType: ''
    returnType: Datum
    signature: Datum pg_column_compression(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4228,1
    - Dst: get_typlen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4230,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4232,1
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4234,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4242,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4244,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4244,1
    - Dst: VARATT_IS_EXTERNAL_ONDISK
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4246,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4247,1
    - Dst: VARATT_EXTERNAL_GET_POINTER
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4249,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4251,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4252
      start: 4217
    functionDepth: 1
    functionLinenumber: 4217
    functionLinenumberEnd: 4252
    functionName: pg_column_toast_chunk_id
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - VARATT_EXTERNAL_GET_POINTER
    - get_fn_expr_argtype
    - VARATT_IS_EXTERNAL_ONDISK
    - PG_RETURN_OID
    - elog
    - PG_RETURN_NULL
    - PG_GETARG_DATUM
    - MemoryContextAlloc
    - DatumGetPointer
    - get_typlen
    linkageType: ''
    returnType: Datum
    signature: Datum pg_column_toast_chunk_id(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4272,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4275,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4282,1
    - Dst: makeStringInfo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4283,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4284,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - fcinfo
    argTypes:
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4287
      start: 4265
    functionDepth: 4
    functionLinenumber: 4265
    functionLinenumberEnd: 4287
    functionName: makeStringAggState
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - makeStringInfo
    - AggCheckCallContext
    - MemoryContextSwitchTo
    - elog
    linkageType: ''
    returnType: StringInfo
    signature: StringInfo makeStringAggState(FunctionCallInfo fcinfo)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4294,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4294,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4297,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4299,1
    - Dst: makeStringAggState
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4315,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4319,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4321,1
    - Dst: appendStringInfoText
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4323,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4325,1
    - Dst: appendStringInfoText
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4328,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4336,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4337,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4338
      start: 4289
    functionDepth: 5
    functionLinenumber: 4289
    functionLinenumberEnd: 4338
    functionName: string_agg_transfn
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - appendStringInfoText
    - PG_GETARG_POINTER
    - PG_GETARG_TEXT_PP
    - makeStringAggState
    - PG_ARGISNULL
    - PG_RETURN_NULL
    - VARSIZE_ANY_EXHDR
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum string_agg_transfn(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4351,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4352,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4354,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4354,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4355,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4355,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4364,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4365,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4373,1
    - Dst: makeStringAggState
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4374,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4375,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4377,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4382,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4385,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4386
      start: 4344
    functionDepth: 5
    functionLinenumber: 4344
    functionLinenumberEnd: 4386
    functionName: string_agg_combine
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - appendBinaryStringInfo
    - PG_GETARG_POINTER
    - makeStringAggState
    - PG_ARGISNULL
    - AggCheckCallContext
    - PG_RETURN_NULL
    - elog
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum string_agg_combine(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4402,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4402,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4404,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4406,1
    - Dst: pq_sendint
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4409,1
    - Dst: pq_sendbytes
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4412,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4414,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4416,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4417
      start: 4394
    functionDepth: 4
    functionLinenumber: 4394
    functionLinenumberEnd: 4417
    functionName: string_agg_serialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - Assert
    - pq_sendbytes
    - PG_GETARG_POINTER
    - pq_sendint
    - pq_endtypsend
    - AggCheckCallContext
    - PG_RETURN_BYTEA_P
    - pq_begintypsend
    linkageType: ''
    returnType: Datum
    signature: Datum string_agg_serialize(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4435,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4435,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4437,1
    - Dst: initReadOnlyStringInfo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4443,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4443,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4444,1
    - Dst: makeStringAggState
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4446,1
    - Dst: pq_getmsgint
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4449,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4452,1
    - Dst: pq_getmsgbytes
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4453,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4454,1
    - Dst: pq_getmsgend
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4456,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4458,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4459
      start: 4425
    functionDepth: 5
    functionLinenumber: 4425
    functionLinenumberEnd: 4459
    functionName: string_agg_deserialize
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - Assert
    - pq_getmsgbytes
    - pq_getmsgend
    - appendBinaryStringInfo
    - makeStringAggState
    - PG_GETARG_BYTEA_PP
    - AggCheckCallContext
    - initReadOnlyStringInfo
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - pq_getmsgint
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum string_agg_deserialize(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4467,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4467,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4469,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4469,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4474,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4474,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4478,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4479
      start: 4461
    functionDepth: 2
    functionLinenumber: 4461
    functionLinenumberEnd: 4479
    functionName: string_agg_finalfn
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - Assert
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - AggCheckCallContext
    - PG_RETURN_NULL
    - PG_RETURN_TEXT_P
    - cstring_to_text_with_len
    linkageType: ''
    returnType: Datum
    signature: Datum string_agg_finalfn(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemoryContextAlloc
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4494,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4495,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4497,1
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4503,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4504,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4505,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4507,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4508,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - fcinfo
    - argidx
    argTypes:
    - FunctionCallInfo
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4514
      start: 4487
    functionDepth: 1
    functionLinenumber: 4487
    functionLinenumberEnd: 4514
    functionName: build_concat_foutcache
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - getTypeOutputInfo
    - get_fn_expr_argtype
    - elog
    - fmgr_info_cxt
    - OidIsValid
    - PG_NARGS
    - MemoryContextAlloc
    linkageType: ''
    returnType: FmgrInfo
    signature: 'FmgrInfo *

      build_concat_foutcache(FunctionCallInfo fcinfo, int argidx)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: get_fn_expr_variadic
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4540,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4545,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4545,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4548,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4558,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4558,1
    - Dst: get_base_element_type
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4558,1
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4558,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4561,1
    - Dst: array_to_text_internal
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4567,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4571,1
    - Dst: build_concat_foutcache
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4576,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4578,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4580,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4582,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4588,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4591,1
    - Dst: OutputFunctionCall
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4592,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4596,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4597,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 3
    argNames:
    - sepstr
    - argidx
    - fcinfo
    argTypes:
    - char*
    - int
    - FunctionCallInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4600
      start: 4525
    functionDepth: 4
    functionLinenumber: 4525
    functionLinenumberEnd: 4600
    functionName: concat_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - get_base_element_type
    - Assert
    - pfree
    - get_fn_expr_variadic
    - appendStringInfoString
    - get_fn_expr_argtype
    - PG_ARGISNULL
    - build_concat_foutcache
    - OutputFunctionCall
    - array_to_text_internal
    - OidIsValid
    - PG_GETARG_DATUM
    - PG_NARGS
    - initStringInfo
    - PG_GETARG_ARRAYTYPE_P
    - cstring_to_text_with_len
    linkageType: ''
    returnType: text
    signature: "text *\nconcat_internal(const char *sepstr, int argidx,\n\t\t\t\tFunctionCallInfo
      fcinfo)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: concat_internal
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4610,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4612,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4613,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4614
      start: 4605
    functionDepth: 5
    functionLinenumber: 4605
    functionLinenumberEnd: 4614
    functionName: text_concat
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - concat_internal
    - PG_RETURN_TEXT_P
    linkageType: ''
    returnType: Datum
    signature: Datum text_concat(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4627,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4628,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4629,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4629,1
    - Dst: concat_internal
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4631,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4633,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4634,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4635
      start: 4620
    functionDepth: 5
    functionLinenumber: 4620
    functionLinenumberEnd: 4635
    functionName: text_concat_ws
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - PG_ARGISNULL
    - PG_RETURN_NULL
    - PG_RETURN_TEXT_P
    - concat_internal
    - text_to_cstring
    linkageType: ''
    returnType: Datum
    signature: Datum text_concat_ws(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4644,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4648,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4649,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4650,1
    - Dst: pg_mbstrlen_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4653,1
    - Dst: pg_mbcharcliplen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4654,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4655,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4655,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4658,1
    - Dst: text_substring
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4658,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4658,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4659
      start: 4641
    functionDepth: 3
    functionLinenumber: 4641
    functionLinenumberEnd: 4659
    functionName: text_left
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_DATUM
    - PG_GETARG_TEXT_PP
    - pg_mbstrlen_with_len
    - text_substring
    - PG_GETARG_INT32
    - pg_mbcharcliplen
    - PG_RETURN_TEXT_P
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - cstring_to_text_with_len
    linkageType: ''
    returnType: Datum
    signature: Datum text_left(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4668,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4669,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4670,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4671,1
    - Dst: pg_mbstrlen_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4677,1
    - Dst: pg_mbcharcliplen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4678,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4680,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4680,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4681
      start: 4665
    functionDepth: 2
    functionLinenumber: 4665
    functionLinenumberEnd: 4681
    functionName: text_right
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - pg_mbstrlen_with_len
    - PG_GETARG_INT32
    - pg_mbcharcliplen
    - PG_RETURN_TEXT_P
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - cstring_to_text_with_len
    linkageType: ''
    returnType: Datum
    signature: Datum text_right(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4689,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4690,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4691,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4696,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4697,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4698,1
    - Dst: pg_database_encoding_max_length
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4700,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4707,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4709,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4720,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4721
      start: 4686
    functionDepth: 1
    functionLinenumber: 4686
    functionLinenumberEnd: 4721
    functionName: text_reverse
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - pg_mblen
    - memcpy
    - PG_GETARG_TEXT_PP
    - pg_database_encoding_max_length
    - VARDATA
    - PG_RETURN_TEXT_P
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - palloc
    - SET_VARSIZE
    linkageType: ''
    returnType: Datum
    signature: Datum text_reverse(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ptr
    - ','
    - end_ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4737
      start: 4729
    functionDepth: 0
    functionLinenumber: 4729
    functionLinenumberEnd: 4737
    functionName: ADVANCE_PARSE_POINTER
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ADVANCE_PARSE_POINTER(ptr,end_ptr)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4762,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4763,1
    - Dst: get_fn_expr_variadic
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4766,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4775,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4775,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4778,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4789,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4789,1
    - Dst: get_base_element_type
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4789,1
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4789,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4792,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4795,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4796,1
    - Dst: deconstruct_array
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4800,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4810,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4815,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4816,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4817,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4818,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4838,1
    - Dst: ADVANCE_PARSE_POINTER
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4842,1
    - Dst: appendStringInfoCharMacro
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4847,1
    - Dst: text_format_parse_format
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4852,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4864,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4865,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4866,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4867,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4868,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4869,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4878,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4879,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4880,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4885,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4886,1
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4887,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4895,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4896,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4904,1
    - Dst: DatumGetInt16
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4906,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4917,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4918,1
    - Dst: OutputFunctionCall
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4922,1
    - Dst: pg_strtoint32
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4925,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4927,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4935,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4936,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4937,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4942,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4943,1
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4944,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4952,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4953,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4967,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4968,1
    - Dst: text_format_string_conversion
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4980,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4986,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4987,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4988,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4989,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4990,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4997,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:4999,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5002,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5003,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5005,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 109
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5006
      start: 4741
    functionDepth: 3
    functionLinenumber: 4741
    functionLinenumberEnd: 5006
    functionName: text_format
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - get_typlenbyvalalign
    - pg_mblen
    - getTypeOutputInfo
    - get_fn_expr_argtype
    - ADVANCE_PARSE_POINTER
    - errhint
    - PG_GETARG_DATUM
    - pg_strtoint32
    - cstring_to_text_with_len
    - deconstruct_array
    - pfree
    - get_fn_expr_variadic
    - OutputFunctionCall
    - VARDATA_ANY
    - text_format_string_conversion
    - DatumGetInt16
    - errmsg
    - get_base_element_type
    - appendStringInfoCharMacro
    - DatumGetInt32
    - fmgr_info
    - PG_ARGISNULL
    - text_format_parse_format
    - elog
    - OidIsValid
    - PG_RETURN_TEXT_P
    - VARSIZE_ANY_EXHDR
    - PG_NARGS
    - PG_GETARG_ARRAYTYPE_P
    - ARR_ELEMTYPE
    - Assert
    - PG_GETARG_TEXT_PP
    - ereport
    - PG_RETURN_NULL
    - initStringInfo
    - errcode
    - strchr
    linkageType: ''
    returnType: Datum
    signature: Datum text_format(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5029,1
    - Dst: pg_mul_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5029,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5030,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5030,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5031,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5032,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5033,1
    - Dst: ADVANCE_PARSE_POINTER
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5034,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - ptr
    - end_ptr
    - value
    argTypes:
    - char**
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5042
      start: 5018
    functionDepth: 2
    functionLinenumber: 5018
    functionLinenumberEnd: 5042
    functionName: text_format_parse_digits
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pg_mul_s32_overflow
    - ereport
    - ADVANCE_PARSE_POINTER
    - pg_add_s32_overflow
    - unlikely
    - errcode
    linkageType: ''
    returnType: bool
    signature: bool text_format_parse_digits(const char **ptr, const char *end_ptr,
      int *value)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: text_format_parse_digits
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5082,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5094,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5095,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5096,1
    - Dst: ADVANCE_PARSE_POINTER
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5097,1
    - Dst: ADVANCE_PARSE_POINTER
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5104,1
    - Dst: ADVANCE_PARSE_POINTER
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5110,1
    - Dst: text_format_parse_digits
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5111,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5115,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5116,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5117,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5122,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5123,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5124,1
    - Dst: ADVANCE_PARSE_POINTER
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5125,1
    - Dst: text_format_parse_digits
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5133,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 6
    argNames:
    - start_ptr
    - end_ptr
    - argpos
    - widthpos
    - flags
    - width
    argTypes:
    - char*
    - char*
    - int*
    - int*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5139
      start: 5067
    functionDepth: 3
    functionLinenumber: 5067
    functionLinenumberEnd: 5139
    functionName: text_format_parse_format
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 1
    functionsReached:
    - errmsg
    - ereport
    - text_format_parse_digits
    - ADVANCE_PARSE_POINTER
    - errcode
    linkageType: ''
    returnType: char
    signature: "char *\ntext_format_parse_format(const char *start_ptr, const char
      *end_ptr,\n\t\t\t\t\t\t int *argpos, int *widthpos,\n\t\t\t\t\t\t int *flags,
      int *width)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: text_format_append_string
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5156,1
    - Dst: text_format_append_string
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5158,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5160,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5161,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5162,1
    - Dst: OutputFunctionCall
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5167,1
    - Dst: text_format_append_string
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5173,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5173,1
    - Dst: quote_literal_cstr
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5177,1
    - Dst: text_format_append_string
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5179,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5181,1
    - Dst: text_format_append_string
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5184,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5187,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 7
    argNames:
    - buf
    - conversion
    - typOutputInfo
    - value
    - isNull
    - flags
    - width
    argTypes:
    - StringInfo
    - char
    - FmgrInfo*
    - Datum
    - bool
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5188
      start: 5144
    functionDepth: 2
    functionLinenumber: 5144
    functionLinenumberEnd: 5188
    functionName: text_format_string_conversion
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 1
    functionsReached:
    - errmsg
    - pfree
    - quote_identifier
    - OutputFunctionCall
    - ereport
    - text_format_append_string
    - quote_literal_cstr
    - errcode
    linkageType: ''
    returnType: void
    signature: "void text_format_string_conversion(StringInfo buf, char conversion,\n\t\t\t\t\t\t\t
      \ FmgrInfo *typOutputInfo,\n\t\t\t\t\t\t\t  Datum value, bool isNull,\n\t\t\t\t\t\t\t
      \ int flags, int width)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5203,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5213,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5214,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5215,1
    - Dst: pg_mbstrlen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5221,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5225,1
    - Dst: appendStringInfoSpaces
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5227,1
    - Dst: appendStringInfoSpaces
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5233,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5234,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 4
    argNames:
    - buf
    - str
    - flags
    - width
    argTypes:
    - StringInfo
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5236
      start: 5193
    functionDepth: 2
    functionLinenumber: 5193
    functionLinenumberEnd: 5236
    functionName: text_format_append_string
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 1
    functionsReached:
    - errmsg
    - pg_mbstrlen
    - appendStringInfoString
    - ereport
    - appendStringInfoSpaces
    - errcode
    linkageType: ''
    returnType: void
    signature: "void text_format_append_string(StringInfo buf, const char *str,\n\t\t\t\t\t\t
      \ int flags, int width)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: text_format
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5249
      start: 5245
    functionDepth: 4
    functionLinenumber: 5245
    functionLinenumberEnd: 5249
    functionName: text_format_nv
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - text_format
    linkageType: ''
    returnType: Datum
    signature: Datum text_format_nv(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - s1
    - s2
    - len
    argTypes:
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5265
      start: 5255
    functionDepth: 0
    functionLinenumber: 5255
    functionLinenumberEnd: 5265
    functionName: rest_of_char_same
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool rest_of_char_same(const char *s1, const char *s2, int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5294,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - state
    - source
    - max_d
    argTypes:
    - ClosestMatchState*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5301
      start: 5291
    functionDepth: 1
    functionLinenumber: 5291
    functionLinenumberEnd: 5301
    functionName: initClosestMatch
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 2
    functionsReached:
    - Assert
    linkageType: ''
    returnType: void
    signature: void initClosestMatch(ClosestMatchState *state, const char *source,
      int max_d)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5316,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5326,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5327,1
    - Dst: varstr_levenshtein_less_equal
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5330,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5330,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5331,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5334,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 11
    argCount: 2
    argNames:
    - state
    - candidate
    argTypes:
    - ClosestMatchState*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5340
      start: 5311
    functionDepth: 1
    functionLinenumber: 5311
    functionLinenumberEnd: 5340
    functionName: updateClosestMatch
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 2
    functionsReached:
    - Assert
    - strlen
    - varstr_levenshtein_less_equal
    linkageType: ''
    returnType: void
    signature: void updateClosestMatch(ClosestMatchState *state, const char *candidate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - ClosestMatchState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5352
      start: 5346
    functionDepth: 1
    functionLinenumber: 5346
    functionLinenumberEnd: 5352
    functionName: getClosestMatch
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 2
    functionsReached:
    - Assert
    linkageType: ''
    returnType: char
    signature: 'char *

      getClosestMatch(ClosestMatchState *state)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5367,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5368,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5369,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5370,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5372,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5374,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5376,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5378,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5381,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5382,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5383,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - formstr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5386
      start: 5359
    functionDepth: 2
    functionLinenumber: 5359
    functionLinenumberEnd: 5386
    functionName: unicode_norm_form_from_string
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - errmsg
    - GetDatabaseEncoding
    - ereport
    - pg_strcasecmp
    - errcode
    linkageType: ''
    returnType: UnicodeNormalizationForm
    signature: UnicodeNormalizationForm unicode_norm_form_from_string(const char *formstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5399,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5400
      start: 5396
    functionDepth: 2
    functionLinenumber: 5396
    functionLinenumberEnd: 5400
    functionName: unicode_version
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 1
    functionsReached:
    - cstring_to_text
    - PG_RETURN_TEXT_P
    linkageType: ''
    returnType: Datum
    signature: Datum unicode_version(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5409,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5409,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5411,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5413
      start: 5405
    functionDepth: 2
    functionLinenumber: 5405
    functionLinenumberEnd: 5413
    functionName: icu_unicode_version
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - cstring_to_text
    - PG_RETURN_NULL
    - PG_RETURN_TEXT_P
    linkageType: ''
    returnType: Datum
    signature: Datum icu_unicode_version(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5422,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5426,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5427,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5428,1
    - Dst: pg_mbstrlen_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5431,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5431,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5431,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5432,1
    - Dst: utf8_to_unicode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5435,1
    - Dst: unicode_category
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5436,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5439,1
    - Dst: pg_utf_mblen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5441,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5444,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5445
      start: 5419
    functionDepth: 2
    functionLinenumber: 5419
    functionLinenumberEnd: 5445
    functionName: unicode_assigned
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - errmsg
    - GetDatabaseEncoding
    - PG_GETARG_TEXT_PP
    - pg_mbstrlen_with_len
    - PG_RETURN_BOOL
    - ereport
    - utf8_to_unicode
    - unicode_category
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - pg_utf_mblen
    linkageType: ''
    returnType: Datum
    signature: Datum unicode_assigned(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5450,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5451,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5451,1
    - Dst: unicode_norm_form_from_string
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5460,1
    - Dst: pg_mbstrlen_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5463,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5463,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5463,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5464,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5465,1
    - Dst: utf8_to_unicode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5468,1
    - Dst: pg_utf_mblen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5469,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5472,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5472,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5472,1
    - Dst: unicode_normalize
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5475,1
    - Dst: unicode_to_utf8
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5483,1
    - Dst: pg_utf_mblen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5484,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5487,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5488,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5490,1
    - Dst: unicode_to_utf8
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5493,1
    - Dst: pg_utf_mblen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5494,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5496,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5498,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5499
      start: 5447
    functionDepth: 4
    functionLinenumber: 5447
    functionLinenumberEnd: 5499
    functionName: unicode_normalize_func
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - Assert
    - PG_GETARG_TEXT_PP
    - pg_mbstrlen_with_len
    - unicode_normalize
    - utf8_to_unicode
    - SET_VARSIZE
    - PG_RETURN_TEXT_P
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - palloc
    - unicode_to_utf8
    - pg_utf_mblen
    - text_to_cstring
    - unicode_norm_form_from_string
    linkageType: ''
    returnType: Datum
    signature: Datum unicode_normalize_func(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5516,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5517,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5517,1
    - Dst: unicode_norm_form_from_string
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5528,1
    - Dst: pg_mbstrlen_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5531,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5531,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5531,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5532,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5533,1
    - Dst: utf8_to_unicode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5536,1
    - Dst: pg_utf_mblen
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5537,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5540,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5540,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5540,1
    - Dst: unicode_is_normalized_quickcheck
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5543,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5545,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5547,1
    - Dst: unicode_normalize
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5550,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5557,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5559,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5560
      start: 5513
    functionDepth: 4
    functionLinenumber: 5513
    functionLinenumberEnd: 5560
    functionName: unicode_is_normalized
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - Assert
    - PG_GETARG_TEXT_PP
    - pg_mbstrlen_with_len
    - PG_RETURN_BOOL
    - memcmp
    - unicode_normalize
    - utf8_to_unicode
    - unicode_is_normalized_quickcheck
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - palloc
    - pg_utf_mblen
    - text_to_cstring
    - unicode_norm_form_from_string
    linkageType: ''
    returnType: Datum
    signature: Datum unicode_is_normalized(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isxdigit
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5569,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - instr
    - n
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5573
      start: 5565
    functionDepth: 0
    functionLinenumber: 5565
    functionLinenumberEnd: 5573
    functionName: isxdigits_n
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - isxdigit
    linkageType: ''
    returnType: bool
    signature: bool isxdigits_n(const char *instr, size_t n)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5584,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 1
    argNames:
    - c
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5586
      start: 5575
    functionDepth: 1
    functionLinenumber: 5575
    functionLinenumberEnd: 5586
    functionName: hexval
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - elog
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int hexval(unsigned char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hexval
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5597,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - instr
    - n
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5600
      start: 5591
    functionDepth: 0
    functionLinenumber: 5591
    functionLinenumberEnd: 5600
    functionName: hexval_n
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - hexval
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int hexval_n(const char *instr, size_t n)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5608,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5616,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5617,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5619,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5630,1
    - Dst: isxdigits_n
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5634,1
    - Dst: isxdigits_n
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5635,1
    - Dst: hexval_n
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5640,1
    - Dst: is_valid_unicode_codepoint
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5642,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5643,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5644,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5645,1
    - Dst: is_utf16_surrogate_second
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5649,1
    - Dst: surrogate_pair_to_codepoint
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5651,1
    - Dst: is_utf16_surrogate_second
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5657,1
    - Dst: is_utf16_surrogate_first
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5660,1
    - Dst: pg_unicode_to_server
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5664,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5665,1
    - Dst: isxdigits_n
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5671,1
    - Dst: hexval_n
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5675,1
    - Dst: is_valid_unicode_codepoint
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5677,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5678,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5679,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5680,1
    - Dst: is_utf16_surrogate_second
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5684,1
    - Dst: surrogate_pair_to_codepoint
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5686,1
    - Dst: is_utf16_surrogate_second
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5692,1
    - Dst: is_utf16_surrogate_first
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5695,1
    - Dst: pg_unicode_to_server
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5699,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5700,1
    - Dst: isxdigits_n
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5706,1
    - Dst: hexval_n
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5710,1
    - Dst: is_valid_unicode_codepoint
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5712,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5713,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5714,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5715,1
    - Dst: is_utf16_surrogate_second
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5719,1
    - Dst: surrogate_pair_to_codepoint
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5721,1
    - Dst: is_utf16_surrogate_second
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5727,1
    - Dst: is_utf16_surrogate_first
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5730,1
    - Dst: pg_unicode_to_server
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5734,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5735,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5742,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5743,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5744,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5745,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5752,1
    - Dst: cstring_to_text_with_len
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5761,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5762,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5764,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5767,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5768,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5769,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/varlena.c:5770,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 102
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5771
      start: 5605
    functionDepth: 3
    functionLinenumber: 5605
    functionLinenumberEnd: 5771
    functionName: unistr
    functionSourceFile: /src/postgres/src/backend/utils/adt/varlena.c
    functionUses: 0
    functionsReached:
    - is_utf16_surrogate_first
    - hexval_n
    - errhint
    - surrogate_pair_to_codepoint
    - cstring_to_text_with_len
    - pfree
    - is_utf16_surrogate_second
    - VARDATA_ANY
    - errmsg
    - appendStringInfoString
    - pg_unicode_to_server
    - PG_RETURN_TEXT_P
    - VARSIZE_ANY_EXHDR
    - isxdigits_n
    - appendStringInfoChar
    - PG_GETARG_TEXT_PP
    - ereport
    - is_valid_unicode_codepoint
    - PG_RETURN_NULL
    - initStringInfo
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum unistr(PG_FUNCTION_ARGS)
  - 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: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: GETENTRY
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery_gist.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETENTRY(vec,pos)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:29,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:36,1
    - Dst: makeTSQuerySign
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:37,1
    - Dst: DatumGetTSQuery
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:37,1
    - Dst: gistentryinit
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:39,1
    - Dst: TSQuerySignGetDatum
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:39,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 26
    functionDepth: 2
    functionLinenumber: 26
    functionLinenumberEnd: 45
    functionName: gtsquery_compress
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery_gist.c
    functionUses: 0
    functionsReached:
    - gistentryinit
    - PG_GETARG_POINTER
    - DatumGetTSQuery
    - makeTSQuerySign
    - palloc
    - TSQuerySignGetDatum
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum gtsquery_compress(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:55,1
    - Dst: PG_GETARG_TSQUERY
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:56,1
    - Dst: PG_GETARG_UINT16
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:57,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:60,1
    - Dst: DatumGetTSQuerySign
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:61,1
    - Dst: makeTSQuerySign
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:62,1
    - Dst: GIST_LEAF
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:71,1
    - Dst: GIST_LEAF
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:77,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:85,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 52
    functionDepth: 3
    functionLinenumber: 52
    functionLinenumberEnd: 86
    functionName: gtsquery_consistent
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery_gist.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TSQUERY
    - PG_GETARG_POINTER
    - PG_RETURN_BOOL
    - PG_GETARG_UINT16
    - makeTSQuerySign
    - DatumGetTSQuerySign
    - GIST_LEAF
    linkageType: ''
    returnType: Datum
    signature: Datum gtsquery_consistent(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:91,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:92,1
    - Dst: GETENTRY
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:99,1
    - Dst: PG_RETURN_TSQUERYSIGN
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:103,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 104
    functionName: gtsquery_union
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery_gist.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_TSQUERYSIGN
    - GETENTRY
    linkageType: ''
    returnType: Datum
    signature: Datum gtsquery_union(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TSQUERYSIGN
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:109,1
    - Dst: PG_GETARG_TSQUERYSIGN
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:110,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:111,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 116
    functionName: gtsquery_same
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery_gist.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_GETARG_TSQUERYSIGN
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum gtsquery_same(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - sign
    argTypes:
    - TSQuerySign
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 128
    functionName: sizebitvec
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery_gist.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int sizebitvec(TSQuerySign sign)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sizebitvec
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - TSQuerySign
    - TSQuerySign
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 136
    functionName: hemdist
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery_gist.c
    functionUses: 1
    functionsReached:
    - sizebitvec
    linkageType: ''
    returnType: int
    signature: int hemdist(TSQuerySign a, TSQuerySign b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetTSQuerySign
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:141,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:141,1
    - Dst: DatumGetTSQuerySign
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:142,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:142,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:143,1
    - Dst: hemdist
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:145,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 138
    functionDepth: 3
    functionLinenumber: 138
    functionLinenumberEnd: 148
    functionName: gtsquery_penalty
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery_gist.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - hemdist
    - PG_RETURN_POINTER
    - DatumGetTSQuerySign
    linkageType: ''
    returnType: Datum
    signature: Datum gtsquery_penalty(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pg_cmp_s32
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 162
    functionName: comparecost
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery_gist.c
    functionUses: 0
    functionsReached:
    - pg_cmp_s32
    linkageType: ''
    returnType: int
    signature: int comparecost(const void *a, const void *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: 165
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 165
    functionName: WISH_F
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery_gist.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WISH_F(a,b,c)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:169,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:170,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:189,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:190,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:193,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:194,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:194,1
    - Dst: hemdist
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:196,1
    - Dst: GETENTRY
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:196,1
    - Dst: GETENTRY
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:196,1
    - Dst: GETENTRY
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:212,1
    - Dst: GETENTRY
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:213,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:215,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:216,1
    - Dst: OffsetNumberNext
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:217,1
    - Dst: hemdist
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:220,1
    - Dst: GETENTRY
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:220,1
    - Dst: GETENTRY
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:220,1
    - Dst: hemdist
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:221,1
    - Dst: GETENTRY
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:221,1
    - Dst: GETENTRY
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:221,1
    - Dst: abs
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:222,1
    - Dst: qsort
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:224,1
    - Dst: hemdist
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:241,1
    - Dst: GETENTRY
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:241,1
    - Dst: hemdist
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:242,1
    - Dst: GETENTRY
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:242,1
    - Dst: WISH_F
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:244,1
    - Dst: GETENTRY
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:246,1
    - Dst: GETENTRY
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:252,1
    - Dst: TSQuerySignGetDatum
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:259,1
    - Dst: TSQuerySignGetDatum
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:260,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:262,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 57
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 263
    functionName: gtsquery_picksplit
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery_gist.c
    functionUses: 0
    functionsReached:
    - hemdist
    - qsort
    - PG_GETARG_POINTER
    - WISH_F
    - OffsetNumberNext
    - abs
    - palloc
    - TSQuerySignGetDatum
    - PG_RETURN_POINTER
    - GETENTRY
    linkageType: ''
    returnType: Datum
    signature: Datum gtsquery_picksplit(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gtsquery_consistent
      Src: /src/postgres/src/backend/utils/adt/tsquery_gist.c:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 272
    functionDepth: 4
    functionLinenumber: 272
    functionLinenumberEnd: 276
    functionName: gtsquery_consistent_oldsig
    functionSourceFile: /src/postgres/src/backend/utils/adt/tsquery_gist.c
    functionUses: 0
    functionsReached:
    - gtsquery_consistent
    linkageType: ''
    returnType: Datum
    signature: Datum gtsquery_consistent_oldsig(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:36,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:42,1
    - Dst: pg_md5_hash
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:45,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:45,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:46,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:47,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:48,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:52,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 53
    functionName: md5_text
    functionSourceFile: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pg_md5_hash
    - PG_GETARG_TEXT_PP
    - ereport
    - PG_RETURN_TEXT_P
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - cstring_to_text
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum md5_text(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:61,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:66,1
    - Dst: pg_md5_hash
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:67,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:67,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:68,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:69,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:70,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:73,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 74
    functionName: md5_bytea
    functionSourceFile: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - pg_md5_hash
    - PG_GETARG_BYTEA_PP
    - ereport
    - PG_RETURN_TEXT_P
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - cstring_to_text
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum md5_bytea(PG_FUNCTION_ARGS)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:109,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:113,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:114,1
    - Dst: VARDATA_ANY
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:115,1
    - Dst: pg_cryptohash_create
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:117,1
    - Dst: pg_cryptohash_init
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:118,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:119,1
    - Dst: pg_cryptohash_error
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:120,1
    - Dst: pg_cryptohash_update
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:121,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:122,1
    - Dst: pg_cryptohash_error
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:123,1
    - Dst: pg_cryptohash_final
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:124,1
    - Dst: VARDATA
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:124,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:126,1
    - Dst: pg_cryptohash_error
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:127,1
    - Dst: pg_cryptohash_free
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:128,1
    - Dst: SET_VARSIZE
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:130,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 2
    argNames:
    - type
    - input
    argTypes:
    - pg_cryptohash_type
    - bytea*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 133
    functionName: cryptohash_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c
    functionUses: 0
    functionsReached:
    - pg_cryptohash_create
    - pg_cryptohash_final
    - palloc0
    - VARDATA
    - pg_cryptohash_error
    - elog
    - pg_cryptohash_update
    - VARSIZE_ANY_EXHDR
    - VARDATA_ANY
    - pg_cryptohash_init
    - pg_cryptohash_free
    - SET_VARSIZE
    linkageType: ''
    returnType: bytea
    signature: 'bytea *

      cryptohash_internal(pg_cryptohash_type type, bytea *input)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cryptohash_internal
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:142,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:142,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 145
    functionName: sha224_bytea
    functionSourceFile: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BYTEA_P
    - PG_GETARG_BYTEA_PP
    - cryptohash_internal
    linkageType: ''
    returnType: Datum
    signature: Datum sha224_bytea(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cryptohash_internal
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:150,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:150,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 147
    functionDepth: 2
    functionLinenumber: 147
    functionLinenumberEnd: 153
    functionName: sha256_bytea
    functionSourceFile: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BYTEA_P
    - PG_GETARG_BYTEA_PP
    - cryptohash_internal
    linkageType: ''
    returnType: Datum
    signature: Datum sha256_bytea(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cryptohash_internal
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:158,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:158,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 155
    functionDepth: 2
    functionLinenumber: 155
    functionLinenumberEnd: 161
    functionName: sha384_bytea
    functionSourceFile: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BYTEA_P
    - PG_GETARG_BYTEA_PP
    - cryptohash_internal
    linkageType: ''
    returnType: Datum
    signature: Datum sha384_bytea(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cryptohash_internal
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:166,1
    - Dst: PG_GETARG_BYTEA_PP
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:166,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 169
    functionName: sha512_bytea
    functionSourceFile: /src/postgres/src/backend/utils/adt/cryptohashfuncs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_BYTEA_P
    - PG_GETARG_BYTEA_PP
    - cryptohash_internal
    linkageType: ''
    returnType: Datum
    signature: Datum sha512_bytea(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - addr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: hibits
    functionSourceFile: /src/postgres/src/backend/utils/adt/mac.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hibits(addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - addr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: lobits
    functionSourceFile: /src/postgres/src/backend/utils/adt/mac.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lobits(addr)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/mac.c:57,1
    - Dst: sscanf
      Src: /src/postgres/src/backend/utils/adt/mac.c:71,1
    - Dst: sscanf
      Src: /src/postgres/src/backend/utils/adt/mac.c:74,1
    - Dst: sscanf
      Src: /src/postgres/src/backend/utils/adt/mac.c:77,1
    - Dst: sscanf
      Src: /src/postgres/src/backend/utils/adt/mac.c:80,1
    - Dst: sscanf
      Src: /src/postgres/src/backend/utils/adt/mac.c:83,1
    - Dst: sscanf
      Src: /src/postgres/src/backend/utils/adt/mac.c:86,1
    - Dst: sscanf
      Src: /src/postgres/src/backend/utils/adt/mac.c:89,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/mac.c:92,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/mac.c:93,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/mac.c:94,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/mac.c:100,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/mac.c:101,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/mac.c:102,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/mac.c:104,1
    - Dst: PG_RETURN_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:113,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 54
    functionDepth: 2
    functionLinenumber: 54
    functionLinenumberEnd: 114
    functionName: macaddr_in
    functionSourceFile: /src/postgres/src/backend/utils/adt/mac.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_CSTRING
    - PG_RETURN_MACADDR_P
    - sscanf
    - ereturn
    - palloc
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum macaddr_in(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:123,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/mac.c:126,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/mac.c:128,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/mac.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 132
    functionName: macaddr_out
    functionSourceFile: /src/postgres/src/backend/utils/adt/mac.c
    functionUses: 0
    functionsReached:
    - palloc
    - snprintf
    - PG_GETARG_MACADDR_P
    - PG_RETURN_CSTRING
    linkageType: ''
    returnType: Datum
    signature: Datum macaddr_out(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/mac.c:142,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/mac.c:145,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/utils/adt/mac.c:147,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/utils/adt/mac.c:148,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/utils/adt/mac.c:149,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/utils/adt/mac.c:150,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/utils/adt/mac.c:151,1
    - Dst: pq_getmsgbyte
      Src: /src/postgres/src/backend/utils/adt/mac.c:152,1
    - Dst: PG_RETURN_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 155
    functionName: macaddr_recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/mac.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - palloc
    - PG_RETURN_MACADDR_P
    - pq_getmsgbyte
    linkageType: ''
    returnType: Datum
    signature: Datum macaddr_recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:163,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/mac.c:166,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/adt/mac.c:167,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/adt/mac.c:168,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/adt/mac.c:169,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/adt/mac.c:170,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/adt/mac.c:171,1
    - Dst: pq_sendbyte
      Src: /src/postgres/src/backend/utils/adt/mac.c:172,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:173,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/mac.c:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 160
    functionDepth: 4
    functionLinenumber: 160
    functionLinenumberEnd: 174
    functionName: macaddr_send
    functionSourceFile: /src/postgres/src/backend/utils/adt/mac.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - PG_GETARG_MACADDR_P
    - PG_RETURN_BYTEA_P
    - pq_sendbyte
    - pq_begintypsend
    linkageType: ''
    returnType: Datum
    signature: Datum macaddr_send(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: hibits
      Src: /src/postgres/src/backend/utils/adt/mac.c:184,1
    - Dst: hibits
      Src: /src/postgres/src/backend/utils/adt/mac.c:184,1
    - Dst: hibits
      Src: /src/postgres/src/backend/utils/adt/mac.c:186,1
    - Dst: hibits
      Src: /src/postgres/src/backend/utils/adt/mac.c:186,1
    - Dst: lobits
      Src: /src/postgres/src/backend/utils/adt/mac.c:188,1
    - Dst: lobits
      Src: /src/postgres/src/backend/utils/adt/mac.c:188,1
    - Dst: lobits
      Src: /src/postgres/src/backend/utils/adt/mac.c:190,1
    - Dst: lobits
      Src: /src/postgres/src/backend/utils/adt/mac.c:190,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - a1
    - a2
    argTypes:
    - macaddr*
    - macaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 194
    functionName: macaddr_cmp_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/mac.c
    functionUses: 0
    functionsReached:
    - lobits
    - hibits
    linkageType: ''
    returnType: int
    signature: int macaddr_cmp_internal(macaddr *a1, macaddr *a2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:199,1
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:200,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/mac.c:202,1
    - Dst: macaddr_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/mac.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 203
    functionName: macaddr_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/mac.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - macaddr_cmp_internal
    - PG_GETARG_MACADDR_P
    linkageType: ''
    returnType: Datum
    signature: Datum macaddr_cmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:212,1
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:213,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/mac.c:215,1
    - Dst: macaddr_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/mac.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: macaddr_lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/mac.c
    functionUses: 0
    functionsReached:
    - macaddr_cmp_internal
    - PG_RETURN_BOOL
    - PG_GETARG_MACADDR_P
    linkageType: ''
    returnType: Datum
    signature: Datum macaddr_lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:221,1
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:222,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/mac.c:224,1
    - Dst: macaddr_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/mac.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: macaddr_le
    functionSourceFile: /src/postgres/src/backend/utils/adt/mac.c
    functionUses: 0
    functionsReached:
    - macaddr_cmp_internal
    - PG_RETURN_BOOL
    - PG_GETARG_MACADDR_P
    linkageType: ''
    returnType: Datum
    signature: Datum macaddr_le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:230,1
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:231,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/mac.c:233,1
    - Dst: macaddr_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/mac.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: macaddr_eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/mac.c
    functionUses: 0
    functionsReached:
    - macaddr_cmp_internal
    - PG_RETURN_BOOL
    - PG_GETARG_MACADDR_P
    linkageType: ''
    returnType: Datum
    signature: Datum macaddr_eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:239,1
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:240,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/mac.c:242,1
    - Dst: macaddr_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/mac.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: macaddr_ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/mac.c
    functionUses: 0
    functionsReached:
    - macaddr_cmp_internal
    - PG_RETURN_BOOL
    - PG_GETARG_MACADDR_P
    linkageType: ''
    returnType: Datum
    signature: Datum macaddr_ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:248,1
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:249,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/mac.c:251,1
    - Dst: macaddr_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/mac.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: macaddr_gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/mac.c
    functionUses: 0
    functionsReached:
    - macaddr_cmp_internal
    - PG_RETURN_BOOL
    - PG_GETARG_MACADDR_P
    linkageType: ''
    returnType: Datum
    signature: Datum macaddr_gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:257,1
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:258,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/mac.c:260,1
    - Dst: macaddr_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/mac.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: macaddr_ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/mac.c
    functionUses: 0
    functionsReached:
    - macaddr_cmp_internal
    - PG_RETURN_BOOL
    - PG_GETARG_MACADDR_P
    linkageType: ''
    returnType: Datum
    signature: Datum macaddr_ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:269,1
    - Dst: hash_any
      Src: /src/postgres/src/backend/utils/adt/mac.c:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 266
    functionDepth: 2
    functionLinenumber: 266
    functionLinenumberEnd: 272
    functionName: hashmacaddr
    functionSourceFile: /src/postgres/src/backend/utils/adt/mac.c
    functionUses: 0
    functionsReached:
    - hash_any
    - PG_GETARG_MACADDR_P
    linkageType: ''
    returnType: Datum
    signature: Datum hashmacaddr(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:277,1
    - Dst: hash_any_extended
      Src: /src/postgres/src/backend/utils/adt/mac.c:279,1
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/mac.c:280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 274
    functionDepth: 2
    functionLinenumber: 274
    functionLinenumberEnd: 281
    functionName: hashmacaddrextended
    functionSourceFile: /src/postgres/src/backend/utils/adt/mac.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT64
    - PG_GETARG_MACADDR_P
    - hash_any_extended
    linkageType: ''
    returnType: Datum
    signature: Datum hashmacaddrextended(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:289,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/mac.c:292,1
    - Dst: PG_RETURN_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 300
    functionName: macaddr_not
    functionSourceFile: /src/postgres/src/backend/utils/adt/mac.c
    functionUses: 0
    functionsReached:
    - palloc
    - PG_RETURN_MACADDR_P
    - PG_GETARG_MACADDR_P
    linkageType: ''
    returnType: Datum
    signature: Datum macaddr_not(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:305,1
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:306,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/mac.c:309,1
    - Dst: PG_RETURN_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 317
    functionName: macaddr_and
    functionSourceFile: /src/postgres/src/backend/utils/adt/mac.c
    functionUses: 0
    functionsReached:
    - palloc
    - PG_RETURN_MACADDR_P
    - PG_GETARG_MACADDR_P
    linkageType: ''
    returnType: Datum
    signature: Datum macaddr_and(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:322,1
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:323,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/mac.c:326,1
    - Dst: PG_RETURN_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 319
    functionDepth: 1
    functionLinenumber: 319
    functionLinenumberEnd: 334
    functionName: macaddr_or
    functionSourceFile: /src/postgres/src/backend/utils/adt/mac.c
    functionUses: 0
    functionsReached:
    - palloc
    - PG_RETURN_MACADDR_P
    - PG_GETARG_MACADDR_P
    linkageType: ''
    returnType: Datum
    signature: Datum macaddr_or(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:343,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/mac.c:346,1
    - Dst: PG_RETURN_MACADDR_P
      Src: /src/postgres/src/backend/utils/adt/mac.c:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 356
    functionName: macaddr_trunc
    functionSourceFile: /src/postgres/src/backend/utils/adt/mac.c
    functionUses: 0
    functionsReached:
    - palloc
    - PG_RETURN_MACADDR_P
    - PG_GETARG_MACADDR_P
    linkageType: ''
    returnType: Datum
    signature: Datum macaddr_trunc(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/mac.c:365,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/mac.c:375,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/mac.c:377,1
    - Dst: initHyperLogLog
      Src: /src/postgres/src/backend/utils/adt/mac.c:380,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/mac.c:389,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/mac.c:392,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 362
    functionDepth: 2
    functionLinenumber: 362
    functionLinenumberEnd: 393
    functionName: macaddr_sortsupport
    functionSourceFile: /src/postgres/src/backend/utils/adt/mac.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    - palloc
    - initHyperLogLog
    linkageType: ''
    returnType: Datum
    signature: Datum macaddr_sortsupport(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetMacaddrP
      Src: /src/postgres/src/backend/utils/adt/mac.c:402,1
    - Dst: DatumGetMacaddrP
      Src: /src/postgres/src/backend/utils/adt/mac.c:403,1
    - Dst: macaddr_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/mac.c:405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - x
    - y
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 399
    functionDepth: 2
    functionLinenumber: 399
    functionLinenumberEnd: 406
    functionName: macaddr_fast_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/mac.c
    functionUses: 0
    functionsReached:
    - macaddr_cmp_internal
    - DatumGetMacaddrP
    linkageType: ''
    returnType: int
    signature: int macaddr_fast_cmp(Datum x, Datum y, SortSupport ssup)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: estimateHyperLogLog
      Src: /src/postgres/src/backend/utils/adt/mac.c:423,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/mac.c:434,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/mac.c:451,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/mac.c:460,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - memtupcount
    - ssup
    argTypes:
    - int
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 414
    functionDepth: 1
    functionLinenumber: 414
    functionLinenumberEnd: 465
    functionName: macaddr_abbrev_abort
    functionSourceFile: /src/postgres/src/backend/utils/adt/mac.c
    functionUses: 0
    functionsReached:
    - elog
    - estimateHyperLogLog
    linkageType: ''
    returnType: bool
    signature: bool macaddr_abbrev_abort(int memtupcount, SortSupport ssup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetMacaddrP
      Src: /src/postgres/src/backend/utils/adt/mac.c:480,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/mac.c:489,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/mac.c:490,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/mac.c:492,1
    - Dst: addHyperLogLog
      Src: /src/postgres/src/backend/utils/adt/mac.c:512,1
    - Dst: DatumGetUInt32
      Src: /src/postgres/src/backend/utils/adt/mac.c:512,1
    - Dst: hash_uint32
      Src: /src/postgres/src/backend/utils/adt/mac.c:512,1
    - Dst: DatumBigEndianToNative
      Src: /src/postgres/src/backend/utils/adt/mac.c:523,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - original
    - ssup
    argTypes:
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 476
    functionDepth: 2
    functionLinenumber: 476
    functionLinenumberEnd: 526
    functionName: macaddr_abbrev_convert
    functionSourceFile: /src/postgres/src/backend/utils/adt/mac.c
    functionUses: 0
    functionsReached:
    - DatumBigEndianToNative
    - memset
    - addHyperLogLog
    - DatumGetUInt32
    - memcpy
    - hash_uint32
    - DatumGetMacaddrP
    linkageType: ''
    returnType: Datum
    signature: Datum macaddr_abbrev_convert(Datum original, SortSupport ssup)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:69,1
    - Dst: parseDashOrOid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:76,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:77,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:85,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/regproc.c:86,1
    - Dst: stringToQualifiedNameList
      Src: /src/postgres/src/backend/utils/adt/regproc.c:92,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regproc.c:94,1
    - Dst: FuncnameGetCandidates
      Src: /src/postgres/src/backend/utils/adt/regproc.c:96,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/regproc.c:99,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:100,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regproc.c:101,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/regproc.c:103,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:104,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regproc.c:105,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:110,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 66
    functionDepth: 3
    functionLinenumber: 66
    functionLinenumberEnd: 111
    functionName: regprocin
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_CSTRING
    - parseDashOrOid
    - FuncnameGetCandidates
    - IsBootstrapProcessingMode
    - PG_RETURN_OID
    - elog
    - PG_RETURN_NULL
    - stringToQualifiedNameList
    - ereturn
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum regprocin(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/regproc.c:121,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regproc.c:121,1
    - Dst: DirectInputFunctionCallSafe
      Src: /src/postgres/src/backend/utils/adt/regproc.c:125,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regproc.c:129,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/regproc.c:130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 118
    functionDepth: 2
    functionLinenumber: 118
    functionLinenumberEnd: 131
    functionName: to_regproc
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_DATUM
    - PG_GETARG_TEXT_PP
    - PG_RETURN_NULL
    - DirectInputFunctionCallSafe
    - text_to_cstring
    linkageType: ''
    returnType: Datum
    signature: Datum to_regproc(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:139,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:145,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:146,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/regproc.c:149,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/regproc.c:149,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:151,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/regproc.c:153,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/regproc.c:154,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:161,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:162,1
    - Dst: FuncnameGetCandidates
      Src: /src/postgres/src/backend/utils/adt/regproc.c:172,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/utils/adt/regproc.c:172,1
    - Dst: makeString
      Src: /src/postgres/src/backend/utils/adt/regproc.c:172,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/utils/adt/regproc.c:178,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/utils/adt/regproc.c:180,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/regproc.c:183,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regproc.c:188,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/regproc.c:189,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:192,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 136
    functionDepth: 3
    functionLinenumber: 136
    functionLinenumberEnd: 193
    functionName: regprocout
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - makeString
    - NameStr
    - ReleaseSysCache
    - HeapTupleIsValid
    - FuncnameGetCandidates
    - PG_RETURN_CSTRING
    - get_namespace_name
    - GETSTRUCT
    - pstrdup
    - IsBootstrapProcessingMode
    - SearchSysCache1
    - list_make1
    - PG_GETARG_OID
    - quote_qualified_identifier
    - snprintf
    - palloc
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum regprocout(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oidrecv
      Src: /src/postgres/src/backend/utils/adt/regproc.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 198
    functionDepth: 3
    functionLinenumber: 198
    functionLinenumberEnd: 203
    functionName: regprocrecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - oidrecv
    linkageType: ''
    returnType: Datum
    signature: Datum regprocrecv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oidsend
      Src: /src/postgres/src/backend/utils/adt/regproc.c:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 208
    functionDepth: 5
    functionLinenumber: 208
    functionLinenumberEnd: 213
    functionName: regprocsend
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - oidsend
    linkageType: ''
    returnType: Datum
    signature: Datum regprocsend(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:227,1
    - Dst: parseDashOrOid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:236,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:237,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:240,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/regproc.c:241,1
    - Dst: parseNameAndArgTypes
      Src: /src/postgres/src/backend/utils/adt/regproc.c:249,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regproc.c:252,1
    - Dst: FuncnameGetCandidates
      Src: /src/postgres/src/backend/utils/adt/regproc.c:254,1
    - Dst: memcmp
      Src: /src/postgres/src/backend/utils/adt/regproc.c:259,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/regproc.c:264,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:265,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regproc.c:266,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:270,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 224
    functionDepth: 3
    functionLinenumber: 224
    functionLinenumberEnd: 271
    functionName: regprocedurein
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_CSTRING
    - parseDashOrOid
    - FuncnameGetCandidates
    - memcmp
    - parseNameAndArgTypes
    - IsBootstrapProcessingMode
    - PG_RETURN_OID
    - elog
    - PG_RETURN_NULL
    - ereturn
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum regprocedurein(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/regproc.c:281,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regproc.c:281,1
    - Dst: DirectInputFunctionCallSafe
      Src: /src/postgres/src/backend/utils/adt/regproc.c:285,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regproc.c:289,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/regproc.c:290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 278
    functionDepth: 2
    functionLinenumber: 278
    functionLinenumberEnd: 291
    functionName: to_regprocedure
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_DATUM
    - PG_GETARG_TEXT_PP
    - PG_RETURN_NULL
    - DirectInputFunctionCallSafe
    - text_to_cstring
    linkageType: ''
    returnType: Datum
    signature: Datum to_regprocedure(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: format_procedure_extended
      Src: /src/postgres/src/backend/utils/adt/regproc.c:302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - procedure_oid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 303
    functionName: format_procedure
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 13
    functionsReached:
    - format_procedure_extended
    linkageType: ''
    returnType: char
    signature: 'char *

      format_procedure(Oid procedure_oid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: format_procedure_extended
      Src: /src/postgres/src/backend/utils/adt/regproc.c:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - procedure_oid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 305
    functionDepth: 1
    functionLinenumber: 305
    functionLinenumberEnd: 309
    functionName: format_procedure_qualified
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - format_procedure_extended
    linkageType: ''
    returnType: char
    signature: 'char *

      format_procedure_qualified(Oid procedure_oid)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/regproc.c:332,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/regproc.c:332,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:334,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/regproc.c:336,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/regproc.c:337,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/regproc.c:344,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:344,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/regproc.c:346,1
    - Dst: FunctionIsVisible
      Src: /src/postgres/src/backend/utils/adt/regproc.c:353,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/utils/adt/regproc.c:356,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/regproc.c:358,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/utils/adt/regproc.c:359,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/regproc.c:365,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/regproc.c:366,1
    - Dst: format_type_be_qualified
      Src: /src/postgres/src/backend/utils/adt/regproc.c:368,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/regproc.c:369,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/regproc.c:371,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/regproc.c:375,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regproc.c:385,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/regproc.c:386,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - procedure_oid
    - flags
    argTypes:
    - Oid
    - bits16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 326
    functionDepth: 4
    functionLinenumber: 326
    functionLinenumberEnd: 390
    functionName: format_procedure_extended
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 4
    functionsReached:
    - format_type_be_qualified
    - HeapTupleIsValid
    - quote_qualified_identifier
    - snprintf
    - NameStr
    - ReleaseSysCache
    - FunctionIsVisible
    - GETSTRUCT
    - appendStringInfoString
    - format_type_be
    - get_namespace_name
    - palloc
    - ObjectIdGetDatum
    - Assert
    - appendStringInfo
    - appendStringInfoChar
    - IsBootstrapProcessingMode
    - SearchSysCache1
    - initStringInfo
    linkageType: ''
    returnType: char
    signature: 'char *

      format_procedure_extended(Oid procedure_oid, bits16 flags)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/regproc.c:407,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/regproc.c:407,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:409,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/regproc.c:412,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/regproc.c:416,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/utils/adt/regproc.c:419,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/utils/adt/regproc.c:419,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:420,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/regproc.c:420,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/regproc.c:426,1
    - Dst: format_type_be_qualified
      Src: /src/postgres/src/backend/utils/adt/regproc.c:426,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/regproc.c:429,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - procedure_oid
    - objnames
    - objargs
    - missing_ok
    argTypes:
    - Oid
    - List**
    - List**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 398
    functionDepth: 6
    functionLinenumber: 398
    functionLinenumberEnd: 430
    functionName: format_procedure_parts
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 1
    functionsReached:
    - format_type_be_qualified
    - NameStr
    - ReleaseSysCache
    - list_make2
    - HeapTupleIsValid
    - GETSTRUCT
    - pstrdup
    - SearchSysCache1
    - elog
    - lappend
    - get_namespace_name_or_temp
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: "void format_procedure_parts(Oid procedure_oid, List **objnames, List
      **objargs,\n\t\t\t\t\t   bool missing_ok)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:438,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:442,1
    - Dst: format_procedure
      Src: /src/postgres/src/backend/utils/adt/regproc.c:444,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:446,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 435
    functionDepth: 2
    functionLinenumber: 435
    functionLinenumberEnd: 447
    functionName: regprocedureout
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - format_procedure
    - PG_RETURN_CSTRING
    - pstrdup
    linkageType: ''
    returnType: Datum
    signature: Datum regprocedureout(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oidrecv
      Src: /src/postgres/src/backend/utils/adt/regproc.c:456,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 452
    functionDepth: 3
    functionLinenumber: 452
    functionLinenumberEnd: 457
    functionName: regprocedurerecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - oidrecv
    linkageType: ''
    returnType: Datum
    signature: Datum regprocedurerecv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oidsend
      Src: /src/postgres/src/backend/utils/adt/regproc.c:466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 462
    functionDepth: 5
    functionLinenumber: 462
    functionLinenumberEnd: 467
    functionName: regproceduresend
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - oidsend
    linkageType: ''
    returnType: Datum
    signature: Datum regproceduresend(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:481,1
    - Dst: parseNumericOid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:488,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:489,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:494,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/regproc.c:495,1
    - Dst: stringToQualifiedNameList
      Src: /src/postgres/src/backend/utils/adt/regproc.c:501,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regproc.c:503,1
    - Dst: OpernameGetCandidates
      Src: /src/postgres/src/backend/utils/adt/regproc.c:505,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/regproc.c:508,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:509,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regproc.c:510,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/regproc.c:512,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:513,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regproc.c:514,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:519,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 478
    functionDepth: 3
    functionLinenumber: 478
    functionLinenumberEnd: 520
    functionName: regoperin
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_CSTRING
    - parseNumericOid
    - OpernameGetCandidates
    - IsBootstrapProcessingMode
    - PG_RETURN_OID
    - elog
    - PG_RETURN_NULL
    - stringToQualifiedNameList
    - ereturn
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum regoperin(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/regproc.c:530,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regproc.c:530,1
    - Dst: DirectInputFunctionCallSafe
      Src: /src/postgres/src/backend/utils/adt/regproc.c:534,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regproc.c:538,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/regproc.c:539,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 527
    functionDepth: 2
    functionLinenumber: 527
    functionLinenumberEnd: 540
    functionName: to_regoper
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_DATUM
    - PG_GETARG_TEXT_PP
    - PG_RETURN_NULL
    - DirectInputFunctionCallSafe
    - text_to_cstring
    linkageType: ''
    returnType: Datum
    signature: Datum to_regoper(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:548,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:554,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:555,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/regproc.c:558,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/regproc.c:558,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:560,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/regproc.c:562,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/regproc.c:563,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:570,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:571,1
    - Dst: OpernameGetCandidates
      Src: /src/postgres/src/backend/utils/adt/regproc.c:580,1
    - Dst: list_make1
      Src: /src/postgres/src/backend/utils/adt/regproc.c:580,1
    - Dst: makeString
      Src: /src/postgres/src/backend/utils/adt/regproc.c:580,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:584,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/utils/adt/regproc.c:589,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/utils/adt/regproc.c:590,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regproc.c:591,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/regproc.c:591,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/regproc.c:591,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/regproc.c:592,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/regproc.c:596,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regproc.c:603,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/regproc.c:604,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:607,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 608
      start: 545
    functionDepth: 3
    functionLinenumber: 545
    functionLinenumberEnd: 608
    functionName: regoperout
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - HeapTupleIsValid
    - snprintf
    - pstrdup
    - sprintf
    - strlen
    - NameStr
    - ReleaseSysCache
    - GETSTRUCT
    - PG_GETARG_OID
    - makeString
    - PG_RETURN_CSTRING
    - get_namespace_name
    - palloc
    - ObjectIdGetDatum
    - OpernameGetCandidates
    - quote_identifier
    - IsBootstrapProcessingMode
    - list_make1
    - SearchSysCache1
    linkageType: ''
    returnType: Datum
    signature: Datum regoperout(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oidrecv
      Src: /src/postgres/src/backend/utils/adt/regproc.c:617,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 613
    functionDepth: 3
    functionLinenumber: 613
    functionLinenumberEnd: 618
    functionName: regoperrecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - oidrecv
    linkageType: ''
    returnType: Datum
    signature: Datum regoperrecv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oidsend
      Src: /src/postgres/src/backend/utils/adt/regproc.c:627,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 623
    functionDepth: 5
    functionLinenumber: 623
    functionLinenumberEnd: 628
    functionName: regopersend
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - oidsend
    linkageType: ''
    returnType: Datum
    signature: Datum regopersend(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:642,1
    - Dst: parseNumericOid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:650,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:651,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:654,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/regproc.c:655,1
    - Dst: parseNameAndArgTypes
      Src: /src/postgres/src/backend/utils/adt/regproc.c:663,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regproc.c:666,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/regproc.c:669,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:670,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regproc.c:671,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/regproc.c:672,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/regproc.c:674,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:675,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regproc.c:676,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/regproc.c:677,1
    - Dst: OpernameGetOprid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:679,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:681,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/regproc.c:682,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:683,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regproc.c:684,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:686,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 639
    functionDepth: 3
    functionLinenumber: 639
    functionLinenumberEnd: 687
    functionName: regoperatorin
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_CSTRING
    - OpernameGetOprid
    - parseNumericOid
    - parseNameAndArgTypes
    - IsBootstrapProcessingMode
    - PG_RETURN_OID
    - elog
    - PG_RETURN_NULL
    - errhint
    - OidIsValid
    - ereturn
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum regoperatorin(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/regproc.c:697,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regproc.c:697,1
    - Dst: DirectInputFunctionCallSafe
      Src: /src/postgres/src/backend/utils/adt/regproc.c:701,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regproc.c:705,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/regproc.c:706,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 694
    functionDepth: 2
    functionLinenumber: 694
    functionLinenumberEnd: 707
    functionName: to_regoperator
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_DATUM
    - PG_GETARG_TEXT_PP
    - PG_RETURN_NULL
    - DirectInputFunctionCallSafe
    - text_to_cstring
    linkageType: ''
    returnType: Datum
    signature: Datum to_regoperator(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/regproc.c:728,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/regproc.c:728,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:730,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/regproc.c:732,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/regproc.c:733,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/regproc.c:738,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:738,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/regproc.c:740,1
    - Dst: OperatorIsVisible
      Src: /src/postgres/src/backend/utils/adt/regproc.c:747,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/utils/adt/regproc.c:749,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/regproc.c:750,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/utils/adt/regproc.c:751,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/regproc.c:754,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/regproc.c:757,1
    - Dst: format_type_be_qualified
      Src: /src/postgres/src/backend/utils/adt/regproc.c:759,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/regproc.c:760,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/regproc.c:762,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/regproc.c:765,1
    - Dst: format_type_be_qualified
      Src: /src/postgres/src/backend/utils/adt/regproc.c:767,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/regproc.c:768,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/regproc.c:770,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/regproc.c:774,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regproc.c:786,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/regproc.c:787,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - operator_oid
    - flags
    argTypes:
    - Oid
    - bits16
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 722
    functionDepth: 4
    functionLinenumber: 722
    functionLinenumberEnd: 791
    functionName: format_operator_extended
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 2
    functionsReached:
    - format_type_be_qualified
    - Assert
    - NameStr
    - ReleaseSysCache
    - appendStringInfo
    - HeapTupleIsValid
    - quote_identifier
    - format_type_be
    - get_namespace_name
    - GETSTRUCT
    - IsBootstrapProcessingMode
    - appendStringInfoString
    - SearchSysCache1
    - snprintf
    - OperatorIsVisible
    - initStringInfo
    - palloc
    - ObjectIdGetDatum
    linkageType: ''
    returnType: char
    signature: 'char *

      format_operator_extended(Oid operator_oid, bits16 flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: format_operator_extended
      Src: /src/postgres/src/backend/utils/adt/regproc.c:796,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - operator_oid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 793
    functionDepth: 5
    functionLinenumber: 793
    functionLinenumberEnd: 797
    functionName: format_operator
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 7
    functionsReached:
    - format_operator_extended
    linkageType: ''
    returnType: char
    signature: 'char *

      format_operator(Oid operator_oid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: format_operator_extended
      Src: /src/postgres/src/backend/utils/adt/regproc.c:802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - operator_oid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 799
    functionDepth: 5
    functionLinenumber: 799
    functionLinenumberEnd: 804
    functionName: format_operator_qualified
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - format_operator_extended
    linkageType: ''
    returnType: char
    signature: 'char *

      format_operator_qualified(Oid operator_oid)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/regproc.c:813,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/regproc.c:813,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:814,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/regproc.c:817,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/regproc.c:822,1
    - Dst: list_make2
      Src: /src/postgres/src/backend/utils/adt/regproc.c:823,1
    - Dst: get_namespace_name_or_temp
      Src: /src/postgres/src/backend/utils/adt/regproc.c:823,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:824,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/regproc.c:824,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/regproc.c:827,1
    - Dst: format_type_be_qualified
      Src: /src/postgres/src/backend/utils/adt/regproc.c:828,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/regproc.c:830,1
    - Dst: format_type_be_qualified
      Src: /src/postgres/src/backend/utils/adt/regproc.c:831,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/regproc.c:833,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 4
    argNames:
    - operator_oid
    - objnames
    - objargs
    - missing_ok
    argTypes:
    - Oid
    - List**
    - List**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 834
      start: 806
    functionDepth: 6
    functionLinenumber: 806
    functionLinenumberEnd: 834
    functionName: format_operator_parts
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 1
    functionsReached:
    - format_type_be_qualified
    - NameStr
    - ReleaseSysCache
    - list_make2
    - HeapTupleIsValid
    - GETSTRUCT
    - pstrdup
    - SearchSysCache1
    - elog
    - lappend
    - get_namespace_name_or_temp
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: "void format_operator_parts(Oid operator_oid, List **objnames, List
      **objargs,\n\t\t\t\t\t  bool missing_ok)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:842,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:846,1
    - Dst: format_operator
      Src: /src/postgres/src/backend/utils/adt/regproc.c:848,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:850,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 839
    functionDepth: 6
    functionLinenumber: 839
    functionLinenumberEnd: 851
    functionName: regoperatorout
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_OID
    - PG_RETURN_CSTRING
    - format_operator
    - pstrdup
    linkageType: ''
    returnType: Datum
    signature: Datum regoperatorout(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oidrecv
      Src: /src/postgres/src/backend/utils/adt/regproc.c:860,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 856
    functionDepth: 3
    functionLinenumber: 856
    functionLinenumberEnd: 861
    functionName: regoperatorrecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - oidrecv
    linkageType: ''
    returnType: Datum
    signature: Datum regoperatorrecv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oidsend
      Src: /src/postgres/src/backend/utils/adt/regproc.c:870,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 866
    functionDepth: 5
    functionLinenumber: 866
    functionLinenumberEnd: 871
    functionName: regoperatorsend
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - oidsend
    linkageType: ''
    returnType: Datum
    signature: Datum regoperatorsend(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:885,1
    - Dst: parseDashOrOid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:891,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:892,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:897,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/regproc.c:898,1
    - Dst: stringToQualifiedNameList
      Src: /src/postgres/src/backend/utils/adt/regproc.c:904,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regproc.c:906,1
    - Dst: RangeVarGetRelid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:909,1
    - Dst: makeRangeVarFromNameList
      Src: /src/postgres/src/backend/utils/adt/regproc.c:909,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:911,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/regproc.c:912,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:913,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regproc.c:914,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/utils/adt/regproc.c:915,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:917,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 882
    functionDepth: 4
    functionLinenumber: 882
    functionLinenumberEnd: 918
    functionName: regclassin
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_CSTRING
    - parseDashOrOid
    - NameListToString
    - IsBootstrapProcessingMode
    - RangeVarGetRelid
    - PG_RETURN_OID
    - elog
    - PG_RETURN_NULL
    - stringToQualifiedNameList
    - OidIsValid
    - ereturn
    - makeRangeVarFromNameList
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum regclassin(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/regproc.c:928,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regproc.c:928,1
    - Dst: DirectInputFunctionCallSafe
      Src: /src/postgres/src/backend/utils/adt/regproc.c:932,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regproc.c:936,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/regproc.c:937,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 925
    functionDepth: 2
    functionLinenumber: 925
    functionLinenumberEnd: 938
    functionName: to_regclass
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_DATUM
    - PG_GETARG_TEXT_PP
    - PG_RETURN_NULL
    - DirectInputFunctionCallSafe
    - text_to_cstring
    linkageType: ''
    returnType: Datum
    signature: Datum to_regclass(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:946,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:952,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:953,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/regproc.c:956,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/regproc.c:956,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:958,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/regproc.c:960,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/regproc.c:961,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:968,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:969,1
    - Dst: RelationIsVisible
      Src: /src/postgres/src/backend/utils/adt/regproc.c:977,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/utils/adt/regproc.c:980,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/utils/adt/regproc.c:982,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/regproc.c:985,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regproc.c:990,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/regproc.c:991,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:994,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 943
    functionDepth: 2
    functionLinenumber: 943
    functionLinenumberEnd: 995
    functionName: regclassout
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - NameStr
    - ReleaseSysCache
    - HeapTupleIsValid
    - PG_RETURN_CSTRING
    - RelationIsVisible
    - GETSTRUCT
    - pstrdup
    - IsBootstrapProcessingMode
    - SearchSysCache1
    - get_namespace_name
    - PG_GETARG_OID
    - quote_qualified_identifier
    - snprintf
    - palloc
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum regclassout(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oidrecv
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1004,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1005
      start: 1000
    functionDepth: 3
    functionLinenumber: 1000
    functionLinenumberEnd: 1005
    functionName: regclassrecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - oidrecv
    linkageType: ''
    returnType: Datum
    signature: Datum regclassrecv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oidsend
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1014,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 1010
    functionDepth: 5
    functionLinenumber: 1010
    functionLinenumberEnd: 1015
    functionName: regclasssend
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - oidsend
    linkageType: ''
    returnType: Datum
    signature: Datum regclasssend(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1029,1
    - Dst: parseDashOrOid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1035,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1036,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1041,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1042,1
    - Dst: stringToQualifiedNameList
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1048,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1050,1
    - Dst: get_collation_oid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1052,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1054,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1055,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1056,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1057,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1058,1
    - Dst: GetDatabaseEncodingName
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1058,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1060,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 1026
    functionDepth: 5
    functionLinenumber: 1026
    functionLinenumberEnd: 1061
    functionName: regcollationin
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_CSTRING
    - parseDashOrOid
    - GetDatabaseEncodingName
    - NameListToString
    - IsBootstrapProcessingMode
    - get_collation_oid
    - PG_RETURN_OID
    - elog
    - PG_RETURN_NULL
    - stringToQualifiedNameList
    - OidIsValid
    - ereturn
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum regcollationin(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1071,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1071,1
    - Dst: DirectInputFunctionCallSafe
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1075,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1079,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1080,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1081
      start: 1068
    functionDepth: 2
    functionLinenumber: 1068
    functionLinenumberEnd: 1081
    functionName: to_regcollation
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_DATUM
    - PG_GETARG_TEXT_PP
    - PG_RETURN_NULL
    - DirectInputFunctionCallSafe
    - text_to_cstring
    linkageType: ''
    returnType: Datum
    signature: Datum to_regcollation(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1089,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1095,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1096,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1099,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1099,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1101,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1103,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1104,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1111,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1112,1
    - Dst: CollationIsVisible
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1121,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1124,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1126,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1129,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1134,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1135,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1138,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1139
      start: 1086
    functionDepth: 2
    functionLinenumber: 1086
    functionLinenumberEnd: 1139
    functionName: regcollationout
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - NameStr
    - ReleaseSysCache
    - HeapTupleIsValid
    - PG_RETURN_CSTRING
    - get_namespace_name
    - GETSTRUCT
    - pstrdup
    - IsBootstrapProcessingMode
    - SearchSysCache1
    - CollationIsVisible
    - PG_GETARG_OID
    - quote_qualified_identifier
    - snprintf
    - palloc
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum regcollationout(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oidrecv
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1149
      start: 1144
    functionDepth: 3
    functionLinenumber: 1144
    functionLinenumberEnd: 1149
    functionName: regcollationrecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - oidrecv
    linkageType: ''
    returnType: Datum
    signature: Datum regcollationrecv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oidsend
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1159
      start: 1154
    functionDepth: 5
    functionLinenumber: 1154
    functionLinenumberEnd: 1159
    functionName: regcollationsend
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - oidsend
    linkageType: ''
    returnType: Datum
    signature: Datum regcollationsend(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1179,1
    - Dst: parseDashOrOid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1185,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1186,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1191,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1192,1
    - Dst: parseTypeString
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1199,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1201,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1202
      start: 1176
    functionDepth: 1
    functionLinenumber: 1176
    functionLinenumberEnd: 1202
    functionName: regtypein
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - parseDashOrOid
    - IsBootstrapProcessingMode
    - PG_RETURN_OID
    - elog
    - parseTypeString
    linkageType: ''
    returnType: Datum
    signature: Datum regtypein(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1212,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1212,1
    - Dst: DirectInputFunctionCallSafe
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1216,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1220,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1221,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1222
      start: 1209
    functionDepth: 2
    functionLinenumber: 1209
    functionLinenumberEnd: 1222
    functionName: to_regtype
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_DATUM
    - PG_GETARG_TEXT_PP
    - PG_RETURN_NULL
    - DirectInputFunctionCallSafe
    - text_to_cstring
    linkageType: ''
    returnType: Datum
    signature: Datum to_regtype(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1232,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1232,1
    - Dst: parseTypeString
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1238,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1239,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1241,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1242
      start: 1229
    functionDepth: 2
    functionLinenumber: 1229
    functionLinenumberEnd: 1242
    functionName: to_regtypemod
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_TEXT_PP
    - parseTypeString
    - PG_RETURN_NULL
    - text_to_cstring
    linkageType: ''
    returnType: Datum
    signature: Datum to_regtypemod(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1250,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1256,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1257,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1260,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1260,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1262,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1264,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1271,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1273,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1275,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1278,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1280,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1285,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1286,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1289,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1290
      start: 1247
    functionDepth: 4
    functionLinenumber: 1247
    functionLinenumberEnd: 1290
    functionName: regtypeout
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - NameStr
    - ReleaseSysCache
    - HeapTupleIsValid
    - PG_RETURN_CSTRING
    - format_type_be
    - GETSTRUCT
    - pstrdup
    - IsBootstrapProcessingMode
    - SearchSysCache1
    - snprintf
    - PG_GETARG_OID
    - palloc
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum regtypeout(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oidrecv
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1300
      start: 1295
    functionDepth: 3
    functionLinenumber: 1295
    functionLinenumberEnd: 1300
    functionName: regtyperecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - oidrecv
    linkageType: ''
    returnType: Datum
    signature: Datum regtyperecv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oidsend
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1310
      start: 1305
    functionDepth: 5
    functionLinenumber: 1305
    functionLinenumberEnd: 1310
    functionName: regtypesend
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - oidsend
    linkageType: ''
    returnType: Datum
    signature: Datum regtypesend(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1324,1
    - Dst: parseDashOrOid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1330,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1331,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1334,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1335,1
    - Dst: stringToQualifiedNameList
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1341,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1343,1
    - Dst: get_ts_config_oid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1345,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1347,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1348,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1349,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1350,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1351,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1353,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1354
      start: 1321
    functionDepth: 4
    functionLinenumber: 1321
    functionLinenumberEnd: 1354
    functionName: regconfigin
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_CSTRING
    - parseDashOrOid
    - NameListToString
    - IsBootstrapProcessingMode
    - PG_RETURN_OID
    - elog
    - PG_RETURN_NULL
    - stringToQualifiedNameList
    - get_ts_config_oid
    - OidIsValid
    - ereturn
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum regconfigin(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1362,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1368,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1369,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1372,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1372,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1374,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1376,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1377,1
    - Dst: TSConfigIsVisible
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1383,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1386,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1388,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1390,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1395,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1396,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1399,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1400
      start: 1359
    functionDepth: 2
    functionLinenumber: 1359
    functionLinenumberEnd: 1400
    functionName: regconfigout
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - NameStr
    - ReleaseSysCache
    - HeapTupleIsValid
    - PG_RETURN_CSTRING
    - get_namespace_name
    - GETSTRUCT
    - pstrdup
    - quote_qualified_identifier
    - SearchSysCache1
    - snprintf
    - PG_GETARG_OID
    - TSConfigIsVisible
    - palloc
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum regconfigout(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oidrecv
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1410
      start: 1405
    functionDepth: 3
    functionLinenumber: 1405
    functionLinenumberEnd: 1410
    functionName: regconfigrecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - oidrecv
    linkageType: ''
    returnType: Datum
    signature: Datum regconfigrecv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oidsend
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1420
      start: 1415
    functionDepth: 5
    functionLinenumber: 1415
    functionLinenumberEnd: 1420
    functionName: regconfigsend
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - oidsend
    linkageType: ''
    returnType: Datum
    signature: Datum regconfigsend(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1434,1
    - Dst: parseDashOrOid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1440,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1441,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1444,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1445,1
    - Dst: stringToQualifiedNameList
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1451,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1453,1
    - Dst: get_ts_dict_oid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1455,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1457,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1458,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1459,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1460,1
    - Dst: NameListToString
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1461,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1463,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1464
      start: 1431
    functionDepth: 4
    functionLinenumber: 1431
    functionLinenumberEnd: 1464
    functionName: regdictionaryin
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_CSTRING
    - parseDashOrOid
    - NameListToString
    - IsBootstrapProcessingMode
    - PG_RETURN_OID
    - elog
    - PG_RETURN_NULL
    - stringToQualifiedNameList
    - get_ts_dict_oid
    - OidIsValid
    - ereturn
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum regdictionaryin(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1472,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1478,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1479,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1482,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1482,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1484,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1486,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1487,1
    - Dst: TSDictionaryIsVisible
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1494,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1497,1
    - Dst: quote_qualified_identifier
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1499,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1501,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1506,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1507,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1510,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1511
      start: 1469
    functionDepth: 2
    functionLinenumber: 1469
    functionLinenumberEnd: 1511
    functionName: regdictionaryout
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - NameStr
    - ReleaseSysCache
    - HeapTupleIsValid
    - PG_RETURN_CSTRING
    - TSDictionaryIsVisible
    - GETSTRUCT
    - pstrdup
    - get_namespace_name
    - SearchSysCache1
    - quote_qualified_identifier
    - PG_GETARG_OID
    - snprintf
    - palloc
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum regdictionaryout(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oidrecv
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1520,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1521
      start: 1516
    functionDepth: 3
    functionLinenumber: 1516
    functionLinenumberEnd: 1521
    functionName: regdictionaryrecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - oidrecv
    linkageType: ''
    returnType: Datum
    signature: Datum regdictionaryrecv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oidsend
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1530,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1531
      start: 1526
    functionDepth: 5
    functionLinenumber: 1526
    functionLinenumberEnd: 1531
    functionName: regdictionarysend
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - oidsend
    linkageType: ''
    returnType: Datum
    signature: Datum regdictionarysend(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1544,1
    - Dst: parseDashOrOid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1550,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1551,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1554,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1555,1
    - Dst: stringToQualifiedNameList
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1558,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1560,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1562,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1563,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1564,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1565,1
    - Dst: get_role_oid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1567,1
    - Dst: strVal
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1567,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1567,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1569,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1570,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1571,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1572,1
    - Dst: strVal
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1573,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1573,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1575,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1576
      start: 1541
    functionDepth: 3
    functionLinenumber: 1541
    functionLinenumberEnd: 1576
    functionName: regrolein
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_CSTRING
    - parseDashOrOid
    - linitial
    - get_role_oid
    - IsBootstrapProcessingMode
    - list_length
    - PG_RETURN_OID
    - elog
    - PG_RETURN_NULL
    - stringToQualifiedNameList
    - strVal
    - OidIsValid
    - ereturn
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum regrolein(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1586,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1586,1
    - Dst: DirectInputFunctionCallSafe
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1590,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1594,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1595,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1596
      start: 1583
    functionDepth: 2
    functionLinenumber: 1583
    functionLinenumberEnd: 1596
    functionName: to_regrole
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_DATUM
    - PG_GETARG_TEXT_PP
    - PG_RETURN_NULL
    - DirectInputFunctionCallSafe
    - text_to_cstring
    linkageType: ''
    returnType: Datum
    signature: Datum to_regrole(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1604,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1609,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1610,1
    - Dst: GetUserNameFromId
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1613,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1618,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1618,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1623,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1624,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1627,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1628
      start: 1601
    functionDepth: 1
    functionLinenumber: 1601
    functionLinenumberEnd: 1628
    functionName: regroleout
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - quote_identifier
    - PG_RETURN_CSTRING
    - snprintf
    - pstrdup
    - PG_GETARG_OID
    - palloc
    - GetUserNameFromId
    linkageType: ''
    returnType: Datum
    signature: Datum regroleout(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oidrecv
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1637,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1638
      start: 1633
    functionDepth: 3
    functionLinenumber: 1633
    functionLinenumberEnd: 1638
    functionName: regrolerecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - oidrecv
    linkageType: ''
    returnType: Datum
    signature: Datum regrolerecv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oidsend
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1647,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1648
      start: 1643
    functionDepth: 5
    functionLinenumber: 1643
    functionLinenumberEnd: 1648
    functionName: regrolesend
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - oidsend
    linkageType: ''
    returnType: Datum
    signature: Datum regrolesend(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1661,1
    - Dst: parseDashOrOid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1667,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1668,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1671,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1672,1
    - Dst: stringToQualifiedNameList
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1675,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1677,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1679,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1680,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1681,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1682,1
    - Dst: get_namespace_oid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1684,1
    - Dst: strVal
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1684,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1684,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1686,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1687,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1688,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1689,1
    - Dst: strVal
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1690,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1690,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1692,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1693
      start: 1658
    functionDepth: 3
    functionLinenumber: 1658
    functionLinenumberEnd: 1693
    functionName: regnamespacein
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_CSTRING
    - parseDashOrOid
    - get_namespace_oid
    - linitial
    - IsBootstrapProcessingMode
    - list_length
    - PG_RETURN_OID
    - elog
    - PG_RETURN_NULL
    - stringToQualifiedNameList
    - strVal
    - OidIsValid
    - ereturn
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum regnamespacein(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1703,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1703,1
    - Dst: DirectInputFunctionCallSafe
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1707,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1711,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1712,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1713
      start: 1700
    functionDepth: 2
    functionLinenumber: 1700
    functionLinenumberEnd: 1713
    functionName: to_regnamespace
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_DATUM
    - PG_GETARG_TEXT_PP
    - PG_RETURN_NULL
    - DirectInputFunctionCallSafe
    - text_to_cstring
    linkageType: ''
    returnType: Datum
    signature: Datum to_regnamespace(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1721,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1726,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1727,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1730,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1735,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1735,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1740,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1741,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1744,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1745
      start: 1718
    functionDepth: 1
    functionLinenumber: 1718
    functionLinenumberEnd: 1745
    functionName: regnamespaceout
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - quote_identifier
    - PG_RETURN_CSTRING
    - get_namespace_name
    - snprintf
    - pstrdup
    - PG_GETARG_OID
    - palloc
    linkageType: ''
    returnType: Datum
    signature: Datum regnamespaceout(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oidrecv
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1754,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1755
      start: 1750
    functionDepth: 3
    functionLinenumber: 1750
    functionLinenumberEnd: 1755
    functionName: regnamespacerecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - oidrecv
    linkageType: ''
    returnType: Datum
    signature: Datum regnamespacerecv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oidsend
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1764,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1765
      start: 1760
    functionDepth: 5
    functionLinenumber: 1760
    functionLinenumberEnd: 1765
    functionName: regnamespacesend
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - oidsend
    linkageType: ''
    returnType: Datum
    signature: Datum regnamespacesend(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1778,1
    - Dst: parseDashOrOid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1784,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1785,1
    - Dst: IsBootstrapProcessingMode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1788,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1789,1
    - Dst: stringToQualifiedNameList
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1792,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1794,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1796,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1797,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1798,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1799,1
    - Dst: get_database_oid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1801,1
    - Dst: strVal
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1801,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1801,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1803,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1804,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1805,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1806,1
    - Dst: strVal
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1807,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1807,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1809,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1810
      start: 1775
    functionDepth: 2
    functionLinenumber: 1775
    functionLinenumberEnd: 1810
    functionName: regdatabasein
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - errmsg
    - PG_GETARG_CSTRING
    - parseDashOrOid
    - get_database_oid
    - linitial
    - IsBootstrapProcessingMode
    - list_length
    - PG_RETURN_OID
    - elog
    - PG_RETURN_NULL
    - stringToQualifiedNameList
    - strVal
    - OidIsValid
    - ereturn
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum regdatabasein(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1820,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1820,1
    - Dst: DirectInputFunctionCallSafe
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1824,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1828,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1829,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1830
      start: 1817
    functionDepth: 2
    functionLinenumber: 1817
    functionLinenumberEnd: 1830
    functionName: to_regdatabase
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_DATUM
    - PG_GETARG_TEXT_PP
    - PG_RETURN_NULL
    - DirectInputFunctionCallSafe
    - text_to_cstring
    linkageType: ''
    returnType: Datum
    signature: Datum to_regdatabase(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1838,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1843,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1844,1
    - Dst: get_database_name
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1847,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1852,1
    - Dst: quote_identifier
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1852,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1857,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1858,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1861,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1862
      start: 1835
    functionDepth: 1
    functionLinenumber: 1835
    functionLinenumberEnd: 1862
    functionName: regdatabaseout
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - quote_identifier
    - PG_RETURN_CSTRING
    - snprintf
    - pstrdup
    - PG_GETARG_OID
    - get_database_name
    - palloc
    linkageType: ''
    returnType: Datum
    signature: Datum regdatabaseout(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oidrecv
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1871,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1872
      start: 1867
    functionDepth: 3
    functionLinenumber: 1867
    functionLinenumberEnd: 1872
    functionName: regdatabaserecv
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - oidrecv
    linkageType: ''
    returnType: Datum
    signature: Datum regdatabaserecv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oidsend
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1881,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1882
      start: 1877
    functionDepth: 5
    functionLinenumber: 1877
    functionLinenumberEnd: 1882
    functionName: regdatabasesend
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - oidsend
    linkageType: ''
    returnType: Datum
    signature: Datum regdatabasesend(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1894,1
    - Dst: makeRangeVarFromNameList
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1898,1
    - Dst: textToQualifiedNameList
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1898,1
    - Dst: RangeVarGetRelid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1901,1
    - Dst: PG_RETURN_OID
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1903,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1904
      start: 1891
    functionDepth: 7
    functionLinenumber: 1891
    functionLinenumberEnd: 1904
    functionName: text_regclass
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_TEXT_PP
    - RangeVarGetRelid
    - PG_RETURN_OID
    - textToQualifiedNameList
    - makeRangeVarFromNameList
    linkageType: ''
    returnType: Datum
    signature: Datum text_regclass(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1923,1
    - Dst: SplitIdentifierString
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1925,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1926,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1927,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1928,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1931,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1932,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1933,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1937,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1939,1
    - Dst: makeString
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1939,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1939,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1942,1
    - Dst: list_free
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1943,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - string
    - escontext
    argTypes:
    - char*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1946
      start: 1914
    functionDepth: 7
    functionLinenumber: 1914
    functionLinenumberEnd: 1946
    functionName: stringToQualifiedNameList
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 11
    functionsReached:
    - errmsg
    - lfirst
    - makeString
    - pfree
    - pstrdup
    - lappend
    - ereturn
    - SplitIdentifierString
    - errcode
    - list_free
    linkageType: ''
    returnType: List
    signature: 'List *

      stringToQualifiedNameList(const char *string, Node *escontext)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1937,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1939,1
    - Dst: makeString
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1939,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1939,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1940
      start: 1935
    functionDepth: 6
    functionLinenumber: 1935
    functionLinenumberEnd: 1940
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 467
    functionsReached:
    - makeString
    - lappend
    - lfirst
    - pstrdup
    linkageType: ''
    returnType: void
    signature: void foreach(l, namelist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strspn
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1964,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1964,1
    - Dst: DirectInputFunctionCallSafe
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1969,1
    - Dst: DatumGetObjectId
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1973,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - string
    - result
    - escontext
    argTypes:
    - char*
    - Oid*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1980
      start: 1960
    functionDepth: 1
    functionLinenumber: 1960
    functionLinenumberEnd: 1980
    functionName: parseNumericOid
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 2
    functionsReached:
    - strspn
    - DatumGetObjectId
    - DirectInputFunctionCallSafe
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool parseNumericOid(char *string, Oid *result, Node *escontext)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1989,1
    - Dst: parseNumericOid
      Src: /src/postgres/src/backend/utils/adt/regproc.c:1996,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - string
    - result
    - escontext
    argTypes:
    - char*
    - Oid*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1997
      start: 1985
    functionDepth: 2
    functionLinenumber: 1985
    functionLinenumberEnd: 1997
    functionName: parseDashOrOid
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 10
    functionsReached:
    - strcmp
    - parseNumericOid
    linkageType: ''
    returnType: bool
    signature: bool parseDashOrOid(char *string, Oid *result, Node *escontext)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/regproc.c:2028,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/regproc.c:2040,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:2041,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regproc.c:2042,1
    - Dst: stringToQualifiedNameList
      Src: /src/postgres/src/backend/utils/adt/regproc.c:2046,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/regproc.c:2051,1
    - Dst: scanner_isspace
      Src: /src/postgres/src/backend/utils/adt/regproc.c:2054,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/regproc.c:2058,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:2059,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regproc.c:2060,1
    - Dst: scanner_isspace
      Src: /src/postgres/src/backend/utils/adt/regproc.c:2071,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/regproc.c:2077,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:2078,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regproc.c:2079,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/regproc.c:2109,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:2110,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regproc.c:2111,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/regproc.c:2122,1
    - Dst: scanner_isspace
      Src: /src/postgres/src/backend/utils/adt/regproc.c:2127,1
    - Dst: pg_strcasecmp
      Src: /src/postgres/src/backend/utils/adt/regproc.c:2132,1
    - Dst: parseTypeString
      Src: /src/postgres/src/backend/utils/adt/regproc.c:2141,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/regproc.c:2145,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/regproc.c:2146,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/regproc.c:2147,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/regproc.c:2153,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 82
    argCount: 6
    argNames:
    - string
    - allowNone
    - names
    - nargs
    - argtypes
    - escontext
    argTypes:
    - char*
    - bool
    - List**
    - int*
    - Oid*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2156
      start: 2012
    functionDepth: 8
    functionLinenumber: 2012
    functionLinenumberEnd: 2156
    functionName: parseNameAndArgTypes
    functionSourceFile: /src/postgres/src/backend/utils/adt/regproc.c
    functionUses: 2
    functionsReached:
    - errmsg
    - pfree
    - Assert
    - pstrdup
    - parseTypeString
    - stringToQualifiedNameList
    - scanner_isspace
    - ereturn
    - pg_strcasecmp
    - errcode
    - strlen
    linkageType: ''
    returnType: bool
    signature: "bool parseNameAndArgTypes(const char *string, bool allowNone, List
      **names,\n\t\t\t\t\t int *nargs, Oid *argtypes,\n\t\t\t\t\t Node *escontext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 109
    functionName: KeyWord_INDEX_FILTER
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: KeyWord_INDEX_FILTER(_c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - year
    - ','
    - is_interval
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 195
    functionName: ADJUST_YEAR
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ADJUST_YEAR(year, is_interval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - curr
    - ','
    - next
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 274
    functionName: IS_VALID_SUB_COMB
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_VALID_SUB_COMB(curr, next)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 286
    functionName: ROMAN_VAL
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROMAN_VAL(r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _f
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 351
    functionName: IS_DECIMAL
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_DECIMAL(_f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _f
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 352
    functionName: IS_LDECIMAL
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_LDECIMAL(_f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _f
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 352
    functionDepth: 0
    functionLinenumber: 352
    functionLinenumberEnd: 353
    functionName: IS_ZERO
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ZERO(_f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _f
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 353
    functionDepth: 0
    functionLinenumber: 353
    functionLinenumberEnd: 354
    functionName: IS_BLANK
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_BLANK(_f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _f
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 354
    functionDepth: 0
    functionLinenumber: 354
    functionLinenumberEnd: 355
    functionName: IS_FILLMODE
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_FILLMODE(_f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _f
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 356
    functionName: IS_BRACKET
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_BRACKET(_f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _f
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 357
    functionName: IS_MINUS
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MINUS(_f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _f
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 358
    functionName: IS_LSIGN
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_LSIGN(_f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _f
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 358
    functionDepth: 0
    functionLinenumber: 358
    functionLinenumberEnd: 359
    functionName: IS_PLUS
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_PLUS(_f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _f
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 360
    functionName: IS_ROMAN
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ROMAN(_f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _f
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 361
    functionName: IS_MULTI
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MULTI(_f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _f
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 362
    functionName: IS_EEEE
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_EEEE(_f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 458
    functionDepth: 0
    functionLinenumber: 458
    functionLinenumberEnd: 459
    functionName: ZERO_tmfc
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZERO_tmfc(_X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 471
    functionDepth: 0
    functionLinenumber: 471
    functionLinenumberEnd: 477
    functionName: DEBUG_TMFC
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_TMFC(_X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 477
    functionDepth: 0
    functionLinenumber: 477
    functionLinenumberEnd: 482
    functionName: DEBUG_TM
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_TM(_X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 515
    functionDepth: 0
    functionLinenumber: 515
    functionLinenumberEnd: 516
    functionName: tmtcTm
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: tmtcTm(_X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 516
    functionDepth: 0
    functionLinenumber: 516
    functionLinenumberEnd: 517
    functionName: tmtcTzn
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: tmtcTzn(_X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 517
    functionDepth: 0
    functionLinenumber: 517
    functionLinenumberEnd: 518
    functionName: tmtcFsec
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: tmtcFsec(_X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _DST
    - ','
    - _SRC
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 532
    functionName: COPY_tm
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COPY_tm(_DST, _SRC)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 534
    functionDepth: 0
    functionLinenumber: 534
    functionLinenumberEnd: 539
    functionName: ZERO_tm
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZERO_tm(_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: 540
    functionDepth: 0
    functionLinenumber: 540
    functionLinenumberEnd: 546
    functionName: ZERO_tmtc
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZERO_tmtc(_X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 578
    functionDepth: 0
    functionLinenumber: 578
    functionLinenumberEnd: 579
    functionName: S_THth
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_THth(_s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 579
    functionDepth: 0
    functionLinenumber: 579
    functionLinenumberEnd: 580
    functionName: S_TH
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_TH(_s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 580
    functionDepth: 0
    functionLinenumber: 580
    functionLinenumberEnd: 581
    functionName: S_th
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_th(_s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 581
    functionDepth: 0
    functionLinenumber: 581
    functionLinenumberEnd: 582
    functionName: S_TH_TYPE
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_TH_TYPE(_s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 585
    functionName: S_FM
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_FM(_s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 585
    functionDepth: 0
    functionLinenumber: 585
    functionLinenumberEnd: 586
    functionName: S_SP
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_SP(_s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 586
    functionDepth: 0
    functionLinenumber: 586
    functionLinenumberEnd: 587
    functionName: S_TM
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_TM(_s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1063
      start: 1062
    functionDepth: 0
    functionLinenumber: 1062
    functionLinenumberEnd: 1063
    functionName: AMOUNT_TEST
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AMOUNT_TEST(s)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: KeyWord_INDEX_FILTER
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1139,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1148,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - str
    - kw
    - index
    argTypes:
    - char*
    - KeyWord*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1156
      start: 1134
    functionDepth: 1
    functionLinenumber: 1134
    functionLinenumberEnd: 1156
    functionName: index_seq_search
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - strncmp
    - KeyWord_INDEX_FILTER
    linkageType: ''
    returnType: KeyWord
    signature: 'KeyWord *

      index_seq_search(const char *str, const KeyWord *kw, const int *index)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1168,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - str
    - suf
    - type
    argTypes:
    - char*
    - KeySuffix*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1172
      start: 1158
    functionDepth: 0
    functionLinenumber: 1158
    functionLinenumberEnd: 1172
    functionName: suff_search
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: KeySuffix
    signature: 'KeySuffix *

      suff_search(const char *str, const KeySuffix *suf, int type)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1182
      start: 1174
    functionDepth: 0
    functionLinenumber: 1174
    functionLinenumberEnd: 1182
    functionName: is_separator_char
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_separator_char(const char *str)
  - BBCount: 44
    BranchProfiles: []
    Callsites:
    - Dst: IS_EEEE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1194,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1195,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1196,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1197,1
    - Dst: IS_BRACKET
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1202,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1203,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1204,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1205,1
    - Dst: IS_MULTI
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1206,1
    - Dst: IS_DECIMAL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1211,1
    - Dst: IS_BRACKET
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1218,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1219,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1220,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1221,1
    - Dst: IS_ZERO
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1222,1
    - Dst: IS_DECIMAL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1222,1
    - Dst: IS_DECIMAL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1227,1
    - Dst: IS_ZERO
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1236,1
    - Dst: IS_DECIMAL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1245,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1246,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1247,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1248,1
    - Dst: IS_MULTI
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1249,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1250,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1251,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1252,1
    - Dst: IS_LSIGN
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1261,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1262,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1263,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1264,1
    - Dst: IS_PLUS
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1265,1
    - Dst: IS_MINUS
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1265,1
    - Dst: IS_BRACKET
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1265,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1266,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1267,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1268,1
    - Dst: IS_DECIMAL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1269,1
    - Dst: IS_LSIGN
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1285,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1286,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1287,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1288,1
    - Dst: IS_DECIMAL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1290,1
    - Dst: IS_LSIGN
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1295,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1296,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1297,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1298,1
    - Dst: IS_DECIMAL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1300,1
    - Dst: IS_LSIGN
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1305,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1306,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1307,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1308,1
    - Dst: IS_LSIGN
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1314,1
    - Dst: IS_PLUS
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1314,1
    - Dst: IS_MINUS
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1314,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1315,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1316,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1317,1
    - Dst: IS_ROMAN
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1323,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1324,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1325,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1326,1
    - Dst: IS_DECIMAL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1336,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1337,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1338,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1339,1
    - Dst: IS_EEEE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1344,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1345,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1346,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1347,1
    - Dst: IS_BLANK
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1348,1
    - Dst: IS_FILLMODE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1348,1
    - Dst: IS_LSIGN
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1348,1
    - Dst: IS_BRACKET
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1349,1
    - Dst: IS_MINUS
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1349,1
    - Dst: IS_PLUS
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1349,1
    - Dst: IS_ROMAN
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1350,1
    - Dst: IS_MULTI
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1350,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1351,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1352,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1353,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1354,1
    - Dst: IS_ROMAN
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1359,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1361,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1362,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1363,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1364,1
    CyclomaticComplexity: 58
    EdgeCount: 58
    ICount: 113
    argCount: 2
    argNames:
    - num
    - n
    argTypes:
    - NUMDesc*
    - FormatNode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1365
      start: 1188
    functionDepth: 2
    functionLinenumber: 1188
    functionLinenumberEnd: 1365
    functionName: NUMDesc_prepare
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - errmsg
    - IS_ROMAN
    - IS_ZERO
    - IS_PLUS
    - errdetail
    - ereport
    - IS_MULTI
    - IS_BLANK
    - IS_LSIGN
    - IS_FILLMODE
    - IS_DECIMAL
    - IS_EEEE
    - IS_BRACKET
    - IS_MINUS
    - errcode
    linkageType: ''
    returnType: void
    signature: void NUMDesc_prepare(NUMDesc *num, FormatNode *n)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1381,1
    - Dst: suff_search
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1395,1
    - Dst: index_seq_search
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1405,1
    - Dst: NUMDesc_prepare
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1416,1
    - Dst: suff_search
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1422,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1442,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1443,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1444,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1445,1
    - Dst: pnstrdup
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1446,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1446,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1476,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1478,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1494,1
    - Dst: is_separator_char
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1496,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1498,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1503,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 75
    argCount: 7
    argNames:
    - node
    - str
    - kw
    - suf
    - index
    - flags
    - Num
    argTypes:
    - FormatNode*
    - char*
    - KeyWord*
    - KeySuffix*
    - int*
    - uint32
    - NUMDesc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1515
      start: 1374
    functionDepth: 3
    functionLinenumber: 1374
    functionLinenumberEnd: 1515
    functionName: parse_format
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 1
    functionsReached:
    - errmsg
    - pnstrdup
    - pg_mblen
    - index_seq_search
    - suff_search
    - ereport
    - elog
    - NUMDesc_prepare
    - is_separator_char
    - memcpy
    - errcode
    - isspace
    - strchr
    linkageType: ''
    returnType: void
    signature: "void parse_format(FormatNode *node, const char *str, const KeyWord
      *kw,\n\t\t\t const KeySuffix *suf, const int *index, uint32 flags, NUMDesc *Num)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _suf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1524
      start: 1523
    functionDepth: 0
    functionLinenumber: 1523
    functionLinenumberEnd: 1524
    functionName: DUMP_THth
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DUMP_THth(_suf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _suf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1525
      start: 1524
    functionDepth: 0
    functionLinenumber: 1524
    functionLinenumberEnd: 1525
    functionName: DUMP_FM
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DUMP_FM(_suf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1532,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1537,1
    - Dst: DUMP_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1538,1
    - Dst: DUMP_FM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1538,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1540,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1544,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1548,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - node
    - max
    argTypes:
    - FormatNode*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1550
      start: 1526
    functionDepth: 1
    functionLinenumber: 1526
    functionLinenumberEnd: 1550
    functionName: dump_node
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - DUMP_THth
    - elog
    - DUMP_FM
    linkageType: ''
    returnType: void
    signature: void dump_node(FormatNode *node, int max)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1565,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1569,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1570,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1571,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1572,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 2
    argNames:
    - num
    - type
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1600
      start: 1562
    functionDepth: 2
    functionLinenumber: 1562
    functionLinenumberEnd: 1600
    functionName: get_th
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - errmsg
    - isdigit
    - ereport
    - errcode
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      get_th(char *num, int type)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1611,1
    - Dst: strcat
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1612,1
    - Dst: get_th
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1612,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - dest
    - num
    - type
    argTypes:
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1614
      start: 1607
    functionDepth: 3
    functionLinenumber: 1607
    functionLinenumberEnd: 1614
    functionName: str_numth
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - strcat
    - get_th
    - strcpy
    linkageType: ''
    returnType: char
    signature: 'char *

      str_numth(char *dest, char *num, int type)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1645,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1651,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1652,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1653,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1655,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1658,1
    - Dst: asc_tolower
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1663,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1675,1
    - Dst: pg_strlower
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1677,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1682,1
    - Dst: pg_strlower
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1683,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1684,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1687,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 3
    argNames:
    - buff
    - nbytes
    - collid
    argTypes:
    - char*
    - size_t
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1692
      start: 1636
    functionDepth: 2
    functionLinenumber: 1636
    functionLinenumberEnd: 1692
    functionName: str_tolower
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 6
    functionsReached:
    - errmsg
    - Assert
    - ereport
    - errhint
    - asc_tolower
    - OidIsValid
    - repalloc
    - pg_strlower
    - palloc
    - errcode
    - pg_newlocale_from_collation
    linkageType: ''
    returnType: char
    signature: 'char *

      str_tolower(const char *buff, size_t nbytes, Oid collid)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1709,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1715,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1716,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1717,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1719,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1722,1
    - Dst: asc_toupper
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1727,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1739,1
    - Dst: pg_strupper
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1741,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1746,1
    - Dst: pg_strupper
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1747,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1748,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1751,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 3
    argNames:
    - buff
    - nbytes
    - collid
    argTypes:
    - char*
    - size_t
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1756
      start: 1700
    functionDepth: 2
    functionLinenumber: 1700
    functionLinenumberEnd: 1756
    functionName: str_toupper
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - asc_toupper
    - ereport
    - pg_strupper
    - errhint
    - OidIsValid
    - repalloc
    - palloc
    - errcode
    - pg_newlocale_from_collation
    linkageType: ''
    returnType: char
    signature: 'char *

      str_toupper(const char *buff, size_t nbytes, Oid collid)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1773,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1779,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1780,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1781,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1783,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1786,1
    - Dst: asc_initcap
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1791,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1803,1
    - Dst: pg_strtitle
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1805,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1810,1
    - Dst: pg_strtitle
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1811,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1812,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1815,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 3
    argNames:
    - buff
    - nbytes
    - collid
    argTypes:
    - char*
    - size_t
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1820
      start: 1764
    functionDepth: 2
    functionLinenumber: 1764
    functionLinenumberEnd: 1820
    functionName: str_initcap
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - ereport
    - errhint
    - OidIsValid
    - pg_strtitle
    - asc_initcap
    - palloc
    - repalloc
    - errcode
    - pg_newlocale_from_collation
    linkageType: ''
    returnType: char
    signature: 'char *

      str_initcap(const char *buff, size_t nbytes, Oid collid)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1837,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1843,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1844,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1845,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1847,1
    - Dst: GetDatabaseEncoding
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1850,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1851,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1852,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1853,1
    - Dst: pg_newlocale_from_collation
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1855,1
    - Dst: asc_tolower
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1860,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1872,1
    - Dst: pg_strfold
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1874,1
    - Dst: repalloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1879,1
    - Dst: pg_strfold
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1880,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1881,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1884,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 3
    argNames:
    - buff
    - nbytes
    - collid
    argTypes:
    - char*
    - size_t
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1889
      start: 1828
    functionDepth: 2
    functionLinenumber: 1828
    functionLinenumberEnd: 1889
    functionName: str_casefold
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - errmsg
    - Assert
    - GetDatabaseEncoding
    - ereport
    - pg_strfold
    - errhint
    - asc_tolower
    - OidIsValid
    - repalloc
    - palloc
    - errcode
    - pg_newlocale_from_collation
    linkageType: ''
    returnType: char
    signature: 'char *

      str_casefold(const char *buff, size_t nbytes, Oid collid)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pnstrdup
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1906,1
    - Dst: pg_ascii_tolower
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1909,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - buff
    - nbytes
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1912
      start: 1897
    functionDepth: 1
    functionLinenumber: 1897
    functionLinenumberEnd: 1912
    functionName: asc_tolower
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 2
    functionsReached:
    - pg_ascii_tolower
    - pnstrdup
    linkageType: ''
    returnType: char
    signature: 'char *

      asc_tolower(const char *buff, size_t nbytes)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pnstrdup
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1929,1
    - Dst: pg_ascii_toupper
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1932,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - buff
    - nbytes
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1935
      start: 1920
    functionDepth: 1
    functionLinenumber: 1920
    functionLinenumberEnd: 1935
    functionName: asc_toupper
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 1
    functionsReached:
    - pg_ascii_toupper
    - pnstrdup
    linkageType: ''
    returnType: char
    signature: 'char *

      asc_toupper(const char *buff, size_t nbytes)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pnstrdup
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1953,1
    - Dst: pg_ascii_tolower
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1960,1
    - Dst: pg_ascii_toupper
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1962,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 11
    argCount: 2
    argNames:
    - buff
    - nbytes
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1970
      start: 1943
    functionDepth: 1
    functionLinenumber: 1943
    functionLinenumberEnd: 1970
    functionName: asc_initcap
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 1
    functionsReached:
    - pg_ascii_toupper
    - pg_ascii_tolower
    - pnstrdup
    linkageType: ''
    returnType: char
    signature: 'char *

      asc_initcap(const char *buff, size_t nbytes)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_tolower
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1977,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1977,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buff
    - collid
    argTypes:
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1978
      start: 1974
    functionDepth: 3
    functionLinenumber: 1974
    functionLinenumberEnd: 1978
    functionName: str_tolower_z
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - str_tolower
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      str_tolower_z(const char *buff, Oid collid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_toupper
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1983,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1983,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buff
    - collid
    argTypes:
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1984
      start: 1980
    functionDepth: 3
    functionLinenumber: 1980
    functionLinenumberEnd: 1984
    functionName: str_toupper_z
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - str_toupper
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      str_toupper_z(const char *buff, Oid collid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_initcap
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1989,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1989,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buff
    - collid
    argTypes:
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1990
      start: 1986
    functionDepth: 3
    functionLinenumber: 1986
    functionLinenumberEnd: 1990
    functionName: str_initcap_z
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - str_initcap
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      str_initcap_z(const char *buff, Oid collid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: asc_tolower
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1995,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:1995,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buff
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1996
      start: 1992
    functionDepth: 2
    functionLinenumber: 1992
    functionLinenumberEnd: 1996
    functionName: asc_tolower_z
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - asc_tolower
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      asc_tolower_z(const char *buff)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: asc_toupper
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2001,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2001,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buff
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2002
      start: 1998
    functionDepth: 2
    functionLinenumber: 1998
    functionLinenumberEnd: 2002
    functionName: asc_toupper_z
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - asc_toupper
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      asc_toupper_z(const char *buff)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ptr
    - ','
    - _suf
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2021
      start: 2013
    functionDepth: 0
    functionLinenumber: 2013
    functionLinenumberEnd: 2021
    functionName: SKIP_THth
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SKIP_THth(ptr, _suf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2036,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2042,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2048,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2051,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - k
    - index
    argTypes:
    - KeyWord*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2053
      start: 2029
    functionDepth: 1
    functionLinenumber: 2029
    functionLinenumberEnd: 2053
    functionName: dump_index
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - elog
    linkageType: ''
    returnType: void
    signature: void dump_index(const KeyWord *k, const int *index)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: S_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2066,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2086,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 1
    argNames:
    - n
    argTypes:
    - FormatNode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2090
      start: 2060
    functionDepth: 1
    functionLinenumber: 2060
    functionLinenumberEnd: 2090
    functionName: is_next_separator
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - isdigit
    - S_THth
    linkageType: ''
    returnType: bool
    signature: bool is_next_separator(FormatNode *n)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - year
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2114
      start: 2093
    functionDepth: 0
    functionLinenumber: 2093
    functionLinenumberEnd: 2114
    functionName: adjust_partial_year_to_2020
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int adjust_partial_year_to_2020(int year)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2128
      start: 2117
    functionDepth: 0
    functionLinenumber: 2117
    functionLinenumberEnd: 2128
    functionName: strspace_len
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - isspace
    linkageType: ''
    returnType: int
    signature: int strspace_len(const char *str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2148,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2149,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2150,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2151,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - tmfc
    - mode
    - escontext
    argTypes:
    - TmFromChar*
    - FromCharDateMode
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2155
      start: 2139
    functionDepth: 2
    functionLinenumber: 2139
    functionLinenumberEnd: 2155
    functionName: from_char_set_mode
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - ereturn
    - errhint
    - errcode
    - errmsg
    linkageType: ''
    returnType: bool
    signature: "bool from_char_set_mode(TmFromChar *tmfc, const FromCharDateMode mode,\n\t\t\t\t
      \  Node *escontext)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2171,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2172,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2173,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2175,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 4
    argNames:
    - dest
    - value
    - node
    - escontext
    argTypes:
    - int*
    - int
    - FormatNode*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2179
      start: 2166
    functionDepth: 2
    functionLinenumber: 2166
    functionLinenumberEnd: 2179
    functionName: from_char_set_int
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - ereturn
    - errdetail
    - errcode
    - errmsg
    linkageType: ''
    returnType: bool
    signature: "bool from_char_set_int(int *dest, const int value, const FormatNode
      *node,\n\t\t\t\t  Node *escontext)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strspace_len
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2214,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2216,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2217,1
    - Dst: S_FM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2219,1
    - Dst: is_next_separator
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2219,1
    - Dst: strtol
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2228,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2240,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2241,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2242,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2244,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2246,1
    - Dst: strtol
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2250,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2254,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2255,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2256,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2258,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2260,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2267,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2268,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2269,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2271,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2274,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2275,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2276,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2278,1
    - Dst: from_char_set_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2283,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 5
    argNames:
    - dest
    - src
    - len
    - node
    - escontext
    argTypes:
    - int*
    - char**
    - int
    - FormatNode*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2288
      start: 2202
    functionDepth: 3
    functionLinenumber: 2202
    functionLinenumberEnd: 2288
    functionName: from_char_parse_int_len
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - errmsg
    - from_char_set_int
    - Assert
    - is_next_separator
    - S_FM
    - strtol
    - errhint
    - strlcpy
    - ereturn
    - strspace_len
    - errdetail
    - errcode
    linkageType: ''
    returnType: int
    signature: "int from_char_parse_int_len(int *dest, const char **src, const int
      len, FormatNode *node,\n\t\t\t\t\t\tNode *escontext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: from_char_parse_int_len
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - dest
    - src
    - node
    - escontext
    argTypes:
    - int*
    - char**
    - FormatNode*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2304
      start: 2299
    functionDepth: 4
    functionLinenumber: 2299
    functionLinenumberEnd: 2304
    functionName: from_char_parse_int
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - from_char_parse_int_len
    linkageType: ''
    returnType: int
    signature: "int from_char_parse_int(int *dest, const char **src, FormatNode *node,\n\t\t\t\t\tNode
      *escontext)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pg_ascii_tolower
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2330,1
    - Dst: pg_ascii_tolower
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2338,1
    - Dst: pg_ascii_tolower
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2354,1
    - Dst: pg_ascii_tolower
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2355,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 3
    argNames:
    - name
    - array
    - len
    argTypes:
    - char*
    - char**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2361
      start: 2317
    functionDepth: 1
    functionLinenumber: 2317
    functionLinenumberEnd: 2361
    functionName: seq_search_ascii
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - pg_ascii_tolower
    linkageType: ''
    returnType: int
    signature: int seq_search_ascii(const char *name, const char *const *array, int
      *len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2393,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2395,1
    - Dst: str_toupper
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2406,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2406,1
    - Dst: str_tolower
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2407,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2407,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2408,1
    - Dst: str_toupper
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2417,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2417,1
    - Dst: str_tolower
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2418,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2418,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2420,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2421,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2424,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2427,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2428,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2431,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2434,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 4
    argNames:
    - name
    - array
    - len
    - collid
    argTypes:
    - char*
    - char**
    - int*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2436
      start: 2374
    functionDepth: 3
    functionLinenumber: 2374
    functionLinenumberEnd: 2436
    functionName: seq_search_localized
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - str_toupper
    - pfree
    - str_tolower
    - strncmp
    - strlen
    linkageType: ''
    returnType: int
    signature: int seq_search_localized(const char *name, char **array, int *len,
      Oid collid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: seq_search_ascii
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2466,1
    - Dst: seq_search_localized
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2468,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2476,1
    - Dst: scanner_isspace
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2481,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2488,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2489,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2490,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2492,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 7
    argNames:
    - dest
    - src
    - array
    - localized_array
    - collid
    - node
    - escontext
    argTypes:
    - int*
    - char**
    - char**
    - char**
    - Oid
    - FormatNode*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2497
      start: 2458
    functionDepth: 4
    functionLinenumber: 2458
    functionLinenumberEnd: 2497
    functionName: from_char_seq_search
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - errmsg
    - seq_search_localized
    - pstrdup
    - scanner_isspace
    - seq_search_ascii
    - ereturn
    - errdetail
    - errcode
    linkageType: ''
    returnType: bool
    signature: "bool from_char_seq_search(int *dest, const char **src, const char
      *const *array,\n\t\t\t\t\t char **localized_array, Oid collid,\n\t\t\t\t\t FormatNode
      *node, Node *escontext)"
  - BBCount: 134
    BranchProfiles: []
    Callsites:
    - Dst: cache_locale_time
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2513,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2520,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2521,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2529,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2531,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2535,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2537,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2541,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2543,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2547,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2549,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2558,1
    - Dst: S_FM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2558,1
    - Dst: S_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2562,1
    - Dst: str_numth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2563,1
    - Dst: S_TH_TYPE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2563,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2564,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2567,1
    - Dst: S_FM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2567,1
    - Dst: S_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2569,1
    - Dst: str_numth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2570,1
    - Dst: S_TH_TYPE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2570,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2571,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2574,1
    - Dst: S_FM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2574,1
    - Dst: S_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2576,1
    - Dst: str_numth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2577,1
    - Dst: S_TH_TYPE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2577,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2578,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2581,1
    - Dst: S_FM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2581,1
    - Dst: S_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2583,1
    - Dst: str_numth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2584,1
    - Dst: S_TH_TYPE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2584,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2585,1
    - Dst: DCH_to_char_fsec
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2595,1
    - Dst: DCH_to_char_fsec
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2598,1
    - Dst: DCH_to_char_fsec
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2602,1
    - Dst: DCH_to_char_fsec
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2605,1
    - Dst: DCH_to_char_fsec
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2608,1
    - Dst: DCH_to_char_fsec
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2612,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2616,1
    - Dst: S_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2620,1
    - Dst: str_numth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2621,1
    - Dst: S_TH_TYPE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2621,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2622,1
    - Dst: tmtcTzn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2626,1
    - Dst: asc_tolower_z
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2629,1
    - Dst: tmtcTzn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2629,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2631,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2632,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2633,1
    - Dst: tmtcTzn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2638,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2640,1
    - Dst: tmtcTzn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2640,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2641,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2646,1
    - Dst: abs
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2648,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2649,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2653,1
    - Dst: abs
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2654,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2655,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2659,1
    - Dst: S_FM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2661,1
    - Dst: abs
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2662,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2663,1
    - Dst: abs
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2664,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2666,1
    - Dst: abs
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2667,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2668,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2674,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2675,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2680,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2681,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2686,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2687,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2692,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2693,1
    - Dst: S_TM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2699,1
    - Dst: str_toupper_z
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2701,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2703,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2704,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2706,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2707,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2708,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2711,1
    - Dst: S_FM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2711,1
    - Dst: asc_toupper_z
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2712,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2713,1
    - Dst: S_TM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2719,1
    - Dst: str_initcap_z
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2721,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2723,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2724,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2726,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2727,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2728,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2731,1
    - Dst: S_FM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2731,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2733,1
    - Dst: S_TM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2739,1
    - Dst: str_tolower_z
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2741,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2743,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2744,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2746,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2747,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2748,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2751,1
    - Dst: S_FM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2751,1
    - Dst: asc_tolower_z
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2752,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2753,1
    - Dst: S_TM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2759,1
    - Dst: str_toupper_z
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2761,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2763,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2764,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2766,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2767,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2768,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2771,1
    - Dst: asc_toupper_z
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2771,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2772,1
    - Dst: S_TM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2778,1
    - Dst: str_initcap_z
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2780,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2782,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2783,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2785,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2786,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2787,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2790,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2791,1
    - Dst: S_TM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2797,1
    - Dst: str_tolower_z
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2799,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2801,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2802,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2804,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2805,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2806,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2809,1
    - Dst: asc_tolower_z
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2809,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2810,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2813,1
    - Dst: S_FM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2813,1
    - Dst: S_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2815,1
    - Dst: str_numth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2816,1
    - Dst: S_TH_TYPE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2816,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2817,1
    - Dst: S_TM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2821,1
    - Dst: str_toupper_z
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2823,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2825,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2826,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2828,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2829,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2830,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2833,1
    - Dst: S_FM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2833,1
    - Dst: asc_toupper_z
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2834,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2835,1
    - Dst: S_TM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2839,1
    - Dst: str_initcap_z
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2841,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2843,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2844,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2846,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2847,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2848,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2851,1
    - Dst: S_FM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2851,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2853,1
    - Dst: S_TM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2857,1
    - Dst: str_tolower_z
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2859,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2861,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2862,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2864,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2865,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2866,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2869,1
    - Dst: S_FM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2869,1
    - Dst: asc_tolower_z
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2870,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2871,1
    - Dst: S_TM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2875,1
    - Dst: str_toupper_z
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2877,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2879,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2880,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2882,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2883,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2884,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2887,1
    - Dst: asc_toupper_z
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2887,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2888,1
    - Dst: S_TM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2892,1
    - Dst: str_initcap_z
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2894,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2896,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2897,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2899,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2900,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2901,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2904,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2905,1
    - Dst: S_TM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2909,1
    - Dst: str_tolower_z
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2911,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2913,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2914,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2916,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2917,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2918,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2921,1
    - Dst: asc_tolower_z
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2921,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2922,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2926,1
    - Dst: S_FM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2926,1
    - Dst: date2isoyearday
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2929,1
    - Dst: S_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2930,1
    - Dst: str_numth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2931,1
    - Dst: S_TH_TYPE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2931,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2932,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2935,1
    - Dst: S_FM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2935,1
    - Dst: S_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2936,1
    - Dst: str_numth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2937,1
    - Dst: S_TH_TYPE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2937,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2938,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2942,1
    - Dst: S_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2943,1
    - Dst: str_numth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2944,1
    - Dst: S_TH_TYPE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2944,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2945,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2949,1
    - Dst: S_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2950,1
    - Dst: str_numth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2951,1
    - Dst: S_TH_TYPE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2951,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2952,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2955,1
    - Dst: S_FM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2955,1
    - Dst: S_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2957,1
    - Dst: str_numth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2958,1
    - Dst: S_TH_TYPE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2958,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2959,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2962,1
    - Dst: S_FM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2962,1
    - Dst: date2isoweek
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2963,1
    - Dst: S_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2964,1
    - Dst: str_numth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2965,1
    - Dst: S_TH_TYPE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2965,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2966,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2971,1
    - Dst: S_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2972,1
    - Dst: str_numth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2973,1
    - Dst: S_TH_TYPE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2973,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2974,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2989,1
    - Dst: S_FM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2989,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2991,1
    - Dst: S_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2992,1
    - Dst: str_numth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2993,1
    - Dst: S_TH_TYPE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2993,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2994,1
    - Dst: ADJUST_YEAR
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2997,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2998,1
    - Dst: ADJUST_YEAR
      Src: /src/postgres/src/backend/utils/adt/formatting.c:2999,1
    - Dst: S_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3000,1
    - Dst: str_numth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3001,1
    - Dst: S_TH_TYPE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3001,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3002,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3006,1
    - Dst: S_FM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3007,1
    - Dst: ADJUST_YEAR
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3008,1
    - Dst: ADJUST_YEAR
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3010,1
    - Dst: ADJUST_YEAR
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3011,1
    - Dst: date2isoyear
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3011,1
    - Dst: S_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3015,1
    - Dst: str_numth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3016,1
    - Dst: S_TH_TYPE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3016,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3017,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3021,1
    - Dst: S_FM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3022,1
    - Dst: ADJUST_YEAR
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3023,1
    - Dst: ADJUST_YEAR
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3025,1
    - Dst: ADJUST_YEAR
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3026,1
    - Dst: date2isoyear
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3026,1
    - Dst: S_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3030,1
    - Dst: str_numth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3031,1
    - Dst: S_TH_TYPE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3031,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3032,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3036,1
    - Dst: S_FM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3037,1
    - Dst: ADJUST_YEAR
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3038,1
    - Dst: ADJUST_YEAR
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3040,1
    - Dst: ADJUST_YEAR
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3041,1
    - Dst: date2isoyear
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3041,1
    - Dst: S_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3045,1
    - Dst: str_numth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3046,1
    - Dst: S_TH_TYPE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3046,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3047,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3051,1
    - Dst: ADJUST_YEAR
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3053,1
    - Dst: ADJUST_YEAR
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3054,1
    - Dst: date2isoyear
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3054,1
    - Dst: S_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3058,1
    - Dst: str_numth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3059,1
    - Dst: S_TH_TYPE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3059,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3060,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3114,1
    - Dst: S_FM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3114,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3116,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3120,1
    - Dst: S_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3121,1
    - Dst: str_numth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3122,1
    - Dst: S_TH_TYPE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3122,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3123,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3126,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3126,1
    - Dst: S_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3127,1
    - Dst: str_numth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3128,1
    - Dst: S_TH_TYPE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3128,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3129,1
    CyclomaticComplexity: 129
    EdgeCount: 129
    ICount: 407
    argCount: 5
    argNames:
    - node
    - is_interval
    - in
    - out
    - collid
    argTypes:
    - FormatNode*
    - bool
    - TmToChar*
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3135
      start: 2504
    functionDepth: 4
    functionLinenumber: 2504
    functionLinenumberEnd: 3135
    functionName: DCH_to_char
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - date2j
    - S_TH_TYPE
    - sprintf
    - strlen
    - pfree
    - cache_locale_time
    - S_FM
    - asc_toupper_z
    - strcpy
    - errmsg
    - str_numth
    - tmtcTzn
    - str_initcap_z
    - date2isoyear
    - DCH_to_char_fsec
    - asc_tolower_z
    - S_THth
    - str_toupper_z
    - date2isoweek
    - date2isoyearday
    - str_tolower_z
    - S_TM
    - ADJUST_YEAR
    - ereport
    - abs
    - errcode
    linkageType: ''
    returnType: void
    signature: void DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in,
      char *out, Oid collid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - frac_fmt
    - ','
    - frac_val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2593
      start: 2588
    functionDepth: 0
    functionLinenumber: 2588
    functionLinenumberEnd: 2593
    functionName: DCH_to_char_fsec
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DCH_to_char_fsec(frac_fmt, frac_val)
  - BBCount: 147
    BranchProfiles: []
    Callsites:
    - Dst: cache_locale_time
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3165,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3176,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3191,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3196,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3197,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3198,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3210,1
    - Dst: is_separator_char
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3210,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3224,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3246,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3250,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3256,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3257,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3258,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3259,1
    - Dst: from_char_set_mode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3267,1
    - Dst: from_char_seq_search
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3279,1
    - Dst: from_char_set_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3283,1
    - Dst: from_char_seq_search
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3291,1
    - Dst: from_char_set_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3295,1
    - Dst: from_char_parse_int_len
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3301,1
    - Dst: SKIP_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3304,1
    - Dst: from_char_parse_int_len
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3307,1
    - Dst: SKIP_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3309,1
    - Dst: from_char_parse_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3312,1
    - Dst: SKIP_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3314,1
    - Dst: from_char_parse_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3317,1
    - Dst: SKIP_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3319,1
    - Dst: from_char_parse_int_len
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3322,1
    - Dst: SKIP_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3332,1
    - Dst: from_char_parse_int_len
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3343,1
    - Dst: SKIP_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3355,1
    - Dst: from_char_parse_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3358,1
    - Dst: SKIP_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3360,1
    - Dst: DecodeTimezoneAbbrevPrefix
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3367,1
    - Dst: pnstrdup
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3375,1
    - Dst: isalpha
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3380,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3388,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3389,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3390,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3392,1
    - Dst: from_char_parse_int_len
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3412,1
    - Dst: from_char_parse_int_len
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3417,1
    - Dst: from_char_parse_int_len
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3444,1
    - Dst: from_char_parse_int_len
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3451,1
    - Dst: from_char_seq_search
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3458,1
    - Dst: from_char_set_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3462,1
    - Dst: from_char_seq_search
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3469,1
    - Dst: from_char_set_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3473,1
    - Dst: from_char_seq_search
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3479,1
    - Dst: S_TM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3480,1
    - Dst: from_char_set_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3484,1
    - Dst: from_char_seq_search
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3490,1
    - Dst: S_TM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3491,1
    - Dst: from_char_set_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3495,1
    - Dst: from_char_parse_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3499,1
    - Dst: SKIP_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3501,1
    - Dst: from_char_seq_search
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3506,1
    - Dst: S_TM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3507,1
    - Dst: from_char_set_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3511,1
    - Dst: from_char_seq_search
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3518,1
    - Dst: S_TM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3519,1
    - Dst: from_char_set_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3523,1
    - Dst: from_char_parse_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3528,1
    - Dst: SKIP_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3530,1
    - Dst: from_char_parse_int_len
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3533,1
    - Dst: SKIP_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3535,1
    - Dst: from_char_parse_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3538,1
    - Dst: SKIP_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3540,1
    - Dst: from_char_parse_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3543,1
    - Dst: SKIP_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3545,1
    - Dst: from_char_parse_int_len
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3548,1
    - Dst: SKIP_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3553,1
    - Dst: from_char_parse_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3557,1
    - Dst: SKIP_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3559,1
    - Dst: from_char_parse_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3573,1
    - Dst: SKIP_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3575,1
    - Dst: from_char_parse_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3578,1
    - Dst: SKIP_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3580,1
    - Dst: sscanf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3589,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3591,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3592,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3593,1
    - Dst: pg_mul_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3597,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3598,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3599,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3600,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3601,1
    - Dst: from_char_set_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3603,1
    - Dst: SKIP_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3607,1
    - Dst: from_char_parse_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3612,1
    - Dst: SKIP_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3615,1
    - Dst: from_char_parse_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3619,1
    - Dst: adjust_partial_year_to_2020
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3623,1
    - Dst: SKIP_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3625,1
    - Dst: from_char_parse_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3629,1
    - Dst: adjust_partial_year_to_2020
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3633,1
    - Dst: SKIP_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3635,1
    - Dst: from_char_parse_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3639,1
    - Dst: adjust_partial_year_to_2020
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3643,1
    - Dst: SKIP_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3645,1
    - Dst: from_char_seq_search
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3649,1
    - Dst: from_char_set_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3653,1
    - Dst: from_char_parse_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3658,1
    - Dst: SKIP_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3660,1
    - Dst: from_char_parse_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3663,1
    - Dst: SKIP_THth
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3665,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3673,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3688,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3689,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3690,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3692,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3696,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3697,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3698,1
    CyclomaticComplexity: 139
    EdgeCount: 139
    ICount: 347
    argCount: 6
    argNames:
    - node
    - in
    - out
    - collid
    - std
    - escontext
    argTypes:
    - FormatNode*
    - char*
    - TmFromChar*
    - Oid
    - bool
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3700
      start: 3151
    functionDepth: 5
    functionLinenumber: 3151
    functionLinenumberEnd: 3700
    functionName: DCH_from_char
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - errcode
    - pg_mul_s32_overflow
    - pg_mblen
    - SKIP_THth
    - errdetail
    - from_char_seq_search
    - cache_locale_time
    - from_char_set_mode
    - is_separator_char
    - errmsg
    - from_char_set_int
    - pnstrdup
    - adjust_partial_year_to_2020
    - from_char_parse_int
    - from_char_parse_int_len
    - ereturn
    - isspace
    - strncmp
    - Assert
    - isalpha
    - S_TM
    - sscanf
    - pg_add_s32_overflow
    - DecodeTimezoneAbbrevPrefix
    linkageType: ''
    returnType: void
    signature: "void DCH_from_char(FormatNode *node, const char *in, TmFromChar *out,\n\t\t\t
      \ Oid collid, bool std, Node *escontext)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3718
      start: 3709
    functionDepth: 0
    functionLinenumber: 3709
    functionLinenumberEnd: 3718
    functionName: DCH_prevent_counter_overflow
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DCH_prevent_counter_overflow(void)
  - BBCount: 72
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 85
    argCount: 1
    argNames:
    - node
    argTypes:
    - FormatNode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3817
      start: 3723
    functionDepth: 0
    functionLinenumber: 3723
    functionLinenumberEnd: 3817
    functionName: DCH_datetime_type
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int DCH_datetime_type(FormatNode *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DCH_prevent_counter_overflow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3826,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3836,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3853,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3856,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3864,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3866,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3868,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3870,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 2
    argNames:
    - str
    - std
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3877
      start: 3820
    functionDepth: 1
    functionLinenumber: 3820
    functionLinenumberEnd: 3877
    functionName: DCH_cache_getnew
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextAllocZero
    - elog
    - strlcpy
    - DCH_prevent_counter_overflow
    linkageType: ''
    returnType: DCHCacheEntry
    signature: 'DCHCacheEntry *

      DCH_cache_getnew(const char *str, bool std)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DCH_prevent_counter_overflow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3884,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3890,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - str
    - std
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3898
      start: 3880
    functionDepth: 1
    functionLinenumber: 3880
    functionLinenumberEnd: 3898
    functionName: DCH_cache_search
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - strcmp
    - DCH_prevent_counter_overflow
    linkageType: ''
    returnType: DCHCacheEntry
    signature: 'DCHCacheEntry *

      DCH_cache_search(const char *str, bool std)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DCH_cache_search
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3906,1
    - Dst: DCH_cache_getnew
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3913,1
    - Dst: parse_format
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3915,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - str
    - std
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3921
      start: 3901
    functionDepth: 4
    functionLinenumber: 3901
    functionLinenumberEnd: 3921
    functionName: DCH_cache_fetch
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - DCH_cache_search
    - parse_format
    - DCH_cache_getnew
    linkageType: ''
    returnType: DCHCacheEntry
    signature: 'DCHCacheEntry *

      DCH_cache_fetch(const char *str, bool std)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3941,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3942,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3947,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3958,1
    - Dst: parse_format
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3960,1
    - Dst: DCH_cache_fetch
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3968,1
    - Dst: DCH_to_char
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3975,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3978,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3980,1
    - Dst: cstring_to_text
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3983,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/formatting.c:3985,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 4
    argNames:
    - tmtc
    - fmt
    - is_interval
    - collid
    argTypes:
    - TmToChar*
    - text*
    - bool
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3987
      start: 3928
    functionDepth: 5
    functionLinenumber: 3928
    functionLinenumberEnd: 3987
    functionName: datetime_to_char_body
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - pfree
    - parse_format
    - DCH_to_char
    - palloc
    - cstring_to_text
    - text_to_cstring
    - strlen
    - DCH_cache_fetch
    linkageType: ''
    returnType: text
    signature: 'text *

      datetime_to_char_body(TmToChar *tmtc, text *fmt, bool is_interval, Oid collid)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4000,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4001,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4008,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4008,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4009,1
    - Dst: ZERO_tmtc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4011,1
    - Dst: tmtcTm
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4012,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4014,1
    - Dst: tmtcFsec
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4014,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4015,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4016,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4017,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4020,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4022,1
    - Dst: COPY_tm
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4024,1
    - Dst: datetime_to_char_body
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4026,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4026,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4027,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4029,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4030
      start: 3997
    functionDepth: 6
    functionLinenumber: 3997
    functionLinenumberEnd: 4030
    functionName: timestamp_to_char
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - datetime_to_char_body
    - PG_GET_COLLATION
    - timestamp2tm
    - PG_GETARG_TEXT_PP
    - TIMESTAMP_NOT_FINITE
    - ereport
    - tmtcTm
    - PG_RETURN_NULL
    - ZERO_tmtc
    - date2j
    - tmtcFsec
    - PG_RETURN_TEXT_P
    - VARSIZE_ANY_EXHDR
    - COPY_tm
    - PG_GETARG_TIMESTAMP
    linkageType: ''
    returnType: Datum
    signature: Datum timestamp_to_char(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4035,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4036,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4044,1
    - Dst: TIMESTAMP_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4044,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4045,1
    - Dst: ZERO_tmtc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4047,1
    - Dst: tmtcTm
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4048,1
    - Dst: timestamp2tm
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4050,1
    - Dst: tmtcFsec
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4050,1
    - Dst: tmtcTzn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4050,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4051,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4052,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4053,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4056,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4058,1
    - Dst: COPY_tm
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4060,1
    - Dst: datetime_to_char_body
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4062,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4062,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4063,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4065,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4066
      start: 4032
    functionDepth: 6
    functionLinenumber: 4032
    functionLinenumberEnd: 4066
    functionName: timestamptz_to_char
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - errmsg
    - errcode
    - tmtcTzn
    - datetime_to_char_body
    - PG_GET_COLLATION
    - timestamp2tm
    - PG_GETARG_TEXT_PP
    - TIMESTAMP_NOT_FINITE
    - ereport
    - tmtcTm
    - PG_RETURN_NULL
    - ZERO_tmtc
    - date2j
    - tmtcFsec
    - PG_RETURN_TEXT_P
    - VARSIZE_ANY_EXHDR
    - COPY_tm
    - PG_GETARG_TIMESTAMP
    linkageType: ''
    returnType: Datum
    signature: Datum timestamptz_to_char(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INTERVAL_P
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4076,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4077,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4084,1
    - Dst: INTERVAL_NOT_FINITE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4084,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4085,1
    - Dst: ZERO_tmtc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4087,1
    - Dst: tmtcTm
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4088,1
    - Dst: interval2itm
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4090,1
    - Dst: datetime_to_char_body
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4102,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4102,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4103,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4105,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4106
      start: 4073
    functionDepth: 6
    functionLinenumber: 4073
    functionLinenumberEnd: 4106
    functionName: interval_to_char
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - datetime_to_char_body
    - PG_GET_COLLATION
    - PG_GETARG_TEXT_PP
    - tmtcTm
    - PG_RETURN_NULL
    - INTERVAL_NOT_FINITE
    - PG_GETARG_INTERVAL_P
    - ZERO_tmtc
    - interval2itm
    - VARSIZE_ANY_EXHDR
    - PG_RETURN_TEXT_P
    linkageType: ''
    returnType: Datum
    signature: Datum interval_to_char(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4118,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4119,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4120,1
    - Dst: do_to_timestamp
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4128,1
    - Dst: DetermineTimeZoneOffset
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4135,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4137,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4138,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4139,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4140,1
    - Dst: AdjustTimestampForTypmod
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4144,1
    - Dst: PG_RETURN_TIMESTAMP
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4146,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4147
      start: 4115
    functionDepth: 3
    functionLinenumber: 4115
    functionLinenumberEnd: 4147
    functionName: to_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 1
    functionsReached:
    - errmsg
    - PG_RETURN_TIMESTAMP
    - DetermineTimeZoneOffset
    - PG_GETARG_TEXT_PP
    - tm2timestamp
    - ereport
    - AdjustTimestampForTypmod
    - do_to_timestamp
    - PG_GET_COLLATION
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum to_timestamp(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4157,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4158,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4159,1
    - Dst: do_to_timestamp
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4165,1
    - Dst: IS_VALID_JULIAN
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4169,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4170,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4171,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4172,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4173,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4175,1
    - Dst: IS_VALID_DATE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4178,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4179,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4180,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4181,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4182,1
    - Dst: PG_RETURN_DATEADT
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4184,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4185
      start: 4154
    functionDepth: 2
    functionLinenumber: 4154
    functionLinenumberEnd: 4185
    functionName: to_date
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - errmsg
    - IS_VALID_JULIAN
    - text_to_cstring
    - PG_GETARG_TEXT_PP
    - ereport
    - IS_VALID_DATE
    - date2j
    - do_to_timestamp
    - PG_RETURN_DATEADT
    - PG_GET_COLLATION
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum to_date(PG_FUNCTION_ARGS)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: do_to_timestamp
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4213,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4238,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4240,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4241,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4242,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4245,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4246,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4247,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4248,1
    - Dst: AdjustTimestampForTypmod
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4250,1
    - Dst: TimestampTzGetDatum
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4253,1
    - Dst: tm2timestamp
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4259,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4260,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4261,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4262,1
    - Dst: AdjustTimestampForTypmod
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4264,1
    - Dst: TimestampGetDatum
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4267,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4274,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4275,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4276,1
    - Dst: IS_VALID_JULIAN
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4283,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4284,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4285,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4286,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4287,1
    - Dst: date2j
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4289,1
    - Dst: IS_VALID_DATE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4293,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4294,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4295,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4296,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4297,1
    - Dst: DateADTGetDatum
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4300,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4308,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4321,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4323,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4324,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4325,1
    - Dst: tm2timetz
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4328,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4329,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4330,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4331,1
    - Dst: AdjustTimeForTypmod
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4333,1
    - Dst: TimeTzADTPGetDatum
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4336,1
    - Dst: tm2time
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4342,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4343,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4344,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4345,1
    - Dst: AdjustTimeForTypmod
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4347,1
    - Dst: TimeADTGetDatum
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4350,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4355,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4356,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4357,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 62
    argCount: 8
    argNames:
    - date_txt
    - fmt
    - collid
    - strict
    - typid
    - typmod
    - tz
    - escontext
    argTypes:
    - text*
    - text*
    - Oid
    - bool
    - Oid*
    - int32*
    - int*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4359
      start: 4202
    functionDepth: 3
    functionLinenumber: 4202
    functionLinenumberEnd: 4359
    functionName: parse_datetime
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - TimeADTGetDatum
    - TimeTzADTPGetDatum
    - date2j
    - do_to_timestamp
    - text_to_cstring
    - IS_VALID_JULIAN
    - TimestampTzGetDatum
    - tm2timetz
    - errmsg
    - AdjustTimeForTypmod
    - AdjustTimestampForTypmod
    - IS_VALID_DATE
    - DateADTGetDatum
    - ereturn
    - palloc
    - Assert
    - tm2timestamp
    - TimestampGetDatum
    - tm2time
    - errcode
    linkageType: ''
    returnType: Datum
    signature: "Datum parse_datetime(text *date_txt, text *fmt, Oid collid, bool strict,\n\t\t\t
      \  Oid *typid, int32 *typmod, int *tz,\n\t\t\t   Node *escontext)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4369,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4381,1
    - Dst: parse_format
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4383,1
    - Dst: DCH_cache_fetch
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4391,1
    - Dst: DCH_datetime_type
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4397,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4400,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - fmt_str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4403
      start: 4365
    functionDepth: 5
    functionLinenumber: 4365
    functionLinenumberEnd: 4403
    functionName: datetime_format_has_tz
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - pfree
    - parse_format
    - DCH_datetime_type
    - palloc
    - strlen
    - DCH_cache_fetch
    linkageType: ''
    returnType: bool
    signature: bool datetime_format_has_tz(const char *fmt_str)
  - BBCount: 59
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4440,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4441,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4443,1
    - Dst: ZERO_tmfc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4445,1
    - Dst: ZERO_tm
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4446,1
    - Dst: VARSIZE_ANY_EXHDR
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4455,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4461,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4469,1
    - Dst: parse_format
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4471,1
    - Dst: DCH_cache_fetch
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4479,1
    - Dst: DCH_from_char
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4490,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4491,1
    - Dst: SOFT_ERROR_OCCURRED
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4492,1
    - Dst: DCH_datetime_type
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4496,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4500,1
    - Dst: DEBUG_TMFC
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4505,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4532,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4533,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4534,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4536,1
    - Dst: pg_mul_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4567,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4568,1
    - Dst: DateTimeParseError
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4570,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4571,1
    - Dst: pg_mul_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4580,1
    - Dst: pg_sub_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4581,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4582,1
    - Dst: DateTimeParseError
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4584,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4585,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4607,1
    - Dst: pg_mul_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4618,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4619,1
    - Dst: DateTimeParseError
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4621,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4622,1
    - Dst: pg_mul_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4631,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4632,1
    - Dst: DateTimeParseError
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4634,1
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4635,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4640,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4645,1
    - Dst: isoweekdate2date
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4658,1
    - Dst: isoweek2date
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4660,1
    - Dst: pg_sub_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4666,1
    - Dst: pg_mul_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4667,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4668,1
    - Dst: DateTimeParseError
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4670,1
    - Dst: pg_sub_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4680,1
    - Dst: pg_mul_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4681,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4682,1
    - Dst: DateTimeParseError
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4684,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4692,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4697,1
    - Dst: errsave
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4711,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4712,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4713,1
    - Dst: isoweek2j
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4721,1
    - Dst: j2date
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4723,1
    - Dst: isleap
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4735,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4748,1
    - Dst: DTK_M
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4748,1
    - Dst: pg_mul_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4757,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4758,1
    - Dst: DateTimeParseError
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4760,1
    - Dst: ValidateDate
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4774,1
    - Dst: DateTimeParseError
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4783,1
    - Dst: INT64CONST
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4793,1
    - Dst: DateTimeParseError
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4795,1
    - Dst: DateTimeParseError
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4811,1
    - Dst: DetermineTimeZoneAbbrevOffset
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4834,1
    - Dst: DEBUG_TM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4839,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4842,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4843,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4849,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4850,1
    CyclomaticComplexity: 102
    EdgeCount: 102
    ICount: 220
    argCount: 10
    argNames:
    - date_txt
    - fmt
    - collid
    - std
    - tm
    - fsec
    - tz
    - fprec
    - flags
    - escontext
    argTypes:
    - text*
    - text*
    - Oid
    - bool
    - struct pg_tm*
    - fsec_t*
    - struct fmt_tz*
    - int*
    - uint32*
    - Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4853
      start: 4428
    functionDepth: 6
    functionLinenumber: 4428
    functionLinenumberEnd: 4853
    functionName: do_to_timestamp
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 3
    functionsReached:
    - pg_mul_s32_overflow
    - isoweek2j
    - DEBUG_TMFC
    - errhint
    - DCH_datetime_type
    - DEBUG_TM
    - text_to_cstring
    - DTK_M
    - DCH_cache_fetch
    - isoweek2date
    - pfree
    - parse_format
    - DateTimeParseError
    - ZERO_tmfc
    - DetermineTimeZoneAbbrevOffset
    - pg_sub_s32_overflow
    - DCH_from_char
    - errmsg
    - SOFT_ERROR_OCCURRED
    - ZERO_tm
    - errsave
    - j2date
    - VARSIZE_ANY_EXHDR
    - palloc
    - ValidateDate
    - Assert
    - isoweekdate2date
    - pg_add_s32_overflow
    - isleap
    - INT64CONST
    - errcode
    linkageType: ''
    returnType: bool
    signature: "bool do_to_timestamp(text *date_txt, text *fmt, Oid collid, bool std,\n\t\t\t\tstruct
      pg_tm *tm, fsec_t *fsec, struct fmt_tz *tz,\n\t\t\t\tint *fprec, uint32 *flags,
      Node *escontext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4864,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - str
    - c
    - max
    argTypes:
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4867
      start: 4861
    functionDepth: 0
    functionLinenumber: 4861
    functionLinenumberEnd: 4867
    functionName: fill_str
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: char
    signature: 'char *

      fill_str(char *str, int c, int max)'
  - 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: 4869
    functionDepth: 0
    functionLinenumber: 4869
    functionLinenumberEnd: 4881
    functionName: zeroize_NUM
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: zeroize_NUM(_n)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4892
      start: 4883
    functionDepth: 0
    functionLinenumber: 4883
    functionLinenumberEnd: 4892
    functionName: NUM_prevent_counter_overflow
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NUM_prevent_counter_overflow(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: NUM_prevent_counter_overflow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4901,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4911,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4928,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4931,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4939,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4941,1
    - Dst: MemoryContextAllocZero
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4943,1
    - Dst: strlcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4945,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4951
      start: 4895
    functionDepth: 1
    functionLinenumber: 4895
    functionLinenumberEnd: 4951
    functionName: NUM_cache_getnew
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - Assert
    - MemoryContextAllocZero
    - NUM_prevent_counter_overflow
    - elog
    - strlcpy
    linkageType: ''
    returnType: NUMCacheEntry
    signature: 'NUMCacheEntry *

      NUM_cache_getnew(const char *str)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NUM_prevent_counter_overflow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4958,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4964,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4972
      start: 4954
    functionDepth: 1
    functionLinenumber: 4954
    functionLinenumberEnd: 4972
    functionName: NUM_cache_search
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - strcmp
    - NUM_prevent_counter_overflow
    linkageType: ''
    returnType: NUMCacheEntry
    signature: 'NUMCacheEntry *

      NUM_cache_search(const char *str)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NUM_cache_search
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4980,1
    - Dst: NUM_cache_getnew
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4987,1
    - Dst: zeroize_NUM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4989,1
    - Dst: parse_format
      Src: /src/postgres/src/backend/utils/adt/formatting.c:4991,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4997
      start: 4975
    functionDepth: 4
    functionLinenumber: 4975
    functionLinenumberEnd: 4997
    functionName: NUM_cache_fetch
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - NUM_cache_search
    - parse_format
    - NUM_cache_getnew
    - zeroize_NUM
    linkageType: ''
    returnType: NUMCacheEntry
    signature: 'NUMCacheEntry *

      NUM_cache_fetch(const char *str)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: text_to_cstring
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5009,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5017,1
    - Dst: zeroize_NUM
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5021,1
    - Dst: parse_format
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5023,1
    - Dst: NUM_cache_fetch
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5031,1
    - Dst: dump_index
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5053,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5056,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 4
    argNames:
    - len
    - Num
    - pars_str
    - shouldFree
    argTypes:
    - int
    - NUMDesc*
    - text*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5058
      start: 5003
    functionDepth: 5
    functionLinenumber: 5003
    functionLinenumberEnd: 5058
    functionName: NUM_cache
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - pfree
    - parse_format
    - NUM_cache_fetch
    - dump_index
    - palloc
    - text_to_cstring
    - zeroize_NUM
    linkageType: ''
    returnType: FormatNode
    signature: 'FormatNode *

      NUM_cache(int len, NUMDesc *Num, text *pars_str, bool *shouldFree)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5075,1
    - Dst: fill_str
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5085,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5090,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5091,1
    - Dst: strcat
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5103,1
    - Dst: strcat
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5106,1
    - Dst: strcat
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5109,1
    - Dst: strcat
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5112,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 1
    argNames:
    - number
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5117
      start: 5066
    functionDepth: 1
    functionLinenumber: 5066
    functionLinenumberEnd: 5117
    functionName: int_to_roman
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - strcat
    - Assert
    - fill_str
    - snprintf
    - palloc
    linkageType: ''
    returnType: char
    signature: 'char *

      int_to_roman(int number)'
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5144,1
    - Dst: pg_ascii_toupper
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5155,1
    - Dst: ROMAN_VAL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5156,1
    - Dst: ROMAN_VAL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5185,1
    - Dst: ROMAN_VAL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5186,1
    - Dst: ROMAN_VAL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5187,1
    - Dst: IS_VALID_SUB_COMB
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5209,1
    - Dst: ROMAN_VAL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5224,1
    - Dst: ROMAN_VAL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5225,1
    - Dst: ROMAN_VAL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5226,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 56
    argCount: 2
    argNames:
    - Np
    - input_len
    argTypes:
    - NUMProc*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5269
      start: 5126
    functionDepth: 1
    functionLinenumber: 5126
    functionLinenumberEnd: 5269
    functionName: roman_to_int
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - isspace
    - IS_VALID_SUB_COMB
    - pg_ascii_toupper
    - ROMAN_VAL
    linkageType: ''
    returnType: int
    signature: int roman_to_int(NUMProc *Np, int input_len)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PGLC_localeconv
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5286,1
    - Dst: IS_LDECIMAL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5310,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5323,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 29
    argCount: 1
    argNames:
    - Np
    argTypes:
    - NUMProc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5348
      start: 5276
    functionDepth: 1
    functionLinenumber: 5276
    functionLinenumberEnd: 5348
    functionName: NUM_prepare_locale
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - strcmp
    - PGLC_localeconv
    - IS_LDECIMAL
    linkageType: ''
    returnType: void
    signature: void NUM_prepare_locale(NUMProc *Np)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5362,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5365,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - num
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5380
      start: 5358
    functionDepth: 1
    functionLinenumber: 5358
    functionLinenumberEnd: 5380
    functionName: get_last_relevant_decnum
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - elog
    - strchr
    linkageType: ''
    returnType: char
    signature: 'char *

      get_last_relevant_decnum(char *num)'
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5392,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5412,1
    - Dst: IS_LSIGN
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5419,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5424,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5426,1
    - Dst: AMOUNT_TEST
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5427,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5428,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5433,1
    - Dst: AMOUNT_TEST
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5434,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5435,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5444,1
    - Dst: IS_BRACKET
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5450,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5468,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5474,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5490,1
    - Dst: IS_DECIMAL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5493,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5500,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5503,1
    - Dst: AMOUNT_TEST
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5506,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5506,1
    - Dst: IS_LSIGN
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5535,1
    - Dst: isdigit
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5537,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5543,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5545,1
    - Dst: AMOUNT_TEST
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5546,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5547,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5552,1
    - Dst: AMOUNT_TEST
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5553,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5554,1
    - Dst: IS_LSIGN
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5574,1
    - Dst: IS_PLUS
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5575,1
    - Dst: IS_MINUS
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5575,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5578,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 78
    argCount: 3
    argNames:
    - Np
    - id
    - input_len
    argTypes:
    - NUMProc*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5589
      start: 5386
    functionDepth: 1
    functionLinenumber: 5386
    functionLinenumberEnd: 5589
    functionName: NUM_numpart_from_char
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - IS_MINUS
    - isdigit
    - elog
    - IS_LSIGN
    - IS_DECIMAL
    - IS_BRACKET
    - strlen
    - strncmp
    - IS_PLUS
    - AMOUNT_TEST
    linkageType: ''
    returnType: void
    signature: void NUM_numpart_from_char(NUMProc *Np, int id, int input_len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5596
      start: 5591
    functionDepth: 0
    functionLinenumber: 5591
    functionLinenumberEnd: 5596
    functionName: IS_PREDEC_SPACE
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_PREDEC_SPACE(_n)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: IS_ROMAN
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5606,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5617,1
    - Dst: IS_ZERO
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5631,1
    - Dst: IS_PREDEC_SPACE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5632,1
    - Dst: IS_LSIGN
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5634,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5639,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5641,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5642,1
    - Dst: IS_BRACKET
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5646,1
    - Dst: IS_FILLMODE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5654,1
    - Dst: IS_ZERO
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5676,1
    - Dst: IS_FILLMODE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5681,1
    - Dst: IS_ZERO
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5687,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5707,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5708,1
    - Dst: IS_FILLMODE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5714,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5717,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5718,1
    - Dst: IS_PREDEC_SPACE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5733,1
    - Dst: IS_FILLMODE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5735,1
    - Dst: IS_DECIMAL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5762,1
    - Dst: IS_BRACKET
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5769,1
    - Dst: IS_LSIGN
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5774,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5777,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5779,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5780,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 92
    argCount: 2
    argNames:
    - Np
    - id
    argTypes:
    - NUMProc*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5786
      start: 5601
    functionDepth: 1
    functionLinenumber: 5601
    functionLinenumberEnd: 5786
    functionName: NUM_numpart_to_char
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - IS_ROMAN
    - IS_ZERO
    - IS_PREDEC_SPACE
    - elog
    - IS_LSIGN
    - IS_FILLMODE
    - IS_DECIMAL
    - IS_BRACKET
    - strlen
    - strcpy
    linkageType: ''
    returnType: void
    signature: void NUM_numpart_to_char(NUMProc *Np, int id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5798,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5800,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 3
    argNames:
    - Np
    - n
    - input_len
    argTypes:
    - NUMProc*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5802
      start: 5791
    functionDepth: 1
    functionLinenumber: 5791
    functionLinenumberEnd: 5802
    functionName: NUM_eat_non_data_chars
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - pg_mblen
    - strchr
    linkageType: ''
    returnType: void
    signature: void NUM_eat_non_data_chars(NUMProc *Np, int n, int input_len)
  - BBCount: 71
    BranchProfiles: []
    Callsites:
    - Dst: MemSet
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5815,1
    - Dst: IS_EEEE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5829,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5832,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5833,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5834,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5835,1
    - Dst: IS_PLUS
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5846,1
    - Dst: IS_MINUS
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5846,1
    - Dst: IS_PLUS
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5848,1
    - Dst: IS_MINUS
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5848,1
    - Dst: IS_FILLMODE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5857,1
    - Dst: IS_FILLMODE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5861,1
    - Dst: IS_LSIGN
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5861,1
    - Dst: IS_FILLMODE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5882,1
    - Dst: IS_DECIMAL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5882,1
    - Dst: get_last_relevant_decnum
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5884,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5898,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5899,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5921,1
    - Dst: IS_ZERO
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5930,1
    - Dst: IS_BRACKET
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5934,1
    - Dst: IS_PLUS
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5935,1
    - Dst: IS_MINUS
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5936,1
    - Dst: IS_FILLMODE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5937,1
    - Dst: IS_ROMAN
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5938,1
    - Dst: IS_EEEE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5939,1
    - Dst: NUM_prepare_locale
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5946,1
    - Dst: NUM_numpart_to_char
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5994,1
    - Dst: NUM_numpart_from_char
      Src: /src/postgres/src/backend/utils/adt/formatting.c:5999,1
    - Dst: IS_FILLMODE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6008,1
    - Dst: IS_FILLMODE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6020,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6030,1
    - Dst: IS_FILLMODE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6035,1
    - Dst: pg_mbstrlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6040,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6041,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6047,1
    - Dst: IS_FILLMODE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6055,1
    - Dst: AMOUNT_TEST
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6065,1
    - Dst: strncmp
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6066,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6077,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6078,1
    - Dst: NUM_eat_non_data_chars
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6082,1
    - Dst: pg_mbstrlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6082,1
    - Dst: asc_tolower_z
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6094,1
    - Dst: IS_FILLMODE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6097,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6098,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6100,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6101,1
    - Dst: roman_to_int
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6105,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6109,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6110,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6111,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6112,1
    - Dst: IS_ROMAN
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6121,1
    - Dst: IS_DECIMAL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6122,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6127,1
    - Dst: get_th
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6127,1
    - Dst: NUM_eat_non_data_chars
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6133,1
    - Dst: IS_ROMAN
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6139,1
    - Dst: IS_DECIMAL
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6140,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6145,1
    - Dst: get_th
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6145,1
    - Dst: NUM_eat_non_data_chars
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6151,1
    - Dst: IS_FILLMODE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6161,1
    - Dst: NUM_eat_non_data_chars
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6172,1
    - Dst: IS_FILLMODE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6183,1
    - Dst: NUM_eat_non_data_chars
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6194,1
    - Dst: NUM_eat_non_data_chars
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6211,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6232,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6233,1
    - Dst: pg_mblen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6237,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6262,1
    CyclomaticComplexity: 104
    EdgeCount: 104
    ICount: 243
    argCount: 9
    argNames:
    - node
    - Num
    - inout
    - number
    - input_len
    - to_char_out_pre_spaces
    - sign
    - is_to_char
    - collid
    argTypes:
    - FormatNode*
    - NUMDesc*
    - char*
    - char*
    - int
    - int
    - int
    - bool
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6266
      start: 5804
    functionDepth: 3
    functionLinenumber: 5804
    functionLinenumberEnd: 6266
    functionName: NUM_processor
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - pg_mbstrlen
    - IS_ROMAN
    - errcode
    - pg_mblen
    - roman_to_int
    - IS_BRACKET
    - sprintf
    - get_last_relevant_decnum
    - strlen
    - Min
    - IS_ZERO
    - IS_FILLMODE
    - NUM_numpart_from_char
    - IS_DECIMAL
    - IS_EEEE
    - strcpy
    - errmsg
    - NUM_numpart_to_char
    - IS_LSIGN
    - MemSet
    - elog
    - NUM_eat_non_data_chars
    - strncmp
    - NUM_prepare_locale
    - AMOUNT_TEST
    - asc_tolower_z
    - memset
    - ereport
    - get_th
    - IS_MINUS
    - IS_PLUS
    linkageType: ''
    returnType: char
    signature: "char *\nNUM_processor(FormatNode *node, NUMDesc *Num, char *inout,\n\t\t\t
      \ char *number, int input_len, int to_char_out_pre_spaces,\n\t\t\t  int sign,
      bool is_to_char, Oid collid)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_NUMERIC
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6370,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6371,1
    - Dst: IS_ROMAN
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6387,1
    - Dst: numeric_int4_opt_error
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6393,1
    - Dst: int_to_roman
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6397,1
    - Dst: IS_EEEE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6399,1
    - Dst: numeric_out_sci
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6401,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6409,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6410,1
    - Dst: strcmp
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6411,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6417,1
    - Dst: fill_str
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6418,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6424,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6424,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6426,1
    - Dst: IS_MULTI
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6439,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6441,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6442,1
    - Dst: DatumGetNumeric
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6444,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6444,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6445,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6446,1
    - Dst: DatumGetNumeric
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6447,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6447,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6448,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6449,1
    - Dst: DatumGetNumeric
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6453,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6453,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6454,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6455,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6456,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6456,1
    - Dst: NumericGetDatum
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6457,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6470,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6473,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6481,1
    - Dst: fill_str
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6482,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6488,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 51
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6489
      start: 6367
    functionDepth: 3
    functionLinenumber: 6367
    functionLinenumberEnd: 6489
    functionName: numeric_to_char
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - IS_ROMAN
    - fill_str
    - IS_MULTI
    - NumericGetDatum
    - DirectFunctionCall1
    - strlen
    - numeric_int4_opt_error
    - DatumGetCString
    - Int32GetDatum
    - PG_GETARG_NUMERIC
    - DatumGetNumeric
    - DirectFunctionCall2
    - IS_EEEE
    - strcmp
    - strcpy
    - numeric_out_sci
    - int_to_roman
    - PG_RETURN_TEXT_P
    - palloc
    - PG_GETARG_TEXT_PP
    - int64_to_numeric
    - strchr
    linkageType: ''
    returnType: Datum
    signature: Datum numeric_to_char(PG_FUNCTION_ARGS)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6498,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6499,1
    - Dst: IS_ROMAN
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6514,1
    - Dst: int_to_roman
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6515,1
    - Dst: IS_EEEE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6516,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6521,1
    - Dst: IS_MULTI
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6535,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6537,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6537,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6538,1
    - Dst: pow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6538,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6543,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6543,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6544,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6555,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6560,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6561,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6563,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6575,1
    - Dst: fill_str
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6576,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6582,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6583
      start: 6495
    functionDepth: 2
    functionLinenumber: 6495
    functionLinenumberEnd: 6583
    functionName: int4_to_char
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - IS_ROMAN
    - fill_str
    - DatumGetCString
    - Int32GetDatum
    - strlen
    - PG_GETARG_TEXT_PP
    - memset
    - pow
    - IS_MULTI
    - int_to_roman
    - PG_GETARG_INT32
    - PG_RETURN_TEXT_P
    - IS_EEEE
    - palloc
    - DirectFunctionCall1
    - psprintf
    - strcpy
    linkageType: ''
    returnType: Datum
    signature: Datum int4_to_char(PG_FUNCTION_ARGS)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT64
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6592,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6593,1
    - Dst: IS_ROMAN
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6608,1
    - Dst: int_to_roman
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6617,1
    - Dst: IS_EEEE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6619,1
    - Dst: numeric_out_sci
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6622,1
    - Dst: int64_to_numeric
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6622,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6632,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6632,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6634,1
    - Dst: IS_MULTI
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6645,1
    - Dst: pow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6647,1
    - Dst: DatumGetInt64
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6649,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6649,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6650,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6651,1
    - Dst: Float8GetDatum
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6652,1
    - Dst: DatumGetCString
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6656,1
    - Dst: DirectFunctionCall1
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6656,1
    - Dst: Int64GetDatum
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6657,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6667,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6672,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6673,1
    - Dst: memset
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6675,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6687,1
    - Dst: fill_str
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6688,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6694,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6695
      start: 6589
    functionDepth: 2
    functionLinenumber: 6589
    functionLinenumberEnd: 6695
    functionName: int8_to_char
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - IS_ROMAN
    - fill_str
    - Float8GetDatum
    - IS_MULTI
    - pow
    - DirectFunctionCall1
    - strlen
    - DatumGetCString
    - Int64GetDatum
    - DatumGetInt64
    - DirectFunctionCall2
    - IS_EEEE
    - strcpy
    - numeric_out_sci
    - int_to_roman
    - PG_RETURN_TEXT_P
    - palloc
    - memset
    - PG_GETARG_INT64
    - PG_GETARG_TEXT_PP
    - int64_to_numeric
    linkageType: ''
    returnType: Datum
    signature: Datum int8_to_char(PG_FUNCTION_ARGS)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6704,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6705,1
    - Dst: IS_ROMAN
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6717,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6722,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6724,1
    - Dst: FLOAT4_FITS_IN_INT32
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6724,1
    - Dst: int_to_roman
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6728,1
    - Dst: IS_EEEE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6730,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6732,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6732,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6738,1
    - Dst: fill_str
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6739,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6745,1
    - Dst: IS_MULTI
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6760,1
    - Dst: pow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6762,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6768,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6768,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6769,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6776,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6789,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6792,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6800,1
    - Dst: fill_str
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6801,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6807,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6808
      start: 6701
    functionDepth: 2
    functionLinenumber: 6701
    functionLinenumberEnd: 6808
    functionName: float4_to_char
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - isnan
    - IS_ROMAN
    - isinf
    - fill_str
    - palloc
    - FLOAT4_FITS_IN_INT32
    - PG_GETARG_TEXT_PP
    - rint
    - IS_MULTI
    - int_to_roman
    - pow
    - PG_RETURN_TEXT_P
    - IS_EEEE
    - PG_GETARG_FLOAT4
    - strlen
    - fabs
    - psprintf
    - strchr
    linkageType: ''
    returnType: Datum
    signature: Datum float4_to_char(PG_FUNCTION_ARGS)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6817,1
    - Dst: PG_GETARG_TEXT_PP
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6818,1
    - Dst: IS_ROMAN
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6830,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6835,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6837,1
    - Dst: FLOAT8_FITS_IN_INT32
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6837,1
    - Dst: int_to_roman
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6841,1
    - Dst: IS_EEEE
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6843,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6845,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6845,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6851,1
    - Dst: fill_str
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6852,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6858,1
    - Dst: IS_MULTI
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6873,1
    - Dst: pow
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6875,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6881,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6881,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6882,1
    - Dst: psprintf
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6889,1
    - Dst: strchr
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6902,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6905,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6913,1
    - Dst: fill_str
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6914,1
    - Dst: PG_RETURN_TEXT_P
      Src: /src/postgres/src/backend/utils/adt/formatting.c:6920,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6921
      start: 6814
    functionDepth: 2
    functionLinenumber: 6814
    functionLinenumberEnd: 6921
    functionName: float8_to_char
    functionSourceFile: /src/postgres/src/backend/utils/adt/formatting.c
    functionUses: 0
    functionsReached:
    - isnan
    - IS_ROMAN
    - isinf
    - fill_str
    - PG_GETARG_TEXT_PP
    - IS_EEEE
    - rint
    - PG_GETARG_FLOAT8
    - int_to_roman
    - IS_MULTI
    - pow
    - PG_RETURN_TEXT_P
    - FLOAT8_FITS_IN_INT32
    - palloc
    - strlen
    - fabs
    - psprintf
    - strchr
    linkageType: ''
    returnType: Datum
    signature: Datum float8_to_char(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: WinGetCurrentPosition
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:52,1
    - Dst: WinGetPartitionLocalMemory
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:56,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:61,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:66,1
    - Dst: WinRowsArePeers
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:68,1
    - Dst: WinSetMarkPosition
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:73,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - winobj
    argTypes:
    - WindowObject
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 48
    functionDepth: 7
    functionLinenumber: 48
    functionLinenumberEnd: 76
    functionName: rank_up
    functionSourceFile: /src/postgres/src/backend/utils/adt/windowfuncs.c
    functionUses: 0
    functionsReached:
    - Assert
    - WinSetMarkPosition
    - WinGetPartitionLocalMemory
    - WinRowsArePeers
    - WinGetCurrentPosition
    linkageType: ''
    returnType: bool
    signature: bool rank_up(WindowObject winobj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_WINDOW_OBJECT
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:86,1
    - Dst: WinGetCurrentPosition
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:87,1
    - Dst: WinSetMarkPosition
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:89,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 91
    functionName: window_row_number
    functionSourceFile: /src/postgres/src/backend/utils/adt/windowfuncs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT64
    - PG_WINDOW_OBJECT
    - WinGetCurrentPosition
    - WinSetMarkPosition
    linkageType: ''
    returnType: Datum
    signature: Datum window_row_number(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:100,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:102,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:108,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:111,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:126,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:129,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 130
    functionName: window_row_number_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/windowfuncs.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - IsA
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum window_row_number_support(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_WINDOW_OBJECT
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:140,1
    - Dst: rank_up
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:144,1
    - Dst: WinGetPartitionLocalMemory
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:146,1
    - Dst: WinGetCurrentPosition
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:148,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:150,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 137
    functionDepth: 8
    functionLinenumber: 137
    functionLinenumberEnd: 151
    functionName: window_rank
    functionSourceFile: /src/postgres/src/backend/utils/adt/windowfuncs.c
    functionUses: 0
    functionsReached:
    - WinGetPartitionLocalMemory
    - PG_WINDOW_OBJECT
    - rank_up
    - PG_RETURN_INT64
    - WinGetCurrentPosition
    linkageType: ''
    returnType: Datum
    signature: Datum window_rank(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:160,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:162,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:168,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:171,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:189,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:192,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 193
    functionName: window_rank_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/windowfuncs.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - IsA
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum window_rank_support(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_WINDOW_OBJECT
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:202,1
    - Dst: rank_up
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:206,1
    - Dst: WinGetPartitionLocalMemory
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:208,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:212,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 199
    functionDepth: 8
    functionLinenumber: 199
    functionLinenumberEnd: 213
    functionName: window_dense_rank
    functionSourceFile: /src/postgres/src/backend/utils/adt/windowfuncs.c
    functionUses: 0
    functionsReached:
    - rank_up
    - WinGetPartitionLocalMemory
    - PG_WINDOW_OBJECT
    - PG_RETURN_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum window_dense_rank(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:222,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:224,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:230,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:233,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:248,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:251,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 252
    functionName: window_dense_rank_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/windowfuncs.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - IsA
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum window_dense_rank_support(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_WINDOW_OBJECT
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:263,1
    - Dst: WinGetPartitionRowCount
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:266,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:268,1
    - Dst: rank_up
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:270,1
    - Dst: WinGetPartitionLocalMemory
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:272,1
    - Dst: WinGetCurrentPosition
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:274,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:278,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:280,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 260
    functionDepth: 8
    functionLinenumber: 260
    functionLinenumberEnd: 281
    functionName: window_percent_rank
    functionSourceFile: /src/postgres/src/backend/utils/adt/windowfuncs.c
    functionUses: 0
    functionsReached:
    - WinGetPartitionRowCount
    - Assert
    - PG_WINDOW_OBJECT
    - WinGetPartitionLocalMemory
    - rank_up
    - PG_RETURN_FLOAT8
    - WinGetCurrentPosition
    linkageType: ''
    returnType: Datum
    signature: Datum window_percent_rank(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:290,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:292,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:298,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:301,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:316,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:319,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 320
    functionName: window_percent_rank_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/windowfuncs.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - IsA
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum window_percent_rank_support(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_WINDOW_OBJECT
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:332,1
    - Dst: WinGetPartitionRowCount
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:335,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:337,1
    - Dst: rank_up
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:339,1
    - Dst: WinGetPartitionLocalMemory
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:341,1
    - Dst: WinGetCurrentPosition
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:350,1
    - Dst: WinRowsArePeers
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:357,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:363,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 329
    functionDepth: 8
    functionLinenumber: 329
    functionLinenumberEnd: 364
    functionName: window_cume_dist
    functionSourceFile: /src/postgres/src/backend/utils/adt/windowfuncs.c
    functionUses: 0
    functionsReached:
    - WinGetPartitionRowCount
    - Assert
    - PG_WINDOW_OBJECT
    - WinGetPartitionLocalMemory
    - WinRowsArePeers
    - rank_up
    - PG_RETURN_FLOAT8
    - WinGetCurrentPosition
    linkageType: ''
    returnType: Datum
    signature: Datum window_cume_dist(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:373,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:375,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:381,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:384,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:399,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:402,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 403
    functionName: window_cume_dist_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/windowfuncs.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - IsA
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum window_cume_dist_support(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PG_WINDOW_OBJECT
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:413,1
    - Dst: WinGetPartitionLocalMemory
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:417,1
    - Dst: WinGetPartitionRowCount
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:426,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:427,1
    - Dst: WinGetFuncArgCurrent
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:427,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:434,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:441,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:442,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:443,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:475,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 410
    functionDepth: 6
    functionLinenumber: 410
    functionLinenumberEnd: 476
    functionName: window_ntile
    functionSourceFile: /src/postgres/src/backend/utils/adt/windowfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - WinGetPartitionRowCount
    - PG_RETURN_INT32
    - WinGetFuncArgCurrent
    - DatumGetInt32
    - ereport
    - WinGetPartitionLocalMemory
    - PG_WINDOW_OBJECT
    - PG_RETURN_NULL
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum window_ntile(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:485,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:487,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:496,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:499,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:514,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:517,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 482
    functionDepth: 1
    functionLinenumber: 482
    functionLinenumberEnd: 518
    functionName: window_ntile_support
    functionSourceFile: /src/postgres/src/backend/utils/adt/windowfuncs.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - IsA
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum window_ntile_support(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_WINDOW_OBJECT
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:531,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:540,1
    - Dst: WinGetFuncArgCurrent
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:540,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:542,1
    - Dst: get_fn_expr_arg_stable
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:543,1
    - Dst: WinGetFuncArgInPartition
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:551,1
    - Dst: WinGetFuncArgCurrent
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:564,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:568,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:570,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 4
    argNames:
    - fcinfo
    - forward
    - withoffset
    - withdefault
    argTypes:
    - FunctionCallInfo
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 527
    functionDepth: 7
    functionLinenumber: 527
    functionLinenumberEnd: 571
    functionName: leadlag_common
    functionSourceFile: /src/postgres/src/backend/utils/adt/windowfuncs.c
    functionUses: 0
    functionsReached:
    - get_fn_expr_arg_stable
    - WinGetFuncArgInPartition
    - WinGetFuncArgCurrent
    - PG_RETURN_DATUM
    - DatumGetInt32
    - PG_WINDOW_OBJECT
    - PG_RETURN_NULL
    linkageType: ''
    returnType: Datum
    signature: "Datum leadlag_common(FunctionCallInfo fcinfo,\n\t\t\t   bool forward,
      bool withoffset, bool withdefault)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: leadlag_common
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:582,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 579
    functionDepth: 8
    functionLinenumber: 579
    functionLinenumberEnd: 583
    functionName: window_lag
    functionSourceFile: /src/postgres/src/backend/utils/adt/windowfuncs.c
    functionUses: 0
    functionsReached:
    - leadlag_common
    linkageType: ''
    returnType: Datum
    signature: Datum window_lag(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: leadlag_common
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:594,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 591
    functionDepth: 8
    functionLinenumber: 591
    functionLinenumberEnd: 595
    functionName: window_lag_with_offset
    functionSourceFile: /src/postgres/src/backend/utils/adt/windowfuncs.c
    functionUses: 0
    functionsReached:
    - leadlag_common
    linkageType: ''
    returnType: Datum
    signature: Datum window_lag_with_offset(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: leadlag_common
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:605,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 602
    functionDepth: 8
    functionLinenumber: 602
    functionLinenumberEnd: 606
    functionName: window_lag_with_offset_and_default
    functionSourceFile: /src/postgres/src/backend/utils/adt/windowfuncs.c
    functionUses: 0
    functionsReached:
    - leadlag_common
    linkageType: ''
    returnType: Datum
    signature: Datum window_lag_with_offset_and_default(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: leadlag_common
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:617,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 614
    functionDepth: 8
    functionLinenumber: 614
    functionLinenumberEnd: 618
    functionName: window_lead
    functionSourceFile: /src/postgres/src/backend/utils/adt/windowfuncs.c
    functionUses: 0
    functionsReached:
    - leadlag_common
    linkageType: ''
    returnType: Datum
    signature: Datum window_lead(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: leadlag_common
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:629,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 626
    functionDepth: 8
    functionLinenumber: 626
    functionLinenumberEnd: 630
    functionName: window_lead_with_offset
    functionSourceFile: /src/postgres/src/backend/utils/adt/windowfuncs.c
    functionUses: 0
    functionsReached:
    - leadlag_common
    linkageType: ''
    returnType: Datum
    signature: Datum window_lead_with_offset(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: leadlag_common
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:640,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 637
    functionDepth: 8
    functionLinenumber: 637
    functionLinenumberEnd: 641
    functionName: window_lead_with_offset_and_default
    functionSourceFile: /src/postgres/src/backend/utils/adt/windowfuncs.c
    functionUses: 0
    functionsReached:
    - leadlag_common
    linkageType: ''
    returnType: Datum
    signature: Datum window_lead_with_offset_and_default(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_WINDOW_OBJECT
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:651,1
    - Dst: WinGetFuncArgInFrame
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:655,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:659,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:661,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 648
    functionDepth: 7
    functionLinenumber: 648
    functionLinenumberEnd: 662
    functionName: window_first_value
    functionSourceFile: /src/postgres/src/backend/utils/adt/windowfuncs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_DATUM
    - PG_WINDOW_OBJECT
    - WinGetFuncArgInFrame
    - PG_RETURN_NULL
    linkageType: ''
    returnType: Datum
    signature: Datum window_first_value(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_WINDOW_OBJECT
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:672,1
    - Dst: WinGetFuncArgInFrame
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:676,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:680,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:682,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 669
    functionDepth: 7
    functionLinenumber: 669
    functionLinenumberEnd: 683
    functionName: window_last_value
    functionSourceFile: /src/postgres/src/backend/utils/adt/windowfuncs.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_DATUM
    - PG_WINDOW_OBJECT
    - WinGetFuncArgInFrame
    - PG_RETURN_NULL
    linkageType: ''
    returnType: Datum
    signature: Datum window_last_value(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_WINDOW_OBJECT
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:693,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:699,1
    - Dst: WinGetFuncArgCurrent
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:699,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:701,1
    - Dst: get_fn_expr_arg_stable
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:702,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:705,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:706,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:707,1
    - Dst: WinGetFuncArgInFrame
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:709,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:713,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/windowfuncs.c:715,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 690
    functionDepth: 7
    functionLinenumber: 690
    functionLinenumberEnd: 716
    functionName: window_nth_value
    functionSourceFile: /src/postgres/src/backend/utils/adt/windowfuncs.c
    functionUses: 0
    functionsReached:
    - errmsg
    - get_fn_expr_arg_stable
    - WinGetFuncArgCurrent
    - PG_RETURN_DATUM
    - DatumGetInt32
    - ereport
    - PG_WINDOW_OBJECT
    - PG_RETURN_NULL
    - WinGetFuncArgInFrame
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum window_nth_value(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - rel
    - ','
    - attnum
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 87
    functionName: RIAttName
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RIAttName(rel, attnum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - rel
    - ','
    - attnum
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 88
    functionName: RIAttType
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RIAttType(rel, attnum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - rel
    - ','
    - attnum
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 89
    functionName: RIAttCollation
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RIAttCollation(rel, attnum)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ri_FetchConstraintInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:257,1
    - Dst: TRIGGER_FIRED_BY_UPDATE
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:260,1
    - Dst: table_tuple_satisfies_snapshot
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:273,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:274,1
    - Dst: table_open
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:283,1
    - Dst: ri_NullCheck
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:285,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:285,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:293,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:294,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:310,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:311,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:312,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:313,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:314,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:315,1
    - Dst: errtableconstraint
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:316,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:317,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:318,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:319,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:327,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:328,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:352,1
    - Dst: ri_BuildQueryKey
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:355,1
    - Dst: ri_FetchPreparedPlan
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:357,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:390,1
    - Dst: quoteRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:393,1
    - Dst: quoteOneName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:396,1
    - Dst: RIAttName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:397,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:399,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:405,1
    - Dst: RIAttType
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:411,1
    - Dst: RIAttType
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:412,1
    - Dst: quoteOneName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:414,1
    - Dst: RIAttName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:415,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:416,1
    - Dst: ri_GenerateQual
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:417,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:424,1
    - Dst: RIAttType
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:427,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:429,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:430,1
    - Dst: ri_GenerateQual
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:431,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:435,1
    - Dst: ri_PlanCheck
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:439,1
    - Dst: ri_PerformCheck
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:450,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:457,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:458,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:460,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:462,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 62
    argCount: 1
    argNames:
    - trigdata
    argTypes:
    - TriggerData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 247
    functionDepth: 3
    functionLinenumber: 247
    functionLinenumberEnd: 463
    functionName: RI_FKey_check
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 0
    functionsReached:
    - errtableconstraint
    - RIAttName
    - TRIGGER_FIRED_BY_UPDATE
    - ri_FetchConstraintInfo
    - sprintf
    - RelationGetRelationName
    - errdetail
    - ri_PlanCheck
    - ri_PerformCheck
    - ri_BuildQueryKey
    - NameStr
    - table_open
    - quoteRelationName
    - ri_GenerateQual
    - RIAttType
    - table_tuple_satisfies_snapshot
    - quoteOneName
    - ri_FetchPreparedPlan
    - errmsg
    - SPI_connect
    - appendStringInfoString
    - elog
    - table_close
    - appendStringInfo
    - RelationGetDescr
    - ereport
    - PointerGetDatum
    - ri_NullCheck
    - initStringInfo
    - SPI_finish
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum RI_FKey_check(TriggerData *trigdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ri_CheckTrigger
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:475,1
    - Dst: RI_FKey_check
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:478,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 471
    functionDepth: 4
    functionLinenumber: 471
    functionLinenumberEnd: 479
    functionName: RI_FKey_check_ins
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 0
    functionsReached:
    - RI_FKey_check
    - ri_CheckTrigger
    linkageType: ''
    returnType: Datum
    signature: Datum RI_FKey_check_ins(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ri_CheckTrigger
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:491,1
    - Dst: RI_FKey_check
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:494,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 487
    functionDepth: 4
    functionLinenumber: 487
    functionLinenumberEnd: 495
    functionName: RI_FKey_check_upd
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 0
    functionsReached:
    - RI_FKey_check
    - ri_CheckTrigger
    linkageType: ''
    returnType: Datum
    signature: Datum RI_FKey_check_upd(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:518,1
    - Dst: ri_NullCheck
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:518,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:518,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:520,1
    - Dst: ri_BuildQueryKey
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:526,1
    - Dst: ri_FetchPreparedPlan
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:528,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:561,1
    - Dst: quoteRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:564,1
    - Dst: quoteOneName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:567,1
    - Dst: RIAttName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:567,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:569,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:575,1
    - Dst: RIAttType
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:581,1
    - Dst: quoteOneName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:583,1
    - Dst: RIAttName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:584,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:585,1
    - Dst: ri_GenerateQual
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:586,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:593,1
    - Dst: RIAttType
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:596,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:598,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:599,1
    - Dst: ri_GenerateQual
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:600,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:604,1
    - Dst: ri_PlanCheck
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:608,1
    - Dst: ri_PerformCheck
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:615,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:622,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:623,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 35
    argCount: 4
    argNames:
    - pk_rel
    - fk_rel
    - oldslot
    - riinfo
    argTypes:
    - Relation
    - Relation
    - TupleTableSlot*
    - RI_ConstraintInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 508
    functionDepth: 3
    functionLinenumber: 508
    functionLinenumberEnd: 626
    functionName: ri_Check_Pk_Match
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 0
    functionsReached:
    - RIAttName
    - ri_PlanCheck
    - sprintf
    - ri_PerformCheck
    - ri_BuildQueryKey
    - quoteRelationName
    - ri_GenerateQual
    - RIAttType
    - quoteOneName
    - ri_FetchPreparedPlan
    - SPI_connect
    - appendStringInfoString
    - elog
    - Assert
    - appendStringInfo
    - RelationGetDescr
    - ri_NullCheck
    - initStringInfo
    - SPI_finish
    linkageType: ''
    returnType: bool
    signature: "bool ri_Check_Pk_Match(Relation pk_rel, Relation fk_rel,\n\t\t\t\t
      \ TupleTableSlot *oldslot,\n\t\t\t\t  const RI_ConstraintInfo *riinfo)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ri_CheckTrigger
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:640,1
    - Dst: ri_restrict
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:643,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 636
    functionDepth: 1
    functionLinenumber: 636
    functionLinenumberEnd: 644
    functionName: RI_FKey_noaction_del
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 0
    functionsReached:
    - ri_restrict
    - ri_CheckTrigger
    linkageType: ''
    returnType: Datum
    signature: Datum RI_FKey_noaction_del(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ri_CheckTrigger
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:660,1
    - Dst: ri_restrict
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:663,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 656
    functionDepth: 1
    functionLinenumber: 656
    functionLinenumberEnd: 664
    functionName: RI_FKey_restrict_del
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 0
    functionsReached:
    - ri_restrict
    - ri_CheckTrigger
    linkageType: ''
    returnType: Datum
    signature: Datum RI_FKey_restrict_del(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ri_CheckTrigger
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:677,1
    - Dst: ri_restrict
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:680,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 673
    functionDepth: 1
    functionLinenumber: 673
    functionLinenumberEnd: 681
    functionName: RI_FKey_noaction_upd
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 0
    functionsReached:
    - ri_restrict
    - ri_CheckTrigger
    linkageType: ''
    returnType: Datum
    signature: Datum RI_FKey_noaction_upd(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ri_CheckTrigger
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:697,1
    - Dst: ri_restrict
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:700,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 693
    functionDepth: 1
    functionLinenumber: 693
    functionLinenumberEnd: 701
    functionName: RI_FKey_restrict_upd
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 0
    functionsReached:
    - ri_restrict
    - ri_CheckTrigger
    linkageType: ''
    returnType: Datum
    signature: Datum RI_FKey_restrict_upd(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ri_FetchConstraintInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:719,1
    - Dst: table_open
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:728,1
    - Dst: ri_Check_Pk_Match
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:742,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:744,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:745,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:748,1
    - Dst: ri_BuildQueryKey
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:754,1
    - Dst: ri_FetchPreparedPlan
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:756,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:776,1
    - Dst: quoteRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:779,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:780,1
    - Dst: RIAttType
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:785,1
    - Dst: RIAttType
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:786,1
    - Dst: quoteOneName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:788,1
    - Dst: RIAttName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:789,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:790,1
    - Dst: ri_GenerateQual
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:791,1
    - Dst: RIAttType
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:825,1
    - Dst: RIAttType
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:826,1
    - Dst: quoteOneName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:832,1
    - Dst: RIAttName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:832,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:833,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:835,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:838,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:839,1
    - Dst: ri_GenerateQual
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:840,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:844,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:847,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:848,1
    - Dst: quoteOneName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:850,1
    - Dst: RIAttName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:850,1
    - Dst: quoteRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:851,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:852,1
    - Dst: RIAttType
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:859,1
    - Dst: quoteOneName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:861,1
    - Dst: RIAttName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:862,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:863,1
    - Dst: ri_GenerateQual
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:864,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:871,1
    - Dst: ri_GenerateQual
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:873,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:878,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:881,1
    - Dst: ri_PlanCheck
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:884,1
    - Dst: ri_PerformCheck
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:891,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:898,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:899,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:901,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:903,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 57
    argCount: 2
    argNames:
    - trigdata
    - is_no_action
    argTypes:
    - TriggerData*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 709
    functionDepth: 4
    functionLinenumber: 709
    functionLinenumberEnd: 904
    functionName: ri_restrict
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 4
    functionsReached:
    - RIAttName
    - ri_PlanCheck
    - sprintf
    - ri_FetchConstraintInfo
    - ri_PerformCheck
    - ri_BuildQueryKey
    - ri_Check_Pk_Match
    - table_open
    - quoteRelationName
    - ri_GenerateQual
    - RIAttType
    - quoteOneName
    - ri_FetchPreparedPlan
    - SPI_connect
    - appendStringInfoString
    - elog
    - table_close
    - appendStringInfo
    - appendStringInfoChar
    - PointerGetDatum
    - initStringInfo
    - SPI_finish
    linkageType: ''
    returnType: Datum
    signature: Datum ri_restrict(TriggerData *trigdata, bool is_no_action)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ri_CheckTrigger
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:924,1
    - Dst: ri_FetchConstraintInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:926,1
    - Dst: table_open
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:935,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:939,1
    - Dst: ri_BuildQueryKey
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:942,1
    - Dst: ri_FetchPreparedPlan
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:944,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:961,1
    - Dst: quoteRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:964,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:965,1
    - Dst: RIAttType
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:970,1
    - Dst: RIAttType
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:971,1
    - Dst: quoteOneName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:973,1
    - Dst: RIAttName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:974,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:975,1
    - Dst: ri_GenerateQual
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:976,1
    - Dst: ri_PlanCheck
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:985,1
    - Dst: ri_PerformCheck
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:993,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1000,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1001,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1003,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1005,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1006
      start: 912
    functionDepth: 3
    functionLinenumber: 912
    functionLinenumberEnd: 1006
    functionName: RI_FKey_cascade_del
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 0
    functionsReached:
    - RIAttName
    - ri_CheckTrigger
    - ri_PlanCheck
    - ri_FetchConstraintInfo
    - sprintf
    - ri_PerformCheck
    - ri_BuildQueryKey
    - table_open
    - quoteRelationName
    - ri_GenerateQual
    - RIAttType
    - quoteOneName
    - ri_FetchPreparedPlan
    - SPI_connect
    - elog
    - table_close
    - appendStringInfo
    - PointerGetDatum
    - initStringInfo
    - SPI_finish
    linkageType: ''
    returnType: Datum
    signature: Datum RI_FKey_cascade_del(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ri_CheckTrigger
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1027,1
    - Dst: ri_FetchConstraintInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1029,1
    - Dst: table_open
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1039,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1044,1
    - Dst: ri_BuildQueryKey
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1047,1
    - Dst: ri_FetchPreparedPlan
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1049,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1071,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1072,1
    - Dst: quoteRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1075,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1076,1
    - Dst: RIAttType
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1082,1
    - Dst: RIAttType
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1083,1
    - Dst: quoteOneName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1085,1
    - Dst: RIAttName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1086,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1087,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1090,1
    - Dst: ri_GenerateQual
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1091,1
    - Dst: appendBinaryStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1100,1
    - Dst: ri_PlanCheck
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1103,1
    - Dst: ri_PerformCheck
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1110,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1117,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1118,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1120,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1122,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1123
      start: 1014
    functionDepth: 3
    functionLinenumber: 1014
    functionLinenumberEnd: 1123
    functionName: RI_FKey_cascade_upd
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 0
    functionsReached:
    - RIAttName
    - ri_CheckTrigger
    - ri_PlanCheck
    - ri_FetchConstraintInfo
    - sprintf
    - ri_PerformCheck
    - ri_BuildQueryKey
    - table_open
    - quoteRelationName
    - ri_GenerateQual
    - RIAttType
    - quoteOneName
    - ri_FetchPreparedPlan
    - SPI_connect
    - elog
    - table_close
    - appendStringInfo
    - appendBinaryStringInfo
    - PointerGetDatum
    - initStringInfo
    - SPI_finish
    linkageType: ''
    returnType: Datum
    signature: Datum RI_FKey_cascade_upd(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ri_CheckTrigger
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1135,1
    - Dst: ri_set
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1139
      start: 1131
    functionDepth: 1
    functionLinenumber: 1131
    functionLinenumberEnd: 1139
    functionName: RI_FKey_setnull_del
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 0
    functionsReached:
    - ri_set
    - ri_CheckTrigger
    linkageType: ''
    returnType: Datum
    signature: Datum RI_FKey_setnull_del(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ri_CheckTrigger
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1150,1
    - Dst: ri_set
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1154
      start: 1146
    functionDepth: 1
    functionLinenumber: 1146
    functionLinenumberEnd: 1154
    functionName: RI_FKey_setnull_upd
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 0
    functionsReached:
    - ri_set
    - ri_CheckTrigger
    linkageType: ''
    returnType: Datum
    signature: Datum RI_FKey_setnull_upd(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ri_CheckTrigger
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1165,1
    - Dst: ri_set
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1169
      start: 1161
    functionDepth: 1
    functionLinenumber: 1161
    functionLinenumberEnd: 1169
    functionName: RI_FKey_setdefault_del
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 0
    functionsReached:
    - ri_set
    - ri_CheckTrigger
    linkageType: ''
    returnType: Datum
    signature: Datum RI_FKey_setdefault_del(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ri_CheckTrigger
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1180,1
    - Dst: ri_set
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1184
      start: 1176
    functionDepth: 1
    functionLinenumber: 1176
    functionLinenumberEnd: 1184
    functionName: RI_FKey_setdefault_upd
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 0
    functionsReached:
    - ri_set
    - ri_CheckTrigger
    linkageType: ''
    returnType: Datum
    signature: Datum RI_FKey_setdefault_upd(PG_FUNCTION_ARGS)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ri_FetchConstraintInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1203,1
    - Dst: table_open
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1212,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1216,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1234,1
    - Dst: ri_BuildQueryKey
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1237,1
    - Dst: ri_FetchPreparedPlan
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1239,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1277,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1288,1
    - Dst: quoteRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1291,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1292,1
    - Dst: quoteOneName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1301,1
    - Dst: RIAttName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1301,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1302,1
    - Dst: RIAttType
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1315,1
    - Dst: RIAttType
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1316,1
    - Dst: quoteOneName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1318,1
    - Dst: RIAttName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1319,1
    - Dst: sprintf
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1321,1
    - Dst: ri_GenerateQual
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1322,1
    - Dst: ri_PlanCheck
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1331,1
    - Dst: ri_PerformCheck
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1338,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1345,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1346,1
    - Dst: table_close
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1348,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1351,1
    - Dst: ri_restrict
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1367,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 63
    argCount: 3
    argNames:
    - trigdata
    - is_set_null
    - tgkind
    argTypes:
    - TriggerData*
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1369
      start: 1192
    functionDepth: 5
    functionLinenumber: 1192
    functionLinenumberEnd: 1369
    functionName: ri_set
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 4
    functionsReached:
    - RIAttName
    - ri_PlanCheck
    - ri_FetchConstraintInfo
    - sprintf
    - ri_PerformCheck
    - ri_BuildQueryKey
    - table_open
    - quoteRelationName
    - ri_GenerateQual
    - RIAttType
    - ri_restrict
    - quoteOneName
    - ri_FetchPreparedPlan
    - SPI_connect
    - elog
    - table_close
    - appendStringInfo
    - PointerGetDatum
    - initStringInfo
    - SPI_finish
    linkageType: ''
    returnType: Datum
    signature: Datum ri_set(TriggerData *trigdata, bool is_set_null, int tgkind)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ri_FetchConstraintInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1389,1
    - Dst: ri_NullCheck
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1395,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1395,1
    - Dst: ri_KeysEqual
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1399,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 4
    argNames:
    - trigger
    - pk_rel
    - oldslot
    - newslot
    argTypes:
    - Trigger*
    - Relation
    - TupleTableSlot*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1404
      start: 1383
    functionDepth: 1
    functionLinenumber: 1383
    functionLinenumberEnd: 1404
    functionName: RI_FKey_pk_upd_check_required
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 0
    functionsReached:
    - ri_FetchConstraintInfo
    - RelationGetDescr
    - ri_KeysEqual
    - ri_NullCheck
    linkageType: ''
    returnType: bool
    signature: "bool RI_FKey_pk_upd_check_required(Trigger *trigger, Relation pk_rel,\n\t\t\t\t\t\t\t
      \ TupleTableSlot *oldslot, TupleTableSlot *newslot)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1426,1
    - Dst: ri_FetchConstraintInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1428,1
    - Dst: ri_NullCheck
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1430,1
    - Dst: RelationGetDescr
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1430,1
    - Dst: slot_is_current_xact_tuple
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1488,1
    - Dst: ri_KeysEqual
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1492,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 4
    argNames:
    - trigger
    - fk_rel
    - oldslot
    - newslot
    argTypes:
    - Trigger*
    - Relation
    - TupleTableSlot*
    - TupleTableSlot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1497
      start: 1415
    functionDepth: 1
    functionLinenumber: 1415
    functionLinenumberEnd: 1497
    functionName: RI_FKey_fk_upd_check_required
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 0
    functionsReached:
    - Assert
    - slot_is_current_xact_tuple
    - RelationGetDescr
    - ri_NullCheck
    - ri_FetchConstraintInfo
    - ri_KeysEqual
    linkageType: ''
    returnType: bool
    signature: "bool RI_FKey_fk_upd_check_required(Trigger *trigger, Relation fk_rel,\n\t\t\t\t\t\t\t
      \ TupleTableSlot *oldslot, TupleTableSlot *newslot)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ri_FetchConstraintInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1538,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1547,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1548,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1550,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1551,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1553,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1556,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1557,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1559,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1560,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1562,1
    - Dst: makeNode
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1563,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1565,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1568,1
    - Dst: lappend
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1569,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1576,1
    - Dst: bms_add_member
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1579,1
    - Dst: ExecCheckPermissions
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1582,1
    - Dst: has_bypassrls_privilege
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1590,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1590,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1592,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1592,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1593,1
    - Dst: object_ownercheck
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1595,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1595,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1596,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1614,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1615,1
    - Dst: quoteOneName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1619,1
    - Dst: RIAttName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1620,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1621,1
    - Dst: quoteRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1625,1
    - Dst: quoteRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1626,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1631,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1635,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1636,1
    - Dst: RIAttType
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1640,1
    - Dst: RIAttType
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1641,1
    - Dst: RIAttCollation
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1642,1
    - Dst: RIAttCollation
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1643,1
    - Dst: quoteOneName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1645,1
    - Dst: RIAttName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1646,1
    - Dst: quoteOneName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1647,1
    - Dst: RIAttName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1648,1
    - Dst: ri_GenerateQual
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1649,1
    - Dst: ri_GenerateQualCollation
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1654,1
    - Dst: quoteOneName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1662,1
    - Dst: RIAttName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1662,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1663,1
    - Dst: quoteOneName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1668,1
    - Dst: RIAttName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1668,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1669,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1682,1
    - Dst: NewGUCNestLevel
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1698,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1700,1
    - Dst: set_config_option
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1701,1
    - Dst: set_config_option
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1704,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1708,1
    - Dst: SPI_prepare
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1714,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1717,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1718,1
    - Dst: SPI_execute_snapshot
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1727,1
    - Dst: GetLatestSnapshot
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1729,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1735,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1735,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1745,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1747,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1749,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1760,1
    - Dst: ri_NullCheck
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1770,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1771,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1772,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1773,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1774,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1775,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1776,1
    - Dst: errtableconstraint
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1777,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1778,1
    - Dst: ri_ReportViolation
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1785,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1790,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1793,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1794,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1799,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 101
    argCount: 3
    argNames:
    - trigger
    - fk_rel
    - pk_rel
    argTypes:
    - Trigger*
    - Relation
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1802
      start: 1516
    functionDepth: 6
    functionLinenumber: 1516
    functionLinenumberEnd: 1802
    functionName: RI_Initial_Check
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 0
    functionsReached:
    - errtableconstraint
    - RIAttName
    - heap_deform_tuple
    - snprintf
    - list_length
    - SPI_prepare
    - ExecCheckPermissions
    - ri_FetchConstraintInfo
    - makeNode
    - NewGUCNestLevel
    - RelationGetRelationName
    - GetUserId
    - errdetail
    - NameStr
    - RelationGetRelid
    - quoteRelationName
    - ri_GenerateQual
    - RIAttType
    - ExecStoreVirtualTuple
    - quoteOneName
    - memcpy
    - set_config_option
    - SPI_execute_snapshot
    - strcpy
    - errmsg
    - ExecDropSingleTupleTableSlot
    - SPI_connect
    - RIAttCollation
    - ri_GenerateQualCollation
    - ri_ReportViolation
    - AtEOXact_GUC
    - appendStringInfoString
    - elog
    - lappend
    - has_bypassrls_privilege
    - object_ownercheck
    - bms_add_member
    - GetLatestSnapshot
    - appendStringInfo
    - appendStringInfoChar
    - SPI_result_code_string
    - ereport
    - MakeSingleTupleTableSlot
    - ri_NullCheck
    - initStringInfo
    - SPI_finish
    - errcode
    linkageType: ''
    returnType: bool
    signature: bool RI_Initial_Check(Trigger *trigger, Relation fk_rel, Relation pk_rel)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ri_FetchConstraintInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1828,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1851,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1852,1
    - Dst: quoteOneName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1856,1
    - Dst: RIAttName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1857,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1858,1
    - Dst: quoteRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1862,1
    - Dst: quoteRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1863,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1866,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1869,1
    - Dst: strcpy
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1870,1
    - Dst: RIAttType
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1874,1
    - Dst: RIAttType
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1875,1
    - Dst: RIAttCollation
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1876,1
    - Dst: RIAttCollation
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1877,1
    - Dst: quoteOneName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1879,1
    - Dst: RIAttName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1880,1
    - Dst: quoteOneName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1881,1
    - Dst: RIAttName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1882,1
    - Dst: ri_GenerateQual
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1883,1
    - Dst: ri_GenerateQualCollation
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1888,1
    - Dst: pg_get_partconstrdef_string
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1897,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1897,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1899,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1902,1
    - Dst: quoteOneName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1907,1
    - Dst: RIAttName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1907,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1908,1
    - Dst: appendStringInfoChar
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1921,1
    - Dst: NewGUCNestLevel
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1937,1
    - Dst: snprintf
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1939,1
    - Dst: set_config_option
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1940,1
    - Dst: set_config_option
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1943,1
    - Dst: SPI_connect
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1947,1
    - Dst: SPI_prepare
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1953,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1956,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1957,1
    - Dst: SPI_execute_snapshot
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1966,1
    - Dst: GetLatestSnapshot
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1968,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1974,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1974,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1984,1
    - Dst: heap_deform_tuple
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1986,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1988,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:1999,1
    - Dst: ri_ReportViolation
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2003,1
    - Dst: SPI_finish
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2007,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2008,1
    - Dst: AtEOXact_GUC
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2013,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 66
    argCount: 3
    argNames:
    - trigger
    - fk_rel
    - pk_rel
    argTypes:
    - Trigger*
    - Relation
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2014
      start: 1810
    functionDepth: 4
    functionLinenumber: 1810
    functionLinenumberEnd: 2014
    functionName: RI_PartitionRemove_Check
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 0
    functionsReached:
    - RIAttName
    - heap_deform_tuple
    - snprintf
    - SPI_prepare
    - NewGUCNestLevel
    - ri_FetchConstraintInfo
    - RelationGetRelid
    - quoteRelationName
    - ri_GenerateQual
    - RIAttType
    - ExecStoreVirtualTuple
    - quoteOneName
    - memcpy
    - set_config_option
    - SPI_execute_snapshot
    - strcpy
    - SPI_connect
    - RIAttCollation
    - ri_GenerateQualCollation
    - ri_ReportViolation
    - AtEOXact_GUC
    - appendStringInfoString
    - elog
    - pg_get_partconstrdef_string
    - GetLatestSnapshot
    - appendStringInfo
    - appendStringInfoChar
    - SPI_result_code_string
    - MakeSingleTupleTableSlot
    - initStringInfo
    - SPI_finish
    linkageType: ''
    returnType: void
    signature: void RI_PartitionRemove_Check(Trigger *trigger, Relation fk_rel, Relation
      pk_rel)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - buffer
    - name
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2041
      start: 2028
    functionDepth: 0
    functionLinenumber: 2028
    functionLinenumberEnd: 2041
    functionName: quoteOneName
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void quoteOneName(char *buffer, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: quoteOneName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2051,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2051,1
    - Dst: RelationGetNamespace
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2051,1
    - Dst: strlen
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2052,1
    - Dst: quoteOneName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2054,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2054,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - buffer
    - rel
    argTypes:
    - char*
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2055
      start: 2048
    functionDepth: 1
    functionLinenumber: 2048
    functionLinenumberEnd: 2055
    functionName: quoteRelationName
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 8
    functionsReached:
    - get_namespace_name
    - RelationGetNamespace
    - quoteOneName
    - RelationGetRelationName
    - strlen
    linkageType: ''
    returnType: void
    signature: void quoteRelationName(char *buffer, Relation rel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2072,1
    - Dst: generate_operator_clause
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2073,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 7
    argNames:
    - buf
    - sep
    - leftop
    - leftoptype
    - opoid
    - rightop
    - rightoptype
    argTypes:
    - StringInfo
    - char*
    - char*
    - Oid
    - Oid
    - char*
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2075
      start: 2065
    functionDepth: 2
    functionLinenumber: 2065
    functionLinenumberEnd: 2075
    functionName: ri_GenerateQual
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 8
    functionsReached:
    - generate_operator_clause
    - appendStringInfo
    linkageType: ''
    returnType: void
    signature: "void ri_GenerateQual(StringInfo buf,\n\t\t\t\tconst char *sep,\n\t\t\t\tconst
      char *leftop, Oid leftoptype,\n\t\t\t\tOid opoid,\n\t\t\t\tconst char *rightop,
      Oid rightoptype)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2101,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2104,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2104,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2105,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2106,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2107,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2108,1
    - Dst: quoteOneName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2114,1
    - Dst: get_namespace_name
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2114,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2115,1
    - Dst: quoteOneName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2116,1
    - Dst: appendStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2117,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - buf
    - collation
    argTypes:
    - StringInfo
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2120
      start: 2092
    functionDepth: 2
    functionLinenumber: 2092
    functionLinenumberEnd: 2120
    functionName: ri_GenerateQualCollation
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 2
    functionsReached:
    - NameStr
    - ReleaseSysCache
    - appendStringInfo
    - HeapTupleIsValid
    - get_namespace_name
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - OidIsValid
    - quoteOneName
    - ObjectIdGetDatum
    linkageType: ''
    returnType: void
    signature: void ri_GenerateQualCollation(StringInfo buf, Oid collation)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - key
    - riinfo
    - constr_queryno
    argTypes:
    - RI_QueryKey*
    - RI_ConstraintInfo*
    - int32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2160
      start: 2133
    functionDepth: 0
    functionLinenumber: 2133
    functionLinenumberEnd: 2160
    functionName: ri_BuildQueryKey
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void ri_BuildQueryKey(RI_QueryKey *key, const RI_ConstraintInfo *riinfo,\n\t\t\t\t
      int32 constr_queryno)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: CALLED_AS_TRIGGER
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2170,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2171,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2172,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2173,1
    - Dst: TRIGGER_FIRED_AFTER
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2178,1
    - Dst: TRIGGER_FIRED_FOR_ROW
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2179,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2180,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2181,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2182,1
    - Dst: TRIGGER_FIRED_BY_INSERT
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2187,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2188,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2189,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2190,1
    - Dst: TRIGGER_FIRED_BY_UPDATE
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2193,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2194,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2195,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2196,1
    - Dst: TRIGGER_FIRED_BY_DELETE
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2199,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2200,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2201,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2202,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 3
    argNames:
    - fcinfo
    - funcname
    - tgkind
    argTypes:
    - FunctionCallInfo
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2205
      start: 2165
    functionDepth: 2
    functionLinenumber: 2165
    functionLinenumberEnd: 2205
    functionName: ri_CheckTrigger
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 12
    functionsReached:
    - CALLED_AS_TRIGGER
    - errmsg
    - TRIGGER_FIRED_AFTER
    - TRIGGER_FIRED_FOR_ROW
    - TRIGGER_FIRED_BY_DELETE
    - ereport
    - TRIGGER_FIRED_BY_UPDATE
    - TRIGGER_FIRED_BY_INSERT
    - errcode
    linkageType: ''
    returnType: void
    signature: void ri_CheckTrigger(FunctionCallInfo fcinfo, const char *funcname,
      int tgkind)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2222,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2223,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2224,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2225,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2226,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2227,1
    - Dst: ri_LoadConstraintInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2230,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2236,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2237,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2238,1
    - Dst: RelationGetRelid
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2242,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2244,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2245,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2251,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2255,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2256,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2257,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 16
    argCount: 3
    argNames:
    - trigger
    - trig_rel
    - rel_is_pk
    argTypes:
    - Trigger*
    - Relation
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2260
      start: 2211
    functionDepth: 2
    functionLinenumber: 2211
    functionLinenumberEnd: 2260
    functionName: ri_FetchConstraintInfo
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 9
    functionsReached:
    - errmsg
    - RelationGetRelid
    - ereport
    - errhint
    - elog
    - OidIsValid
    - ri_LoadConstraintInfo
    - RelationGetRelationName
    - errcode
    linkageType: ''
    returnType: RI_ConstraintInfo
    signature: 'RI_ConstraintInfo *

      ri_FetchConstraintInfo(Trigger *trigger, Relation trig_rel, bool rel_is_pk)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ri_InitHashTables
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2277,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2282,1
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2293,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2293,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2294,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2295,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2296,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2299,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2303,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2304,1
    - Dst: get_ri_constraint_root
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2306,1
    - Dst: GetSysCacheHashValue1
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2309,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2310,1
    - Dst: GetSysCacheHashValue1
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2311,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2312,1
    - Dst: memcpy
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2313,1
    - Dst: DeconstructFkConstraintRow
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2321,1
    - Dst: get_index_column_opclass
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2338,1
    - Dst: FindFKPeriodOpers
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2340,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2346,1
    - Dst: dclist_push_tail
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2352,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 1
    argNames:
    - constraintOid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2357
      start: 2265
    functionDepth: 3
    functionLinenumber: 2265
    functionLinenumberEnd: 2357
    functionName: ri_LoadConstraintInfo
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 1
    functionsReached:
    - Assert
    - GetSysCacheHashValue1
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - hash_search
    - SearchSysCache1
    - FindFKPeriodOpers
    - elog
    - DeconstructFkConstraintRow
    - get_index_column_opclass
    - OidIsValid
    - dclist_push_tail
    - memcpy
    - ObjectIdGetDatum
    - ri_InitHashTables
    - get_ri_constraint_root
    linkageType: ''
    returnType: RI_ConstraintInfo
    signature: 'RI_ConstraintInfo *

      ri_LoadConstraintInfo(Oid constraintOid)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SearchSysCache1
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2371,1
    - Dst: ObjectIdGetDatum
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2371,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2372,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2373,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2374,1
    - Dst: ReleaseSysCache
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2375,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2376,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - constrOid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2381
      start: 2363
    functionDepth: 1
    functionLinenumber: 2363
    functionLinenumberEnd: 2381
    functionName: get_ri_constraint_root
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 1
    functionsReached:
    - ReleaseSysCache
    - HeapTupleIsValid
    - GETSTRUCT
    - SearchSysCache1
    - elog
    - OidIsValid
    - ObjectIdGetDatum
    linkageType: ''
    returnType: Oid
    signature: Oid get_ri_constraint_root(Oid constrOid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2402,1
    - Dst: dclist_count
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2410,1
    - Dst: dclist_foreach_modify
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2413,1
    - Dst: dclist_container
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2415,1
    - Dst: dclist_delete_from
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2429,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - arg
    - cacheid
    - hashvalue
    argTypes:
    - Datum
    - int
    - uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2432
      start: 2397
    functionDepth: 3
    functionLinenumber: 2397
    functionLinenumberEnd: 2432
    functionName: InvalidateConstraintCacheCallBack
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 0
    functionsReached:
    - Assert
    - dclist_delete_from
    - dclist_container
    - dclist_foreach_modify
    - dclist_count
    linkageType: ''
    returnType: void
    signature: void InvalidateConstraintCacheCallBack(Datum arg, int cacheid, uint32
      hashvalue)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GetUserIdAndSecContext
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2457,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2458,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2458,1
    - Dst: SPI_prepare
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2463,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2466,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2466,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2469,1
    - Dst: SPI_keepplan
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2472,1
    - Dst: ri_HashPreparedPlan
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2473,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 6
    argNames:
    - querystr
    - nargs
    - argtypes
    - qkey
    - fk_rel
    - pk_rel
    argTypes:
    - char*
    - int
    - Oid*
    - RI_QueryKey*
    - Relation
    - Relation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2476
      start: 2438
    functionDepth: 2
    functionLinenumber: 2438
    functionLinenumberEnd: 2476
    functionName: ri_PlanCheck
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 6
    functionsReached:
    - GetUserIdAndSecContext
    - SetUserIdAndSecContext
    - SPI_result_code_string
    - SPI_prepare
    - elog
    - RelationGetForm
    - SPI_keepplan
    - ri_HashPreparedPlan
    linkageType: ''
    returnType: SPIPlanPtr
    signature: "SPIPlanPtr ri_PlanCheck(const char *querystr, int nargs, Oid *argtypes,\n\t\t\t
      RI_QueryKey *qkey, Relation fk_rel, Relation pk_rel)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ri_ExtractValues
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2531,1
    - Dst: ri_ExtractValues
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2534,1
    - Dst: ri_ExtractValues
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2539,1
    - Dst: IsolationUsesXactSnapshot
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2554,1
    - Dst: CommandCounterIncrement
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2556,1
    - Dst: GetLatestSnapshot
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2557,1
    - Dst: GetTransactionSnapshot
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2558,1
    - Dst: GetUserIdAndSecContext
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2576,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2577,1
    - Dst: RelationGetForm
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2577,1
    - Dst: SPI_execute_snapshot
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2582,1
    - Dst: SetUserIdAndSecContext
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2588,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2592,1
    - Dst: SPI_result_code_string
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2592,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2595,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2596,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2597,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2598,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2599,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2600,1
    - Dst: errhint
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2601,1
    - Dst: ri_ReportViolation
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2607,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 10
    argNames:
    - riinfo
    - qkey
    - qplan
    - fk_rel
    - pk_rel
    - oldslot
    - newslot
    - is_restrict
    - detectNewRows
    - expect_OK
    argTypes:
    - RI_ConstraintInfo*
    - RI_QueryKey*
    - SPIPlanPtr
    - Relation
    - Relation
    - TupleTableSlot*
    - TupleTableSlot*
    - bool
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2614
      start: 2481
    functionDepth: 2
    functionLinenumber: 2481
    functionLinenumberEnd: 2614
    functionName: ri_PerformCheck
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 6
    functionsReached:
    - GetUserIdAndSecContext
    - SetUserIdAndSecContext
    - errmsg
    - GetLatestSnapshot
    - NameStr
    - CommandCounterIncrement
    - ri_ExtractValues
    - ri_ReportViolation
    - GetTransactionSnapshot
    - SPI_result_code_string
    - ereport
    - elog
    - RelationGetForm
    - errhint
    - IsolationUsesXactSnapshot
    - RelationGetRelationName
    - errcode
    - SPI_execute_snapshot
    linkageType: ''
    returnType: bool
    signature: "bool ri_PerformCheck(const RI_ConstraintInfo *riinfo,\n\t\t\t\tRI_QueryKey
      *qkey, SPIPlanPtr qplan,\n\t\t\t\tRelation fk_rel, Relation pk_rel,\n\t\t\t\tTupleTableSlot
      *oldslot, TupleTableSlot *newslot,\n\t\t\t\tbool is_restrict,\n\t\t\t\tbool
      detectNewRows, int expect_OK)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2634,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 6
    argNames:
    - rel
    - slot
    - riinfo
    - rel_is_pk
    - vals
    - nulls
    argTypes:
    - Relation
    - TupleTableSlot*
    - RI_ConstraintInfo*
    - bool
    - Datum*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2637
      start: 2619
    functionDepth: 3
    functionLinenumber: 2619
    functionLinenumberEnd: 2637
    functionName: ri_ExtractValues
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 1
    functionsReached:
    - slot_getattr
    linkageType: ''
    returnType: void
    signature: "void ri_ExtractValues(Relation rel, TupleTableSlot *slot,\n\t\t\t\t
      const RI_ConstraintInfo *riinfo, bool rel_is_pk,\n\t\t\t\t Datum *vals, char
      *nulls)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: check_enable_rls
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2697,1
    - Dst: pg_class_aclcheck
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2699,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2699,1
    - Dst: pg_attribute_aclcheck
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2705,1
    - Dst: GetUserId
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2706,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2724,1
    - Dst: initStringInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2725,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2729,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2735,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2737,1
    - Dst: getTypeOutputInfo
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2743,1
    - Dst: OidOutputFunctionCall
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2744,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2751,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2752,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2754,1
    - Dst: appendStringInfoString
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2755,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2760,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2761,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2762,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2763,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2764,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2765,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2767,1
    - Dst: errtableconstraint
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2768,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2768,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2770,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2771,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2772,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2773,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2774,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2776,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2778,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2779,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2780,1
    - Dst: errtableconstraint
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2781,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2781,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2783,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2784,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2785,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2786,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2787,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2788,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2790,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2792,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2793,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2794,1
    - Dst: errtableconstraint
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2795,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2795,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2797,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2798,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2799,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2800,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2801,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2802,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2804,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2806,1
    - Dst: errdetail
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2807,1
    - Dst: RelationGetRelationName
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2808,1
    - Dst: errtableconstraint
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2809,1
    - Dst: NameStr
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2809,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 54
    argCount: 8
    argNames:
    - riinfo
    - pk_rel
    - fk_rel
    - violatorslot
    - tupdesc
    - queryno
    - is_restrict
    - partgone
    argTypes:
    - RI_ConstraintInfo*
    - Relation
    - Relation
    - TupleTableSlot*
    - TupleDesc
    - int
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2810
      start: 2648
    functionDepth: 3
    functionLinenumber: 2648
    functionLinenumberEnd: 2810
    functionName: ri_ReportViolation
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 3
    functionsReached:
    - errmsg
    - errcode
    - errtableconstraint
    - NameStr
    - RelationGetRelationName
    - slot_getattr
    - getTypeOutputInfo
    - appendStringInfoString
    - TupleDescAttr
    - pg_class_aclcheck
    - pg_attribute_aclcheck
    - ereport
    - OidOutputFunctionCall
    - initStringInfo
    - check_enable_rls
    - errdetail
    - GetUserId
    linkageType: ''
    returnType: void
    signature: "void ri_ReportViolation(const RI_ConstraintInfo *riinfo,\n\t\t\t\t
      \  Relation pk_rel, Relation fk_rel,\n\t\t\t\t   TupleTableSlot *violatorslot,
      TupleDesc tupdesc,\n\t\t\t\t   int queryno, bool is_restrict, bool partgone)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: slot_attisnull
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2836,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - tupDesc
    - slot
    - riinfo
    - rel_is_pk
    argTypes:
    - TupleDesc
    - TupleTableSlot*
    - RI_ConstraintInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2849
      start: 2820
    functionDepth: 3
    functionLinenumber: 2820
    functionLinenumberEnd: 2849
    functionName: ri_NullCheck
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 5
    functionsReached:
    - slot_attisnull
    linkageType: ''
    returnType: int
    signature: "int ri_NullCheck(TupleDesc tupDesc,\n\t\t\t TupleTableSlot *slot,\n\t\t\t
      const RI_ConstraintInfo *riinfo, bool rel_is_pk)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2864,1
    - Dst: CacheRegisterSyscacheCallback
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2869,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2875,1
    - Dst: hash_create
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2881,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2884
      start: 2857
    functionDepth: 2
    functionLinenumber: 2857
    functionLinenumberEnd: 2884
    functionName: ri_InitHashTables
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 1
    functionsReached:
    - hash_create
    - CacheRegisterSyscacheCallback
    linkageType: ''
    returnType: void
    signature: void ri_InitHashTables(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ri_InitHashTables
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2903,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2908,1
    - Dst: SPI_plan_is_valid
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2925,1
    - Dst: SPI_freeplan
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2934,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - key
    argTypes:
    - RI_QueryKey*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2937
      start: 2893
    functionDepth: 3
    functionLinenumber: 2893
    functionLinenumberEnd: 2937
    functionName: ri_FetchPreparedPlan
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 6
    functionsReached:
    - SPI_plan_is_valid
    - SPI_freeplan
    - ri_InitHashTables
    - hash_search
    linkageType: ''
    returnType: SPIPlanPtr
    signature: SPIPlanPtr ri_FetchPreparedPlan(RI_QueryKey *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ri_InitHashTables
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2955,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2961,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:2964,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - key
    - plan
    argTypes:
    - RI_QueryKey*
    - SPIPlanPtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2966
      start: 2945
    functionDepth: 3
    functionLinenumber: 2945
    functionLinenumberEnd: 2966
    functionName: ri_HashPreparedPlan
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 1
    functionsReached:
    - Assert
    - ri_InitHashTables
    - hash_search
    linkageType: ''
    returnType: void
    signature: void ri_HashPreparedPlan(RI_QueryKey *key, SPIPlanPtr plan)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3003,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3010,1
    - Dst: TupleDescCompactAttr
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3024,1
    - Dst: datum_image_eq
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3026,1
    - Dst: ri_CompareWithCast
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3048,1
    - Dst: RIAttType
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3048,1
    - Dst: RIAttCollation
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3048,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 5
    argNames:
    - rel
    - oldslot
    - newslot
    - riinfo
    - rel_is_pk
    argTypes:
    - Relation
    - TupleTableSlot*
    - TupleTableSlot*
    - RI_ConstraintInfo*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3055
      start: 2982
    functionDepth: 3
    functionLinenumber: 2982
    functionLinenumberEnd: 3055
    functionName: ri_KeysEqual
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 2
    functionsReached:
    - RIAttCollation
    - datum_image_eq
    - RIAttType
    - ri_CompareWithCast
    - TupleDescCompactAttr
    - slot_getattr
    linkageType: ''
    returnType: bool
    signature: "bool ri_KeysEqual(Relation rel, TupleTableSlot *oldslot, TupleTableSlot
      *newslot,\n\t\t\t const RI_ConstraintInfo *riinfo, bool rel_is_pk)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ri_HashCompareOp
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3072,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3075,1
    - Dst: FunctionCall3
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3077,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3079,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3080,1
    - Dst: FunctionCall3
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3081,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3083,1
    - Dst: BoolGetDatum
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3084,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3105,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - eq_opr
    - typeid
    - collid
    - lhs
    - rhs
    argTypes:
    - Oid
    - Oid
    - Oid
    - Datum
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3106
      start: 3068
    functionDepth: 1
    functionLinenumber: 3068
    functionLinenumberEnd: 3106
    functionName: ri_CompareWithCast
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 1
    functionsReached:
    - FunctionCall2Coll
    - BoolGetDatum
    - Int32GetDatum
    - ri_HashCompareOp
    - OidIsValid
    - FunctionCall3
    - DatumGetBool
    linkageType: ''
    returnType: bool
    signature: "bool ri_CompareWithCast(Oid eq_opr, Oid typeid, Oid collid,\n\t\t\t\t
      \  Datum lhs, Datum rhs)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ri_InitHashTables
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3125,1
    - Dst: hash_search
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3133,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3152,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3152,1
    - Dst: op_input_types
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3167,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3168,1
    - Dst: find_coercion_pathway
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3173,1
    - Dst: IsBinaryCoercible
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3185,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3186,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3187,1
    - Dst: format_type_be
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3188,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3191,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/utils/adt/ri_triggers.c:3192,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - eq_opr
    - typeid
    argTypes:
    - Oid
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3200
      start: 3114
    functionDepth: 4
    functionLinenumber: 3114
    functionLinenumberEnd: 3200
    functionName: ri_HashCompareOp
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 1
    functionsReached:
    - Assert
    - op_input_types
    - find_coercion_pathway
    - format_type_be
    - get_opcode
    - hash_search
    - elog
    - fmgr_info_cxt
    - IsBinaryCoercible
    - OidIsValid
    - ri_InitHashTables
    linkageType: ''
    returnType: RI_CompareHashEntry
    signature: 'RI_CompareHashEntry *

      ri_HashCompareOp(Oid eq_opr, Oid typeid)'
  - BBCount: 13
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 1
    argNames:
    - tgfoid
    argTypes:
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3230
      start: 3207
    functionDepth: 0
    functionLinenumber: 3207
    functionLinenumberEnd: 3230
    functionName: RI_FKey_trigger_type
    functionSourceFile: /src/postgres/src/backend/utils/adt/ri_triggers.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int RI_FKey_trigger_type(Oid tgfoid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:88,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:89,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 91
    functionName: float_overflow_error
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 9
    functionsReached:
    - errmsg
    - errcode
    - ereport
    linkageType: ''
    returnType: pg_noinline
    signature: pg_noinline float_overflow_error(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:96,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:97,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 99
    functionName: float_underflow_error
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 5
    functionsReached:
    - errmsg
    - errcode
    - ereport
    linkageType: ''
    returnType: pg_noinline
    signature: pg_noinline float_underflow_error(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:104,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:105,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 107
    functionName: float_zero_divide_error
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 2
    functionsReached:
    - errmsg
    - errcode
    - ereport
    linkageType: ''
    returnType: pg_noinline
    signature: pg_noinline float_zero_divide_error(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:120,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - val
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 128
    functionName: is_infinite
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isinf
    linkageType: ''
    returnType: int
    signature: int is_infinite(double val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/float.c:166,1
    - Dst: PG_RETURN_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:168,1
    - Dst: float4in_internal
      Src: /src/postgres/src/backend/utils/adt/float.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 170
    functionName: float4in
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT4
    - PG_GETARG_CSTRING
    - float4in_internal
    linkageType: ''
    returnType: Datum
    signature: Datum float4in(PG_FUNCTION_ARGS)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/float.c:197,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/float.c:205,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:206,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:207,1
    - Dst: strtof
      Src: /src/postgres/src/backend/utils/adt/float.c:211,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/float.c:228,1
    - Dst: get_float4_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:230,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/float.c:233,1
    - Dst: get_float4_infinity
      Src: /src/postgres/src/backend/utils/adt/float.c:235,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/float.c:238,1
    - Dst: get_float4_infinity
      Src: /src/postgres/src/backend/utils/adt/float.c:240,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/float.c:243,1
    - Dst: get_float4_infinity
      Src: /src/postgres/src/backend/utils/adt/float.c:245,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/float.c:248,1
    - Dst: get_float4_infinity
      Src: /src/postgres/src/backend/utils/adt/float.c:250,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/float.c:253,1
    - Dst: get_float4_infinity
      Src: /src/postgres/src/backend/utils/adt/float.c:255,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/float.c:258,1
    - Dst: get_float4_infinity
      Src: /src/postgres/src/backend/utils/adt/float.c:260,1
    - Dst: defined
      Src: /src/postgres/src/backend/utils/adt/float.c:273,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:274,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/float.c:281,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/float.c:285,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:286,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:287,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/float.c:292,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:293,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:294,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/float.c:299,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/float.c:306,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:307,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:308,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 51
    argCount: 5
    argNames:
    - num
    - endptr_p
    - type_name
    - orig_string
    - escontext
    argTypes:
    - char*
    - char**
    - char*
    - char*
    - struct Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 312
    functionName: float4in_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 1
    functionsReached:
    - errmsg
    - strtof
    - isinf
    - defined
    - pstrdup
    - ereturn
    - get_float4_nan
    - pg_strncasecmp
    - isspace
    - errcode
    - get_float4_infinity
    linkageType: ''
    returnType: float4
    signature: "float4 float4in_internal(char *num, char **endptr_p,\n\t\t\t\t  const
      char *type_name, const char *orig_string,\n\t\t\t\t  struct Node *escontext)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:321,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/float.c:322,1
    - Dst: float_to_shortest_decimal_buf
      Src: /src/postgres/src/backend/utils/adt/float.c:327,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/float.c:328,1
    - Dst: pg_strfromd
      Src: /src/postgres/src/backend/utils/adt/float.c:331,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/float.c:332,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 318
    functionDepth: 5
    functionLinenumber: 318
    functionLinenumberEnd: 333
    functionName: float4out
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - palloc
    - pg_strfromd
    - PG_RETURN_CSTRING
    - PG_GETARG_FLOAT4
    - float_to_shortest_decimal_buf
    linkageType: ''
    returnType: Datum
    signature: Datum float4out(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/float.c:341,1
    - Dst: PG_RETURN_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:343,1
    - Dst: pq_getmsgfloat4
      Src: /src/postgres/src/backend/utils/adt/float.c:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 338
    functionDepth: 3
    functionLinenumber: 338
    functionLinenumberEnd: 344
    functionName: float4recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_FLOAT4
    - pq_getmsgfloat4
    linkageType: ''
    returnType: Datum
    signature: Datum float4recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:352,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/float.c:355,1
    - Dst: pq_sendfloat4
      Src: /src/postgres/src/backend/utils/adt/float.c:356,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/float.c:357,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/float.c:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 349
    functionDepth: 4
    functionLinenumber: 349
    functionLinenumberEnd: 358
    functionName: float4send
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - pq_sendfloat4
    - PG_RETURN_BYTEA_P
    - PG_GETARG_FLOAT4
    - pq_begintypsend
    linkageType: ''
    returnType: Datum
    signature: Datum float4send(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_CSTRING
      Src: /src/postgres/src/backend/utils/adt/float.c:366,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:368,1
    - Dst: float8in_internal
      Src: /src/postgres/src/backend/utils/adt/float.c:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 363
    functionDepth: 1
    functionLinenumber: 363
    functionLinenumberEnd: 370
    functionName: float8in
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_CSTRING
    - PG_RETURN_FLOAT8
    - float8in_internal
    linkageType: ''
    returnType: Datum
    signature: Datum float8in(PG_FUNCTION_ARGS)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/float.c:403,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/float.c:411,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:412,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:413,1
    - Dst: strtod
      Src: /src/postgres/src/backend/utils/adt/float.c:417,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/float.c:434,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:436,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/float.c:439,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/float.c:441,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/float.c:444,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/float.c:446,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/float.c:449,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/float.c:451,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/float.c:454,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/float.c:456,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/float.c:459,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/float.c:461,1
    - Dst: pg_strncasecmp
      Src: /src/postgres/src/backend/utils/adt/float.c:464,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/float.c:466,1
    - Dst: pstrdup
      Src: /src/postgres/src/backend/utils/adt/float.c:484,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/float.c:487,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:488,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:489,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/float.c:494,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:495,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:496,1
    - Dst: isspace
      Src: /src/postgres/src/backend/utils/adt/float.c:501,1
    - Dst: ereturn
      Src: /src/postgres/src/backend/utils/adt/float.c:508,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:509,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:510,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 51
    argCount: 5
    argNames:
    - num
    - endptr_p
    - type_name
    - orig_string
    - escontext
    argTypes:
    - char*
    - char**
    - char*
    - char*
    - struct Node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 394
    functionDepth: 2
    functionLinenumber: 394
    functionLinenumberEnd: 514
    functionName: float8in_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 2
    functionsReached:
    - errmsg
    - get_float8_nan
    - pstrdup
    - ereturn
    - strtod
    - pg_strncasecmp
    - isspace
    - errcode
    - get_float8_infinity
    linkageType: ''
    returnType: float8
    signature: "float8 float8in_internal(char *num, char **endptr_p,\n\t\t\t\t  const
      char *type_name, const char *orig_string,\n\t\t\t\t  struct Node *escontext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:524,1
    - Dst: PG_RETURN_CSTRING
      Src: /src/postgres/src/backend/utils/adt/float.c:526,1
    - Dst: float8out_internal
      Src: /src/postgres/src/backend/utils/adt/float.c:526,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 521
    functionDepth: 1
    functionLinenumber: 521
    functionLinenumberEnd: 527
    functionName: float8out
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_CSTRING
    - float8out_internal
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8out(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/float.c:539,1
    - Dst: double_to_shortest_decimal_buf
      Src: /src/postgres/src/backend/utils/adt/float.c:544,1
    - Dst: pg_strfromd
      Src: /src/postgres/src/backend/utils/adt/float.c:548,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - num
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 536
    functionDepth: 4
    functionLinenumber: 536
    functionLinenumberEnd: 550
    functionName: float8out_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 4
    functionsReached:
    - pg_strfromd
    - double_to_shortest_decimal_buf
    - palloc
    linkageType: ''
    returnType: char
    signature: 'char *

      float8out_internal(double num)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/float.c:558,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:560,1
    - Dst: pq_getmsgfloat8
      Src: /src/postgres/src/backend/utils/adt/float.c:560,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 555
    functionDepth: 3
    functionLinenumber: 555
    functionLinenumberEnd: 561
    functionName: float8recv
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_FLOAT8
    - pq_getmsgfloat8
    linkageType: ''
    returnType: Datum
    signature: Datum float8recv(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:569,1
    - Dst: pq_begintypsend
      Src: /src/postgres/src/backend/utils/adt/float.c:572,1
    - Dst: pq_sendfloat8
      Src: /src/postgres/src/backend/utils/adt/float.c:573,1
    - Dst: PG_RETURN_BYTEA_P
      Src: /src/postgres/src/backend/utils/adt/float.c:574,1
    - Dst: pq_endtypsend
      Src: /src/postgres/src/backend/utils/adt/float.c:574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 566
    functionDepth: 4
    functionLinenumber: 566
    functionLinenumberEnd: 575
    functionName: float8send
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - pq_endtypsend
    - PG_GETARG_FLOAT8
    - pq_sendfloat8
    - PG_RETURN_BYTEA_P
    - pq_begintypsend
    linkageType: ''
    returnType: Datum
    signature: Datum float8send(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:593,1
    - Dst: PG_RETURN_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:595,1
    - Dst: fabsf
      Src: /src/postgres/src/backend/utils/adt/float.c:595,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 590
    functionDepth: 1
    functionLinenumber: 590
    functionLinenumberEnd: 596
    functionName: float4abs
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT4
    - PG_GETARG_FLOAT4
    - fabsf
    linkageType: ''
    returnType: Datum
    signature: Datum float4abs(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:604,1
    - Dst: PG_RETURN_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 601
    functionDepth: 1
    functionLinenumber: 601
    functionLinenumberEnd: 609
    functionName: float4um
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT4
    - PG_GETARG_FLOAT4
    linkageType: ''
    returnType: Datum
    signature: Datum float4um(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:614,1
    - Dst: PG_RETURN_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:616,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 611
    functionDepth: 1
    functionLinenumber: 611
    functionLinenumberEnd: 617
    functionName: float4up
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT4
    - PG_GETARG_FLOAT4
    linkageType: ''
    returnType: Datum
    signature: Datum float4up(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:622,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:623,1
    - Dst: float4_gt
      Src: /src/postgres/src/backend/utils/adt/float.c:626,1
    - Dst: PG_RETURN_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:630,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 619
    functionDepth: 2
    functionLinenumber: 619
    functionLinenumberEnd: 631
    functionName: float4larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT4
    - PG_GETARG_FLOAT4
    - float4_gt
    linkageType: ''
    returnType: Datum
    signature: Datum float4larger(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:636,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:637,1
    - Dst: float4_lt
      Src: /src/postgres/src/backend/utils/adt/float.c:640,1
    - Dst: PG_RETURN_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:644,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 633
    functionDepth: 2
    functionLinenumber: 633
    functionLinenumberEnd: 645
    functionName: float4smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT4
    - PG_GETARG_FLOAT4
    - float4_lt
    linkageType: ''
    returnType: Datum
    signature: Datum float4smaller(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:659,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:661,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/float.c:661,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 656
    functionDepth: 1
    functionLinenumber: 656
    functionLinenumberEnd: 662
    functionName: float8abs
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - fabs
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8abs(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:671,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:675,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 668
    functionDepth: 1
    functionLinenumber: 668
    functionLinenumberEnd: 676
    functionName: float8um
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8um(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:681,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:683,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 678
    functionDepth: 1
    functionLinenumber: 678
    functionLinenumberEnd: 684
    functionName: float8up
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8up(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:689,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:690,1
    - Dst: float8_gt
      Src: /src/postgres/src/backend/utils/adt/float.c:693,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:697,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 686
    functionDepth: 2
    functionLinenumber: 686
    functionLinenumberEnd: 698
    functionName: float8larger
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - float8_gt
    - PG_RETURN_FLOAT8
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8larger(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:703,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:704,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/float.c:707,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:711,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 700
    functionDepth: 2
    functionLinenumber: 700
    functionLinenumberEnd: 712
    functionName: float8smaller
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - float8_lt
    - PG_RETURN_FLOAT8
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8smaller(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:730,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:731,1
    - Dst: PG_RETURN_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:733,1
    - Dst: float4_pl
      Src: /src/postgres/src/backend/utils/adt/float.c:733,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 727
    functionDepth: 2
    functionLinenumber: 727
    functionLinenumberEnd: 734
    functionName: float4pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT4
    - float4_pl
    - PG_GETARG_FLOAT4
    linkageType: ''
    returnType: Datum
    signature: Datum float4pl(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:739,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:740,1
    - Dst: PG_RETURN_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:742,1
    - Dst: float4_mi
      Src: /src/postgres/src/backend/utils/adt/float.c:742,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 736
    functionDepth: 2
    functionLinenumber: 736
    functionLinenumberEnd: 743
    functionName: float4mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT4
    - PG_GETARG_FLOAT4
    - float4_mi
    linkageType: ''
    returnType: Datum
    signature: Datum float4mi(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:748,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:749,1
    - Dst: PG_RETURN_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:751,1
    - Dst: float4_mul
      Src: /src/postgres/src/backend/utils/adt/float.c:751,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 745
    functionDepth: 2
    functionLinenumber: 745
    functionLinenumberEnd: 752
    functionName: float4mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT4
    - PG_GETARG_FLOAT4
    - float4_mul
    linkageType: ''
    returnType: Datum
    signature: Datum float4mul(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:757,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:758,1
    - Dst: PG_RETURN_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:760,1
    - Dst: float4_div
      Src: /src/postgres/src/backend/utils/adt/float.c:760,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 754
    functionDepth: 2
    functionLinenumber: 754
    functionLinenumberEnd: 761
    functionName: float4div
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT4
    - PG_GETARG_FLOAT4
    - float4_div
    linkageType: ''
    returnType: Datum
    signature: Datum float4div(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:772,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:773,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:775,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/float.c:775,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 776
      start: 769
    functionDepth: 2
    functionLinenumber: 769
    functionLinenumberEnd: 776
    functionName: float8pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - float8_pl
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8pl(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:781,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:782,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:784,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/float.c:784,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 778
    functionDepth: 2
    functionLinenumber: 778
    functionLinenumberEnd: 785
    functionName: float8mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - float8_mi
    - PG_RETURN_FLOAT8
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8mi(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:790,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:791,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:793,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/float.c:793,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 794
      start: 787
    functionDepth: 2
    functionLinenumber: 787
    functionLinenumberEnd: 794
    functionName: float8mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - PG_GETARG_FLOAT8
    - float8_mul
    linkageType: ''
    returnType: Datum
    signature: Datum float8mul(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:799,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:800,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:802,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/float.c:802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 796
    functionDepth: 2
    functionLinenumber: 796
    functionLinenumberEnd: 803
    functionName: float8div
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - PG_GETARG_FLOAT8
    - float8_div
    linkageType: ''
    returnType: Datum
    signature: Datum float8div(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: float4_gt
      Src: /src/postgres/src/backend/utils/adt/float.c:818,1
    - Dst: float4_lt
      Src: /src/postgres/src/backend/utils/adt/float.c:820,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - float4
    - float4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 815
    functionDepth: 2
    functionLinenumber: 815
    functionLinenumberEnd: 823
    functionName: float4_cmp_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - float4_lt
    - float4_gt
    linkageType: ''
    returnType: int
    signature: int float4_cmp_internal(float4 a, float4 b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:828,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:829,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:831,1
    - Dst: float4_eq
      Src: /src/postgres/src/backend/utils/adt/float.c:831,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 832
      start: 825
    functionDepth: 2
    functionLinenumber: 825
    functionLinenumberEnd: 832
    functionName: float4eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FLOAT4
    - PG_RETURN_BOOL
    - float4_eq
    linkageType: ''
    returnType: Datum
    signature: Datum float4eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:837,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:838,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:840,1
    - Dst: float4_ne
      Src: /src/postgres/src/backend/utils/adt/float.c:840,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 834
    functionDepth: 2
    functionLinenumber: 834
    functionLinenumberEnd: 841
    functionName: float4ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - float4_ne
    - PG_GETARG_FLOAT4
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum float4ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:846,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:847,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:849,1
    - Dst: float4_lt
      Src: /src/postgres/src/backend/utils/adt/float.c:849,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 850
      start: 843
    functionDepth: 2
    functionLinenumber: 843
    functionLinenumberEnd: 850
    functionName: float4lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FLOAT4
    - PG_RETURN_BOOL
    - float4_lt
    linkageType: ''
    returnType: Datum
    signature: Datum float4lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:855,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:856,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:858,1
    - Dst: float4_le
      Src: /src/postgres/src/backend/utils/adt/float.c:858,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 852
    functionDepth: 2
    functionLinenumber: 852
    functionLinenumberEnd: 859
    functionName: float4le
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FLOAT4
    - float4_le
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum float4le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:864,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:865,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:867,1
    - Dst: float4_gt
      Src: /src/postgres/src/backend/utils/adt/float.c:867,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 861
    functionDepth: 2
    functionLinenumber: 861
    functionLinenumberEnd: 868
    functionName: float4gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FLOAT4
    - PG_RETURN_BOOL
    - float4_gt
    linkageType: ''
    returnType: Datum
    signature: Datum float4gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:873,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:874,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:876,1
    - Dst: float4_ge
      Src: /src/postgres/src/backend/utils/adt/float.c:876,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 870
    functionDepth: 2
    functionLinenumber: 870
    functionLinenumberEnd: 877
    functionName: float4ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - float4_ge
    - PG_GETARG_FLOAT4
    - PG_RETURN_BOOL
    linkageType: ''
    returnType: Datum
    signature: Datum float4ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:882,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:883,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/float.c:885,1
    - Dst: float4_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/float.c:885,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 879
    functionDepth: 3
    functionLinenumber: 879
    functionLinenumberEnd: 886
    functionName: btfloat4cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_FLOAT4
    - float4_cmp_internal
    linkageType: ''
    returnType: Datum
    signature: Datum btfloat4cmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetFloat4
      Src: /src/postgres/src/backend/utils/adt/float.c:891,1
    - Dst: DatumGetFloat4
      Src: /src/postgres/src/backend/utils/adt/float.c:892,1
    - Dst: float4_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/float.c:894,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - x
    - y
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 888
    functionDepth: 3
    functionLinenumber: 888
    functionLinenumberEnd: 895
    functionName: btfloat4fastcmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - float4_cmp_internal
    - DatumGetFloat4
    linkageType: ''
    returnType: int
    signature: int btfloat4fastcmp(Datum x, Datum y, SortSupport ssup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/float.c:900,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/float.c:903,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 897
    functionDepth: 1
    functionLinenumber: 897
    functionLinenumberEnd: 904
    functionName: btfloat4sortsupport
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum btfloat4sortsupport(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: float8_gt
      Src: /src/postgres/src/backend/utils/adt/float.c:912,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/float.c:914,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - float8
    - float8
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 909
    functionDepth: 2
    functionLinenumber: 909
    functionLinenumberEnd: 917
    functionName: float8_cmp_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 4
    functionsReached:
    - float8_lt
    - float8_gt
    linkageType: ''
    returnType: int
    signature: int float8_cmp_internal(float8 a, float8 b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:922,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:923,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:925,1
    - Dst: float8_eq
      Src: /src/postgres/src/backend/utils/adt/float.c:925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 919
    functionDepth: 2
    functionLinenumber: 919
    functionLinenumberEnd: 926
    functionName: float8eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - float8_eq
    - PG_RETURN_BOOL
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:931,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:932,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:934,1
    - Dst: float8_ne
      Src: /src/postgres/src/backend/utils/adt/float.c:934,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 935
      start: 928
    functionDepth: 2
    functionLinenumber: 928
    functionLinenumberEnd: 935
    functionName: float8ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - float8_ne
    - PG_RETURN_BOOL
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:940,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:941,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:943,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/float.c:943,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 944
      start: 937
    functionDepth: 2
    functionLinenumber: 937
    functionLinenumberEnd: 944
    functionName: float8lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - float8_lt
    - PG_RETURN_BOOL
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:949,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:950,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:952,1
    - Dst: float8_le
      Src: /src/postgres/src/backend/utils/adt/float.c:952,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 946
    functionDepth: 2
    functionLinenumber: 946
    functionLinenumberEnd: 953
    functionName: float8le
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - float8_le
    - PG_RETURN_BOOL
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:958,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:959,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:961,1
    - Dst: float8_gt
      Src: /src/postgres/src/backend/utils/adt/float.c:961,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 955
    functionDepth: 2
    functionLinenumber: 955
    functionLinenumberEnd: 962
    functionName: float8gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - float8_gt
    - PG_RETURN_BOOL
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:967,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:968,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:970,1
    - Dst: float8_ge
      Src: /src/postgres/src/backend/utils/adt/float.c:970,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 964
    functionDepth: 2
    functionLinenumber: 964
    functionLinenumberEnd: 971
    functionName: float8ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - float8_ge
    - PG_RETURN_BOOL
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:976,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:977,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/float.c:979,1
    - Dst: float8_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/float.c:979,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 973
    functionDepth: 3
    functionLinenumber: 973
    functionLinenumberEnd: 980
    functionName: btfloat8cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - float8_cmp_internal
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum btfloat8cmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/float.c:985,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/float.c:986,1
    - Dst: float8_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/float.c:988,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - x
    - y
    - ssup
    argTypes:
    - Datum
    - Datum
    - SortSupport
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 982
    functionDepth: 3
    functionLinenumber: 982
    functionLinenumberEnd: 989
    functionName: btfloat8fastcmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - DatumGetFloat8
    - float8_cmp_internal
    linkageType: ''
    returnType: int
    signature: int btfloat8fastcmp(Datum x, Datum y, SortSupport ssup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/float.c:994,1
    - Dst: PG_RETURN_VOID
      Src: /src/postgres/src/backend/utils/adt/float.c:997,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 998
      start: 991
    functionDepth: 1
    functionLinenumber: 991
    functionLinenumberEnd: 998
    functionName: btfloat8sortsupport
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - PG_RETURN_VOID
    linkageType: ''
    returnType: Datum
    signature: Datum btfloat8sortsupport(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:1003,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1004,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/float.c:1007,1
    - Dst: float8_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/float.c:1007,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1008
      start: 1000
    functionDepth: 3
    functionLinenumber: 1000
    functionLinenumberEnd: 1008
    functionName: btfloat48cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_FLOAT4
    - float8_cmp_internal
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum btfloat48cmp(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1013,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:1014,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/float.c:1017,1
    - Dst: float8_cmp_internal
      Src: /src/postgres/src/backend/utils/adt/float.c:1017,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 1010
    functionDepth: 3
    functionLinenumber: 1010
    functionLinenumberEnd: 1018
    functionName: btfloat84cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_INT32
    - PG_GETARG_FLOAT4
    - float8_cmp_internal
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum btfloat84cmp(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1029,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1030,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1031,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:1032,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:1033,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:1040,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:1041,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:1042,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:1043,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:1050,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:1052,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:1053,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:1055,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:1057,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:1059,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1075,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1075,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:1077,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:1091,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:1093,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1094
      start: 1026
    functionDepth: 2
    functionLinenumber: 1026
    functionLinenumberEnd: 1094
    functionName: in_range_float8_float8
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - errmsg
    - isinf
    - PG_RETURN_BOOL
    - ereport
    - PG_GETARG_FLOAT8
    - PG_GETARG_BOOL
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum in_range_float8_float8(PG_FUNCTION_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:1105,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:1106,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1107,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:1108,1
    - Dst: PG_GETARG_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:1109,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:1116,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:1117,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:1118,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:1119,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:1126,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:1128,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:1129,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:1131,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:1133,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:1135,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1151,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1151,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:1153,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:1167,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:1169,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1170
      start: 1102
    functionDepth: 2
    functionLinenumber: 1102
    functionLinenumberEnd: 1170
    functionName: in_range_float4_float8
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - errmsg
    - isinf
    - PG_RETURN_BOOL
    - ereport
    - PG_GETARG_FLOAT8
    - PG_GETARG_BOOL
    - PG_GETARG_FLOAT4
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum in_range_float4_float8(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:1185,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1188
      start: 1182
    functionDepth: 1
    functionLinenumber: 1182
    functionLinenumberEnd: 1188
    functionName: ftod
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FLOAT4
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum ftod(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1197,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:1201,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1201,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1201,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:1202,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:1203,1
    - Dst: float_underflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:1204,1
    - Dst: PG_RETURN_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:1206,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1207
      start: 1194
    functionDepth: 3
    functionLinenumber: 1194
    functionLinenumberEnd: 1207
    functionName: dtof
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT4
    - isinf
    - PG_GETARG_FLOAT8
    - unlikely
    - float_overflow_error
    - float_underflow_error
    linkageType: ''
    returnType: Datum
    signature: Datum dtof(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1216,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/float.c:1223,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:1226,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:1226,1
    - Dst: FLOAT8_FITS_IN_INT32
      Src: /src/postgres/src/backend/utils/adt/float.c:1226,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:1227,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:1228,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:1229,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/float.c:1231,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1232
      start: 1213
    functionDepth: 2
    functionLinenumber: 1213
    functionLinenumberEnd: 1232
    functionName: dtoi4
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - errmsg
    - PG_RETURN_INT32
    - rint
    - PG_GETARG_FLOAT8
    - ereport
    - unlikely
    - FLOAT8_FITS_IN_INT32
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum dtoi4(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1241,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/float.c:1248,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:1251,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:1251,1
    - Dst: FLOAT8_FITS_IN_INT16
      Src: /src/postgres/src/backend/utils/adt/float.c:1251,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:1252,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:1253,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:1254,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/float.c:1256,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1257
      start: 1238
    functionDepth: 2
    functionLinenumber: 1238
    functionLinenumberEnd: 1257
    functionName: dtoi2
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - errmsg
    - FLOAT8_FITS_IN_INT16
    - rint
    - PG_GETARG_FLOAT8
    - ereport
    - PG_RETURN_INT16
    - unlikely
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum dtoi2(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/float.c:1266,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1269
      start: 1263
    functionDepth: 1
    functionLinenumber: 1263
    functionLinenumberEnd: 1269
    functionName: i4tod
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum i4tod(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/float.c:1278,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1281
      start: 1275
    functionDepth: 1
    functionLinenumber: 1275
    functionLinenumberEnd: 1281
    functionName: i2tod
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_INT16
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum i2tod(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:1290,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/float.c:1297,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:1300,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:1300,1
    - Dst: FLOAT4_FITS_IN_INT32
      Src: /src/postgres/src/backend/utils/adt/float.c:1300,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:1301,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:1302,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:1303,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/float.c:1305,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1306
      start: 1287
    functionDepth: 2
    functionLinenumber: 1287
    functionLinenumberEnd: 1306
    functionName: ftoi4
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - errmsg
    - PG_RETURN_INT32
    - FLOAT4_FITS_IN_INT32
    - rint
    - ereport
    - unlikely
    - PG_GETARG_FLOAT4
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum ftoi4(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:1315,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/float.c:1322,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:1325,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:1325,1
    - Dst: FLOAT4_FITS_IN_INT16
      Src: /src/postgres/src/backend/utils/adt/float.c:1325,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:1326,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:1327,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:1328,1
    - Dst: PG_RETURN_INT16
      Src: /src/postgres/src/backend/utils/adt/float.c:1330,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1331
      start: 1312
    functionDepth: 2
    functionLinenumber: 1312
    functionLinenumberEnd: 1331
    functionName: ftoi2
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - errmsg
    - rint
    - ereport
    - PG_RETURN_INT16
    - unlikely
    - FLOAT4_FITS_IN_INT16
    - PG_GETARG_FLOAT4
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum ftoi2(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/float.c:1340,1
    - Dst: PG_RETURN_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:1342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1343
      start: 1337
    functionDepth: 1
    functionLinenumber: 1337
    functionLinenumberEnd: 1343
    functionName: i4tof
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT4
    - PG_GETARG_INT32
    linkageType: ''
    returnType: Datum
    signature: Datum i4tof(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_INT16
      Src: /src/postgres/src/backend/utils/adt/float.c:1352,1
    - Dst: PG_RETURN_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:1354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1355
      start: 1349
    functionDepth: 1
    functionLinenumber: 1349
    functionLinenumberEnd: 1355
    functionName: i2tof
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT4
    - PG_GETARG_INT16
    linkageType: ''
    returnType: Datum
    signature: Datum i2tof(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1370,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1372,1
    - Dst: rint
      Src: /src/postgres/src/backend/utils/adt/float.c:1372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1373
      start: 1367
    functionDepth: 1
    functionLinenumber: 1367
    functionLinenumberEnd: 1373
    functionName: dround
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - rint
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum dround(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1382,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1384,1
    - Dst: ceil
      Src: /src/postgres/src/backend/utils/adt/float.c:1384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1385
      start: 1379
    functionDepth: 1
    functionLinenumber: 1379
    functionLinenumberEnd: 1385
    functionName: dceil
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - ceil
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum dceil(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1394,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1396,1
    - Dst: floor
      Src: /src/postgres/src/backend/utils/adt/float.c:1396,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1397
      start: 1391
    functionDepth: 1
    functionLinenumber: 1391
    functionLinenumberEnd: 1397
    functionName: dfloor
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - floor
    - PG_RETURN_FLOAT8
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum dfloor(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1407,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1417,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1418
      start: 1404
    functionDepth: 1
    functionLinenumber: 1404
    functionLinenumberEnd: 1418
    functionName: dsign
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum dsign(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1430,1
    - Dst: floor
      Src: /src/postgres/src/backend/utils/adt/float.c:1434,1
    - Dst: floor
      Src: /src/postgres/src/backend/utils/adt/float.c:1436,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1438,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1439
      start: 1427
    functionDepth: 1
    functionLinenumber: 1427
    functionLinenumberEnd: 1439
    functionName: dtrunc
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - floor
    - PG_RETURN_FLOAT8
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum dtrunc(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1448,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:1452,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:1453,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:1454,1
    - Dst: sqrt
      Src: /src/postgres/src/backend/utils/adt/float.c:1456,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:1457,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1457,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1457,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:1458,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:1459,1
    - Dst: float_underflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:1460,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1462,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1463
      start: 1445
    functionDepth: 3
    functionLinenumber: 1445
    functionLinenumberEnd: 1463
    functionName: dsqrt
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - errmsg
    - sqrt
    - isinf
    - PG_RETURN_FLOAT8
    - ereport
    - PG_GETARG_FLOAT8
    - unlikely
    - float_overflow_error
    - float_underflow_error
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum dsqrt(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1472,1
    - Dst: cbrt
      Src: /src/postgres/src/backend/utils/adt/float.c:1475,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:1476,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1476,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1476,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:1477,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:1478,1
    - Dst: float_underflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:1479,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1481,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1482
      start: 1469
    functionDepth: 3
    functionLinenumber: 1469
    functionLinenumberEnd: 1482
    functionName: dcbrt
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isinf
    - PG_RETURN_FLOAT8
    - PG_GETARG_FLOAT8
    - unlikely
    - cbrt
    - float_overflow_error
    - float_underflow_error
    linkageType: ''
    returnType: Datum
    signature: Datum dcbrt(PG_FUNCTION_ARGS)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1491,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1492,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:1501,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:1503,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1504,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:1504,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1505,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:1507,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1510,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:1510,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1511,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:1520,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:1521,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:1522,1
    - Dst: floor
      Src: /src/postgres/src/backend/utils/adt/float.c:1523,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:1524,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:1525,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:1526,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1533,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/float.c:1535,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1554,1
    - Dst: floor
      Src: /src/postgres/src/backend/utils/adt/float.c:1574,1
    - Dst: pow
      Src: /src/postgres/src/backend/utils/adt/float.c:1592,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:1593,1
    - Dst: fabs
      Src: /src/postgres/src/backend/utils/adt/float.c:1610,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:1615,1
    - Dst: float_underflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:1617,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:1623,1
    - Dst: float_underflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:1625,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:1629,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1629,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:1630,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:1631,1
    - Dst: float_underflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:1632,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1636,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 65
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1637
      start: 1488
    functionDepth: 3
    functionLinenumber: 1488
    functionLinenumberEnd: 1637
    functionName: dpow
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - errcode
    - errmsg
    - isinf
    - floor
    - float_underflow_error
    - ereport
    - PG_GETARG_FLOAT8
    - unlikely
    - pow
    - float_overflow_error
    - PG_RETURN_FLOAT8
    - fabs
    - get_float8_nan
    linkageType: ''
    returnType: Datum
    signature: Datum dpow(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1646,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:1654,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1656,1
    - Dst: exp
      Src: /src/postgres/src/backend/utils/adt/float.c:1668,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:1669,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:1672,1
    - Dst: float_underflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:1674,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:1676,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1676,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:1677,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:1678,1
    - Dst: float_underflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:1679,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1682,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1683
      start: 1643
    functionDepth: 3
    functionLinenumber: 1643
    functionLinenumberEnd: 1683
    functionName: dexp
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 1
    functionsReached:
    - isnan
    - isinf
    - PG_RETURN_FLOAT8
    - PG_GETARG_FLOAT8
    - unlikely
    - exp
    - float_overflow_error
    - float_underflow_error
    linkageType: ''
    returnType: Datum
    signature: Datum dexp(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1692,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:1700,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:1701,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:1702,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:1704,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:1705,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:1706,1
    - Dst: log
      Src: /src/postgres/src/backend/utils/adt/float.c:1708,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:1709,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1709,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1709,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:1710,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:1711,1
    - Dst: float_underflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:1712,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1714,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1715
      start: 1689
    functionDepth: 3
    functionLinenumber: 1689
    functionLinenumberEnd: 1715
    functionName: dlog1
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - errmsg
    - log
    - isinf
    - PG_RETURN_FLOAT8
    - ereport
    - PG_GETARG_FLOAT8
    - unlikely
    - float_overflow_error
    - float_underflow_error
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum dlog1(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1724,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:1733,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:1734,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:1735,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:1737,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:1738,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:1739,1
    - Dst: log10
      Src: /src/postgres/src/backend/utils/adt/float.c:1741,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:1742,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1742,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1742,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:1743,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:1744,1
    - Dst: float_underflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:1745,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1747,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1748
      start: 1721
    functionDepth: 3
    functionLinenumber: 1721
    functionLinenumberEnd: 1748
    functionName: dlog10
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - errmsg
    - isinf
    - PG_RETURN_FLOAT8
    - ereport
    - PG_GETARG_FLOAT8
    - unlikely
    - log10
    - float_overflow_error
    - float_underflow_error
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum dlog10(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1757,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:1761,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1762,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:1762,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:1770,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:1771,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:1772,1
    - Dst: acos
      Src: /src/postgres/src/backend/utils/adt/float.c:1774,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:1775,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1775,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:1776,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1778,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1779
      start: 1754
    functionDepth: 3
    functionLinenumber: 1754
    functionLinenumberEnd: 1779
    functionName: dacos
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - errcode
    - errmsg
    - isinf
    - ereport
    - PG_GETARG_FLOAT8
    - acos
    - unlikely
    - float_overflow_error
    - PG_RETURN_FLOAT8
    - get_float8_nan
    linkageType: ''
    returnType: Datum
    signature: Datum dacos(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1788,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:1792,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1793,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:1793,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:1801,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:1802,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:1803,1
    - Dst: asin
      Src: /src/postgres/src/backend/utils/adt/float.c:1805,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:1806,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1806,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:1807,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1809,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1810
      start: 1785
    functionDepth: 3
    functionLinenumber: 1785
    functionLinenumberEnd: 1810
    functionName: dasin
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - errcode
    - errmsg
    - asin
    - isinf
    - ereport
    - PG_GETARG_FLOAT8
    - unlikely
    - float_overflow_error
    - PG_RETURN_FLOAT8
    - get_float8_nan
    linkageType: ''
    returnType: Datum
    signature: Datum dasin(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1819,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:1823,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1824,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:1824,1
    - Dst: atan
      Src: /src/postgres/src/backend/utils/adt/float.c:1831,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:1832,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1832,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:1833,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1835,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1836
      start: 1816
    functionDepth: 3
    functionLinenumber: 1816
    functionLinenumberEnd: 1836
    functionName: datan
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - isinf
    - PG_GETARG_FLOAT8
    - unlikely
    - float_overflow_error
    - atan
    - PG_RETURN_FLOAT8
    - get_float8_nan
    linkageType: ''
    returnType: Datum
    signature: Datum datan(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1845,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1846,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:1850,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:1850,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1851,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:1851,1
    - Dst: atan2
      Src: /src/postgres/src/backend/utils/adt/float.c:1857,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:1858,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1858,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:1859,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1861,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1862
      start: 1842
    functionDepth: 3
    functionLinenumber: 1842
    functionLinenumberEnd: 1862
    functionName: datan2
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - isinf
    - PG_GETARG_FLOAT8
    - atan2
    - unlikely
    - float_overflow_error
    - PG_RETURN_FLOAT8
    - get_float8_nan
    linkageType: ''
    returnType: Datum
    signature: Datum datan2(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1871,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:1875,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1876,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:1876,1
    - Dst: cos
      Src: /src/postgres/src/backend/utils/adt/float.c:1894,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1895,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:1896,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:1897,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:1898,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:1899,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1899,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:1900,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1902,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1903
      start: 1868
    functionDepth: 3
    functionLinenumber: 1868
    functionLinenumberEnd: 1903
    functionName: dcos
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - errcode
    - isinf
    - errmsg
    - PG_GETARG_FLOAT8
    - ereport
    - unlikely
    - cos
    - float_overflow_error
    - PG_RETURN_FLOAT8
    - get_float8_nan
    linkageType: ''
    returnType: Datum
    signature: Datum dcos(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1912,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:1916,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1917,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:1917,1
    - Dst: tan
      Src: /src/postgres/src/backend/utils/adt/float.c:1921,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1922,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:1923,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:1924,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:1925,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1930,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1931
      start: 1909
    functionDepth: 2
    functionLinenumber: 1909
    functionLinenumberEnd: 1931
    functionName: dcot
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - errcode
    - isinf
    - errmsg
    - tan
    - PG_GETARG_FLOAT8
    - ereport
    - PG_RETURN_FLOAT8
    - get_float8_nan
    linkageType: ''
    returnType: Datum
    signature: Datum dcot(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1940,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:1944,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1945,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:1945,1
    - Dst: sin
      Src: /src/postgres/src/backend/utils/adt/float.c:1949,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1950,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:1951,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:1952,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:1953,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:1954,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1954,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:1955,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1957,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1958
      start: 1937
    functionDepth: 3
    functionLinenumber: 1937
    functionLinenumberEnd: 1958
    functionName: dsin
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - errcode
    - isinf
    - errmsg
    - sin
    - PG_GETARG_FLOAT8
    - ereport
    - unlikely
    - float_overflow_error
    - PG_RETURN_FLOAT8
    - get_float8_nan
    linkageType: ''
    returnType: Datum
    signature: Datum dsin(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1967,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:1971,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1972,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:1972,1
    - Dst: tan
      Src: /src/postgres/src/backend/utils/adt/float.c:1976,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:1977,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:1978,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:1979,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:1980,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:1983,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1984
      start: 1964
    functionDepth: 2
    functionLinenumber: 1964
    functionLinenumberEnd: 1984
    functionName: dtan
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - errcode
    - isinf
    - errmsg
    - tan
    - PG_GETARG_FLOAT8
    - ereport
    - PG_RETURN_FLOAT8
    - get_float8_nan
    linkageType: ''
    returnType: Datum
    signature: Datum dtan(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sin
      Src: /src/postgres/src/backend/utils/adt/float.c:2021,1
    - Dst: cos
      Src: /src/postgres/src/backend/utils/adt/float.c:2022,1
    - Dst: asin
      Src: /src/postgres/src/backend/utils/adt/float.c:2023,1
    - Dst: acos
      Src: /src/postgres/src/backend/utils/adt/float.c:2024,1
    - Dst: atan
      Src: /src/postgres/src/backend/utils/adt/float.c:2025,1
    - Dst: sind_q1
      Src: /src/postgres/src/backend/utils/adt/float.c:2026,1
    - Dst: cosd_q1
      Src: /src/postgres/src/backend/utils/adt/float.c:2026,1
    - Dst: cosd_q1
      Src: /src/postgres/src/backend/utils/adt/float.c:2027,1
    - Dst: sind_q1
      Src: /src/postgres/src/backend/utils/adt/float.c:2027,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2029
      start: 2018
    functionDepth: 1
    functionLinenumber: 2018
    functionLinenumberEnd: 2029
    functionName: init_degree_constants
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - asin
    - sind_q1
    - sin
    - acos
    - cos
    - atan
    - cosd_q1
    linkageType: ''
    returnType: void
    signature: void init_degree_constants(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2036
      start: 2031
    functionDepth: 0
    functionLinenumber: 2031
    functionLinenumberEnd: 2036
    functionName: INIT_DEGREE_CONSTANTS
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INIT_DEGREE_CONSTANTS()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: asin
      Src: /src/postgres/src/backend/utils/adt/float.c:2058,1
    - Dst: acos
      Src: /src/postgres/src/backend/utils/adt/float.c:2064,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - x
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2068
      start: 2047
    functionDepth: 0
    functionLinenumber: 2047
    functionLinenumberEnd: 2068
    functionName: asind_q1
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - asin
    - acos
    linkageType: ''
    returnType: double
    signature: double asind_q1(double x)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: asin
      Src: /src/postgres/src/backend/utils/adt/float.c:2091,1
    - Dst: acos
      Src: /src/postgres/src/backend/utils/adt/float.c:2097,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - x
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2101
      start: 2080
    functionDepth: 0
    functionLinenumber: 2080
    functionLinenumberEnd: 2101
    functionName: acosd_q1
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - asin
    - acos
    linkageType: ''
    returnType: double
    signature: double acosd_q1(double x)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2110,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:2114,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2115,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:2115,1
    - Dst: INIT_DEGREE_CONSTANTS
      Src: /src/postgres/src/backend/utils/adt/float.c:2117,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:2125,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:2126,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:2127,1
    - Dst: acosd_q1
      Src: /src/postgres/src/backend/utils/adt/float.c:2130,1
    - Dst: asind_q1
      Src: /src/postgres/src/backend/utils/adt/float.c:2132,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:2134,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:2134,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:2135,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2137,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2138
      start: 2107
    functionDepth: 3
    functionLinenumber: 2107
    functionLinenumberEnd: 2138
    functionName: dacosd
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - errcode
    - errmsg
    - isinf
    - INIT_DEGREE_CONSTANTS
    - asind_q1
    - PG_GETARG_FLOAT8
    - ereport
    - unlikely
    - float_overflow_error
    - PG_RETURN_FLOAT8
    - acosd_q1
    - get_float8_nan
    linkageType: ''
    returnType: Datum
    signature: Datum dacosd(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2147,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:2151,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2152,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:2152,1
    - Dst: INIT_DEGREE_CONSTANTS
      Src: /src/postgres/src/backend/utils/adt/float.c:2154,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:2162,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:2163,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:2164,1
    - Dst: asind_q1
      Src: /src/postgres/src/backend/utils/adt/float.c:2167,1
    - Dst: asind_q1
      Src: /src/postgres/src/backend/utils/adt/float.c:2169,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:2171,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:2171,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:2172,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2174,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2175
      start: 2144
    functionDepth: 3
    functionLinenumber: 2144
    functionLinenumberEnd: 2175
    functionName: dasind
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - errcode
    - errmsg
    - isinf
    - INIT_DEGREE_CONSTANTS
    - asind_q1
    - PG_GETARG_FLOAT8
    - ereport
    - unlikely
    - float_overflow_error
    - PG_RETURN_FLOAT8
    - get_float8_nan
    linkageType: ''
    returnType: Datum
    signature: Datum dasind(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2184,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:2189,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2190,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:2190,1
    - Dst: INIT_DEGREE_CONSTANTS
      Src: /src/postgres/src/backend/utils/adt/float.c:2192,1
    - Dst: atan
      Src: /src/postgres/src/backend/utils/adt/float.c:2200,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:2203,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:2203,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:2204,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2206,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2207
      start: 2181
    functionDepth: 3
    functionLinenumber: 2181
    functionLinenumberEnd: 2207
    functionName: datand
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - isinf
    - INIT_DEGREE_CONSTANTS
    - PG_GETARG_FLOAT8
    - unlikely
    - float_overflow_error
    - atan
    - PG_RETURN_FLOAT8
    - get_float8_nan
    linkageType: ''
    returnType: Datum
    signature: Datum datand(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2216,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2217,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:2222,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:2222,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2223,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:2223,1
    - Dst: INIT_DEGREE_CONSTANTS
      Src: /src/postgres/src/backend/utils/adt/float.c:2225,1
    - Dst: atan2
      Src: /src/postgres/src/backend/utils/adt/float.c:2236,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:2239,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:2239,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:2240,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2242,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2243
      start: 2213
    functionDepth: 3
    functionLinenumber: 2213
    functionLinenumberEnd: 2243
    functionName: datan2d
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - isinf
    - INIT_DEGREE_CONSTANTS
    - PG_GETARG_FLOAT8
    - atan2
    - unlikely
    - float_overflow_error
    - PG_RETURN_FLOAT8
    - get_float8_nan
    linkageType: ''
    returnType: Datum
    signature: Datum datan2d(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sin
      Src: /src/postgres/src/backend/utils/adt/float.c:2254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2257
      start: 2251
    functionDepth: 0
    functionLinenumber: 2251
    functionLinenumberEnd: 2257
    functionName: sind_0_to_30
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - sin
    linkageType: ''
    returnType: double
    signature: double sind_0_to_30(double x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cos
      Src: /src/postgres/src/backend/utils/adt/float.c:2268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2271
      start: 2265
    functionDepth: 0
    functionLinenumber: 2265
    functionLinenumberEnd: 2271
    functionName: cosd_0_to_60
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - cos
    linkageType: ''
    returnType: double
    signature: double cosd_0_to_60(double x)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sind_0_to_30
      Src: /src/postgres/src/backend/utils/adt/float.c:2288,1
    - Dst: cosd_0_to_60
      Src: /src/postgres/src/backend/utils/adt/float.c:2290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - x
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2291
      start: 2278
    functionDepth: 1
    functionLinenumber: 2278
    functionLinenumberEnd: 2291
    functionName: sind_q1
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 3
    functionsReached:
    - cosd_0_to_60
    - sind_0_to_30
    linkageType: ''
    returnType: double
    signature: double sind_q1(double x)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cosd_0_to_60
      Src: /src/postgres/src/backend/utils/adt/float.c:2308,1
    - Dst: sind_0_to_30
      Src: /src/postgres/src/backend/utils/adt/float.c:2310,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - x
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2311
      start: 2298
    functionDepth: 1
    functionLinenumber: 2298
    functionLinenumberEnd: 2311
    functionName: cosd_q1
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 2
    functionsReached:
    - cosd_0_to_60
    - sind_0_to_30
    linkageType: ''
    returnType: double
    signature: double cosd_q1(double x)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2320,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:2328,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2329,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:2329,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:2331,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:2332,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:2333,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:2334,1
    - Dst: INIT_DEGREE_CONSTANTS
      Src: /src/postgres/src/backend/utils/adt/float.c:2336,1
    - Dst: fmod
      Src: /src/postgres/src/backend/utils/adt/float.c:2339,1
    - Dst: cosd_q1
      Src: /src/postgres/src/backend/utils/adt/float.c:2360,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:2362,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:2362,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:2363,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2365,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2366
      start: 2317
    functionDepth: 3
    functionLinenumber: 2317
    functionLinenumberEnd: 2366
    functionName: dcosd
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - errcode
    - isinf
    - errmsg
    - INIT_DEGREE_CONSTANTS
    - fmod
    - PG_GETARG_FLOAT8
    - ereport
    - unlikely
    - cosd_q1
    - float_overflow_error
    - PG_RETURN_FLOAT8
    - get_float8_nan
    linkageType: ''
    returnType: Datum
    signature: Datum dcosd(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2375,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:2384,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2385,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:2385,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:2387,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:2388,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:2389,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:2390,1
    - Dst: INIT_DEGREE_CONSTANTS
      Src: /src/postgres/src/backend/utils/adt/float.c:2392,1
    - Dst: fmod
      Src: /src/postgres/src/backend/utils/adt/float.c:2395,1
    - Dst: cosd_q1
      Src: /src/postgres/src/backend/utils/adt/float.c:2418,1
    - Dst: sind_q1
      Src: /src/postgres/src/backend/utils/adt/float.c:2418,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2431,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2432
      start: 2372
    functionDepth: 2
    functionLinenumber: 2372
    functionLinenumberEnd: 2432
    functionName: dcotd
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - errcode
    - isinf
    - errmsg
    - INIT_DEGREE_CONSTANTS
    - fmod
    - sind_q1
    - PG_GETARG_FLOAT8
    - ereport
    - cosd_q1
    - PG_RETURN_FLOAT8
    - get_float8_nan
    linkageType: ''
    returnType: Datum
    signature: Datum dcotd(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2441,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:2449,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2450,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:2450,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:2452,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:2453,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:2454,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:2455,1
    - Dst: INIT_DEGREE_CONSTANTS
      Src: /src/postgres/src/backend/utils/adt/float.c:2457,1
    - Dst: fmod
      Src: /src/postgres/src/backend/utils/adt/float.c:2460,1
    - Dst: sind_q1
      Src: /src/postgres/src/backend/utils/adt/float.c:2482,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:2484,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:2484,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:2485,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2487,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2488
      start: 2438
    functionDepth: 3
    functionLinenumber: 2438
    functionLinenumberEnd: 2488
    functionName: dsind
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - errcode
    - isinf
    - errmsg
    - INIT_DEGREE_CONSTANTS
    - fmod
    - sind_q1
    - PG_GETARG_FLOAT8
    - ereport
    - unlikely
    - float_overflow_error
    - PG_RETURN_FLOAT8
    - get_float8_nan
    linkageType: ''
    returnType: Datum
    signature: Datum dsind(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2497,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:2506,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2507,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:2507,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:2509,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:2510,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:2511,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:2512,1
    - Dst: INIT_DEGREE_CONSTANTS
      Src: /src/postgres/src/backend/utils/adt/float.c:2514,1
    - Dst: fmod
      Src: /src/postgres/src/backend/utils/adt/float.c:2517,1
    - Dst: sind_q1
      Src: /src/postgres/src/backend/utils/adt/float.c:2540,1
    - Dst: cosd_q1
      Src: /src/postgres/src/backend/utils/adt/float.c:2540,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2553,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2554
      start: 2494
    functionDepth: 2
    functionLinenumber: 2494
    functionLinenumberEnd: 2554
    functionName: dtand
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - errcode
    - isinf
    - errmsg
    - INIT_DEGREE_CONSTANTS
    - fmod
    - sind_q1
    - PG_GETARG_FLOAT8
    - ereport
    - cosd_q1
    - PG_RETURN_FLOAT8
    - get_float8_nan
    linkageType: ''
    returnType: Datum
    signature: Datum dtand(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2563,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2565,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/float.c:2565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2566
      start: 2560
    functionDepth: 2
    functionLinenumber: 2560
    functionLinenumberEnd: 2566
    functionName: degrees
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - PG_GETARG_FLOAT8
    - float8_div
    linkageType: ''
    returnType: Datum
    signature: Datum degrees(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2576
      start: 2572
    functionDepth: 1
    functionLinenumber: 2572
    functionLinenumberEnd: 2576
    functionName: dpi
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum dpi(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2585,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2587,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/float.c:2587,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2588
      start: 2582
    functionDepth: 2
    functionLinenumber: 2582
    functionLinenumberEnd: 2588
    functionName: radians
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - PG_GETARG_FLOAT8
    - float8_mul
    linkageType: ''
    returnType: Datum
    signature: Datum radians(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2600,1
    - Dst: sinh
      Src: /src/postgres/src/backend/utils/adt/float.c:2604,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/float.c:2614,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/float.c:2616,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2619,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2620
      start: 2597
    functionDepth: 1
    functionLinenumber: 2597
    functionLinenumberEnd: 2620
    functionName: dsinh
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - sinh
    - PG_RETURN_FLOAT8
    - get_float8_infinity
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum dsinh(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2629,1
    - Dst: cosh
      Src: /src/postgres/src/backend/utils/adt/float.c:2633,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/float.c:2640,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:2642,1
    - Dst: float_underflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:2643,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2645,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2646
      start: 2626
    functionDepth: 3
    functionLinenumber: 2626
    functionLinenumberEnd: 2646
    functionName: dcosh
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - PG_GETARG_FLOAT8
    - unlikely
    - cosh
    - float_underflow_error
    - get_float8_infinity
    linkageType: ''
    returnType: Datum
    signature: Datum dcosh(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2654,1
    - Dst: tanh
      Src: /src/postgres/src/backend/utils/adt/float.c:2660,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:2662,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:2662,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:2663,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2665,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2666
      start: 2651
    functionDepth: 3
    functionLinenumber: 2651
    functionLinenumberEnd: 2666
    functionName: dtanh
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isinf
    - tanh
    - PG_GETARG_FLOAT8
    - unlikely
    - float_overflow_error
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum dtanh(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2674,1
    - Dst: asinh
      Src: /src/postgres/src/backend/utils/adt/float.c:2680,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2682,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2683
      start: 2671
    functionDepth: 1
    functionLinenumber: 2671
    functionLinenumberEnd: 2683
    functionName: dasinh
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_FLOAT8
    - asinh
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum dasinh(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2691,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:2701,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:2702,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:2703,1
    - Dst: acosh
      Src: /src/postgres/src/backend/utils/adt/float.c:2705,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2707,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2708
      start: 2688
    functionDepth: 2
    functionLinenumber: 2688
    functionLinenumberEnd: 2708
    functionName: dacosh
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - errmsg
    - ereport
    - PG_GETARG_FLOAT8
    - PG_RETURN_FLOAT8
    - errcode
    - acosh
    linkageType: ''
    returnType: Datum
    signature: Datum dacosh(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2716,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:2725,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:2726,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:2727,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/float.c:2735,1
    - Dst: get_float8_infinity
      Src: /src/postgres/src/backend/utils/adt/float.c:2737,1
    - Dst: atanh
      Src: /src/postgres/src/backend/utils/adt/float.c:2739,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2741,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2742
      start: 2713
    functionDepth: 2
    functionLinenumber: 2713
    functionLinenumberEnd: 2742
    functionName: datanh
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - errmsg
    - atanh
    - ereport
    - PG_GETARG_FLOAT8
    - PG_RETURN_FLOAT8
    - errcode
    - get_float8_infinity
    linkageType: ''
    returnType: Datum
    signature: Datum datanh(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2754,1
    - Dst: erf
      Src: /src/postgres/src/backend/utils/adt/float.c:2760,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:2762,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:2762,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:2763,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2765,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2766
      start: 2751
    functionDepth: 3
    functionLinenumber: 2751
    functionLinenumberEnd: 2766
    functionName: derf
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isinf
    - erf
    - PG_GETARG_FLOAT8
    - unlikely
    - float_overflow_error
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum derf(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2774,1
    - Dst: erfc
      Src: /src/postgres/src/backend/utils/adt/float.c:2780,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:2782,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:2782,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:2783,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2785,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2786
      start: 2771
    functionDepth: 3
    functionLinenumber: 2771
    functionLinenumberEnd: 2786
    functionName: derfc
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - erfc
    - isinf
    - PG_GETARG_FLOAT8
    - unlikely
    - float_overflow_error
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum derfc(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2798,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:2805,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:2807,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:2812,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:2813,1
    - Dst: tgamma
      Src: /src/postgres/src/backend/utils/adt/float.c:2829,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:2831,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:2831,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:2834,1
    - Dst: float_underflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:2836,1
    - Dst: float_underflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:2839,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2842,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2843
      start: 2795
    functionDepth: 3
    functionLinenumber: 2795
    functionLinenumberEnd: 2843
    functionName: dgamma
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - isinf
    - PG_RETURN_FLOAT8
    - PG_GETARG_FLOAT8
    - tgamma
    - float_overflow_error
    - float_underflow_error
    - get_float8_nan
    linkageType: ''
    returnType: Datum
    signature: Datum dgamma(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2852,1
    - Dst: lgamma
      Src: /src/postgres/src/backend/utils/adt/float.c:2861,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:2870,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:2870,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:2871,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:2873,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2874
      start: 2849
    functionDepth: 3
    functionLinenumber: 2849
    functionLinenumberEnd: 2874
    functionName: dlgamma
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isinf
    - PG_GETARG_FLOAT8
    - float_overflow_error
    - PG_RETURN_FLOAT8
    - lgamma
    linkageType: ''
    returnType: Datum
    signature: Datum dlgamma(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/float.c:2934,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/utils/adt/float.c:2935,1
    - Dst: ARR_HASNULL
      Src: /src/postgres/src/backend/utils/adt/float.c:2936,1
    - Dst: ARR_ELEMTYPE
      Src: /src/postgres/src/backend/utils/adt/float.c:2937,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/float.c:2938,1
    - Dst: ARR_DATA_PTR
      Src: /src/postgres/src/backend/utils/adt/float.c:2939,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 3
    argNames:
    - transarray
    - caller
    - n
    argTypes:
    - ArrayType*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2940
      start: 2926
    functionDepth: 1
    functionLinenumber: 2926
    functionLinenumberEnd: 2940
    functionName: check_float8_array
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - ARR_ELEMTYPE
    - ARR_DIMS
    - ARR_DATA_PTR
    - ARR_NDIM
    - elog
    - ARR_HASNULL
    linkageType: ''
    returnType: float8
    signature: 'float8 *

      check_float8_array(ArrayType *transarray, const char *caller, int n)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:2953,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:2954,1
    - Dst: check_float8_array
      Src: /src/postgres/src/backend/utils/adt/float.c:2968,1
    - Dst: check_float8_array
      Src: /src/postgres/src/backend/utils/adt/float.c:2969,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/float.c:3007,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:3010,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3010,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3010,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3010,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:3011,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/float.c:3019,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3025,1
    - Dst: Float8GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/float.c:3032,1
    - Dst: Float8GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/float.c:3033,1
    - Dst: Float8GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/float.c:3034,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/float.c:3036,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3038,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3040
      start: 2950
    functionDepth: 3
    functionLinenumber: 2950
    functionLinenumberEnd: 3040
    functionName: float8_combine
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isinf
    - construct_array_builtin
    - Float8GetDatumFast
    - PG_RETURN_ARRAYTYPE_P
    - unlikely
    - AggCheckCallContext
    - float_overflow_error
    - float8_pl
    - check_float8_array
    - PG_GETARG_ARRAYTYPE_P
    linkageType: ''
    returnType: Datum
    signature: Datum float8_combine(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3045,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3046,1
    - Dst: check_float8_array
      Src: /src/postgres/src/backend/utils/adt/float.c:3053,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3075,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3075,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3077,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3077,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:3078,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:3080,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:3091,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3091,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:3092,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/float.c:3100,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3106,1
    - Dst: Float8GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/float.c:3113,1
    - Dst: Float8GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/float.c:3114,1
    - Dst: Float8GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/float.c:3115,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/float.c:3117,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3119,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3121
      start: 3042
    functionDepth: 3
    functionLinenumber: 3042
    functionLinenumberEnd: 3121
    functionName: float8_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - isinf
    - construct_array_builtin
    - get_float8_nan
    - Float8GetDatumFast
    - PG_GETARG_FLOAT8
    - PG_RETURN_ARRAYTYPE_P
    - AggCheckCallContext
    - float_overflow_error
    - check_float8_array
    - PG_GETARG_ARRAYTYPE_P
    linkageType: ''
    returnType: Datum
    signature: Datum float8_accum(PG_FUNCTION_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3126,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:3129,1
    - Dst: check_float8_array
      Src: /src/postgres/src/backend/utils/adt/float.c:3136,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3158,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3158,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3160,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3160,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:3161,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:3163,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:3174,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3174,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:3175,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/float.c:3183,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3189,1
    - Dst: Float8GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/float.c:3196,1
    - Dst: Float8GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/float.c:3197,1
    - Dst: Float8GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/float.c:3198,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/float.c:3200,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3202,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3204
      start: 3123
    functionDepth: 3
    functionLinenumber: 3123
    functionLinenumberEnd: 3204
    functionName: float4_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - isinf
    - construct_array_builtin
    - get_float8_nan
    - Float8GetDatumFast
    - PG_GETARG_FLOAT4
    - PG_RETURN_ARRAYTYPE_P
    - AggCheckCallContext
    - float_overflow_error
    - check_float8_array
    - PG_GETARG_ARRAYTYPE_P
    linkageType: ''
    returnType: Datum
    signature: Datum float4_accum(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3209,1
    - Dst: check_float8_array
      Src: /src/postgres/src/backend/utils/adt/float.c:3214,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/float.c:3221,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3224
      start: 3206
    functionDepth: 2
    functionLinenumber: 3206
    functionLinenumberEnd: 3224
    functionName: float8_avg
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - check_float8_array
    - PG_GETARG_ARRAYTYPE_P
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8_avg(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3229,1
    - Dst: check_float8_array
      Src: /src/postgres/src/backend/utils/adt/float.c:3234,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/float.c:3241,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3246
      start: 3226
    functionDepth: 2
    functionLinenumber: 3226
    functionLinenumberEnd: 3246
    functionName: float8_var_pop
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - check_float8_array
    - PG_GETARG_ARRAYTYPE_P
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8_var_pop(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3251,1
    - Dst: check_float8_array
      Src: /src/postgres/src/backend/utils/adt/float.c:3256,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/float.c:3263,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3267,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3268
      start: 3248
    functionDepth: 2
    functionLinenumber: 3248
    functionLinenumberEnd: 3268
    functionName: float8_var_samp
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - check_float8_array
    - PG_GETARG_ARRAYTYPE_P
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8_var_samp(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3273,1
    - Dst: check_float8_array
      Src: /src/postgres/src/backend/utils/adt/float.c:3278,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/float.c:3285,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3289,1
    - Dst: sqrt
      Src: /src/postgres/src/backend/utils/adt/float.c:3289,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3290
      start: 3270
    functionDepth: 2
    functionLinenumber: 3270
    functionLinenumberEnd: 3290
    functionName: float8_stddev_pop
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - sqrt
    - PG_RETURN_NULL
    - PG_RETURN_FLOAT8
    - check_float8_array
    - PG_GETARG_ARRAYTYPE_P
    linkageType: ''
    returnType: Datum
    signature: Datum float8_stddev_pop(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3295,1
    - Dst: check_float8_array
      Src: /src/postgres/src/backend/utils/adt/float.c:3300,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/float.c:3307,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3311,1
    - Dst: sqrt
      Src: /src/postgres/src/backend/utils/adt/float.c:3311,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3312
      start: 3292
    functionDepth: 2
    functionLinenumber: 3292
    functionLinenumberEnd: 3312
    functionName: float8_stddev_samp
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - sqrt
    - PG_RETURN_NULL
    - PG_RETURN_FLOAT8
    - check_float8_array
    - PG_GETARG_ARRAYTYPE_P
    linkageType: ''
    returnType: Datum
    signature: Datum float8_stddev_samp(PG_FUNCTION_ARGS)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3338,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3339,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3340,1
    - Dst: check_float8_array
      Src: /src/postgres/src/backend/utils/adt/float.c:3352,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3382,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3382,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3382,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3382,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3382,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3384,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3384,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3385,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3385,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3386,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3386,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3387,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3387,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3388,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3389,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3389,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3390,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3390,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:3391,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3393,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:3394,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3395,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:3396,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3397,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:3398,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:3409,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3409,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:3410,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:3411,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3411,1
    - Dst: get_float8_nan
      Src: /src/postgres/src/backend/utils/adt/float.c:3412,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/float.c:3420,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3429,1
    - Dst: Float8GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/float.c:3436,1
    - Dst: Float8GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/float.c:3437,1
    - Dst: Float8GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/float.c:3438,1
    - Dst: Float8GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/float.c:3439,1
    - Dst: Float8GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/float.c:3440,1
    - Dst: Float8GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/float.c:3441,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/float.c:3443,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3445,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3447
      start: 3335
    functionDepth: 3
    functionLinenumber: 3335
    functionLinenumberEnd: 3447
    functionName: float8_regr_accum
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isnan
    - isinf
    - construct_array_builtin
    - get_float8_nan
    - Float8GetDatumFast
    - PG_GETARG_FLOAT8
    - PG_RETURN_ARRAYTYPE_P
    - AggCheckCallContext
    - float_overflow_error
    - check_float8_array
    - PG_GETARG_ARRAYTYPE_P
    linkageType: ''
    returnType: Datum
    signature: Datum float8_regr_accum(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3460,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3461,1
    - Dst: check_float8_array
      Src: /src/postgres/src/backend/utils/adt/float.c:3485,1
    - Dst: check_float8_array
      Src: /src/postgres/src/backend/utils/adt/float.c:3486,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/float.c:3539,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:3542,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3542,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3542,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3542,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:3543,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/float.c:3544,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:3547,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3547,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3547,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3547,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:3548,1
    - Dst: unlikely
      Src: /src/postgres/src/backend/utils/adt/float.c:3550,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3550,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3550,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:3550,1
    - Dst: float_overflow_error
      Src: /src/postgres/src/backend/utils/adt/float.c:3551,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/float.c:3559,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3568,1
    - Dst: Float8GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/float.c:3575,1
    - Dst: Float8GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/float.c:3576,1
    - Dst: Float8GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/float.c:3577,1
    - Dst: Float8GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/float.c:3578,1
    - Dst: Float8GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/float.c:3579,1
    - Dst: Float8GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/float.c:3580,1
    - Dst: construct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/float.c:3582,1
    - Dst: PG_RETURN_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3584,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 64
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3586
      start: 3457
    functionDepth: 3
    functionLinenumber: 3457
    functionLinenumberEnd: 3586
    functionName: float8_regr_combine
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - isinf
    - construct_array_builtin
    - Float8GetDatumFast
    - PG_RETURN_ARRAYTYPE_P
    - unlikely
    - AggCheckCallContext
    - float_overflow_error
    - float8_pl
    - check_float8_array
    - PG_GETARG_ARRAYTYPE_P
    linkageType: ''
    returnType: Datum
    signature: Datum float8_regr_combine(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3592,1
    - Dst: check_float8_array
      Src: /src/postgres/src/backend/utils/adt/float.c:3597,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/float.c:3603,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3607,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3608
      start: 3589
    functionDepth: 2
    functionLinenumber: 3589
    functionLinenumberEnd: 3608
    functionName: float8_regr_sxx
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - check_float8_array
    - PG_GETARG_ARRAYTYPE_P
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8_regr_sxx(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3613,1
    - Dst: check_float8_array
      Src: /src/postgres/src/backend/utils/adt/float.c:3618,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/float.c:3624,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3628,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3629
      start: 3610
    functionDepth: 2
    functionLinenumber: 3610
    functionLinenumberEnd: 3629
    functionName: float8_regr_syy
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - check_float8_array
    - PG_GETARG_ARRAYTYPE_P
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8_regr_syy(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3634,1
    - Dst: check_float8_array
      Src: /src/postgres/src/backend/utils/adt/float.c:3639,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/float.c:3645,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3649,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3650
      start: 3631
    functionDepth: 2
    functionLinenumber: 3631
    functionLinenumberEnd: 3650
    functionName: float8_regr_sxy
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - check_float8_array
    - PG_GETARG_ARRAYTYPE_P
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8_regr_sxy(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3655,1
    - Dst: check_float8_array
      Src: /src/postgres/src/backend/utils/adt/float.c:3660,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/float.c:3666,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3668,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3669
      start: 3652
    functionDepth: 2
    functionLinenumber: 3652
    functionLinenumberEnd: 3669
    functionName: float8_regr_avgx
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - check_float8_array
    - PG_GETARG_ARRAYTYPE_P
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8_regr_avgx(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3674,1
    - Dst: check_float8_array
      Src: /src/postgres/src/backend/utils/adt/float.c:3679,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/float.c:3685,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3687,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3688
      start: 3671
    functionDepth: 2
    functionLinenumber: 3671
    functionLinenumberEnd: 3688
    functionName: float8_regr_avgy
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - check_float8_array
    - PG_GETARG_ARRAYTYPE_P
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8_regr_avgy(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3693,1
    - Dst: check_float8_array
      Src: /src/postgres/src/backend/utils/adt/float.c:3698,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/float.c:3704,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3706,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3707
      start: 3690
    functionDepth: 2
    functionLinenumber: 3690
    functionLinenumberEnd: 3707
    functionName: float8_covar_pop
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - check_float8_array
    - PG_GETARG_ARRAYTYPE_P
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8_covar_pop(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3712,1
    - Dst: check_float8_array
      Src: /src/postgres/src/backend/utils/adt/float.c:3717,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/float.c:3723,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3725,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3726
      start: 3709
    functionDepth: 2
    functionLinenumber: 3709
    functionLinenumberEnd: 3726
    functionName: float8_covar_samp
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - check_float8_array
    - PG_GETARG_ARRAYTYPE_P
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8_covar_samp(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3731,1
    - Dst: check_float8_array
      Src: /src/postgres/src/backend/utils/adt/float.c:3738,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/float.c:3746,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/float.c:3752,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3754,1
    - Dst: sqrt
      Src: /src/postgres/src/backend/utils/adt/float.c:3754,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3755
      start: 3728
    functionDepth: 2
    functionLinenumber: 3728
    functionLinenumberEnd: 3755
    functionName: float8_corr
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - sqrt
    - PG_RETURN_NULL
    - PG_RETURN_FLOAT8
    - check_float8_array
    - PG_GETARG_ARRAYTYPE_P
    linkageType: ''
    returnType: Datum
    signature: Datum float8_corr(PG_FUNCTION_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3760,1
    - Dst: check_float8_array
      Src: /src/postgres/src/backend/utils/adt/float.c:3767,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/float.c:3775,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/float.c:3781,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3785,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3787,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3788
      start: 3757
    functionDepth: 2
    functionLinenumber: 3757
    functionLinenumberEnd: 3788
    functionName: float8_regr_r2
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - check_float8_array
    - PG_GETARG_ARRAYTYPE_P
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8_regr_r2(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3793,1
    - Dst: check_float8_array
      Src: /src/postgres/src/backend/utils/adt/float.c:3799,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/float.c:3806,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/float.c:3812,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3814,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3815
      start: 3790
    functionDepth: 2
    functionLinenumber: 3790
    functionLinenumberEnd: 3815
    functionName: float8_regr_slope
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - check_float8_array
    - PG_GETARG_ARRAYTYPE_P
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8_regr_slope(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/float.c:3820,1
    - Dst: check_float8_array
      Src: /src/postgres/src/backend/utils/adt/float.c:3828,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/float.c:3837,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/float.c:3843,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3845,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3846
      start: 3817
    functionDepth: 2
    functionLinenumber: 3817
    functionLinenumberEnd: 3846
    functionName: float8_regr_intercept
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_RETURN_NULL
    - check_float8_array
    - PG_GETARG_ARRAYTYPE_P
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float8_regr_intercept(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:3864,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3865,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3867,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/float.c:3867,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3868
      start: 3861
    functionDepth: 2
    functionLinenumber: 3861
    functionLinenumberEnd: 3868
    functionName: float48pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FLOAT4
    - PG_RETURN_FLOAT8
    - float8_pl
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float48pl(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:3873,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3874,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3876,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/float.c:3876,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3877
      start: 3870
    functionDepth: 2
    functionLinenumber: 3870
    functionLinenumberEnd: 3877
    functionName: float48mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - float8_mi
    - PG_GETARG_FLOAT4
    - PG_RETURN_FLOAT8
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float48mi(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:3882,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3883,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3885,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/float.c:3885,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3886
      start: 3879
    functionDepth: 2
    functionLinenumber: 3879
    functionLinenumberEnd: 3886
    functionName: float48mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FLOAT4
    - PG_RETURN_FLOAT8
    - PG_GETARG_FLOAT8
    - float8_mul
    linkageType: ''
    returnType: Datum
    signature: Datum float48mul(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:3891,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3892,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3894,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/float.c:3894,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3895
      start: 3888
    functionDepth: 2
    functionLinenumber: 3888
    functionLinenumberEnd: 3895
    functionName: float48div
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FLOAT4
    - PG_RETURN_FLOAT8
    - PG_GETARG_FLOAT8
    - float8_div
    linkageType: ''
    returnType: Datum
    signature: Datum float48div(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3906,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:3907,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3909,1
    - Dst: float8_pl
      Src: /src/postgres/src/backend/utils/adt/float.c:3909,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3910
      start: 3903
    functionDepth: 2
    functionLinenumber: 3903
    functionLinenumberEnd: 3910
    functionName: float84pl
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FLOAT4
    - PG_RETURN_FLOAT8
    - float8_pl
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float84pl(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3915,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:3916,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3918,1
    - Dst: float8_mi
      Src: /src/postgres/src/backend/utils/adt/float.c:3918,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3919
      start: 3912
    functionDepth: 2
    functionLinenumber: 3912
    functionLinenumberEnd: 3919
    functionName: float84mi
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - float8_mi
    - PG_GETARG_FLOAT4
    - PG_RETURN_FLOAT8
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float84mi(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3924,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:3925,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3927,1
    - Dst: float8_mul
      Src: /src/postgres/src/backend/utils/adt/float.c:3927,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3928
      start: 3921
    functionDepth: 2
    functionLinenumber: 3921
    functionLinenumberEnd: 3928
    functionName: float84mul
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FLOAT4
    - PG_RETURN_FLOAT8
    - PG_GETARG_FLOAT8
    - float8_mul
    linkageType: ''
    returnType: Datum
    signature: Datum float84mul(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3933,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:3934,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3936,1
    - Dst: float8_div
      Src: /src/postgres/src/backend/utils/adt/float.c:3936,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3937
      start: 3930
    functionDepth: 2
    functionLinenumber: 3930
    functionLinenumberEnd: 3937
    functionName: float84div
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FLOAT4
    - PG_RETURN_FLOAT8
    - PG_GETARG_FLOAT8
    - float8_div
    linkageType: ''
    returnType: Datum
    signature: Datum float84div(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:3951,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3952,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:3954,1
    - Dst: float8_eq
      Src: /src/postgres/src/backend/utils/adt/float.c:3954,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3955
      start: 3948
    functionDepth: 2
    functionLinenumber: 3948
    functionLinenumberEnd: 3955
    functionName: float48eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FLOAT4
    - float8_eq
    - PG_RETURN_BOOL
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float48eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:3960,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3961,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:3963,1
    - Dst: float8_ne
      Src: /src/postgres/src/backend/utils/adt/float.c:3963,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3964
      start: 3957
    functionDepth: 2
    functionLinenumber: 3957
    functionLinenumberEnd: 3964
    functionName: float48ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - float8_ne
    - PG_GETARG_FLOAT4
    - PG_RETURN_BOOL
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float48ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:3969,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3970,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:3972,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/float.c:3972,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3973
      start: 3966
    functionDepth: 2
    functionLinenumber: 3966
    functionLinenumberEnd: 3973
    functionName: float48lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FLOAT4
    - float8_lt
    - PG_RETURN_BOOL
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float48lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:3978,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3979,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:3981,1
    - Dst: float8_le
      Src: /src/postgres/src/backend/utils/adt/float.c:3981,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3982
      start: 3975
    functionDepth: 2
    functionLinenumber: 3975
    functionLinenumberEnd: 3982
    functionName: float48le
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - float8_le
    - PG_GETARG_FLOAT4
    - PG_RETURN_BOOL
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float48le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:3987,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3988,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:3990,1
    - Dst: float8_gt
      Src: /src/postgres/src/backend/utils/adt/float.c:3990,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3991
      start: 3984
    functionDepth: 2
    functionLinenumber: 3984
    functionLinenumberEnd: 3991
    functionName: float48gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FLOAT4
    - float8_gt
    - PG_RETURN_BOOL
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float48gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:3996,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:3997,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:3999,1
    - Dst: float8_ge
      Src: /src/postgres/src/backend/utils/adt/float.c:3999,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4000
      start: 3993
    functionDepth: 2
    functionLinenumber: 3993
    functionLinenumberEnd: 4000
    functionName: float48ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - float8_ge
    - PG_GETARG_FLOAT4
    - PG_RETURN_BOOL
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float48ge(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:4008,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:4009,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:4011,1
    - Dst: float8_eq
      Src: /src/postgres/src/backend/utils/adt/float.c:4011,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4012
      start: 4005
    functionDepth: 2
    functionLinenumber: 4005
    functionLinenumberEnd: 4012
    functionName: float84eq
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FLOAT4
    - float8_eq
    - PG_RETURN_BOOL
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float84eq(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:4017,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:4018,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:4020,1
    - Dst: float8_ne
      Src: /src/postgres/src/backend/utils/adt/float.c:4020,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4021
      start: 4014
    functionDepth: 2
    functionLinenumber: 4014
    functionLinenumberEnd: 4021
    functionName: float84ne
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - float8_ne
    - PG_GETARG_FLOAT4
    - PG_RETURN_BOOL
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float84ne(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:4026,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:4027,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:4029,1
    - Dst: float8_lt
      Src: /src/postgres/src/backend/utils/adt/float.c:4029,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4030
      start: 4023
    functionDepth: 2
    functionLinenumber: 4023
    functionLinenumberEnd: 4030
    functionName: float84lt
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FLOAT4
    - float8_lt
    - PG_RETURN_BOOL
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float84lt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:4035,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:4036,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:4038,1
    - Dst: float8_le
      Src: /src/postgres/src/backend/utils/adt/float.c:4038,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4039
      start: 4032
    functionDepth: 2
    functionLinenumber: 4032
    functionLinenumberEnd: 4039
    functionName: float84le
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - float8_le
    - PG_GETARG_FLOAT4
    - PG_RETURN_BOOL
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float84le(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:4044,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:4045,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:4047,1
    - Dst: float8_gt
      Src: /src/postgres/src/backend/utils/adt/float.c:4047,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4048
      start: 4041
    functionDepth: 2
    functionLinenumber: 4041
    functionLinenumberEnd: 4048
    functionName: float84gt
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FLOAT4
    - float8_gt
    - PG_RETURN_BOOL
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float84gt(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:4053,1
    - Dst: PG_GETARG_FLOAT4
      Src: /src/postgres/src/backend/utils/adt/float.c:4054,1
    - Dst: PG_RETURN_BOOL
      Src: /src/postgres/src/backend/utils/adt/float.c:4056,1
    - Dst: float8_ge
      Src: /src/postgres/src/backend/utils/adt/float.c:4056,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4057
      start: 4050
    functionDepth: 2
    functionLinenumber: 4050
    functionLinenumberEnd: 4057
    functionName: float84ge
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - float8_ge
    - PG_GETARG_FLOAT4
    - PG_RETURN_BOOL
    - PG_GETARG_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum float84ge(PG_FUNCTION_ARGS)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:4077,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:4078,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/float.c:4079,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/float.c:4080,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:4084,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:4085,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:4086,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:4088,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:4088,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:4089,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:4090,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:4091,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:4093,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:4093,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:4094,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:4095,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:4096,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:4100,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/float.c:4102,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:4103,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:4104,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:4105,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:4111,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/float.c:4138,1
    - Dst: pg_add_s32_overflow
      Src: /src/postgres/src/backend/utils/adt/float.c:4142,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:4143,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:4144,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:4145,1
    - Dst: isinf
      Src: /src/postgres/src/backend/utils/adt/float.c:4149,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/float.c:4160,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/float.c:4161,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/float.c:4162,1
    - Dst: PG_RETURN_INT32
      Src: /src/postgres/src/backend/utils/adt/float.c:4166,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4167
      start: 4074
    functionDepth: 2
    functionLinenumber: 4074
    functionLinenumberEnd: 4167
    functionName: width_bucket_float8
    functionSourceFile: /src/postgres/src/backend/utils/adt/float.c
    functionUses: 0
    functionsReached:
    - errmsg
    - isnan
    - isinf
    - PG_RETURN_INT32
    - ereport
    - PG_GETARG_FLOAT8
    - pg_add_s32_overflow
    - PG_GETARG_INT32
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum width_bucket_float8(PG_FUNCTION_ARGS)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:126,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:127,1
    - Dst: AggGetAggref
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:142,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:144,1
    - Dst: AGGKIND_IS_ORDERED_SET
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:145,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:146,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:154,1
    - Dst: palloc0
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:156,1
    - Dst: AggStateIsShared
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:161,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:165,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:176,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:177,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:178,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:179,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:180,1
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:185,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:186,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:190,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:190,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:195,1
    - Dst: list_length
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:203,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:211,1
    - Dst: ExecTypeFromTL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:217,1
    - Dst: CreateTemplateTupleDesc
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:225,1
    - Dst: TupleDescCopyEntry
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:227,1
    - Dst: TupleDescInitEntry
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:229,1
    - Dst: FreeTupleDesc
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:236,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:241,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:251,1
    - Dst: linitial
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:253,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:254,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:257,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:257,1
    - Dst: exprType
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:260,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:263,1
    - Dst: get_typlenbyvalalign
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:267,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:275,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:279,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:281,1
    - Dst: tuplesort_begin_heap
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:294,1
    - Dst: tuplesort_begin_datum
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:304,1
    - Dst: AggRegisterCallback
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:316,1
    - Dst: PointerGetDatum
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:318,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:320,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 86
    argCount: 2
    argNames:
    - fcinfo
    - use_tuples
    argTypes:
    - FunctionCallInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 112
    functionDepth: 4
    functionLinenumber: 112
    functionLinenumberEnd: 323
    functionName: ordered_set_startup
    functionSourceFile: /src/postgres/src/backend/utils/adt/orderedsetaggs.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - get_typlenbyvalalign
    - list_length
    - tuplesort_begin_heap
    - exprType
    - AggCheckCallContext
    - FreeTupleDesc
    - tuplesort_begin_datum
    - CreateTemplateTupleDesc
    - TupleDescCopyEntry
    - linitial
    - AggStateIsShared
    - TupleDescInitEntry
    - elog
    - OidIsValid
    - palloc
    - get_sortgroupclause_tle
    - lfirst
    - AGGKIND_IS_ORDERED_SET
    - Assert
    - exprCollation
    - AggRegisterCallback
    - ExecTypeFromTL
    - palloc0
    - PointerGetDatum
    - MakeSingleTupleTableSlot
    - AggGetAggref
    linkageType: ''
    returnType: OSAPerGroupState
    signature: 'OSAPerGroupState *

      ordered_set_startup(FunctionCallInfo fcinfo, bool use_tuples)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfirst
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:185,1
    - Dst: get_sortgroupclause_tle
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:186,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:190,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:190,1
    - Dst: exprCollation
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 183
    functionDepth: 3
    functionLinenumber: 183
    functionLinenumberEnd: 198
    functionName: foreach
    functionSourceFile: /src/postgres/src/backend/utils/adt/orderedsetaggs.c
    functionUses: 467
    functionsReached:
    - lfirst
    - Assert
    - exprCollation
    - OidIsValid
    - get_sortgroupclause_tle
    linkageType: ''
    returnType: void
    signature: void foreach(lc, sortlist)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:341,1
    - Dst: tuplesort_end
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:345,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:349,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - arg
    argTypes:
    - Datum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 338
    functionDepth: 4
    functionLinenumber: 338
    functionLinenumberEnd: 350
    functionName: ordered_set_shutdown
    functionSourceFile: /src/postgres/src/backend/utils/adt/orderedsetaggs.c
    functionUses: 0
    functionsReached:
    - ExecClearTuple
    - DatumGetPointer
    - tuplesort_end
    linkageType: ''
    returnType: void
    signature: void ordered_set_shutdown(Datum arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:363,1
    - Dst: ordered_set_startup
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:364,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:366,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:369,1
    - Dst: tuplesort_putdatum
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:371,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:371,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:375,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 357
    functionDepth: 5
    functionLinenumber: 357
    functionLinenumberEnd: 376
    functionName: ordered_set_transition
    functionSourceFile: /src/postgres/src/backend/utils/adt/orderedsetaggs.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - tuplesort_putdatum
    - PG_ARGISNULL
    - ordered_set_startup
    - PG_GETARG_DATUM
    - PG_RETURN_POINTER
    linkageType: ''
    returnType: Datum
    signature: Datum ordered_set_transition(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:391,1
    - Dst: ordered_set_startup
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:392,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:394,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:398,1
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:399,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:402,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:403,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:408,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:412,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:413,1
    - Dst: tuplesort_puttupleslot
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:416,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:419,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 382
    functionDepth: 5
    functionLinenumber: 382
    functionLinenumberEnd: 420
    functionName: ordered_set_transition_multi
    functionSourceFile: /src/postgres/src/backend/utils/adt/orderedsetaggs.c
    functionUses: 0
    functionsReached:
    - Assert
    - PG_GETARG_POINTER
    - Int32GetDatum
    - PG_ARGISNULL
    - ExecStoreVirtualTuple
    - ordered_set_startup
    - PG_GETARG_DATUM
    - ExecClearTuple
    - tuplesort_puttupleslot
    - PG_RETURN_POINTER
    - PG_NARGS
    linkageType: ''
    returnType: Datum
    signature: Datum ordered_set_transition_multi(PG_FUNCTION_ARGS)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:435,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:435,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:438,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:439,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:441,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:443,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:444,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:445,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:446,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:450,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:451,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:453,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:457,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:462,1
    - Dst: tuplesort_rescan
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:466,1
    - Dst: ceil
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:474,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:475,1
    - Dst: tuplesort_skiptuples
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:479,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:480,1
    - Dst: tuplesort_getdatum
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:483,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:485,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:489,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:491,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 426
    functionDepth: 7
    functionLinenumber: 426
    functionLinenumberEnd: 492
    functionName: percentile_disc_final
    functionSourceFile: /src/postgres/src/backend/utils/adt/orderedsetaggs.c
    functionUses: 0
    functionsReached:
    - isnan
    - errmsg
    - Assert
    - PG_GETARG_POINTER
    - tuplesort_rescan
    - PG_RETURN_DATUM
    - ceil
    - PG_ARGISNULL
    - PG_GETARG_FLOAT8
    - ereport
    - AggCheckCallContext
    - PG_RETURN_NULL
    - elog
    - tuplesort_getdatum
    - tuplesort_skiptuples
    - tuplesort_performsort
    - errcode
    linkageType: ''
    returnType: Datum
    signature: Datum percentile_disc_final(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:505,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:506,1
    - Dst: Float8GetDatum
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:508,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - lo
    - hi
    - pct
    argTypes:
    - Datum
    - Datum
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 502
    functionDepth: 3
    functionLinenumber: 502
    functionLinenumberEnd: 509
    functionName: float8_lerp
    functionSourceFile: /src/postgres/src/backend/utils/adt/orderedsetaggs.c
    functionUses: 0
    functionsReached:
    - DatumGetFloat8
    - Float8GetDatum
    linkageType: ''
    returnType: Datum
    signature: Datum float8_lerp(Datum lo, Datum hi, double pct)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:514,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:515,1
    - Dst: Float8GetDatumFast
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:517,1
    - Dst: DirectFunctionCall2
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - lo
    - hi
    - pct
    argTypes:
    - Datum
    - Datum
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 511
    functionDepth: 1
    functionLinenumber: 511
    functionLinenumberEnd: 520
    functionName: interval_lerp
    functionSourceFile: /src/postgres/src/backend/utils/adt/orderedsetaggs.c
    functionUses: 0
    functionsReached:
    - Float8GetDatumFast
    - DirectFunctionCall2
    linkageType: ''
    returnType: Datum
    signature: Datum interval_lerp(Datum lo, Datum hi, double pct)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:540,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:540,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:543,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:544,1
    - Dst: PG_GETARG_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:546,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:548,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:549,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:550,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:551,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:555,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:556,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:558,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:562,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:564,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:569,1
    - Dst: tuplesort_rescan
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:573,1
    - Dst: floor
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:575,1
    - Dst: ceil
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:576,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:578,1
    - Dst: tuplesort_skiptuples
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:580,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:581,1
    - Dst: tuplesort_getdatum
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:583,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:585,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:587,1
    - Dst: tuplesort_getdatum
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:595,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:597,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:600,1
    - Dst: lerpfunc
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:603,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:606,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 3
    argNames:
    - fcinfo
    - expect_type
    - lerpfunc
    argTypes:
    - FunctionCallInfo
    - Oid
    - LerpFunc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 525
    functionDepth: 7
    functionLinenumber: 525
    functionLinenumberEnd: 607
    functionName: percentile_cont_final_common
    functionSourceFile: /src/postgres/src/backend/utils/adt/orderedsetaggs.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_FLOAT8
    - lerpfunc
    - AggCheckCallContext
    - errmsg
    - PG_GETARG_POINTER
    - PG_RETURN_DATUM
    - ceil
    - PG_ARGISNULL
    - elog
    - tuplesort_getdatum
    - isnan
    - Assert
    - floor
    - tuplesort_rescan
    - ereport
    - PG_RETURN_NULL
    - tuplesort_skiptuples
    - tuplesort_performsort
    - errcode
    linkageType: ''
    returnType: Datum
    signature: "Datum percentile_cont_final_common(FunctionCallInfo fcinfo,\n\t\t\t\t\t\t\t
      Oid expect_type,\n\t\t\t\t\t\t\t LerpFunc lerpfunc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: percentile_cont_final_common
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:615,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 612
    functionDepth: 8
    functionLinenumber: 612
    functionLinenumberEnd: 616
    functionName: percentile_cont_float8_final
    functionSourceFile: /src/postgres/src/backend/utils/adt/orderedsetaggs.c
    functionUses: 0
    functionsReached:
    - percentile_cont_final_common
    linkageType: ''
    returnType: Datum
    signature: Datum percentile_cont_float8_final(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: percentile_cont_final_common
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:624,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 621
    functionDepth: 8
    functionLinenumber: 621
    functionLinenumberEnd: 625
    functionName: percentile_cont_interval_final
    functionSourceFile: /src/postgres/src/backend/utils/adt/orderedsetaggs.c
    functionUses: 0
    functionsReached:
    - percentile_cont_final_common
    linkageType: ''
    returnType: Datum
    signature: Datum percentile_cont_interval_final(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - pa
    - pb
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 645
    functionDepth: 0
    functionLinenumber: 645
    functionLinenumberEnd: 656
    functionName: pct_info_cmp
    functionSourceFile: /src/postgres/src/backend/utils/adt/orderedsetaggs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pct_info_cmp(const void *pa, const void *pb)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:671,1
    - Dst: DatumGetFloat8
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:686,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:688,1
    - Dst: ereport
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:689,1
    - Dst: errcode
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:690,1
    - Dst: errmsg
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:691,1
    - Dst: floor
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:696,1
    - Dst: ceil
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:697,1
    - Dst: floor
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:698,1
    - Dst: ceil
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:708,1
    - Dst: Max
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:710,1
    - Dst: qsort
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:722,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 5
    argNames:
    - num_percentiles
    - percentiles_datum
    - percentiles_null
    - rowcount
    - continuous
    argTypes:
    - int
    - Datum*
    - bool*
    - int64
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 661
    functionDepth: 3
    functionLinenumber: 661
    functionLinenumberEnd: 725
    functionName: setup_pct_info
    functionSourceFile: /src/postgres/src/backend/utils/adt/orderedsetaggs.c
    functionUses: 0
    functionsReached:
    - isnan
    - errmsg
    - DatumGetFloat8
    - qsort
    - floor
    - ceil
    - ereport
    - Max
    - palloc
    - errcode
    linkageType: ''
    returnType: struct pct_info
    signature: "struct pct_info *\nsetup_pct_info(int num_percentiles,\n\t\t\t   Datum
      *percentiles_datum,\n\t\t\t   bool *percentiles_null,\n\t\t\t   int64 rowcount,\n\t\t\t
      \  bool continuous)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:746,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:746,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:749,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:750,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:752,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:756,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:759,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:760,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:761,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:763,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:769,1
    - Dst: construct_empty_array
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:769,1
    - Dst: setup_pct_info
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:771,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:777,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:778,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:804,1
    - Dst: tuplesort_rescan
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:808,1
    - Dst: tuplesort_skiptuples
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:818,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:819,1
    - Dst: tuplesort_getdatum
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:821,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:823,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:834,1
    - Dst: construct_md_array
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:834,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:835,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:836,1
    - Dst: ARR_LBOUND
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:837,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 730
    functionDepth: 7
    functionLinenumber: 730
    functionLinenumberEnd: 842
    functionName: percentile_disc_multi_final
    functionSourceFile: /src/postgres/src/backend/utils/adt/orderedsetaggs.c
    functionUses: 0
    functionsReached:
    - construct_md_array
    - PG_RETURN_POINTER
    - ARR_DIMS
    - deconstruct_array_builtin
    - AggCheckCallContext
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - setup_pct_info
    - elog
    - tuplesort_getdatum
    - palloc
    - PG_GETARG_ARRAYTYPE_P
    - Assert
    - tuplesort_rescan
    - ARR_NDIM
    - construct_empty_array
    - PG_RETURN_NULL
    - tuplesort_skiptuples
    - ARR_LBOUND
    - tuplesort_performsort
    linkageType: ''
    returnType: Datum
    signature: Datum percentile_disc_multi_final(PG_FUNCTION_ARGS)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:867,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:867,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:870,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:871,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:873,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:877,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:879,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:882,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:883,1
    - Dst: PG_GETARG_ARRAYTYPE_P
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:884,1
    - Dst: deconstruct_array_builtin
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:886,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:892,1
    - Dst: construct_empty_array
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:892,1
    - Dst: setup_pct_info
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:894,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:900,1
    - Dst: palloc
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:901,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:927,1
    - Dst: tuplesort_rescan
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:931,1
    - Dst: tuplesort_skiptuples
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:947,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:948,1
    - Dst: tuplesort_getdatum
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:950,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:952,1
    - Dst: tuplesort_getdatum
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:971,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:973,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:977,1
    - Dst: lerpfunc
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:981,1
    - Dst: PG_RETURN_POINTER
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:991,1
    - Dst: construct_md_array
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:991,1
    - Dst: ARR_NDIM
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:992,1
    - Dst: ARR_DIMS
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:993,1
    - Dst: ARR_LBOUND
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:993,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 54
    argCount: 6
    argNames:
    - fcinfo
    - expect_type
    - typLen
    - typByVal
    - typAlign
    - lerpfunc
    argTypes:
    - FunctionCallInfo
    - Oid
    - int16
    - bool
    - char
    - LerpFunc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 998
      start: 847
    functionDepth: 7
    functionLinenumber: 847
    functionLinenumberEnd: 998
    functionName: percentile_cont_multi_final_common
    functionSourceFile: /src/postgres/src/backend/utils/adt/orderedsetaggs.c
    functionUses: 0
    functionsReached:
    - construct_md_array
    - lerpfunc
    - PG_RETURN_POINTER
    - ARR_DIMS
    - deconstruct_array_builtin
    - AggCheckCallContext
    - PG_GETARG_POINTER
    - PG_ARGISNULL
    - setup_pct_info
    - elog
    - tuplesort_getdatum
    - palloc
    - PG_GETARG_ARRAYTYPE_P
    - Assert
    - tuplesort_rescan
    - ARR_NDIM
    - construct_empty_array
    - PG_RETURN_NULL
    - tuplesort_skiptuples
    - ARR_LBOUND
    - tuplesort_performsort
    linkageType: ''
    returnType: Datum
    signature: "Datum percentile_cont_multi_final_common(FunctionCallInfo fcinfo,\n\t\t\t\t\t\t\t\t
      \  Oid expect_type,\n\t\t\t\t\t\t\t\t   int16 typLen, bool typByVal, char typAlign,\n\t\t\t\t\t\t\t\t
      \  LerpFunc lerpfunc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: percentile_cont_multi_final_common
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1006,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 1003
    functionDepth: 8
    functionLinenumber: 1003
    functionLinenumberEnd: 1013
    functionName: percentile_cont_float8_multi_final
    functionSourceFile: /src/postgres/src/backend/utils/adt/orderedsetaggs.c
    functionUses: 0
    functionsReached:
    - percentile_cont_multi_final_common
    linkageType: ''
    returnType: Datum
    signature: Datum percentile_cont_float8_multi_final(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: percentile_cont_multi_final_common
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1021,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 1018
    functionDepth: 8
    functionLinenumber: 1018
    functionLinenumberEnd: 1026
    functionName: percentile_cont_interval_multi_final
    functionSourceFile: /src/postgres/src/backend/utils/adt/orderedsetaggs.c
    functionUses: 0
    functionsReached:
    - percentile_cont_multi_final_common
    linkageType: ''
    returnType: Datum
    signature: Datum percentile_cont_interval_multi_final(PG_FUNCTION_ARGS)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1048,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1048,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1051,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1052,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1054,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1058,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1062,1
    - Dst: fmgr_info_cxt
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1063,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1063,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1071,1
    - Dst: tuplesort_rescan
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1075,1
    - Dst: tuplesort_getdatum
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1078,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1094,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1094,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1094,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1103,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1103,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1109,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1109,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1115,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1115,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1123,1
    - Dst: pfree
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1127,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1127,1
    - Dst: PG_RETURN_DATUM
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1130,1
    - Dst: PG_RETURN_NULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1132,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1133
      start: 1032
    functionDepth: 4
    functionLinenumber: 1032
    functionLinenumberEnd: 1133
    functionName: mode_final
    functionSourceFile: /src/postgres/src/backend/utils/adt/orderedsetaggs.c
    functionUses: 0
    functionsReached:
    - pfree
    - Assert
    - PG_GET_COLLATION
    - CHECK_FOR_INTERRUPTS
    - FunctionCall2Coll
    - PG_GETARG_POINTER
    - tuplesort_rescan
    - PG_RETURN_DATUM
    - PG_ARGISNULL
    - get_opcode
    - AggCheckCallContext
    - PG_RETURN_NULL
    - fmgr_info_cxt
    - OidIsValid
    - tuplesort_getdatum
    - DatumGetBool
    - tuplesort_performsort
    - DatumGetPointer
    linkageType: ''
    returnType: Datum
    signature: Datum mode_final(PG_FUNCTION_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1150,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1151,1
    - Dst: TupleDescAttr
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1156,1
    - Dst: get_fn_expr_argtype
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1158,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1159,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 3
    argNames:
    - fcinfo
    - nargs
    - tupdesc
    argTypes:
    - FunctionCallInfo
    - int
    - TupleDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1161
      start: 1141
    functionDepth: 2
    functionLinenumber: 1141
    functionLinenumberEnd: 1161
    functionName: hypothetical_check_argtypes
    functionSourceFile: /src/postgres/src/backend/utils/adt/orderedsetaggs.c
    functionUses: 0
    functionsReached:
    - elog
    - TupleDescAttr
    - get_fn_expr_argtype
    linkageType: ''
    returnType: void
    signature: "void hypothetical_check_argtypes(FunctionCallInfo fcinfo, int nargs,\n\t\t\t\t\t\t\tTupleDesc
      tupdesc)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1174,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1180,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1180,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1183,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1189,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1194,1
    - Dst: hypothetical_check_argtypes
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1197,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1200,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1204,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1207,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1208,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1210,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1212,1
    - Dst: tuplesort_puttupleslot
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1214,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1217,1
    - Dst: tuplesort_gettupleslot
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1221,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1224,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1226,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1231,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1234,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 3
    argNames:
    - fcinfo
    - flag
    - number_of_rows
    argTypes:
    - FunctionCallInfo
    - int
    - int64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1237
      start: 1170
    functionDepth: 6
    functionLinenumber: 1170
    functionLinenumberEnd: 1237
    functionName: hypothetical_rank_common
    functionSourceFile: /src/postgres/src/backend/utils/adt/orderedsetaggs.c
    functionUses: 0
    functionsReached:
    - Assert
    - CHECK_FOR_INTERRUPTS
    - slot_getattr
    - PG_GETARG_POINTER
    - Int32GetDatum
    - tuplesort_gettupleslot
    - DatumGetInt32
    - PG_ARGISNULL
    - ExecStoreVirtualTuple
    - AggCheckCallContext
    - elog
    - tuplesort_puttupleslot
    - PG_GETARG_DATUM
    - PG_NARGS
    - hypothetical_check_argtypes
    - tuplesort_performsort
    - ExecClearTuple
    linkageType: ''
    returnType: int64
    signature: "int64 hypothetical_rank_common(FunctionCallInfo fcinfo, int flag,\n\t\t\t\t\t\t
      int64 *number_of_rows)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hypothetical_rank_common
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1249,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1252
      start: 1243
    functionDepth: 7
    functionLinenumber: 1243
    functionLinenumberEnd: 1252
    functionName: hypothetical_rank_final
    functionSourceFile: /src/postgres/src/backend/utils/adt/orderedsetaggs.c
    functionUses: 0
    functionsReached:
    - hypothetical_rank_common
    - PG_RETURN_INT64
    linkageType: ''
    returnType: Datum
    signature: Datum hypothetical_rank_final(PG_FUNCTION_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hypothetical_rank_common
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1264,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1267,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1271,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1272
      start: 1257
    functionDepth: 7
    functionLinenumber: 1257
    functionLinenumberEnd: 1272
    functionName: hypothetical_percent_rank_final
    functionSourceFile: /src/postgres/src/backend/utils/adt/orderedsetaggs.c
    functionUses: 0
    functionsReached:
    - hypothetical_rank_common
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum hypothetical_percent_rank_final(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hypothetical_rank_common
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1284,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1289
      start: 1277
    functionDepth: 7
    functionLinenumber: 1277
    functionLinenumberEnd: 1289
    functionName: hypothetical_cume_dist_final
    functionSourceFile: /src/postgres/src/backend/utils/adt/orderedsetaggs.c
    functionUses: 0
    functionsReached:
    - hypothetical_rank_common
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum hypothetical_cume_dist_final(PG_FUNCTION_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PG_NARGS
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1299,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1311,1
    - Dst: AggCheckCallContext
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1311,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1314,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1315,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1317,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1324,1
    - Dst: CreateStandaloneExprContext
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1325,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1327,1
    - Dst: elog
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1332,1
    - Dst: hypothetical_check_argtypes
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1335,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1350,1
    - Dst: execTuplesMatchPrepare
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1351,1
    - Dst: MemoryContextSwitchTo
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1357,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1362,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1366,1
    - Dst: PG_GETARG_DATUM
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1369,1
    - Dst: PG_ARGISNULL
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1370,1
    - Dst: Int32GetDatum
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1372,1
    - Dst: ExecStoreVirtualTuple
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1374,1
    - Dst: tuplesort_puttupleslot
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1376,1
    - Dst: tuplesort_performsort
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1379,1
    - Dst: MakeSingleTupleTableSlot
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1387,1
    - Dst: tuplesort_gettupleslot
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1392,1
    - Dst: slot_getattr
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1396,1
    - Dst: DatumGetInt32
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1399,1
    - Dst: TupIsNull
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1406,1
    - Dst: ExecQualAndReset
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1408,1
    - Dst: CHECK_FOR_INTERRUPTS
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1419,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1422,1
    - Dst: ExecClearTuple
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1423,1
    - Dst: ExecDropSingleTupleTableSlot
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1425,1
    - Dst: PG_RETURN_INT64
      Src: /src/postgres/src/backend/utils/adt/orderedsetaggs.c:1429,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 58
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1430
      start: 1294
    functionDepth: 8
    functionLinenumber: 1294
    functionLinenumberEnd: 1430
    functionName: hypothetical_dense_rank_final
    functionSourceFile: /src/postgres/src/backend/utils/adt/orderedsetaggs.c
    functionUses: 0
    functionsReached:
    - MemoryContextSwitchTo
    - CHECK_FOR_INTERRUPTS
    - PG_GETARG_DATUM
    - TupIsNull
    - execTuplesMatchPrepare
    - Int32GetDatum
    - CreateStandaloneExprContext
    - ExecStoreVirtualTuple
    - AggCheckCallContext
    - ExecClearTuple
    - PG_RETURN_INT64
    - slot_getattr
    - ExecQualAndReset
    - ExecDropSingleTupleTableSlot
    - PG_GETARG_POINTER
    - tuplesort_gettupleslot
    - DatumGetInt32
    - PG_ARGISNULL
    - elog
    - tuplesort_puttupleslot
    - PG_NARGS
    - hypothetical_check_argtypes
    - Assert
    - MakeSingleTupleTableSlot
    - tuplesort_performsort
    linkageType: ''
    returnType: Datum
    signature: Datum hypothetical_dense_rank_final(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:233,1
    - Dst: eqsel_internal
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 234
    functionName: eqsel
    functionSourceFile: /src/postgres/src/backend/utils/adt/selfuncs.c
    functionUses: 0
    functionsReached:
    - eqsel_internal
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum eqsel(PG_FUNCTION_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:242,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:243,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:244,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:245,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:246,1
    - Dst: get_negator
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:258,1
    - Dst: OidIsValid
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:259,1
    - Dst: get_restriction_variable
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:270,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:279,1
    - Dst: var_eq_const
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:280,1
    - Dst: var_eq_non_const
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:285,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:288,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - negate
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 239
    functionDepth: 1
    functionLinenumber: 239
    functionLinenumberEnd: 291
    functionName: eqsel_internal
    functionSourceFile: /src/postgres/src/backend/utils/adt/selfuncs.c
    functionUses: 1
    functionsReached:
    - PG_GETARG_POINTER
    - var_eq_const
    - get_restriction_variable
    - IsA
    - PG_GETARG_OID
    - ReleaseVariableStats
    - PG_GETARG_INT32
    - OidIsValid
    - get_negator
    - PG_GET_COLLATION
    - var_eq_non_const
    linkageType: ''
    returnType: double
    signature: double eqsel_internal(PG_FUNCTION_ARGS, bool negate)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:319,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:323,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:338,1
    - Dst: statistic_proc_security_check
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:339,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:340,1
    - Dst: get_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:353,1
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:357,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:360,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:368,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:387,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:388,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:422,1
    - Dst: get_variable_numdistinct
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:429,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:442,1
    - Dst: get_variable_numdistinct
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:451,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:459,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 55
    argCount: 7
    argNames:
    - vardata
    - oproid
    - collation
    - constval
    - constisnull
    - varonleft
    - negate
    argTypes:
    - VariableStatData*
    - Oid
    - Oid
    - Datum
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 462
    functionName: var_eq_const
    functionSourceFile: /src/postgres/src/backend/utils/adt/selfuncs.c
    functionUses: 3
    functionsReached:
    - LOCAL_FCINFO
    - InitFunctionCallInfoData
    - get_variable_numdistinct
    - HeapTupleIsValid
    - statistic_proc_security_check
    - free_attstatsslot
    - fmgr_info
    - GETSTRUCT
    - get_opcode
    - get_attstatsslot
    - CLAMP_PROBABILITY
    - DatumGetBool
    - FunctionCallInvoke
    linkageType: ''
    returnType: double
    signature: "double var_eq_const(VariableStatData *vardata, Oid oproid, Oid collation,\n\t\t\t
      Datum constval, bool constisnull,\n\t\t\t bool varonleft, bool negate)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:481,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:485,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:500,1
    - Dst: get_variable_numdistinct
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:516,1
    - Dst: get_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:524,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:530,1
    - Dst: get_variable_numdistinct
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:540,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:548,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 6
    argNames:
    - vardata
    - oproid
    - collation
    - other
    - varonleft
    - negate
    argTypes:
    - VariableStatData*
    - Oid
    - Oid
    - Node*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 469
    functionDepth: 1
    functionLinenumber: 469
    functionLinenumberEnd: 551
    functionName: var_eq_non_const
    functionSourceFile: /src/postgres/src/backend/utils/adt/selfuncs.c
    functionUses: 1
    functionsReached:
    - get_variable_numdistinct
    - HeapTupleIsValid
    - free_attstatsslot
    - GETSTRUCT
    - get_attstatsslot
    - CLAMP_PROBABILITY
    linkageType: ''
    returnType: double
    signature: "double var_eq_non_const(VariableStatData *vardata, Oid oproid, Oid
      collation,\n\t\t\t\t Node *other,\n\t\t\t\t bool varonleft, bool negate)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:563,1
    - Dst: eqsel_internal
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:563,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 560
    functionDepth: 2
    functionLinenumber: 560
    functionLinenumberEnd: 564
    functionName: neqsel
    functionSourceFile: /src/postgres/src/backend/utils/adt/selfuncs.c
    functionUses: 0
    functionsReached:
    - eqsel_internal
    - PG_RETURN_FLOAT8
    linkageType: ''
    returnType: Datum
    signature: Datum neqsel(PG_FUNCTION_ARGS)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:595,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:602,1
    - Dst: DatumGetPointer
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:616,1
    - Dst: ItemPointerGetBlockNumberNoCheck
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:617,1
    - Dst: ItemPointerGetOffsetNumberNoCheck
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:642,1
    - Dst: Min
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:644,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:668,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:675,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:677,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:677,1
    - Dst: mcv_selectivity
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:685,1
    - Dst: ineq_histogram_selectivity
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:692,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:718,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 6
    argNames:
    - root
    - iseq
    - collation
    - vardata
    - constval
    - consttype
    argTypes:
    - PlannerInfo*
    - bool
    - Oid
    - VariableStatData*
    - Datum
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 583
    functionDepth: 2
    functionLinenumber: 583
    functionLinenumberEnd: 721
    functionName: scalarineqsel
    functionSourceFile: /src/postgres/src/backend/utils/adt/selfuncs.c
    functionUses: 0
    functionsReached:
    - Min
    - ineq_histogram_selectivity
    - HeapTupleIsValid
    - fmgr_info
    - IsA
    - GETSTRUCT
    - get_opcode
    - ItemPointerGetOffsetNumberNoCheck
    - ItemPointerGetBlockNumberNoCheck
    - CLAMP_PROBABILITY
    - DatumGetPointer
    - mcv_selectivity
    linkageType: ''
    returnType: double
    signature: "double scalarineqsel(PlannerInfo *root, Oid operator, bool isgt, bool
      iseq,\n\t\t\t  Oid collation,\n\t\t\t  VariableStatData *vardata, Datum constval,
      Oid consttype)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:748,1
    - Dst: statistic_proc_security_check
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:749,1
    - Dst: get_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:750,1
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:754,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:763,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:782,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:783,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:787,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 6
    argNames:
    - vardata
    - opproc
    - collation
    - constval
    - varonleft
    - sumcommonp
    argTypes:
    - VariableStatData*
    - FmgrInfo*
    - Oid
    - Datum
    - bool
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 735
    functionDepth: 1
    functionLinenumber: 735
    functionLinenumberEnd: 792
    functionName: mcv_selectivity
    functionSourceFile: /src/postgres/src/backend/utils/adt/selfuncs.c
    functionUses: 2
    functionsReached:
    - LOCAL_FCINFO
    - InitFunctionCallInfoData
    - HeapTupleIsValid
    - statistic_proc_security_check
    - free_attstatsslot
    - get_attstatsslot
    - DatumGetBool
    - FunctionCallInvoke
    linkageType: ''
    returnType: double
    signature: "double mcv_selectivity(VariableStatData *vardata, FmgrInfo *opproc,
      Oid collation,\n\t\t\t\tDatum constval, bool varonleft,\n\t\t\t\tdouble *sumcommonp)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:837,1
    - Dst: Assert
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:838,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:840,1
    - Dst: statistic_proc_security_check
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:841,1
    - Dst: get_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:842,1
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:849,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:861,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:880,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:881,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:888,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 8
    argNames:
    - vardata
    - opproc
    - collation
    - constval
    - varonleft
    - min_hist_size
    - n_skip
    - hist_size
    argTypes:
    - VariableStatData*
    - FmgrInfo*
    - Oid
    - Datum
    - bool
    - int
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 826
    functionDepth: 1
    functionLinenumber: 826
    functionLinenumberEnd: 897
    functionName: histogram_selectivity
    functionSourceFile: /src/postgres/src/backend/utils/adt/selfuncs.c
    functionUses: 3
    functionsReached:
    - Assert
    - LOCAL_FCINFO
    - InitFunctionCallInfoData
    - HeapTupleIsValid
    - statistic_proc_security_check
    - free_attstatsslot
    - get_attstatsslot
    - DatumGetBool
    - FunctionCallInvoke
    linkageType: ''
    returnType: double
    signature: "double histogram_selectivity(VariableStatData *vardata,\n\t\t\t\t\t
      \ FmgrInfo *opproc, Oid collation,\n\t\t\t\t\t  Datum constval, bool varonleft,\n\t\t\t\t\t
      \ int min_hist_size, int n_skip,\n\t\t\t\t\t  int *hist_size)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: get_restriction_variable
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:931,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:939,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:942,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:946,1
    - Dst: fmgr_info
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:956,1
    - Dst: get_opcode
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:956,1
    - Dst: mcv_selectivity
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:961,1
    - Dst: histogram_selectivity
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:971,1
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:999,1
    - Dst: GETSTRUCT
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1000,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1018,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1021,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 6
    argNames:
    - root
    - oproid
    - collation
    - args
    - varRelid
    - default_selectivity
    argTypes:
    - PlannerInfo*
    - Oid
    - Oid
    - List*
    - int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1024
      start: 917
    functionDepth: 2
    functionLinenumber: 917
    functionLinenumberEnd: 1024
    functionName: generic_restriction_selectivity
    functionSourceFile: /src/postgres/src/backend/utils/adt/selfuncs.c
    functionUses: 0
    functionsReached:
    - HeapTupleIsValid
    - fmgr_info
    - get_restriction_variable
    - IsA
    - get_opcode
    - GETSTRUCT
    - histogram_selectivity
    - CLAMP_PROBABILITY
    - ReleaseVariableStats
    - mcv_selectivity
    linkageType: ''
    returnType: double
    signature: "double generic_restriction_selectivity(PlannerInfo *root, Oid oproid,
      Oid collation,\n\t\t\t\t\t\t\t\tList *args, int varRelid,\n\t\t\t\t\t\t\t\tdouble
      default_selectivity)"
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: HeapTupleIsValid
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1068,1
    - Dst: statistic_proc_security_check
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1069,1
    - Dst: get_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1070,1
    - Dst: comparison_ops_are_compatible
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1076,1
    - Dst: get_actual_variable_range
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1108,1
    - Dst: get_actual_variable_range
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1126,1
    - Dst: get_actual_variable_range
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1133,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1140,1
    - Dst: FunctionCall2Coll
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1140,1
    - Dst: get_variable_numdistinct
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1204,1
    - Dst: get_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1208,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1213,1
    - Dst: convert_to_scalar
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1226,1
    - Dst: isnan
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1251,1
    - Dst: CLAMP_PROBABILITY
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1337,1
    - Dst: LOCAL_FCINFO
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1357,1
    - Dst: InitFunctionCallInfoData
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1360,1
    - Dst: FunctionCallInvoke
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1371,1
    - Dst: DatumGetBool
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1372,1
    - Dst: free_attstatsslot
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1393,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 87
    argCount: 9
    argNames:
    - root
    - vardata
    - opoid
    - opproc
    - isgt
    - iseq
    - collation
    - constval
    - consttype
    argTypes:
    - PlannerInfo*
    - VariableStatData*
    - Oid
    - FmgrInfo*
    - bool
    - bool
    - Oid
    - Datum
    - Oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1397
      start: 1044
    functionDepth: 1
    functionLinenumber: 1044
    functionLinenumberEnd: 1397
    functionName: ineq_histogram_selectivity
    functionSourceFile: /src/postgres/src/backend/utils/adt/selfuncs.c
    functionUses: 2
    functionsReached:
    - isnan
    - LOCAL_FCINFO
    - InitFunctionCallInfoData
    - FunctionCall2Coll
    - get_variable_numdistinct
    - HeapTupleIsValid
    - statistic_proc_security_check
    - free_attstatsslot
    - get_attstatsslot
    - CLAMP_PROBABILITY
    - comparison_ops_are_compatible
    - get_actual_variable_range
    - convert_to_scalar
    - FunctionCallInvoke
    - DatumGetBool
    linkageType: ''
    returnType: double
    signature: "double ineq_histogram_selectivity(PlannerInfo *root,\n\t\t\t\t\t\t
      \  VariableStatData *vardata,\n\t\t\t\t\t\t   Oid opoid, FmgrInfo *opproc, bool
      isgt, bool iseq,\n\t\t\t\t\t\t   Oid collation,\n\t\t\t\t\t\t   Datum constval,
      Oid consttype)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1406,1
    - Dst: PG_GETARG_OID
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1407,1
    - Dst: PG_GETARG_POINTER
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1408,1
    - Dst: PG_GETARG_INT32
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1409,1
    - Dst: PG_GET_COLLATION
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1410,1
    - Dst: get_restriction_variable
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1422,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1424,1
    - Dst: IsA
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1429,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1431,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1432,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1441,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1442,1
    - Dst: get_commutator
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1452,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1456,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1457,1
    - Dst: scalarineqsel
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1463,1
    - Dst: ReleaseVariableStats
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1466,1
    - Dst: PG_RETURN_FLOAT8
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1468,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - isgt
    - iseq
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1469
      start: 1403
    functionDepth: 3
    functionLinenumber: 1403
    functionLinenumberEnd: 1469
    functionName: scalarineqsel_wrapper
    functionSourceFile: /src/postgres/src/backend/utils/adt/selfuncs.c
    functionUses: 0
    functionsReached:
    - PG_GETARG_POINTER
    - scalarineqsel
    - get_restriction_variable
    - IsA
    - PG_GETARG_OID
    - ReleaseVariableStats
    - PG_GETARG_INT32
    - PG_GET_COLLATION
    - PG_RETURN_FLOAT8
    - get_commutator
    linkageType: ''
    returnType: Datum
    signature: Datum scalarineqsel_wrapper(PG_FUNCTION_ARGS, bool isgt, bool iseq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: scalarineqsel_wrapper
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1478
      start: 1474
    functionDepth: 4
    functionLinenumber: 1474
    functionLinenumberEnd: 1478
    functionName: scalarltsel
    functionSourceFile: /src/postgres/src/backend/utils/adt/selfuncs.c
    functionUses: 0
    functionsReached:
    - scalarineqsel_wrapper
    linkageType: ''
    returnType: Datum
    signature: Datum scalarltsel(PG_FUNCTION_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: scalarineqsel_wrapper
      Src: /src/postgres/src/backend/utils/adt/selfuncs.c:1486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1487
      start: 1483
    functionDepth: 4
    functionLine